From 297b60346df8beafee954a0fd7c2d64f33f3b9bc Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Sat, 11 May 2024 01:44:05 +0000 Subject: [PATCH] rtl8211F_led_control --- kernel/drivers/rkflash/rk_sftl_arm_v8.S | 19831 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 10,457 insertions(+), 9,374 deletions(-) diff --git a/kernel/drivers/rkflash/rk_sftl_arm_v8.S b/kernel/drivers/rkflash/rk_sftl_arm_v8.S index b96d59d..6e550cf 100644 --- a/kernel/drivers/rkflash/rk_sftl_arm_v8.S +++ b/kernel/drivers/rkflash/rk_sftl_arm_v8.S @@ -1,367 +1,653 @@ /* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright (c) 2018 Rockchip Electronics Co. Ltd. +/* Copyright (c) 2018-2021 Rockchip Electronics Co. Ltd. * date: 2022-08-15 */ .arch armv8-a .file "rk_sftl.c" .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.58 20220814" +.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 - add x0, x19, x2, uxth 3 - and w3, w3, 65535 - ldr x0, [x0, 32] + ldrh w3, [x19, -58] + udiv w2, w1, w3 + msub w3, w2, w3, w1 + add x0, x19, w2, uxth 3 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 @@ -369,24 +655,34 @@ 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 - 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 + msub w1, w2, w1, w0 + add x2, x3, w2, uxth 3 + 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 @@ -394,49 +690,80 @@ .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 @@ -449,28 +776,48 @@ .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 @@ -479,24 +826,45 @@ .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 @@ -506,7 +874,17 @@ .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 @@ -516,166 +894,204 @@ .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, w2, 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, w1, 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 @@ -685,93 +1101,110 @@ 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 @@ -781,124 +1214,145 @@ 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 @@ -906,16 +1360,14 @@ 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 @@ -923,492 +1375,575 @@ .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 + add x1, x1, 73 mov w2, 796 - add x1, x1, 96 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + 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_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 -.L152: - cmp w3, w2, uxth - bhi .L154 - 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 -.L155: - cmp x2, x3 - bne .L157 + 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 -.L154: - add x5, x0, x2, sxtw 1 - ldrh w5, [x5, 16] - cmp w5, w1 - beq .L153 - ldrh w5, [x0, 4] - add w5, w5, 1 - strh w5, [x0, 4] -.L153: - add w2, w2, 1 - b .L152 -.L157: - ldrh w4, [x2] - cmp w4, w5 - beq .L156 +.L200: + add x4, x0, w2, 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] -.L156: - add x2, x2, 2 - b .L155 +.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, .L158 - ldrh w2, [x0] - mov w1, 65535 - cmp w2, w1 - beq .L158 - 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 -.L161: - cmp w3, w2 - beq .L163 -.L158: + 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 -.L163: +.L210: ldrb w1, [x0, 6] add w1, w1, 1 and w1, w1, 255 strb w1, [x0, 6] - cmp w1, w4 - bne .L162 + cmp w1, w3 + bne .L209 ldrh w1, [x0, 2] strb wzr, [x0, 6] add w1, w1, 1 strh w1, [x0, 2] -.L162: +.L209: ldrb w1, [x0, 6] add x1, x1, 8 - ldrh w3, [x0, x1, lsl 1] - b .L161 + 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 .L165 + bcc .L213 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 95 + add x0, x0, :lo12:.LC9 mov w2, 2157 - add x1, x1, 120 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L165: - 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 -.L166: - cmp w8, w5, uxth - bhi .L168 - 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 .L169 - mov w0, 1 + cset w0, hi + ldp x25, x26, [sp, 64] strb w0, [x19, 9] -.L169: 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 -.L168: - 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, .L167 - strh w4, [x6] - ldrb w0, [x19, 7] - add w0, w0, 1 - strb w0, [x19, 7] -.L167: - add x5, x5, 1 - add x6, x6, 2 - b .L166 + 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 .L183 - cbz w6, .L181 + 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 -.L182: - 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 -.L176: - mov w6, 0 - b .L175 -.L181: - mov w6, 0 - b .L182 -.L183: - stp x29, x30, [sp, -16]! - add x29, sp, 0 -.L174: - ldrb w0, [x7, x9] - mov w1, w8 +.L222: + ldrb w0, [x25, x22] + mov w1, w21 bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L173 - add w6, w6, w11 - and w6, w6, 65535 -.L173: - add x9, x9, 1 - cmp w10, w9, uxth - bhi .L174 - cbz w6, .L176 - mov w0, 32768 - sdiv w6, w0, w6 -.L175: - 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, .L186 + cbz x0, .L230 ldr x2, [x1, 2560] ldr x1, [x1, 2600] sub x0, x0, x2 @@ -1418,842 +1953,1040 @@ mul x0, x0, x2 and x0, x0, 65535 ldrh w0, [x1, x0, lsl 1] +.L229: + hint 29 // autiasp ret -.L186: +.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, .L194 - 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 -.L190: +.L235: cmp w0, w3 - beq .L193 + 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 .L191 -.L193: - add x2, x2, :lo12:.LANCHOR0 - ubfiz x1, x1, 1, 16 - ldr x0, [x2, 2600] - ldrh w0, [x0, x1] - ret -.L191: + beq .L236 add w3, w3, 1 mov w1, w5 and w3, w3, 65535 - b .L190 -.L194: + 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 + ldr w3, [x19, 320] + adrp x2, .LC11 + add x2, x2, :lo12:.LC11 + mov x0, x20 mov x1, 64 - mov x0, x20 bl snprintf - add x20, x20, x0, sxtw + add x20, x20, w0, 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, 2624] + 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, 2628] + add x22, x20, w0, 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, 2632] + add x22, x22, w0, 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, 2636] + add x22, x22, w0, 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, 2640] + add x22, x22, w0, 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, 2644] + add x22, x22, w0, 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, 2648] + add x22, x22, w0, 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, 2652] + add x22, x22, w0, 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, 2656] - add x20, x20, x0, sxtw + add x22, x22, w0, 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, 2660] - add x20, x20, x0, sxtw + ldr w3, [x19, 2656] + add x22, x22, w0, 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, 2664] + ldr w3, [x19, 2660] + add x22, x22, w0, 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, w0, 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, w0, 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, 2668] + add x22, x22, w0, 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, 2672] + add x22, x22, w0, 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, 2676] + add x22, x22, w0, 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, 2680] + add x22, x22, w0, 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, 2684] + add x22, x22, w0, 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, 2688] + add x22, x22, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, 2692] + add x22, x22, w0, 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, w0, 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, 2696] + add x22, x22, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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 - mov x0, x20 + bl snprintf + add x22, x22, w0, sxtw + ldrh w3, [x19, 82] + mov x0, x22 + mov x1, 64 adrp x2, .LC50 add x2, x2, :lo12:.LC50 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 80] + add x22, x22, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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 - mov x0, x20 + bl snprintf + add x22, x22, w0, sxtw + ldrh w3, [x19, 130] + mov x0, x22 + mov x1, 64 adrp x2, .LC56 add x2, x2, :lo12:.LC56 bl snprintf - add x20, x20, x0, sxtw - ldrh w3, [x21, 128] + add x22, x22, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, w0, 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, 2788] + add x22, x22, w0, sxtw + ldrh w3, [x19, 180] + mov x0, x22 mov x1, 64 - ldr w4, [x21, 2796] adrp x2, .LC65 - ldr w3, [x21, 2792] add x2, x2, :lo12:.LC65 - mov x0, x20 bl snprintf - add x19, x20, x0, sxtw - ldr w3, [x21, 2784] + add x22, x22, w0, 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, 2808] + add x22, x22, w0, 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, 3224] + add x22, x22, w0, 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, 3226] + add x20, x22, w0, 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, 3228] + add x20, x20, w0, 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, 3232] + add x20, x20, w0, 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, w0, sxtw + ldrh w3, [x19, 3232] + adrp x2, .LC72 + add x2, x2, :lo12:.LC72 + mov x1, 64 + mov x0, x20 + bl snprintf + add x20, x20, w0, 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, w0, 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, w0, sxtw adrp x0, .LANCHOR2 ldr w0, [x0, #:lo12:.LANCHOR2] cmp w0, 1 - beq .L196 -.L201: - 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 -.L196: - ldrh w0, [x21, 176] +.L241: + ldrh w0, [x19, 176] mov w1, 65535 cmp w0, w1 - beq .L198 - 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 -.L198: + add x20, x20, w0, 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 -.L200: - cmp w4, w27 - beq .L199 - 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 .L200 -.L199: - add x23, x23, :lo12:.LANCHOR0 - adrp x21, .LC76 - add x21, x21, :lo12:.LC76 - mov w20, 0 + add x20, x20, w0, 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 -.L202: +.L247: cmp w4, w25 - beq .L201 + 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 .L201 - ldr x0, [x23, 2560] + add x20, x20, w0, sxtw + cmp w22, 4 + beq .L246 + ldr x0, [x19, 2560] ldrh w4, [x0, x24] - b .L202 + 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 .L210 + 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, w0, sxtw + sub w0, w0, w19 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L210: +.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, 2676] - ldr w1, [x0, 2688] - cmp w2, w1 - bcs .L216 - ldrh w2, [x0, 244] - mov x1, 0 - ldr x4, [x0, 2600] - str wzr, [x0, 2668] -.L217: - cmp w2, w1 - bhi .L218 - add x1, x8, :lo12:.LANCHOR0 - ldr w0, [x1, 2668] - udiv w2, w0, w2 - str w2, [x1, 2676] - ldr w2, [x1, 2672] - sub w0, w0, w2 - ldrh w2, [x1, 296] - udiv w0, w0, w2 - str w0, [x1, 2668] -.L219: - add x1, x8, :lo12:.LANCHOR0 - ldr w9, [x1, 2688] - ldr w11, [x1, 2676] - add w0, w9, 256 - cmp w0, w11 - bls .L224 - ldr w1, [x1, 2684] - 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 .L224 -.L226: + bls .L269 +.L271: mov w20, 65535 -.L225: +.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 -.L218: - ldrh w3, [x4, x1, lsl 1] - add x1, x1, 1 - ldr w5, [x0, 2668] - add w3, w3, w5 - str w3, [x0, 2668] - b .L217 -.L216: - ldr w1, [x0, 2684] - cmp w2, w1 - bls .L219 +.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, 2684] - mov w1, 0 -.L221: - ldrh w2, [x0, 244] - cmp w1, w2 - bcs .L219 - 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 .L221 -.L224: - 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 .L226 - ldr x0, [x10, 2568] - cbz x0, .L226 - 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 -.L227: - ldrh w3, [x0] - cmp w3, w10 - bne .L230 - mov w20, w2 -.L229: + 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 .L226 - ubfiz x7, x20, 1, 32 - ldrh w3, [x5, x7] - cmp w9, w3 - bcs .L231 + 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 .L231 - add x0, x8, :lo12:.LANCHOR0 - str w4, [x0, 2688] -.L231: - cmp w11, w3 - bls .L226 - add w0, w3, 128 - cmp w6, w0 - ble .L226 - add w0, w3, 256 - cmp w11, w0 - bhi .L232 - add x0, x8, :lo12:.LANCHOR0 - add w3, w3, 768 - ldr w0, [x0, 2684] - cmp w3, w0 - bcs .L226 -.L232: - add x19, x8, :lo12:.LANCHOR0 - ldrh w5, [x5, x7] - mov w2, w11 - mov w1, w20 - ldr x0, [x19, 72] + 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] - ldrh w4, [x0, x7] - adrp x0, .LC78 - add x0, x0, :lo12:.LC78 + cmp w24, w0 + bhi .L277 + add w21, w21, 768 + cmp w21, w3 + bcs .L271 +.L277: + ldr x0, [x19, 72] + 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, 3236] - b .L225 -.L230: - add w1, w1, 1 - and w1, w1, 65535 - cmp w1, w12 - bhi .L226 - ldrh w15, [x0, 4] - cbz w15, .L228 - sub x0, x0, x7 + 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 .L229 - cmp w4, w0 - bls .L228 - mov w4, w0 - mov w2, w20 -.L228: - umaddl x0, w3, w14, x7 - b .L227 + 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 .L243 - 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 -.L243: +.L288: mov w0, 0 ret .size free_data_superblock, .-free_data_superblock @@ -2261,516 +2994,652 @@ .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 .L247 + bne .L292 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 mov w2, 2792 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L247: - 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 .L248 + bne .L293 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 mov w2, 2793 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L248: +.L293: ldrh w0, [x19, 4] - cbnz w0, .L249 + cbnz w0, .L294 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 mov w2, 2794 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L249: +.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] -.L250: - cmp w0, w1 - beq .L252 - add x20, x20, :lo12:.LANCHOR0 - ldrh w1, [x19, 2] - ldrh w2, [x20, 306] - cmp w1, w2 - bcs .L256 - 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] -.L255: - add w0, w0, 1 - and w0, w0, 255 - cmp w3, w0 - bne .L254 - ldrh w0, [x19, 2] - add w0, w0, 1 - strh w0, [x19, 2] - mov w0, 0 -.L254: - add x5, x19, x0, sxtw 1 - ldrh w5, [x5, 16] - cmp w5, w4 - beq .L255 - strb w0, [x19, 6] - ldrh w0, [x19, 2] +.L295: + ldrh w20, [x19, 2] cmp w0, w2 - bne .L246 - cbz w1, .L246 + 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, w1, 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 + adrp x0, .LC9 + add x1, x1, 111 + add x0, x0, :lo12:.LC9 mov w2, 2817 - add x1, x1, 136 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L246: +.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 -.L252: - ldrb w0, [x19, 6] - add w0, w0, 1 - and w0, w0, 255 - strb w0, [x19, 6] - cmp w0, w3 - bne .L251 - 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] -.L251: +.L296: ldrb w0, [x19, 6] add x0, x0, 8 ldrh w0, [x19, x0, lsl 1] - b .L250 -.L256: + b .L295 +.L301: mov w20, 65535 - b .L246 + 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, 3240] -.L263: - ldrh w2, [x1, 236] - cmp w3, w2 - bcc .L264 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 -.L265: - ldr w1, [x0, 3280] - cmp w2, w1 - bcc .L266 +.L310: + ldr w2, [x0, 3280] + cmp w1, w2 + bcc .L311 + hint 29 // autiasp ret -.L264: - umull x4, w3, w8 - ldr x6, [x1, 3248] - ldr x7, [x1, 3256] - 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, 3248] - ldr x10, [x1, 3264] - 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, 3272] - 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 .L263 -.L266: - umull x4, w2, w6 - ldr x3, [x0, 3248] - ldr x7, [x0, 3256] - 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, w1, sxtw 2 + str x1, [x5, x3] ldrh w1, [x0, 316] - ldr x3, [x0, 3248] - add x3, x3, x4 - ldr x4, [x0, 3264] + ldr x6, [x0, 3248] + ldr x9, [x0, 3264] mul w1, w1, w2 + add x5, x6, x3 + sdiv w1, w1, w4 + add x1, x9, w1, 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 .L265 + 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, w2, 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, w2, 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 + hint 25 // paciasp ldr w7, [x2, 3280] ldr x5, [x2, 3248] -.L268: +.L314: cmp w3, w1 - bcs .L267 + bcs .L313 ubfiz x4, x3, 5, 16 mov w2, 0 add x4, x0, x4 - b .L273 -.L269: + b .L319 +.L315: add w2, w2, 1 and w2, w2, 65535 -.L273: +.L319: cmp w2, w7 - bcs .L270 + bcs .L316 umull x6, w2, w8 add x9, x5, x6 ldr x10, [x5, x6] ldr x6, [x4, 8] cmp x10, x6 - bne .L269 + bne .L315 str wzr, [x9, 16] -.L270: +.L316: add w3, w3, 1 and w3, w3, 65535 - b .L268 -.L267: + 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, 3280] - ldr x6, [x2, 3248] -.L275: - cmp w3, w1 - bcs .L274 + hint 25 // paciasp + ldr w6, [x2, 3280] + ldr x5, [x2, 3248] mov w2, 0 - b .L280 -.L276: - add w2, w2, 1 - and w2, w2, 65535 -.L280: - cmp w2, w5 - bcs .L277 - umaddl x4, w2, w7, x6 - ldr w9, [x4, 16] - cbnz w9, .L276 - 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] -.L277: +.L322: + cmp w2, w1 + bcc .L327 + hint 29 // autiasp + ret +.L323: add w3, w3, 1 and w3, w3, 65535 - b .L275 -.L274: - 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, 3284] - ldr x3, [x1, 3288] + hint 25 // paciasp + ldr x2, [x1, 3288] + ldrh w3, [x1, 3284] mov x1, 0 -.L282: - cmp w2, w1, uxth - bhi .L284 + sub x2, x2, #2 +.L330: + cmp w3, w1, uxth + bhi .L332 mov w0, 0 +.L329: + hint 29 // autiasp ret -.L284: +.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 .L282 + 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, 3284] - ldr x6, [x4, 3288] + add x3, x3, :lo12:.LANCHOR0 + and w6, w0, 65535 mov x4, 0 -.L287: + ldr x1, [x3, 3288] + ldrh w5, [x3, 3284] + sub x7, x1, #2 +.L336: and w2, w4, 65535 - cmp w2, w1 - bcc .L289 - bne .L288 - and x4, x4, 65535 - strh w0, [x6, x4, lsl 1] - add x4, x3, :lo12:.LANCHOR0 - ldrh w0, [x4, 3284] + cmp w5, w2 + bhi .L338 + bne .L337 + strh w0, [x1, x4, lsl 1] + ldrh w0, [x3, 3284] add w0, w0, 1 - strh w0, [x4, 3284] - b .L288 -.L289: + 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 .L287 -.L288: - add x0, x3, :lo12:.LANCHOR0 - mov w1, 12 - ldrh w3, [x0, 3296] - ldr x4, [x0, 3304] - umull x3, w3, w1 - add x4, x4, x3 - str w8, [x4, 4] - ldr x1, [x0, 3304] - add x4, x1, x3 - str w7, [x4, 8] - str w5, [x1, x3] - ldrh w1, [x0, 3296] - add w1, w1, 1 - strh w1, [x0, 3296] - 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 .L292 + cmp w3, w19 + beq .L341 ldrh w2, [x0, 224] - cmp w19, w2 - beq .L292 + cmp w2, w19 + beq .L341 mov w1, 65535 cmp w3, w1 - bne .L293 + bne .L342 strh w19, [x0, 226] -.L292: +.L341: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L293: +.L342: cmp w2, w1 - bne .L292 + bne .L341 strh w19, [x0, 224] - b .L292 + 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, 3320 - 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 -.L296: - cmp w0, w1, uxth - bhi .L298 - cmp w0, 15 - bhi .L297 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, 3320 - strh w1, [x19, -8] - strh w21, [x19, w0, sxtw 1] - b .L297 -.L298: + 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 .L296 -.L297: + 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, 3312] - cbz w1, .L301 - ldrh w3, [x0, 226] - mov w2, 65535 - cmp w3, w2 - bne .L301 - ldrh w2, [x0, 3354] - cmp w2, w1 - bcc .L302 - strh wzr, [x0, 3354] -.L302: add x19, x19, :lo12:.LANCHOR0 - add x0, x19, 3320 - ldrh w1, [x19, 3354] + 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, 3354] + ldrh w0, [x19, 3348] add w0, w0, 1 - strh w0, [x19, 3354] -.L301: + 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 -.L312: - cmp w26, w19 - bhi .L318 - 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] @@ -2778,374 +3647,444 @@ ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret -.L318: - cbnz w20, .L313 - 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 -.L313: - cmp w23, 4 - bne .L314 - ldr w1, [x21, x19, lsl 2] - adrp x0, .LC82 - add x0, x0, :lo12:.LC82 -.L320: +.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 .L317 - 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 -.L317: +.L366: add x19, x19, 1 - add w22, w22, w23 - b .L312 -.L314: - cmp w23, 2 - bne .L316 - ldrh w1, [x21, x19, lsl 1] - add x0, x28, :lo12:.LC83 - b .L320 -.L316: - ldrb w1, [x21, x19] - mov x0, x25 - b .L320 + 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 -.L322: - cmp x22, x24 - beq .L326 - 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, .L323 - ldr w1, [x29, 100] - cmp w27, w1 - bls .L323 - 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 -.L324: - cmp x19, x23 - bne .L325 + adrp x21, .LC87 + add x20, x20, 130 + add x21, x21, :lo12:.LC87 +.L373: + cmp x19, x22 + bne .L374 bl dump_stack -.L326: - add x21, x21, :lo12:__stack_chk_guard - mov w0, 0 - ldr x2, [x29, 104] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L333 +.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 -.L325: - 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 .L324 -.L323: - ldr w1, [x29, 100] - ldr x2, [x19, 3368] + 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 .L330 - ldrb w0, [x29, 96] - ldr x2, [x19, 3368] - 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, .L330 - str w26, [x22, -4] -.L330: - add x22, x22, 32 - b .L322 -.L333: + 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 .L338 - adrp x0, .LANCHOR0 - add x20, x0, :lo12:.LANCHOR0 - mov x19, x0 - ldrh w2, [x20, 462] - cmp w2, 1024 - beq .L338 + 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, .L340 + cbz w1, .L390 mov w0, w21 bl P2V_block_in_plane - and w22, w0, 65535 - ldr x0, [x20, 3408] + 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, 3408] + 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, 2680] + ldr w0, [x19, 2680] add w0, w0, 1 - str w0, [x20, 2680] -.L340: - 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] -.L338: + 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, .L352 - 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, 3408] + 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, 3408] + ldr x0, [x19, 3400] bl FlashEraseBlocks - ldr w0, [x21, 2680] + ldr w0, [x19, 2680] + sub w1, w20, #1 add w0, w0, 1 - str w0, [x21, 2680] -.L349: - sub w0, w20, #1 - mov w1, 65533 - cmp w1, w0, uxth - bcs .L350 - 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 -.L351: - b .L351 -.L352: +.L401: + b .L401 +.L402: mov w20, 65535 - b .L349 -.L350: + 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] -.L355: - cmp w20, w1 - beq .L359 +.L405: + cmp w1, w20 + beq .L411 mov x21, x0 ldrh w2, [x0], 2 - cbnz w2, .L356 + 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 .L357 + 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 -.L358: - b .L358 -.L357: +.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] -.L359: ldrh w0, [x19, 10] cmp w0, w20 - bhi .L361 + 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 -.L361: +.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 -.L356: +.L406: add w20, w20, 1 and w20, w20, 65535 - b .L355 + 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, 3232] - strh wzr, [x19, 3312] - stp wzr, wzr, [x1, 68] - stp wzr, wzr, [x1, 76] - str wzr, [x19, 2644] - str wzr, [x19, 2648] - stp wzr, wzr, [x2, 100] - stp wzr, wzr, [x2, 108] - str wzr, [x19, 2680] - str wzr, [x19, 2684] + 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, 3228] - str wzr, [x19, 3236] - stp wzr, w0, [x3, 88] + stp wzr, w0, [x4, -8] mov w0, -1 - stp wzr, wzr, [x3, 96] - strh w0, [x19, 226] strh w0, [x19, 224] + strh w0, [x19, 226] mov w0, 32 + 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 + str x21, [sp, 32] strh w0, [x19, 3226] - strh wzr, [x19, 3354] + 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 @@ -3154,109 +4093,109 @@ mov w0, 12 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19, 236] + ldrh w20, [x19, 236] str x0, [x19, 3304] - lsl w22, w21, 5 - lsl w21, w21, 7 + 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, w22 - bl ftl_malloc - str x0, [x19, 3440] mov w0, w21 bl ftl_malloc - str x0, [x19, 3448] - mov w0, w22 + str x0, [x19, 3440] + mov w0, w20 bl ftl_malloc - str x0, [x19, 3408] - mov w0, w22 + str x0, [x19, 3400] + mov w0, w20 bl ftl_malloc 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, 3280] - mov w0, w21 + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3448] + mov w0, w20 bl ftl_malloc str x0, [x19, 3456] - mov w0, w21 + mov w0, w20 bl ftl_malloc str x0, [x19, 3464] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3472] ldr w0, [x19, 3280] - mul w0, w21, w0 + mul w0, w20, w0 bl ftl_malloc str x0, [x19, 3256] - mov w0, w21 + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3472] + mov w0, w20 bl ftl_malloc str x0, [x19, 3480] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3488] ldr w1, [x19, 3280] mov w0, 24 mul w0, w1, w0 bl ftl_malloc str x0, [x19, 3248] - mov w0, w21 + mov w0, w20 + bl ftl_malloc + str x0, [x19, 3488] + mov w0, w20 bl ftl_malloc str x0, [x19, 3496] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3504] ldrh w0, [x19, 262] lsl w0, w0, 2 bl ftl_malloc - ldrh w21, [x19, 316] - str x0, [x19, 3512] + 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, 3512] + lsl w0, w20, 2 bl ftl_malloc str x0, [x19, 3520] - lsl w0, w21, 2 - bl ftl_malloc - str x0, [x19, 3528] ldrh w1, [x19, 316] ldr w0, [x19, 3280] mul w0, w1, w0 bl ftl_malloc str x0, [x19, 3264] ldrh w0, [x19, 246] + ubfiz w1, w0, 1, 15 ubfiz w0, w0, 1, 15 - strh w0, [x19, 3536] - and w0, w0, 65534 + strh w1, [x19, 3528] bl ftl_malloc - str x0, [x19, 3544] - ldrh w0, [x19, 3536] + str x0, [x19, 3536] + ldrh w0, [x19, 3528] add x0, x0, 547 lsr x0, x0, 9 - strh w0, [x19, 3536] + strh w0, [x19, 3528] lsl w0, w0, 9 bl ftl_malloc - ldrh w21, [x19, 246] - str x0, [x19, 3552] + 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, w21 - bl ftl_malloc - ldr w21, [x19, 332] - str x0, [x19, 72] - lsl w21, w21, 1 - mov w0, w21 + mov w0, w20 bl ftl_malloc str x0, [x19, 3568] - mov w0, w21 - bl ftl_malloc - str x0, [x19, 3576] ldrh w0, [x19, 324] lsl w0, w0, 1 bl ftl_malloc @@ -3264,27 +4203,27 @@ ldrh w0, [x19, 324] lsl w0, w0, 1 bl ftl_malloc - str x0, [x19, 3584] + str x0, [x19, 3576] ldrh w0, [x19, 324] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19, 3592] + 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, 3600] + 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, 3608] + str x0, [x19, 3600] ldr w0, [x19, 332] lsl w0, w0, 2 bl ftl_malloc - str x0, [x19, 3616] + str x0, [x19, 3608] ldrh w0, [x19, 342] lsl w0, w0, 4 bl ftl_malloc @@ -3293,7 +4232,7 @@ ldrh w0, [x19, 314] mul w0, w1, w0 bl ftl_malloc - str x0, [x19, 3624] + str x0, [x19, 3616] ldrh w1, [x19, 246] mov w0, 6 mul w0, w1, w0 @@ -3303,193 +4242,204 @@ ldrh w1, [x19, 258] add w0, w0, 31 asr w0, w0, 5 - strh w0, [x19, 3632] + strh w0, [x19, 3624] mul w0, w1, w0 lsl w0, w0, 2 bl ftl_malloc - ldrh w4, [x19, 3632] - add x5, x19, 400 - ldrh w6, [x19, 258] - mov x1, 1 - str x0, [x19, 392] - mov w2, w4 - mov x0, x20 -.L366: - cmp w1, w6 - bcc .L367 + 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 -.L368: - add x3, x3, 1 - cmp x3, x2 - bne .L369 - add x1, x0, :lo12:.LANCHOR0 - ldr x2, [x1, 3568] - cbnz x2, .L370 -.L372: + 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 -.L365: +.L415: ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L367: - ldr x3, [x19, 392] - add w1, w1, 1 - add x3, x3, x2, uxtw 2 - add w2, w2, w4 - str x3, [x5], 8 - b .L366 -.L369: - add x5, x1, x3 - add x5, x4, x5, lsl 3 - str xzr, [x5, 24] - b .L368 -.L370: - ldr x2, [x1, 3576] - cbz x2, .L372 - ldr x2, [x1, 3608] - cbz x2, .L372 - ldr x2, [x1, 3616] - cbz x2, .L372 - ldr x2, [x1, 2608] - cbz x2, .L372 - ldr x2, [x1, 3624] - cbz x2, .L372 - ldr x2, [x1, 2560] - cbz x2, .L372 - ldr x2, [x1, 392] - cbz x2, .L372 - ldr x1, [x1, 72] - cbz x1, .L372 - add x1, x0, :lo12:.LANCHOR0 - ldr x2, [x1, 3288] - cbz x2, .L372 - ldr x2, [x1, 3304] - cbz x2, .L372 - ldr x2, [x1, 3432] - cbz x2, .L372 - ldr x2, [x1, 3448] - cbz x2, .L372 - ldr x2, [x1, 3408] - cbz x2, .L372 - ldr x2, [x1, 3272] - cbz x2, .L372 - ldr x2, [x1, 3440] - cbz x2, .L372 - ldr x2, [x1, 3456] - cbz x2, .L372 - ldr x2, [x1, 3464] - cbz x2, .L372 - ldr x1, [x1, 3472] - cbz x1, .L372 - add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0, 3256] - cbz x1, .L372 - ldr x1, [x0, 3480] - cbz x1, .L372 - ldr x1, [x0, 3488] - cbz x1, .L372 - ldr x1, [x0, 3248] - cbz x1, .L372 - ldr x1, [x0, 3520] - cbz x1, .L372 - ldr x1, [x0, 3528] - cbz x1, .L372 - ldr x1, [x0, 3264] - cbz x1, .L372 - ldr x1, [x0, 2600] - cbz x1, .L372 - ldr x1, [x0, 3544] - cbz x1, .L372 - ldr x0, [x0, 352] - cbz x0, .L372 +.L417: + add x5, x4, x0, lsl 3 + add x6, x20, w2, 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, 3576] + cbz x1, .L420 ldr x1, [x0, 3584] - cbz x1, .L372 - ldr x1, [x0, 3592] - cbz x1, .L372 - ldr x0, [x0, 3600] - cbz x0, .L372 + cbz x1, .L420 + ldr x0, [x0, 3592] + cbz x0, .L420 mov w0, 0 - b .L365 + 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, 3632] - 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 -.L470: - ldrh w0, [x23, x19] +.L518: + ldrh w0, [x22, x19, lsl 1] mov w1, 65535 cmp w0, w1 - beq .L467 - add x1, x21, :lo12:.LANCHOR0 - ldrh w1, [x1, 302] + beq .L515 + ldrh w1, [x23, 302] cmp w1, w0 - bhi .L469 - mov w2, 74 - mov x1, x20 + bhi .L517 + mov x1, x21 mov x0, x24 + mov w2, 74 bl sftl_printk -.L469: - 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 .L470 -.L467: +.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] @@ -3497,139 +4447,159 @@ 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 -.L479: +.L526: ldrh w1, [x19, 6] cmp w1, w0 - bhi .L483 + 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] -.L484: + ldrh w25, [x21] +.L531: ldrh w0, [x19, 10] cmp w0, w20 - bhi .L488 - 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 -.L483: +.L530: ubfiz x1, x0, 2, 16 ldr w2, [x20, x1] mov w1, 0 ubfx x2, x2, 10, 16 -.L480: +.L527: ldrh w3, [x19, 10] cmp w3, w1 - bhi .L482 + bhi .L529 add w0, w0, 1 and w0, w0, 65535 - b .L479 -.L482: + b .L526 +.L529: ubfiz x3, x1, 1, 16 ldrh w4, [x22, x3] cmp w4, w2 - bne .L481 - cbz w2, .L481 + bne .L528 + cbz w2, .L528 ldrh w4, [x21, x3] add w4, w4, 1 strh w4, [x21, x3] -.L481: +.L528: add w1, w1, 1 and w1, w1, 65535 - b .L480 -.L488: - ubfiz x0, x20, 1, 16 - ldrh w1, [x21, x0] - cmp w24, w1 - bls .L485 - add x25, x22, x0 - ldrh w0, [x22, x0] - cbnz w0, .L486 -.L487: - add w20, w20, 1 - and w20, w20, 65535 - b .L484 -.L485: - cbnz w1, .L487 - add x25, x22, x0 - ldrh w0, [x22, x0] - cbz w0, .L487 -.L489: + 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 .L487 -.L490: - mov w24, 0 - b .L489 -.L486: - mov w23, w20 - cbz w1, .L490 - mov w24, w1 - b .L487 +.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, 3576] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldr x0, [x19, 3568] ldr w2, [x19, 332] lsl w2, w2, 1 bl ftl_memset @@ -3637,92 +4607,99 @@ mov w1, 255 ldrh w2, [x19, 314] mul w2, w2, w0 - ldr x0, [x19, 3624] + ldr x0, [x19, 3616] bl ftl_memset - mov x0, x19 - mov w1, 0 - mov w5, -1 -.L500: - ldrh w2, [x0, 342] - cmp w2, w1 - bhi .L501 - mov w2, -1 - strh w2, [x0, 3642] - strh w2, [x0, 3640] - add x1, x0, 3640 - ldr w2, [x0, 332] - strh w2, [x0, 3650] - mov w2, -3902 - strh w2, [x0, 3644] - ldrh w2, [x0, 3704] - strh w2, [x0, 3648] - ldrh w2, [x0, 340] - strh w2, [x0, 3646] - ldr x2, [x0, 3568] - str x2, [x0, 3656] - ldr x2, [x0, 3616] - str x2, [x0, 3664] - ldr x2, [x0, 3576] - str x2, [x0, 3672] - ldr x0, [x0, 3608] - 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 -.L501: - 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, 3624] - 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 .L500 +.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, 3706] + mov w1, 0 + strh w0, [x19, 3698] mov w0, -1 - str w0, [x19, 3716] + str w0, [x19, 3708] ldr x0, [x19, 352] - ldrh w2, [x19, 324] strh wzr, [x19, 348] - str wzr, [x19, 3708] + ldrh w2, [x19, 324] + str wzr, [x19, 3700] + str wzr, [x19, 3704] lsl w2, w2, 1 - str wzr, [x19, 3712] bl ftl_memset ldr x0, [x19, 2600] mov w1, 0 ldrh w2, [x19, 246] lsl w2, w2, 1 bl ftl_memset - ldr x0, [x19, 3544] + 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 @@ -3730,134 +4707,160 @@ 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] -.L506: +.L551: ldrh w0, [x19, 244] - cmp w20, w0 - bcs .L513 - ldrh w8, [x19, 236] - mov x6, 0 - ldrh w7, [x19, 306] - mov w5, 0 - b .L514 -.L508: - 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, .L507 - add w5, w5, w7 - and w5, w5, 65535 -.L507: - add x6, x6, 1 -.L514: - cmp w8, w6, uxth - bhi .L508 - cbz w5, .L509 - mov w0, 32768 - sdiv w5, w0, w5 -.L510: + 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 .L511 + beq .L556 ldrh w0, [x19, 80] cmp w0, w20 - beq .L511 + beq .L556 ldrh w0, [x19, 128] cmp w0, w20 - beq .L511 + beq .L556 ldr x1, [x19, 72] ubfiz x0, x20, 1, 16 ldrh w0, [x1, x0] - cbnz w0, .L512 - 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 -.L511: +.L556: add w20, w20, 1 and w20, w20, 65535 - b .L506 -.L509: + b .L551 +.L554: ldr x1, [x19, 72] ubfiz x0, x20, 1, 16 - mov w2, -1 - strh w2, [x1, x0] - b .L510 -.L512: + strh w26, [x1, x0] + b .L555 +.L557: add w21, w21, 1 mov w0, w20 and w21, w21, 65535 bl INSERT_DATA_LIST - b .L511 -.L513: + 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 .L515 + ble .L560 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 198 + add x0, x0, :lo12:.LC9 mov w2, 2219 - add x1, x1, 248 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L515: +.L560: mov w0, 0 - ldr x23, [sp, 48] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 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 - add x29, sp, 0 + mov x29, sp str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 ldr x0, [x19, 3288] - ldrh w2, [x19, 310] strh wzr, [x19, 3284] + ldrh w2, [x19, 310] strh wzr, [x19, 3296] lsl w2, w2, 1 bl ftl_memset @@ -3870,401 +4873,457 @@ 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 - add x29, sp, 0 + mov x29, sp stp x19, x20, [sp, 16] - mov x20, x0 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + mov x19, x0 str x21, [sp, 32] mov w21, w1 mov w1, 255 bl ftl_memset - adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 + ldr x2, [x20, 3352] mov w1, w21 - ldr x2, [x0, 3360] - mov x0, x20 + mov x0, x19 blr x2 and w0, w0, 65535 cmp w0, 50 - bls .L520 + bls .L565 + mov x0, x19 mov w2, 256 mov w1, 255 - mov x0, x20 bl ftl_memset mov w0, 0 -.L520: - add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x19, 14] +.L565: + ldrh w1, [x20, 14] cmp w1, 4 - bne .L524 + bne .L570 mov x1, 0 -.L522: + 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 .L523 -.L524: + bhi .L567 +.L570: ldp x19, x20, [sp, 16] ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L523: - ldrh w2, [x20, x1, lsl 1] - lsr w2, w2, 1 - strh w2, [x20, x1, lsl 1] - add x1, x1, 1 - b .L522 .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 - add x29, sp, 0 + 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: - 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 + 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] - 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] -.L529: - cmp x24, x19 - bne .L542 - add x21, x21, :lo12:__stack_chk_guard - mov w0, 0 - ldr x2, [x29, 104] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L543 + 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 -.L542: +.L588: ldr x0, [x19, 8] - cbz x0, .L530 + cbz x0, .L576 ldr x0, [x19, 16] - cbnz x0, .L531 -.L530: + cbnz x0, .L577 +.L576: + mov x1, x22 + mov x0, x24 mov w2, 96 - mov x1, x23 - mov x0, x25 bl sftl_printk -.L531: +.L577: ldr w0, [x19, 4] - add x2, x29, 96 - add x1, x29, 100 + add x2, sp, 80 + add x1, sp, 84 bl l2p_addr_tran.isra.0 - ldr w0, [x29, 96] + ldr w0, [sp, 80] cmp w0, 3 - bls .L532 + bls .L578 mov w0, -1 str w0, [x19] -.L533: +.L579: add x19, x19, 32 - b .L529 -.L532: - ldr x20, [x19, 8] - tst x20, 63 - beq .L534 - add x1, x22, :lo12:.LANCHOR0 - ldr x20, [x1, 3496] -.L534: - add x28, x22, :lo12:.LANCHOR0 - ldr w1, [x29, 100] + 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] - mov x2, x20 - ldr x4, [x28, 3384] + ldr x4, [x20, 3376] blr x4 str w0, [x19] - ldrh w0, [x28, 14] + ldrh w0, [x20, 14] cmp w0, 4 - bne .L536 - ldrb w0, [x29, 96] - add x2, x20, 2048 - ldr x4, [x28, 3384] - ldr w1, [x29, 100] + bne .L582 + ldrb w0, [sp, 80] + add x2, x21, 2048 + ldr x4, [x20, 3376] ldr x3, [x19, 16] - add w1, w26, w1 + ldr w1, [sp, 84] add x3, x3, 8 + add w1, w25, w1 blr x4 cmn w0, #1 - beq .L537 + beq .L583 ldr x1, [x19, 16] ldr w2, [x1, 12] cmn w2, #1 - bne .L538 + bne .L584 ldr w2, [x1, 8] cmn w2, #1 - bne .L538 + bne .L584 ldr w1, [x1] cmn w1, #1 - beq .L538 -.L537: - mov w1, -1 - str w1, [x19] -.L538: + beq .L584 +.L583: + mov w0, -1 +.L615: + str w0, [x19] + b .L585 +.L584: ldr w1, [x19] cmn w1, #1 - beq .L539 + beq .L585 cmp w0, 256 - bne .L539 - str w0, [x19] -.L539: + beq .L615 +.L585: ldr w3, [x19] cmp w3, 256 ccmn w3, #1, 4, ne - bne .L536 + bne .L582 ldr w1, [x19, 4] - adrp x0, .LC92 - ldr w2, [x29, 100] - add x0, x0, :lo12:.LC92 + adrp x0, .LC93 + ldr w2, [sp, 84] + add x0, x0, :lo12:.LC93 bl sftl_printk ldr x1, [x19, 8] - cbz x1, .L541 - mov w3, 4 - adrp x0, .LC93 - mov w2, w3 - add x0, x0, :lo12:.LC93 - bl rknand_print_hex -.L541: - ldr x1, [x19, 16] - cbz x1, .L536 + cbz x1, .L587 mov w3, 4 adrp x0, .LC94 mov w2, w3 add x0, x0, :lo12:.LC94 bl rknand_print_hex -.L536: - add x1, x22, :lo12:.LANCHOR0 - ldr x0, [x1, 3496] - cmp x20, x0 - bne .L533 +.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 x20, x0 - beq .L533 - ldrh w2, [x1, 262] - mov x1, x20 + cmp x0, x21 + beq .L579 + ldrh w2, [x20, 262] + mov x1, x21 lsl w2, w2, 9 bl ftl_memcpy - b .L533 -.L543: + 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 x27, x28, [sp, 80] - ldp x29, x30, [sp], 112 + 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, 3720 - mov x25, x23 + add x23, x20, 360 + stp x25, x26, [sp, 64] + mov w25, -1 mov w26, 61664 - ldr x1, [x0, 3456] - ldr x24, [x0, 3520] - stp x1, x24, [x23, 8] -.L570: - ldrh w0, [x19, 258] - cmp w21, w0 - bcc .L575 + 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 -.L575: - ldrh w20, [x19, 302] - mov w0, -1 - strh w0, [x22] -.L572: - 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 .L573 - 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 .L572 + beq .L619 ldrh w0, [x24] cmp w0, w26 - bne .L572 - strh w20, [x22] -.L573: - add w21, w21, 1 - add x22, x22, 2 - b .L570 + 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 .L581 - ldrh w19, [x2, 308] -.L582: 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, 3504] - 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 .L583 + bne .L631 mov w23, 0 - mov w25, 2 -.L584: - cmp w23, w19 - ble .L587 -.L583: - add x21, x21, :lo12:__stack_chk_guard - mov w0, w19 - ldr x2, [x29, 184] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L588 - bl __stack_chk_fail -.L581: - ldrh w19, [x2, 306] - b .L582 -.L587: - 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 .L585 - ldr w0, [x29, 124] + bne .L632 + ldr w0, [sp, 72] cmn w0, #1 - bne .L585 - ldr w0, [x29, 88] - cmn w0, #1 - beq .L585 + beq .L632 sub w19, w20, #1 sxth w19, w19 - b .L584 -.L585: +.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 .L584 -.L588: + 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, 3616] - add x25, x25, 288 ldr w2, [x19, 332] - strh wzr, [x19, 3704] - 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, 3568] + ldr x0, [x19, 3560] mov w1, 0 ldr w2, [x19, 332] lsl w2, w2, 1 bl ftl_memset - ldr x0, [x19, 3592] + ldr x0, [x19, 3584] mov w1, 0 ldrh w2, [x19, 324] lsl w2, w2, 2 @@ -4274,760 +5333,779 @@ ldrh w2, [x19, 324] lsl w2, w2, 1 bl ftl_memset + add x0, x19, 2696 mov w2, 16 mov w1, 255 - add x0, x19, 2696 bl ftl_memset - ldrh w24, [x19, 244] -.L594: + ldrh w23, [x19, 244] +.L642: ldrh w0, [x19, 246] - cmp w0, w24 - bls .L634 - ldrh w9, [x19, 236] - mov x5, 0 - ldrh w8, [x19, 316] - mov w20, 0 - add x7, x19, 264 - mov w6, 4 - b .L635 -.L596: - 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, .L595 - ldr x0, [x19, 3432] - 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, 3432] + str w20, [x0, 4] + ldr x1, [x19, 3424] ldr x0, [x19, 3256] add x1, x1, x2 ldr x2, [x19, 3264] str x0, [x1, 8] - mul w0, w20, w8 - add w20, w20, 1 - and w20, w20, 65535 - sdiv w0, w0, w6 - add x0, x2, x0, sxtw 2 + mul w0, w22, w27 + add w22, w22, 1 + and w22, w22, 65535 + sdiv w0, w0, w25 + add x0, x2, w0, sxtw 2 str x0, [x1, 16] -.L595: - add x5, x5, 1 -.L635: - cmp w9, w5, uxth - bhi .L596 - cbnz w20, .L597 -.L633: - add w24, w24, 1 - and w24, w24, 65535 - b .L594 -.L597: - ldr x0, [x19, 3432] - 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, 2696 + mov x25, 0 bl FlashReadPages -.L632: - ldr x0, [x19, 3432] - 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 .L600 + bne .L648 mov w28, 16 - mov w3, 65535 -.L602: - ldr x0, [x19, 3432] +.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, 3432] - 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, 3432] - bne .L599 + ldr x0, [x19, 3424] + bne .L647 mov w1, -1 - str w1, [x0, x23] - ldr x0, [x19, 3432] - ldr w0, [x0, x23] + str w1, [x0, x27] + ldr x0, [x19, 3424] + ldr w0, [x0, x27] cmp w0, w1 - bne .L600 -.L601: - mov w1, 1 - b .L672 -.L599: - ldr w0, [x0, x23] - cmn w0, #1 - bne .L600 - sub w28, w28, #1 - ands w28, w28, 65535 - bne .L602 - b .L601 -.L600: + beq .L649 +.L648: ldr w1, [x19, 2660] - ldr w0, [x26, 4] + ldr w0, [x21, 4] cmn w1, #1 - beq .L603 + beq .L697 cmp w1, w0 - bhi .L604 -.L603: + bhi .L651 +.L697: cmn w0, #1 - beq .L604 + beq .L651 add w1, w0, 1 str w1, [x19, 2660] -.L604: - ldrh w1, [x26] +.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 .L606 - bhi .L607 - mov w0, 61574 - cmp w1, w0 - beq .L608 -.L605: - add x23, x23, 32 - cmp x20, x23 - bne .L632 - b .L633 -.L607: - mov w0, 61634 - cmp w1, w0 - beq .L609 + 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 .L605 + bne .L656 mov w1, 0 -.L672: - mov w0, w22 +.L721: + mov w0, w20 bl FtlFreeSysBlkQueueIn - b .L605 -.L609: - ldrh w1, [x19, 3704] + b .L656 +.L652: + ldrh w1, [x19, 3696] ldr w0, [x19, 332] cmp w1, w0 - bls .L611 - adrp x0, .LC8 + bls .L658 + mov x1, x24 + mov x0, x26 mov w2, 1232 - mov x1, x25 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L611: - ldr w3, [x19, 332] - ldrh w1, [x19, 3704] - and w2, w3, 65535 - ldr x4, [x19, 3616] - sub w0, w2, #1 - sub w2, w2, w1 - sub w2, w2, #1 - sxth x0, w0 - sxth w2, w2 -.L612: - cmp w0, w2 - bgt .L618 - tbz w0, #31, .L652 - b .L605 -.L618: - sxtw x5, w0 - ldr w8, [x26, 4] - lsl x6, x5, 2 - ldr w7, [x4, x6] - cmp w8, w7 - bls .L613 - ldr w2, [x4] - cbnz w2, .L614 - cmp w3, w1 - beq .L614 - add w1, w1, 1 - strh w1, [x19, 3704] -.L614: - mov w1, 0 -.L615: - cmp w1, w0 - bne .L616 - ldr x1, [x19, 3616] - ldr w2, [x26, 4] - str w2, [x1, x6] - ldr x1, [x19, 3568] - strh w22, [x1, x5, lsl 1] - tbnz w0, #31, .L605 - ldrh w1, [x19, 3704] - ldr w2, [x19, 332] - sub w2, w2, w1 - sub w2, w2, #1 - cmp w0, w2, sxth - bgt .L605 -.L652: - add w1, w1, 1 - strh w1, [x19, 3704] - ldr x1, [x19, 3616] - ldr w2, [x26, 4] - str w2, [x1, x0, lsl 2] - ldr x1, [x19, 3568] -.L670: - strh w22, [x1, x0, lsl 1] - b .L605 -.L616: - ldr x4, [x19, 3616] - 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, 3568] - add x4, x3, x2 - ldrh w4, [x4, 2] - strh w4, [x3, x2] - b .L615 -.L613: +.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 .L612 -.L608: + 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 .L621 - adrp x0, .LC8 - mov w2, 1273 - mov x1, x25 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L621: - ldrh w3, [x19, 324] - ldrh w1, [x19, 348] - sub w2, w3, #1 - ldr x4, [x19, 3592] - sxth x0, w2 - sub w2, w2, w1 -.L622: - cmp w0, w2 - ble .L627 - sxtw x5, w0 - ldr w8, [x26, 4] - lsl x6, x5, 2 - ldr w7, [x4, x6] - cmp w8, w7 - bls .L623 - ldr w2, [x4] - cbnz w2, .L624 - cmp w3, w1 - beq .L624 - add w1, w1, 1 - strh w1, [x19, 348] -.L624: - mov w1, 0 -.L625: - cmp w1, w0 - bne .L626 - ldr x1, [x19, 3592] - ldr w2, [x26, 4] - str w2, [x1, x6] - ldr x1, [x19, 352] - strh w22, [x1, x5, lsl 1] -.L627: - tbnz w0, #31, .L605 - ldrh w1, [x19, 324] - ldrh w2, [x19, 348] - sub w1, w1, #1 - sub w1, w1, w2 - cmp w0, w1, sxth - bgt .L605 - ldr x1, [x19, 3592] - add w2, w2, 1 - strh w2, [x19, 348] - ldr w2, [x26, 4] - str w2, [x1, x0, lsl 2] - ldr x1, [x19, 352] - b .L670 -.L626: - ldr x4, [x19, 3592] - 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 .L625 -.L623: - sub w0, w0, #1 - sxth x0, w0 - b .L622 -.L606: - ldrh w2, [x27] - mov w1, 65535 - cmp w2, w1 - bne .L629 - strh w22, [x27] -.L671: - str w0, [x27, 8] - b .L605 -.L629: - ldrh w0, [x27, 4] - cmp w0, w1 - beq .L630 - mov w1, 1 - bl FtlFreeSysBlkQueueIn -.L630: - ldr w0, [x26, 4] - ldr w1, [x27, 8] - cmp w1, w0 - bcs .L631 - ldrh w0, [x27] - strh w0, [x27, 4] - strh w22, [x27] - ldr w0, [x26, 4] - b .L671 -.L631: - strh w22, [x27, 4] - b .L605 -.L634: - ldr x1, [x19, 3568] - ldrh w0, [x1] - cbz w0, .L636 -.L639: - add x0, x21, :lo12:.LANCHOR0 - ldr x1, [x0, 352] - ldrh w2, [x1] - cbz w2, .L637 -.L638: - add x21, x21, :lo12:.LANCHOR0 - ldrh w1, [x21, 3704] - ldr w0, [x21, 332] - cmp w1, w0 bls .L668 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 1398 - add x1, x1, 288 - add x0, x0, :lo12:.LC8 + mov x1, x24 + mov x0, x26 + mov w2, 1273 bl sftl_printk .L668: - ldp x19, x20, [sp, 16] + ldrh w3, [x19, 324] + 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 .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] + 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] + 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 +.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, .L684 +.L685: + ldrh w1, [x19, 3696] + ldr w0, [x19, 332] + cmp w1, w0 + bls .L716 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 231 + add x0, x0, :lo12:.LC9 + mov w2, 1398 + bl sftl_printk +.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 -.L636: - ldrh w0, [x19, 3704] - cbz w0, .L639 - ldr w2, [x19, 332] +.L683: + ldrh w0, [x19, 3696] + cbz w0, .L686 + ldr w3, [x19, 332] mov w0, 0 -.L640: - cmp w0, w2 - bcs .L639 - ldrh w3, [x1, w0, sxtw 1] - cbz w3, .L641 - mov w1, w0 - add x2, x21, :lo12:.LANCHOR0 -.L642: - ldr w3, [x2, 332] - cmp w1, w3 - bcs .L639 - ldr x5, [x2, 3568] - 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, 3616] - ldr w6, [x5, x6, lsl 2] - str w6, [x5, x3, lsl 2] - ldr x3, [x2, 3568] - strh wzr, [x3, x4] - b .L642 -.L641: - add w0, w0, 1 - sxth w0, w0 - b .L640 -.L637: - ldrh w2, [x0, 348] - cbz w2, .L638 - 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 -.L647: - mov w6, w0 +.L692: + mov w3, w0 cmp w0, w2 - bge .L638 - ldrh w3, [x1, w0, sxtw 1] - cbz w3, .L648 - add x1, x21, :lo12:.LANCHOR0 -.L649: - ldrh w2, [x1, 324] - cmp w0, w2 - bge .L638 - 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, 3592] - ldr w5, [x4, x5, lsl 2] - str w5, [x4, x2, lsl 2] - ldr x2, [x1, 352] - strh wzr, [x2, x3] - b .L649 -.L648: + b .L693 +.L717: add w0, w0, 1 sxth w0, w0 - b .L647 + 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, 3720 - mov w24, 61649 - ldr x0, [x23, 3456] - ldr x22, [x23, 3520] - 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 -.L674: - ldrh w0, [x23, 302] +.L723: + ldrh w0, [x19, 302] sub w0, w0, #16 cmp w20, w0 - ble .L677 + 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 .L675 - ldr w0, [x21, 4] - mov w2, 1 - mov w1, w2 - add w0, w0, 1 - str w0, [x21, 4] - mov x0, x21 - bl FlashReadPages -.L675: - ldr w0, [x21] - cmn w0, #1 - beq .L676 - ldrh w0, [x22] - cmp w0, w24 - bne .L676 - ldr w1, [x22, 4] - str w1, [x23, 368] - strh w20, [x23, 360] - ldrh w1, [x22, 8] - strh w1, [x23, 364] -.L677: - 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 .L691 - ldrh w1, [x21, 364] + beq .L742 + ldrh w1, [x19, 364] cmp w1, w0 - beq .L681 - add x0, x21, 3720 + 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, 3720] + ldr w0, [x19, 3712] cmn w0, #1 - beq .L681 - ldrh w1, [x22] + beq .L732 + ldrh w1, [x21] mov w0, 61649 cmp w1, w0 - bne .L681 - ldr w1, [x21, 368] - ldr w0, [x22, 4] + bne .L732 + ldr w1, [x19, 368] + ldr w0, [x21, 4] cmp w0, w1 - bls .L681 - str w0, [x21, 368] - ldrh w1, [x21, 364] - ldrh w0, [x22, 8] - strh w1, [x21, 360] - strh w0, [x21, 364] -.L681: - 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, 3720 - 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] -.L683: - tbz w21, #31, .L686 + 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 -.L685: - 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 .L688 - ldr w2, [x1, 232] - cmp w0, w2 - beq .L688 - ldrh w1, [x1, 246] + beq .L739 + ldrh w1, [x19, 246] lsr w1, w1, 2 cmp w2, w1 - bcs .L688 + bcs .L739 cmp w0, w1 - bcs .L688 + bcs .L739 bl FtlSysBlkNumInit -.L688: - add x19, x19, :lo12:.LANCHOR0 - mov w20, 0 - add x21, x19, 392 -.L689: +.L739: + add x21, x19, 360 + mov x20, 0 +.L740: ldrh w0, [x19, 258] - cmp w20, w0 - bcc .L690 + cmp w0, w20 + bhi .L741 mov w0, 0 -.L673: +.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 -.L676: - sub w20, w20, #1 - and w20, w20, 65535 - b .L674 -.L686: - 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, 3456] + ldr x0, [x19, 3448] + mov w1, w2 str x0, [x23, 8] mov x0, x23 bl FlashReadPages ldr w0, [x23] cmn w0, #1 - beq .L684 - ldrh w0, [x22] - cmp w0, w24 - beq .L685 -.L684: - sub w21, w21, #1 - sxth w21, w21 - b .L683 -.L690: - ldrh w2, [x19, 3632] - ldr x0, [x19, 3728] - 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 .L689 -.L691: + b .L740 +.L742: mov w0, -1 - b .L673 + 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 %x %x\n" +.LC99: + .string "prog read d error: = %x %x %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 -.L704: - cmp x20, x23 - bne .L718 - adrp x20, .LC95 - adrp x24, .LC96 - add x20, x20, :lo12:.LC95 - add x24, x24, :lo12:.LC96 -.L719: - cmp x19, x23 - beq .L712 - add x0, x21, :lo12:.LANCHOR0 - ldr w2, [x29, 108] - ldr x1, [x0, 3496] - str wzr, [x1] - ldr x1, [x0, 3512] - str wzr, [x1] - ldr w1, [x19, 4] - str w1, [x29, 124] - ldr x1, [x0, 3496] - ldr x0, [x0, 3512] - 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 .L720 + 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] -.L720: - ldr w25, [x29, 120] - cmp w25, 256 - bne .L721 + 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] -.L721: - ldr x0, [x19, 16] - cbz x0, .L722 - add x1, x21, :lo12:.LANCHOR0 - ldr w2, [x0] - ldr x1, [x1, 3512] - ldr w4, [x1] + str w24, [x19] +.L772: + ldr x1, [x19, 16] + cbz x1, .L773 + ldr x0, [x20, 3504] + ldr w2, [x1] + ldr w4, [x0] cmp w2, w4 - bne .L723 - ldr w5, [x0, 8] - ldr w3, [x1, 8] + bne .L774 + ldr w3, [x0, 8] + ldr w5, [x1, 8] cmp w5, w3 - beq .L722 -.L723: - ldr w3, [x0, 4] - adrp x0, .LC97 - ldr w5, [x1, 4] - add x0, x0, :lo12:.LC97 - ldr w1, [x19, 4] - bl sftl_printk - mov w0, -1 - str w0, [x19] -.L722: - ldr x0, [x19, 8] - cbz x0, .L724 - add x1, x21, :lo12:.LANCHOR0 - ldr w2, [x0] - ldr x1, [x1, 3496] - ldr w4, [x1] - cmp w2, w4 - bne .L725 - ldr w5, [x0, 2048] - ldr w3, [x1, 2048] - cmp w5, w3 - beq .L724 -.L725: - ldr w3, [x0, 4] + beq .L773 +.L774: + ldr w5, [x0, 4] adrp x0, .LC98 - ldr w5, [x1, 4] + ldr w3, [x1, 4] add x0, x0, :lo12:.LC98 ldr w1, [x19, 4] bl sftl_printk mov w0, -1 str w0, [x19] -.L724: - add x19, x19, 32 - b .L719 -.L718: - ldr x0, [x20, 8] - cbz x0, .L705 - ldr x0, [x20, 16] - cbnz x0, .L706 -.L705: - mov w2, 148 - mov x1, x24 - mov x0, x25 +.L773: + ldr x1, [x19, 8] + cbz x1, .L775 + ldr x0, [x20, 3488] + ldr w2, [x1] + ldr w4, [x0] + cmp w2, w4 + bne .L776 + ldr w3, [x0, 2048] + ldr w5, [x1, 2048] + cmp w5, w3 + beq .L775 +.L776: + ldr w5, [x0, 4] + adrp x0, .LC99 + ldr w3, [x1, 4] + add x0, x0, :lo12:.LC99 + ldr w1, [x19, 4] bl sftl_printk -.L706: - 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 .L707 -.L743: mov w0, -1 - str w0, [x20] - b .L708 -.L707: - cbnz w0, .L709 - ldr w0, [x29, 116] + str w0, [x19] +.L775: + 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 .L709 + bls .L760 adrp x20, .LANCHOR1 add x20, x20, :lo12:.LANCHOR1 - adrp x21, .LC86 - add x20, x20, 320 - add x21, x21, :lo12:.LC86 - b .L741 -.L711: + 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 .L778 + bl __stack_chk_fail +.L762: ldr w2, [x19, 4] mov w0, -1 str w0, [x19] @@ -5038,198 +6116,189 @@ 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 -.L741: - cmp x19, x23 - bne .L711 - bl dump_stack -.L712: - add x22, x22, :lo12:__stack_chk_guard - mov w0, 0 - ldr x2, [x29, 152] - ldr x1, [x22] - eor x1, x2, x1 - cbz x1, .L727 - bl __stack_chk_fail -.L709: - ldr x1, [x20, 8] + b .L761 +.L760: + ldr x1, [x21, 8] tst x1, 63 - beq .L728 - add x0, x21, :lo12:.LANCHOR0 - ldr x27, [x0, 3496] - cmp x1, x27 - beq .L713 - ldrh w2, [x0, 262] - mov x0, x27 + beq .L779 + ldr x24, [x20, 3488] + cmp x24, x1 + beq .L764 + ldrh w2, [x20, 262] + mov x0, x24 lsl w2, w2, 9 bl ftl_memcpy -.L713: - add x0, x21, :lo12:.LANCHOR0 - ldr w1, [x29, 116] - ldr x3, [x20, 16] - mov x2, x27 - ldr x5, [x0, 3376] - ldrb w0, [x29, 112] - blr x5 - cbnz w0, .L714 - str wzr, [x20] -.L715: - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x0, 14] - cmp w1, 4 - bne .L708 - ldr x5, [x0, 3376] - 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, .L743 -.L708: - add x20, x20, 32 - b .L704 -.L728: - mov x27, x1 - b .L713 -.L714: - mov w0, -1 - str w0, [x20] - b .L715 -.L727: + cbz w0, .L759 + mov w4, -1 + str w4, [x21] + b .L759 +.L779: + mov x24, x1 + b .L764 +.L778: + 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, 3428] -.L745: - ldrh w0, [x5, 236] - cmp w0, w10 - bhi .L749 - cbz w20, .L744 - ldr x0, [x5, 3408] + stp x25, x26, [sp, 64] + mov w25, 4 + str w22, [x28, 3420] +.L795: + ldrh w0, [x28, 236] + cmp w0, w23 + bhi .L799 + cbz w20, .L794 + 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 -.L753: - ldr x0, [x25, 3408] - add x1, x0, x24 - ldr w0, [x0, x24] +.L803: + ldr x1, [x28, 3400] + lsl x0, x23, 5 + ldr w0, [x1, x0] + add x2, x1, x23, lsl 5 cmn w0, #1 - bne .L752 - ldr w0, [x1, 4] + bne .L802 + ldr w0, [x2, 4] add w19, w19, 1 and w19, w19, 65535 - lsr w0, w0, 10 + ubfx x0, x0, 10, 16 bl FtlBbmMapBadBlock -.L752: - add x24, x24, 32 - cmp x24, x20 - bne .L753 - cbz w22, .L766 - add x0, x21, :lo12:.LANCHOR0 - mov w25, 1 - ldrh w26, [x0, 308] -.L754: - add x28, x21, :lo12:.LANCHOR0 - mov w24, 0 +.L802: + add x23, x23, 1 + cmp w20, w23, uxth + bhi .L803 + cbz w21, .L816 + ldrh w26, [x28, 308] + mov w24, 1 +.L804: add x0, x28, 264 - str x0, [x29, 104] -.L762: - mov w5, 0 + mov w23, 0 + str x0, [sp, 96] +.L812: + mov w27, 0 mov w20, 0 -.L755: +.L805: ldrh w0, [x28, 236] - cmp w0, w5 - bhi .L758 - cbz w20, .L744 - ldr x0, [x28, 3408] + cmp w0, w27 + bhi .L808 + cbz w20, .L794 + 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 -.L761: - ldr x0, [x28, 3408] - add x3, x0, x27 - ldr w0, [x0, x27] - cbz w0, .L760 - ldr w0, [x3, 4] +.L811: + ldr x1, [x28, 3400] + lsl x0, x25, 5 + ldr w0, [x1, x0] + add x2, x1, x25, lsl 5 + cbz w0, .L810 + 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] -.L760: - add x27, x27, 32 - cmp x1, x27 - bne .L761 - add w24, w24, 1 - cmp w26, w24, uxth - bhi .L762 - add x26, x21, :lo12:.LANCHOR0 - mov x24, 0 -.L764: - cbz w22, .L763 - ldr x0, [x26, 3408] - add x1, x0, x24 - ldr w0, [x0, x24] - cbnz w0, .L763 - ldr w0, [x1, 4] +.L810: + add x25, x25, 1 + cmp w20, w25, uxth + bhi .L811 + add w23, w23, 1 + cmp w26, w23, uxth + bhi .L812 + mov x23, 0 +.L814: + cbz w21, .L813 + ldr x1, [x28, 3400] + lsl x0, x23, 5 + ldr w0, [x1, x0] + add x2, x1, x23, lsl 5 + cbnz w0, .L813 + ldr w0, [x2, 4] mov w1, 1 - lsr w0, w0, 10 + ubfx x0, x0, 10, 16 bl FtlFreeSysBlkQueueIn -.L763: - add x24, x24, 32 - cmp x24, x27 - bne .L764 - cmp w23, 63 - ccmp w22, 0, 0, hi - beq .L744 - add x21, x21, :lo12:.LANCHOR0 +.L813: + add x23, x23, 1 + cmp w20, w23, uxth + bhi .L814 + cmp w22, 63 + ccmp w21, 0, 0, hi + beq .L794 + ldr x0, [x28, 3400] mov w2, w20 - mov w1, w25 - ldr x0, [x21, 3408] + mov w1, w24 bl FlashEraseBlocks -.L744: +.L794: mov w0, w19 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -5237,731 +6306,763 @@ ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 + hint 29 // autiasp ret -.L749: - ldr x1, [x5, 3408] - ubfiz x0, x10, 5, 16 +.L799: + 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, .L746 + and w27, w0, 65535 + mov w26, w27 + cbz w21, .L796 bl IsBlkInVendorPart - cbnz w0, .L747 -.L746: - mov w0, w7 + cbnz w0, .L797 +.L796: + mov w0, w26 bl FtlBbmIsBadBlock - cbnz w0, .L748 - ldr x0, [x5, 3408] + cbnz w0, .L798 + 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, 3408] - ldr x0, [x5, 3488] + str w27, [x0, 4] + ldr x1, [x28, 3400] + ldr x0, [x28, 3480] add x1, x1, x2 - ldr x2, [x5, 3528] + 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 - add x0, x2, x0, sxtw 2 + sdiv w0, w0, w25 + add x0, x2, w0, sxtw 2 str x0, [x1, 16] -.L747: - add w10, w10, 1 - and w10, w10, 65535 - b .L745 -.L748: +.L797: + add w23, w23, 1 + and w23, w23, 65535 + b .L795 +.L798: add w19, w19, 1 and w19, w19, 65535 - b .L747 -.L766: - mov w25, 0 + b .L797 +.L816: + mov w24, 0 mov w26, 2 - b .L754 -.L758: - ldr x1, [x28, 3408] - ubfiz x0, x5, 5, 16 + b .L804 +.L808: + 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, .L756 + and w25, w0, 65535 + mov w1, w25 + cbz w21, .L806 + str w25, [sp, 108] bl IsBlkInVendorPart - cbnz w0, .L757 -.L756: - mov w0, w7 + ldr w1, [sp, 108] + cbnz w0, .L807 +.L806: + mov w0, w1 bl FtlBbmIsBadBlock - cbnz w0, .L757 - ldr x0, [x28, 3408] - ubfiz x2, x20, 5, 16 - add w6, w24, w6, lsl 10 - add x0, x0, x2 - str w6, [x0, 4] - ldr x1, [x28, 3408] - ldr x0, [x28, 3480] - add x1, x1, x2 + cbnz w0, .L807 + 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, 3488] - add x0, x2, x0, sxtw 2 + add x0, x3, w0, sxtw 2 str x0, [x1, 16] -.L757: - add w5, w5, 1 - and w5, w5, 65535 - b .L755 +.L807: + add w2, w27, 1 + and w27, w2, 65535 + b .L805 .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 .L791 + bls .L841 adrp x20, .LANCHOR0 add x20, x20, :lo12:.LANCHOR0 mov w2, 32 mov w1, 165 lsl w19, w19, 10 - ldr x0, [x20, 3504] - 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, 3504] + 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, .L792 + ldr w0, [sp, 40] + cbnz w0, .L842 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 -.L789: +.L839: + add x0, sp, 40 mov w2, 1 mov w1, 0 - add x0, x29, 56 - str w19, [x29, 60] + str w19, [sp, 44] bl FlashEraseBlocks -.L787: - add x1, x21, :lo12:__stack_chk_guard - mov w0, w20 - ldr x2, [x29, 152] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L790 +.L837: + mrs x0, sp_el0 + ldr x1, [sp, 136] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L840 bl __stack_chk_fail -.L792: +.L842: mov w20, -1 - b .L789 -.L791: + b .L839 +.L841: mov w20, 0 - b .L787 -.L790: + b .L837 +.L840: + 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, 3520] - ldr x0, [x20, 3456] - str x2, [x20, 3736] - ldrh w2, [x20, 314] - str x0, [x20, 3728] + stp x25, x26, [sp, 64] + str x0, [x19, 3720] bl ftl_memset -.L795: - ldrh w0, [x20, 258] - add x1, x20, 3720 - cmp w19, w0 - blt .L796 - ldr x26, [x1, 16] - add x19, x20, 360 +.L845: + ldrh w0, [x19, 258] + add x1, x19, 3712 + cmp w0, w20 + bgt .L846 + 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, 2676] - strh w0, [x26, 14] -.L797: - ldr x0, [x25, 3456] - str x0, [x25, 3728] - ldr x0, [x25, 3520] - str x0, [x25, 3736] - 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] +.L847: + 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, 3720] - str w0, [x25, 3724] - 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 .L798 - ldr w0, [x19, 8] + blt .L848 + 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, 3408] - strh w0, [x19] - lsl w0, w0, 10 - str w0, [x25, 3724] - 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, 3408] + ldr x0, [x19, 3400] bl FlashEraseBlocks -.L798: - add x20, x25, 3720 +.L848: + 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, 3720] + strh w0, [x20, 2] + ldr w0, [x19, 3712] cmn w0, #1 - bne .L799 - ldr w1, [x25, 3724] - add w21, w21, 1 - add x0, x24, :lo12:.LC100 - and w21, w21, 65535 - bl sftl_printk - cmp w21, 3 - bls .L797 - ldr w1, [x25, 3724] - adrp x0, .LC101 - mov w2, w21 - add x0, x0, :lo12:.LC101 - bl sftl_printk -.L801: - b .L801 -.L796: - ldrh w2, [x20, 3632] - ldr x0, [x1, 8] - ldr x1, [x21], 8 - mul w3, w19, w2 - lsl w2, w2, 2 - add w19, w19, 1 - add x0, x0, x3, sxtw 2 - bl ftl_memcpy - b .L795 -.L802: - mov w22, 1 - b .L797 -.L799: + bne .L849 + ldr w1, [x19, 3716] add w22, w22, 1 - cmp w22, 1 - ble .L802 + and w22, w22, 65535 + mov x0, x26 + bl sftl_printk + cmp w22, 3 + bls .L847 + ldr w1, [x19, 3716] + adrp x0, .LC102 + mov w2, w22 + add x0, x0, :lo12:.LC102 + bl sftl_printk +.L851: + b .L851 +.L846: + ldrh w2, [x19, 3624] + add x4, x22, x20, lsl 3 + ldr x0, [x1, 8] + ldr x1, [x4, 32] + mul w3, w2, w20 + lsl w2, w2, 2 + add x20, x20, 1 + add x0, x0, w3, sxtw 2 + bl ftl_memcpy + b .L845 +.L849: + add w24, w24, 1 + cmp w24, 1 + ble .L847 cmp w0, 256 - beq .L797 + beq .L847 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] -.L808: - ldrh w1, [x22, 2584] - ldrh w0, [x22, 228] - add w0, w0, w1 - ldrh w1, [x22, 244] - cmp w0, w1 - ble .L809 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 2667 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L809: - cmp x20, x23 - bne .L835 +.L857: + ldrh w1, [x19, 2584] ldrh w0, [x19, 228] - ldr w1, [x19, 3236] - mul w1, w0, w1 - lsr w0, w0, 1 - add w0, w0, 1 - add w1, w0, w1, lsr 2 - ands w1, w1, 65535 - beq .L810 - sub w1, w1, #1 - and w1, w1, 65535 -.L810: + add w0, w0, w1 + ldrh w1, [x19, 244] + cmp w0, w1 + ble .L858 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 + mov w2, 2667 + bl sftl_printk +.L858: + cmp x20, x25 + bne .L883 + 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 +.L859: add x0, x19, 2592 bl List_pop_index_node - and w26, w0, 65535 + and w22, w0, 65535 ldrh w0, [x19, 228] - cbnz w0, .L811 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + cbnz w0, .L860 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 mov w2, 2676 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L811: +.L860: ldrh w0, [x19, 228] sub w0, w0, #1 strh w0, [x19, 228] ldrh w0, [x19, 244] - cmp w0, w26 - bls .L808 + cmp w0, w22 + bls .L857 ldr x0, [x19, 72] - ubfiz x25, x26, 1, 16 - ldrh w24, [x0, x25] - cbnz w24, .L808 - strh w26, [x20] + ubfiz x24, x22, 1, 16 + ldrh w21, [x0, x24] + cbnz w21, .L857 + strh w22, [x20] mov x0, x20 bl make_superblock ldrb w0, [x20, 7] - cbnz w0, .L813 + cbnz w0, .L862 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 .L808 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 + ble .L857 + add x1, x23, 271 mov w2, 2690 - add x1, x1, 336 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L808 -.L835: + b .L857 +.L883: mov w1, 0 - b .L810 -.L813: + b .L859 +.L862: ldrh w1, [x19, 2584] ldrh w0, [x19, 228] add w0, w0, w1 ldrh w1, [x19, 244] cmp w0, w1 - ble .L815 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + ble .L864 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 mov w2, 2693 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L815: - add x27, x20, 16 - ldrh w4, [x19, 236] - mov x3, x27 +.L864: + ldrh w3, [x19, 236] + add x4, x20, 16 mov x0, 0 mov w5, 65535 -.L816: - cmp w4, w0, uxth - bhi .L818 - cbnz w24, .L819 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 +.L865: + cmp w3, w0, uxth + bhi .L867 + cbnz w21, .L868 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 mov w2, 2704 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L819: +.L868: ldrh w0, [x19, 176] - cmp w0, w26 - bne .L820 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + cmp w0, w22 + bne .L869 + adrp x0, .LC9 + add x1, x23, 271 + add x0, x0, :lo12:.LC9 mov w2, 2706 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L820: - ldrb w0, [x20, 8] - ldr x1, [x19, 2600] - cbnz w0, .L821 - ldrh w0, [x1, x25] - cbz w0, .L822 +.L869: + ldrb w2, [x20, 8] + ldr x0, [x19, 2600] + ldrh w1, [x0, x24] + cbnz w2, .L870 + cbz w1, .L884 ldrh w2, [x19, 296] - add w0, w0, w2 -.L843: - strh w0, [x1, x25] + add w1, w1, w2 + and w1, w1, 65535 +.L871: + strh w1, [x0, x24] ldr w0, [x19, 2668] add w0, w0, 1 str w0, [x19, 2668] -.L824: +.L872: ldr x0, [x19, 2600] ldr w1, [x19, 2684] - ldrh w0, [x0, x25] + ldrh w0, [x0, x24] cmp w0, w1 - bls .L825 + bls .L873 str w0, [x19, 2684] -.L825: +.L873: ldr w1, [x19, 2672] - ubfiz x3, x24, 5, 16 ldrh w0, [x19, 296] ldr w2, [x19, 2668] madd w0, w0, w2, w1 ldrh w1, [x19, 244] udiv w0, w0, w1 - ldr x1, [x19, 3552] + ldr x1, [x19, 3544] str w0, [x19, 2676] ldr w0, [x1, 16] add w0, w0, 1 str w0, [x1, 16] - mov x0, 0 -.L826: - cmp x3, x0 - bne .L827 + mov x1, 0 +.L874: + ldr x0, [x19, 3400] + cmp w21, w1, uxth + bhi .L875 ldrb w1, [x20, 8] - mov w2, w24 - ldr x0, [x19, 3408] - mov x28, 0 + mov w2, w21 + mov x26, 0 + mov w27, 0 bl FlashEraseBlocks - mov w1, 0 -.L828: - cmp w24, w28, uxth - bhi .L830 - cmp w1, 0 - ble .L831 - mov w0, w26 + add x2, x20, 16 +.L876: + cmp w21, w26, uxth + bhi .L878 + cmp w27, 0 + ble .L879 + mov w0, w22 bl update_multiplier_value bl FtlBbmTblFlush -.L831: +.L879: ldrb w0, [x20, 7] - cbnz w0, .L832 + cbnz w0, .L880 ldr x0, [x19, 72] mov w1, -1 - strh w1, [x0, x25] - b .L808 -.L818: - ldr x1, [x19, 3408] + strh w1, [x0, x24] + b .L857 +.L867: + 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 .L817 - ubfiz x6, x24, 5, 16 - add w24, w24, 1 + beq .L866 + 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] -.L817: +.L866: add x0, x0, 1 - add x3, x3, 2 - b .L816 -.L822: - mov w0, 2 - b .L843 -.L821: - ldrh w0, [x1, x25] - add w0, w0, 1 - strh w0, [x1, x25] + b .L865 +.L884: + mov w1, 2 + b .L871 +.L870: + add w1, w1, 1 + strh w1, [x0, x24] ldr w0, [x19, 2672] add w0, w0, 1 str w0, [x19, 2672] - b .L824 -.L827: - ldr x1, [x19, 3408] - add x1, x1, x0 - add x0, x0, 32 - ldr w2, [x1, 4] + b .L872 +.L875: + add x0, x0, x1, lsl 5 + add x1, x1, 1 + ldr w2, [x0, 4] and w2, w2, -1024 - str w2, [x1, 4] - b .L826 -.L830: - ldr x2, [x19, 3408] - lsl x0, x28, 5 - add x3, x2, x0 - ldr w2, [x2, x0] - cmn w2, #1 - bne .L829 - add w1, w1, 1 + str w2, [x0, 4] + b .L874 +.L878: + ldr x1, [x19, 3400] + lsl x0, x26, 5 + ldr w28, [x1, x0] + add x3, x1, x26, lsl 5 + cmn w28, #1 + bne .L877 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] -.L829: - add x28, x28, 1 - add x27, x27, 2 - b .L828 -.L832: - add x21, x21, :lo12:.LANCHOR0 +.L877: + add x26, x26, 1 + b .L876 +.L880: + 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, 2660] + ldr w1, [x19, 2660] str w1, [x20, 12] and w0, w0, 65535 add w1, w1, 1 strh w0, [x20, 4] - str w1, [x21, 2660] - 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, .L833 + cbz w0, .L881 ldrb w0, [x20, 7] - cbnz w0, .L834 -.L833: + cbnz w0, .L882 +.L881: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 271 + add x0, x0, :lo12:.LC9 mov w2, 2759 - add x1, x1, 336 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L834: - ldp x19, x20, [sp, 16] +.L882: 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] + and w25, w0, 65535 ldrh w0, [x19, 3312] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] str x27, [sp, 80] - cbz w0, .L845 - add x23, x19, 264 - add x24, x19, 3320 - mov w21, 0 -.L846: - ldrh w0, [x19, 236] - cmp w0, w21 - bhi .L852 - bl FtlGcReFreshBadBlk -.L845: + cbnz w0, .L896 +.L891: 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 -.L852: - ldrb w0, [x23, w21, sxtw] - mov w1, w22 - adrp x26, .LC102 - add x26, x26, :lo12:.LC102 +.L895: + add x0, x19, 264 + mov w1, w25 mov w20, 0 + ldrb w0, [x0, w21, sxtw] bl V2P_block - and w25, w0, 65535 -.L847: + and w22, w0, 65535 +.L892: ldrh w0, [x19, 3312] cmp w0, w20 - bhi .L851 + bhi .L894 add w21, w21, 1 and w21, w21, 65535 - b .L846 -.L851: +.L890: + ldrh w0, [x19, 236] + cmp w0, w21 + bhi .L895 + bl FtlGcReFreshBadBlk + b .L891 +.L894: ldrh w0, [x24, w20, sxtw 1] add w27, w20, 1 - cmp w0, w25 - bne .L848 - mov w1, w25 + cmp w0, w22 + bne .L893 + mov w1, w22 mov x0, x26 bl sftl_printk - mov w0, w25 + mov w0, w22 bl FtlBbmMapBadBlock bl FtlBbmTblFlush - ldrh w0, [x19, 3312] - mov w1, w27 -.L849: - cmp w20, w0 - bcc .L850 - sub w0, w0, #1 - strh w0, [x19, 3312] -.L848: + ldrh w23, [x19, 3312] + add x1, x24, w27, sxtw 1 + add x0, x24, w20, 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] +.L893: and w20, w27, 65535 - b .L847 -.L850: - 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 .L849 + b .L892 +.L896: + adrp x26, .LC103 + add x24, x19, 3314 + add x26, x26, :lo12:.LC103 + mov w21, 0 + b .L890 .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, .L858 - ldrh w1, [x0, 226] - cmp w1, w20 - bne .L859 - mov w1, -1 - strh w1, [x0, 226] -.L859: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 224] - cmp w1, w20 - bne .L860 - mov w1, -1 - strh w1, [x0, 224] -.L860: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - cmp w1, w20 - bne .L861 - mov w1, -1 - strh w1, [x0, 176] -.L862: - 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, .L899 + ldrh w0, [x19, 226] + cmp w0, w20 + bne .L900 + mov w0, -1 + strh w0, [x19, 226] +.L900: + ldrh w0, [x19, 224] + cmp w0, w20 + bne .L901 + mov w0, -1 + strh w0, [x19, 224] +.L901: + ldrh w0, [x19, 176] + cmp w0, w20 + bne .L902 + mov w0, -1 + strh w0, [x19, 176] +.L903: mov w1, w20 - add x0, x21, 2568 + add x0, x19, 2568 bl List_remove_node - ldrh w0, [x21, 2584] - cbnz w0, .L864 + ldrh w0, [x19, 2584] + cbnz w0, .L905 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 296 + add x0, x0, :lo12:.LC9 mov w2, 2835 - add x1, x1, 368 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L864: - add x19, x19, :lo12:.LANCHOR0 +.L905: ldrh w0, [x19, 2584] sub w0, w0, #1 strh w0, [x19, 2584] @@ -5974,333 +7075,356 @@ add w0, w0, w1 ldrh w1, [x19, 244] cmp w0, w1 - ble .L868 + ble .L909 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 296 + add x0, x0, :lo12:.LC9 mov w2, 2838 - add x1, x1, 368 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L868: +.L909: mov w0, 1 - b .L857 -.L861: - ldrh w1, [x0, 24] - cmp w1, w20 - beq .L867 - ldrh w1, [x0, 80] - cmp w1, w20 - beq .L867 - ldrh w0, [x0, 128] + b .L898 +.L902: + ldrh w0, [x19, 24] cmp w0, w20 - bne .L862 -.L867: + beq .L908 + ldrh w0, [x19, 80] + cmp w0, w20 + beq .L908 + ldrh w0, [x19, 128] + cmp w0, w20 + bne .L903 +.L908: mov w0, 0 -.L857: +.L898: ldp x19, x20, [sp, 16] - ldr x21, [sp, 32] - ldp x29, x30, [sp], 48 + ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L858: +.L899: mov w0, w20 bl List_update_data_list - b .L867 + b .L908 .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 .L871 - add x22, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + and w20, w0, 65535 + add x19, x19, :lo12:.LANCHOR0 + beq .L912 + ldr x1, [x19, 72] ubfiz x21, x20, 1, 16 - ldr x1, [x22, 72] ldrh w0, [x1, x21] - cbnz w0, .L872 - mov w2, 0 + cbnz w0, .L913 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, .L873 -.L878: + cbz w0, .L914 +.L919: mov w21, 0 -.L870: +.L911: 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 -.L873: +.L914: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 312 mov w2, 2853 - add x1, x1, 384 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L878 -.L872: + b .L919 +.L913: sub w0, w0, #1 strh w0, [x1, x21] -.L871: - add x19, x19, :lo12:.LANCHOR0 +.L912: + ldrh w0, [x19, 3698] mov w1, 65535 - ldrh w0, [x19, 3706] cmp w0, w1 - bne .L875 - strh w20, [x19, 3706] - b .L878 -.L875: - cmp w20, w0 - beq .L878 + bne .L916 + strh w20, [x19, 3698] + b .L919 +.L916: + cmp w0, w20 + beq .L919 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, 3706] + 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, .L870 + cbnz w1, .L911 cmp w20, w0, uxth - beq .L870 + beq .L911 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 312 mov w2, 2869 - add x1, x1, 384 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L870 + b .L911 .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, 3520] - ldr x1, [x0, 3456] - 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, 3456] - str w2, [x1] - mov w2, 22136 - movk w2, 0x1234, lsl 16 - ldr x1, [x0, 3456] - str w2, [x1, 4] - ldrh w22, [x19, 4] - and w22, w22, 1 - add w22, w22, 6 -.L885: - ldrh w0, [x19, 4] - cbnz w0, .L881 -.L882: - 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 +.L921: + ldrh w0, [x19, 4] + cbz w21, .L923 + cbnz w0, .L922 +.L923: + 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, .L886 + 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 .L927 bl __stack_chk_fail -.L881: +.L922: mov x0, x19 bl get_new_active_ppa - str w0, [x29, 76] + str w0, [sp, 60] cmn w0, #1 - beq .L882 + beq .L923 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 + csinc w0, wzr, w0, eq str w0, [x20, 2664] - add x0, x29, 72 + add x0, sp, 56 + sub w21, w21, #1 bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count - subs w22, w22, #1 - bne .L885 - b .L882 -.L886: + b .L921 +.L927: 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, 3720 -.L895: +.L934: ldrh w0, [x19, 258] - cmp w24, w0 - bcc .L901 - add x20, x21, :lo12:.LANCHOR0 - mov w19, 0 -.L902: - ldrh w0, [x20, 318] - cmp w0, w19 - bhi .L903 - add x20, x20, 360 - ldrh w19, [x20, 12] + cmp w0, w23 + bhi .L940 + mov w20, 0 +.L941: + ldrh w0, [x19, 318] + cmp w0, w20 + bhi .L942 + ldrh w20, [x19, 372] + add x21, x19, 360 mov w22, 65535 - sub w19, w19, #1 - and w19, w19, 65535 -.L904: - ldrh w0, [x20, 12] + sub w20, w20, #1 + and w20, w20, 65535 +.L943: + ldrh w0, [x21, 12] sub w0, w0, #48 - cmp w19, w0 - ble .L908 - mov w0, w19 + cmp w20, w0 + ble .L947 + mov w0, w20 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L905 - mov w0, w19 + beq .L944 + mov w0, w20 bl FlashTestBlk - cbz w0, .L906 - mov w0, w19 + cbz w0, .L945 + mov w0, w20 bl FtlBbmMapBadBlock -.L905: - sub w19, w19, #1 - and w19, w19, 65535 - b .L904 -.L901: - ldr x0, [x19, 3456] - mov w2, 65535 - ldr x27, [x19, 3520] - ldrh w1, [x25] - stp x0, x27, [x20, 8] - cmp w1, w2 - beq .L896 - ldrh w23, [x19, 302] +.L944: + sub w20, w20, #1 + and w20, w20, 65535 + b .L943 +.L940: + ldrh w1, [x25, 12] + ldr x0, [x19, 3448] + ldr x26, [x19, 3512] + stp x0, x26, [x20, 8] + cmp w1, w27 + beq .L935 + 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 -.L897: - mov w0, w23 - add w24, w24, 1 - bl FtlBbmMapBadBlock - add x26, x26, 8 +.L936: + mov w0, w22 + add w23, w23, 1 + add x24, x24, 8 add x25, x25, 2 - b .L895 -.L896: - mov w1, w24 + bl FtlBbmMapBadBlock + b .L934 +.L935: + mov w1, w23 bl FlashGetBadBlockList ldr x0, [x20, 8] - ldr x1, [x26] + ldr x1, [x24, 32] bl FtlBbt2Bitmap - ldrh w22, [x19, 302] -.L899: - sub w22, w22, #1 - and w22, w22, 65535 -.L898: + ldrh w21, [x19, 302] +.L938: + sub w21, w21, #1 + and w21, w21, 65535 +.L937: ldrh w0, [x19, 302] - madd w0, w24, w0, w22 + madd w0, w23, w0, w21 bl FtlBbmIsBadBlock cmp w0, 1 - beq .L899 - ldr x0, [x19, 3520] + beq .L938 + ldr x0, [x19, 3512] + strh w21, [x25, 12] mov w2, 16 - strh w22, [x25] mov w1, 0 bl ftl_memset - ldr x0, [x19, 3456] + 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, 3632] - 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 @@ -6310,57 +7434,56 @@ 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 .L897 - mov w0, w23 + ldr w1, [x20] + and w0, w22, 65535 + cmn w1, #1 + bne .L936 bl FtlBbmMapBadBlock - b .L898 -.L903: - mov w0, w19 - add w19, w19, 1 + b .L937 +.L942: + mov w0, w20 + add w20, w20, 1 + and w20, w20, 65535 bl FtlBbmMapBadBlock - and w19, w19, 65535 - b .L902 -.L906: - ldrh w0, [x20] + b .L941 +.L945: + ldrh w0, [x21] cmp w0, w22 - bne .L907 - strh w19, [x20] - b .L905 -.L907: - strh w19, [x20, 4] -.L908: - add x21, x21, :lo12:.LANCHOR0 + bne .L946 + strh w20, [x21] + b .L944 +.L946: + strh w20, [x21, 4] +.L947: + ldr x1, [x19, 3400] + str wzr, [x19, 368] + ldrh w0, [x19, 360] mov w2, 2 - ldr x1, [x21, 3408] - 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, 3408] - 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] @@ -6369,490 +7492,219 @@ 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 -.L917: + hint 25 // paciasp +.L956: cmp w1, w3 - bhi .L918 + bhi .L957 + hint 29 // autiasp ret -.L918: - lsr w2, w0, 2 +.L957: 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 .L917 + b .L956 .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 .L920 - ldrh w0, [x19, 8] - cbz w0, .L921 - 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 -.L921: - 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] -.L922: - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 64 - ret -.L920: - 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, 3520] - orr w1, w1, w23, lsl 10 - str w1, [x20, 3724] - ldr x1, [x20, 3456] - str x1, [x20, 3728] - str x22, [x20, 3736] - 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, 3456] - lsl w2, w2, 3 - bl ftl_memset - mov w1, 0 - mov w0, 0 -.L923: - ldrh w2, [x19, 6] - cmp w2, w0 - bhi .L925 - add x21, x21, :lo12:.LANCHOR0 - add x6, x21, 3720 - ldrh w1, [x21, 314] - ldr x0, [x21, 3728] - 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 .L922 -.L925: - ubfiz x2, x0, 2, 16 - ldr w3, [x24, x2] - cmp w23, w3, lsr 10 - bne .L924 - add w1, w1, 1 - ldr x4, [x20, 3456] - and w1, w1, 65535 - ubfiz x3, x1, 3, 16 - str w0, [x4, x3] - ldr w4, [x24, x2] - ldr x2, [x20, 3456] - add x2, x2, x3 - str w4, [x2, 4] -.L924: - add w0, w0, 1 - and w0, w0, 65535 - b .L923 - .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: - stp x29, x30, [sp, -112]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov w21, 0 + hint 34 // bti c + .section __patchable_function_entries + .align 3 + .8byte .LPFE88 + .text +.LPFE88: + nop + nop + hint 25 // paciasp + stp x29, x30, [sp, -96]! + mov x29, sp stp x23, x24, [sp, 48] - adrp x24, .LANCHOR0 - stp x25, x26, [sp, 64] - add x22, x24, :lo12:.LANCHOR0 - mov w26, w1 + mov w24, w1 stp x19, x20, [sp, 16] - stp x27, x28, [sp, 80] - adrp x23, .LANCHOR1 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 mov x19, x0 - mov x28, x2 - ubfiz x27, x26, 2, 32 - mov x25, x24 - add x23, x23, :lo12:.LANCHOR1 - add x20, x22, 3720 -.L931: - add x0, x24, :lo12:.LANCHOR0 - ldr w1, [x0, 2644] - add w1, w1, 1 - str w1, [x0, 2644] - 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 +.L960: + 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 .L932 + bge .L961 ldrh w1, [x19] mov w0, 65535 cmp w1, w0 - bne .L933 -.L932: + bne .L962 +.L961: mov x0, x19 bl Ftl_write_map_blk_to_last_page -.L933: +.L962: ldrh w1, [x19] ldr x0, [x19, 16] ldrh w0, [x0, x1, lsl 1] - cbnz w0, .L934 - adrp x0, .LC8 + cbnz w0, .L963 + 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 -.L934: +.L963: ldrh w1, [x19] ldrh w0, [x19, 10] cmp w1, w0 - bcc .L935 - adrp x0, .LC8 + bcc .L964 + 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 -.L935: +.L964: ldrh w1, [x19] mov w2, 16 ldr x0, [x19, 16] - ldrh w3, [x0, x1, lsl 1] + ldrh w28, [x0, x1, lsl 1] mov w1, 0 ldrh w0, [x19, 2] - str w3, [x29, 108] - str x28, [x20, 8] - orr w0, w0, w3, lsl 10 - str w0, [x20, 4] - ldr x0, [x22, 3520] - str x0, [x20, 16] + str x26, [x21, 8] + orr w0, w0, w28, lsl 10 + 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] - ldr w3, [x29, 108] - strh w26, [x6, 8] - str w0, [x6, 4] + str w0, [x23, 4] + strh w24, [x23, 8] ldrh w0, [x19, 4] - strh w0, [x6] - strh w3, [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 strh w0, [x19, 2] - ldp w0, w1, [x20] + ldp w0, w1, [x21] cmn w0, #1 - bne .L936 - adrp x0, .LC104 - add x0, x0, :lo12:.LC104 + bne .L965 + adrp x0, .LC105 + add x0, x0, :lo12:.LC105 bl sftl_printk - add w21, w21, 1 + add w22, w22, 1 ldrh w0, [x19, 2] - and w21, w21, 65535 + and w22, w22, 65535 cmp w0, 2 - bhi .L937 - ldrh w0, [x22, 308] + bhi .L966 + ldrh w0, [x20, 308] sub w0, w0, #1 strh w0, [x19, 2] -.L937: - cmp w21, 3 - bls .L938 - add x25, x25, :lo12:.LANCHOR0 - adrp x0, .LC105 - mov w2, w21 - add x0, x0, :lo12:.LC105 - ldr w1, [x25, 3724] +.L966: + cmp w22, 3 + bls .L967 + ldr w1, [x20, 3716] + adrp x0, .LC106 + mov w2, w22 + add x0, x0, :lo12:.LC106 bl sftl_printk -.L939: - b .L939 -.L938: +.L968: + b .L968 +.L967: ldr w0, [x19, 52] - cbz w0, .L931 -.L954: - b .L954 -.L936: + cbz w0, .L960 +.L970: + b .L970 +.L965: ldr x0, [x19, 40] str w1, [x0, x27] ldrh w0, [x19, 2] cmp w0, 1 - beq .L942 - ldr w0, [x20] + beq .L971 + ldr w0, [x21] cmp w0, 256 - beq .L942 + beq .L971 ldr w1, [x19, 56] - cbz w1, .L943 -.L942: + cbz w1, .L972 +.L971: str wzr, [x19, 56] - b .L931 -.L943: + b .L960 +.L972: cmn w0, #1 - bne .L944 + bne .L973 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 332 + add x0, x0, :lo12:.LC9 mov w2, 745 - add x1, x1, 440 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L944: - ldp x19, x20, [sp, 16] - mov w0, 0 - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 112 - ret - .size FtlMapWritePage, .-FtlMapWritePage - .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 - stp x19, x20, [sp, 16] - and x19, x1, 65535 - stp x23, x24, [sp, 48] - str x25, [sp, 64] - ldrh w0, [x0, 340] - cmp w0, w22 - bcs .L957 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 485 - add x1, x1, 456 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L957: - add x20, x21, :lo12:.LANCHOR0 - ubfiz x0, x22, 2, 16 - ldr x1, [x20, 3608] - ldr w24, [x1, x0] - cbnz w24, .L958 - ldr x0, [x20, 2608] - lsl x19, x19, 4 - ldrh w2, [x20, 314] - mov w1, 255 - add x0, x0, x19 - ldr x0, [x0, 8] - bl ftl_memset - ldr x0, [x20, 2608] - strh w22, [x0, x19] - ldr x0, [x20, 2608] - add x19, x0, x19 - str wzr, [x19, 4] -.L959: - mov w0, 0 - ldr x25, [sp, 64] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 80 - ret -.L958: - ldr x0, [x20, 2608] - lsl x19, x19, 4 - add x23, x20, 3720 - mov w2, 1 - add x0, x0, x19 - mov w1, w2 - str w24, [x20, 3724] - ldr x0, [x0, 8] - str x0, [x20, 3728] - ldr x0, [x20, 3520] - str x0, [x20, 3736] - mov x0, x23 - bl FlashReadPages - ldr x25, [x20, 3736] - ldrh w0, [x25, 8] - cmp w0, w22 - beq .L960 - mov w2, w24 - mov w1, w22 - adrp x0, .LC106 - add x0, x0, :lo12:.LC106 - bl sftl_printk - ldr x1, [x20, 3736] - mov w3, 4 - adrp x0, .LC94 - mov w2, w3 - add x0, x0, :lo12:.LC94 - bl rknand_print_hex - ldrh w3, [x20, 340] - adrp x0, .LC107 - ldr x1, [x20, 3608] - mov w2, 4 - add x0, x0, :lo12:.LC107 - bl rknand_print_hex -.L961: - ldrh w0, [x25, 8] - cmp w0, w22 - beq .L962 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 - mov w2, 508 - add x1, x1, 456 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L962: - add x21, x21, :lo12:.LANCHOR0 - ldr x0, [x21, 2608] - add x0, x0, x19 - str wzr, [x0, 4] - ldr x0, [x21, 2608] - strh w22, [x0, x19] - b .L959 -.L960: - ldr w0, [x20, 3720] - cmp w0, 256 - bne .L961 - mov w2, w24 - mov w1, w22 - adrp x0, .LC108 - add x0, x0, :lo12:.LC108 - bl sftl_printk - ldr x0, [x20, 2608] - mov w1, w22 - add x0, x0, x19 - ldr x2, [x0, 8] - add x0, x20, 3640 - bl FtlMapWritePage - b .L961 - .size load_l2p_region, .-load_l2p_region - .align 2 - .global ftl_map_blk_gc - .type ftl_map_blk_gc, %function -ftl_map_blk_gc: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x21, x22, [sp, 32] - adrp x22, .LANCHOR0 - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - ldr x20, [x0, 16] - ldr x25, [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 .L965 - ubfiz x0, x0, 1, 16 - ldrh w26, [x20, x0] - cbz w26, .L965 - ldr w1, [x19, 52] - cbnz w1, .L965 - mov w1, 1 - str w1, [x19, 52] - strh wzr, [x20, x0] - ldrh w0, [x19, 8] - ldrh w1, [x19, 2] - sub w0, w0, #1 - strh w0, [x19, 8] - add x0, x22, :lo12:.LANCHOR0 - ldrh w0, [x0, 308] - cmp w1, w0 - bcc .L966 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk -.L966: - add x27, x22, :lo12:.LANCHOR0 - adrp x23, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR1 - add x21, x27, 3720 - add x23, x23, 472 - mov w20, 0 -.L967: - ldrh w0, [x19, 6] - cmp w0, w20 - bhi .L974 - mov w1, 1 - mov w0, w26 - bl FtlFreeSysBlkQueueIn - str wzr, [x19, 52] -.L965: - add x22, x22, :lo12:.LANCHOR0 - ldrh w1, [x19, 2] - ldrh w0, [x22, 308] - cmp w1, w0 - bcc .L975 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk -.L975: +.L973: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -6860,61 +7712,401 @@ ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 + hint 29 // autiasp ret -.L974: - ubfiz x0, x20, 2, 16 - add x28, x25, x0 - ldr w1, [x25, x0] - cmp w26, w1, lsr 10 - bne .L968 - ldr x1, [x27, 3464] - mov w2, 1 - ldr x24, [x27, 3520] - stp x1, x24, [x21, 8] - mov w1, w2 - ldr w0, [x25, x0] - str w0, [x21, 4] - mov x0, x21 - bl FlashReadPages - ldrh w0, [x24, 8] - cmp w0, w20 - beq .L969 - adrp x0, .LC8 - mov w2, 611 - mov x1, x23 - add x0, x0, :lo12:.LC8 + .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: + 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] + 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] + cmp w1, w0, uxth + bcs .L985 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 348 + add x0, x0, :lo12:.LC9 + mov w2, 485 bl sftl_printk -.L969: - ldr w0, [x21] - cmn w0, #1 - bne .L970 -.L972: - str wzr, [x28] -.L971: - b .L971 -.L970: +.L985: + 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, .L986 + ldrh w2, [x19, 314] + mov w1, 255 + bl ftl_memset + ldr x0, [x19, 2608] + strh w21, [x0, x20] + ldr x0, [x19, 2608] + add x20, x0, x20 + str wzr, [x20, 4] +.L987: + 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 +.L986: + add x22, x19, 3712 + str x0, [x19, 3720] + ldr x0, [x19, 3512] + mov w2, 1 + mov w1, w2 + str w23, [x19, 3716] + str x0, [x19, 3728] + mov x0, x22 + bl FlashReadPages + ldr x24, [x19, 3728] ldrh w0, [x24, 8] - cmp w0, w20 - bne .L972 - ldrh w1, [x24] - ldrh w0, [x19, 4] + cmp w0, w21 + beq .L988 + mov w2, w23 + mov w1, w21 + adrp x0, .LC107 + 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 + ldrh w3, [x19, 340] + adrp x0, .LC108 + ldr x1, [x19, 3600] + add x0, x0, :lo12:.LC108 + mov w2, 4 + bl rknand_print_hex +.L989: + ldrh w0, [x24, 8] + cmp w0, w21 + beq .L991 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC9 + add x1, x1, 348 + add x0, x0, :lo12:.LC9 + mov w2, 508 + bl sftl_printk +.L991: + ldr x0, [x19, 2608] + add x0, x0, x20 + str wzr, [x0, 4] + ldr x0, [x19, 2608] + strh w21, [x0, x20] + b .L987 +.L988: + ldr w0, [x19, 3712] + cmp w0, 256 + bne .L991 + mov w2, w23 + mov w1, w21 + adrp x0, .LC109 + add x0, x0, :lo12:.LC109 + bl sftl_printk + ldr x0, [x19, 2608] + mov w1, w21 + add x0, x0, x20 + ldr x2, [x0, 8] + add x0, x19, 3632 + bl FtlMapWritePage + b .L989 + .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]! + mov x29, sp + stp x19, x20, [sp, 16] + mov x19, x0 + adrp x20, .LANCHOR0 + stp x21, x22, [sp, 32] + add x20, x20, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + 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 .L995 + ubfiz x0, x0, 1, 16 + ldrh w25, [x21, x0] + cbz w25, .L995 + ldr w1, [x19, 52] + cbnz w1, .L995 + mov w1, 1 + str w1, [x19, 52] + strh wzr, [x21, x0] + ldrh w0, [x19, 8] + ldrh w1, [x19, 2] + sub w0, w0, #1 + strh w0, [x19, 8] + ldrh w0, [x20, 308] cmp w1, w0 - bne .L972 - ldr x2, [x21, 8] - mov w1, w20 + bcc .L996 + mov x0, x19 + bl ftl_map_blk_alloc_new_blk +.L996: + adrp x22, .LANCHOR1 + add x22, x22, :lo12:.LANCHOR1 + adrp x26, .LC9 + add x22, x22, 364 + add x26, x26, :lo12:.LC9 + mov w21, 0 +.L997: + ldrh w0, [x19, 6] + cmp w0, w21 + bhi .L1004 + mov w0, w25 + mov w1, 1 + bl FtlFreeSysBlkQueueIn + str wzr, [x19, 52] +.L995: + ldrh w1, [x19, 2] + ldrh w0, [x20, 308] + cmp w1, w0 + bcc .L1005 + mov x0, x19 + bl ftl_map_blk_alloc_new_blk +.L1005: + 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], 96 + hint 29 // autiasp + ret +.L1004: + ubfiz x1, x21, 2, 16 + add x27, x24, x1 + ldr w0, [x24, x1] + cmp w25, w0, lsr 10 + bne .L998 + add x0, x20, 3712 + ldr x2, [x20, 3456] + ldr x23, [x20, 3512] + stp x2, x23, [x0, 8] + mov w2, 1 + ldr w1, [x24, x1] + str w1, [x0, 4] + mov w1, w2 + bl FlashReadPages + ldrh w0, [x23, 8] + cmp w0, w21 + beq .L999 + mov x1, x22 + mov x0, x26 + mov w2, 611 + bl sftl_printk +.L999: + ldr w1, [x20, 3712] + add x0, x20, 3712 + cmn w1, #1 + bne .L1000 +.L1002: + str wzr, [x27] +.L1001: + b .L1001 +.L1000: + ldrh w1, [x23, 8] + cmp w1, w21 + bne .L1002 + ldrh w2, [x23] + ldrh w1, [x19, 4] + cmp w2, w1 + bne .L1002 + ldr x2, [x0, 8] + mov w1, w21 mov x0, x19 bl FtlMapWritePage -.L968: - add w20, w20, 1 - and w20, w20, 65535 - b .L967 +.L998: + add w21, w21, 1 + and w21, w21, 65535 + b .L997 .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 .L1012 + ldrh w0, [x19, 8] + cbz w0, .L1013 + 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 +.L1013: + 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] +.L1014: + 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 +.L1012: + 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 +.L1015: + ldrh w1, [x19, 6] + cmp w1, w0 + bhi .L1017 + 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 .L1014 +.L1017: + ubfiz x3, x0, 2, 16 + ldr w1, [x23, x3] + cmp w22, w1, lsr 10 + bne .L1016 + 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] +.L1016: + add w0, w0, 1 + and w0, w0, 65535 + b .L1015 + .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 @@ -6923,7 +8115,7 @@ add x1, x0, x20 ldr x2, [x1, 8] ldrh w1, [x0, x20] - add x0, x19, 3640 + add x0, x19, 3632 bl FtlMapWritePage ldr x0, [x19, 2608] add x0, x0, x20 @@ -6933,1687 +8125,1772 @@ 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, 2624] - cmp w25, w0 - bcc .L984 + 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 .L1025 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + add x1, x1, 410 mov w2, 820 - add x1, x1, 488 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk -.L984: - add x0, x20, :lo12:.LANCHOR0 - ldr w1, [x0, 2624] - cmp w25, w1 - bcs .L985 - add w24, w24, 7 - ldrh w1, [x0, 342] - ldr x2, [x0, 2608] + ldr w0, [x20, 2624] + cmp w0, w21 + bhi .L1025 + mov w0, -1 + cbnz w23, .L1024 + str w0, [x22] +.L1024: + 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 +.L1031: + add x0, x0, 1 + lsl x3, x0, 4 + ldrh w3, [x1, x3] + cmp w3, w24 + bne .L1027 +.L1028: + ldr x0, [x20, 2608] + ubfiz x2, x25, 4, 16 + ubfiz x19, x19, 2, 16 + add x0, x0, x2 + ldr x0, [x0, 8] + cbnz w23, .L1029 + ldr w0, [x0, x19] + str w0, [x22] +.L1030: + ldr x0, [x20, 2608] + add x0, x0, x2 + ldr w1, [x0, 4] + cmn w1, #1 + beq .L1034 + add w1, w1, 1 + str w1, [x0, 4] +.L1034: + mov w0, 0 + b .L1024 +.L1029: + 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 .L1030 +.L1025: + ldr x1, [x20, 2608] mov x0, 0 - lsr w21, w25, w24 - and w21, w21, 65535 -.L986: - and x19, x0, 65535 - cmp w19, w1 - bcc .L991 + ldrh w2, [x20, 342] + sub x1, x1, #16 +.L1027: + and w25, w0, 65535 + cmp w2, w0, uxth + bhi .L1031 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 .L992 + beq .L1032 ldr w1, [x3, 4] - tbz w1, #31, .L992 + tbz w1, #31, .L1032 bl flush_l2p_region -.L992: - mov w1, w26 - mov w0, w21 +.L1032: + mov w1, w21 + mov w0, w24 bl load_l2p_region - b .L988 -.L985: - mov w0, -1 - cbnz w23, .L983 - str w0, [x22] -.L983: - 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 -.L991: - add x0, x0, 1 - add x3, x2, x0, lsl 4 - ldrh w3, [x3, -16] - cmp w3, w21 - bne .L986 -.L988: - mov x0, 1 - lsl x0, x0, x24 - sub w0, w0, #1 - and w0, w0, w25 - and x0, x0, 65535 - cbnz w23, .L989 - 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] -.L990: - add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x20, 2608] - add x19, x0, x19, lsl 4 - ldr w0, [x19, 4] - cmn w0, #1 - beq .L994 - add w0, w0, 1 - str w0, [x19, 4] -.L994: - mov w0, 0 - b .L983 -.L989: - 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 .L990 + b .L1028 .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, .L998 - ldrb w1, [x20, 32] - cbnz w1, .L998 - 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, .L1038 + ldrb w1, [x19, 32] + cbnz w1, .L1038 + ldrb w1, [x19, 31] + ldrh w3, [x19, 306] mul w1, w1, w3 cmp w2, w1 - beq .L998 - ldrb w0, [x20, 34] - cbnz w0, .L997 - ldr w23, [x20, 2624] - add x1, x29, 84 - ldrh w25, [x20, 236] + beq .L1038 + ldrb w0, [x19, 34] + cbnz w0, .L1037 + 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, 3520] - ldr w0, [x29, 84] - ldr x1, [x20, 3456] - 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 .L1000 + beq .L1040 + add x0, sp, 72 mov w2, 0 mov w1, 1 - add x0, x29, 88 bl FlashReadPages -.L1001: - add x26, x19, :lo12:.LANCHOR0 - lsl w25, w25, 2 - add x20, x26, 24 +.L1041: + lsl w21, w21, 2 + add x23, x19, 24 mov w0, -3947 - mov w24, 0 - strh w0, [x21] -.L1002: - cmp w25, w24 - bne .L1006 -.L1003: - add x19, x19, :lo12:.LANCHOR0 + strh w0, [x20] +.L1042: + cbnz w21, .L1046 +.L1043: mov w0, 1 strb w0, [x19, 34] -.L997: - add x22, x22, :lo12:__stack_chk_guard - ldr x1, [x29, 120] - ldr x0, [x22] - eor x0, x1, x0 - cbz x0, .L1008 +.L1037: + mrs x0, sp_el0 + ldr x1, [sp, 104] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1048 bl __stack_chk_fail -.L1000: - ldrh w2, [x20, 314] +.L1040: + ldrh w2, [x19, 314] mov w1, 255 - ldr x0, [x20, 3456] + ldr x0, [x19, 3448] bl ftl_memset - b .L1001 -.L1006: - ldrh w0, [x20, 4] - cbz w0, .L1003 - ldr w0, [x29, 92] - add w24, w24, 1 - stp w23, w0, [x21, 8] - ldrh w0, [x20] - strh w0, [x21, 2] - mov x0, x20 + b .L1041 +.L1046: + ldrh w0, [x23, 4] + cbz w0, .L1043 + 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, 2664] + 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, 2664] - 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 .L1002 -.L998: - add x19, x19, :lo12:.LANCHOR0 + b .L1042 +.L1038: strb wzr, [x19, 34] - b .L997 -.L1008: + b .L1037 +.L1048: 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, .L1017 - ldr x19, [x2, 2592] - cbz x19, .L1018 - 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 -.L1019: - cmp w1, w3 - beq .L1018 - cmp w19, w0 - bne .L1020 - 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, .L1057 + ldr x2, [x19, 2592] + cbz x2, .L1058 + 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 +.L1059: + cmp w3, w1 + beq .L1058 + cmp w2, w4 + bne .L1060 + mov w1, w22 + add x0, x19, 2592 bl List_remove_node - ldrh w0, [x23, 228] - cbnz w0, .L1021 + ldrh w0, [x19, 228] + cbnz w0, .L1061 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 419 + add x0, x0, :lo12:.LC9 mov w2, 1742 - add x1, x1, 504 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1021: - add x22, x22, :lo12:.LANCHOR0 - ldrh w0, [x22, 228] +.L1061: + 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] -.L1018: - add x1, x29, 76 - mov w2, 1 +.L1058: + 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 -.L1020: - umull x19, w19, w4 - ldrh w19, [x2, x19] - cmp w19, w5 - beq .L1018 - add w1, w1, 1 - and w1, w1, 65535 - b .L1019 -.L1017: - add w1, w1, 1 - strh w1, [x3, x20] - b .L1018 +.L1060: + umull x2, w2, w5 + ldrh w2, [x0, x2] + cmp w2, w6 + beq .L1058 + add w3, w3, 1 + and w3, w3, 65535 + b .L1059 +.L1057: + add w3, w3, 1 + strh w3, [x0, x20] + b .L1058 .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 .L1029 - ldrb w0, [x20, 6] + cmp w0, w1 + beq .L1069 adrp x19, .LANCHOR0 - str w0, [x29, 156] - add x0, x19, :lo12:.LANCHOR0 - ldrh w26, [x20, 2] - ldrh w0, [x0, 306] - cmp w0, w26 - bne .L1030 + 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 .L1070 + strh w0, [x20, 2] strh wzr, [x20, 4] -.L1156: +.L1191: strb wzr, [x20, 6] -.L1029: - 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, .L1098 +.L1069: + mrs x0, sp_el0 + ldr x1, [sp, 184] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1135 bl __stack_chk_fail -.L1030: +.L1070: ldrh w0, [x20, 16] mov w21, 0 -.L1031: +.L1071: cmp w0, w1 - beq .L1032 + beq .L1072 mov w1, 1 bl FtlGetLastWrittenPage - mov w23, w0 + mov w26, w0 cmn w0, #1 - beq .L1033 - add x0, x19, :lo12:.LANCHOR0 - add x28, x20, 16 - mov x4, x28 + beq .L1073 + 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 -.L1034: - cmp x3, x4 - bne .L1038 - add x24, x19, :lo12:.LANCHOR0 + mov w4, 4 +.L1074: + ldr x0, [x19, 3424] + cmp w6, w1, uxth + bhi .L1078 mov w2, 0 mov w1, w22 - ldr x0, [x24, 3432] bl FlashReadPages - ldr w21, [x24, 2664] - ldr x4, [x24, 3432] - 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 -.L1039: - cmp w22, w3 - bne .L1044 - add w22, w23, 1 - ldr w0, [x4, 4] - and w22, w22, 65535 -.L1151: - lsr w0, w0, 10 + mov w25, 65535 + mov x2, x28 + mov w27, 0 +.L1079: + cmp w22, w27 + bne .L1084 + add w23, w26, 1 + ldr w0, [x28, 4] + and w23, w23, 65535 +.L1186: + 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 .L1046 - strh w22, [x20, 2] - strb wzr, [x20, 6] + and w22, w0, 65535 + ldrh w0, [x19, 306] + cmp w0, w23 + bne .L1086 + strh w23, [x20, 2] strh wzr, [x20, 4] -.L1046: - ldr w0, [x29, 156] - cmp w22, w26 - ccmp w27, w0, 0, eq - bne .L1047 -.L1157: - mov w2, w27 - mov w1, w22 + strb wzr, [x20, 6] +.L1086: + ldr w0, [sp, 152] + cmp w23, w24 + ccmp w22, w0, 0, eq + bne .L1087 +.L1192: + mov w2, w22 + mov w1, w23 mov x0, x20 bl ftl_sb_update_avl_pages - b .L1029 -.L1032: - add w21, w21, 1 - and w21, w21, 65535 - add x0, x20, x21, sxtw 1 + b .L1069 +.L1072: + add w0, w21, 1 + and w21, w0, 65535 + add x0, x20, w0, uxth 1 ldrh w0, [x0, 16] - b .L1031 -.L1033: - cbz w26, .L1035 + b .L1071 +.L1073: + cbz w24, .L1075 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 435 + add x0, x0, :lo12:.LC9 mov w2, 1809 - add x1, x1, 520 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1035: - ldr w0, [x29, 156] +.L1075: + ldr w0, [sp, 152] cmp w0, 0 ccmp w21, w0, 4, ne - beq .L1036 + beq .L1076 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 435 + add x0, x0, :lo12:.LC9 mov w2, 1810 - add x1, x1, 520 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1036: +.L1076: strh wzr, [x20, 2] - b .L1156 -.L1038: - ldrh w1, [x4] - cmp w1, w10 - beq .L1037 - ldr x5, [x0, 3432] - 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, 3432] - ldr x5, [x0, 3256] - 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, 3264] + b .L1191 +.L1078: + ldrh w3, [x9, x1, lsl 1] + cmp w3, w10 + beq .L1077 + 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, w0, 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] -.L1037: - add x4, x4, 2 - b .L1034 -.L1044: - ldr w0, [x6] - cbnz w0, .L1040 - ldr x8, [x6, 16] - ldr w5, [x8, 4] - cmn w5, #1 - beq .L1041 - ldr w1, [x24, 2664] - mov w0, w5 + sdiv w0, w0, w4 + add x0, x3, w0, sxtw 2 + str x0, [x2, 16] +.L1077: + add x1, x1, 1 + b .L1074 +.L1084: + ldr w0, [x2] + cbnz w0, .L1080 + ldr x3, [x2, 16] + ldr w23, [x3, 4] + cmn w23, #1 + beq .L1081 + ldr w1, [x19, 2664] + mov w0, w23 + stp x3, x2, [sp, 96] + str w4, [sp, 112] bl ftl_cmp_data_ver - cbz w0, .L1041 - add w5, w5, 1 - str w5, [x24, 2664] -.L1041: - ldr w0, [x8] - cmn w0, #1 - bne .L1043 - ubfiz x3, x3, 5, 16 - and w22, w23, 65535 - add x3, x4, x3 - ldr w0, [x3, 4] - b .L1151 -.L1040: - mov w7, w9 -.L1043: - add w3, w3, 1 - add x6, x6, 32 - and w3, w3, 65535 - b .L1039 -.L1047: - mov w0, 65535 - cmp w7, w0 - bne .L1048 - ldrb w0, [x20, 8] - cbnz w0, .L1049 -.L1048: - add x0, x19, :lo12:.LANCHOR0 - and w3, w23, 65535 - ldr w1, [x0, 3716] - cmn w1, #1 - bne .L1050 - str w21, [x0, 3716] -.L1050: - add w0, w26, 7 - cmp w0, w23, uxth - bge .L1099 - sub w24, w3, #7 - and w24, w24, 65535 -.L1051: - add x25, x19, :lo12:.LANCHOR0 - mov w4, 65535 -.L1052: - cmp w24, w3 - bhi .L1059 - ldrh w0, [x25, 236] - mov x1, x28 - mov w23, 0 - add x0, x0, 8 - add x0, x20, x0, lsl 1 - b .L1060 -.L1099: - mov w24, w26 - b .L1051 -.L1054: - ldrh w2, [x1] - cmp w2, w4 - beq .L1053 - ldr x5, [x25, 3432] - ubfiz x6, x23, 5, 16 + ldr w4, [sp, 112] + ldp x3, x2, [sp, 96] + cbz w0, .L1081 add w23, w23, 1 - orr w2, w24, w2, lsl 10 - add x5, x5, x6 - and w23, w23, 65535 - str w2, [x5, 4] -.L1053: - add x1, x1, 2 -.L1060: - cmp x0, x1 - bne .L1054 - ldr x0, [x25, 3432] - 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, 3432] - ldr w4, [x29, 136] - ldr w3, [x29, 144] - add x0, x1, 16 - add x23, x1, x23 -.L1055: - cmp x23, x0 - bne .L1058 - add w24, w24, 1 - and w24, w24, 65535 - b .L1052 -.L1058: - ldr w1, [x0, -16] - cbnz w1, .L1049 - ldr x1, [x0] - ldrh w2, [x1] - cmp w2, w4 - beq .L1057 - ldr w1, [x1, 4] - cmn w1, #1 - beq .L1057 - str w1, [x25, 3716] -.L1057: - add x0, x0, 32 - b .L1055 -.L1059: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - str w1, [x0, 3716] -.L1049: - add x19, x19, :lo12:.LANCHOR0 + str w23, [x19, 2664] +.L1081: + ldr w0, [x3] + cmn w0, #1 + bne .L1083 + ubfiz x27, x27, 5, 16 + and w23, w26, 65535 + add x27, x28, x27 + ldr w0, [x27, 4] + b .L1186 +.L1080: + mov w25, w4 +.L1083: + add w27, w27, 1 + add x2, x2, 32 + and w27, w27, 65535 + b .L1079 +.L1087: + mov w0, 65535 + cmp w25, w0 + bne .L1088 + ldrb w0, [x20, 8] + cbnz w0, .L1089 +.L1088: + ldr w0, [x19, 3708] + and w27, w26, 65535 + cmn w0, #1 + bne .L1090 + str w21, [x19, 3708] +.L1090: + 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 +.L1092: + ldrh w3, [x19, 236] + cmp w25, w27 + bls .L1137 + mov w0, -1 + str w0, [x19, 3708] +.L1089: mov w0, 1 - mov w24, w26 - strh w0, [x19, 3752] - add x0, x19, 3760 - str x0, [x29, 112] -.L1061: - ldrh w0, [x19, 236] - mov x1, x28 - mov w23, 0 - mov w4, 65535 - add x0, x0, 8 - add x0, x20, x0, lsl 1 -.L1062: - cmp x0, x1 - bne .L1064 - ldr x0, [x19, 3432] - 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] -.L1065: - ldr x0, [x29, 128] - cmp x0, x23 - bne .L1092 - add w24, w24, 1 - ldrh w0, [x19, 306] - and w24, w24, 65535 - cmp w0, w24 - bne .L1061 - ldrh w1, [x19, 236] - mov w0, 0 - strh w24, [x20, 2] - mov w2, 65535 + add x0, x0, 435 + str x0, [sp, 120] +.L1100: + ldrh w3, [x19, 236] + add x4, x20, 16 + mov x1, 0 + mov w28, 0 + mov w5, 65535 +.L1101: + ldr x0, [x19, 3424] + cmp w3, w1, uxth + bhi .L1103 + mov w1, w28 + mov w2, 0 + bl FlashReadPages + str xzr, [sp, 96] + adrp x0, .LC111 + add x0, x0, :lo12:.LC111 + str x0, [sp, 128] +.L1104: + ldrh w0, [sp, 96] + cmp w28, w0, uxth + bhi .L1131 + ldrh w1, [x19, 306] + add w0, w27, 1 + and w27, w0, 65535 + cmp w1, w0, uxth + bne .L1100 + ldrh w2, [x19, 236] + add x3, x20, 14 + mov x0, 0 + mov w4, 65535 + strh w27, [x20, 2] strh wzr, [x20, 4] -.L1093: - cmp w0, w1 - beq .L1029 - ldrh w3, [x28], 2 - cmp w3, w2 - beq .L1094 +.L1132: + cmp w2, w0, uxth + bls .L1069 + add x1, x0, 1 + ldrh w5, [x3, x1, lsl 1] + cmp w5, w4 + beq .L1138 strb w0, [x20, 6] - b .L1029 -.L1064: - ldrh w2, [x1] - cmp w2, w4 - beq .L1063 - ldr x3, [x19, 3432] - 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] -.L1063: - add x1, x1, 2 - b .L1062 -.L1092: - ldr x4, [x19, 3432] - add x4, x4, x23 - ldr w5, [x4, 4] - str w5, [x29, 180] - lsr w0, w5, 10 + b .L1069 +.L1094: + ldrh w2, [x4, x1, lsl 1] + cmp w2, w28 + beq .L1093 + 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] +.L1093: + add x1, x1, 1 +.L1099: + ldr x0, [x19, 3424] + cmp w3, w1, uxth + bhi .L1094 + 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 +.L1095: + cmp x1, x0 + bne .L1098 + add w25, w25, 1 + and w25, w25, 65535 + b .L1092 +.L1137: + mov x1, 0 + mov w26, 0 + b .L1099 +.L1098: + ldr w2, [x0] + cbnz w2, .L1089 + ldr x2, [x0, 16] + ldrh w3, [x2] + cmp w3, w28 + beq .L1097 + ldr w2, [x2, 4] + cmn w2, #1 + beq .L1097 + str w2, [x19, 3708] +.L1097: + add x0, x0, 32 + b .L1095 +.L1103: + ldrh w2, [x4, x1, lsl 1] + cmp w2, w5 + beq .L1102 + 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] +.L1102: + add x1, x1, 1 + b .L1101 +.L1131: + 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 .L1105 + ubfx x0, x25, 10, 16 bl P2V_plane + ldr w1, [sp, 152] and w0, w0, 65535 - cmp w24, w26 - bcc .L1066 - ldr w1, [x29, 156] + cmp w27, w24 ccmp w1, w0, 0, eq - bhi .L1066 - cmp w24, w22 - ccmp w27, w0, 0, eq - beq .L1067 - ldr w0, [x4] + bhi .L1105 + cmp w27, w23 + ccmp w22, w0, 0, eq + ldp x1, x2, [sp, 104] + bne .L1106 + strh w23, [x20, 2] + strb w22, [x20, 6] + b .L1192 +.L1106: + ldr w0, [x2, x26] cmn w0, #1 - beq .L1068 - ldr x3, [x4, 16] + beq .L1107 + ldr x3, [x1, 16] mov w0, 61589 - ldrh w1, [x3] - cmp w1, w0 - beq .L1069 + ldrh w25, [x3] + cmp w25, w0 + beq .L1108 ldrh w0, [x20] -.L1153: +.L1188: bl decrement_vpc_count - b .L1066 -.L1069: + b .L1105 +.L1108: ldr w21, [x3, 4] cmn w21, #1 - beq .L1070 + beq .L1110 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, .L1070 + ldr x3, [sp, 104] + cbz w0, .L1110 add w0, w21, 1 str w0, [x19, 2664] -.L1070: - ldrh w1, [x3] - mov w0, 61589 - cmp w1, w0 - beq .L1071 - ldr x1, [x29, 136] - mov w2, 1961 - str x3, [x29, 144] - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 - bl sftl_printk - ldr x3, [x29, 144] -.L1071: - ldp w25, w0, [x3, 8] - add x1, x29, 176 - str w0, [x29, 172] - mov w2, 0 - mov w0, w25 - bl log2phys - ldr w1, [x19, 3716] - ldr w3, [x29, 172] - cmn w1, #1 - beq .L1072 - mov w0, w21 - bl ftl_cmp_data_ver - cbz w0, .L1072 - cmn w3, #1 - beq .L1073 - ldr x0, [x19, 3432] - 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, 3432] - add x0, x0, x23 - bl FlashReadPages - ldr x0, [x19, 3432] - ldr x4, [x29, 144] - add x3, x0, x23 - ldr w0, [x0, x23] - cmn w0, #1 - bne .L1074 -.L1075: - mov w0, -1 - str w0, [x29, 172] -.L1082: - ldr w4, [x29, 172] - cmn w4, #1 - beq .L1066 -.L1097: - lsr w0, w4, 10 - bl P2V_block_in_plane - and w25, w0, 65535 - ldrh w0, [x19, 244] - mov w3, w25 + ldrh w0, [x3] cmp w0, w25 - bhi .L1088 - ldr x1, [x29, 136] - mov w2, 2066 - adrp x0, .LC8 - str w25, [x29, 144] - add x0, x0, :lo12:.LC8 + beq .L1110 + ldr x1, [sp, 120] + mov w2, 1961 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - ldr w3, [x29, 144] -.L1088: - ldr x1, [x19, 72] - ubfiz x0, x25, 1, 16 - ldrh w0, [x1, x0] - cbz w0, .L1089 - mov w0, w3 - b .L1153 -.L1073: - ldp w1, w0, [x29, 176] - cmp w1, w0 - bne .L1066 - mov w2, 1 - add x1, x29, 172 + ldr x3, [sp, 104] +.L1110: + add x1, sp, 176 + ldp w25, w0, [x3, 8] + mov w2, 0 + str w0, [sp, 172] mov w0, w25 bl log2phys -.L1066: - add x23, x23, 32 - b .L1065 -.L1074: - ldr w0, [x4, 8] - cmp w25, w0 - bne .L1075 - ldr w0, [x4, 4] - str w0, [x29, 144] - str x4, [x29, 104] - uxtw x1, w0 - ldr w0, [x19, 3716] + ldr w1, [x19, 3708] + ldr w2, [sp, 172] + cmn w1, #1 + beq .L1112 + mov w0, w21 + str w2, [sp, 104] bl ftl_cmp_data_ver - cbz w0, .L1075 - ldp w0, w1, [x29, 176] - ldr x4, [x29, 104] - cmp w0, w1 - ldr w1, [x29, 172] - bne .L1077 -.L1152: - mov w0, w25 - bl FtlReUsePrevPpa - b .L1075 -.L1077: - cmp w0, w1 - beq .L1075 - cmn w0, #1 - beq .L1078 - ldr x4, [x3, 16] + ldr w2, [sp, 104] + cbz w0, .L1112 + cmn w2, #1 + beq .L1113 + 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, 3432] - add x0, x0, x23 + add x0, x0, x26 bl FlashReadPages - ldr x4, [x29, 104] -.L1079: + ldr x2, [x19, 3424] + add x3, x2, x26 + ldr w0, [x2, x26] + cmn w0, #1 + bne .L1114 +.L1115: + mov w0, -1 + str w0, [sp, 172] +.L1122: + ldr w0, [sp, 172] + cmn w0, #1 + beq .L1105 + 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 .L1127 + ldr x1, [sp, 120] + adrp x0, .LC9 + mov w2, 2066 + add x0, x0, :lo12:.LC9 + bl sftl_printk +.L1127: + ldr x1, [x19, 72] + ubfiz x0, x26, 1, 16 + ldrh w0, [x1, x0] + cbz w0, .L1128 + mov w0, w25 + b .L1188 +.L1113: + ldp w1, w0, [sp, 176] + cmp w1, w0 + bne .L1105 + add x1, sp, 172 + mov w0, w25 + mov w2, 1 + bl log2phys +.L1105: + ldr x0, [sp, 96] + add x0, x0, 1 + str x0, [sp, 96] + b .L1104 +.L1114: + ldr x0, [sp, 104] + ldr w4, [x0, 8] + cmp w4, w25 + bne .L1115 + 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, .L1115 + ldp w1, w0, [sp, 172] + ldr w5, [sp, 180] + ldr w4, [sp, 156] + cmp w0, w5 + ldp x3, x2, [sp, 136] + bne .L1117 + mov w0, w4 +.L1187: + bl FtlReUsePrevPpa + b .L1115 +.L1117: + cmp w0, w1 + beq .L1115 + cmn w0, #1 + beq .L1118 + 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 +.L1119: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldr x1, [x0, 3432] - ldr w1, [x1, x23] + ldr x1, [x0, 3424] + ldr w1, [x1, x26] cmn w1, #1 - beq .L1080 - ldr w3, [x4, 4] - ldr w0, [x0, 3716] - mov w1, w3 + beq .L1120 + ldr x1, [sp, 104] + ldr w0, [x0, 3708] + ldr w26, [x1, 4] + mov w1, w26 bl ftl_cmp_data_ver - cbz w0, .L1080 - ldr w0, [x29, 144] - mov w1, w3 + cbz w0, .L1120 + ldr w0, [sp, 112] + mov w1, w26 bl ftl_cmp_data_ver - cbz w0, .L1075 -.L1080: - ldr w1, [x29, 172] - b .L1152 -.L1078: - str w0, [x3] - b .L1079 -.L1072: - ldp w1, w0, [x29, 176] - cmp w1, w0 - beq .L1082 - cmn w3, #1 - beq .L1084 - ldr w0, [x19, 252] - cmp w0, w3, lsr 10 - bhi .L1084 - adrp x0, .LC109 - mov w1, w3 - add x0, x0, :lo12:.LC109 -.L1155: - bl sftl_printk - b .L1066 -.L1084: - mov w2, 1 - add x1, x29, 180 + cbz w0, .L1115 +.L1120: + ldr w1, [sp, 172] mov w0, w25 + b .L1187 +.L1118: + str w0, [x2, x26] + b .L1119 +.L1112: + ldp w1, w0, [sp, 176] + cmp w1, w0 + beq .L1122 + cmn w2, #1 + beq .L1124 + ldr w0, [x19, 252] + cmp w0, w2, lsr 10 + bhi .L1124 + adrp x0, .LC110 + mov w1, w2 + add x0, x0, :lo12:.LC110 +.L1190: + bl sftl_printk + b .L1105 +.L1124: + add x1, sp, 180 + mov w0, w25 + mov w2, 1 bl log2phys - ldr w4, [x29, 176] - cmn w4, #1 - beq .L1082 - ldr w0, [x29, 172] - cmp w4, w0 - beq .L1097 - lsr w0, w4, 10 + ldr w26, [sp, 176] + cmn w26, #1 + beq .L1122 + ldr w0, [sp, 172] + cmp w26, w0 + beq .L1122 + ubfx x0, x26, 10, 16 bl P2V_block_in_plane - ldrh w1, [x19, 24] - and w0, w0, 65535 - cmp w1, w0 - beq .L1087 - ldrh w1, [x19, 80] - cmp w1, w0 - beq .L1087 - ldrh w1, [x19, 128] - cmp w1, w0 - bne .L1082 -.L1087: - ldr x0, [x19, 3432] + ldrh w2, [x19, 24] + and w1, w0, 65535 + cmp w2, w0, uxth + beq .L1126 + ldrh w0, [x19, 80] + cmp w0, w1 + beq .L1126 + ldrh w0, [x19, 128] + cmp w0, w1 + bne .L1122 +.L1126: + 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, 3432] - str x3, [x29, 144] + str x3, [sp, 104] + ldr x0, [x19, 3424] bl FlashReadPages - ldr x0, [x19, 3432] + ldr x0, [x19, 3424] ldr w0, [x0] cmn w0, #1 - beq .L1082 - ldr x3, [x29, 144] + beq .L1122 + ldr x3, [sp, 104] mov w0, w21 ldr w1, [x3, 4] bl ftl_cmp_data_ver - cbnz w0, .L1082 - mov w2, 1 - add x1, x29, 176 + cbnz w0, .L1122 + add x1, sp, 176 mov w0, w25 + mov w2, 1 bl log2phys - b .L1082 -.L1089: - adrp x0, .LC110 - mov w1, w25 - add x0, x0, :lo12:.LC110 - b .L1155 -.L1068: - ldr w0, [x19, 3756] + b .L1122 +.L1128: + mov w1, w26 + ldr x0, [sp, 128] + b .L1190 +.L1107: + ldr w0, [x19, 3748] cmp w0, 31 - bhi .L1090 - ldr x1, [x29, 112] - str w5, [x1, w0, uxtw 2] + bhi .L1129 + add x1, x19, 3752 + str w25, [x1, w0, uxtw 2] add w0, w0, 1 - str w0, [x19, 3756] -.L1090: + str w0, [x19, 3748] +.L1129: ldrh w0, [x20] bl decrement_vpc_count - ldr w0, [x19, 3716] + ldr w0, [x19, 3708] cmn w0, #1 - bne .L1091 -.L1154: - str w21, [x19, 3716] - b .L1066 -.L1091: - cmp w21, w0 - bcs .L1066 - b .L1154 -.L1094: - add w0, w0, 1 - and w0, w0, 65535 - b .L1093 -.L1067: - strb w27, [x20, 6] - strh w22, [x20, 2] - b .L1157 -.L1098: + bne .L1130 +.L1189: + str w21, [x19, 3708] + b .L1105 +.L1130: + cmp w0, w21 + bls .L1105 + b .L1189 +.L1138: + mov x0, x1 + b .L1132 +.L1135: + 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 -.L1159: - ldr w0, [x25, 2624] - cmp w24, w0 - bcc .L1161 - 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 -.L1162: - ldrh w0, [x24, 244] +.L1194: + ldr w0, [x20, 2624] cmp w0, w19 - bhi .L1164 - ldr x19, [x24, 2592] - cbz x19, .L1165 - 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 .L1196 + adrp x23, .LC113 + add x23, x23, :lo12:.LC113 mov w24, 0 - mul x19, x19, x0 + mov w19, 0 + mov w26, 65535 + mov w27, 1 +.L1197: + ldrh w0, [x20, 244] + cmp w0, w19 + bhi .L1199 + ldr x19, [x20, 2592] + cbz x19, .L1200 + 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 -.L1166: - cmp w24, w27 - bne .L1168 -.L1165: - cbz w25, .L1158 - add x1, x22, :lo12:.LANCHOR1 - adrp x0, .LC8 +.L1201: + cmp w23, w26 + bne .L1203 +.L1200: + cbz w24, .L1193 + adrp x0, .LC9 + add x1, x22, 457 + add x0, x0, :lo12:.LC9 mov w2, 2394 - add x1, x1, 544 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1158: - add x21, x21, :lo12:__stack_chk_guard - ldr x1, [x29, 120] - ldr x0, [x21] - eor x0, x1, x0 - cbz x0, .L1170 +.L1193: + mrs x0, sp_el0 + ldr x1, [sp, 104] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1205 bl __stack_chk_fail -.L1161: +.L1196: + 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 .L1160 - lsr w0, w0, 10 + beq .L1195 + 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] -.L1160: - add w24, w24, 1 - b .L1159 -.L1164: - ldr x0, [x24, 72] - ubfiz x4, x19, 1, 16 + strh w1, [x21, x0, lsl 1] +.L1195: + add w19, w19, 1 + b .L1194 +.L1199: + 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 .L1163 - mov x0, x26 - str w5, [x29, 108] + beq .L1198 + 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 .L1163 - ldrh w1, [x27, x28, lsl 1] + ldr x0, [x20, 72] + ldrh w0, [x0, x25] + cmp w0, w26 + beq .L1198 + ldrh w1, [x21, x28, lsl 1] cmp w1, w0 - csinc w25, w25, wzr, ls -.L1163: + csel w24, w24, w27, ls +.L1198: add w19, w19, 1 and w19, w19, 65535 - b .L1162 -.L1168: + b .L1197 +.L1203: ldr x1, [x20, 72] ubfiz x0, x19, 1, 16 ldrh w2, [x1, x0] - cbz w2, .L1167 - ldrh w3, [x23, w19, sxtw 1] - mov w25, 1 + cbz w2, .L1202 + ldrh w3, [x21, w19, sxtw 1] + mov w24, 1 mov w1, w19 - mov x0, x26 + mov x0, x25 bl sftl_printk -.L1167: +.L1202: + umull x19, w19, w27 ldr x0, [x20, 2560] - umull x19, w19, w28 ldrh w19, [x0, x19] - mov w0, 65535 - cmp w19, w0 - beq .L1165 - add w24, w24, 1 - and w24, w24, 65535 - b .L1166 -.L1170: + cmp w19, w28 + beq .L1200 + add w23, w23, 1 + and w23, w23, 65535 + b .L1201 +.L1205: 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, 3720 - 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 -.L1185: - add x0, x24, :lo12:.LANCHOR0 - ldr w0, [x0, 2624] - cmp w20, w0 - bcc .L1191 - add x0, x22, :lo12:__stack_chk_guard - ldr x1, [x29, 72] - ldr x0, [x0] - eor x0, x1, x0 - cbz x0, .L1192 - bl __stack_chk_fail -.L1191: - mov w2, 0 - add x1, x29, 68 - mov w0, w20 - bl log2phys - tst x20, 2047 - bne .L1186 - 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 -.L1186: - ldr w1, [x29, 68] - cmn w1, #1 - beq .L1188 - ldr x0, [x23, 3456] +.L1220: + ldr w0, [x21, 2624] + cmp w0, w20 + bhi .L1226 + mrs x0, sp_el0 + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1227 + bl __stack_chk_fail +.L1226: + add x1, sp, 84 + mov w0, w20 mov w2, 0 - ldr x21, [x23, 3520] - stp wzr, w1, [x19] + bl log2phys + tst x20, 2047 + bne .L1221 + ldr w2, [sp, 84] + mov w1, w20 + mov x0, x22 + bl sftl_printk +.L1221: + ldr w0, [sp, 84] + cmn w0, #1 + beq .L1223 + 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 .L1189 - ldr w0, [x21, 8] - cmp w20, w0 - beq .L1188 -.L1189: - ldp x1, x0, [x19, 8] - ldr w2, [x1, 4] + ldr w0, [x19] + cmp w0, 256 + ccmn w0, #1, 4, ne + beq .L1224 + ldr w0, [x23, 8] + cmp w0, w20 + beq .L1223 +.L1224: + 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 -.L1188: +.L1223: add w20, w20, 1 - b .L1185 -.L1192: + b .L1220 +.L1227: + 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 .L1219 - cbnz w28, .L1195 -.L1196: - bl FtlGcPageVarInit - b .L1197 -.L1219: - mov w28, 0 -.L1195: + beq .L1253 + cbz w28, .L1231 +.L1230: adrp x0, .LANCHOR0+306 + ldr w1, [sp, 104] ldrh w0, [x0, #:lo12:.LANCHOR0+306] - cmp w0, w25 - beq .L1196 -.L1197: - adrp x26, .LANCHOR0 - add x22, x26, :lo12:.LANCHOR0 - mov w24, 0 -.L1212: - ldrh w1, [x19] - mov w0, 65535 - strb wzr, [x19, 8] - cmp w1, w0 - beq .L1198 -.L1215: - 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 -.L1199: - cmp x0, x6 - bne .L1201 - ldr x0, [x22, 3432] - mov w2, 0 - mov w1, w20 - mov x23, 0 - bl FlashReadPages - ubfiz x0, x20, 5, 16 - str x0, [x29, 104] -.L1202: - ldr x0, [x29, 104] - cmp x0, x23 - bne .L1213 - add w4, w28, 1 - add w24, w24, 1 - and w28, w4, 65535 - cmp w25, w24 - bls .L1214 -.L1216: - ldrh w0, [x22, 306] - cmp w0, w28 - bhi .L1215 -.L1198: - 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 .L1217 -.L1201: - ldrh w1, [x6] - cmp w1, w11 - beq .L1200 - ldr x5, [x22, 3432] - 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, 3432] - ldr x5, [x22, 3256] - 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, 3264] - add w20, w20, 1 - and w20, w20, 65535 - sdiv w1, w1, w7 - add x1, x5, x1, sxtw 2 - str x1, [x2, 16] -.L1200: - add x6, x6, 2 - b .L1199 -.L1213: - ldr x0, [x22, 3432] - add x1, x0, x23 - ldr w0, [x0, x23] - ldr w27, [x1, 4] - ldr x20, [x1, 16] - cbnz w0, .L1203 - ldrh w0, [x20] - mov w1, 65535 cmp w0, w1 - bne .L1204 -.L1229: - ldrh w1, [x19] + bne .L1232 +.L1231: + bl FtlGcPageVarInit +.L1232: + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + mov w24, 0 + mov w26, 65535 +.L1248: + ldrh w0, [x20] + strb wzr, [x20, 8] + cmp w0, w26 + beq .L1233 + add x0, x20, 16 + str x0, [sp, 96] +.L1234: + ldrh w7, [x19, 236] + mov x1, 0 + ldrh w8, [x19, 314] + mov w21, 0 + ldrh w9, [x19, 316] + mov w5, 4 +.L1235: + ldr x0, [x19, 3424] + cmp w7, w1, uxth + bhi .L1237 + mov x23, 0 + mov w1, w21 + mov w2, 0 + bl FlashReadPages +.L1238: + cmp w21, w23, uxth + bhi .L1249 + ldr w0, [sp, 104] + add w3, w28, 1 + add w24, w24, 1 + and w28, w3, 65535 + cmp w0, w24 + bhi .L1250 + ldrh w0, [x22, 4] + cmp w0, w26 + beq .L1250 + add w0, w0, w24 + strh w0, [x22, 4] + ldrh w0, [x19, 306] + cmp w0, w28 + bls .L1233 +.L1251: + mrs x0, sp_el0 + ldr x1, [sp, 152] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1252 + bl __stack_chk_fail +.L1253: mov w28, 0 - ldr x0, [x22, 72] + b .L1230 +.L1237: + ldr x2, [sp, 96] + ldrh w4, [x2, x1, lsl 1] + cmp w4, w26 + beq .L1236 + 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, w0, 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, w0, sxtw 2 + str x0, [x2, 16] +.L1236: + add x1, x1, 1 + b .L1235 +.L1249: + 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, .L1239 + ldrh w0, [x25] + cmp w0, w26 + beq .L1263 + ldr w1, [x19, 2624] + ldr w0, [x25, 8] + cmp w0, w1 + bls .L1241 +.L1263: + 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 .L1212 -.L1204: - ldr w0, [x20, 8] - ldr w1, [x22, 2624] - cmp w0, w1 - bhi .L1229 - add x1, x29, 116 + b .L1248 +.L1241: + 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 .L1207 -.L1209: - ldr w2, [x20, 8] -.L1230: - ldr w0, [x20, 12] - mov w1, w27 - add x23, x23, 32 + beq .L1243 +.L1245: + ldr w2, [x25, 8] +.L1264: + ldr w0, [x25, 12] + mov w1, w5 + add x23, x23, 1 bl FtlGcUpdatePage - b .L1202 -.L1207: + b .L1238 +.L1243: cmn w0, #1 - beq .L1209 - str w0, [x29, 124] + beq .L1245 + str w0, [sp, 124] mov w2, 0 - ldr x0, [x22, 3488] + ldr x0, [x19, 3480] + str x0, [sp, 128] + ldr x0, [x19, 3520] mov w1, 1 - str x0, [x29, 128] - ldr x0, [x22, 3528] - 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, 3432] - ldr x6, [x29, 128] - ubfiz x1, x1, 9, 16 - add x2, x2, x23 -.L1210: - cmp x0, x1 - beq .L1209 - ldr x7, [x2, 8] - ldr w8, [x7, x0] - add x0, x0, 4 - add x7, x6, x0 - ldr w7, [x7, -4] - cmp w8, w7 - beq .L1210 - ldrh w1, [x19] - adrp x0, .LC117 - ldr w2, [x29, 124] - add x0, x0, :lo12:.LC117 +.L1246: + cmp w1, w0 + bls .L1245 + ldr x6, [x27, 8] + ldr w7, [x6, x0, lsl 2] + add x0, x0, 1 + ldr w6, [x2, x0, lsl 2] + cmp w7, w6 + beq .L1246 + ldrh w1, [x20] + adrp x0, .LC118 + ldr w2, [sp, 124] + add x0, x0, :lo12:.LC118 bl sftl_printk - b .L1229 -.L1203: + b .L1263 +.L1239: mov w2, -1 - b .L1230 -.L1214: - add x1, x21, :lo12:.LANCHOR2 - mov w2, 65535 - ldrh w0, [x1, 4] - cmp w0, w2 - beq .L1216 - add w0, w0, w24 - strh w0, [x1, 4] - ldrh w0, [x22, 306] + b .L1264 +.L1250: + ldrh w0, [x19, 306] cmp w0, w28 - bls .L1216 -.L1217: - ldr x1, [x29, 96] + bhi .L1234 +.L1233: + strh w28, [x20, 2] mov w0, -1 - add x22, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 152] - ldr x1, [x22] - eor x1, x2, x1 - cbz x1, .L1218 - bl __stack_chk_fail -.L1218: + strb wzr, [x20, 6] + mov w1, w28 + mov w2, 0 + strh w0, [x22, 4] + mov x0, x20 + bl ftl_sb_update_avl_pages + b .L1251 +.L1252: + mov w0, -1 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 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, 2712 - ldr w3, [x2, 80] - cbz w3, .L1232 - ldr w1, [x0, 2624] - ldr w3, [x2, 84] - cmp w3, w1 - bcs .L1233 - mov x19, x0 - mov w21, 2048 -.L1238: - add x22, x19, 2712 + 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, .L1266 + ldr w2, [x1, 84] + cmp w2, w0 + bcs .L1267 + mov w20, 2048 +.L1272: ldr w1, [x19, 2624] - ldr w0, [x22, 84] + add x21, x19, 2712 + ldr w0, [x21, 84] cmp w0, w1 - bcc .L1234 -.L1237: + bcc .L1268 +.L1271: mov w0, -1 -.L1231: - add x20, x20, :lo12:__stack_chk_guard - ldr x2, [x29, 152] - ldr x1, [x20] - eor x1, x2, x1 - cbz x1, .L1243 +.L1265: + mrs x1, sp_el0 + ldr x2, [sp, 152] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1276 bl __stack_chk_fail -.L1234: - add x1, x29, 52 +.L1268: + 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 .L1236 - str w0, [x29, 80] + beq .L1270 + str w0, [sp, 80] mov w2, 0 - ldr x0, [x19, 3504] - 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 .L1237 - ldr w0, [x29, 52] - lsr w0, w0, 10 + bne .L1271 + ldr w0, [sp, 52] + ubfx x0, x0, 10, 16 bl P2V_block_in_plane bl FtlGcRefreshBlock - b .L1237 -.L1236: - subs w21, w21, #1 - bne .L1238 - b .L1237 -.L1233: - ldr w0, [x0, 2628] - stp w0, wzr, [x2, 76] - str wzr, [x2, 84] -.L1246: + b .L1271 +.L1270: + subs w20, w20, #1 + bne .L1272 + b .L1271 +.L1267: + ldr w0, [x19, 2628] + str w0, [x1, 76] + str xzr, [x1, 80] +.L1279: mov w0, 0 - b .L1231 -.L1232: - ldr w4, [x0, 2684] + b .L1265 +.L1266: + ldr w2, [x19, 2684] mov w3, 10000 - ldr w5, [x0, 2628] - 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 .L1242 - ldr w3, [x0, 2624] - 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 .L1242 - ldrh w0, [x0, 2540] - tst w6, w0 - bne .L1246 - ldr w2, [x2, 100] - cmp w0, w2 - beq .L1246 -.L1242: - add x0, x1, :lo12:.LANCHOR0 - add x1, x0, 2712 - ldrh w0, [x0, 2540] - str w0, [x1, 100] - str w5, [x1, 76] - mov w0, 1 - str wzr, [x1, 84] - str w0, [x1, 80] - b .L1246 -.L1243: + csel w5, w5, w3, hi + ldr w3, [x19, 2628] + ldrh w4, [x19, 2540] + add w7, w3, 1048576 + cmp w6, w7 + bhi .L1275 + 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 .L1275 + tst w5, w4 + bne .L1279 + ldr w0, [x1, 100] + cmp w0, w4 + beq .L1279 +.L1275: + mov x0, 1 + str w3, [x19, 2788] + str x0, [x19, 2792] + str w4, [x19, 2812] + b .L1279 +.L1276: 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 -.L1250: +.L1283: ldrh w0, [x20, 342] cmp w0, w19 - bhi .L1252 + bhi .L1285 mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L1252: +.L1285: ldr x1, [x20, 2608] ubfiz x0, x19, 4, 16 add x0, x1, x0 ldr w0, [x0, 4] - tbz w0, #31, .L1251 + tbz w0, #31, .L1284 mov w0, w19 bl flush_l2p_region -.L1251: +.L1284: add w19, w19, 1 and w19, w19, 65535 - b .L1250 + b .L1283 .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 .L1263 - ldrh w23, [x19, 312] - mov x25, x2 - add x27, x19, 3888 - mov w24, 0 - lsr w23, w26, w23 -.L1256: - cbnz w28, .L1261 -.L1254: - add x22, x22, :lo12:__stack_chk_guard - mov w0, w24 - ldr x2, [x29, 216] - ldr x1, [x22] - eor x1, x2, x1 - cbz x1, .L1262 + bhi .L1296 + mov x24, x2 + add x27, x19, 3880 + mov w25, 0 + mov w28, -1 +.L1289: + cbnz w20, .L1294 +.L1287: + mrs x0, sp_el0 + ldr x1, [sp, 216] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1295 bl __stack_chk_fail -.L1261: +.L1294: ldrh w1, [x19, 262] - ldr x0, [x19, 3600] - 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, .L1258 - cmp w20, w1 - beq .L1258 - ldr x0, [x19, 3472] - 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 .L1290 + and w26, w20, 65535 +.L1290: + ldr x0, [x19, 3464] + cbz w2, .L1291 + cmp w1, w26 + beq .L1291 + 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 -.L1259: - lsl w4, w20, 9 - ldr x0, [x19, 3472] - lsl w21, w21, 9 +.L1292: + 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, 3472] - 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 .L1256 -.L1258: + csel w25, w25, w28, ne + add x24, x24, w4, sxtw + b .L1289 +.L1291: ldrh w2, [x19, 314] mov w1, 0 - ldr x0, [x19, 3472] bl ftl_memset - b .L1259 -.L1263: - mov w24, -1 - b .L1254 -.L1262: + b .L1292 +.L1296: + mov w25, -1 + b .L1287 +.L1295: + 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, 2712] cmp w3, w1 - bne .L1271 - stp x29, x30, [sp, -16]! + bne .L1304 add x2, x0, 2712 + hint 25 // paciasp + stp x29, x30, [sp, -16]! mov w1, 87 - add x29, sp, 0 movk w1, 0x5000, lsl 16 + mov x29, sp str w1, [x2, 4] ldr w1, [x0, 2652] str w1, [x2, 88] @@ -8642,60 +9919,67 @@ mov w0, 0 bl FtlVendorPartWrite ldp x29, x30, [sp], 16 + hint 29 // autiasp ret -.L1271: +.L1304: 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, 3952] - cmp w2, 31 - bhi .L1278 - add w2, w2, 1 - strh w2, [x3, 3952] - mov w2, 1 -.L1275: - cbnz w0, .L1276 - add x0, x1, :lo12:.LANCHOR0 - ldr x0, [x0, 3552] - ldr w3, [x0, 20] - ldr w0, [x0, 16] - add w2, w2, w3 - cmp w0, w2 - bcc .L1280 -.L1276: - 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 .L1311 + add w1, w1, 1 + mov w3, 1 + strh w1, [x2, 3944] +.L1308: + ldr x1, [x2, 3544] + ldr w4, [x1, 16] + cbnz w0, .L1309 + ldr w0, [x1, 20] + add w3, w3, w0 + cmp w3, w4 + bhi .L1313 +.L1309: + hint 25 // paciasp stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr x1, [x0, 3552] - ldr w2, [x1, 16] - str w2, [x1, 20] - mov w2, 17221 - movk w2, 0x4254, lsl 16 - str w2, [x1] - ldr x2, [x0, 3552] - ldrh w1, [x0, 3536] + 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, 3552] + 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 -.L1278: - mov w2, 32 - b .L1275 -.L1280: +.L1311: + mov w3, 32 + b .L1308 +.L1313: mov w0, 0 ret .size FtlEctTblFlush, .-FtlEctTblFlush @@ -8703,497 +9987,580 @@ .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 .L1294 - 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 .L1327 + adrp x26, .LC119 + mov x22, x2 + add x26, x26, :lo12:.LC119 mov w24, 0 - lsr w21, w23, w21 -.L1286: - cbnz w22, .L1292 -.L1284: - 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, .L1293 +.L1319: + cbnz w19, .L1325 +.L1317: + mrs x0, sp_el0 + ldr x1, [sp, 216] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1326 bl __stack_chk_fail -.L1292: - ldrh w19, [x28, 262] - ldr x0, [x28, 3600] - udiv w20, w23, w19 +.L1325: + 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, .L1288 - ldr x0, [x28, 3472] + 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 .L1320 + and w25, w19, 65535 +.L1320: + lsl w27, w25, 9 + cbz w4, .L1321 + 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, 3720] + ldr w0, [x28, 3712] csinv w24, w24, wzr, ne cmp w0, 256 - bne .L1290 + bne .L1323 mov w2, w4 mov w1, w21 mov x0, x26 bl sftl_printk - ldr x2, [x28, 3472] + ldr x2, [x28, 3464] mov w1, w21 - add x0, x28, 3888 + add x0, x28, 3880 bl FtlMapWritePage -.L1290: - ldr x1, [x28, 3472] - lsl w20, w20, 9 - asr w20, w20, 2 +.L1323: + 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 -.L1291: +.L1324: add w21, w21, 1 - sub w22, w22, w19 - add w23, w23, w19 - add x25, x25, x27, sxtw - b .L1286 -.L1288: + sub w19, w19, w25 + add w20, w20, w25 + add x22, x22, w27, sxtw + b .L1319 +.L1321: mov w2, w27 + mov x0, x22 mov w1, 0 - mov x0, x25 bl ftl_memset - b .L1291 -.L1294: + b .L1324 +.L1327: mov w24, -1 - b .L1284 -.L1293: + b .L1317 +.L1326: + 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, 3536] - ldr x2, [x19, 3552] + ldrh w1, [x19, 3528] + ldr x2, [x19, 3544] bl FtlVendorPartRead - ldr x0, [x19, 3552] + ldr x0, [x19, 3544] ldr w1, [x0] mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 - beq .L1297 - adrp x1, .LC119 - adrp x0, .LC77 - add x1, x1, :lo12:.LC119 - add x0, x0, :lo12:.LC77 + beq .L1330 + adrp x1, .LC120 + adrp x0, .LC78 + add x1, x1, :lo12:.LC120 + add x0, x0, :lo12:.LC78 bl sftl_printk - ldr x0, [x19, 3552] + ldr x0, [x19, 3544] mov w1, 0 - ldrh w2, [x19, 3536] + ldrh w2, [x19, 3528] lsl w2, w2, 9 bl ftl_memset -.L1297: +.L1330: 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, 2712 - 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, 2712] - movk w21, 0x4654, lsl 16 - cmp w0, w21 - beq .L1300 + mov w20, 19539 + ldr w0, [x19, 2712] + movk w20, 0x4654, lsl 16 + cmp w0, w20 + beq .L1333 + mov x0, x21 mov w2, 512 mov w1, 0 - mov x0, x22 bl ftl_memset - str w21, [x20, 2712] -.L1300: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 19539 - movk w2, 0x4654, lsl 16 - ldr w3, [x0, 2712] - cmp w3, w2 - bne .L1301 - ldr w2, [x0, 2800] - str w2, [x0, 2652] - ldr w2, [x0, 2804] - str w2, [x0, 2656] - ldr w2, [x0, 2720] - str w2, [x0, 2648] - ldr w2, [x0, 2724] - str w2, [x0, 2636] - ldr w2, [x0, 2728] - str w2, [x0, 2628] - ldr w2, [x0, 2732] - str w2, [x0, 2644] - ldr w2, [x0, 2740] - str w2, [x0, 2672] - ldr w2, [x0, 2744] - str w2, [x0, 2680] - ldr w2, [x0, 2748] - str w2, [x0, 2632] - ldr w2, [x0, 2752] - ldr w1, [x0, 2760] - str w2, [x0, 2640] - ldr w2, [x0, 2756] - str w1, [x0, 2688] - str w2, [x0, 2684] -.L1301: - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x0, 2672] - ldrh w1, [x0, 296] - ldr w3, [x0, 2668] - madd w1, w1, w3, w2 - ldrh w2, [x0, 244] - udiv w1, w1, w2 - str w1, [x0, 2676] + str w20, [x19, 2712] +.L1333: + 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, .L1313 + 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, 3720 - mov x21, x1 - ldrh w20, [x19, 6] - ldr x4, [x2, 3520] - sub w20, w20, #1 - ldr x3, [x2, 3464] - and w20, w20, 65535 - ldr x5, [x19, 40] - stp x3, x4, [x0, 8] - ubfiz x4, x20, 2, 16 + ldr w0, [x0, 56] + cbz w0, .L1337 + 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, .L1307 + 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, .L1339 mov w2, 1 mov w1, w2 bl FlashReadPages -.L1308: - add x1, x21, :lo12:.LANCHOR0 +.L1340: + ldr x2, [x20, 3720] + mov w1, w21 mov x0, x19 - ldr x2, [x1, 3728] - mov w1, w20 bl FtlMapWritePage - ldr x21, [sp, 32] +.L1337: ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] ldp x29, x30, [sp], 48 + hint 29 // autiasp ret -.L1307: - ldrh w2, [x2, 314] - mov w1, 255 +.L1339: + ldrh w2, [x20, 314] mov x0, x3 + mov w1, 255 bl ftl_memset - b .L1308 -.L1313: - ret + b .L1340 .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, 2696 - mov w21, 0 - ldr x26, [x19, 3520] + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR1 + 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 - ldr x0, [x19, 3456] - str x0, [x19, 3728] - ldrh w0, [x19, 2696] - str x26, [x19, 3736] - strh w0, [x26, 2] + strh w0, [x22, 2] mov w0, -3932 - strh w0, [x26] - str wzr, [x26, 12] - ldr w0, [x19, 2704] - stp w0, wzr, [x26, 4] - mov w0, 19539 - ldrh w1, [x19, 24] - movk w0, 0x4654, lsl 16 - str w0, [x19, 2512] - mov w0, 87 - ldrb w2, [x19, 30] - strh w1, [x19, 2526] - movk w0, 0x5000, lsl 16 - ldrh w1, [x19, 26] - str w0, [x19, 2516] - ldrh w0, [x19, 2702] + 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, 0x57, lsl 32 + movk x0, 0x5000, lsl 48 + str x0, [x19, 2512] + ldrh w0, [x21, 142] 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] + 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] - orr w1, w2, w1, lsl 6 + 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] - strh w1, [x19, 2532] strb w0, [x19, 2524] - ldrh w1, [x19, 128] + 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] - ldrb w2, [x19, 134] - strh w1, [x19, 2534] + mov w1, 255 strb w0, [x19, 2525] - ldrh w1, [x19, 130] ldr w0, [x19, 2668] str w0, [x19, 2544] ldr w0, [x19, 2660] - orr w1, w2, w1, lsl 6 str w0, [x19, 2552] ldr w0, [x19, 2664] - ldrh w2, [x19, 314] str w0, [x19, 2548] - ldr x0, [x19, 3728] - strh w1, [x19, 2536] - mov w1, 255 + ldr x0, [x19, 3720] bl ftl_memset - ldr x0, [x19, 3728] + ldr x0, [x19, 3720] mov x1, x20 mov w2, 48 - mov x20, x23 - adrp x23, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR1 - add x23, x23, 560 + mov w20, 0 bl ftl_memcpy ldrh w2, [x19, 244] ldr x1, [x19, 72] - ldr x0, [x19, 3728] + ldr x0, [x19, 3720] lsl w2, w2, 1 add x0, x0, 48 bl ftl_memcpy mov w0, 0 bl FtlUpdateVaildLpn -.L1317: - ldrh w2, [x20, 2] - ldrh w1, [x20] - ldr x0, [x19, 3456] +.L1346: + ldrh w1, [x21, 136] + ldrh w2, [x21, 138] + ldr x0, [x19, 3448] + str x0, [x19, 3720] + ldr x0, [x19, 3512] str x0, [x19, 3728] - ldr x0, [x19, 3520] - str x0, [x19, 3736] orr w0, w2, w1, lsl 10 - str w0, [x19, 3724] + str w0, [x19, 3716] ldrh w0, [x19, 308] sub w0, w0, #1 cmp w2, w0 - blt .L1318 - ldrh w24, [x20, 4] - strh wzr, [x20, 2] - strh w1, [x20, 4] + blt .L1347 + ldrh w24, [x21, 140] + strh wzr, [x21, 138] + strh w1, [x21, 140] bl FtlFreeSysBlkQueueOut ldr w1, [x19, 2660] - str w1, [x20, 8] + str w1, [x21, 144] add w2, w1, 1 str w2, [x19, 2660] ubfiz w2, w0, 10, 16 - str w2, [x19, 3724] - strh w0, [x20] - strh w0, [x26, 2] - str w1, [x26, 4] -.L1318: + str w2, [x19, 3716] + strh w0, [x22, 2] + str w1, [x22, 4] + strh w0, [x21, 136] +.L1347: ldrh w1, [x19, 314] - ldr x0, [x19, 3456] + ldr x0, [x19, 3448] bl js_hash - str w0, [x26, 12] + str w0, [x22, 12] mov w3, 1 - add x0, x19, 3720 + add x0, x19, 3712 mov w1, w3 mov w2, w3 bl FlashProgPages - ldrh w0, [x20, 2] - ldr w1, [x19, 3720] + 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 .L1319 + bne .L1348 cmp w0, 1 - bne .L1320 - adrp x0, .LC8 - mov w2, 1145 + bne .L1350 mov x1, x23 - add x0, x0, :lo12:.LC8 + mov w2, 1145 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk -.L1320: - ldrh w0, [x20, 2] + ldrh w0, [x21, 138] cmp w0, 1 - bne .L1321 + bne .L1350 ldrh w0, [x19, 308] sub w0, w0, #1 - strh w0, [x20, 2] -.L1321: - add w21, w21, 1 - and w21, w21, 65535 - cmp w21, 3 - bls .L1317 - add x22, x22, :lo12:.LANCHOR0 - adrp x0, .LC120 - mov w2, w21 - add x0, x0, :lo12:.LC120 - ldr w1, [x22, 3724] + strh w0, [x21, 138] +.L1350: + add w20, w20, 1 + and w20, w20, 65535 + cmp w20, 3 + bls .L1346 + ldr w1, [x19, 3716] + adrp x0, .LC121 + mov w2, w20 + add x0, x0, :lo12:.LC121 bl sftl_printk -.L1323: - b .L1323 -.L1319: +.L1353: + b .L1353 +.L1348: cmp w0, 1 - beq .L1317 + beq .L1346 cmp w1, 256 - beq .L1317 + beq .L1346 mov w0, 65535 cmp w24, w0 - beq .L1324 - mov w1, 1 + beq .L1354 mov w0, w24 + mov w1, 1 bl FtlFreeSysBlkQueueIn -.L1324: +.L1354: 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 .L1337 + bne .L1367 + 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 -.L1337: +.L1367: mov w0, 0 ret .size sftl_deinit, .-sftl_deinit @@ -9201,545 +10568,580 @@ .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 .L1351 + bls .L1381 cmp w1, w20 - bcc .L1351 - add w3, w0, w20 - cmp w1, w3 - bcc .L1351 + bcc .L1381 + add w2, w0, w20 + cmp w1, w2 + bcc .L1381 cmp w20, 31 - bhi .L1342 -.L1359: + bhi .L1372 +.L1389: mov w0, 0 -.L1340: - add x21, x21, :lo12:__stack_chk_guard - ldr x2, [x29, 56] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L1348 +.L1370: + mrs x1, sp_el0 + ldr x2, [sp, 56] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1378 bl __stack_chk_fail -.L1342: - ldrh w1, [x2, 262] - udiv w22, w0, w1 - msub w0, w1, w22, w0 +.L1372: + ldrh w1, [x19, 262] + udiv w21, w0, w1 + msub w0, w1, w21, w0 ands w0, w0, 65535 - beq .L1343 + beq .L1373 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 -.L1343: - add x19, x19, :lo12:.LANCHOR0 +.L1373: mov w0, -1 - str w0, [x29, 52] -.L1344: + str w0, [sp, 52] +.L1374: ldrh w0, [x19, 262] - cmp w20, w0 - bcs .L1346 - ldr w0, [x19, 3956] + cmp w0, w20 + bls .L1376 + ldr w0, [x19, 3948] cmp w0, 32 - bls .L1359 - str wzr, [x19, 3956] + bls .L1389 + str wzr, [x19, 3948] bl l2p_flush bl FtlVpcTblFlush - b .L1359 -.L1346: + b .L1389 +.L1376: + 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 .L1345 - ldr w0, [x19, 3956] + beq .L1375 + ldr w0, [x19, 3948] + add x1, sp, 52 mov w2, 1 - add x1, x29, 52 add w0, w0, 1 - str w0, [x19, 3956] + str w0, [x19, 3948] ldr w0, [x19, 2632] add w0, w0, 1 str w0, [x19, 2632] - mov w0, w22 + 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 -.L1345: +.L1375: ldrh w0, [x19, 262] - add w22, w22, 1 + add w21, w21, 1 sub w20, w20, w0 - b .L1344 -.L1351: + b .L1374 +.L1381: mov w0, -1 - b .L1340 -.L1348: + b .L1370 +.L1378: 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, 3560] + ldr x0, [x19, 3552] mov w1, 0 ldrh w2, [x19, 246] lsl w2, w2, 1 bl ftl_memset -.L1361: +.L1391: ldr w0, [x19, 2624] - cmp w21, w0 - bcc .L1363 - add x20, x20, :lo12:.LANCHOR0 - adrp x24, .LC121 - add x26, x20, 2592 - add x24, x24, :lo12:.LC121 - mov w19, 0 + cmp w0, w20 + bhi .L1393 + adrp x23, .LC122 + adrp x24, .LC9 + add x23, x23, :lo12:.LC122 + add x24, x24, :lo12:.LC9 + mov w20, 0 mov w25, 65535 -.L1364: - ldrh w0, [x20, 244] - cmp w0, w19 - bhi .L1370 +.L1394: + ldrh w0, [x19, 244] + cmp w0, w20 + bhi .L1400 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, .L1371 + mrs x0, sp_el0 + ldr x1, [sp, 88] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1401 bl __stack_chk_fail -.L1363: +.L1393: + 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 .L1362 - lsr w0, w0, 10 + beq .L1392 + ubfx x0, x0, 10, 16 bl P2V_block_in_plane - ldr x2, [x19, 3560] + ldr x2, [x19, 3552] ubfiz x0, x0, 1, 16 ldrh w1, [x2, x0] add w1, w1, 1 strh w1, [x2, x0] -.L1362: - add w21, w21, 1 - b .L1361 -.L1370: - ldr x0, [x20, 72] - ubfiz x21, x19, 1, 16 +.L1392: + add w20, w20, 1 + b .L1391 +.L1400: + ldr x0, [x19, 72] + ubfiz x21, x20, 1, 16 ldrh w2, [x0, x21] - ldr x0, [x20, 3560] + ldr x0, [x19, 3552] ldrh w3, [x0, x21] cmp w2, w3 - beq .L1366 + beq .L1396 cmp w2, w25 - beq .L1366 - mov x0, x24 - mov w1, w19 + beq .L1396 + mov x0, x23 + mov w1, w20 bl sftl_printk - ldrh w0, [x20, 24] - cmp w0, w19 - beq .L1366 - ldrh w0, [x20, 128] - cmp w0, w19 - beq .L1366 - ldrh w0, [x20, 80] - cmp w0, w19 - beq .L1366 - ldr x0, [x20, 72] - ldrh w1, [x0, x21] - cbnz w1, .L1368 - ldr x1, [x20, 3560] + ldrh w0, [x19, 24] + cmp w0, w20 + beq .L1396 + ldrh w0, [x19, 128] + cmp w0, w20 + beq .L1396 + ldrh w0, [x19, 80] + cmp w0, w20 + beq .L1396 + 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, .L1398 + mov w1, w20 + add x0, x19, 2592 bl List_remove_node - ldrh w0, [x20, 228] - cbnz w0, .L1369 - add x1, x23, :lo12:.LANCHOR1 - adrp x0, .LC8 + ldrh w0, [x19, 228] + cbnz w0, .L1399 + add x1, x22, 486 + mov x0, x24 mov w2, 2330 - add x1, x1, 576 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1369: - ldrh w0, [x20, 228] +.L1399: + 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 -.L1366: - add w19, w19, 1 - and w19, w19, 65535 - b .L1364 -.L1368: - ldr x1, [x20, 3560] - ldrh w1, [x1, x21] - strh w1, [x0, x21] - mov w0, w19 +.L1396: + add w20, w20, 1 + and w20, w20, 65535 + b .L1394 +.L1398: + mov w0, w20 bl update_vpc_list - b .L1366 -.L1371: + b .L1396 +.L1401: 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 .L1377 + ldrh w19, [x0] + ldrh w0, [x20, 244] + cmp w0, w19 + bcs .L1407 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 507 + add x0, x0, :lo12:.LC9 mov w2, 2766 - add x1, x1, 600 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1377: +.L1407: mov w0, 65535 - cmp w20, w0 - beq .L1378 - add x1, x19, :lo12:.LANCHOR0 - ubfiz x0, x20, 1, 16 - ldr x1, [x1, 72] + cmp w19, w0 + beq .L1408 + ldr x1, [x20, 72] + ubfiz x0, x19, 1, 16 ldrh w0, [x1, x0] - cbz w0, .L1379 - mov w0, w20 + cbz w0, .L1409 + mov w0, w19 bl INSERT_DATA_LIST -.L1378: - add x2, x19, :lo12:.LANCHOR0 +.L1408: mov w0, 1 strb w0, [x21, 8] + ldrh w0, [x20, 3698] mov w1, 65535 - ldrh w0, [x2, 3706] cmp w0, w1 - beq .L1380 - cmp w20, w0 - bne .L1381 - ldr x2, [x2, 72] - ubfiz x1, x0, 1, 16 - ldrh w1, [x2, x1] - cbz w1, .L1382 -.L1381: + beq .L1410 + cmp w0, w19 + bne .L1411 + ldr x1, [x20, 72] + ubfiz x19, x19, 1, 16 + ldrh w1, [x1, x19] + cbz w1, .L1412 +.L1411: bl update_vpc_list -.L1382: - add x19, x19, :lo12:.LANCHOR0 +.L1412: mov w0, -1 - strh w0, [x19, 3706] -.L1380: + strh w0, [x20, 3698] +.L1410: 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 -.L1379: - mov w0, w20 +.L1409: + mov w0, w19 bl INSERT_FREE_LIST - b .L1378 + b .L1408 .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 -.L1388: - cmp x22, x19 - beq .L1394 - sub x23, x19, #4 - b .L1395 -.L1390: - 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, .L1389 - mov x0, x20 - bl allocate_new_data_superblock -.L1389: - 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 -.L1395: - ldr w2, [x19, -4] - cmp w2, 256 - ccmn w2, #1, 4, ne - beq .L1390 - ldrb w1, [x20, 6] - ldrh w0, [x26, 236] - cmp w1, w0 - bcc .L1391 - 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 -.L1391: - 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 .L1392 - add x2, x25, :lo12:.LANCHOR0 - ubfiz x0, x1, 1, 16 - ldr x2, [x2, 72] - ldrh w0, [x2, x0] - cbnz w0, .L1393 - adrp x0, .LC123 - mov w2, 0 - add x0, x0, :lo12:.LC123 - bl sftl_printk -.L1393: - mov w0, w23 - bl decrement_vpc_count -.L1392: - add x19, x19, 32 - b .L1388 -.L1394: + mov w1, 32 + umaddl x21, w21, w1, x19 +.L1418: + cmp x21, x19 + bne .L1425 adrp x0, .LANCHOR0+236 ldrb w1, [x20, 6] ldrh w0, [x0, #:lo12:.LANCHOR0+236] cmp w1, w0 - bcc .L1387 + bcc .L1417 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 -.L1387: - add x21, x21, :lo12:__stack_chk_guard - ldr x1, [x29, 88] - ldr x0, [x21] - eor x0, x1, x0 - cbz x0, .L1397 +.L1417: + mrs x0, sp_el0 + ldr x1, [sp, 72] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1427 bl __stack_chk_fail -.L1397: +.L1420: + 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, .L1419 + mov x0, x20 + bl allocate_new_data_superblock +.L1419: + 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 +.L1425: + ldr w2, [x19] + cmp w2, 256 + ccmn w2, #1, 4, ne + beq .L1420 + ldrb w1, [x20, 6] + ldrh w0, [x23, 236] + cmp w1, w0 + bcc .L1421 + 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 +.L1421: + 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 .L1422 + 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, .L1423 + adrp x0, .LC124 + mov w2, 0 + add x0, x0, :lo12:.LC124 + bl sftl_printk +.L1423: + mov w0, w22 + bl decrement_vpc_count +.L1422: + add x19, x19, 32 + b .L1418 +.L1427: 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 .L1403 -.L1410: - 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, 3712] cmp w3, w2 - bne .L1424 -.L1428: + bne .L1433 +.L1440: + ldrh w2, [x19, 128] + add x0, x19, 128 + str wzr, [x19, 3704] + mov w1, 65535 + cmp w2, w1 + bne .L1454 +.L1458: mov w0, 0 -.L1402: - add x21, x21, :lo12:__stack_chk_guard - ldr x2, [x29, 88] - ldr x1, [x21] - eor x1, x2, x1 - cbz x1, .L1419 +.L1432: + mrs x1, sp_el0 + ldr x2, [sp, 72] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1449 bl __stack_chk_fail -.L1403: +.L1433: adrp x20, .LANCHOR2 - cbz w0, .L1406 - add x0, x20, :lo12:.LANCHOR2 - ldrh w4, [x0, 4] - cmp w4, w3 - beq .L1407 -.L1408: - mov w1, 2 -.L1406: add x20, x20, :lo12:.LANCHOR2 - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 128 + cbz w0, .L1436 + ldrh w0, [x20, 4] + cmp w0, w2 + beq .L1437 +.L1438: + mov w1, 2 +.L1436: + 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 .L1410 + beq .L1440 mov w0, 1 - b .L1402 -.L1407: - strh wzr, [x0, 4] - ldrh w0, [x2, 228] + b .L1432 +.L1437: + ldrh w0, [x19, 228] + strh wzr, [x20, 4] cmp w0, 17 - bhi .L1408 - b .L1406 -.L1424: - ldrh w2, [x0, 3296] - ldrb w1, [x1, 7] - ldrh w0, [x0, 306] - mul w0, w1, w0 - cmp w2, w0 - beq .L1411 + bhi .L1438 + b .L1436 +.L1454: + ldrb w0, [x0, 7] + ldrh w2, [x19, 306] + ldrh w1, [x19, 3296] + mul w0, w0, w2 + cmp w1, w0 + beq .L1441 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 -.L1411: - 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, 2648] - ldrh w1, [x0, 3296] - add w1, w1, w2 - str w1, [x0, 2648] -.L1412: - ldrh w0, [x20, 3296] - cmp w0, w22 - bhi .L1416 +.L1441: + 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] +.L1442: + ldrh w0, [x19, 3296] + cmp w0, w20 + bhi .L1446 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, .L1417 + ldrh w2, [x19, 128] + ldr x1, [x19, 72] + ldrh w0, [x19, 128] + ldrh w1, [x1, x2, lsl 1] + cbz w1, .L1447 bl INSERT_DATA_LIST -.L1418: - add x19, x19, :lo12:.LANCHOR0 +.L1448: mov w20, -1 - strh wzr, [x19, 3296] strh w20, [x19, 128] strh wzr, [x19, 3284] + strh wzr, [x19, 3296] bl l2p_flush bl FtlVpcTblFlush strh w20, [x19, 176] @@ -9747,65 +11149,74 @@ ldrh w1, [x19, 228] add w0, w0, w0, lsl 1 cmp w1, w0, lsr 2 - ble .L1428 + ble .L1458 mov w0, 20 strh w0, [x19, 3224] - b .L1428 -.L1416: - umull x24, w22, w26 - ldr x25, [x20, 3304] - ldr w1, [x20, 2624] - add x23, x25, x24 - ldr w0, [x23, 8] + b .L1458 +.L1446: + ldr x23, [x19, 3304] + umull x22, w20, w24 + ldr w1, [x19, 2624] + add x21, x23, x22 + ldr w0, [x21, 8] cmp w0, w1 - bcc .L1413 -.L1426: - ldrh w0, [x20, 128] - b .L1427 -.L1413: - add x1, x29, 84 + bcc .L1443 +.L1456: + ldrh w0, [x19, 128] + b .L1457 +.L1443: + 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 .L1415 - lsr w0, w0, 10 + bne .L1445 + 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 -.L1427: + mov w0, w22 +.L1457: bl decrement_vpc_count - b .L1414 -.L1415: - ldr w0, [x23, 4] + b .L1444 +.L1445: + ldr w0, [x21, 4] cmp w1, w0 - bne .L1426 -.L1414: - add w22, w22, 1 - and w22, w22, 65535 - b .L1412 -.L1417: + bne .L1456 +.L1444: + add w20, w20, 1 + and w20, w20, 65535 + b .L1442 +.L1447: bl INSERT_FREE_LIST - b .L1418 -.L1419: + b .L1448 +.L1449: 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 @@ -9816,30 +11227,40 @@ ldrh w1, [x19, 130] ldrh w0, [x19, 306] cmp w1, w0 - bcc .L1429 - add x0, x19, 3640 + bcc .L1459 + add x0, x19, 3632 bl FtlMapBlkWriteDump_data mov w0, 0 bl FtlGcFreeTempBlock - str wzr, [x19, 3712] -.L1429: + str wzr, [x19, 3704] +.L1459: 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, 3676] + str wzr, [x19, 3668] bl FtlRecoverySuperblock mov x0, x20 bl FtlSlcSuperblockCheck @@ -9853,1712 +11274,1720 @@ 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 + mov w20, 0 ldr w1, [x19, 3240] - ldr x0, [x19, 3440] + ldr x0, [x19, 3432] bl FlashProgPages - mov w10, 0 -.L1435: +.L1465: ldr w1, [x19, 3240] - cmp w10, w1 - bcc .L1438 - ldr x0, [x19, 3440] + ldr x2, [x19, 3432] + cmp w20, w1 + bcc .L1468 + mov x0, x2 bl FtlGcBufFree - str wzr, [x19, 3240] ldrh w0, [x19, 132] - cbnz w0, .L1440 + str wzr, [x19, 3240] + cbnz w0, .L1470 mov w0, 1 bl FtlGcFreeTempBlock mov w0, 1 -.L1434: - ldr x19, [sp, 16] +.L1464: + ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 + hint 29 // autiasp ret -.L1438: - ldr x2, [x19, 3440] - ubfiz x0, x10, 5, 16 - add x1, x2, x0 - ldr w2, [x2, x0] +.L1468: + ubfiz x4, x20, 5, 16 + add x1, x2, x4 + ldr w2, [x2, x4] ldr x3, [x1, 16] - cmn w2, #1 - bne .L1436 -.L1442: ldr w1, [x1, 4] ldr w0, [x3, 12] + cmn w2, #1 + bne .L1466 +.L1472: + add w20, w20, 1 bl FtlGcUpdatePage - add w10, w10, 1 - and w10, w10, 65535 - b .L1435 -.L1436: + and w20, w20, 65535 + b .L1465 +.L1466: ldr w2, [x3, 8] - b .L1442 -.L1440: + b .L1472 +.L1470: mov w0, 0 - b .L1434 + b .L1464 .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 .L1444 - ldrh w0, [x1, 4] - cbnz w0, .L1445 -.L1444: - add x20, x19, :lo12:.LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldrh w2, [x19, 128] + cmp w2, w1 + beq .L1474 + ldrh w0, [x19, 132] + cbnz w0, .L1475 +.L1474: mov w0, 0 bl FtlGcFreeTempBlock - add x0, x20, 128 + add x0, x19, 128 strb wzr, [x0, 8] bl allocate_data_superblock - strh wzr, [x20, 3284] - strh wzr, [x20, 3296] + strh wzr, [x19, 3284] + strh wzr, [x19, 3296] bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush -.L1445: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 128 +.L1475: + 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, 3416] - cbnz w1, .L1527 - ldrh w1, [x0, 2584] - cmp w1, 47 - bls .L1527 - 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, .L1554 + ldrh w0, [x23, 2584] + cmp w0, 47 + bls .L1554 + adrp x0, .LANCHOR2+4 + ldrh w1, [x0, #:lo12:.LANCHOR2+4] + mov w0, 65535 + cmp w1, w0 + bne .L1479 +.L1482: + ldrh w0, [x23, 224] mov w1, 65535 - cmp w2, w1 - bne .L1449 -.L1452: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldrh w1, [x0, 224] - cmp w1, w2 - bne .L1450 -.L1451: - add x20, x19, :lo12:.LANCHOR0 + cmp w0, w1 + bne .L1480 +.L1481: bl FtlReadRefresh - mov w21, 65535 - ldr w0, [x20, 3228] - 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, 3228] - cmp w1, w21 - bne .L1453 - ldrh w21, [x20, 128] - cmp w21, w1 - bne .L1530 - ldrh w22, [x20, 226] - cmp w22, w21 - bne .L1453 - 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 .L1556 + ldrh w1, [x23, 228] mov w2, 1024 cmp w1, 24 mov w1, 5120 csel w1, w1, w2, cc cmp w0, w1 - bls .L1533 - strh wzr, [x20, 3960] - str wzr, [x20, 3228] + bls .L1483 + str wzr, [x23, 3228] + strh wzr, [x23, 3952] bl GetSwlReplaceBlock - and w21, w0, 65535 - cmp w21, w22 - bne .L1534 - ldrh w1, [x20, 228] - ldrh w0, [x20, 3226] + and w20, w0, 65535 + cmp w19, w0, uxth + bne .L1485 + ldrh w1, [x23, 228] + ldrh w0, [x23, 3226] cmp w1, w0 - bcs .L1456 + bcs .L1486 mov w0, 64 bl List_get_gc_head_node - and w0, w0, 65535 - cmp w0, w21 - beq .L1458 - ldr x1, [x20, 72] - ubfiz x0, x0, 1, 16 - ldrh w0, [x1, x0] + and w1, w0, 65535 + cmp w20, w0, uxth + beq .L1488 + ldr x0, [x23, 72] + ubfiz x1, x1, 1, 16 + ldrh w0, [x0, x1] cmp w0, 7 - bhi .L1459 + bhi .L1489 mov w0, 0 bl List_get_gc_head_node - and w22, w0, 65535 - mov w0, 128 - strh w0, [x20, 3226] - cmp w22, w21 - bne .L1455 -.L1458: - bl FtlGcReFreshBadBlk -.L1453: - cmp w27, 0 - mov w1, 65535 - ccmp w21, w1, 0, eq - bne .L1461 - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 228] - cmp w0, 24 - bhi .L1535 - cmp w0, 16 - ldrh w20, [x1, 306] - bls .L1463 - lsr w20, w20, 5 -.L1462: - add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1, 3224] - cmp w2, w0 - bcs .L1466 - ldrh w0, [x1, 128] - mov w2, 65535 - cmp w0, w2 - bne .L1467 - ldrh w2, [x1, 226] - cmp w2, w0 - bne .L1467 - ldrh w0, [x1, 3960] - cbnz w0, .L1468 - ldr w2, [x1, 2624] - ldr w3, [x1, 2620] - add w2, w2, w2, lsl 1 - cmp w3, w2, lsr 2 - bcs .L1469 -.L1468: - add x2, x19, :lo12:.LANCHOR0 - ldrh w1, [x2, 2692] - add w1, w1, w1, lsl 1 - asr w1, w1, 2 - strh w1, [x2, 3224] -.L1470: - add x19, x19, :lo12:.LANCHOR0 - str wzr, [x19, 3236] -.L1447: - ldr x1, [x29, 112] - add x24, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 136] - ldr x1, [x24] - eor x1, x2, x1 - cbz x1, .L1525 - bl __stack_chk_fail -.L1449: - ldrh w0, [x0, 128] - cmp w0, w1 - beq .L1452 + mov w2, 128 + strh w2, [x23, 3226] + and w1, w0, 65535 + cmp w20, w0, uxth + beq .L1488 + mov w20, w1 +.L1485: + 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 .L1488 +.L1479: + ldrh w1, [x23, 128] + cmp w1, w0 + beq .L1482 mov w0, 1 bl FtlGcFreeTempBlock - cbz w0, .L1452 + cbz w0, .L1482 mov w0, 1 - b .L1447 -.L1450: - ldrh w3, [x0, 226] - cmp w3, w2 - bne .L1451 - strh w1, [x0, 226] - mov w1, -1 - strh w1, [x0, 224] - b .L1451 -.L1459: - mov w0, 64 -.L1565: - strh w0, [x20, 3226] - b .L1458 -.L1456: - mov w0, 80 - b .L1565 -.L1534: - mov w22, w21 -.L1455: - add x0, x19, :lo12:.LANCHOR0 - ubfiz x1, x22, 1, 32 - mov w21, w22 - ldr x2, [x0, 72] - ldr x3, [x0, 2600] - ldrh w5, [x0, 3224] - 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 .L1458 -.L1530: - mov w21, w1 - b .L1453 -.L1533: - mov w21, w22 - b .L1453 -.L1463: - cmp w0, 12 - bls .L1464 - lsr w20, w20, 4 - b .L1462 -.L1464: - mov w1, w20 - cmp w0, 9 - lsr w20, w20, 2 - csel w20, w20, w1, cs - b .L1462 -.L1535: - mov w20, 1 - b .L1462 -.L1469: - mov w2, 18 - strh w2, [x1, 3224] - b .L1470 -.L1467: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2692] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - strh w0, [x1, 3224] -.L1466: - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 3312] - cbz w0, .L1536 - add w20, w20, 32 - and w20, w20, 65535 -.L1536: - mov w21, 65535 -.L1472: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldrh w1, [x0, 176] - cmp w1, w2 + b .L1477 +.L1480: + ldrh w2, [x23, 226] + cmp w2, w1 bne .L1481 - cmp w21, w1 - beq .L1482 - strh w21, [x0, 176] -.L1483: - add x5, x19, :lo12:.LANCHOR0 - mov w1, 65535 - ldrh w0, [x5, 176] - strb wzr, [x5, 184] - cmp w0, w1 - beq .L1481 - bl IsBlkInGcList - cbz w0, .L1486 + strh w0, [x23, 226] mov w0, -1 - strh w0, [x5, 176] -.L1486: - add x22, x19, :lo12:.LANCHOR0 - mov w0, 65535 - add x23, x22, 176 - ldrh w1, [x22, 176] - cmp w1, w0 - beq .L1481 - 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, 3962] - ldrh w0, [x0, x1, lsl 1] - strh w0, [x22, 3964] -.L1481: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - ldrh w2, [x0, 24] - cmp w2, w1 - beq .L1487 - ldrh w2, [x0, 80] - cmp w2, w1 - beq .L1487 - ldrh w0, [x0, 128] - cmp w0, w1 - bne .L1488 -.L1487: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 176] + strh w0, [x23, 224] + b .L1481 +.L1489: + mov w0, 64 +.L1584: + strh w0, [x23, 3226] .L1488: - adrp x23, .LANCHOR1 - add x23, x23, :lo12:.LANCHOR1 - add x23, x23, 672 -.L1523: - add x22, x19, :lo12:.LANCHOR0 + bl FtlGcReFreshBadBlk +.L1483: + ldr w1, [sp, 108] mov w0, 65535 - ldrh w25, [x22, 176] - cmp w25, w0 - bne .L1489 - mov w26, 2 - str wzr, [x22, 3236] -.L1490: - ldrh w5, [x22, 3232] - 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 .L1491 - strh wzr, [x22, 3232] - mov w0, 8 - b .L1447 -.L1461: - add x0, x19, :lo12:.LANCHOR0 - ldrh w2, [x0, 128] - cmp w2, w1 - bne .L1539 - ldrh w1, [x0, 226] - cmp w1, w2 - bne .L1539 - cmp w21, w1 - bne .L1539 - ldrh w1, [x0, 176] - cmp w1, w21 - beq .L1473 -.L1539: - mov w20, 1 - b .L1472 -.L1473: - ldrh w2, [x0, 228] - ldrh w1, [x0, 3224] - str wzr, [x0, 3236] - cmp w2, w1 - bls .L1474 - ldrh w1, [x0, 3960] - cbnz w1, .L1475 - ldr w1, [x0, 2624] - ldr w2, [x0, 2620] + ldrh w0, [x23, 228] + cmp w0, 24 + bhi .L1559 + ldrh w19, [x23, 306] + cmp w0, 16 + bls .L1493 + lsr w19, w19, 5 +.L1492: + ldrh w1, [x23, 3224] + cmp w1, w0 + bcs .L1495 + ldrh w1, [x23, 226] + ldrh w0, [x23, 128] + and w0, w0, w1 + mov w1, 65535 + cmp w1, w0, uxth + bne .L1496 + ldrh w0, [x23, 3952] + cbnz w0, .L1497 + ldr w1, [x23, 2624] + ldr w2, [x23, 2620] add w1, w1, w1, lsl 1 cmp w2, w1, lsr 2 - bcs .L1476 -.L1475: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2692] + bcs .L1560 +.L1497: + ldrh w1, [x23, 2692] + add w1, w1, w1, lsl 1 + lsr w1, w1, 2 +.L1498: + strh w1, [x23, 3224] + str wzr, [x23, 3236] +.L1477: + mrs x1, sp_el0 + ldr x2, [sp, 136] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1552 + bl __stack_chk_fail +.L1486: + mov w0, 80 + b .L1584 +.L1556: + mov w20, w19 + b .L1483 +.L1493: + cmp w0, 12 + bls .L1494 + lsr w19, w19, 4 + b .L1492 +.L1494: + cmp w0, 8 + bls .L1492 + lsr w19, w19, 2 + b .L1492 +.L1559: + mov w19, 1 + b .L1492 +.L1560: + mov w1, 18 + b .L1498 +.L1496: + ldrh w0, [x23, 2692] add w0, w0, w0, lsl 1 asr w0, w0, 2 - strh w0, [x1, 3224] -.L1477: + strh w0, [x23, 3224] +.L1495: + ldrh w0, [x23, 3312] + cbz w0, .L1561 + add w19, w19, 32 + and w19, w19, 65535 +.L1561: + mov w20, 65535 +.L1500: + ldrh w0, [x23, 176] + mov w1, 65535 + cmp w0, w1 + bne .L1508 + cmp w20, w0 + beq .L1509 + strh w20, [x23, 176] +.L1510: + ldrh w0, [x23, 176] + add x21, x23, 176 + strb wzr, [x21, 8] + mov w1, 65535 + cmp w0, w1 + beq .L1508 + bl IsBlkInGcList + cbz w0, .L1513 + mov w0, -1 + strh w0, [x23, 176] +.L1508: + ldrh w0, [x23, 176] + ldrh w1, [x23, 24] + cmp w1, w0 + beq .L1514 + ldrh w1, [x23, 80] + cmp w1, w0 + beq .L1514 + ldrh w1, [x23, 128] + cmp w1, w0 + bne .L1515 +.L1514: + mov w0, -1 + strh w0, [x23, 176] +.L1515: + adrp x21, .LANCHOR1 + add x21, x21, :lo12:.LANCHOR1 + add x21, x21, 568 +.L1550: + ldrh w24, [x23, 176] + mov w0, 65535 + cmp w24, w0 + bne .L1516 + mov w25, 2 + str wzr, [x23, 3236] +.L1517: + 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 .L1518 + mov w0, 8 + strh wzr, [x23, 3232] + b .L1477 +.L1491: + ldrh w19, [x23, 128] + ldrh w1, [x23, 226] + and w19, w19, w1 + and w19, w20, w19 + cmp w19, w0 + bne .L1562 + ldrh w0, [x23, 176] + cmp w0, w19 + beq .L1501 +.L1505: + mov w20, w19 +.L1562: + mov w19, 1 + b .L1500 +.L1501: + ldrh w1, [x23, 228] + ldrh w0, [x23, 3224] + str wzr, [x23, 3236] + cmp w1, w0 + bls .L1502 + ldrh w0, [x23, 3952] + cbnz w0, .L1503 + ldr w0, [x23, 2624] + ldr w1, [x23, 2620] + add w0, w0, w0, lsl 1 + cmp w1, w0, lsr 2 + bcs .L1563 +.L1503: + ldrh w0, [x23, 2692] + add w0, w0, w0, lsl 1 + lsr w0, w0, 2 +.L1504: + 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 .L1474 - ldrh w0, [x1, 3960] - b .L1447 -.L1476: - mov w1, 18 - strh w1, [x0, 3224] + bls .L1502 +.L1585: + ldrh w0, [x23, 3952] b .L1477 -.L1474: - add x20, x19, :lo12:.LANCHOR0 - ldrh w0, [x20, 3960] - cbnz w0, .L1539 - ldrh w5, [x20, 2692] - add w0, w5, w5, lsl 1 +.L1563: + mov w0, 18 + b .L1504 +.L1502: + ldrh w0, [x23, 3952] + cbnz w0, .L1505 + ldrh w20, [x23, 2692] + add w0, w20, w20, lsl 1 asr w0, w0, 2 - strh w0, [x20, 3224] + 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 .L1479 - ldrh w0, [x20, 228] - sub w5, w5, #1 - cmp w0, w5 - blt .L1479 + ble .L1506 + ldrh w0, [x23, 228] + sub w20, w20, #1 + cmp w0, w20 + blt .L1506 bl FtlReadRefresh - ldrh w0, [x20, 3960] - b .L1447 -.L1479: - cbnz w1, .L1539 - add x19, x19, :lo12:.LANCHOR0 + b .L1585 +.L1506: + cbnz w1, .L1505 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x19, 228] + ldrh w0, [x23, 228] add w0, w0, 1 - b .L1447 -.L1482: - ldrh w1, [x0, 226] - cmp w1, w21 - beq .L1483 - ldr x2, [x0, 72] - ubfiz x1, x1, 1, 16 - ldrh w1, [x2, x1] - cbnz w1, .L1484 - mov w1, -1 - strh w1, [x0, 226] -.L1484: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 226] - strh w1, [x0, 176] - mov w1, -1 - strh w1, [x0, 226] - b .L1483 -.L1491: - mov w0, w6 + b .L1477 +.L1509: + ldrh w0, [x23, 226] + cmp w0, w20 + beq .L1510 + ldr x1, [x23, 72] + ubfiz x0, x0, 1, 16 + ldrh w0, [x1, x0] + cbnz w0, .L1511 + mov w0, -1 + strh w0, [x23, 226] +.L1511: + ldrh w0, [x23, 226] + strh w0, [x23, 176] + mov w0, -1 + strh w0, [x23, 226] + b .L1510 +.L1518: + mov w0, w26 bl IsBlkInGcList - add w5, w5, 1 - cbz w0, .L1492 - strh w5, [x22, 3232] - b .L1490 -.L1492: - ldrh w4, [x22, 236] - ubfiz x1, x6, 1, 16 - ldrh w0, [x22, 306] - and w5, w5, 65535 - ldr x2, [x22, 72] - strh w5, [x22, 3232] - mul w0, w0, w4 - ldrh w3, [x2, x1] - sdiv w4, w0, w26 - cmp w3, w4 - bgt .L1494 - cmp w5, 48 - bls .L1495 - cmp w3, 8 - bls .L1495 - ldrh w3, [x22, 3284] - cmp w3, 35 - bhi .L1495 -.L1494: - strh wzr, [x22, 3232] -.L1495: - ldrh w1, [x2, x1] + add w1, w22, 1 + and w1, w1, 65535 + strh w1, [x23, 3232] + cbnz w0, .L1517 + 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 .L1521 + cmp w1, 48 + bls .L1522 + cmp w4, 8 + bls .L1522 + ldrh w1, [x23, 3284] + cmp w1, 35 + bhi .L1522 +.L1521: + strh wzr, [x23, 3232] +.L1522: + ldrh w1, [x3, x2] cmp w0, w1 - bgt .L1496 - cmp w21, w25 - bne .L1496 - ldrh w0, [x22, 3232] + bgt .L1523 + cmp w20, w24 + bne .L1523 + ldrh w0, [x23, 3232] cmp w0, 3 - bhi .L1496 + bhi .L1523 mov w0, -1 - strh wzr, [x22, 3232] - strh w0, [x22, 176] -.L1566: - ldrh w0, [x22, 3960] - b .L1447 -.L1496: - cbnz w1, .L1497 + strh w0, [x23, 176] + strh wzr, [x23, 3232] + b .L1585 +.L1523: + cbnz w1, .L1524 mov w0, -1 bl decrement_vpc_count - ldrh w0, [x22, 3232] + ldrh w0, [x23, 3232] add w0, w0, 1 - strh w0, [x22, 3232] - b .L1490 -.L1497: - add x0, x19, :lo12:.LANCHOR0 - strb wzr, [x0, 184] - ldrh w0, [x0, 24] - cmp w0, w6 - bne .L1498 - adrp x0, .LC8 + strh w0, [x23, 3232] + b .L1517 +.L1524: + ldrh w0, [x23, 24] + strb wzr, [x23, 184] + cmp w0, w26 + bne .L1525 + 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 -.L1498: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - ldrh w0, [x0, 80] +.L1525: + ldrh w1, [x23, 176] + ldrh w0, [x23, 80] cmp w1, w0 - bne .L1499 - adrp x0, .LC8 + bne .L1526 + 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 -.L1499: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 176] - ldrh w0, [x0, 128] +.L1526: + ldrh w1, [x23, 176] + ldrh w0, [x23, 128] cmp w1, w0 - bne .L1500 - adrp x0, .LC8 + bne .L1527 + 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 -.L1500: - add x22, x19, :lo12:.LANCHOR0 - add x25, x22, 176 - mov x0, x25 +.L1527: + add x22, x23, 176 + mov x0, x22 bl make_superblock - ldrh w1, [x22, 176] - ldr x0, [x22, 72] - strh wzr, [x22, 3962] + ldrh w1, [x23, 176] + ldr x0, [x23, 72] + strh wzr, [x23, 3954] ldrh w0, [x0, x1, lsl 1] - strh w0, [x22, 3964] - strh wzr, [x22, 178] - strb wzr, [x22, 182] -.L1489: - add x1, x19, :lo12:.LANCHOR0 + strh wzr, [x23, 178] + strb wzr, [x23, 182] + strh w0, [x23, 3956] +.L1516: mov w0, 1 - str w0, [x1, 3416] - ldrh w26, [x1, 306] - cbz w27, .L1501 - 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, .L1528 + 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 -.L1501: - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 178] - add w1, w0, w20 - cmp w1, w26 - ble .L1502 - sub w20, w26, w0 - and w20, w20, 65535 -.L1502: - mov w28, 0 -.L1503: - cmp w20, w28, uxth - bls .L1511 - add x0, x19, :lo12:.LANCHOR0 + add w19, w0, w19 + and w19, w19, 65535 +.L1528: + ldrh w0, [x23, 178] + ldr w2, [sp, 104] + add w1, w0, w19 + cmp w1, w2 + ble .L1529 + sub w0, w2, w0 + and w19, w0, 65535 +.L1529: + add x26, x23, 176 + mov w27, 0 +.L1530: + ldrh w0, [x26, 2] + cmp w19, w27, uxth + bls .L1538 + 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 .L1512 -.L1505: - ldrh w2, [x3] - cmp w2, w6 - beq .L1504 - ldr x5, [x0, 3272] + mov w2, 0 + mov w5, 65535 + b .L1539 +.L1532: + ldrh w3, [x4, 16] + cmp w3, w5 + beq .L1531 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] -.L1504: - add w1, w1, 1 - add x3, x3, 2 - and w1, w1, 65535 -.L1512: - cmp w1, w7 - bne .L1505 - add x24, x19, :lo12:.LANCHOR0 + orr w3, w1, w3, lsl 10 + str w3, [x0, 4] +.L1531: + add w2, w2, 1 + add x4, x4, 2 + and w2, w2, 65535 +.L1539: + ldr x0, [x23, 3272] + cmp w2, w7 + bne .L1532 + ldrb w2, [x26, 8] mov w1, w22 - mov x25, 0 - ldrb w2, [x24, 184] - ldr x0, [x24, 3272] + mov x24, 0 bl FlashReadPages - ubfiz x0, x22, 5, 16 - mov x22, x24 - str x0, [x29, 120] -.L1506: - ldr x0, [x29, 120] - cmp x0, x25 - bne .L1510 - add w28, w28, 1 - b .L1503 -.L1510: - ldr x0, [x22, 3272] - add x1, x0, x25 - ldr w0, [x0, x25] + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 + str x0, [sp, 112] +.L1533: + cmp w22, w24, uxth + bhi .L1537 + add w27, w27, 1 + b .L1530 +.L1537: + ldr x0, [x23, 3272] + lsl x28, x24, 5 + add x1, x0, x24, lsl 5 + ldr w0, [x0, x28] cmn w0, #1 - beq .L1507 - ldr x24, [x1, 16] + beq .L1534 + ldr x25, [x1, 16] mov w0, 61589 - ldrh w1, [x24] + ldrh w1, [x25] cmp w1, w0 - bne .L1507 - ldr w5, [x24, 8] - cmn w5, #1 - bne .L1508 - str w5, [x29, 104] + bne .L1534 + ldr w4, [x25, 8] + cmn w4, #1 + bne .L1535 + 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] -.L1508: + ldr w4, [sp, 120] +.L1535: + add x1, sp, 128 mov w2, 0 - add x1, x29, 128 - mov w0, w5 + mov w0, w4 bl log2phys - ldr x0, [x22, 3272] - 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 .L1507 - ldrh w1, [x22, 3962] - ldr x2, [x22, 3440] + bne .L1534 + ldrh w1, [x23, 3954] + ldr x2, [x23, 3432] add w1, w1, 1 - strh w1, [x22, 3962] - ldr w1, [x22, 3240] + 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, 3240] - ldr x1, [x22, 3440] - add x0, x1, x0, lsl 5 - ldr x1, [x22, 3272] - 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, 2664] - str w0, [x24, 4] - ldr w0, [x22, 3240] + 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, 3240] - ldr x0, [x22, 3272] - 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, 3240] + ldr x2, [sp, 120] + ldr w0, [x23, 3240] + ldrb w1, [x2, 7] cmp w1, w0 - beq .L1509 - ldrh w0, [x22, 132] - cbnz w0, .L1507 -.L1509: + beq .L1536 + ldrh w0, [x2, 4] + cbnz w0, .L1534 +.L1536: bl Ftl_gc_temp_data_write_back - cbz w0, .L1507 - add x19, x19, :lo12:.LANCHOR0 - mov w0, -1 - strh wzr, [x19, 178] - strh w0, [x19, 176] - str wzr, [x19, 3416] - ldrh w0, [x19, 3960] - b .L1447 -.L1507: - add x25, x25, 32 - b .L1506 -.L1511: - 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 .L1513 - ldr w0, [x22, 3240] - cbz w0, .L1514 + cbz w0, .L1534 + mov w0, 65535 + str w0, [x23, 176] + str wzr, [x23, 3408] + b .L1585 +.L1534: + add x24, x24, 1 + b .L1533 +.L1538: + add w19, w19, w0 + ldr w0, [sp, 104] + and w19, w19, 65535 + strh w19, [x26, 2] + cmp w0, w19 + bhi .L1540 + ldr w0, [x23, 3240] + cbz w0, .L1541 bl Ftl_gc_temp_data_write_back - cbz w0, .L1514 - str wzr, [x22, 3416] - b .L1566 -.L1514: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 3962] - cbnz w1, .L1515 - ldrh w2, [x0, 176] - ldr x1, [x0, 72] - ldrh w1, [x1, x2, lsl 1] - cbz w1, .L1515 - mov x20, x0 - mov w22, 0 -.L1516: - ldr w0, [x20, 2624] - cmp w22, w0 - bcs .L1521 + cbz w0, .L1541 + str wzr, [x23, 3408] + b .L1585 +.L1541: + ldrh w0, [x23, 3954] + cbnz w0, .L1542 + ldrh w1, [x23, 176] + ldr x0, [x23, 72] + ldrh w0, [x0, x1, lsl 1] + cbz w0, .L1542 + mov w19, 0 + b .L1543 +.L1546: + 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 .L1517 - lsr w0, w0, 10 + beq .L1544 + ubfx x0, x0, 10, 16 bl P2V_block_in_plane - ldrh w1, [x20, 176] + ldrh w1, [x23, 176] cmp w1, w0, uxth - bne .L1517 -.L1521: - add x0, x19, :lo12:.LANCHOR0 - ldr w1, [x0, 2624] - cmp w22, w1 - bcc .L1515 - ldrh w2, [x0, 176] - ldr x1, [x0, 72] - strh wzr, [x1, x2, lsl 1] - ldrh w0, [x0, 176] + beq .L1545 +.L1544: + add w19, w19, 1 +.L1543: + ldr w0, [x23, 2624] + cmp w19, w0 + bcc .L1546 +.L1548: + 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 -.L1515: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 176] -.L1513: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 228] - str wzr, [x1, 3416] +.L1542: + mov w0, -1 + strh w0, [x23, 176] +.L1540: + ldrh w0, [x23, 228] + str wzr, [x23, 3408] cmp w0, 2 - bhi .L1522 - ldrh w20, [x1, 306] - b .L1523 -.L1517: - add w22, w22, 1 - b .L1516 -.L1522: - ldrh w1, [x1, 3960] + bhi .L1549 + ldrh w19, [x23, 306] + b .L1550 +.L1545: + ldr w0, [x23, 2624] + cmp w19, w0 + bcc .L1542 + b .L1548 +.L1549: + ldrh w1, [x23, 3952] cmp w1, 0 csinc w0, w1, w0, ne - b .L1447 -.L1527: + b .L1477 +.L1554: mov w0, 0 - b .L1447 -.L1525: + b .L1477 +.L1513: + 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 .L1508 +.L1552: 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 .L1568 - mov x2, x22 - mov w1, w25 + ldr x2, [x1, 1376] + str x2, [sp, 152] + mov x2, 0 + cmp w0, 16 + bne .L1587 + mov x2, x3 + mov w1, w23 add w0, w26, 256 bl FtlVendorPartRead mov w19, w0 -.L1567: - 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, .L1589 +.L1586: + mrs x0, sp_el0 + ldr x1, [sp, 152] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1609 bl __stack_chk_fail -.L1568: - adrp x1, .LANCHOR0 - add x3, x1, :lo12:.LANCHOR0 - str x1, [x29, 104] - ldr w0, [x3, 344] - cmp w26, w0 - bcs .L1592 - cmp w25, w0 - bhi .L1592 - add w1, w26, w25 - str w1, [x29, 144] +.L1587: + adrp x3, .LANCHOR0 + add x28, x3, :lo12:.LANCHOR0 + ldr w0, [x28, 344] + cmp w0, w26 + bls .L1612 + cmp w0, w23 + bcc .L1612 + add w1, w26, w23 + str w1, [sp, 116] cmp w0, w1 - bcc .L1592 + bcc .L1612 adrp x0, .LANCHOR2 ldr w19, [x0, #:lo12:.LANCHOR2] cmn w19, #1 - beq .L1567 - ldrh w0, [x3, 262] - mov x27, x3 - mov w23, 0 - mov w28, 0 + beq .L1586 + 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, 2656] - add w21, w21, 1 - add w0, w0, w25 - str w0, [x3, 2656] - ldr w0, [x3, 2628] - add w0, w0, w21 - str w0, [x3, 2628] -.L1570: - cbnz w21, .L1587 - ldr x0, [x29, 104] - add x0, x0, :lo12:.LANCHOR0 - ldrh w1, [x0, 3312] - cbnz w1, .L1588 - 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] +.L1589: + cbnz w24, .L1607 + ldrh w0, [x28, 3312] + cbnz w0, .L1608 + ldrh w0, [x28, 228] cmp w0, 31 - bhi .L1567 -.L1588: + bhi .L1586 +.L1608: mov w1, 1 mov w0, 0 bl rk_ftl_garbage_collect - b .L1567 -.L1587: - add x1, x29, 164 + b .L1586 +.L1607: + 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 .L1571 - mov w6, 0 -.L1572: - ldrh w0, [x27, 262] - cmp w6, w0 - bcc .L1574 -.L1575: - add w20, w20, 1 - subs w21, w21, #1 - beq .L1579 - ldrh w0, [x27, 236] - cmp w28, w0, lsl 2 - bne .L1570 -.L1579: - cbz w28, .L1570 - ldr x0, [x27, 3432] - 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] -.L1586: - ldr x0, [x27, 3432] - ldr w2, [x29, 156] - add x0, x0, x28 - ldr w1, [x0, 24] - cmp w2, w1 - bne .L1581 - ldr x1, [x0, 8] - ldr x0, [x27, 3480] - cmp x1, x0 - bne .L1582 - ldr x0, [x29, 136] - ldr w2, [x29, 132] - add x1, x1, x0 - mov x0, x22 -.L1602: - bl ftl_memcpy -.L1582: - ldr x0, [x27, 3432] - add x0, x0, x28 - ldr x1, [x0, 16] - ldr w2, [x0, 24] - ldr w1, [x1, 8] - cmp w2, w1 - beq .L1583 - ldr w1, [x27, 2784] - add w1, w1, 1 - str w1, [x27, 2784] -.L1583: - ldr w2, [x0] - cmn w2, #1 - bne .L1584 - ldr w1, [x27, 2784] - mov w19, w2 - add w1, w1, 1 - str w1, [x27, 2784] -.L1584: - ldr w1, [x0] - cmp w1, 256 - bne .L1585 - ldr w0, [x0, 4] - lsr w0, w0, 10 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L1585: - ldr x0, [x29, 120] - add x28, x28, 32 - cmp x0, x28 - bne .L1586 - mov w28, 0 - b .L1570 -.L1574: - madd w0, w20, w0, w6 + bne .L1622 + mov w27, 0 + b .L1590 +.L1593: + madd w0, w0, w22, w27 cmp w26, w0 - bhi .L1573 - ldr w1, [x29, 144] + bhi .L1592 + ldr w1, [sp, 116] cmp w1, w0 - bls .L1573 + bls .L1592 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] -.L1573: - add w6, w6, 1 - b .L1572 -.L1571: - ldr x0, [x27, 3432] - 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 .L1576 - ldr x1, [x27, 3432] - ldr x6, [x27, 3480] - 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 .L1577 - str x22, [x1, 8] -.L1577: - ldr x0, [x27, 3432] - ldr x1, [x27, 3528] - 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 .L1575 -.L1576: - cmp w20, w24 - bne .L1578 - ldr x6, [x27, 3432] - ldr x1, [x27, 3488] - 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 .L1577 - sub w1, w1, w26 - lsl w1, w1, 9 - add x1, x22, x1 - str x1, [x6, 8] - b .L1577 -.L1578: - ldr x1, [x27, 3432] - 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 .L1577 -.L1581: - cmp w24, w1 - bne .L1582 - ldr x1, [x0, 8] - ldr x0, [x27, 3488] - cmp x1, x0 - bne .L1582 - 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 .L1602 .L1592: + add w27, w27, 1 +.L1590: + ldrh w0, [x28, 262] + cmp w0, w27 + bhi .L1593 +.L1594: + add w22, w22, 1 + subs w24, w24, #1 + beq .L1599 + ldrh w0, [x28, 236] + cmp w20, w0, lsl 2 + bne .L1589 +.L1599: + cbz w20, .L1589 + 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] +.L1606: + 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 .L1601 + ldr x1, [x0, 8] + ldr x0, [x28, 3472] + cmp x1, x0 + bne .L1602 + ldr x0, [sp, 120] + str x6, [sp, 136] + ldr w2, [sp, 128] + add x1, x1, x0 + mov x0, x21 +.L1625: + bl ftl_memcpy + ldr x6, [sp, 136] +.L1602: + ldr x1, [x28, 3424] + add x0, x1, x6 + ldr x2, [x0, 16] + ldr w7, [x0, 24] + ldr w2, [x2, 8] + cmp w7, w2 + beq .L1603 + ldr w2, [x28, 2784] + add w2, w2, 1 + str w2, [x28, 2784] +.L1603: + ldr w7, [x1, x6] + cmn w7, #1 + bne .L1604 + ldr w2, [x28, 2784] + mov w19, w7 + add w2, w2, 1 + str w2, [x28, 2784] +.L1604: + ldr w1, [x1, x6] + cmp w1, 256 + bne .L1605 + ldr w0, [x0, 4] + ubfx x0, x0, 10, 16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1605: + add x27, x27, 1 + cmp w20, w27 + bhi .L1606 + mov w20, 0 + b .L1589 +.L1622: + 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 .L1595 + 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] +.L1596: + 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 .L1594 +.L1595: + ldr x2, [x28, 3424] + mul w0, w22, w1 + add x2, x2, x5 + cmp w22, w25 + bne .L1597 + ldr w3, [sp, 116] + sub w3, w3, w0 + str w3, [sp, 112] + cmp w3, w1 + beq .L1597 + ldr x0, [x28, 3480] +.L1624: + str x0, [x2, 8] + b .L1596 +.L1597: + sub w0, w0, w26 + lsl w0, w0, 9 + add x0, x21, x0 + b .L1624 +.L1601: + cmp w1, w25 + bne .L1602 + ldr x1, [x0, 8] + ldr x0, [x28, 3480] + cmp x1, x0 + bne .L1602 + 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 .L1625 +.L1612: mov w19, -1 - b .L1567 -.L1589: + b .L1586 +.L1609: + 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 .L1606 - 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 .L1629 + ldr w1, [sp, 120] + mov x2, x3 + add w0, w21, 256 bl FtlVendorPartWrite -.L1605: - ldr x1, [x29, 112] - add x1, x1, :lo12:__stack_chk_guard - ldr x2, [x29, 232] - ldr x1, [x1] - eor x1, x2, x1 - cbz x1, .L1642 +.L1628: + mrs x1, sp_el0 + ldr x2, [sp, 216] + ldr x3, [x1, 1376] + subs x2, x2, x3 + mov x3, 0 + beq .L1666 bl __stack_chk_fail -.L1606: - adrp x19, .LANCHOR0 - add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x1, 344] - cmp w23, w0 - bcs .L1645 - cmp w26, w0 - bhi .L1645 - add w2, w23, w26 - str w2, [x29, 124] - cmp w0, w2 - bcc .L1645 - adrp x2, .LANCHOR2 - str x2, [x29, 152] - add x3, x2, :lo12:.LANCHOR2 - ldr w0, [x2, #:lo12:.LANCHOR2] +.L1629: + adrp x4, .LANCHOR0 + add x24, x4, :lo12:.LANCHOR0 + ldr w0, [x24, 344] + cmp w0, w21 + bls .L1669 + ldr w1, [sp, 120] + cmp w0, w1 + bcc .L1669 + add w1, w21, w1 + str w1, [sp, 124] + cmp w0, w1 + bcc .L1669 + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] cmn w0, #1 - beq .L1605 + beq .L1628 mov w0, 2048 - add w2, w23, w26 - str w0, [x1, 3968] - 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, 2652] + 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, 2652] - ldr w0, [x1, 2636] - add w0, w0, w24 - str w0, [x1, 2636] - ldr w0, [x3, 8] - cbz w0, .L1608 - ldrh w0, [x20, 4] - add x1, x1, 80 - cmp w0, 0 - csel x20, x1, x20, eq -.L1608: - adrp x0, .LANCHOR1 - mov w21, w25 - add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 696 - str x0, [x29, 176] -.L1609: - cbnz w24, .L1637 - 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 .L1638 -.L1640: - mov w0, 0 - b .L1605 -.L1637: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x20, 6] - ldrh w0, [x0, 236] - cmp w1, w0 - bcc .L1610 - ldr x1, [x29, 176] - adrp x0, .LC8 - mov w2, 1041 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L1610: - ldrh w0, [x20, 4] - cbnz w0, .L1611 - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 24 - cmp x20, x1 - bne .L1612 - add x0, x0, 80 - ldrh w1, [x0, 4] - cbnz w1, .L1613 - bl allocate_new_data_superblock - ldr x0, [x29, 152] - add x0, x0, :lo12:.LANCHOR2 - str wzr, [x0, 8] -.L1613: - 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 -.L1614: - ldrh w0, [x20, 4] - cbnz w0, .L1611 - mov x0, x20 - bl allocate_new_data_superblock -.L1611: - 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, .L1631 + ldrh w1, [x20, 4] + add x0, x24, 80 + cmp w1, 0 + csel x20, x0, x20, eq +.L1631: + adrp x23, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR1 + adrp x28, .LC9 + mov w19, w27 + add x23, x23, 591 + add x28, x28, :lo12:.LC9 +.L1632: + cbnz w26, .L1662 + ldr w1, [sp, 136] + mov w0, 0 + bl rk_ftl_garbage_collect + ldrh w0, [x24, 228] + cmp w0, 5 + bls .L1674 +.L1665: + mov w0, 0 + b .L1628 +.L1662: ldrb w1, [x20, 6] - ldrh w0, [x0, 236] + ldrh w0, [x24, 236] cmp w1, w0 - bcc .L1615 - ldr x1, [x29, 176] - adrp x0, .LC8 - mov w2, 1074 - add x0, x0, :lo12:.LC8 + bcc .L1633 + mov x1, x23 + mov x0, x28 + mov w2, 1041 bl sftl_printk -.L1615: - str xzr, [x29, 184] -.L1616: - ldr w1, [x29, 144] - ldr w22, [x29, 184] - cmp w22, w1 - bcc .L1635 - mov x22, x1 -.L1617: - add x0, x19, :lo12:.LANCHOR0 - mov x3, x20 - mov w2, 0 - mov w1, w22 - ldr x0, [x0, 3448] - bl FtlProgPages - cmp w24, w22 - bcs .L1636 - ldr x1, [x29, 176] - adrp x0, .LC8 - mov w2, 1152 - add x0, x0, :lo12:.LC8 - bl sftl_printk -.L1636: - sub w24, w24, w22 - b .L1609 -.L1612: - ldr x0, [x29, 152] +.L1633: + ldrh w0, [x20, 4] + cbnz w0, .L1634 + add x0, x24, 24 + cmp x20, x0 + bne .L1635 + ldrh w1, [x24, 84] + add x0, x24, 80 + cbnz w1, .L1636 + bl allocate_new_data_superblock + adrp x0, .LANCHOR2 add x0, x0, :lo12:.LANCHOR2 str wzr, [x0, 8] - ldrh w0, [x1, 4] - cbnz w0, .L1650 +.L1636: + add x0, x24, 24 + bl allocate_new_data_superblock + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldr w0, [x0, 8] + cbnz w0, .L1673 +.L1638: + add x20, x24, 24 +.L1637: + ldrh w0, [x20, 4] + cbnz w0, .L1634 mov x0, x20 bl allocate_new_data_superblock - b .L1614 -.L1650: - mov x20, x1 - b .L1611 -.L1635: +.L1634: ldrh w0, [x20, 4] - cbz w0, .L1617 - 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 .L1639 + mov x1, x23 + mov x0, x28 + mov w2, 1074 + bl sftl_printk +.L1639: + 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] +.L1640: + ldr w0, [sp, 164] + ldr w22, [sp, 104] + cmp w19, w0 + bne .L1660 + ldr w22, [sp, 140] +.L1641: + ldr x0, [x24, 3440] + mov x3, x20 + mov w1, w22 mov w2, 0 - mov w0, w21 + bl FtlProgPages + cmp w26, w22 + bcs .L1661 + mov x1, x23 + mov x0, x28 + mov w2, 1152 + bl sftl_printk +.L1661: + sub w26, w26, w22 + b .L1632 +.L1635: + adrp x1, .LANCHOR2 + add x1, x1, :lo12:.LANCHOR2 + ldrh w0, [x0, 4] + str wzr, [x1, 8] + cbnz w0, .L1638 + mov x0, x20 + bl allocate_new_data_superblock + b .L1637 +.L1673: + add x20, x24, 80 + b .L1637 +.L1660: + ldrh w0, [x20, 4] + cbz w0, .L1641 + 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, 3448] - 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, 3448] + 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, 3528] - 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 .L1618 - cmp w21, w25 - bne .L1619 - 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] -.L1620: - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x29, 168] - ldrh w1, [x0, 262] - cmp w2, w1 - bne .L1621 - ldr x0, [x0, 3448] - cmp w21, w25 - add x4, x0, x28 - bne .L1622 - str x27, [x4, 8] -.L1623: - 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 .L1642 + cmp w19, w27 + bne .L1643 + 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] +.L1644: + ldr x0, [sp, 112] + ldr x3, [x24, 3440] + add x3, x3, x0 + ldr w0, [sp, 132] cmp w1, w0 - bcc .L1632 - ldr x1, [x29, 176] - adrp x0, .LC8 + bne .L1645 + 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] +.L1647: + ldrb w1, [x20, 6] + ldrh w0, [x24, 236] + cmp w1, w0 + bcc .L1657 + mov x1, x23 + mov x0, x28 mov w2, 1143 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1632: - ldp x1, x2, [x29, 128] +.L1657: + ldp x2, x1, [sp, 144] mov w0, -3947 strh w0, [x1, x2] - add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x1, 2664] - stp w0, w21, [x22, 4] - add w21, w21, 1 - add w0, w0, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x1, 2664] - 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 .L1616 -.L1619: - ldr w0, [x29, 124] - ldrh w2, [x3, 262] - msub w2, w21, w2, w0 + str x0, [sp, 104] + b .L1640 +.L1643: + ldr w0, [sp, 124] + msub w2, w1, w19, w0 and w0, w2, 65535 - stp wzr, w0, [x29, 164] - b .L1620 -.L1622: - ldr w0, [x29, 168] -.L1657: - mul w0, w0, w21 - sub w0, w0, w23 - lsl w0, w0, 9 - add x0, x27, x0 - str x0, [x4, 8] - b .L1623 -.L1621: - ldr x1, [x0, 3448] - cmp w21, w25 - add x1, x1, x28 - bne .L1624 - ldr x0, [x0, 3480] -.L1656: - str x0, [x1, 8] - ldr w0, [x29, 196] + stp wzr, w0, [sp, 128] + b .L1644 +.L1645: + cmp w19, w27 + bne .L1648 + ldr x0, [x24, 3472] +.L1680: + str x0, [x3, 8] + ldr w0, [sp, 180] cmn w0, #1 - beq .L1626 - add x5, x19, :lo12:.LANCHOR0 - str w0, [x29, 204] - str w21, [x29, 224] + beq .L1650 + str w19, [sp, 208] mov w2, 0 - str x5, [x29, 104] - ldr x0, [x5, 3448] - 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 .L1627 - ldr w0, [x5, 2784] - mov w2, w21 + bne .L1651 + ldr w0, [x24, 2784] + mov w2, w19 add w0, w0, 1 - str w0, [x5, 2784] - adrp x0, .LC125 - add x0, x0, :lo12:.LC125 - ldr w1, [x22, 8] - bl sftl_printk -.L1630: - ldr w0, [x29, 168] - cmp w21, w25 - lsl w2, w0, 9 - add x0, x19, :lo12:.LANCHOR0 - bne .L1631 - ldr x0, [x0, 3448] - mov x1, x27 - add x4, x0, x28 - ldr w0, [x29, 164] - ldr x3, [x4, 8] - lsl w0, w0, 9 - add x0, x3, x0 -.L1658: - bl ftl_memcpy - b .L1623 -.L1624: - ldr x0, [x0, 3488] - b .L1656 -.L1627: - ldr w0, [x22, 8] - cmp w21, w0 - beq .L1629 - ldr w0, [x5, 2784] - mov w2, w21 - add w0, w0, 1 - str w0, [x5, 2784] + str w0, [x24, 2784] adrp x0, .LC126 add x0, x0, :lo12:.LC126 ldr w1, [x22, 8] bl sftl_printk -.L1629: +.L1655: + ldr w0, [sp, 132] + cmp w19, w27 + lsl w2, w0, 9 + bne .L1656 + 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 +.L1681: + bl ftl_memcpy + b .L1647 +.L1648: + ldr x0, [x24, 3480] + b .L1680 +.L1651: ldr w0, [x22, 8] - cmp w21, w0 - beq .L1630 - ldr x1, [x29, 176] - mov w2, 1128 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + cmp w0, w19 + beq .L1655 + 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 .L1630 -.L1626: - add x1, x19, :lo12:.LANCHOR0 - ldr x0, [x1, 3448] - ldrh w2, [x1, 314] + ldr w0, [x22, 8] + cmp w0, w19 + beq .L1655 + mov x1, x23 + mov x0, x28 + mov w2, 1128 + bl sftl_printk + b .L1655 +.L1650: + ldrh w2, [x24, 314] mov w1, 0 - add x0, x0, x28 - ldr x0, [x0, 8] + ldr x0, [x3, 8] bl ftl_memset - b .L1630 -.L1631: - ldrh w1, [x0, 262] - ldr x0, [x0, 3448] - add x4, x0, x28 - mul w1, w1, w21 - sub w1, w1, w23 - ldr x0, [x4, 8] + b .L1655 +.L1656: + 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 .L1658 -.L1618: - ldr x0, [x3, 3448] - add x4, x0, x28 - ldrh w0, [x3, 262] - b .L1657 -.L1638: - mov w20, 256 + add x1, x25, x1 + ldr x0, [x0, 8] + b .L1681 +.L1642: + 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 .L1647 +.L1674: + mov w19, 256 mov w21, 65535 - mov w22, 128 -.L1641: - ldrh w0, [x19, 176] - cmp w0, w21 - bne .L1639 - ldrh w0, [x19, 226] - cmp w0, w21 - bne .L1639 + mov w20, 128 +.L1663: + ldrh w0, [x24, 176] + ldrh w1, [x24, 226] + and w0, w0, w1 + cmp w21, w0, uxth + bne .L1664 mov w0, 0 bl List_get_gc_head_node bl FtlGcRefreshBlock -.L1639: +.L1664: mov w1, 1 - strh w22, [x19, 3226] mov w0, w1 - strh w22, [x19, 3224] + 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 .L1640 - subs w20, w20, #1 - bne .L1641 - b .L1640 -.L1645: + bhi .L1665 + subs w19, w19, #1 + bne .L1663 + b .L1665 +.L1669: mov w0, -1 - b .L1605 -.L1642: + b .L1628 +.L1666: 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, 3720 + 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, 3456] - str x0, [x20, 8] - ldr x0, [x21, 3520] - 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, 2696] + ldrh w0, [x19, 2696] mov w1, 65535 cmp w0, w1 - bne .L1662 -.L1673: + bne .L1685 +.L1697: mov w0, -1 -.L1661: +.L1684: 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 -.L1662: - add x23, x21, 2696 +.L1685: + 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, 2696] - add x24, x1, 712 -.L1664: - tbz w19, #31, .L1670 + 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 +.L1687: + tbz w20, #31, .L1694 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 600 mov w2, 1474 - add x1, x1, 712 - adrp x0, .LC8 - add x0, x0, :lo12:.LC8 + adrp x0, .LC9 + add x0, x0, :lo12:.LC9 bl sftl_printk - b .L1669 -.L1670: - orr w0, w19, w23, lsl 10 - str w0, [x20, 4] - ldr x0, [x21, 3456] + b .L1693 +.L1694: + 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, .L1665 - ldr w0, [x20] + ldr x0, [x25, 16] + ldr w23, [x0, 12] + ldr w0, [x25] cmn w0, #1 - beq .L1665 - ldrh w1, [x21, 314] - ldr x0, [x20, 8] + cbz w23, .L1688 + beq .L1689 + ldrh w1, [x19, 314] + ldr x0, [x25, 8] bl js_hash - cmp w7, w0 - beq .L1665 - ldrh w4, [x21, 2700] 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, .L1666 - ldrh w0, [x21, 2700] cmp w23, w0 - beq .L1666 - ldrh w19, [x21, 308] - sxth w23, w0 -.L1668: - sub w19, w19, #1 - sxth w19, w19 - b .L1664 -.L1666: + beq .L1690 + 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, .L1691 + ldrh w0, [x19, 2700] + cmp w22, w0 + beq .L1691 + ldrh w20, [x19, 308] + sxth w22, w0 +.L1689: + sub w20, w20, #1 + sxth w20, w20 + b .L1687 +.L1691: mov w0, -1 - str w0, [x20] -.L1665: - ldr w0, [x20] - cmn w0, #1 - beq .L1668 - ldr x0, [x21, 3456] - ldr w1, [x0] - mov w0, 19539 - movk w0, 0x4654, lsl 16 - cmp w1, w0 - bne .L1668 - ldr x0, [x21, 3520] + str w0, [x25] + b .L1689 +.L1688: + beq .L1689 +.L1690: + ldr x0, [x19, 3448] + ldr w0, [x0] + cmp w0, w24 + bne .L1689 + ldr x0, [x19, 3512] ldrh w1, [x0] mov w0, 61604 cmp w1, w0 - bne .L1668 -.L1669: - add x1, x22, :lo12:.LANCHOR0 - ldrh w0, [x1, 244] - ldrh w1, [x1, 314] + bne .L1689 +.L1693: + ldrh w0, [x19, 244] + ldrh w1, [x19, 314] add x0, x0, 24 cmp x1, x0, lsl 1 - bcs .L1672 + bcs .L1696 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 600 + add x0, x0, :lo12:.LC9 mov w2, 1476 - add x1, x1, 712 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1672: - add x19, x22, :lo12:.LANCHOR0 +.L1696: + ldr x1, [x19, 3720] + add x21, x19, 2512 mov w2, 48 - add x20, x19, 2512 - mov x0, x20 - ldr x1, [x19, 3728] + mov x0, x21 bl ftl_memcpy ldr x0, [x19, 72] ldrh w2, [x19, 244] - ldr x1, [x19, 3728] + ldr x1, [x19, 3720] lsl w2, w2, 1 add x1, x1, 48 bl ftl_memcpy @@ -11566,213 +12995,213 @@ mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - bne .L1673 + bne .L1697 ldrh w1, [x19, 2520] ldrb w2, [x19, 2522] ldrh w0, [x19, 258] strh w1, [x19, 2702] cmp w2, w0 - bne .L1673 + bne .L1697 ldrh w0, [x19, 306] ldrh w2, [x19, 262] ldrh w3, [x19, 236] - str w1, [x19, 3972] + str w1, [x19, 3964] mul w0, w0, w1 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, 2692] - bls .L1674 + cmp w1, w2 + bls .L1698 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC8 + adrp x0, .LC9 + add x1, x1, 600 + add x0, x0, :lo12:.LC9 mov w2, 1498 - add x1, x1, 712 - add x0, x0, :lo12:.LC8 bl sftl_printk -.L1674: - add x0, x22, :lo12:.LANCHOR0 - mov w3, -1 - ldrh w2, [x0, 2528] - ldrh w4, [x0, 2526] - strh w4, [x0, 24] - lsr w5, w2, 6 +.L1698: + 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, 2668] - strb wzr, [x0, 182] - strb wzr, [x0, 184] - strh w5, [x0, 130] - str wzr, [x0, 2628] - str wzr, [x0, 2636] - str wzr, [x0, 2644] - str wzr, [x0, 2648] - str wzr, [x0, 2672] - str wzr, [x0, 2684] - ldr w1, [x0, 2552] - ldr w2, [x0, 2660] - str wzr, [x0, 2640] - cmp w1, w2 - bls .L1675 - str w1, [x0, 2660] -.L1675: - add x0, x22, :lo12:.LANCHOR0 - ldr w1, [x0, 2548] - ldr w2, [x0, 2664] - cmp w1, w2 - bls .L1676 - str w1, [x0, 2664] -.L1676: + 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 .L1699 + str w0, [x19, 2660] +.L1699: + ldr w0, [x19, 2548] + ldr w1, [x19, 2664] + cmp w0, w1 + bls .L1700 + str w0, [x19, 2664] +.L1700: mov w0, 65535 - cmp w4, w0 - beq .L1677 - add x0, x22, :lo12:.LANCHOR0 - add x0, x0, 24 + cmp w3, w0 + beq .L1701 + add x0, x19, 24 bl make_superblock -.L1677: - add x1, x22, :lo12:.LANCHOR0 - add x0, x1, 80 - ldrh w2, [x1, 80] +.L1701: + ldrh w2, [x19, 80] + add x0, x19, 80 mov w1, 65535 cmp w2, w1 - beq .L1678 + beq .L1702 bl make_superblock -.L1678: - add x1, x22, :lo12:.LANCHOR0 - add x0, x1, 128 - ldrh w2, [x1, 128] +.L1702: + ldrh w2, [x19, 128] + add x0, x19, 128 mov w1, 65535 cmp w2, w1 - beq .L1679 + beq .L1703 bl make_superblock -.L1679: - add x22, x22, :lo12:.LANCHOR0 +.L1703: + ldrh w2, [x19, 176] + add x0, x19, 176 mov w1, 65535 - add x0, x22, 176 - ldrh w2, [x22, 176] cmp w2, w1 - beq .L1680 + beq .L1704 bl make_superblock -.L1680: +.L1704: mov w0, 0 - b .L1661 + b .L1684 .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, 3456] - ldr x22, [x0, 3520] - str x2, [x0, 3728] - str x22, [x0, 3736] + 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] -.L1693: - ldr w0, [x29, 136] + add x0, x0, 615 + str x0, [sp, 128] +.L1714: + ldr w0, [sp, 112] cmp w20, w0 - bge .L1712 - ldr w0, [x29, 116] - sxtw x28, w20 - cmp w20, w0 - bne .L1694 - lsl x0, x28, 1 - mov w26, 0 - add x1, x24, x0 - str x1, [x29, 136] + bge .L1734 + add x0, x27, w20, sxtw 1 + str x0, [sp, 104] + ldr w0, [sp, 124] + sxtw x26, w20 + sbfiz x1, x20, 1, 32 + cmp w0, w20 + bne .L1715 + 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, 3720 + 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] -.L1695: - ldr w0, [x29, 120] - add w0, w0, 1 - cmp w26, w0 - blt .L1698 -.L1712: - add x21, x21, :lo12:.LANCHOR0 +.L1716: + cmp w28, w25 + blt .L1720 +.L1734: 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 .L1700 + bne .L1722 mov x0, x19 bl ftl_map_blk_alloc_new_blk -.L1700: +.L1722: mov x0, x19 bl ftl_map_blk_gc mov x0, x19 @@ -11784,172 +13213,187 @@ ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 + hint 29 // autiasp ret -.L1698: - ldr x0, [x29, 136] +.L1720: + 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, .L1696 - 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 .L1696 - ldrh w1, [x28, 314] - ldr x0, [x27, 8] + cbz w4, .L1717 + beq .L1735 + ldrh w1, [x24, 314] + ldr x0, [x3, 8] bl js_hash - cmp w8, w0 - beq .L1696 + ldr w4, [sp, 112] mov w5, w0 - mov w4, w8 - mov w3, w26 + cmp w4, w0 + beq .L1719 + 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] -.L1696: - ldr w0, [x27] - cmn w0, #1 - beq .L1697 - ldrh w0, [x22, 8] - cmp w25, w0 - bls .L1697 - ldrh w2, [x22] + str w0, [x24, 3712] +.L1735: + add w28, w28, 1 + sxth w28, w28 + b .L1716 +.L1717: + beq .L1735 +.L1719: + ldrh w0, [x21, 8] + cmp w0, w23 + bcs .L1735 + ldrh w2, [x21] ldrh w1, [x19, 4] cmp w2, w1 - bne .L1697 + bne .L1735 ubfiz x0, x0, 2, 16 - ldr w1, [x27, 4] - str w1, [x23, x0] -.L1697: - add w7, w26, 1 - sxth w26, w7 - b .L1695 -.L1694: - add x26, x21, :lo12:.LANCHOR0 - lsl x2, x28, 1 - add x0, x26, 3720 - ldr x1, [x26, 3456] - 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 .L1735 +.L1715: + 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, 3720] + ldr w0, [x24, 3712] cmn w0, #1 - beq .L1714 - ldrh w1, [x22] + beq .L1738 + ldrh w1, [x21] ldrh w0, [x19, 4] cmp w1, w0 - bne .L1714 - ldrh w1, [x22, 8] + bne .L1738 + ldrh w1, [x21, 8] mov w0, 64245 cmp w1, w0 - beq .L1702 -.L1714: - add x26, x21, :lo12:.LANCHOR0 - mov w27, 0 - add x28, x26, 3720 -.L1703: - ldrh w0, [x26, 308] - cmp w27, w0 - bge .L1710 - 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, .L1707 - ldr w0, [x28] - cmn w0, #1 - beq .L1707 - ldrh w1, [x26, 314] - ldr x0, [x28, 8] - bl js_hash - cmp w7, w0 - beq .L1707 - 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] -.L1707: - ldr w0, [x28] - cmn w0, #1 - beq .L1708 - ldrh w0, [x22, 8] - cmp w25, w0 - bls .L1708 - ldrh w2, [x22] - ldrh w1, [x19, 4] - cmp w2, w1 - bne .L1708 - ubfiz x0, x0, 2, 16 - ldr w1, [x28, 4] - str w1, [x23, x0] -.L1708: - add w6, w27, 1 - sxth w27, w6 - b .L1703 -.L1702: - mov w0, 0 -.L1704: - ldrh w1, [x26, 308] - sub w1, w1, #1 - cmp w0, w1 - blt .L1706 -.L1710: - add w20, w20, 1 - sxth w20, w20 - b .L1693 -.L1706: - ldr x2, [x26, 3456] - sbfiz x3, x0, 3, 32 - ldrh w1, [x2, x3] - cmp w25, w1 - bls .L1705 - add x2, x2, x3 - ubfiz x1, x1, 2, 16 - ldr w2, [x2, 4] - str w2, [x23, x1] -.L1705: + beq .L1739 +.L1738: + adrp x25, .LC130 + mov w26, 0 + add x25, x25, :lo12:.LC130 + b .L1730 +.L1726: + ldr x3, [x24, 3448] + lsl w1, w0, 1 + ldr w4, [x3, w1, sxtw 2] + and w2, w4, 65535 + cmp w23, w4, uxth + bls .L1725 + add w1, w1, 1 + ldr w3, [x3, w1, sxtw 2] + ubfiz x1, x2, 2, 16 + str w3, [x22, x1] +.L1725: add w0, w0, 1 sxth w0, w0 - b .L1704 +.L1724: + ldrh w1, [x24, 308] + sub w1, w1, #1 + cmp w0, w1 + blt .L1726 +.L1732: + add w20, w20, 1 + sxth w20, w20 + b .L1714 +.L1739: + mov w0, 0 + b .L1724 +.L1731: + 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, .L1727 + beq .L1736 + ldrh w1, [x24, 314] + ldr x0, [x5, 8] + bl js_hash + ldr w4, [sp, 136] + mov w5, w0 + cmp w4, w0 + beq .L1729 + ldr x1, [sp, 128] + mov x0, x25 + mov w3, w26 + mov w2, w20 + bl sftl_printk + mov w0, -1 + str w0, [x24, 3712] +.L1736: + add w3, w26, 1 + sxth w26, w3 +.L1730: + ldrh w0, [x24, 308] + cmp w26, w0 + blt .L1731 + b .L1732 +.L1727: + beq .L1736 +.L1729: + ldrh w0, [x21, 8] + cmp w0, w23 + bcs .L1736 + ldrh w2, [x21] + ldrh w1, [x19, 4] + cmp w2, w1 + bne .L1736 + ubfiz x0, x0, 2, 16 + ldr w1, [x24, 3716] + str w1, [x22, x0] + b .L1736 .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, 3888 - add x29, sp, 0 + add x0, x1, 3880 + mov x29, sp ldrh w2, [x1, 324] strh w2, [x0, 10] mov w2, -3962 @@ -11960,63 +13404,82 @@ strh w2, [x0, 6] ldr x2, [x1, 352] str x2, [x0, 16] - ldr x2, [x1, 3592] - str x2, [x0, 24] ldr x2, [x1, 3584] - ldr x1, [x1, 3600] + str x2, [x0, 24] + 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, 3640 + 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, 3752] + ldrh w0, [x19, 240] + strh wzr, [x19, 3744] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - ldrh w1, [x21, 2696] + ldrh w1, [x19, 2696] mov w0, 65535 cmp w1, w0 - bne .L1739 -.L1741: - mov w23, -1 -.L1738: - mov w0, w23 - ldr x23, [sp, 48] + bne .L1758 +.L1760: + mov w20, -1 +.L1757: + 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 -.L1739: +.L1758: bl FtlLoadSysInfo - mov w23, w0 - cbnz w0, .L1741 + mov w20, w0 + cbnz w0, .L1760 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -12026,24 +13489,25 @@ 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 -.L1742: - cmp w0, w3 - bge .L1747 - ldr w2, [x1], 16 - tbz w2, #31, .L1743 -.L1747: - add x2, x20, :lo12:.LANCHOR0 - cmp w0, w3 - ldrh w1, [x2, 2540] - add w1, w1, 1 - strh w1, [x2, 2540] - bge .L1753 -.L1744: - add x19, x20, :lo12:.LANCHOR0 +.L1761: + mov w3, w0 + cmp w2, w0 + ble .L1765 + lsl x4, x0, 4 + add x0, x0, 1 + ldr w4, [x1, x4] + tbz w4, #31, .L1761 +.L1765: + ldrh w0, [x19, 2540] + add w0, w0, 1 + strh w0, [x19, 2540] + cmp w3, w2 + bge .L1772 +.L1762: add x22, x19, 24 add x21, x19, 80 mov x0, x22 @@ -12052,151 +13516,153 @@ 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 .L1748 -.L1743: - add w0, w0, 1 - b .L1742 -.L1753: - ldrh w0, [x2, 3752] - cbnz w0, .L1744 -.L1748: - add x19, x20, :lo12:.LANCHOR0 - mov w1, 65535 - add x21, x19, 24 + b .L1766 +.L1772: + ldrh w0, [x19, 3744] + cbnz w0, .L1762 +.L1766: ldrh w0, [x19, 24] + add x22, x19, 24 + mov w1, 65535 cmp w0, w1 - beq .L1749 + beq .L1767 ldrh w1, [x19, 28] - cbnz w1, .L1749 - ldrh w1, [x19, 84] - add x20, x19, 80 - cbnz w1, .L1749 + add x21, x19, 80 + ldrh w2, [x19, 84] + orr w1, w1, w2 + tst w1, 65535 + bne .L1767 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 -.L1749: +.L1767: bl FtlVpcCheckAndModify - b .L1738 + b .L1757 .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, 2660] - str wzr, [x0, 2664] - str wzr, [x0, 2676] - 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, .L1756 + cbz w0, .L1775 bl FtlMakeBbt -.L1756: - mov w4, 23752 - add x1, x20, :lo12:.LANCHOR0 +.L1775: + mov w3, 23752 mov w0, 0 - movk w4, 0xa0f, lsl 16 -.L1757: - ldrh w2, [x1, 262] - cmp w0, w2, lsl 7 - blt .L1758 - ldrh w21, [x1, 244] - add x22, x20, :lo12:.LANCHOR0 - mov w19, 0 -.L1759: - ldrh w0, [x22, 246] - cmp w0, w21 - bhi .L1760 - ldrh w0, [x22, 236] - sub w1, w19, #3 - cmp w1, w0, lsl 1 - bge .L1761 -.L1765: - add x19, x20, :lo12:.LANCHOR0 - mov w21, 0 - mov w22, 0 -.L1762: - ldrh w0, [x19, 244] - cmp w0, w22 - bhi .L1766 - ldrh w2, [x19, 236] - ldr w1, [x19, 248] + movk w3, 0xa0f, lsl 16 +.L1776: + ldrh w1, [x19, 262] + cmp w0, w1, lsl 7 + blt .L1777 + ldrh w21, [x19, 244] + mov w20, 0 +.L1778: ldrh w0, [x19, 246] - str w0, [x19, 3428] - udiv w4, w1, w2 + cmp w0, w21 + bhi .L1779 + ldrh w0, [x19, 236] + sub w1, w20, #3 + cmp w1, w0, lsl 1 + bge .L1780 +.L1784: + mov w20, 0 + mov w21, 0 +.L1781: + ldrh w0, [x19, 244] + cmp w0, w21 + bhi .L1785 + 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, 2624] - add w0, w3, 36 - strh w0, [x19, 2692] - mov w0, 24 - mul w0, w2, w0 - cmp w21, w0 - ble .L1767 - sub w1, w1, w21 - udiv w1, w1, w2 - str w1, [x19, 2624] - lsr w1, w1, 5 - add w1, w1, 24 + add w1, w3, 36 strh w1, [x19, 2692] -.L1767: - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0, 298] - cbz w1, .L1769 - ldrh w5, [x0, 2692] - add w5, w5, w1, lsr 1 - strh w5, [x0, 2692] - mul w5, w1, w2 - cmp w21, w5 - bge .L1769 + mov w1, 24 + mul w1, w2, w1 + cmp w20, w1 + ble .L1786 + sub w0, w0, w20 + udiv w0, w0, w2 + str w0, [x19, 2624] + lsr w0, w0, 5 + add w0, w0, 24 + strh w0, [x19, 2692] +.L1786: + ldrh w1, [x19, 298] + cbz w1, .L1788 + ldrh w0, [x19, 2692] + add w0, w0, w1, lsr 1 + strh w0, [x19, 2692] + mul w0, w1, w2 + cmp w20, w0 + bge .L1788 add w1, w1, 32 - str w4, [x0, 2624] + str w4, [x19, 2624] add w1, w3, w1 - strh w1, [x0, 2692] -.L1769: - add x19, x20, :lo12:.LANCHOR0 - add x21, x19, 24 + strh w1, [x19, 2692] +.L1788: ldrh w1, [x19, 2692] + add x21, x19, 24 ldr w0, [x19, 2624] + mov w20, -1 sub w0, w0, w1 ldrh w1, [x19, 306] mul w0, w0, w2 - str w0, [x19, 3972] + str w0, [x19, 3964] mul w0, w1, w0 ldrh w1, [x19, 262] str w0, [x19, 2624] @@ -12208,113 +13674,107 @@ 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] -.L1771: +.L1790: mov x0, x21 bl make_superblock ldrb w1, [x21, 7] ldrh w0, [x21] - cbnz w1, .L1772 + cbnz w1, .L1791 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 .L1771 -.L1758: - ldr x5, [x1, 3480] - ubfiz x3, x0, 2, 16 - mvn w2, w0 - orr w2, w0, w2, lsl 16 + b .L1790 +.L1777: + 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, 3488] - str w4, [x2, x3] - b .L1757 -.L1760: + str w3, [x1, x2] + b .L1776 +.L1779: 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 .L1759 -.L1761: - udiv w0, w19, w0 - ldr w19, [x22, 336] - add x21, x20, :lo12:.LANCHOR0 - add w0, w0, w19 + and w20, w20, 65535 + b .L1778 +.L1780: + 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] -.L1763: - ldrh w0, [x21, 246] - cmp w0, w19 - bls .L1765 - mov w0, w19 - add w19, w19, 1 + ldrh w20, [x19, 244] +.L1782: + ldrh w0, [x19, 246] + cmp w0, w20 + bls .L1784 + mov w0, w20 + add w20, w20, 1 mov w1, 1 - and w19, w19, 65535 + and w20, w20, 65535 bl FtlLowFormatEraseBlock - b .L1763 -.L1766: - mov w0, w22 + b .L1782 +.L1785: + 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 .L1762 -.L1772: + and w20, w20, 65535 + b .L1781 +.L1791: ldr w1, [x19, 2660] ubfiz x0, x0, 1, 16 str w1, [x21, 12] + add x20, x19, 80 add w1, w1, 1 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 -.L1773: + strb wzr, [x20, 6] + add w0, w0, 1 + strh w0, [x19, 80] + mov w0, 1 + strb w0, [x20, 8] +.L1792: mov x0, x20 bl make_superblock ldrb w1, [x20, 7] ldrh w0, [x20] - cbnz w1, .L1774 + cbnz w1, .L1793 ldr x1, [x19, 72] ubfiz x0, x0, 1, 16 strh w21, [x1, x0] ldrh w0, [x20] add w0, w0, 1 strh w0, [x20] - b .L1773 -.L1774: + b .L1792 +.L1793: ldr w1, [x19, 2660] ubfiz x0, x0, 1, 16 str w1, [x20, 12] @@ -12322,48 +13782,59 @@ 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, 2696] - ldr w0, [x19, 3972] + 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, 2698] - strh w20, [x19, 2700] str w0, [x19, 2660] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz w0, .L1775 + cbnz w0, .L1794 adrp x0, .LANCHOR2 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR2] -.L1775: +.L1794: 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 @@ -12372,437 +13843,439 @@ ldrh w0, [x19, 240] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbnz w0, .L1784 + cbnz w0, .L1800 bl FtlSysBlkInit - cbnz w0, .L1784 + cbnz w0, .L1800 mov w0, 1 str w0, [x20, #:lo12:.LANCHOR2] ldrh w0, [x19, 228] cmp w0, 15 - bhi .L1784 + bhi .L1800 mov w19, 8129 -.L1783: +.L1801: mov w1, 1 mov w0, 0 bl rk_ftl_garbage_collect subs w19, w19, #1 - bne .L1783 -.L1784: + bne .L1801 +.L1800: 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 .L1788 - cmp w19, 575 - bls .L1789 -.L1788: - add x0, x20, :lo12:.LANCHOR0 - ldr w1, [x0, 3976] - cbnz w1, .L1790 -.L1855: + ldr x1, [x0, 1376] + str x1, [sp, 200] + mov x1, 0 + bls .L1805 + cmp w20, 575 + bls .L1806 +.L1805: + ldr w0, [x25, 3968] + cbnz w0, .L1807 +.L1869: mov w19, 0 - b .L1787 -.L1790: - ldr x24, [x0, 3984] - mov w1, 35899 - movk w1, 0xfcdc, lsl 16 - ldr w2, [x24] - cmp w2, w1 - bne .L1792 - add x1, x24, 258048 - ldrh w2, [x0, 10] + b .L1804 +.L1807: + ldr x22, [x25, 3976] + mov w0, 35899 + movk w0, 0xfcdc, lsl 16 + ldr w1, [x22] + cmp w1, w0 + bne .L1809 + add x1, x22, 258048 + ldrh w2, [x25, 10] add x1, x1, 2044 mov w0, 0 mov w19, 65023 - mov w3, 4097 -.L1796: - ldr w4, [x1] - cbnz w4, .L1793 - ldr w4, [x24, w0, uxtw 2] +.L1813: + ldr w3, [x1] + cbnz w3, .L1810 + 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 .L1811 + mov w0, 0 +.L1811: sub w19, w19, #1 - csel w0, w0, wzr, cc sub x1, x1, #4 cmp w19, 4096 - bne .L1796 + bne .L1813 mov w19, 512 - b .L1795 -.L1793: + b .L1812 +.L1810: add w19, w19, 127 lsr w19, w19, 7 -.L1795: +.L1812: 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] -.L1797: - add w0, w21, w22 - str w0, [x29, 144] + str w0, [sp, 100] +.L1814: + add w0, w20, w21 + str w0, [sp, 104] cmp w0, 8 - bls .L1819 - cbnz w25, .L1820 -.L1792: + bls .L1836 + cbnz w23, .L1835 +.L1809: mov w19, -1 -.L1820: - add x20, x20, :lo12:.LANCHOR0 - ldr x0, [x20, 3984] - str wzr, [x20, 3976] - bl kfree - ldr x0, [x20, 3992] - bl kfree -.L1787: - 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, .L1827 - bl __stack_chk_fail -.L1819: - ldr x0, [x27, 3992] + b .L1835 +.L1836: + ldr x0, [x25, 3984] mov w1, 0 mov x2, 512 bl memset - ldrh w28, [x27, 10] - ldr x1, [x27, 3392] - mul w0, w22, w28 - str w0, [x29, 152] - cbz x1, .L1828 - ldr x0, [x27, 3400] - mov w23, 6 + ldrh w27, [x25, 10] + ldr x1, [x25, 3384] + mul w0, w21, w27 + str w0, [sp, 96] + cbz x1, .L1845 + ldr x0, [x25, 3392] + mov w24, 6 cmp x0, 0 mov w0, 9 - csel w23, w23, w0, eq -.L1798: - mul w4, w22, w28 + csel w24, w24, w0, eq +.L1815: + mul w28, w21, w27 mov w26, 0 -.L1799: - ldr x6, [x27, 3368] - mov w1, w4 - str w4, [x29, 148] - mov w0, 0 +.L1816: + 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 .L1799 - cmp w23, 9 - bne .L1830 - ldr x26, [x27, 3992] + add w28, w28, w27 + mov w0, 0 + blr x3 + cmp w20, w26 + bhi .L1816 + cmp w24, 9 + bne .L1847 + 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] -.L1800: - mul w0, w21, w28 - mov x7, x24 - mov x28, 0 - str w0, [x29, 148] -.L1801: - ldr w0, [x29, 148] - mov w1, w28 - cmp w28, w0 - bcs .L1808 - cmp w23, 9 - bne .L1802 - add w0, w1, 1 -.L1853: - str w0, [x29, 168] + str w0, [x28, 8] +.L1817: + mul w0, w20, w27 + mov x27, x22 + mov w26, 0 + str w0, [sp, 108] +.L1818: + ldr w0, [sp, 108] + cmp w26, w0 + beq .L1825 + 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 .L1804 - ldr x1, [x27, 3392] - add x8, x27, 3360 - str x7, [x29, 104] + str w0, [sp, 140] + cmp w26, 0 + ccmp w24, 9, 0, eq + bne .L1821 + 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 .L1805 -.L1808: - ldrb w0, [x27, 14] - str w0, [x29, 128] - ldrh w0, [x27, 10] - ldr x28, [x27, 3992] - mul w1, w22, w0 - str w1, [x29, 152] - add x1, x27, 3360 - ldr x2, [x1, 32] - cbnz x2, .L1806 + bne .L1822 +.L1825: + 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, .L1823 mov w1, 6 -.L1854: - mul w0, w21, w0 - mov x26, 0 - str w0, [x29, 120] - str w1, [x29, 148] -.L1810: - ldr w0, [x29, 120] - mov w1, w26 - cmp w0, w26 - bls .L1814 - ldr w0, [x29, 148] - cmp w26, 0 +.L1868: + mul w0, w20, w0 + mov w28, 0 + str w1, [sp, 96] + str w0, [sp, 112] +.L1827: + ldr w0, [sp, 112] + cmp w28, w0 + beq .L1831 + ldr w0, [sp, 96] + cmp w28, 0 ccmp w0, 9, 0, eq - bne .L1811 - ldr x1, [x27, 3392] + bne .L1828 + ldr x1, [x25, 3384] mov w0, 70 blr x1 - ldr x1, [x27, 3400] + ldr x1, [x25, 3392] mov w0, 2 blr x1 - ldr x8, [x27, 3384] - 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, 3400] + blr x7 + ldrb w0, [sp, 108] + ldr x1, [x25, 3392] blr x1 - ldrb w0, [x27, 22] - ldr x1, [x27, 3392] + 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 .L1812 -.L1814: - ldr x0, [x27, 3992] - mov x1, x24 - mov w23, 0 - mov x2, x0 -.L1813: - mov x26, x2 - mov x3, x1 - add x2, x2, 4 - add x1, x1, 4 - ldr w4, [x3] - ldr w6, [x26] - cmp w6, w4 - beq .L1816 + beq .L1829 +.L1831: + ldr x0, [x25, 3984] + mov x24, 0 +.L1830: + 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 .L1833 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, 3368] - mul w1, w1, w22 - blr x2 -.L1817: - ldr w22, [x29, 144] - b .L1797 -.L1828: - mov w23, 6 - b .L1798 -.L1830: - mov x26, 0 - b .L1800 -.L1802: - lsl w0, w1, 2 - b .L1853 -.L1804: - ldr x8, [x27, 3376] - 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 .L1808 - ldr x7, [x29, 128] - add x7, x7, 2048 -.L1805: - add x28, x28, 1 - b .L1801 -.L1806: - ldr x1, [x1, 40] - mov w23, 6 - cmp x1, 0 - mov w1, 9 - csel w1, w23, w1, eq - b .L1854 -.L1811: - ldr x7, [x27, 3384] - add x3, x29, 168 - ldr w0, [x29, 152] - mov x2, x28 - add w1, w0, w1 - mov w0, 0 - blr x7 - cmn w0, #1 - beq .L1814 - ldr w0, [x29, 172] - mov w1, 61424 - cmp w0, w1 - bne .L1814 - add x28, x28, 2048 -.L1812: - add x26, x26, 1 - b .L1810 -.L1816: - ldr w3, [x29, 140] - add w23, w23, 1 - cmp w23, w3 - bne .L1813 - add w25, w25, 1 - cmp w25, 5 - bls .L1817 - b .L1820 -.L1789: - cmp w19, 64 - bne .L1821 - add x25, x20, :lo12:.LANCHOR0 - mov w0, 262144 - bl ftl_malloc - str x0, [x25, 3984] - mov w0, 262144 - bl ftl_malloc - mov x1, x0 - ldr x0, [x25, 3984] - str x1, [x25, 3992] - cbz x0, .L1822 - cbz x1, .L1822 - mov w1, 1 - mov w2, 262144 - str w1, [x25, 3976] - mov w1, 0 - bl ftl_memset -.L1821: - add x20, x20, :lo12:.LANCHOR0 - ldr w0, [x20, 3976] - cbz w0, .L1855 - cmp w19, 63 - ldr x0, [x20, 3984] - bhi .L1824 - mov w1, 64 - sub w19, w1, w19 - sub w21, w21, w19 - ubfiz x19, x19, 9, 25 - add x1, x22, x19 -.L1825: - cmp w24, 575 - bls .L1826 - sub w21, w21, w23 - sub w21, w21, #446 -.L1826: - lsl w2, w21, 9 - bl ftl_memcpy - b .L1855 -.L1822: - 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 .L1821 -.L1824: - lsl w2, w19, 7 - mov x1, x22 - sub w2, w2, #8192 - add x0, x0, x2, lsl 2 - b .L1825 -.L1827: + ldrh w1, [x25, 10] + mov w0, 0 + ldr x2, [x25, 3360] + mul w1, w1, w21 + blr x2 +.L1834: + ldr w21, [sp, 104] + b .L1814 +.L1845: + mov w24, 6 + b .L1815 +.L1847: + mov x28, 0 + b .L1817 +.L1821: + 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 .L1825 + add x27, x27, 2048 +.L1822: + add w26, w26, 1 + b .L1818 +.L1823: + ldr x1, [x1, 40] + mov w24, 6 + cmp x1, 0 + mov w1, 9 + csel w1, w24, w1, eq + b .L1868 +.L1828: + ldr x6, [x25, 3376] + add x3, sp, 136 + mov x2, x26 + add w1, w27, w28 + mov w0, 0 + blr x6 + cmn w0, #1 + beq .L1831 + ldr w0, [sp, 140] + mov w1, 61424 + cmp w0, w1 + bne .L1831 + add x26, x26, 2048 +.L1829: + add w28, w28, 1 + b .L1827 +.L1833: + ldr w1, [sp, 100] + add x24, x24, 1 + cmp w1, w24 + bhi .L1830 + add w23, w23, 1 + cmp w23, 5 + bls .L1834 +.L1835: + ldr x0, [x25, 3976] + str wzr, [x25, 3968] + bl kfree + ldr x0, [x25, 3984] + bl kfree +.L1804: + mrs x0, sp_el0 + ldr x1, [sp, 200] + ldr x2, [x0, 1376] + subs x1, x1, x2 + mov x2, 0 + beq .L1844 + bl __stack_chk_fail +.L1806: + mov x21, x2 + cmp w20, 64 + bne .L1837 + 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, .L1838 + cbz x1, .L1838 + mov w1, 1 + mov w2, 262144 + str w1, [x25, 3968] + mov w1, 0 + bl ftl_memset +.L1839: + sub w1, w20, #64 + ldr x0, [x25, 3976] + cmp w20, 63 + bhi .L1841 + add w19, w19, w1 + mov w1, 64 + sub w20, w1, w20 + ubfiz x20, x20, 9, 25 + add x21, x21, x20 +.L1842: + cmp w23, 575 + bls .L1843 + sub w19, w19, w22 + add w19, w19, 576 +.L1843: + lsl w2, w19, 9 + mov x1, x21 + bl ftl_memcpy + b .L1869 +.L1838: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC133 + add x1, x1, 633 + add x0, x0, :lo12:.LC133 + bl sftl_printk +.L1837: + ldr w0, [x25, 3968] + cbnz w0, .L1839 + b .L1869 +.L1841: + ubfiz x1, x1, 9, 25 + add x0, x0, x1 + b .L1842 +.L1844: + 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 @@ -12814,622 +14287,523 @@ 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, 4000] - cbnz x3, .L1860 - str x0, [x2, 4000] + hint 25 // paciasp + ldr x3, [x2, 3992] + cbnz x3, .L1874 + str x0, [x2, 3992] mov w0, 0 - str x1, [x2, 4008] + str x1, [x2, 4000] +.L1872: + hint 29 // autiasp ret -.L1860: +.L1874: mov w0, -1 - ret + b .L1872 .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, 4016] - cbz x0, .L1867 - mov w26, 22084 - mov w25, 0 - mov w24, 0 - mov w23, 0 - movk w26, 0x524b, lsl 16 -.L1865: - ldr x3, [x22, 4000] - mov w1, 128 - ldr x2, [x22, 4016] - lsl w0, w23, 7 - blr x3 - mov w21, w0 - cbnz w0, .L1863 - ldr x19, [x22, 4016] - ldr w0, [x19] - cmp w0, w26 - bne .L1864 - add x0, x19, 61440 - ldr w1, [x19, 4] - ldr w0, [x0, 4092] - cmp w0, w1 - bne .L1864 - cmp w0, w24 - bls .L1864 - mov w25, w23 - mov w24, w0 -.L1864: - add w23, w23, 1 - cmp w23, 2 - bne .L1865 - cbz w24, .L1866 - add x0, x20, :lo12:.LANCHOR0 - mov x2, x19 - mov w1, 128 - ldr x3, [x0, 4000] - lsl w0, w25, 7 - blr x3 - mov w21, w0 - cbz w0, .L1861 -.L1863: add x20, x20, :lo12:.LANCHOR0 - mov w21, -1 - ldr x0, [x20, 4016] + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + bl ftl_malloc + str x0, [x20, 4008] + cbz x0, .L1882 + mov w24, 22084 + mov w23, 0 + mov w22, 0 + mov w21, 0 + movk w24, 0x524b, lsl 16 +.L1880: + ldr x3, [x20, 3992] + lsl w0, w21, 7 + ldr x2, [x20, 4008] + mov w1, 128 + blr x3 + mov w19, w0 + cbnz w0, .L1878 + ldr x3, [x20, 4008] + ldr w0, [x3] + cmp w0, w24 + bne .L1879 + add x0, x3, 49152 + ldr w1, [x3, 4] + ldr w0, [x0, 16380] + cmp w0, w1 + bne .L1879 + cmp w0, w22 + bls .L1879 + mov w23, w21 + mov w22, w0 +.L1879: + cbz w21, .L1883 + cbz w22, .L1881 + ldr x4, [x20, 3992] + mov x2, x3 + lsl w0, w23, 7 + mov w1, 128 + blr x4 + mov w19, w0 + cbz w0, .L1876 +.L1878: + ldr x0, [x20, 4008] + mov w19, -1 bl kfree - str xzr, [x20, 4016] - b .L1861 -.L1866: - mov w1, 0 + str xzr, [x20, 4008] + b .L1876 +.L1883: + mov w21, 1 + b .L1880 +.L1881: + 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] -.L1861: - mov w0, w21 + strh w0, [x3, 14] +.L1876: + 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 -.L1867: - mov w21, -12 - b .L1861 +.L1882: + mov w19, -12 + b .L1876 .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+4016 - ldr x4, [x3, #:lo12:.LANCHOR0+4016] - cbz x4, .L1875 - ldrh w6, [x4, 10] - add x5, x4, 16 - mov w3, 0 -.L1872: - cmp w3, w6 - bcc .L1874 -.L1875: + 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, .L1889 + ldrh w1, [x4, 10] + add x6, x4, 16 + mov x3, 0 +.L1887: + cmp w1, w3 + bhi .L1888 +.L1889: mov w0, -1 ret -.L1874: - ldrh w7, [x5], 8 - cmp w7, w0 - bne .L1873 +.L1888: + add x7, x3, 1 + lsl x3, x3, 3 + ldrh w8, [x6, x3] + cmp w8, w5 + bne .L1890 + 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 -.L1873: - add w3, w3, 1 - b .L1872 +.L1890: + mov x3, x7 + b .L1887 .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, 4016] - cbz x19, .L1895 + cbz x19, .L1910 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 -.L1882: - cmp w20, w3 - bcc .L1890 + add x0, x19, 16 + mov x20, 0 +.L1897: + mov w25, w20 + cmp w3, w20 + bhi .L1904 ldrh w1, [x19, 14] - cmp w21, w1 - bhi .L1895 - add x3, x19, x3, uxth 3 + cmp w1, w21 + bcc .L1910 + add x3, x19, w3, 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 .L1897 -.L1890: - ldrh w6, [x1], 8 - cmp w6, w0 - bne .L1883 - uxtw x27, w20 + b .L1912 +.L1904: + add x1, x20, 1 + lsl x20, x20, 3 + ldrh w2, [x0, x20] + cmp w2, w7 + bne .L1908 + 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 .L1884 + ldrh w26, [x20, 20] + add w26, w26, 63 + and w26, w26, -64 + cmp w27, w26 + bls .L1898 ldrh w0, [x19, 14] - cmp w21, w0 - bhi .L1895 - add x27, x27, 2 - ldrh w22, [x22, 18] - add x27, x19, x27, lsl 3 - sub w26, w3, #1 -.L1885: - cmp w20, w26 - bcc .L1886 - add x20, x19, x20, uxtw 3 - and w22, w22, 65535 - add x0, x5, x22, uxth - uxtw x2, w28 + cmp w0, w21 + bcc .L1910 + ldrh w6, [x20, 18] + sub w24, w3, #1 +.L1899: + and w28, w6, 65535 + add x20, x20, 8 + cmp w24, w25 + bhi .L1900 + add x25, x19, w25, uxtw 3 + add x0, x5, w28, 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] -.L1897: + add w26, w21, w26 + strh w26, [x19, 14] +.L1912: 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, 4008] 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 -.L1880: +.L1895: 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 -.L1886: - 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 +.L1900: + add w25, w25, 1 + str x5, [sp, 104] + stp w6, w7, [sp, 112] + add x1, x19, w25, 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, w6, 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 .L1885 -.L1884: - 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 .L1899 +.L1898: + 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 .L1912 +.L1908: + mov x20, x1 b .L1897 -.L1883: - add w20, w20, 1 - b .L1882 -.L1895: +.L1910: mov w0, -1 - b .L1880 + b .L1895 .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, .L1920 + cbz x0, .L1924 + mov w1, 30209 mov x19, x0 - mov w0, 30209 - movk w0, 0x4004, lsl 16 - cmp w21, w0 - beq .L1901 - add w0, w0, 1 - cmp w21, w0 - beq .L1902 -.L1936: + movk w1, 0x4004, lsl 16 + cmp w21, w1 + beq .L1915 + add w1, w1, 1 + cmp w21, w1 + beq .L1916 +.L1934: mov x20, -14 - b .L1900 -.L1901: -#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, .L1903 - ldr x0, [x0] - tbz x0, 26, .L1922 -.L1903: - sbfx x0, x20, 0, 56 - and x0, x0, x20 -.L1904: -#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, .L1923 - 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 +.L1917: mov x0, x19 - bl __arch_copy_from_user - mov x2, x0 - cbz x0, .L1906 -.L1905: - sub x0, x19, x2 - mov w1, 0 - add x0, x0, 8 - bl memset + bl kfree +.L1913: + mov x0, x20 + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + hint 29 // autiasp + ret +.L1915: + mov x1, x20 + mov x2, 8 + bl _copy_from_user + cbz x0, .L1918 mov x2, x20 mov w1, 256 -.L1938: - adrp x0, .LC133 - add x0, x0, :lo12:.LC133 +.L1935: + adrp x0, .LC134 + add x0, x0, :lo12:.LC134 bl sftl_printk - b .L1936 -.L1922: - mov x0, x20 - b .L1904 -.L1923: - mov x2, 8 - b .L1905 -.L1907: - strh w0, [x19, 6] - and x2, x0, 65535 - add x2, x2, 8 - ldr w0, [x22, 44] - ldr x1, [x22, 8] - tbnz x0, 21, .L1924 - ldr x0, [x22] - tst x0, 67108864 - csel x0, x21, x20, ne -.L1908: -#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, .L1936 -#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, .L1900 - b .L1936 -.L1924: - mov x0, x21 - b .L1908 -.L1902: -#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, .L1910 - ldr x0, [x0] - tbz x0, 26, .L1927 -.L1910: - sbfx x0, x20, 0, 56 - and x0, x0, x20 -.L1911: -#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, .L1928 - 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, .L1913 -.L1912: - sub x0, x19, x2 - mov w1, 0 - add x0, x0, 8 - bl memset - mov x2, x20 - mov w1, 276 - b .L1938 -.L1927: - mov x0, x20 - b .L1911 -.L1928: - mov x2, 8 - b .L1912 -.L1929: - mov x0, x22 - b .L1915 -.L1931: - mov x0, x21 - b .L1916 -.L1920: - mov x20, -1 - b .L1898 -.L1906: + b .L1934 +.L1918: ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - bne .L1914 + beq .L1919 +.L1920: + mov x20, -1 + b .L1917 +.L1919: ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_sftl_vendor_read cmn w0, #1 - bne .L1907 -.L1914: - mov x20, -1 -.L1900: - mov x0, x19 - bl kfree -.L1898: + beq .L1920 + 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 -.L1913: - ldr w1, [x19] - mov w0, 17745 - movk w0, 0x5652, lsl 16 - cmp w1, w0 - bne .L1914 - ldrh w21, [x19, 6] - cmp w21, 4087 - bhi .L1914 - ldr w0, [x23, 44] - add w21, w21, 8 - sxtw x21, w21 - ldr x1, [x23, 8] - tbnz x0, 21, .L1929 - ldr x0, [x23] - tst x0, 67108864 - csel x0, x22, x20, ne -.L1915: -#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, .L1931 + mov x1, x21 + bl __range_ok + cbz x0, .L1934 + 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, .L1917 + mov x1, x19 + mov x20, 0 + bl __arch_copy_to_user + mov x21, x0 + bl uaccess_disable_not_uao + cbz x21, .L1917 + b .L1934 .L1916: - 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, .L1922 + mov x2, x20 + mov w1, 276 + b .L1935 +.L1922: + ldr w1, [x19] + mov w0, 17745 + movk w0, 0x5652, lsl 16 + cmp w1, w0 + bne .L1920 + ldrh w2, [x19, 6] + cmp w2, 4087 + bhi .L1920 + add w2, w2, 8 + mov x1, x20 + and x2, x2, 65535 + mov x0, x19 + bl _copy_from_user + cbz x0, .L1923 mov x2, x20 mov w1, 283 - b .L1938 -.L1917: + b .L1935 +.L1923: ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_sftl_vendor_write sxtw x20, w0 - b .L1900 + b .L1917 +.L1924: + mov x20, -1 + b .L1913 .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 @@ -13581,193 +14955,162 @@ .section .rodata .align 3 .set .LANCHOR1,. + 0 - .type __func__.5954, %object - .size __func__.5954, 17 -__func__.5954: + .type __func__.30, %object + .size __func__.30, 17 +__func__.30: .string "INSERT_DATA_LIST" - .zero 7 - .type __func__.5949, %object - .size __func__.5949, 17 -__func__.5949: + .type __func__.31, %object + .size __func__.31, 17 +__func__.31: .string "INSERT_FREE_LIST" - .zero 7 - .type __func__.5985, %object - .size __func__.5985, 17 -__func__.5985: + .type __func__.29, %object + .size __func__.29, 17 +__func__.29: .string "List_remove_node" - .zero 7 - .type __func__.6017, %object - .size __func__.6017, 22 -__func__.6017: + .type __func__.28, %object + .size __func__.28, 22 +__func__.28: .string "List_update_data_list" - .zero 2 - .type __func__.6124, %object - .size __func__.6124, 22 -__func__.6124: + .type __func__.22, %object + .size __func__.22, 22 +__func__.22: .string "select_l2p_ram_region" - .zero 2 - .type __func__.6444, %object - .size __func__.6444, 16 -__func__.6444: + .type __func__.14, %object + .size __func__.14, 16 +__func__.14: .string "make_superblock" - .type __func__.6620, %object - .size __func__.6620, 19 -__func__.6620: + .type __func__.8, %object + .size __func__.8, 19 +__func__.8: .string "get_new_active_ppa" - .zero 5 - .type __func__.13529, %object - .size __func__.13529, 17 -__func__.13529: + .type __func__.1, %object + .size __func__.1, 17 +__func__.1: .string "FlashEraseBlocks" - .zero 7 - .type __func__.6059, %object - .size __func__.6059, 26 -__func__.6059: + .type __func__.26, %object + .size __func__.26, 26 +__func__.26: .string "ftl_map_blk_alloc_new_blk" - .zero 6 - .type __func__.5564, %object - .size __func__.5564, 11 -__func__.5564: + .type __func__.37, %object + .size __func__.37, 11 +__func__.37: .string "FtlMemInit" - .zero 5 - .type __func__.5791, %object - .size __func__.5791, 14 -__func__.5791: + .type __func__.34, %object + .size __func__.34, 14 +__func__.34: .string "FtlBbt2Bitmap" - .zero 2 - .type __func__.6465, %object - .size __func__.6465, 18 -__func__.6465: + .type __func__.13, %object + .size __func__.13, 18 +__func__.13: .string "SupperBlkListInit" - .zero 6 - .type __func__.13486, %object - .size __func__.13486, 15 -__func__.13486: + .type __func__.3, %object + .size __func__.3, 15 +__func__.3: .string "FlashReadPages" - .zero 1 - .type __func__.6236, %object - .size __func__.6236, 14 -__func__.6236: + .type __func__.19, %object + .size __func__.19, 14 +__func__.19: .string "FtlScanSysBlk" - .zero 2 - .type __func__.5834, %object - .size __func__.5834, 11 -__func__.5834: + .type __func__.32, %object + .size __func__.32, 11 +__func__.32: .string "FtlLoadBbt" - .zero 5 - .type __func__.13505, %object - .size __func__.13505, 15 -__func__.13505: + .type __func__.2, %object + .size __func__.2, 15 +__func__.2: .string "FlashProgPages" - .zero 1 - .type __func__.6592, %object - .size __func__.6592, 25 -__func__.6592: + .type __func__.10, %object + .size __func__.10, 25 +__func__.10: .string "allocate_data_superblock" - .zero 7 - .type __func__.6633, %object - .size __func__.6633, 16 -__func__.6633: + .type __func__.7, %object + .size __func__.7, 16 +__func__.7: .string "update_vpc_list" - .type __func__.6640, %object - .size __func__.6640, 20 -__func__.6640: + .type __func__.6, %object + .size __func__.6, 20 +__func__.6: .string "decrement_vpc_count" - .zero 4 - .type __func__.6085, %object - .size __func__.6085, 31 -__func__.6085: - .string "Ftl_write_map_blk_to_last_page" - .zero 1 - .type __func__.6099, %object - .size __func__.6099, 16 -__func__.6099: + .type __func__.23, %object + .size __func__.23, 16 +__func__.23: .string "FtlMapWritePage" - .type __func__.6026, %object - .size __func__.6026, 16 -__func__.6026: + .type __func__.27, %object + .size __func__.27, 16 +__func__.27: .string "load_l2p_region" - .type __func__.6070, %object - .size __func__.6070, 15 -__func__.6070: + .type __func__.25, %object + .size __func__.25, 15 +__func__.25: .string "ftl_map_blk_gc" - .zero 1 - .type __func__.6141, %object - .size __func__.6141, 9 -__func__.6141: + .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__.6353, %object - .size __func__.6353, 16 -__func__.6353: + .type __func__.16, %object + .size __func__.16, 16 +__func__.16: .string "FtlReUsePrevPpa" - .type __func__.6387, %object - .size __func__.6387, 22 -__func__.6387: + .type __func__.15, %object + .size __func__.15, 22 +__func__.15: .string "FtlRecoverySuperblock" - .zero 2 - .type __func__.6507, %object - .size __func__.6507, 14 -__func__.6507: + .type __func__.11, %object + .size __func__.11, 14 +__func__.11: .string "ftl_check_vpc" - .zero 2 - .type __func__.6214, %object - .size __func__.6214, 15 -__func__.6214: + .type __func__.20, %object + .size __func__.20, 15 +__func__.20: .string "FtlVpcTblFlush" - .zero 1 - .type __func__.6490, %object - .size __func__.6490, 21 -__func__.6490: + .type __func__.12, %object + .size __func__.12, 21 +__func__.12: .string "FtlVpcCheckAndModify" - .zero 3 - .type __func__.6613, %object - .size __func__.6613, 29 -__func__.6613: + .type __func__.9, %object + .size __func__.9, 29 +__func__.9: .string "allocate_new_data_superblock" - .zero 3 - .type __func__.5688, %object - .size __func__.5688, 13 -__func__.5688: + .type __func__.36, %object + .size __func__.36, 13 +__func__.36: .string "FtlProgPages" - .zero 3 - .type __func__.6710, %object - .size __func__.6710, 19 -__func__.6710: + .type __func__.5, %object + .size __func__.5, 19 +__func__.5: .string "FtlGcFreeTempBlock" - .zero 5 - .type __func__.6823, %object - .size __func__.6823, 23 -__func__.6823: + .type __func__.4, %object + .size __func__.4, 23 +__func__.4: .string "rk_ftl_garbage_collect" - .zero 1 - .type __func__.5716, %object - .size __func__.5716, 9 -__func__.5716: + .type __func__.35, %object + .size __func__.35, 9 +__func__.35: .string "FtlWrite" - .zero 7 - .type __func__.6285, %object - .size __func__.6285, 15 -__func__.6285: + .type __func__.18, %object + .size __func__.18, 15 +__func__.18: .string "FtlLoadSysInfo" - .zero 1 - .type __func__.6307, %object - .size __func__.6307, 18 -__func__.6307: + .type __func__.17, %object + .size __func__.17, 18 +__func__.17: .string "FtlMapTblRecovery" - .zero 6 - .type __func__.13648, %object - .size __func__.13648, 14 -__func__.13648: + .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 @@ -13790,7 +15133,7 @@ rkflash_vender_storage_dev: .word 255 .zero 4 - .xword .LC134 + .xword .LC135 .xword rk_sftl_vendor_storage_fops .zero 56 .bss @@ -14178,7 +15521,6 @@ .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: @@ -14187,7 +15529,7 @@ .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: @@ -14426,274 +15768,15 @@ .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.58 20220814" -.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 %x %x\n" -.LC98: - .string "prog read d error: = %x %x %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 -- Gitblit v1.6.2