15783 lines
270 KiB
ArmAsm
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
|