From 5f683e621e1ed7aa4ec15534e0189b528e33fafb Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Tue, 1 Jun 2021 19:02:51 +0800 Subject: [PATCH] drivers: rkflash: fix the problem of gcc compile error Change-Id: Iacfbfdded28900f12cb6a8af9c0e781301fc88c9 Signed-off-by: Jon Lin --- drivers/rkflash/rk_sftl_arm_v8.S | 20136 +++++++++++++++-------------- 1 file changed, 10605 insertions(+), 9531 deletions(-) diff --git a/drivers/rkflash/rk_sftl_arm_v8.S b/drivers/rkflash/rk_sftl_arm_v8.S index ca118c6048c3..7e2944e55a76 100644 --- a/drivers/rkflash/rk_sftl_arm_v8.S +++ b/drivers/rkflash/rk_sftl_arm_v8.S @@ -1,370 +1,653 @@ /* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright (c) 2018 Rockchip Electronics Co. Ltd. - * date: 2020-09-25 +/* Copyright (c) 2018-2021 Rockchip Electronics Co. Ltd. + * date: 2021-06-01 */ .arch armv8-a .file "rk_sftl.c" -#APP - .arch_extension lse -#NO_APP .text .align 2 + .type uaccess_disable_not_uao, %function +uaccess_disable_not_uao: + hint 25 // paciasp +#APP +// 271 "./arch/arm64/include/asm/uaccess.h" 1 + .if 1 == 1 +661: + nop +662: +.pushsection .altinstructions,"a" + .word 661b - . + .word 663f - . + .hword 10 + .byte 662b-661b + .byte 664f-663f +.popsection +.subsection 1 +663: + .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!1) << 8)) + +664: + .org . - (664b-663b) + (662b-661b) + .org . - (662b-661b) + (664b-663b) + .previous +.endif + +// 0 "" 2 +#NO_APP + hint 29 // autiasp + ret + .size uaccess_disable_not_uao, .-uaccess_disable_not_uao + .align 2 + .type uaccess_enable_not_uao, %function +uaccess_enable_not_uao: + hint 25 // paciasp +#APP +// 276 "./arch/arm64/include/asm/uaccess.h" 1 + .if 1 == 1 +661: + nop +662: +.pushsection .altinstructions,"a" + .word 661b - . + .word 663f - . + .hword 10 + .byte 662b-661b + .byte 664f-663f +.popsection +.subsection 1 +663: + .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!0) << 8)) + +664: + .org . - (664b-663b) + (662b-661b) + .org . - (662b-661b) + (664b-663b) + .previous +.endif + +// 0 "" 2 +#NO_APP + hint 29 // autiasp + ret + .size uaccess_enable_not_uao, .-uaccess_enable_not_uao + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "Buffer overflow detected (%d < %lu)!\n" + .text + .align 2 + .type copy_overflow, %function +copy_overflow: + hint 25 // paciasp + stp x29, x30, [sp, -16]! + mov x2, x1 + mov x29, sp + mov w1, w0 + adrp x0, .LC0 + add x0, x0, :lo12:.LC0 + bl __warn_printk +#APP +// 147 "./include/linux/thread_info.h" 1 + .pushsection __bug_table,"aw"; .align 2; 14470: .long 14471f - 14470b; .pushsection .rodata.str,"aMS",@progbits,1; 14472: .string "include/linux/thread_info.h"; .popsection; .long 14472b - 14470b; .short 147; .short (1 << 0)|((1 << 3) | ((9) << 8)); .popsection; 14471: brk 0x800 +// 0 "" 2 +#NO_APP + ldp x29, x30, [sp], 16 + hint 29 // autiasp + ret + .size copy_overflow, .-copy_overflow + .align 2 + .type __range_ok, %function +__range_ok: +#APP +// 19 "./arch/arm64/include/asm/current.h" 1 + mrs x3, sp_el0 +// 0 "" 2 +#NO_APP + ldr w4, [x3, 44] + hint 25 // paciasp + ldr x2, [x3, 8] + tbnz x4, 21, .L8 + ldr x3, [x3] + tst w3, 67108864 + beq .L9 +.L8: + sbfx x3, x0, 0, 56 + and x0, x0, x3 +.L9: +#APP +// 79 "./arch/arm64/include/asm/uaccess.h" 1 + adds x0, x0, x1 + csel x2, xzr, x2, hi + csinv x0, x0, xzr, cc + sbcs xzr, x0, x2 + cset x0, ls + +// 0 "" 2 +#NO_APP + hint 29 // autiasp + ret + .size __range_ok, .-__range_ok + .align 2 .type l2p_addr_tran.isra.0, %function l2p_addr_tran.isra.0: + .section __patchable_function_entries,"aw",@progbits + .align 3 + .8byte .LPFE1 + .text +.LPFE1: + nop + nop adrp x4, .LANCHOR0 add x4, x4, :lo12:.LANCHOR0 + hint 25 // paciasp ldrh w3, [x4, 8] - ldrh w6, [x4, 10] + ldrh w5, [x4, 10] ldrh w4, [x4, 14] cmp w4, 4 - bne .L2 + bne .L15 lsr w3, w3, 1 - ubfiz w6, w6, 1, 15 -.L2: - lsr w5, w0, 10 + ubfiz w5, w5, 1, 15 +.L15: + ubfx x4, x0, 10, 16 + ubfx x6, x0, 10, 16 and w0, w0, 1023 - and w4, w5, 65535 - and w5, w5, 65535 + hint 29 // autiasp udiv w4, w4, w3 - msub w3, w3, w4, w5 - madd w3, w3, w6, w0 - mov w0, 0 + msub w3, w3, w4, w6 + madd w3, w3, w5, w0 str w3, [x1] str w4, [x2] ret .size l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0 .align 2 + .type _copy_from_user, %function +_copy_from_user: + hint 25 // paciasp + stp x29, x30, [sp, -48]! + mov x29, sp + stp x19, x20, [sp, 16] + mov x20, x1 + mov x19, x2 + mov x1, x2 + str x21, [sp, 32] + mov x21, x0 + mov x0, x20 + bl __range_ok + cbz x0, .L20 + bl uaccess_enable_not_uao + sbfx x0, x20, 0, 56 +#APP +// 19 "./arch/arm64/include/asm/current.h" 1 + mrs x1, sp_el0 +// 0 "" 2 +#NO_APP + and x0, x20, x0 + ldr x2, [x1, 8] +#APP +// 289 "./arch/arm64/include/asm/uaccess.h" 1 + bics xzr, x0, x2 + csel x1, x20, xzr, eq + +// 0 "" 2 +// 297 "./arch/arm64/include/asm/uaccess.h" 1 + hint #20 +// 0 "" 2 +#NO_APP + mov x2, x19 + mov x0, x21 + bl __arch_copy_from_user + mov x20, x0 + bl uaccess_disable_not_uao + cbz x20, .L17 +.L18: + sub x19, x19, x20 + mov x2, x20 + add x0, x21, x19 + mov w1, 0 + bl memset +.L17: + mov x0, x20 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp + ret +.L20: + mov x20, x19 + b .L18 + .size _copy_from_user, .-_copy_from_user + .section .rodata.str1.1 +.LC1: + .string "SFTL version: 5.0.56 20210329" +.LC2: + .string "\n%s\n" +.LC3: + .string "act blk: %x %x %x %x %x %x\n" +.LC4: + .string "buf blk: %x %x %x %x %x %x\n" +.LC5: + .string "tmp blk: %x %x %x %x %x %x\n" +.LC6: + .string "gc blk: %x %x %x %x %x %x\n" +.LC7: + .string "free blk: %x %x %x\n" + .text + .align 2 .global ftl_print_sblk_info .type ftl_print_sblk_info, %function ftl_print_sblk_info: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE2 + .text +.LPFE2: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - adrp x1, .LC0 - adrp x0, .LC1 - add x1, x1, :lo12:.LC0 - add x29, sp, 0 + adrp x1, .LC1 + mov x29, sp str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - add x0, x0, :lo12:.LC1 - bl sftl_printk + add x1, x1, :lo12:.LC1 adrp x0, .LC2 add x0, x0, :lo12:.LC2 + bl sftl_printk ldrh w1, [x19, 24] - ldr x3, [x19, 72] + ldr x0, [x19, 72] ldrh w5, [x19, 28] - ubfiz x2, x1, 1, 16 ldrb w4, [x19, 32] - ldrh w6, [x3, x2] + ldrh w6, [x0, x1, lsl 1] + adrp x0, .LC3 ldrb w3, [x19, 30] + add x0, x0, :lo12:.LC3 ldrh w2, [x19, 26] + ldrh w1, [x19, 24] bl sftl_printk ldrh w1, [x19, 80] - adrp x0, .LC3 - ldr x3, [x19, 72] - add x0, x0, :lo12:.LC3 + ldr x0, [x19, 72] ldrh w5, [x19, 84] - ubfiz x2, x1, 1, 16 ldrb w4, [x19, 88] - ldrh w6, [x3, x2] + ldrh w6, [x0, x1, lsl 1] + adrp x0, .LC4 ldrb w3, [x19, 86] + add x0, x0, :lo12:.LC4 ldrh w2, [x19, 82] + ldrh w1, [x19, 80] bl sftl_printk ldrh w1, [x19, 128] - adrp x0, .LC4 - ldr x3, [x19, 72] - add x0, x0, :lo12:.LC4 + ldr x0, [x19, 72] ldrh w5, [x19, 132] - ubfiz x2, x1, 1, 16 ldrb w4, [x19, 136] - ldrh w6, [x3, x2] + ldrh w6, [x0, x1, lsl 1] + adrp x0, .LC5 ldrb w3, [x19, 134] + add x0, x0, :lo12:.LC5 ldrh w2, [x19, 130] + ldrh w1, [x19, 128] bl sftl_printk ldrh w1, [x19, 176] - adrp x0, .LC5 - ldr x3, [x19, 72] - add x0, x0, :lo12:.LC5 + ldr x0, [x19, 72] ldrh w5, [x19, 180] - ubfiz x2, x1, 1, 16 ldrb w4, [x19, 184] - ldrh w6, [x3, x2] + ldrh w6, [x0, x1, lsl 1] + adrp x0, .LC6 ldrb w3, [x19, 182] + add x0, x0, :lo12:.LC6 ldrh w2, [x19, 178] + ldrh w1, [x19, 176] bl sftl_printk ldrh w3, [x19, 224] - adrp x0, .LC6 + adrp x0, .LC7 ldrh w2, [x19, 226] - add x0, x0, :lo12:.LC6 + add x0, x0, :lo12:.LC7 ldrh w1, [x19, 228] bl sftl_printk ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size ftl_print_sblk_info, .-ftl_print_sblk_info .align 2 .global Ftl_log2 .type Ftl_log2, %function Ftl_log2: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE3 + .text +.LPFE3: + nop + nop mov w2, 1 mov w1, 0 -.L6: + hint 25 // paciasp +.L28: cmp w2, w0 - bls .L7 + bls .L29 sub w0, w1, #1 + hint 29 // autiasp ret -.L7: +.L29: add w1, w1, 1 lsl w2, w2, 1 and w1, w1, 65535 - b .L6 + b .L28 .size Ftl_log2, .-Ftl_log2 .align 2 .global FtlPrintInfo .type FtlPrintInfo, %function FtlPrintInfo: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE4 + .text +.LPFE4: + nop + nop + hint 25 // paciasp + hint 29 // autiasp ret .size FtlPrintInfo, .-FtlPrintInfo .align 2 .global FtlSysBlkNumInit .type FtlSysBlkNumInit, %function FtlSysBlkNumInit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE5 + .text +.LPFE5: + nop + nop and w0, w0, 65535 mov w1, 24 cmp w0, 24 + hint 25 // paciasp csel w0, w0, w1, cs - adrp x1, .LANCHOR0 - add x1, x1, :lo12:.LANCHOR0 - and w0, w0, 65535 - ldrh w2, [x1, 236] - ldrh w3, [x1, 246] - str w0, [x1, 232] - mul w2, w2, w0 - sub w0, w3, w0 - strh w0, [x1, 244] - ldr w0, [x1, 252] - str w2, [x1, 240] - sub w2, w0, w2 + hint 29 // autiasp + and w1, w0, 65535 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldrh w2, [x0, 236] + ldrh w3, [x0, 246] + str w1, [x0, 232] + mul w2, w2, w1 + sub w1, w3, w1 + strh w1, [x0, 244] + ldr w1, [x0, 252] + str w2, [x0, 240] + sub w2, w1, w2 + str w2, [x0, 248] mov w0, 0 - str w2, [x1, 248] ret .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .align 2 .global FtlConstantsInit .type FtlConstantsInit, %function FtlConstantsInit: - stp x29, x30, [sp, -16]! - mov x7, x0 - adrp x4, .LANCHOR0 - add x29, sp, 0 - ldrh w2, [x0] - add x0, x4, :lo12:.LANCHOR0 - ldrh w3, [x7, 14] - ldrh w6, [x7, 2] - ldrh w5, [x7, 4] - cmp w3, 4 - ldrh w1, [x7, 6] - strh w2, [x0, 256] - strh w6, [x0, 258] - strh w5, [x0, 260] - strh w1, [x0, 246] - strh w3, [x0, 262] - bne .L11 - lsr w1, w1, 1 - strh w1, [x0, 246] - mov w1, 8 - strh w1, [x0, 262] -.L12: - add x1, x4, :lo12:.LANCHOR0 - mov x0, 0 - add x3, x1, 264 -.L13: - strb w0, [x0, x3] - add x0, x0, 1 - cmp x0, 32 - bne .L13 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE6 + .text +.LPFE6: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -80]! + mov x29, sp + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + mov x22, x0 + stp x23, x24, [sp, 48] + ldrh w2, [x0, 14] + str x25, [sp, 64] + ldrh w1, [x0] + ldrh w20, [x0, 2] + ldrh w3, [x0, 4] + ldrh w0, [x0, 6] + strh w0, [x19, 246] + strh w1, [x19, 256] + strh w20, [x19, 258] + strh w3, [x19, 260] + strh w2, [x19, 262] + cmp w2, 4 + bne .L36 + lsr w0, w0, 1 + strh w0, [x19, 246] + mov w0, 8 + strh w0, [x19, 262] +.L37: + add x0, x19, 264 + mov x24, 0 +.L38: + strb w24, [x24, x0] + add x24, x24, 1 + cmp x24, 32 + bne .L38 + cmp w1, 1 mov w0, 5 - strh wzr, [x1, 298] - strh w0, [x1, 296] - cmp w2, 1 - bne .L14 - strh w2, [x1, 296] -.L14: - add x3, x4, :lo12:.LANCHOR0 + csel w0, w0, w1, ne + strh w0, [x19, 296] mov w0, 640 - strh w0, [x3, 300] - ldrh w0, [x3, 260] - ldrh w5, [x3, 246] - mul w6, w6, w0 - mul w0, w0, w5 - and w6, w6, 65535 - strh w6, [x3, 236] + ldrh w21, [x19, 246] + strh w0, [x19, 300] + ldrh w0, [x19, 260] + strh wzr, [x19, 298] + mul w20, w20, w0 + mul w0, w0, w21 + and w20, w20, 65535 + strh w20, [x19, 236] and w0, w0, 65535 - strh w0, [x3, 302] + strh w0, [x19, 302] bl Ftl_log2 - ldrh w9, [x7, 12] - ldrh w8, [x3, 262] - strh w0, [x3, 304] - strh w9, [x3, 306] - mul w0, w6, w9 - strh w9, [x3, 308] - strh w0, [x3, 310] - mov w0, w8 + ldrh w25, [x22, 12] + ldrh w23, [x19, 262] + strh w0, [x19, 304] + strh w25, [x19, 306] + mul w0, w20, w25 + strh w25, [x19, 308] + strh w0, [x19, 310] + mov w0, w23 bl Ftl_log2 - and w2, w0, 65535 - strh w0, [x3, 312] - ubfiz w0, w8, 9, 7 - strh w0, [x3, 314] - ubfx w0, w0, 8, 8 - strh w0, [x3, 316] - ldrh w0, [x7, 20] - strh w0, [x3, 318] - mul w0, w6, w5 - str w0, [x3, 252] - mul w0, w0, w8 - mul w8, w8, w9 - mul w0, w0, w9 - asr w0, w0, 11 - str w0, [x3, 320] - mov w0, 5120 - sdiv w0, w0, w8 - and w0, w0, 65535 - cmp w0, 4 - bls .L15 -.L21: - add x1, x4, :lo12:.LANCHOR0 - strh w0, [x3, 324] - mov w0, 640 - lsl w5, w5, 6 - asr w0, w0, w2 - add w2, w2, 9 - add w0, w0, 2 - strh w0, [x1, 326] - asr w5, w5, w2 - strh w5, [x1, 328] - and w5, w5, 65535 - cmp w6, 1 - mul w0, w5, w6 - add w5, w5, 8 - str w0, [x1, 332] - ldrh w0, [x1, 324] - udiv w0, w0, w6 - add w5, w0, w5 - beq .L17 -.L22: - add x4, x4, :lo12:.LANCHOR0 - str w5, [x1, 232] - ldrh w0, [x4, 232] + and w3, w0, 65535 + ubfiz w1, w23, 9, 7 + strh w1, [x19, 314] + and w1, w23, 127 + mul w2, w20, w21 + mul w23, w23, w25 + str w2, [x19, 252] + ubfiz w1, w1, 1, 15 + strh w1, [x19, 316] + ldrh w1, [x22, 20] + lsl w21, w21, 6 + strh w1, [x19, 318] + mov w1, 5120 + mul w2, w2, w23 + strh w0, [x19, 312] + sdiv w1, w1, w23 + asr w2, w2, 11 + str w2, [x19, 320] + mov w2, 4 + cmp w1, 4 + csel w1, w1, w2, gt + mov w2, 640 + asr w2, w2, w0 + add w0, w3, 9 + cmp w20, 1 + add w2, w2, 2 + asr w0, w21, w0 + and w21, w0, 65535 + strh w0, [x19, 328] + strh w1, [x19, 324] + mul w0, w20, w21 + strh w2, [x19, 326] + str w0, [x19, 332] + and w0, w1, 65535 + udiv w0, w0, w20 + add w0, w0, w21 + add w1, w0, 12 + add w0, w0, 8 + csel w0, w0, w1, ne + str w0, [x19, 232] bl FtlSysBlkNumInit - ldr w0, [x4, 232] - str w0, [x4, 336] - ldr w0, [x4, 248] - ldrh w1, [x4, 306] - str wzr, [x4, 344] - lsl w0, w0, 2 + strh w24, [x19, 342] + ldr w0, [x19, 232] + ldr w1, [x19, 248] + str w0, [x19, 336] + ldrh w0, [x19, 306] + str wzr, [x19, 344] + ldp x21, x22, [sp, 32] mul w0, w0, w1 - ldrh w1, [x4, 312] + ldrh w1, [x19, 312] + ldp x23, x24, [sp, 48] add w1, w1, 9 + lsl w0, w0, 2 + ldr x25, [sp, 64] lsr w0, w0, w1 add w0, w0, 2 - strh w0, [x4, 340] - mov w0, 32 - strh w0, [x4, 342] - ldrh w0, [x4, 324] + strh w0, [x19, 340] + ldrh w0, [x19, 324] add w0, w0, 3 - strh w0, [x4, 324] - ldr w0, [x4, 332] + strh w0, [x19, 324] + ldr w0, [x19, 332] add w0, w0, 3 - str w0, [x4, 332] + str w0, [x19, 332] mov w0, 0 - ldp x29, x30, [sp], 16 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 80 + hint 29 // autiasp ret -.L11: - cmp w3, 8 - bne .L12 - cmp w5, 1 - bne .L12 - lsr w1, w1, 1 - strh w1, [x0, 246] - mov w1, 2 - strh w1, [x0, 260] - b .L12 -.L15: - mov w0, 4 - b .L21 -.L17: - add w5, w5, 4 - b .L22 +.L36: + cmp w2, 8 + bne .L37 + cmp w3, 1 + bne .L37 + lsr w0, w0, 1 + strh w0, [x19, 246] + mov w0, 2 + strh w0, [x19, 260] + b .L37 .size FtlConstantsInit, .-FtlConstantsInit .align 2 .global IsBlkInVendorPart .type IsBlkInVendorPart, %function IsBlkInVendorPart: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE7 + .text +.LPFE7: + nop + nop adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - and w0, w0, 65535 + hint 25 // paciasp ldrh w2, [x1, 348] - cbz w2, .L27 - ldrh w2, [x1, 324] - ldr x3, [x1, 352] + cbz w2, .L50 + ldr x2, [x1, 352] + and w0, w0, 65535 + ldrh w3, [x1, 324] mov x1, 0 -.L25: - cmp w2, w1, uxth - bhi .L26 -.L27: + sub x2, x2, #2 +.L48: + cmp w3, w1, uxth + bhi .L49 +.L50: mov w0, 0 +.L46: + hint 29 // autiasp ret -.L26: +.L49: add x1, x1, 1 - add x4, x3, x1, lsl 1 - ldrh w4, [x4, -2] + ldrh w4, [x2, x1, lsl 1] cmp w4, w0 - bne .L25 + bne .L48 mov w0, 1 - ret + b .L46 .size IsBlkInVendorPart, .-IsBlkInVendorPart .align 2 .global FtlCacheWriteBack .type FtlCacheWriteBack, %function FtlCacheWriteBack: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE8 + .text +.LPFE8: + nop + nop mov w0, 0 + hint 25 // paciasp + hint 29 // autiasp ret .size FtlCacheWriteBack, .-FtlCacheWriteBack .align 2 .global sftl_get_density .type sftl_get_density, %function sftl_get_density: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE9 + .text +.LPFE9: + nop + nop adrp x0, .LANCHOR0+344 + hint 25 // paciasp + hint 29 // autiasp ldr w0, [x0, #:lo12:.LANCHOR0+344] ret .size sftl_get_density, .-sftl_get_density + .section .rodata.str1.1 +.LC8: + .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" + .text .align 2 .global FtlBbmMapBadBlock .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE10 + .text +.LPFE10: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! and w1, w0, 65535 - mov w4, 1 - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 + mov w4, 1 add x19, x19, 360 - ldrh w0, [x19, -58] - udiv w3, w1, w0 - and w2, w3, 65535 - msub w3, w3, w0, w1 + ldrh w3, [x19, -58] + udiv w2, w1, w3 + msub w3, w2, w3, w1 add x0, x19, x2, uxth 3 - and w3, w3, 65535 - ldr x0, [x0, 32] ubfx x5, x3, 5, 11 - lsl x5, x5, 2 lsl w4, w4, w3 + ldr x0, [x0, 32] + lsl x5, x5, 2 + and w3, w3, 65535 ldr w6, [x0, x5] orr w4, w4, w6 str w4, [x0, x5] - adrp x0, .LC7 - add x0, x0, :lo12:.LC7 + adrp x0, .LC8 + add x0, x0, :lo12:.LC8 bl sftl_printk ldrh w0, [x19, 6] add w0, w0, 1 @@ -372,24 +655,34 @@ FtlBbmMapBadBlock: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock .align 2 .global FtlBbmIsBadBlock .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE11 + .text +.LPFE11: + nop + nop adrp x2, .LANCHOR0 add x3, x2, :lo12:.LANCHOR0 and w0, w0, 65535 + hint 25 // paciasp + hint 29 // autiasp ldrh w1, [x3, 302] udiv w2, w0, w1 - msub w0, w2, w1, w0 + msub w1, w2, w1, w0 add x2, x3, x2, uxth 3 - and w0, w0, 65535 - ldr x1, [x2, 392] - ubfx x3, x0, 5, 11 - ldr w1, [x1, x3, lsl 2] - lsr w0, w1, w0 + ldr x0, [x2, 392] + ubfx x3, x1, 5, 11 + ldr w0, [x0, x3, lsl 2] + lsr w0, w0, w1 and w0, w0, 1 ret .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock @@ -397,49 +690,80 @@ FtlBbmIsBadBlock: .global FtlBbtInfoPrint .type FtlBbtInfoPrint, %function FtlBbtInfoPrint: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE12 + .text +.LPFE12: + nop + nop + hint 25 // paciasp + hint 29 // autiasp ret .size FtlBbtInfoPrint, .-FtlBbtInfoPrint .align 2 .global FtlBbtCalcTotleCnt .type FtlBbtCalcTotleCnt, %function FtlBbtCalcTotleCnt: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE13 + .text +.LPFE13: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -48]! adrp x0, .LANCHOR0 + mov x29, sp add x0, x0, :lo12:.LANCHOR0 - mov w4, 0 - mov w5, 0 - ldrh w6, [x0, 302] + stp x19, x20, [sp, 16] + mov w20, 0 + mov w19, 0 + str x21, [sp, 32] + ldrh w21, [x0, 302] ldrh w0, [x0, 258] - mul w6, w6, w0 - cmp w4, w6 - blt .L45 - mov w0, w5 + mul w21, w21, w0 +.L64: + cmp w19, w21 + blt .L66 + mov w0, w20 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L45: - stp x29, x30, [sp, -16]! - add x29, sp, 0 -.L38: - mov w0, w4 +.L66: + mov w0, w19 bl FtlBbmIsBadBlock - cbz w0, .L37 - add w5, w5, 1 - and w5, w5, 65535 -.L37: - add w4, w4, 1 - and w4, w4, 65535 - cmp w4, w6 - blt .L38 - mov w0, w5 - ldp x29, x30, [sp], 16 - ret + cbz w0, .L65 + add w20, w20, 1 + and w20, w20, 65535 +.L65: + add w19, w19, 1 + and w19, w19, 65535 + b .L64 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt .align 2 .global V2P_block .type V2P_block, %function V2P_block: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE14 + .text +.LPFE14: + nop + nop adrp x4, .LANCHOR0 add x4, x4, :lo12:.LANCHOR0 and w0, w0, 65535 and w1, w1, 65535 + hint 25 // paciasp + hint 29 // autiasp ldrh w2, [x4, 260] ldrh w4, [x4, 302] udiv w3, w0, w2 @@ -452,28 +776,48 @@ V2P_block: .global P2V_plane .type P2V_plane, %function P2V_plane: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE15 + .text +.LPFE15: + nop + nop adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 - and w3, w0, 65535 + and w0, w0, 65535 + hint 25 // paciasp + hint 29 // autiasp ldrh w1, [x2, 260] - ldrh w2, [x2, 302] - udiv w0, w3, w1 - udiv w2, w3, w2 - msub w0, w0, w1, w3 - madd w0, w1, w2, w0 + ldrh w3, [x2, 302] + udiv w2, w0, w1 + udiv w3, w0, w3 + msub w0, w2, w1, w0 + madd w0, w1, w3, 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 x1, .LANCHOR0 - add x1, x1, :lo12:.LANCHOR0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE16 + .text +.LPFE16: + nop + nop + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 and w3, w0, 65535 - ldrh w2, [x1, 302] - ldrh w1, [x1, 260] - udiv w0, w3, w2 - msub w0, w0, w2, w3 + hint 25 // paciasp + hint 29 // autiasp + ldrh w0, [x2, 302] + udiv w1, w3, w0 + msub w0, w1, w0, w3 + ldrh w1, [x2, 260] and w0, w0, 65535 udiv w0, w0, w1 ret @@ -482,24 +826,45 @@ P2V_block_in_plane: .global ftl_cmp_data_ver .type ftl_cmp_data_ver, %function ftl_cmp_data_ver: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE17 + .text +.LPFE17: + nop + nop cmp w0, w1 mov w2, -2147483648 - bls .L50 + hint 25 // paciasp + bls .L78 sub w1, w0, w1 cmp w1, w2 cset w0, ls +.L77: + hint 29 // autiasp ret -.L50: +.L78: sub w1, w1, w0 cmp w1, w2 cset w0, hi - ret + b .L77 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .align 2 .global FtlFreeSysBlkQueueEmpty .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE18 + .text +.LPFE18: + nop + nop adrp x0, .LANCHOR0+462 + hint 25 // paciasp + hint 29 // autiasp ldrh w0, [x0, #:lo12:.LANCHOR0+462] cmp w0, 0 cset w0, eq @@ -509,7 +874,17 @@ FtlFreeSysBlkQueueEmpty: .global FtlFreeSysBlkQueueFull .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE19 + .text +.LPFE19: + nop + nop adrp x0, .LANCHOR0+462 + hint 25 // paciasp + hint 29 // autiasp ldrh w0, [x0, #:lo12:.LANCHOR0+462] cmp w0, 1024 cset w0, eq @@ -519,166 +894,204 @@ FtlFreeSysBlkQueueFull: .global FtlFreeSysBLkSort .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE20 + .text +.LPFE20: + nop + nop adrp x0, .LANCHOR0 - add x2, x0, :lo12:.LANCHOR0 - add x1, x2, 456 - ldrh w3, [x1, 6] - cbz w3, .L54 - ldrh w5, [x2, 2540] - mov w6, 0 - ldrh w3, [x1, 2] - mov w4, 0 - ldrh w2, [x1, 4] - and w5, w5, 31 -.L56: - cmp w5, w4 - bgt .L57 - cbz w6, .L54 add x0, x0, :lo12:.LANCHOR0 - strh w3, [x0, 458] - strh w2, [x0, 460] -.L54: + hint 25 // paciasp + ldrh w1, [x0, 462] + cbz w1, .L85 + ldrh w5, [x0, 2540] + add x4, x0, 456 + ldrh w2, [x4, 2] + mov w6, 0 + ldrh w1, [x4, 4] + and w5, w5, 31 + mov w3, 0 +.L88: + cmp w3, w5 + bne .L89 + cbz w6, .L85 + strh w2, [x0, 458] + strh w1, [x0, 460] +.L85: + hint 29 // autiasp ret -.L57: - add x6, x1, x3, sxtw 1 - add w4, w4, 1 +.L89: + add x6, x4, x2, sxtw 1 add w3, w3, 1 - and w4, w4, 65535 - and w3, w3, 1023 + add w2, w2, 1 + and w3, w3, 65535 + and w2, w2, 1023 ldrh w7, [x6, 8] - add x6, x1, x2, sxtw 1 + add x6, x4, x1, sxtw 1 + add w1, w1, 1 + and w1, w1, 1023 strh w7, [x6, 8] mov w6, 1 - add w2, w2, w6 - and w2, w2, 1023 - b .L56 + b .L88 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .align 2 .global IsInFreeQueue .type IsInFreeQueue, %function IsInFreeQueue: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE21 + .text +.LPFE21: + nop + nop adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 - add x1, x1, 456 + hint 25 // paciasp + ldrh w3, [x1, 462] + cmp w3, 1024 + beq .L99 + ldrh w5, [x1, 458] + add x4, x1, 456 and w0, w0, 65535 - ldrh w4, [x1, 6] - cmp w4, 1024 - beq .L67 - ldrh w5, [x1, 2] - mov w3, 0 -.L65: - cmp w3, w4 - bcc .L66 -.L67: + mov w2, 0 +.L97: + cmp w3, w2 + bhi .L98 +.L99: mov w0, 0 +.L95: + hint 29 // autiasp ret -.L66: - add w2, w3, w5 - ubfiz x2, x2, 1, 10 - add x2, x1, x2 - ldrh w2, [x2, 8] - cmp w2, w0 - beq .L68 - add w3, w3, 1 - b .L65 -.L68: +.L98: + add w1, w5, w2 + ubfiz x1, x1, 1, 10 + add x1, x4, x1 + ldrh w1, [x1, 8] + cmp w1, w0 + beq .L100 + add w2, w2, 1 + b .L97 +.L100: mov w0, 1 - ret + b .L95 .size IsInFreeQueue, .-IsInFreeQueue .align 2 .global insert_data_list .type insert_data_list, %function insert_data_list: - adrp x2, .LANCHOR0 - add x3, x2, :lo12:.LANCHOR0 - and w0, w0, 65535 - mov x4, x2 - ldrh w1, [x3, 244] - cmp w1, w0 - bls .L71 - mov w6, 6 - ldr x8, [x3, 2560] - mov w1, -1 - umull x7, w0, w6 - add x13, x8, x7 - strh w1, [x13, 2] - strh w1, [x8, x7] - ldr x1, [x3, 2568] - cbnz x1, .L72 - str x13, [x3, 2568] -.L71: - mov w0, 0 - ret -.L72: - ldr x11, [x3, 72] - ubfiz x2, x0, 1, 16 - ldr x10, [x3, 2560] - mov x9, -6148914691236517206 - movk x9, 0xaaab, lsl 0 - ldrh w14, [x3, 244] + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE22 + .text +.LPFE22: + nop + nop + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + hint 25 // paciasp + ldrh w2, [x1, 244] + cmp w2, w0, uxth + bls .L104 + and w3, w0, 65535 + mov w10, 6 + ldr x7, [x1, 2560] + mov w0, -1 + umull x6, w3, w10 + add x4, x7, x6 + str w0, [x7, x6] + ldr x2, [x1, 2568] + cbnz x2, .L105 +.L117: + str x4, [x1, 2568] + b .L104 +.L105: + ldr x11, [x1, 72] + ubfiz x5, x3, 1, 16 + ldrh w8, [x4, 4] + mov w12, 0 + ldr x9, [x1, 2560] + cmp w8, 0 + ldrh w5, [x11, x5] mov w15, 65535 - mov w3, 0 - ldrh w5, [x11, x2] - ldrh w2, [x13, 4] - cmp w2, 0 - mul w5, w5, w2 - sub x2, x1, x10 - asr x2, x2, 1 - csinv w5, w5, wzr, ne - mul x2, x2, x9 - and w2, w2, 65535 -.L77: - add w3, w3, 1 - and w3, w3, 65535 - cmp w3, w14 - bhi .L71 - cmp w0, w2 - beq .L71 - ldrh w12, [x1, 4] - cbz w12, .L75 - ubfiz x9, x2, 1, 16 - ldrh w9, [x11, x9] - mul w9, w9, w12 - cmp w9, w5 - bcs .L75 - ldrh w9, [x1] - cmp w9, w15 - bne .L76 - strh w2, [x13, 2] - add x2, x4, :lo12:.LANCHOR0 - strh w0, [x1] - str x13, [x2, 2576] - b .L71 -.L76: - umaddl x1, w9, w6, x10 - mov w2, w9 - b .L77 -.L75: - strh w2, [x8, x7] - ldrh w2, [x1, 2] - strh w2, [x13, 2] - add x2, x4, :lo12:.LANCHOR0 - ldr x3, [x2, 2568] - cmp x1, x3 - bne .L78 - strh w0, [x1, 2] - str x13, [x2, 2568] - b .L71 -.L78: - ldrh w3, [x1, 2] + ldrh w14, [x1, 244] + mul w5, w5, w8 + mov x8, -6148914691236517206 + movk x8, 0xaaab, lsl 0 + csel w5, w5, w0, ne + sub x0, x2, x9 + asr x0, x0, 1 + mul x0, x0, x8 + and w0, w0, 65535 +.L110: + add w8, w12, 1 + and w12, w8, 65535 + cmp w14, w8, uxth + bcc .L104 + cmp w3, w0 + beq .L104 + ldrh w13, [x2, 4] + cbz w13, .L108 + ubfiz x8, x0, 1, 16 + ldrh w8, [x11, x8] + mul w8, w8, w13 + cmp w8, w5 + bcs .L108 + ldrh w8, [x2] + cmp w8, w15 + bne .L109 + strh w0, [x4, 2] + strh w3, [x2] + str x4, [x1, 2576] +.L104: + mov w0, 0 + hint 29 // autiasp + ret +.L109: + umaddl x2, w8, w10, x9 + mov w0, w8 + b .L110 +.L108: + strh w0, [x7, x6] + ldrh w0, [x2, 2] + strh w0, [x4, 2] + ldr x5, [x1, 2568] + cmp x2, x5 + bne .L111 + strh w3, [x2, 2] + b .L117 +.L111: mov w4, 6 - ldr x2, [x2, 2560] - umull x3, w3, w4 - strh w0, [x2, x3] - strh w0, [x1, 2] - b .L71 + ldr x1, [x1, 2560] + umull x0, w0, w4 + strh w3, [x1, x0] + strh w3, [x2, 2] + b .L104 .size insert_data_list, .-insert_data_list + .section .rodata.str1.1 +.LC9: + .string "\n!!!!! error @ func:%s - line:%d\n" + .text .align 2 .global INSERT_DATA_LIST .type INSERT_DATA_LIST, %function INSERT_DATA_LIST: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE23 + .text +.LPFE23: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 + mov x29, sp bl insert_data_list adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 @@ -688,93 +1101,110 @@ INSERT_DATA_LIST: strh w0, [x1, 2584] ldrh w1, [x1, 244] cmp w1, w0 - bcs .L83 + bcs .L118 adrp x1, .LANCHOR1 - adrp x0, .LC8 - mov w2, 214 + adrp x0, .LC9 add x1, x1, :lo12:.LANCHOR1 - add x0, x0, :lo12:.LC8 + add x0, x0, :lo12:.LC9 + mov w2, 214 bl sftl_printk -.L83: +.L118: ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size INSERT_DATA_LIST, .-INSERT_DATA_LIST .align 2 .global insert_free_list .type insert_free_list, %function insert_free_list: - and w0, w0, 65535 - mov w7, 65535 - cmp w0, w7 - beq .L87 - adrp x2, .LANCHOR0 - add x5, x2, :lo12:.LANCHOR0 - mov w6, 6 - mov w1, -1 - mov x3, x2 - ldr x9, [x5, 2560] - umull x8, w0, w6 - add x4, x9, x8 - strh w1, [x4, 2] - strh w1, [x9, x8] - ldr x1, [x5, 2592] - cbnz x1, .L88 - str x4, [x5, 2592] -.L87: - mov w0, 0 - ret -.L88: - ldr x11, [x5, 2600] - ubfiz x2, x0, 1, 16 - ldr x10, [x5, 2560] - mov x5, -6148914691236517206 - movk x5, 0xaaab, lsl 0 - ldrh w12, [x11, x2] - sub x2, x1, x10 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE24 + .text +.LPFE24: + nop + nop + mov w11, 65535 + hint 25 // paciasp + cmp w11, w0, uxth + beq .L122 + and w3, w0, 65535 + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + mov w9, 6 + mov w0, -1 + umull x5, w3, w9 + ldr x6, [x1, 2560] + add x4, x6, x5 + str w0, [x6, x5] + ldr x0, [x1, 2592] + cbnz x0, .L123 +.L129: + str x4, [x1, 2592] + b .L122 +.L123: + ldr x10, [x1, 2600] + ubfiz x2, x3, 1, 16 + ldr x8, [x1, 2560] + mov x7, -6148914691236517206 + ldrh w12, [x10, x2] + movk x7, 0xaaab, lsl 0 + sub x2, x0, x8 asr x2, x2, 1 - mul x2, x2, x5 + mul x2, x2, x7 and w2, w2, 65535 -.L91: - ubfiz x5, x2, 1, 16 - ldrh w5, [x11, x5] - cmp w5, w12 - bcs .L89 - ldrh w5, [x1] - cmp w5, w7 - bne .L90 +.L126: + ubfiz x7, x2, 1, 16 + ldrh w7, [x10, x7] + cmp w7, w12 + bcs .L124 + ldrh w7, [x0] + cmp w7, w11 + bne .L125 strh w2, [x4, 2] - strh w0, [x1] - b .L87 -.L90: - umaddl x1, w5, w6, x10 - mov w2, w5 - b .L91 -.L89: - ldrh w5, [x1, 2] - strh w5, [x4, 2] - strh w2, [x9, x8] - add x2, x3, :lo12:.LANCHOR0 - ldr x3, [x2, 2592] - cmp x1, x3 - bne .L92 - strh w0, [x1, 2] - str x4, [x2, 2592] - b .L87 -.L92: - ldrh w3, [x1, 2] + strh w3, [x0] +.L122: + mov w0, 0 + hint 29 // autiasp + ret +.L125: + umaddl x0, w7, w9, x8 + mov w2, w7 + b .L126 +.L124: + ldrh w7, [x0, 2] + strh w7, [x4, 2] + strh w2, [x6, x5] + ldr x2, [x1, 2592] + cmp x2, x0 + bne .L127 + strh w3, [x0, 2] + b .L129 +.L127: + ldrh w2, [x0, 2] mov w4, 6 - ldr x2, [x2, 2560] - umull x3, w3, w4 - strh w0, [x2, x3] - strh w0, [x1, 2] - b .L87 + ldr x1, [x1, 2560] + umull x2, w2, w4 + strh w3, [x1, x2] + strh w3, [x0, 2] + b .L122 .size insert_free_list, .-insert_free_list .align 2 .global INSERT_FREE_LIST .type INSERT_FREE_LIST, %function INSERT_FREE_LIST: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE25 + .text +.LPFE25: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 + mov x29, sp bl insert_free_list adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 @@ -784,124 +1214,145 @@ INSERT_FREE_LIST: strh w0, [x1, 228] ldrh w1, [x1, 244] cmp w1, w0 - bcs .L93 + bcs .L130 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 17 + add x0, x0, :lo12:.LC9 mov w2, 207 - add x1, x1, 24 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L93: +.L130: ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size INSERT_FREE_LIST, .-INSERT_FREE_LIST .align 2 .global List_remove_node .type List_remove_node, %function List_remove_node: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE26 + .text +.LPFE26: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -64]! and w1, w1, 65535 - mov w2, 6 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - str x23, [sp, 48] - mov x23, x0 - add x0, x19, :lo12:.LANCHOR0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - umull x21, w1, w2 - ldr x22, [x0, 2560] + mov x21, x0 + mov w0, 6 + ldr x22, [x20, 2560] + umull x19, w1, w0 + str x23, [sp, 48] mov w0, 65535 - add x20, x22, x21 - ldrh w1, [x20, 2] + add x23, x22, x19 + ldrh w1, [x23, 2] cmp w1, w0 - bne .L97 - ldr x0, [x23] - cmp x20, x0 - beq .L97 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 372 - add x1, x1, 48 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L97: - ldr x0, [x23] + bne .L134 + ldr x0, [x21] + cmp x23, x0 + bne .L135 +.L138: + ldrh w0, [x22, x19] mov w1, 65535 - cmp x20, x0 - ldrh w0, [x22, x21] - bne .L98 cmp w0, w1 - bne .L99 - str xzr, [x23] -.L100: + bne .L142 + str xzr, [x21] +.L140: mov w0, -1 - strh w0, [x22, x21] - strh w0, [x20, 2] + str w0, [x22, x19] mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldr x23, [sp, 48] ldp x29, x30, [sp], 64 + hint 29 // autiasp ret -.L99: - add x19, x19, :lo12:.LANCHOR0 +.L135: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 34 + add x0, x0, :lo12:.LC9 + mov w2, 372 + bl sftl_printk +.L134: + ldr x0, [x21] + ldrh w1, [x22, x19] + cmp x0, x23 + beq .L138 + ldrh w0, [x23, 2] + mov w2, 65535 + cmp w1, w2 + bne .L141 + cmp w0, w1 + beq .L140 + mov w1, 6 + mov w2, -1 + umull x0, w0, w1 + ldr x1, [x20, 2560] + strh w2, [x1, x0] + b .L140 +.L142: + ldr x1, [x20, 2560] mov w2, 6 - ldr x1, [x19, 2560] umaddl x0, w0, w2, x1 mov w1, -1 - str x0, [x23] + str x0, [x21] strh w1, [x0, 2] - b .L100 -.L98: - cmp w0, w1 - ldrh w1, [x20, 2] - bne .L101 - cmp w1, w0 - beq .L100 - add x19, x19, :lo12:.LANCHOR0 - mov w0, 6 - mov w2, -1 - umull x1, w1, w0 - ldr x0, [x19, 2560] - strh w2, [x0, x1] - b .L100 -.L101: - add x19, x19, :lo12:.LANCHOR0 + b .L140 +.L141: + ldr x3, [x20, 2560] mov w2, 6 - ldr x3, [x19, 2560] - umaddl x0, w0, w2, x3 - strh w1, [x0, 2] - ldrh w0, [x20, 2] - ldr x1, [x19, 2560] - ldrh w3, [x22, x21] + umaddl x1, w1, w2, x3 + strh w0, [x1, 2] umull x0, w0, w2 + ldr x1, [x20, 2560] + ldrh w3, [x22, x19] strh w3, [x1, x0] - b .L100 + b .L140 .size List_remove_node, .-List_remove_node .align 2 .global List_pop_index_node .type List_pop_index_node, %function List_pop_index_node: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE27 + .text +.LPFE27: + nop + nop ldr x2, [x0] - cbz x2, .L109 + cbz x2, .L150 + hint 25 // paciasp stp x29, x30, [sp, -32]! adrp x3, .LANCHOR0+2560 - and w1, w1, 65535 - mov w4, 65535 - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] - mov w5, 6 + and w1, w1, 65535 ldr x19, [x3, #:lo12:.LANCHOR0+2560] -.L105: - cbnz w1, .L106 -.L108: + mov w4, 65535 + mov w5, 6 +.L147: + cbz w1, .L148 + ldrh w3, [x2] + cmp w3, w4 + bne .L149 +.L148: sub x19, x2, x19 mov x2, -6148914691236517206 - asr x19, x19, 1 movk x2, 0xaaab, lsl 0 + asr x19, x19, 1 mul x19, x19, x2 and w19, w19, 65535 mov w1, w19 @@ -909,16 +1360,14 @@ List_pop_index_node: mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L106: - ldrh w3, [x2] - cmp w3, w4 - beq .L108 +.L149: sub w1, w1, #1 umaddl x2, w3, w5, x19 and w1, w1, 65535 - b .L105 -.L109: + b .L147 +.L150: mov w0, 65535 ret .size List_pop_index_node, .-List_pop_index_node @@ -926,505 +1375,575 @@ List_pop_index_node: .global List_pop_head_node .type List_pop_head_node, %function List_pop_head_node: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE28 + .text +.LPFE28: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! mov w1, 0 - add x29, sp, 0 + mov x29, sp bl List_pop_index_node ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size List_pop_head_node, .-List_pop_head_node .align 2 .global List_get_gc_head_node .type List_get_gc_head_node, %function List_get_gc_head_node: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE29 + .text +.LPFE29: + nop + nop and w2, w0, 65535 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 + hint 25 // paciasp ldr x1, [x0, 2568] - cbz x1, .L121 - ldr x3, [x0, 2560] + cbz x1, .L165 mov w4, 6 + ldr x3, [x0, 2560] mov w0, 65535 -.L118: - cbz w2, .L119 +.L162: + cbz w2, .L163 ldrh w1, [x1] cmp w1, w0 - bne .L120 + bne .L164 +.L160: + hint 29 // autiasp ret -.L120: +.L164: sub w2, w2, #1 umaddl x1, w1, w4, x3 and w2, w2, 65535 - b .L118 -.L121: + b .L162 +.L165: mov w0, 65535 - ret -.L119: + b .L160 +.L163: sub x0, x1, x3 mov x1, -6148914691236517206 - asr x0, x0, 1 movk x1, 0xaaab, lsl 0 + asr x0, x0, 1 mul x0, x0, x1 and w0, w0, 65535 - ret + b .L160 .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: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE30 + .text +.LPFE30: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -64]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - and w20, w0, 65535 adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] + ldrh w1, [x19, 24] stp x23, x24, [sp, 48] - ldrh w1, [x0, 24] - cmp w1, w20 - beq .L124 - ldrh w1, [x0, 80] - cmp w1, w20 - beq .L124 - ldrh w1, [x0, 128] - cmp w1, w20 - beq .L124 + cmp w1, w0, uxth + beq .L169 + and w20, w0, 65535 + ldrh w0, [x19, 80] + cmp w0, w20 + beq .L169 + ldrh w0, [x19, 128] + cmp w0, w20 + beq .L169 mov w22, 6 - ldr x24, [x0, 2560] - ldr x1, [x0, 2568] + ldr x24, [x19, 2560] umull x22, w20, w22 + ldr x0, [x19, 2568] add x23, x24, x22 - cmp x23, x1 - beq .L124 - ldr x2, [x0, 72] - ubfiz x1, x20, 1, 16 + cmp x23, x0 + beq .L169 + ldr x1, [x19, 72] + ubfiz x0, x20, 1, 16 + ldrh w21, [x1, x0] + mov w1, 65535 ldrh w0, [x23, 4] cmp w0, 0 - ldrh w21, [x2, x1] - mov w1, 65535 mul w21, w21, w0 ldrh w0, [x23, 2] csinv w21, w21, wzr, ne cmp w0, w1 - bne .L127 + bne .L172 ldrh w1, [x24, x22] cmp w1, w0 - bne .L127 + bne .L172 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 51 + add x0, x0, :lo12:.LC9 mov w2, 463 - add x1, x1, 72 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L127: +.L172: ldrh w0, [x23, 2] mov w1, 65535 cmp w0, w1 - bne .L128 + bne .L173 ldrh w1, [x24, x22] cmp w1, w0 - beq .L124 -.L128: + beq .L169 +.L173: mov w1, 6 - add x22, x19, :lo12:.LANCHOR0 mov x2, -6148914691236517206 - umull x0, w0, w1 movk x2, 0xaaab, lsl 0 + umull x0, w0, w1 asr x1, x0, 1 mul x1, x1, x2 - ldr x2, [x22, 72] + ldr x2, [x19, 72] ldrh w1, [x2, x1, lsl 1] - ldr x2, [x22, 2560] + ldr x2, [x19, 2560] add x0, x2, x0 ldrh w2, [x0, 4] cmp w2, 0 mul w0, w1, w2 csinv w0, w0, wzr, ne cmp w21, w0 - bcs .L124 + bcs .L169 mov w1, w20 - add x0, x22, 2568 + add x0, x19, 2568 bl List_remove_node - ldrh w0, [x22, 2584] - cbnz w0, .L130 + ldrh w0, [x19, 2584] + cbnz w0, .L175 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 51 + add x0, x0, :lo12:.LC9 mov w2, 474 - add x1, x1, 72 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L130: - add x19, x19, :lo12:.LANCHOR0 +.L175: ldrh w0, [x19, 2584] sub w0, w0, #1 strh w0, [x19, 2584] mov w0, w20 bl INSERT_DATA_LIST -.L124: +.L169: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 + hint 29 // autiasp ret .size List_update_data_list, .-List_update_data_list .align 2 .global select_l2p_ram_region .type select_l2p_ram_region, %function select_l2p_ram_region: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE31 + .text +.LPFE31: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - adrp x1, .LANCHOR0 - add x0, x1, :lo12:.LANCHOR0 + adrp x2, .LANCHOR0 + mov x29, sp + add x2, x2, :lo12:.LANCHOR0 mov x3, 0 - add x29, sp, 0 str x19, [sp, 16] - mov w4, 65535 - ldrh w2, [x0, 342] - ldr x0, [x0, 2608] -.L135: + mov w5, 65535 + ldr x0, [x2, 2608] + ldrh w1, [x2, 342] + sub x4, x0, #16 +.L180: and w19, w3, 65535 - cmp w19, w2 - bcc .L137 - add x4, x0, 4 - mov w19, w2 - mov w6, -2147483648 - mov w3, 0 -.L138: - cmp w3, w2 - bne .L140 - cmp w19, w2 - bcc .L136 - add x1, x1, :lo12:.LANCHOR0 - mov w19, w2 + cmp w1, w3, uxth + bhi .L182 + mov w19, w1 + add x7, x0, 4 + mov x3, 0 + mov w5, -2147483648 +.L183: + and w6, w3, 65535 + cmp w1, w3, uxth + bhi .L185 + cmp w1, w19 + bhi .L181 + mov w19, w1 + ldrh w5, [x2, 2616] mov w3, -1 - ldrh w4, [x1, 2616] - mov w1, 0 -.L141: + mov w2, 0 +.L186: cmp w1, w2 - bne .L143 - cmp w19, w1 - bcc .L136 + bne .L188 + cmp w1, w19 + bhi .L181 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - mov w2, 789 - add x1, x1, 96 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + add x1, x1, 73 + mov w2, 796 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L136 -.L137: + b .L181 +.L182: add x3, x3, 1 - add x5, x0, x3, lsl 4 - ldrh w5, [x5, -16] - cmp w5, w4 - bne .L135 -.L136: + lsl x6, x3, 4 + ldrh w6, [x4, x6] + cmp w6, w5 + bne .L180 +.L181: mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L140: - ldr w5, [x4] - tbnz w5, #31, .L139 +.L185: + lsl x4, x3, 4 + ldr w4, [x7, x4] + tbnz w4, #31, .L184 + cmp w4, w5 + bcs .L184 + mov w5, w4 + mov w19, w6 +.L184: + add x3, x3, 1 + b .L183 +.L188: + ldr w4, [x0, 4] + cmp w4, w3 + bcs .L187 + ldrh w6, [x0] cmp w6, w5 - bls .L139 - mov w6, w5 - mov w19, w3 -.L139: - add w3, w3, 1 - add x4, x4, 16 - and w3, w3, 65535 - b .L138 -.L143: - ldr w6, [x0, 4] - cmp w3, w6 - bls .L142 - ldrh w5, [x0] - cmp w5, w4 - csel w3, w3, w6, eq - csel w19, w19, w1, eq -.L142: - add w1, w1, 1 + csel w3, w3, w4, eq + csel w19, w19, w2, eq +.L187: + add w2, w2, 1 add x0, x0, 16 - and w1, w1, 65535 - b .L141 + and w2, w2, 65535 + b .L186 .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 .global FtlUpdateVaildLpn .type FtlUpdateVaildLpn, %function FtlUpdateVaildLpn: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE32 + .text +.LPFE32: + nop + nop adrp x1, .LANCHOR0 - add x3, x1, :lo12:.LANCHOR0 - ldrh w2, [x3, 2618] + add x1, x1, :lo12:.LANCHOR0 + hint 25 // paciasp + ldrh w2, [x1, 2618] cmp w2, 4 - bhi .L146 - cbnz w0, .L146 + bhi .L191 + cbnz w0, .L191 add w2, w2, 1 - strh w2, [x3, 2618] + strh w2, [x1, 2618] +.L190: + hint 29 // autiasp ret -.L146: - add x0, x1, :lo12:.LANCHOR0 +.L191: + ldrh w4, [x1, 244] + mov x0, 0 + ldr x5, [x1, 72] mov w6, 65535 - mov x1, 0 - ldrh w4, [x0, 244] - ldr x5, [x0, 72] - strh wzr, [x0, 2618] - str wzr, [x0, 2620] -.L147: - cmp w4, w1, uxth - bhi .L149 - ret -.L149: - ldrh w3, [x5, x1, lsl 1] + strh wzr, [x1, 2618] + str wzr, [x1, 2620] +.L192: + cmp w4, w0, uxth + bls .L190 + ldrh w3, [x5, x0, lsl 1] cmp w3, w6 - beq .L148 - ldr w2, [x0, 2620] + beq .L193 + ldr w2, [x1, 2620] add w2, w2, w3 - str w2, [x0, 2620] -.L148: - add x1, x1, 1 - b .L147 + str w2, [x1, 2620] +.L193: + add x0, x0, 1 + b .L192 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 - .global ftl_get_blk_mode - .type ftl_get_blk_mode, %function -ftl_get_blk_mode: - and w1, w0, 65535 - adrp x0, .LANCHOR0+2624 - ldr x0, [x0, #:lo12:.LANCHOR0+2624] - 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 - .align 2 .global ftl_sb_update_avl_pages .type ftl_sb_update_avl_pages, %function ftl_sb_update_avl_pages: - and w6, w1, 65535 - adrp x4, .LANCHOR0 - add x1, x4, :lo12:.LANCHOR0 - and w2, w2, 65535 - strh wzr, [x0, 4] - ldrh w3, [x1, 236] - mov w1, 65535 -.L153: - cmp w3, w2, uxth - bhi .L155 - 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, 306] - sub w1, w1, #1 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE33 + .text +.LPFE33: + nop + nop + adrp x3, .LANCHOR0 + add x3, x3, :lo12:.LANCHOR0 and w1, w1, 65535 - sub w1, w1, w6 -.L156: - cmp x2, x3 - bne .L158 + and w2, w2, 65535 + mov w6, 65535 + strh wzr, [x0, 4] + ldrh w5, [x3, 236] + hint 25 // paciasp +.L198: + cmp w5, w2, uxth + bhi .L200 + ldrh w2, [x3, 306] + add x4, x0, 16 + mov w6, 65535 + sub w2, w2, w1 + mov x1, 0 + sub w2, w2, #1 + sxth w2, w2 +.L201: + cmp w5, w1, uxth + bhi .L203 + hint 29 // autiasp ret -.L155: - add x5, x0, x2, sxtw 1 - ldrh w5, [x5, 16] - cmp w5, w1 - beq .L154 - ldrh w5, [x0, 4] - add w5, w5, 1 - strh w5, [x0, 4] -.L154: - add w2, w2, 1 - b .L153 -.L158: - ldrh w4, [x2] - cmp w4, w5 - beq .L157 +.L200: + add x4, x0, x2, sxtw 1 + ldrh w4, [x4, 16] + cmp w4, w6 + beq .L199 ldrh w4, [x0, 4] - add w4, w1, w4 + add w4, w4, 1 strh w4, [x0, 4] -.L157: - add x2, x2, 2 - b .L156 +.L199: + add w2, w2, 1 + b .L198 +.L203: + ldrh w3, [x4, x1, lsl 1] + cmp w3, w6 + beq .L202 + ldrh w3, [x0, 4] + add w3, w2, w3 + strh w3, [x0, 4] +.L202: + add x1, x1, 1 + b .L201 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE34 + .text +.LPFE34: + nop + nop ldrh w1, [x0, 4] - cbz w1, .L159 - ldrh w2, [x0] - mov w1, 65535 - cmp w2, w1 - beq .L159 - ldrb w2, [x0, 6] - add x2, x2, 8 - ldrh w3, [x0, x2, lsl 1] - adrp x2, .LANCHOR0+236 - ldrh w4, [x2, #:lo12:.LANCHOR0+236] - mov w2, w1 -.L162: - cmp w3, w2 - beq .L164 -.L159: + hint 25 // paciasp + cbz w1, .L205 + ldrh w1, [x0] + mov w2, 65535 + cmp w1, w2 + beq .L205 + ldrb w1, [x0, 6] + adrp x3, .LANCHOR0+236 + add x1, x1, 8 + ldrh w3, [x3, #:lo12:.LANCHOR0+236] + ldrh w1, [x0, x1, lsl 1] +.L208: + cmp w1, w2 + beq .L210 +.L205: + hint 29 // autiasp ret -.L164: +.L210: ldrb w1, [x0, 6] add w1, w1, 1 and w1, w1, 255 strb w1, [x0, 6] - cmp w1, w4 - bne .L163 + cmp w1, w3 + bne .L209 ldrh w1, [x0, 2] strb wzr, [x0, 6] add w1, w1, 1 strh w1, [x0, 2] -.L163: +.L209: ldrb w1, [x0, 6] add x1, x1, 8 - ldrh w3, [x0, x1, lsl 1] - b .L162 + ldrh w1, [x0, x1, lsl 1] + b .L208 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global make_superblock .type make_superblock, %function make_superblock: - stp x29, x30, [sp, -32]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE35 + .text +.LPFE35: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! + mov x29, sp stp x19, x20, [sp, 16] - mov x19, x0 adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x19] - ldrh w0, [x0, 244] + add x20, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + mov x19, x0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + ldrh w1, [x0] + ldrh w0, [x20, 244] cmp w1, w0 - bcc .L166 + bcc .L213 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2150 - add x1, x1, 120 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 95 + add x0, x0, :lo12:.LC9 + mov w2, 2157 bl sftl_printk -.L166: - add x0, x20, :lo12:.LANCHOR0 - add x6, x19, 16 - add x7, x0, 264 +.L213: + ldrh w26, [x20, 236] + add x23, x19, 16 + add x27, x20, 264 + mov x22, 0 + mov w25, -1 strh wzr, [x19, 4] strb wzr, [x19, 7] - mov x5, 0 - ldrh w8, [x0, 236] - mov w9, -1 -.L167: - cmp w8, w5, uxth - bhi .L169 - add x20, x20, :lo12:.LANCHOR0 - ldrb w0, [x19, 7] - strb wzr, [x19, 9] - ldrh w1, [x20, 306] - mul w0, w0, w1 +.L214: ldrh w1, [x19] - strh w0, [x19, 4] + ldrb w21, [x19, 7] + cmp w26, w22, uxth + bhi .L216 + ldrh w0, [x20, 306] + ubfiz x1, x1, 1, 16 + strb wzr, [x19, 9] + mul w21, w21, w0 + strh w21, [x19, 4] ldr x0, [x20, 2600] - ldrh w1, [x0, x1, lsl 1] + ldp x21, x22, [sp, 32] + ldrh w1, [x0, x1] mov w0, 10000 + ldp x23, x24, [sp, 48] cmp w1, w0 - bls .L170 - mov w0, 1 + cset w0, hi + ldp x25, x26, [sp, 64] strb w0, [x19, 9] -.L170: mov w0, 0 ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 + ldr x27, [sp, 80] + ldp x29, x30, [sp], 96 + hint 29 // autiasp ret -.L169: - ldrh w1, [x19] - ldrb w0, [x7, x5] +.L216: + ldrb w0, [x27, x22] bl V2P_block - mov w4, w0 - strh w9, [x6] + strh w25, [x23] + mov w24, w0 bl FtlBbmIsBadBlock - cbnz w0, .L168 - strh w4, [x6] - ldrb w0, [x19, 7] - add w0, w0, 1 - strb w0, [x19, 7] -.L168: - add x5, x5, 1 - add x6, x6, 2 - b .L167 + cbnz w0, .L215 + strh w24, [x23] + add w21, w21, 1 + strb w21, [x19, 7] +.L215: + add x22, x22, 1 + add x23, x23, 2 + b .L214 .size make_superblock, .-make_superblock .align 2 .global update_multiplier_value .type update_multiplier_value, %function update_multiplier_value: - and w8, w0, 65535 - adrp x0, .LANCHOR0 - add x1, x0, :lo12:.LANCHOR0 - mov x9, 0 - mov w6, 0 - mov x5, x0 - add x7, x1, 264 - ldrh w10, [x1, 236] - ldrh w11, [x1, 306] - cmp w10, w9, uxth - bhi .L184 - cbz w6, .L182 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE36 + .text +.LPFE36: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -80]! + mov x29, sp + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + mov w19, 0 + ldrh w23, [x20, 236] + ldrh w24, [x20, 306] + stp x21, x22, [sp, 32] + and w21, w0, 65535 + mov x22, 0 + str x25, [sp, 64] + add x25, x20, 264 +.L220: + cmp w23, w22, uxth + bhi .L222 + cbz w19, .L223 mov w0, 32768 - sdiv w6, w0, w6 -.L183: - add x0, x5, :lo12:.LANCHOR0 + udiv w19, w0, w19 +.L223: + ldr x0, [x20, 2560] mov w1, 6 - ldr x0, [x0, 2560] - umaddl x8, w8, w1, x0 + umaddl x21, w21, w1, x0 mov w0, 0 - strh w6, [x8, 4] + strh w19, [x21, 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 + hint 29 // autiasp ret -.L177: - mov w6, 0 - b .L176 -.L182: - mov w6, 0 - b .L183 -.L184: - stp x29, x30, [sp, -16]! - add x29, sp, 0 -.L175: - ldrb w0, [x7, x9] - mov w1, w8 +.L222: + ldrb w0, [x25, x22] + mov w1, w21 bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L174 - add w6, w6, w11 - and w6, w6, 65535 -.L174: - add x9, x9, 1 - cmp w10, w9, uxth - bhi .L175 - cbz w6, .L177 - mov w0, 32768 - sdiv w6, w0, w6 -.L176: - add x0, x5, :lo12:.LANCHOR0 - mov w1, 6 - ldr x0, [x0, 2560] - umaddl x8, w8, w1, x0 - mov w0, 0 - strh w6, [x8, 4] - ldp x29, x30, [sp], 16 - ret + cbnz w0, .L221 + add w19, w24, w19 + and w19, w19, 65535 +.L221: + add x22, x22, 1 + b .L220 .size update_multiplier_value, .-update_multiplier_value .align 2 .global GetFreeBlockMinEraseCount .type GetFreeBlockMinEraseCount, %function GetFreeBlockMinEraseCount: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE37 + .text +.LPFE37: + nop + nop adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 + hint 25 // paciasp ldr x0, [x1, 2592] - cbz x0, .L187 + cbz x0, .L230 ldr x2, [x1, 2560] ldr x1, [x1, 2600] sub x0, x0, x2 @@ -1434,842 +1953,1040 @@ GetFreeBlockMinEraseCount: mul x0, x0, x2 and x0, x0, 65535 ldrh w0, [x1, x0, lsl 1] +.L229: + hint 29 // autiasp ret -.L187: +.L230: mov w0, 0 - ret + b .L229 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 .global GetFreeBlockMaxEraseCount .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE38 + .text +.LPFE38: + nop + nop adrp x2, .LANCHOR0 - add x4, x2, :lo12:.LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + hint 25 // paciasp + ldr x1, [x2, 2592] + cbz x1, .L238 + ldrh w3, [x2, 228] + mov w4, 7 and w0, w0, 65535 - ldr x1, [x4, 2592] - cbz x1, .L195 - ldrh w3, [x4, 228] - mov w5, 7 - ldr x4, [x4, 2560] - mov w6, 6 - mov w7, 65535 - sub x1, x1, x4 - mul w3, w3, w5 - asr x1, x1, 1 + mul w3, w3, w4 asr w3, w3, 3 cmp w0, w3 - csel w0, w3, w0, gt + ble .L234 + and w0, w3, 65535 +.L234: + ldr x4, [x2, 2560] mov x3, -6148914691236517206 movk x3, 0xaaab, lsl 0 + mov w6, 6 + sub x1, x1, x4 + mov w7, 65535 + asr x1, x1, 1 mul x1, x1, x3 mov w3, 0 and w1, w1, 65535 -.L191: +.L235: cmp w0, w3 - beq .L194 + bne .L237 +.L236: + ldr x0, [x2, 2600] + ubfiz x1, x1, 1, 16 + ldrh w0, [x0, x1] +.L233: + hint 29 // autiasp + ret +.L237: umull x5, w1, w6 ldrh w5, [x4, x5] cmp w5, w7 - bne .L192 -.L194: - add x2, x2, :lo12:.LANCHOR0 - ubfiz x1, x1, 1, 16 - ldr x0, [x2, 2600] - ldrh w0, [x0, x1] - ret -.L192: + beq .L236 add w3, w3, 1 mov w1, w5 and w3, w3, 65535 - b .L191 -.L195: + b .L235 +.L238: mov w0, 0 - ret + b .L233 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount + .section .rodata.str1.1 +.LC10: + .string "FLASH INFO:\n" +.LC11: + .string "Device Capacity: %d MB\n" +.LC12: + .string "FTL INFO:\n" +.LC13: + .string "g_MaxLpn = 0x%x\n" +.LC14: + .string "g_VaildLpn = 0x%x\n" +.LC15: + .string "read_page_count = 0x%x\n" +.LC16: + .string "discard_page_count = 0x%x\n" +.LC17: + .string "write_page_count = 0x%x\n" +.LC18: + .string "cache_write_count = 0x%x\n" +.LC19: + .string "l2p_write_count = 0x%x\n" +.LC20: + .string "gc_page_count = 0x%x\n" +.LC21: + .string "totle_write = %d MB\n" +.LC22: + .string "totle_read = %d MB\n" +.LC23: + .string "GSV = 0x%x\n" +.LC24: + .string "GDV = 0x%x\n" +.LC25: + .string "bad blk num = %d\n" +.LC26: + .string "free_superblocks = 0x%x\n" +.LC27: + .string "mlc_EC = 0x%x\n" +.LC28: + .string "slc_EC = 0x%x\n" +.LC29: + .string "avg_EC = 0x%x\n" +.LC30: + .string "sys_EC = 0x%x\n" +.LC31: + .string "max_EC = 0x%x\n" +.LC32: + .string "min_EC = 0x%x\n" +.LC33: + .string "PLT = 0x%x\n" +.LC34: + .string "POT = 0x%x\n" +.LC35: + .string "MaxSector = 0x%x\n" +.LC36: + .string "init_sys_blks_pp = 0x%x\n" +.LC37: + .string "sys_blks_pp = 0x%x\n" +.LC38: + .string "free sysblock = 0x%x\n" +.LC39: + .string "data_blks_pp = 0x%x\n" +.LC40: + .string "data_op_blks_pp = 0x%x\n" +.LC41: + .string "max_data_blks = 0x%x\n" +.LC42: + .string "Sys.id = 0x%x\n" +.LC43: + .string "Bbt.id = 0x%x\n" +.LC44: + .string "ACT.page = 0x%x\n" +.LC45: + .string "ACT.plane = 0x%x\n" +.LC46: + .string "ACT.id = 0x%x\n" +.LC47: + .string "ACT.mode = 0x%x\n" +.LC48: + .string "ACT.a_pages = 0x%x\n" +.LC49: + .string "ACT VPC = 0x%x\n" +.LC50: + .string "BUF.page = 0x%x\n" +.LC51: + .string "BUF.plane = 0x%x\n" +.LC52: + .string "BUF.id = 0x%x\n" +.LC53: + .string "BUF.mode = 0x%x\n" +.LC54: + .string "BUF.a_pages = 0x%x\n" +.LC55: + .string "BUF VPC = 0x%x\n" +.LC56: + .string "TMP.page = 0x%x\n" +.LC57: + .string "TMP.plane = 0x%x\n" +.LC58: + .string "TMP.id = 0x%x\n" +.LC59: + .string "TMP.mode = 0x%x\n" +.LC60: + .string "TMP.a_pages = 0x%x\n" +.LC61: + .string "GC.page = 0x%x\n" +.LC62: + .string "GC.plane = 0x%x\n" +.LC63: + .string "GC.id = 0x%x\n" +.LC64: + .string "GC.mode = 0x%x\n" +.LC65: + .string "GC.a_pages = 0x%x\n" +.LC66: + .string "WR_CHK = %x %x %x\n" +.LC67: + .string "Read Err Cnt = 0x%x\n" +.LC68: + .string "Prog Err Cnt = 0x%x\n" +.LC69: + .string "gc_free_blk_th= 0x%x\n" +.LC70: + .string "gc_merge_free_blk_th= 0x%x\n" +.LC71: + .string "gc_skip_write_count= 0x%x\n" +.LC72: + .string "gc_blk_index= 0x%x\n" +.LC73: + .string "free min EC= 0x%x\n" +.LC74: + .string "free max EC= 0x%x\n" +.LC75: + .string "GC__SB VPC = 0x%x\n" +.LC76: + .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" +.LC77: + .string "free %d. [0x%x] 0x%x 0x%x\n" + .text .align 2 .global FtlPrintInfo2buf .type FtlPrintInfo2buf, %function FtlPrintInfo2buf: - stp x29, x30, [sp, -96]! - adrp x1, .LC9 - add x1, x1, :lo12:.LC9 - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov x22, x0 - stp x23, x24, [sp, 48] - adrp x23, .LANCHOR0 - add x21, x23, :lo12:.LANCHOR0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE39 + .text +.LPFE39: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -80]! + adrp x1, .LC10 + mov x29, sp stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + add x1, x1, :lo12:.LC10 + stp x21, x22, [sp, 32] + mov x21, x0 + stp x23, x24, [sp, 48] + add x20, x21, 12 stp x25, x26, [sp, 64] - add x20, x0, 12 - str x27, [sp, 80] bl strcpy - ldr w3, [x21, 320] - adrp x2, .LC10 - add x2, x2, :lo12:.LC10 - mov x1, 64 + ldr w3, [x19, 320] + adrp x2, .LC11 + add x2, x2, :lo12:.LC11 mov x0, x20 + mov x1, 64 bl snprintf add x20, x20, x0, sxtw mov x0, x20 - adrp x1, .LC11 - add x1, x1, :lo12:.LC11 + adrp x1, .LC12 + add x1, x1, :lo12:.LC12 bl strcpy - ldr w3, [x21, 2632] + ldr w3, [x19, 2624] add x20, x20, 10 - mov x1, 64 mov x0, x20 - adrp x2, .LC12 - add x2, x2, :lo12:.LC12 - bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2620] mov x1, 64 - mov x0, x20 adrp x2, .LC13 add x2, x2, :lo12:.LC13 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2636] + add x22, x20, x0, sxtw + ldr w3, [x19, 2620] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC14 add x2, x2, :lo12:.LC14 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2640] + add x22, x22, x0, sxtw + ldr w3, [x19, 2628] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC15 add x2, x2, :lo12:.LC15 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2644] + add x22, x22, x0, sxtw + ldr w3, [x19, 2632] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC16 add x2, x2, :lo12:.LC16 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2648] + add x22, x22, x0, sxtw + ldr w3, [x19, 2636] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC17 add x2, x2, :lo12:.LC17 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2652] + add x22, x22, x0, sxtw + ldr w3, [x19, 2640] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC18 add x2, x2, :lo12:.LC18 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2656] + add x22, x22, x0, sxtw + ldr w3, [x19, 2644] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC19 add x2, x2, :lo12:.LC19 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2660] + add x22, x22, x0, sxtw + ldr w3, [x19, 2648] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC20 add x2, x2, :lo12:.LC20 - lsr w3, w3, 11 bl snprintf - ldr w3, [x21, 2664] - add x20, x20, x0, sxtw + add x22, x22, x0, sxtw + ldr w3, [x19, 2652] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC21 add x2, x2, :lo12:.LC21 lsr w3, w3, 11 bl snprintf - ldr w3, [x21, 2668] - add x20, x20, x0, sxtw + ldr w3, [x19, 2656] + add x22, x22, x0, sxtw + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC22 add x2, x2, :lo12:.LC22 + lsr w3, w3, 11 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2672] + ldr w3, [x19, 2660] + add x22, x22, x0, sxtw + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC23 add x2, x2, :lo12:.LC23 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 366] + add x22, x22, x0, sxtw + ldr w3, [x19, 2664] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC24 add x2, x2, :lo12:.LC24 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 228] + add x22, x22, x0, sxtw + ldrh w3, [x19, 366] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC25 add x2, x2, :lo12:.LC25 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2676] + add x22, x22, x0, sxtw + ldrh w3, [x19, 228] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC26 add x2, x2, :lo12:.LC26 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2680] + add x22, x22, x0, sxtw + ldr w3, [x19, 2668] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC27 add x2, x2, :lo12:.LC27 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2684] + add x22, x22, x0, sxtw + ldr w3, [x19, 2672] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC28 add x2, x2, :lo12:.LC28 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2688] + add x22, x22, x0, sxtw + ldr w3, [x19, 2676] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC29 add x2, x2, :lo12:.LC29 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2692] + add x22, x22, x0, sxtw + ldr w3, [x19, 2680] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC30 add x2, x2, :lo12:.LC30 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 2696] + add x22, x22, x0, sxtw + ldr w3, [x19, 2684] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC31 add x2, x2, :lo12:.LC31 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 2542] + add x22, x22, x0, sxtw + ldr w3, [x19, 2688] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC32 add x2, x2, :lo12:.LC32 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 2540] + add x22, x22, x0, sxtw + ldrh w3, [x19, 2542] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC33 add x2, x2, :lo12:.LC33 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 344] + add x22, x22, x0, sxtw + ldrh w3, [x19, 2540] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC34 add x2, x2, :lo12:.LC34 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 336] + add x22, x22, x0, sxtw + ldr w3, [x19, 344] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC35 add x2, x2, :lo12:.LC35 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 232] + add x22, x22, x0, sxtw + ldr w3, [x19, 336] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC36 add x2, x2, :lo12:.LC36 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 462] + add x22, x22, x0, sxtw + ldr w3, [x19, 232] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC37 add x2, x2, :lo12:.LC37 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 244] + add x22, x22, x0, sxtw + ldrh w3, [x19, 462] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC38 add x2, x2, :lo12:.LC38 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 2700] + add x22, x22, x0, sxtw + ldrh w3, [x19, 244] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC39 add x2, x2, :lo12:.LC39 bl snprintf - add x20, x20, x0, sxtw - ldr w3, [x21, 248] + add x22, x22, x0, sxtw + ldrh w3, [x19, 2692] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC40 add x2, x2, :lo12:.LC40 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 2704] + add x22, x22, x0, sxtw + ldr w3, [x19, 248] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC41 add x2, x2, :lo12:.LC41 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 360] + add x22, x22, x0, sxtw + ldrh w3, [x19, 2696] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC42 add x2, x2, :lo12:.LC42 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 26] + add x22, x22, x0, sxtw + ldrh w3, [x19, 360] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC43 add x2, x2, :lo12:.LC43 bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 30] + add x22, x22, x0, sxtw + ldrh w3, [x19, 26] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC44 add x2, x2, :lo12:.LC44 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 24] + add x22, x22, x0, sxtw + ldrb w3, [x19, 30] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC45 add x2, x2, :lo12:.LC45 bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 32] + add x22, x22, x0, sxtw + ldrh w3, [x19, 24] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC46 add x2, x2, :lo12:.LC46 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 28] + add x22, x22, x0, sxtw + ldrb w3, [x19, 32] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC47 add x2, x2, :lo12:.LC47 bl snprintf - add x20, x20, x0, sxtw - ldrh w1, [x21, 24] + add x22, x22, x0, sxtw + ldrh w3, [x19, 28] + mov x0, x22 + mov x1, 64 adrp x2, .LC48 - ldr x0, [x21, 72] add x2, x2, :lo12:.LC48 - ldrh w3, [x0, x1, lsl 1] - mov x1, 64 - mov x0, x20 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 82] - mov x1, 64 - mov x0, x20 + add x22, x22, x0, sxtw + ldrh w1, [x19, 24] adrp x2, .LC49 + ldr x0, [x19, 72] add x2, x2, :lo12:.LC49 - bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 86] + ldrh w3, [x0, x1, lsl 1] + mov x0, x22 + mov x1, 64 + bl snprintf + add x22, x22, x0, sxtw + ldrh w3, [x19, 82] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC50 add x2, x2, :lo12:.LC50 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 80] + add x22, x22, x0, sxtw + ldrb w3, [x19, 86] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC51 add x2, x2, :lo12:.LC51 bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 88] + add x22, x22, x0, sxtw + ldrh w3, [x19, 80] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC52 add x2, x2, :lo12:.LC52 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 84] + add x22, x22, x0, sxtw + ldrb w3, [x19, 88] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC53 add x2, x2, :lo12:.LC53 bl snprintf - add x20, x20, x0, sxtw - ldrh w1, [x21, 80] + add x22, x22, x0, sxtw + ldrh w3, [x19, 84] + mov x0, x22 + mov x1, 64 adrp x2, .LC54 - ldr x0, [x21, 72] add x2, x2, :lo12:.LC54 - ldrh w3, [x0, x1, lsl 1] - mov x1, 64 - mov x0, x20 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 130] - mov x1, 64 - mov x0, x20 + add x22, x22, x0, sxtw + ldrh w1, [x19, 80] adrp x2, .LC55 + ldr x0, [x19, 72] add x2, x2, :lo12:.LC55 - bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 134] + ldrh w3, [x0, x1, lsl 1] + mov x0, x22 + mov x1, 64 + bl snprintf + add x22, x22, x0, sxtw + ldrh w3, [x19, 130] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC56 add x2, x2, :lo12:.LC56 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 128] + add x22, x22, x0, sxtw + ldrb w3, [x19, 134] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC57 add x2, x2, :lo12:.LC57 bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 136] + add x22, x22, x0, sxtw + ldrh w3, [x19, 128] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC58 add x2, x2, :lo12:.LC58 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 132] + add x22, x22, x0, sxtw + ldrb w3, [x19, 136] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC59 add x2, x2, :lo12:.LC59 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 178] + add x22, x22, x0, sxtw + ldrh w3, [x19, 132] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC60 add x2, x2, :lo12:.LC60 bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 182] + add x22, x22, x0, sxtw + ldrh w3, [x19, 178] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC61 add x2, x2, :lo12:.LC61 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 176] + add x22, x22, x0, sxtw + ldrb w3, [x19, 182] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC62 add x2, x2, :lo12:.LC62 bl snprintf - add x20, x20, x0, sxtw - ldrb w3, [x21, 184] + add x22, x22, x0, sxtw + ldrh w3, [x19, 176] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC63 add x2, x2, :lo12:.LC63 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 180] + add x22, x22, x0, sxtw + ldrb w3, [x19, 184] + mov x0, x22 mov x1, 64 - mov x0, x20 adrp x2, .LC64 add x2, x2, :lo12:.LC64 bl snprintf - add x20, x20, x0, sxtw - ldr w5, [x21, 2796] + add x22, x22, x0, sxtw + ldrh w3, [x19, 180] + mov x0, x22 mov x1, 64 - ldr w4, [x21, 2804] adrp x2, .LC65 - ldr w3, [x21, 2800] add x2, x2, :lo12:.LC65 - mov x0, x20 bl snprintf - add x19, x20, x0, sxtw - ldr w3, [x21, 2792] + add x22, x22, x0, sxtw + ldr w5, [x19, 2788] + mov x0, x22 + ldr w4, [x19, 2796] mov x1, 64 - mov x0, x19 + ldr w3, [x19, 2792] adrp x2, .LC66 add x2, x2, :lo12:.LC66 bl snprintf - add x19, x19, x0, sxtw - ldr w3, [x21, 2816] + add x22, x22, x0, sxtw + ldr w3, [x19, 2784] + mov x0, x22 mov x1, 64 - mov x0, x19 adrp x2, .LC67 add x2, x2, :lo12:.LC67 bl snprintf - add x19, x19, x0, sxtw - ldrh w3, [x21, 3232] + add x22, x22, x0, sxtw + ldr w3, [x19, 2808] mov x1, 64 - mov x0, x19 + mov x0, x22 adrp x2, .LC68 add x2, x2, :lo12:.LC68 bl snprintf - add x19, x19, x0, sxtw - ldrh w3, [x21, 3234] + add x20, x22, x0, sxtw + ldrh w3, [x19, 3224] + mov x0, x20 mov x1, 64 - mov x0, x19 adrp x2, .LC69 add x2, x2, :lo12:.LC69 bl snprintf - add x19, x19, x0, sxtw - ldr w3, [x21, 3236] + add x20, x20, x0, sxtw + ldrh w3, [x19, 3226] + mov x0, x20 mov x1, 64 - mov x0, x19 adrp x2, .LC70 add x2, x2, :lo12:.LC70 bl snprintf - add x19, x19, x0, sxtw - ldrh w3, [x21, 3240] + add x20, x20, x0, sxtw + ldr w3, [x19, 3228] + mov x0, x20 + mov x1, 64 adrp x2, .LC71 add x2, x2, :lo12:.LC71 - mov x1, 64 - mov x0, x19 bl snprintf - add x19, x19, x0, sxtw + add x20, x20, x0, sxtw + ldrh w3, [x19, 3232] + adrp x2, .LC72 + add x2, x2, :lo12:.LC72 + mov x1, 64 + mov x0, x20 + bl snprintf + add x20, x20, x0, sxtw bl GetFreeBlockMinEraseCount and w3, w0, 65535 mov x1, 64 - mov x0, x19 - adrp x2, .LC72 - add x2, x2, :lo12:.LC72 + mov x0, x20 + adrp x2, .LC73 + add x2, x2, :lo12:.LC73 bl snprintf - add x19, x19, x0, sxtw - ldrh w0, [x21, 228] + add x20, x20, x0, sxtw + ldrh w0, [x19, 228] bl GetFreeBlockMaxEraseCount and w3, w0, 65535 - adrp x2, .LC73 - mov x0, x19 - add x2, x2, :lo12:.LC73 + adrp x2, .LC74 + mov x0, x20 + add x2, x2, :lo12:.LC74 mov x1, 64 bl snprintf - add x19, x19, x0, sxtw + add x20, x20, x0, sxtw adrp x0, .LANCHOR2 ldr w0, [x0, #:lo12:.LANCHOR2] cmp w0, 1 - beq .L197 -.L202: - sub w0, w19, w22 - ldr x27, [sp, 80] + beq .L241 +.L246: + sub w0, w20, w21 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], 80 + hint 29 // autiasp ret -.L197: - ldrh w0, [x21, 176] +.L241: + ldrh w0, [x19, 176] mov w1, 65535 cmp w0, w1 - beq .L199 - ldr x1, [x21, 72] + beq .L243 + ldr x1, [x19, 72] ubfiz x0, x0, 1, 16 - adrp x2, .LC74 - add x2, x2, :lo12:.LC74 + adrp x2, .LC75 + add x2, x2, :lo12:.LC75 ldrh w3, [x1, x0] - mov x0, x19 + mov x0, x20 mov x1, 64 bl snprintf - add x19, x19, x0, sxtw -.L199: + add x20, x20, x0, sxtw +.L243: mov w0, 0 - adrp x24, .LC75 + adrp x23, .LC76 bl List_get_gc_head_node - add x21, x23, :lo12:.LANCHOR0 + add x23, x23, :lo12:.LC76 and w4, w0, 65535 - add x24, x24, :lo12:.LC75 - mov w20, 0 - mov w27, 65535 - mov w26, 6 -.L201: - cmp w4, w27 - beq .L200 - umull x25, w4, w26 - ldr x0, [x21, 2560] - ldr x2, [x21, 72] + mov w22, 0 + mov w26, 65535 + mov w25, 6 +.L245: + ldr x0, [x19, 2560] + cmp w4, w26 + beq .L244 + umull x24, w4, w25 ubfiz x1, x4, 1, 16 - ldr x3, [x21, 2600] - add x0, x0, x25 + ldr x2, [x19, 72] + add x0, x0, x24 + ldr x3, [x19, 2600] ldrh w5, [x2, x1] - mov x2, x24 - ldrh w7, [x3, x1] - mov w3, w20 + mov x2, x23 ldrh w6, [x0, 4] + mov x0, x20 + ldrh w7, [x3, x1] + mov w3, w22 mov x1, 64 - mov x0, x19 - add w20, w20, 1 + add w22, w22, 1 bl snprintf - add x19, x19, x0, sxtw - ldr x0, [x21, 2560] - cmp w20, 16 - ldrh w4, [x0, x25] - bne .L201 -.L200: - add x23, x23, :lo12:.LANCHOR0 - adrp x21, .LC76 - add x21, x21, :lo12:.LC76 - mov w20, 0 + add x20, x20, x0, sxtw + ldr x0, [x19, 2560] + ldrh w4, [x0, x24] + cmp w22, 16 + bne .L245 +.L244: + ldr x0, [x19, 2560] + adrp x23, .LC77 + ldr x4, [x19, 2592] + add x23, x23, :lo12:.LC77 + mov w22, 0 mov w25, 65535 - mov w26, 6 - ldr x0, [x23, 2560] - ldr x4, [x23, 2592] sub x4, x4, x0 mov x0, -6148914691236517206 - asr x4, x4, 1 movk x0, 0xaaab, lsl 0 + mov w26, 6 + asr x4, x4, 1 mul x4, x4, x0 and w4, w4, 65535 -.L203: +.L247: cmp w4, w25 - beq .L202 + beq .L246 + ldr x0, [x19, 2560] umull x24, w4, w26 - ldr x0, [x23, 2560] - ldr x2, [x23, 2600] + ldr x2, [x19, 2600] ubfiz x1, x4, 1, 16 add x0, x0, x24 - mov w3, w20 - add w20, w20, 1 + mov w3, w22 + add w22, w22, 1 ldrh w6, [x2, x1] - mov x2, x21 + mov x2, x23 ldrh w5, [x0, 4] mov x1, 64 - mov x0, x19 + mov x0, x20 bl snprintf - add x19, x19, x0, sxtw - cmp w20, 4 - beq .L202 - ldr x0, [x23, 2560] + add x20, x20, x0, sxtw + cmp w22, 4 + beq .L246 + ldr x0, [x19, 2560] ldrh w4, [x0, x24] - b .L203 + b .L247 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf + .section .rodata.str1.1 +.LC78: + .string "%s\n" + .text .align 2 .global rknand_proc_ftlread .type rknand_proc_ftlread, %function rknand_proc_ftlread: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE40 + .text +.LPFE40: + nop + nop cmp w0, 2047 - ble .L211 + ble .L255 + hint 25 // paciasp stp x29, x30, [sp, -32]! - adrp x3, .LC0 - adrp x2, .LC77 - add x3, x3, :lo12:.LC0 - add x29, sp, 0 - add x2, x2, :lo12:.LC77 + adrp x3, .LC1 + mov x29, sp + add x3, x3, :lo12:.LC1 + adrp x2, .LC78 + add x2, x2, :lo12:.LC78 stp x19, x20, [sp, 16] - mov x20, x1 + mov x19, x1 mov x1, 64 - mov x0, x20 - bl snprintf - add x19, x20, x0, sxtw + add x20, x19, 30 mov x0, x19 + bl snprintf + mov x0, x20 bl FtlPrintInfo2buf - add x0, x19, x0, sxtw - sub w0, w0, w20 + add x0, x20, x0, sxtw + sub w0, w0, w19 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L211: +.L255: mov w0, 0 ret .size rknand_proc_ftlread, .-rknand_proc_ftlread + .section .rodata.str1.1 +.LC79: + .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" + .text .align 2 .global GetSwlReplaceBlock .type GetSwlReplaceBlock, %function GetSwlReplaceBlock: - stp x29, x30, [sp, -32]! - adrp x8, .LANCHOR0 - add x0, x8, :lo12:.LANCHOR0 - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE41 + .text +.LPFE41: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! + mov x29, sp stp x19, x20, [sp, 16] - ldr w2, [x0, 2684] - ldr w1, [x0, 2696] - cmp w2, w1 - bcs .L217 - ldrh w2, [x0, 244] - mov x1, 0 - ldr x4, [x0, 2600] - str wzr, [x0, 2676] -.L218: - cmp w2, w1 - bhi .L219 - add x1, x8, :lo12:.LANCHOR0 - ldr w0, [x1, 2676] - udiv w2, w0, w2 - str w2, [x1, 2684] - ldr w2, [x1, 2680] - sub w0, w0, w2 - ldrh w2, [x1, 296] - udiv w0, w0, w2 - str w0, [x1, 2676] -.L220: - add x1, x8, :lo12:.LANCHOR0 - ldr w9, [x1, 2696] - ldr w11, [x1, 2684] - add w0, w9, 256 - cmp w0, w11 - bls .L225 - ldr w1, [x1, 2692] - add w0, w9, 768 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + ldr w1, [x19, 2676] + ldr w0, [x19, 2688] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + str x27, [sp, 80] + cmp w1, w0 + bcs .L261 + ldrh w1, [x19, 244] + mov x2, 0 + ldr x4, [x19, 2600] + str wzr, [x19, 2668] +.L262: + ldr w0, [x19, 2668] + cmp w1, w2 + bhi .L263 + udiv w1, w0, w1 + str w1, [x19, 2676] + ldr w1, [x19, 2672] + sub w0, w0, w1 + ldrh w1, [x19, 296] + udiv w0, w0, w1 + str w0, [x19, 2668] +.L264: + ldr w22, [x19, 2688] + ldr w24, [x19, 2676] + add w0, w22, 256 + cmp w0, w24 + bls .L269 + ldr w1, [x19, 2684] + add w0, w22, 768 cmp w0, w1 - bls .L225 -.L227: + bls .L269 +.L271: mov w20, 65535 -.L226: +.L270: mov w0, w20 ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldr x27, [sp, 80] + ldp x29, x30, [sp], 96 + hint 29 // autiasp ret -.L219: - ldrh w3, [x4, x1, lsl 1] - add x1, x1, 1 - ldr w5, [x0, 2676] - add w3, w3, w5 - str w3, [x0, 2676] - b .L218 -.L217: - ldr w1, [x0, 2692] - cmp w2, w1 - bls .L220 +.L263: + ldrh w3, [x4, x2, lsl 1] + add x2, x2, 1 + add w0, w3, w0 + str w0, [x19, 2668] + b .L262 +.L261: + ldr w0, [x19, 2684] + cmp w1, w0 + bls .L264 + add w0, w0, 1 + str w0, [x19, 2684] + mov x0, 0 +.L266: + ldrh w1, [x19, 244] + cmp w1, w0 + bls .L264 + ldr x3, [x19, 2600] + lsl x2, x0, 1 + add x0, x0, 1 + ldrh w1, [x3, x2] add w1, w1, 1 - str w1, [x0, 2692] - mov w1, 0 -.L222: - ldrh w2, [x0, 244] - cmp w1, w2 - bcs .L220 - ldr x4, [x0, 2600] - ubfiz x3, x1, 1, 32 - add w1, w1, 1 - ldrh w2, [x4, x3] - add w2, w2, 1 - strh w2, [x4, x3] - b .L222 -.L225: - add x10, x8, :lo12:.LANCHOR0 - ldrh w0, [x10, 228] + strh w1, [x3, x2] + b .L266 +.L269: + ldrh w0, [x19, 228] add w0, w0, w0, lsl 1 - lsr w0, w0, 2 + ubfx x0, x0, 2, 16 bl GetFreeBlockMaxEraseCount - and w6, w0, 65535 - add w0, w9, 64 - cmp w6, w0 - bcc .L227 - ldr x0, [x10, 2568] - cbz x0, .L227 - mov w4, 65535 - ldrh w12, [x10, 244] - mov x13, -6148914691236517206 - ldr x7, [x10, 2560] - ldr x5, [x10, 2600] - mov w2, w4 - mov w10, w4 - mov w1, 0 - movk x13, 0xaaab, lsl 0 - mov w14, 6 -.L228: - ldrh w3, [x0] - cmp w3, w10 - bne .L231 - mov w20, w2 -.L230: + add w1, w22, 64 + and w27, w0, 65535 + cmp w1, w0, uxth + bhi .L271 + ldr x0, [x19, 2568] + cbz x0, .L271 + ldrh w7, [x19, 244] + mov w23, 65535 + ldr x3, [x19, 2560] + mov x8, -6148914691236517206 + ldr x25, [x19, 2600] + mov w1, w23 + mov w6, w23 + mov w4, 0 + movk x8, 0xaaab, lsl 0 + mov w9, 6 +.L272: + ldrh w2, [x0] + cmp w2, w6 + bne .L275 + mov w20, w1 +.L274: mov w0, 65535 cmp w20, w0 - beq .L227 - ubfiz x7, x20, 1, 32 - ldrh w3, [x5, x7] - cmp w9, w3 - bcs .L232 + beq .L271 + ldrh w21, [x25, w20, uxtw 1] + ubfiz x26, x20, 1, 32 + cmp w22, w21 + bcs .L276 bl GetFreeBlockMinEraseCount - cmp w9, w0, uxth - bcs .L232 - add x0, x8, :lo12:.LANCHOR0 - str w4, [x0, 2696] -.L232: - cmp w11, w3 - bls .L227 - add w0, w3, 128 - cmp w6, w0 - ble .L227 - add w0, w3, 256 - cmp w11, w0 - bhi .L233 - add x0, x8, :lo12:.LANCHOR0 - add w3, w3, 768 - ldr w0, [x0, 2692] - cmp w3, w0 - bcs .L227 -.L233: - add x19, x8, :lo12:.LANCHOR0 - ldrh w5, [x5, x7] - mov w2, w11 - mov w1, w20 + cmp w22, w0, uxth + bcs .L276 + str w23, [x19, 2688] +.L276: + cmp w24, w21 + bls .L271 + add w0, w21, 128 + cmp w27, w0 + ble .L271 + add w0, w21, 256 + ldr w3, [x19, 2684] + cmp w24, w0 + bhi .L277 + add w21, w21, 768 + cmp w21, w3 + bcs .L271 +.L277: ldr x0, [x19, 72] - ldr w3, [x19, 2692] - ldrh w4, [x0, x7] - adrp x0, .LC78 - add x0, x0, :lo12:.LC78 + mov w6, w27 + ldrh w5, [x25, x26] + mov w2, w24 + mov w1, w20 + ldrh w4, [x0, x26] + adrp x0, .LC79 + add x0, x0, :lo12:.LC79 bl sftl_printk mov w0, 1 - str w0, [x19, 3244] - b .L226 -.L231: - add w1, w1, 1 - and w1, w1, 65535 - cmp w1, w12 - bhi .L227 - ldrh w15, [x0, 4] - cbz w15, .L229 - sub x0, x0, x7 + str w0, [x19, 3236] + b .L270 +.L275: + add w5, w4, 1 + and w4, w5, 65535 + cmp w7, w5, uxth + bcc .L271 + ldrh w5, [x0, 4] + cbz w5, .L273 + sub x0, x0, x3 asr x0, x0, 1 - mul x0, x0, x13 + mul x0, x0, x8 and w20, w0, 65535 and x0, x0, 65535 - ldrh w0, [x5, x0, lsl 1] - cmp w9, w0 - bcs .L230 - cmp w4, w0 - bls .L229 - mov w4, w0 - mov w2, w20 -.L229: - umaddl x0, w3, w14, x7 - b .L228 + ldrh w0, [x25, x0, lsl 1] + cmp w22, w0 + bcs .L274 + cmp w0, w23 + bcs .L273 + mov w23, w0 + mov w1, w20 +.L273: + umaddl x0, w2, w9, x3 + b .L272 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 .global free_data_superblock .type free_data_superblock, %function free_data_superblock: - and w0, w0, 65535 - mov w1, 65535 - cmp w0, w1 - beq .L244 - stp x29, x30, [sp, -16]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE42 + .text +.LPFE42: + nop + nop + mov w2, 65535 + cmp w2, w0, uxth + beq .L288 + hint 25 // paciasp adrp x2, .LANCHOR0+72 - ubfiz x1, x0, 1, 16 - add x29, sp, 0 + stp x29, x30, [sp, -16]! + and w1, w0, 65535 + mov x29, sp ldr x2, [x2, #:lo12:.LANCHOR0+72] - strh wzr, [x2, x1] + ubfiz x0, x1, 1, 16 + strh wzr, [x2, x0] + mov w0, w1 bl INSERT_FREE_LIST mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret -.L244: +.L288: mov w0, 0 ret .size free_data_superblock, .-free_data_superblock @@ -2277,516 +2994,652 @@ free_data_superblock: .global get_new_active_ppa .type get_new_active_ppa, %function get_new_active_ppa: - stp x29, x30, [sp, -32]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE43 + .text +.LPFE43: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -48]! + mov x29, sp stp x19, x20, [sp, 16] mov x19, x0 + str x21, [sp, 32] ldrh w1, [x0] mov w0, 65535 cmp w1, w0 - bne .L248 + bne .L292 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2785 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 + mov w2, 2792 bl sftl_printk -.L248: - adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 +.L292: + adrp x21, .LANCHOR0 + add x21, x21, :lo12:.LANCHOR0 ldrh w1, [x19, 2] - ldrh w0, [x0, 306] + ldrh w0, [x21, 306] cmp w1, w0 - bne .L249 + bne .L293 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2786 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 + mov w2, 2793 bl sftl_printk -.L249: +.L293: ldrh w0, [x19, 4] - cbnz w0, .L250 + cbnz w0, .L294 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2787 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 + mov w2, 2794 bl sftl_printk -.L250: +.L294: ldrb w0, [x19, 6] - add x1, x20, :lo12:.LANCHOR0 + mov w2, 65535 strb wzr, [x19, 10] add x0, x0, 8 - ldrh w3, [x1, 236] - mov w1, 65535 + ldrh w3, [x21, 236] ldrh w0, [x19, x0, lsl 1] -.L251: - cmp w0, w1 - beq .L253 - add x20, x20, :lo12:.LANCHOR0 - ldrh w1, [x19, 2] - ldrh w2, [x20, 306] - cmp w1, w2 - bcs .L257 - orr w20, w1, w0, lsl 10 - ldrh w1, [x19, 4] - ldrb w0, [x19, 6] - mov w4, 65535 - sub w1, w1, #1 - and w1, w1, 65535 - strh w1, [x19, 4] -.L256: - add w0, w0, 1 - and w0, w0, 255 - cmp w3, w0 - bne .L255 - ldrh w0, [x19, 2] - add w0, w0, 1 - strh w0, [x19, 2] - mov w0, 0 -.L255: - add x5, x19, x0, sxtw 1 - ldrh w5, [x5, 16] - cmp w5, w4 - beq .L256 - strb w0, [x19, 6] - ldrh w0, [x19, 2] +.L295: + ldrh w20, [x19, 2] cmp w0, w2 - bne .L247 - cbz w1, .L247 + beq .L297 + ldrh w2, [x21, 306] + cmp w2, w20 + bls .L301 + orr w20, w20, w0, lsl 10 + ldrh w0, [x19, 4] + ldrb w1, [x19, 6] + mov w5, 65535 + sub w0, w0, #1 + and w0, w0, 65535 + strh w0, [x19, 4] +.L300: + add w4, w1, 1 + and w1, w4, 255 + cmp w3, w4, uxtb + bne .L299 + ldrh w1, [x19, 2] + add w1, w1, 1 + strh w1, [x19, 2] + mov w1, 0 +.L299: + add x4, x19, x1, sxtw 1 + ldrh w4, [x4, 16] + cmp w4, w5 + beq .L300 + strb w1, [x19, 6] + ldrh w1, [x19, 2] + cmp w1, w2 + bne .L291 + cbz w0, .L291 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2810 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 + mov w2, 2817 bl sftl_printk -.L247: +.L291: mov w0, w20 ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L253: - ldrb w0, [x19, 6] - add w0, w0, 1 - and w0, w0, 255 - strb w0, [x19, 6] - cmp w0, w3 - bne .L252 - ldrh w0, [x19, 2] +.L297: + ldrb w1, [x19, 6] + add w1, w1, 1 + and w1, w1, 255 + strb w1, [x19, 6] + cmp w1, w3 + bne .L296 + add w20, w20, 1 + strh w20, [x19, 2] strb wzr, [x19, 6] - add w0, w0, 1 - strh w0, [x19, 2] -.L252: +.L296: ldrb w0, [x19, 6] add x0, x0, 8 ldrh w0, [x19, x0, lsl 1] - b .L251 -.L257: + b .L295 +.L301: mov w20, 65535 - b .L247 + b .L291 .size get_new_active_ppa, .-get_new_active_ppa .align 2 .global FtlGcBufInit .type FtlGcBufInit, %function FtlGcBufInit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE44 + .text +.LPFE44: + nop + nop adrp x0, .LANCHOR0 - add x1, x0, :lo12:.LANCHOR0 - mov w3, 0 - mov w8, 24 - mov w9, 1 - mov w5, 4 - str wzr, [x1, 3248] -.L264: - ldrh w2, [x1, 236] - cmp w3, w2 - bcc .L265 add x0, x0, :lo12:.LANCHOR0 + mov w2, 0 + mov w7, 24 + mov w8, 1 + mov w4, 4 + str wzr, [x0, 3240] + hint 25 // paciasp +.L308: + ldrh w1, [x0, 236] + cmp w1, w2 + bhi .L309 mov w6, 24 mov w5, 4 -.L266: - ldr w1, [x0, 3288] - cmp w2, w1 - bcc .L267 +.L310: + ldr w2, [x0, 3280] + cmp w1, w2 + bcc .L311 + hint 29 // autiasp ret -.L265: - umull x4, w3, w8 - ldr x6, [x1, 3256] - ldr x7, [x1, 3264] - add x2, x6, x4 - str w9, [x2, 16] - ldrh w2, [x1, 314] - mul w2, w2, w3 - sdiv w2, w2, w5 - add x2, x7, x2, sxtw 2 - str x2, [x6, x4] - ldrh w2, [x1, 316] - ldr x7, [x1, 3256] - ldr x10, [x1, 3272] - add x6, x7, x4 - mul w2, w2, w3 - sdiv w2, w2, w5 - add x2, x10, x2, sxtw 2 - str x2, [x6, 8] - ldr x2, [x1, 3280] - ubfiz x10, x3, 5, 16 - ldr x4, [x7, x4] - add w3, w3, 1 - add x2, x2, x10 - and w3, w3, 65535 - str x4, [x2, 8] - ldr x4, [x6, 8] - str x4, [x2, 16] - b .L264 -.L267: - umull x4, w2, w6 - ldr x3, [x0, 3256] - ldr x7, [x0, 3264] - add x1, x3, x4 - str wzr, [x1, 16] +.L309: + ldr x5, [x0, 3248] + umull x3, w2, w7 + ldr x6, [x0, 3256] + add x1, x5, x3 + str w8, [x1, 16] ldrh w1, [x0, 314] mul w1, w1, w2 - sdiv w1, w1, w5 - add x1, x7, x1, sxtw 2 - str x1, [x3, x4] + sdiv w1, w1, w4 + add x1, x6, x1, sxtw 2 + str x1, [x5, x3] ldrh w1, [x0, 316] - ldr x3, [x0, 3256] - add x3, x3, x4 - ldr x4, [x0, 3272] + ldr x6, [x0, 3248] + ldr x9, [x0, 3264] mul w1, w1, w2 + add x5, x6, x3 + sdiv w1, w1, w4 + add x1, x9, x1, sxtw 2 + str x1, [x5, 8] + ldr x1, [x0, 3272] + ubfiz x9, x2, 5, 16 + ldr x3, [x6, x3] + add x1, x1, x9 add w2, w2, 1 and w2, w2, 65535 - sdiv w1, w1, w5 - add x1, x4, x1, sxtw 2 - str x1, [x3, 8] - b .L266 + str x3, [x1, 8] + ldr x3, [x5, 8] + str x3, [x1, 16] + b .L308 +.L311: + ldr x3, [x0, 3248] + umull x4, w1, w6 + ldr x7, [x0, 3256] + add x2, x3, x4 + str wzr, [x2, 16] + ldrh w2, [x0, 314] + mul w2, w2, w1 + sdiv w2, w2, w5 + add x2, x7, x2, sxtw 2 + str x2, [x3, x4] + ldrh w2, [x0, 316] + ldr x3, [x0, 3248] + mul w2, w2, w1 + add x3, x3, x4 + ldr x4, [x0, 3264] + add w1, w1, 1 + and w1, w1, 65535 + sdiv w2, w2, w5 + add x2, x4, x2, sxtw 2 + str x2, [x3, 8] + b .L310 .size FtlGcBufInit, .-FtlGcBufInit .align 2 .global FtlGcBufFree .type FtlGcBufFree, %function FtlGcBufFree: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE45 + .text +.LPFE45: + nop + nop adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 mov w3, 0 mov w8, 24 - ldr w7, [x2, 3288] - ldr x5, [x2, 3256] -.L269: + hint 25 // paciasp + ldr w7, [x2, 3280] + ldr x5, [x2, 3248] +.L314: cmp w3, w1 - bcs .L268 + bcs .L313 ubfiz x4, x3, 5, 16 mov w2, 0 add x4, x0, x4 - b .L274 -.L270: + b .L319 +.L315: add w2, w2, 1 and w2, w2, 65535 -.L274: +.L319: cmp w2, w7 - bcs .L271 + bcs .L316 umull x6, w2, w8 add x9, x5, x6 ldr x10, [x5, x6] ldr x6, [x4, 8] cmp x10, x6 - bne .L270 + bne .L315 str wzr, [x9, 16] -.L271: +.L316: add w3, w3, 1 and w3, w3, 65535 - b .L269 -.L268: + b .L314 +.L313: + hint 29 // autiasp ret .size FtlGcBufFree, .-FtlGcBufFree .align 2 .global FtlGcBufAlloc .type FtlGcBufAlloc, %function FtlGcBufAlloc: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE46 + .text +.LPFE46: + nop + nop adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 - mov w3, 0 mov w7, 24 mov w8, 1 - ldr w5, [x2, 3288] - ldr x6, [x2, 3256] -.L276: - cmp w3, w1 - bcs .L275 + hint 25 // paciasp + ldr w6, [x2, 3280] + ldr x5, [x2, 3248] mov w2, 0 - b .L281 -.L277: - add w2, w2, 1 - and w2, w2, 65535 -.L281: - cmp w2, w5 - bcs .L278 - umaddl x4, w2, w7, x6 - ldr w9, [x4, 16] - cbnz w9, .L277 - ubfiz x2, x3, 5, 16 - ldr x9, [x4] - add x2, x0, x2 - str w8, [x4, 16] - str x9, [x2, 8] - ldr x4, [x4, 8] - str x4, [x2, 16] -.L278: +.L322: + cmp w2, w1 + bcc .L327 + hint 29 // autiasp + ret +.L323: add w3, w3, 1 and w3, w3, 65535 - b .L276 -.L275: - ret +.L326: + cmp w3, w6 + bcs .L324 + umaddl x4, w3, w7, x5 + ldr w9, [x4, 16] + cbnz w9, .L323 + ubfiz x3, x2, 5, 16 + str w8, [x4, 16] + add x3, x0, x3 + ldr x9, [x4] + str x9, [x3, 8] + ldr x4, [x4, 8] + str x4, [x3, 16] +.L324: + add w2, w2, 1 + and w2, w2, 65535 + b .L322 +.L327: + mov w3, 0 + b .L326 .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 .global IsBlkInGcList .type IsBlkInGcList, %function IsBlkInGcList: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE47 + .text +.LPFE47: + nop + nop adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 and w0, w0, 65535 - ldrh w2, [x1, 3292] - ldr x3, [x1, 3296] + hint 25 // paciasp + ldr x2, [x1, 3288] + ldrh w3, [x1, 3284] mov x1, 0 -.L283: - cmp w2, w1, uxth - bhi .L285 + sub x2, x2, #2 +.L330: + cmp w3, w1, uxth + bhi .L332 mov w0, 0 +.L329: + hint 29 // autiasp ret -.L285: +.L332: add x1, x1, 1 - add x4, x3, x1, lsl 1 - ldrh w4, [x4, -2] + ldrh w4, [x2, x1, lsl 1] cmp w4, w0 - bne .L283 + bne .L330 mov w0, 1 - ret + b .L329 .size IsBlkInGcList, .-IsBlkInGcList .align 2 .global FtlGcUpdatePage .type FtlGcUpdatePage, %function FtlGcUpdatePage: - mov w5, w0 - mov w8, w1 - mov w7, w2 - stp x29, x30, [sp, -16]! - lsr w0, w0, 10 - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE48 + .text +.LPFE48: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -48]! + mov x29, sp + stp x19, x20, [sp, 16] + mov w19, w0 + mov w20, w2 + ubfx x0, x19, 10, 16 + str x21, [sp, 32] + mov w21, w1 bl P2V_block_in_plane - and w9, w0, 65535 adrp x3, .LANCHOR0 - add x4, x3, :lo12:.LANCHOR0 - ldrh w1, [x4, 3292] - ldr x6, [x4, 3296] + add x3, x3, :lo12:.LANCHOR0 + and w6, w0, 65535 mov x4, 0 -.L288: + ldr x1, [x3, 3288] + ldrh w5, [x3, 3284] + sub x7, x1, #2 +.L336: and w2, w4, 65535 - cmp w2, w1 - bcc .L290 - bne .L289 - and x4, x4, 65535 - strh w0, [x6, x4, lsl 1] - add x4, x3, :lo12:.LANCHOR0 - ldrh w0, [x4, 3292] + cmp w5, w2 + bhi .L338 + bne .L337 + strh w0, [x1, x4, lsl 1] + ldrh w0, [x3, 3284] add w0, w0, 1 - strh w0, [x4, 3292] - b .L289 -.L290: + strh w0, [x3, 3284] + b .L337 +.L338: add x4, x4, 1 - add x2, x6, x4, lsl 1 - ldrh w2, [x2, -2] - cmp w2, w9 - bne .L288 -.L289: - add x0, x3, :lo12:.LANCHOR0 - mov w1, 12 - ldrh w3, [x0, 3304] - ldr x4, [x0, 3312] - umull x3, w3, w1 - add x4, x4, x3 - str w8, [x4, 4] - ldr x1, [x0, 3312] - add x4, x1, x3 - str w7, [x4, 8] - str w5, [x1, x3] - ldrh w1, [x0, 3304] - add w1, w1, 1 - strh w1, [x0, 3304] - ldp x29, x30, [sp], 16 + ldrh w2, [x7, x4, lsl 1] + cmp w2, w6 + bne .L336 +.L337: + ldrh w4, [x3, 3296] + mov w0, 12 + umull x4, w4, w0 + ldr x0, [x3, 3304] + add x0, x0, x4 + str w21, [x0, 4] + ldr x0, [x3, 3304] + add x1, x0, x4 + str w20, [x1, 8] + str w19, [x0, x4] + ldrh w0, [x3, 3296] + add w0, w0, 1 + strh w0, [x3, 3296] + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp ret .size FtlGcUpdatePage, .-FtlGcUpdatePage + .section .rodata.str1.1 +.LC80: + .string "FtlGcRefreshBlock 0x%x\n" + .text .align 2 .global FtlGcRefreshBlock .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE49 + .text +.LPFE49: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] and w19, w0, 65535 mov w1, w19 - adrp x0, .LC79 - add x0, x0, :lo12:.LC79 + adrp x0, .LC80 + add x0, x0, :lo12:.LC80 bl sftl_printk adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 ldrh w3, [x0, 226] - cmp w19, w3 - beq .L293 + cmp w3, w19 + beq .L341 ldrh w2, [x0, 224] - cmp w19, w2 - beq .L293 + cmp w2, w19 + beq .L341 mov w1, 65535 cmp w3, w1 - bne .L294 + bne .L342 strh w19, [x0, 226] -.L293: +.L341: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L294: +.L342: cmp w2, w1 - bne .L293 + bne .L341 strh w19, [x0, 224] - b .L293 + b .L341 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock + .section .rodata.str1.1 +.LC81: + .string "FtlGcMarkBadPhyBlk %d 0x%x\n" + .text .align 2 .global FtlGcMarkBadPhyBlk .type FtlGcMarkBadPhyBlk, %function FtlGcMarkBadPhyBlk: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE50 + .text +.LPFE50: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - add x20, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - and w21, w0, 65535 - add x20, x20, 3328 - mov w0, w21 - bl P2V_block_in_plane - ldrh w1, [x20, -8] - mov w2, w21 - mov w22, w0 - adrp x0, .LC80 - add x0, x0, :lo12:.LC80 - bl sftl_printk - mov w0, w22 - bl FtlGcRefreshBlock - ldrh w0, [x20, -8] - mov x1, 0 -.L297: - cmp w0, w1, uxth - bhi .L299 - cmp w0, 15 - bhi .L298 add x19, x19, :lo12:.LANCHOR0 + and w20, w0, 65535 + str x21, [sp, 32] + mov w0, w20 + bl P2V_block_in_plane + ldrh w1, [x19, 3312] + mov w2, w20 + mov w21, w0 + adrp x0, .LC81 + add x0, x0, :lo12:.LC81 + bl sftl_printk + mov w0, w21 + bl FtlGcRefreshBlock + ldrh w0, [x19, 3312] + add x2, x19, 3314 + mov x1, 0 +.L345: + cmp w0, w1, uxth + bhi .L347 + cmp w0, 15 + bhi .L346 add w1, w0, 1 - add x19, x19, 3328 - strh w1, [x19, -8] - strh w21, [x19, w0, sxtw 1] - b .L298 -.L299: + add x19, x19, 3314 + strh w1, [x19, -2] + strh w20, [x19, w0, sxtw 1] + b .L346 +.L347: add x1, x1, 1 - add x2, x20, x1, lsl 1 - ldrh w2, [x2, -2] - cmp w2, w21 - bne .L297 -.L298: + add x3, x2, x1, lsl 1 + ldrh w3, [x3, -2] + cmp w3, w20 + bne .L345 +.L346: mov w0, 0 ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 2 .global FtlGcReFreshBadBlk .type FtlGcReFreshBadBlk, %function FtlGcReFreshBadBlk: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE51 + .text +.LPFE51: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 3320] - cbz w1, .L302 - ldrh w3, [x0, 226] - mov w2, 65535 - cmp w3, w2 - bne .L302 - ldrh w2, [x0, 3362] - cmp w2, w1 - bcc .L303 - strh wzr, [x0, 3362] -.L303: add x19, x19, :lo12:.LANCHOR0 - add x0, x19, 3328 - ldrh w1, [x19, 3362] + ldrh w0, [x19, 3312] + cbz w0, .L350 + ldrh w2, [x19, 226] + mov w1, 65535 + cmp w2, w1 + bne .L350 + ldrh w1, [x19, 3348] + cmp w1, w0 + bcc .L351 + strh wzr, [x19, 3348] +.L351: + ldrh w1, [x19, 3348] + add x0, x19, 3314 ldrh w0, [x0, x1, lsl 1] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh w0, [x19, 3362] + ldrh w0, [x19, 3348] add w0, w0, 1 - strh w0, [x19, 3362] -.L302: + strh w0, [x19, 3348] +.L350: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .align 2 .global ftl_malloc .type ftl_malloc, %function ftl_malloc: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE52 + .text +.LPFE52: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! - mov w1, 193 - movk w1, 0x60, lsl 16 + mov w1, 3265 + mov x29, sp sxtw x0, w0 - add x29, sp, 0 bl __kmalloc ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size ftl_malloc, .-ftl_malloc .align 2 .global ftl_free .type ftl_free, %function ftl_free: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE53 + .text +.LPFE53: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 + mov x29, sp bl kfree ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size ftl_free, .-ftl_free + .section .rodata.str1.1 +.LC82: + .string "%s %p + 0x%x:" +.LC83: + .string "0x%08x," +.LC84: + .string "0x%04x," +.LC85: + .string "0x%02x," +.LC86: + .string "\n" + .text .align 2 .global rknand_print_hex .type rknand_print_hex, %function rknand_print_hex: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE54 + .text +.LPFE54: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov x21, x1 - stp x23, x24, [sp, 48] - adrp x24, .LC81 - stp x25, x26, [sp, 64] - mov w23, w2 - stp x27, x28, [sp, 80] - adrp x25, .LC84 - mov x27, x0 - mov w26, w3 - add x24, x24, :lo12:.LC81 - add x25, x25, :lo12:.LC84 + mov x29, sp stp x19, x20, [sp, 16] - mov w22, 0 + mov x20, x1 mov x19, 0 - mov w20, 0 - adrp x28, .LC83 -.L313: - cmp w26, w19 - bhi .L319 - adrp x0, .LC85 - add x0, x0, :lo12:.LC85 + stp x21, x22, [sp, 32] + mov w22, w2 + mov w21, 0 + stp x23, x24, [sp, 48] + mov w23, w3 + mov w24, 0 + stp x25, x26, [sp, 64] + adrp x26, .LC82 + mov x25, x0 + add x26, x26, :lo12:.LC82 + stp x27, x28, [sp, 80] + adrp x27, .LC85 + add x27, x27, :lo12:.LC85 + adrp x28, .LC84 +.L361: + cmp w23, w19 + bhi .L367 + adrp x0, .LC86 + add x0, x0, :lo12:.LC86 bl sftl_printk ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -2794,485 +3647,555 @@ rknand_print_hex: ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret -.L319: - cbnz w20, .L314 - mov w3, w22 - mov x2, x21 - mov x1, x27 - mov x0, x24 +.L367: + cbnz w21, .L362 + mov w3, w24 + mov x2, x20 + mov x1, x25 + mov x0, x26 bl sftl_printk -.L314: - cmp w23, 4 - bne .L315 - ldr w1, [x21, x19, lsl 2] - adrp x0, .LC82 - add x0, x0, :lo12:.LC82 -.L321: +.L362: + cmp w22, 4 + bne .L363 + ldr w1, [x20, x19, lsl 2] + adrp x0, .LC83 + add x0, x0, :lo12:.LC83 +.L369: + add w21, w21, 1 bl sftl_printk - add w20, w20, 1 - cmp w20, 15 - bls .L318 - mov w20, 0 - adrp x0, .LC85 - add x0, x0, :lo12:.LC85 + cmp w21, 15 + bls .L366 + mov w21, 0 + adrp x0, .LC86 + add x0, x0, :lo12:.LC86 bl sftl_printk -.L318: +.L366: add x19, x19, 1 - add w22, w22, w23 - b .L313 -.L315: - cmp w23, 2 - bne .L317 - ldrh w1, [x21, x19, lsl 1] - add x0, x28, :lo12:.LC83 - b .L321 -.L317: - ldrb w1, [x21, x19] - mov x0, x25 - b .L321 + add w24, w24, w22 + b .L361 +.L363: + cmp w22, 2 + bne .L365 + ldrh w1, [x20, x19, lsl 1] + add x0, x28, :lo12:.LC84 + b .L369 +.L365: + ldrb w1, [x20, x19] + mov x0, x27 + b .L369 .size rknand_print_hex, .-rknand_print_hex + .section .rodata.str1.1 +.LC87: + .string "%s: addr: %x is in id block!!!!!!!!!!\n" +.LC88: + .string "not free: w: d:" +.LC89: + .string "not free: w: s:" + .text .align 2 .global FlashEraseBlocks .type FlashEraseBlocks, %function FlashEraseBlocks: - stp x29, x30, [sp, -112]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE55 + .text +.LPFE55: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! + mrs x1, sp_el0 + mov x29, sp stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x21, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + mov x19, x0 + mov w0, 32 stp x23, x24, [sp, 48] - ubfiz x23, x2, 5, 32 + mov x20, x19 + umaddl x22, w2, w0, x19 stp x25, x26, [sp, 64] - mov x20, x0 - str x27, [sp, 80] - adrp x21, __stack_chk_guard - add x24, x23, 4 - add x0, x21, :lo12:__stack_chk_guard - ldrh w25, [x19, 12] - add x22, x20, 4 - add x24, x20, x24 - ldr x1, [x0] - str x1, [x29, 104] - mov x1,0 - mov w26, -1 - lsl w27, w25, 3 -.L323: - cmp x22, x24 - beq .L327 - ldr w0, [x22] - add x2, x29, 96 - add x1, x29, 100 + mov w24, -1 + ldrh w23, [x21, 12] + ldr x3, [x1, 1376] + str x3, [sp, 88] + mov x3, 0 + lsl w26, w23, 3 +.L371: + cmp x20, x22 + beq .L375 + ldr w0, [x20, 4] + add x2, sp, 80 + add x1, sp, 84 bl l2p_addr_tran.isra.0 - ldr w0, [x29, 96] - cbnz w0, .L324 - ldr w1, [x29, 100] - cmp w27, w1 - bls .L324 - mov x19, x20 - add x23, x20, x23 + ldr w0, [sp, 80] + cbnz w0, .L372 + ldr w1, [sp, 84] + cmp w26, w1 + bls .L372 adrp x20, .LANCHOR1 add x20, x20, :lo12:.LANCHOR1 - adrp x22, .LC86 - add x20, x20, 160 - add x22, x22, :lo12:.LC86 -.L325: - cmp x19, x23 - bne .L326 + adrp x21, .LC87 + add x20, x20, 130 + add x21, x21, :lo12:.LC87 +.L373: + cmp x19, x22 + bne .L374 bl dump_stack -.L327: - add x21, x21, :lo12:__stack_chk_guard - mov w0, 0 - ldr x2, [x29, 104] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L334 +.L375: + mrs x0, sp_el0 + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L382 bl __stack_chk_fail -.L326: - ldr w2, [x29, 100] +.L374: + ldr w2, [sp, 84] mov w0, -1 str w0, [x19] mov x1, x20 - mov x0, x22 + mov x0, x21 add x19, x19, 32 bl sftl_printk ldr x1, [x19, -24] mov w3, 16 mov w2, 4 - adrp x0, .LC87 - add x0, x0, :lo12:.LC87 + adrp x0, .LC88 + add x0, x0, :lo12:.LC88 bl rknand_print_hex ldr x1, [x19, -16] mov w3, 4 - adrp x0, .LC88 + adrp x0, .LC89 mov w2, w3 - add x0, x0, :lo12:.LC88 + add x0, x0, :lo12:.LC89 bl rknand_print_hex - b .L325 -.L324: - ldr w1, [x29, 100] - ldr x2, [x19, 3376] + b .L373 +.L372: + ldr w1, [sp, 84] + ldr x2, [x21, 3360] blr x2 cmp w0, 0 - csel w0, w26, wzr, ne - str w0, [x22, -4] - ldrh w0, [x19, 14] + csel w0, wzr, w24, eq + str w0, [x20] + ldrh w0, [x21, 14] cmp w0, 4 - bne .L331 - ldrb w0, [x29, 96] - ldr x2, [x19, 3376] - ldr w1, [x29, 100] - add w1, w25, w1 + bne .L379 + ldrb w0, [sp, 80] + ldr x2, [x21, 3360] + ldr w1, [sp, 84] + add w1, w23, w1 blr x2 - cbz w0, .L331 - str w26, [x22, -4] -.L331: - add x22, x22, 32 - b .L323 -.L334: + cbz w0, .L379 + str w24, [x20] +.L379: + add x20, x20, 32 + b .L371 +.L382: + mov w0, 0 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 + ldp x29, x30, [sp], 96 + hint 29 // autiasp ret .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global FtlFreeSysBlkQueueIn .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE56 + .text +.LPFE56: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x21, x22, [sp, 32] + mov x29, sp + str x21, [sp, 32] and w21, w0, 65535 - stp x19, x20, [sp, 16] sub w2, w21, #1 mov w0, 65533 + stp x19, x20, [sp, 16] cmp w0, w2, uxth - bcc .L339 - adrp x0, .LANCHOR0 - add x20, x0, :lo12:.LANCHOR0 - mov x19, x0 - ldrh w2, [x20, 462] - cmp w2, 1024 - beq .L339 + bcc .L388 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldrh w0, [x19, 462] + cmp w0, 1024 + beq .L388 and w1, w1, 65535 - cbz w1, .L341 + cbz w1, .L390 mov w0, w21 bl P2V_block_in_plane - and w22, w0, 65535 - ldr x0, [x20, 3416] + and w20, w0, 65535 lsl w1, w21, 10 + ldr x0, [x19, 3400] mov w2, 1 str w1, [x0, 4] mov w1, w2 - ldr x0, [x20, 3416] + ldr x0, [x19, 3400] bl FlashEraseBlocks - ldr x2, [x20, 2600] - ubfiz x0, x22, 1, 16 + ldr x2, [x19, 2600] + ubfiz x0, x20, 1, 16 ldrh w1, [x2, x0] add w1, w1, 1 strh w1, [x2, x0] - ldr w0, [x20, 2688] + ldr w0, [x19, 2680] add w0, w0, 1 - str w0, [x20, 2688] -.L341: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 456 - ldrh w1, [x0, 6] - add w1, w1, 1 - strh w1, [x0, 6] - ldrh w1, [x0, 4] - add x2, x0, x1, sxtw 1 - add w1, w1, 1 - and w1, w1, 1023 - strh w1, [x0, 4] - strh w21, [x2, 8] -.L339: + str w0, [x19, 2680] +.L390: + ldrh w0, [x19, 462] + add x19, x19, 456 + ldrh w1, [x19, 4] + add w0, w0, 1 + strh w0, [x19, 6] + ldrh w0, [x19, 4] + add x1, x19, x1, lsl 1 + add w0, w0, 1 + and w0, w0, 1023 + strh w0, [x19, 4] + strh w21, [x1, 8] +.L388: ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn + .section .rodata.str1.1 +.LC90: + .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" + .text .align 2 .global FtlFreeSysBlkQueueOut .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: - stp x29, x30, [sp, -48]! - adrp x0, .LANCHOR0 - add x29, sp, 0 - str x21, [sp, 32] - add x21, x0, :lo12:.LANCHOR0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE57 + .text +.LPFE57: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -32]! + mov x29, sp stp x19, x20, [sp, 16] - mov x19, x0 - ldrh w2, [x21, 462] - cbz w2, .L353 - ldrh w0, [x21, 458] - add x1, x21, 456 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldrh w2, [x19, 462] + cbz w2, .L402 + ldrh w3, [x19, 458] + add x0, x19, 456 + ldrh w1, [x19, 458] sub w2, w2, #1 - strh w2, [x21, 462] + strh w2, [x19, 462] mov w2, 1 - add x3, x1, x0, sxtw 1 - add w0, w0, 1 - and w0, w0, 1023 - strh w0, [x21, 458] - ldr x0, [x21, 3416] + add x3, x0, x3, lsl 1 + add w1, w1, 1 + ldr x0, [x19, 3400] + and w1, w1, 1023 ldrh w20, [x3, 8] + strh w1, [x19, 458] lsl w1, w20, 10 str w1, [x0, 4] mov w1, w2 - ldr x0, [x21, 3416] + ldr x0, [x19, 3400] bl FlashEraseBlocks - ldr w0, [x21, 2688] + ldr w0, [x19, 2680] + sub w1, w20, #1 add w0, w0, 1 - str w0, [x21, 2688] -.L350: - sub w0, w20, #1 - mov w1, 65533 - cmp w1, w0, uxth - bcs .L351 - add x0, x19, :lo12:.LANCHOR0 + str w0, [x19, 2680] + mov w0, 65533 + cmp w0, w1, uxth + bcs .L400 +.L399: + ldrh w2, [x19, 462] + adrp x0, .LC90 mov w1, w20 - ldrh w2, [x0, 462] - adrp x0, .LC89 - add x0, x0, :lo12:.LC89 + add x0, x0, :lo12:.LC90 bl sftl_printk -.L352: - b .L352 -.L353: +.L401: + b .L401 +.L402: mov w20, 65535 - b .L350 -.L351: + b .L399 +.L400: mov w0, w20 - ldr x21, [sp, 32] ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 48 + ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut + .section .rodata.str1.1 +.LC91: + .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" + .text .align 2 .global ftl_map_blk_alloc_new_blk .type ftl_map_blk_alloc_new_blk, %function ftl_map_blk_alloc_new_blk: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE58 + .text +.LPFE58: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x19, x0 - str x21, [sp, 32] mov w20, 0 + str x21, [sp, 32] ldrh w1, [x0, 10] ldr x0, [x0, 16] -.L356: - cmp w20, w1 - beq .L360 +.L405: + cmp w1, w20 + beq .L411 mov x21, x0 ldrh w2, [x0], 2 - cbnz w2, .L357 + cbnz w2, .L406 bl FtlFreeSysBlkQueueOut and w1, w0, 65535 - strh w0, [x21] sub w2, w1, #1 + strh w0, [x21] mov w0, 65533 cmp w0, w2, uxth - bcs .L358 + bcs .L407 adrp x0, .LANCHOR0+462 ldrh w2, [x0, #:lo12:.LANCHOR0+462] - adrp x0, .LC90 - add x0, x0, :lo12:.LC90 + adrp x0, .LC91 + add x0, x0, :lo12:.LC91 bl sftl_printk -.L359: - b .L359 -.L358: +.L408: + b .L408 +.L407: ldr w0, [x19, 48] - strh wzr, [x19, 2] + strh w20, [x19] add w0, w0, 1 str w0, [x19, 48] ldrh w0, [x19, 8] - strh w20, [x19] + strh wzr, [x19, 2] add w0, w0, 1 strh w0, [x19, 8] -.L360: ldrh w0, [x19, 10] cmp w0, w20 - bhi .L362 + bhi .L409 +.L411: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 147 + add x0, x0, :lo12:.LC9 mov w2, 578 - add x1, x1, 184 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L362: +.L409: mov w0, 0 - ldr x21, [sp, 32] ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L357: +.L406: add w20, w20, 1 and w20, w20, 65535 - b .L356 + b .L405 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 .global ftl_memset .type ftl_memset, %function ftl_memset: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE59 + .text +.LPFE59: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! uxtw x2, w2 - add x29, sp, 0 + mov x29, sp bl memset ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size ftl_memset, .-ftl_memset + .section .rodata.str1.1 +.LC92: + .string "%s error allocating memory. return -1\n" + .text .align 2 .global FtlMemInit .type FtlMemInit, %function FtlMemInit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE60 + .text +.LPFE60: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! mov w0, 65535 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - add x19, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - add x1, x19, 2560 - add x2, x19, 2560 - add x3, x19, 3328 - strh wzr, [x19, 3240] - strh wzr, [x19, 3320] - stp wzr, wzr, [x1, 76] - stp wzr, wzr, [x1, 84] - str wzr, [x19, 2652] - str wzr, [x19, 2656] - stp wzr, wzr, [x2, 108] - stp wzr, wzr, [x2, 116] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + add x4, x19, 3416 + add x3, x19, 2676 + add x2, x19, 2656 + add x1, x19, 2636 str wzr, [x19, 2688] - str wzr, [x19, 2692] - str wzr, [x19, 2696] - str wzr, [x19, 3236] - str wzr, [x19, 3244] - stp wzr, w0, [x3, 96] + stp wzr, w0, [x4, -8] mov w0, -1 - stp wzr, wzr, [x3, 104] - strh w0, [x19, 226] strh w0, [x19, 224] + strh w0, [x19, 226] mov w0, 32 - strh w0, [x19, 3232] + stp wzr, wzr, [x2, -12] + stp wzr, wzr, [x3, -8] + stp wzr, wzr, [x1, -8] + stp wzr, wzr, [x4] + stp wzr, wzr, [x1] + stp wzr, wzr, [x3, 4] + stp wzr, wzr, [x2, 4] + strh w0, [x19, 3224] mov w0, 128 - strh w0, [x19, 3234] - strh wzr, [x19, 3362] + str x21, [sp, 32] + strh w0, [x19, 3226] + str wzr, [x19, 3228] + strh wzr, [x19, 3232] + str wzr, [x19, 3236] + strh wzr, [x19, 3312] + strh wzr, [x19, 3348] ldrh w0, [x19, 310] lsl w0, w0, 1 bl ftl_malloc ldrh w1, [x19, 310] - str x0, [x19, 3296] + str x0, [x19, 3288] mov w0, 12 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19, 236] - str x0, [x19, 3312] - lsl w22, w21, 5 - lsl w21, w21, 7 + ldrh w20, [x19, 236] + str x0, [x19, 3304] + lsl w21, w20, 7 + lsl w20, w20, 5 + mov w0, w21 + bl ftl_malloc + str x0, [x19, 3424] + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3432] mov w0, w21 bl ftl_malloc str x0, [x19, 3440] - mov w0, w22 + mov w0, w20 bl ftl_malloc - str x0, [x19, 3448] - mov w0, w21 + str x0, [x19, 3400] + mov w0, w20 bl ftl_malloc - str x0, [x19, 3456] - mov w0, w22 - bl ftl_malloc - str x0, [x19, 3416] - mov w0, w22 - bl ftl_malloc - str x0, [x19, 3280] + str x0, [x19, 3272] ldrh w0, [x19, 236] - ldrh w21, [x19, 314] + ldrh w20, [x19, 314] lsl w0, w0, 1 add w0, w0, 1 - str w0, [x19, 3288] - mov w0, w21 + str w0, [x19, 3280] + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3448] + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3456] + mov w0, w20 bl ftl_malloc str x0, [x19, 3464] - mov w0, w21 + ldr w0, [x19, 3280] + mul w0, w20, w0 + bl ftl_malloc + str x0, [x19, 3256] + mov w0, w20 bl ftl_malloc str x0, [x19, 3472] - mov w0, w21 + mov w0, w20 bl ftl_malloc str x0, [x19, 3480] - ldr w0, [x19, 3288] - mul w0, w21, w0 - bl ftl_malloc - str x0, [x19, 3264] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3488] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3496] - ldr w1, [x19, 3288] + ldr w1, [x19, 3280] mov w0, 24 mul w0, w1, w0 bl ftl_malloc - str x0, [x19, 3256] - mov w0, w21 + str x0, [x19, 3248] + mov w0, w20 bl ftl_malloc - str x0, [x19, 3504] - mov w0, w21 + str x0, [x19, 3488] + mov w0, w20 bl ftl_malloc - str x0, [x19, 3512] + str x0, [x19, 3496] ldrh w0, [x19, 262] lsl w0, w0, 2 bl ftl_malloc - ldrh w21, [x19, 316] - str x0, [x19, 3520] + ldrh w20, [x19, 316] + str x0, [x19, 3504] ldrh w0, [x19, 236] - mul w21, w21, w0 - mov w0, w21 + mul w20, w20, w0 + mov w0, w20 bl ftl_malloc - str x0, [x19, 3528] - lsl w0, w21, 2 + str x0, [x19, 3512] + lsl w0, w20, 2 bl ftl_malloc - str x0, [x19, 3536] + str x0, [x19, 3520] ldrh w1, [x19, 316] - ldr w0, [x19, 3288] + ldr w0, [x19, 3280] mul w0, w1, w0 bl ftl_malloc - str x0, [x19, 3272] + str x0, [x19, 3264] ldrh w0, [x19, 246] + ubfiz w1, w0, 1, 15 ubfiz w0, w0, 1, 15 - strh w0, [x19, 3544] - and w0, w0, 65534 + strh w1, [x19, 3528] bl ftl_malloc - str x0, [x19, 3552] - ldrh w0, [x19, 3544] + str x0, [x19, 3536] + ldrh w0, [x19, 3528] add x0, x0, 547 lsr x0, x0, 9 - strh w0, [x19, 3544] + strh w0, [x19, 3528] lsl w0, w0, 9 bl ftl_malloc - ldrh w21, [x19, 246] - str x0, [x19, 3560] + ldrh w20, [x19, 246] + str x0, [x19, 3544] add x0, x0, 32 str x0, [x19, 2600] - lsl w21, w21, 1 - mov w0, w21 + lsl w20, w20, 1 + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3552] + mov w0, w20 + bl ftl_malloc + ldr w20, [x19, 332] + str x0, [x19, 72] + lsl w20, w20, 1 + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3560] + mov w0, w20 bl ftl_malloc str x0, [x19, 3568] - mov w0, w21 - bl ftl_malloc - ldr w21, [x19, 332] - str x0, [x19, 72] - lsl w21, w21, 1 - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3576] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3584] ldrh w0, [x19, 324] lsl w0, w0, 1 bl ftl_malloc @@ -3280,27 +4203,27 @@ FtlMemInit: ldrh w0, [x19, 324] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19, 3592] + str x0, [x19, 3576] ldrh w0, [x19, 324] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19, 3600] + str x0, [x19, 3584] ldrh w0, [x19, 326] lsl w0, w0, 2 bl ftl_malloc ldrh w2, [x19, 326] mov w1, 0 - str x0, [x19, 3608] + str x0, [x19, 3592] lsl w2, w2, 2 bl ftl_memset ldrh w0, [x19, 340] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19, 3616] + str x0, [x19, 3600] ldr w0, [x19, 332] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19, 3624] + str x0, [x19, 3608] ldrh w0, [x19, 342] lsl w0, w0, 4 bl ftl_malloc @@ -3309,7 +4232,7 @@ FtlMemInit: ldrh w0, [x19, 314] mul w0, w1, w0 bl ftl_malloc - str x0, [x19, 3632] + str x0, [x19, 3616] ldrh w1, [x19, 246] mov w0, 6 mul w0, w1, w0 @@ -3319,193 +4242,204 @@ FtlMemInit: ldrh w1, [x19, 258] add w0, w0, 31 asr w0, w0, 5 - strh w0, [x19, 3640] + strh w0, [x19, 3624] mul w0, w1, w0 lsl w0, w0, 2 bl ftl_malloc - ldrh w4, [x19, 3640] - add x5, x19, 400 - ldrh w6, [x19, 258] - mov x1, 1 - str x0, [x19, 392] - mov w2, w4 - mov x0, x20 -.L367: - cmp w1, w6 - bcc .L368 + ldrh w3, [x19, 3624] + add x4, x19, 360 + ldrh w1, [x19, 258] + mov x20, x0 + mov w2, w3 + str x0, [x4, 32] + mov x0, 0 +.L416: + add x0, x0, 1 + cmp w1, w0 + bhi .L417 + cmp w1, 0 mov w2, 8 - add x4, x0, :lo12:.LANCHOR0 + csinc w1, w1, wzr, ne + add x0, x19, 360 sub w2, w2, w1 - add x4, x4, 360 - add x2, x2, 1 - mov x3, 0 -.L369: - add x3, x3, 1 - cmp x3, x2 - bne .L370 - add x1, x0, :lo12:.LANCHOR0 - ldr x2, [x1, 3576] - cbnz x2, .L371 -.L373: + add w1, w1, 4 + ubfiz x3, x1, 3, 17 + lsl x2, x2, 3 + add x0, x0, x3 + mov w1, 0 + bl memset + ldr x0, [x19, 3560] + cbnz x0, .L418 +.L420: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 216 - adrp x0, .LC91 - add x0, x0, :lo12:.LC91 + add x1, x1, 173 + adrp x0, .LC92 + add x0, x0, :lo12:.LC92 bl sftl_printk mov w0, -1 -.L366: +.L415: ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L368: - ldr x3, [x19, 392] - add w1, w1, 1 - add x3, x3, x2, uxtw 2 - add w2, w2, w4 - str x3, [x5], 8 - b .L367 -.L370: - add x5, x1, x3 - add x5, x4, x5, lsl 3 - str xzr, [x5, 24] - b .L369 -.L371: - ldr x2, [x1, 3584] - cbz x2, .L373 - ldr x2, [x1, 3616] - cbz x2, .L373 - ldr x2, [x1, 3624] - cbz x2, .L373 - ldr x2, [x1, 2608] - cbz x2, .L373 - ldr x2, [x1, 3632] - cbz x2, .L373 - ldr x2, [x1, 2560] - cbz x2, .L373 - ldr x2, [x1, 392] - cbz x2, .L373 - ldr x1, [x1, 72] - cbz x1, .L373 - add x1, x0, :lo12:.LANCHOR0 - ldr x2, [x1, 3296] - cbz x2, .L373 - ldr x2, [x1, 3312] - cbz x2, .L373 - ldr x2, [x1, 3440] - cbz x2, .L373 - ldr x2, [x1, 3456] - cbz x2, .L373 - ldr x2, [x1, 3416] - cbz x2, .L373 - ldr x2, [x1, 3280] - cbz x2, .L373 - ldr x2, [x1, 3448] - cbz x2, .L373 - ldr x2, [x1, 3464] - cbz x2, .L373 - ldr x2, [x1, 3472] - cbz x2, .L373 - ldr x1, [x1, 3480] - cbz x1, .L373 - add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0, 3264] - cbz x1, .L373 - ldr x1, [x0, 3488] - cbz x1, .L373 - ldr x1, [x0, 3496] - cbz x1, .L373 - ldr x1, [x0, 3256] - cbz x1, .L373 - ldr x1, [x0, 3528] - cbz x1, .L373 - ldr x1, [x0, 3536] - cbz x1, .L373 - ldr x1, [x0, 3272] - cbz x1, .L373 - ldr x1, [x0, 2600] - cbz x1, .L373 - ldr x1, [x0, 3552] - cbz x1, .L373 - ldr x0, [x0, 352] - cbz x0, .L373 +.L417: + add x5, x4, x0, lsl 3 + add x6, x20, x2, uxtw 2 + add w2, w2, w3 + str x6, [x5, 32] + b .L416 +.L418: + ldr x0, [x19, 3568] + cbz x0, .L420 + ldr x0, [x19, 3600] + cbz x0, .L420 + ldr x0, [x19, 3608] + cbz x0, .L420 + ldr x0, [x19, 2608] + cbz x0, .L420 + ldr x0, [x19, 3616] + cbz x0, .L420 + ldr x0, [x19, 2560] + cbz x0, .L420 + cbz x20, .L420 + ldr x0, [x19, 72] + cbz x0, .L420 + ldr x0, [x19, 3288] + cbz x0, .L420 + ldr x0, [x19, 3304] + cbz x0, .L420 + ldr x0, [x19, 3424] + cbz x0, .L420 + ldr x0, [x19, 3440] + cbz x0, .L420 + ldr x0, [x19, 3400] + cbz x0, .L420 + ldr x0, [x19, 3272] + cbz x0, .L420 + ldr x0, [x19, 3432] + cbz x0, .L420 + ldr x0, [x19, 3448] + cbz x0, .L420 + ldr x0, [x19, 3456] + cbz x0, .L420 + ldr x0, [x19, 3464] + cbz x0, .L420 + ldr x0, [x19, 3256] + cbz x0, .L420 + ldr x0, [x19, 3472] + cbz x0, .L420 + ldr x0, [x19, 3480] + cbz x0, .L420 + ldr x0, [x19, 3248] + cbz x0, .L420 + ldr x0, [x19, 3512] + cbz x0, .L420 + ldr x0, [x19, 3520] + cbz x0, .L420 + ldr x0, [x19, 3264] + cbz x0, .L420 + ldr x0, [x19, 2600] + cbz x0, .L420 + ldr x0, [x19, 3536] + cbz x0, .L420 + ldr x0, [x19, 352] + cbz x0, .L420 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0, 3592] - cbz x1, .L373 - ldr x1, [x0, 3600] - cbz x1, .L373 - ldr x0, [x0, 3608] - cbz x0, .L373 + ldr x1, [x0, 3576] + cbz x1, .L420 + ldr x1, [x0, 3584] + cbz x1, .L420 + ldr x0, [x0, 3592] + cbz x0, .L420 mov w0, 0 - b .L366 + b .L415 .size FtlMemInit, .-FtlMemInit .align 2 .global FtlBbt2Bitmap .type FtlBbt2Bitmap, %function FtlBbt2Bitmap: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE61 + .text +.LPFE61: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -64]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 + mov x29, sp stp x23, x24, [sp, 48] - mov x23, x0 - add x0, x21, :lo12:.LANCHOR0 + adrp x23, .LANCHOR0 + add x23, x23, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR1 + add x21, x21, :lo12:.LANCHOR1 + ldrh w2, [x23, 3624] + adrp x24, .LC9 + add x21, x21, 184 + add x24, x24, :lo12:.LC9 stp x19, x20, [sp, 16] - adrp x20, .LANCHOR1 - add x20, x20, :lo12:.LANCHOR1 - adrp x24, .LC8 - add x20, x20, 232 - ldrh w2, [x0, 3640] - add x24, x24, :lo12:.LC8 mov x19, 0 - mov x22, x1 - mov x0, x22 - mov w1, 0 + mov x20, x1 + mov x22, x0 lsl w2, w2, 2 + mov x0, x20 + mov w1, 0 bl ftl_memset -.L471: - ldrh w0, [x23, x19] +.L518: + ldrh w0, [x22, x19, lsl 1] mov w1, 65535 cmp w0, w1 - beq .L468 - add x1, x21, :lo12:.LANCHOR0 - ldrh w1, [x1, 302] + beq .L515 + ldrh w1, [x23, 302] cmp w1, w0 - bhi .L470 - mov w2, 74 - mov x1, x20 + bhi .L517 + mov x1, x21 mov x0, x24 + mov w2, 74 bl sftl_printk -.L470: - ldrh w2, [x23, x19] - mov w1, 1 - add x19, x19, 2 - cmp x19, 1024 - ubfx x0, x2, 5, 11 - lsl w2, w1, w2 - lsl x0, x0, 2 - ldr w1, [x22, x0] - orr w1, w1, w2 - str w1, [x22, x0] - bne .L471 -.L468: +.L517: + ldrh w3, [x22, x19, lsl 1] + mov w2, 1 + add x19, x19, 1 + ubfx x1, x3, 5, 11 + lsl w3, w2, w3 + lsl x1, x1, 2 + ldr w2, [x20, x1] + orr w2, w2, w3 + str w2, [x20, x1] + cmp x19, 512 + bne .L518 +.L515: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 + hint 29 // autiasp ret .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .align 2 .global FtlBbtMemInit .type FtlBbtMemInit, %function FtlBbtMemInit: - stp x29, x30, [sp, -16]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE62 + .text +.LPFE62: + nop + nop + hint 25 // paciasp adrp x0, .LANCHOR0 + stp x29, x30, [sp, -16]! add x0, x0, :lo12:.LANCHOR0 mov w1, -1 - add x29, sp, 0 + mov x29, sp mov w2, 16 add x0, x0, 372 strh w1, [x0, -12] @@ -3513,139 +4447,159 @@ FtlBbtMemInit: strh wzr, [x0, -6] bl ftl_memset ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size FtlBbtMemInit, .-FtlBbtMemInit .align 2 .global FtlFreeSysBlkQueueInit .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: - stp x29, x30, [sp, -16]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE63 + .text +.LPFE63: + nop + nop adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 + hint 25 // paciasp + add x1, x3, 456 + stp x29, x30, [sp, -16]! mov w2, 2048 - add x29, sp, 0 + mov x29, sp + str wzr, [x1, 2] mov w1, 0 strh w0, [x3, 456] add x0, x3, 464 - strh wzr, [x3, 458] - strh wzr, [x3, 460] strh wzr, [x3, 462] bl ftl_memset mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit .align 2 .global ftl_free_no_use_map_blk .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE64 + .text +.LPFE64: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -80]! mov w1, 0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x19, x0 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] str x25, [sp, 64] - ldrh w2, [x0, 10] ldp x21, x20, [x0, 32] + ldrh w2, [x0, 10] ldr x22, [x0, 16] lsl w2, w2, 1 mov x0, x21 bl ftl_memset mov w0, 0 -.L480: +.L526: ldrh w1, [x19, 6] cmp w1, w0 - bhi .L484 + bhi .L530 adrp x0, .LANCHOR0+308 - mov w23, 0 + mov w24, 0 mov w20, 0 ldrh w1, [x0, #:lo12:.LANCHOR0+308] ldrh w0, [x19] strh w1, [x21, x0, lsl 1] - ldrh w24, [x21] -.L485: + ldrh w25, [x21] +.L531: ldrh w0, [x19, 10] cmp w0, w20 - bhi .L489 - mov w0, w23 - ldr x25, [sp, 64] + bhi .L534 + mov w0, w24 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] ldp x29, x30, [sp], 80 + hint 29 // autiasp ret -.L484: +.L530: ubfiz x1, x0, 2, 16 ldr w2, [x20, x1] mov w1, 0 ubfx x2, x2, 10, 16 -.L481: +.L527: ldrh w3, [x19, 10] cmp w3, w1 - bhi .L483 + bhi .L529 add w0, w0, 1 and w0, w0, 65535 - b .L480 -.L483: + b .L526 +.L529: ubfiz x3, x1, 1, 16 ldrh w4, [x22, x3] cmp w4, w2 - bne .L482 - cbz w2, .L482 + bne .L528 + cbz w2, .L528 ldrh w4, [x21, x3] add w4, w4, 1 strh w4, [x21, x3] -.L482: +.L528: add w1, w1, 1 and w1, w1, 65535 - b .L481 -.L489: - ubfiz x0, x20, 1, 16 - ldrh w1, [x21, x0] - cmp w24, w1 - bls .L486 - add x25, x22, x0 - ldrh w0, [x22, x0] - cbnz w0, .L487 -.L488: - add w20, w20, 1 - and w20, w20, 65535 - b .L485 -.L486: - cbnz w1, .L488 - add x25, x22, x0 - ldrh w0, [x22, x0] - cbz w0, .L488 -.L490: + b .L527 +.L534: + ubfiz x23, x20, 1, 16 + ldrh w0, [x21, x23] + cmp w0, w25 + bcs .L532 + ldrh w1, [x22, x23] + cmp w1, 0 + csel w24, w24, w20, eq + csel w25, w25, w0, eq +.L532: + cbnz w0, .L533 + ldrh w0, [x22, x23] + cbz w0, .L533 mov w1, 1 bl FtlFreeSysBlkQueueIn - strh wzr, [x25] + strh wzr, [x22, x23] ldrh w0, [x19, 8] sub w0, w0, #1 strh w0, [x19, 8] - b .L488 -.L491: - mov w24, 0 - b .L490 -.L487: - mov w23, w20 - cbz w1, .L491 - mov w24, w1 - b .L488 +.L533: + add w20, w20, 1 + and w20, w20, 65535 + b .L531 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 .global FtlL2PDataInit .type FtlL2PDataInit, %function FtlL2PDataInit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE65 + .text +.LPFE65: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR0 mov w1, 0 - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] - add x19, x0, :lo12:.LANCHOR0 - ldr x0, [x19, 3584] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldr x0, [x19, 3568] ldr w2, [x19, 332] lsl w2, w2, 1 bl ftl_memset @@ -3653,634 +4607,723 @@ FtlL2PDataInit: mov w1, 255 ldrh w2, [x19, 314] mul w2, w2, w0 - ldr x0, [x19, 3632] + ldr x0, [x19, 3616] bl ftl_memset - mov x0, x19 - mov w1, 0 - mov w5, -1 -.L501: - ldrh w2, [x0, 342] - cmp w2, w1 - bhi .L502 - mov w2, -1 - strh w2, [x0, 3650] - strh w2, [x0, 3648] - add x1, x0, 3648 - ldr w2, [x0, 332] - strh w2, [x0, 3658] - mov w2, -3902 - strh w2, [x0, 3652] - ldrh w2, [x0, 3712] - strh w2, [x0, 3656] - ldrh w2, [x0, 340] - strh w2, [x0, 3654] - ldr x2, [x0, 3576] - str x2, [x0, 3664] - ldr x2, [x0, 3624] - str x2, [x0, 3672] - ldr x2, [x0, 3584] - str x2, [x0, 3680] - ldr x0, [x0, 3616] - str x0, [x1, 40] + mov w0, 0 + mov w4, -1 +.L545: + ldrh w1, [x19, 342] + cmp w1, w0 + bhi .L546 + ldr w1, [x19, 332] + strh w1, [x19, 3642] + mov w1, -1 + str w1, [x19, 3632] + mov w1, -3902 + strh w1, [x19, 3636] + ldrh w1, [x19, 3696] + strh w1, [x19, 3640] + ldrh w1, [x19, 340] + strh w1, [x19, 3638] + ldr x1, [x19, 3560] + str x1, [x19, 3648] + ldr x1, [x19, 3608] + str x1, [x19, 3656] + ldr x1, [x19, 3568] + str x1, [x19, 3664] + ldr x1, [x19, 3600] + str x1, [x19, 3672] ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L502: - ldr x3, [x0, 2608] - ubfiz x2, x1, 4, 16 - add x3, x3, x2 - str wzr, [x3, 4] - ldr x3, [x0, 2608] - strh w5, [x3, x2] - ldr x3, [x0, 2608] - ldr x4, [x0, 3632] - add x3, x3, x2 - ldrh w2, [x0, 314] - 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 .L501 +.L546: + ldr x2, [x19, 2608] + ubfiz x1, x0, 4, 16 + add x2, x2, x1 + str wzr, [x2, 4] + ldr x2, [x19, 2608] + strh w4, [x2, x1] + ldr x2, [x19, 2608] + ldr x3, [x19, 3616] + add x2, x2, x1 + ldrh w1, [x19, 314] + mul w1, w1, w0 + add w0, w0, 1 + and w0, w0, 65535 + sxtw x1, w1 + and x1, x1, -4 + add x1, x3, x1 + str x1, [x2, 8] + b .L545 .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 .global FtlVariablesInit .type FtlVariablesInit, %function FtlVariablesInit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE66 + .text +.LPFE66: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! mov w0, -1 - mov w1, 0 - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - strh w0, [x19, 3714] + mov w1, 0 + strh w0, [x19, 3698] mov w0, -1 - str w0, [x19, 3724] + str w0, [x19, 3708] ldr x0, [x19, 352] - ldrh w2, [x19, 324] strh wzr, [x19, 348] - str wzr, [x19, 3716] + ldrh w2, [x19, 324] + str wzr, [x19, 3700] + str wzr, [x19, 3704] lsl w2, w2, 1 - str wzr, [x19, 3720] bl ftl_memset ldr x0, [x19, 2600] mov w1, 0 ldrh w2, [x19, 246] lsl w2, w2, 1 bl ftl_memset - ldr x0, [x19, 3552] + ldr x0, [x19, 3536] mov w1, 0 ldrh w2, [x19, 246] lsl w2, w2, 1 bl ftl_memset + add x0, x19, 2512 mov w2, 48 mov w1, 0 - add x0, x19, 2512 bl ftl_memset mov w2, 512 mov w1, 0 - add x0, x19, 2720 + add x0, x19, 2712 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit - ldr x19, [sp, 16] mov w0, 0 + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlVariablesInit, .-FtlVariablesInit .align 2 .global SupperBlkListInit .type SupperBlkListInit, %function SupperBlkListInit: - stp x29, x30, [sp, -64]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE67 + .text +.LPFE67: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -112]! mov w0, 6 - mov w1, 0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - str x23, [sp, 48] - add x23, x19, 264 - stp x21, x22, [sp, 32] - mov w20, 0 - mov w22, 0 + stp x25, x26, [sp, 64] + add x25, x19, 264 + mov w1, 0 ldrh w2, [x19, 246] + mov w20, 0 + mov w26, -1 + stp x21, x22, [sp, 32] mov w21, 0 + stp x23, x24, [sp, 48] + mov w23, 0 mul w2, w2, w0 ldr x0, [x19, 2560] + stp x27, x28, [sp, 80] + mov w27, 32768 bl ftl_memset - strh wzr, [x19, 2584] strh wzr, [x19, 228] str xzr, [x19, 2568] str xzr, [x19, 2576] + strh wzr, [x19, 2584] str xzr, [x19, 2592] -.L507: +.L551: ldrh w0, [x19, 244] - cmp w20, w0 - bcs .L514 - ldrh w8, [x19, 236] - mov x6, 0 - ldrh w7, [x19, 306] - mov w5, 0 - b .L515 -.L509: - ldrb w0, [x23, x6] + cmp w0, w20 + bls .L558 + ldrh w2, [x19, 236] + mov x24, 0 + ldrh w28, [x19, 306] + mov w22, 0 + b .L559 +.L553: + ldrb w0, [x25, x24] mov w1, w20 + str w2, [sp, 108] bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L508 - add w5, w5, w7 - and w5, w5, 65535 -.L508: - add x6, x6, 1 -.L515: - cmp w8, w6, uxth - bhi .L509 - cbz w5, .L510 - mov w0, 32768 - sdiv w5, w0, w5 -.L511: + ldr w2, [sp, 108] + cbnz w0, .L552 + add w22, w28, w22 + and w22, w22, 65535 +.L552: + add x24, x24, 1 +.L559: + cmp w2, w24, uxth + bhi .L553 + cbz w22, .L554 + udiv w22, w27, w22 +.L555: ldr x1, [x19, 2560] mov w0, 6 umaddl x0, w20, w0, x1 - strh w5, [x0, 4] + strh w22, [x0, 4] ldrh w0, [x19, 24] cmp w0, w20 - beq .L512 + beq .L556 ldrh w0, [x19, 80] cmp w0, w20 - beq .L512 + beq .L556 ldrh w0, [x19, 128] cmp w0, w20 - beq .L512 + beq .L556 ldr x1, [x19, 72] ubfiz x0, x20, 1, 16 ldrh w0, [x1, x0] - cbnz w0, .L513 - add w22, w22, 1 + cbnz w0, .L557 + add w23, w23, 1 mov w0, w20 - and w22, w22, 65535 + and w23, w23, 65535 bl INSERT_FREE_LIST -.L512: +.L556: add w20, w20, 1 and w20, w20, 65535 - b .L507 -.L510: + b .L551 +.L554: ldr x1, [x19, 72] ubfiz x0, x20, 1, 16 - mov w2, -1 - strh w2, [x1, x0] - b .L511 -.L513: + strh w26, [x1, x0] + b .L555 +.L557: add w21, w21, 1 mov w0, w20 and w21, w21, 65535 bl INSERT_DATA_LIST - b .L512 -.L514: + b .L556 +.L558: + strh w23, [x19, 228] strh w21, [x19, 2584] - add w21, w21, w22 - strh w22, [x19, 228] + add w21, w21, w23 cmp w21, w0 - ble .L516 + ble .L560 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2212 - add x1, x1, 248 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 198 + add x0, x0, :lo12:.LC9 + mov w2, 2219 bl sftl_printk -.L516: +.L560: mov w0, 0 - ldr x23, [sp, 48] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 - ret - .size SupperBlkListInit, .-SupperBlkListInit - .align 2 - .global FtlGcPageVarInit - .type FtlGcPageVarInit, %function -FtlGcPageVarInit: - stp x29, x30, [sp, -32]! - mov w1, 255 - add x29, sp, 0 - str x19, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - ldr x0, [x19, 3296] - ldrh w2, [x19, 310] - strh wzr, [x19, 3292] - strh wzr, [x19, 3304] - lsl w2, w2, 1 - bl ftl_memset - ldrh w2, [x19, 310] - mov w0, 12 - mov w1, 255 - mul w2, w2, w0 - ldr x0, [x19, 3312] - bl ftl_memset - bl FtlGcBufInit - ldr x19, [sp, 16] - ldp x29, x30, [sp], 32 - ret - .size FtlGcPageVarInit, .-FtlGcPageVarInit - .align 2 - .global FlashGetBadBlockList - .type FlashGetBadBlockList, %function -FlashGetBadBlockList: - stp x29, x30, [sp, -48]! - mov w2, 256 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x20, x0 - str x21, [sp, 32] - mov w21, w1 - mov w1, 255 - bl ftl_memset - adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - mov w1, w21 - ldr x2, [x0, 3368] - mov x0, x20 - blr x2 - and w0, w0, 65535 - cmp w0, 50 - bls .L521 - mov w2, 256 - mov w1, 255 - mov x0, x20 - bl ftl_memset - mov w0, 0 -.L521: - add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x19, 14] - cmp w1, 4 - bne .L525 - mov x1, 0 -.L523: - cmp w0, w1, uxth - bhi .L524 -.L525: - ldp x19, x20, [sp, 16] - ldr x21, [sp, 32] - ldp x29, x30, [sp], 48 - ret -.L524: - ldrh w2, [x20, x1, lsl 1] - lsr w2, w2, 1 - strh w2, [x20, x1, lsl 1] - add x1, x1, 1 - b .L523 - .size FlashGetBadBlockList, .-FlashGetBadBlockList - .align 2 - .global ftl_memcpy - .type ftl_memcpy, %function -ftl_memcpy: - stp x29, x30, [sp, -16]! - uxtw x2, w2 - add x29, sp, 0 - bl memcpy - ldp x29, x30, [sp], 16 - ret - .size ftl_memcpy, .-ftl_memcpy - .align 2 - .global FlashReadPages - .type FlashReadPages, %function -FlashReadPages: - stp x29, x30, [sp, -112]! - ubfiz x1, x1, 5, 32 - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x21, __stack_chk_guard - stp x23, x24, [sp, 48] - add x2, x21, :lo12:__stack_chk_guard - stp x19, x20, [sp, 16] - adrp x22, .LANCHOR0 - stp x25, x26, [sp, 64] - adrp x23, .LANCHOR1 - stp x27, x28, [sp, 80] - add x23, x23, :lo12:.LANCHOR1 - adrp x25, .LC8 - mov x19, x0 - ldr x3, [x2] - str x3, [x29, 104] - mov x3,0 - add x2, x22, :lo12:.LANCHOR0 - add x24, x0, x1 - add x23, x23, 272 - add x25, x25, :lo12:.LC8 - ldrh w26, [x2, 12] -.L530: - cmp x24, x19 - bne .L543 - add x21, x21, :lo12:__stack_chk_guard - mov w0, 0 - ldr x2, [x29, 104] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L544 - bl __stack_chk_fail -.L543: - ldr x0, [x19, 8] - cbz x0, .L531 - ldr x0, [x19, 16] - cbnz x0, .L532 -.L531: - mov w2, 96 - mov x1, x23 - mov x0, x25 - bl sftl_printk -.L532: - ldr w0, [x19, 4] - add x2, x29, 96 - add x1, x29, 100 - bl l2p_addr_tran.isra.0 - ldr w0, [x29, 96] - cmp w0, 3 - bls .L533 - mov w0, -1 - str w0, [x19] -.L534: - add x19, x19, 32 - b .L530 -.L533: - ldr x20, [x19, 8] - tst x20, 63 - beq .L535 - add x1, x22, :lo12:.LANCHOR0 - ldr x20, [x1, 3504] -.L535: - add x28, x22, :lo12:.LANCHOR0 - ldr w1, [x29, 100] - ldr x3, [x19, 16] - mov x2, x20 - ldr x4, [x28, 3392] - blr x4 - str w0, [x19] - ldrh w0, [x28, 14] - cmp w0, 4 - bne .L537 - ldrb w0, [x29, 96] - add x2, x20, 2048 - ldr x4, [x28, 3392] - ldr w1, [x29, 100] - ldr x3, [x19, 16] - add w1, w26, w1 - add x3, x3, 8 - blr x4 - cmn w0, #1 - beq .L538 - ldr x1, [x19, 16] - ldr w2, [x1, 12] - cmn w2, #1 - bne .L539 - ldr w2, [x1, 8] - cmn w2, #1 - bne .L539 - ldr w1, [x1] - cmn w1, #1 - beq .L539 -.L538: - mov w1, -1 - str w1, [x19] -.L539: - ldr w1, [x19] - cmn w1, #1 - beq .L540 - cmp w0, 256 - bne .L540 - str w0, [x19] -.L540: - ldr w3, [x19] - cmp w3, 256 - ccmn w3, #1, 4, ne - bne .L537 - ldr w1, [x19, 4] - adrp x0, .LC92 - ldr w2, [x29, 100] - add x0, x0, :lo12:.LC92 - bl sftl_printk - ldr x1, [x19, 8] - cbz x1, .L542 - mov w3, 4 - adrp x0, .LC93 - mov w2, w3 - add x0, x0, :lo12:.LC93 - bl rknand_print_hex -.L542: - ldr x1, [x19, 16] - cbz x1, .L537 - mov w3, 4 - adrp x0, .LC94 - mov w2, w3 - add x0, x0, :lo12:.LC94 - bl rknand_print_hex -.L537: - add x1, x22, :lo12:.LANCHOR0 - ldr x0, [x1, 3504] - cmp x20, x0 - bne .L534 - ldr x0, [x19, 8] - cmp x20, x0 - beq .L534 - ldrh w2, [x1, 262] - mov x1, x20 - lsl w2, w2, 9 - bl ftl_memcpy - b .L534 -.L544: 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 + hint 29 // autiasp + ret + .size SupperBlkListInit, .-SupperBlkListInit + .align 2 + .global FtlGcPageVarInit + .type FtlGcPageVarInit, %function +FtlGcPageVarInit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE68 + .text +.LPFE68: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -32]! + mov w1, 255 + mov x29, sp + str x19, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldr x0, [x19, 3288] + strh wzr, [x19, 3284] + ldrh w2, [x19, 310] + strh wzr, [x19, 3296] + lsl w2, w2, 1 + bl ftl_memset + ldrh w2, [x19, 310] + mov w0, 12 + mov w1, 255 + mul w2, w2, w0 + ldr x0, [x19, 3304] + bl ftl_memset + bl FtlGcBufInit + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + hint 29 // autiasp + ret + .size FtlGcPageVarInit, .-FtlGcPageVarInit + .align 2 + .global FlashGetBadBlockList + .type FlashGetBadBlockList, %function +FlashGetBadBlockList: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE69 + .text +.LPFE69: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -48]! + mov w2, 256 + mov x29, sp + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + mov x19, x0 + str x21, [sp, 32] + mov w21, w1 + mov w1, 255 + bl ftl_memset + ldr x2, [x20, 3352] + mov w1, w21 + mov x0, x19 + blr x2 + and w0, w0, 65535 + cmp w0, 50 + bls .L565 + mov x0, x19 + mov w2, 256 + mov w1, 255 + bl ftl_memset + mov w0, 0 +.L565: + ldrh w1, [x20, 14] + cmp w1, 4 + bne .L570 + mov x1, 0 + b .L566 +.L567: + ldrh w2, [x19, x1, lsl 1] + lsr w2, w2, 1 + strh w2, [x19, x1, lsl 1] + add x1, x1, 1 +.L566: + cmp w0, w1, uxth + bhi .L567 +.L570: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp + ret + .size FlashGetBadBlockList, .-FlashGetBadBlockList + .align 2 + .global ftl_memcpy + .type ftl_memcpy, %function +ftl_memcpy: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE70 + .text +.LPFE70: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -16]! + uxtw x2, w2 + mov x29, sp + bl memcpy + ldp x29, x30, [sp], 16 + hint 29 // autiasp + ret + .size ftl_memcpy, .-ftl_memcpy + .section .rodata.str1.1 +.LC93: + .string "FlashReadPages %x %x error_ecc_bits %d\n" +.LC94: + .string "data:" +.LC95: + .string "spare:" + .text + .align 2 + .global FlashReadPages + .type FlashReadPages, %function +FlashReadPages: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE71 + .text +.LPFE71: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! + mrs x2, sp_el0 + mov x29, sp + stp x19, x20, [sp, 16] + mov x19, x0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + mov w0, 32 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR1 + add x22, x22, :lo12:.LANCHOR1 + stp x23, x24, [sp, 48] + umaddl x23, w1, w0, x19 + adrp x24, .LC9 + stp x25, x26, [sp, 64] + add x22, x22, 216 + ldrh w25, [x20, 12] + ldr x3, [x2, 1376] + str x3, [sp, 88] + mov x3, 0 + add x24, x24, :lo12:.LC9 +.L575: + cmp x19, x23 + bne .L588 + mrs x0, sp_el0 + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L589 + bl __stack_chk_fail +.L588: + ldr x0, [x19, 8] + cbz x0, .L576 + ldr x0, [x19, 16] + cbnz x0, .L577 +.L576: + mov x1, x22 + mov x0, x24 + mov w2, 96 + bl sftl_printk +.L577: + ldr w0, [x19, 4] + add x2, sp, 80 + add x1, sp, 84 + bl l2p_addr_tran.isra.0 + ldr w0, [sp, 80] + cmp w0, 3 + bls .L578 + mov w0, -1 + str w0, [x19] +.L579: + add x19, x19, 32 + b .L575 +.L578: + ldr x21, [x19, 8] + tst x21, 63 + beq .L580 + ldr x21, [x20, 3488] +.L580: + mov x2, x21 + ldr w1, [sp, 84] + ldr x3, [x19, 16] + ldr x4, [x20, 3376] + blr x4 + str w0, [x19] + ldrh w0, [x20, 14] + cmp w0, 4 + bne .L582 + ldrb w0, [sp, 80] + add x2, x21, 2048 + ldr x4, [x20, 3376] + ldr x3, [x19, 16] + ldr w1, [sp, 84] + add x3, x3, 8 + add w1, w25, w1 + blr x4 + cmn w0, #1 + beq .L583 + ldr x1, [x19, 16] + ldr w2, [x1, 12] + cmn w2, #1 + bne .L584 + ldr w2, [x1, 8] + cmn w2, #1 + bne .L584 + ldr w1, [x1] + cmn w1, #1 + beq .L584 +.L583: + mov w0, -1 +.L615: + str w0, [x19] + b .L585 +.L584: + ldr w1, [x19] + cmn w1, #1 + beq .L585 + cmp w0, 256 + beq .L615 +.L585: + ldr w3, [x19] + cmp w3, 256 + ccmn w3, #1, 4, ne + bne .L582 + ldr w1, [x19, 4] + adrp x0, .LC93 + ldr w2, [sp, 84] + add x0, x0, :lo12:.LC93 + bl sftl_printk + ldr x1, [x19, 8] + cbz x1, .L587 + mov w3, 4 + adrp x0, .LC94 + mov w2, w3 + add x0, x0, :lo12:.LC94 + bl rknand_print_hex +.L587: + ldr x1, [x19, 16] + cbz x1, .L582 + mov w3, 4 + adrp x0, .LC95 + mov w2, w3 + add x0, x0, :lo12:.LC95 + bl rknand_print_hex +.L582: + ldr x0, [x20, 3488] + cmp x0, x21 + bne .L579 + ldr x0, [x19, 8] + cmp x0, x21 + beq .L579 + ldrh w2, [x20, 262] + mov x1, x21 + lsl w2, w2, 9 + bl ftl_memcpy + b .L579 +.L589: + 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], 96 + hint 29 // autiasp ret .size FlashReadPages, .-FlashReadPages .align 2 .global FtlLoadFactoryBbt .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE72 + .text +.LPFE72: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -80]! - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - add x29, sp, 0 - stp x21, x22, [sp, 32] - add x22, x0, 372 - stp x25, x26, [sp, 64] - mov w21, 0 + mov x29, sp stp x19, x20, [sp, 16] - mov x19, x0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + add x21, x20, 3712 + mov w22, 0 stp x23, x24, [sp, 48] - add x23, x0, 3728 - mov x25, x23 + add x23, x20, 360 + stp x25, x26, [sp, 64] + mov w25, -1 mov w26, 61664 - ldr x1, [x0, 3464] - ldr x24, [x0, 3528] - stp x1, x24, [x23, 8] -.L571: - ldrh w0, [x19, 258] - cmp w21, w0 - bcc .L576 + ldr x0, [x20, 3448] + ldr x24, [x20, 3512] + stp x0, x24, [x21, 8] +.L617: + ldrh w0, [x20, 258] + cmp w0, w22 + bhi .L622 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 + hint 29 // autiasp ret -.L576: - ldrh w20, [x19, 302] - mov w0, -1 - strh w0, [x22] -.L573: - ldrh w0, [x19, 302] - sub w20, w20, #1 - and w20, w20, 65535 +.L622: + ldrh w19, [x20, 302] + strh w25, [x23, 12] +.L619: + ldrh w0, [x20, 302] + sub w19, w19, #1 + and w19, w19, 65535 sub w1, w0, #16 - cmp w20, w1 - ble .L574 - madd w0, w0, w21, w20 + cmp w19, w1 + ble .L620 + madd w0, w0, w22, w19 mov w2, 1 mov w1, w2 lsl w0, w0, 10 - str w0, [x25, 4] - mov x0, x23 + str w0, [x21, 4] + mov x0, x21 bl FlashReadPages - ldr w0, [x25] + ldr w0, [x21] cmn w0, #1 - beq .L573 + beq .L619 ldrh w0, [x24] cmp w0, w26 - bne .L573 - strh w20, [x22] -.L574: - add w21, w21, 1 - add x22, x22, 2 - b .L571 + bne .L619 + strh w19, [x23, 12] +.L620: + add w22, w22, 1 + add x23, x23, 2 + b .L617 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 2 .global FtlGetLastWrittenPage .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: - stp x29, x30, [sp, -192]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x21, __stack_chk_guard - stp x23, x24, [sp, 48] - mov w24, w1 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE73 + .text +.LPFE73: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -176]! + mov x29, sp stp x19, x20, [sp, 16] - add x1, x21, :lo12:__stack_chk_guard - str x25, [sp, 64] - cmp w24, 1 - ldr x2, [x1] - str x2, [x29, 184] - mov x2,0 + stp x21, x22, [sp, 32] + mov w22, w1 + mrs x1, sp_el0 + stp x23, x24, [sp, 48] + cmp w22, 1 + ldr x2, [x1, 1376] + str x2, [sp, 168] + mov x2, 0 adrp x1, .LANCHOR0 - add x2, x1, :lo12:.LANCHOR0 - bne .L582 - ldrh w19, [x2, 308] -.L583: add x1, x1, :lo12:.LANCHOR0 + bne .L628 + ldrh w19, [x1, 308] +.L629: sub w19, w19, #1 + lsl w21, w0, 10 + ldr x1, [x1, 3496] sxth w19, w19 - lsl w22, w0, 10 - orr w0, w19, w22 - mov w2, w24 - ldr x1, [x1, 3512] - str x1, [x29, 96] - add x1, x29, 120 - str w0, [x29, 92] - add x0, x29, 88 - str x1, [x29, 104] + orr w0, w19, w0, lsl 10 + str x1, [sp, 80] + add x1, sp, 104 + mov w2, w22 + str w0, [sp, 76] + add x0, sp, 72 + str x1, [sp, 88] mov w1, 1 bl FlashReadPages - ldr w0, [x29, 120] + ldr w0, [sp, 104] cmn w0, #1 - bne .L584 + bne .L631 mov w23, 0 - mov w25, 2 -.L585: - cmp w23, w19 - ble .L588 -.L584: - add x21, x21, :lo12:__stack_chk_guard - mov w0, w19 - ldr x2, [x29, 184] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L589 - bl __stack_chk_fail -.L582: - ldrh w19, [x2, 306] - b .L583 -.L588: - add w20, w23, w19 - mov w2, w24 + mov w24, 2 + b .L630 +.L628: + ldrh w19, [x1, 306] + b .L629 +.L634: + add w0, w23, w19 mov w1, 1 - sdiv w20, w20, w25 - sxth w0, w20 - orr w0, w0, w22 - str w0, [x29, 92] - add x0, x29, 88 + mov w2, w22 + sdiv w0, w0, w24 + sxth w20, w0 + orr w0, w0, w21 + str w0, [sp, 76] + add x0, sp, 72 bl FlashReadPages - ldr w0, [x29, 120] + ldp w0, w1, [sp, 104] + and w0, w0, w1 cmn w0, #1 - bne .L586 - ldr w0, [x29, 124] + bne .L632 + ldr w0, [sp, 72] cmn w0, #1 - bne .L586 - ldr w0, [x29, 88] - cmn w0, #1 - beq .L586 + beq .L632 sub w19, w20, #1 sxth w19, w19 - b .L585 -.L586: +.L630: + cmp w23, w19 + ble .L634 +.L631: + mrs x0, sp_el0 + ldr x1, [sp, 168] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L635 + bl __stack_chk_fail +.L632: add w20, w20, 1 sxth w23, w20 - b .L585 -.L589: + b .L630 +.L635: + mov w0, w19 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] - ldr x25, [sp, 64] - ldp x29, x30, [sp], 192 + ldp x29, x30, [sp], 176 + hint 29 // autiasp ret .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .align 2 .global FtlScanSysBlk .type FtlScanSysBlk, %function FtlScanSysBlk: - stp x29, x30, [sp, -112]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE74 + .text +.LPFE74: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! mov w1, 0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - add x19, x21, :lo12:.LANCHOR0 + ldr x0, [x19, 3608] stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - adrp x25, .LANCHOR1 - stp x27, x28, [sp, 80] - add x25, x25, :lo12:.LANCHOR1 - ldr x0, [x19, 3624] - add x25, x25, 288 ldr w2, [x19, 332] - strh wzr, [x19, 3712] - strh wzr, [x19, 348] + stp x25, x26, [sp, 64] + adrp x24, .LANCHOR1 + add x24, x24, :lo12:.LANCHOR1 lsl w2, w2, 2 + stp x27, x28, [sp, 80] + add x24, x24, 231 + strh wzr, [x19, 348] + strh wzr, [x19, 3696] bl ftl_memset - ldr x0, [x19, 3576] + ldr x0, [x19, 3560] mov w1, 0 ldr w2, [x19, 332] lsl w2, w2, 1 bl ftl_memset - ldr x0, [x19, 3600] + ldr x0, [x19, 3584] mov w1, 0 ldrh w2, [x19, 324] lsl w2, w2, 2 @@ -4290,746 +5333,765 @@ FtlScanSysBlk: ldrh w2, [x19, 324] lsl w2, w2, 1 bl ftl_memset + add x0, x19, 2696 mov w2, 16 mov w1, 255 - add x0, x19, 2704 bl ftl_memset - ldrh w24, [x19, 244] -.L595: + ldrh w23, [x19, 244] +.L642: ldrh w0, [x19, 246] - cmp w0, w24 - bls .L635 - ldrh w9, [x19, 236] - mov x5, 0 - ldrh w8, [x19, 316] - mov w20, 0 - add x7, x19, 264 - mov w6, 4 - b .L636 -.L597: - ldrb w0, [x7, x5] - mov w1, w24 + cmp w0, w23 + bls .L681 + ldrh w28, [x19, 236] + add x26, x19, 264 + ldrh w27, [x19, 316] + mov x21, 0 + mov w22, 0 + mov w25, 4 + b .L682 +.L644: + ldrb w0, [x26, x21] + mov w1, w23 bl V2P_block - and w4, w0, 65535 + and w20, w0, 65535 bl FtlBbmIsBadBlock - cbnz w0, .L596 - ldr x0, [x19, 3440] - ubfiz x2, x20, 5, 16 - lsl w4, w4, 10 + cbnz w0, .L643 + ldr x0, [x19, 3424] + ubfiz x2, x22, 5, 16 + lsl w20, w20, 10 add x0, x0, x2 - str w4, [x0, 4] - ldr x1, [x19, 3440] - ldr x0, [x19, 3264] + str w20, [x0, 4] + ldr x1, [x19, 3424] + ldr x0, [x19, 3256] add x1, x1, x2 - ldr x2, [x19, 3272] + ldr x2, [x19, 3264] str x0, [x1, 8] - mul w0, w20, w8 - add w20, w20, 1 - and w20, w20, 65535 - sdiv w0, w0, w6 + mul w0, w22, w27 + add w22, w22, 1 + and w22, w22, 65535 + sdiv w0, w0, w25 add x0, x2, x0, sxtw 2 str x0, [x1, 16] -.L596: - add x5, x5, 1 -.L636: - cmp w9, w5, uxth - bhi .L597 - cbnz w20, .L598 -.L634: - add w24, w24, 1 - and w24, w24, 65535 - b .L595 -.L598: - ldr x0, [x19, 3440] - mov w1, w20 +.L643: + add x21, x21, 1 +.L682: + cmp w28, w21, uxth + bhi .L644 + cbnz w22, .L645 +.L680: + add w23, w23, 1 + and w23, w23, 65535 + b .L642 +.L645: + ldr x0, [x19, 3424] + adrp x26, .LC9 + mov w1, w22 + add x26, x26, :lo12:.LC9 mov w2, 1 - ubfiz x20, x20, 5, 16 - mov x23, 0 - add x27, x19, 2704 + mov x25, 0 bl FlashReadPages -.L633: - ldr x0, [x19, 3440] - add x1, x0, x23 - ldr w0, [x0, x23] - ldr w22, [x1, 4] +.L679: + ldr x0, [x19, 3424] + lsl x27, x25, 5 + add x1, x0, x25, lsl 5 + ldr w0, [x0, x27] + ldr w20, [x1, 4] + ldr x21, [x1, 16] + ubfx x20, x20, 10, 16 cmn w0, #1 - ldr x26, [x1, 16] - ubfx x22, x22, 10, 16 - bne .L601 + bne .L648 mov w28, 16 - mov w3, 65535 -.L603: - ldr x0, [x19, 3440] +.L650: + ldr x0, [x19, 3424] mov w2, 1 - str w3, [x29, 108] - add x0, x0, x23 + add x0, x0, x27 ldr w1, [x0, 4] add w1, w1, 1 str w1, [x0, 4] mov w1, w2 - ldr x0, [x19, 3440] - add x0, x0, x23 + ldr x0, [x19, 3424] + add x0, x0, x27 bl FlashReadPages - ldrh w0, [x26] - ldr w3, [x29, 108] + ldrh w0, [x21] + mov w3, 65535 cmp w0, w3 - ldr x0, [x19, 3440] - bne .L600 + ldr x0, [x19, 3424] + bne .L647 mov w1, -1 - str w1, [x0, x23] - ldr x0, [x19, 3440] - ldr w0, [x0, x23] + str w1, [x0, x27] + ldr x0, [x19, 3424] + ldr w0, [x0, x27] cmp w0, w1 - bne .L601 -.L602: - mov w1, 1 - b .L673 -.L600: - ldr w0, [x0, x23] - cmn w0, #1 - bne .L601 - sub w28, w28, #1 - ands w28, w28, 65535 - bne .L603 - b .L602 -.L601: - ldr w1, [x19, 2668] - ldr w0, [x26, 4] + beq .L649 +.L648: + ldr w1, [x19, 2660] + ldr w0, [x21, 4] cmn w1, #1 - beq .L604 + beq .L697 cmp w1, w0 - bhi .L605 -.L604: + bhi .L651 +.L697: cmn w0, #1 - beq .L605 + beq .L651 add w1, w0, 1 - str w1, [x19, 2668] -.L605: - ldrh w1, [x26] + str w1, [x19, 2660] +.L651: + ldrh w1, [x21] + mov w2, 61634 + cmp w1, w2 + beq .L652 + bhi .L653 + mov w2, 61574 + cmp w1, w2 + beq .L654 mov w2, 61604 cmp w1, w2 - beq .L607 - bhi .L608 - mov w0, 61574 - cmp w1, w0 - beq .L609 -.L606: - add x23, x23, 32 - cmp x20, x23 - bne .L633 - b .L634 -.L608: - mov w0, 61634 - cmp w1, w0 - beq .L610 + beq .L655 +.L656: + add x25, x25, 1 + cmp w22, w25, uxth + bhi .L679 + b .L680 +.L647: + ldr w0, [x0, x27] + cmn w0, #1 + bne .L648 + sub w28, w28, #1 + ands w28, w28, 65535 + bne .L650 +.L649: + mov w1, 1 + b .L721 +.L653: mov w0, 65535 cmp w1, w0 - bne .L606 + bne .L656 mov w1, 0 -.L673: - mov w0, w22 +.L721: + mov w0, w20 bl FtlFreeSysBlkQueueIn - b .L606 -.L610: - ldrh w1, [x19, 3712] + b .L656 +.L652: + ldrh w1, [x19, 3696] ldr w0, [x19, 332] cmp w1, w0 - bls .L612 - adrp x0, .LC8 - mov w2, 1225 - mov x1, x25 - add x0, x0, :lo12:.LC8 + bls .L658 + mov x1, x24 + mov x0, x26 + mov w2, 1232 bl sftl_printk -.L612: - ldr w3, [x19, 332] - ldrh w1, [x19, 3712] - and w2, w3, 65535 - ldr x4, [x19, 3624] - sub w0, w2, #1 - sub w2, w2, w1 - sub w2, w2, #1 - sxth x0, w0 - sxth w2, w2 -.L613: - cmp w0, w2 - bgt .L619 - tbz w0, #31, .L653 - b .L606 -.L619: - sxtw x5, w0 - ldr w8, [x26, 4] - lsl x6, x5, 2 - ldr w7, [x4, x6] - cmp w8, w7 - bls .L614 - ldr w2, [x4] - cbnz w2, .L615 - cmp w3, w1 - beq .L615 - add w1, w1, 1 - strh w1, [x19, 3712] -.L615: - mov w1, 0 -.L616: - cmp w1, w0 - bne .L617 - ldr x1, [x19, 3624] - ldr w2, [x26, 4] - str w2, [x1, x6] - ldr x1, [x19, 3576] - strh w22, [x1, x5, lsl 1] - tbnz w0, #31, .L606 - ldrh w1, [x19, 3712] - ldr w2, [x19, 332] - sub w2, w2, w1 - sub w2, w2, #1 - cmp w0, w2, sxth - bgt .L606 -.L653: - add w1, w1, 1 - strh w1, [x19, 3712] - ldr x1, [x19, 3624] - ldr w2, [x26, 4] - str w2, [x1, x0, lsl 2] - ldr x1, [x19, 3576] -.L671: - strh w22, [x1, x0, lsl 1] - b .L606 -.L617: - ldr x4, [x19, 3624] - sxtw x2, w1 - lsl x3, x2, 2 - lsl x2, x2, 1 - add x7, x4, x3 - add w1, w1, 1 - sxth w1, w1 - ldr w7, [x7, 4] - str w7, [x4, x3] - ldr x3, [x19, 3576] - add x4, x3, x2 - ldrh w4, [x4, 2] - strh w4, [x3, x2] - b .L616 -.L614: +.L658: + ldr w4, [x19, 332] + ldrh w3, [x19, 3696] + and w0, w4, 65535 + sub w1, w0, #1 + sub w0, w0, w3 + ldr x5, [x19, 3608] sub w0, w0, #1 - sxth x0, w0 - b .L613 -.L609: + sxth w2, w1 + sxth x1, w1 + sxth w0, w0 + add x7, x5, 4 +.L659: + cmp w0, w2 + bge .L664 + sub x6, x1, #1 + ldr w10, [x21, 4] + lsl x8, x1, 2 + ldr w9, [x7, x6, lsl 2] + cmp w10, w9 + bls .L660 + ldr w0, [x5] + cbnz w0, .L661 + cmp w4, w3 + beq .L661 + add w3, w3, 1 + strh w3, [x19, 3696] +.L661: + mov w0, 0 +.L662: + ldr x3, [x19, 3608] + cmp w0, w2 + bne .L663 + ldr w0, [x21, 4] + str w0, [x3, x8] + ldr x0, [x19, 3560] + strh w20, [x0, x1, lsl 1] +.L664: + tbnz w2, #31, .L656 + ldrh w1, [x19, 3696] + ldr w0, [x19, 332] + sub w0, w0, w1 + sub w0, w0, #1 + cmp w2, w0, sxth + bgt .L656 + ldr x0, [x19, 3608] + add w1, w1, 1 + strh w1, [x19, 3696] + ldr w1, [x21, 4] + str w1, [x0, w2, sxtw 2] + ldr x0, [x19, 3560] +.L720: + strh w20, [x0, w2, sxtw 1] + b .L656 +.L663: + add w4, w0, 1 + ldr w5, [x3, w4, sxtw 2] + str w5, [x3, w0, sxtw 2] + ldr x3, [x19, 3560] + ldrh w5, [x3, w4, sxtw 1] + strh w5, [x3, w0, sxtw 1] + sxth w0, w4 + b .L662 +.L660: + sub w2, w2, #1 + mov x1, x6 + sxth w2, w2 + b .L659 +.L654: ldrh w1, [x19, 348] ldrh w0, [x19, 324] cmp w1, w0 - bls .L622 - adrp x0, .LC8 - mov w2, 1266 - mov x1, x25 - add x0, x0, :lo12:.LC8 + bls .L668 + mov x1, x24 + mov x0, x26 + mov w2, 1273 bl sftl_printk -.L622: +.L668: ldrh w3, [x19, 324] - ldrh w1, [x19, 348] - sub w2, w3, #1 - ldr x4, [x19, 3600] - sxth x0, w2 - sub w2, w2, w1 -.L623: - cmp w0, w2 - ble .L628 - sxtw x5, w0 - ldr w8, [x26, 4] - lsl x6, x5, 2 - ldr w7, [x4, x6] + ldrh w0, [x19, 348] + sub w1, w3, #1 + ldr x4, [x19, 3584] + sxth w2, w1 + sub w1, w1, w0 +.L669: + cmp w2, w1 + ble .L674 + sbfiz x5, x2, 2, 32 + ldr w8, [x21, 4] + sxtw x6, w2 + ldr w7, [x4, x5] cmp w8, w7 - bls .L624 - ldr w2, [x4] - cbnz w2, .L625 - cmp w3, w1 - beq .L625 + bls .L670 + ldr w1, [x4] + cbnz w1, .L671 + cmp w3, w0 + beq .L671 + add w0, w0, 1 + strh w0, [x19, 348] +.L671: + mov w0, 0 +.L672: + ldr x1, [x19, 3584] + cmp w0, w2 + bne .L673 + ldr w0, [x21, 4] + str w0, [x1, x5] + ldr x0, [x19, 352] + strh w20, [x0, x6, lsl 1] +.L674: + tbnz w2, #31, .L656 + ldrh w0, [x19, 324] + ldrh w1, [x19, 348] + sub w0, w0, #1 + sub w0, w0, w1 + cmp w2, w0, sxth + bgt .L656 + ldr x0, [x19, 3584] add w1, w1, 1 strh w1, [x19, 348] -.L625: - mov w1, 0 -.L626: - cmp w1, w0 - bne .L627 - ldr x1, [x19, 3600] - ldr w2, [x26, 4] - str w2, [x1, x6] + ldr w1, [x21, 4] + str w1, [x0, w2, sxtw 2] + ldr x0, [x19, 352] + b .L720 +.L673: + add w3, w0, 1 + ldr w4, [x1, w3, sxtw 2] + str w4, [x1, w0, sxtw 2] ldr x1, [x19, 352] - strh w22, [x1, x5, lsl 1] -.L628: - tbnz w0, #31, .L606 - ldrh w1, [x19, 324] - ldrh w2, [x19, 348] - sub w1, w1, #1 - sub w1, w1, w2 - cmp w0, w1, sxth - bgt .L606 - ldr x1, [x19, 3600] - add w2, w2, 1 - strh w2, [x19, 348] - ldr w2, [x26, 4] - str w2, [x1, x0, lsl 2] - ldr x1, [x19, 352] - b .L671 -.L627: - ldr x4, [x19, 3600] - sxtw x2, w1 - lsl x3, x2, 2 - lsl x2, x2, 1 - add x7, x4, x3 - add w1, w1, 1 - sxth w1, w1 - ldr w7, [x7, 4] - str w7, [x4, x3] - ldr x3, [x19, 352] - add x4, x3, x2 - ldrh w4, [x4, 2] - strh w4, [x3, x2] - b .L626 -.L624: - sub w0, w0, #1 - sxth x0, w0 - b .L623 -.L607: - ldrh w2, [x27] - mov w1, 65535 - cmp w2, w1 - bne .L630 - strh w22, [x27] -.L672: - str w0, [x27, 8] - b .L606 -.L630: - ldrh w0, [x27, 4] - cmp w0, w1 - beq .L631 + ldrh w4, [x1, w3, sxtw 1] + strh w4, [x1, w0, sxtw 1] + sxth w0, w3 + b .L672 +.L670: + sub w2, w2, #1 + sxth w2, w2 + b .L669 +.L655: + ldrh w3, [x19, 2696] + add x1, x19, 2560 + mov w2, 65535 + cmp w3, w2 + bne .L676 + strh w20, [x1, 136] + str w0, [x1, 144] + b .L656 +.L676: + ldrh w0, [x1, 140] + cmp w0, w2 + beq .L677 mov w1, 1 bl FtlFreeSysBlkQueueIn -.L631: - ldr w0, [x26, 4] - ldr w1, [x27, 8] - cmp w1, w0 - bcs .L632 - ldrh w0, [x27] - strh w0, [x27, 4] - strh w22, [x27] - ldr w0, [x26, 4] - b .L672 -.L632: - strh w22, [x27, 4] - b .L606 -.L635: - ldr x1, [x19, 3576] +.L677: + ldr w1, [x21, 4] + add x0, x19, 2560 + ldr w2, [x0, 144] + cmp w2, w1 + bcs .L678 + ldrh w1, [x0, 136] + strh w1, [x0, 140] + strh w20, [x0, 136] + ldr w1, [x21, 4] + str w1, [x0, 144] + b .L656 +.L678: + strh w20, [x0, 140] + b .L656 +.L681: + ldr x2, [x19, 3560] + ldrh w0, [x2] + cbz w0, .L683 +.L686: + ldr x1, [x19, 352] ldrh w0, [x1] - cbz w0, .L637 -.L640: - add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0, 352] - ldrh w2, [x1] - cbz w2, .L638 -.L639: - add x21, x21, :lo12:.LANCHOR0 - ldrh w1, [x21, 3712] - ldr w0, [x21, 332] + cbz w0, .L684 +.L685: + ldrh w1, [x19, 3696] + ldr w0, [x19, 332] cmp w1, w0 - bls .L669 + bls .L716 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1391 - add x1, x1, 288 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 231 + add x0, x0, :lo12:.LC9 + mov w2, 1398 bl sftl_printk -.L669: - ldp x19, x20, [sp, 16] +.L716: 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 x29, x30, [sp], 96 + hint 29 // autiasp ret -.L637: - ldrh w0, [x19, 3712] - cbz w0, .L640 - ldr w2, [x19, 332] +.L683: + ldrh w0, [x19, 3696] + cbz w0, .L686 + ldr w3, [x19, 332] mov w0, 0 -.L641: - cmp w0, w2 - bcs .L640 - ldrh w3, [x1, w0, sxtw 1] - cbz w3, .L642 - mov w1, w0 - add x2, x21, :lo12:.LANCHOR0 -.L643: - ldr w3, [x2, 332] - cmp w1, w3 - bcs .L640 - ldr x5, [x2, 3576] - sxtw x6, w1 - lsl x4, x6, 1 - sub w3, w1, w0 - sxtw x3, w3 - add w1, w1, 1 +.L687: + cmp w0, w3 + bcs .L686 + ldrh w4, [x2, w0, sxtw 1] + add w1, w0, 1 sxth w1, w1 - ldrh w7, [x5, x4] - strh w7, [x5, x3, lsl 1] - ldr x5, [x2, 3624] - ldr w6, [x5, x6, lsl 2] - str w6, [x5, x3, lsl 2] - ldr x3, [x2, 3576] - strh wzr, [x3, x4] - b .L643 -.L642: - add w0, w0, 1 - sxth w0, w0 - b .L641 -.L638: - ldrh w2, [x0, 348] - cbz w2, .L639 - ldrh w2, [x0, 324] + cbz w4, .L699 + mov w1, w0 +.L688: + ldr x2, [x19, 3560] + sub w3, w1, w0 + ldrh w4, [x2, w1, sxtw 1] + strh w4, [x2, w3, sxtw 1] + ldr x2, [x19, 3608] + ldr w4, [x2, w1, sxtw 2] + str w4, [x2, w3, sxtw 2] + ldr x2, [x19, 3560] + strh wzr, [x2, w1, sxtw 1] + add w2, w1, 1 + ldr w3, [x19, 332] + sxth w1, w2 + cmp w3, w2, sxth + bhi .L688 + b .L686 +.L699: + mov w0, w1 + b .L687 +.L684: + ldrh w0, [x19, 348] + cbz w0, .L685 + ldrh w2, [x19, 324] mov w0, 0 -.L648: - mov w6, w0 +.L692: + mov w3, w0 cmp w0, w2 - bge .L639 - ldrh w3, [x1, w0, sxtw 1] - cbz w3, .L649 - add x1, x21, :lo12:.LANCHOR0 -.L650: - ldrh w2, [x1, 324] - cmp w0, w2 - bge .L639 - ldr x4, [x1, 352] - sxtw x5, w0 - lsl x3, x5, 1 - sub w2, w0, w6 - sxtw x2, w2 + bge .L685 + ldrh w4, [x1, w0, sxtw 1] + cbz w4, .L717 +.L693: + ldrh w1, [x19, 324] + cmp w0, w1 + bge .L685 + ldr x1, [x19, 352] + sub w2, w0, w3 + ldrh w4, [x1, w0, sxtw 1] + strh w4, [x1, w2, sxtw 1] + ldr x1, [x19, 3584] + ldr w4, [x1, w0, sxtw 2] + str w4, [x1, w2, sxtw 2] + ldr x1, [x19, 352] + strh wzr, [x1, w0, sxtw 1] add w0, w0, 1 sxth w0, w0 - ldrh w7, [x4, x3] - strh w7, [x4, x2, lsl 1] - ldr x4, [x1, 3600] - ldr w5, [x4, x5, lsl 2] - str w5, [x4, x2, lsl 2] - ldr x2, [x1, 352] - strh wzr, [x2, x3] - b .L650 -.L649: + b .L693 +.L717: add w0, w0, 1 sxth w0, w0 - b .L648 + b .L692 .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadBbt .type FtlLoadBbt, %function FtlLoadBbt: - stp x29, x30, [sp, -64]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE75 + .text +.LPFE75: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -80]! + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - stp x23, x24, [sp, 48] - add x23, x19, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - add x21, x23, 3728 - mov w24, 61649 - ldr x0, [x23, 3464] - ldr x22, [x23, 3528] - stp x0, x22, [x21, 8] + add x22, x19, 3712 + ldr x0, [x19, 3448] + stp x23, x24, [sp, 48] + mov w23, 61649 + str x25, [sp, 64] + ldr x21, [x19, 3512] + stp x0, x21, [x22, 8] bl FtlBbtMemInit - ldrh w20, [x23, 302] + ldrh w20, [x19, 302] sub w20, w20, #1 and w20, w20, 65535 -.L675: - ldrh w0, [x23, 302] +.L723: + ldrh w0, [x19, 302] sub w0, w0, #16 cmp w20, w0 - ble .L678 + ble .L728 lsl w0, w20, 10 mov w2, 1 - str w0, [x21, 4] mov w1, w2 - mov x0, x21 + str w0, [x22, 4] + mov x0, x22 bl FlashReadPages - ldr w0, [x21] + ldr w0, [x22] cmn w0, #1 - bne .L676 - ldr w0, [x21, 4] - mov w2, 1 - mov w1, w2 - add w0, w0, 1 - str w0, [x21, 4] - mov x0, x21 - bl FlashReadPages -.L676: - ldr w0, [x21] - cmn w0, #1 - beq .L677 - ldrh w0, [x22] - cmp w0, w24 - bne .L677 - ldr w1, [x22, 4] - str w1, [x23, 368] - strh w20, [x23, 360] - ldrh w1, [x22, 8] - strh w1, [x23, 364] -.L678: - add x21, x19, :lo12:.LANCHOR0 + beq .L724 +.L727: + ldrh w0, [x21] + cmp w0, w23 + bne .L726 + ldr w1, [x21, 4] + str w1, [x19, 368] + strh w20, [x19, 360] + ldrh w1, [x21, 8] + strh w1, [x19, 364] +.L728: + ldrh w1, [x19, 360] mov w0, 65535 - ldrh w1, [x21, 360] cmp w1, w0 - beq .L692 - ldrh w1, [x21, 364] + beq .L742 + ldrh w1, [x19, 364] cmp w1, w0 - beq .L682 - add x0, x21, 3728 + beq .L732 + add x0, x19, 3712 lsl w1, w1, 10 mov w2, 1 str w1, [x0, 4] mov w1, w2 bl FlashReadPages - ldr w0, [x21, 3728] + ldr w0, [x19, 3712] cmn w0, #1 - beq .L682 - ldrh w1, [x22] + beq .L732 + ldrh w1, [x21] mov w0, 61649 cmp w1, w0 - bne .L682 - ldr w1, [x21, 368] - ldr w0, [x22, 4] + bne .L732 + ldr w1, [x19, 368] + ldr w0, [x21, 4] cmp w0, w1 - bls .L682 - str w0, [x21, 368] - ldrh w1, [x21, 364] - ldrh w0, [x22, 8] - strh w1, [x21, 360] - strh w0, [x21, 364] -.L682: - add x20, x19, :lo12:.LANCHOR0 + bls .L732 + str w0, [x19, 368] + ldrh w1, [x19, 364] + ldrh w0, [x21, 8] + strh w1, [x19, 360] + strh w0, [x19, 364] +.L732: + ldrh w0, [x19, 360] mov w1, 1 - add x23, x20, 3728 - mov w24, 61649 - ldrh w0, [x20, 360] + add x23, x19, 3712 + mov w20, 0 + mov w25, 61649 bl FtlGetLastWrittenPage - sxth w21, w0 - add w0, w0, 1 - strh w0, [x20, 362] -.L684: - tbz w21, #31, .L687 + sxth w24, w0 + mov w22, w0 + add w0, w24, 1 + strh w0, [x19, 362] +.L734: + sub w0, w22, w20 + tbz x0, 15, .L737 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 245 + add x0, x0, :lo12:.LC9 mov w2, 251 - add x1, x1, 304 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L686: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x22, 10] - mov w2, 65535 - strh w0, [x1, 366] - ldrh w0, [x22, 12] +.L736: + ldrh w0, [x21, 10] + mov w1, 65535 + strh w0, [x19, 366] + ldrh w0, [x21, 12] + cmp w0, w1 + beq .L739 + ldr w2, [x19, 232] cmp w0, w2 - beq .L689 - ldr w2, [x1, 232] - cmp w0, w2 - beq .L689 - ldrh w1, [x1, 246] + beq .L739 + ldrh w1, [x19, 246] lsr w1, w1, 2 cmp w2, w1 - bcs .L689 + bcs .L739 cmp w0, w1 - bcs .L689 + bcs .L739 bl FtlSysBlkNumInit -.L689: - add x19, x19, :lo12:.LANCHOR0 - mov w20, 0 - add x21, x19, 392 -.L690: +.L739: + add x21, x19, 360 + mov x20, 0 +.L740: ldrh w0, [x19, 258] - cmp w20, w0 - bcc .L691 + cmp w0, w20 + bhi .L741 mov w0, 0 -.L674: +.L722: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 64 + ldr x25, [sp, 64] + ldp x29, x30, [sp], 80 + hint 29 // autiasp ret -.L677: - sub w20, w20, #1 - and w20, w20, 65535 - b .L675 -.L687: - ldrh w0, [x20, 360] +.L724: + ldr w0, [x22, 4] mov w2, 1 mov w1, w2 - orr w0, w21, w0, lsl 10 + add w0, w0, 1 + str w0, [x22, 4] + mov x0, x22 + bl FlashReadPages + ldr w0, [x22] + cmn w0, #1 + bne .L727 +.L726: + sub w20, w20, #1 + and w20, w20, 65535 + b .L723 +.L737: + ldrh w0, [x19, 360] + sub w1, w24, w20 + mov w2, 1 + orr w0, w1, w0, lsl 10 str w0, [x23, 4] - ldr x0, [x20, 3464] + ldr x0, [x19, 3448] + mov w1, w2 str x0, [x23, 8] mov x0, x23 bl FlashReadPages ldr w0, [x23] cmn w0, #1 - beq .L685 - ldrh w0, [x22] - cmp w0, w24 - beq .L686 -.L685: - sub w21, w21, #1 - sxth w21, w21 - b .L684 -.L691: - ldrh w2, [x19, 3640] - ldr x0, [x19, 3736] - mul w1, w2, w20 - lsl w2, w2, 2 + beq .L735 + ldrh w0, [x21] + cmp w0, w25 + beq .L736 +.L735: add w20, w20, 1 - add x1, x0, x1, lsl 2 - ldr x0, [x21], 8 + b .L734 +.L741: + ldrh w2, [x19, 3624] + add x0, x21, x20, lsl 3 + ldr x1, [x19, 3720] + ldr x0, [x0, 32] + mul w3, w2, w20 + lsl w2, w2, 2 + add x20, x20, 1 + add x1, x1, x3, lsl 2 bl ftl_memcpy - b .L690 -.L692: + b .L740 +.L742: mov w0, -1 - b .L674 + b .L722 .size FtlLoadBbt, .-FtlLoadBbt + .section .rodata.str1.1 +.LC96: + .string "prog read error: = %x\n" +.LC97: + .string "prog read REFRESH: = %x\n" +.LC98: + .string "prog read s error: = %x %x %x\n" +.LC99: + .string "prog read d error: = %x %x %x\n" + .text .align 2 .global FlashProgPages .type FlashProgPages, %function FlashProgPages: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE76 + .text +.LPFE76: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -160]! - ubfiz x1, x1, 5, 32 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - mov x19, x0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x22, __stack_chk_guard + mov x19, x0 + mov w0, 32 stp x23, x24, [sp, 48] - adrp x21, .LANCHOR0 + adrp x23, .LANCHOR1 + umaddl x22, w1, w0, x19 stp x25, x26, [sp, 64] - adrp x24, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR1 + mov w25, w2 stp x27, x28, [sp, 80] - add x24, x24, :lo12:.LANCHOR1 - str w2, [x29, 108] - add x2, x22, :lo12:__stack_chk_guard - ldr x3, [x2] - str x3, [x29, 152] - mov x3,0 - add x2, x21, :lo12:.LANCHOR0 - adrp x25, .LC8 - add x23, x0, x1 - mov x20, x0 - add x24, x24, 320 - ldrh w26, [x2, 12] - add x25, x25, :lo12:.LC8 - lsl w28, w26, 3 -.L705: - cmp x20, x23 - bne .L719 - adrp x20, .LC95 - adrp x24, .LC96 - add x20, x20, :lo12:.LC95 - add x24, x24, :lo12:.LC96 -.L720: - cmp x19, x23 - beq .L713 - add x0, x21, :lo12:.LANCHOR0 - ldr w2, [x29, 108] - ldr x1, [x0, 3504] - str wzr, [x1] - ldr x1, [x0, 3520] - str wzr, [x1] - ldr w1, [x19, 4] - str w1, [x29, 124] - ldr x1, [x0, 3504] - ldr x0, [x0, 3520] - stp x1, x0, [x29, 128] + mrs x2, sp_el0 + adrp x26, .LC9 + ldrh w27, [x20, 12] + ldr x3, [x2, 1376] + str x3, [sp, 152] + mov x3, 0 + mov x21, x19 + add x23, x23, 256 + add x26, x26, :lo12:.LC9 + lsl w28, w27, 3 +.L755: + cmp x21, x22 + bne .L769 + adrp x21, .LC96 + adrp x23, .LC97 + add x21, x21, :lo12:.LC96 + add x23, x23, :lo12:.LC97 +.L770: + cmp x19, x22 + beq .L763 + ldr x0, [x20, 3488] + mov w2, w25 mov w1, 1 - add x0, x29, 120 + str wzr, [x0] + ldr x0, [x20, 3504] + str wzr, [x0] + ldr w0, [x19, 4] + str w0, [sp, 124] + ldr x0, [x20, 3488] + str x0, [sp, 128] + ldr x0, [x20, 3504] + str x0, [sp, 136] + add x0, sp, 120 bl FlashReadPages - ldr w25, [x29, 120] - cmn w25, #1 - bne .L721 + ldr w24, [sp, 120] + cmn w24, #1 + bne .L771 ldr w1, [x19, 4] - mov x0, x20 + mov x0, x21 bl sftl_printk - str w25, [x19] -.L721: - ldr w25, [x29, 120] - cmp w25, 256 - bne .L722 + str w24, [x19] +.L771: + ldr w24, [sp, 120] + cmp w24, 256 + bne .L772 ldr w1, [x19, 4] - mov x0, x24 + mov x0, x23 bl sftl_printk - str w25, [x19] -.L722: + str w24, [x19] +.L772: ldr x0, [x19, 16] - cbz x0, .L723 + cbz x0, .L773 ldr w2, [x0] - add x0, x21, :lo12:.LANCHOR0 - ldr x0, [x0, 3520] + ldr x0, [x20, 3504] ldr w3, [x0] cmp w2, w3 - beq .L723 - ldr w1, [x19, 4] - adrp x0, .LC97 - add x0, x0, :lo12:.LC97 - bl sftl_printk - mov w0, -1 - str w0, [x19] -.L723: - ldr x0, [x19, 8] - cbz x0, .L724 - ldr w2, [x0] - add x0, x21, :lo12:.LANCHOR0 - ldr x0, [x0, 3504] - ldr w3, [x0] - cmp w2, w3 - beq .L724 + beq .L773 ldr w1, [x19, 4] adrp x0, .LC98 add x0, x0, :lo12:.LC98 bl sftl_printk mov w0, -1 str w0, [x19] -.L724: - add x19, x19, 32 - b .L720 -.L719: - ldr x0, [x20, 8] - cbz x0, .L706 - ldr x0, [x20, 16] - cbnz x0, .L707 -.L706: - mov w2, 148 - mov x1, x24 - mov x0, x25 +.L773: + ldr x0, [x19, 8] + cbz x0, .L774 + ldr w2, [x0] + ldr x0, [x20, 3488] + ldr w3, [x0] + cmp w2, w3 + beq .L774 + ldr w1, [x19, 4] + adrp x0, .LC99 + add x0, x0, :lo12:.LC99 bl sftl_printk -.L707: - ldr w0, [x20, 4] - add x2, x29, 112 - add x1, x29, 116 - bl l2p_addr_tran.isra.0 - ldr w0, [x29, 112] - cmp w0, 3 - bls .L708 -.L742: mov w0, -1 - str w0, [x20] - b .L709 -.L708: - cbnz w0, .L710 - ldr w0, [x29, 116] + str w0, [x19] +.L774: + add x19, x19, 32 + b .L770 +.L769: + ldr x0, [x21, 8] + cbz x0, .L756 + ldr x0, [x21, 16] + cbnz x0, .L757 +.L756: + mov x1, x23 + mov x0, x26 + mov w2, 148 + bl sftl_printk +.L757: + ldr w0, [x21, 4] + add x2, sp, 112 + add x1, sp, 116 + bl l2p_addr_tran.isra.0 + ldr w0, [sp, 112] + cmp w0, 3 + bls .L758 + mov w0, -1 + str w0, [x21] +.L759: + add x21, x21, 32 + b .L755 +.L758: + cbnz w0, .L760 + ldr w0, [sp, 116] cmp w28, w0 - bls .L710 + bls .L760 adrp x20, .LANCHOR1 add x20, x20, :lo12:.LANCHOR1 - adrp x21, .LC86 - add x20, x20, 320 - add x21, x21, :lo12:.LC86 - b .L740 -.L712: + adrp x21, .LC87 + add x20, x20, 256 + add x21, x21, :lo12:.LC87 +.L761: + cmp x19, x22 + bne .L762 + bl dump_stack +.L763: + mrs x0, sp_el0 + ldr x1, [sp, 152] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L776 + bl __stack_chk_fail +.L762: ldr w2, [x19, 4] mov w0, -1 str w0, [x19] @@ -5040,198 +6102,189 @@ FlashProgPages: ldr x1, [x19, -24] mov w3, 16 mov w2, 4 - adrp x0, .LC87 - add x0, x0, :lo12:.LC87 + adrp x0, .LC88 + add x0, x0, :lo12:.LC88 bl rknand_print_hex ldr x1, [x19, -16] mov w3, 4 - adrp x0, .LC88 + adrp x0, .LC89 mov w2, w3 - add x0, x0, :lo12:.LC88 + add x0, x0, :lo12:.LC89 bl rknand_print_hex -.L740: - cmp x19, x23 - bne .L712 - bl dump_stack -.L713: - add x22, x22, :lo12:__stack_chk_guard - mov w0, 0 - ldr x2, [x29, 152] - ldr x1, [x22] - eor x1, x2, x1 - cbz x1, .L726 - bl __stack_chk_fail -.L710: - ldr x1, [x20, 8] + b .L761 +.L760: + ldr x1, [x21, 8] tst x1, 63 - beq .L727 - add x0, x21, :lo12:.LANCHOR0 - ldr x27, [x0, 3504] - cmp x1, x27 - beq .L714 - ldrh w2, [x0, 262] - mov x0, x27 + beq .L777 + ldr x24, [x20, 3488] + cmp x24, x1 + beq .L764 + ldrh w2, [x20, 262] + mov x0, x24 lsl w2, w2, 9 bl ftl_memcpy -.L714: - add x0, x21, :lo12:.LANCHOR0 - ldr w1, [x29, 116] - ldr x3, [x20, 16] - mov x2, x27 - ldr x5, [x0, 3384] - ldrb w0, [x29, 112] - blr x5 - cbnz w0, .L715 - str wzr, [x20] -.L716: - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x0, 14] - cmp w1, 4 - bne .L709 - ldr x5, [x0, 3384] - add x2, x27, 2048 - ldrb w0, [x29, 112] - ldr w1, [x29, 116] - ldr x3, [x20, 16] - add w1, w26, w1 +.L764: + ldrb w0, [sp, 112] + add x5, x20, 3352 + ldr w1, [sp, 116] + mov x2, x24 + ldr x3, [x21, 16] + str x5, [sp, 104] + ldr x4, [x20, 3368] + blr x4 + cmp w0, 0 + mov w4, -1 + csel w0, wzr, w4, eq + str w0, [x21] + ldr x5, [sp, 104] + ldrh w0, [x20, 14] + cmp w0, 4 + bne .L759 + ldrb w0, [sp, 112] + add x2, x24, 2048 + ldr x5, [x5, 16] + ldr x3, [x21, 16] + ldr w1, [sp, 116] add x3, x3, 8 + add w1, w27, w1 blr x5 - cbnz w0, .L742 -.L709: - add x20, x20, 32 - b .L705 -.L727: - mov x27, x1 - b .L714 -.L715: - mov w0, -1 - str w0, [x20] - b .L716 -.L726: + cbz w0, .L759 + mov w4, -1 + str w4, [x21] + b .L759 +.L777: + mov x24, x1 + b .L764 +.L776: + 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 + hint 29 // autiasp ret .size FlashProgPages, .-FlashProgPages .align 2 .global FtlLowFormatEraseBlock .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE77 + .text +.LPFE77: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -112]! - mov w10, 0 - mov w9, 4 - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - add x5, x21, :lo12:.LANCHOR0 - stp x19, x20, [sp, 16] - stp x23, x24, [sp, 48] - and w22, w1, 255 - stp x25, x26, [sp, 64] - add x8, x5, 264 + adrp x4, .LANCHOR0 + mov x29, sp stp x27, x28, [sp, 80] - and w23, w0, 65535 + add x28, x4, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + and w21, w1, 255 + and w22, w0, 65535 + stp x23, x24, [sp, 48] + add x24, x28, 264 + mov w23, 0 + stp x19, x20, [sp, 16] mov w20, 0 mov w19, 0 - str w23, [x5, 3436] -.L744: - ldrh w0, [x5, 236] - cmp w0, w10 - bhi .L748 - cbz w20, .L743 - ldr x0, [x5, 3416] + stp x25, x26, [sp, 64] + mov w25, 4 + str w22, [x28, 3420] +.L793: + ldrh w0, [x28, 236] + cmp w0, w23 + bhi .L797 + cbz w20, .L792 + ldr x0, [x28, 3400] mov w2, w20 mov w1, 0 - ubfiz x20, x20, 5, 16 - mov x24, 0 - add x25, x21, :lo12:.LANCHOR0 + mov x23, 0 bl FlashEraseBlocks -.L752: - ldr x0, [x25, 3416] - add x1, x0, x24 - ldr w0, [x0, x24] +.L801: + ldr x1, [x28, 3400] + lsl x0, x23, 5 + ldr w0, [x1, x0] + add x2, x1, x23, lsl 5 cmn w0, #1 - bne .L751 - ldr w0, [x1, 4] + bne .L800 + ldr w0, [x2, 4] add w19, w19, 1 and w19, w19, 65535 - lsr w0, w0, 10 + ubfx x0, x0, 10, 16 bl FtlBbmMapBadBlock -.L751: - add x24, x24, 32 - cmp x24, x20 - bne .L752 - cbz w22, .L765 - add x0, x21, :lo12:.LANCHOR0 - mov w25, 1 - ldrh w26, [x0, 308] -.L753: - add x28, x21, :lo12:.LANCHOR0 - mov w24, 0 +.L800: + add x23, x23, 1 + cmp w20, w23, uxth + bhi .L801 + cbz w21, .L814 + ldrh w26, [x28, 308] + mov w24, 1 +.L802: add x0, x28, 264 - str x0, [x29, 104] -.L761: - mov w5, 0 + mov w23, 0 + str x0, [sp, 96] +.L810: + mov w27, 0 mov w20, 0 -.L754: +.L803: ldrh w0, [x28, 236] - cmp w0, w5 - bhi .L757 - cbz w20, .L743 - ldr x0, [x28, 3416] + cmp w0, w27 + bhi .L806 + cbz w20, .L792 + ldr x0, [x28, 3400] + mov w2, w24 mov w1, w20 mov w3, 1 - mov w2, w25 - mov x27, 0 + mov x25, 0 bl FlashProgPages - ubfiz x1, x20, 5, 16 -.L760: - ldr x0, [x28, 3416] - add x3, x0, x27 - ldr w0, [x0, x27] - cbz w0, .L759 - ldr w0, [x3, 4] +.L809: + ldr x1, [x28, 3400] + lsl x0, x25, 5 + ldr w0, [x1, x0] + add x2, x1, x25, lsl 5 + cbz w0, .L808 + ldr w0, [x2, 4] add w19, w19, 1 - str x1, [x29, 96] and w19, w19, 65535 - lsr w0, w0, 10 + ubfx x0, x0, 10, 16 bl FtlBbmMapBadBlock - ldr x1, [x29, 96] -.L759: - add x27, x27, 32 - cmp x1, x27 - bne .L760 - add w24, w24, 1 - cmp w26, w24, uxth - bhi .L761 - add x26, x21, :lo12:.LANCHOR0 - mov x24, 0 -.L763: - cbz w22, .L762 - ldr x0, [x26, 3416] - add x1, x0, x24 - ldr w0, [x0, x24] - cbnz w0, .L762 - ldr w0, [x1, 4] +.L808: + add x25, x25, 1 + cmp w20, w25, uxth + bhi .L809 + add w23, w23, 1 + cmp w26, w23, uxth + bhi .L810 + mov x23, 0 +.L812: + cbz w21, .L811 + ldr x1, [x28, 3400] + lsl x0, x23, 5 + ldr w0, [x1, x0] + add x2, x1, x23, lsl 5 + cbnz w0, .L811 + ldr w0, [x2, 4] mov w1, 1 - lsr w0, w0, 10 + ubfx x0, x0, 10, 16 bl FtlFreeSysBlkQueueIn -.L762: - add x24, x24, 32 - cmp x24, x27 - bne .L763 - cmp w23, 63 - ccmp w22, 0, 0, hi - beq .L743 - add x21, x21, :lo12:.LANCHOR0 +.L811: + add x23, x23, 1 + cmp w20, w23, uxth + bhi .L812 + cmp w22, 63 + ccmp w21, 0, 0, hi + beq .L792 + ldr x0, [x28, 3400] mov w2, w20 - mov w1, w25 - ldr x0, [x21, 3416] + mov w1, w24 bl FlashEraseBlocks -.L743: +.L792: mov w0, w19 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -5239,731 +6292,763 @@ FtlLowFormatEraseBlock: ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 + hint 29 // autiasp ret -.L748: - ldr x1, [x5, 3416] - ubfiz x0, x10, 5, 16 +.L797: + ldr x1, [x28, 3400] + ubfiz x0, x23, 5, 16 str wzr, [x1, x0] - mov w1, w23 - ldrb w0, [x8, w10, sxtw] + mov w1, w22 + ldrb w0, [x24, w23, sxtw] bl V2P_block - and w6, w0, 65535 - mov w7, w6 - cbz w22, .L745 + and w27, w0, 65535 + mov w26, w27 + cbz w21, .L794 bl IsBlkInVendorPart - cbnz w0, .L746 -.L745: - mov w0, w7 + cbnz w0, .L795 +.L794: + mov w0, w26 bl FtlBbmIsBadBlock - cbnz w0, .L747 - ldr x0, [x5, 3416] + cbnz w0, .L796 + ldr x0, [x28, 3400] ubfiz x2, x20, 5, 16 - lsl w6, w6, 10 + lsl w27, w27, 10 add x0, x0, x2 - str w6, [x0, 4] - ldr x1, [x5, 3416] - ldr x0, [x5, 3496] + str w27, [x0, 4] + ldr x1, [x28, 3400] + ldr x0, [x28, 3480] add x1, x1, x2 - ldr x2, [x5, 3536] + ldr x2, [x28, 3520] str x0, [x1, 8] - ldrh w0, [x5, 316] + ldrh w0, [x28, 316] mul w0, w0, w20 add w20, w20, 1 and w20, w20, 65535 - sdiv w0, w0, w9 + sdiv w0, w0, w25 add x0, x2, x0, sxtw 2 str x0, [x1, 16] -.L746: - add w10, w10, 1 - and w10, w10, 65535 - b .L744 -.L747: +.L795: + add w23, w23, 1 + and w23, w23, 65535 + b .L793 +.L796: add w19, w19, 1 and w19, w19, 65535 - b .L746 -.L765: - mov w25, 0 + b .L795 +.L814: + mov w24, 0 mov w26, 2 - b .L753 -.L757: - ldr x1, [x28, 3416] - ubfiz x0, x5, 5, 16 + b .L802 +.L806: + ldr x1, [x28, 3400] + ubfiz x0, x27, 5, 16 str wzr, [x1, x0] - mov w1, w23 - ldr x0, [x29, 104] - ldrb w0, [x0, w5, sxtw] + mov w1, w22 + ldr x0, [sp, 96] + ldrb w0, [x0, w27, sxtw] bl V2P_block - and w6, w0, 65535 - mov w7, w6 - cbz w22, .L755 + and w25, w0, 65535 + mov w1, w25 + cbz w21, .L804 + str w25, [sp, 108] bl IsBlkInVendorPart - cbnz w0, .L756 -.L755: - mov w0, w7 + ldr w1, [sp, 108] + cbnz w0, .L805 +.L804: + mov w0, w1 bl FtlBbmIsBadBlock - cbnz w0, .L756 - ldr x0, [x28, 3416] - ubfiz x2, x20, 5, 16 - add w6, w24, w6, lsl 10 - add x0, x0, x2 - str w6, [x0, 4] - ldr x1, [x28, 3416] - ldr x0, [x28, 3488] - add x1, x1, x2 + cbnz w0, .L805 + ldr x0, [x28, 3400] + ubfiz x3, x20, 5, 16 + add w25, w23, w25, lsl 10 mov w2, 4 + add x0, x0, x3 + str w25, [x0, 4] + ldr x1, [x28, 3400] + ldr x0, [x28, 3472] + add x1, x1, x3 + ldr x3, [x28, 3480] str x0, [x1, 8] ldrh w0, [x28, 316] mul w0, w0, w20 add w20, w20, 1 and w20, w20, 65535 sdiv w0, w0, w2 - ldr x2, [x28, 3496] - add x0, x2, x0, sxtw 2 + add x0, x3, x0, sxtw 2 str x0, [x1, 16] -.L756: - add w5, w5, 1 - and w5, w5, 65535 - b .L754 +.L805: + add w2, w27, 1 + and w27, w2, 65535 + b .L803 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .align 2 .global FlashTestBlk .type FlashTestBlk, %function FlashTestBlk: - stp x29, x30, [sp, -160]! - adrp x1, __stack_chk_guard - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE78 + .text +.LPFE78: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -144]! + mov x29, sp stp x19, x20, [sp, 16] and w19, w0, 65535 - str x21, [sp, 32] - add x0, x1, :lo12:__stack_chk_guard + mrs x0, sp_el0 + ldr x1, [x0, 1376] + str x1, [sp, 136] + mov x1, 0 cmp w19, 11 - mov x21, x1 - ldr x2, [x0] - str x2, [x29, 152] - mov x2,0 - bls .L790 + bls .L839 adrp x20, .LANCHOR0 add x20, x20, :lo12:.LANCHOR0 mov w2, 32 mov w1, 165 lsl w19, w19, 10 - ldr x0, [x20, 3512] - str x0, [x29, 64] - add x0, x29, 88 - str x0, [x29, 72] + ldr x0, [x20, 3496] + str x0, [sp, 48] + add x0, sp, 72 + str x0, [sp, 56] bl ftl_memset - ldr x0, [x20, 3512] + ldr x0, [x20, 3496] mov w2, 8 mov w1, 90 bl ftl_memset - str w19, [x29, 60] + add x0, sp, 40 mov w2, 1 - add x0, x29, 56 mov w1, w2 + str w19, [sp, 44] bl FlashEraseBlocks mov w3, 1 - add x0, x29, 56 + add x0, sp, 40 mov w2, w3 mov w1, w3 bl FlashProgPages - ldr w0, [x29, 56] - cbnz w0, .L791 + ldr w0, [sp, 40] + cbnz w0, .L840 add w0, w19, 1 mov w3, 1 - str w0, [x29, 60] mov w2, w3 mov w1, w3 - add x0, x29, 56 + str w0, [sp, 44] + add x0, sp, 40 bl FlashProgPages - ldr w0, [x29, 56] + ldr w0, [sp, 40] cmp w0, 0 csetm w20, ne -.L788: +.L837: + add x0, sp, 40 mov w2, 1 mov w1, 0 - add x0, x29, 56 - str w19, [x29, 60] + str w19, [sp, 44] bl FlashEraseBlocks -.L786: - add x1, x21, :lo12:__stack_chk_guard - mov w0, w20 - ldr x2, [x29, 152] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L789 +.L835: + mrs x0, sp_el0 + ldr x1, [sp, 136] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L838 bl __stack_chk_fail -.L791: +.L840: mov w20, -1 - b .L788 -.L790: + b .L837 +.L839: mov w20, 0 - b .L786 -.L789: + b .L835 +.L838: + mov w0, w20 ldp x19, x20, [sp, 16] - ldr x21, [sp, 32] - ldp x29, x30, [sp], 160 + ldp x29, x30, [sp], 144 + hint 29 // autiasp ret .size FlashTestBlk, .-FlashTestBlk + .section .rodata.str1.1 +.LC100: + .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" +.LC101: + .string "FtlBbmTblFlush error:%x\n" +.LC102: + .string "FtlBbmTblFlush error = %x error count = %d\n" + .text .align 2 .global FtlBbmTblFlush .type FtlBbmTblFlush, %function FtlBbmTblFlush: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE79 + .text +.LPFE79: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -80]! mov w1, 0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - mov w19, 0 - stp x25, x26, [sp, 64] - adrp x25, .LANCHOR0 - add x20, x25, :lo12:.LANCHOR0 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + mov x20, 0 stp x21, x22, [sp, 32] + add x22, x19, 360 + ldr x2, [x19, 3512] + str x2, [x19, 3728] + ldrh w2, [x19, 314] + ldr x0, [x19, 3448] stp x23, x24, [sp, 48] - add x21, x20, 392 - ldr x2, [x20, 3528] - ldr x0, [x20, 3464] - str x2, [x20, 3744] - ldrh w2, [x20, 314] - str x0, [x20, 3736] + stp x25, x26, [sp, 64] + str x0, [x19, 3720] bl ftl_memset -.L794: - ldrh w0, [x20, 258] - add x1, x20, 3728 - cmp w19, w0 - blt .L795 - ldr x26, [x1, 16] - add x19, x20, 360 +.L843: + ldrh w0, [x19, 258] + add x1, x19, 3712 + cmp w0, w20 + bgt .L844 + ldr x21, [x1, 16] mov w2, 16 mov w1, 255 - mov x0, x26 + adrp x25, .LC100 + mov x0, x21 bl ftl_memset mov w0, -3887 - adrp x23, .LC99 - strh w0, [x26] - add x25, x25, :lo12:.LANCHOR0 - add x23, x23, :lo12:.LC99 - mov w21, 0 - ldr w0, [x19, 8] + strh w0, [x21] + adrp x26, .LC101 + add x20, x19, 360 + ldr w0, [x22, 8] + add x25, x25, :lo12:.LC100 + str w0, [x21, 4] + add x26, x26, :lo12:.LC101 + ldrh w0, [x19, 360] + mov w24, 0 + strh w0, [x21, 2] + ldr w0, [x22, 4] mov w22, 0 - str w0, [x26, 4] - adrp x24, .LC100 - ldrh w0, [x20, 360] - strh w0, [x26, 2] - ldrh w0, [x19, 4] - strh w0, [x26, 8] - ldrh w0, [x19, 6] - strh w0, [x26, 10] - ldr w0, [x20, 232] - strh w0, [x26, 12] - ldr w0, [x20, 2684] - strh w0, [x26, 14] -.L796: - ldr x0, [x25, 3464] - str x0, [x25, 3736] - ldr x0, [x25, 3528] - str x0, [x25, 3744] - ldrh w1, [x19] - ldrh w2, [x19, 2] - ldrh w3, [x19, 4] - ldrh w4, [x26, 10] + str w0, [x21, 8] + ldr w0, [x19, 232] + strh w0, [x21, 12] + ldr w0, [x19, 2676] + strh w0, [x21, 14] +.L845: + ldr x0, [x19, 3448] + str x0, [x19, 3720] + ldr x0, [x19, 3512] + str x0, [x19, 3728] + ldrh w1, [x20] + ldrh w2, [x20, 2] + ldrh w3, [x20, 4] + ldrh w4, [x21, 10] orr w0, w2, w1, lsl 10 - str wzr, [x25, 3728] - str w0, [x25, 3732] - mov x0, x23 + str wzr, [x19, 3712] + str w0, [x19, 3716] + mov x0, x25 bl sftl_printk - ldrh w0, [x25, 308] - ldrh w1, [x19, 2] + ldrh w0, [x19, 308] + ldrh w1, [x20, 2] sub w0, w0, #1 cmp w1, w0 - blt .L797 - ldr w0, [x19, 8] + blt .L846 + ldr w0, [x20, 8] mov w2, 1 - ldrh w1, [x19] + strh wzr, [x20, 2] 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, 3416] - strh w0, [x19] - lsl w0, w0, 10 - str w0, [x25, 3732] - strh wzr, [x19, 2] - str w0, [x1, 4] + str w0, [x20, 8] + str w0, [x21, 4] + ldrh w0, [x20] + ldrh w1, [x20, 4] + strh w0, [x20, 4] + strh w0, [x21, 8] + ldr x0, [x19, 3400] + strh w1, [x20] + lsl w1, w1, 10 + str w1, [x19, 3716] + str w1, [x0, 4] mov w1, w2 - ldr x0, [x25, 3416] + ldr x0, [x19, 3400] bl FlashEraseBlocks -.L797: - add x20, x25, 3728 +.L846: + add x23, x19, 3712 mov w3, 1 - mov x0, x20 + mov x0, x23 mov w2, w3 mov w1, w3 bl FlashProgPages - ldrh w0, [x19, 2] + ldrh w0, [x20, 2] add w0, w0, 1 - strh w0, [x19, 2] - ldr w0, [x25, 3728] + strh w0, [x20, 2] + ldr w0, [x19, 3712] cmn w0, #1 - bne .L798 - ldr w1, [x25, 3732] - add w21, w21, 1 - add x0, x24, :lo12:.LC100 - and w21, w21, 65535 + bne .L847 + ldr w1, [x19, 3716] + add w22, w22, 1 + and w22, w22, 65535 + mov x0, x26 bl sftl_printk - cmp w21, 3 - bls .L796 - ldr w1, [x25, 3732] - adrp x0, .LC101 - mov w2, w21 - add x0, x0, :lo12:.LC101 + cmp w22, 3 + bls .L845 + ldr w1, [x19, 3716] + adrp x0, .LC102 + mov w2, w22 + add x0, x0, :lo12:.LC102 bl sftl_printk -.L800: - b .L800 -.L795: - ldrh w2, [x20, 3640] +.L849: + b .L849 +.L844: + ldrh w2, [x19, 3624] + add x4, x22, x20, lsl 3 ldr x0, [x1, 8] - ldr x1, [x21], 8 - mul w3, w19, w2 + ldr x1, [x4, 32] + mul w3, w2, w20 lsl w2, w2, 2 - add w19, w19, 1 + add x20, x20, 1 add x0, x0, x3, sxtw 2 bl ftl_memcpy - b .L794 -.L801: - mov w22, 1 - b .L796 -.L798: - add w22, w22, 1 - cmp w22, 1 - ble .L801 + b .L843 +.L847: + add w24, w24, 1 + cmp w24, 1 + ble .L845 cmp w0, 256 - beq .L796 + beq .L845 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 + hint 29 // autiasp ret .size FtlBbmTblFlush, .-FtlBbmTblFlush .align 2 .global allocate_data_superblock .type allocate_data_superblock, %function allocate_data_superblock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE80 + .text +.LPFE80: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -112]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - add x22, x21, :lo12:.LANCHOR0 + mov x29, sp stp x19, x20, [sp, 16] - stp x23, x24, [sp, 48] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 mov x20, x0 - mov x19, x22 - add x23, x22, 128 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR1 stp x25, x26, [sp, 64] + add x25, x19, 128 + stp x21, x22, [sp, 32] stp x27, x28, [sp, 80] -.L807: - ldrh w1, [x22, 2584] - ldrh w0, [x22, 228] - add w0, w0, w1 - ldrh w1, [x22, 244] - cmp w0, w1 - ble .L808 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2660 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L808: - cmp x20, x23 - bne .L834 +.L855: + ldrh w1, [x19, 2584] ldrh w0, [x19, 228] - ldr w1, [x19, 3244] - mul w1, w0, w1 - lsr w0, w0, 1 - add w0, w0, 1 - add w1, w0, w1, lsr 2 - ands w1, w1, 65535 - beq .L809 - sub w1, w1, #1 - and w1, w1, 65535 -.L809: + add w0, w0, w1 + ldrh w1, [x19, 244] + cmp w0, w1 + ble .L856 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2667 + bl sftl_printk +.L856: + cmp x20, x25 + bne .L881 + ldrh w1, [x19, 228] + mov w2, 65535 + ldr w0, [x19, 3236] + mul w0, w1, w0 + lsr w1, w1, 1 + add w0, w1, w0, lsr 2 + and w1, w0, 65535 + cmp w2, w0, uxth + csel w1, w1, wzr, ne +.L857: add x0, x19, 2592 bl List_pop_index_node - and w26, w0, 65535 + and w22, w0, 65535 ldrh w0, [x19, 228] - cbnz w0, .L810 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2669 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 + cbnz w0, .L858 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2676 bl sftl_printk -.L810: +.L858: ldrh w0, [x19, 228] sub w0, w0, #1 strh w0, [x19, 228] ldrh w0, [x19, 244] - cmp w0, w26 - bls .L807 + cmp w0, w22 + bls .L855 ldr x0, [x19, 72] - ubfiz x25, x26, 1, 16 - ldrh w24, [x0, x25] - cbnz w24, .L807 - strh w26, [x20] + ubfiz x24, x22, 1, 16 + ldrh w21, [x0, x24] + cbnz w21, .L855 + strh w22, [x20] mov x0, x20 bl make_superblock ldrb w0, [x20, 7] - cbnz w0, .L812 + cbnz w0, .L860 ldr x0, [x19, 72] mov w1, -1 - strh w1, [x0, x25] - mov w0, w26 + strh w1, [x0, x24] + mov w0, w22 bl INSERT_DATA_LIST ldrh w1, [x19, 2584] ldrh w0, [x19, 228] add w0, w0, w1 ldrh w1, [x19, 244] cmp w0, w1 - ble .L807 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 2683 - add x1, x1, 336 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + ble .L855 + add x1, x23, 271 + mov w2, 2690 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L807 -.L834: + b .L855 +.L881: mov w1, 0 - b .L809 -.L812: + b .L857 +.L860: ldrh w1, [x19, 2584] ldrh w0, [x19, 228] add w0, w0, w1 ldrh w1, [x19, 244] cmp w0, w1 - ble .L814 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2686 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 + ble .L862 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2693 bl sftl_printk -.L814: - add x27, x20, 16 - ldrh w4, [x19, 236] - mov x3, x27 +.L862: + ldrh w3, [x19, 236] + add x4, x20, 16 mov x0, 0 mov w5, 65535 -.L815: - cmp w4, w0, uxth - bhi .L817 - cbnz w24, .L818 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2697 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 +.L863: + cmp w3, w0, uxth + bhi .L865 + cbnz w21, .L866 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2704 bl sftl_printk -.L818: +.L866: ldrh w0, [x19, 176] - cmp w0, w26 - bne .L819 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2699 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 + cmp w0, w22 + bne .L867 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2706 bl sftl_printk -.L819: - ldrb w0, [x20, 8] - ldr x1, [x19, 2600] - cbnz w0, .L820 - ldrh w0, [x1, x25] - cbz w0, .L821 - ldrh w2, [x19, 296] - add w0, w0, w2 -.L842: - strh w0, [x1, x25] - ldr w0, [x19, 2676] - add w0, w0, 1 - str w0, [x19, 2676] -.L823: +.L867: + ldrb w2, [x20, 8] ldr x0, [x19, 2600] - ldr w1, [x19, 2692] - ldrh w0, [x0, x25] + ldrh w1, [x0, x24] + cbnz w2, .L868 + cbz w1, .L882 + ldrh w2, [x19, 296] + add w1, w1, w2 + and w1, w1, 65535 +.L869: + strh w1, [x0, x24] + ldr w0, [x19, 2668] + add w0, w0, 1 + str w0, [x19, 2668] +.L870: + ldr x0, [x19, 2600] + ldr w1, [x19, 2684] + ldrh w0, [x0, x24] cmp w0, w1 - bls .L824 - str w0, [x19, 2692] -.L824: - ldr w1, [x19, 2680] - ubfiz x3, x24, 5, 16 + bls .L871 + str w0, [x19, 2684] +.L871: + ldr w1, [x19, 2672] ldrh w0, [x19, 296] - ldr w2, [x19, 2676] + ldr w2, [x19, 2668] madd w0, w0, w2, w1 ldrh w1, [x19, 244] udiv w0, w0, w1 - ldr x1, [x19, 3560] - str w0, [x19, 2684] + ldr x1, [x19, 3544] + str w0, [x19, 2676] ldr w0, [x1, 16] add w0, w0, 1 str w0, [x1, 16] - mov x0, 0 -.L825: - cmp x3, x0 - bne .L826 + mov x1, 0 +.L872: + ldr x0, [x19, 3400] + cmp w21, w1, uxth + bhi .L873 ldrb w1, [x20, 8] - mov w2, w24 - ldr x0, [x19, 3416] - mov x28, 0 + mov w2, w21 + mov x26, 0 + mov w27, 0 bl FlashEraseBlocks - mov w1, 0 -.L827: - cmp w24, w28, uxth - bhi .L829 - cmp w1, 0 - ble .L830 - mov w0, w26 + add x2, x20, 16 +.L874: + cmp w21, w26, uxth + bhi .L876 + cmp w27, 0 + ble .L877 + mov w0, w22 bl update_multiplier_value bl FtlBbmTblFlush -.L830: +.L877: ldrb w0, [x20, 7] - cbnz w0, .L831 + cbnz w0, .L878 ldr x0, [x19, 72] mov w1, -1 - strh w1, [x0, x25] - b .L807 -.L817: - ldr x1, [x19, 3416] + strh w1, [x0, x24] + b .L855 +.L865: + ldr x1, [x19, 3400] add x2, x1, x0, lsl 5 stp xzr, xzr, [x2, 8] - ldrh w2, [x3] + ldrh w2, [x4, x0, lsl 1] cmp w2, w5 - beq .L816 - ubfiz x6, x24, 5, 16 - add w24, w24, 1 + beq .L864 + ubfiz x6, x21, 5, 16 + add w21, w21, 1 add x1, x1, x6 - and w24, w24, 65535 + and w21, w21, 65535 lsl w2, w2, 10 str w2, [x1, 4] -.L816: +.L864: add x0, x0, 1 - add x3, x3, 2 - b .L815 -.L821: - mov w0, 2 - b .L842 -.L820: - ldrh w0, [x1, x25] - add w0, w0, 1 - strh w0, [x1, x25] - ldr w0, [x19, 2680] - add w0, w0, 1 - str w0, [x19, 2680] - b .L823 -.L826: - ldr x1, [x19, 3416] - add x1, x1, x0 - add x0, x0, 32 - ldr w2, [x1, 4] - and w2, w2, -1024 - str w2, [x1, 4] - b .L825 -.L829: - ldr x2, [x19, 3416] - lsl x0, x28, 5 - add x3, x2, x0 - ldr w2, [x2, x0] - cmn w2, #1 - bne .L828 + b .L863 +.L882: + mov w1, 2 + b .L869 +.L868: add w1, w1, 1 + strh w1, [x0, x24] + ldr w0, [x19, 2672] + add w0, w0, 1 + str w0, [x19, 2672] + b .L870 +.L873: + add x0, x0, x1, lsl 5 + add x1, x1, 1 + ldr w2, [x0, 4] + and w2, w2, -1024 + str w2, [x0, 4] + b .L872 +.L876: + ldr x1, [x19, 3400] + lsl x0, x26, 5 + ldr w28, [x1, x0] + add x3, x1, x26, lsl 5 + cmn w28, #1 + bne .L875 ldr w0, [x3, 4] - stp w2, w1, [x29, 104] - lsr w0, w0, 10 + add w27, w27, 1 + str x2, [sp, 104] + ubfx x0, x0, 10, 16 bl FtlBbmMapBadBlock - ldp w2, w1, [x29, 104] - strh w2, [x27] + ldr x2, [sp, 104] + strh w28, [x2, x26, lsl 1] ldrb w0, [x20, 7] sub w0, w0, #1 strb w0, [x20, 7] -.L828: - add x28, x28, 1 - add x27, x27, 2 - b .L827 -.L831: - add x21, x21, :lo12:.LANCHOR0 +.L875: + add x26, x26, 1 + b .L874 +.L878: + ldrh w1, [x19, 306] + strh w22, [x20] strh wzr, [x20, 2] strb wzr, [x20, 6] - ldrh w1, [x21, 306] - strh w26, [x20] mul w0, w0, w1 - ldr w1, [x21, 2668] + ldr w1, [x19, 2660] str w1, [x20, 12] and w0, w0, 65535 add w1, w1, 1 strh w0, [x20, 4] - str w1, [x21, 2668] - ldr x1, [x21, 72] + str w1, [x19, 2660] + ldr x1, [x19, 72] ldrh w2, [x20] strh w0, [x1, x2, lsl 1] ldrh w0, [x20, 4] - cbz w0, .L832 + cbz w0, .L879 ldrb w0, [x20, 7] - cbnz w0, .L833 -.L832: + cbnz w0, .L880 +.L879: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2752 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2759 bl sftl_printk -.L833: - ldp x19, x20, [sp, 16] +.L880: 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 + hint 29 // autiasp ret .size allocate_data_superblock, .-allocate_data_superblock + .section .rodata.str1.1 +.LC103: + .string "FtlGcFreeBadSuperBlk 0x%x\n" + .text .align 2 .global FtlGcFreeBadSuperBlk .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE81 + .text +.LPFE81: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -96]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - and w22, w0, 65535 - stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] - ldrh w0, [x19, 3320] + and w25, w0, 65535 + ldrh w0, [x19, 3312] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] str x27, [sp, 80] - cbz w0, .L844 - add x23, x19, 264 - add x24, x19, 3328 - mov w21, 0 -.L845: - ldrh w0, [x19, 236] - cmp w0, w21 - bhi .L851 - bl FtlGcReFreshBadBlk -.L844: + cbnz w0, .L894 +.L889: 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 x29, x30, [sp], 96 + hint 29 // autiasp ret -.L851: - ldrb w0, [x23, w21, sxtw] - mov w1, w22 - adrp x26, .LC102 - add x26, x26, :lo12:.LC102 +.L893: + add x0, x19, 264 + mov w1, w25 mov w20, 0 + ldrb w0, [x0, w21, sxtw] bl V2P_block - and w25, w0, 65535 -.L846: - ldrh w0, [x19, 3320] + and w22, w0, 65535 +.L890: + ldrh w0, [x19, 3312] cmp w0, w20 - bhi .L850 + bhi .L892 add w21, w21, 1 and w21, w21, 65535 - b .L845 -.L850: +.L888: + ldrh w0, [x19, 236] + cmp w0, w21 + bhi .L893 + bl FtlGcReFreshBadBlk + b .L889 +.L892: ldrh w0, [x24, w20, sxtw 1] add w27, w20, 1 - cmp w0, w25 - bne .L847 - mov w1, w25 + cmp w0, w22 + bne .L891 + mov w1, w22 mov x0, x26 bl sftl_printk - mov w0, w25 + mov w0, w22 bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldrh w0, [x19, 3320] - mov w1, w27 -.L848: - cmp w20, w0 - bcc .L849 - sub w0, w0, #1 - strh w0, [x19, 3320] -.L847: + ldrh w23, [x19, 3312] + add x1, x24, x27, sxtw 1 + add x0, x24, x20, uxth 1 + cmp w20, w23 + sub w2, w23, w20 + sub w23, w23, #1 + ubfiz x2, x2, 1, 16 + csel x2, x2, xzr, ls + bl memmove + strh w23, [x19, 3312] +.L891: and w20, w27, 65535 - b .L846 -.L849: - sub w2, w1, #1 - ldrh w3, [x24, w1, sxtw 1] - add w20, w20, 1 - add w1, w1, 1 - and w20, w20, 65535 - strh w3, [x24, w2, sxtw 1] - b .L848 + b .L890 +.L894: + adrp x26, .LC103 + add x24, x19, 3314 + add x26, x26, :lo12:.LC103 + mov w21, 0 + b .L888 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .align 2 .global update_vpc_list .type update_vpc_list, %function update_vpc_list: - stp x29, x30, [sp, -48]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE82 + .text +.LPFE82: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -32]! + mov x29, sp stp x19, x20, [sp, 16] - and w20, w0, 65535 adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - str x21, [sp, 32] - ubfiz x1, x20, 1, 16 - ldr x2, [x0, 72] - ldrh w1, [x2, x1] - cbnz w1, .L857 - ldrh w1, [x0, 226] - cmp w1, w20 - bne .L858 - mov w1, -1 - strh w1, [x0, 226] -.L858: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 224] - cmp w1, w20 - bne .L859 - mov w1, -1 - strh w1, [x0, 224] -.L859: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - cmp w1, w20 - bne .L860 - mov w1, -1 - strh w1, [x0, 176] -.L861: - add x21, x19, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + and w20, w0, 65535 + ubfiz x0, x0, 1, 16 + ldr x1, [x19, 72] + ldrh w0, [x1, x0] + cbnz w0, .L897 + ldrh w0, [x19, 226] + cmp w0, w20 + bne .L898 + mov w0, -1 + strh w0, [x19, 226] +.L898: + ldrh w0, [x19, 224] + cmp w0, w20 + bne .L899 + mov w0, -1 + strh w0, [x19, 224] +.L899: + ldrh w0, [x19, 176] + cmp w0, w20 + bne .L900 + mov w0, -1 + strh w0, [x19, 176] +.L901: mov w1, w20 - add x0, x21, 2568 + add x0, x19, 2568 bl List_remove_node - ldrh w0, [x21, 2584] - cbnz w0, .L863 + ldrh w0, [x19, 2584] + cbnz w0, .L903 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2828 - add x1, x1, 368 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 296 + add x0, x0, :lo12:.LC9 + mov w2, 2835 bl sftl_printk -.L863: - add x19, x19, :lo12:.LANCHOR0 +.L903: ldrh w0, [x19, 2584] sub w0, w0, #1 strh w0, [x19, 2584] @@ -5976,333 +7061,356 @@ update_vpc_list: add w0, w0, w1 ldrh w1, [x19, 244] cmp w0, w1 - ble .L867 + ble .L907 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2831 - add x1, x1, 368 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 296 + add x0, x0, :lo12:.LC9 + mov w2, 2838 bl sftl_printk -.L867: +.L907: mov w0, 1 - b .L856 -.L860: - ldrh w1, [x0, 24] - cmp w1, w20 - beq .L866 - ldrh w1, [x0, 80] - cmp w1, w20 - beq .L866 - ldrh w0, [x0, 128] + b .L896 +.L900: + ldrh w0, [x19, 24] cmp w0, w20 - bne .L861 -.L866: + beq .L906 + ldrh w0, [x19, 80] + cmp w0, w20 + beq .L906 + ldrh w0, [x19, 128] + cmp w0, w20 + bne .L901 +.L906: mov w0, 0 -.L856: +.L896: ldp x19, x20, [sp, 16] - ldr x21, [sp, 32] - ldp x29, x30, [sp], 48 + ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L857: +.L897: mov w0, w20 bl List_update_data_list - b .L866 + b .L906 .size update_vpc_list, .-update_vpc_list + .section .rodata.str1.1 +.LC104: + .string "decrement_vpc_count %x = %d\n" + .text .align 2 .global decrement_vpc_count .type decrement_vpc_count, %function decrement_vpc_count: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE83 + .text +.LPFE83: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 + mov w1, 65535 + mov x29, sp stp x19, x20, [sp, 16] - and w20, w0, 65535 - stp x21, x22, [sp, 32] - mov w0, 65535 + cmp w1, w0, uxth adrp x19, .LANCHOR0 - cmp w20, w0 - beq .L870 - add x22, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + and w20, w0, 65535 + add x19, x19, :lo12:.LANCHOR0 + beq .L910 + ldr x1, [x19, 72] ubfiz x21, x20, 1, 16 - ldr x1, [x22, 72] ldrh w0, [x1, x21] - cbnz w0, .L871 - mov w2, 0 + cbnz w0, .L911 mov w1, w20 - adrp x0, .LC103 - add x0, x0, :lo12:.LC103 + mov w2, 0 + adrp x0, .LC104 + add x0, x0, :lo12:.LC104 bl sftl_printk - ldr x0, [x22, 72] + ldr x0, [x19, 72] ldrh w0, [x0, x21] - cbz w0, .L872 -.L877: + cbz w0, .L912 +.L917: mov w21, 0 -.L869: +.L909: mov w0, w21 ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L872: +.L912: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - mov w2, 2846 - add x1, x1, 384 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + add x1, x1, 312 + mov w2, 2853 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L877 -.L871: + b .L917 +.L911: sub w0, w0, #1 strh w0, [x1, x21] -.L870: - add x19, x19, :lo12:.LANCHOR0 +.L910: + ldrh w0, [x19, 3698] mov w1, 65535 - ldrh w0, [x19, 3714] cmp w0, w1 - bne .L874 - strh w20, [x19, 3714] - b .L877 -.L874: - cmp w20, w0 - beq .L877 + bne .L914 + strh w20, [x19, 3698] + b .L917 +.L914: + cmp w0, w20 + beq .L917 bl update_vpc_list cmp w0, 0 ldr x1, [x19, 2560] - cset w21, ne + strh w20, [x19, 3698] ldr x0, [x19, 2568] - strh w20, [x19, 3714] + cset w21, ne sub x0, x0, x1 mov x1, -6148914691236517206 - asr x0, x0, 1 movk x1, 0xaaab, lsl 0 + asr x0, x0, 1 mul x0, x0, x1 ldr x1, [x19, 72] and x2, x0, 65535 ldrh w1, [x1, x2, lsl 1] - cbnz w1, .L869 + cbnz w1, .L909 cmp w20, w0, uxth - beq .L869 + beq .L909 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - mov w2, 2862 - add x1, x1, 384 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + add x1, x1, 312 + mov w2, 2869 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L869 + b .L909 .size decrement_vpc_count, .-decrement_vpc_count .align 2 .global FtlSuperblockPowerLostFix .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: - stp x29, x30, [sp, -112]! - mov w2, 61589 - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE84 + .text +.LPFE84: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! + mov x29, sp stp x19, x20, [sp, 16] - mov x19, x0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - stp x23, x24, [sp, 48] - adrp x23, __stack_chk_guard - add x0, x23, :lo12:__stack_chk_guard - ldr x1, [x0] - str x1, [x29, 104] - mov x1,0 + mov x19, x0 + mrs x0, sp_el0 + ldr x1, [x0, 1376] + str x1, [sp, 88] + mov x1, 0 mov w0, -1 - str w0, [x29, 96] - add x0, x21, :lo12:.LANCHOR0 - mov x20, x0 - ldr x24, [x0, 3528] - ldr x1, [x0, 3464] - stp x1, x24, [x29, 80] - mov w1, -3 - str w1, [x24, 8] - mov w1, -2 - str w1, [x24, 12] - ldrh w1, [x19] - strh w1, [x24, 2] - strh wzr, [x24] - ldr x1, [x0, 3464] - str w2, [x1] - mov w2, 22136 - movk w2, 0x1234, lsl 16 - ldr x1, [x0, 3464] - str w2, [x1, 4] - ldrh w22, [x19, 4] - and w22, w22, 1 - add w22, w22, 6 -.L884: - ldrh w0, [x19, 4] - cbnz w0, .L880 -.L881: - add x21, x21, :lo12:.LANCHOR0 + ldr x22, [x20, 3512] + str w0, [sp, 80] + ldr x0, [x20, 3448] + str x0, [sp, 64] + mov x0, -3 + str x22, [sp, 72] + movk x0, 0xfffe, lsl 32 + str x0, [x22, 8] + mov w1, 61589 ldrh w0, [x19] - ldrh w3, [x19, 4] - add x23, x23, :lo12:__stack_chk_guard - ldr x2, [x21, 72] + strh wzr, [x22] + strh w0, [x22, 2] + ldr x0, [x20, 3448] + str w1, [x0] + mov w1, 22136 + movk w1, 0x1234, lsl 16 + ldr x0, [x20, 3448] + str w1, [x0, 4] + ldrh w21, [x19, 4] + and w21, w21, 1 + add w21, w21, 6 +.L919: + ldrh w0, [x19, 4] + cbz w21, .L921 + cbnz w0, .L920 +.L921: + ldrh w0, [x19] + ldr x2, [x20, 72] lsl x0, x0, 1 + ldrh w3, [x19, 4] ldrh w1, [x2, x0] sub w1, w1, w3 strh w1, [x2, x0] - strb wzr, [x19, 6] - ldrh w0, [x21, 306] - strh w0, [x19, 2] strh wzr, [x19, 4] - ldr x1, [x29, 104] - ldr x0, [x23] - eor x0, x1, x0 - cbz x0, .L885 + ldrh w0, [x20, 306] + strh w0, [x19, 2] + mrs x0, sp_el0 + strb wzr, [x19, 6] + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L925 bl __stack_chk_fail -.L880: +.L920: mov x0, x19 bl get_new_active_ppa - str w0, [x29, 76] + str w0, [sp, 60] cmn w0, #1 - beq .L881 - ldr w0, [x20, 2672] + beq .L921 + ldr w0, [x20, 2664] mov w3, 0 - str w0, [x24, 4] + str w0, [x22, 4] mov w2, 0 - add w0, w0, 1 + cmn w0, #2 mov w1, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x20, 2672] - add x0, x29, 72 + csinc w0, wzr, w0, eq + str w0, [x20, 2664] + add x0, sp, 56 + sub w21, w21, #1 bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count - subs w22, w22, #1 - bne .L884 - b .L881 -.L885: + b .L919 +.L925: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 112 + ldp x29, x30, [sp], 96 + hint 29 // autiasp ret .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .align 2 .global FtlMakeBbt .type FtlMakeBbt, %function FtlMakeBbt: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE85 + .text +.LPFE85: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -96]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - stp x25, x26, [sp, 64] - stp x21, x22, [sp, 32] - mov x21, x19 + add x19, x19, :lo12:.LANCHOR0 stp x23, x24, [sp, 48] - mov w24, 0 + add x24, x19, 360 + add x20, x19, 3712 + stp x25, x26, [sp, 64] + mov x25, x24 + mov w23, 0 stp x27, x28, [sp, 80] + mov w27, 65535 + mov w28, -3872 + stp x21, x22, [sp, 32] bl FtlBbtMemInit bl FtlLoadFactoryBbt - mov w28, -3872 - add x0, x19, :lo12:.LANCHOR0 - add x26, x0, 392 - add x25, x0, 372 - mov x19, x0 - add x20, x0, 3728 -.L894: +.L932: ldrh w0, [x19, 258] - cmp w24, w0 - bcc .L900 - add x20, x21, :lo12:.LANCHOR0 - mov w19, 0 -.L901: - ldrh w0, [x20, 318] - cmp w0, w19 - bhi .L902 - add x20, x20, 360 - ldrh w19, [x20, 12] + cmp w0, w23 + bhi .L938 + mov w20, 0 +.L939: + ldrh w0, [x19, 318] + cmp w0, w20 + bhi .L940 + ldrh w20, [x19, 372] + add x21, x19, 360 mov w22, 65535 - sub w19, w19, #1 - and w19, w19, 65535 -.L903: - ldrh w0, [x20, 12] + sub w20, w20, #1 + and w20, w20, 65535 +.L941: + ldrh w0, [x21, 12] sub w0, w0, #48 - cmp w19, w0 - ble .L907 - mov w0, w19 + cmp w20, w0 + ble .L945 + mov w0, w20 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L904 - mov w0, w19 + beq .L942 + mov w0, w20 bl FlashTestBlk - cbz w0, .L905 - mov w0, w19 + cbz w0, .L943 + mov w0, w20 bl FtlBbmMapBadBlock -.L904: - sub w19, w19, #1 - and w19, w19, 65535 - b .L903 -.L900: - ldr x0, [x19, 3464] - mov w2, 65535 - ldr x27, [x19, 3528] - ldrh w1, [x25] - stp x0, x27, [x20, 8] - cmp w1, w2 - beq .L895 - ldrh w23, [x19, 302] +.L942: + sub w20, w20, #1 + and w20, w20, 65535 + b .L941 +.L938: + ldrh w1, [x25, 12] + ldr x0, [x19, 3448] + ldr x26, [x19, 3512] + stp x0, x26, [x20, 8] + cmp w1, w27 + beq .L933 + ldrh w22, [x19, 302] mov w2, 1 - madd w23, w23, w24, w1 + madd w22, w22, w23, w1 mov w1, w2 - lsl w0, w23, 10 + lsl w0, w22, 10 str w0, [x20, 4] mov x0, x20 bl FlashReadPages - ldr x1, [x20, 8] - ldr x0, [x26] ldrh w2, [x19, 302] + ldr x1, [x20, 8] add w2, w2, 7 + ldr x0, [x24, 32] lsr w2, w2, 3 bl ftl_memcpy -.L896: - mov w0, w23 - add w24, w24, 1 - bl FtlBbmMapBadBlock - add x26, x26, 8 +.L934: + mov w0, w22 + add w23, w23, 1 + add x24, x24, 8 add x25, x25, 2 - b .L894 -.L895: - mov w1, w24 + bl FtlBbmMapBadBlock + b .L932 +.L933: + mov w1, w23 bl FlashGetBadBlockList ldr x0, [x20, 8] - ldr x1, [x26] + ldr x1, [x24, 32] bl FtlBbt2Bitmap - ldrh w22, [x19, 302] -.L898: - sub w22, w22, #1 - and w22, w22, 65535 -.L897: + ldrh w21, [x19, 302] +.L936: + sub w21, w21, #1 + and w21, w21, 65535 +.L935: ldrh w0, [x19, 302] - madd w0, w24, w0, w22 + madd w0, w23, w0, w21 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L898 - ldr x0, [x19, 3528] + beq .L936 + ldr x0, [x19, 3512] + strh w21, [x25, 12] mov w2, 16 - strh w22, [x25] mov w1, 0 bl ftl_memset - ldr x0, [x19, 3464] + ldr x0, [x19, 3448] mov w2, 4096 mov w1, 0 bl ftl_memset - strh w28, [x27] - str wzr, [x27, 4] - ldrh w23, [x19, 302] - ldrh w0, [x25] - strh w0, [x27, 2] - ldrh w2, [x19, 3640] - ldrh w0, [x25] - ldr x1, [x26] + strh w28, [x26] + str wzr, [x26, 4] + ldrh w22, [x19, 302] + ldrh w0, [x25, 12] + strh w0, [x26, 2] + ldrh w2, [x19, 3624] + ldr x1, [x24, 32] + madd w22, w22, w23, w0 lsl w2, w2, 2 - madd w23, w23, w24, w0 - lsl w0, w23, 10 + lsl w0, w22, 10 str w0, [x20, 4] ldr x0, [x20, 8] bl ftl_memcpy @@ -6312,57 +7420,56 @@ FtlMakeBbt: bl FlashEraseBlocks mov w3, 1 mov x0, x20 - mov w2, w3 mov w1, w3 + mov w2, w3 bl FlashProgPages - ldr w0, [x20] - cmn w0, #1 - bne .L896 - mov w0, w23 + ldr w1, [x20] + and w0, w22, 65535 + cmn w1, #1 + bne .L934 bl FtlBbmMapBadBlock - b .L897 -.L902: - mov w0, w19 - add w19, w19, 1 + b .L935 +.L940: + mov w0, w20 + add w20, w20, 1 + and w20, w20, 65535 bl FtlBbmMapBadBlock - and w19, w19, 65535 - b .L901 -.L905: - ldrh w0, [x20] + b .L939 +.L943: + ldrh w0, [x21] cmp w0, w22 - bne .L906 - strh w19, [x20] - b .L904 -.L906: - strh w19, [x20, 4] -.L907: - add x21, x21, :lo12:.LANCHOR0 + bne .L944 + strh w20, [x21] + b .L942 +.L944: + strh w20, [x21, 4] +.L945: + ldr x1, [x19, 3400] + str wzr, [x19, 368] + ldrh w0, [x19, 360] mov w2, 2 - ldr x1, [x21, 3416] - ldrh w0, [x21, 360] - str wzr, [x21, 368] - strh wzr, [x21, 362] + strh wzr, [x19, 362] lsl w0, w0, 10 str w0, [x1, 4] - ldr x0, [x21, 3416] - ldrh w1, [x21, 364] + ldr x0, [x19, 3400] + ldrh w1, [x19, 364] lsl w1, w1, 10 str w1, [x0, 36] mov w1, 1 bl FlashEraseBlocks - ldrh w0, [x21, 360] + ldrh w0, [x19, 360] bl FtlBbmMapBadBlock - ldrh w0, [x21, 364] + ldrh w0, [x19, 364] bl FtlBbmMapBadBlock bl FtlBbmTblFlush - strh wzr, [x21, 362] - ldr w0, [x21, 368] - ldrh w1, [x21, 364] + strh wzr, [x19, 362] + ldr w0, [x19, 368] + ldrh w1, [x19, 364] add w0, w0, 1 - str w0, [x21, 368] - ldrh w0, [x21, 360] - strh w0, [x21, 364] - strh w1, [x21, 360] + str w0, [x19, 368] + ldrh w0, [x19, 360] + strh w1, [x19, 360] + strh w0, [x19, 364] bl FtlBbmTblFlush mov w0, 0 ldp x19, x20, [sp, 16] @@ -6371,285 +7478,219 @@ FtlMakeBbt: ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret .size FtlMakeBbt, .-FtlMakeBbt .align 2 .global ftl_memcmp .type ftl_memcmp, %function ftl_memcmp: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE86 + .text +.LPFE86: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! uxtw x2, w2 - add x29, sp, 0 + mov x29, sp bl memcmp ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size ftl_memcmp, .-ftl_memcmp .align 2 .global js_hash .type js_hash, %function js_hash: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE87 + .text +.LPFE87: + nop + nop mov x4, x0 mov w0, 42982 mov x3, 0 movk w0, 0x47c6, lsl 16 -.L916: + hint 25 // paciasp +.L954: cmp w1, w3 - bhi .L917 + bhi .L955 + hint 29 // autiasp ret -.L917: - lsr w2, w0, 2 +.L955: ldrb w5, [x4, x3] + lsr w2, w0, 2 add w2, w2, w0, lsl 5 add x3, x3, 1 add w2, w2, w5 eor w0, w0, w2 - b .L916 + b .L954 .size js_hash, .-js_hash - .align 2 - .global Ftl_write_map_blk_to_last_page - .type Ftl_write_map_blk_to_last_page, %function -Ftl_write_map_blk_to_last_page: - stp x29, x30, [sp, -64]! - mov w1, 65535 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - ldr x20, [x0, 16] - ldrh w0, [x0] - cmp w0, w1 - bne .L919 - ldrh w0, [x19, 8] - cbz w0, .L920 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 641 - add x1, x1, 408 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L920: - ldrh w0, [x19, 8] - add w0, w0, 1 - strh w0, [x19, 8] - bl FtlFreeSysBlkQueueOut - strh w0, [x20] - strh wzr, [x19, 2] - ldr w0, [x19, 48] - strh wzr, [x19] - add w0, w0, 1 - str w0, [x19, 48] -.L921: - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 64 - ret -.L919: - ubfiz x0, x0, 1, 16 - adrp x21, .LANCHOR0 - ldrh w1, [x19, 2] - ldr x24, [x19, 40] - ldrh w23, [x20, x0] - add x20, x21, :lo12:.LANCHOR0 - ldr w0, [x19, 48] - ldr x22, [x20, 3528] - orr w1, w1, w23, lsl 10 - str w1, [x20, 3732] - ldr x1, [x20, 3464] - str x1, [x20, 3736] - str x22, [x20, 3744] - 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, 308] - ldr x0, [x20, 3464] - lsl w2, w2, 3 - bl ftl_memset - mov w1, 0 - mov w0, 0 -.L922: - ldrh w2, [x19, 6] - cmp w2, w0 - bhi .L924 - add x21, x21, :lo12:.LANCHOR0 - add x6, x21, 3728 - ldrh w1, [x21, 314] - ldr x0, [x21, 3736] - bl js_hash - str w0, [x22, 12] - mov w2, 1 - mov w3, 0 - mov w1, w2 - mov x0, x6 - bl FlashProgPages - ldrh w0, [x19, 2] - add w0, w0, 1 - strh w0, [x19, 2] - mov x0, x19 - bl ftl_map_blk_gc - b .L921 -.L924: - ubfiz x2, x0, 2, 16 - ldr w3, [x24, x2] - cmp w23, w3, lsr 10 - bne .L923 - add w1, w1, 1 - ldr x4, [x20, 3464] - and w1, w1, 65535 - ubfiz x3, x1, 3, 16 - str w0, [x4, x3] - ldr w4, [x24, x2] - ldr x2, [x20, 3464] - add x2, x2, x3 - str w4, [x2, 4] -.L923: - add w0, w0, 1 - and w0, w0, 65535 - b .L922 - .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .section .rodata.str1.1 +.LC105: + .string "FtlMapWritePage error = %x \n" +.LC106: + .string "FtlMapWritePage error = %x error count = %d\n" + .text .align 2 .global FtlMapWritePage .type FtlMapWritePage, %function FtlMapWritePage: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE88 + .text +.LPFE88: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov w21, 0 + mov x29, sp stp x23, x24, [sp, 48] - adrp x24, .LANCHOR0 - add x22, x24, :lo12:.LANCHOR0 + mov w24, w1 stp x19, x20, [sp, 16] - stp x25, x26, [sp, 64] - adrp x23, .LANCHOR1 - stp x27, x28, [sp, 80] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 mov x19, x0 - mov w26, w1 - mov x27, x2 - mov x25, x24 - add x23, x23, :lo12:.LANCHOR1 - add x20, x22, 3728 -.L930: - add x0, x24, :lo12:.LANCHOR0 - ldr w1, [x0, 2652] - add w1, w1, 1 - str w1, [x0, 2652] - ldrh w0, [x0, 308] + stp x21, x22, [sp, 32] + add x21, x20, 3712 + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR1 + mov x26, x2 + add x25, x25, :lo12:.LANCHOR1 + stp x27, x28, [sp, 80] + ubfiz x27, x24, 2, 32 + mov w22, 0 +.L958: + ldr w0, [x20, 2644] + add w0, w0, 1 + str w0, [x20, 2644] + ldrh w0, [x20, 308] ldrh w1, [x19, 2] sub w0, w0, #1 cmp w1, w0 - bge .L931 + bge .L959 ldrh w1, [x19] mov w0, 65535 cmp w1, w0 - bne .L932 -.L931: + bne .L960 +.L959: mov x0, x19 bl Ftl_write_map_blk_to_last_page -.L932: +.L960: ldrh w1, [x19] ldr x0, [x19, 16] ldrh w0, [x0, x1, lsl 1] - cbnz w0, .L933 - adrp x0, .LC8 + cbnz w0, .L961 + adrp x0, .LC9 + add x1, x25, 332 + add x0, x0, :lo12:.LC9 mov w2, 700 - add x1, x23, 440 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L933: +.L961: ldrh w1, [x19] ldrh w0, [x19, 10] cmp w1, w0 - bcc .L934 - adrp x0, .LC8 + bcc .L962 + adrp x0, .LC9 + add x1, x25, 332 + add x0, x0, :lo12:.LC9 mov w2, 701 - add x1, x23, 440 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L934: +.L962: ldrh w1, [x19] mov w2, 16 ldr x0, [x19, 16] ldrh w28, [x0, x1, lsl 1] mov w1, 0 ldrh w0, [x19, 2] - str x27, [x20, 8] + str x26, [x21, 8] orr w0, w0, w28, lsl 10 - str w0, [x20, 4] - ldr x0, [x22, 3528] - str x0, [x20, 16] + str w0, [x21, 4] + ldr x0, [x20, 3512] + str x0, [x21, 16] bl ftl_memset - ldr x6, [x20, 16] + ldr x23, [x21, 16] ldr w0, [x19, 48] - str w0, [x6, 4] - strh w26, [x6, 8] + str w0, [x23, 4] + strh w24, [x23, 8] ldrh w0, [x19, 4] - strh w0, [x6] - strh w28, [x6, 2] - ldrh w1, [x22, 314] - ldr x0, [x20, 8] + strh w0, [x23] + strh w28, [x23, 2] + ldrh w1, [x20, 314] + ldr x0, [x21, 8] bl js_hash - str w0, [x6, 12] + str w0, [x23, 12] mov w3, 1 - mov x0, x20 + mov x0, x21 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, [x20] - cmn w1, #1 - bne .L935 - ldr w1, [x20, 4] - adrp x0, .LC104 - add x0, x0, :lo12:.LC104 - add w21, w21, 1 - and w21, w21, 65535 + ldp w0, w1, [x21] + cmn w0, #1 + bne .L963 + adrp x0, .LC105 + add x0, x0, :lo12:.LC105 bl sftl_printk + add w22, w22, 1 ldrh w0, [x19, 2] + and w22, w22, 65535 cmp w0, 2 - bhi .L936 - ldrh w0, [x22, 308] + bhi .L964 + ldrh w0, [x20, 308] sub w0, w0, #1 strh w0, [x19, 2] -.L936: - cmp w21, 3 - bls .L937 - add x25, x25, :lo12:.LANCHOR0 - adrp x0, .LC105 - mov w2, w21 - add x0, x0, :lo12:.LC105 - ldr w1, [x25, 3732] +.L964: + cmp w22, 3 + bls .L965 + ldr w1, [x20, 3716] + adrp x0, .LC106 + mov w2, w22 + add x0, x0, :lo12:.LC106 bl sftl_printk -.L938: - b .L938 -.L937: +.L966: + b .L966 +.L965: ldr w0, [x19, 52] - cbz w0, .L930 -.L952: - b .L952 -.L935: - cmp w0, 1 - beq .L941 - cmp w1, 256 - beq .L941 - ldr w0, [x19, 56] - cbz w0, .L942 -.L941: - str wzr, [x19, 56] - b .L930 -.L942: + cbz w0, .L958 +.L968: + b .L968 +.L963: ldr x0, [x19, 40] - ldr w1, [x20, 4] - str w1, [x0, w26, uxtw 2] + str w1, [x0, x27] + ldrh w0, [x19, 2] + cmp w0, 1 + beq .L969 + ldr w0, [x21] + cmp w0, 256 + beq .L969 + ldr w1, [x19, 56] + cbz w1, .L970 +.L969: + str wzr, [x19, 56] + b .L958 +.L970: + cmn w0, #1 + bne .L971 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 332 + add x0, x0, :lo12:.LC9 + mov w2, 745 + bl sftl_printk +.L971: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -6657,254 +7698,401 @@ FtlMapWritePage: ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret .size FtlMapWritePage, .-FtlMapWritePage + .section .rodata.str1.1 +.LC107: + .string "region_id = %x phyAddr = %x\n" +.LC108: + .string "map_ppn:" +.LC109: + .string "load_l2p_region refresh = %x phyAddr = %x\n" + .text .align 2 .global load_l2p_region .type load_l2p_region, %function load_l2p_region: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - and w22, w0, 65535 - adrp x21, .LANCHOR0 - add x0, x21, :lo12:.LANCHOR0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE89 + .text +.LPFE89: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -64]! + mov x29, sp stp x19, x20, [sp, 16] - and x19, x1, 65535 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + and w20, w1, 65535 + stp x21, x22, [sp, 32] + and w21, w0, 65535 + ldrh w1, [x19, 340] stp x23, x24, [sp, 48] - str x25, [sp, 64] - ldrh w0, [x0, 340] - cmp w0, w22 - bcs .L955 + cmp w1, w0, uxth + bcs .L983 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 348 + add x0, x0, :lo12:.LC9 mov w2, 485 - add x1, x1, 456 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L955: - add x20, x21, :lo12:.LANCHOR0 - ubfiz x0, x22, 2, 16 - ldr x1, [x20, 3616] - ldr w24, [x1, x0] - cbnz w24, .L956 - ldr x0, [x20, 2608] - lsl x19, x19, 4 - ldrh w2, [x20, 314] - mov w1, 255 - add x0, x0, x19 +.L983: + ldr x1, [x19, 3600] + ubfiz x0, x21, 2, 16 + ubfiz x20, x20, 4, 16 + ldr w23, [x1, x0] + ldr x0, [x19, 2608] + add x0, x0, x20 ldr x0, [x0, 8] + cbnz w23, .L984 + ldrh w2, [x19, 314] + mov w1, 255 bl ftl_memset - ldr x0, [x20, 2608] - strh w22, [x0, x19] - ldr x0, [x20, 2608] - add x19, x0, x19 - str wzr, [x19, 4] -.L957: + ldr x0, [x19, 2608] + strh w21, [x0, x20] + ldr x0, [x19, 2608] + add x20, x0, x20 + str wzr, [x20, 4] +.L985: 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 + ldp x29, x30, [sp], 64 + hint 29 // autiasp ret -.L956: - ldr x0, [x20, 2608] - lsl x19, x19, 4 - add x23, x20, 3728 +.L984: + add x22, x19, 3712 + str x0, [x19, 3720] + ldr x0, [x19, 3512] mov w2, 1 - add x0, x0, x19 mov w1, w2 - str w24, [x20, 3732] - ldr x0, [x0, 8] - str x0, [x20, 3736] - ldr x0, [x20, 3528] - str x0, [x20, 3744] - mov x0, x23 + str w23, [x19, 3716] + str x0, [x19, 3728] + mov x0, x22 bl FlashReadPages - ldr x25, [x20, 3744] - ldrh w0, [x25, 8] - cmp w0, w22 - beq .L958 - mov w2, w24 - mov w1, w22 - adrp x0, .LC106 - add x0, x0, :lo12:.LC106 - bl sftl_printk - ldr x1, [x20, 3744] - mov w3, 4 - adrp x0, .LC94 - mov w2, w3 - add x0, x0, :lo12:.LC94 - bl rknand_print_hex - ldrh w3, [x20, 340] + ldr x24, [x19, 3728] + ldrh w0, [x24, 8] + cmp w0, w21 + beq .L986 + mov w2, w23 + mov w1, w21 adrp x0, .LC107 - ldr x1, [x20, 3616] - mov w2, 4 add x0, x0, :lo12:.LC107 + bl sftl_printk + ldr x1, [x19, 3728] + mov w3, 4 + adrp x0, .LC95 + mov w2, w3 + add x0, x0, :lo12:.LC95 bl rknand_print_hex -.L959: - ldrh w0, [x25, 8] - cmp w0, w22 - beq .L960 + ldrh w3, [x19, 340] + adrp x0, .LC108 + ldr x1, [x19, 3600] + add x0, x0, :lo12:.LC108 + mov w2, 4 + bl rknand_print_hex +.L987: + ldrh w0, [x24, 8] + cmp w0, w21 + beq .L989 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 348 + add x0, x0, :lo12:.LC9 mov w2, 508 - add x1, x1, 456 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L960: - add x21, x21, :lo12:.LANCHOR0 - ldr x0, [x21, 2608] - add x0, x0, x19 +.L989: + ldr x0, [x19, 2608] + add x0, x0, x20 str wzr, [x0, 4] - ldr x0, [x21, 2608] - strh w22, [x0, x19] - b .L957 -.L958: - ldr w0, [x20, 3728] + ldr x0, [x19, 2608] + strh w21, [x0, x20] + b .L985 +.L986: + ldr w0, [x19, 3712] cmp w0, 256 - bne .L959 - mov w2, w24 - mov w1, w22 - adrp x0, .LC108 - add x0, x0, :lo12:.LC108 + bne .L989 + mov w2, w23 + mov w1, w21 + adrp x0, .LC109 + add x0, x0, :lo12:.LC109 bl sftl_printk - ldr x0, [x20, 2608] - mov w1, w22 - add x0, x0, x19 + ldr x0, [x19, 2608] + mov w1, w21 + add x0, x0, x20 ldr x2, [x0, 8] - add x0, x20, 3648 + add x0, x19, 3632 bl FtlMapWritePage - b .L959 + b .L987 .size load_l2p_region, .-load_l2p_region .align 2 .global ftl_map_blk_gc .type ftl_map_blk_gc, %function ftl_map_blk_gc: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE90 + .text +.LPFE90: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -96]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x19, x0 + adrp x20, .LANCHOR0 stp x21, x22, [sp, 32] - adrp x22, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - ldr x20, [x0, 16] - ldr x25, [x0, 40] + str x27, [sp, 80] + ldr x21, [x0, 16] + ldr x24, [x0, 40] bl ftl_free_no_use_map_blk ldrh w1, [x19, 10] ldrh w2, [x19, 8] sub w1, w1, #5 cmp w2, w1 - blt .L963 + blt .L993 ubfiz x0, x0, 1, 16 - ldrh w26, [x20, x0] - cbz w26, .L963 + ldrh w25, [x21, x0] + cbz w25, .L993 ldr w1, [x19, 52] - cbnz w1, .L963 + cbnz w1, .L993 mov w1, 1 str w1, [x19, 52] - strh wzr, [x20, x0] + strh wzr, [x21, x0] ldrh w0, [x19, 8] ldrh w1, [x19, 2] sub w0, w0, #1 strh w0, [x19, 8] - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0, 308] + ldrh w0, [x20, 308] cmp w1, w0 - bcc .L964 + bcc .L994 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L964: - add x27, x22, :lo12:.LANCHOR0 - adrp x23, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR1 - add x21, x27, 3728 - add x23, x23, 472 - mov w20, 0 -.L965: +.L994: + adrp x22, .LANCHOR1 + add x22, x22, :lo12:.LANCHOR1 + adrp x26, .LC9 + add x22, x22, 364 + add x26, x26, :lo12:.LC9 + mov w21, 0 +.L995: ldrh w0, [x19, 6] - cmp w0, w20 - bhi .L972 + cmp w0, w21 + bhi .L1002 + mov w0, w25 mov w1, 1 - mov w0, w26 bl FtlFreeSysBlkQueueIn str wzr, [x19, 52] -.L963: - add x22, x22, :lo12:.LANCHOR0 +.L993: ldrh w1, [x19, 2] - ldrh w0, [x22, 308] + ldrh w0, [x20, 308] cmp w1, w0 - bcc .L973 + bcc .L1003 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L973: +.L1003: 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] + ldr x27, [sp, 80] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret -.L972: - ubfiz x0, x20, 2, 16 - add x28, x25, x0 - ldr w1, [x25, x0] - cmp w26, w1, lsr 10 - bne .L966 - ldr x1, [x27, 3472] +.L1002: + ubfiz x1, x21, 2, 16 + add x27, x24, x1 + ldr w0, [x24, x1] + cmp w25, w0, lsr 10 + bne .L996 + add x0, x20, 3712 + ldr x2, [x20, 3456] + ldr x23, [x20, 3512] + stp x2, x23, [x0, 8] mov w2, 1 - ldr x24, [x27, 3528] - stp x1, x24, [x21, 8] + ldr w1, [x24, x1] + str w1, [x0, 4] mov w1, w2 - ldr w0, [x25, x0] - str w0, [x21, 4] - mov x0, x21 bl FlashReadPages - ldrh w0, [x24, 8] - cmp w0, w20 - beq .L967 - adrp x0, .LC8 + ldrh w0, [x23, 8] + cmp w0, w21 + beq .L997 + mov x1, x22 + mov x0, x26 mov w2, 611 - mov x1, x23 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L967: - ldr w0, [x21] - cmn w0, #1 - bne .L968 -.L970: - str wzr, [x28] -.L969: - b .L969 -.L968: - ldrh w0, [x24, 8] - cmp w0, w20 - bne .L970 - ldrh w1, [x24] - ldrh w0, [x19, 4] - cmp w1, w0 - bne .L970 - ldr x2, [x21, 8] - mov w1, w20 +.L997: + ldr w1, [x20, 3712] + add x0, x20, 3712 + cmn w1, #1 + bne .L998 +.L1000: + str wzr, [x27] +.L999: + b .L999 +.L998: + ldrh w1, [x23, 8] + cmp w1, w21 + bne .L1000 + ldrh w2, [x23] + ldrh w1, [x19, 4] + cmp w2, w1 + bne .L1000 + ldr x2, [x0, 8] + mov w1, w21 mov x0, x19 bl FtlMapWritePage -.L966: - add w20, w20, 1 - and w20, w20, 65535 - b .L965 +.L996: + add w21, w21, 1 + and w21, w21, 65535 + b .L995 .size ftl_map_blk_gc, .-ftl_map_blk_gc .align 2 + .global Ftl_write_map_blk_to_last_page + .type Ftl_write_map_blk_to_last_page, %function +Ftl_write_map_blk_to_last_page: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE91 + .text +.LPFE91: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -64]! + mov w1, 65535 + mov x29, sp + stp x19, x20, [sp, 16] + mov x19, x0 + stp x21, x22, [sp, 32] + str x23, [sp, 48] + ldr x20, [x0, 16] + ldrh w0, [x0] + cmp w0, w1 + bne .L1010 + ldrh w0, [x19, 8] + cbz w0, .L1011 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 379 + add x0, x0, :lo12:.LC9 + mov w2, 641 + bl sftl_printk +.L1011: + ldrh w0, [x19, 8] + add w0, w0, 1 + strh w0, [x19, 8] + bl FtlFreeSysBlkQueueOut + strh w0, [x20] + str wzr, [x19] + ldr w0, [x19, 48] + add w0, w0, 1 + str w0, [x19, 48] +.L1012: + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] + ldp x29, x30, [sp], 64 + hint 29 // autiasp + ret +.L1010: + ubfiz x0, x0, 1, 16 + ldrh w1, [x19, 2] + ldr x23, [x19, 40] + ldrh w22, [x20, x0] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + ldr w0, [x19, 48] + orr w1, w1, w22, lsl 10 + ldr x21, [x20, 3512] + str w1, [x20, 3716] + ldr x1, [x20, 3448] + str x1, [x20, 3720] + str x21, [x20, 3728] + mov w1, 255 + str w0, [x21, 4] + mov w0, -1291 + strh w0, [x21, 8] + ldrh w0, [x19, 4] + strh w0, [x21] + strh w22, [x21, 2] + ldrh w2, [x20, 308] + ldr x0, [x20, 3448] + lsl w2, w2, 3 + bl ftl_memset + mov w2, 0 + mov w0, 0 +.L1013: + ldrh w1, [x19, 6] + cmp w1, w0 + bhi .L1015 + ldrh w1, [x20, 314] + add x22, x20, 3712 + ldr x0, [x20, 3720] + bl js_hash + str w0, [x21, 12] + mov w2, 1 + mov x0, x22 + mov w1, w2 + 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 + b .L1012 +.L1015: + ubfiz x3, x0, 2, 16 + ldr w1, [x23, x3] + cmp w22, w1, lsr 10 + bne .L1014 + add w1, w2, 1 + ldr x5, [x20, 3448] + ubfiz x4, x1, 3, 16 + and w2, w1, 65535 + ubfiz x1, x1, 3, 16 + add x1, x1, 4 + str w0, [x5, x4] + ldr w4, [x23, x3] + ldr x3, [x20, 3448] + str w4, [x3, x1] +.L1014: + add w0, w0, 1 + and w0, w0, 65535 + b .L1013 + .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .align 2 .global flush_l2p_region .type flush_l2p_region, %function flush_l2p_region: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE92 + .text +.LPFE92: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 @@ -6913,7 +8101,7 @@ flush_l2p_region: add x1, x0, x20 ldr x2, [x1, 8] ldrh w1, [x0, x20] - add x0, x19, 3648 + add x0, x19, 3632 bl FtlMapWritePage ldr x0, [x19, 2608] add x0, x0, x20 @@ -6923,1769 +8111,1861 @@ flush_l2p_region: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size flush_l2p_region, .-flush_l2p_region .align 2 .global log2phys .type log2phys, %function log2phys: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE93 + .text +.LPFE93: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -80]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - stp x25, x26, [sp, 64] - mov w25, w0 - add x0, x20, :lo12:.LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] + mov w21, w0 mov x22, x1 + ldrh w19, [x20, 312] + stp x23, x24, [sp, 48] mov w23, w2 - ldrh w24, [x0, 312] - ldr w0, [x0, 2632] - cmp w25, w0 - bcc .L982 + add w0, w19, 7 + mov x19, 1 + str x25, [sp, 64] + lsr w24, w21, w0 + and w24, w24, 65535 + lsl x19, x19, x0 + ldr w0, [x20, 2624] + sub w19, w19, #1 + and w19, w19, w21 + and w19, w19, 65535 + cmp w0, w21 + bhi .L1023 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 813 - add x1, x1, 488 - add x0, x0, :lo12:.LC8 + add x1, x1, 410 + mov w2, 820 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk -.L982: - add x0, x20, :lo12:.LANCHOR0 - ldr w1, [x0, 2632] - cmp w25, w1 - bcs .L983 - add w24, w24, 7 - ldrh w1, [x0, 342] - ldr x2, [x0, 2608] + ldr w0, [x20, 2624] + cmp w0, w21 + bhi .L1023 + mov w0, -1 + cbnz w23, .L1022 + str w0, [x22] +.L1022: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldr x25, [sp, 64] + ldp x29, x30, [sp], 80 + hint 29 // autiasp + ret +.L1029: + add x0, x0, 1 + lsl x3, x0, 4 + ldrh w3, [x1, x3] + cmp w3, w24 + bne .L1025 +.L1026: + ldr x0, [x20, 2608] + ubfiz x2, x25, 4, 16 + ubfiz x19, x19, 2, 16 + add x0, x0, x2 + ldr x0, [x0, 8] + cbnz w23, .L1027 + ldr w0, [x0, x19] + str w0, [x22] +.L1028: + ldr x0, [x20, 2608] + add x0, x0, x2 + ldr w1, [x0, 4] + cmn w1, #1 + beq .L1032 + add w1, w1, 1 + str w1, [x0, 4] +.L1032: + mov w0, 0 + b .L1022 +.L1027: + ldr w1, [x22] + str w1, [x0, x19] + strh w24, [x20, 2616] + ldr x1, [x20, 2608] + add x1, x1, x2 + ldr w0, [x1, 4] + orr w0, w0, -2147483648 + str w0, [x1, 4] + b .L1028 +.L1023: + ldr x1, [x20, 2608] mov x0, 0 - lsr w21, w25, w24 - and w21, w21, 65535 -.L984: - and x19, x0, 65535 - cmp w19, w1 - bcc .L989 + ldrh w2, [x20, 342] + sub x1, x1, #16 +.L1025: + and w25, w0, 65535 + cmp w2, w0, uxth + bhi .L1029 bl select_l2p_ram_region - and x19, x0, 65535 - add x2, x20, :lo12:.LANCHOR0 - ubfiz x1, x19, 4, 16 - mov w26, w0 - ldr x2, [x2, 2608] + and w25, w0, 65535 + mov w21, w25 + ldr x2, [x20, 2608] + ubfiz x1, x21, 4, 16 add x3, x2, x1 ldrh w2, [x2, x1] mov w1, 65535 cmp w2, w1 - beq .L990 + beq .L1030 ldr w1, [x3, 4] - tbz w1, #31, .L990 + tbz w1, #31, .L1030 bl flush_l2p_region -.L990: - mov w1, w26 - mov w0, w21 +.L1030: + mov w1, w21 + mov w0, w24 bl load_l2p_region - b .L986 -.L983: - mov w0, -1 - cbnz w23, .L981 - str w0, [x22] -.L981: - 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 -.L989: - add x0, x0, 1 - add x3, x2, x0, lsl 4 - ldrh w3, [x3, -16] - cmp w3, w21 - bne .L984 -.L986: - mov x0, 1 - lsl x0, x0, x24 - sub w0, w0, #1 - and w0, w0, w25 - and x0, x0, 65535 - cbnz w23, .L987 - add x1, x20, :lo12:.LANCHOR0 - ldr x1, [x1, 2608] - add x1, x1, x19, lsl 4 - ldr x1, [x1, 8] - ldr w0, [x1, x0, lsl 2] - str w0, [x22] -.L988: - add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x20, 2608] - add x19, x0, x19, lsl 4 - ldr w0, [x19, 4] - cmn w0, #1 - beq .L992 - add w0, w0, 1 - str w0, [x19, 4] -.L992: - mov w0, 0 - b .L981 -.L987: - add x2, x20, :lo12:.LANCHOR0 - lsl x1, x19, 4 - ldr w4, [x22] - ldr x3, [x2, 2608] - add x3, x3, x1 - ldr x3, [x3, 8] - str w4, [x3, x0, lsl 2] - strh w21, [x2, 2616] - ldr x0, [x2, 2608] - add x0, x0, x1 - ldr w1, [x0, 4] - orr w1, w1, -2147483648 - str w1, [x0, 4] - b .L988 + b .L1026 .size log2phys, .-log2phys .align 2 .global FtlWriteDump_data .type FtlWriteDump_data, %function FtlWriteDump_data: - stp x29, x30, [sp, -128]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE94 + .text +.LPFE94: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -112]! + mrs x0, sp_el0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - add x20, x19, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - adrp x22, __stack_chk_guard - stp x25, x26, [sp, 64] - add x0, x22, :lo12:__stack_chk_guard - ldrh w2, [x20, 28] - ldr x1, [x0] - str x1, [x29, 120] - mov x1,0 - cbz w2, .L996 - ldrb w1, [x20, 32] - cbnz w1, .L996 - ldrb w1, [x20, 31] - ldrh w3, [x20, 306] + str x23, [sp, 48] + ldrh w2, [x19, 28] + ldr x1, [x0, 1376] + str x1, [sp, 104] + mov x1, 0 + cbz w2, .L1036 + ldrb w1, [x19, 32] + cbnz w1, .L1036 + ldrb w1, [x19, 31] + ldrh w3, [x19, 306] mul w1, w1, w3 cmp w2, w1 - beq .L996 - ldrb w0, [x20, 34] - cbnz w0, .L995 - ldr w23, [x20, 2632] - add x1, x29, 84 - ldrh w25, [x20, 236] + beq .L1036 + ldrb w0, [x19, 34] + cbnz w0, .L1035 + ldr w22, [x19, 2624] + add x1, sp, 68 + ldrh w21, [x19, 236] mov w2, 0 - sub w23, w23, #1 - mov w0, w23 + sub w22, w22, #1 + mov w0, w22 bl log2phys - ldr x21, [x20, 3528] - ldr w0, [x29, 84] - ldr x1, [x20, 3464] - str w0, [x29, 92] + ldr x20, [x19, 3512] + str w22, [sp, 96] + ldr w0, [sp, 68] + ldr x1, [x19, 3448] + str w0, [sp, 76] + stp x1, x20, [sp, 80] + str wzr, [x20, 4] cmn w0, #1 - stp x1, x21, [x29, 96] - str w23, [x29, 112] - str wzr, [x21, 4] - beq .L998 + beq .L1038 + add x0, sp, 72 mov w2, 0 mov w1, 1 - add x0, x29, 88 bl FlashReadPages -.L999: - add x26, x19, :lo12:.LANCHOR0 - lsl w25, w25, 2 - add x20, x26, 24 +.L1039: + lsl w21, w21, 2 + add x23, x19, 24 mov w0, -3947 - mov w24, 0 - strh w0, [x21] -.L1000: - cmp w25, w24 - bne .L1004 -.L1001: - add x19, x19, :lo12:.LANCHOR0 + strh w0, [x20] +.L1040: + cbnz w21, .L1044 +.L1041: mov w0, 1 strb w0, [x19, 34] -.L995: - add x22, x22, :lo12:__stack_chk_guard - ldr x1, [x29, 120] - ldr x0, [x22] - eor x0, x1, x0 - cbz x0, .L1006 +.L1035: + mrs x0, sp_el0 + ldr x1, [sp, 104] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1046 bl __stack_chk_fail -.L998: - ldrh w2, [x20, 314] +.L1038: + ldrh w2, [x19, 314] mov w1, 255 - ldr x0, [x20, 3464] + ldr x0, [x19, 3448] bl ftl_memset - b .L999 -.L1004: - ldrh w0, [x20, 4] - cbz w0, .L1001 - ldr w0, [x29, 92] - add w24, w24, 1 - stp w23, w0, [x21, 8] - ldrh w0, [x20] - strh w0, [x21, 2] - mov x0, x20 + b .L1039 +.L1044: + ldrh w0, [x23, 4] + cbz w0, .L1041 + ldr w0, [sp, 76] + sub w21, w21, #1 + stp w22, w0, [x20, 8] + ldrh w0, [x23] + strh w0, [x20, 2] + mov x0, x23 bl get_new_active_ppa - str w0, [x29, 92] - ldr w0, [x26, 2672] + str w0, [sp, 76] + ldr w0, [x19, 2664] mov w3, 0 - str w0, [x21, 4] + str w0, [x20, 4] mov w2, 0 - add w0, w0, 1 + cmn w0, #2 mov w1, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x26, 2672] - add x0, x29, 88 + csinc w0, wzr, w0, eq + str w0, [x19, 2664] + add x0, sp, 72 bl FlashProgPages - ldrh w0, [x20] + ldrh w0, [x23] bl decrement_vpc_count - b .L1000 -.L996: - add x19, x19, :lo12:.LANCHOR0 + b .L1040 +.L1036: strb wzr, [x19, 34] - b .L995 -.L1006: + b .L1035 +.L1046: 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 + ldr x23, [sp, 48] + ldp x29, x30, [sp], 112 + hint 29 // autiasp ret .size FtlWriteDump_data, .-FtlWriteDump_data .align 2 .global FtlReUsePrevPpa .type FtlReUsePrevPpa, %function FtlReUsePrevPpa: - stp x29, x30, [sp, -80]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE95 + .text +.LPFE95: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -64]! + mov x29, sp + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] mov w21, w0 - stp x19, x20, [sp, 16] - lsr w0, w1, 10 - str w1, [x29, 76] - adrp x22, .LANCHOR0 - str x23, [sp, 48] + ubfx x0, x1, 10, 16 + str w1, [sp, 60] bl P2V_block_in_plane - add x2, x22, :lo12:.LANCHOR0 - and w0, w0, 65535 - ubfiz x20, x0, 1, 16 - ldr x3, [x2, 72] - ldrh w1, [x3, x20] - cbnz w1, .L1015 - ldr x19, [x2, 2592] - cbz x19, .L1016 - ldrh w3, [x2, 228] - mov x4, -6148914691236517206 - ldr x2, [x2, 2560] - movk x4, 0xaaab, lsl 0 - mov w5, 65535 - sub x19, x19, x2 - asr x19, x19, 1 - mul x19, x19, x4 - mov w4, 6 - and w19, w19, 65535 -.L1017: - cmp w1, w3 - beq .L1016 - cmp w19, w0 - bne .L1018 - add x23, x22, :lo12:.LANCHOR0 - mov w1, w19 - add x0, x23, 2592 + and w4, w0, 65535 + mov w22, w4 + ldr x0, [x19, 72] + ubfiz x20, x22, 1, 16 + ldrh w3, [x0, x20] + cbnz w3, .L1055 + ldr x2, [x19, 2592] + cbz x2, .L1056 + ldr x0, [x19, 2560] + mov x5, -6148914691236517206 + movk x5, 0xaaab, lsl 0 + ldrh w1, [x19, 228] + sub x2, x2, x0 + mov w6, 65535 + asr x2, x2, 1 + mul x2, x2, x5 + mov w5, 6 + and w2, w2, 65535 +.L1057: + cmp w3, w1 + beq .L1056 + cmp w2, w4 + bne .L1058 + mov w1, w22 + add x0, x19, 2592 bl List_remove_node - ldrh w0, [x23, 228] - cbnz w0, .L1019 + ldrh w0, [x19, 228] + cbnz w0, .L1059 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1735 - add x1, x1, 504 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 419 + add x0, x0, :lo12:.LC9 + mov w2, 1742 bl sftl_printk -.L1019: - add x22, x22, :lo12:.LANCHOR0 - ldrh w0, [x22, 228] +.L1059: + ldrh w0, [x19, 228] sub w0, w0, #1 - strh w0, [x22, 228] - mov w0, w19 + strh w0, [x19, 228] + mov w0, w22 bl INSERT_DATA_LIST - ldr x1, [x22, 72] + ldr x1, [x19, 72] ldrh w0, [x1, x20] add w0, w0, 1 strh w0, [x1, x20] -.L1016: - add x1, x29, 76 - mov w2, 1 +.L1056: + add x1, sp, 60 mov w0, w21 + mov w2, 1 bl log2phys ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldr x23, [sp, 48] - ldp x29, x30, [sp], 80 + ldp x29, x30, [sp], 64 + hint 29 // autiasp ret -.L1018: - umull x19, w19, w4 - ldrh w19, [x2, x19] - cmp w19, w5 - beq .L1016 - add w1, w1, 1 - and w1, w1, 65535 - b .L1017 -.L1015: - add w1, w1, 1 - strh w1, [x3, x20] - b .L1016 +.L1058: + umull x2, w2, w5 + ldrh w2, [x0, x2] + cmp w2, w6 + beq .L1056 + add w3, w3, 1 + and w3, w3, 65535 + b .L1057 +.L1055: + add w3, w3, 1 + strh w3, [x0, x20] + b .L1056 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .section .rodata.str1.1 +.LC110: + .string "data prev_ppa = %x error...................\n" +.LC111: + .string "spuer block %x vpn is 0\n " + .text .align 2 .global FtlRecoverySuperblock .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE96 + .text +.LPFE96: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -192]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x20, x0 + mrs x0, sp_el0 stp x21, x22, [sp, 32] - adrp x0, __stack_chk_guard stp x23, x24, [sp, 48] - add x1, x0, :lo12:__stack_chk_guard stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] - str x0, [x29, 120] - ldr x2, [x1] - str x2, [x29, 184] - mov x2,0 + ldr x1, [x0, 1376] + str x1, [sp, 184] + mov x1, 0 + ldrh w0, [x20] mov w1, 65535 - ldrh w2, [x20] - cmp w2, w1 - beq .L1027 - ldrb w0, [x20, 6] + cmp w0, w1 + beq .L1067 adrp x19, .LANCHOR0 - str w0, [x29, 156] - add x0, x19, :lo12:.LANCHOR0 - ldrh w26, [x20, 2] - ldrh w0, [x0, 306] - cmp w0, w26 - bne .L1028 + add x19, x19, :lo12:.LANCHOR0 + ldrb w0, [x20, 6] + ldrh w24, [x20, 2] + str w0, [sp, 152] + ldrh w0, [x19, 306] + cmp w0, w24 + bne .L1068 + strh w0, [x20, 2] strh wzr, [x20, 4] -.L1154: +.L1189: strb wzr, [x20, 6] -.L1027: - ldr x1, [x29, 120] - mov w0, 0 - add x1, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 184] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L1096 +.L1067: + mrs x0, sp_el0 + ldr x1, [sp, 184] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1133 bl __stack_chk_fail -.L1028: +.L1068: ldrh w0, [x20, 16] mov w21, 0 -.L1029: +.L1069: cmp w0, w1 - beq .L1030 + beq .L1070 mov w1, 1 bl FtlGetLastWrittenPage - mov w23, w0 + mov w26, w0 cmn w0, #1 - beq .L1031 - add x0, x19, :lo12:.LANCHOR0 - add x28, x20, 16 - mov x4, x28 + beq .L1071 + ldrh w6, [x19, 236] + add x9, x20, 16 + ldrh w7, [x19, 314] + mov x1, 0 + ldrh w8, [x19, 316] mov w22, 0 mov w10, 65535 - mov w6, 4 - ldrh w3, [x0, 236] - ldrh w8, [x0, 314] - add x3, x3, 8 - ldrh w9, [x0, 316] - add x3, x20, x3, lsl 1 -.L1032: - cmp x3, x4 - bne .L1036 - add x24, x19, :lo12:.LANCHOR0 + mov w4, 4 +.L1072: + ldr x0, [x19, 3424] + cmp w6, w1, uxth + bhi .L1076 mov w2, 0 mov w1, w22 - ldr x0, [x24, 3440] bl FlashReadPages - ldr w21, [x24, 2672] - ldr x4, [x24, 3440] - and w9, w23, 65535 + ldr w21, [x19, 2664] + ldr x28, [x19, 3424] + and w4, w26, 65535 sub w21, w21, #1 - mov w7, 65535 - mov x6, x4 - mov w3, 0 -.L1037: - cmp w22, w3 - bne .L1042 - add w22, w23, 1 - ldr w0, [x4, 4] - and w22, w22, 65535 -.L1149: - lsr w0, w0, 10 + mov w25, 65535 + mov x2, x28 + mov w27, 0 +.L1077: + cmp w22, w27 + bne .L1082 + add w23, w26, 1 + ldr w0, [x28, 4] + and w23, w23, 65535 +.L1184: + ubfx x0, x0, 10, 16 bl P2V_plane - and w27, w0, 65535 - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 306] - cmp w0, w22 - bne .L1044 - strh w22, [x20, 2] - strb wzr, [x20, 6] + and w22, w0, 65535 + ldrh w0, [x19, 306] + cmp w0, w23 + bne .L1084 + strh w23, [x20, 2] strh wzr, [x20, 4] -.L1044: - ldr w0, [x29, 156] - cmp w22, w26 - ccmp w27, w0, 0, eq - bne .L1045 -.L1155: - mov w2, w27 - mov w1, w22 + strb wzr, [x20, 6] +.L1084: + ldr w0, [sp, 152] + cmp w23, w24 + ccmp w22, w0, 0, eq + bne .L1085 +.L1190: + mov w2, w22 + mov w1, w23 mov x0, x20 bl ftl_sb_update_avl_pages - b .L1027 -.L1030: - add w21, w21, 1 - and w21, w21, 65535 - add x0, x20, x21, sxtw 1 + b .L1067 +.L1070: + add w0, w21, 1 + and w21, w0, 65535 + add x0, x20, x0, uxth 1 ldrh w0, [x0, 16] - b .L1029 -.L1031: - cbz w26, .L1033 + b .L1069 +.L1071: + cbz w24, .L1073 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1802 - add x1, x1, 520 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 435 + add x0, x0, :lo12:.LC9 + mov w2, 1809 bl sftl_printk -.L1033: - ldr w0, [x29, 156] +.L1073: + ldr w0, [sp, 152] cmp w0, 0 ccmp w21, w0, 4, ne - beq .L1034 + beq .L1074 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1803 - add x1, x1, 520 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 435 + add x0, x0, :lo12:.LC9 + mov w2, 1810 bl sftl_printk -.L1034: +.L1074: strh wzr, [x20, 2] - b .L1154 -.L1036: - ldrh w1, [x4] - cmp w1, w10 - beq .L1035 - ldr x5, [x0, 3440] - ubfiz x7, x22, 5, 16 - orr w1, w23, w1, lsl 10 - add x5, x5, x7 - str w1, [x5, 4] - mul w1, w22, w8 - ldr x2, [x0, 3440] - ldr x5, [x0, 3264] - sdiv w1, w1, w6 - add x2, x2, x7 - add x1, x5, x1, sxtw 2 - str x1, [x2, 8] - mul w1, w22, w9 - ldr x5, [x0, 3272] + b .L1189 +.L1076: + ldrh w3, [x9, x1, lsl 1] + cmp w3, w10 + beq .L1075 + ubfiz x5, x22, 5, 16 + orr w3, w26, w3, lsl 10 + add x0, x0, x5 + str w3, [x0, 4] + mul w0, w22, w7 + ldr x2, [x19, 3424] + sdiv w0, w0, w4 + ldr x3, [x19, 3256] + add x2, x2, x5 + add x0, x3, x0, sxtw 2 + str x0, [x2, 8] + mul w0, w22, w8 add w22, w22, 1 + ldr x3, [x19, 3264] and w22, w22, 65535 - sdiv w1, w1, w6 - add x1, x5, x1, sxtw 2 - str x1, [x2, 16] -.L1035: - add x4, x4, 2 - b .L1032 -.L1042: - ldr w0, [x6] - cbnz w0, .L1038 - ldr x8, [x6, 16] - ldr w5, [x8, 4] - cmn w5, #1 - beq .L1039 - ldr w1, [x24, 2672] - mov w0, w5 + sdiv w0, w0, w4 + add x0, x3, x0, sxtw 2 + str x0, [x2, 16] +.L1075: + add x1, x1, 1 + b .L1072 +.L1082: + ldr w0, [x2] + cbnz w0, .L1078 + ldr x3, [x2, 16] + ldr w23, [x3, 4] + cmn w23, #1 + beq .L1079 + ldr w1, [x19, 2664] + mov w0, w23 + stp x3, x2, [sp, 96] + str w4, [sp, 112] bl ftl_cmp_data_ver - cbz w0, .L1039 - add w5, w5, 1 - str w5, [x24, 2672] -.L1039: - ldr w0, [x8] - cmn w0, #1 - bne .L1041 - ubfiz x3, x3, 5, 16 - and w22, w23, 65535 - add x3, x4, x3 - ldr w0, [x3, 4] - b .L1149 -.L1038: - mov w7, w9 -.L1041: - add w3, w3, 1 - add x6, x6, 32 - and w3, w3, 65535 - b .L1037 -.L1045: - mov w0, 65535 - cmp w7, w0 - bne .L1046 - ldrb w0, [x20, 8] - cbnz w0, .L1047 -.L1046: - add x0, x19, :lo12:.LANCHOR0 - and w3, w23, 65535 - ldr w1, [x0, 3724] - cmn w1, #1 - bne .L1048 - str w21, [x0, 3724] -.L1048: - add w0, w26, 7 - cmp w0, w23, uxth - bge .L1097 - sub w24, w3, #7 - and w24, w24, 65535 -.L1049: - add x25, x19, :lo12:.LANCHOR0 - mov w4, 65535 -.L1050: - cmp w24, w3 - bhi .L1057 - ldrh w0, [x25, 236] - mov x1, x28 - mov w23, 0 - add x0, x0, 8 - add x0, x20, x0, lsl 1 - b .L1058 -.L1097: - mov w24, w26 - b .L1049 -.L1052: - ldrh w2, [x1] - cmp w2, w4 - beq .L1051 - ldr x5, [x25, 3440] - ubfiz x6, x23, 5, 16 + ldr w4, [sp, 112] + ldp x3, x2, [sp, 96] + cbz w0, .L1079 add w23, w23, 1 - orr w2, w24, w2, lsl 10 - add x5, x5, x6 - and w23, w23, 65535 - str w2, [x5, 4] -.L1051: - add x1, x1, 2 -.L1058: - cmp x0, x1 - bne .L1052 - ldr x0, [x25, 3440] - mov w1, w23 - str w4, [x29, 136] - mov w2, 0 - str w3, [x29, 144] - ubfiz x23, x23, 5, 16 - add x23, x23, 16 - bl FlashReadPages - ldr x1, [x25, 3440] - ldr w4, [x29, 136] - ldr w3, [x29, 144] - add x0, x1, 16 - add x23, x1, x23 -.L1053: - cmp x23, x0 - bne .L1056 - add w24, w24, 1 - and w24, w24, 65535 - b .L1050 -.L1056: - ldr w1, [x0, -16] - cbnz w1, .L1047 - ldr x1, [x0] - ldrh w2, [x1] - cmp w2, w4 - beq .L1055 - ldr w1, [x1, 4] - cmn w1, #1 - beq .L1055 - str w1, [x25, 3724] -.L1055: - add x0, x0, 32 - b .L1053 -.L1057: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - str w1, [x0, 3724] -.L1047: - add x19, x19, :lo12:.LANCHOR0 + str w23, [x19, 2664] +.L1079: + ldr w0, [x3] + cmn w0, #1 + bne .L1081 + ubfiz x27, x27, 5, 16 + and w23, w26, 65535 + add x27, x28, x27 + ldr w0, [x27, 4] + b .L1184 +.L1078: + mov w25, w4 +.L1081: + add w27, w27, 1 + add x2, x2, 32 + and w27, w27, 65535 + b .L1077 +.L1085: + mov w0, 65535 + cmp w25, w0 + bne .L1086 + ldrb w0, [x20, 8] + cbnz w0, .L1087 +.L1086: + ldr w0, [x19, 3708] + and w27, w26, 65535 + cmn w0, #1 + bne .L1088 + str w21, [x19, 3708] +.L1088: + add w0, w24, 7 + sub w25, w26, #7 + and w25, w25, 65535 + cmp w0, w26, uxth + csel w25, w25, w24, lt + add x4, x20, 16 + mov w28, 65535 +.L1090: + ldrh w3, [x19, 236] + cmp w25, w27 + bls .L1135 + mov w0, -1 + str w0, [x19, 3708] +.L1087: mov w0, 1 - mov w24, w26 - strh w0, [x19, 3760] - add x0, x19, 3768 - str x0, [x29, 112] -.L1059: - ldrh w0, [x19, 236] - mov x1, x28 - mov w23, 0 - mov w4, 65535 - add x0, x0, 8 - add x0, x20, x0, lsl 1 -.L1060: - cmp x0, x1 - bne .L1062 - ldr x0, [x19, 3440] - mov w1, w23 - mov w2, 0 - bl FlashReadPages - ubfiz x0, x23, 5, 16 - str x0, [x29, 128] + mov w27, w24 + strh w0, [x19, 3744] adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 520 - mov x23, 0 - str x0, [x29, 136] -.L1063: - ldr x0, [x29, 128] - cmp x0, x23 - bne .L1090 - add w24, w24, 1 - ldrh w0, [x19, 306] - and w24, w24, 65535 - cmp w0, w24 - bne .L1059 - ldrh w1, [x19, 236] - mov w0, 0 - strh w24, [x20, 2] - mov w2, 65535 + add x0, x0, 435 + str x0, [sp, 120] +.L1098: + ldrh w3, [x19, 236] + add x4, x20, 16 + mov x1, 0 + mov w28, 0 + mov w5, 65535 +.L1099: + ldr x0, [x19, 3424] + cmp w3, w1, uxth + bhi .L1101 + mov w1, w28 + mov w2, 0 + bl FlashReadPages + str xzr, [sp, 96] + adrp x0, .LC111 + add x0, x0, :lo12:.LC111 + str x0, [sp, 128] +.L1102: + ldrh w0, [sp, 96] + cmp w28, w0, uxth + bhi .L1129 + ldrh w1, [x19, 306] + add w0, w27, 1 + and w27, w0, 65535 + cmp w1, w0, uxth + bne .L1098 + ldrh w2, [x19, 236] + add x3, x20, 14 + mov x0, 0 + mov w4, 65535 + strh w27, [x20, 2] strh wzr, [x20, 4] -.L1091: - cmp w0, w1 - beq .L1027 - ldrh w3, [x28], 2 - cmp w3, w2 - beq .L1092 +.L1130: + cmp w2, w0, uxth + bls .L1067 + add x1, x0, 1 + ldrh w5, [x3, x1, lsl 1] + cmp w5, w4 + beq .L1136 strb w0, [x20, 6] - b .L1027 -.L1062: - ldrh w2, [x1] - cmp w2, w4 - beq .L1061 - ldr x3, [x19, 3440] - ubfiz x5, x23, 5, 16 - add w23, w23, 1 - orr w2, w24, w2, lsl 10 - add x3, x3, x5 - and w23, w23, 65535 - str w2, [x3, 4] -.L1061: - add x1, x1, 2 - b .L1060 -.L1090: - ldr x4, [x19, 3440] - add x4, x4, x23 - ldr w5, [x4, 4] - str w5, [x29, 180] - lsr w0, w5, 10 + b .L1067 +.L1092: + ldrh w2, [x4, x1, lsl 1] + cmp w2, w28 + beq .L1091 + ubfiz x5, x26, 5, 16 + add w26, w26, 1 + add x0, x0, x5 + and w26, w26, 65535 + orr w2, w25, w2, lsl 10 + str w2, [x0, 4] +.L1091: + add x1, x1, 1 +.L1097: + ldr x0, [x19, 3424] + cmp w3, w1, uxth + bhi .L1092 + mov w1, w26 + mov w2, 0 + str x4, [sp, 96] + bl FlashReadPages + ldr x0, [x19, 3424] + mov w1, 32 + ldr x4, [sp, 96] + umaddl x1, w1, w26, x0 +.L1093: + cmp x1, x0 + bne .L1096 + add w25, w25, 1 + and w25, w25, 65535 + b .L1090 +.L1135: + mov x1, 0 + mov w26, 0 + b .L1097 +.L1096: + ldr w2, [x0] + cbnz w2, .L1087 + ldr x2, [x0, 16] + ldrh w3, [x2] + cmp w3, w28 + beq .L1095 + ldr w2, [x2, 4] + cmn w2, #1 + beq .L1095 + str w2, [x19, 3708] +.L1095: + add x0, x0, 32 + b .L1093 +.L1101: + ldrh w2, [x4, x1, lsl 1] + cmp w2, w5 + beq .L1100 + ubfiz x6, x28, 5, 16 + add w28, w28, 1 + add x0, x0, x6 + and w28, w28, 65535 + orr w2, w27, w2, lsl 10 + str w2, [x0, 4] +.L1100: + add x1, x1, 1 + b .L1099 +.L1129: + ldr x0, [sp, 96] + ldr x2, [x19, 3424] + lsl x26, x0, 5 + add x1, x2, x0, lsl 5 + stp x1, x2, [sp, 104] + ldr w25, [x1, 4] + str w25, [sp, 180] + cmp w27, w24 + bcc .L1103 + ubfx x0, x25, 10, 16 bl P2V_plane + ldr w1, [sp, 152] and w0, w0, 65535 - cmp w24, w26 - bcc .L1064 - ldr w1, [x29, 156] + cmp w27, w24 ccmp w1, w0, 0, eq - bhi .L1064 - cmp w24, w22 - ccmp w27, w0, 0, eq - beq .L1065 - ldr w0, [x4] + bhi .L1103 + cmp w27, w23 + ccmp w22, w0, 0, eq + ldp x1, x2, [sp, 104] + bne .L1104 + strh w23, [x20, 2] + strb w22, [x20, 6] + b .L1190 +.L1104: + ldr w0, [x2, x26] cmn w0, #1 - beq .L1066 - ldr x3, [x4, 16] + beq .L1105 + ldr x3, [x1, 16] mov w0, 61589 - ldrh w1, [x3] - cmp w1, w0 - beq .L1067 + ldrh w25, [x3] + cmp w25, w0 + beq .L1106 ldrh w0, [x20] -.L1151: +.L1186: bl decrement_vpc_count - b .L1064 -.L1067: + b .L1103 +.L1106: ldr w21, [x3, 4] cmn w21, #1 - beq .L1068 - ldr w1, [x19, 2672] + beq .L1108 + ldr w1, [x19, 2664] mov w0, w21 - str x3, [x29, 144] + str x3, [sp, 104] bl ftl_cmp_data_ver - ldr x3, [x29, 144] - cbz w0, .L1068 + ldr x3, [sp, 104] + cbz w0, .L1108 add w0, w21, 1 - str w0, [x19, 2672] -.L1068: - ldrh w1, [x3] - mov w0, 61589 - cmp w1, w0 - beq .L1069 - ldr x1, [x29, 136] - mov w2, 1954 - str x3, [x29, 144] - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 - bl sftl_printk - ldr x3, [x29, 144] -.L1069: - ldp w25, w0, [x3, 8] - add x1, x29, 176 - str w0, [x29, 172] - mov w2, 0 - mov w0, w25 - bl log2phys - ldr w1, [x19, 3724] - ldr w3, [x29, 172] - cmn w1, #1 - beq .L1070 - mov w0, w21 - bl ftl_cmp_data_ver - cbz w0, .L1070 - cmn w3, #1 - beq .L1071 - ldr x0, [x19, 3440] - mov w2, 0 - mov w1, 1 - add x0, x0, x23 - ldr x4, [x0, 16] - str w3, [x0, 4] - str x4, [x29, 144] - ldr x0, [x19, 3440] - add x0, x0, x23 - bl FlashReadPages - ldr x0, [x19, 3440] - ldr x4, [x29, 144] - add x3, x0, x23 - ldr w0, [x0, x23] - cmn w0, #1 - bne .L1072 -.L1073: - mov w0, -1 - str w0, [x29, 172] -.L1080: - ldr w4, [x29, 172] - cmn w4, #1 - beq .L1064 -.L1095: - lsr w0, w4, 10 - bl P2V_block_in_plane - and w25, w0, 65535 - ldrh w0, [x19, 244] - mov w3, w25 + str w0, [x19, 2664] + ldrh w0, [x3] cmp w0, w25 - bhi .L1086 - ldr x1, [x29, 136] - mov w2, 2059 - adrp x0, .LC8 - str w25, [x29, 144] - add x0, x0, :lo12:.LC8 + beq .L1108 + ldr x1, [sp, 120] + mov w2, 1961 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - ldr w3, [x29, 144] -.L1086: - ldr x1, [x19, 72] - ubfiz x0, x25, 1, 16 - ldrh w0, [x1, x0] - cbz w0, .L1087 - mov w0, w3 - b .L1151 -.L1071: - ldp w1, w0, [x29, 176] - cmp w1, w0 - bne .L1064 - mov w2, 1 - add x1, x29, 172 + ldr x3, [sp, 104] +.L1108: + add x1, sp, 176 + ldp w25, w0, [x3, 8] + mov w2, 0 + str w0, [sp, 172] mov w0, w25 bl log2phys -.L1064: - add x23, x23, 32 - b .L1063 -.L1072: - ldr w0, [x4, 8] - cmp w25, w0 - bne .L1073 - ldr w0, [x4, 4] - str w0, [x29, 144] - str x4, [x29, 104] - uxtw x1, w0 - ldr w0, [x19, 3724] + ldr w1, [x19, 3708] + ldr w2, [sp, 172] + cmn w1, #1 + beq .L1110 + mov w0, w21 + str w2, [sp, 104] bl ftl_cmp_data_ver - cbz w0, .L1073 - ldp w0, w1, [x29, 176] - ldr x4, [x29, 104] - cmp w0, w1 - ldr w1, [x29, 172] - bne .L1075 -.L1150: - mov w0, w25 - bl FtlReUsePrevPpa - b .L1073 -.L1075: - cmp w0, w1 - beq .L1073 - cmn w0, #1 - beq .L1076 - ldr x4, [x3, 16] + ldr w2, [sp, 104] + cbz w0, .L1110 + cmn w2, #1 + beq .L1111 + ldr x0, [x19, 3424] + add x0, x0, x26 + str w2, [x0, 4] mov w2, 0 - str w0, [x3, 4] + ldr x1, [x0, 16] + str x1, [sp, 104] + ldr x0, [x19, 3424] mov w1, 1 - str x4, [x29, 104] - ldr x0, [x19, 3440] - add x0, x0, x23 + add x0, x0, x26 bl FlashReadPages - ldr x4, [x29, 104] -.L1077: + ldr x2, [x19, 3424] + add x3, x2, x26 + ldr w0, [x2, x26] + cmn w0, #1 + bne .L1112 +.L1113: + mov w0, -1 + str w0, [sp, 172] +.L1120: + ldr w0, [sp, 172] + cmn w0, #1 + beq .L1103 + ubfx x0, x0, 10, 16 + bl P2V_block_in_plane + and w26, w0, 65535 + ldrh w0, [x19, 244] + mov w25, w26 + cmp w0, w26, uxth + bhi .L1125 + ldr x1, [sp, 120] + adrp x0, .LC9 + mov w2, 2066 + add x0, x0, :lo12:.LC9 + bl sftl_printk +.L1125: + ldr x1, [x19, 72] + ubfiz x0, x26, 1, 16 + ldrh w0, [x1, x0] + cbz w0, .L1126 + mov w0, w25 + b .L1186 +.L1111: + ldp w1, w0, [sp, 176] + cmp w1, w0 + bne .L1103 + add x1, sp, 172 + mov w0, w25 + mov w2, 1 + bl log2phys +.L1103: + ldr x0, [sp, 96] + add x0, x0, 1 + str x0, [sp, 96] + b .L1102 +.L1112: + ldr x0, [sp, 104] + ldr w4, [x0, 8] + cmp w4, w25 + bne .L1113 + ldr w0, [x0, 4] + str w0, [sp, 112] + uxtw x1, w0 + ldr w0, [x19, 3708] + stp x3, x2, [sp, 136] + str w4, [sp, 156] + bl ftl_cmp_data_ver + cbz w0, .L1113 + ldp w1, w0, [sp, 172] + ldr w5, [sp, 180] + ldr w4, [sp, 156] + cmp w0, w5 + ldp x3, x2, [sp, 136] + bne .L1115 + mov w0, w4 +.L1185: + bl FtlReUsePrevPpa + b .L1113 +.L1115: + cmp w0, w1 + beq .L1113 + cmn w0, #1 + beq .L1116 + str w0, [x3, 4] + mov w2, 0 + ldr x1, [x3, 16] + str x1, [sp, 104] + ldr x0, [x19, 3424] + mov w1, 1 + add x0, x0, x26 + bl FlashReadPages +.L1117: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0, 3440] - ldr w1, [x1, x23] + ldr x1, [x0, 3424] + ldr w1, [x1, x26] cmn w1, #1 - beq .L1078 - ldr w3, [x4, 4] - ldr w0, [x0, 3724] - mov w1, w3 + beq .L1118 + ldr x1, [sp, 104] + ldr w0, [x0, 3708] + ldr w26, [x1, 4] + mov w1, w26 bl ftl_cmp_data_ver - cbz w0, .L1078 - ldr w0, [x29, 144] - mov w1, w3 + cbz w0, .L1118 + ldr w0, [sp, 112] + mov w1, w26 bl ftl_cmp_data_ver - cbz w0, .L1073 -.L1078: - ldr w1, [x29, 172] - b .L1150 -.L1076: - str w0, [x3] - b .L1077 -.L1070: - ldp w1, w0, [x29, 176] - cmp w1, w0 - beq .L1080 - cmn w3, #1 - beq .L1082 - ldr w0, [x19, 252] - cmp w0, w3, lsr 10 - bhi .L1082 - adrp x0, .LC109 - mov w1, w3 - add x0, x0, :lo12:.LC109 -.L1153: - bl sftl_printk - b .L1064 -.L1082: - mov w2, 1 - add x1, x29, 180 + cbz w0, .L1113 +.L1118: + ldr w1, [sp, 172] mov w0, w25 + b .L1185 +.L1116: + str w0, [x2, x26] + b .L1117 +.L1110: + ldp w1, w0, [sp, 176] + cmp w1, w0 + beq .L1120 + cmn w2, #1 + beq .L1122 + ldr w0, [x19, 252] + cmp w0, w2, lsr 10 + bhi .L1122 + adrp x0, .LC110 + mov w1, w2 + add x0, x0, :lo12:.LC110 +.L1188: + bl sftl_printk + b .L1103 +.L1122: + add x1, sp, 180 + mov w0, w25 + mov w2, 1 bl log2phys - ldr w4, [x29, 176] - cmn w4, #1 - beq .L1080 - ldr w0, [x29, 172] - cmp w4, w0 - beq .L1095 - lsr w0, w4, 10 + ldr w26, [sp, 176] + cmn w26, #1 + beq .L1120 + ldr w0, [sp, 172] + cmp w26, w0 + beq .L1120 + ubfx x0, x26, 10, 16 bl P2V_block_in_plane - ldrh w1, [x19, 24] - and w0, w0, 65535 - cmp w1, w0 - beq .L1085 - ldrh w1, [x19, 80] - cmp w1, w0 - beq .L1085 - ldrh w1, [x19, 128] - cmp w1, w0 - bne .L1080 -.L1085: - ldr x0, [x19, 3440] + ldrh w2, [x19, 24] + and w1, w0, 65535 + cmp w2, w0, uxth + beq .L1124 + ldrh w0, [x19, 80] + cmp w0, w1 + beq .L1124 + ldrh w0, [x19, 128] + cmp w0, w1 + bne .L1120 +.L1124: + ldr x0, [x19, 3424] mov w2, 0 mov w1, 1 - str w4, [x0, 4] + str w26, [x0, 4] ldr x3, [x0, 16] - ldr x0, [x19, 3440] - str x3, [x29, 144] + str x3, [sp, 104] + ldr x0, [x19, 3424] bl FlashReadPages - ldr x0, [x19, 3440] + ldr x0, [x19, 3424] ldr w0, [x0] cmn w0, #1 - beq .L1080 - ldr x3, [x29, 144] + beq .L1120 + ldr x3, [sp, 104] mov w0, w21 ldr w1, [x3, 4] bl ftl_cmp_data_ver - cbnz w0, .L1080 - mov w2, 1 - add x1, x29, 176 + cbnz w0, .L1120 + add x1, sp, 176 mov w0, w25 + mov w2, 1 bl log2phys - b .L1080 -.L1087: - adrp x0, .LC110 - mov w1, w25 - add x0, x0, :lo12:.LC110 - b .L1153 -.L1066: - ldr w0, [x19, 3764] + b .L1120 +.L1126: + mov w1, w26 + ldr x0, [sp, 128] + b .L1188 +.L1105: + ldr w0, [x19, 3748] cmp w0, 31 - bhi .L1088 - ldr x1, [x29, 112] - str w5, [x1, w0, uxtw 2] + bhi .L1127 + add x1, x19, 3752 + str w25, [x1, w0, uxtw 2] add w0, w0, 1 - str w0, [x19, 3764] -.L1088: + str w0, [x19, 3748] +.L1127: ldrh w0, [x20] bl decrement_vpc_count - ldr w0, [x19, 3724] + ldr w0, [x19, 3708] cmn w0, #1 - bne .L1089 -.L1152: - str w21, [x19, 3724] - b .L1064 -.L1089: - cmp w21, w0 - bcs .L1064 - b .L1152 -.L1092: - add w0, w0, 1 - and w0, w0, 65535 - b .L1091 -.L1065: - strb w27, [x20, 6] - strh w22, [x20, 2] - b .L1155 -.L1096: + bne .L1128 +.L1187: + str w21, [x19, 3708] + b .L1103 +.L1128: + cmp w0, w21 + bls .L1103 + b .L1187 +.L1136: + mov x0, x1 + b .L1130 +.L1133: + 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], 192 + hint 29 // autiasp ret .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .section .rodata.str1.1 +.LC112: + .string "...%s enter...\n" +.LC113: + .string "FtlCheckVpc2 %x = %x %x\n" +.LC114: + .string "free blk vpc error %x = %x %x\n" + .text .align 2 .global ftl_check_vpc .type ftl_check_vpc, %function ftl_check_vpc: - stp x29, x30, [sp, -128]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE97 + .text +.LPFE97: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -112]! + mrs x0, sp_el0 + mov x29, sp stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x21, __stack_chk_guard - stp x23, x24, [sp, 48] - add x0, x21, :lo12:__stack_chk_guard - stp x25, x26, [sp, 64] - add x25, x20, :lo12:.LANCHOR0 - stp x27, x28, [sp, 80] + mov w19, 0 adrp x22, .LANCHOR1 - mov w24, 0 - adrp x23, check_vpc_table - ldr x1, [x0] - str x1, [x29, 120] - mov x1,0 - add x19, x23, :lo12:check_vpc_table - add x1, x22, :lo12:.LANCHOR1 - adrp x0, .LC111 - add x1, x1, 544 - add x0, x0, :lo12:.LC111 + stp x23, x24, [sp, 48] + add x22, x22, :lo12:.LANCHOR1 + adrp x21, check_vpc_table + stp x25, x26, [sp, 64] + add x21, x21, :lo12:check_vpc_table + stp x27, x28, [sp, 80] + ldr x1, [x0, 1376] + str x1, [sp, 104] + mov x1, 0 + adrp x0, .LC112 + add x1, x22, 457 + add x0, x0, :lo12:.LC112 bl sftl_printk + mov x0, x21 mov w2, 8192 mov w1, 0 - mov x0, x19 bl ftl_memset -.L1157: - ldr w0, [x25, 2632] - cmp w24, w0 - bcc .L1159 - adrp x26, .LC112 - add x24, x20, :lo12:.LANCHOR0 - add x27, x23, :lo12:check_vpc_table - add x26, x26, :lo12:.LC112 - mov w25, 0 - mov w19, 0 - mov w5, 65535 -.L1160: - ldrh w0, [x24, 244] +.L1192: + ldr w0, [x20, 2624] cmp w0, w19 - bhi .L1162 - ldr x19, [x24, 2592] - cbz x19, .L1163 - ldr x0, [x24, 2560] - adrp x26, .LC113 - add x20, x20, :lo12:.LANCHOR0 - add x23, x23, :lo12:check_vpc_table - sub x19, x19, x0 - mov x0, -6148914691236517206 - asr x19, x19, 1 - movk x0, 0xaaab, lsl 0 - add x26, x26, :lo12:.LC113 - ldrh w27, [x24, 228] - mov w28, 6 + bhi .L1194 + adrp x23, .LC113 + add x23, x23, :lo12:.LC113 mov w24, 0 - mul x19, x19, x0 + mov w19, 0 + mov w26, 65535 + mov w27, 1 +.L1195: + ldrh w0, [x20, 244] + cmp w0, w19 + bhi .L1197 + ldr x19, [x20, 2592] + cbz x19, .L1198 + ldr x1, [x20, 2560] + adrp x25, .LC114 + ldrh w26, [x20, 228] + add x25, x25, :lo12:.LC114 + sub x19, x19, x1 + mov x1, -6148914691236517206 + movk x1, 0xaaab, lsl 0 + mov w23, 0 + asr x19, x19, 1 + mov w27, 6 + mov w28, 65535 + mul x19, x19, x1 and w19, w19, 65535 -.L1164: - cmp w24, w27 - bne .L1166 -.L1163: - cbz w25, .L1156 - add x1, x22, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2387 - add x1, x1, 544 - add x0, x0, :lo12:.LC8 +.L1199: + cmp w23, w26 + bne .L1201 +.L1198: + cbz w24, .L1191 + adrp x0, .LC9 + add x1, x22, 457 + add x0, x0, :lo12:.LC9 + mov w2, 2394 bl sftl_printk -.L1156: - add x21, x21, :lo12:__stack_chk_guard - ldr x1, [x29, 120] - ldr x0, [x21] - eor x0, x1, x0 - cbz x0, .L1168 +.L1191: + mrs x0, sp_el0 + ldr x1, [sp, 104] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1203 bl __stack_chk_fail -.L1159: +.L1194: + add x1, sp, 100 + mov w0, w19 mov w2, 0 - add x1, x29, 116 - mov w0, w24 bl log2phys - ldr w0, [x29, 116] + ldr w0, [sp, 100] cmn w0, #1 - beq .L1158 - lsr w0, w0, 10 + beq .L1193 + ubfx x0, x0, 10, 16 bl P2V_block_in_plane and x0, x0, 65535 - ldrh w1, [x19, x0, lsl 1] + ldrh w1, [x21, x0, lsl 1] add w1, w1, 1 - strh w1, [x19, x0, lsl 1] -.L1158: - add w24, w24, 1 - b .L1157 -.L1162: - ldr x0, [x24, 72] - ubfiz x4, x19, 1, 16 + strh w1, [x21, x0, lsl 1] +.L1193: + add w19, w19, 1 + b .L1192 +.L1197: + ldr x0, [x20, 72] + ubfiz x25, x19, 1, 16 + ldrh w3, [x21, w19, sxtw 1] sxtw x28, w19 - str x4, [x29, 96] - ldrh w3, [x27, x28, lsl 1] - ldrh w2, [x0, x4] + ldrh w2, [x0, x25] cmp w2, w3 - beq .L1161 - mov x0, x26 - str w5, [x29, 108] + beq .L1196 + mov x0, x23 mov w1, w19 bl sftl_printk - ldr x0, [x24, 72] - ldr x4, [x29, 96] - ldr w5, [x29, 108] - ldrh w0, [x0, x4] - cmp w0, w5 - beq .L1161 - ldrh w1, [x27, x28, lsl 1] + ldr x0, [x20, 72] + ldrh w0, [x0, x25] + cmp w0, w26 + beq .L1196 + ldrh w1, [x21, x28, lsl 1] cmp w1, w0 - csinc w25, w25, wzr, ls -.L1161: + csel w24, w24, w27, ls +.L1196: add w19, w19, 1 and w19, w19, 65535 - b .L1160 -.L1166: + b .L1195 +.L1201: ldr x1, [x20, 72] ubfiz x0, x19, 1, 16 ldrh w2, [x1, x0] - cbz w2, .L1165 - ldrh w3, [x23, w19, sxtw 1] - mov w25, 1 + cbz w2, .L1200 + ldrh w3, [x21, w19, sxtw 1] + mov w24, 1 mov w1, w19 - mov x0, x26 + mov x0, x25 bl sftl_printk -.L1165: +.L1200: + umull x19, w19, w27 ldr x0, [x20, 2560] - umull x19, w19, w28 ldrh w19, [x0, x19] - mov w0, 65535 - cmp w19, w0 - beq .L1163 - add w24, w24, 1 - and w24, w24, 65535 - b .L1164 -.L1168: + cmp w19, w28 + beq .L1198 + add w23, w23, 1 + and w23, w23, 65535 + b .L1199 +.L1203: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 128 + ldp x29, x30, [sp], 112 + hint 29 // autiasp ret .size ftl_check_vpc, .-ftl_check_vpc + .section .rodata.str1.1 +.LC115: + .string "ftl_scan_all_data = %x\n" +.LC116: + .string "scan lpa = %x ppa= %x\n" +.LC117: + .string "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" + .text .align 2 .global ftl_scan_all_data .type ftl_scan_all_data, %function ftl_scan_all_data: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE98 + .text +.LPFE98: + nop + nop + hint 25 // paciasp sub sp, sp, #96 + mrs x0, sp_el0 stp x29, x30, [sp, 16] add x29, sp, 16 - stp x23, x24, [sp, 64] - adrp x24, .LANCHOR0 - add x23, x24, :lo12:.LANCHOR0 stp x19, x20, [sp, 32] - add x19, x23, 3728 - stp x21, x22, [sp, 48] mov w20, 0 - adrp x22, __stack_chk_guard - add x0, x22, :lo12:__stack_chk_guard - ldr x1, [x0] - str x1, [x29, 72] - mov x1,0 - adrp x0, .LC114 - add x0, x0, :lo12:.LC114 - bl sftl_printk -.L1183: - add x0, x24, :lo12:.LANCHOR0 - ldr w0, [x0, 2632] - cmp w20, w0 - bcc .L1189 - add x0, x22, :lo12:__stack_chk_guard - ldr x1, [x29, 72] - ldr x0, [x0] - eor x0, x1, x0 - cbz x0, .L1190 - bl __stack_chk_fail -.L1189: - mov w2, 0 - add x1, x29, 68 - mov w0, w20 - bl log2phys - tst x20, 2047 - bne .L1184 - ldr w2, [x29, 68] + stp x21, x22, [sp, 48] + adrp x21, .LANCHOR0 + add x21, x21, :lo12:.LANCHOR0 + str x23, [sp, 64] + adrp x22, .LC116 + add x19, x21, 3712 + add x22, x22, :lo12:.LC116 + ldr x1, [x0, 1376] + str x1, [sp, 88] + mov x1, 0 adrp x0, .LC115 - mov w1, w20 add x0, x0, :lo12:.LC115 bl sftl_printk -.L1184: - ldr w1, [x29, 68] - cmn w1, #1 - beq .L1186 - ldr x0, [x23, 3464] +.L1218: + ldr w0, [x21, 2624] + cmp w0, w20 + bhi .L1224 + mrs x0, sp_el0 + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1225 + bl __stack_chk_fail +.L1224: + add x1, sp, 84 + mov w0, w20 mov w2, 0 - ldr x21, [x23, 3528] - stp wzr, w1, [x19] + bl log2phys + tst x20, 2047 + bne .L1219 + ldr w2, [sp, 84] + mov w1, w20 + mov x0, x22 + bl sftl_printk +.L1219: + ldr w0, [sp, 84] + cmn w0, #1 + beq .L1221 + stp wzr, w0, [x19] + mov w2, 0 + ldr x0, [x21, 3448] mov w1, 1 - stp x0, x21, [x19, 8] + ldr x23, [x21, 3512] + str x0, [x19, 8] mov x0, x19 + str x23, [x19, 16] str w20, [x19, 24] bl FlashReadPages - ldr w1, [x19] - cmp w1, 256 - ccmn w1, #1, 4, ne - beq .L1187 - ldr w0, [x21, 8] - cmp w20, w0 - beq .L1186 -.L1187: - ldp x1, x0, [x19, 8] - ldr w2, [x1, 4] + ldr w0, [x19] + cmp w0, 256 + ccmn w0, #1, 4, ne + beq .L1222 + ldr w0, [x23, 8] + cmp w0, w20 + beq .L1221 +.L1222: + ldp x0, x1, [x19, 8] + ldr w2, [x0, 4] str w2, [sp] - ldp w3, w4, [x0] - ldp w5, w6, [x0, 8] - adrp x0, .LC116 - ldr w7, [x1] - add x0, x0, :lo12:.LC116 - ldr w2, [x19, 4] + ldr w7, [x0] + adrp x0, .LC117 + ldp w3, w4, [x1] + add x0, x0, :lo12:.LC117 + ldp w5, w6, [x1, 8] mov w1, w20 + ldr w2, [x19, 4] bl sftl_printk -.L1186: +.L1221: add w20, w20, 1 - b .L1183 -.L1190: + b .L1218 +.L1225: + ldp x29, x30, [sp, 16] ldp x19, x20, [sp, 32] ldp x21, x22, [sp, 48] - ldp x23, x24, [sp, 64] - ldp x29, x30, [sp, 16] + ldr x23, [sp, 64] add sp, sp, 96 + hint 29 // autiasp ret .size ftl_scan_all_data, .-ftl_scan_all_data + .section .rodata.str1.1 +.LC118: + .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" + .text .align 2 .global FtlGcScanTempBlk .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE99 + .text +.LPFE99: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -160]! - add x29, sp, 0 + mov x29, sp stp x21, x22, [sp, 32] - adrp x22, __stack_chk_guard + adrp x22, .LANCHOR2 + add x22, x22, :lo12:.LANCHOR2 stp x19, x20, [sp, 16] - mov x19, x0 - stp x25, x26, [sp, 64] - add x0, x22, :lo12:__stack_chk_guard + mov x20, x0 + mrs x0, sp_el0 stp x23, x24, [sp, 48] - mov w25, w1 + stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] - adrp x21, .LANCHOR2 - str x22, [x29, 96] - ldr x1, [x0] - str x1, [x29, 152] - mov x1,0 - add x0, x21, :lo12:.LANCHOR2 - ldrh w28, [x0, 4] + ldrh w28, [x22, 4] + str w1, [sp, 104] + ldr x1, [x0, 1376] + str x1, [sp, 152] + mov x1, 0 mov w0, 65535 cmp w28, w0 - beq .L1217 - cbnz w28, .L1193 -.L1194: - bl FtlGcPageVarInit - b .L1195 -.L1217: - mov w28, 0 -.L1193: + beq .L1251 + cbz w28, .L1229 +.L1228: adrp x0, .LANCHOR0+306 + ldr w1, [sp, 104] ldrh w0, [x0, #:lo12:.LANCHOR0+306] - cmp w0, w25 - beq .L1194 -.L1195: - adrp x26, .LANCHOR0 - add x22, x26, :lo12:.LANCHOR0 - mov w24, 0 -.L1210: - ldrh w1, [x19] - mov w0, 65535 - strb wzr, [x19, 8] - cmp w1, w0 - beq .L1196 -.L1213: - add x0, x26, :lo12:.LANCHOR0 - add x6, x19, 16 - mov w20, 0 - mov w11, 65535 - mov w7, 4 - ldrh w9, [x0, 314] - ldrh w10, [x0, 316] - ldrh w0, [x0, 236] - add x0, x0, 8 - add x0, x19, x0, lsl 1 -.L1197: - cmp x0, x6 - bne .L1199 - ldr x0, [x22, 3440] - mov w2, 0 - mov w1, w20 - mov x23, 0 - bl FlashReadPages - ubfiz x0, x20, 5, 16 - str x0, [x29, 104] -.L1200: - ldr x0, [x29, 104] - cmp x0, x23 - bne .L1211 - add w4, w28, 1 - add w24, w24, 1 - and w28, w4, 65535 - cmp w25, w24 - bls .L1212 -.L1214: - ldrh w0, [x22, 306] - cmp w0, w28 - bhi .L1213 -.L1196: - add x21, x21, :lo12:.LANCHOR2 - strh w28, [x19, 2] - strb wzr, [x19, 6] - mov w0, -1 - mov w2, 0 - mov w1, w28 - strh w0, [x21, 4] - mov x0, x19 - bl ftl_sb_update_avl_pages - b .L1215 -.L1199: - ldrh w1, [x6] - cmp w1, w11 - beq .L1198 - ldr x5, [x22, 3440] - ubfiz x8, x20, 5, 16 - orr w1, w28, w1, lsl 10 - add x5, x5, x8 - str w1, [x5, 4] - mul w1, w20, w9 - ldr x2, [x22, 3440] - ldr x5, [x22, 3264] - sdiv w1, w1, w7 - add x2, x2, x8 - add x1, x5, x1, sxtw 2 - str x1, [x2, 8] - mul w1, w20, w10 - ldr x5, [x22, 3272] - add w20, w20, 1 - and w20, w20, 65535 - sdiv w1, w1, w7 - add x1, x5, x1, sxtw 2 - str x1, [x2, 16] -.L1198: - add x6, x6, 2 - b .L1197 -.L1211: - ldr x0, [x22, 3440] - add x1, x0, x23 - ldr w0, [x0, x23] - ldr w27, [x1, 4] - ldr x20, [x1, 16] - cbnz w0, .L1201 - ldrh w0, [x20] - mov w1, 65535 cmp w0, w1 - bne .L1202 -.L1227: - ldrh w1, [x19] + bne .L1230 +.L1229: + bl FtlGcPageVarInit +.L1230: + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + mov w24, 0 + mov w26, 65535 +.L1246: + ldrh w0, [x20] + strb wzr, [x20, 8] + cmp w0, w26 + beq .L1231 + add x0, x20, 16 + str x0, [sp, 96] +.L1232: + ldrh w7, [x19, 236] + mov x1, 0 + ldrh w8, [x19, 314] + mov w21, 0 + ldrh w9, [x19, 316] + mov w5, 4 +.L1233: + ldr x0, [x19, 3424] + cmp w7, w1, uxth + bhi .L1235 + mov x23, 0 + mov w1, w21 + mov w2, 0 + bl FlashReadPages +.L1236: + cmp w21, w23, uxth + bhi .L1247 + ldr w0, [sp, 104] + add w3, w28, 1 + add w24, w24, 1 + and w28, w3, 65535 + cmp w0, w24 + bhi .L1248 + ldrh w0, [x22, 4] + cmp w0, w26 + beq .L1248 + add w0, w0, w24 + strh w0, [x22, 4] + ldrh w0, [x19, 306] + cmp w0, w28 + bls .L1231 +.L1249: + mrs x0, sp_el0 + ldr x1, [sp, 152] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1250 + bl __stack_chk_fail +.L1251: mov w28, 0 - ldr x0, [x22, 72] + b .L1228 +.L1235: + ldr x2, [sp, 96] + ldrh w4, [x2, x1, lsl 1] + cmp w4, w26 + beq .L1234 + ubfiz x6, x21, 5, 16 + orr w4, w28, w4, lsl 10 + add x0, x0, x6 + str w4, [x0, 4] + mul w0, w21, w8 + ldr x2, [x19, 3424] + sdiv w0, w0, w5 + ldr x4, [x19, 3256] + add x2, x2, x6 + add x0, x4, x0, sxtw 2 + str x0, [x2, 8] + mul w0, w21, w9 + add w21, w21, 1 + ldr x4, [x19, 3264] + and w21, w21, 65535 + sdiv w0, w0, w5 + add x0, x4, x0, sxtw 2 + str x0, [x2, 16] +.L1234: + add x1, x1, 1 + b .L1233 +.L1247: + ldr x0, [x19, 3424] + lsl x27, x23, 5 + add x1, x0, x23, lsl 5 + ldr w0, [x0, x27] + ldr w5, [x1, 4] + ldr x25, [x1, 16] + cbnz w0, .L1237 + ldrh w0, [x25] + cmp w0, w26 + beq .L1261 + ldr w1, [x19, 2624] + ldr w0, [x25, 8] + cmp w0, w1 + bls .L1239 +.L1261: + ldrh w1, [x20] + mov w28, 0 + ldr x0, [x19, 72] strh wzr, [x0, x1, lsl 1] - ldrh w0, [x19] + ldrh w0, [x20] bl INSERT_FREE_LIST mov w0, -1 - strh w0, [x19] - strh w0, [x22, 176] + strh w0, [x20] + strh w0, [x19, 176] bl FtlGcPageVarInit - b .L1210 -.L1202: - ldr w0, [x20, 8] - ldr w1, [x22, 2632] - cmp w0, w1 - bhi .L1227 - add x1, x29, 116 + b .L1246 +.L1239: + add x1, sp, 116 mov w2, 0 + str w5, [sp, 108] bl log2phys - ldr w0, [x20, 12] - ldr w1, [x29, 116] + ldr w0, [x25, 12] + ldr w1, [sp, 116] + ldr w5, [sp, 108] cmp w0, w1 - beq .L1205 -.L1207: - ldr w2, [x20, 8] -.L1228: - ldr w0, [x20, 12] - mov w1, w27 - add x23, x23, 32 + beq .L1241 +.L1243: + ldr w2, [x25, 8] +.L1262: + ldr w0, [x25, 12] + mov w1, w5 + add x23, x23, 1 bl FtlGcUpdatePage - b .L1200 -.L1205: + b .L1236 +.L1241: cmn w0, #1 - beq .L1207 - str w0, [x29, 124] + beq .L1243 + str w0, [sp, 124] mov w2, 0 - ldr x0, [x22, 3496] + ldr x0, [x19, 3480] + str x0, [sp, 128] + ldr x0, [x19, 3520] mov w1, 1 - str x0, [x29, 128] - ldr x0, [x22, 3536] - str x0, [x29, 136] - add x0, x29, 120 + str w5, [sp, 108] + str x0, [sp, 136] + add x0, sp, 120 bl FlashReadPages - ldrh w1, [x22, 262] + ldr w5, [sp, 108] + ldrh w1, [x19, 262] + ldr x2, [sp, 128] + ldr x0, [x19, 3424] + lsl w1, w1, 7 + sub x2, x2, #4 + add x27, x0, x27 mov x0, 0 - ldr x2, [x22, 3440] - ldr x6, [x29, 128] - ubfiz x1, x1, 9, 16 - add x2, x2, x23 -.L1208: - cmp x0, x1 - beq .L1207 - ldr x7, [x2, 8] - ldr w8, [x7, x0] - add x0, x0, 4 - add x7, x6, x0 - ldr w7, [x7, -4] - cmp w8, w7 - beq .L1208 - ldrh w1, [x19] - adrp x0, .LC117 - ldr w2, [x29, 124] - add x0, x0, :lo12:.LC117 +.L1244: + cmp w1, w0 + bls .L1243 + ldr x6, [x27, 8] + ldr w7, [x6, x0, lsl 2] + add x0, x0, 1 + ldr w6, [x2, x0, lsl 2] + cmp w7, w6 + beq .L1244 + ldrh w1, [x20] + adrp x0, .LC118 + ldr w2, [sp, 124] + add x0, x0, :lo12:.LC118 bl sftl_printk - b .L1227 -.L1201: + b .L1261 +.L1237: mov w2, -1 - b .L1228 -.L1212: - add x1, x21, :lo12:.LANCHOR2 - mov w2, 65535 - ldrh w0, [x1, 4] - cmp w0, w2 - beq .L1214 - add w0, w0, w24 - strh w0, [x1, 4] - ldrh w0, [x22, 306] + b .L1262 +.L1248: + ldrh w0, [x19, 306] cmp w0, w28 - bls .L1214 -.L1215: - ldr x1, [x29, 96] + bhi .L1232 +.L1231: + strh w28, [x20, 2] + mov w0, -1 + strb wzr, [x20, 6] + mov w1, w28 + mov w2, 0 + strh w0, [x22, 4] + mov x0, x20 + bl ftl_sb_update_avl_pages + b .L1249 +.L1250: mov w0, -1 - add x22, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 152] - ldr x1, [x22] - eor x1, x2, x1 - cbz x1, .L1216 - bl __stack_chk_fail -.L1216: 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 + hint 29 // autiasp ret .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .align 2 .global FtlReadRefresh .type FtlReadRefresh, %function FtlReadRefresh: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE100 + .text +.LPFE100: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -160]! - add x29, sp, 0 + mrs x0, sp_el0 + mov x29, sp stp x19, x20, [sp, 16] - adrp x20, __stack_chk_guard - stp x21, x22, [sp, 32] - add x0, x20, :lo12:__stack_chk_guard - ldr x1, [x0] - str x1, [x29, 152] - mov x1,0 - adrp x1, .LANCHOR0 - add x0, x1, :lo12:.LANCHOR0 - add x2, x0, 2720 - ldr w3, [x2, 80] - cbz w3, .L1230 - ldr w1, [x0, 2632] - ldr w3, [x2, 84] - cmp w3, w1 - bcs .L1231 - mov x19, x0 - mov w21, 2048 -.L1236: - add x22, x19, 2720 - ldr w1, [x19, 2632] - ldr w0, [x22, 84] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + ldr x1, [x0, 1376] + str x1, [sp, 152] + mov x1, 0 + ldr w0, [x19, 2624] + add x1, x19, 2712 + ldr w2, [x1, 80] + cbz w2, .L1264 + ldr w2, [x1, 84] + cmp w2, w0 + bcs .L1265 + mov w20, 2048 +.L1270: + ldr w1, [x19, 2624] + add x21, x19, 2712 + ldr w0, [x21, 84] cmp w0, w1 - bcc .L1232 -.L1235: + bcc .L1266 +.L1269: mov w0, -1 -.L1229: - add x20, x20, :lo12:__stack_chk_guard - ldr x2, [x29, 152] - ldr x1, [x20] - eor x1, x2, x1 - cbz x1, .L1241 +.L1263: + mrs x1, sp_el0 + ldr x2, [sp, 152] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1274 bl __stack_chk_fail -.L1232: - add x1, x29, 52 +.L1266: + add x1, sp, 52 mov w2, 0 bl log2phys - ldr w0, [x22, 84] - ldr w1, [x29, 52] + ldr w1, [sp, 52] + ldr w0, [x21, 84] add w0, w0, 1 - str w0, [x22, 84] + str w0, [x21, 84] cmn w1, #1 - beq .L1234 - str w0, [x29, 80] + beq .L1268 + str w0, [sp, 80] mov w2, 0 - ldr x0, [x19, 3512] - str x0, [x29, 64] - add x0, x29, 88 - str x0, [x29, 72] - add x0, x29, 160 - str w1, [x29, 60] + ldr x0, [x19, 3496] + str x0, [sp, 64] + add x0, sp, 88 + stp wzr, w1, [sp, 56] mov w1, 1 - str wzr, [x0, -104]! + str x0, [sp, 72] + add x0, sp, 56 bl FlashReadPages - ldr w0, [x29, 56] + ldr w0, [sp, 56] cmp w0, 256 - bne .L1235 - ldr w0, [x29, 52] - lsr w0, w0, 10 + bne .L1269 + ldr w0, [sp, 52] + ubfx x0, x0, 10, 16 bl P2V_block_in_plane bl FtlGcRefreshBlock - b .L1235 -.L1234: - subs w21, w21, #1 - bne .L1236 - b .L1235 -.L1231: - ldr w0, [x0, 2636] - stp w0, wzr, [x2, 76] - str wzr, [x2, 84] -.L1244: + b .L1269 +.L1268: + subs w20, w20, #1 + bne .L1270 + b .L1269 +.L1265: + ldr w0, [x19, 2628] + str w0, [x1, 76] + str xzr, [x1, 80] +.L1277: mov w0, 0 - b .L1229 -.L1230: - ldr w4, [x0, 2692] + b .L1263 +.L1264: + ldr w2, [x19, 2684] mov w3, 10000 - ldr w5, [x0, 2636] - mov w6, 31 - cmp w4, w3 - ldr w7, [x2, 76] + mov w5, 31 + ldr w6, [x1, 76] + cmp w2, w3 mov w3, 63 - csel w6, w6, w3, hi - add w3, w5, 1048576 - cmp w7, w3 - bhi .L1240 - ldr w3, [x0, 2632] - mov w8, 1000 - lsr w4, w4, 10 - add w4, w4, 1 - mul w3, w3, w8 - udiv w3, w3, w4 - add w3, w3, w7 - cmp w5, w3 - bhi .L1240 - ldrh w0, [x0, 2540] - tst w6, w0 - bne .L1244 - ldr w2, [x2, 100] - cmp w0, w2 - beq .L1244 -.L1240: - add x0, x1, :lo12:.LANCHOR0 - add x1, x0, 2720 - ldrh w0, [x0, 2540] - str w0, [x1, 100] - str w5, [x1, 76] - mov w0, 1 - str wzr, [x1, 84] - str w0, [x1, 80] - b .L1244 -.L1241: + csel w5, w5, w3, hi + ldr w3, [x19, 2628] + ldrh w4, [x19, 2540] + add w7, w3, 1048576 + cmp w6, w7 + bhi .L1273 + mov w7, 1000 + lsr w2, w2, 10 + add w2, w2, 1 + mul w0, w0, w7 + udiv w0, w0, w2 + add w0, w0, w6 + cmp w3, w0 + bhi .L1273 + tst w5, w4 + bne .L1277 + ldr w0, [x1, 100] + cmp w0, w4 + beq .L1277 +.L1273: + mov x0, 1 + str w3, [x19, 2788] + str x0, [x19, 2792] + str w4, [x19, 2812] + b .L1277 +.L1274: ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 160 + hint 29 // autiasp ret .size FtlReadRefresh, .-FtlReadRefresh .align 2 .global l2p_flush .type l2p_flush, %function l2p_flush: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE101 + .text +.LPFE101: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 add x20, x20, :lo12:.LANCHOR0 mov w19, 0 bl FtlWriteDump_data -.L1248: +.L1281: ldrh w0, [x20, 342] cmp w0, w19 - bhi .L1250 + bhi .L1283 mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L1250: +.L1283: ldr x1, [x20, 2608] ubfiz x0, x19, 4, 16 add x0, x1, x0 ldr w0, [x0, 4] - tbz w0, #31, .L1249 + tbz w0, #31, .L1282 mov w0, w19 bl flush_l2p_region -.L1249: +.L1282: add w19, w19, 1 and w19, w19, 65535 - b .L1248 + b .L1281 .size l2p_flush, .-l2p_flush .align 2 .global FtlVendorPartWrite .type FtlVendorPartWrite, %function FtlVendorPartWrite: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE102 + .text +.LPFE102: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -224]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - stp x21, x22, [sp, 32] add x19, x19, :lo12:.LANCHOR0 - stp x25, x26, [sp, 64] - adrp x22, __stack_chk_guard - stp x27, x28, [sp, 80] - mov w26, w0 + stp x21, x22, [sp, 32] + mov w21, w0 + mrs x0, sp_el0 stp x23, x24, [sp, 48] - add x0, x22, :lo12:__stack_chk_guard - mov w28, w1 - ldr x1, [x0] - str x1, [x29, 216] - mov x1,0 + mov w20, w1 + ldrh w22, [x19, 312] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + lsr w22, w21, w22 + ldr x1, [x0, 1376] + str x1, [sp, 216] + mov x1, 0 ldrh w0, [x19, 300] - add w1, w26, w28 + add w1, w21, w20 cmp w1, w0 - bhi .L1261 - ldrh w23, [x19, 312] - mov x25, x2 - add x27, x19, 3896 - mov w24, 0 - lsr w23, w26, w23 -.L1254: - cbnz w28, .L1259 -.L1252: - add x22, x22, :lo12:__stack_chk_guard - mov w0, w24 - ldr x2, [x29, 216] - ldr x1, [x22] - eor x1, x2, x1 - cbz x1, .L1260 + bhi .L1294 + mov x24, x2 + add x27, x19, 3880 + mov w25, 0 + mov w28, -1 +.L1287: + cbnz w20, .L1292 +.L1285: + mrs x0, sp_el0 + ldr x1, [sp, 216] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1293 bl __stack_chk_fail -.L1259: +.L1292: ldrh w1, [x19, 262] - ldr x0, [x19, 3608] - udiv w21, w26, w1 - ldr w2, [x0, w23, uxtw 2] - and w0, w28, 65535 - msub w21, w21, w1, w26 - sub w20, w1, w21 - and w20, w20, 65535 - cmp w28, w20 - csel w20, w0, w20, cc - cbz w2, .L1256 - cmp w20, w1 - beq .L1256 - ldr x0, [x19, 3480] - str x0, [x29, 128] - add x0, x29, 152 - str w2, [x29, 124] + ldr x0, [x19, 3592] + udiv w23, w21, w1 + ldr w2, [x0, w22, uxtw 2] + msub w23, w23, w1, w21 + sub w0, w1, w23 + and w26, w0, 65535 + cmp w20, w0, uxth + bcs .L1288 + and w26, w20, 65535 +.L1288: + ldr x0, [x19, 3464] + cbz w2, .L1289 + cmp w1, w26 + beq .L1289 + str x0, [sp, 128] + add x0, sp, 152 + str w2, [sp, 124] mov w2, 1 - str x0, [x29, 136] mov w1, w2 - add x0, x29, 120 + str x0, [sp, 136] + add x0, sp, 120 bl FlashReadPages -.L1257: - lsl w4, w20, 9 - ldr x0, [x19, 3480] - lsl w21, w21, 9 +.L1290: + lsl w4, w26, 9 + sbfiz x23, x23, 9, 23 + ldr x0, [x19, 3464] mov w2, w4 - asr w21, w21, 2 - mov x1, x25 - str w4, [x29, 108] - add x0, x0, x21, sxtw 2 + mov x1, x24 + str w4, [sp, 108] + add x0, x0, x23 bl ftl_memcpy - sub w28, w28, w20 - ldr x2, [x19, 3480] - mov w1, w23 + ldr x2, [x19, 3464] + mov w1, w22 mov x0, x27 - add w26, w26, w20 - add w23, w23, 1 + sub w20, w20, w26 + add w21, w21, w26 + add w22, w22, 1 bl FtlMapWritePage + ldr w4, [sp, 108] cmn w0, #1 - ldr w4, [x29, 108] - csinv w24, w24, wzr, ne - add x25, x25, x4, sxtw - b .L1254 -.L1256: + csel w25, w25, w28, ne + add x24, x24, x4, sxtw + b .L1287 +.L1289: ldrh w2, [x19, 314] mov w1, 0 - ldr x0, [x19, 3480] bl ftl_memset - b .L1257 -.L1261: - mov w24, -1 - b .L1252 -.L1260: + b .L1290 +.L1294: + mov w25, -1 + b .L1285 +.L1293: + 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], 224 + hint 29 // autiasp ret .size FtlVendorPartWrite, .-FtlVendorPartWrite .align 2 .global Ftl_save_ext_data .type Ftl_save_ext_data, %function Ftl_save_ext_data: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE103 + .text +.LPFE103: + nop + nop adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 mov w1, 19539 movk w1, 0x4654, lsl 16 - ldr w3, [x0, 2720] + ldr w3, [x0, 2712] cmp w3, w1 - bne .L1269 + bne .L1302 + add x2, x0, 2712 + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x2, x0, 2720 - mov w1, 85 - add x29, sp, 0 + mov w1, 86 movk w1, 0x5000, lsl 16 + mov x29, sp str w1, [x2, 4] - ldr w1, [x0, 2660] - str w1, [x2, 88] - ldr w1, [x0, 2664] - str w1, [x2, 92] - ldr w1, [x0, 2656] - str w1, [x2, 8] - ldr w1, [x0, 2644] - str w1, [x2, 12] - ldr w1, [x0, 2636] - str w1, [x2, 16] ldr w1, [x0, 2652] - str w1, [x2, 20] - ldr w1, [x0, 2680] - str w1, [x2, 28] - ldr w1, [x0, 2688] - str w1, [x2, 32] - ldr w1, [x0, 2640] - str w1, [x2, 36] + str w1, [x2, 88] + ldr w1, [x0, 2656] + str w1, [x2, 92] ldr w1, [x0, 2648] + str w1, [x2, 8] + ldr w1, [x0, 2636] + str w1, [x2, 12] + ldr w1, [x0, 2628] + str w1, [x2, 16] + ldr w1, [x0, 2644] + str w1, [x2, 20] + ldr w1, [x0, 2672] + str w1, [x2, 28] + ldr w1, [x0, 2680] + str w1, [x2, 32] + ldr w1, [x0, 2632] + str w1, [x2, 36] + ldr w1, [x0, 2640] str w1, [x2, 40] - ldr w1, [x0, 2692] - ldr w0, [x0, 2696] + ldr w1, [x0, 2684] + ldr w0, [x0, 2688] stp w1, w0, [x2, 44] mov w1, 1 mov w0, 0 bl FtlVendorPartWrite ldp x29, x30, [sp], 16 + hint 29 // autiasp ret -.L1269: +.L1302: ret .size Ftl_save_ext_data, .-Ftl_save_ext_data .align 2 .global FtlEctTblFlush .type FtlEctTblFlush, %function FtlEctTblFlush: - adrp x1, .LANCHOR0 - add x3, x1, :lo12:.LANCHOR0 - ldrh w2, [x3, 3960] - cmp w2, 31 - bhi .L1276 - add w2, w2, 1 - strh w2, [x3, 3960] - mov w2, 1 -.L1273: - cbnz w0, .L1274 - add x0, x1, :lo12:.LANCHOR0 - ldr x0, [x0, 3560] - ldr w3, [x0, 20] - ldr w0, [x0, 16] - add w2, w2, w3 - cmp w0, w2 - bcc .L1278 -.L1274: - add x0, x1, :lo12:.LANCHOR0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE104 + .text +.LPFE104: + nop + nop + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + ldrh w1, [x2, 3944] + cmp w1, 31 + bhi .L1309 + add w1, w1, 1 + mov w3, 1 + strh w1, [x2, 3944] +.L1306: + ldr x1, [x2, 3544] + ldr w4, [x1, 16] + cbnz w0, .L1307 + ldr w0, [x1, 20] + add w3, w3, w0 + cmp w3, w4 + bhi .L1311 +.L1307: + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr x1, [x0, 3560] - ldr w2, [x1, 16] - str w2, [x1, 20] - mov w2, 17221 - movk w2, 0x4254, lsl 16 - str w2, [x1] - ldr x2, [x0, 3560] - ldrh w1, [x0, 3544] + mov w0, 17221 + mov x29, sp + movk w0, 0x4254, lsl 16 + str w0, [x1] + str w4, [x1, 20] + ldr x0, [x2, 3544] + ldrh w1, [x2, 3528] + str wzr, [x0, 4] lsl w3, w1, 9 - str wzr, [x2, 4] - str w3, [x2, 12] - ldr w3, [x2, 8] + str w3, [x0, 12] + ldr w3, [x0, 8] + ldr x2, [x2, 3544] add w3, w3, 1 - str w3, [x2, 8] - ldr x2, [x0, 3560] + str w3, [x0, 8] mov w0, 64 bl FtlVendorPartWrite bl Ftl_save_ext_data mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret -.L1276: - mov w2, 32 - b .L1273 -.L1278: +.L1309: + mov w3, 32 + b .L1306 +.L1311: mov w0, 0 ret .size FtlEctTblFlush, .-FtlEctTblFlush @@ -8693,497 +9973,580 @@ FtlEctTblFlush: .global sftl_vendor_write .type sftl_vendor_write, %function sftl_vendor_write: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE105 + .text +.LPFE105: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! add w0, w0, 256 - add x29, sp, 0 + mov x29, sp bl FtlVendorPartWrite ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size sftl_vendor_write, .-sftl_vendor_write + .section .rodata.str1.1 +.LC119: + .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" + .text .align 2 .global FtlVendorPartRead .type FtlVendorPartRead, %function FtlVendorPartRead: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE106 + .text +.LPFE106: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -224]! adrp x3, .LANCHOR0 - add x3, x3, :lo12:.LANCHOR0 - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov w22, w1 - stp x23, x24, [sp, 48] - mov w23, w0 - stp x25, x26, [sp, 64] - adrp x0, __stack_chk_guard - stp x19, x20, [sp, 16] - add x1, x0, :lo12:__stack_chk_guard + mov x29, sp stp x27, x28, [sp, 80] - mov x25, x2 - str x0, [x29, 104] - ldr x2, [x1] - str x2, [x29, 216] - mov x2,0 - ldrh w1, [x3, 300] - add w2, w23, w22 - cmp w2, w1 - bhi .L1292 - ldrh w21, [x3, 312] - adrp x26, .LC118 - mov x28, x3 - add x26, x26, :lo12:.LC118 + add x28, x3, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + mov w20, w0 + mrs x0, sp_el0 + stp x21, x22, [sp, 32] + mov w19, w1 + ldrh w21, [x28, 312] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + lsr w21, w20, w21 + ldr x1, [x0, 1376] + str x1, [sp, 216] + mov x1, 0 + ldrh w0, [x28, 300] + add w1, w20, w19 + cmp w1, w0 + bhi .L1325 + adrp x26, .LC119 + mov x22, x2 + add x26, x26, :lo12:.LC119 mov w24, 0 - lsr w21, w23, w21 -.L1284: - cbnz w22, .L1290 -.L1282: - ldr x1, [x29, 104] - mov w0, w24 - add x1, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 216] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L1291 +.L1317: + cbnz w19, .L1323 +.L1315: + mrs x0, sp_el0 + ldr x1, [sp, 216] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1324 bl __stack_chk_fail -.L1290: - ldrh w19, [x28, 262] - ldr x0, [x28, 3608] - udiv w20, w23, w19 +.L1323: + ldr x0, [x28, 3592] ldr w4, [x0, w21, uxtw 2] - and w0, w22, 65535 - msub w20, w20, w19, w23 - sub w19, w19, w20 - and w19, w19, 65535 - cmp w22, w19 - csel w19, w0, w19, cc - lsl w27, w19, 9 - cbz w4, .L1286 - ldr x0, [x28, 3480] + ldrh w0, [x28, 262] + udiv w23, w20, w0 + msub w23, w23, w0, w20 + sub w0, w0, w23 + and w25, w0, 65535 + cmp w19, w0, uxth + bcs .L1318 + and w25, w19, 65535 +.L1318: + lsl w27, w25, 9 + cbz w4, .L1319 + ldr x0, [x28, 3464] + str x0, [sp, 128] + add x0, sp, 152 mov w2, 1 - str x0, [x29, 128] - add x0, x29, 152 - str w4, [x29, 100] mov w1, w2 - str w4, [x29, 124] - str x0, [x29, 136] - add x0, x29, 120 + str w4, [sp, 108] + str w4, [sp, 124] + str x0, [sp, 136] + add x0, sp, 120 bl FlashReadPages - ldr w0, [x29, 120] - ldr w4, [x29, 100] + ldr w0, [sp, 120] + ldr w4, [sp, 108] cmn w0, #1 - ldr w0, [x28, 3728] + ldr w0, [x28, 3712] csinv w24, w24, wzr, ne cmp w0, 256 - bne .L1288 + bne .L1321 mov w2, w4 mov w1, w21 mov x0, x26 bl sftl_printk - ldr x2, [x28, 3480] + ldr x2, [x28, 3464] mov w1, w21 - add x0, x28, 3896 + add x0, x28, 3880 bl FtlMapWritePage -.L1288: - ldr x1, [x28, 3480] - lsl w20, w20, 9 - asr w20, w20, 2 +.L1321: + ldr x1, [x28, 3464] + sbfiz x23, x23, 9, 23 mov w2, w27 - mov x0, x25 - add x1, x1, x20, sxtw 2 + mov x0, x22 + add x1, x1, x23 bl ftl_memcpy -.L1289: +.L1322: add w21, w21, 1 - sub w22, w22, w19 - add w23, w23, w19 - add x25, x25, x27, sxtw - b .L1284 -.L1286: + sub w19, w19, w25 + add w20, w20, w25 + add x22, x22, x27, sxtw + b .L1317 +.L1319: mov w2, w27 + mov x0, x22 mov w1, 0 - mov x0, x25 bl ftl_memset - b .L1289 -.L1292: + b .L1322 +.L1325: mov w24, -1 - b .L1282 -.L1291: + b .L1315 +.L1324: + 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], 224 + hint 29 // autiasp ret .size FtlVendorPartRead, .-FtlVendorPartRead + .section .rodata.str1.1 +.LC120: + .string "no ect" + .text .align 2 .global FtlLoadEctTbl .type FtlLoadEctTbl, %function FtlLoadEctTbl: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE107 + .text +.LPFE107: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! mov w0, 64 - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x19, 3544] - ldr x2, [x19, 3560] + ldrh w1, [x19, 3528] + ldr x2, [x19, 3544] bl FtlVendorPartRead - ldr x0, [x19, 3560] + ldr x0, [x19, 3544] ldr w1, [x0] mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 - beq .L1295 - adrp x1, .LC119 - adrp x0, .LC77 - add x1, x1, :lo12:.LC119 - add x0, x0, :lo12:.LC77 + beq .L1328 + adrp x1, .LC120 + adrp x0, .LC78 + add x1, x1, :lo12:.LC120 + add x0, x0, :lo12:.LC78 bl sftl_printk - ldr x0, [x19, 3560] + ldr x0, [x19, 3544] mov w1, 0 - ldrh w2, [x19, 3544] + ldrh w2, [x19, 3528] lsl w2, w2, 9 bl ftl_memset -.L1295: +.L1328: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlLoadEctTbl, .-FtlLoadEctTbl .align 2 .global Ftl_load_ext_data .type Ftl_load_ext_data, %function Ftl_load_ext_data: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE108 + .text +.LPFE108: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! mov w1, 1 - mov w0, 0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 - add x20, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - add x22, x20, 2720 - mov w21, 19539 - mov x2, x22 + add x19, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + add x21, x19, 2712 + mov x2, x21 + mov w0, 0 bl FtlVendorPartRead - ldr w0, [x20, 2720] - movk w21, 0x4654, lsl 16 - cmp w0, w21 - beq .L1298 + mov w20, 19539 + ldr w0, [x19, 2712] + movk w20, 0x4654, lsl 16 + cmp w0, w20 + beq .L1331 + mov x0, x21 mov w2, 512 mov w1, 0 - mov x0, x22 bl ftl_memset - str w21, [x20, 2720] -.L1298: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 19539 - movk w2, 0x4654, lsl 16 - ldr w3, [x0, 2720] - cmp w3, w2 - bne .L1299 - ldr w2, [x0, 2808] - str w2, [x0, 2660] - ldr w2, [x0, 2812] - str w2, [x0, 2664] - ldr w2, [x0, 2728] - str w2, [x0, 2656] - ldr w2, [x0, 2732] - str w2, [x0, 2644] - ldr w2, [x0, 2736] - str w2, [x0, 2636] - ldr w2, [x0, 2740] - str w2, [x0, 2652] - ldr w2, [x0, 2748] - str w2, [x0, 2680] - ldr w2, [x0, 2752] - str w2, [x0, 2688] - ldr w2, [x0, 2756] - str w2, [x0, 2640] - ldr w2, [x0, 2760] - ldr w1, [x0, 2768] - str w2, [x0, 2648] - ldr w2, [x0, 2764] - str w1, [x0, 2696] - str w2, [x0, 2692] -.L1299: - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x0, 2680] - ldrh w1, [x0, 296] - ldr w3, [x0, 2676] - madd w1, w1, w3, w2 - ldrh w2, [x0, 244] - udiv w1, w1, w2 - str w1, [x0, 2684] + str w20, [x19, 2712] +.L1331: + ldr w1, [x19, 2800] + str w1, [x19, 2652] + ldr w1, [x19, 2804] + ldr w2, [x19, 2744] + str w1, [x19, 2656] + ldr w1, [x19, 2720] + str w1, [x19, 2648] + ldr w1, [x19, 2724] + str w2, [x19, 2680] + ldr w2, [x19, 2748] + str w2, [x19, 2632] + ldr w2, [x19, 2752] + str w1, [x19, 2636] + ldr w1, [x19, 2728] + ldr w0, [x19, 2760] + str w1, [x19, 2628] + ldr w1, [x19, 2732] + str w2, [x19, 2640] + ldr w2, [x19, 2756] + str w1, [x19, 2644] + ldr w1, [x19, 2740] + str w2, [x19, 2684] + ldr w2, [x19, 2668] + str w0, [x19, 2688] + ldrh w0, [x19, 296] + str w1, [x19, 2672] + ldr x21, [sp, 32] + madd w0, w0, w2, w1 + ldrh w1, [x19, 244] + udiv w0, w0, w1 + str w0, [x19, 2676] ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret .size Ftl_load_ext_data, .-Ftl_load_ext_data .align 2 .global sftl_vendor_read .type sftl_vendor_read, %function sftl_vendor_read: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE109 + .text +.LPFE109: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! add w0, w0, 256 - add x29, sp, 0 + mov x29, sp bl FtlVendorPartRead ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size sftl_vendor_read, .-sftl_vendor_read .align 2 .global FtlMapBlkWriteDump_data .type FtlMapBlkWriteDump_data, %function FtlMapBlkWriteDump_data: - ldr w1, [x0, 56] - cbz w1, .L1311 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE110 + .text +.LPFE110: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 - add x2, x1, :lo12:.LANCHOR0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x19, x0 str x21, [sp, 32] - add x0, x2, 3728 - mov x21, x1 - ldrh w20, [x19, 6] - ldr x4, [x2, 3528] - sub w20, w20, #1 - ldr x3, [x2, 3472] - and w20, w20, 65535 - ldr x5, [x19, 40] - stp x3, x4, [x0, 8] - ubfiz x4, x20, 2, 16 + ldr w0, [x0, 56] + cbz w0, .L1335 + ldrh w1, [x19, 6] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 str wzr, [x19, 56] - ldr w4, [x5, x4] - str w4, [x0, 4] - cbz w4, .L1305 + sub w1, w1, #1 + add x0, x20, 3712 + ldr x2, [x19, 40] + and w21, w1, 65535 + ubfiz x1, x1, 2, 16 + ldr x3, [x20, 3456] + ldr x4, [x20, 3512] + stp x3, x4, [x0, 8] + ldr w1, [x2, x1] + str w1, [x0, 4] + cbz w1, .L1337 mov w2, 1 mov w1, w2 bl FlashReadPages -.L1306: - add x1, x21, :lo12:.LANCHOR0 +.L1338: + ldr x2, [x20, 3720] + mov w1, w21 mov x0, x19 - ldr x2, [x1, 3736] - mov w1, w20 bl FtlMapWritePage - ldr x21, [sp, 32] +.L1335: ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L1305: - ldrh w2, [x2, 314] - mov w1, 255 +.L1337: + ldrh w2, [x20, 314] mov x0, x3 + mov w1, 255 bl ftl_memset - b .L1306 -.L1311: - ret + b .L1338 .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data + .section .rodata.str1.1 +.LC121: + .string "FtlVpcTblFlush error = %x error count = %d\n" + .text .align 2 .global FtlVpcTblFlush .type FtlVpcTblFlush, %function FtlVpcTblFlush: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE111 + .text +.LPFE111: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -80]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x22, .LANCHOR0 - add x19, x22, :lo12:.LANCHOR0 - stp x25, x26, [sp, 64] - stp x23, x24, [sp, 48] + add x21, x19, 2560 add x20, x19, 2512 - add x23, x19, 2704 - mov w21, 0 - ldr x26, [x19, 3528] - mov w24, 65535 - ldr x0, [x19, 3464] - str x0, [x19, 3736] - ldrh w0, [x19, 2704] - str x26, [x19, 3744] - strh w0, [x26, 2] - mov w0, -3932 - strh w0, [x26] - str wzr, [x26, 12] - ldr w0, [x19, 2712] - stp w0, wzr, [x26, 4] - mov w0, 19539 - ldrh w1, [x19, 24] - movk w0, 0x4654, lsl 16 - str w0, [x19, 2512] - mov w0, 85 - ldrb w2, [x19, 30] - strh w1, [x19, 2526] - movk w0, 0x5000, lsl 16 - ldrh w1, [x19, 26] - str w0, [x19, 2516] - ldrh w0, [x19, 2710] - strh w0, [x19, 2520] - orr w1, w2, w1, lsl 6 - ldrh w0, [x19, 258] - strb w0, [x19, 2522] - strh w1, [x19, 2528] - ldrh w1, [x19, 80] - ldrb w2, [x19, 86] - strh w1, [x19, 2530] - ldrh w1, [x19, 82] - ldrb w0, [x19, 32] - strb w0, [x19, 2523] - orr w1, w2, w1, lsl 6 - ldrb w0, [x19, 88] - strh w1, [x19, 2532] - strb w0, [x19, 2524] - ldrh w1, [x19, 128] - ldrb w0, [x19, 136] - ldrb w2, [x19, 134] - strh w1, [x19, 2534] - strb w0, [x19, 2525] - ldrh w1, [x19, 130] - ldr w0, [x19, 2676] - str w0, [x19, 2544] - ldr w0, [x19, 2668] - orr w1, w2, w1, lsl 6 - str w0, [x19, 2552] - ldr w0, [x19, 2672] - ldrh w2, [x19, 314] - str w0, [x19, 2548] - ldr x0, [x19, 3736] - strh w1, [x19, 2536] - mov w1, 255 - bl ftl_memset - ldr x0, [x19, 3736] - mov x1, x20 - mov w2, 48 - mov x20, x23 + stp x23, x24, [sp, 48] adrp x23, .LANCHOR1 add x23, x23, :lo12:.LANCHOR1 - add x23, x23, 560 + str x25, [sp, 64] + add x23, x23, 471 + ldr x22, [x19, 3512] + str x22, [x19, 3728] + ldr x0, [x19, 3448] + str x0, [x19, 3720] + ldrh w0, [x21, 136] + mov w24, 65535 + strh w0, [x22, 2] + mov w0, -3932 + strh w0, [x22] + ldr w0, [x21, 144] + str w0, [x22, 4] + mov x0, 19539 + str xzr, [x22, 8] + movk x0, 0x4654, lsl 16 + ldrb w1, [x19, 30] + movk x0, 0x56, lsl 32 + movk x0, 0x5000, lsl 48 + str x0, [x19, 2512] + ldrh w0, [x21, 142] + strh w0, [x19, 2520] + ldrh w0, [x19, 258] + strb w0, [x19, 2522] + ldrh w0, [x19, 24] + strh w0, [x19, 2526] + ldrh w0, [x19, 26] + orr w0, w1, w0, lsl 6 + strh w0, [x19, 2528] + ldrb w0, [x19, 32] + strb w0, [x19, 2523] + ldrh w0, [x19, 80] + ldrb w1, [x19, 86] + strh w0, [x19, 2530] + ldrh w0, [x19, 82] + ldrh w2, [x19, 314] + orr w0, w1, w0, lsl 6 + strh w0, [x19, 2532] + ldrb w0, [x19, 88] + strb w0, [x19, 2524] + ldrh w0, [x19, 128] + ldrb w1, [x19, 134] + strh w0, [x19, 2534] + ldrh w0, [x19, 130] + orr w0, w1, w0, lsl 6 + strh w0, [x19, 2536] + ldrb w0, [x19, 136] + mov w1, 255 + strb w0, [x19, 2525] + ldr w0, [x19, 2668] + str w0, [x19, 2544] + ldr w0, [x19, 2660] + str w0, [x19, 2552] + ldr w0, [x19, 2664] + str w0, [x19, 2548] + ldr x0, [x19, 3720] + bl ftl_memset + ldr x0, [x19, 3720] + mov x1, x20 + mov w2, 48 + mov w20, 0 bl ftl_memcpy ldrh w2, [x19, 244] ldr x1, [x19, 72] - ldr x0, [x19, 3736] + ldr x0, [x19, 3720] lsl w2, w2, 1 add x0, x0, 48 bl ftl_memcpy mov w0, 0 bl FtlUpdateVaildLpn -.L1315: - ldrh w2, [x20, 2] - ldrh w1, [x20] - ldr x0, [x19, 3464] - str x0, [x19, 3736] - ldr x0, [x19, 3528] - str x0, [x19, 3744] +.L1344: + ldrh w1, [x21, 136] + ldrh w2, [x21, 138] + ldr x0, [x19, 3448] + str x0, [x19, 3720] + ldr x0, [x19, 3512] + str x0, [x19, 3728] orr w0, w2, w1, lsl 10 - str w0, [x19, 3732] + str w0, [x19, 3716] ldrh w0, [x19, 308] sub w0, w0, #1 cmp w2, w0 - blt .L1316 - ldrh w24, [x20, 4] - strh wzr, [x20, 2] - strh w1, [x20, 4] + blt .L1345 + ldrh w24, [x21, 140] + strh wzr, [x21, 138] + strh w1, [x21, 140] bl FtlFreeSysBlkQueueOut - ldr w1, [x19, 2668] - str w1, [x20, 8] + ldr w1, [x19, 2660] + str w1, [x21, 144] add w2, w1, 1 - str w2, [x19, 2668] + str w2, [x19, 2660] ubfiz w2, w0, 10, 16 - str w2, [x19, 3732] - strh w0, [x20] - strh w0, [x26, 2] - str w1, [x26, 4] -.L1316: + str w2, [x19, 3716] + strh w0, [x22, 2] + str w1, [x22, 4] + strh w0, [x21, 136] +.L1345: ldrh w1, [x19, 314] - ldr x0, [x19, 3464] + ldr x0, [x19, 3448] bl js_hash - str w0, [x26, 12] + str w0, [x22, 12] mov w3, 1 - add x0, x19, 3728 + add x0, x19, 3712 mov w1, w3 mov w2, w3 bl FlashProgPages - ldrh w0, [x20, 2] - ldr w1, [x19, 3728] + ldrh w0, [x21, 138] + ldr w1, [x19, 3712] add w0, w0, 1 and w0, w0, 65535 - strh w0, [x20, 2] + strh w0, [x21, 138] cmn w1, #1 - bne .L1317 + bne .L1346 cmp w0, 1 - bne .L1318 - adrp x0, .LC8 - mov w2, 1138 + bne .L1348 mov x1, x23 - add x0, x0, :lo12:.LC8 + mov w2, 1145 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk -.L1318: - ldrh w0, [x20, 2] + ldrh w0, [x21, 138] cmp w0, 1 - bne .L1319 + bne .L1348 ldrh w0, [x19, 308] sub w0, w0, #1 - strh w0, [x20, 2] -.L1319: - add w21, w21, 1 - and w21, w21, 65535 - cmp w21, 3 - bls .L1315 - add x22, x22, :lo12:.LANCHOR0 - adrp x0, .LC120 - mov w2, w21 - add x0, x0, :lo12:.LC120 - ldr w1, [x22, 3732] + strh w0, [x21, 138] +.L1348: + add w20, w20, 1 + and w20, w20, 65535 + cmp w20, 3 + bls .L1344 + ldr w1, [x19, 3716] + adrp x0, .LC121 + mov w2, w20 + add x0, x0, :lo12:.LC121 bl sftl_printk -.L1321: - b .L1321 -.L1317: +.L1351: + b .L1351 +.L1346: cmp w0, 1 - beq .L1315 + beq .L1344 cmp w1, 256 - beq .L1315 + beq .L1344 mov w0, 65535 cmp w24, w0 - beq .L1322 - mov w1, 1 + beq .L1352 mov w0, w24 + mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1322: +.L1352: 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 x29, x30, [sp], 80 + hint 29 // autiasp ret .size FtlVpcTblFlush, .-FtlVpcTblFlush .align 2 .global FtlSysFlush .type FtlSysFlush, %function FtlSysFlush: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE112 + .text +.LPFE112: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 + mov x29, sp bl l2p_flush mov w0, 1 bl FtlEctTblFlush bl FtlVpcTblFlush mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size FtlSysFlush, .-FtlSysFlush .align 2 .global sftl_deinit .type sftl_deinit, %function sftl_deinit: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE113 + .text +.LPFE113: + nop + nop adrp x0, .LANCHOR2 ldr w0, [x0, #:lo12:.LANCHOR2] cmp w0, 1 - bne .L1335 + bne .L1365 + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 + mov x29, sp bl FtlSysFlush mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret -.L1335: +.L1365: mov w0, 0 ret .size sftl_deinit, .-sftl_deinit @@ -9191,611 +10554,655 @@ sftl_deinit: .global sftl_discard .type sftl_discard, %function sftl_discard: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE114 + .text +.LPFE114: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -64]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - mov w20, w1 - stp x21, x22, [sp, 32] - adrp x21, __stack_chk_guard - add x1, x21, :lo12:__stack_chk_guard adrp x19, .LANCHOR0 - ldr x2, [x1] - str x2, [x29, 56] - mov x2,0 - add x2, x19, :lo12:.LANCHOR0 - ldr w1, [x2, 344] + add x19, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + mov w20, w1 + mrs x1, sp_el0 + ldr x2, [x1, 1376] + str x2, [sp, 56] + mov x2, 0 + ldr w1, [x19, 344] cmp w1, w0 - bls .L1349 + bls .L1379 cmp w1, w20 - bcc .L1349 - add w3, w0, w20 - cmp w1, w3 - bcc .L1349 + bcc .L1379 + add w2, w0, w20 + cmp w1, w2 + bcc .L1379 cmp w20, 31 - bhi .L1340 -.L1357: + bhi .L1370 +.L1387: mov w0, 0 -.L1338: - add x21, x21, :lo12:__stack_chk_guard - ldr x2, [x29, 56] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L1346 +.L1368: + mrs x1, sp_el0 + ldr x2, [sp, 56] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1376 bl __stack_chk_fail -.L1340: - ldrh w1, [x2, 262] - udiv w22, w0, w1 - msub w0, w1, w22, w0 +.L1370: + ldrh w1, [x19, 262] + udiv w21, w0, w1 + msub w0, w1, w21, w0 ands w0, w0, 65535 - beq .L1341 + beq .L1371 sub w0, w1, w0 - add w22, w22, 1 + add w21, w21, 1 cmp w0, w20 csel w0, w0, w20, ls sub w20, w20, w0, uxth -.L1341: - add x19, x19, :lo12:.LANCHOR0 +.L1371: mov w0, -1 - str w0, [x29, 52] -.L1342: + str w0, [sp, 52] +.L1372: ldrh w0, [x19, 262] - cmp w20, w0 - bcs .L1344 - ldr w0, [x19, 3964] + cmp w0, w20 + bls .L1374 + ldr w0, [x19, 3948] cmp w0, 32 - bls .L1357 - str wzr, [x19, 3964] + bls .L1387 + str wzr, [x19, 3948] bl l2p_flush bl FtlVpcTblFlush - b .L1357 -.L1344: + b .L1387 +.L1374: + add x1, sp, 48 + mov w0, w21 mov w2, 0 - add x1, x29, 48 - mov w0, w22 bl log2phys - ldr w0, [x29, 48] + ldr w0, [sp, 48] cmn w0, #1 - beq .L1343 - ldr w0, [x19, 3964] + beq .L1373 + ldr w0, [x19, 3948] + add x1, sp, 52 mov w2, 1 - add x1, x29, 52 add w0, w0, 1 - str w0, [x19, 3964] - ldr w0, [x19, 2640] + str w0, [x19, 3948] + ldr w0, [x19, 2632] add w0, w0, 1 - str w0, [x19, 2640] - mov w0, w22 + str w0, [x19, 2632] + mov w0, w21 bl log2phys - ldr w0, [x29, 48] - lsr w0, w0, 10 + ldr w0, [sp, 48] + ubfx x0, x0, 10, 16 bl P2V_block_in_plane bl decrement_vpc_count -.L1343: +.L1373: ldrh w0, [x19, 262] - add w22, w22, 1 + add w21, w21, 1 sub w20, w20, w0 - b .L1342 -.L1349: + b .L1372 +.L1379: mov w0, -1 - b .L1338 -.L1346: + b .L1368 +.L1376: ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 64 + hint 29 // autiasp ret .size sftl_discard, .-sftl_discard + .section .rodata.str1.1 +.LC122: + .string "FtlCheckVpc %x = %x %x\n" + .text .align 2 .global FtlVpcCheckAndModify .type FtlVpcCheckAndModify, %function FtlVpcCheckAndModify: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE115 + .text +.LPFE115: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -96]! - add x29, sp, 0 + mrs x0, sp_el0 + mov x29, sp stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x22, __stack_chk_guard + adrp x22, .LANCHOR1 + add x22, x22, :lo12:.LANCHOR1 stp x23, x24, [sp, 48] - add x0, x22, :lo12:__stack_chk_guard - stp x25, x26, [sp, 64] - add x19, x20, :lo12:.LANCHOR0 - adrp x23, .LANCHOR1 - mov w21, 0 - ldr x1, [x0] - str x1, [x29, 88] - mov x1,0 - adrp x0, .LC111 - add x1, x23, :lo12:.LANCHOR1 - add x0, x0, :lo12:.LC111 - add x1, x1, 576 + mov w20, 0 + str x25, [sp, 64] + ldr x1, [x0, 1376] + str x1, [sp, 88] + mov x1, 0 + adrp x0, .LC112 + add x1, x22, 486 + add x0, x0, :lo12:.LC112 bl sftl_printk - ldr x0, [x19, 3568] + ldr x0, [x19, 3552] mov w1, 0 ldrh w2, [x19, 246] lsl w2, w2, 1 bl ftl_memset -.L1359: - ldr w0, [x19, 2632] - cmp w21, w0 - bcc .L1361 - add x20, x20, :lo12:.LANCHOR0 - adrp x24, .LC121 - add x26, x20, 2592 - add x24, x24, :lo12:.LC121 - mov w19, 0 +.L1389: + ldr w0, [x19, 2624] + cmp w0, w20 + bhi .L1391 + adrp x23, .LC122 + adrp x24, .LC9 + add x23, x23, :lo12:.LC122 + add x24, x24, :lo12:.LC9 + mov w20, 0 mov w25, 65535 -.L1362: - ldrh w0, [x20, 244] - cmp w0, w19 - bhi .L1368 +.L1392: + ldrh w0, [x19, 244] + cmp w0, w20 + bhi .L1398 bl l2p_flush - add x22, x22, :lo12:__stack_chk_guard bl FtlVpcTblFlush - ldr x1, [x29, 88] - ldr x0, [x22] - eor x0, x1, x0 - cbz x0, .L1369 + mrs x0, sp_el0 + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1399 bl __stack_chk_fail -.L1361: +.L1391: + add x1, sp, 84 + mov w0, w20 mov w2, 0 - add x1, x29, 84 - mov w0, w21 bl log2phys - ldr w0, [x29, 84] + ldr w0, [sp, 84] cmn w0, #1 - beq .L1360 - lsr w0, w0, 10 + beq .L1390 + ubfx x0, x0, 10, 16 bl P2V_block_in_plane - ldr x2, [x19, 3568] + ldr x2, [x19, 3552] ubfiz x0, x0, 1, 16 ldrh w1, [x2, x0] add w1, w1, 1 strh w1, [x2, x0] -.L1360: - add w21, w21, 1 - b .L1359 -.L1368: - ldr x0, [x20, 72] - ubfiz x21, x19, 1, 16 +.L1390: + add w20, w20, 1 + b .L1389 +.L1398: + ldr x0, [x19, 72] + ubfiz x21, x20, 1, 16 ldrh w2, [x0, x21] - ldr x0, [x20, 3568] + ldr x0, [x19, 3552] ldrh w3, [x0, x21] cmp w2, w3 - beq .L1364 + beq .L1394 cmp w2, w25 - beq .L1364 - mov x0, x24 - mov w1, w19 + beq .L1394 + mov x0, x23 + mov w1, w20 bl sftl_printk - ldrh w0, [x20, 24] - cmp w0, w19 - beq .L1364 - ldrh w0, [x20, 128] - cmp w0, w19 - beq .L1364 - ldrh w0, [x20, 80] - cmp w0, w19 - beq .L1364 - ldr x0, [x20, 72] - ldrh w1, [x0, x21] - cbnz w1, .L1366 - ldr x1, [x20, 3568] + ldrh w0, [x19, 24] + cmp w0, w20 + beq .L1394 + ldrh w0, [x19, 128] + cmp w0, w20 + beq .L1394 + ldrh w0, [x19, 80] + cmp w0, w20 + beq .L1394 + ldr x0, [x19, 72] + ldr x1, [x19, 3552] + ldrh w2, [x0, x21] ldrh w1, [x1, x21] strh w1, [x0, x21] - mov w1, w19 - mov x0, x26 + cbnz w2, .L1396 + mov w1, w20 + add x0, x19, 2592 bl List_remove_node - ldrh w0, [x20, 228] - cbnz w0, .L1367 - add x1, x23, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2323 - add x1, x1, 576 - add x0, x0, :lo12:.LC8 + ldrh w0, [x19, 228] + cbnz w0, .L1397 + add x1, x22, 486 + mov x0, x24 + mov w2, 2330 bl sftl_printk -.L1367: - ldrh w0, [x20, 228] +.L1397: + ldrh w0, [x19, 228] sub w0, w0, #1 - strh w0, [x20, 228] - mov w0, w19 + strh w0, [x19, 228] + mov w0, w20 bl INSERT_DATA_LIST -.L1364: - add w19, w19, 1 - and w19, w19, 65535 - b .L1362 -.L1366: - ldr x1, [x20, 3568] - ldrh w1, [x1, x21] - strh w1, [x0, x21] - mov w0, w19 +.L1394: + add w20, w20, 1 + and w20, w20, 65535 + b .L1392 +.L1396: + mov w0, w20 bl update_vpc_list - b .L1364 -.L1369: + b .L1394 +.L1399: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] + ldr x25, [sp, 64] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify .align 2 .global allocate_new_data_superblock .type allocate_new_data_superblock, %function allocate_new_data_superblock: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE116 + .text +.LPFE116: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 str x21, [sp, 32] mov x21, x0 - ldrh w20, [x0] - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 244] - cmp w0, w20 - bcs .L1375 + ldrh w19, [x0] + ldrh w0, [x20, 244] + cmp w0, w19 + bcs .L1405 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2759 - add x1, x1, 600 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 507 + add x0, x0, :lo12:.LC9 + mov w2, 2766 bl sftl_printk -.L1375: +.L1405: mov w0, 65535 - cmp w20, w0 - beq .L1376 - add x1, x19, :lo12:.LANCHOR0 - ubfiz x0, x20, 1, 16 - ldr x1, [x1, 72] + cmp w19, w0 + beq .L1406 + ldr x1, [x20, 72] + ubfiz x0, x19, 1, 16 ldrh w0, [x1, x0] - cbz w0, .L1377 - mov w0, w20 + cbz w0, .L1407 + mov w0, w19 bl INSERT_DATA_LIST -.L1376: - add x2, x19, :lo12:.LANCHOR0 +.L1406: mov w0, 1 strb w0, [x21, 8] + ldrh w0, [x20, 3698] mov w1, 65535 - ldrh w0, [x2, 3714] cmp w0, w1 - beq .L1378 - cmp w20, w0 - bne .L1379 - ldr x2, [x2, 72] - ubfiz x1, x0, 1, 16 - ldrh w1, [x2, x1] - cbz w1, .L1380 -.L1379: + beq .L1408 + cmp w0, w19 + bne .L1409 + ldr x1, [x20, 72] + ubfiz x19, x19, 1, 16 + ldrh w1, [x1, x19] + cbz w1, .L1410 +.L1409: bl update_vpc_list -.L1380: - add x19, x19, :lo12:.LANCHOR0 +.L1410: mov w0, -1 - strh w0, [x19, 3714] -.L1378: + strh w0, [x20, 3698] +.L1408: mov x0, x21 bl allocate_data_superblock bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush - ldr x21, [sp, 32] mov w0, 0 ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L1377: - mov w0, w20 +.L1407: + mov w0, w19 bl INSERT_FREE_LIST - b .L1376 + b .L1406 .size allocate_new_data_superblock, .-allocate_new_data_superblock + .section .rodata.str1.1 +.LC123: + .string "FtlProgPages error %x = %d\n" +.LC124: + .string "Ftlwrite decrement_vpc_count %x = %d\n" + .text .align 2 .global FtlProgPages .type FtlProgPages, %function FtlProgPages: - stp x29, x30, [sp, -96]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE117 + .text +.LPFE117: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -80]! + mrs x2, sp_el0 + mov x29, sp stp x19, x20, [sp, 16] mov x20, x3 + mov x19, x0 stp x21, x22, [sp, 32] - mov w22, w1 + mov w21, w1 stp x23, x24, [sp, 48] - adrp x21, __stack_chk_guard - stp x25, x26, [sp, 64] - add x2, x21, :lo12:__stack_chk_guard - ubfiz x22, x22, 5, 32 - mov x23, x0 - ldr x3, [x2] - str x3, [x29, 88] - mov x3,0 - add x22, x22, 4 + adrp x24, .LC123 + adrp x23, .LANCHOR0 + ldr x3, [x2, 1376] + str x3, [sp, 72] + mov x3, 0 + mov w2, 0 ldrb w3, [x20, 9] - adrp x24, .LC122 - adrp x25, .LANCHOR0 - add x19, x23, 4 - add x22, x23, x22 - add x24, x24, :lo12:.LC122 - add x26, x25, :lo12:.LANCHOR0 - mov w2, 0 + add x24, x24, :lo12:.LC123 + add x23, x23, :lo12:.LANCHOR0 bl FlashProgPages -.L1386: - cmp x22, x19 - beq .L1392 - sub x23, x19, #4 - b .L1393 -.L1388: - ldr w1, [x19] - mov x0, x24 - bl sftl_printk - ldr w0, [x19] - lsr w0, w0, 10 - bl P2V_block_in_plane - bl decrement_vpc_count - ldrh w0, [x20, 4] - cbnz w0, .L1387 - mov x0, x20 - bl allocate_new_data_superblock -.L1387: - mov x0, x20 - bl get_new_active_ppa - str w0, [x19] - mov w2, 0 - str w0, [x29, 84] - mov w1, 1 - ldrb w3, [x20, 9] - mov x0, x23 - bl FlashProgPages -.L1393: - ldr w2, [x19, -4] - cmp w2, 256 - ccmn w2, #1, 4, ne - beq .L1388 - ldrb w1, [x20, 6] - ldrh w0, [x26, 236] - cmp w1, w0 - bcc .L1389 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 985 - add x1, x1, 632 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L1389: - add x1, x29, 96 - ldr w0, [x23, 4] - mov w2, 1 - str w0, [x1, -12]! - ldr w0, [x23, 24] - bl log2phys - ldr x0, [x23, 16] - ldr w4, [x0, 12] - lsr w0, w4, 10 - bl P2V_block_in_plane - and w1, w0, 65535 - mov w23, w1 - cmn w4, #1 - beq .L1390 - add x2, x25, :lo12:.LANCHOR0 - ubfiz x0, x1, 1, 16 - ldr x2, [x2, 72] - ldrh w0, [x2, x0] - cbnz w0, .L1391 - adrp x0, .LC123 - mov w2, 0 - add x0, x0, :lo12:.LC123 - bl sftl_printk -.L1391: - mov w0, w23 - bl decrement_vpc_count -.L1390: - add x19, x19, 32 - b .L1386 -.L1392: + mov w1, 32 + umaddl x21, w21, w1, x19 +.L1416: + cmp x21, x19 + bne .L1423 adrp x0, .LANCHOR0+236 ldrb w1, [x20, 6] ldrh w0, [x0, #:lo12:.LANCHOR0+236] cmp w1, w0 - bcc .L1385 + bcc .L1415 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 536 + add x0, x0, :lo12:.LC9 mov w2, 1000 - add x1, x1, 632 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1385: - add x21, x21, :lo12:__stack_chk_guard - ldr x1, [x29, 88] - ldr x0, [x21] - eor x0, x1, x0 - cbz x0, .L1395 +.L1415: + mrs x0, sp_el0 + ldr x1, [sp, 72] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1425 bl __stack_chk_fail -.L1395: +.L1418: + ldr w1, [x19, 4] + mov x0, x24 + bl sftl_printk + ldr w0, [x19, 4] + ubfx x0, x0, 10, 16 + bl P2V_block_in_plane + bl decrement_vpc_count + ldrh w0, [x20, 4] + cbnz w0, .L1417 + mov x0, x20 + bl allocate_new_data_superblock +.L1417: + mov x0, x20 + bl get_new_active_ppa + str w0, [x19, 4] + mov w2, 0 + mov w1, 1 + str w0, [sp, 68] + ldrb w3, [x20, 9] + mov x0, x19 + bl FlashProgPages +.L1423: + ldr w2, [x19] + cmp w2, 256 + ccmn w2, #1, 4, ne + beq .L1418 + ldrb w1, [x20, 6] + ldrh w0, [x23, 236] + cmp w1, w0 + bcc .L1419 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 536 + add x0, x0, :lo12:.LC9 + mov w2, 985 + bl sftl_printk +.L1419: + ldr w0, [x19, 4] + add x1, sp, 68 + str w0, [sp, 68] + mov w2, 1 + ldr w0, [x19, 24] + bl log2phys + ldr x0, [x19, 16] + ldr w0, [x0, 12] + cmn w0, #1 + beq .L1420 + ubfx x0, x0, 10, 16 + bl P2V_block_in_plane + and w1, w0, 65535 + mov w22, w1 + ldr x2, [x23, 72] + ubfiz x0, x22, 1, 16 + ldrh w0, [x2, x0] + cbnz w0, .L1421 + adrp x0, .LC124 + mov w2, 0 + add x0, x0, :lo12:.LC124 + bl sftl_printk +.L1421: + mov w0, w22 + bl decrement_vpc_count +.L1420: + add x19, x19, 32 + b .L1416 +.L1425: 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], 80 + hint 29 // autiasp ret .size FtlProgPages, .-FtlProgPages .align 2 .global FtlGcFreeTempBlock .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: - stp x29, x30, [sp, -96]! - mov w3, 65535 - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE118 + .text +.LPFE118: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -80]! + mrs x1, sp_el0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - adrp x21, __stack_chk_guard stp x23, x24, [sp, 48] - add x1, x21, :lo12:__stack_chk_guard - stp x25, x26, [sp, 64] - ldr x2, [x1] - str x2, [x29, 88] - mov x2,0 - add x2, x19, :lo12:.LANCHOR0 - ldrh w4, [x2, 128] - ldrh w1, [x2, 306] - cmp w4, w3 - bne .L1401 -.L1408: - add x0, x19, :lo12:.LANCHOR0 + ldrh w3, [x19, 128] + ldr x2, [x1, 1376] + str x2, [sp, 72] + mov x2, 0 + ldrh w1, [x19, 306] mov w2, 65535 - add x1, x0, 128 - ldrh w3, [x0, 128] - str wzr, [x0, 3720] cmp w3, w2 - bne .L1422 -.L1426: + bne .L1431 +.L1438: + ldrh w2, [x19, 128] + add x0, x19, 128 + str wzr, [x19, 3704] + mov w1, 65535 + cmp w2, w1 + bne .L1452 +.L1456: mov w0, 0 -.L1400: - add x21, x21, :lo12:__stack_chk_guard - ldr x2, [x29, 88] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L1417 +.L1430: + mrs x1, sp_el0 + ldr x2, [sp, 72] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1447 bl __stack_chk_fail -.L1401: +.L1431: adrp x20, .LANCHOR2 - cbz w0, .L1404 - add x0, x20, :lo12:.LANCHOR2 - ldrh w4, [x0, 4] - cmp w4, w3 - beq .L1405 -.L1406: - mov w1, 2 -.L1404: add x20, x20, :lo12:.LANCHOR2 - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 128 + cbz w0, .L1434 + ldrh w0, [x20, 4] + cmp w0, w2 + beq .L1435 +.L1436: + mov w1, 2 +.L1434: + add x0, x19, 128 bl FtlGcScanTempBlk - str w0, [x29, 84] - mov w0, 65535 ldrh w1, [x20, 4] + str w0, [sp, 68] + mov w0, 65535 cmp w1, w0 - beq .L1408 + beq .L1438 mov w0, 1 - b .L1400 -.L1405: - strh wzr, [x0, 4] - ldrh w0, [x2, 228] + b .L1430 +.L1435: + ldrh w0, [x19, 228] + strh wzr, [x20, 4] cmp w0, 17 - bhi .L1406 - b .L1404 -.L1422: - ldrh w2, [x0, 3304] - ldrb w1, [x1, 7] - ldrh w0, [x0, 306] - mul w0, w1, w0 - cmp w2, w0 - beq .L1409 + bhi .L1436 + b .L1434 +.L1452: + ldrb w0, [x0, 7] + ldrh w2, [x19, 306] + ldrh w1, [x19, 3296] + mul w0, w0, w2 + cmp w1, w0 + beq .L1439 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 549 + add x0, x0, :lo12:.LC9 mov w2, 164 - add x1, x1, 648 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1409: - add x0, x19, :lo12:.LANCHOR0 - mov w22, 0 - mov x20, x0 - mov w26, 12 - ldrb w1, [x0, 135] - ldrh w4, [x0, 306] - ldr x2, [x0, 72] - ldrh w3, [x0, 128] - mul w1, w1, w4 - strh w1, [x2, x3, lsl 1] - ldr w2, [x0, 2656] - ldrh w1, [x0, 3304] - add w1, w1, w2 - str w1, [x0, 2656] -.L1410: - ldrh w0, [x20, 3304] - cmp w0, w22 - bhi .L1414 +.L1439: + ldrb w0, [x19, 135] + mov w20, 0 + ldrh w3, [x19, 306] + mov w24, 12 + ldrh w2, [x19, 128] + ldr x1, [x19, 72] + mul w0, w0, w3 + strh w0, [x1, x2, lsl 1] + ldr w1, [x19, 2648] + ldrh w0, [x19, 3296] + add w0, w0, w1 + str w0, [x19, 2648] +.L1440: + ldrh w0, [x19, 3296] + cmp w0, w20 + bhi .L1444 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x20, 128] - ldr x2, [x20, 72] - ubfiz x1, x0, 1, 16 - ldrh w1, [x2, x1] - cbz w1, .L1415 + ldrh w2, [x19, 128] + ldr x1, [x19, 72] + ldrh w0, [x19, 128] + ldrh w1, [x1, x2, lsl 1] + cbz w1, .L1445 bl INSERT_DATA_LIST -.L1416: - add x19, x19, :lo12:.LANCHOR0 +.L1446: mov w20, -1 - strh wzr, [x19, 3304] strh w20, [x19, 128] - strh wzr, [x19, 3292] + strh wzr, [x19, 3284] + strh wzr, [x19, 3296] bl l2p_flush bl FtlVpcTblFlush strh w20, [x19, 176] - ldrh w0, [x19, 2700] + ldrh w0, [x19, 2692] ldrh w1, [x19, 228] add w0, w0, w0, lsl 1 cmp w1, w0, lsr 2 - ble .L1426 + ble .L1456 mov w0, 20 - strh w0, [x19, 3232] - b .L1426 -.L1414: - umull x24, w22, w26 - ldr x25, [x20, 3312] - ldr w1, [x20, 2632] - add x23, x25, x24 - ldr w0, [x23, 8] + strh w0, [x19, 3224] + b .L1456 +.L1444: + ldr x23, [x19, 3304] + umull x22, w20, w24 + ldr w1, [x19, 2624] + add x21, x23, x22 + ldr w0, [x21, 8] cmp w0, w1 - bcc .L1411 -.L1424: - ldrh w0, [x20, 128] - b .L1425 -.L1411: - add x1, x29, 84 + bcc .L1441 +.L1454: + ldrh w0, [x19, 128] + b .L1455 +.L1441: + add x1, sp, 68 mov w2, 0 bl log2phys - ldr w0, [x25, x24] - ldr w1, [x29, 84] + ldr w1, [sp, 68] + ldr w0, [x23, x22] cmp w0, w1 - bne .L1413 - lsr w0, w0, 10 + bne .L1443 + ubfx x0, x0, 10, 16 bl P2V_block_in_plane - mov w24, w0 - ldr w0, [x23, 8] + mov w22, w0 + ldr w0, [x21, 8] + add x1, x21, 4 mov w2, 1 - add x1, x23, 4 bl log2phys - mov w0, w24 -.L1425: + mov w0, w22 +.L1455: bl decrement_vpc_count - b .L1412 -.L1413: - ldr w0, [x23, 4] + b .L1442 +.L1443: + ldr w0, [x21, 4] cmp w1, w0 - bne .L1424 -.L1412: - add w22, w22, 1 - and w22, w22, 65535 - b .L1410 -.L1415: + bne .L1454 +.L1442: + add w20, w20, 1 + and w20, w20, 65535 + b .L1440 +.L1445: bl INSERT_FREE_LIST - b .L1416 -.L1417: + b .L1446 +.L1447: 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], 80 + hint 29 // autiasp ret .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .align 2 .global FtlGcPageRecovery .type FtlGcPageRecovery, %function FtlGcPageRecovery: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE119 + .text +.LPFE119: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 @@ -9806,30 +11213,40 @@ FtlGcPageRecovery: ldrh w1, [x19, 130] ldrh w0, [x19, 306] cmp w1, w0 - bcc .L1427 - add x0, x19, 3648 + bcc .L1457 + add x0, x19, 3632 bl FtlMapBlkWriteDump_data mov w0, 0 bl FtlGcFreeTempBlock - str wzr, [x19, 3720] -.L1427: + str wzr, [x19, 3704] +.L1457: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlGcPageRecovery, .-FtlGcPageRecovery .align 2 .global FtlPowerLostRecovery .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE120 + .text +.LPFE120: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 add x20, x19, 24 add x19, x19, 80 mov x0, x20 - str wzr, [x19, 3684] + str wzr, [x19, 3668] bl FtlRecoverySuperblock mov x0, x20 bl FtlSlcSuperblockCheck @@ -9843,1712 +11260,1720 @@ FtlPowerLostRecovery: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size FtlPowerLostRecovery, .-FtlPowerLostRecovery .align 2 .global Ftl_gc_temp_data_write_back .type Ftl_gc_temp_data_write_back, %function Ftl_gc_temp_data_write_back: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE121 + .text +.LPFE121: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - adrp x11, .LANCHOR0 mov w3, 0 + mov x29, sp + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 mov w2, 0 - add x29, sp, 0 - str x19, [sp, 16] - add x19, x11, :lo12:.LANCHOR0 - ldr w1, [x19, 3248] - ldr x0, [x19, 3448] + mov w20, 0 + ldr w1, [x19, 3240] + ldr x0, [x19, 3432] bl FlashProgPages - mov w10, 0 -.L1433: - ldr w1, [x19, 3248] - cmp w10, w1 - bcc .L1436 - ldr x0, [x19, 3448] +.L1463: + ldr w1, [x19, 3240] + ldr x2, [x19, 3432] + cmp w20, w1 + bcc .L1466 + mov x0, x2 bl FtlGcBufFree - str wzr, [x19, 3248] ldrh w0, [x19, 132] - cbnz w0, .L1438 + str wzr, [x19, 3240] + cbnz w0, .L1468 mov w0, 1 bl FtlGcFreeTempBlock mov w0, 1 -.L1432: - ldr x19, [sp, 16] +.L1462: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L1436: - ldr x2, [x19, 3448] - ubfiz x0, x10, 5, 16 - add x1, x2, x0 - ldr w2, [x2, x0] +.L1466: + ubfiz x4, x20, 5, 16 + add x1, x2, x4 + ldr w2, [x2, x4] ldr x3, [x1, 16] - cmn w2, #1 - bne .L1434 -.L1440: ldr w1, [x1, 4] ldr w0, [x3, 12] + cmn w2, #1 + bne .L1464 +.L1470: + add w20, w20, 1 bl FtlGcUpdatePage - add w10, w10, 1 - and w10, w10, 65535 - b .L1433 -.L1434: + and w20, w20, 65535 + b .L1463 +.L1464: ldr w2, [x3, 8] - b .L1440 -.L1438: + b .L1470 +.L1468: mov w0, 0 - b .L1432 + b .L1462 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .align 2 .global Ftl_get_new_temp_ppa .type Ftl_get_new_temp_ppa, %function Ftl_get_new_temp_ppa: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE122 + .text +.LPFE122: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp, 16] + mov w1, 65535 + mov x29, sp + str x19, [sp, 16] adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 128 - ldrh w2, [x0, 128] - mov w0, 65535 - cmp w2, w0 - beq .L1442 - ldrh w0, [x1, 4] - cbnz w0, .L1443 -.L1442: - add x20, x19, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldrh w2, [x19, 128] + cmp w2, w1 + beq .L1472 + ldrh w0, [x19, 132] + cbnz w0, .L1473 +.L1472: mov w0, 0 bl FtlGcFreeTempBlock - add x0, x20, 128 + add x0, x19, 128 strb wzr, [x0, 8] bl allocate_data_superblock - strh wzr, [x20, 3292] - strh wzr, [x20, 3304] + strh wzr, [x19, 3284] + strh wzr, [x19, 3296] bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L1443: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 128 +.L1473: + add x0, x19, 128 bl get_new_active_ppa - ldp x19, x20, [sp, 16] + ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa + .section .rodata.str1.1 +.LC125: + .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" + .text .align 2 .global rk_ftl_garbage_collect .type rk_ftl_garbage_collect, %function rk_ftl_garbage_collect: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE123 + .text +.LPFE123: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -144]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 + adrp x6, .LANCHOR0 + mov x29, sp stp x23, x24, [sp, 48] - adrp x24, __stack_chk_guard - stp x27, x28, [sp, 80] - mov w27, w0 + add x23, x6, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] - add x0, x24, :lo12:__stack_chk_guard stp x25, x26, [sp, 64] - str x24, [x29, 112] - ldr x1, [x0] - str x1, [x29, 136] - mov x1,0 - add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0, 3424] - cbnz w1, .L1525 - ldrh w1, [x0, 2584] - cmp w1, 47 - bls .L1525 - adrp x1, .LANCHOR2+4 - ldrh w2, [x1, #:lo12:.LANCHOR2+4] + stp x27, x28, [sp, 80] + str w0, [sp, 108] + mrs x0, sp_el0 + ldr x1, [x0, 1376] + str x1, [sp, 136] + mov x1, 0 + ldr w0, [x23, 3408] + cbnz w0, .L1552 + ldrh w0, [x23, 2584] + cmp w0, 47 + bls .L1552 + adrp x0, .LANCHOR2+4 + ldrh w1, [x0, #:lo12:.LANCHOR2+4] + mov w0, 65535 + cmp w1, w0 + bne .L1477 +.L1480: + ldrh w0, [x23, 224] mov w1, 65535 - cmp w2, w1 - bne .L1447 -.L1450: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldrh w1, [x0, 224] - cmp w1, w2 - bne .L1448 -.L1449: - add x20, x19, :lo12:.LANCHOR0 + cmp w0, w1 + bne .L1478 +.L1479: bl FtlReadRefresh - mov w21, 65535 - ldr w0, [x20, 3236] - ldrh w1, [x20, 176] + ldr w1, [sp, 108] + ldr w0, [x23, 3228] + mov w19, 65535 + ldrh w2, [x23, 128] add w0, w0, 1 - add w0, w0, w27, lsl 7 - str w0, [x20, 3236] - cmp w1, w21 - bne .L1451 - ldrh w21, [x20, 128] - cmp w21, w1 - bne .L1528 - ldrh w22, [x20, 226] - cmp w22, w21 - bne .L1451 - ldrh w1, [x20, 228] + add w0, w0, w1, lsl 7 + ldrh w1, [x23, 176] + str w0, [x23, 3228] + and w1, w1, w2 + ldrh w2, [x23, 226] + and w1, w1, w2 + and w20, w1, 65535 + cmp w19, w1, uxth + bne .L1554 + ldrh w1, [x23, 228] mov w2, 1024 cmp w1, 24 mov w1, 5120 csel w1, w1, w2, cc cmp w0, w1 - bls .L1531 - strh wzr, [x20, 3968] - str wzr, [x20, 3236] + bls .L1481 + str wzr, [x23, 3228] + strh wzr, [x23, 3952] bl GetSwlReplaceBlock - and w21, w0, 65535 - cmp w21, w22 - bne .L1532 - ldrh w1, [x20, 228] - ldrh w0, [x20, 3234] + and w20, w0, 65535 + cmp w19, w0, uxth + bne .L1483 + ldrh w1, [x23, 228] + ldrh w0, [x23, 3226] cmp w1, w0 - bcs .L1454 + bcs .L1484 mov w0, 64 bl List_get_gc_head_node - and w0, w0, 65535 - cmp w0, w21 - beq .L1456 - ldr x1, [x20, 72] - ubfiz x0, x0, 1, 16 - ldrh w0, [x1, x0] + and w1, w0, 65535 + cmp w20, w0, uxth + beq .L1486 + ldr x0, [x23, 72] + ubfiz x1, x1, 1, 16 + ldrh w0, [x0, x1] cmp w0, 7 - bhi .L1457 + bhi .L1487 mov w0, 0 bl List_get_gc_head_node - and w22, w0, 65535 - mov w0, 128 - strh w0, [x20, 3234] - cmp w22, w21 - bne .L1453 -.L1456: - bl FtlGcReFreshBadBlk -.L1451: - cmp w27, 0 - mov w1, 65535 - ccmp w21, w1, 0, eq - bne .L1459 - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 228] - cmp w0, 24 - bhi .L1533 - cmp w0, 16 - ldrh w20, [x1, 306] - bls .L1461 - lsr w20, w20, 5 -.L1460: - add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1, 3232] - cmp w2, w0 - bcs .L1464 - ldrh w0, [x1, 128] - mov w2, 65535 - cmp w0, w2 - bne .L1465 - ldrh w2, [x1, 226] - cmp w2, w0 - bne .L1465 - ldrh w0, [x1, 3968] - cbnz w0, .L1466 - ldr w2, [x1, 2632] - ldr w3, [x1, 2620] - add w2, w2, w2, lsl 1 - cmp w3, w2, lsr 2 - bcs .L1467 -.L1466: - add x2, x19, :lo12:.LANCHOR0 - ldrh w1, [x2, 2700] - add w1, w1, w1, lsl 1 - asr w1, w1, 2 - strh w1, [x2, 3232] -.L1468: - add x19, x19, :lo12:.LANCHOR0 - str wzr, [x19, 3244] -.L1445: - ldr x1, [x29, 112] - add x24, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 136] - ldr x1, [x24] - eor x1, x2, x1 - cbz x1, .L1523 - bl __stack_chk_fail -.L1447: - ldrh w0, [x0, 128] - cmp w0, w1 - beq .L1450 + mov w2, 128 + strh w2, [x23, 3226] + and w1, w0, 65535 + cmp w20, w0, uxth + beq .L1486 + mov w20, w1 +.L1483: + ldr x1, [x23, 72] + ubfiz x0, x20, 1, 16 + ldr x2, [x23, 2600] + ldrh w3, [x1, x0] + mov w1, w20 + ldrh w5, [x23, 3224] + ldrh w4, [x2, x0] + adrp x0, .LC125 + ldrh w2, [x23, 228] + add x0, x0, :lo12:.LC125 + bl sftl_printk + b .L1486 +.L1477: + ldrh w1, [x23, 128] + cmp w1, w0 + beq .L1480 mov w0, 1 bl FtlGcFreeTempBlock - cbz w0, .L1450 + cbz w0, .L1480 mov w0, 1 - b .L1445 -.L1448: - ldrh w3, [x0, 226] - cmp w3, w2 - bne .L1449 - strh w1, [x0, 226] - mov w1, -1 - strh w1, [x0, 224] - b .L1449 -.L1457: - mov w0, 64 -.L1563: - strh w0, [x20, 3234] - b .L1456 -.L1454: - mov w0, 80 - b .L1563 -.L1532: - mov w22, w21 -.L1453: - add x0, x19, :lo12:.LANCHOR0 - ubfiz x1, x22, 1, 32 - mov w21, w22 - ldr x2, [x0, 72] - ldr x3, [x0, 2600] - ldrh w5, [x0, 3232] - ldrh w4, [x3, x1] - ldrh w3, [x2, x1] - mov w1, w22 - ldrh w2, [x0, 228] - adrp x0, .LC124 - add x0, x0, :lo12:.LC124 - bl sftl_printk - b .L1456 -.L1528: - mov w21, w1 - b .L1451 -.L1531: - mov w21, w22 - b .L1451 -.L1461: - cmp w0, 12 - bls .L1462 - lsr w20, w20, 4 - b .L1460 -.L1462: - mov w1, w20 - cmp w0, 9 - lsr w20, w20, 2 - csel w20, w20, w1, cs - b .L1460 -.L1533: - mov w20, 1 - b .L1460 -.L1467: - mov w2, 18 - strh w2, [x1, 3232] - b .L1468 -.L1465: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2700] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - strh w0, [x1, 3232] -.L1464: - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 3320] - cbz w0, .L1534 - add w20, w20, 32 - and w20, w20, 65535 -.L1534: - mov w21, 65535 -.L1470: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldrh w1, [x0, 176] - cmp w1, w2 + b .L1475 +.L1478: + ldrh w2, [x23, 226] + cmp w2, w1 bne .L1479 - cmp w21, w1 - beq .L1480 - strh w21, [x0, 176] -.L1481: - add x5, x19, :lo12:.LANCHOR0 - mov w1, 65535 - ldrh w0, [x5, 176] - strb wzr, [x5, 184] - cmp w0, w1 - beq .L1479 - bl IsBlkInGcList - cbz w0, .L1484 + strh w0, [x23, 226] mov w0, -1 - strh w0, [x5, 176] -.L1484: - add x22, x19, :lo12:.LANCHOR0 - mov w0, 65535 - add x23, x22, 176 - ldrh w1, [x22, 176] - cmp w1, w0 - beq .L1479 - mov x0, x23 - bl make_superblock - ldrh w1, [x22, 176] - ldr x0, [x22, 72] - strh wzr, [x22, 178] - strb wzr, [x22, 182] - strh wzr, [x22, 3970] - ldrh w0, [x0, x1, lsl 1] - strh w0, [x22, 3972] -.L1479: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - ldrh w2, [x0, 24] - cmp w2, w1 - beq .L1485 - ldrh w2, [x0, 80] - cmp w2, w1 - beq .L1485 - ldrh w0, [x0, 128] - cmp w0, w1 - bne .L1486 -.L1485: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 176] + strh w0, [x23, 224] + b .L1479 +.L1487: + mov w0, 64 +.L1582: + strh w0, [x23, 3226] .L1486: - adrp x23, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR1 - add x23, x23, 672 -.L1521: - add x22, x19, :lo12:.LANCHOR0 + bl FtlGcReFreshBadBlk +.L1481: + ldr w1, [sp, 108] mov w0, 65535 - ldrh w25, [x22, 176] - cmp w25, w0 - bne .L1487 - mov w26, 2 - str wzr, [x22, 3244] -.L1488: - ldrh w5, [x22, 3240] - mov w0, w5 - bl List_get_gc_head_node - and w6, w0, 65535 - strh w6, [x22, 176] - cmp w6, w25 + cmp w1, 0 + ccmp w20, w0, 0, eq bne .L1489 - strh wzr, [x22, 3240] - mov w0, 8 - b .L1445 -.L1459: - add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x0, 128] - cmp w2, w1 - bne .L1537 - ldrh w1, [x0, 226] - cmp w1, w2 - bne .L1537 - cmp w21, w1 - bne .L1537 - ldrh w1, [x0, 176] - cmp w1, w21 - beq .L1471 -.L1537: - mov w20, 1 - b .L1470 -.L1471: - ldrh w2, [x0, 228] - ldrh w1, [x0, 3232] - str wzr, [x0, 3244] - cmp w2, w1 - bls .L1472 - ldrh w1, [x0, 3968] - cbnz w1, .L1473 - ldr w1, [x0, 2632] - ldr w2, [x0, 2620] + ldrh w0, [x23, 228] + cmp w0, 24 + bhi .L1557 + ldrh w19, [x23, 306] + cmp w0, 16 + bls .L1491 + lsr w19, w19, 5 +.L1490: + ldrh w1, [x23, 3224] + cmp w1, w0 + bcs .L1493 + ldrh w1, [x23, 226] + ldrh w0, [x23, 128] + and w0, w0, w1 + mov w1, 65535 + cmp w1, w0, uxth + bne .L1494 + ldrh w0, [x23, 3952] + cbnz w0, .L1495 + ldr w1, [x23, 2624] + ldr w2, [x23, 2620] add w1, w1, w1, lsl 1 cmp w2, w1, lsr 2 - bcs .L1474 -.L1473: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2700] + bcs .L1558 +.L1495: + ldrh w1, [x23, 2692] + add w1, w1, w1, lsl 1 + lsr w1, w1, 2 +.L1496: + strh w1, [x23, 3224] + str wzr, [x23, 3236] +.L1475: + mrs x1, sp_el0 + ldr x2, [sp, 136] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1550 + bl __stack_chk_fail +.L1484: + mov w0, 80 + b .L1582 +.L1554: + mov w20, w19 + b .L1481 +.L1491: + cmp w0, 12 + bls .L1492 + lsr w19, w19, 4 + b .L1490 +.L1492: + cmp w0, 8 + bls .L1490 + lsr w19, w19, 2 + b .L1490 +.L1557: + mov w19, 1 + b .L1490 +.L1558: + mov w1, 18 + b .L1496 +.L1494: + ldrh w0, [x23, 2692] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1, 3232] -.L1475: + strh w0, [x23, 3224] +.L1493: + ldrh w0, [x23, 3312] + cbz w0, .L1559 + add w19, w19, 32 + and w19, w19, 65535 +.L1559: + mov w20, 65535 +.L1498: + ldrh w0, [x23, 176] + mov w1, 65535 + cmp w0, w1 + bne .L1506 + cmp w20, w0 + beq .L1507 + strh w20, [x23, 176] +.L1508: + ldrh w0, [x23, 176] + add x21, x23, 176 + strb wzr, [x21, 8] + mov w1, 65535 + cmp w0, w1 + beq .L1506 + bl IsBlkInGcList + cbz w0, .L1511 + mov w0, -1 + strh w0, [x23, 176] +.L1506: + ldrh w0, [x23, 176] + ldrh w1, [x23, 24] + cmp w1, w0 + beq .L1512 + ldrh w1, [x23, 80] + cmp w1, w0 + beq .L1512 + ldrh w1, [x23, 128] + cmp w1, w0 + bne .L1513 +.L1512: + mov w0, -1 + strh w0, [x23, 176] +.L1513: + adrp x21, .LANCHOR1 + add x21, x21, :lo12:.LANCHOR1 + add x21, x21, 568 +.L1548: + ldrh w24, [x23, 176] + mov w0, 65535 + cmp w24, w0 + bne .L1514 + mov w25, 2 + str wzr, [x23, 3236] +.L1515: + ldrh w22, [x23, 3232] + mov w0, w22 + bl List_get_gc_head_node + and w26, w0, 65535 + strh w26, [x23, 176] + cmp w26, w24 + bne .L1516 + mov w0, 8 + strh wzr, [x23, 3232] + b .L1475 +.L1489: + ldrh w19, [x23, 128] + ldrh w1, [x23, 226] + and w19, w19, w1 + and w19, w20, w19 + cmp w19, w0 + bne .L1560 + ldrh w0, [x23, 176] + cmp w0, w19 + beq .L1499 +.L1503: + mov w20, w19 +.L1560: + mov w19, 1 + b .L1498 +.L1499: + ldrh w1, [x23, 228] + ldrh w0, [x23, 3224] + str wzr, [x23, 3236] + cmp w1, w0 + bls .L1500 + ldrh w0, [x23, 3952] + cbnz w0, .L1501 + ldr w0, [x23, 2624] + ldr w1, [x23, 2620] + add w0, w0, w0, lsl 1 + cmp w1, w0, lsr 2 + bcs .L1561 +.L1501: + ldrh w0, [x23, 2692] + add w0, w0, w0, lsl 1 + lsr w0, w0, 2 +.L1502: + strh w0, [x23, 3224] bl FtlReadRefresh mov w0, 0 bl List_get_gc_head_node - add x1, x19, :lo12:.LANCHOR0 + ldr x1, [x23, 72] ubfiz x0, x0, 1, 16 - ldr x2, [x1, 72] - ldrh w0, [x2, x0] + ldrh w0, [x1, x0] cmp w0, 4 - bls .L1472 - ldrh w0, [x1, 3968] - b .L1445 -.L1474: - mov w1, 18 - strh w1, [x0, 3232] + bls .L1500 +.L1583: + ldrh w0, [x23, 3952] b .L1475 -.L1472: - add x20, x19, :lo12:.LANCHOR0 - ldrh w0, [x20, 3968] - cbnz w0, .L1537 - ldrh w5, [x20, 2700] - add w0, w5, w5, lsl 1 +.L1561: + mov w0, 18 + b .L1502 +.L1500: + ldrh w0, [x23, 3952] + cbnz w0, .L1503 + ldrh w20, [x23, 2692] + add w0, w20, w20, lsl 1 asr w0, w0, 2 - strh w0, [x20, 3232] + strh w0, [x23, 3224] mov w0, 0 bl List_get_gc_head_node - ldr x1, [x20, 72] + ldr x1, [x23, 72] ubfiz x0, x0, 1, 16 - ldrh w2, [x20, 236] + ldrh w2, [x23, 236] ldrh w1, [x1, x0] - ldrh w0, [x20, 308] + ldrh w0, [x23, 308] mul w0, w0, w2 mov w2, 2 sdiv w0, w0, w2 cmp w1, w0 - ble .L1477 - ldrh w0, [x20, 228] - sub w5, w5, #1 - cmp w0, w5 - blt .L1477 + ble .L1504 + ldrh w0, [x23, 228] + sub w20, w20, #1 + cmp w0, w20 + blt .L1504 bl FtlReadRefresh - ldrh w0, [x20, 3968] - b .L1445 -.L1477: - cbnz w1, .L1537 - add x19, x19, :lo12:.LANCHOR0 + b .L1583 +.L1504: + cbnz w1, .L1503 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x19, 228] + ldrh w0, [x23, 228] add w0, w0, 1 - b .L1445 -.L1480: - ldrh w1, [x0, 226] - cmp w1, w21 - beq .L1481 - ldr x2, [x0, 72] - ubfiz x1, x1, 1, 16 - ldrh w1, [x2, x1] - cbnz w1, .L1482 - mov w1, -1 - strh w1, [x0, 226] -.L1482: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 226] - strh w1, [x0, 176] - mov w1, -1 - strh w1, [x0, 226] - b .L1481 -.L1489: - mov w0, w6 + b .L1475 +.L1507: + ldrh w0, [x23, 226] + cmp w0, w20 + beq .L1508 + ldr x1, [x23, 72] + ubfiz x0, x0, 1, 16 + ldrh w0, [x1, x0] + cbnz w0, .L1509 + mov w0, -1 + strh w0, [x23, 226] +.L1509: + ldrh w0, [x23, 226] + strh w0, [x23, 176] + mov w0, -1 + strh w0, [x23, 226] + b .L1508 +.L1516: + mov w0, w26 bl IsBlkInGcList - add w5, w5, 1 - cbz w0, .L1490 - strh w5, [x22, 3240] - b .L1488 -.L1490: - ldrh w4, [x22, 236] - ubfiz x1, x6, 1, 16 - ldrh w0, [x22, 306] - and w5, w5, 65535 - ldr x2, [x22, 72] - strh w5, [x22, 3240] - mul w0, w0, w4 - ldrh w3, [x2, x1] - sdiv w4, w0, w26 - cmp w3, w4 - bgt .L1492 - cmp w5, 48 - bls .L1493 - cmp w3, 8 - bls .L1493 - ldrh w3, [x22, 3292] - cmp w3, 35 - bhi .L1493 -.L1492: - strh wzr, [x22, 3240] -.L1493: - ldrh w1, [x2, x1] + add w1, w22, 1 + and w1, w1, 65535 + strh w1, [x23, 3232] + cbnz w0, .L1515 + ldrh w5, [x23, 236] + ubfiz x2, x26, 1, 16 + ldrh w0, [x23, 306] + ldr x3, [x23, 72] + mul w0, w0, w5 + ldrh w4, [x3, x2] + sdiv w5, w0, w25 + cmp w4, w5 + bgt .L1519 + cmp w1, 48 + bls .L1520 + cmp w4, 8 + bls .L1520 + ldrh w1, [x23, 3284] + cmp w1, 35 + bhi .L1520 +.L1519: + strh wzr, [x23, 3232] +.L1520: + ldrh w1, [x3, x2] cmp w0, w1 - bgt .L1494 - cmp w21, w25 - bne .L1494 - ldrh w0, [x22, 3240] + bgt .L1521 + cmp w20, w24 + bne .L1521 + ldrh w0, [x23, 3232] cmp w0, 3 - bhi .L1494 + bhi .L1521 mov w0, -1 - strh wzr, [x22, 3240] - strh w0, [x22, 176] -.L1564: - ldrh w0, [x22, 3968] - b .L1445 -.L1494: - cbnz w1, .L1495 + strh w0, [x23, 176] + strh wzr, [x23, 3232] + b .L1583 +.L1521: + cbnz w1, .L1522 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x22, 3240] + ldrh w0, [x23, 3232] add w0, w0, 1 - strh w0, [x22, 3240] - b .L1488 -.L1495: - add x0, x19, :lo12:.LANCHOR0 - strb wzr, [x0, 184] - ldrh w0, [x0, 24] - cmp w0, w6 - bne .L1496 - adrp x0, .LC8 + strh w0, [x23, 3232] + b .L1515 +.L1522: + ldrh w0, [x23, 24] + strb wzr, [x23, 184] + cmp w0, w26 + bne .L1523 + adrp x0, .LC9 + mov x1, x21 + add x0, x0, :lo12:.LC9 mov w2, 717 - mov x1, x23 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1496: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - ldrh w0, [x0, 80] +.L1523: + ldrh w1, [x23, 176] + ldrh w0, [x23, 80] cmp w1, w0 - bne .L1497 - adrp x0, .LC8 + bne .L1524 + adrp x0, .LC9 + mov x1, x21 + add x0, x0, :lo12:.LC9 mov w2, 718 - mov x1, x23 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1497: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - ldrh w0, [x0, 128] +.L1524: + ldrh w1, [x23, 176] + ldrh w0, [x23, 128] cmp w1, w0 - bne .L1498 - adrp x0, .LC8 + bne .L1525 + adrp x0, .LC9 + mov x1, x21 + add x0, x0, :lo12:.LC9 mov w2, 719 - mov x1, x23 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1498: - add x22, x19, :lo12:.LANCHOR0 - add x25, x22, 176 - mov x0, x25 +.L1525: + add x22, x23, 176 + mov x0, x22 bl make_superblock - ldrh w1, [x22, 176] - ldr x0, [x22, 72] - strh wzr, [x22, 3970] + ldrh w1, [x23, 176] + ldr x0, [x23, 72] + strh wzr, [x23, 3954] ldrh w0, [x0, x1, lsl 1] - strh w0, [x22, 3972] - strh wzr, [x22, 178] - strb wzr, [x22, 182] -.L1487: - add x1, x19, :lo12:.LANCHOR0 + strh wzr, [x23, 178] + strb wzr, [x23, 182] + strh w0, [x23, 3956] +.L1514: mov w0, 1 - str w0, [x1, 3424] - ldrh w26, [x1, 306] - cbz w27, .L1499 - ldrh w0, [x1, 236] - ldrh w2, [x1, 176] - ldr x1, [x1, 72] - mul w0, w0, w26 + str w0, [x23, 3408] + ldrh w0, [x23, 306] + str w0, [sp, 104] + ldr w0, [sp, 108] + cbz w0, .L1526 + ldr w1, [sp, 104] + ldrh w0, [x23, 236] + ldrh w2, [x23, 176] + mul w0, w0, w1 + ldr x1, [x23, 72] ldrh w1, [x1, x2, lsl 1] sub w0, w0, w1 mov w1, 4 sdiv w0, w0, w1 - add w20, w20, w0 - and w20, w20, 65535 -.L1499: - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 178] - add w1, w0, w20 - cmp w1, w26 - ble .L1500 - sub w20, w26, w0 - and w20, w20, 65535 -.L1500: - mov w28, 0 -.L1501: - cmp w20, w28, uxth - bls .L1509 - add x0, x19, :lo12:.LANCHOR0 + add w19, w0, w19 + and w19, w19, 65535 +.L1526: + ldrh w0, [x23, 178] + ldr w2, [sp, 104] + add w1, w0, w19 + cmp w1, w2 + ble .L1527 + sub w0, w2, w0 + and w19, w0, 65535 +.L1527: + add x26, x23, 176 + mov w27, 0 +.L1528: + ldrh w0, [x26, 2] + cmp w19, w27, uxth + bls .L1536 + ldrh w7, [x23, 236] + add w1, w0, w27 + mov x4, x26 mov w22, 0 - add x3, x0, 192 - mov w1, 0 - mov w6, 65535 - ldrh w4, [x0, 178] - ldrh w7, [x0, 236] - add w4, w4, w28 - b .L1510 -.L1503: - ldrh w2, [x3] - cmp w2, w6 - beq .L1502 - ldr x5, [x0, 3280] + mov w2, 0 + mov w5, 65535 + b .L1537 +.L1530: + ldrh w3, [x4, 16] + cmp w3, w5 + beq .L1529 ubfiz x8, x22, 5, 16 add w22, w22, 1 - orr w2, w4, w2, lsl 10 - add x5, x5, x8 + add x0, x0, x8 and w22, w22, 65535 - str w2, [x5, 4] -.L1502: - add w1, w1, 1 - add x3, x3, 2 - and w1, w1, 65535 -.L1510: - cmp w1, w7 - bne .L1503 - add x24, x19, :lo12:.LANCHOR0 + orr w3, w1, w3, lsl 10 + str w3, [x0, 4] +.L1529: + add w2, w2, 1 + add x4, x4, 2 + and w2, w2, 65535 +.L1537: + ldr x0, [x23, 3272] + cmp w2, w7 + bne .L1530 + ldrb w2, [x26, 8] mov w1, w22 - mov x25, 0 - ldrb w2, [x24, 184] - ldr x0, [x24, 3280] + mov x24, 0 bl FlashReadPages - ubfiz x0, x22, 5, 16 - mov x22, x24 - str x0, [x29, 120] -.L1504: - ldr x0, [x29, 120] - cmp x0, x25 - bne .L1508 - add w28, w28, 1 - b .L1501 -.L1508: - ldr x0, [x22, 3280] - add x1, x0, x25 - ldr w0, [x0, x25] + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 + str x0, [sp, 112] +.L1531: + cmp w22, w24, uxth + bhi .L1535 + add w27, w27, 1 + b .L1528 +.L1535: + ldr x0, [x23, 3272] + lsl x28, x24, 5 + add x1, x0, x24, lsl 5 + ldr w0, [x0, x28] cmn w0, #1 - beq .L1505 - ldr x24, [x1, 16] + beq .L1532 + ldr x25, [x1, 16] mov w0, 61589 - ldrh w1, [x24] + ldrh w1, [x25] cmp w1, w0 - bne .L1505 - ldr w5, [x24, 8] - cmn w5, #1 - bne .L1506 - str w5, [x29, 104] + bne .L1532 + ldr w4, [x25, 8] + cmn w4, #1 + bne .L1533 + ldr x0, [sp, 112] + mov x1, x21 mov w2, 753 - mov x1, x23 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + str w4, [sp, 120] bl sftl_printk - ldr w5, [x29, 104] -.L1506: + ldr w4, [sp, 120] +.L1533: + add x1, sp, 128 mov w2, 0 - add x1, x29, 128 - mov w0, w5 + mov w0, w4 bl log2phys - ldr x0, [x22, 3280] - ldr w1, [x29, 128] - add x0, x0, x25 + ldr x0, [x23, 3272] + ldr w1, [sp, 128] + add x0, x0, x28 ldr w2, [x0, 4] cmp w2, w1 - bne .L1505 - ldrh w1, [x22, 3970] - ldr x2, [x22, 3448] + bne .L1532 + ldrh w1, [x23, 3954] + ldr x2, [x23, 3432] add w1, w1, 1 - strh w1, [x22, 3970] - ldr w1, [x22, 3248] + strh w1, [x23, 3954] + ldr w1, [x23, 3240] ldr w0, [x0, 24] add x1, x2, x1, lsl 5 - str x1, [x29, 104] + str x1, [sp, 120] str w0, [x1, 24] bl Ftl_get_new_temp_ppa - ldr x1, [x29, 104] + ldr x1, [sp, 120] str w0, [x1, 4] - ldr w0, [x22, 3248] - ldr x1, [x22, 3448] - add x0, x1, x0, lsl 5 - ldr x1, [x22, 3280] - add x1, x1, x25 + ldr w0, [x23, 3240] + ldr x1, [x23, 3272] + ldr x2, [x23, 3432] + add x1, x1, x28 + add x0, x2, x0, lsl 5 ldr x2, [x1, 8] str x2, [x0, 8] + add x2, x23, 128 + str x2, [sp, 120] ldr x1, [x1, 16] str x1, [x0, 16] - ldr w0, [x29, 128] + ldr w0, [sp, 128] mov w1, 1 - str w0, [x24, 12] - ldrh w0, [x22, 128] - strh w0, [x24, 2] - ldr w0, [x22, 2672] - str w0, [x24, 4] - ldr w0, [x22, 3248] + str w0, [x25, 12] + ldrh w0, [x23, 128] + strh w0, [x25, 2] + ldr w0, [x23, 2664] + str w0, [x25, 4] + ldr w0, [x23, 3240] add w0, w0, 1 - str w0, [x22, 3248] - ldr x0, [x22, 3280] - add x0, x0, x25 + str w0, [x23, 3240] + ldr x0, [x23, 3272] + add x0, x0, x28 bl FtlGcBufAlloc - ldrb w1, [x22, 135] - ldr w0, [x22, 3248] + ldr x2, [sp, 120] + ldr w0, [x23, 3240] + ldrb w1, [x2, 7] cmp w1, w0 - beq .L1507 - ldrh w0, [x22, 132] - cbnz w0, .L1505 -.L1507: + beq .L1534 + ldrh w0, [x2, 4] + cbnz w0, .L1532 +.L1534: bl Ftl_gc_temp_data_write_back - cbz w0, .L1505 - add x19, x19, :lo12:.LANCHOR0 - mov w0, -1 - strh wzr, [x19, 178] - strh w0, [x19, 176] - str wzr, [x19, 3424] - ldrh w0, [x19, 3968] - b .L1445 -.L1505: - add x25, x25, 32 - b .L1504 -.L1509: - add x22, x19, :lo12:.LANCHOR0 - ldrh w0, [x22, 178] - add w20, w20, w0 - and w20, w20, 65535 - strh w20, [x22, 178] - cmp w26, w20 - bhi .L1511 - ldr w0, [x22, 3248] - cbz w0, .L1512 + cbz w0, .L1532 + mov w0, 65535 + str w0, [x23, 176] + str wzr, [x23, 3408] + b .L1583 +.L1532: + add x24, x24, 1 + b .L1531 +.L1536: + add w19, w19, w0 + ldr w0, [sp, 104] + and w19, w19, 65535 + strh w19, [x26, 2] + cmp w0, w19 + bhi .L1538 + ldr w0, [x23, 3240] + cbz w0, .L1539 bl Ftl_gc_temp_data_write_back - cbz w0, .L1512 - str wzr, [x22, 3424] - b .L1564 -.L1512: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 3970] - cbnz w1, .L1513 - ldrh w2, [x0, 176] - ldr x1, [x0, 72] - ldrh w1, [x1, x2, lsl 1] - cbz w1, .L1513 - mov x20, x0 - mov w22, 0 -.L1514: - ldr w0, [x20, 2632] - cmp w22, w0 - bcs .L1519 + cbz w0, .L1539 + str wzr, [x23, 3408] + b .L1583 +.L1539: + ldrh w0, [x23, 3954] + cbnz w0, .L1540 + ldrh w1, [x23, 176] + ldr x0, [x23, 72] + ldrh w0, [x0, x1, lsl 1] + cbz w0, .L1540 + mov w19, 0 + b .L1541 +.L1544: + add x1, sp, 132 + mov w0, w19 mov w2, 0 - add x1, x29, 132 - mov w0, w22 bl log2phys - ldr w0, [x29, 132] + ldr w0, [sp, 132] cmn w0, #1 - beq .L1515 - lsr w0, w0, 10 + beq .L1542 + ubfx x0, x0, 10, 16 bl P2V_block_in_plane - ldrh w1, [x20, 176] + ldrh w1, [x23, 176] cmp w1, w0, uxth - bne .L1515 -.L1519: - add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0, 2632] - cmp w22, w1 - bcc .L1513 - ldrh w2, [x0, 176] - ldr x1, [x0, 72] - strh wzr, [x1, x2, lsl 1] - ldrh w0, [x0, 176] + beq .L1543 +.L1542: + add w19, w19, 1 +.L1541: + ldr w0, [x23, 2624] + cmp w19, w0 + bcc .L1544 +.L1546: + ldrh w1, [x23, 176] + ldr x0, [x23, 72] + strh wzr, [x0, x1, lsl 1] + ldrh w0, [x23, 176] bl update_vpc_list bl l2p_flush bl FtlVpcTblFlush -.L1513: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 176] -.L1511: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 228] - str wzr, [x1, 3424] +.L1540: + mov w0, -1 + strh w0, [x23, 176] +.L1538: + ldrh w0, [x23, 228] + str wzr, [x23, 3408] cmp w0, 2 - bhi .L1520 - ldrh w20, [x1, 306] - b .L1521 -.L1515: - add w22, w22, 1 - b .L1514 -.L1520: - ldrh w1, [x1, 3968] + bhi .L1547 + ldrh w19, [x23, 306] + b .L1548 +.L1543: + ldr w0, [x23, 2624] + cmp w19, w0 + bcc .L1540 + b .L1546 +.L1547: + ldrh w1, [x23, 3952] cmp w1, 0 csinc w0, w1, w0, ne - b .L1445 -.L1525: + b .L1475 +.L1552: mov w0, 0 - b .L1445 -.L1523: + b .L1475 +.L1511: + mov x0, x21 + bl make_superblock + ldrh w1, [x23, 176] + ldr x0, [x23, 72] + strh wzr, [x21, 2] + strb wzr, [x21, 6] + strh wzr, [x23, 3954] + ldrh w0, [x0, x1, lsl 1] + strh w0, [x23, 3956] + b .L1506 +.L1550: 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 + hint 29 // autiasp ret .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 2 .global FtlRead .type FtlRead, %function FtlRead: - stp x29, x30, [sp, -176]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE124 + .text +.LPFE124: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -160]! and w0, w0, 255 - cmp w0, 16 - add x29, sp, 0 + mov x29, sp + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + mov x21, x3 + stp x23, x24, [sp, 48] + mov w23, w2 stp x25, x26, [sp, 64] mov w26, w1 - stp x21, x22, [sp, 32] - adrp x1, __stack_chk_guard - stp x19, x20, [sp, 16] - mov w25, w2 - stp x23, x24, [sp, 48] - add x2, x1, :lo12:__stack_chk_guard + mrs x1, sp_el0 stp x27, x28, [sp, 80] - mov x22, x3 - str x1, [x29, 112] - ldr x3, [x2] - str x3, [x29, 168] - mov x3,0 - bne .L1566 - mov x2, x22 - mov w1, w25 + ldr x2, [x1, 1376] + str x2, [sp, 152] + mov x2, 0 + cmp w0, 16 + bne .L1585 + mov x2, x3 + mov w1, w23 add w0, w26, 256 bl FtlVendorPartRead mov w19, w0 -.L1565: - ldr x1, [x29, 112] - mov w0, w19 - add x1, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 168] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L1587 +.L1584: + mrs x0, sp_el0 + ldr x1, [sp, 152] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1607 bl __stack_chk_fail -.L1566: - adrp x1, .LANCHOR0 - add x3, x1, :lo12:.LANCHOR0 - str x1, [x29, 104] - ldr w0, [x3, 344] - cmp w26, w0 - bcs .L1590 - cmp w25, w0 - bhi .L1590 - add w1, w26, w25 - str w1, [x29, 144] +.L1585: + adrp x3, .LANCHOR0 + add x28, x3, :lo12:.LANCHOR0 + ldr w0, [x28, 344] + cmp w0, w26 + bls .L1610 + cmp w0, w23 + bcc .L1610 + add w1, w26, w23 + str w1, [sp, 116] cmp w0, w1 - bcc .L1590 + bcc .L1610 adrp x0, .LANCHOR2 ldr w19, [x0, #:lo12:.LANCHOR2] cmn w19, #1 - beq .L1565 - ldrh w0, [x3, 262] - mov x27, x3 - mov w23, 0 - mov w28, 0 + beq .L1584 + ldrh w0, [x28, 262] + mov w20, 0 mov w19, 0 - stp wzr, wzr, [x29, 148] + stp wzr, wzr, [sp, 108] udiv w1, w26, w0 - str w1, [x29, 156] - add w1, w26, w25 - sub w24, w1, #1 - ldr w20, [x29, 156] - udiv w24, w24, w0 - ldr w0, [x29, 156] - sub w21, w24, w0 - ldr w0, [x3, 2664] - add w21, w21, 1 - add w0, w0, w25 - str w0, [x3, 2664] - ldr w0, [x3, 2636] - add w0, w0, w21 - str w0, [x3, 2636] -.L1568: - cbnz w21, .L1585 - ldr x0, [x29, 104] - add x0, x0, :lo12:.LANCHOR0 - ldrh w1, [x0, 3320] - cbnz w1, .L1586 - ldrh w0, [x0, 228] + stp w1, wzr, [sp, 100] + add w1, w26, w23 + sub w25, w1, #1 + ldr w22, [sp, 100] + udiv w25, w25, w0 + ldr w0, [sp, 100] + sub w24, w25, w0 + ldr w0, [x28, 2656] + add w24, w24, 1 + add w0, w0, w23 + str w0, [x28, 2656] + ldr w0, [x28, 2628] + add w0, w0, w24 + str w0, [x28, 2628] +.L1587: + cbnz w24, .L1605 + ldrh w0, [x28, 3312] + cbnz w0, .L1606 + ldrh w0, [x28, 228] cmp w0, 31 - bhi .L1565 -.L1586: + bhi .L1584 +.L1606: mov w1, 1 mov w0, 0 bl rk_ftl_garbage_collect - b .L1565 -.L1585: - add x1, x29, 164 + b .L1584 +.L1605: + add x1, sp, 148 + mov w0, w22 mov w2, 0 - mov w0, w20 bl log2phys - ldr w1, [x29, 164] + ldr w1, [sp, 148] cmn w1, #1 - bne .L1569 - mov w6, 0 -.L1570: - ldrh w0, [x27, 262] - cmp w6, w0 - bcc .L1572 -.L1573: - add w20, w20, 1 - subs w21, w21, #1 - beq .L1577 - ldrh w0, [x27, 236] - cmp w28, w0, lsl 2 - bne .L1568 -.L1577: - cbz w28, .L1568 - ldr x0, [x27, 3440] - mov w1, w28 - mov w2, 0 - bl FlashReadPages - ldr w0, [x29, 148] - lsl w0, w0, 9 - str w0, [x29, 128] - ldr w0, [x29, 152] - lsl w0, w0, 9 - str x0, [x29, 136] - lsl w0, w23, 9 - str w0, [x29, 132] - ubfiz x0, x28, 5, 32 - mov x28, 0 - str x0, [x29, 120] -.L1584: - ldr x0, [x27, 3440] - ldr w2, [x29, 156] - add x0, x0, x28 - ldr w1, [x0, 24] - cmp w2, w1 - bne .L1579 - ldr x1, [x0, 8] - ldr x0, [x27, 3488] - cmp x1, x0 - bne .L1580 - ldr x0, [x29, 136] - ldr w2, [x29, 132] - add x1, x1, x0 - mov x0, x22 -.L1600: - bl ftl_memcpy -.L1580: - ldr x0, [x27, 3440] - add x0, x0, x28 - ldr x1, [x0, 16] - ldr w2, [x0, 24] - ldr w1, [x1, 8] - cmp w2, w1 - beq .L1581 - ldr w1, [x27, 2792] - add w1, w1, 1 - str w1, [x27, 2792] -.L1581: - ldr w2, [x0] - cmn w2, #1 - bne .L1582 - ldr w1, [x27, 2792] - mov w19, w2 - add w1, w1, 1 - str w1, [x27, 2792] -.L1582: - ldr w1, [x0] - cmp w1, 256 - bne .L1583 - ldr w0, [x0, 4] - lsr w0, w0, 10 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L1583: - ldr x0, [x29, 120] - add x28, x28, 32 - cmp x0, x28 - bne .L1584 - mov w28, 0 - b .L1568 -.L1572: - madd w0, w20, w0, w6 + bne .L1620 + mov w27, 0 + b .L1588 +.L1591: + madd w0, w0, w22, w27 cmp w26, w0 - bhi .L1571 - ldr w1, [x29, 144] + bhi .L1590 + ldr w1, [sp, 116] cmp w1, w0 - bls .L1571 + bls .L1590 sub w0, w0, w26 - str w6, [x29, 136] - lsl w0, w0, 9 mov w2, 512 mov w1, 0 - add x0, x22, x0 + lsl w0, w0, 9 + add x0, x21, x0 bl ftl_memset - ldr w6, [x29, 136] -.L1571: - add w6, w6, 1 - b .L1570 -.L1569: - ldr x0, [x27, 3440] - ubfiz x2, x28, 5, 32 - add x0, x0, x2 - str w1, [x0, 4] - ldr w0, [x29, 156] - cmp w20, w0 - ldrh w0, [x27, 262] - bne .L1574 - ldr x1, [x27, 3440] - ldr x6, [x27, 3488] - add x1, x1, x2 - str x6, [x1, 8] - udiv w6, w26, w0 - msub w3, w6, w0, w26 - str w3, [x29, 152] - sub w23, w0, w3 - cmp w25, w23 - csel w23, w25, w23, ls - cmp w23, w0 - bne .L1575 - str x22, [x1, 8] -.L1575: - ldr x0, [x27, 3440] - ldr x1, [x27, 3536] - add x2, x0, x2 - ldrh w0, [x27, 316] - str w20, [x2, 24] - mul w0, w0, w28 - add w28, w28, 1 - and x0, x0, 4294967292 - add x0, x1, x0 - str x0, [x2, 16] - b .L1573 -.L1574: - cmp w20, w24 - bne .L1576 - ldr x6, [x27, 3440] - ldr x1, [x27, 3496] - add x6, x6, x2 - ldr w3, [x29, 144] - str x1, [x6, 8] - mul w1, w20, w0 - sub w3, w3, w1 - str w3, [x29, 148] - cmp w0, w3 - bne .L1575 - sub w1, w1, w26 - lsl w1, w1, 9 - add x1, x22, x1 - str x1, [x6, 8] - b .L1575 -.L1576: - ldr x1, [x27, 3440] - mul w0, w0, w20 - add x1, x1, x2 - sub w0, w0, w26 - lsl w0, w0, 9 - add x0, x22, x0 - str x0, [x1, 8] - b .L1575 -.L1579: - cmp w24, w1 - bne .L1580 - ldr x1, [x0, 8] - ldr x0, [x27, 3496] - cmp x1, x0 - bne .L1580 - ldrh w0, [x27, 262] - ldr w2, [x29, 128] - mul w0, w0, w24 - sub w0, w0, w26 - lsl w0, w0, 9 - add x0, x22, x0 - b .L1600 .L1590: + add w27, w27, 1 +.L1588: + ldrh w0, [x28, 262] + cmp w0, w27 + bhi .L1591 +.L1592: + add w22, w22, 1 + subs w24, w24, #1 + beq .L1597 + ldrh w0, [x28, 236] + cmp w20, w0, lsl 2 + bne .L1587 +.L1597: + cbz w20, .L1587 + ldr x0, [x28, 3424] + mov w1, w20 + mov w2, 0 + mov x27, 0 + bl FlashReadPages + ldr w0, [sp, 112] + lsl w0, w0, 9 + str w0, [sp, 132] + ldr w0, [sp, 104] + lsl w0, w0, 9 + str x0, [sp, 120] + ldr w0, [sp, 108] + lsl w0, w0, 9 + str w0, [sp, 128] +.L1604: + ldr x0, [x28, 3424] + lsl x6, x27, 5 + ldr w2, [sp, 100] + add x0, x0, x27, lsl 5 + ldr w1, [x0, 24] + cmp w1, w2 + bne .L1599 + ldr x1, [x0, 8] + ldr x0, [x28, 3472] + cmp x1, x0 + bne .L1600 + ldr x0, [sp, 120] + str x6, [sp, 136] + ldr w2, [sp, 128] + add x1, x1, x0 + mov x0, x21 +.L1623: + bl ftl_memcpy + ldr x6, [sp, 136] +.L1600: + ldr x1, [x28, 3424] + add x0, x1, x6 + ldr x2, [x0, 16] + ldr w7, [x0, 24] + ldr w2, [x2, 8] + cmp w7, w2 + beq .L1601 + ldr w2, [x28, 2784] + add w2, w2, 1 + str w2, [x28, 2784] +.L1601: + ldr w7, [x1, x6] + cmn w7, #1 + bne .L1602 + ldr w2, [x28, 2784] + mov w19, w7 + add w2, w2, 1 + str w2, [x28, 2784] +.L1602: + ldr w1, [x1, x6] + cmp w1, 256 + bne .L1603 + ldr w0, [x0, 4] + ubfx x0, x0, 10, 16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1603: + add x27, x27, 1 + cmp w20, w27 + bhi .L1604 + mov w20, 0 + b .L1587 +.L1620: + ldr x0, [x28, 3424] + ubfiz x5, x20, 5, 32 + add x0, x0, x5 + str w1, [x0, 4] + ldr w0, [sp, 100] + ldrh w1, [x28, 262] + cmp w22, w0 + bne .L1593 + udiv w6, w26, w1 + ldr x0, [x28, 3424] + ldr x2, [x28, 3472] + msub w3, w6, w1, w26 + add x0, x0, x5 + str w3, [sp, 104] + sub w6, w1, w3 + cmp w23, w6 + csel w3, w23, w6, ls + str w3, [sp, 108] + cmp w1, w3 + csel x1, x2, x21, ne + str x1, [x0, 8] +.L1594: + ldrh w0, [x28, 316] + ldr x1, [x28, 3424] + ldr x2, [x28, 3520] + mul w0, w0, w20 + add x1, x1, x5 + add w20, w20, 1 + and x0, x0, 4294967292 + add x0, x2, x0 + str x0, [x1, 16] + str w22, [x1, 24] + b .L1592 +.L1593: + ldr x2, [x28, 3424] + mul w0, w22, w1 + add x2, x2, x5 + cmp w22, w25 + bne .L1595 + ldr w3, [sp, 116] + sub w3, w3, w0 + str w3, [sp, 112] + cmp w3, w1 + beq .L1595 + ldr x0, [x28, 3480] +.L1622: + str x0, [x2, 8] + b .L1594 +.L1595: + sub w0, w0, w26 + lsl w0, w0, 9 + add x0, x21, x0 + b .L1622 +.L1599: + cmp w1, w25 + bne .L1600 + ldr x1, [x0, 8] + ldr x0, [x28, 3480] + cmp x1, x0 + bne .L1600 + ldrh w0, [x28, 262] + ldr w2, [sp, 132] + str x6, [sp, 136] + mul w0, w0, w25 + sub w0, w0, w26 + lsl w0, w0, 9 + add x0, x21, x0 + b .L1623 +.L1610: mov w19, -1 - b .L1565 -.L1587: + b .L1584 +.L1607: + 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], 176 + ldp x29, x30, [sp], 160 + hint 29 // autiasp ret .size FtlRead, .-FtlRead .align 2 .global sftl_read .type sftl_read, %function sftl_read: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE125 + .text +.LPFE125: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! mov x3, x2 + mov x29, sp mov w2, w1 mov w1, w0 - add x29, sp, 0 mov w0, 0 bl FtlRead ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size sftl_read, .-sftl_read + .section .rodata.str1.1 +.LC126: + .string "FtlWrite: ecc error:%x %x %x\n" +.LC127: + .string "FtlWrite: lpa error:%x %x\n" + .text .align 2 .global FtlWrite .type FtlWrite, %function FtlWrite: - stp x29, x30, [sp, -240]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE126 + .text +.LPFE126: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -224]! and w0, w0, 255 - cmp w0, 16 - add x29, sp, 0 - stp x23, x24, [sp, 48] - mov w23, w1 - stp x25, x26, [sp, 64] - adrp x1, __stack_chk_guard - stp x27, x28, [sp, 80] - mov w26, w2 + mov x29, sp stp x19, x20, [sp, 16] - add x2, x1, :lo12:__stack_chk_guard stp x21, x22, [sp, 32] - mov x27, x3 - str x1, [x29, 112] - ldr x3, [x2] - str x3, [x29, 232] - mov x3,0 - bne .L1604 - mov x2, x27 - mov w1, w26 - add w0, w23, 256 + mov w21, w1 + mrs x1, sp_el0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + mov x25, x3 + stp x27, x28, [sp, 80] + str w2, [sp, 120] + ldr x2, [x1, 1376] + str x2, [sp, 216] + mov x2, 0 + cmp w0, 16 + bne .L1627 + ldr w1, [sp, 120] + mov x2, x3 + add w0, w21, 256 bl FtlVendorPartWrite -.L1603: - ldr x1, [x29, 112] - add x1, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 232] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L1640 +.L1626: + mrs x1, sp_el0 + ldr x2, [sp, 216] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1664 bl __stack_chk_fail -.L1604: - adrp x19, .LANCHOR0 - add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x1, 344] - cmp w23, w0 - bcs .L1643 - cmp w26, w0 - bhi .L1643 - add w2, w23, w26 - str w2, [x29, 124] - cmp w0, w2 - bcc .L1643 - adrp x2, .LANCHOR2 - str x2, [x29, 152] - add x3, x2, :lo12:.LANCHOR2 - ldr w0, [x2, #:lo12:.LANCHOR2] +.L1627: + adrp x4, .LANCHOR0 + add x24, x4, :lo12:.LANCHOR0 + ldr w0, [x24, 344] + cmp w0, w21 + bls .L1667 + ldr w1, [sp, 120] + cmp w0, w1 + bcc .L1667 + add w1, w21, w1 + str w1, [sp, 124] + cmp w0, w1 + bcc .L1667 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] cmn w0, #1 - beq .L1603 + beq .L1626 mov w0, 2048 - add w2, w23, w26 - str w0, [x1, 3976] - sub w2, w2, #1 - ldrh w0, [x1, 262] - add x20, x1, 24 - udiv w25, w23, w0 - udiv w0, w2, w0 - str w0, [x29, 160] - sub w0, w0, w25 - add w24, w0, 1 - str w0, [x29, 148] - ldr w0, [x1, 2660] + str w0, [x24, 3960] + ldrh w0, [x24, 262] + sub w1, w1, #1 + add x20, x24, 24 + udiv w27, w21, w0 + udiv w0, w1, w0 + ldr w1, [sp, 120] + str w0, [sp, 160] + sub w0, w0, w27 + add w26, w0, 1 + str w0, [sp, 136] + ldr w0, [x24, 2652] + add w0, w0, w1 + str w0, [x24, 2652] + ldr w0, [x24, 2636] add w0, w0, w26 - str w0, [x1, 2660] - ldr w0, [x1, 2644] - add w0, w0, w24 - str w0, [x1, 2644] - ldr w0, [x3, 8] - cbz w0, .L1606 - ldrh w0, [x20, 4] - add x1, x1, 80 - cmp w0, 0 - csel x20, x1, x20, eq -.L1606: - adrp x0, .LANCHOR1 - mov w21, w25 - add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 696 - str x0, [x29, 176] -.L1607: - cbnz w24, .L1635 - ldr w1, [x29, 148] - add x19, x19, :lo12:.LANCHOR0 - mov w0, 0 - bl rk_ftl_garbage_collect - ldrh w0, [x19, 228] - cmp w0, 5 - bls .L1636 -.L1638: - mov w0, 0 - b .L1603 -.L1635: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x20, 6] - ldrh w0, [x0, 236] - cmp w1, w0 - bcc .L1608 - ldr x1, [x29, 176] - adrp x0, .LC8 - mov w2, 1041 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L1608: - ldrh w0, [x20, 4] - cbnz w0, .L1609 - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 24 - cmp x20, x1 - bne .L1610 - add x0, x0, 80 - ldrh w1, [x0, 4] - cbnz w1, .L1611 - bl allocate_new_data_superblock - ldr x0, [x29, 152] - add x0, x0, :lo12:.LANCHOR2 - str wzr, [x0, 8] -.L1611: - add x20, x19, :lo12:.LANCHOR0 - add x22, x20, 24 - add x20, x20, 80 - mov x0, x22 - bl allocate_new_data_superblock - ldr x0, [x29, 152] + str w0, [x24, 2636] + adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 ldr w0, [x0, 8] - cmp w0, 0 - csel x20, x20, x22, ne -.L1612: - ldrh w0, [x20, 4] - cbnz w0, .L1609 - mov x0, x20 - bl allocate_new_data_superblock -.L1609: - ldrh w0, [x20, 4] - ldrb w1, [x20, 7] - cmp w0, w24 - csel w0, w0, w24, ls - lsl w1, w1, 2 - cmp w0, w1 - csel w0, w0, w1, ls - str w0, [x29, 144] - add x0, x19, :lo12:.LANCHOR0 + cbz w0, .L1629 + ldrh w1, [x20, 4] + add x0, x24, 80 + cmp w1, 0 + csel x20, x0, x20, eq +.L1629: + adrp x23, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR1 + adrp x28, .LC9 + mov w19, w27 + add x23, x23, 591 + add x28, x28, :lo12:.LC9 +.L1630: + cbnz w26, .L1660 + ldr w1, [sp, 136] + mov w0, 0 + bl rk_ftl_garbage_collect + ldrh w0, [x24, 228] + cmp w0, 5 + bls .L1672 +.L1663: + mov w0, 0 + b .L1626 +.L1660: ldrb w1, [x20, 6] - ldrh w0, [x0, 236] + ldrh w0, [x24, 236] cmp w1, w0 - bcc .L1613 - ldr x1, [x29, 176] - adrp x0, .LC8 - mov w2, 1074 - add x0, x0, :lo12:.LC8 + bcc .L1631 + mov x1, x23 + mov x0, x28 + mov w2, 1041 bl sftl_printk -.L1613: - str xzr, [x29, 184] -.L1614: - ldr w1, [x29, 144] - ldr w22, [x29, 184] - cmp w22, w1 - bcc .L1633 - mov x22, x1 -.L1615: - add x0, x19, :lo12:.LANCHOR0 - mov x3, x20 - mov w2, 0 - mov w1, w22 - ldr x0, [x0, 3456] - bl FtlProgPages - cmp w24, w22 - bcs .L1634 - ldr x1, [x29, 176] - adrp x0, .LC8 - mov w2, 1152 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L1634: - sub w24, w24, w22 - b .L1607 -.L1610: - ldr x0, [x29, 152] +.L1631: + ldrh w0, [x20, 4] + cbnz w0, .L1632 + add x0, x24, 24 + cmp x20, x0 + bne .L1633 + ldrh w1, [x24, 84] + add x0, x24, 80 + cbnz w1, .L1634 + bl allocate_new_data_superblock + adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 str wzr, [x0, 8] - ldrh w0, [x1, 4] - cbnz w0, .L1648 +.L1634: + add x0, x24, 24 + bl allocate_new_data_superblock + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr w0, [x0, 8] + cbnz w0, .L1671 +.L1636: + add x20, x24, 24 +.L1635: + ldrh w0, [x20, 4] + cbnz w0, .L1632 mov x0, x20 bl allocate_new_data_superblock - b .L1612 -.L1648: - mov x20, x1 - b .L1609 -.L1633: +.L1632: ldrh w0, [x20, 4] - cbz w0, .L1615 - add x1, x29, 196 + ldrb w1, [x20, 7] + cmp w0, w26 + csel w0, w0, w26, ls + lsl w1, w1, 2 + cmp w1, w0 + csel w0, w1, w0, ls + ldrb w1, [x20, 6] + str w0, [sp, 140] + ldrh w0, [x24, 236] + cmp w1, w0 + bcc .L1637 + mov x1, x23 + mov x0, x28 + mov w2, 1074 + bl sftl_printk +.L1637: + ldr w0, [sp, 140] + str xzr, [sp, 104] + add w0, w0, w19 + str w0, [sp, 164] + adrp x0, .LC127 + add x0, x0, :lo12:.LC127 + str x0, [sp, 168] +.L1638: + ldr w0, [sp, 164] + ldr w22, [sp, 104] + cmp w19, w0 + bne .L1658 + ldr w22, [sp, 140] +.L1639: + ldr x0, [x24, 3440] + mov x3, x20 + mov w1, w22 mov w2, 0 - mov w0, w21 + bl FtlProgPages + cmp w26, w22 + bcs .L1659 + mov x1, x23 + mov x0, x28 + mov w2, 1152 + bl sftl_printk +.L1659: + sub w26, w26, w22 + b .L1630 +.L1633: + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldrh w0, [x0, 4] + str wzr, [x1, 8] + cbnz w0, .L1636 + mov x0, x20 + bl allocate_new_data_superblock + b .L1635 +.L1671: + add x20, x24, 80 + b .L1635 +.L1658: + ldrh w0, [x20, 4] + cbz w0, .L1639 + add x1, sp, 180 + mov w2, 0 + mov w0, w19 bl log2phys mov x0, x20 bl get_new_active_ppa - add x3, x19, :lo12:.LANCHOR0 - ldr x1, [x29, 184] - str x3, [x29, 168] - lsl x28, x1, 5 - ldr x1, [x3, 3456] - ldrh w2, [x3, 316] - add x1, x1, x28 + ldr x1, [sp, 104] + ldr x2, [sp, 104] + lsl x1, x1, 5 + str x1, [sp, 112] + ldr x1, [x24, 3440] + add x1, x1, x2, lsl 5 + ldrh w2, [x24, 316] str w0, [x1, 4] - mul w22, w22, w2 - ldr x0, [x3, 3456] + ldr x1, [sp, 104] + mul w22, w2, w22 + ldr x0, [x24, 3440] + add x0, x0, x1, lsl 5 and x1, x22, 4294967292 - str x1, [x29, 136] - add x0, x0, x28 - ldr x1, [x3, 3536] - ldr x3, [x29, 136] - str x1, [x29, 128] + str x1, [sp, 144] + ldr x1, [x24, 3520] + str w19, [x0, 24] + ldr x3, [sp, 144] + str x1, [sp, 152] add x22, x1, x3 - str w21, [x0, 24] str x22, [x0, 16] mov w1, 0 mov x0, x22 bl ftl_memset - ldr w0, [x29, 160] - cmp w21, w25 - ldr x3, [x29, 168] - ccmp w21, w0, 4, ne - bne .L1616 - cmp w21, w25 - bne .L1617 - ldrh w2, [x3, 262] - udiv w0, w23, w2 - msub w0, w0, w2, w23 - str w0, [x29, 164] - sub w2, w2, w0 - cmp w2, w26 - csel w0, w2, w26, ls - str w0, [x29, 168] -.L1618: - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x29, 168] - ldrh w1, [x0, 262] - cmp w2, w1 - bne .L1619 - ldr x0, [x0, 3456] - cmp w21, w25 - add x4, x0, x28 - bne .L1620 - str x27, [x4, 8] -.L1621: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x20, 6] - ldrh w0, [x0, 236] + ldr w0, [sp, 160] + cmp w19, w27 + ldrh w1, [x24, 262] + ccmp w19, w0, 4, ne + bne .L1640 + cmp w19, w27 + bne .L1641 + udiv w0, w21, w1 + msub w0, w0, w1, w21 + str w0, [sp, 128] + sub w2, w1, w0 + ldr w0, [sp, 120] + cmp w2, w0 + csel w0, w2, w0, ls + str w0, [sp, 132] +.L1642: + ldr x0, [sp, 112] + ldr x3, [x24, 3440] + add x3, x3, x0 + ldr w0, [sp, 132] cmp w1, w0 - bcc .L1630 - ldr x1, [x29, 176] - adrp x0, .LC8 + bne .L1643 + mul w0, w1, w19 + cmp w19, w27 + sub w0, w0, w21 + lsl w0, w0, 9 + add x0, x25, x0 + csel x0, x25, x0, eq + str x0, [x3, 8] +.L1645: + ldrb w1, [x20, 6] + ldrh w0, [x24, 236] + cmp w1, w0 + bcc .L1655 + mov x1, x23 + mov x0, x28 mov w2, 1143 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1630: - ldp x1, x2, [x29, 128] +.L1655: + ldp x2, x1, [sp, 144] mov w0, -3947 strh w0, [x1, x2] - add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x1, 2672] - stp w0, w21, [x22, 4] - add w21, w21, 1 - add w0, w0, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x1, 2672] - ldr w0, [x29, 196] + ldr w0, [x24, 2664] + stp w0, w19, [x22, 4] + add w19, w19, 1 + cmn w0, #2 + csinc w0, wzr, w0, eq + str w0, [x24, 2664] + ldr w0, [sp, 180] str w0, [x22, 12] ldrh w0, [x20] strh w0, [x22, 2] - ldr x0, [x29, 184] + ldr x0, [sp, 104] add x0, x0, 1 - str x0, [x29, 184] - b .L1614 -.L1617: - ldr w0, [x29, 124] - ldrh w2, [x3, 262] - msub w2, w21, w2, w0 + str x0, [sp, 104] + b .L1638 +.L1641: + ldr w0, [sp, 124] + msub w2, w1, w19, w0 and w0, w2, 65535 - stp wzr, w0, [x29, 164] - b .L1618 -.L1620: - ldr w0, [x29, 168] -.L1655: - mul w0, w0, w21 - sub w0, w0, w23 - lsl w0, w0, 9 - add x0, x27, x0 - str x0, [x4, 8] - b .L1621 -.L1619: - ldr x1, [x0, 3456] - cmp w21, w25 - add x1, x1, x28 - bne .L1622 - ldr x0, [x0, 3488] -.L1654: - str x0, [x1, 8] - ldr w0, [x29, 196] + stp wzr, w0, [sp, 128] + b .L1642 +.L1643: + cmp w19, w27 + bne .L1646 + ldr x0, [x24, 3472] +.L1678: + str x0, [x3, 8] + ldr w0, [sp, 180] cmn w0, #1 - beq .L1624 - add x5, x19, :lo12:.LANCHOR0 - str w0, [x29, 204] - str w21, [x29, 224] + beq .L1648 + str w19, [sp, 208] mov w2, 0 - str x5, [x29, 104] - ldr x0, [x5, 3456] - add x0, x0, x28 - ldp x1, x0, [x0, 8] - stp x1, x0, [x29, 208] + str w0, [sp, 188] mov w1, 1 - add x0, x29, 200 + ldr x0, [x3, 8] + str x0, [sp, 192] + ldr x0, [x3, 16] + str x0, [sp, 200] + add x0, sp, 184 bl FlashReadPages - ldr w3, [x29, 200] - ldr x5, [x29, 104] + ldr w3, [sp, 184] cmn w3, #1 - bne .L1625 - ldr w0, [x5, 2792] - mov w2, w21 + bne .L1649 + ldr w0, [x24, 2784] + mov w2, w19 add w0, w0, 1 - str w0, [x5, 2792] - adrp x0, .LC125 - add x0, x0, :lo12:.LC125 - ldr w1, [x22, 8] - bl sftl_printk -.L1628: - ldr w0, [x29, 168] - cmp w21, w25 - lsl w2, w0, 9 - add x0, x19, :lo12:.LANCHOR0 - bne .L1629 - ldr x0, [x0, 3456] - mov x1, x27 - add x4, x0, x28 - ldr w0, [x29, 164] - ldr x3, [x4, 8] - lsl w0, w0, 9 - add x0, x3, x0 -.L1656: - bl ftl_memcpy - b .L1621 -.L1622: - ldr x0, [x0, 3496] - b .L1654 -.L1625: - ldr w0, [x22, 8] - cmp w21, w0 - beq .L1627 - ldr w0, [x5, 2792] - mov w2, w21 - add w0, w0, 1 - str w0, [x5, 2792] + str w0, [x24, 2784] adrp x0, .LC126 add x0, x0, :lo12:.LC126 ldr w1, [x22, 8] bl sftl_printk -.L1627: +.L1653: + ldr w0, [sp, 132] + cmp w19, w27 + lsl w2, w0, 9 + bne .L1654 + ldr x0, [sp, 112] + ldr x1, [x24, 3440] + add x1, x1, x0 + ldr w0, [sp, 128] + ldr x3, [x1, 8] + lsl w0, w0, 9 + mov x1, x25 + add x0, x3, x0 +.L1679: + bl ftl_memcpy + b .L1645 +.L1646: + ldr x0, [x24, 3480] + b .L1678 +.L1649: ldr w0, [x22, 8] - cmp w21, w0 - beq .L1628 - ldr x1, [x29, 176] - mov w2, 1128 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + cmp w0, w19 + beq .L1653 + ldr w0, [x24, 2784] + mov w2, w19 + add w0, w0, 1 + str w0, [x24, 2784] + ldr x0, [sp, 168] + ldr w1, [x22, 8] bl sftl_printk - b .L1628 -.L1624: - add x1, x19, :lo12:.LANCHOR0 - ldr x0, [x1, 3456] - ldrh w2, [x1, 314] + ldr w0, [x22, 8] + cmp w0, w19 + beq .L1653 + mov x1, x23 + mov x0, x28 + mov w2, 1128 + bl sftl_printk + b .L1653 +.L1648: + ldrh w2, [x24, 314] mov w1, 0 - add x0, x0, x28 - ldr x0, [x0, 8] + ldr x0, [x3, 8] bl ftl_memset - b .L1628 -.L1629: - ldrh w1, [x0, 262] - ldr x0, [x0, 3456] - add x4, x0, x28 - mul w1, w1, w21 - sub w1, w1, w23 - ldr x0, [x4, 8] + b .L1653 +.L1654: + ldrh w1, [x24, 262] + ldr x3, [sp, 112] + ldr x0, [x24, 3440] + mul w1, w1, w19 + add x0, x0, x3 + sub w1, w1, w21 lsl w1, w1, 9 - add x1, x27, x1 - b .L1656 -.L1616: - ldr x0, [x3, 3456] - add x4, x0, x28 - ldrh w0, [x3, 262] - b .L1655 -.L1636: - mov w20, 256 + add x1, x25, x1 + ldr x0, [x0, 8] + b .L1679 +.L1640: + ldr x2, [sp, 112] + mul w1, w1, w19 + ldr x0, [x24, 3440] + sub w1, w1, w21 + add x0, x0, x2 + lsl w1, w1, 9 + add x1, x25, x1 + str x1, [x0, 8] + b .L1645 +.L1672: + mov w19, 256 mov w21, 65535 - mov w22, 128 -.L1639: - ldrh w0, [x19, 176] - cmp w0, w21 - bne .L1637 - ldrh w0, [x19, 226] - cmp w0, w21 - bne .L1637 + mov w20, 128 +.L1661: + ldrh w0, [x24, 176] + ldrh w1, [x24, 226] + and w0, w0, w1 + cmp w21, w0, uxth + bne .L1662 mov w0, 0 bl List_get_gc_head_node bl FtlGcRefreshBlock -.L1637: +.L1662: mov w1, 1 - strh w22, [x19, 3234] mov w0, w1 - strh w22, [x19, 3232] + strh w20, [x24, 3224] + strh w20, [x24, 3226] bl rk_ftl_garbage_collect mov w1, 1 mov w0, 0 bl rk_ftl_garbage_collect - ldrh w0, [x19, 228] + ldrh w0, [x24, 228] cmp w0, 2 - bhi .L1638 - subs w20, w20, #1 - bne .L1639 - b .L1638 -.L1643: + bhi .L1663 + subs w19, w19, #1 + bne .L1661 + b .L1663 +.L1667: mov w0, -1 - b .L1603 -.L1640: + b .L1626 +.L1664: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 240 + ldp x29, x30, [sp], 224 + hint 29 // autiasp ret .size FtlWrite, .-FtlWrite .align 2 .global sftl_gc .type sftl_gc, %function sftl_gc: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE127 + .text +.LPFE127: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! mov w1, 1 + mov x29, sp mov w0, w1 - add x29, sp, 0 bl rk_ftl_garbage_collect ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size sftl_gc, .-sftl_gc + .section .rodata.str1.1 +.LC128: + .string "%s hash error this.id =%x page =%x pre_id =%x hash =%x hash_r =%x\n" + .text .align 2 .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE128 + .text +.LPFE128: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -80]! mov w1, 0 - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x22, .LANCHOR0 - add x21, x22, :lo12:.LANCHOR0 + mov x29, sp stp x19, x20, [sp, 16] - add x20, x21, 3728 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x25, x26, [sp, 64] + add x25, x19, 3712 + stp x21, x22, [sp, 32] + ldrh w2, [x19, 244] stp x23, x24, [sp, 48] - str x25, [sp, 64] - ldr x0, [x21, 3464] - str x0, [x20, 8] - ldr x0, [x21, 3528] - str x0, [x20, 16] - ldr x0, [x21, 72] - ldrh w2, [x21, 244] + ldr x0, [x19, 3448] + str x0, [x25, 8] + ldr x0, [x19, 3512] + str x0, [x25, 16] + ldr x0, [x19, 72] lsl w2, w2, 1 bl ftl_memset - ldrh w0, [x21, 2704] + ldrh w0, [x19, 2696] mov w1, 65535 cmp w0, w1 - bne .L1660 -.L1671: + bne .L1683 +.L1695: mov w0, -1 -.L1659: +.L1682: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] - ldr x25, [sp, 64] + ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 80 + hint 29 // autiasp ret -.L1660: - add x23, x21, 2704 +.L1683: + add x21, x19, 2560 mov w1, 1 bl FtlGetLastWrittenPage - sxth w19, w0 - adrp x1, .LANCHOR1 - add w0, w0, 1 - add x1, x1, :lo12:.LANCHOR1 - strh w0, [x23, 2] - ldrsh w23, [x21, 2704] - add x24, x1, 712 -.L1662: - tbz w19, #31, .L1668 + sxth w20, w0 + add w0, w20, 1 + mov w24, 19539 + ldrsh w22, [x21, 136] + movk w24, 0x4654, lsl 16 + strh w0, [x21, 138] + adrp x21, .LANCHOR1 + add x21, x21, :lo12:.LANCHOR1 + add x21, x21, 600 +.L1685: + tbz w20, #31, .L1692 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - mov w2, 1467 - add x1, x1, 712 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + add x1, x1, 600 + mov w2, 1474 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L1667 -.L1668: - orr w0, w19, w23, lsl 10 - str w0, [x20, 4] - ldr x0, [x21, 3464] + b .L1691 +.L1692: + orr w0, w20, w22, lsl 10 + str w0, [x25, 4] + ldr x0, [x19, 3448] mov w2, 1 - str x0, [x20, 8] mov w1, w2 - mov x0, x20 + str x0, [x25, 8] + mov x0, x25 bl FlashReadPages - ldr x0, [x20, 16] - ldr w7, [x0, 12] - cbz w7, .L1663 - ldr w0, [x20] + ldr x0, [x25, 16] + ldr w23, [x0, 12] + ldr w0, [x25] cmn w0, #1 - beq .L1663 - ldrh w1, [x21, 314] - ldr x0, [x20, 8] + cbz w23, .L1686 + beq .L1687 + ldrh w1, [x19, 314] + ldr x0, [x25, 8] bl js_hash - cmp w7, w0 - beq .L1663 - ldrh w4, [x21, 2708] mov w6, w0 - mov w5, w7 - adrp x0, .LC127 - mov w3, w19 - mov w2, w23 - mov x1, x24 - add x0, x0, :lo12:.LC127 - bl sftl_printk - cbnz w19, .L1664 - ldrh w0, [x21, 2708] cmp w23, w0 - beq .L1664 - ldrh w19, [x21, 308] - sxth w23, w0 -.L1666: - sub w19, w19, #1 - sxth w19, w19 - b .L1662 -.L1664: + beq .L1688 + ldrh w4, [x19, 2700] + adrp x0, .LC128 + mov w5, w23 + mov w3, w20 + mov w2, w22 + mov x1, x21 + add x0, x0, :lo12:.LC128 + bl sftl_printk + cbnz w20, .L1689 + ldrh w0, [x19, 2700] + cmp w22, w0 + beq .L1689 + ldrh w20, [x19, 308] + sxth w22, w0 +.L1687: + sub w20, w20, #1 + sxth w20, w20 + b .L1685 +.L1689: mov w0, -1 - str w0, [x20] -.L1663: - ldr w0, [x20] - cmn w0, #1 - beq .L1666 - ldr x0, [x21, 3464] - ldr w1, [x0] - mov w0, 19539 - movk w0, 0x4654, lsl 16 - cmp w1, w0 - bne .L1666 - ldr x0, [x21, 3528] + str w0, [x25] + b .L1687 +.L1686: + beq .L1687 +.L1688: + ldr x0, [x19, 3448] + ldr w0, [x0] + cmp w0, w24 + bne .L1687 + ldr x0, [x19, 3512] ldrh w1, [x0] mov w0, 61604 cmp w1, w0 - bne .L1666 -.L1667: - add x1, x22, :lo12:.LANCHOR0 - ldrh w0, [x1, 244] - ldrh w1, [x1, 314] + bne .L1687 +.L1691: + ldrh w0, [x19, 244] + ldrh w1, [x19, 314] add x0, x0, 24 cmp x1, x0, lsl 1 - bcs .L1670 + bcs .L1694 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1469 - add x1, x1, 712 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 600 + add x0, x0, :lo12:.LC9 + mov w2, 1476 bl sftl_printk -.L1670: - add x19, x22, :lo12:.LANCHOR0 +.L1694: + ldr x1, [x19, 3720] + add x21, x19, 2512 mov w2, 48 - add x20, x19, 2512 - mov x0, x20 - ldr x1, [x19, 3736] + mov x0, x21 bl ftl_memcpy ldr x0, [x19, 72] ldrh w2, [x19, 244] - ldr x1, [x19, 3736] + ldr x1, [x19, 3720] lsl w2, w2, 1 add x1, x1, 48 bl ftl_memcpy @@ -11556,213 +12981,213 @@ FtlLoadSysInfo: mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - bne .L1671 + bne .L1695 ldrh w1, [x19, 2520] ldrb w2, [x19, 2522] ldrh w0, [x19, 258] - strh w1, [x19, 2710] + strh w1, [x19, 2702] cmp w2, w0 - bne .L1671 + bne .L1695 ldrh w0, [x19, 306] ldrh w2, [x19, 262] ldrh w3, [x19, 236] - str w1, [x19, 3980] + str w1, [x19, 3964] mul w0, w0, w1 - str w0, [x19, 2632] + str w0, [x19, 2624] mul w0, w2, w0 ldr w2, [x19, 248] str w0, [x19, 344] ldrh w0, [x19, 366] - cmp w1, w2 + add w0, w0, w1 sub w0, w2, w0 - sub w0, w0, w1 udiv w0, w0, w3 - strh w0, [x19, 2700] - bls .L1672 + strh w0, [x19, 2692] + cmp w1, w2 + bls .L1696 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1491 - add x1, x1, 712 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x1, x1, 600 + add x0, x0, :lo12:.LC9 + mov w2, 1498 bl sftl_printk -.L1672: - add x0, x22, :lo12:.LANCHOR0 - mov w3, -1 - ldrh w2, [x0, 2528] - ldrh w4, [x0, 2526] - strh w4, [x0, 24] - lsr w5, w2, 6 +.L1696: + ldrh w2, [x19, 2528] + add x0, x19, 2660 + ldr w1, [x19, 2544] + ldrh w3, [x19, 2526] + lsr w4, w2, 6 and w2, w2, 63 - strb w2, [x0, 30] - ldrb w2, [x0, 2523] - strb w2, [x0, 32] - ldrh w2, [x0, 2530] - strh w2, [x0, 80] - ldrh w2, [x0, 2532] - strh w5, [x0, 26] - strh w3, [x0, 176] - lsr w5, w2, 6 + strb w2, [x19, 30] + ldrb w2, [x19, 2523] + strb w2, [x19, 32] + mov w2, 65535 + str w2, [x19, 176] + ldrh w2, [x19, 2530] + strh w2, [x19, 80] + ldrh w2, [x19, 2532] + strh w4, [x19, 26] + stp wzr, wzr, [x0, -16] + lsr w4, w2, 6 and w2, w2, 63 - strb w2, [x0, 86] - ldrb w2, [x0, 2524] - strb w2, [x0, 88] - ldrh w2, [x0, 2534] - strh w2, [x0, 128] - ldrh w2, [x0, 2536] - strh w5, [x0, 82] - strh wzr, [x0, 178] - lsr w5, w2, 6 + strb w2, [x19, 86] + ldrb w2, [x19, 2524] + strb w2, [x19, 88] + ldrh w2, [x19, 2534] + strh w2, [x19, 128] + ldrh w2, [x19, 2536] + strh w4, [x19, 82] + stp w1, wzr, [x0, 8] + lsr w4, w2, 6 and w2, w2, 63 - strb w2, [x0, 134] - ldrb w2, [x0, 2525] - strb w2, [x0, 136] - ldr w2, [x0, 2544] - str w2, [x0, 2676] - strb wzr, [x0, 182] - strb wzr, [x0, 184] - strh w5, [x0, 130] - str wzr, [x0, 2636] - str wzr, [x0, 2644] - str wzr, [x0, 2652] - str wzr, [x0, 2656] - str wzr, [x0, 2680] - str wzr, [x0, 2692] - ldr w1, [x0, 2552] - ldr w2, [x0, 2668] - str wzr, [x0, 2648] - cmp w1, w2 - bls .L1673 - str w1, [x0, 2668] -.L1673: - add x0, x22, :lo12:.LANCHOR0 - ldr w1, [x0, 2548] - ldr w2, [x0, 2672] - cmp w1, w2 - bls .L1674 - str w1, [x0, 2672] -.L1674: + strb w2, [x19, 134] + ldrb w2, [x19, 2525] + strh w3, [x19, 24] + strh w4, [x19, 130] + strb w2, [x19, 136] + strb wzr, [x19, 182] + strb wzr, [x19, 184] + str wzr, [x19, 2628] + str wzr, [x19, 2636] + str wzr, [x19, 2684] + str wzr, [x19, 2640] + ldr w0, [x19, 2552] + ldr w1, [x19, 2660] + cmp w0, w1 + bls .L1697 + str w0, [x19, 2660] +.L1697: + ldr w0, [x19, 2548] + ldr w1, [x19, 2664] + cmp w0, w1 + bls .L1698 + str w0, [x19, 2664] +.L1698: mov w0, 65535 - cmp w4, w0 - beq .L1675 - add x0, x22, :lo12:.LANCHOR0 - add x0, x0, 24 + cmp w3, w0 + beq .L1699 + add x0, x19, 24 bl make_superblock -.L1675: - add x1, x22, :lo12:.LANCHOR0 - add x0, x1, 80 - ldrh w2, [x1, 80] +.L1699: + ldrh w2, [x19, 80] + add x0, x19, 80 mov w1, 65535 cmp w2, w1 - beq .L1676 + beq .L1700 bl make_superblock -.L1676: - add x1, x22, :lo12:.LANCHOR0 - add x0, x1, 128 - ldrh w2, [x1, 128] +.L1700: + ldrh w2, [x19, 128] + add x0, x19, 128 mov w1, 65535 cmp w2, w1 - beq .L1677 + beq .L1701 bl make_superblock -.L1677: - add x22, x22, :lo12:.LANCHOR0 +.L1701: + ldrh w2, [x19, 176] + add x0, x19, 176 mov w1, 65535 - add x0, x22, 176 - ldrh w2, [x22, 176] cmp w2, w1 - beq .L1678 + beq .L1702 bl make_superblock -.L1678: +.L1702: mov w0, 0 - b .L1659 + b .L1682 .size FtlLoadSysInfo, .-FtlLoadSysInfo + .section .rodata.str1.1 +.LC129: + .string "%s last blk_id =%x page =%x hash error hash =%x hash_r =%x\n" +.LC130: + .string "%s scan blk_id =%x page =%x hash error hash =%x hash_r =%x\n" + .text .align 2 .global FtlMapTblRecovery .type FtlMapTblRecovery, %function FtlMapTblRecovery: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE129 + .text +.LPFE129: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -144]! mov w1, 0 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x19, x0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - stp x23, x24, [sp, 48] mov w20, 0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] - ldrh w25, [x0, 6] - ldr x23, [x0, 40] - ldr x24, [x0, 16] - ldr x0, [x0, 24] - lsl w2, w25, 2 - str x0, [x29, 128] - ldrh w0, [x19, 8] - str w0, [x29, 136] - mov x0, x23 + ldrh w23, [x0, 6] + ldr x22, [x0, 40] + ldp x27, x28, [x0, 16] + lsl w2, w23, 2 + ldrh w0, [x0, 8] + str w0, [sp, 112] + mov x0, x22 bl ftl_memset - stp wzr, wzr, [x19, 48] - add x0, x21, :lo12:.LANCHOR0 - ldr x2, [x0, 3464] - ldr x22, [x0, 3528] - str x2, [x0, 3736] - str x22, [x0, 3744] + str xzr, [x19, 48] + adrp x6, .LANCHOR0 + add x24, x6, :lo12:.LANCHOR0 mov w0, -1 - strh w0, [x19] - strh w0, [x19, 2] + ldr x1, [x24, 3448] + str x1, [x24, 3720] + ldr x21, [x24, 3512] + str x21, [x24, 3728] + str w0, [x19] mov w0, 1 str w0, [x19, 56] - ldr w0, [x29, 136] + ldr w0, [sp, 112] sub w0, w0, #1 - str w0, [x29, 116] + str w0, [sp, 124] adrp x0, .LANCHOR1 add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 728 - str x0, [x29, 104] -.L1691: - ldr w0, [x29, 136] + add x0, x0, 615 + str x0, [sp, 128] +.L1712: + ldr w0, [sp, 112] cmp w20, w0 - bge .L1710 - ldr w0, [x29, 116] - sxtw x28, w20 - cmp w20, w0 - bne .L1692 - lsl x0, x28, 1 - mov w26, 0 - add x1, x24, x0 - str x1, [x29, 136] + bge .L1732 + add x0, x27, x20, sxtw 1 + str x0, [sp, 104] + ldr w0, [sp, 124] + sxtw x26, w20 + sbfiz x1, x20, 1, 32 + cmp w0, w20 + bne .L1713 + ldr x0, [sp, 104] mov w1, 1 - ldrh w0, [x24, x0] - adrp x24, .LANCHOR1 - add x24, x24, :lo12:.LANCHOR1 - add x24, x24, 728 + adrp x27, .LC129 + add x27, x27, :lo12:.LC129 + ldrh w0, [x0] bl FtlGetLastWrittenPage - sxth w1, w0 - add w0, w0, 1 - strh w0, [x19, 2] - ldr x0, [x29, 128] + sxth w25, w0 + add w25, w25, 1 strh w20, [x19] - str w1, [x29, 120] - ldr w0, [x0, x28, lsl 2] - add x28, x21, :lo12:.LANCHOR0 - add x27, x28, 3728 + strh w25, [x19, 2] + ldr w0, [x28, x26, lsl 2] + adrp x26, .LANCHOR1 + add x26, x26, :lo12:.LANCHOR1 + mov w28, 0 + add x26, x26, 615 str w0, [x19, 48] -.L1693: - ldr w0, [x29, 120] - add w0, w0, 1 - cmp w26, w0 - blt .L1696 -.L1710: - add x21, x21, :lo12:.LANCHOR0 +.L1714: + cmp w28, w25 + blt .L1718 +.L1732: mov x0, x19 bl ftl_free_no_use_map_blk ldrh w1, [x19, 2] - ldrh w0, [x21, 308] + ldrh w0, [x24, 308] cmp w1, w0 - bne .L1698 + bne .L1720 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L1698: +.L1720: mov x0, x19 bl ftl_map_blk_gc mov x0, x19 @@ -11774,172 +13199,187 @@ FtlMapTblRecovery: ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 + hint 29 // autiasp ret -.L1696: - ldr x0, [x29, 136] +.L1718: + ldr x0, [sp, 104] + add x3, x24, 3712 mov w2, 1 mov w1, w2 + str x3, [sp, 112] ldrh w0, [x0] - orr w0, w26, w0, lsl 10 - str w0, [x27, 4] - mov x0, x27 + orr w0, w28, w0, lsl 10 + str w0, [x24, 3716] + mov x0, x3 bl FlashReadPages - ldr x0, [x27, 16] - ldr w8, [x0, 12] - cbz w8, .L1694 - ldr w0, [x27] + ldr x3, [sp, 112] + ldr x0, [x3, 16] + ldr w4, [x0, 12] + ldr w0, [x24, 3712] + str w4, [sp, 112] cmn w0, #1 - beq .L1694 - ldrh w1, [x28, 314] - ldr x0, [x27, 8] + cbz w4, .L1715 + beq .L1733 + ldrh w1, [x24, 314] + ldr x0, [x3, 8] bl js_hash - cmp w8, w0 - beq .L1694 + ldr w4, [sp, 112] mov w5, w0 - mov w4, w8 - mov w3, w26 + cmp w4, w0 + beq .L1717 + mov x0, x27 + mov w3, w28 mov w2, w20 - mov x1, x24 - adrp x0, .LC128 - add x0, x0, :lo12:.LC128 + mov x1, x26 bl sftl_printk mov w0, -1 - str w0, [x27] -.L1694: - ldr w0, [x27] - cmn w0, #1 - beq .L1695 - ldrh w0, [x22, 8] - cmp w25, w0 - bls .L1695 - ldrh w2, [x22] + str w0, [x24, 3712] +.L1733: + add w28, w28, 1 + sxth w28, w28 + b .L1714 +.L1715: + beq .L1733 +.L1717: + ldrh w0, [x21, 8] + cmp w0, w23 + bcs .L1733 + ldrh w2, [x21] ldrh w1, [x19, 4] cmp w2, w1 - bne .L1695 + bne .L1733 ubfiz x0, x0, 2, 16 - ldr w1, [x27, 4] - str w1, [x23, x0] -.L1695: - add w7, w26, 1 - sxth w26, w7 - b .L1693 -.L1692: - add x26, x21, :lo12:.LANCHOR0 - lsl x2, x28, 1 - add x0, x26, 3728 - ldr x1, [x26, 3464] - str x1, [x0, 8] - add x1, x24, x2 - str x1, [x29, 120] - ldrh w1, [x24, x2] - ldrh w2, [x26, 308] + ldr w1, [x24, 3716] + str w1, [x22, x0] + b .L1733 +.L1713: + add x0, x24, 3712 + ldr x2, [x24, 3448] + str x2, [x0, 8] + ldrh w2, [x24, 308] + ldrh w1, [x27, 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, 3728] + ldr w0, [x24, 3712] cmn w0, #1 - beq .L1712 - ldrh w1, [x22] + beq .L1736 + ldrh w1, [x21] ldrh w0, [x19, 4] cmp w1, w0 - bne .L1712 - ldrh w1, [x22, 8] + bne .L1736 + ldrh w1, [x21, 8] mov w0, 64245 cmp w1, w0 - beq .L1700 -.L1712: - add x26, x21, :lo12:.LANCHOR0 - mov w27, 0 - add x28, x26, 3728 -.L1701: - ldrh w0, [x26, 308] - cmp w27, w0 - bge .L1708 - ldr x0, [x29, 120] - mov w2, 1 - mov w1, w2 - ldrh w0, [x0] - orr w0, w27, w0, lsl 10 - str w0, [x28, 4] - mov x0, x28 - bl FlashReadPages - ldr x0, [x28, 16] - ldr w7, [x0, 12] - cbz w7, .L1705 - ldr w0, [x28] - cmn w0, #1 - beq .L1705 - ldrh w1, [x26, 314] - ldr x0, [x28, 8] - bl js_hash - cmp w7, w0 - beq .L1705 - ldr x1, [x29, 104] - mov w5, w0 - mov w4, w7 - mov w3, w27 - mov w2, w20 - adrp x0, .LC129 - add x0, x0, :lo12:.LC129 - bl sftl_printk - mov w0, -1 - str w0, [x28] -.L1705: - ldr w0, [x28] - cmn w0, #1 - beq .L1706 - ldrh w0, [x22, 8] - cmp w25, w0 - bls .L1706 - ldrh w2, [x22] - ldrh w1, [x19, 4] - cmp w2, w1 - bne .L1706 - ubfiz x0, x0, 2, 16 - ldr w1, [x28, 4] - str w1, [x23, x0] -.L1706: - add w6, w27, 1 - sxth w27, w6 - b .L1701 -.L1700: - mov w0, 0 -.L1702: - ldrh w1, [x26, 308] - sub w1, w1, #1 - cmp w0, w1 - blt .L1704 -.L1708: - add w20, w20, 1 - sxth w20, w20 - b .L1691 -.L1704: - ldr x2, [x26, 3464] - sbfiz x3, x0, 3, 32 - ldrh w1, [x2, x3] - cmp w25, w1 - bls .L1703 - add x2, x2, x3 - ubfiz x1, x1, 2, 16 - ldr w2, [x2, 4] - str w2, [x23, x1] -.L1703: + beq .L1737 +.L1736: + adrp x25, .LC130 + mov w26, 0 + add x25, x25, :lo12:.LC130 + b .L1728 +.L1724: + ldr x3, [x24, 3448] + lsl w1, w0, 1 + ldr w4, [x3, w1, sxtw 2] + and w2, w4, 65535 + cmp w23, w4, uxth + bls .L1723 + add w1, w1, 1 + ldr w3, [x3, w1, sxtw 2] + ubfiz x1, x2, 2, 16 + str w3, [x22, x1] +.L1723: add w0, w0, 1 sxth w0, w0 - b .L1702 +.L1722: + ldrh w1, [x24, 308] + sub w1, w1, #1 + cmp w0, w1 + blt .L1724 +.L1730: + add w20, w20, 1 + sxth w20, w20 + b .L1712 +.L1737: + mov w0, 0 + b .L1722 +.L1729: + ldr x0, [sp, 104] + add x5, x24, 3712 + mov w2, 1 + mov w1, w2 + str x5, [sp, 136] + ldrh w0, [x0] + orr w0, w26, w0, lsl 10 + str w0, [x24, 3716] + mov x0, x5 + bl FlashReadPages + ldr x5, [sp, 136] + ldr x0, [x5, 16] + ldr w4, [x0, 12] + ldr w0, [x24, 3712] + str w4, [sp, 136] + cmn w0, #1 + cbz w4, .L1725 + beq .L1734 + ldrh w1, [x24, 314] + ldr x0, [x5, 8] + bl js_hash + ldr w4, [sp, 136] + mov w5, w0 + cmp w4, w0 + beq .L1727 + ldr x1, [sp, 128] + mov x0, x25 + mov w3, w26 + mov w2, w20 + bl sftl_printk + mov w0, -1 + str w0, [x24, 3712] +.L1734: + add w3, w26, 1 + sxth w26, w3 +.L1728: + ldrh w0, [x24, 308] + cmp w26, w0 + blt .L1729 + b .L1730 +.L1725: + beq .L1734 +.L1727: + ldrh w0, [x21, 8] + cmp w0, w23 + bcs .L1734 + ldrh w2, [x21] + ldrh w1, [x19, 4] + cmp w2, w1 + bne .L1734 + ubfiz x0, x0, 2, 16 + ldr w1, [x24, 3716] + str w1, [x22, x0] + b .L1734 .size FtlMapTblRecovery, .-FtlMapTblRecovery .align 2 .global FtlLoadVonderInfo .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE130 + .text +.LPFE130: + nop + nop adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x0, x1, 3896 - add x29, sp, 0 + add x0, x1, 3880 + mov x29, sp ldrh w2, [x1, 324] strh w2, [x0, 10] mov w2, -3962 @@ -11950,63 +13390,82 @@ FtlLoadVonderInfo: strh w2, [x0, 6] ldr x2, [x1, 352] str x2, [x0, 16] - ldr x2, [x1, 3600] + ldr x2, [x1, 3584] str x2, [x0, 24] - ldr x2, [x1, 3592] - ldr x1, [x1, 3608] + ldr x2, [x1, 3576] + ldr x1, [x1, 3592] stp x2, x1, [x0, 32] bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size FtlLoadVonderInfo, .-FtlLoadVonderInfo .align 2 .global FtlLoadMapInfo .type FtlLoadMapInfo, %function FtlLoadMapInfo: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE131 + .text +.LPFE131: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 + mov x29, sp bl FtlL2PDataInit adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - add x0, x0, 3648 + add x0, x0, 3632 bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size FtlLoadMapInfo, .-FtlLoadMapInfo .align 2 .global FtlSysBlkInit .type FtlSysBlkInit, %function FtlSysBlkInit: - stp x29, x30, [sp, -64]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE132 + .text +.LPFE132: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -48]! + mov x29, sp stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - add x21, x20, :lo12:.LANCHOR0 - str x23, [sp, 48] - ldrh w0, [x21, 240] - strh wzr, [x21, 3760] + ldrh w0, [x19, 240] + strh wzr, [x19, 3744] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - ldrh w1, [x21, 2704] + ldrh w1, [x19, 2696] mov w0, 65535 cmp w1, w0 - bne .L1737 -.L1739: - mov w23, -1 -.L1736: - mov w0, w23 - ldr x23, [sp, 48] + bne .L1756 +.L1758: + mov w20, -1 +.L1755: + mov w0, w20 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 + ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L1737: +.L1756: bl FtlLoadSysInfo - mov w23, w0 - cbnz w0, .L1739 + mov w20, w0 + cbnz w0, .L1758 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -12016,24 +13475,25 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn - ldr x1, [x21, 2608] - mov w0, 0 - ldrh w3, [x21, 342] + ldr x1, [x19, 2608] + mov x0, 0 + ldrh w2, [x19, 342] add x1, x1, 4 -.L1740: - cmp w0, w3 - bge .L1745 - ldr w2, [x1], 16 - tbz w2, #31, .L1741 -.L1745: - add x2, x20, :lo12:.LANCHOR0 - cmp w0, w3 - ldrh w1, [x2, 2540] - add w1, w1, 1 - strh w1, [x2, 2540] - bge .L1751 -.L1742: - add x19, x20, :lo12:.LANCHOR0 +.L1759: + mov w3, w0 + cmp w2, w0 + ble .L1763 + lsl x4, x0, 4 + add x0, x0, 1 + ldr w4, [x1, x4] + tbz w4, #31, .L1759 +.L1763: + ldrh w0, [x19, 2540] + add w0, w0, 1 + strh w0, [x19, 2540] + cmp w3, w2 + bge .L1770 +.L1760: add x22, x19, 24 add x21, x19, 80 mov x0, x22 @@ -12042,154 +13502,156 @@ FtlSysBlkInit: bl FtlSuperblockPowerLostFix ldrh w0, [x19, 24] ldr x2, [x19, 72] - ldrh w3, [x19, 28] lsl x0, x0, 1 + ldrh w3, [x19, 28] ldrh w1, [x2, x0] sub w1, w1, w3 strh w1, [x2, x0] - strb wzr, [x19, 30] + strh wzr, [x19, 28] ldrh w0, [x19, 306] strh w0, [x19, 26] ldrh w0, [x19, 80] ldr x2, [x19, 72] - strh wzr, [x19, 28] + strb wzr, [x19, 30] lsl x0, x0, 1 ldrh w3, [x19, 84] ldrh w1, [x2, x0] sub w1, w1, w3 strh w1, [x2, x0] - strb wzr, [x19, 86] + strh wzr, [x19, 84] ldrh w0, [x19, 306] strh w0, [x19, 82] ldrh w0, [x19, 2542] - strh wzr, [x19, 84] + strb wzr, [x19, 86] add w0, w0, 1 strh w0, [x19, 2542] bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush - b .L1746 -.L1741: - add w0, w0, 1 - b .L1740 -.L1751: - ldrh w0, [x2, 3760] - cbnz w0, .L1742 -.L1746: - add x19, x20, :lo12:.LANCHOR0 - mov w1, 65535 - add x21, x19, 24 + b .L1764 +.L1770: + ldrh w0, [x19, 3744] + cbnz w0, .L1760 +.L1764: ldrh w0, [x19, 24] + add x22, x19, 24 + mov w1, 65535 cmp w0, w1 - beq .L1747 + beq .L1765 ldrh w1, [x19, 28] - cbnz w1, .L1747 - ldrh w1, [x19, 84] - add x20, x19, 80 - cbnz w1, .L1747 + add x21, x19, 80 + ldrh w2, [x19, 84] + orr w1, w1, w2 + tst w1, 65535 + bne .L1765 bl FtlGcRefreshBlock ldrh w0, [x19, 80] bl FtlGcRefreshBlock bl FtlVpcTblFlush + mov x0, x22 + bl allocate_new_data_superblock mov x0, x21 bl allocate_new_data_superblock - mov x0, x20 - bl allocate_new_data_superblock -.L1747: +.L1765: bl FtlVpcCheckAndModify - b .L1736 + b .L1755 .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 .global ftl_low_format .type ftl_low_format, %function ftl_low_format: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE133 + .text +.LPFE133: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - str wzr, [x0, 2668] - str wzr, [x0, 2672] - str wzr, [x0, 2684] - ldrh w0, [x0, 240] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + ldrh w0, [x19, 240] + str wzr, [x19, 2660] + str wzr, [x19, 2664] + str wzr, [x19, 2676] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz w0, .L1754 + cbz w0, .L1773 bl FtlMakeBbt -.L1754: - mov w4, 23752 - add x1, x20, :lo12:.LANCHOR0 +.L1773: + mov w3, 23752 mov w0, 0 - movk w4, 0xa0f, lsl 16 -.L1755: - ldrh w2, [x1, 262] - cmp w0, w2, lsl 7 - blt .L1756 - ldrh w21, [x1, 244] - add x22, x20, :lo12:.LANCHOR0 - mov w19, 0 -.L1757: - ldrh w0, [x22, 246] - cmp w0, w21 - bhi .L1758 - ldrh w0, [x22, 236] - sub w1, w19, #3 - cmp w1, w0, lsl 1 - bge .L1759 -.L1763: - add x19, x20, :lo12:.LANCHOR0 - mov w21, 0 - mov w22, 0 -.L1760: - ldrh w0, [x19, 244] - cmp w0, w22 - bhi .L1764 - ldrh w2, [x19, 236] - ldr w1, [x19, 248] + movk w3, 0xa0f, lsl 16 +.L1774: + ldrh w1, [x19, 262] + cmp w0, w1, lsl 7 + blt .L1775 + ldrh w21, [x19, 244] + mov w20, 0 +.L1776: ldrh w0, [x19, 246] - str w0, [x19, 3436] - udiv w4, w1, w2 + cmp w0, w21 + bhi .L1777 + ldrh w0, [x19, 236] + sub w1, w20, #3 + cmp w1, w0, lsl 1 + bge .L1778 +.L1782: + mov w20, 0 + mov w21, 0 +.L1779: + ldrh w0, [x19, 244] + cmp w0, w21 + bhi .L1783 + ldrh w0, [x19, 246] + ldrh w2, [x19, 236] + str w0, [x19, 3420] + ldr w0, [x19, 248] + udiv w4, w0, w2 ubfx x3, x4, 5, 16 - str w4, [x19, 2632] - add w0, w3, 36 - strh w0, [x19, 2700] - mov w0, 24 - mul w0, w2, w0 - cmp w21, w0 - ble .L1765 - sub w1, w1, w21 - udiv w1, w1, w2 - str w1, [x19, 2632] - lsr w1, w1, 5 - add w1, w1, 24 - strh w1, [x19, 2700] -.L1765: - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0, 298] - cbz w1, .L1767 - ldrh w5, [x0, 2700] - add w5, w5, w1, lsr 1 - strh w5, [x0, 2700] - mul w5, w1, w2 - cmp w21, w5 - bge .L1767 + str w4, [x19, 2624] + add w1, w3, 36 + strh w1, [x19, 2692] + mov w1, 24 + mul w1, w2, w1 + cmp w20, w1 + ble .L1784 + sub w0, w0, w20 + udiv w0, w0, w2 + str w0, [x19, 2624] + lsr w0, w0, 5 + add w0, w0, 24 + strh w0, [x19, 2692] +.L1784: + ldrh w1, [x19, 298] + cbz w1, .L1786 + ldrh w0, [x19, 2692] + add w0, w0, w1, lsr 1 + strh w0, [x19, 2692] + mul w0, w1, w2 + cmp w20, w0 + bge .L1786 add w1, w1, 32 - str w4, [x0, 2632] + str w4, [x19, 2624] add w1, w3, w1 - strh w1, [x0, 2700] -.L1767: - add x19, x20, :lo12:.LANCHOR0 + strh w1, [x19, 2692] +.L1786: + ldrh w1, [x19, 2692] add x21, x19, 24 - ldrh w1, [x19, 2700] - ldr w0, [x19, 2632] + ldr w0, [x19, 2624] + mov w20, -1 sub w0, w0, w1 ldrh w1, [x19, 306] mul w0, w0, w2 - str w0, [x19, 3980] + str w0, [x19, 3964] mul w0, w1, w0 ldrh w1, [x19, 262] - str w0, [x19, 2632] + str w0, [x19, 2624] mul w0, w1, w0 str w0, [x19, 344] bl FtlBbmTblFlush @@ -12198,162 +13660,167 @@ ftl_low_format: ldrh w2, [x19, 246] lsl w2, w2, 1 bl ftl_memset - mov w0, -1 - mov w22, w0 - mov w1, 1 - strh w0, [x19, 176] - strh wzr, [x19, 178] + mov w1, 65535 + mov w0, 1 + strb wzr, [x21, 6] + strb w0, [x21, 8] + str wzr, [x19, 24] + str w1, [x19, 176] strb wzr, [x19, 182] strb wzr, [x19, 184] - strh wzr, [x21, 2] - strb wzr, [x21, 6] - strh wzr, [x19, 24] - strb w1, [x21, 8] str wzr, [x19, 2620] -.L1769: +.L1788: mov x0, x21 bl make_superblock ldrb w1, [x21, 7] ldrh w0, [x21] - cbnz w1, .L1770 + cbnz w1, .L1789 ldr x1, [x19, 72] ubfiz x0, x0, 1, 16 - strh w22, [x1, x0] + strh w20, [x1, x0] ldrh w0, [x21] add w0, w0, 1 strh w0, [x21] - b .L1769 -.L1756: - ldr x5, [x1, 3488] - ubfiz x3, x0, 2, 16 - mvn w2, w0 - orr w2, w0, w2, lsl 16 + b .L1788 +.L1775: + ldr x4, [x19, 3472] + ubfiz x2, x0, 2, 16 + mvn w1, w0 + orr w1, w0, w1, lsl 16 + str w1, [x4, x2] add w0, w0, 1 + ldr x1, [x19, 3480] and w0, w0, 65535 - str w2, [x5, x3] - ldr x2, [x1, 3496] - str w4, [x2, x3] - b .L1755 -.L1758: + str w3, [x1, x2] + b .L1774 +.L1777: mov w0, w21 mov w1, 1 add w21, w21, 1 bl FtlLowFormatEraseBlock - add w19, w19, w0 + add w20, w0, w20 and w21, w21, 65535 - and w19, w19, 65535 - b .L1757 -.L1759: - udiv w0, w19, w0 - ldr w19, [x22, 336] - add x21, x20, :lo12:.LANCHOR0 - add w0, w0, w19 + and w20, w20, 65535 + b .L1776 +.L1778: + udiv w20, w20, w0 + ldr w0, [x19, 336] + add w0, w20, w0 bl FtlSysBlkNumInit - ldrh w0, [x22, 240] + ldrh w0, [x19, 240] bl FtlFreeSysBlkQueueInit - ldrh w19, [x22, 244] -.L1761: - ldrh w0, [x21, 246] - cmp w0, w19 - bls .L1763 - mov w0, w19 - add w19, w19, 1 + ldrh w20, [x19, 244] +.L1780: + ldrh w0, [x19, 246] + cmp w0, w20 + bls .L1782 + mov w0, w20 + add w20, w20, 1 mov w1, 1 - and w19, w19, 65535 + and w20, w20, 65535 bl FtlLowFormatEraseBlock - b .L1761 -.L1764: - mov w0, w22 + b .L1780 +.L1783: + mov w0, w21 mov w1, 0 - add w22, w22, 1 + add w21, w21, 1 bl FtlLowFormatEraseBlock - add w21, w21, w0 - and w22, w22, 65535 + add w20, w0, w20 and w21, w21, 65535 - b .L1760 -.L1770: - ldr w1, [x19, 2668] + and w20, w20, 65535 + b .L1779 +.L1789: + ldr w1, [x19, 2660] ubfiz x0, x0, 1, 16 str w1, [x21, 12] + add x20, x19, 80 add w1, w1, 1 - str w1, [x19, 2668] + str w1, [x19, 2660] ldr x1, [x19, 72] ldrh w2, [x21, 4] strh w2, [x1, x0] - add x0, x19, 80 - strh wzr, [x19, 82] - ldrh w1, [x21] + strh wzr, [x20, 2] + ldrh w0, [x21] mov w21, -1 - strb wzr, [x19, 86] - add w1, w1, 1 - strh w1, [x19, 80] - mov w1, 1 - strb w1, [x19, 88] - add x19, x20, :lo12:.LANCHOR0 - mov x20, x0 -.L1771: + strb wzr, [x20, 6] + add w0, w0, 1 + strh w0, [x19, 80] + mov w0, 1 + strb w0, [x20, 8] +.L1790: mov x0, x20 bl make_superblock ldrb w1, [x20, 7] ldrh w0, [x20] - cbnz w1, .L1772 + cbnz w1, .L1791 ldr x1, [x19, 72] ubfiz x0, x0, 1, 16 strh w21, [x1, x0] ldrh w0, [x20] add w0, w0, 1 strh w0, [x20] - b .L1771 -.L1772: - ldr w1, [x19, 2668] + b .L1790 +.L1791: + ldr w1, [x19, 2660] ubfiz x0, x0, 1, 16 str w1, [x20, 12] add w1, w1, 1 - str w1, [x19, 2668] + str w1, [x19, 2660] ldr x1, [x19, 72] ldrh w2, [x20, 4] - mov w20, -1 strh w2, [x1, x0] - strh w20, [x19, 128] + mov w0, -1 + strh w0, [x19, 128] bl FtlFreeSysBlkQueueOut - strh w0, [x19, 2704] - ldr w0, [x19, 3980] - strh w0, [x19, 2710] - ldr w0, [x19, 2668] - str w0, [x19, 2712] + strh w0, [x19, 2696] + add x1, x19, 2560 + mov w0, -65536 + str w0, [x1, 138] + ldr w0, [x19, 3964] + strh w0, [x19, 2702] + ldr w0, [x19, 2660] + str w0, [x19, 2704] add w0, w0, 1 - strh wzr, [x19, 2706] - strh w20, [x19, 2708] - str w0, [x19, 2668] + str w0, [x19, 2660] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz w0, .L1773 + cbnz w0, .L1792 adrp x0, .LANCHOR2 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR2] -.L1773: +.L1792: mov w0, 0 ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret .size ftl_low_format, .-ftl_low_format .align 2 .global sftl_init .type sftl_init, %function sftl_init: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE134 + .text +.LPFE134: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -32]! - adrp x1, .LC0 - add x1, x1, :lo12:.LC0 - mov w0, -1 - add x29, sp, 0 + adrp x1, .LC1 + mov x29, sp + add x1, x1, :lo12:.LC1 stp x19, x20, [sp, 16] adrp x20, .LANCHOR2 + mov w0, -1 adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 str w0, [x20, #:lo12:.LANCHOR2] - adrp x0, .LC77 - add x0, x0, :lo12:.LC77 + adrp x0, .LC78 + add x0, x0, :lo12:.LC78 bl sftl_printk mov x0, x19 bl FtlConstantsInit @@ -12362,437 +13829,439 @@ sftl_init: ldrh w0, [x19, 240] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbnz w0, .L1782 + cbnz w0, .L1798 bl FtlSysBlkInit - cbnz w0, .L1782 + cbnz w0, .L1798 mov w0, 1 str w0, [x20, #:lo12:.LANCHOR2] ldrh w0, [x19, 228] cmp w0, 15 - bhi .L1782 + bhi .L1798 mov w19, 8129 -.L1781: +.L1799: mov w1, 1 mov w0, 0 bl rk_ftl_garbage_collect subs w19, w19, #1 - bne .L1781 -.L1782: + bne .L1799 +.L1798: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret .size sftl_init, .-sftl_init + .section .rodata.str1.1 +.LC131: + .string "write_idblock %x %x\n" +.LC132: + .string "write_idblock fail! %x %x %x %x\n" +.LC133: + .string "%s idb buffer alloc fail\n" + .text .align 2 .global FtlWriteToIDB .type FtlWriteToIDB, %function FtlWriteToIDB: - stp x29, x30, [sp, -240]! - add x29, sp, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE135 + .text +.LPFE135: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -208]! + adrp x5, .LANCHOR0 + mov x29, sp stp x19, x20, [sp, 16] - mov w19, w0 + mov w20, w0 + mrs x0, sp_el0 stp x21, x22, [sp, 32] - adrp x0, __stack_chk_guard + mov w19, w1 + add w22, w19, w20 stp x23, x24, [sp, 48] - mov w21, w1 + sub w23, w22, #1 + cmp w23, 63 stp x25, x26, [sp, 64] - add x1, x0, :lo12:__stack_chk_guard + add x25, x5, :lo12:.LANCHOR0 stp x27, x28, [sp, 80] - mov x22, x2 - add w23, w21, w19 - str x0, [x29, 112] - ldr x2, [x1] - str x2, [x29, 232] - mov x2,0 - sub w24, w23, #1 - cmp w24, 63 - adrp x20, .LANCHOR0 - bls .L1786 - cmp w19, 575 - bls .L1787 -.L1786: - add x0, x20, :lo12:.LANCHOR0 - ldr w1, [x0, 3984] - cbnz w1, .L1788 -.L1853: + ldr x1, [x0, 1376] + str x1, [sp, 200] + mov x1, 0 + bls .L1803 + cmp w20, 575 + bls .L1804 +.L1803: + ldr w0, [x25, 3968] + cbnz w0, .L1805 +.L1867: mov w19, 0 - b .L1785 -.L1788: - ldr x24, [x0, 3992] - mov w1, 35899 - movk w1, 0xfcdc, lsl 16 - ldr w2, [x24] - cmp w2, w1 - bne .L1790 - add x1, x24, 258048 - ldrh w2, [x0, 10] + b .L1802 +.L1805: + ldr x22, [x25, 3976] + mov w0, 35899 + movk w0, 0xfcdc, lsl 16 + ldr w1, [x22] + cmp w1, w0 + bne .L1807 + add x1, x22, 258048 + ldrh w2, [x25, 10] add x1, x1, 2044 mov w0, 0 mov w19, 65023 - mov w3, 4097 -.L1794: - ldr w4, [x1] - cbnz w4, .L1791 - ldr w4, [x24, w0, uxtw 2] +.L1811: + ldr w3, [x1] + cbnz w3, .L1808 + ldr w3, [x22, w0, uxtw 2] add w0, w0, 1 - str w4, [x1, 2048] - cmp w0, w3 + str w3, [x1, 2048] + cmp w0, 4096 + bls .L1809 + mov w0, 0 +.L1809: sub w19, w19, #1 - csel w0, w0, wzr, cc sub x1, x1, #4 cmp w19, 4096 - bne .L1794 + bne .L1811 mov w19, 512 - b .L1793 -.L1791: + b .L1810 +.L1808: add w19, w19, 127 lsr w19, w19, 7 -.L1793: +.L1810: ubfiz w0, w2, 2, 14 - add w21, w19, 4 + add w20, w19, 4 mov w1, w19 - add x27, x20, :lo12:.LANCHOR0 - mov w25, 0 - mov w22, 0 - udiv w21, w21, w0 - adrp x0, .LC130 - add x0, x0, :lo12:.LC130 - add w21, w21, 1 - mov w2, w21 + mov w23, 0 + mov w21, 0 + udiv w20, w20, w0 + adrp x0, .LC131 + add x0, x0, :lo12:.LC131 + add w20, w20, 1 + mov w2, w20 bl sftl_printk lsl w0, w19, 7 - str w0, [x29, 140] -.L1795: - add w0, w21, w22 - str w0, [x29, 144] + str w0, [sp, 100] +.L1812: + add w0, w20, w21 + str w0, [sp, 104] cmp w0, 8 - bls .L1817 - cbnz w25, .L1818 -.L1790: + bls .L1834 + cbnz w23, .L1833 +.L1807: mov w19, -1 -.L1818: - add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x20, 3992] - str wzr, [x20, 3984] - bl kfree - ldr x0, [x20, 4000] - bl kfree -.L1785: - ldr x1, [x29, 112] - mov w0, w19 - add x1, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 232] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L1825 - bl __stack_chk_fail -.L1817: - ldr x0, [x27, 4000] + b .L1833 +.L1834: + ldr x0, [x25, 3984] mov w1, 0 mov x2, 512 bl memset - ldrh w28, [x27, 10] - ldr x1, [x27, 3400] - mul w0, w22, w28 - str w0, [x29, 152] - cbz x1, .L1826 - ldr x0, [x27, 3408] - mov w23, 6 + ldrh w27, [x25, 10] + ldr x1, [x25, 3384] + mul w0, w21, w27 + str w0, [sp, 96] + cbz x1, .L1843 + ldr x0, [x25, 3392] + mov w24, 6 cmp x0, 0 mov w0, 9 - csel w23, w23, w0, eq -.L1796: - mul w4, w22, w28 + csel w24, w24, w0, eq +.L1813: + mul w28, w21, w27 mov w26, 0 -.L1797: - ldr x6, [x27, 3376] - mov w1, w4 - str w4, [x29, 148] - mov w0, 0 +.L1814: + ldr x3, [x25, 3360] + mov w1, w28 add w26, w26, 1 - blr x6 - ldr w4, [x29, 148] - cmp w21, w26 - add w4, w4, w28 - bhi .L1797 - cmp w23, 9 - bne .L1828 - ldr x26, [x27, 4000] + add w28, w28, w27 + mov w0, 0 + blr x3 + cmp w20, w26 + bhi .L1814 + cmp w24, 9 + bne .L1845 + ldr x28, [x25, 3984] mov w2, 1024 mov w1, 0 - mov x0, x26 + mov x0, x28 bl ftl_memset - mov w0, 18766 + mov x0, 18766 + str wzr, [x28, 12] + movk x0, 0x464e, lsl 16 mov w1, 12 - movk w0, 0x464e, lsl 16 - stp w0, w1, [x26] - mov w0, 4 - strb w0, [x26, 17] - ldrh w0, [x27, 10] - strh w0, [x26, 18] - strb wzr, [x26, 16] - mov w0, 16 - strb wzr, [x26, 20] - strb w0, [x26, 21] - add x0, x26, 12 - strh wzr, [x26, 22] - str wzr, [x26, 12] + movk x0, 0xc, lsl 32 + str x0, [x28] + mov w0, 1024 + strh w0, [x28, 16] + ldrh w0, [x25, 10] + strh w0, [x28, 18] + mov w0, 4096 + str w0, [x28, 20] + add x0, x28, 12 bl js_hash - str w0, [x26, 8] -.L1798: - mul w0, w21, w28 - mov x7, x24 - mov x28, 0 - str w0, [x29, 148] -.L1799: - ldr w0, [x29, 148] - mov w1, w28 - cmp w28, w0 - bcs .L1806 - cmp w23, 9 - bne .L1800 - add w0, w1, 1 -.L1851: - str w0, [x29, 168] + str w0, [x28, 8] +.L1815: + mul w0, w20, w27 + mov x27, x22 + mov w26, 0 + str w0, [sp, 108] +.L1816: + ldr w0, [sp, 108] + cmp w26, w0 + beq .L1823 + cmp w24, 9 + lsl w0, w26, 2 + csinc w0, w0, w26, ne + str w0, [sp, 136] mov w0, 61424 - str w0, [x29, 172] - cmp w1, 0 - ccmp w23, 9, 0, eq - bne .L1802 - ldr x1, [x27, 3400] - add x8, x27, 3368 - str x7, [x29, 104] + str w0, [sp, 140] + cmp w26, 0 + ccmp w24, 9, 0, eq + bne .L1819 + ldr x1, [x25, 3384] + add x8, x25, 3352 mov w0, 70 - str x8, [x29, 128] + str x8, [sp, 112] blr x1 - ldr x8, [x29, 128] - add x3, x29, 168 - ldr w1, [x29, 152] - mov x2, x26 - str x8, [x29, 120] + ldr w1, [sp, 96] + ldr x8, [sp, 112] + add x3, sp, 136 + mov x2, x28 mov w0, 0 + str x8, [sp, 120] ldr x9, [x8, 16] blr x9 mov w1, w0 - ldr x8, [x29, 120] - ldrb w0, [x27, 22] - str w1, [x29, 128] + ldr x8, [sp, 120] + str w1, [sp, 112] + ldrb w0, [x25, 22] ldr x2, [x8, 32] blr x2 - ldr w1, [x29, 128] - ldr x7, [x29, 104] + ldr w1, [sp, 112] cmn w1, #1 - bne .L1803 -.L1806: - ldrb w0, [x27, 14] - str w0, [x29, 128] - ldrh w0, [x27, 10] - ldr x28, [x27, 4000] - mul w1, w22, w0 - str w1, [x29, 152] - add x1, x27, 3368 - ldr x2, [x1, 32] - cbnz x2, .L1804 + bne .L1820 +.L1823: + ldrb w0, [x25, 14] + add x1, x25, 3352 + str w0, [sp, 108] + ldrh w0, [x25, 10] + ldr x3, [x1, 32] + ldr x26, [x25, 3984] + mul w27, w21, w0 + cbnz x3, .L1821 mov w1, 6 -.L1852: - mul w0, w21, w0 - mov x26, 0 - str w0, [x29, 120] - str w1, [x29, 148] -.L1808: - ldr w0, [x29, 120] - mov w1, w26 - cmp w0, w26 - bls .L1812 - ldr w0, [x29, 148] - cmp w26, 0 +.L1866: + mul w0, w20, w0 + mov w28, 0 + str w1, [sp, 96] + str w0, [sp, 112] +.L1825: + ldr w0, [sp, 112] + cmp w28, w0 + beq .L1829 + ldr w0, [sp, 96] + cmp w28, 0 ccmp w0, 9, 0, eq - bne .L1809 - ldr x1, [x27, 3400] + bne .L1826 + ldr x1, [x25, 3384] mov w0, 70 blr x1 - ldr x1, [x27, 3408] + ldr x1, [x25, 3392] mov w0, 2 blr x1 - ldr x8, [x27, 3392] - add x3, x29, 168 - ldr w1, [x29, 152] - mov x2, x28 + add x3, sp, 136 + ldr x7, [x25, 3376] + mov x2, x26 + mov w1, w27 mov w0, 0 - blr x8 - ldrb w0, [x29, 128] - ldr x1, [x27, 3408] + blr x7 + ldrb w0, [sp, 108] + ldr x1, [x25, 3392] blr x1 - ldrb w0, [x27, 22] - ldr x1, [x27, 3400] + ldrb w0, [x25, 22] + ldr x1, [x25, 3384] blr x1 - ldr w0, [x28] + ldr w0, [x26] mov w1, 18766 movk w1, 0x464e, lsl 16 cmp w0, w1 - beq .L1810 -.L1812: - ldr x0, [x27, 4000] - mov x1, x24 - mov w23, 0 - mov x2, x0 -.L1811: - mov x26, x2 - mov x3, x1 - add x2, x2, 4 - add x1, x1, 4 - ldr w4, [x3] - ldr w6, [x26] - cmp w6, w4 - beq .L1814 + beq .L1827 +.L1829: + ldr x0, [x25, 3984] + mov x24, 0 +.L1828: + ldr w2, [x0, x24, lsl 2] + add x27, x0, x24, lsl 2 + ldr w1, [x22, x24, lsl 2] + add x28, x22, x24, lsl 2 + cmp w2, w1 + beq .L1831 mov x2, 512 mov w1, 0 - str x3, [x29, 152] bl memset - ldr x3, [x29, 152] - mov w1, w22 - ldr w2, [x26] - mov w4, w23 - adrp x0, .LC131 - add x0, x0, :lo12:.LC131 - ldr w3, [x3] - bl sftl_printk - ldrh w1, [x27, 10] - mov w0, 0 - ldr x2, [x27, 3376] - mul w1, w1, w22 - blr x2 -.L1815: - ldr w22, [x29, 144] - b .L1795 -.L1826: - mov w23, 6 - b .L1796 -.L1828: - mov x26, 0 - b .L1798 -.L1800: - lsl w0, w1, 2 - b .L1851 -.L1802: - ldr x8, [x27, 3384] - add x3, x29, 168 - ldr w0, [x29, 152] - mov x2, x7 - str x7, [x29, 128] - add w1, w1, w0 - mov w0, 0 - blr x8 - cmn w0, #1 - beq .L1806 - ldr x7, [x29, 128] - add x7, x7, 2048 -.L1803: - add x28, x28, 1 - b .L1799 -.L1804: - ldr x1, [x1, 40] - mov w23, 6 - cmp x1, 0 - mov w1, 9 - csel w1, w23, w1, eq - b .L1852 -.L1809: - ldr x7, [x27, 3392] - add x3, x29, 168 - ldr w0, [x29, 152] - mov x2, x28 - add w1, w0, w1 - mov w0, 0 - blr x7 - cmn w0, #1 - beq .L1812 - ldr w0, [x29, 172] - mov w1, 61424 - cmp w0, w1 - bne .L1812 - add x28, x28, 2048 -.L1810: - add x26, x26, 1 - b .L1808 -.L1814: - ldr w3, [x29, 140] - add w23, w23, 1 - cmp w23, w3 - bne .L1811 - add w25, w25, 1 - cmp w25, 5 - bls .L1815 - b .L1818 -.L1787: - cmp w19, 64 - bne .L1819 - add x25, x20, :lo12:.LANCHOR0 - mov w0, 262144 - bl ftl_malloc - str x0, [x25, 3992] - mov w0, 262144 - bl ftl_malloc - mov x1, x0 - ldr x0, [x25, 3992] - str x1, [x25, 4000] - cbz x0, .L1820 - cbz x1, .L1820 - mov w1, 1 - mov w2, 262144 - str w1, [x25, 3984] - mov w1, 0 - bl ftl_memset -.L1819: - add x20, x20, :lo12:.LANCHOR0 - ldr w0, [x20, 3984] - cbz w0, .L1853 - cmp w19, 63 - ldr x0, [x20, 3992] - bhi .L1822 - mov w1, 64 - sub w19, w1, w19 - sub w21, w21, w19 - ubfiz x19, x19, 9, 25 - add x1, x22, x19 -.L1823: - cmp w24, 575 - bls .L1824 - sub w21, w21, w23 - add w21, w21, 576 -.L1824: - lsl w2, w21, 9 - bl ftl_memcpy - b .L1853 -.L1820: - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 752 + ldr w2, [x27] + mov w1, w21 + ldr w3, [x28] + mov w4, w24 adrp x0, .LC132 add x0, x0, :lo12:.LC132 bl sftl_printk - b .L1819 -.L1822: - lsl w2, w19, 7 - mov x1, x22 - sub w2, w2, #8192 - add x0, x0, x2, lsl 2 - b .L1823 -.L1825: + ldrh w1, [x25, 10] + mov w0, 0 + ldr x2, [x25, 3360] + mul w1, w1, w21 + blr x2 +.L1832: + ldr w21, [sp, 104] + b .L1812 +.L1843: + mov w24, 6 + b .L1813 +.L1845: + mov x28, 0 + b .L1815 +.L1819: + ldr x8, [x25, 3368] + add x3, sp, 136 + ldr w0, [sp, 96] + mov x2, x27 + add w1, w0, w26 + mov w0, 0 + blr x8 + cmn w0, #1 + beq .L1823 + add x27, x27, 2048 +.L1820: + add w26, w26, 1 + b .L1816 +.L1821: + ldr x1, [x1, 40] + mov w24, 6 + cmp x1, 0 + mov w1, 9 + csel w1, w24, w1, eq + b .L1866 +.L1826: + ldr x6, [x25, 3376] + add x3, sp, 136 + mov x2, x26 + add w1, w27, w28 + mov w0, 0 + blr x6 + cmn w0, #1 + beq .L1829 + ldr w0, [sp, 140] + mov w1, 61424 + cmp w0, w1 + bne .L1829 + add x26, x26, 2048 +.L1827: + add w28, w28, 1 + b .L1825 +.L1831: + ldr w1, [sp, 100] + add x24, x24, 1 + cmp w1, w24 + bhi .L1828 + add w23, w23, 1 + cmp w23, 5 + bls .L1832 +.L1833: + ldr x0, [x25, 3976] + str wzr, [x25, 3968] + bl kfree + ldr x0, [x25, 3984] + bl kfree +.L1802: + mrs x0, sp_el0 + ldr x1, [sp, 200] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1842 + bl __stack_chk_fail +.L1804: + mov x21, x2 + cmp w20, 64 + bne .L1835 + mov w0, 262144 + bl ftl_malloc + str x0, [x25, 3976] + mov w0, 262144 + bl ftl_malloc + mov x1, x0 + ldr x0, [x25, 3976] + str x1, [x25, 3984] + cbz x0, .L1836 + cbz x1, .L1836 + mov w1, 1 + mov w2, 262144 + str w1, [x25, 3968] + mov w1, 0 + bl ftl_memset +.L1837: + sub w1, w20, #64 + ldr x0, [x25, 3976] + cmp w20, 63 + bhi .L1839 + add w19, w19, w1 + mov w1, 64 + sub w20, w1, w20 + ubfiz x20, x20, 9, 25 + add x21, x21, x20 +.L1840: + cmp w23, 575 + bls .L1841 + sub w19, w19, w22 + add w19, w19, 576 +.L1841: + lsl w2, w19, 9 + mov x1, x21 + bl ftl_memcpy + b .L1867 +.L1836: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC133 + add x1, x1, 633 + add x0, x0, :lo12:.LC133 + bl sftl_printk +.L1835: + ldr w0, [x25, 3968] + cbnz w0, .L1837 + b .L1867 +.L1839: + ubfiz x1, x1, 9, 25 + add x0, x0, x1 + b .L1840 +.L1842: + 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], 240 + ldp x29, x30, [sp], 208 + hint 29 // autiasp ret .size FtlWriteToIDB, .-FtlWriteToIDB .align 2 .global sftl_write .type sftl_write, %function sftl_write: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE136 + .text +.LPFE136: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -48]! - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov w20, w1 mov w19, w0 @@ -12804,622 +14273,523 @@ sftl_write: mov w1, w19 mov w0, 0 bl FtlWrite - ldr x21, [sp, 32] ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret .size sftl_write, .-sftl_write .align 2 .global rk_sftl_vendor_dev_ops_register .type rk_sftl_vendor_dev_ops_register, %function rk_sftl_vendor_dev_ops_register: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE137 + .text +.LPFE137: + nop + nop adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 - ldr x3, [x2, 4008] - cbnz x3, .L1858 - str x0, [x2, 4008] + hint 25 // paciasp + ldr x3, [x2, 3992] + cbnz x3, .L1872 + str x0, [x2, 3992] mov w0, 0 - str x1, [x2, 4016] + str x1, [x2, 4000] +.L1870: + hint 29 // autiasp ret -.L1858: +.L1872: mov w0, -1 - ret + b .L1870 .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register .align 2 .global rk_sftl_vendor_storage_init .type rk_sftl_vendor_storage_init, %function rk_sftl_vendor_storage_init: - stp x29, x30, [sp, -80]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE138 + .text +.LPFE138: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -64]! mov w0, 65536 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] adrp x20, .LANCHOR0 - stp x21, x22, [sp, 32] - add x22, x20, :lo12:.LANCHOR0 - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - bl ftl_malloc - str x0, [x22, 4024] - cbz x0, .L1865 - mov w26, 22084 - mov w25, 0 - mov w24, 0 - mov w23, 0 - movk w26, 0x524b, lsl 16 -.L1863: - ldr x3, [x22, 4008] - mov w1, 128 - ldr x2, [x22, 4024] - lsl w0, w23, 7 - blr x3 - mov w21, w0 - cbnz w0, .L1861 - ldr x19, [x22, 4024] - ldr w0, [x19] - cmp w0, w26 - bne .L1862 - add x0, x19, 61440 - ldr w1, [x19, 4] - ldr w0, [x0, 4092] - cmp w0, w1 - bne .L1862 - cmp w0, w24 - bls .L1862 - mov w25, w23 - mov w24, w0 -.L1862: - add w23, w23, 1 - cmp w23, 2 - bne .L1863 - cbz w24, .L1864 - add x0, x20, :lo12:.LANCHOR0 - mov x2, x19 - mov w1, 128 - ldr x3, [x0, 4008] - lsl w0, w25, 7 - blr x3 - mov w21, w0 - cbz w0, .L1859 -.L1861: add x20, x20, :lo12:.LANCHOR0 - mov w21, -1 - ldr x0, [x20, 4024] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + bl ftl_malloc + str x0, [x20, 4008] + cbz x0, .L1880 + mov w24, 22084 + mov w23, 0 + mov w22, 0 + mov w21, 0 + movk w24, 0x524b, lsl 16 +.L1878: + ldr x3, [x20, 3992] + lsl w0, w21, 7 + ldr x2, [x20, 4008] + mov w1, 128 + blr x3 + mov w19, w0 + cbnz w0, .L1876 + ldr x3, [x20, 4008] + ldr w0, [x3] + cmp w0, w24 + bne .L1877 + add x0, x3, 49152 + ldr w1, [x3, 4] + ldr w0, [x0, 16380] + cmp w0, w1 + bne .L1877 + cmp w0, w22 + bls .L1877 + mov w23, w21 + mov w22, w0 +.L1877: + cbz w21, .L1881 + cbz w22, .L1879 + ldr x4, [x20, 3992] + mov x2, x3 + lsl w0, w23, 7 + mov w1, 128 + blr x4 + mov w19, w0 + cbz w0, .L1874 +.L1876: + ldr x0, [x20, 4008] + mov w19, -1 bl kfree - str xzr, [x20, 4024] - b .L1859 -.L1864: - mov w1, 0 + str xzr, [x20, 4008] + b .L1874 +.L1881: + mov w21, 1 + b .L1878 +.L1879: + mov x0, x3 mov x2, 65536 - mov x0, x19 + mov w1, 0 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 x3, x0 + mov x0, 22084 + movk x0, 0x524b, lsl 16 + movk x0, 0x1, lsl 32 + str x0, [x3] + add x0, x3, 49152 + str w21, [x0, 16380] mov w0, -1032 - strh w0, [x19, 14] -.L1859: - mov w0, w21 + strh w0, [x3, 14] +.L1874: + mov w0, w19 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 x29, x30, [sp], 64 + hint 29 // autiasp ret -.L1865: - mov w21, -12 - b .L1859 +.L1880: + mov w19, -12 + b .L1874 .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init .align 2 .global rk_sftl_vendor_read .type rk_sftl_vendor_read, %function rk_sftl_vendor_read: - adrp x3, .LANCHOR0+4024 - ldr x4, [x3, #:lo12:.LANCHOR0+4024] - cbz x4, .L1873 - ldrh w6, [x4, 10] - add x5, x4, 16 - mov w3, 0 -.L1870: - cmp w3, w6 - bcc .L1872 -.L1873: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE139 + .text +.LPFE139: + nop + nop + mov w5, w0 + mov x0, x1 + adrp x1, .LANCHOR0+4008 + ldr x4, [x1, #:lo12:.LANCHOR0+4008] + cbz x4, .L1887 + ldrh w1, [x4, 10] + add x6, x4, 16 + mov x3, 0 +.L1885: + cmp w1, w3 + bhi .L1886 +.L1887: mov w0, -1 ret -.L1872: - ldrh w7, [x5], 8 - cmp w7, w0 - bne .L1871 +.L1886: + add x7, x3, 1 + lsl x3, x3, 3 + ldrh w8, [x6, x3] + cmp w8, w5 + bne .L1888 + hint 25 // paciasp stp x29, x30, [sp, -32]! - add x3, x4, x3, uxtw 3 - mov x0, x1 - add x29, sp, 0 + add x3, x4, x3 + mov x29, sp str x19, [sp, 16] - ldrh w19, [x3, 20] + ldrh w5, [x3, 20] ldrh w1, [x3, 18] - cmp w19, w2 - csel w19, w19, w2, ls + cmp w5, w2 add x1, x1, 1024 - uxtw x2, w19 + csel w19, w5, w2, ls add x1, x4, x1 + csel w2, w5, w2, ls bl memcpy mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L1871: - add w3, w3, 1 - b .L1870 +.L1888: + mov x3, x7 + b .L1885 .size rk_sftl_vendor_read, .-rk_sftl_vendor_read .align 2 .global rk_sftl_vendor_write .type rk_sftl_vendor_write, %function rk_sftl_vendor_write: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE140 + .text +.LPFE140: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -128]! - add x29, sp, 0 - stp x23, x24, [sp, 48] - adrp x23, .LANCHOR0 - add x3, x23, :lo12:.LANCHOR0 - stp x19, x20, [sp, 16] + mov x29, sp stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + add x22, x22, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + ldr x19, [x22, 4008] + stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] - ldr x19, [x3, 4024] - cbz x19, .L1893 + cbz x19, .L1908 add w21, w2, 63 ldrh w3, [x19, 10] - ldrh w24, [x19, 8] + ldrh w23, [x19, 8] + mov w7, w0 mov x4, x1 - mov w28, w2 + mov w27, w2 and w21, w21, -64 - add x1, x19, 16 - mov w20, 0 -.L1880: - cmp w20, w3 - bcc .L1888 + add x0, x19, 16 + mov x20, 0 +.L1895: + mov w25, w20 + cmp w3, w20 + bhi .L1902 ldrh w1, [x19, 14] - cmp w21, w1 - bhi .L1893 + cmp w1, w21 + bcc .L1908 add x3, x19, x3, uxth 3 and w21, w21, 65535 - uxtw x2, w28 - strh w0, [x3, 16] + strh w7, [x3, 16] ldrh w0, [x19, 12] strh w0, [x3, 18] - strh w28, [x3, 20] - add w0, w0, w21 + strh w27, [x3, 20] + add w2, w0, w21 sub w21, w1, w21 - strh w0, [x19, 12] - strh w21, [x19, 14] - mov x1, x4 - ldrh w0, [x3, 18] + and x0, x0, 65535 + strh w2, [x19, 12] add x0, x0, 1024 + strh w21, [x19, 14] + uxtw x2, w27 + mov x1, x4 add x0, x19, x0 bl memcpy ldrh w0, [x19, 10] add w0, w0, 1 strh w0, [x19, 10] - b .L1895 -.L1888: - ldrh w6, [x1], 8 - cmp w6, w0 - bne .L1881 - uxtw x27, w20 + b .L1910 +.L1902: + add x1, x20, 1 + lsl x20, x20, 3 + ldrh w2, [x0, x20] + cmp w2, w7 + bne .L1906 + add x20, x19, x20 add x5, x19, 1024 - add x22, x19, x27, lsl 3 - ldrh w25, [x22, 20] - add w25, w25, 63 - and w25, w25, -64 - cmp w28, w25 - bls .L1882 + ldrh w26, [x20, 20] + add w26, w26, 63 + and w26, w26, -64 + cmp w27, w26 + bls .L1896 ldrh w0, [x19, 14] - cmp w21, w0 - bhi .L1893 - add x27, x27, 2 - ldrh w22, [x22, 18] - add x27, x19, x27, lsl 3 - sub w26, w3, #1 -.L1883: - cmp w20, w26 - bcc .L1884 - add x20, x19, x20, uxtw 3 - and w22, w22, 65535 - add x0, x5, x22, uxth - uxtw x2, w28 + cmp w0, w21 + bcc .L1908 + ldrh w6, [x20, 18] + sub w24, w3, #1 +.L1897: + and w28, w6, 65535 + add x20, x20, 8 + cmp w24, w25 + bhi .L1898 + add x25, x19, x25, uxtw 3 + add x0, x5, x28, uxth + uxtw x2, w27 mov x1, x4 and w21, w21, 65535 - strh w22, [x20, 18] - add w22, w22, w21 - strh w6, [x20, 16] - strh w28, [x20, 20] + strh w7, [x25, 16] + strh w28, [x25, 18] + add w28, w21, w28 + strh w27, [x25, 20] bl memcpy - strh w22, [x19, 12] + strh w28, [x19, 12] ldrh w0, [x19, 14] sub w21, w0, w21 - add w25, w21, w25 - strh w25, [x19, 14] -.L1895: + add w26, w21, w26 + strh w26, [x19, 14] +.L1910: ldr w0, [x19, 4] - add x1, x19, 61440 - add x23, x23, :lo12:.LANCHOR0 - mov x2, x19 + add x1, x19, 49152 + ldr x3, [x22, 4000] add w0, w0, 1 str w0, [x19, 4] - str w0, [x1, 4092] + mov x2, x19 + str w0, [x1, 16380] mov w1, 128 - ldr x3, [x23, 4016] 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 + lsl w0, w23, 7 blr x3 mov w0, 0 -.L1878: +.L1893: 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 + hint 29 // autiasp ret -.L1884: - add w20, w20, 1 - str x4, [x29, 104] - add x0, x19, x20, uxtw 3 - str x5, [x29, 120] - add x27, x27, 8 - ldrh w1, [x0, 16] - strh w1, [x27, -8] - ldrh w1, [x0, 20] - strh w1, [x27, -4] - strh w22, [x27, -6] - ldrh w3, [x0, 20] - ldrh w1, [x0, 18] - add x0, x5, x22, uxtw - add w3, w3, 63 - and w3, w3, -64 +.L1898: + add w25, w25, 1 + str x5, [sp, 104] + stp w6, w7, [sp, 112] + add x1, x19, x25, uxtw 3 + str x4, [sp, 120] + ldrh w0, [x1, 16] + strh w0, [x20, 8] + ldrh w0, [x1, 20] + strh w28, [x20, 10] + strh w0, [x20, 12] + add x0, x5, x6, uxtw + ldrh w2, [x1, 20] + ldrh w1, [x1, 18] + add w2, w2, 63 + and w28, w2, -64 add x1, x5, x1 - and x2, x3, 131008 - stp w6, w3, [x29, 112] + and x2, x2, 131008 bl memcpy - ldp w6, w3, [x29, 112] - ldr x4, [x29, 104] - add w22, w22, w3 - ldr x5, [x29, 120] - b .L1883 -.L1882: - ldrh w0, [x22, 18] - uxtw x2, w28 + ldp w6, w7, [sp, 112] + ldr x5, [sp, 104] + add w6, w6, w28 + ldr x4, [sp, 120] + b .L1897 +.L1896: + ldrh w0, [x20, 18] + uxtw x2, w27 mov x1, x4 add x0, x5, x0 bl memcpy - strh w28, [x22, 20] + strh w27, [x20, 20] + b .L1910 +.L1906: + mov x20, x1 b .L1895 -.L1881: - add w20, w20, 1 - b .L1880 -.L1893: +.L1908: mov w0, -1 - b .L1878 + b .L1893 .size rk_sftl_vendor_write, .-rk_sftl_vendor_write + .section .rodata.str1.1 +.LC134: + .string "copy_from_user error %d %p %p\n" + .text .align 2 .global rk_sftl_vendor_storage_ioctl .type rk_sftl_vendor_storage_ioctl, %function rk_sftl_vendor_storage_ioctl: - stp x29, x30, [sp, -64]! + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE141 + .text +.LPFE141: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -48]! mov w0, 4096 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] mov x20, x2 - stp x21, x22, [sp, 32] + str x21, [sp, 32] mov w21, w1 - str x23, [sp, 48] bl ftl_malloc - cbz x0, .L1918 + cbz x0, .L1922 + mov w1, 30209 mov x19, x0 - mov w0, 30209 - movk w0, 0x4004, lsl 16 - cmp w21, w0 - beq .L1899 - add w0, w0, 1 - cmp w21, w0 - beq .L1900 -.L1934: + movk w1, 0x4004, lsl 16 + cmp w21, w1 + beq .L1913 + add w1, w1, 1 + cmp w21, w1 + beq .L1914 +.L1932: mov x20, -14 - b .L1898 -.L1899: -#APP -// 19 "./arch/arm64/include/asm/current.h" 1 - mrs x0, sp_el0 -// 0 "" 2 -#NO_APP - ldr w2, [x0, 44] - ldr x1, [x0, 8] - tbnz x2, 21, .L1901 - ldr x0, [x0] - tbz x0, 26, .L1920 -.L1901: - sbfx x0, x20, 0, 56 - and x0, x0, x20 -.L1902: -#APP -// 89 "./arch/arm64/include/asm/uaccess.h" 1 - adds x0, x0, 8 - csel x1, xzr, x1, hi - csinv x0, x0, xzr, cc - sbcs xzr, x0, x1 - cset x0, ls - -// 0 "" 2 -#NO_APP - cbz x0, .L1921 - sbfx x21, x20, 0, 56 -#APP -// 19 "./arch/arm64/include/asm/current.h" 1 - mrs x22, sp_el0 -// 0 "" 2 -#NO_APP - and x21, x21, x20 - ldr x0, [x22, 8] -#APP -// 249 "./arch/arm64/include/asm/uaccess.h" 1 - bics xzr, x21, x0 - csel x1, x20, xzr, eq - -// 0 "" 2 -// 257 "./arch/arm64/include/asm/uaccess.h" 1 - hint #20 -// 0 "" 2 -#NO_APP - mov x2, 8 +.L1915: mov x0, x19 - bl __arch_copy_from_user - mov x2, x0 - cbz x0, .L1904 -.L1903: - sub x0, x19, x2 - mov w1, 0 - add x0, x0, 8 - bl memset + bl kfree +.L1911: + mov x0, x20 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp + ret +.L1913: + mov x1, x20 + mov x2, 8 + bl _copy_from_user + cbz x0, .L1916 mov x2, x20 mov w1, 256 -.L1936: - adrp x0, .LC133 - add x0, x0, :lo12:.LC133 +.L1933: + adrp x0, .LC134 + add x0, x0, :lo12:.LC134 bl sftl_printk - b .L1934 -.L1920: - mov x0, x20 - b .L1902 -.L1921: - mov x2, 8 - b .L1903 -.L1905: - strh w0, [x19, 6] - and x2, x0, 65535 - add x2, x2, 8 - ldr w0, [x22, 44] - ldr x1, [x22, 8] - tbnz x0, 21, .L1922 - ldr x0, [x22] - tst x0, 67108864 - csel x0, x21, x20, ne -.L1906: -#APP -// 89 "./arch/arm64/include/asm/uaccess.h" 1 - adds x0, x0, x2 - csel x1, xzr, x1, hi - csinv x0, x0, xzr, cc - sbcs xzr, x0, x1 - cset x0, ls - -// 0 "" 2 -#NO_APP - cbz x0, .L1934 -#APP -// 19 "./arch/arm64/include/asm/current.h" 1 - mrs x0, sp_el0 -// 0 "" 2 -#NO_APP - ldr x1, [x0, 8] -#APP -// 249 "./arch/arm64/include/asm/uaccess.h" 1 - bics xzr, x21, x1 - csel x0, x20, xzr, eq - -// 0 "" 2 -// 257 "./arch/arm64/include/asm/uaccess.h" 1 - hint #20 -// 0 "" 2 -#NO_APP - mov x20, 0 - mov x1, x19 - bl __arch_copy_to_user - cbz x0, .L1898 - b .L1934 -.L1922: - mov x0, x21 - b .L1906 -.L1900: -#APP -// 19 "./arch/arm64/include/asm/current.h" 1 - mrs x0, sp_el0 -// 0 "" 2 -#NO_APP - ldr w2, [x0, 44] - ldr x1, [x0, 8] - tbnz x2, 21, .L1908 - ldr x0, [x0] - tbz x0, 26, .L1925 -.L1908: - sbfx x0, x20, 0, 56 - and x0, x0, x20 -.L1909: -#APP -// 89 "./arch/arm64/include/asm/uaccess.h" 1 - adds x0, x0, 8 - csel x1, xzr, x1, hi - csinv x0, x0, xzr, cc - sbcs xzr, x0, x1 - cset x0, ls - -// 0 "" 2 -#NO_APP - cbz x0, .L1926 - sbfx x22, x20, 0, 56 -#APP -// 19 "./arch/arm64/include/asm/current.h" 1 - mrs x23, sp_el0 -// 0 "" 2 -#NO_APP - and x22, x22, x20 - ldr x0, [x23, 8] -#APP -// 249 "./arch/arm64/include/asm/uaccess.h" 1 - bics xzr, x22, x0 - csel x1, x20, xzr, eq - -// 0 "" 2 -// 257 "./arch/arm64/include/asm/uaccess.h" 1 - hint #20 -// 0 "" 2 -#NO_APP - mov x2, 8 - mov x0, x19 - bl __arch_copy_from_user - mov x2, x0 - cbz x0, .L1911 -.L1910: - sub x0, x19, x2 - mov w1, 0 - add x0, x0, 8 - bl memset - mov x2, x20 - mov w1, 276 - b .L1936 -.L1925: - mov x0, x20 - b .L1909 -.L1926: - mov x2, 8 - b .L1910 -.L1927: - mov x0, x22 - b .L1913 -.L1929: - mov x0, x21 - b .L1914 -.L1918: - mov x20, -1 - b .L1896 -.L1904: + b .L1932 +.L1916: ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - bne .L1912 + beq .L1917 +.L1918: + mov x20, -1 + b .L1915 +.L1917: ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_sftl_vendor_read cmn w0, #1 - bne .L1905 -.L1912: - mov x20, -1 -.L1898: - mov x0, x19 - bl kfree -.L1896: + beq .L1918 + strh w0, [x19, 6] + and x0, x0, 65535 + add x21, x0, 8 mov x0, x20 - ldr x23, [sp, 48] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 - ret -.L1911: - ldr w1, [x19] - mov w0, 17745 - movk w0, 0x5652, lsl 16 - cmp w1, w0 - bne .L1912 - ldrh w21, [x19, 6] - cmp w21, 4087 - bhi .L1912 - ldr w0, [x23, 44] - add w21, w21, 8 - sxtw x21, w21 - ldr x1, [x23, 8] - tbnz x0, 21, .L1927 - ldr x0, [x23] - tst x0, 67108864 - csel x0, x22, x20, ne -.L1913: -#APP -// 89 "./arch/arm64/include/asm/uaccess.h" 1 - adds x0, x0, x21 - csel x1, xzr, x1, hi - csinv x0, x0, xzr, cc - sbcs xzr, x0, x1 - cset x0, ls - -// 0 "" 2 -#NO_APP - cbz x0, .L1929 + mov x1, x21 + bl __range_ok + cbz x0, .L1932 + bl uaccess_enable_not_uao + sbfx x1, x20, 0, 56 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x0, sp_el0 // 0 "" 2 #NO_APP - ldr x0, [x0, 8] + and x1, x1, x20 + ldr x2, [x0, 8] #APP -// 249 "./arch/arm64/include/asm/uaccess.h" 1 - bics xzr, x22, x0 - csel x1, x20, xzr, eq +// 289 "./arch/arm64/include/asm/uaccess.h" 1 + bics xzr, x1, x2 + csel x0, x20, xzr, eq // 0 "" 2 -// 257 "./arch/arm64/include/asm/uaccess.h" 1 +// 297 "./arch/arm64/include/asm/uaccess.h" 1 hint #20 // 0 "" 2 #NO_APP mov x2, x21 - mov x0, x19 - bl __arch_copy_from_user - cbz x0, .L1915 + mov x1, x19 + mov x20, 0 + bl __arch_copy_to_user + mov x21, x0 + bl uaccess_disable_not_uao + cbz x21, .L1915 + b .L1932 .L1914: - sub x21, x21, x0 - mov x2, x0 - mov w1, 0 - add x0, x19, x21 - bl memset + mov x1, x20 + mov x2, 8 + bl _copy_from_user + cbz x0, .L1920 + mov x2, x20 + mov w1, 276 + b .L1933 +.L1920: + ldr w1, [x19] + mov w0, 17745 + movk w0, 0x5652, lsl 16 + cmp w1, w0 + bne .L1918 + ldrh w2, [x19, 6] + cmp w2, 4087 + bhi .L1918 + add w2, w2, 8 + mov x1, x20 + and x2, x2, 65535 + mov x0, x19 + bl _copy_from_user + cbz x0, .L1921 mov x2, x20 mov w1, 283 - b .L1936 -.L1915: + b .L1933 +.L1921: ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_sftl_vendor_write sxtw x20, w0 - b .L1898 + b .L1915 +.L1922: + mov x20, -1 + b .L1911 .size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl .align 2 .global rk_sftl_vendor_register .type rk_sftl_vendor_register, %function rk_sftl_vendor_register: + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE142 + .text +.LPFE142: + nop + nop + hint 25 // paciasp stp x29, x30, [sp, -16]! adrp x0, .LANCHOR2 + mov x29, sp add x0, x0, :lo12:.LANCHOR2 - add x29, sp, 0 add x0, x0, 16 bl misc_register ldp x29, x30, [sp], 16 + hint 29 // autiasp ret .size rk_sftl_vendor_register, .-rk_sftl_vendor_register + .section .rodata.str1.1 +.LC135: + .string "vendor_storage" .global g_nand_ops .global g_nand_phy_info .global gc_ink_free_return_value @@ -13499,7 +14869,6 @@ rk_sftl_vendor_register: .global p_map_block_ver_table .global p_map_block_valid_page_count .global p_map_block_table - .global p_blk_mode_table .global p_valid_page_count_check_table .global p_valid_page_count_table .global g_totle_swl_count @@ -13572,193 +14941,162 @@ rk_sftl_vendor_register: .section .rodata .align 3 .set .LANCHOR1,. + 0 - .type __func__.5955, %object - .size __func__.5955, 17 -__func__.5955: + .type __func__.30, %object + .size __func__.30, 17 +__func__.30: .string "INSERT_DATA_LIST" - .zero 7 - .type __func__.5950, %object - .size __func__.5950, 17 -__func__.5950: + .type __func__.31, %object + .size __func__.31, 17 +__func__.31: .string "INSERT_FREE_LIST" - .zero 7 - .type __func__.5986, %object - .size __func__.5986, 17 -__func__.5986: + .type __func__.29, %object + .size __func__.29, 17 +__func__.29: .string "List_remove_node" - .zero 7 - .type __func__.6018, %object - .size __func__.6018, 22 -__func__.6018: + .type __func__.28, %object + .size __func__.28, 22 +__func__.28: .string "List_update_data_list" - .zero 2 - .type __func__.6125, %object - .size __func__.6125, 22 -__func__.6125: + .type __func__.22, %object + .size __func__.22, 22 +__func__.22: .string "select_l2p_ram_region" - .zero 2 - .type __func__.6448, %object - .size __func__.6448, 16 -__func__.6448: + .type __func__.14, %object + .size __func__.14, 16 +__func__.14: .string "make_superblock" - .type __func__.6624, %object - .size __func__.6624, 19 -__func__.6624: + .type __func__.8, %object + .size __func__.8, 19 +__func__.8: .string "get_new_active_ppa" - .zero 5 - .type __func__.13501, %object - .size __func__.13501, 17 -__func__.13501: + .type __func__.1, %object + .size __func__.1, 17 +__func__.1: .string "FlashEraseBlocks" - .zero 7 - .type __func__.6060, %object - .size __func__.6060, 26 -__func__.6060: + .type __func__.26, %object + .size __func__.26, 26 +__func__.26: .string "ftl_map_blk_alloc_new_blk" - .zero 6 - .type __func__.5565, %object - .size __func__.5565, 11 -__func__.5565: + .type __func__.37, %object + .size __func__.37, 11 +__func__.37: .string "FtlMemInit" - .zero 5 - .type __func__.5792, %object - .size __func__.5792, 14 -__func__.5792: + .type __func__.34, %object + .size __func__.34, 14 +__func__.34: .string "FtlBbt2Bitmap" - .zero 2 - .type __func__.6469, %object - .size __func__.6469, 18 -__func__.6469: + .type __func__.13, %object + .size __func__.13, 18 +__func__.13: .string "SupperBlkListInit" - .zero 6 - .type __func__.13458, %object - .size __func__.13458, 15 -__func__.13458: + .type __func__.3, %object + .size __func__.3, 15 +__func__.3: .string "FlashReadPages" - .zero 1 - .type __func__.6237, %object - .size __func__.6237, 14 -__func__.6237: + .type __func__.19, %object + .size __func__.19, 14 +__func__.19: .string "FtlScanSysBlk" - .zero 2 - .type __func__.5835, %object - .size __func__.5835, 11 -__func__.5835: + .type __func__.32, %object + .size __func__.32, 11 +__func__.32: .string "FtlLoadBbt" - .zero 5 - .type __func__.13477, %object - .size __func__.13477, 15 -__func__.13477: + .type __func__.2, %object + .size __func__.2, 15 +__func__.2: .string "FlashProgPages" - .zero 1 - .type __func__.6596, %object - .size __func__.6596, 25 -__func__.6596: + .type __func__.10, %object + .size __func__.10, 25 +__func__.10: .string "allocate_data_superblock" - .zero 7 - .type __func__.6637, %object - .size __func__.6637, 16 -__func__.6637: + .type __func__.7, %object + .size __func__.7, 16 +__func__.7: .string "update_vpc_list" - .type __func__.6644, %object - .size __func__.6644, 20 -__func__.6644: + .type __func__.6, %object + .size __func__.6, 20 +__func__.6: .string "decrement_vpc_count" - .zero 4 - .type __func__.6086, %object - .size __func__.6086, 31 -__func__.6086: - .string "Ftl_write_map_blk_to_last_page" - .zero 1 - .type __func__.6100, %object - .size __func__.6100, 16 -__func__.6100: + .type __func__.23, %object + .size __func__.23, 16 +__func__.23: .string "FtlMapWritePage" - .type __func__.6027, %object - .size __func__.6027, 16 -__func__.6027: + .type __func__.27, %object + .size __func__.27, 16 +__func__.27: .string "load_l2p_region" - .type __func__.6071, %object - .size __func__.6071, 15 -__func__.6071: + .type __func__.25, %object + .size __func__.25, 15 +__func__.25: .string "ftl_map_blk_gc" - .zero 1 - .type __func__.6142, %object - .size __func__.6142, 9 -__func__.6142: + .type __func__.24, %object + .size __func__.24, 31 +__func__.24: + .string "Ftl_write_map_blk_to_last_page" + .type __func__.21, %object + .size __func__.21, 9 +__func__.21: .string "log2phys" - .zero 7 - .type __func__.6357, %object - .size __func__.6357, 16 -__func__.6357: + .type __func__.16, %object + .size __func__.16, 16 +__func__.16: .string "FtlReUsePrevPpa" - .type __func__.6391, %object - .size __func__.6391, 22 -__func__.6391: + .type __func__.15, %object + .size __func__.15, 22 +__func__.15: .string "FtlRecoverySuperblock" - .zero 2 - .type __func__.6511, %object - .size __func__.6511, 14 -__func__.6511: + .type __func__.11, %object + .size __func__.11, 14 +__func__.11: .string "ftl_check_vpc" - .zero 2 - .type __func__.6215, %object - .size __func__.6215, 15 -__func__.6215: + .type __func__.20, %object + .size __func__.20, 15 +__func__.20: .string "FtlVpcTblFlush" - .zero 1 - .type __func__.6494, %object - .size __func__.6494, 21 -__func__.6494: + .type __func__.12, %object + .size __func__.12, 21 +__func__.12: .string "FtlVpcCheckAndModify" - .zero 3 - .type __func__.6617, %object - .size __func__.6617, 29 -__func__.6617: + .type __func__.9, %object + .size __func__.9, 29 +__func__.9: .string "allocate_new_data_superblock" - .zero 3 - .type __func__.5689, %object - .size __func__.5689, 13 -__func__.5689: + .type __func__.36, %object + .size __func__.36, 13 +__func__.36: .string "FtlProgPages" - .zero 3 - .type __func__.6714, %object - .size __func__.6714, 19 -__func__.6714: + .type __func__.5, %object + .size __func__.5, 19 +__func__.5: .string "FtlGcFreeTempBlock" - .zero 5 - .type __func__.6827, %object - .size __func__.6827, 23 -__func__.6827: + .type __func__.4, %object + .size __func__.4, 23 +__func__.4: .string "rk_ftl_garbage_collect" - .zero 1 - .type __func__.5717, %object - .size __func__.5717, 9 -__func__.5717: + .type __func__.35, %object + .size __func__.35, 9 +__func__.35: .string "FtlWrite" - .zero 7 - .type __func__.6289, %object - .size __func__.6289, 15 -__func__.6289: + .type __func__.18, %object + .size __func__.18, 15 +__func__.18: .string "FtlLoadSysInfo" - .zero 1 - .type __func__.6311, %object - .size __func__.6311, 18 -__func__.6311: + .type __func__.17, %object + .size __func__.17, 18 +__func__.17: .string "FtlMapTblRecovery" - .zero 6 - .type __func__.13620, %object - .size __func__.13620, 14 -__func__.13620: + .type __func__.0, %object + .size __func__.0, 14 +__func__.0: .string "FtlWriteToIDB" - .zero 2 + .zero 1 .type rk_sftl_vendor_storage_fops, %object - .size rk_sftl_vendor_storage_fops, 288 + .size rk_sftl_vendor_storage_fops, 256 rk_sftl_vendor_storage_fops: - .zero 72 + .zero 80 .xword rk_sftl_vendor_storage_ioctl .xword rk_sftl_vendor_storage_ioctl - .zero 200 + .zero 160 .data .align 3 .set .LANCHOR2,. + 0 @@ -13781,7 +15119,7 @@ power_up_flag: rkflash_vender_storage_dev: .word 255 .zero 4 - .xword .LC134 + .xword .LC135 .xword rk_sftl_vendor_storage_fops .zero 56 .bss @@ -14020,10 +15358,6 @@ FtlUpdateVaildLpnCount: .size g_VaildLpn, 4 g_VaildLpn: .zero 4 - .type p_blk_mode_table, %object - .size p_blk_mode_table, 8 -p_blk_mode_table: - .zero 8 .type g_MaxLpn, %object .size g_MaxLpn, 4 g_MaxLpn: @@ -14173,7 +15507,6 @@ p_gc_page_info: .size g_gc_bad_block_temp_num, 2 g_gc_bad_block_temp_num: .zero 2 - .zero 6 .type g_gc_bad_block_temp_tbl, %object .size g_gc_bad_block_temp_tbl, 34 g_gc_bad_block_temp_tbl: @@ -14182,7 +15515,7 @@ g_gc_bad_block_temp_tbl: .size g_gc_bad_block_gc_index, 2 g_gc_bad_block_gc_index: .zero 2 - .zero 4 + .zero 2 .type g_nand_ops, %object .size g_nand_ops, 48 g_nand_ops: @@ -14421,274 +15754,15 @@ check_vpc_table: .size gp_last_act_superblock, 8 gp_last_act_superblock: .zero 8 - .section .rodata.str1.1,"aMS",@progbits,1 -.LC0: - .string "SFTL version: 5.0.55 20200925" -.LC1: - .string "\n%s\n" -.LC2: - .string "act blk: %x %x %x %x %x %x\n" -.LC3: - .string "buf blk: %x %x %x %x %x %x\n" -.LC4: - .string "tmp blk: %x %x %x %x %x %x\n" -.LC5: - .string "gc blk: %x %x %x %x %x %x\n" -.LC6: - .string "free blk: %x %x %x\n" -.LC7: - .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" -.LC8: - .string "\n!!!!! error @ func:%s - line:%d\n" -.LC9: - .string "FLASH INFO:\n" -.LC10: - .string "Device Capacity: %d MB\n" -.LC11: - .string "FTL INFO:\n" -.LC12: - .string "g_MaxLpn = 0x%x\n" -.LC13: - .string "g_VaildLpn = 0x%x\n" -.LC14: - .string "read_page_count = 0x%x\n" -.LC15: - .string "discard_page_count = 0x%x\n" -.LC16: - .string "write_page_count = 0x%x\n" -.LC17: - .string "cache_write_count = 0x%x\n" -.LC18: - .string "l2p_write_count = 0x%x\n" -.LC19: - .string "gc_page_count = 0x%x\n" -.LC20: - .string "totle_write = %d MB\n" -.LC21: - .string "totle_read = %d MB\n" -.LC22: - .string "GSV = 0x%x\n" -.LC23: - .string "GDV = 0x%x\n" -.LC24: - .string "bad blk num = %d\n" -.LC25: - .string "free_superblocks = 0x%x\n" -.LC26: - .string "mlc_EC = 0x%x\n" -.LC27: - .string "slc_EC = 0x%x\n" -.LC28: - .string "avg_EC = 0x%x\n" -.LC29: - .string "sys_EC = 0x%x\n" -.LC30: - .string "max_EC = 0x%x\n" -.LC31: - .string "min_EC = 0x%x\n" -.LC32: - .string "PLT = 0x%x\n" -.LC33: - .string "POT = 0x%x\n" -.LC34: - .string "MaxSector = 0x%x\n" -.LC35: - .string "init_sys_blks_pp = 0x%x\n" -.LC36: - .string "sys_blks_pp = 0x%x\n" -.LC37: - .string "free sysblock = 0x%x\n" -.LC38: - .string "data_blks_pp = 0x%x\n" -.LC39: - .string "data_op_blks_pp = 0x%x\n" -.LC40: - .string "max_data_blks = 0x%x\n" -.LC41: - .string "Sys.id = 0x%x\n" -.LC42: - .string "Bbt.id = 0x%x\n" -.LC43: - .string "ACT.page = 0x%x\n" -.LC44: - .string "ACT.plane = 0x%x\n" -.LC45: - .string "ACT.id = 0x%x\n" -.LC46: - .string "ACT.mode = 0x%x\n" -.LC47: - .string "ACT.a_pages = 0x%x\n" -.LC48: - .string "ACT VPC = 0x%x\n" -.LC49: - .string "BUF.page = 0x%x\n" -.LC50: - .string "BUF.plane = 0x%x\n" -.LC51: - .string "BUF.id = 0x%x\n" -.LC52: - .string "BUF.mode = 0x%x\n" -.LC53: - .string "BUF.a_pages = 0x%x\n" -.LC54: - .string "BUF VPC = 0x%x\n" -.LC55: - .string "TMP.page = 0x%x\n" -.LC56: - .string "TMP.plane = 0x%x\n" -.LC57: - .string "TMP.id = 0x%x\n" -.LC58: - .string "TMP.mode = 0x%x\n" -.LC59: - .string "TMP.a_pages = 0x%x\n" -.LC60: - .string "GC.page = 0x%x\n" -.LC61: - .string "GC.plane = 0x%x\n" -.LC62: - .string "GC.id = 0x%x\n" -.LC63: - .string "GC.mode = 0x%x\n" -.LC64: - .string "GC.a_pages = 0x%x\n" -.LC65: - .string "WR_CHK = %x %x %x\n" -.LC66: - .string "Read Err Cnt = 0x%x\n" -.LC67: - .string "Prog Err Cnt = 0x%x\n" -.LC68: - .string "gc_free_blk_th= 0x%x\n" -.LC69: - .string "gc_merge_free_blk_th= 0x%x\n" -.LC70: - .string "gc_skip_write_count= 0x%x\n" -.LC71: - .string "gc_blk_index= 0x%x\n" -.LC72: - .string "free min EC= 0x%x\n" -.LC73: - .string "free max EC= 0x%x\n" -.LC74: - .string "GC__SB VPC = 0x%x\n" -.LC75: - .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" -.LC76: - .string "free %d. [0x%x] 0x%x 0x%x\n" -.LC77: - .string "%s\n" -.LC78: - .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" -.LC79: - .string "FtlGcRefreshBlock 0x%x\n" -.LC80: - .string "FtlGcMarkBadPhyBlk %d 0x%x\n" -.LC81: - .string "%s %p + 0x%x:" -.LC82: - .string "0x%08x," -.LC83: - .string "0x%04x," -.LC84: - .string "0x%02x," -.LC85: - .string "\n" -.LC86: - .string "%s: addr: %x is in id block!!!!!!!!!!\n" -.LC87: - .string "not free: w: d:" -.LC88: - .string "not free: w: s:" -.LC89: - .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" -.LC90: - .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" -.LC91: - .string "%s error allocating memory. return -1\n" -.LC92: - .string "FlashReadPages %x %x error_ecc_bits %d\n" -.LC93: - .string "data:" -.LC94: - .string "spare:" -.LC95: - .string "prog read error: = %x\n" -.LC96: - .string "prog read REFRESH: = %x\n" -.LC97: - .string "prog read s error: = %x %x %x\n" -.LC98: - .string "prog read d error: = %x %x %x\n" -.LC99: - .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" -.LC100: - .string "FtlBbmTblFlush error:%x\n" -.LC101: - .string "FtlBbmTblFlush error = %x error count = %d\n" -.LC102: - .string "FtlGcFreeBadSuperBlk 0x%x\n" -.LC103: - .string "decrement_vpc_count %x = %d\n" -.LC104: - .string "FtlMapWritePage error = %x \n" -.LC105: - .string "FtlMapWritePage error = %x error count = %d\n" -.LC106: - .string "region_id = %x phyAddr = %x\n" -.LC107: - .string "map_ppn:" -.LC108: - .string "load_l2p_region refresh = %x phyAddr = %x\n" -.LC109: - .string "data prev_ppa = %x error...................\n" -.LC110: - .string "spuer block %x vpn is 0\n " -.LC111: - .string "...%s enter...\n" -.LC112: - .string "FtlCheckVpc2 %x = %x %x\n" -.LC113: - .string "free blk vpc error %x = %x %x\n" -.LC114: - .string "ftl_scan_all_data = %x\n" -.LC115: - .string "scan lpa = %x ppa= %x\n" -.LC116: - .string "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC117: - .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" -.LC118: - .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" -.LC119: - .string "no ect" -.LC120: - .string "FtlVpcTblFlush error = %x error count = %d\n" -.LC121: - .string "FtlCheckVpc %x = %x %x\n" -.LC122: - .string "FtlProgPages error %x = %d\n" -.LC123: - .string "Ftlwrite decrement_vpc_count %x = %d\n" -.LC124: - .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" -.LC125: - .string "FtlWrite: ecc error:%x %x %x\n" -.LC126: - .string "FtlWrite: lpa error:%x %x\n" -.LC127: - .string "%s hash error this.id =%x page =%x pre_id =%x hash =%x hash_r =%x\n" -.LC128: - .string "%s last blk_id =%x page =%x hash error hash =%x hash_r =%x\n" -.LC129: - .string "%s scan blk_id =%x page =%x hash error hash =%x hash_r =%x\n" -.LC130: - .string "write_idblock %x %x\n" -.LC131: - .string "write_idblock fail! %x %x %x %x\n" -.LC132: - .string "%s idb buffer alloc fail\n" -.LC133: - .string "copy_from_user error %d %p %p\n" -.LC134: - .string "vendor_storage" + .ident "GCC: (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16)) 10.2.1 20201103" + .section .note.GNU-stack,"",@progbits + .section .note.gnu.property,"a" + .align 3 + .word 4 + .word 16 + .word 5 + .string "GNU" + .word 3221225472 + .word 4 + .word 3 + .align 3