15783 lines
270 KiB
ArmAsm

/* SPDX-License-Identifier: GPL-2.0 */
/* 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 w5, [x4, 10]
ldrh w4, [x4, 14]
cmp w4, 4
bne .L15
lsr w3, w3, 1
ubfiz w5, w5, 1, 15
.L15:
ubfx x4, x0, 10, 16
ubfx x6, x0, 10, 16
and w0, w0, 1023
hint 29 // autiasp
udiv w4, w4, w3
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, .LC1
mov x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
add x1, x1, :lo12:.LC1
adrp x0, .LC2
add x0, x0, :lo12:.LC2
bl sftl_printk
ldrh w1, [x19, 24]
ldr x0, [x19, 72]
ldrh w5, [x19, 28]
ldrb w4, [x19, 32]
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]
ldr x0, [x19, 72]
ldrh w5, [x19, 84]
ldrb w4, [x19, 88]
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]
ldr x0, [x19, 72]
ldrh w5, [x19, 132]
ldrb w4, [x19, 136]
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]
ldr x0, [x19, 72]
ldrh w5, [x19, 180]
ldrb w4, [x19, 184]
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, .LC7
ldrh w2, [x19, 226]
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
hint 25 // paciasp
.L28:
cmp w2, w0
bls .L29
sub w0, w1, #1
hint 29 // autiasp
ret
.L29:
add w1, w1, 1
lsl w2, w2, 1
and w1, w1, 65535
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
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
ret
.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
.align 2
.global FtlConstantsInit
.type FtlConstantsInit, %function
FtlConstantsInit:
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
csel w0, w0, w1, ne
strh w0, [x19, 296]
mov w0, 640
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, [x19, 302]
bl Ftl_log2
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 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
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, [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, [x19, 340]
ldrh w0, [x19, 324]
add w0, w0, 3
strh w0, [x19, 324]
ldr w0, [x19, 332]
add w0, w0, 3
str w0, [x19, 332]
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 80
hint 29 // autiasp
ret
.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
hint 25 // paciasp
ldrh w2, [x1, 348]
cbz w2, .L50
ldr x2, [x1, 352]
and w0, w0, 65535
ldrh w3, [x1, 324]
mov x1, 0
sub x2, x2, #2
.L48:
cmp w3, w1, uxth
bhi .L49
.L50:
mov w0, 0
.L46:
hint 29 // autiasp
ret
.L49:
add x1, x1, 1
ldrh w4, [x2, x1, lsl 1]
cmp w4, w0
bne .L48
mov w0, 1
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 x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
mov w4, 1
add x19, x19, 360
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 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, .LC8
add x0, x0, :lo12:.LC8
bl sftl_printk
ldrh w0, [x19, 6]
add w0, w0, 1
strh w0, [x19, 6]
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 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
.align 2
.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
stp x19, x20, [sp, 16]
mov w20, 0
mov w19, 0
str x21, [sp, 32]
ldrh w21, [x0, 302]
ldrh w0, [x0, 258]
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
.L66:
mov w0, w19
bl FtlBbmIsBadBlock
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
msub w0, w3, w2, w0
madd w2, w2, w1, w0
madd w0, w3, w4, w2
ret
.size V2P_block, .-V2P_block
.align 2
.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 w0, w0, 65535
hint 25 // paciasp
hint 29 // autiasp
ldrh w1, [x2, 260]
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:
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
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
.size P2V_block_in_plane, .-P2V_block_in_plane
.align 2
.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
hint 25 // paciasp
bls .L78
sub w1, w0, w1
cmp w1, w2
cset w0, ls
.L77:
hint 29 // autiasp
ret
.L78:
sub w1, w1, w0
cmp w1, w2
cset w0, hi
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
ret
.size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
.align 2
.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
ret
.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
.align 2
.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 x0, x0, :lo12:.LANCHOR0
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
.L89:
add x6, x4, w2, sxtw 1
add w3, w3, 1
add w2, w2, 1
and w3, w3, 65535
and w2, w2, 1023
ldrh w7, [x6, 8]
add x6, x4, w1, sxtw 1
add w1, w1, 1
and w1, w1, 1023
strh w7, [x6, 8]
mov w6, 1
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
hint 25 // paciasp
ldrh w3, [x1, 462]
cmp w3, 1024
beq .L99
ldrh w5, [x1, 458]
add x4, x1, 456
and w0, w0, 65535
mov w2, 0
.L97:
cmp w3, w2
bhi .L98
.L99:
mov w0, 0
.L95:
hint 29 // autiasp
ret
.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
b .L95
.size IsInFreeQueue, .-IsInFreeQueue
.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 .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
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 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]!
mov x29, sp
bl insert_data_list
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
ldrh w0, [x1, 2584]
add w0, w0, 1
and w0, w0, 65535
strh w0, [x1, 2584]
ldrh w1, [x1, 244]
cmp w1, w0
bcs .L118
adrp x1, .LANCHOR1
adrp x0, .LC9
add x1, x1, :lo12:.LANCHOR1
add x0, x0, :lo12:.LC9
mov w2, 214
bl sftl_printk
.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:
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, x7
and w2, w2, 65535
.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 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 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]!
mov x29, sp
bl insert_free_list
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
ldrh w0, [x1, 228]
add w0, w0, 1
and w0, w0, 65535
strh w0, [x1, 228]
ldrh w1, [x1, 244]
cmp w1, w0
bcs .L130
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 17
add x0, x0, :lo12:.LC9
mov w2, 207
bl sftl_printk
.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 x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov x21, x0
mov w0, 6
ldr x22, [x20, 2560]
umull x19, w1, w0
str x23, [sp, 48]
mov w0, 65535
add x23, x22, x19
ldrh w1, [x23, 2]
cmp w1, w0
bne .L134
ldr x0, [x21]
cmp x23, x0
bne .L135
.L138:
ldrh w0, [x22, x19]
mov w1, 65535
cmp w0, w1
bne .L142
str xzr, [x21]
.L140:
mov w0, -1
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
.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
umaddl x0, w0, w2, x1
mov w1, -1
str x0, [x21]
strh w1, [x0, 2]
b .L140
.L141:
ldr x3, [x20, 2560]
mov w2, 6
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 .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, .L150
hint 25 // paciasp
stp x29, x30, [sp, -32]!
adrp x3, .LANCHOR0+2560
mov x29, sp
str x19, [sp, 16]
and w1, w1, 65535
ldr x19, [x3, #:lo12:.LANCHOR0+2560]
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
movk x2, 0xaaab, lsl 0
asr x19, x19, 1
mul x19, x19, x2
and w19, w19, 65535
mov w1, w19
bl List_remove_node
mov w0, w19
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.L149:
sub w1, w1, #1
umaddl x2, w3, w5, x19
and w1, w1, 65535
b .L147
.L150:
mov w0, 65535
ret
.size List_pop_index_node, .-List_pop_index_node
.align 2
.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
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, .L165
mov w4, 6
ldr x3, [x0, 2560]
mov w0, 65535
.L162:
cbz w2, .L163
ldrh w1, [x1]
cmp w1, w0
bne .L164
.L160:
hint 29 // autiasp
ret
.L164:
sub w2, w2, #1
umaddl x1, w1, w4, x3
and w2, w2, 65535
b .L162
.L165:
mov w0, 65535
b .L160
.L163:
sub x0, x1, x3
mov x1, -6148914691236517206
movk x1, 0xaaab, lsl 0
asr x0, x0, 1
mul x0, x0, x1
and w0, w0, 65535
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ldrh w1, [x19, 24]
stp x23, x24, [sp, 48]
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, [x19, 2560]
umull x22, w20, w22
ldr x0, [x19, 2568]
add x23, x24, x22
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
mul w21, w21, w0
ldrh w0, [x23, 2]
csinv w21, w21, wzr, ne
cmp w0, w1
bne .L172
ldrh w1, [x24, x22]
cmp w1, w0
bne .L172
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 51
add x0, x0, :lo12:.LC9
mov w2, 463
bl sftl_printk
.L172:
ldrh w0, [x23, 2]
mov w1, 65535
cmp w0, w1
bne .L173
ldrh w1, [x24, x22]
cmp w1, w0
beq .L169
.L173:
mov w1, 6
mov x2, -6148914691236517206
movk x2, 0xaaab, lsl 0
umull x0, w0, w1
asr x1, x0, 1
mul x1, x1, x2
ldr x2, [x19, 72]
ldrh w1, [x2, x1, lsl 1]
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 .L169
mov w1, w20
add x0, x19, 2568
bl List_remove_node
ldrh w0, [x19, 2584]
cbnz w0, .L175
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 51
add x0, x0, :lo12:.LC9
mov w2, 474
bl sftl_printk
.L175:
ldrh w0, [x19, 2584]
sub w0, w0, #1
strh w0, [x19, 2584]
mov w0, w20
bl INSERT_DATA_LIST
.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 x2, .LANCHOR0
mov x29, sp
add x2, x2, :lo12:.LANCHOR0
mov x3, 0
str x19, [sp, 16]
mov w5, 65535
ldr x0, [x2, 2608]
ldrh w1, [x2, 342]
sub x4, x0, #16
.L180:
and w19, w3, 65535
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
mov w2, 0
.L186:
cmp w1, w2
bne .L188
cmp w1, w19
bhi .L181
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 73
mov w2, 796
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
b .L181
.L182:
add x3, x3, 1
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
.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
csel w3, w3, w4, eq
csel w19, w19, w2, eq
.L187:
add w2, w2, 1
add x0, x0, 16
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 x1, x1, :lo12:.LANCHOR0
hint 25 // paciasp
ldrh w2, [x1, 2618]
cmp w2, 4
bhi .L191
cbnz w0, .L191
add w2, w2, 1
strh w2, [x1, 2618]
.L190:
hint 29 // autiasp
ret
.L191:
ldrh w4, [x1, 244]
mov x0, 0
ldr x5, [x1, 72]
mov w6, 65535
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 .L193
ldr w2, [x1, 2620]
add w2, w2, w3
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:
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
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
.L200:
add x4, x0, w2, sxtw 1
ldrh w4, [x4, 16]
cmp w4, w6
beq .L199
ldrh w4, [x0, 4]
add w4, w4, 1
strh w4, [x0, 4]
.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]
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
.L210:
ldrb w1, [x0, 6]
add w1, w1, 1
and w1, w1, 255
strb w1, [x0, 6]
cmp w1, w3
bne .L209
ldrh w1, [x0, 2]
strb wzr, [x0, 6]
add w1, w1, 1
strh w1, [x0, 2]
.L209:
ldrb w1, [x0, 6]
add x1, x1, 8
ldrh w1, [x0, x1, lsl 1]
b .L208
.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
.align 2
.global make_superblock
.type make_superblock, %function
make_superblock:
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]
adrp x20, .LANCHOR0
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 .L213
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 95
add x0, x0, :lo12:.LC9
mov w2, 2157
bl sftl_printk
.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]
.L214:
ldrh w1, [x19]
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]
ldp x21, x22, [sp, 32]
ldrh w1, [x0, x1]
mov w0, 10000
ldp x23, x24, [sp, 48]
cmp w1, w0
cset w0, hi
ldp x25, x26, [sp, 64]
strb w0, [x19, 9]
mov w0, 0
ldp x19, x20, [sp, 16]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
hint 29 // autiasp
ret
.L216:
ldrb w0, [x27, x22]
bl V2P_block
strh w25, [x23]
mov w24, w0
bl FtlBbmIsBadBlock
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:
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
udiv w19, w0, w19
.L223:
ldr x0, [x20, 2560]
mov w1, 6
umaddl x21, w21, w1, x0
mov w0, 0
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
.L222:
ldrb w0, [x25, x22]
mov w1, w21
bl V2P_block
bl FtlBbmIsBadBlock
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, .L230
ldr x2, [x1, 2560]
ldr x1, [x1, 2600]
sub x0, x0, x2
mov x2, -6148914691236517206
asr x0, x0, 1
movk x2, 0xaaab, lsl 0
mul x0, x0, x2
and x0, x0, 65535
ldrh w0, [x1, x0, lsl 1]
.L229:
hint 29 // autiasp
ret
.L230:
mov w0, 0
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 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
mul w3, w3, w4
asr w3, w3, 3
cmp w0, w3
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
.L235:
cmp w0, w3
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
beq .L236
add w3, w3, 1
mov w1, w5
and w3, w3, 65535
b .L235
.L238:
mov w0, 0
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:
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]
bl strcpy
ldr w3, [x19, 320]
adrp x2, .LC11
add x2, x2, :lo12:.LC11
mov x0, x20
mov x1, 64
bl snprintf
add x20, x20, w0, sxtw
mov x0, x20
adrp x1, .LC12
add x1, x1, :lo12:.LC12
bl strcpy
ldr w3, [x19, 2624]
add x20, x20, 10
mov x0, x20
mov x1, 64
adrp x2, .LC13
add x2, x2, :lo12:.LC13
bl snprintf
add x22, x20, w0, sxtw
ldr w3, [x19, 2620]
mov x0, x22
mov x1, 64
adrp x2, .LC14
add x2, x2, :lo12:.LC14
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2628]
mov x0, x22
mov x1, 64
adrp x2, .LC15
add x2, x2, :lo12:.LC15
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2632]
mov x0, x22
mov x1, 64
adrp x2, .LC16
add x2, x2, :lo12:.LC16
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2636]
mov x0, x22
mov x1, 64
adrp x2, .LC17
add x2, x2, :lo12:.LC17
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2640]
mov x0, x22
mov x1, 64
adrp x2, .LC18
add x2, x2, :lo12:.LC18
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2644]
mov x0, x22
mov x1, 64
adrp x2, .LC19
add x2, x2, :lo12:.LC19
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2648]
mov x0, x22
mov x1, 64
adrp x2, .LC20
add x2, x2, :lo12:.LC20
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2652]
mov x0, x22
mov x1, 64
adrp x2, .LC21
add x2, x2, :lo12:.LC21
lsr w3, w3, 11
bl snprintf
ldr w3, [x19, 2656]
add x22, x22, w0, sxtw
mov x0, x22
mov x1, 64
adrp x2, .LC22
add x2, x2, :lo12:.LC22
lsr w3, w3, 11
bl snprintf
ldr w3, [x19, 2660]
add x22, x22, w0, sxtw
mov x0, x22
mov x1, 64
adrp x2, .LC23
add x2, x2, :lo12:.LC23
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2664]
mov x0, x22
mov x1, 64
adrp x2, .LC24
add x2, x2, :lo12:.LC24
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 366]
mov x0, x22
mov x1, 64
adrp x2, .LC25
add x2, x2, :lo12:.LC25
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 228]
mov x0, x22
mov x1, 64
adrp x2, .LC26
add x2, x2, :lo12:.LC26
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2668]
mov x0, x22
mov x1, 64
adrp x2, .LC27
add x2, x2, :lo12:.LC27
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2672]
mov x0, x22
mov x1, 64
adrp x2, .LC28
add x2, x2, :lo12:.LC28
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2676]
mov x0, x22
mov x1, 64
adrp x2, .LC29
add x2, x2, :lo12:.LC29
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2680]
mov x0, x22
mov x1, 64
adrp x2, .LC30
add x2, x2, :lo12:.LC30
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2684]
mov x0, x22
mov x1, 64
adrp x2, .LC31
add x2, x2, :lo12:.LC31
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2688]
mov x0, x22
mov x1, 64
adrp x2, .LC32
add x2, x2, :lo12:.LC32
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 2542]
mov x0, x22
mov x1, 64
adrp x2, .LC33
add x2, x2, :lo12:.LC33
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 2540]
mov x0, x22
mov x1, 64
adrp x2, .LC34
add x2, x2, :lo12:.LC34
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 344]
mov x0, x22
mov x1, 64
adrp x2, .LC35
add x2, x2, :lo12:.LC35
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 336]
mov x0, x22
mov x1, 64
adrp x2, .LC36
add x2, x2, :lo12:.LC36
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 232]
mov x0, x22
mov x1, 64
adrp x2, .LC37
add x2, x2, :lo12:.LC37
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 462]
mov x0, x22
mov x1, 64
adrp x2, .LC38
add x2, x2, :lo12:.LC38
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 244]
mov x0, x22
mov x1, 64
adrp x2, .LC39
add x2, x2, :lo12:.LC39
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 2692]
mov x0, x22
mov x1, 64
adrp x2, .LC40
add x2, x2, :lo12:.LC40
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 248]
mov x0, x22
mov x1, 64
adrp x2, .LC41
add x2, x2, :lo12:.LC41
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 2696]
mov x0, x22
mov x1, 64
adrp x2, .LC42
add x2, x2, :lo12:.LC42
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 360]
mov x0, x22
mov x1, 64
adrp x2, .LC43
add x2, x2, :lo12:.LC43
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 26]
mov x0, x22
mov x1, 64
adrp x2, .LC44
add x2, x2, :lo12:.LC44
bl snprintf
add x22, x22, w0, sxtw
ldrb w3, [x19, 30]
mov x0, x22
mov x1, 64
adrp x2, .LC45
add x2, x2, :lo12:.LC45
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 24]
mov x0, x22
mov x1, 64
adrp x2, .LC46
add x2, x2, :lo12:.LC46
bl snprintf
add x22, x22, w0, sxtw
ldrb w3, [x19, 32]
mov x0, x22
mov x1, 64
adrp x2, .LC47
add x2, x2, :lo12:.LC47
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 28]
mov x0, x22
mov x1, 64
adrp x2, .LC48
add x2, x2, :lo12:.LC48
bl snprintf
add x22, x22, w0, sxtw
ldrh w1, [x19, 24]
adrp x2, .LC49
ldr x0, [x19, 72]
add x2, x2, :lo12:.LC49
ldrh w3, [x0, x1, lsl 1]
mov x0, x22
mov x1, 64
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 x22, x22, w0, sxtw
ldrb w3, [x19, 86]
mov x0, x22
mov x1, 64
adrp x2, .LC51
add x2, x2, :lo12:.LC51
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 80]
mov x0, x22
mov x1, 64
adrp x2, .LC52
add x2, x2, :lo12:.LC52
bl snprintf
add x22, x22, w0, sxtw
ldrb w3, [x19, 88]
mov x0, x22
mov x1, 64
adrp x2, .LC53
add x2, x2, :lo12:.LC53
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 84]
mov x0, x22
mov x1, 64
adrp x2, .LC54
add x2, x2, :lo12:.LC54
bl snprintf
add x22, x22, w0, sxtw
ldrh w1, [x19, 80]
adrp x2, .LC55
ldr x0, [x19, 72]
add x2, x2, :lo12:.LC55
ldrh w3, [x0, x1, lsl 1]
mov x0, x22
mov x1, 64
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 x22, x22, w0, sxtw
ldrb w3, [x19, 134]
mov x0, x22
mov x1, 64
adrp x2, .LC57
add x2, x2, :lo12:.LC57
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 128]
mov x0, x22
mov x1, 64
adrp x2, .LC58
add x2, x2, :lo12:.LC58
bl snprintf
add x22, x22, w0, sxtw
ldrb w3, [x19, 136]
mov x0, x22
mov x1, 64
adrp x2, .LC59
add x2, x2, :lo12:.LC59
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 132]
mov x0, x22
mov x1, 64
adrp x2, .LC60
add x2, x2, :lo12:.LC60
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 178]
mov x0, x22
mov x1, 64
adrp x2, .LC61
add x2, x2, :lo12:.LC61
bl snprintf
add x22, x22, w0, sxtw
ldrb w3, [x19, 182]
mov x0, x22
mov x1, 64
adrp x2, .LC62
add x2, x2, :lo12:.LC62
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 176]
mov x0, x22
mov x1, 64
adrp x2, .LC63
add x2, x2, :lo12:.LC63
bl snprintf
add x22, x22, w0, sxtw
ldrb w3, [x19, 184]
mov x0, x22
mov x1, 64
adrp x2, .LC64
add x2, x2, :lo12:.LC64
bl snprintf
add x22, x22, w0, sxtw
ldrh w3, [x19, 180]
mov x0, x22
mov x1, 64
adrp x2, .LC65
add x2, x2, :lo12:.LC65
bl snprintf
add x22, x22, w0, sxtw
ldr w5, [x19, 2788]
mov x0, x22
ldr w4, [x19, 2796]
mov x1, 64
ldr w3, [x19, 2792]
adrp x2, .LC66
add x2, x2, :lo12:.LC66
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2784]
mov x0, x22
mov x1, 64
adrp x2, .LC67
add x2, x2, :lo12:.LC67
bl snprintf
add x22, x22, w0, sxtw
ldr w3, [x19, 2808]
mov x1, 64
mov x0, x22
adrp x2, .LC68
add x2, x2, :lo12:.LC68
bl snprintf
add x20, x22, w0, sxtw
ldrh w3, [x19, 3224]
mov x0, x20
mov x1, 64
adrp x2, .LC69
add x2, x2, :lo12:.LC69
bl snprintf
add x20, x20, w0, sxtw
ldrh w3, [x19, 3226]
mov x0, x20
mov x1, 64
adrp x2, .LC70
add x2, x2, :lo12:.LC70
bl snprintf
add x20, x20, w0, sxtw
ldr w3, [x19, 3228]
mov x0, x20
mov x1, 64
adrp x2, .LC71
add x2, x2, :lo12:.LC71
bl snprintf
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, x20
adrp x2, .LC73
add x2, x2, :lo12:.LC73
bl snprintf
add x20, x20, w0, sxtw
ldrh w0, [x19, 228]
bl GetFreeBlockMaxEraseCount
and w3, w0, 65535
adrp x2, .LC74
mov x0, x20
add x2, x2, :lo12:.LC74
mov x1, 64
bl snprintf
add x20, x20, w0, sxtw
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
cmp w0, 1
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], 80
hint 29 // autiasp
ret
.L241:
ldrh w0, [x19, 176]
mov w1, 65535
cmp w0, w1
beq .L243
ldr x1, [x19, 72]
ubfiz x0, x0, 1, 16
adrp x2, .LC75
add x2, x2, :lo12:.LC75
ldrh w3, [x1, x0]
mov x0, x20
mov x1, 64
bl snprintf
add x20, x20, w0, sxtw
.L243:
mov w0, 0
adrp x23, .LC76
bl List_get_gc_head_node
add x23, x23, :lo12:.LC76
and w4, w0, 65535
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 x2, [x19, 72]
add x0, x0, x24
ldr x3, [x19, 2600]
ldrh w5, [x2, x1]
mov x2, x23
ldrh w6, [x0, 4]
mov x0, x20
ldrh w7, [x3, x1]
mov w3, w22
mov x1, 64
add w22, w22, 1
bl snprintf
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
sub x4, x4, x0
mov x0, -6148914691236517206
movk x0, 0xaaab, lsl 0
mov w26, 6
asr x4, x4, 1
mul x4, x4, x0
and w4, w4, 65535
.L247:
cmp w4, w25
beq .L246
ldr x0, [x19, 2560]
umull x24, w4, w26
ldr x2, [x19, 2600]
ubfiz x1, x4, 1, 16
add x0, x0, x24
mov w3, w22
add w22, w22, 1
ldrh w6, [x2, x1]
mov x2, x23
ldrh w5, [x0, 4]
mov x1, 64
mov x0, x20
bl snprintf
add x20, x20, w0, sxtw
cmp w22, 4
beq .L246
ldr x0, [x19, 2560]
ldrh w4, [x0, x24]
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 .L255
hint 25 // paciasp
stp x29, x30, [sp, -32]!
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 x19, x1
mov x1, 64
add x20, x19, 30
mov x0, x19
bl snprintf
mov x0, x20
bl FtlPrintInfo2buf
add x0, x20, w0, sxtw
sub w0, w0, w19
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.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:
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]
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 .L269
.L271:
mov w20, 65535
.L270:
mov w0, w20
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
.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
strh w1, [x3, x2]
b .L266
.L269:
ldrh w0, [x19, 228]
add w0, w0, w0, lsl 1
ubfx x0, x0, 2, 16
bl GetFreeBlockMaxEraseCount
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 .L271
ldrh w21, [x25, w20, uxtw 1]
ubfiz x26, x20, 1, 32
cmp w22, w21
bcs .L276
bl GetFreeBlockMinEraseCount
cmp w22, w0, uxth
bcs .L276
str w23, [x19, 2688]
.L276:
cmp w24, w21
bls .L271
add w0, w21, 128
cmp w27, w0
ble .L271
add w0, w21, 256
ldr w3, [x19, 2684]
cmp w24, w0
bhi .L277
add w21, w21, 768
cmp w21, w3
bcs .L271
.L277:
ldr x0, [x19, 72]
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 .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, x8
and w20, w0, 65535
and x0, x0, 65535
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:
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
stp x29, x30, [sp, -16]!
and w1, w0, 65535
mov x29, sp
ldr x2, [x2, #:lo12:.LANCHOR0+72]
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
.L288:
mov w0, 0
ret
.size free_data_superblock, .-free_data_superblock
.align 2
.global get_new_active_ppa
.type get_new_active_ppa, %function
get_new_active_ppa:
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 .L292
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 111
add x0, x0, :lo12:.LC9
mov w2, 2792
bl sftl_printk
.L292:
adrp x21, .LANCHOR0
add x21, x21, :lo12:.LANCHOR0
ldrh w1, [x19, 2]
ldrh w0, [x21, 306]
cmp w1, w0
bne .L293
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 111
add x0, x0, :lo12:.LC9
mov w2, 2793
bl sftl_printk
.L293:
ldrh w0, [x19, 4]
cbnz w0, .L294
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 111
add x0, x0, :lo12:.LC9
mov w2, 2794
bl sftl_printk
.L294:
ldrb w0, [x19, 6]
mov w2, 65535
strb wzr, [x19, 10]
add x0, x0, 8
ldrh w3, [x21, 236]
ldrh w0, [x19, x0, lsl 1]
.L295:
ldrh w20, [x19, 2]
cmp w0, w2
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, .LC9
add x1, x1, 111
add x0, x0, :lo12:.LC9
mov w2, 2817
bl sftl_printk
.L291:
mov w0, w20
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.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]
.L296:
ldrb w0, [x19, 6]
add x0, x0, 8
ldrh w0, [x19, x0, lsl 1]
b .L295
.L301:
mov w20, 65535
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 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
.L310:
ldr w2, [x0, 3280]
cmp w1, w2
bcc .L311
hint 29 // autiasp
ret
.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, w4
add x1, x6, w1, sxtw 2
str x1, [x5, x3]
ldrh w1, [x0, 316]
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
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]
.L314:
cmp w3, w1
bcs .L313
ubfiz x4, x3, 5, 16
mov w2, 0
add x4, x0, x4
b .L319
.L315:
add w2, w2, 1
and w2, w2, 65535
.L319:
cmp w2, w7
bcs .L316
umull x6, w2, w8
add x9, x5, x6
ldr x10, [x5, x6]
ldr x6, [x4, 8]
cmp x10, x6
bne .L315
str wzr, [x9, 16]
.L316:
add w3, w3, 1
and w3, w3, 65535
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 w7, 24
mov w8, 1
hint 25 // paciasp
ldr w6, [x2, 3280]
ldr x5, [x2, 3248]
mov w2, 0
.L322:
cmp w2, w1
bcc .L327
hint 29 // autiasp
ret
.L323:
add w3, w3, 1
and w3, w3, 65535
.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
hint 25 // paciasp
ldr x2, [x1, 3288]
ldrh w3, [x1, 3284]
mov x1, 0
sub x2, x2, #2
.L330:
cmp w3, w1, uxth
bhi .L332
mov w0, 0
.L329:
hint 29 // autiasp
ret
.L332:
add x1, x1, 1
ldrh w4, [x2, x1, lsl 1]
cmp w4, w0
bne .L330
mov w0, 1
b .L329
.size IsBlkInGcList, .-IsBlkInGcList
.align 2
.global FtlGcUpdatePage
.type FtlGcUpdatePage, %function
FtlGcUpdatePage:
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
adrp x3, .LANCHOR0
add x3, x3, :lo12:.LANCHOR0
and w6, w0, 65535
mov x4, 0
ldr x1, [x3, 3288]
ldrh w5, [x3, 3284]
sub x7, x1, #2
.L336:
and w2, w4, 65535
cmp w5, w2
bhi .L338
bne .L337
strh w0, [x1, x4, lsl 1]
ldrh w0, [x3, 3284]
add w0, w0, 1
strh w0, [x3, 3284]
b .L337
.L338:
add x4, x4, 1
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]!
mov x29, sp
str x19, [sp, 16]
and w19, w0, 65535
mov w1, w19
adrp x0, .LC80
add x0, x0, :lo12:.LC80
bl sftl_printk
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
ldrh w3, [x0, 226]
cmp w3, w19
beq .L341
ldrh w2, [x0, 224]
cmp w2, w19
beq .L341
mov w1, 65535
cmp w3, w1
bne .L342
strh w19, [x0, 226]
.L341:
mov w0, 0
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.L342:
cmp w2, w1
bne .L341
strh w19, [x0, 224]
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
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, 3314
strh w1, [x19, -2]
strh w20, [x19, w0, sxtw 1]
b .L346
.L347:
add x1, x1, 1
add x3, x2, x1, lsl 1
ldrh w3, [x3, -2]
cmp w3, w20
bne .L345
.L346:
mov w0, 0
ldp x19, x20, [sp, 16]
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]!
mov x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
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, 3348]
add w0, w0, 1
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, 3265
mov x29, sp
sxtw x0, w0
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]!
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]!
mov x29, sp
stp x19, x20, [sp, 16]
mov x20, x1
mov x19, 0
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]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
hint 29 // autiasp
ret
.L367:
cbnz w21, .L362
mov w3, w24
mov x2, x20
mov x1, x25
mov x0, x26
bl sftl_printk
.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
cmp w21, 15
bls .L366
mov w21, 0
adrp x0, .LC86
add x0, x0, :lo12:.LC86
bl sftl_printk
.L366:
add x19, x19, 1
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:
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]
mov x20, x19
umaddl x22, w2, w0, x19
stp x25, x26, [sp, 64]
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, [sp, 80]
cbnz w0, .L372
ldr w1, [sp, 84]
cmp w26, w1
bls .L372
adrp x20, .LANCHOR1
add x20, x20, :lo12:.LANCHOR1
adrp x21, .LC87
add x20, x20, 130
add x21, x21, :lo12:.LC87
.L373:
cmp x19, x22
bne .L374
bl dump_stack
.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
.L374:
ldr w2, [sp, 84]
mov w0, -1
str w0, [x19]
mov x1, x20
mov x0, x21
add x19, x19, 32
bl sftl_printk
ldr x1, [x19, -24]
mov w3, 16
mov w2, 4
adrp x0, .LC88
add x0, x0, :lo12:.LC88
bl rknand_print_hex
ldr x1, [x19, -16]
mov w3, 4
adrp x0, .LC89
mov w2, w3
add x0, x0, :lo12:.LC89
bl rknand_print_hex
b .L373
.L372:
ldr w1, [sp, 84]
ldr x2, [x21, 3360]
blr x2
cmp w0, 0
csel w0, wzr, w24, eq
str w0, [x20]
ldrh w0, [x21, 14]
cmp w0, 4
bne .L379
ldrb w0, [sp, 80]
ldr x2, [x21, 3360]
ldr w1, [sp, 84]
add w1, w23, w1
blr x2
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]
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]!
mov x29, sp
str x21, [sp, 32]
and w21, w0, 65535
sub w2, w21, #1
mov w0, 65533
stp x19, x20, [sp, 16]
cmp w0, w2, uxth
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, .L390
mov w0, w21
bl P2V_block_in_plane
and w20, w0, 65535
lsl w1, w21, 10
ldr x0, [x19, 3400]
mov w2, 1
str w1, [x0, 4]
mov w1, w2
ldr x0, [x19, 3400]
bl FlashEraseBlocks
ldr x2, [x19, 2600]
ubfiz x0, x20, 1, 16
ldrh w1, [x2, x0]
add w1, w1, 1
strh w1, [x2, x0]
ldr w0, [x19, 2680]
add w0, w0, 1
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]
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:
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]
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, [x19, 462]
mov w2, 1
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, [x19, 3400]
bl FlashEraseBlocks
ldr w0, [x19, 2680]
sub w1, w20, #1
add w0, w0, 1
str w0, [x19, 2680]
mov w0, 65533
cmp w0, w1, uxth
bcs .L400
.L399:
ldrh w2, [x19, 462]
adrp x0, .LC90
mov w1, w20
add x0, x0, :lo12:.LC90
bl sftl_printk
.L401:
b .L401
.L402:
mov w20, 65535
b .L399
.L400:
mov w0, w20
ldp x19, x20, [sp, 16]
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]!
mov x29, sp
stp x19, x20, [sp, 16]
mov x19, x0
mov w20, 0
str x21, [sp, 32]
ldrh w1, [x0, 10]
ldr x0, [x0, 16]
.L405:
cmp w1, w20
beq .L411
mov x21, x0
ldrh w2, [x0], 2
cbnz w2, .L406
bl FtlFreeSysBlkQueueOut
and w1, w0, 65535
sub w2, w1, #1
strh w0, [x21]
mov w0, 65533
cmp w0, w2, uxth
bcs .L407
adrp x0, .LANCHOR0+462
ldrh w2, [x0, #:lo12:.LANCHOR0+462]
adrp x0, .LC91
add x0, x0, :lo12:.LC91
bl sftl_printk
.L408:
b .L408
.L407:
ldr w0, [x19, 48]
strh w20, [x19]
add w0, w0, 1
str w0, [x19, 48]
ldrh w0, [x19, 8]
strh wzr, [x19, 2]
add w0, w0, 1
strh w0, [x19, 8]
ldrh w0, [x19, 10]
cmp w0, w20
bhi .L409
.L411:
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 147
add x0, x0, :lo12:.LC9
mov w2, 578
bl sftl_printk
.L409:
mov w0, 0
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.L406:
add w20, w20, 1
and w20, w20, 65535
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
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
mov x29, sp
stp x19, x20, [sp, 16]
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]
stp wzr, w0, [x4, -8]
mov w0, -1
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]
str wzr, [x19, 3228]
strh wzr, [x19, 3232]
str wzr, [x19, 3236]
strh wzr, [x19, 3312]
strh wzr, [x19, 3348]
ldrh w0, [x19, 310]
lsl w0, w0, 1
bl ftl_malloc
ldrh w1, [x19, 310]
str x0, [x19, 3288]
mov w0, 12
mul w0, w1, w0
bl ftl_malloc
ldrh w20, [x19, 236]
str x0, [x19, 3304]
lsl w21, w20, 7
lsl w20, w20, 5
mov w0, w21
bl ftl_malloc
str x0, [x19, 3424]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3432]
mov w0, w21
bl ftl_malloc
str x0, [x19, 3440]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3400]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3272]
ldrh w0, [x19, 236]
ldrh w20, [x19, 314]
lsl w0, w0, 1
add w0, w0, 1
str w0, [x19, 3280]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3448]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3456]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3464]
ldr w0, [x19, 3280]
mul w0, w20, w0
bl ftl_malloc
str x0, [x19, 3256]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3472]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3480]
ldr w1, [x19, 3280]
mov w0, 24
mul w0, w1, w0
bl ftl_malloc
str x0, [x19, 3248]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3488]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3496]
ldrh w0, [x19, 262]
lsl w0, w0, 2
bl ftl_malloc
ldrh w20, [x19, 316]
str x0, [x19, 3504]
ldrh w0, [x19, 236]
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]
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 w1, [x19, 3528]
bl ftl_malloc
str x0, [x19, 3536]
ldrh w0, [x19, 3528]
add x0, x0, 547
lsr x0, x0, 9
strh w0, [x19, 3528]
lsl w0, w0, 9
bl ftl_malloc
ldrh w20, [x19, 246]
str x0, [x19, 3544]
add x0, x0, 32
str x0, [x19, 2600]
lsl w20, w20, 1
mov w0, w20
bl ftl_malloc
str x0, [x19, 3552]
mov w0, w20
bl ftl_malloc
ldr w20, [x19, 332]
str x0, [x19, 72]
lsl w20, w20, 1
mov w0, w20
bl ftl_malloc
str x0, [x19, 3560]
mov w0, w20
bl ftl_malloc
str x0, [x19, 3568]
ldrh w0, [x19, 324]
lsl w0, w0, 1
bl ftl_malloc
str x0, [x19, 352]
ldrh w0, [x19, 324]
lsl w0, w0, 1
bl ftl_malloc
str x0, [x19, 3576]
ldrh w0, [x19, 324]
lsl w0, w0, 2
bl ftl_malloc
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, 3592]
lsl w2, w2, 2
bl ftl_memset
ldrh w0, [x19, 340]
lsl w0, w0, 2
bl ftl_malloc
str x0, [x19, 3600]
ldr w0, [x19, 332]
lsl w0, w0, 2
bl ftl_malloc
str x0, [x19, 3608]
ldrh w0, [x19, 342]
lsl w0, w0, 4
bl ftl_malloc
ldrh w1, [x19, 342]
str x0, [x19, 2608]
ldrh w0, [x19, 314]
mul w0, w1, w0
bl ftl_malloc
str x0, [x19, 3616]
ldrh w1, [x19, 246]
mov w0, 6
mul w0, w1, w0
bl ftl_malloc
str x0, [x19, 2560]
ldrh w0, [x19, 302]
ldrh w1, [x19, 258]
add w0, w0, 31
asr w0, w0, 5
strh w0, [x19, 3624]
mul w0, w1, w0
lsl w0, w0, 2
bl ftl_malloc
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
csinc w1, w1, wzr, ne
add x0, x19, 360
sub w2, w2, w1
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, 173
adrp x0, .LC92
add x0, x0, :lo12:.LC92
bl sftl_printk
mov w0, -1
.L415:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.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, .L420
ldr x0, [x0, 3592]
cbz x0, .L420
mov w0, 0
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]!
mov x29, sp
stp x23, x24, [sp, 48]
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]
mov x19, 0
mov x20, x1
mov x22, x0
lsl w2, w2, 2
mov x0, x20
mov w1, 0
bl ftl_memset
.L518:
ldrh w0, [x22, x19, lsl 1]
mov w1, 65535
cmp w0, w1
beq .L515
ldrh w1, [x23, 302]
cmp w1, w0
bhi .L517
mov x1, x21
mov x0, x24
mov w2, 74
bl sftl_printk
.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:
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
mov x29, sp
mov w2, 16
add x0, x0, 372
strh w1, [x0, -12]
mov w1, 255
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:
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
mov x29, sp
str wzr, [x1, 2]
mov w1, 0
strh w0, [x3, 456]
add x0, x3, 464
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
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]
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
.L526:
ldrh w1, [x19, 6]
cmp w1, w0
bhi .L530
adrp x0, .LANCHOR0+308
mov w24, 0
mov w20, 0
ldrh w1, [x0, #:lo12:.LANCHOR0+308]
ldrh w0, [x19]
strh w1, [x21, x0, lsl 1]
ldrh w25, [x21]
.L531:
ldrh w0, [x19, 10]
cmp w0, w20
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
.L530:
ubfiz x1, x0, 2, 16
ldr w2, [x20, x1]
mov w1, 0
ubfx x2, x2, 10, 16
.L527:
ldrh w3, [x19, 10]
cmp w3, w1
bhi .L529
add w0, w0, 1
and w0, w0, 65535
b .L526
.L529:
ubfiz x3, x1, 1, 16
ldrh w4, [x22, x3]
cmp w4, w2
bne .L528
cbz w2, .L528
ldrh w4, [x21, x3]
add w4, w4, 1
strh w4, [x21, x3]
.L528:
add w1, w1, 1
and w1, w1, 65535
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, [x22, x23]
ldrh w0, [x19, 8]
sub w0, w0, #1
strh w0, [x19, 8]
.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]!
mov w1, 0
mov x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldr x0, [x19, 3568]
ldr w2, [x19, 332]
lsl w2, w2, 1
bl ftl_memset
ldrh w0, [x19, 342]
mov w1, 255
ldrh w2, [x19, 314]
mul w2, w2, w0
ldr x0, [x19, 3616]
bl ftl_memset
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
.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 x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
mov w1, 0
strh w0, [x19, 3698]
mov w0, -1
str w0, [x19, 3708]
ldr x0, [x19, 352]
strh wzr, [x19, 348]
ldrh w2, [x19, 324]
str wzr, [x19, 3700]
str wzr, [x19, 3704]
lsl w2, w2, 1
bl ftl_memset
ldr x0, [x19, 2600]
mov w1, 0
ldrh w2, [x19, 246]
lsl w2, w2, 1
bl ftl_memset
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
bl ftl_memset
mov w2, 512
mov w1, 0
add x0, x19, 2712
bl ftl_memset
bl FtlGcBufInit
bl FtlL2PDataInit
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:
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 x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
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, 228]
str xzr, [x19, 2568]
str xzr, [x19, 2576]
strh wzr, [x19, 2584]
str xzr, [x19, 2592]
.L551:
ldrh w0, [x19, 244]
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
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 w22, [x0, 4]
ldrh w0, [x19, 24]
cmp w0, w20
beq .L556
ldrh w0, [x19, 80]
cmp w0, w20
beq .L556
ldrh w0, [x19, 128]
cmp w0, w20
beq .L556
ldr x1, [x19, 72]
ubfiz x0, x20, 1, 16
ldrh w0, [x1, x0]
cbnz w0, .L557
add w23, w23, 1
mov w0, w20
and w23, w23, 65535
bl INSERT_FREE_LIST
.L556:
add w20, w20, 1
and w20, w20, 65535
b .L551
.L554:
ldr x1, [x19, 72]
ubfiz x0, x20, 1, 16
strh w26, [x1, x0]
b .L555
.L557:
add w21, w21, 1
mov w0, w20
and w21, w21, 65535
bl INSERT_DATA_LIST
b .L556
.L558:
strh w23, [x19, 228]
strh w21, [x19, 2584]
add w21, w21, w23
cmp w21, w0
ble .L560
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 198
add x0, x0, :lo12:.LC9
mov w2, 2219
bl sftl_printk
.L560:
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 SupperBlkListInit, .-SupperBlkListInit
.align 2
.global FtlGcPageVarInit
.type FtlGcPageVarInit, %function
FtlGcPageVarInit:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE68
.text
.LPFE68:
nop
nop
hint 25 // paciasp
stp x29, x30, [sp, -32]!
mov w1, 255
mov x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldr x0, [x19, 3288]
strh wzr, [x19, 3284]
ldrh w2, [x19, 310]
strh wzr, [x19, 3296]
lsl w2, w2, 1
bl ftl_memset
ldrh w2, [x19, 310]
mov w0, 12
mov w1, 255
mul w2, w2, w0
ldr x0, [x19, 3304]
bl ftl_memset
bl FtlGcBufInit
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.size FtlGcPageVarInit, .-FtlGcPageVarInit
.align 2
.global FlashGetBadBlockList
.type FlashGetBadBlockList, %function
FlashGetBadBlockList:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE69
.text
.LPFE69:
nop
nop
hint 25 // paciasp
stp x29, x30, [sp, -48]!
mov w2, 256
mov x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
mov x19, x0
str x21, [sp, 32]
mov w21, w1
mov w1, 255
bl ftl_memset
ldr x2, [x20, 3352]
mov w1, w21
mov x0, x19
blr x2
and w0, w0, 65535
cmp w0, 50
bls .L565
mov x0, x19
mov w2, 256
mov w1, 255
bl ftl_memset
mov w0, 0
.L565:
ldrh w1, [x20, 14]
cmp w1, 4
bne .L570
mov x1, 0
b .L566
.L567:
ldrh w2, [x19, x1, lsl 1]
lsr w2, w2, 1
strh w2, [x19, x1, lsl 1]
add x1, x1, 1
.L566:
cmp w0, w1, uxth
bhi .L567
.L570:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.size FlashGetBadBlockList, .-FlashGetBadBlockList
.align 2
.global ftl_memcpy
.type ftl_memcpy, %function
ftl_memcpy:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE70
.text
.LPFE70:
nop
nop
hint 25 // paciasp
stp x29, x30, [sp, -16]!
uxtw x2, w2
mov x29, sp
bl memcpy
ldp x29, x30, [sp], 16
hint 29 // autiasp
ret
.size ftl_memcpy, .-ftl_memcpy
.section .rodata.str1.1
.LC93:
.string "FlashReadPages %x %x error_ecc_bits %d\n"
.LC94:
.string "data:"
.LC95:
.string "spare:"
.text
.align 2
.global FlashReadPages
.type FlashReadPages, %function
FlashReadPages:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE71
.text
.LPFE71:
nop
nop
hint 25 // paciasp
stp x29, x30, [sp, -96]!
mrs x2, sp_el0
mov x29, sp
stp x19, x20, [sp, 16]
mov x19, x0
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
mov w0, 32
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR1
add x22, x22, :lo12:.LANCHOR1
stp x23, x24, [sp, 48]
umaddl x23, w1, w0, x19
adrp x24, .LC9
stp x25, x26, [sp, 64]
add x22, x22, 216
ldrh w25, [x20, 12]
ldr x3, [x2, 1376]
str x3, [sp, 88]
mov x3, 0
add x24, x24, :lo12:.LC9
.L575:
cmp x19, x23
bne .L588
mrs x0, sp_el0
ldr x1, [sp, 88]
ldr x2, [x0, 1376]
subs x1, x1, x2
mov x2, 0
beq .L589
bl __stack_chk_fail
.L588:
ldr x0, [x19, 8]
cbz x0, .L576
ldr x0, [x19, 16]
cbnz x0, .L577
.L576:
mov x1, x22
mov x0, x24
mov w2, 96
bl sftl_printk
.L577:
ldr w0, [x19, 4]
add x2, sp, 80
add x1, sp, 84
bl l2p_addr_tran.isra.0
ldr w0, [sp, 80]
cmp w0, 3
bls .L578
mov w0, -1
str w0, [x19]
.L579:
add x19, x19, 32
b .L575
.L578:
ldr x21, [x19, 8]
tst x21, 63
beq .L580
ldr x21, [x20, 3488]
.L580:
mov x2, x21
ldr w1, [sp, 84]
ldr x3, [x19, 16]
ldr x4, [x20, 3376]
blr x4
str w0, [x19]
ldrh w0, [x20, 14]
cmp w0, 4
bne .L582
ldrb w0, [sp, 80]
add x2, x21, 2048
ldr x4, [x20, 3376]
ldr x3, [x19, 16]
ldr w1, [sp, 84]
add x3, x3, 8
add w1, w25, w1
blr x4
cmn w0, #1
beq .L583
ldr x1, [x19, 16]
ldr w2, [x1, 12]
cmn w2, #1
bne .L584
ldr w2, [x1, 8]
cmn w2, #1
bne .L584
ldr w1, [x1]
cmn w1, #1
beq .L584
.L583:
mov w0, -1
.L615:
str w0, [x19]
b .L585
.L584:
ldr w1, [x19]
cmn w1, #1
beq .L585
cmp w0, 256
beq .L615
.L585:
ldr w3, [x19]
cmp w3, 256
ccmn w3, #1, 4, ne
bne .L582
ldr w1, [x19, 4]
adrp x0, .LC93
ldr w2, [sp, 84]
add x0, x0, :lo12:.LC93
bl sftl_printk
ldr x1, [x19, 8]
cbz x1, .L587
mov w3, 4
adrp x0, .LC94
mov w2, w3
add x0, x0, :lo12:.LC94
bl rknand_print_hex
.L587:
ldr x1, [x19, 16]
cbz x1, .L582
mov w3, 4
adrp x0, .LC95
mov w2, w3
add x0, x0, :lo12:.LC95
bl rknand_print_hex
.L582:
ldr x0, [x20, 3488]
cmp x0, x21
bne .L579
ldr x0, [x19, 8]
cmp x0, x21
beq .L579
ldrh w2, [x20, 262]
mov x1, x21
lsl w2, w2, 9
bl ftl_memcpy
b .L579
.L589:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
hint 29 // autiasp
ret
.size FlashReadPages, .-FlashReadPages
.align 2
.global FtlLoadFactoryBbt
.type FtlLoadFactoryBbt, %function
FtlLoadFactoryBbt:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE72
.text
.LPFE72:
nop
nop
hint 25 // paciasp
stp x29, x30, [sp, -80]!
mov x29, sp
stp x19, x20, [sp, 16]
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, x20, 360
stp x25, x26, [sp, 64]
mov w25, -1
mov w26, 61664
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
.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 w19, w1
ble .L620
madd w0, w0, w22, w19
mov w2, 1
mov w1, w2
lsl w0, w0, 10
str w0, [x21, 4]
mov x0, x21
bl FlashReadPages
ldr w0, [x21]
cmn w0, #1
beq .L619
ldrh w0, [x24]
cmp w0, w26
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:
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]
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 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
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, [sp, 104]
cmn w0, #1
bne .L631
mov w23, 0
mov w24, 2
b .L630
.L628:
ldrh w19, [x1, 306]
b .L629
.L634:
add w0, w23, w19
mov w1, 1
mov w2, w22
sdiv w0, w0, w24
sxth w20, w0
orr w0, w0, w21
str w0, [sp, 76]
add x0, sp, 72
bl FlashReadPages
ldp w0, w1, [sp, 104]
and w0, w0, w1
cmn w0, #1
bne .L632
ldr w0, [sp, 72]
cmn w0, #1
beq .L632
sub w19, w20, #1
sxth w19, w19
.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 .L630
.L635:
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 176
hint 29 // autiasp
ret
.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
.align 2
.global FtlScanSysBlk
.type FtlScanSysBlk, %function
FtlScanSysBlk:
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
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ldr x0, [x19, 3608]
stp x23, x24, [sp, 48]
ldr w2, [x19, 332]
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, 3560]
mov w1, 0
ldr w2, [x19, 332]
lsl w2, w2, 1
bl ftl_memset
ldr x0, [x19, 3584]
mov w1, 0
ldrh w2, [x19, 324]
lsl w2, w2, 2
bl ftl_memset
ldr x0, [x19, 352]
mov w1, 0
ldrh w2, [x19, 324]
lsl w2, w2, 1
bl ftl_memset
add x0, x19, 2696
mov w2, 16
mov w1, 255
bl ftl_memset
ldrh w23, [x19, 244]
.L642:
ldrh w0, [x19, 246]
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 w20, w0, 65535
bl FtlBbmIsBadBlock
cbnz w0, .L643
ldr x0, [x19, 3424]
ubfiz x2, x22, 5, 16
lsl w20, w20, 10
add x0, x0, x2
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, w22, w27
add w22, w22, 1
and w22, w22, 65535
sdiv w0, w0, w25
add x0, x2, w0, sxtw 2
str x0, [x1, 16]
.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
mov x25, 0
bl FlashReadPages
.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
bne .L648
mov w28, 16
.L650:
ldr x0, [x19, 3424]
mov w2, 1
add x0, x0, x27
ldr w1, [x0, 4]
add w1, w1, 1
str w1, [x0, 4]
mov w1, w2
ldr x0, [x19, 3424]
add x0, x0, x27
bl FlashReadPages
ldrh w0, [x21]
mov w3, 65535
cmp w0, w3
ldr x0, [x19, 3424]
bne .L647
mov w1, -1
str w1, [x0, x27]
ldr x0, [x19, 3424]
ldr w0, [x0, x27]
cmp w0, w1
beq .L649
.L648:
ldr w1, [x19, 2660]
ldr w0, [x21, 4]
cmn w1, #1
beq .L697
cmp w1, w0
bhi .L651
.L697:
cmn w0, #1
beq .L651
add w1, w0, 1
str w1, [x19, 2660]
.L651:
ldrh w1, [x21]
mov w2, 61634
cmp w1, w2
beq .L652
bhi .L653
mov w2, 61574
cmp w1, w2
beq .L654
mov w2, 61604
cmp w1, w2
beq .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 .L656
mov w1, 0
.L721:
mov w0, w20
bl FtlFreeSysBlkQueueIn
b .L656
.L652:
ldrh w1, [x19, 3696]
ldr w0, [x19, 332]
cmp w1, w0
bls .L658
mov x1, x24
mov x0, x26
mov w2, 1232
bl sftl_printk
.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 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 .L668
mov x1, x24
mov x0, x26
mov w2, 1273
bl sftl_printk
.L668:
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], 96
hint 29 // autiasp
ret
.L683:
ldrh w0, [x19, 3696]
cbz w0, .L686
ldr w3, [x19, 332]
mov w0, 0
.L687:
cmp w0, w3
bcs .L686
ldrh w4, [x2, w0, sxtw 1]
add w1, w0, 1
sxth w1, w1
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
.L692:
mov w3, w0
cmp w0, 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
b .L693
.L717:
add w0, w0, 1
sxth w0, w0
b .L692
.size FtlScanSysBlk, .-FtlScanSysBlk
.align 2
.global FtlLoadBbt
.type FtlLoadBbt, %function
FtlLoadBbt:
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
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
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, [x19, 302]
sub w20, w20, #1
and w20, w20, 65535
.L723:
ldrh w0, [x19, 302]
sub w0, w0, #16
cmp w20, w0
ble .L728
lsl w0, w20, 10
mov w2, 1
mov w1, w2
str w0, [x22, 4]
mov x0, x22
bl FlashReadPages
ldr w0, [x22]
cmn w0, #1
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
cmp w1, w0
beq .L742
ldrh w1, [x19, 364]
cmp w1, w0
beq .L732
add x0, x19, 3712
lsl w1, w1, 10
mov w2, 1
str w1, [x0, 4]
mov w1, w2
bl FlashReadPages
ldr w0, [x19, 3712]
cmn w0, #1
beq .L732
ldrh w1, [x21]
mov w0, 61649
cmp w1, w0
bne .L732
ldr w1, [x19, 368]
ldr w0, [x21, 4]
cmp w0, w1
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, x19, 3712
mov w20, 0
mov w25, 61649
bl FtlGetLastWrittenPage
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, .LC9
add x1, x1, 245
add x0, x0, :lo12:.LC9
mov w2, 251
bl sftl_printk
.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 .L739
ldrh w1, [x19, 246]
lsr w1, w1, 2
cmp w2, w1
bcs .L739
cmp w0, w1
bcs .L739
bl FtlSysBlkNumInit
.L739:
add x21, x19, 360
mov x20, 0
.L740:
ldrh w0, [x19, 258]
cmp w0, w20
bhi .L741
mov w0, 0
.L722:
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
.L724:
ldr w0, [x22, 4]
mov w2, 1
mov w1, w2
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, [x19, 3448]
mov w1, w2
str x0, [x23, 8]
mov x0, x23
bl FlashReadPages
ldr w0, [x23]
cmn w0, #1
beq .L735
ldrh w0, [x21]
cmp w0, w25
beq .L736
.L735:
add w20, w20, 1
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 .L740
.L742:
mov w0, -1
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov x19, x0
mov w0, 32
stp x23, x24, [sp, 48]
adrp x23, .LANCHOR1
umaddl x22, w1, w0, x19
stp x25, x26, [sp, 64]
add x23, x23, :lo12:.LANCHOR1
mov w25, w2
stp x27, x28, [sp, 80]
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
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 w24, [sp, 120]
cmn w24, #1
bne .L771
ldr w1, [x19, 4]
mov x0, x21
bl sftl_printk
str w24, [x19]
.L771:
ldr w24, [sp, 120]
cmp w24, 256
bne .L772
ldr w1, [x19, 4]
mov x0, x23
bl sftl_printk
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 .L774
ldr w3, [x0, 8]
ldr w5, [x1, 8]
cmp w5, w3
beq .L773
.L774:
ldr w5, [x0, 4]
adrp x0, .LC98
ldr w3, [x1, 4]
add x0, x0, :lo12:.LC98
ldr w1, [x19, 4]
bl sftl_printk
mov w0, -1
str w0, [x19]
.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
mov w0, -1
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 .L760
adrp x20, .LANCHOR1
add x20, x20, :lo12:.LANCHOR1
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]
mov x1, x20
mov x0, x21
add x19, x19, 32
bl sftl_printk
ldr x1, [x19, -24]
mov w3, 16
mov w2, 4
adrp x0, .LC88
add x0, x0, :lo12:.LC88
bl rknand_print_hex
ldr x1, [x19, -16]
mov w3, 4
adrp x0, .LC89
mov w2, w3
add x0, x0, :lo12:.LC89
bl rknand_print_hex
b .L761
.L760:
ldr x1, [x21, 8]
tst x1, 63
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
.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
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]!
adrp x4, .LANCHOR0
mov x29, sp
stp x27, x28, [sp, 80]
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
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
mov x23, 0
bl FlashEraseBlocks
.L803:
ldr x1, [x28, 3400]
lsl x0, x23, 5
ldr w0, [x1, x0]
add x2, x1, x23, lsl 5
cmn w0, #1
bne .L802
ldr w0, [x2, 4]
add w19, w19, 1
and w19, w19, 65535
ubfx x0, x0, 10, 16
bl FtlBbmMapBadBlock
.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
mov w23, 0
str x0, [sp, 96]
.L812:
mov w27, 0
mov w20, 0
.L805:
ldrh w0, [x28, 236]
cmp w0, w27
bhi .L808
cbz w20, .L794
ldr x0, [x28, 3400]
mov w2, w24
mov w1, w20
mov w3, 1
mov x25, 0
bl FlashProgPages
.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
and w19, w19, 65535
ubfx x0, x0, 10, 16
bl FtlBbmMapBadBlock
.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
ubfx x0, x0, 10, 16
bl FtlFreeSysBlkQueueIn
.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, w24
bl FlashEraseBlocks
.L794:
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
hint 29 // autiasp
ret
.L799:
ldr x1, [x28, 3400]
ubfiz x0, x23, 5, 16
str wzr, [x1, x0]
mov w1, w22
ldrb w0, [x24, w23, sxtw]
bl V2P_block
and w27, w0, 65535
mov w26, w27
cbz w21, .L796
bl IsBlkInVendorPart
cbnz w0, .L797
.L796:
mov w0, w26
bl FtlBbmIsBadBlock
cbnz w0, .L798
ldr x0, [x28, 3400]
ubfiz x2, x20, 5, 16
lsl w27, w27, 10
add x0, x0, x2
str w27, [x0, 4]
ldr x1, [x28, 3400]
ldr x0, [x28, 3480]
add x1, x1, x2
ldr x2, [x28, 3520]
str x0, [x1, 8]
ldrh w0, [x28, 316]
mul w0, w0, w20
add w20, w20, 1
and w20, w20, 65535
sdiv w0, w0, w25
add x0, x2, w0, sxtw 2
str x0, [x1, 16]
.L797:
add w23, w23, 1
and w23, w23, 65535
b .L795
.L798:
add w19, w19, 1
and w19, w19, 65535
b .L797
.L816:
mov w24, 0
mov w26, 2
b .L804
.L808:
ldr x1, [x28, 3400]
ubfiz x0, x27, 5, 16
str wzr, [x1, x0]
mov w1, w22
ldr x0, [sp, 96]
ldrb w0, [x0, w27, sxtw]
bl V2P_block
and w25, w0, 65535
mov w1, w25
cbz w21, .L806
str w25, [sp, 108]
bl IsBlkInVendorPart
ldr w1, [sp, 108]
cbnz w0, .L807
.L806:
mov w0, w1
bl FtlBbmIsBadBlock
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
add x0, x3, w0, sxtw 2
str x0, [x1, 16]
.L807:
add w2, w27, 1
and w27, w2, 65535
b .L805
.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
.align 2
.global FlashTestBlk
.type FlashTestBlk, %function
FlashTestBlk:
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
mrs x0, sp_el0
ldr x1, [x0, 1376]
str x1, [sp, 136]
mov x1, 0
cmp w19, 11
bls .L841
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
mov w2, 32
mov w1, 165
lsl w19, w19, 10
ldr x0, [x20, 3496]
str x0, [sp, 48]
add x0, sp, 72
str x0, [sp, 56]
bl ftl_memset
ldr x0, [x20, 3496]
mov w2, 8
mov w1, 90
bl ftl_memset
add x0, sp, 40
mov w2, 1
mov w1, w2
str w19, [sp, 44]
bl FlashEraseBlocks
mov w3, 1
add x0, sp, 40
mov w2, w3
mov w1, w3
bl FlashProgPages
ldr w0, [sp, 40]
cbnz w0, .L842
add w0, w19, 1
mov w3, 1
mov w2, w3
mov w1, w3
str w0, [sp, 44]
add x0, sp, 40
bl FlashProgPages
ldr w0, [sp, 40]
cmp w0, 0
csetm w20, ne
.L839:
add x0, sp, 40
mov w2, 1
mov w1, 0
str w19, [sp, 44]
bl FlashEraseBlocks
.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
.L842:
mov w20, -1
b .L839
.L841:
mov w20, 0
b .L837
.L840:
mov w0, w20
ldp x19, x20, [sp, 16]
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
mov x29, sp
stp x19, x20, [sp, 16]
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]
stp x25, x26, [sp, 64]
str x0, [x19, 3720]
bl ftl_memset
.L845:
ldrh w0, [x19, 258]
add x1, x19, 3712
cmp w0, w20
bgt .L846
ldr x21, [x1, 16]
mov w2, 16
mov w1, 255
adrp x25, .LC100
mov x0, x21
bl ftl_memset
mov w0, -3887
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, [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, [x19, 3712]
str w0, [x19, 3716]
mov x0, x25
bl sftl_printk
ldrh w0, [x19, 308]
ldrh w1, [x20, 2]
sub w0, w0, #1
cmp w1, w0
blt .L848
ldr w0, [x20, 8]
mov w2, 1
strh wzr, [x20, 2]
add w0, w0, 1
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, [x19, 3400]
bl FlashEraseBlocks
.L848:
add x23, x19, 3712
mov w3, 1
mov x0, x23
mov w2, w3
mov w1, w3
bl FlashProgPages
ldrh w0, [x20, 2]
add w0, w0, 1
strh w0, [x20, 2]
ldr w0, [x19, 3712]
cmn w0, #1
bne .L849
ldr w1, [x19, 3716]
add w22, w22, 1
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 .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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
mov x20, x0
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]
.L857:
ldrh w1, [x19, 2584]
ldrh w0, [x19, 228]
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 w22, w0, 65535
ldrh w0, [x19, 228]
cbnz w0, .L860
adrp x0, .LC9
add x1, x23, 271
add x0, x0, :lo12:.LC9
mov w2, 2676
bl sftl_printk
.L860:
ldrh w0, [x19, 228]
sub w0, w0, #1
strh w0, [x19, 228]
ldrh w0, [x19, 244]
cmp w0, w22
bls .L857
ldr x0, [x19, 72]
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, .L862
ldr x0, [x19, 72]
mov w1, -1
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 .L857
add x1, x23, 271
mov w2, 2690
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
b .L857
.L883:
mov w1, 0
b .L859
.L862:
ldrh w1, [x19, 2584]
ldrh w0, [x19, 228]
add w0, w0, w1
ldrh w1, [x19, 244]
cmp w0, w1
ble .L864
adrp x0, .LC9
add x1, x23, 271
add x0, x0, :lo12:.LC9
mov w2, 2693
bl sftl_printk
.L864:
ldrh w3, [x19, 236]
add x4, x20, 16
mov x0, 0
mov w5, 65535
.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
bl sftl_printk
.L868:
ldrh w0, [x19, 176]
cmp w0, w22
bne .L869
adrp x0, .LC9
add x1, x23, 271
add x0, x0, :lo12:.LC9
mov w2, 2706
bl sftl_printk
.L869:
ldrb w2, [x20, 8]
ldr x0, [x19, 2600]
ldrh w1, [x0, x24]
cbnz w2, .L870
cbz w1, .L884
ldrh w2, [x19, 296]
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]
.L872:
ldr x0, [x19, 2600]
ldr w1, [x19, 2684]
ldrh w0, [x0, x24]
cmp w0, w1
bls .L873
str w0, [x19, 2684]
.L873:
ldr w1, [x19, 2672]
ldrh w0, [x19, 296]
ldr w2, [x19, 2668]
madd w0, w0, w2, w1
ldrh w1, [x19, 244]
udiv w0, w0, w1
ldr x1, [x19, 3544]
str w0, [x19, 2676]
ldr w0, [x1, 16]
add w0, w0, 1
str w0, [x1, 16]
mov x1, 0
.L874:
ldr x0, [x19, 3400]
cmp w21, w1, uxth
bhi .L875
ldrb w1, [x20, 8]
mov w2, w21
mov x26, 0
mov w27, 0
bl FlashEraseBlocks
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
.L879:
ldrb w0, [x20, 7]
cbnz w0, .L880
ldr x0, [x19, 72]
mov w1, -1
strh w1, [x0, x24]
b .L857
.L867:
ldr x1, [x19, 3400]
add x2, x1, x0, lsl 5
stp xzr, xzr, [x2, 8]
ldrh w2, [x4, x0, lsl 1]
cmp w2, w5
beq .L866
ubfiz x6, x21, 5, 16
add w21, w21, 1
add x1, x1, x6
and w21, w21, 65535
lsl w2, w2, 10
str w2, [x1, 4]
.L866:
add x0, x0, 1
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 .L872
.L875:
add x0, x0, x1, lsl 5
add x1, x1, 1
ldr w2, [x0, 4]
and w2, w2, -1024
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]
add w27, w27, 1
str x2, [sp, 104]
ubfx x0, x0, 10, 16
bl FtlBbmMapBadBlock
ldr x2, [sp, 104]
strh w28, [x2, x26, lsl 1]
ldrb w0, [x20, 7]
sub w0, w0, #1
strb w0, [x20, 7]
.L877:
add x26, x26, 1
b .L876
.L880:
ldrh w1, [x19, 306]
strh w22, [x20]
strh wzr, [x20, 2]
strb wzr, [x20, 6]
mul w0, w0, w1
ldr w1, [x19, 2660]
str w1, [x20, 12]
and w0, w0, 65535
add w1, w1, 1
strh w0, [x20, 4]
str w1, [x19, 2660]
ldr x1, [x19, 72]
ldrh w2, [x20]
strh w0, [x1, x2, lsl 1]
ldrh w0, [x20, 4]
cbz w0, .L881
ldrb w0, [x20, 7]
cbnz w0, .L882
.L881:
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 271
add x0, x0, :lo12:.LC9
mov w2, 2759
bl sftl_printk
.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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
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]
cbnz w0, .L896
.L891:
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
.L895:
add x0, x19, 264
mov w1, w25
mov w20, 0
ldrb w0, [x0, w21, sxtw]
bl V2P_block
and w22, w0, 65535
.L892:
ldrh w0, [x19, 3312]
cmp w0, w20
bhi .L894
add w21, w21, 1
and w21, w21, 65535
.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, w22
bne .L893
mov w1, w22
mov x0, x26
bl sftl_printk
mov w0, w22
bl FtlBbmMapBadBlock
bl FtlBbmTblFlush
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 .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:
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]
adrp x19, .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, x19, 2568
bl List_remove_node
ldrh w0, [x19, 2584]
cbnz w0, .L905
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 296
add x0, x0, :lo12:.LC9
mov w2, 2835
bl sftl_printk
.L905:
ldrh w0, [x19, 2584]
sub w0, w0, #1
strh w0, [x19, 2584]
mov w0, w20
bl free_data_superblock
mov w0, w20
bl FtlGcFreeBadSuperBlk
ldrh w1, [x19, 2584]
ldrh w0, [x19, 228]
add w0, w0, w1
ldrh w1, [x19, 244]
cmp w0, w1
ble .L909
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 296
add x0, x0, :lo12:.LC9
mov w2, 2838
bl sftl_printk
.L909:
mov w0, 1
b .L898
.L902:
ldrh w0, [x19, 24]
cmp w0, w20
beq .L908
ldrh w0, [x19, 80]
cmp w0, w20
beq .L908
ldrh w0, [x19, 128]
cmp w0, w20
bne .L903
.L908:
mov w0, 0
.L898:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.L899:
mov w0, w20
bl List_update_data_list
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]!
mov w1, 65535
mov x29, sp
stp x19, x20, [sp, 16]
cmp w1, w0, uxth
adrp x19, .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
ldrh w0, [x1, x21]
cbnz w0, .L913
mov w1, w20
mov w2, 0
adrp x0, .LC104
add x0, x0, :lo12:.LC104
bl sftl_printk
ldr x0, [x19, 72]
ldrh w0, [x0, x21]
cbz w0, .L914
.L919:
mov w21, 0
.L911:
mov w0, w21
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.L914:
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 312
mov w2, 2853
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
b .L919
.L913:
sub w0, w0, #1
strh w0, [x1, x21]
.L912:
ldrh w0, [x19, 3698]
mov w1, 65535
cmp w0, w1
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]
strh w20, [x19, 3698]
ldr x0, [x19, 2568]
cset w21, ne
sub x0, x0, x1
mov x1, -6148914691236517206
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, .L911
cmp w20, w0, uxth
beq .L911
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 312
mov w2, 2869
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
b .L911
.size decrement_vpc_count, .-decrement_vpc_count
.align 2
.global FtlSuperblockPowerLostFix
.type FtlSuperblockPowerLostFix, %function
FtlSuperblockPowerLostFix:
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]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov x19, x0
mrs x0, sp_el0
ldr x1, [x0, 1376]
str x1, [sp, 88]
mov x1, 0
mov w0, -1
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]
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]
strh wzr, [x19, 4]
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
.L922:
mov x0, x19
bl get_new_active_ppa
str w0, [sp, 60]
cmn w0, #1
beq .L923
ldr w0, [x20, 2664]
mov w3, 0
str w0, [x22, 4]
mov w2, 0
cmn w0, #2
mov w1, 1
csinc w0, wzr, w0, eq
str w0, [x20, 2664]
add x0, sp, 56
sub w21, w21, #1
bl FlashProgPages
ldrh w0, [x19]
bl decrement_vpc_count
b .L921
.L927:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
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
.L934:
ldrh w0, [x19, 258]
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 w20, w20, #1
and w20, w20, 65535
.L943:
ldrh w0, [x21, 12]
sub w0, w0, #48
cmp w20, w0
ble .L947
mov w0, w20
bl FtlBbmIsBadBlock
cmp w0, 1
beq .L944
mov w0, w20
bl FlashTestBlk
cbz w0, .L945
mov w0, w20
bl FtlBbmMapBadBlock
.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 w22, w22, w23, w1
mov w1, w2
lsl w0, w22, 10
str w0, [x20, 4]
mov x0, x20
bl FlashReadPages
ldrh w2, [x19, 302]
ldr x1, [x20, 8]
add w2, w2, 7
ldr x0, [x24, 32]
lsr w2, w2, 3
bl ftl_memcpy
.L936:
mov w0, w22
add w23, w23, 1
add x24, x24, 8
add x25, x25, 2
bl FtlBbmMapBadBlock
b .L934
.L935:
mov w1, w23
bl FlashGetBadBlockList
ldr x0, [x20, 8]
ldr x1, [x24, 32]
bl FtlBbt2Bitmap
ldrh w21, [x19, 302]
.L938:
sub w21, w21, #1
and w21, w21, 65535
.L937:
ldrh w0, [x19, 302]
madd w0, w23, w0, w21
bl FtlBbmIsBadBlock
cmp w0, 1
beq .L938
ldr x0, [x19, 3512]
strh w21, [x25, 12]
mov w2, 16
mov w1, 0
bl ftl_memset
ldr x0, [x19, 3448]
mov w2, 4096
mov w1, 0
bl ftl_memset
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
lsl w0, w22, 10
str w0, [x20, 4]
ldr x0, [x20, 8]
bl ftl_memcpy
mov w2, 1
mov x0, x20
mov w1, w2
bl FlashEraseBlocks
mov w3, 1
mov x0, x20
mov w1, w3
mov w2, w3
bl FlashProgPages
ldr w1, [x20]
and w0, w22, 65535
cmn w1, #1
bne .L936
bl FtlBbmMapBadBlock
b .L937
.L942:
mov w0, w20
add w20, w20, 1
and w20, w20, 65535
bl FtlBbmMapBadBlock
b .L941
.L945:
ldrh w0, [x21]
cmp w0, w22
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
strh wzr, [x19, 362]
lsl w0, w0, 10
str w0, [x1, 4]
ldr x0, [x19, 3400]
ldrh w1, [x19, 364]
lsl w1, w1, 10
str w1, [x0, 36]
mov w1, 1
bl FlashEraseBlocks
ldrh w0, [x19, 360]
bl FtlBbmMapBadBlock
ldrh w0, [x19, 364]
bl FtlBbmMapBadBlock
bl FtlBbmTblFlush
strh wzr, [x19, 362]
ldr w0, [x19, 368]
ldrh w1, [x19, 364]
add w0, w0, 1
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]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
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
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
hint 25 // paciasp
.L956:
cmp w1, w3
bhi .L957
hint 29 // autiasp
ret
.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 .L956
.size js_hash, .-js_hash
.section .rodata.str1.1
.LC105:
.string "FtlMapWritePage error = %x \n"
.LC106:
.string "FtlMapWritePage error = %x error count = %d\n"
.text
.align 2
.global FtlMapWritePage
.type FtlMapWritePage, %function
FtlMapWritePage:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE88
.text
.LPFE88:
nop
nop
hint 25 // paciasp
stp x29, x30, [sp, -96]!
mov x29, sp
stp x23, x24, [sp, 48]
mov w24, w1
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
mov x19, x0
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 .L961
ldrh w1, [x19]
mov w0, 65535
cmp w1, w0
bne .L962
.L961:
mov x0, x19
bl Ftl_write_map_blk_to_last_page
.L962:
ldrh w1, [x19]
ldr x0, [x19, 16]
ldrh w0, [x0, x1, lsl 1]
cbnz w0, .L963
adrp x0, .LC9
add x1, x25, 332
add x0, x0, :lo12:.LC9
mov w2, 700
bl sftl_printk
.L963:
ldrh w1, [x19]
ldrh w0, [x19, 10]
cmp w1, w0
bcc .L964
adrp x0, .LC9
add x1, x25, 332
add x0, x0, :lo12:.LC9
mov w2, 701
bl sftl_printk
.L964:
ldrh w1, [x19]
mov w2, 16
ldr x0, [x19, 16]
ldrh w28, [x0, x1, lsl 1]
mov w1, 0
ldrh w0, [x19, 2]
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 x23, [x21, 16]
ldr w0, [x19, 48]
str w0, [x23, 4]
strh w24, [x23, 8]
ldrh w0, [x19, 4]
strh w0, [x23]
strh w28, [x23, 2]
ldrh w1, [x20, 314]
ldr x0, [x21, 8]
bl js_hash
str w0, [x23, 12]
mov w3, 1
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, [x21]
cmn w0, #1
bne .L965
adrp x0, .LC105
add x0, x0, :lo12:.LC105
bl sftl_printk
add w22, w22, 1
ldrh w0, [x19, 2]
and w22, w22, 65535
cmp w0, 2
bhi .L966
ldrh w0, [x20, 308]
sub w0, w0, #1
strh w0, [x19, 2]
.L966:
cmp w22, 3
bls .L967
ldr w1, [x20, 3716]
adrp x0, .LC106
mov w2, w22
add x0, x0, :lo12:.LC106
bl sftl_printk
.L968:
b .L968
.L967:
ldr w0, [x19, 52]
cbz w0, .L960
.L970:
b .L970
.L965:
ldr x0, [x19, 40]
str w1, [x0, x27]
ldrh w0, [x19, 2]
cmp w0, 1
beq .L971
ldr w0, [x21]
cmp w0, 256
beq .L971
ldr w1, [x19, 56]
cbz w1, .L972
.L971:
str wzr, [x19, 56]
b .L960
.L972:
cmn w0, #1
bne .L973
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 332
add x0, x0, :lo12:.LC9
mov w2, 745
bl sftl_printk
.L973:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
hint 29 // autiasp
ret
.size FtlMapWritePage, .-FtlMapWritePage
.section .rodata.str1.1
.LC107:
.string "region_id = %x phyAddr = %x\n"
.LC108:
.string "map_ppn:"
.LC109:
.string "load_l2p_region refresh = %x phyAddr = %x\n"
.text
.align 2
.global load_l2p_region
.type load_l2p_region, %function
load_l2p_region:
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
.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, 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
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
.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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ubfiz x20, x0, 4, 16
ldr x0, [x19, 2608]
add x1, x0, x20
ldr x2, [x1, 8]
ldrh w1, [x0, x20]
add x0, x19, 3632
bl FtlMapWritePage
ldr x0, [x19, 2608]
add x0, x0, x20
ldr w1, [x0, 4]
and w1, w1, 2147483647
str w1, [x0, 4]
mov w0, 0
ldp x19, x20, [sp, 16]
ldp 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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov w21, w0
mov x22, x1
ldrh w19, [x20, 312]
stp x23, x24, [sp, 48]
mov w23, w2
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
add x1, x1, 410
mov w2, 820
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
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
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 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 .L1032
ldr w1, [x3, 4]
tbz w1, #31, .L1032
bl flush_l2p_region
.L1032:
mov w1, w21
mov w0, w24
bl load_l2p_region
b .L1028
.size log2phys, .-log2phys
.align 2
.global FtlWriteDump_data
.type FtlWriteDump_data, %function
FtlWriteDump_data:
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 x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
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 .L1038
ldrb w0, [x19, 34]
cbnz w0, .L1037
ldr w22, [x19, 2624]
add x1, sp, 68
ldrh w21, [x19, 236]
mov w2, 0
sub w22, w22, #1
mov w0, w22
bl log2phys
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
beq .L1040
add x0, sp, 72
mov w2, 0
mov w1, 1
bl FlashReadPages
.L1041:
lsl w21, w21, 2
add x23, x19, 24
mov w0, -3947
strh w0, [x20]
.L1042:
cbnz w21, .L1046
.L1043:
mov w0, 1
strb w0, [x19, 34]
.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
.L1040:
ldrh w2, [x19, 314]
mov w1, 255
ldr x0, [x19, 3448]
bl ftl_memset
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, [sp, 76]
ldr w0, [x19, 2664]
mov w3, 0
str w0, [x20, 4]
mov w2, 0
cmn w0, #2
mov w1, 1
csinc w0, wzr, w0, eq
str w0, [x19, 2664]
add x0, sp, 72
bl FlashProgPages
ldrh w0, [x23]
bl decrement_vpc_count
b .L1042
.L1038:
strb wzr, [x19, 34]
b .L1037
.L1048:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
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:
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
ubfx x0, x1, 10, 16
str w1, [sp, 60]
bl P2V_block_in_plane
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, [x19, 228]
cbnz w0, .L1061
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 419
add x0, x0, :lo12:.LC9
mov w2, 1742
bl sftl_printk
.L1061:
ldrh w0, [x19, 228]
sub w0, w0, #1
strh w0, [x19, 228]
mov w0, w22
bl INSERT_DATA_LIST
ldr x1, [x19, 72]
ldrh w0, [x1, x20]
add w0, w0, 1
strh w0, [x1, x20]
.L1058:
add x1, sp, 60
mov w0, w21
mov w2, 1
bl log2phys
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
hint 29 // autiasp
ret
.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]!
mov x29, sp
stp x19, x20, [sp, 16]
mov x20, x0
mrs x0, sp_el0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldr x1, [x0, 1376]
str x1, [sp, 184]
mov x1, 0
ldrh w0, [x20]
mov w1, 65535
cmp w0, w1
beq .L1069
adrp x19, .LANCHOR0
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]
.L1191:
strb wzr, [x20, 6]
.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
.L1070:
ldrh w0, [x20, 16]
mov w21, 0
.L1071:
cmp w0, w1
beq .L1072
mov w1, 1
bl FtlGetLastWrittenPage
mov w26, w0
cmn w0, #1
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 w4, 4
.L1074:
ldr x0, [x19, 3424]
cmp w6, w1, uxth
bhi .L1078
mov w2, 0
mov w1, w22
bl FlashReadPages
ldr w21, [x19, 2664]
ldr x28, [x19, 3424]
and w4, w26, 65535
sub w21, w21, #1
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 w22, w0, 65535
ldrh w0, [x19, 306]
cmp w0, w23
bne .L1086
strh w23, [x20, 2]
strh wzr, [x20, 4]
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 .L1069
.L1072:
add w0, w21, 1
and w21, w0, 65535
add x0, x20, w0, uxth 1
ldrh w0, [x0, 16]
b .L1071
.L1073:
cbz w24, .L1075
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 435
add x0, x0, :lo12:.LC9
mov w2, 1809
bl sftl_printk
.L1075:
ldr w0, [sp, 152]
cmp w0, 0
ccmp w21, w0, 4, ne
beq .L1076
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 435
add x0, x0, :lo12:.LC9
mov w2, 1810
bl sftl_printk
.L1076:
strh wzr, [x20, 2]
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 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
ldr w4, [sp, 112]
ldp x3, x2, [sp, 96]
cbz w0, .L1081
add w23, w23, 1
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 w27, w24
strh w0, [x19, 3744]
adrp x0, .LANCHOR1
add x0, x0, :lo12:.LANCHOR1
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]
.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 .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 w27, w24
ccmp w1, w0, 0, eq
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 .L1107
ldr x3, [x1, 16]
mov w0, 61589
ldrh w25, [x3]
cmp w25, w0
beq .L1108
ldrh w0, [x20]
.L1188:
bl decrement_vpc_count
b .L1105
.L1108:
ldr w21, [x3, 4]
cmn w21, #1
beq .L1110
ldr w1, [x19, 2664]
mov w0, w21
str x3, [sp, 104]
bl ftl_cmp_data_ver
ldr x3, [sp, 104]
cbz w0, .L1110
add w0, w21, 1
str w0, [x19, 2664]
ldrh w0, [x3]
cmp w0, w25
beq .L1110
ldr x1, [sp, 120]
mov w2, 1961
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
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
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
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
ldr x1, [x0, 16]
str x1, [sp, 104]
ldr x0, [x19, 3424]
mov w1, 1
add x0, x0, x26
bl FlashReadPages
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, 3424]
ldr w1, [x1, x26]
cmn w1, #1
beq .L1120
ldr x1, [sp, 104]
ldr w0, [x0, 3708]
ldr w26, [x1, 4]
mov w1, w26
bl ftl_cmp_data_ver
cbz w0, .L1120
ldr w0, [sp, 112]
mov w1, w26
bl ftl_cmp_data_ver
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 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 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 w26, [x0, 4]
ldr x3, [x0, 16]
str x3, [sp, 104]
ldr x0, [x19, 3424]
bl FlashReadPages
ldr x0, [x19, 3424]
ldr w0, [x0]
cmn w0, #1
beq .L1122
ldr x3, [sp, 104]
mov w0, w21
ldr w1, [x3, 4]
bl ftl_cmp_data_ver
cbnz w0, .L1122
add x1, sp, 176
mov w0, w25
mov w2, 1
bl log2phys
b .L1122
.L1128:
mov w1, w26
ldr x0, [sp, 128]
b .L1190
.L1107:
ldr w0, [x19, 3748]
cmp w0, 31
bhi .L1129
add x1, x19, 3752
str w25, [x1, w0, uxtw 2]
add w0, w0, 1
str w0, [x19, 3748]
.L1129:
ldrh w0, [x20]
bl decrement_vpc_count
ldr w0, [x19, 3708]
cmn w0, #1
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:
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]
mov w19, 0
adrp x22, .LANCHOR1
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
bl ftl_memset
.L1194:
ldr w0, [x20, 2624]
cmp w0, w19
bhi .L1196
adrp x23, .LC113
add x23, x23, :lo12:.LC113
mov w24, 0
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
.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
bl sftl_printk
.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
.L1196:
add x1, sp, 100
mov w0, w19
mov w2, 0
bl log2phys
ldr w0, [sp, 100]
cmn w0, #1
beq .L1195
ubfx x0, x0, 10, 16
bl P2V_block_in_plane
and x0, x0, 65535
ldrh w1, [x21, x0, lsl 1]
add w1, w1, 1
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
ldrh w2, [x0, x25]
cmp w2, w3
beq .L1198
mov x0, x23
mov w1, w19
bl sftl_printk
ldr x0, [x20, 72]
ldrh w0, [x0, x25]
cmp w0, w26
beq .L1198
ldrh w1, [x21, x28, lsl 1]
cmp w1, w0
csel w24, w24, w27, ls
.L1198:
add w19, w19, 1
and w19, w19, 65535
b .L1197
.L1203:
ldr x1, [x20, 72]
ubfiz x0, x19, 1, 16
ldrh w2, [x1, x0]
cbz w2, .L1202
ldrh w3, [x21, w19, sxtw 1]
mov w24, 1
mov w1, w19
mov x0, x25
bl sftl_printk
.L1202:
umull x19, w19, w27
ldr x0, [x20, 2560]
ldrh w19, [x0, x19]
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], 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 x19, x20, [sp, 32]
mov w20, 0
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
add x0, x0, :lo12:.LC115
bl sftl_printk
.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
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
ldr x23, [x21, 3512]
str x0, [x19, 8]
mov x0, x19
str x23, [x19, 16]
str w20, [x19, 24]
bl FlashReadPages
ldr w0, [x19]
cmp w0, 256
ccmn w0, #1, 4, ne
beq .L1224
ldr w0, [x23, 8]
cmp w0, w20
beq .L1223
.L1224:
ldp x0, x1, [x19, 8]
ldr w2, [x0, 4]
str w2, [sp]
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
.L1223:
add w20, w20, 1
b .L1220
.L1227:
ldp x29, x30, [sp, 16]
ldp x19, x20, [sp, 32]
ldp x21, x22, [sp, 48]
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]!
mov x29, sp
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR2
add x22, x22, :lo12:.LANCHOR2
stp x19, x20, [sp, 16]
mov x20, x0
mrs x0, sp_el0
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
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 .L1253
cbz w28, .L1231
.L1230:
adrp x0, .LANCHOR0+306
ldr w1, [sp, 104]
ldrh w0, [x0, #:lo12:.LANCHOR0+306]
cmp w0, w1
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
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, [x20]
bl INSERT_FREE_LIST
mov w0, -1
strh w0, [x20]
strh w0, [x19, 176]
bl FtlGcPageVarInit
b .L1248
.L1241:
add x1, sp, 116
mov w2, 0
str w5, [sp, 108]
bl log2phys
ldr w0, [x25, 12]
ldr w1, [sp, 116]
ldr w5, [sp, 108]
cmp w0, w1
beq .L1243
.L1245:
ldr w2, [x25, 8]
.L1264:
ldr w0, [x25, 12]
mov w1, w5
add x23, x23, 1
bl FtlGcUpdatePage
b .L1238
.L1243:
cmn w0, #1
beq .L1245
str w0, [sp, 124]
mov w2, 0
ldr x0, [x19, 3480]
str x0, [sp, 128]
ldr x0, [x19, 3520]
mov w1, 1
str w5, [sp, 108]
str x0, [sp, 136]
add x0, sp, 120
bl FlashReadPages
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
.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 .L1263
.L1239:
mov w2, -1
b .L1264
.L1250:
ldrh w0, [x19, 306]
cmp w0, w28
bhi .L1234
.L1233:
strh w28, [x20, 2]
mov w0, -1
strb wzr, [x20, 6]
mov w1, w28
mov w2, 0
strh w0, [x22, 4]
mov x0, x20
bl ftl_sb_update_avl_pages
b .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]!
mrs x0, sp_el0
mov x29, sp
stp x19, x20, [sp, 16]
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]
add x21, x19, 2712
ldr w0, [x21, 84]
cmp w0, w1
bcc .L1268
.L1271:
mov w0, -1
.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
.L1268:
add x1, sp, 52
mov w2, 0
bl log2phys
ldr w1, [sp, 52]
ldr w0, [x21, 84]
add w0, w0, 1
str w0, [x21, 84]
cmn w1, #1
beq .L1270
str w0, [sp, 80]
mov w2, 0
ldr x0, [x19, 3496]
str x0, [sp, 64]
add x0, sp, 88
stp wzr, w1, [sp, 56]
mov w1, 1
str x0, [sp, 72]
add x0, sp, 56
bl FlashReadPages
ldr w0, [sp, 56]
cmp w0, 256
bne .L1271
ldr w0, [sp, 52]
ubfx x0, x0, 10, 16
bl P2V_block_in_plane
bl FtlGcRefreshBlock
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 .L1265
.L1266:
ldr w2, [x19, 2684]
mov w3, 10000
mov w5, 31
ldr w6, [x1, 76]
cmp w2, w3
mov w3, 63
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]
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
mov w19, 0
bl FtlWriteDump_data
.L1283:
ldrh w0, [x20, 342]
cmp w0, w19
bhi .L1285
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.L1285:
ldr x1, [x20, 2608]
ubfiz x0, x19, 4, 16
add x0, x1, x0
ldr w0, [x0, 4]
tbz w0, #31, .L1284
mov w0, w19
bl flush_l2p_region
.L1284:
add w19, w19, 1
and w19, w19, 65535
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov w21, w0
mrs x0, sp_el0
stp x23, x24, [sp, 48]
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, w21, w20
cmp w1, w0
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
.L1294:
ldrh w1, [x19, 262]
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
mov w1, w2
str x0, [sp, 136]
add x0, sp, 120
bl FlashReadPages
.L1292:
lsl w4, w26, 9
sbfiz x23, x23, 9, 23
ldr x0, [x19, 3464]
mov w2, w4
mov x1, x24
str w4, [sp, 108]
add x0, x0, x23
bl ftl_memcpy
ldr x2, [x19, 3464]
mov w1, w22
mov x0, x27
sub w20, w20, w26
add w21, w21, w26
add w22, w22, 1
bl FtlMapWritePage
ldr w4, [sp, 108]
cmn w0, #1
csel w25, w25, w28, ne
add x24, x24, w4, sxtw
b .L1289
.L1291:
ldrh w2, [x19, 314]
mov w1, 0
bl ftl_memset
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 .L1304
add x2, x0, 2712
hint 25 // paciasp
stp x29, x30, [sp, -16]!
mov w1, 87
movk w1, 0x5000, lsl 16
mov x29, sp
str w1, [x2, 4]
ldr w1, [x0, 2652]
str w1, [x2, 88]
ldr w1, [x0, 2656]
str w1, [x2, 92]
ldr w1, [x0, 2648]
str w1, [x2, 8]
ldr w1, [x0, 2636]
str w1, [x2, 12]
ldr w1, [x0, 2628]
str w1, [x2, 16]
ldr w1, [x0, 2644]
str w1, [x2, 20]
ldr w1, [x0, 2672]
str w1, [x2, 28]
ldr w1, [x0, 2680]
str w1, [x2, 32]
ldr w1, [x0, 2632]
str w1, [x2, 36]
ldr w1, [x0, 2640]
str w1, [x2, 40]
ldr w1, [x0, 2684]
ldr w0, [x0, 2688]
stp w1, w0, [x2, 44]
mov w1, 1
mov w0, 0
bl FtlVendorPartWrite
ldp x29, x30, [sp], 16
hint 29 // autiasp
ret
.L1304:
ret
.size Ftl_save_ext_data, .-Ftl_save_ext_data
.align 2
.global FtlEctTblFlush
.type FtlEctTblFlush, %function
FtlEctTblFlush:
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]!
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 w3, [x0, 12]
ldr w3, [x0, 8]
ldr x2, [x2, 3544]
add w3, w3, 1
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
.L1311:
mov w3, 32
b .L1308
.L1313:
mov w0, 0
ret
.size FtlEctTblFlush, .-FtlEctTblFlush
.align 2
.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
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
mov x29, sp
stp x27, x28, [sp, 80]
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
.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
.L1325:
ldr x0, [x28, 3592]
ldr w4, [x0, w21, uxtw 2]
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
mov w1, w2
str w4, [sp, 108]
str w4, [sp, 124]
str x0, [sp, 136]
add x0, sp, 120
bl FlashReadPages
ldr w0, [sp, 120]
ldr w4, [sp, 108]
cmn w0, #1
ldr w0, [x28, 3712]
csinv w24, w24, wzr, ne
cmp w0, 256
bne .L1323
mov w2, w4
mov w1, w21
mov x0, x26
bl sftl_printk
ldr x2, [x28, 3464]
mov w1, w21
add x0, x28, 3880
bl FtlMapWritePage
.L1323:
ldr x1, [x28, 3464]
sbfiz x23, x23, 9, 23
mov w2, w27
mov x0, x22
add x1, x1, x23
bl ftl_memcpy
.L1324:
add w21, w21, 1
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
bl ftl_memset
b .L1324
.L1327:
mov w24, -1
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
mov x29, sp
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldrh w1, [x19, 3528]
ldr x2, [x19, 3544]
bl FtlVendorPartRead
ldr x0, [x19, 3544]
ldr w1, [x0]
mov w0, 17221
movk w0, 0x4254, lsl 16
cmp w1, w0
beq .L1330
adrp x1, .LC120
adrp x0, .LC78
add x1, x1, :lo12:.LC120
add x0, x0, :lo12:.LC78
bl sftl_printk
ldr x0, [x19, 3544]
mov w1, 0
ldrh w2, [x19, 3528]
lsl w2, w2, 9
bl ftl_memset
.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 x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
str x21, [sp, 32]
add x21, x19, 2712
mov x2, x21
mov w0, 0
bl FtlVendorPartRead
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
bl ftl_memset
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 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
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:
hint 34 // bti c
.section __patchable_function_entries
.align 3
.8byte .LPFE110
.text
.LPFE110:
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]
ldr w0, [x0, 56]
cbz w0, .L1337
ldrh w1, [x19, 6]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
str wzr, [x19, 56]
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
.L1340:
ldr x2, [x20, 3720]
mov w1, w21
mov x0, x19
bl FtlMapWritePage
.L1337:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.L1339:
ldrh w2, [x20, 314]
mov x0, x3
mov w1, 255
bl ftl_memset
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
add x21, x19, 2560
add x20, x19, 2512
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
strh w0, [x22, 2]
mov w0, -3932
strh w0, [x22]
ldr w0, [x21, 144]
str w0, [x22, 4]
mov x0, 19539
str xzr, [x22, 8]
movk x0, 0x4654, lsl 16
ldrb w1, [x19, 30]
movk x0, 0x57, lsl 32
movk x0, 0x5000, lsl 48
str x0, [x19, 2512]
ldrh w0, [x21, 142]
strh w0, [x19, 2520]
ldrh w0, [x19, 258]
strb w0, [x19, 2522]
ldrh w0, [x19, 24]
strh w0, [x19, 2526]
ldrh w0, [x19, 26]
orr w0, w1, w0, lsl 6
strh w0, [x19, 2528]
ldrb w0, [x19, 32]
strb w0, [x19, 2523]
ldrh w0, [x19, 80]
ldrb w1, [x19, 86]
strh w0, [x19, 2530]
ldrh w0, [x19, 82]
ldrh w2, [x19, 314]
orr w0, w1, w0, lsl 6
strh w0, [x19, 2532]
ldrb w0, [x19, 88]
strb w0, [x19, 2524]
ldrh w0, [x19, 128]
ldrb w1, [x19, 134]
strh w0, [x19, 2534]
ldrh w0, [x19, 130]
orr w0, w1, w0, lsl 6
strh w0, [x19, 2536]
ldrb w0, [x19, 136]
mov w1, 255
strb w0, [x19, 2525]
ldr w0, [x19, 2668]
str w0, [x19, 2544]
ldr w0, [x19, 2660]
str w0, [x19, 2552]
ldr w0, [x19, 2664]
str w0, [x19, 2548]
ldr x0, [x19, 3720]
bl ftl_memset
ldr x0, [x19, 3720]
mov x1, x20
mov w2, 48
mov w20, 0
bl ftl_memcpy
ldrh w2, [x19, 244]
ldr x1, [x19, 72]
ldr x0, [x19, 3720]
lsl w2, w2, 1
add x0, x0, 48
bl ftl_memcpy
mov w0, 0
bl FtlUpdateVaildLpn
.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]
orr w0, w2, w1, lsl 10
str w0, [x19, 3716]
ldrh w0, [x19, 308]
sub w0, w0, #1
cmp w2, w0
blt .L1347
ldrh w24, [x21, 140]
strh wzr, [x21, 138]
strh w1, [x21, 140]
bl FtlFreeSysBlkQueueOut
ldr w1, [x19, 2660]
str w1, [x21, 144]
add w2, w1, 1
str w2, [x19, 2660]
ubfiz w2, w0, 10, 16
str w2, [x19, 3716]
strh w0, [x22, 2]
str w1, [x22, 4]
strh w0, [x21, 136]
.L1347:
ldrh w1, [x19, 314]
ldr x0, [x19, 3448]
bl js_hash
str w0, [x22, 12]
mov w3, 1
add x0, x19, 3712
mov w1, w3
mov w2, w3
bl FlashProgPages
ldrh w0, [x21, 138]
ldr w1, [x19, 3712]
add w0, w0, 1
and w0, w0, 65535
strh w0, [x21, 138]
cmn w1, #1
bne .L1348
cmp w0, 1
bne .L1350
mov x1, x23
mov w2, 1145
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
ldrh w0, [x21, 138]
cmp w0, 1
bne .L1350
ldrh w0, [x19, 308]
sub w0, w0, #1
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
.L1353:
b .L1353
.L1348:
cmp w0, 1
beq .L1346
cmp w1, 256
beq .L1346
mov w0, 65535
cmp w24, w0
beq .L1354
mov w0, w24
mov w1, 1
bl FtlFreeSysBlkQueueIn
.L1354:
mov w0, 0
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
.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]!
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 .L1367
hint 25 // paciasp
stp x29, x30, [sp, -16]!
mov x29, sp
bl FtlSysFlush
mov w0, 0
ldp x29, x30, [sp], 16
hint 29 // autiasp
ret
.L1367:
mov w0, 0
ret
.size sftl_deinit, .-sftl_deinit
.align 2
.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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
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 .L1381
cmp w1, w20
bcc .L1381
add w2, w0, w20
cmp w1, w2
bcc .L1381
cmp w20, 31
bhi .L1372
.L1389:
mov w0, 0
.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
.L1372:
ldrh w1, [x19, 262]
udiv w21, w0, w1
msub w0, w1, w21, w0
ands w0, w0, 65535
beq .L1373
sub w0, w1, w0
add w21, w21, 1
cmp w0, w20
csel w0, w0, w20, ls
sub w20, w20, w0, uxth
.L1373:
mov w0, -1
str w0, [sp, 52]
.L1374:
ldrh w0, [x19, 262]
cmp w0, w20
bls .L1376
ldr w0, [x19, 3948]
cmp w0, 32
bls .L1389
str wzr, [x19, 3948]
bl l2p_flush
bl FtlVpcTblFlush
b .L1389
.L1376:
add x1, sp, 48
mov w0, w21
mov w2, 0
bl log2phys
ldr w0, [sp, 48]
cmn w0, #1
beq .L1375
ldr w0, [x19, 3948]
add x1, sp, 52
mov w2, 1
add w0, w0, 1
str w0, [x19, 3948]
ldr w0, [x19, 2632]
add w0, w0, 1
str w0, [x19, 2632]
mov w0, w21
bl log2phys
ldr w0, [sp, 48]
ubfx x0, x0, 10, 16
bl P2V_block_in_plane
bl decrement_vpc_count
.L1375:
ldrh w0, [x19, 262]
add w21, w21, 1
sub w20, w20, w0
b .L1374
.L1381:
mov w0, -1
b .L1370
.L1378:
ldp x19, x20, [sp, 16]
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]!
mrs x0, sp_el0
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR1
add x22, x22, :lo12:.LANCHOR1
stp x23, x24, [sp, 48]
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, 3552]
mov w1, 0
ldrh w2, [x19, 246]
lsl w2, w2, 1
bl ftl_memset
.L1391:
ldr w0, [x19, 2624]
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
.L1394:
ldrh w0, [x19, 244]
cmp w0, w20
bhi .L1400
bl l2p_flush
bl FtlVpcTblFlush
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
.L1393:
add x1, sp, 84
mov w0, w20
mov w2, 0
bl log2phys
ldr w0, [sp, 84]
cmn w0, #1
beq .L1392
ubfx x0, x0, 10, 16
bl P2V_block_in_plane
ldr x2, [x19, 3552]
ubfiz x0, x0, 1, 16
ldrh w1, [x2, x0]
add w1, w1, 1
strh w1, [x2, x0]
.L1392:
add w20, w20, 1
b .L1391
.L1400:
ldr x0, [x19, 72]
ubfiz x21, x20, 1, 16
ldrh w2, [x0, x21]
ldr x0, [x19, 3552]
ldrh w3, [x0, x21]
cmp w2, w3
beq .L1396
cmp w2, w25
beq .L1396
mov x0, x23
mov w1, w20
bl sftl_printk
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]
cbnz w2, .L1398
mov w1, w20
add x0, x19, 2592
bl List_remove_node
ldrh w0, [x19, 228]
cbnz w0, .L1399
add x1, x22, 486
mov x0, x24
mov w2, 2330
bl sftl_printk
.L1399:
ldrh w0, [x19, 228]
sub w0, w0, #1
strh w0, [x19, 228]
mov w0, w20
bl INSERT_DATA_LIST
.L1396:
add w20, w20, 1
and w20, w20, 65535
b .L1394
.L1398:
mov w0, w20
bl update_vpc_list
b .L1396
.L1401:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
str x21, [sp, 32]
mov x21, x0
ldrh w19, [x0]
ldrh w0, [x20, 244]
cmp w0, w19
bcs .L1407
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 507
add x0, x0, :lo12:.LC9
mov w2, 2766
bl sftl_printk
.L1407:
mov w0, 65535
cmp w19, w0
beq .L1408
ldr x1, [x20, 72]
ubfiz x0, x19, 1, 16
ldrh w0, [x1, x0]
cbz w0, .L1409
mov w0, w19
bl INSERT_DATA_LIST
.L1408:
mov w0, 1
strb w0, [x21, 8]
ldrh w0, [x20, 3698]
mov w1, 65535
cmp w0, w1
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
.L1412:
mov w0, -1
strh w0, [x20, 3698]
.L1410:
mov x0, x21
bl allocate_data_superblock
bl l2p_flush
mov w0, 0
bl FtlEctTblFlush
bl FtlVpcTblFlush
mov w0, 0
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.L1409:
mov w0, w19
bl INSERT_FREE_LIST
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:
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 w21, w1
stp x23, x24, [sp, 48]
adrp x24, .LC123
adrp x23, .LANCHOR0
ldr x3, [x2, 1376]
str x3, [sp, 72]
mov x3, 0
mov w2, 0
ldrb w3, [x20, 9]
add x24, x24, :lo12:.LC123
add x23, x23, :lo12:.LANCHOR0
bl FlashProgPages
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 .L1417
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 536
add x0, x0, :lo12:.LC9
mov w2, 1000
bl sftl_printk
.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
.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 x29, x30, [sp], 80
hint 29 // autiasp
ret
.size FtlProgPages, .-FtlProgPages
.align 2
.global FtlGcFreeTempBlock
.type FtlGcFreeTempBlock, %function
FtlGcFreeTempBlock:
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]
stp x23, x24, [sp, 48]
ldrh w3, [x19, 128]
ldr x2, [x1, 1376]
str x2, [sp, 72]
mov x2, 0
ldrh w1, [x19, 306]
mov w2, 65535
cmp w3, w2
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
.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
.L1433:
adrp x20, .LANCHOR2
add x20, x20, :lo12:.LANCHOR2
cbz w0, .L1436
ldrh w0, [x20, 4]
cmp w0, w2
beq .L1437
.L1438:
mov w1, 2
.L1436:
add x0, x19, 128
bl FtlGcScanTempBlk
ldrh w1, [x20, 4]
str w0, [sp, 68]
mov w0, 65535
cmp w1, w0
beq .L1440
mov w0, 1
b .L1432
.L1437:
ldrh w0, [x19, 228]
strh wzr, [x20, 4]
cmp w0, 17
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, .LC9
add x1, x1, 549
add x0, x0, :lo12:.LC9
mov w2, 164
bl sftl_printk
.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 w2, [x19, 128]
ldr x1, [x19, 72]
ldrh w0, [x19, 128]
ldrh w1, [x1, x2, lsl 1]
cbz w1, .L1447
bl INSERT_DATA_LIST
.L1448:
mov w20, -1
strh w20, [x19, 128]
strh wzr, [x19, 3284]
strh wzr, [x19, 3296]
bl l2p_flush
bl FtlVpcTblFlush
strh w20, [x19, 176]
ldrh w0, [x19, 2692]
ldrh w1, [x19, 228]
add w0, w0, w0, lsl 1
cmp w1, w0, lsr 2
ble .L1458
mov w0, 20
strh w0, [x19, 3224]
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 .L1443
.L1456:
ldrh w0, [x19, 128]
b .L1457
.L1443:
add x1, sp, 68
mov w2, 0
bl log2phys
ldr w1, [sp, 68]
ldr w0, [x23, x22]
cmp w0, w1
bne .L1445
ubfx x0, x0, 10, 16
bl P2V_block_in_plane
mov w22, w0
ldr w0, [x21, 8]
add x1, x21, 4
mov w2, 1
bl log2phys
mov w0, w22
.L1457:
bl decrement_vpc_count
b .L1444
.L1445:
ldr w0, [x21, 4]
cmp w1, w0
bne .L1456
.L1444:
add w20, w20, 1
and w20, w20, 65535
b .L1442
.L1447:
bl INSERT_FREE_LIST
b .L1448
.L1449:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
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]!
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
add x20, x19, 128
mov x0, x20
ldrh w1, [x19, 306]
bl FtlGcScanTempBlk
ldrh w1, [x19, 130]
ldrh w0, [x19, 306]
cmp w1, w0
bcc .L1459
add x0, x19, 3632
bl FtlMapBlkWriteDump_data
mov w0, 0
bl FtlGcFreeTempBlock
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]!
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, 3668]
bl FtlRecoverySuperblock
mov x0, x20
bl FtlSlcSuperblockCheck
mov x0, x19
bl FtlRecoverySuperblock
mov x0, x19
bl FtlSlcSuperblockCheck
bl FtlGcPageRecovery
mov w0, -1
bl decrement_vpc_count
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]!
mov w3, 0
mov x29, sp
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
mov w2, 0
mov w20, 0
ldr w1, [x19, 3240]
ldr x0, [x19, 3432]
bl FlashProgPages
.L1465:
ldr w1, [x19, 3240]
ldr x2, [x19, 3432]
cmp w20, w1
bcc .L1468
mov x0, x2
bl FtlGcBufFree
ldrh w0, [x19, 132]
str wzr, [x19, 3240]
cbnz w0, .L1470
mov w0, 1
bl FtlGcFreeTempBlock
mov w0, 1
.L1464:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
hint 29 // autiasp
ret
.L1468:
ubfiz x4, x20, 5, 16
add x1, x2, x4
ldr w2, [x2, x4]
ldr x3, [x1, 16]
ldr w1, [x1, 4]
ldr w0, [x3, 12]
cmn w2, #1
bne .L1466
.L1472:
add w20, w20, 1
bl FtlGcUpdatePage
and w20, w20, 65535
b .L1465
.L1466:
ldr w2, [x3, 8]
b .L1472
.L1470:
mov w0, 0
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]!
mov w1, 65535
mov x29, sp
str x19, [sp, 16]
adrp x19, .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, x19, 128
strb wzr, [x0, 8]
bl allocate_data_superblock
strh wzr, [x19, 3284]
strh wzr, [x19, 3296]
bl l2p_flush
mov w0, 0
bl FtlEctTblFlush
bl FtlVpcTblFlush
.L1475:
add x0, x19, 128
bl get_new_active_ppa
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]!
adrp x6, .LANCHOR0
mov x29, sp
stp x23, x24, [sp, 48]
add x23, x6, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
stp x21, x22, [sp, 32]
stp x25, x26, [sp, 64]
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 w0, w1
bne .L1480
.L1481:
bl FtlReadRefresh
ldr w1, [sp, 108]
ldr w0, [x23, 3228]
mov w19, 65535
ldrh w2, [x23, 128]
add w0, w0, 1
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 .L1483
str wzr, [x23, 3228]
strh wzr, [x23, 3952]
bl GetSwlReplaceBlock
and w20, w0, 65535
cmp w19, w0, uxth
bne .L1485
ldrh w1, [x23, 228]
ldrh w0, [x23, 3226]
cmp w1, w0
bcs .L1486
mov w0, 64
bl List_get_gc_head_node
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 .L1489
mov w0, 0
bl List_get_gc_head_node
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, .L1482
mov w0, 1
b .L1477
.L1480:
ldrh w2, [x23, 226]
cmp w2, w1
bne .L1481
strh w0, [x23, 226]
mov w0, -1
strh w0, [x23, 224]
b .L1481
.L1489:
mov w0, 64
.L1584:
strh w0, [x23, 3226]
.L1488:
bl FtlGcReFreshBadBlk
.L1483:
ldr w1, [sp, 108]
mov w0, 65535
cmp w1, 0
ccmp w20, w0, 0, eq
bne .L1491
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 .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, [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
ldr x1, [x23, 72]
ubfiz x0, x0, 1, 16
ldrh w0, [x1, x0]
cmp w0, 4
bls .L1502
.L1585:
ldrh w0, [x23, 3952]
b .L1477
.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, [x23, 3224]
mov w0, 0
bl List_get_gc_head_node
ldr x1, [x23, 72]
ubfiz x0, x0, 1, 16
ldrh w2, [x23, 236]
ldrh w1, [x1, x0]
ldrh w0, [x23, 308]
mul w0, w0, w2
mov w2, 2
sdiv w0, w0, w2
cmp w1, w0
ble .L1506
ldrh w0, [x23, 228]
sub w20, w20, #1
cmp w0, w20
blt .L1506
bl FtlReadRefresh
b .L1585
.L1506:
cbnz w1, .L1505
mov w0, -1
bl decrement_vpc_count
ldrh w0, [x23, 228]
add w0, w0, 1
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 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 .L1523
cmp w20, w24
bne .L1523
ldrh w0, [x23, 3232]
cmp w0, 3
bhi .L1523
mov w0, -1
strh w0, [x23, 176]
strh wzr, [x23, 3232]
b .L1585
.L1523:
cbnz w1, .L1524
mov w0, -1
bl decrement_vpc_count
ldrh w0, [x23, 3232]
add w0, w0, 1
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
bl sftl_printk
.L1525:
ldrh w1, [x23, 176]
ldrh w0, [x23, 80]
cmp w1, w0
bne .L1526
adrp x0, .LC9
mov x1, x21
add x0, x0, :lo12:.LC9
mov w2, 718
bl sftl_printk
.L1526:
ldrh w1, [x23, 176]
ldrh w0, [x23, 128]
cmp w1, w0
bne .L1527
adrp x0, .LC9
mov x1, x21
add x0, x0, :lo12:.LC9
mov w2, 719
bl sftl_printk
.L1527:
add x22, x23, 176
mov x0, x22
bl make_superblock
ldrh w1, [x23, 176]
ldr x0, [x23, 72]
strh wzr, [x23, 3954]
ldrh w0, [x0, x1, lsl 1]
strh wzr, [x23, 178]
strb wzr, [x23, 182]
strh w0, [x23, 3956]
.L1516:
mov w0, 1
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 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
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
add x0, x0, x8
and w22, w22, 65535
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 x24, 0
bl FlashReadPages
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 .L1534
ldr x25, [x1, 16]
mov w0, 61589
ldrh w1, [x25]
cmp w1, w0
bne .L1534
ldr w4, [x25, 8]
cmn w4, #1
bne .L1535
ldr x0, [sp, 112]
mov x1, x21
mov w2, 753
str w4, [sp, 120]
bl sftl_printk
ldr w4, [sp, 120]
.L1535:
add x1, sp, 128
mov w2, 0
mov w0, w4
bl log2phys
ldr x0, [x23, 3272]
ldr w1, [sp, 128]
add x0, x0, x28
ldr w2, [x0, 4]
cmp w2, w1
bne .L1534
ldrh w1, [x23, 3954]
ldr x2, [x23, 3432]
add w1, w1, 1
strh w1, [x23, 3954]
ldr w1, [x23, 3240]
ldr w0, [x0, 24]
add x1, x2, x1, lsl 5
str x1, [sp, 120]
str w0, [x1, 24]
bl Ftl_get_new_temp_ppa
ldr x1, [sp, 120]
str w0, [x1, 4]
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, [sp, 128]
mov w1, 1
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, [x23, 3240]
ldr x0, [x23, 3272]
add x0, x0, x28
bl FtlGcBufAlloc
ldr x2, [sp, 120]
ldr w0, [x23, 3240]
ldrb w1, [x2, 7]
cmp w1, w0
beq .L1536
ldrh w0, [x2, 4]
cbnz w0, .L1534
.L1536:
bl Ftl_gc_temp_data_write_back
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, .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
bl log2phys
ldr w0, [sp, 132]
cmn w0, #1
beq .L1544
ubfx x0, x0, 10, 16
bl P2V_block_in_plane
ldrh w1, [x23, 176]
cmp w1, w0, uxth
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
.L1542:
mov w0, -1
strh w0, [x23, 176]
.L1540:
ldrh w0, [x23, 228]
str wzr, [x23, 3408]
cmp w0, 2
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 .L1477
.L1554:
mov w0, 0
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:
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
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
mrs x1, sp_el0
stp x27, x28, [sp, 80]
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
.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
.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 .L1612
adrp x0, .LANCHOR2
ldr w19, [x0, #:lo12:.LANCHOR2]
cmn w19, #1
beq .L1586
ldrh w0, [x28, 262]
mov w20, 0
mov w19, 0
stp wzr, wzr, [sp, 108]
udiv w1, w26, w0
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 .L1586
.L1608:
mov w1, 1
mov w0, 0
bl rk_ftl_garbage_collect
b .L1586
.L1607:
add x1, sp, 148
mov w0, w22
mov w2, 0
bl log2phys
ldr w1, [sp, 148]
cmn w1, #1
bne .L1622
mov w27, 0
b .L1590
.L1593:
madd w0, w0, w22, w27
cmp w26, w0
bhi .L1592
ldr w1, [sp, 116]
cmp w1, w0
bls .L1592
sub w0, w0, w26
mov w2, 512
mov w1, 0
lsl w0, w0, 9
add x0, x21, x0
bl ftl_memset
.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 .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], 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
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:
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
mov x29, sp
stp x19, x20, [sp, 16]
stp x21, x22, [sp, 32]
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
.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
.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 .L1628
mov w0, 2048
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, [x24, 2636]
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
ldr w0, [x0, 8]
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, [x24, 236]
cmp w1, w0
bcc .L1633
mov x1, x23
mov x0, x28
mov w2, 1041
bl sftl_printk
.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]
.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
.L1634:
ldrh w0, [x20, 4]
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
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
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]
ldr x1, [sp, 104]
mul w22, w2, w22
ldr x0, [x24, 3440]
add x0, x0, x1, lsl 5
and x1, x22, 4294967292
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 x22, [x0, 16]
mov w1, 0
mov x0, x22
bl ftl_memset
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
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
bl sftl_printk
.L1657:
ldp x2, x1, [sp, 144]
mov w0, -3947
strh w0, [x1, x2]
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, [sp, 104]
add x0, x0, 1
str x0, [sp, 104]
b .L1640
.L1643:
ldr w0, [sp, 124]
msub w2, w1, w19, w0
and w0, w2, 65535
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 .L1650
str w19, [sp, 208]
mov w2, 0
str w0, [sp, 188]
mov w1, 1
ldr x0, [x3, 8]
str x0, [sp, 192]
ldr x0, [x3, 16]
str x0, [sp, 200]
add x0, sp, 184
bl FlashReadPages
ldr w3, [sp, 184]
cmn w3, #1
bne .L1651
ldr w0, [x24, 2784]
mov w2, w19
add w0, w0, 1
str w0, [x24, 2784]
adrp x0, .LC126
add x0, x0, :lo12:.LC126
ldr w1, [x22, 8]
bl sftl_printk
.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 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
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
ldr x0, [x3, 8]
bl ftl_memset
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, 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 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
.L1664:
mov w1, 1
mov w0, w1
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, [x24, 228]
cmp w0, 2
bhi .L1665
subs w19, w19, #1
bne .L1663
b .L1665
.L1669:
mov w0, -1
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], 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
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
mov x29, sp
stp x19, x20, [sp, 16]
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]
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, [x19, 2696]
mov w1, 65535
cmp w0, w1
bne .L1685
.L1697:
mov w0, -1
.L1684:
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
.L1685:
add x21, x19, 2560
mov w1, 1
bl FtlGetLastWrittenPage
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
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl sftl_printk
b .L1693
.L1694:
orr w0, w20, w22, lsl 10
str w0, [x25, 4]
ldr x0, [x19, 3448]
mov w2, 1
mov w1, w2
str x0, [x25, 8]
mov x0, x25
bl FlashReadPages
ldr x0, [x25, 16]
ldr w23, [x0, 12]
ldr w0, [x25]
cmn w0, #1
cbz w23, .L1688
beq .L1689
ldrh w1, [x19, 314]
ldr x0, [x25, 8]
bl js_hash
mov w6, w0
cmp w23, w0
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, [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 .L1689
.L1693:
ldrh w0, [x19, 244]
ldrh w1, [x19, 314]
add x0, x0, 24
cmp x1, x0, lsl 1
bcs .L1696
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 600
add x0, x0, :lo12:.LC9
mov w2, 1476
bl sftl_printk
.L1696:
ldr x1, [x19, 3720]
add x21, x19, 2512
mov w2, 48
mov x0, x21
bl ftl_memcpy
ldr x0, [x19, 72]
ldrh w2, [x19, 244]
ldr x1, [x19, 3720]
lsl w2, w2, 1
add x1, x1, 48
bl ftl_memcpy
ldr w1, [x19, 2512]
mov w0, 19539
movk w0, 0x4654, lsl 16
cmp w1, w0
bne .L1697
ldrh w1, [x19, 2520]
ldrb w2, [x19, 2522]
ldrh w0, [x19, 258]
strh w1, [x19, 2702]
cmp w2, w0
bne .L1697
ldrh w0, [x19, 306]
ldrh w2, [x19, 262]
ldrh w3, [x19, 236]
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]
add w0, w0, w1
sub w0, w2, w0
udiv w0, w0, w3
strh w0, [x19, 2692]
cmp w1, w2
bls .L1698
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC9
add x1, x1, 600
add x0, x0, :lo12:.LC9
mov w2, 1498
bl sftl_printk
.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, [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, [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, [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 w3, w0
beq .L1701
add x0, x19, 24
bl make_superblock
.L1701:
ldrh w2, [x19, 80]
add x0, x19, 80
mov w1, 65535
cmp w2, w1
beq .L1702
bl make_superblock
.L1702:
ldrh w2, [x19, 128]
add x0, x19, 128
mov w1, 65535
cmp w2, w1
beq .L1703
bl make_superblock
.L1703:
ldrh w2, [x19, 176]
add x0, x19, 176
mov w1, 65535
cmp w2, w1
beq .L1704
bl make_superblock
.L1704:
mov w0, 0
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
mov x29, sp
stp x19, x20, [sp, 16]
mov x19, x0
mov w20, 0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
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
str xzr, [x19, 48]
adrp x6, .LANCHOR0
add x24, x6, :lo12:.LANCHOR0
mov w0, -1
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, [sp, 112]
sub w0, w0, #1
str w0, [sp, 124]
adrp x0, .LANCHOR1
add x0, x0, :lo12:.LANCHOR1
add x0, x0, 615
str x0, [sp, 128]
.L1714:
ldr w0, [sp, 112]
cmp w20, w0
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
adrp x27, .LC129
add x27, x27, :lo12:.LC129
ldrh w0, [x0]
bl FtlGetLastWrittenPage
sxth w25, w0
add w25, w25, 1
strh w20, [x19]
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]
.L1716:
cmp w28, w25
blt .L1720
.L1734:
mov x0, x19
bl ftl_free_no_use_map_blk
ldrh w1, [x19, 2]
ldrh w0, [x24, 308]
cmp w1, w0
bne .L1722
mov x0, x19
bl ftl_map_blk_alloc_new_blk
.L1722:
mov x0, x19
bl ftl_map_blk_gc
mov x0, x19
bl ftl_map_blk_gc
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
hint 29 // autiasp
ret
.L1720:
ldr x0, [sp, 104]
add x3, x24, 3712
mov w2, 1
mov w1, w2
str x3, [sp, 112]
ldrh w0, [x0]
orr w0, w28, w0, lsl 10
str w0, [x24, 3716]
mov x0, x3
bl FlashReadPages
ldr x3, [sp, 112]
ldr x0, [x3, 16]
ldr w4, [x0, 12]
ldr w0, [x24, 3712]
str w4, [sp, 112]
cmn w0, #1
cbz w4, .L1717
beq .L1735
ldrh w1, [x24, 314]
ldr x0, [x3, 8]
bl js_hash
ldr w4, [sp, 112]
mov w5, w0
cmp w4, w0
beq .L1719
mov x0, x27
mov w3, w28
mov w2, w20
mov x1, x26
bl sftl_printk
mov w0, -1
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 .L1735
ubfiz x0, x0, 2, 16
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, [x24, 3712]
cmn w0, #1
beq .L1738
ldrh w1, [x21]
ldrh w0, [x19, 4]
cmp w1, w0
bne .L1738
ldrh w1, [x21, 8]
mov w0, 64245
cmp w1, w0
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
.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, 3880
mov x29, sp
ldrh w2, [x1, 324]
strh w2, [x0, 10]
mov w2, -3962
strh w2, [x0, 4]
ldrh w2, [x1, 348]
strh w2, [x0, 8]
ldrh w2, [x1, 326]
strh w2, [x0, 6]
ldr x2, [x1, 352]
str x2, [x0, 16]
ldr x2, [x1, 3584]
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]!
mov x29, sp
bl FtlL2PDataInit
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
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:
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 x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ldrh w0, [x19, 240]
strh wzr, [x19, 3744]
bl FtlFreeSysBlkQueueInit
bl FtlScanSysBlk
ldrh w1, [x19, 2696]
mov w0, 65535
cmp w1, w0
bne .L1758
.L1760:
mov w20, -1
.L1757:
mov w0, w20
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
hint 29 // autiasp
ret
.L1758:
bl FtlLoadSysInfo
mov w20, w0
cbnz w0, .L1760
bl FtlLoadMapInfo
bl FtlLoadVonderInfo
bl Ftl_load_ext_data
bl FtlLoadEctTbl
bl FtlFreeSysBLkSort
bl SupperBlkListInit
bl FtlPowerLostRecovery
mov w0, 1
bl FtlUpdateVaildLpn
ldr x1, [x19, 2608]
mov x0, 0
ldrh w2, [x19, 342]
add x1, x1, 4
.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
bl FtlSuperblockPowerLostFix
mov x0, x21
bl FtlSuperblockPowerLostFix
ldrh w0, [x19, 24]
ldr x2, [x19, 72]
lsl x0, x0, 1
ldrh w3, [x19, 28]
ldrh w1, [x2, x0]
sub w1, w1, w3
strh w1, [x2, x0]
strh wzr, [x19, 28]
ldrh w0, [x19, 306]
strh w0, [x19, 26]
ldrh w0, [x19, 80]
ldr x2, [x19, 72]
strb wzr, [x19, 30]
lsl x0, x0, 1
ldrh w3, [x19, 84]
ldrh w1, [x2, x0]
sub w1, w1, w3
strh w1, [x2, x0]
strh wzr, [x19, 84]
ldrh w0, [x19, 306]
strh w0, [x19, 82]
ldrh w0, [x19, 2542]
strb wzr, [x19, 86]
add w0, w0, 1
strh w0, [x19, 2542]
bl l2p_flush
bl FtlVpcTblFlush
bl FtlVpcTblFlush
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 .L1767
ldrh w1, [x19, 28]
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
.L1767:
bl FtlVpcCheckAndModify
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]!
mov x29, sp
stp x19, x20, [sp, 16]
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, .L1775
bl FtlMakeBbt
.L1775:
mov w3, 23752
mov w0, 0
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]
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 w1, w3, 36
strh w1, [x19, 2692]
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, [x19, 2624]
add w1, w3, w1
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, 3964]
mul w0, w1, w0
ldrh w1, [x19, 262]
str w0, [x19, 2624]
mul w0, w1, w0
str w0, [x19, 344]
bl FtlBbmTblFlush
ldr x0, [x19, 72]
mov w1, 0
ldrh w2, [x19, 246]
lsl w2, w2, 1
bl ftl_memset
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]
str wzr, [x19, 2620]
.L1790:
mov x0, x21
bl make_superblock
ldrb w1, [x21, 7]
ldrh w0, [x21]
cbnz w1, .L1791
ldr x1, [x19, 72]
ubfiz x0, x0, 1, 16
strh w20, [x1, x0]
ldrh w0, [x21]
add w0, w0, 1
strh w0, [x21]
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 w3, [x1, x2]
b .L1776
.L1779:
mov w0, w21
mov w1, 1
add w21, w21, 1
bl FtlLowFormatEraseBlock
add w20, w0, w20
and w21, w21, 65535
and w20, w20, 65535
b .L1778
.L1780:
udiv w20, w20, w0
ldr w0, [x19, 336]
add w0, w20, w0
bl FtlSysBlkNumInit
ldrh w0, [x19, 240]
bl FtlFreeSysBlkQueueInit
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 w20, w20, 65535
bl FtlLowFormatEraseBlock
b .L1782
.L1785:
mov w0, w21
mov w1, 0
add w21, w21, 1
bl FtlLowFormatEraseBlock
add w20, w0, w20
and w21, w21, 65535
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]
strh wzr, [x20, 2]
ldrh w0, [x21]
mov w21, -1
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, .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 .L1792
.L1793:
ldr w1, [x19, 2660]
ubfiz x0, x0, 1, 16
str w1, [x20, 12]
add w1, w1, 1
str w1, [x19, 2660]
ldr x1, [x19, 72]
ldrh w2, [x20, 4]
strh w2, [x1, x0]
mov w0, -1
strh w0, [x19, 128]
bl FtlFreeSysBlkQueueOut
strh w0, [x19, 2696]
add x1, x19, 2560
mov w0, -65536
str w0, [x1, 138]
ldr w0, [x19, 3964]
strh w0, [x19, 2702]
ldr w0, [x19, 2660]
str w0, [x19, 2704]
add w0, w0, 1
str w0, [x19, 2660]
bl FtlVpcTblFlush
bl FtlSysBlkInit
cbnz w0, .L1794
adrp x0, .LANCHOR2
mov w1, 1
str w1, [x0, #:lo12:.LANCHOR2]
.L1794:
mov w0, 0
ldp x19, x20, [sp, 16]
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, .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, .LC78
add x0, x0, :lo12:.LC78
bl sftl_printk
mov x0, x19
bl FtlConstantsInit
bl FtlMemInit
bl FtlVariablesInit
ldrh w0, [x19, 240]
bl FtlFreeSysBlkQueueInit
bl FtlLoadBbt
cbnz w0, .L1800
bl FtlSysBlkInit
cbnz w0, .L1800
mov w0, 1
str w0, [x20, #:lo12:.LANCHOR2]
ldrh w0, [x19, 228]
cmp w0, 15
bhi .L1800
mov w19, 8129
.L1801:
mov w1, 1
mov w0, 0
bl rk_ftl_garbage_collect
subs w19, w19, #1
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:
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 w20, w0
mrs x0, sp_el0
stp x21, x22, [sp, 32]
mov w19, w1
add w22, w19, w20
stp x23, x24, [sp, 48]
sub w23, w22, #1
cmp w23, 63
stp x25, x26, [sp, 64]
add x25, x5, :lo12:.LANCHOR0
stp x27, x28, [sp, 80]
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 .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
.L1813:
ldr w3, [x1]
cbnz w3, .L1810
ldr w3, [x22, w0, uxtw 2]
add w0, w0, 1
str w3, [x1, 2048]
cmp w0, 4096
bls .L1811
mov w0, 0
.L1811:
sub w19, w19, #1
sub x1, x1, #4
cmp w19, 4096
bne .L1813
mov w19, 512
b .L1812
.L1810:
add w19, w19, 127
lsr w19, w19, 7
.L1812:
ubfiz w0, w2, 2, 14
add w20, w19, 4
mov w1, w19
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, [sp, 100]
.L1814:
add w0, w20, w21
str w0, [sp, 104]
cmp w0, 8
bls .L1836
cbnz w23, .L1835
.L1809:
mov w19, -1
b .L1835
.L1836:
ldr x0, [x25, 3984]
mov w1, 0
mov x2, 512
bl memset
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 w24, w24, w0, eq
.L1815:
mul w28, w21, w27
mov w26, 0
.L1816:
ldr x3, [x25, 3360]
mov w1, w28
add w26, w26, 1
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, x28
bl ftl_memset
mov x0, 18766
str wzr, [x28, 12]
movk x0, 0x464e, lsl 16
mov w1, 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, [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, [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, [sp, 112]
blr x1
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, [sp, 120]
str w1, [sp, 112]
ldrb w0, [x25, 22]
ldr x2, [x8, 32]
blr x2
ldr w1, [sp, 112]
cmn w1, #1
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
.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 .L1828
ldr x1, [x25, 3384]
mov w0, 70
blr x1
ldr x1, [x25, 3392]
mov w0, 2
blr x1
add x3, sp, 136
ldr x7, [x25, 3376]
mov x2, x26
mov w1, w27
mov w0, 0
blr x7
ldrb w0, [sp, 108]
ldr x1, [x25, 3392]
blr x1
ldrb w0, [x25, 22]
ldr x1, [x25, 3384]
blr x1
ldr w0, [x26]
mov w1, 18766
movk w1, 0x464e, lsl 16
cmp w0, w1
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
bl memset
ldr w2, [x27]
mov w1, w21
ldr w3, [x28]
mov w4, w24
adrp x0, .LC132
add x0, x0, :lo12:.LC132
bl sftl_printk
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], 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]!
mov x29, sp
stp x19, x20, [sp, 16]
mov w20, w1
mov w19, w0
str x21, [sp, 32]
mov x21, x2
bl FtlWriteToIDB
mov x3, x21
mov w2, w20
mov w1, w19
mov w0, 0
bl FtlWrite
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
hint 25 // paciasp
ldr x3, [x2, 3992]
cbnz x3, .L1874
str x0, [x2, 3992]
mov w0, 0
str x1, [x2, 4000]
.L1872:
hint 29 // autiasp
ret
.L1874:
mov w0, -1
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:
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
mov x29, sp
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
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, 4008]
b .L1876
.L1883:
mov w21, 1
b .L1880
.L1881:
mov x0, x3
mov x2, 65536
mov w1, 0
bl memset
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, [x3, 14]
.L1876:
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
hint 29 // autiasp
ret
.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:
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
.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
mov x29, sp
str x19, [sp, 16]
ldrh w5, [x3, 20]
ldrh w1, [x3, 18]
cmp w5, w2
add x1, x1, 1024
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
.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]!
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]
cbz x19, .L1910
add w21, w2, 63
ldrh w3, [x19, 10]
ldrh w23, [x19, 8]
mov w7, w0
mov x4, x1
mov w27, w2
and w21, w21, -64
add x0, x19, 16
mov x20, 0
.L1897:
mov w25, w20
cmp w3, w20
bhi .L1904
ldrh w1, [x19, 14]
cmp w1, w21
bcc .L1910
add x3, x19, w3, uxth 3
and w21, w21, 65535
strh w7, [x3, 16]
ldrh w0, [x19, 12]
strh w0, [x3, 18]
strh w27, [x3, 20]
add w2, w0, w21
sub w21, w1, w21
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 .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
ldrh w26, [x20, 20]
add w26, w26, 63
and w26, w26, -64
cmp w27, w26
bls .L1898
ldrh w0, [x19, 14]
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 w7, [x25, 16]
strh w28, [x25, 18]
add w28, w21, w28
strh w27, [x25, 20]
bl memcpy
strh w28, [x19, 12]
ldrh w0, [x19, 14]
sub w21, w0, w21
add w26, w21, w26
strh w26, [x19, 14]
.L1912:
ldr w0, [x19, 4]
add x1, x19, 49152
ldr x3, [x22, 4000]
add w0, w0, 1
str w0, [x19, 4]
mov x2, x19
str w0, [x1, 16380]
mov w1, 128
ldrh w0, [x19, 8]
add w0, w0, 1
and w0, w0, 65535
cmp w0, 1
csel w0, w0, wzr, ls
strh w0, [x19, 8]
lsl w0, w23, 7
blr x3
mov w0, 0
.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
.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, x2, 131008
bl memcpy
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 w27, [x20, 20]
b .L1912
.L1908:
mov x20, x1
b .L1897
.L1910:
mov w0, -1
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:
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
mov x29, sp
stp x19, x20, [sp, 16]
mov x20, x2
str x21, [sp, 32]
mov w21, w1
bl ftl_malloc
cbz x0, .L1924
mov w1, 30209
mov x19, x0
movk w1, 0x4004, lsl 16
cmp w21, w1
beq .L1915
add w1, w1, 1
cmp w21, w1
beq .L1916
.L1934:
mov x20, -14
.L1917:
mov x0, x19
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
.L1935:
adrp x0, .LC134
add x0, x0, :lo12:.LC134
bl sftl_printk
b .L1934
.L1918:
ldr w1, [x19]
mov w0, 17745
movk w0, 0x5652, lsl 16
cmp w1, w0
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
beq .L1920
strh w0, [x19, 6]
and x0, x0, 65535
add x21, x0, 8
mov x0, x20
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
and x1, x1, x20
ldr x2, [x0, 8]
#APP
// 289 "./arch/arm64/include/asm/uaccess.h" 1
bics xzr, x1, x2
csel x0, x20, xzr, eq
// 0 "" 2
// 297 "./arch/arm64/include/asm/uaccess.h" 1
hint #20
// 0 "" 2
#NO_APP
mov x2, x21
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:
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 .L1935
.L1923:
ldrh w2, [x19, 6]
add x1, x19, 8
ldrh w0, [x19, 4]
bl rk_sftl_vendor_write
sxtw x20, w0
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 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
.global check_vpc_table
.global FtlUpdateVaildLpnCount
.global g_ect_tbl_power_up_flush
.global power_up_flag
.global gFtlInitStatus
.global DeviceCapacity
.global g_power_lost_recovery_flag
.global c_mlc_erase_count_value
.global g_recovery_ppa_tbl
.global g_recovery_page_min_ver
.global g_recovery_page_num
.global sftl_nand_check_spare_buf
.global sftl_temp_buf
.global sftl_nand_check_buf
.global g_cur_erase_blk
.global g_gc_skip_write_count
.global g_gc_head_data_block_count
.global g_gc_head_data_block
.global g_ftl_nand_free_count
.global g_in_swl_replace
.global g_in_gc_progress
.global g_max_erase_count
.global g_totle_sys_slc_erase_count
.global g_totle_slc_erase_count
.global g_min_erase_count
.global g_totle_avg_erase_count
.global g_totle_mlc_erase_count
.global g_totle_l2p_write_count
.global g_totle_cache_write_count
.global g_tmp_data_superblock_id
.global g_totle_read_page_count
.global g_totle_discard_page_count
.global g_totle_read_sector
.global g_totle_write_sector
.global g_totle_write_page_count
.global g_totle_gc_page_count
.global g_gc_blk_index
.global g_gc_merge_free_blk_threshold
.global g_gc_free_blk_threshold
.global g_gc_bad_block_temp_tbl
.global g_gc_bad_block_gc_index
.global g_gc_bad_block_temp_num
.global g_gc_next_blk_1
.global g_gc_next_blk
.global g_gc_cur_blk_max_valid_pages
.global g_gc_cur_blk_valid_pages
.global g_gc_page_offset
.global g_gc_blk_num
.global p_gc_blk_tbl
.global p_gc_page_info
.global g_sys_ext_data
.global g_sys_save_data
.global gp_last_act_superblock
.global g_gc_superblock
.global g_gc_temp_superblock
.global g_buffer_superblock
.global g_active_superblock
.global g_num_data_superblocks
.global g_num_free_superblocks
.global p_data_block_list_tail
.global p_data_block_list_head
.global p_free_data_block_list_head
.global p_data_block_list_table
.global g_l2p_last_update_region_id
.global p_l2p_map_buf
.global p_l2p_ram_map
.global g_totle_vendor_block
.global p_vendor_region_ppn_table
.global p_vendor_block_ver_table
.global p_vendor_block_valid_page_count
.global p_vendor_block_table
.global g_totle_map_block
.global p_map_region_ppn_table
.global p_map_block_ver_table
.global p_map_block_valid_page_count
.global p_map_block_table
.global p_valid_page_count_check_table
.global p_valid_page_count_table
.global g_totle_swl_count
.global p_swl_mul_table
.global p_erase_count_table
.global g_ect_tbl_info_size
.global gp_ect_tbl_info
.global g_gc_num_req
.global c_gc_page_buf_num
.global gp_gc_page_buf_info
.global p_gc_data_buf
.global p_gc_spare_buf
.global p_io_spare_buf
.global p_io_data_buf_1
.global p_io_data_buf_0
.global p_sys_spare_buf
.global p_vendor_data_buf
.global p_sys_data_buf_1
.global p_sys_data_buf
.global p_plane_order_table
.global req_gc_dst
.global req_gc
.global req_erase
.global req_prgm
.global req_read
.global req_sys
.global gVendorBlkInfo
.global gL2pMapInfo
.global gSysFreeQueue
.global gSysInfo
.global gBbtInfo
.global g_MaxLbn
.global g_VaildLpn
.global g_MaxLpn
.global g_MaxLbaSector
.global g_GlobalDataVersion
.global g_GlobalSysVersion
.global ftl_gc_temp_power_lost_recovery_flag
.global c_ftl_nand_max_data_blks
.global c_ftl_nand_data_op_blks_per_plane
.global c_ftl_nand_data_blks_per_plane
.global c_ftl_nand_max_sys_blks
.global c_ftl_nand_init_sys_blks_per_plane
.global c_ftl_nand_sys_blks_per_plane
.global c_ftl_vendor_part_size
.global c_ftl_nand_max_vendor_blks
.global c_ftl_nand_max_map_blks
.global c_ftl_nand_map_blks_per_plane
.global c_ftl_nand_vendor_region_num
.global c_ftl_nand_l2pmap_ram_region_num
.global c_ftl_nand_map_region_num
.global c_ftl_nand_totle_phy_blks
.global c_ftl_nand_reserved_blks
.global c_ftl_nand_byte_pre_oob
.global c_ftl_nand_byte_pre_page
.global c_ftl_nand_sec_pre_page_shift
.global c_ftl_nand_sec_pre_page
.global c_ftl_nand_page_pre_super_blk
.global c_ftl_nand_page_pre_slc_blk
.global c_ftl_nand_page_pre_blk
.global c_ftl_nand_bbm_buf_size
.global c_ftl_nand_ext_blk_pre_plane
.global c_ftl_nand_blk_pre_plane
.global c_ftl_nand_planes_num
.global c_ftl_nand_blks_per_die_shift
.global c_ftl_nand_blks_per_die
.global c_ftl_nand_planes_per_die
.global c_ftl_nand_die_num
.global c_ftl_nand_type
.section .rodata
.align 3
.set .LANCHOR1,. + 0
.type __func__.30, %object
.size __func__.30, 17
__func__.30:
.string "INSERT_DATA_LIST"
.type __func__.31, %object
.size __func__.31, 17
__func__.31:
.string "INSERT_FREE_LIST"
.type __func__.29, %object
.size __func__.29, 17
__func__.29:
.string "List_remove_node"
.type __func__.28, %object
.size __func__.28, 22
__func__.28:
.string "List_update_data_list"
.type __func__.22, %object
.size __func__.22, 22
__func__.22:
.string "select_l2p_ram_region"
.type __func__.14, %object
.size __func__.14, 16
__func__.14:
.string "make_superblock"
.type __func__.8, %object
.size __func__.8, 19
__func__.8:
.string "get_new_active_ppa"
.type __func__.1, %object
.size __func__.1, 17
__func__.1:
.string "FlashEraseBlocks"
.type __func__.26, %object
.size __func__.26, 26
__func__.26:
.string "ftl_map_blk_alloc_new_blk"
.type __func__.37, %object
.size __func__.37, 11
__func__.37:
.string "FtlMemInit"
.type __func__.34, %object
.size __func__.34, 14
__func__.34:
.string "FtlBbt2Bitmap"
.type __func__.13, %object
.size __func__.13, 18
__func__.13:
.string "SupperBlkListInit"
.type __func__.3, %object
.size __func__.3, 15
__func__.3:
.string "FlashReadPages"
.type __func__.19, %object
.size __func__.19, 14
__func__.19:
.string "FtlScanSysBlk"
.type __func__.32, %object
.size __func__.32, 11
__func__.32:
.string "FtlLoadBbt"
.type __func__.2, %object
.size __func__.2, 15
__func__.2:
.string "FlashProgPages"
.type __func__.10, %object
.size __func__.10, 25
__func__.10:
.string "allocate_data_superblock"
.type __func__.7, %object
.size __func__.7, 16
__func__.7:
.string "update_vpc_list"
.type __func__.6, %object
.size __func__.6, 20
__func__.6:
.string "decrement_vpc_count"
.type __func__.23, %object
.size __func__.23, 16
__func__.23:
.string "FtlMapWritePage"
.type __func__.27, %object
.size __func__.27, 16
__func__.27:
.string "load_l2p_region"
.type __func__.25, %object
.size __func__.25, 15
__func__.25:
.string "ftl_map_blk_gc"
.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"
.type __func__.16, %object
.size __func__.16, 16
__func__.16:
.string "FtlReUsePrevPpa"
.type __func__.15, %object
.size __func__.15, 22
__func__.15:
.string "FtlRecoverySuperblock"
.type __func__.11, %object
.size __func__.11, 14
__func__.11:
.string "ftl_check_vpc"
.type __func__.20, %object
.size __func__.20, 15
__func__.20:
.string "FtlVpcTblFlush"
.type __func__.12, %object
.size __func__.12, 21
__func__.12:
.string "FtlVpcCheckAndModify"
.type __func__.9, %object
.size __func__.9, 29
__func__.9:
.string "allocate_new_data_superblock"
.type __func__.36, %object
.size __func__.36, 13
__func__.36:
.string "FtlProgPages"
.type __func__.5, %object
.size __func__.5, 19
__func__.5:
.string "FtlGcFreeTempBlock"
.type __func__.4, %object
.size __func__.4, 23
__func__.4:
.string "rk_ftl_garbage_collect"
.type __func__.35, %object
.size __func__.35, 9
__func__.35:
.string "FtlWrite"
.type __func__.18, %object
.size __func__.18, 15
__func__.18:
.string "FtlLoadSysInfo"
.type __func__.17, %object
.size __func__.17, 18
__func__.17:
.string "FtlMapTblRecovery"
.type __func__.0, %object
.size __func__.0, 14
__func__.0:
.string "FtlWriteToIDB"
.zero 1
.type rk_sftl_vendor_storage_fops, %object
.size rk_sftl_vendor_storage_fops, 256
rk_sftl_vendor_storage_fops:
.zero 80
.xword rk_sftl_vendor_storage_ioctl
.xword rk_sftl_vendor_storage_ioctl
.zero 160
.data
.align 3
.set .LANCHOR2,. + 0
.type gFtlInitStatus, %object
.size gFtlInitStatus, 4
gFtlInitStatus:
.word -1
.type ftl_gc_temp_block_bops_scan_page_addr, %object
.size ftl_gc_temp_block_bops_scan_page_addr, 2
ftl_gc_temp_block_bops_scan_page_addr:
.hword -1
.zero 2
.type power_up_flag, %object
.size power_up_flag, 4
power_up_flag:
.word 1
.zero 4
.type rkflash_vender_storage_dev, %object
.size rkflash_vender_storage_dev, 80
rkflash_vender_storage_dev:
.word 255
.zero 4
.xword .LC135
.xword rk_sftl_vendor_storage_fops
.zero 56
.bss
.align 3
.set .LANCHOR0,. + 0
.type g_nand_phy_info, %object
.size g_nand_phy_info, 24
g_nand_phy_info:
.zero 24
.type g_active_superblock, %object
.size g_active_superblock, 48
g_active_superblock:
.zero 48
.type p_valid_page_count_table, %object
.size p_valid_page_count_table, 8
p_valid_page_count_table:
.zero 8
.type g_buffer_superblock, %object
.size g_buffer_superblock, 48
g_buffer_superblock:
.zero 48
.type g_gc_temp_superblock, %object
.size g_gc_temp_superblock, 48
g_gc_temp_superblock:
.zero 48
.type g_gc_superblock, %object
.size g_gc_superblock, 48
g_gc_superblock:
.zero 48
.type g_gc_next_blk_1, %object
.size g_gc_next_blk_1, 2
g_gc_next_blk_1:
.zero 2
.type g_gc_next_blk, %object
.size g_gc_next_blk, 2
g_gc_next_blk:
.zero 2
.type g_num_free_superblocks, %object
.size g_num_free_superblocks, 2
g_num_free_superblocks:
.zero 2
.zero 2
.type c_ftl_nand_sys_blks_per_plane, %object
.size c_ftl_nand_sys_blks_per_plane, 4
c_ftl_nand_sys_blks_per_plane:
.zero 4
.type c_ftl_nand_planes_num, %object
.size c_ftl_nand_planes_num, 2
c_ftl_nand_planes_num:
.zero 2
.zero 2
.type c_ftl_nand_max_sys_blks, %object
.size c_ftl_nand_max_sys_blks, 4
c_ftl_nand_max_sys_blks:
.zero 4
.type c_ftl_nand_data_blks_per_plane, %object
.size c_ftl_nand_data_blks_per_plane, 2
c_ftl_nand_data_blks_per_plane:
.zero 2
.type c_ftl_nand_blk_pre_plane, %object
.size c_ftl_nand_blk_pre_plane, 2
c_ftl_nand_blk_pre_plane:
.zero 2
.type c_ftl_nand_max_data_blks, %object
.size c_ftl_nand_max_data_blks, 4
c_ftl_nand_max_data_blks:
.zero 4
.type c_ftl_nand_totle_phy_blks, %object
.size c_ftl_nand_totle_phy_blks, 4
c_ftl_nand_totle_phy_blks:
.zero 4
.type c_ftl_nand_type, %object
.size c_ftl_nand_type, 2
c_ftl_nand_type:
.zero 2
.type c_ftl_nand_die_num, %object
.size c_ftl_nand_die_num, 2
c_ftl_nand_die_num:
.zero 2
.type c_ftl_nand_planes_per_die, %object
.size c_ftl_nand_planes_per_die, 2
c_ftl_nand_planes_per_die:
.zero 2
.type c_ftl_nand_sec_pre_page, %object
.size c_ftl_nand_sec_pre_page, 2
c_ftl_nand_sec_pre_page:
.zero 2
.type p_plane_order_table, %object
.size p_plane_order_table, 32
p_plane_order_table:
.zero 32
.type c_mlc_erase_count_value, %object
.size c_mlc_erase_count_value, 2
c_mlc_erase_count_value:
.zero 2
.type c_ftl_nand_ext_blk_pre_plane, %object
.size c_ftl_nand_ext_blk_pre_plane, 2
c_ftl_nand_ext_blk_pre_plane:
.zero 2
.type c_ftl_vendor_part_size, %object
.size c_ftl_vendor_part_size, 2
c_ftl_vendor_part_size:
.zero 2
.type c_ftl_nand_blks_per_die, %object
.size c_ftl_nand_blks_per_die, 2
c_ftl_nand_blks_per_die:
.zero 2
.type c_ftl_nand_blks_per_die_shift, %object
.size c_ftl_nand_blks_per_die_shift, 2
c_ftl_nand_blks_per_die_shift:
.zero 2
.type c_ftl_nand_page_pre_blk, %object
.size c_ftl_nand_page_pre_blk, 2
c_ftl_nand_page_pre_blk:
.zero 2
.type c_ftl_nand_page_pre_slc_blk, %object
.size c_ftl_nand_page_pre_slc_blk, 2
c_ftl_nand_page_pre_slc_blk:
.zero 2
.type c_ftl_nand_page_pre_super_blk, %object
.size c_ftl_nand_page_pre_super_blk, 2
c_ftl_nand_page_pre_super_blk:
.zero 2
.type c_ftl_nand_sec_pre_page_shift, %object
.size c_ftl_nand_sec_pre_page_shift, 2
c_ftl_nand_sec_pre_page_shift:
.zero 2
.type c_ftl_nand_byte_pre_page, %object
.size c_ftl_nand_byte_pre_page, 2
c_ftl_nand_byte_pre_page:
.zero 2
.type c_ftl_nand_byte_pre_oob, %object
.size c_ftl_nand_byte_pre_oob, 2
c_ftl_nand_byte_pre_oob:
.zero 2
.type c_ftl_nand_reserved_blks, %object
.size c_ftl_nand_reserved_blks, 2
c_ftl_nand_reserved_blks:
.zero 2
.type DeviceCapacity, %object
.size DeviceCapacity, 4
DeviceCapacity:
.zero 4
.type c_ftl_nand_max_vendor_blks, %object
.size c_ftl_nand_max_vendor_blks, 2
c_ftl_nand_max_vendor_blks:
.zero 2
.type c_ftl_nand_vendor_region_num, %object
.size c_ftl_nand_vendor_region_num, 2
c_ftl_nand_vendor_region_num:
.zero 2
.type c_ftl_nand_map_blks_per_plane, %object
.size c_ftl_nand_map_blks_per_plane, 2
c_ftl_nand_map_blks_per_plane:
.zero 2
.zero 2
.type c_ftl_nand_max_map_blks, %object
.size c_ftl_nand_max_map_blks, 4
c_ftl_nand_max_map_blks:
.zero 4
.type c_ftl_nand_init_sys_blks_per_plane, %object
.size c_ftl_nand_init_sys_blks_per_plane, 4
c_ftl_nand_init_sys_blks_per_plane:
.zero 4
.type c_ftl_nand_map_region_num, %object
.size c_ftl_nand_map_region_num, 2
c_ftl_nand_map_region_num:
.zero 2
.type c_ftl_nand_l2pmap_ram_region_num, %object
.size c_ftl_nand_l2pmap_ram_region_num, 2
c_ftl_nand_l2pmap_ram_region_num:
.zero 2
.type g_MaxLbaSector, %object
.size g_MaxLbaSector, 4
g_MaxLbaSector:
.zero 4
.type g_totle_vendor_block, %object
.size g_totle_vendor_block, 2
g_totle_vendor_block:
.zero 2
.zero 2
.type p_vendor_block_table, %object
.size p_vendor_block_table, 8
p_vendor_block_table:
.zero 8
.type gBbtInfo, %object
.size gBbtInfo, 96
gBbtInfo:
.zero 96
.type gSysFreeQueue, %object
.size gSysFreeQueue, 2056
gSysFreeQueue:
.zero 2056
.type g_sys_save_data, %object
.size g_sys_save_data, 48
g_sys_save_data:
.zero 48
.type p_data_block_list_table, %object
.size p_data_block_list_table, 8
p_data_block_list_table:
.zero 8
.type p_data_block_list_head, %object
.size p_data_block_list_head, 8
p_data_block_list_head:
.zero 8
.type p_data_block_list_tail, %object
.size p_data_block_list_tail, 8
p_data_block_list_tail:
.zero 8
.type g_num_data_superblocks, %object
.size g_num_data_superblocks, 2
g_num_data_superblocks:
.zero 2
.zero 6
.type p_free_data_block_list_head, %object
.size p_free_data_block_list_head, 8
p_free_data_block_list_head:
.zero 8
.type p_erase_count_table, %object
.size p_erase_count_table, 8
p_erase_count_table:
.zero 8
.type p_l2p_ram_map, %object
.size p_l2p_ram_map, 8
p_l2p_ram_map:
.zero 8
.type g_l2p_last_update_region_id, %object
.size g_l2p_last_update_region_id, 2
g_l2p_last_update_region_id:
.zero 2
.type FtlUpdateVaildLpnCount, %object
.size FtlUpdateVaildLpnCount, 2
FtlUpdateVaildLpnCount:
.zero 2
.type g_VaildLpn, %object
.size g_VaildLpn, 4
g_VaildLpn:
.zero 4
.type g_MaxLpn, %object
.size g_MaxLpn, 4
g_MaxLpn:
.zero 4
.type g_totle_read_page_count, %object
.size g_totle_read_page_count, 4
g_totle_read_page_count:
.zero 4
.type g_totle_discard_page_count, %object
.size g_totle_discard_page_count, 4
g_totle_discard_page_count:
.zero 4
.type g_totle_write_page_count, %object
.size g_totle_write_page_count, 4
g_totle_write_page_count:
.zero 4
.type g_totle_cache_write_count, %object
.size g_totle_cache_write_count, 4
g_totle_cache_write_count:
.zero 4
.type g_totle_l2p_write_count, %object
.size g_totle_l2p_write_count, 4
g_totle_l2p_write_count:
.zero 4
.type g_totle_gc_page_count, %object
.size g_totle_gc_page_count, 4
g_totle_gc_page_count:
.zero 4
.type g_totle_write_sector, %object
.size g_totle_write_sector, 4
g_totle_write_sector:
.zero 4
.type g_totle_read_sector, %object
.size g_totle_read_sector, 4
g_totle_read_sector:
.zero 4
.type g_GlobalSysVersion, %object
.size g_GlobalSysVersion, 4
g_GlobalSysVersion:
.zero 4
.type g_GlobalDataVersion, %object
.size g_GlobalDataVersion, 4
g_GlobalDataVersion:
.zero 4
.type g_totle_mlc_erase_count, %object
.size g_totle_mlc_erase_count, 4
g_totle_mlc_erase_count:
.zero 4
.type g_totle_slc_erase_count, %object
.size g_totle_slc_erase_count, 4
g_totle_slc_erase_count:
.zero 4
.type g_totle_avg_erase_count, %object
.size g_totle_avg_erase_count, 4
g_totle_avg_erase_count:
.zero 4
.type g_totle_sys_slc_erase_count, %object
.size g_totle_sys_slc_erase_count, 4
g_totle_sys_slc_erase_count:
.zero 4
.type g_max_erase_count, %object
.size g_max_erase_count, 4
g_max_erase_count:
.zero 4
.type g_min_erase_count, %object
.size g_min_erase_count, 4
g_min_erase_count:
.zero 4
.type c_ftl_nand_data_op_blks_per_plane, %object
.size c_ftl_nand_data_op_blks_per_plane, 2
c_ftl_nand_data_op_blks_per_plane:
.zero 2
.zero 2
.type gSysInfo, %object
.size gSysInfo, 16
gSysInfo:
.zero 16
.type g_sys_ext_data, %object
.size g_sys_ext_data, 512
g_sys_ext_data:
.zero 512
.type g_gc_free_blk_threshold, %object
.size g_gc_free_blk_threshold, 2
g_gc_free_blk_threshold:
.zero 2
.type g_gc_merge_free_blk_threshold, %object
.size g_gc_merge_free_blk_threshold, 2
g_gc_merge_free_blk_threshold:
.zero 2
.type g_gc_skip_write_count, %object
.size g_gc_skip_write_count, 4
g_gc_skip_write_count:
.zero 4
.type g_gc_blk_index, %object
.size g_gc_blk_index, 2
g_gc_blk_index:
.zero 2
.zero 2
.type g_in_swl_replace, %object
.size g_in_swl_replace, 4
g_in_swl_replace:
.zero 4
.type g_gc_num_req, %object
.size g_gc_num_req, 4
g_gc_num_req:
.zero 4
.zero 4
.type gp_gc_page_buf_info, %object
.size gp_gc_page_buf_info, 8
gp_gc_page_buf_info:
.zero 8
.type p_gc_data_buf, %object
.size p_gc_data_buf, 8
p_gc_data_buf:
.zero 8
.type p_gc_spare_buf, %object
.size p_gc_spare_buf, 8
p_gc_spare_buf:
.zero 8
.type req_gc, %object
.size req_gc, 8
req_gc:
.zero 8
.type c_gc_page_buf_num, %object
.size c_gc_page_buf_num, 4
c_gc_page_buf_num:
.zero 4
.type g_gc_blk_num, %object
.size g_gc_blk_num, 2
g_gc_blk_num:
.zero 2
.zero 2
.type p_gc_blk_tbl, %object
.size p_gc_blk_tbl, 8
p_gc_blk_tbl:
.zero 8
.type g_gc_page_offset, %object
.size g_gc_page_offset, 2
g_gc_page_offset:
.zero 2
.zero 6
.type p_gc_page_info, %object
.size p_gc_page_info, 8
p_gc_page_info:
.zero 8
.type g_gc_bad_block_temp_num, %object
.size g_gc_bad_block_temp_num, 2
g_gc_bad_block_temp_num:
.zero 2
.type g_gc_bad_block_temp_tbl, %object
.size g_gc_bad_block_temp_tbl, 34
g_gc_bad_block_temp_tbl:
.zero 34
.type g_gc_bad_block_gc_index, %object
.size g_gc_bad_block_gc_index, 2
g_gc_bad_block_gc_index:
.zero 2
.zero 2
.type g_nand_ops, %object
.size g_nand_ops, 48
g_nand_ops:
.zero 48
.type req_erase, %object
.size req_erase, 8
req_erase:
.zero 8
.type g_in_gc_progress, %object
.size g_in_gc_progress, 4
g_in_gc_progress:
.zero 4
.type g_gc_head_data_block, %object
.size g_gc_head_data_block, 4
g_gc_head_data_block:
.zero 4
.type g_gc_head_data_block_count, %object
.size g_gc_head_data_block_count, 4
g_gc_head_data_block_count:
.zero 4
.type g_cur_erase_blk, %object
.size g_cur_erase_blk, 4
g_cur_erase_blk:
.zero 4
.type req_read, %object
.size req_read, 8
req_read:
.zero 8
.type req_gc_dst, %object
.size req_gc_dst, 8
req_gc_dst:
.zero 8
.type req_prgm, %object
.size req_prgm, 8
req_prgm:
.zero 8
.type p_sys_data_buf, %object
.size p_sys_data_buf, 8
p_sys_data_buf:
.zero 8
.type p_sys_data_buf_1, %object
.size p_sys_data_buf_1, 8
p_sys_data_buf_1:
.zero 8
.type p_vendor_data_buf, %object
.size p_vendor_data_buf, 8
p_vendor_data_buf:
.zero 8
.type p_io_data_buf_0, %object
.size p_io_data_buf_0, 8
p_io_data_buf_0:
.zero 8
.type p_io_data_buf_1, %object
.size p_io_data_buf_1, 8
p_io_data_buf_1:
.zero 8
.type sftl_nand_check_buf, %object
.size sftl_nand_check_buf, 8
sftl_nand_check_buf:
.zero 8
.type sftl_temp_buf, %object
.size sftl_temp_buf, 8
sftl_temp_buf:
.zero 8
.type sftl_nand_check_spare_buf, %object
.size sftl_nand_check_spare_buf, 8
sftl_nand_check_spare_buf:
.zero 8
.type p_sys_spare_buf, %object
.size p_sys_spare_buf, 8
p_sys_spare_buf:
.zero 8
.type p_io_spare_buf, %object
.size p_io_spare_buf, 8
p_io_spare_buf:
.zero 8
.type g_ect_tbl_info_size, %object
.size g_ect_tbl_info_size, 2
g_ect_tbl_info_size:
.zero 2
.zero 6
.type p_swl_mul_table, %object
.size p_swl_mul_table, 8
p_swl_mul_table:
.zero 8
.type gp_ect_tbl_info, %object
.size gp_ect_tbl_info, 8
gp_ect_tbl_info:
.zero 8
.type p_valid_page_count_check_table, %object
.size p_valid_page_count_check_table, 8
p_valid_page_count_check_table:
.zero 8
.type p_map_block_table, %object
.size p_map_block_table, 8
p_map_block_table:
.zero 8
.type p_map_block_valid_page_count, %object
.size p_map_block_valid_page_count, 8
p_map_block_valid_page_count:
.zero 8
.type p_vendor_block_valid_page_count, %object
.size p_vendor_block_valid_page_count, 8
p_vendor_block_valid_page_count:
.zero 8
.type p_vendor_block_ver_table, %object
.size p_vendor_block_ver_table, 8
p_vendor_block_ver_table:
.zero 8
.type p_vendor_region_ppn_table, %object
.size p_vendor_region_ppn_table, 8
p_vendor_region_ppn_table:
.zero 8
.type p_map_region_ppn_table, %object
.size p_map_region_ppn_table, 8
p_map_region_ppn_table:
.zero 8
.type p_map_block_ver_table, %object
.size p_map_block_ver_table, 8
p_map_block_ver_table:
.zero 8
.type p_l2p_map_buf, %object
.size p_l2p_map_buf, 8
p_l2p_map_buf:
.zero 8
.type c_ftl_nand_bbm_buf_size, %object
.size c_ftl_nand_bbm_buf_size, 2
c_ftl_nand_bbm_buf_size:
.zero 2
.zero 6
.type gL2pMapInfo, %object
.size gL2pMapInfo, 64
gL2pMapInfo:
.zero 64
.type g_totle_map_block, %object
.size g_totle_map_block, 2
g_totle_map_block:
.zero 2
.type g_tmp_data_superblock_id, %object
.size g_tmp_data_superblock_id, 2
g_tmp_data_superblock_id:
.zero 2
.type g_totle_swl_count, %object
.size g_totle_swl_count, 4
g_totle_swl_count:
.zero 4
.type ftl_gc_temp_power_lost_recovery_flag, %object
.size ftl_gc_temp_power_lost_recovery_flag, 4
ftl_gc_temp_power_lost_recovery_flag:
.zero 4
.type g_recovery_page_min_ver, %object
.size g_recovery_page_min_ver, 4
g_recovery_page_min_ver:
.zero 4
.type req_sys, %object
.size req_sys, 32
req_sys:
.zero 32
.type g_power_lost_recovery_flag, %object
.size g_power_lost_recovery_flag, 2
g_power_lost_recovery_flag:
.zero 2
.zero 2
.type g_recovery_page_num, %object
.size g_recovery_page_num, 4
g_recovery_page_num:
.zero 4
.type g_recovery_ppa_tbl, %object
.size g_recovery_ppa_tbl, 128
g_recovery_ppa_tbl:
.zero 128
.type gVendorBlkInfo, %object
.size gVendorBlkInfo, 64
gVendorBlkInfo:
.zero 64
.type g_ect_tbl_power_up_flush, %object
.size g_ect_tbl_power_up_flush, 2
g_ect_tbl_power_up_flush:
.zero 2
.zero 2
.type gc_discard_updated, %object
.size gc_discard_updated, 4
gc_discard_updated:
.zero 4
.type gc_ink_free_return_value, %object
.size gc_ink_free_return_value, 2
gc_ink_free_return_value:
.zero 2
.type g_gc_cur_blk_valid_pages, %object
.size g_gc_cur_blk_valid_pages, 2
g_gc_cur_blk_valid_pages:
.zero 2
.type g_gc_cur_blk_max_valid_pages, %object
.size g_gc_cur_blk_max_valid_pages, 2
g_gc_cur_blk_max_valid_pages:
.zero 2
.zero 2
.type g_ftl_nand_free_count, %object
.size g_ftl_nand_free_count, 4
g_ftl_nand_free_count:
.zero 4
.type g_MaxLbn, %object
.size g_MaxLbn, 4
g_MaxLbn:
.zero 4
.type idb_need_write_back, %object
.size idb_need_write_back, 4
idb_need_write_back:
.zero 4
.zero 4
.type idb_buf, %object
.size idb_buf, 8
idb_buf:
.zero 8
.type gp_flash_check_buf, %object
.size gp_flash_check_buf, 8
gp_flash_check_buf:
.zero 8
.type _flash_read, %object
.size _flash_read, 8
_flash_read:
.zero 8
.type _flash_write, %object
.size _flash_write, 8
_flash_write:
.zero 8
.type g_vendor, %object
.size g_vendor, 8
g_vendor:
.zero 8
.type check_vpc_table, %object
.size check_vpc_table, 16384
check_vpc_table:
.zero 16384
.type gp_last_act_superblock, %object
.size gp_last_act_superblock, 8
gp_last_act_superblock:
.zero 8
.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