35208 lines
597 KiB
ArmAsm

/*
* Copyright (c) 2016-2017, Fuzhou Rockchip Electronics Co., Ltd
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* date: 2021-07-16
* function: rk ftl v6 for rockchip soc base on arm v8 to support 3D/2D
* TLC and MLC.
*/
.cpu generic+fp+simd
.file "rk_zftl_arm64.S"
.text
.align 2
.type flash_mem_cmp8, %function
flash_mem_cmp8:
mov x3, 0
.L2:
mov w4, w3
cmp w3, w2
bcc .L4
mov w0, 0
ret
.L4:
ldrb w5, [x0, x3]
add x3, x3, 1
add x6, x1, x3
ldrb w6, [x6, -1]
cmp w6, w5
beq .L2
add w0, w4, 1
ret
.size flash_mem_cmp8, .-flash_mem_cmp8
.align 2
.type slc_phy_page_address_calc, %function
slc_phy_page_address_calc:
adrp x1, .LANCHOR0
add x2, x1, :lo12:.LANCHOR0
ldrb w3, [x1, #:lo12:.LANCHOR0]
cbz w3, .L7
ldrb w2, [x2, 1]
cbz w2, .L8
.L7:
add x1, x1, :lo12:.LANCHOR0
ldrh w3, [x1, 2]
udiv w2, w0, w3
mul w2, w2, w3
ldrb w3, [x1, 1]
sub w0, w0, w2
cbz w3, .L9
add w0, w2, w0, lsl 1
ret
.L9:
add x1, x1, 4
ldrh w0, [x1, w0, uxtw 1]
add w0, w0, w2
.L8:
ret
.size slc_phy_page_address_calc, .-slc_phy_page_address_calc
.align 2
.global zftl_nandc_get_irq_status
.type zftl_nandc_get_irq_status, %function
zftl_nandc_get_irq_status:
adrp x1, .LANCHOR0+1028
ldrb w1, [x1, #:lo12:.LANCHOR0+1028]
cmp w1, 9
bne .L17
ldr w0, [x0, 296]
ret
.L17:
ldr w0, [x0, 372]
ret
.size zftl_nandc_get_irq_status, .-zftl_nandc_get_irq_status
.section .text.unlikely,"ax",@progbits
.align 2
.type isxdigit, %function
isxdigit:
and w1, w0, -33
sub w1, w1, #65
cmp w1, 25
bls .L21
sub w0, w0, #48
cmp w0, 9
cset w0, ls
ret
.L21:
mov w0, 1
ret
.size isxdigit, .-isxdigit
.text
.align 2
.global zftl_get_density
.type zftl_get_density, %function
zftl_get_density:
cbnz w0, .L23
adrp x0, .LANCHOR0+1032
ldr w0, [x0, #:lo12:.LANCHOR0+1032]
ret
.L23:
cmp w0, 4
cset w0, cc
lsl w0, w0, 13
ret
.size zftl_get_density, .-zftl_get_density
.align 2
.type _list_remove_node, %function
_list_remove_node:
stp x29, x30, [sp, -64]!
and w1, w1, 65535
mov w4, 6
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x3, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
umull x21, w1, w4
mov w1, 65535
ldr x23, [x3, 1040]
add x20, x23, x21
ldrh w4, [x23, x21]
ldrh w3, [x20, 2]
cmp w4, w1
ldr x1, [x0]
bne .L27
cmp w3, w4
bne .L27
cmp x20, x1
bne .L26
.L27:
mov x22, x0
mov x24, x2
mov w0, 65535
cmp w3, w0
bne .L29
cmp x20, x1
beq .L29
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
mov w2, 202
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L29:
ldr x0, [x22]
ldrh w3, [x23, x21]
cmp x20, x0
mov w0, 65535
bne .L30
cmp w3, w0
bne .L31
str xzr, [x22]
.L32:
mov w0, -1
strh w0, [x23, x21]
strh w0, [x20, 2]
ldrh w0, [x24]
sub w0, w0, #1
strh w0, [x24]
.L26:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L31:
add x19, x19, :lo12:.LANCHOR0
mov w1, 6
ldr x0, [x19, 1040]
umaddl x3, w3, w1, x0
mov w0, -1
str x3, [x22]
strh w0, [x3, 2]
b .L32
.L30:
cmp w3, w0
ldrh w0, [x20, 2]
bne .L33
cmp w0, w3
beq .L32
add x19, x19, :lo12:.LANCHOR0
mov w1, 6
mov w2, -1
umull x0, w0, w1
ldr x1, [x19, 1040]
.L35:
strh w2, [x1, x0]
b .L32
.L33:
add x19, x19, :lo12:.LANCHOR0
mov w1, 6
ldr x2, [x19, 1040]
umaddl x3, w3, w1, x2
strh w0, [x3, 2]
ldrh w0, [x20, 2]
ldrh w2, [x23, x21]
umull x0, w0, w1
ldr x1, [x19, 1040]
b .L35
.size _list_remove_node, .-_list_remove_node
.align 2
.type hynix_set_rr_para, %function
hynix_set_rr_para:
stp x29, x30, [sp, -64]!
adrp x3, .LANCHOR0
add x3, x3, :lo12:.LANCHOR0
and w1, w1, 255
add x29, sp, 0
stp x21, x22, [sp, 32]
and w0, w0, 255
str x23, [sp, 48]
stp x19, x20, [sp, 16]
ldr x2, [x3, 1048]
ldr x19, [x3, 1056]
add x23, x2, 128
add x21, x2, 112
ldrb w22, [x2, 113]
ldrb w2, [x2, 112]
cmp w2, 8
mov x2, 32
umaddl x1, w1, w22, x2
beq .L37
mov w2, 160
umaddl x1, w2, w0, x1
.L37:
ubfiz x0, x0, 8, 8
add x21, x21, x1
add x19, x19, x0
mov x20, 0
mov w0, 54
str w0, [x19, 2056]
.L39:
cmp w22, w20, uxtb
bhi .L40
mov w0, 22
str w0, [x19, 2056]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldr x23, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L40:
ldrb w0, [x23, x20]
str w0, [x19, 2052]
mov x0, 600
bl __const_udelay
ldrsb w0, [x21, x20]
add x20, x20, 1
str w0, [x19, 2048]
b .L39
.size hynix_set_rr_para, .-hynix_set_rr_para
.align 2
.type zftl_debug_proc_open, %function
zftl_debug_proc_open:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
mov x19, x1
bl PDE_DATA
mov x2, x0
adrp x1, zftl_debug_proc_show
mov x0, x19
add x1, x1, :lo12:zftl_debug_proc_show
bl single_open
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size zftl_debug_proc_open, .-zftl_debug_proc_open
.align 2
.type zftl_debug_proc_show, %function
zftl_debug_proc_show:
stp x29, x30, [sp, -32]!
adrp x2, .LC1
adrp x1, .LC2
add x2, x2, :lo12:.LC1
add x29, sp, 0
str x19, [sp, 16]
add x1, x1, :lo12:.LC2
mov x19, x0
bl seq_printf
adrp x0, .LANCHOR2
adrp x1, .LC3
add x1, x1, :lo12:.LC3
ldr w2, [x0, #:lo12:.LANCHOR2]
mov x0, x19
bl seq_printf
ldr x19, [sp, 16]
mov w0, 0
ldp x29, x30, [sp], 32
ret
.size zftl_debug_proc_show, .-zftl_debug_proc_show
.align 2
.global zftl_flash_suspend
.type zftl_flash_suspend, %function
zftl_flash_suspend:
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
ldrb w1, [x0, 1028]
cmp w1, 9
ldr x1, [x0, 1056]
ldr w2, [x1]
str w2, [x0, 1064]
ldr w2, [x1, 4]
str w2, [x0, 1068]
bne .L47
ldr w2, [x1, 16]
str w2, [x0, 1072]
ldr w2, [x1, 32]
str w2, [x0, 1076]
ldr w2, [x1, 80]
str w2, [x0, 1080]
ldr w2, [x1, 84]
str w2, [x0, 1084]
ldr w2, [x1, 520]
ldr w1, [x1, 8]
str w2, [x0, 1088]
.L49:
str w1, [x0, 1092]
ret
.L47:
ldr w2, [x1, 8]
str w2, [x0, 1072]
ldr w2, [x1, 12]
str w2, [x0, 1076]
ldr w2, [x1, 304]
str w2, [x0, 1080]
ldr w2, [x1, 308]
str w2, [x0, 1084]
ldr w2, [x1, 336]
str w2, [x0, 1088]
ldr w1, [x1, 344]
b .L49
.size zftl_flash_suspend, .-zftl_flash_suspend
.align 2
.type nandc_irq_disable, %function
nandc_irq_disable:
adrp x2, .LANCHOR0+1028
ldrb w2, [x2, #:lo12:.LANCHOR0+1028]
cmp w2, 9
mov x2, 1
bne .L51
ldr w3, [x0, 292]
lsl x1, x2, x1
orr w2, w3, w1
str w2, [x0, 292]
ldr w2, [x0, 288]
bic w1, w2, w1
str w1, [x0, 288]
ret
.L51:
ldr w3, [x0, 368]
lsl x1, x2, x1
orr w2, w3, w1
str w2, [x0, 368]
ldr w2, [x0, 364]
bic w1, w2, w1
str w1, [x0, 364]
ret
.size nandc_irq_disable, .-nandc_irq_disable
.align 2
.type _insert_free_list, %function
_insert_free_list:
adrp x9, .LANCHOR0
add x3, x9, :lo12:.LANCHOR0
and w1, w1, 65535
ldrh w4, [x3, 1096]
cmp w4, w1
bls .L53
ldrh w4, [x2]
mov w6, 6
add w4, w4, 1
strh w4, [x2]
umull x10, w1, w6
mov w2, -1
ldr x11, [x3, 1040]
add x5, x11, x10
strh w2, [x5, 2]
strh w2, [x11, x10]
ldr x2, [x0]
cbnz x2, .L55
.L60:
str x5, [x0]
ret
.L55:
ldr x8, [x3, 1104]
ubfiz x7, x1, 2, 16
ldrh w13, [x3, 1112]
mov w15, 65535
ldr x14, [x3, 1040]
ldr w4, [x8, x7]
sub x3, x2, x14
ldrh w7, [x8, x7]
asr x3, x3, 1
and w7, w7, 2047
ubfx x4, x4, 11, 8
madd w4, w13, w4, w7
mov x7, -6148914691236517206
movk x7, 0xaaab, lsl 0
and w4, w4, 65535
mul x3, x3, x7
mov w7, w6
and w3, w3, 65535
.L58:
ubfiz x12, x3, 2, 16
ldr w6, [x8, x12]
ldrh w12, [x8, x12]
ubfx x6, x6, 11, 8
and w12, w12, 2047
madd w6, w13, w6, w12
cmp w4, w6, uxth
bls .L56
ldrh w6, [x2]
cmp w6, w15
bne .L57
strh w3, [x5, 2]
strh w1, [x2]
ret
.L57:
umaddl x2, w6, w7, x14
mov w3, w6
b .L58
.L56:
ldrh w4, [x2, 2]
strh w4, [x5, 2]
strh w3, [x11, x10]
ldr x3, [x0]
cmp x2, x3
bne .L59
strh w1, [x2, 2]
b .L60
.L59:
ldrh w0, [x2, 2]
add x3, x9, :lo12:.LANCHOR0
mov w4, 6
ldr x3, [x3, 1040]
umull x0, w0, w4
strh w1, [x3, x0]
strh w1, [x2, 2]
.L53:
ret
.size _insert_free_list, .-_insert_free_list
.align 2
.type _insert_data_list, %function
_insert_data_list:
adrp x9, .LANCHOR0
add x5, x9, :lo12:.LANCHOR0
and w1, w1, 65535
ldrh w3, [x5, 1096]
cmp w3, w1
bls .L83
ldrh w3, [x2]
mov w11, 6
add w3, w3, 1
strh w3, [x2]
umull x11, w1, w11
mov w2, -1
ldr x13, [x5, 1040]
add x10, x13, x11
strh w2, [x10, 2]
strh w2, [x13, x11]
ldr x2, [x0]
cbnz x2, .L64
str x10, [x0]
ret
.L64:
stp x29, x30, [sp, -32]!
uxtw x4, w1
add x29, sp, 0
str x19, [sp, 16]
ldr x14, [x5, 1120]
ldrh w6, [x10, 4]
ldr x12, [x5, 1104]
ldrh w15, [x5, 1112]
ldrh w8, [x14, x4, lsl 1]
lsl x4, x4, 2
ldr w3, [x12, x4]
mul w8, w8, w6
ldrh w4, [x12, x4]
ubfx x3, x3, 11, 8
and w4, w4, 2047
cbz w8, .L65
madd w3, w15, w3, w4
add w8, w8, w3, uxth
.L65:
add x4, x9, :lo12:.LANCHOR0
mov x5, -6148914691236517206
movk x5, 0xaaab, lsl 0
cmp w6, 0
csinv w8, w8, wzr, ne
mov w19, 65535
ldr x16, [x4, 1040]
mov w18, 6
ldrh w30, [x4, 1096]
sub x3, x2, x16
asr x3, x3, 1
mul x3, x3, x5
mov w5, 0
and w3, w3, 65535
.L71:
add w5, w5, 1
and w5, w5, 65535
cmp w5, w30
bhi .L61
cmp w1, w3
beq .L61
uxtw x7, w3
ldrh w17, [x2, 4]
ldrh w4, [x14, x7, lsl 1]
lsl x7, x7, 2
ldr w6, [x12, x7]
mul w4, w4, w17
ldrh w7, [x12, x7]
ubfx x6, x6, 11, 8
and w7, w7, 2047
cbz w4, .L68
madd w6, w15, w6, w7
add w4, w4, w6, uxth
.L68:
cbz w17, .L69
cmp w8, w4
bls .L69
ldrh w4, [x2]
cmp w4, w19
bne .L70
strh w3, [x10, 2]
strh w1, [x2]
.L61:
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L70:
umaddl x2, w4, w18, x16
mov w3, w4
b .L71
.L69:
ldrh w4, [x2, 2]
strh w4, [x10, 2]
strh w3, [x13, x11]
ldr x3, [x0]
cmp x2, x3
bne .L72
strh w1, [x2, 2]
str x10, [x0]
b .L61
.L72:
ldrh w0, [x2, 2]
add x9, x9, :lo12:.LANCHOR0
mov w3, 6
umull x0, w0, w3
ldr x3, [x9, 1040]
strh w1, [x3, x0]
strh w1, [x2, 2]
b .L61
.L83:
ret
.size _insert_data_list, .-_insert_data_list
.align 2
.type _list_update_data_list, %function
_list_update_data_list:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w19, w1, 65535
adrp x1, .LANCHOR0
add x4, x1, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
str x25, [sp, 64]
ldr x3, [x4, 1128]
ldrh w5, [x3, 16]
cmp w5, w19
beq .L85
mov x20, x1
ldrh w1, [x3, 48]
cmp w1, w19
beq .L85
ldrh w1, [x3, 80]
cmp w1, w19
beq .L85
mov w23, 6
ldr x25, [x4, 1040]
ldr x1, [x0]
umull x23, w19, w23
add x24, x25, x23
cmp x24, x1
beq .L85
mov x21, x0
ldrh w0, [x24, 2]
mov w1, 65535
mov x22, x2
cmp w0, w1
bne .L89
ldrh w1, [x25, x23]
cmp w1, w0
bne .L89
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 24
mov w2, 273
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L89:
ldrh w3, [x24, 2]
mov w0, 65535
cmp w3, w0
bne .L90
ldrh w0, [x25, x23]
cmp w0, w3
beq .L85
.L90:
add x1, x20, :lo12:.LANCHOR0
ubfiz x2, x19, 1, 16
ldrh w4, [x24, 4]
mov x6, -6148914691236517206
movk x6, 0xaaab, lsl 0
mov w5, -1
ldr x0, [x1, 1120]
cmp w4, 0
ldr x1, [x1, 1040]
ldrh w2, [x0, x2]
mul w2, w2, w4
mov w4, 6
umull x3, w3, w4
csel w2, w2, w5, ne
asr x4, x3, 1
add x3, x1, x3
mul x4, x4, x6
ldrh w1, [x3, 4]
cmp w1, 0
ldrh w0, [x0, x4, lsl 1]
mul w0, w0, w1
csel w0, w0, w5, ne
cmp w2, w0
bcs .L85
mov x2, x22
mov w1, w19
mov x0, x21
bl _list_remove_node
mov x2, x22
mov w1, w19
mov x0, x21
bl _insert_data_list
.L85:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldr x25, [sp, 64]
ldp x29, x30, [sp], 80
ret
.size _list_update_data_list, .-_list_update_data_list
.section .text.unlikely
.align 2
.type rk_simple_strtoull.constprop.33, %function
rk_simple_strtoull.constprop.33:
stp x29, x30, [sp, -16]!
mov x3, x0
mov x6, x1
add x29, sp, 0
ldrb w0, [x0]
cmp w0, 48
bne .L107
ldrb w0, [x3, 1]
add x2, x3, 1
orr w0, w0, 32
and w0, w0, 255
cmp w0, 120
bne .L109
ldrb w0, [x3, 2]
bl isxdigit
cbz w0, .L109
add x2, x3, 2
mov w4, 16
.L97:
mov w5, 0
.L98:
ldrb w3, [x2]
mov w0, w3
bl isxdigit
cbnz w0, .L99
.L105:
cbnz x6, .L100
.L96:
mov w0, w5
ldp x29, x30, [sp], 16
ret
.L107:
mov x2, x3
mov w4, 10
b .L97
.L109:
mov w4, 8
b .L97
.L99:
sub w0, w3, #48
cmp w0, 9
bhi .L110
.L106:
cmp w0, w4
bcs .L105
madd w5, w5, w4, w0
add x2, x2, 1
b .L98
.L100:
str x2, [x6]
b .L96
.L110:
orr w0, w3, 32
sub w0, w0, #87
b .L106
.size rk_simple_strtoull.constprop.33, .-rk_simple_strtoull.constprop.33
.text
.align 2
.type nandc_de_cs.constprop.35, %function
nandc_de_cs.constprop.35:
adrp x0, .LANCHOR0+1056
ldr x1, [x0, #:lo12:.LANCHOR0+1056]
ldr w0, [x1]
and w0, w0, -256
and w0, w0, -131073
str w0, [x1]
ret
.size nandc_de_cs.constprop.35, .-nandc_de_cs.constprop.35
.align 2
.global flash_read_status
.type flash_read_status, %function
flash_read_status:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
mov x19, x0
mov w0, 112
str w0, [x19, 8]
mov x0, 600
bl __const_udelay
ldr w0, [x19]
ldr x19, [sp, 16]
and w0, w0, 255
ldp x29, x30, [sp], 32
ret
.size flash_read_status, .-flash_read_status
.align 2
.global toshiba_set_rr_para
.type toshiba_set_rr_para, %function
toshiba_set_rr_para:
stp x29, x30, [sp, -80]!
and w1, w1, 255
add w2, w1, 1
add x29, sp, 0
stp x21, x22, [sp, 32]
mov x21, x0
mov w0, 5
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
adrp x22, .LANCHOR0
umull x2, w2, w0
adrp x0, .LANCHOR1
add x0, x0, :lo12:.LANCHOR1
stp x19, x20, [sp, 16]
add x25, x0, 48
add x24, x0, 144
add x25, x25, x2
add x24, x24, x2
add x22, x22, :lo12:.LANCHOR0
mov x19, x0
add x23, x0, w1, sxtw
mov x20, 0
mov w26, 85
.L116:
ldrb w0, [x22, 1137]
cmp w0, w20
bhi .L120
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L120:
add x0, x19, 144
str w26, [x21, 8]
ldrsb w0, [x20, x0]
str w0, [x21, 4]
mov x0, 1000
bl __const_udelay
ldrb w0, [x22, 1136]
cmp w0, 34
bne .L117
ldrsb w0, [x24, x20]
.L122:
add x20, x20, 1
str w0, [x21]
b .L116
.L117:
cmp w0, 35
bne .L119
ldrsb w0, [x25, x20]
b .L122
.L119:
ldrsb w0, [x23, 192]
b .L122
.size toshiba_set_rr_para, .-toshiba_set_rr_para
.align 2
.global hynix_reconfig_rr_para
.type hynix_reconfig_rr_para, %function
hynix_reconfig_rr_para:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldrb w1, [x19, 1136]
sub w1, w1, #1
and w1, w1, 255
cmp w1, 7
bhi .L123
and w0, w0, 255
ldr x1, [x19, 1048]
sxtw x20, w0
add x1, x1, x20
ldrb w1, [x1, 120]
cbz w1, .L123
mov w1, 0
bl hynix_set_rr_para
ldr x0, [x19, 1048]
add x0, x0, x20
strb wzr, [x0, 120]
.L123:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size hynix_reconfig_rr_para, .-hynix_reconfig_rr_para
.align 2
.global nand_flash_print_info
.type nand_flash_print_info, %function
nand_flash_print_info:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
adrp x19, .LANCHOR2
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L130
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
adrp x0, .LC4
add x1, x1, 200
add x0, x0, :lo12:.LC4
bl printk
.L130:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L131
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w6, [x0, 6]
ldrb w5, [x0, 5]
ldrb w4, [x0, 4]
ldrb w3, [x0, 3]
ldrb w2, [x0, 2]
ldrb w1, [x0, 1]
adrp x0, .LC5
add x0, x0, :lo12:.LC5
bl printk
.L131:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L132
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 8]
adrp x0, .LC6
add x0, x0, :lo12:.LC6
bl printk
.L132:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L133
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 9]
adrp x0, .LC7
add x0, x0, :lo12:.LC7
bl printk
.L133:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L134
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 10]
adrp x0, .LC8
add x0, x0, :lo12:.LC8
bl printk
.L134:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L135
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 12]
adrp x0, .LC9
add x0, x0, :lo12:.LC9
bl printk
.L135:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L136
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 13]
adrp x0, .LC10
add x0, x0, :lo12:.LC10
bl printk
.L136:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L137
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 14]
adrp x0, .LC11
add x0, x0, :lo12:.LC11
bl printk
.L137:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L138
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 23]
adrp x0, .LC12
add x0, x0, :lo12:.LC12
bl printk
.L138:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L139
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 18]
adrp x0, .LC13
add x0, x0, :lo12:.LC13
bl printk
.L139:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L140
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 19]
adrp x0, .LC14
add x0, x0, :lo12:.LC14
bl printk
.L140:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L141
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 20]
adrp x0, .LC15
add x0, x0, :lo12:.LC15
bl printk
.L141:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L142
adrp x0, .LANCHOR0+1152
ldrb w1, [x0, #:lo12:.LANCHOR0+1152]
adrp x0, .LC16
add x0, x0, :lo12:.LC16
bl printk
.L142:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L143
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 22]
adrp x0, .LC17
add x0, x0, :lo12:.LC17
bl printk
.L143:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L144
adrp x0, .LANCHOR0+1153
ldrb w1, [x0, #:lo12:.LANCHOR0+1153]
adrp x0, .LC18
add x0, x0, :lo12:.LC18
bl printk
.L144:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L145
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 16]
adrp x0, .LC19
add x0, x0, :lo12:.LC19
and w1, w1, 1
bl printk
.L145:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L146
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC20
add x0, x0, :lo12:.LC20
ubfx x1, x1, 1, 1
bl printk
.L146:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L147
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC21
add x0, x0, :lo12:.LC21
ubfx x1, x1, 2, 1
bl printk
.L147:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L148
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC22
add x0, x0, :lo12:.LC22
ubfx x1, x1, 3, 1
bl printk
.L148:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L149
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC23
add x0, x0, :lo12:.LC23
ubfx x1, x1, 4, 1
bl printk
.L149:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L150
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC24
add x0, x0, :lo12:.LC24
ubfx x1, x1, 5, 1
bl printk
.L150:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L151
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC25
add x0, x0, :lo12:.LC25
ubfx x1, x1, 6, 1
bl printk
.L151:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L152
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC26
add x0, x0, :lo12:.LC26
ubfx x1, x1, 7, 1
bl printk
.L152:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L153
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrb w1, [x0, 17]
adrp x0, .LC27
add x0, x0, :lo12:.LC27
and w1, w1, 1
bl printk
.L153:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L154
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC28
add x0, x0, :lo12:.LC28
ubfx x1, x1, 9, 1
bl printk
.L154:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L155
adrp x0, .LANCHOR0+1144
ldr x0, [x0, #:lo12:.LANCHOR0+1144]
ldrh w1, [x0, 16]
adrp x0, .LC29
add x0, x0, :lo12:.LC29
ubfx x1, x1, 10, 1
bl printk
.L155:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L156
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
ldrb w2, [x1, 1154]
ldrb w1, [x0, #:lo12:.LANCHOR0]
adrp x0, .LC30
add x0, x0, :lo12:.LC30
bl printk
.L156:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L157
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
ldrb w2, [x0, 1171]
ldrb w1, [x0, 1170]
adrp x0, .LC31
add x0, x0, :lo12:.LC31
bl printk
.L157:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L158
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
ldrb w2, [x0, 1169]
ldrb w1, [x0, 1168]
adrp x0, .LC32
add x0, x0, :lo12:.LC32
bl printk
.L158:
ldr w0, [x19, #:lo12:.LANCHOR2]
tbz x0, 12, .L129
adrp x0, .LANCHOR0+1192
ldrb w1, [x0, #:lo12:.LANCHOR0+1192]
adrp x0, .LC33
add x0, x0, :lo12:.LC33
bl printk
.L129:
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size nand_flash_print_info, .-nand_flash_print_info
.align 2
.global timer_delay_ns
.type timer_delay_ns, %function
timer_delay_ns:
stp x29, x30, [sp, -16]!
uxtw x0, w0
add x29, sp, 0
bl __ndelay
ldp x29, x30, [sp], 16
ret
.size timer_delay_ns, .-timer_delay_ns
.align 2
.global nandc_set_ddr_para
.type nandc_set_ddr_para, %function
nandc_set_ddr_para:
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
and w0, w0, 255
ldrb w1, [x2, 1028]
ldr x2, [x2, 1056]
cmp w1, 9
lsl w1, w0, 16
lsl w0, w0, 8
orr w1, w1, w0
orr w1, w1, 3
bne .L254
str w1, [x2, 80]
ret
.L254:
str w1, [x2, 304]
ret
.size nandc_set_ddr_para, .-nandc_set_ddr_para
.align 2
.global nandc_get_ddr_para
.type nandc_get_ddr_para, %function
nandc_get_ddr_para:
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
ldrb w1, [x0, 1028]
ldr x0, [x0, 1056]
cmp w1, 9
bne .L257
ldr w0, [x0, 80]
.L259:
ubfx x0, x0, 8, 8
ret
.L257:
ldr w0, [x0, 304]
b .L259
.size nandc_get_ddr_para, .-nandc_get_ddr_para
.align 2
.global nandc_set_if_mode
.type nandc_set_if_mode, %function
nandc_set_if_mode:
adrp x3, .LANCHOR0
add x3, x3, :lo12:.LANCHOR0
and w0, w0, 255
tst w0, 6
ldr x2, [x3, 1056]
ldr w1, [x2]
beq .L261
orr w1, w1, 24576
tst x0, 4
and w1, w1, -32769
ldrb w0, [x3, 1028]
orr w1, w1, 196608
mov w3, 8321
orr w4, w1, 32768
csel w1, w4, w1, ne
cmp w0, 9
mov w0, 4099
movk w0, 0x10, lsl 16
bne .L263
str w3, [x2, 8]
str w0, [x2, 80]
mov w0, 38
str w0, [x2, 84]
mov w0, 39
str w0, [x2, 84]
.L264:
str w1, [x2]
ret
.L263:
str w3, [x2, 344]
str w0, [x2, 304]
mov w0, 38
str w0, [x2, 308]
mov w0, 39
str w0, [x2, 308]
b .L264
.L261:
and w1, w1, -8193
b .L264
.size nandc_set_if_mode, .-nandc_set_if_mode
.align 2
.global nandc_cs
.type nandc_cs, %function
nandc_cs:
adrp x1, .LANCHOR0+1056
mov w2, 1
lsl w0, w2, w0
ldr x3, [x1, #:lo12:.LANCHOR0+1056]
ldr w1, [x3]
bfi w1, w0, 0, 8
str w1, [x3]
ret
.size nandc_cs, .-nandc_cs
.align 2
.global flash_wait_device_ready_raw
.type flash_wait_device_ready_raw, %function
flash_wait_device_ready_raw:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 255
stp x23, x24, [sp, 48]
mov w24, w2
adrp x2, .LANCHOR0
add x0, x2, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov x19, x2
stp x25, x26, [sp, 64]
mov w21, w1
str x27, [sp, 80]
ldrb w0, [x0, 1153]
cmp w0, w20
bhi .L269
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 224
mov w2, 812
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L269:
add x2, x19, :lo12:.LANCHOR0
lsr w23, w21, 8
add x20, x2, w20, sxtw
lsr w25, w21, 16
lsr w26, w21, 24
and w21, w21, 255
ldr x19, [x2, 1056]
mov w27, 120
ldrb w22, [x20, 1196]
mov x20, x2
ubfiz x0, x22, 8, 8
add x19, x19, x0
.L275:
mov w0, w22
bl nandc_cs
str w27, [x19, 2056]
str w21, [x19, 2052]
ldrb w0, [x20, 1204]
str w23, [x19, 2052]
str w25, [x19, 2052]
cbz w0, .L270
str w26, [x19, 2052]
.L270:
mov x0, 600
bl __const_udelay
ldr w2, [x19, 2048]
and w2, w2, 255
bl nandc_de_cs.constprop.35
bics wzr, w24, w2
bne .L275
cmp w2, 255
beq .L275
mov w0, w2
ldr x27, [sp, 80]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
ret
.size flash_wait_device_ready_raw, .-flash_wait_device_ready_raw
.align 2
.global flash_wait_device_ready
.type flash_wait_device_ready, %function
flash_wait_device_ready:
adrp x4, .LANCHOR0
add x7, x4, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
mov w6, 24
mov w5, 1
mov w2, w1
add x29, sp, 0
ldrb w8, [x7, 1205]
tst x0, 50331648
sub w6, w6, w8
lsl w3, w5, w6
sub w3, w3, #1
lsl w5, w5, w8
sub w5, w5, #1
asr w6, w0, w6
and w5, w5, w6
and w1, w3, w0
and w5, w5, 255
bne .L280
ldrb w0, [x4, #:lo12:.LANCHOR0]
cbz w0, .L281
ldrb w0, [x7, 1]
cbz w0, .L280
.L281:
add x4, x4, :lo12:.LANCHOR0
ldrh w3, [x4, 2]
udiv w0, w1, w3
mul w0, w0, w3
sub w3, w1, w0
ldrb w1, [x4, 1]
cbz w1, .L282
add w1, w0, w3, lsl 1
.L280:
mov w0, w5
bl flash_wait_device_ready_raw
ldp x29, x30, [sp], 16
ret
.L282:
add x4, x4, 4
ldrh w3, [x4, w3, uxtw 1]
add w1, w3, w0
b .L280
.size flash_wait_device_ready, .-flash_wait_device_ready
.align 2
.global nandc_de_cs
.type nandc_de_cs, %function
nandc_de_cs:
adrp x0, .LANCHOR0+1056
ldr x1, [x0, #:lo12:.LANCHOR0+1056]
ldr w0, [x1]
and w0, w0, -256
and w0, w0, -131073
str w0, [x1]
ret
.size nandc_de_cs, .-nandc_de_cs
.align 2
.global nandc_wait_flash_ready_no_delay
.type nandc_wait_flash_ready_no_delay, %function
nandc_wait_flash_ready_no_delay:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, 34464
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
movk w19, 0x1, lsl 16
.L293:
ldr x0, [x20, 1056]
ldr w0, [x0]
str w0, [x29, 40]
ldr w0, [x29, 40]
tbnz x0, 9, .L294
mov x0, 50
bl __const_udelay
subs w19, w19, #1
bne .L293
mov w0, -1
.L291:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.L294:
mov w0, 0
b .L291
.size nandc_wait_flash_ready_no_delay, .-nandc_wait_flash_ready_no_delay
.align 2
.global zftl_flash_enter_slc_mode
.type zftl_flash_enter_slc_mode, %function
zftl_flash_enter_slc_mode:
stp x29, x30, [sp, -48]!
adrp x1, .LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
and x19, x0, 255
add x0, x1, :lo12:.LANCHOR0
ldrb w1, [x1, #:lo12:.LANCHOR0]
str x21, [sp, 32]
cbz w1, .L297
cmp w1, 1
ldr x20, [x0, 1056]
bne .L300
adrp x0, .LANCHOR2+37
ldrb w0, [x0, #:lo12:.LANCHOR2+37]
cbz w0, .L297
.L316:
add x19, x19, 8
add x19, x20, x19, lsl 8
str w0, [x19, 8]
.L297:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L300:
cmp w1, 2
bne .L302
add x0, x0, x19
ldrb w1, [x0, 1208]
cbz w1, .L297
adrp x21, .LANCHOR2
add x21, x21, :lo12:.LANCHOR2
strb wzr, [x0, 1208]
add x21, x21, 8
ldrb w0, [x21, 29]
cbz w0, .L297
bl nandc_wait_flash_ready_no_delay
ldrb w0, [x21, 29]
b .L316
.L302:
cmp w1, 3
bne .L297
add x21, x0, w19, sxtw
ldrb w0, [x21, 1208]
cbz w0, .L297
ubfiz x19, x19, 8, 8
bl nandc_wait_flash_ready_no_delay
add x19, x20, x19
mov w0, 239
strb wzr, [x21, 1208]
str w0, [x19, 2056]
mov w0, 145
str w0, [x19, 2052]
mov x0, 500
bl __const_udelay
str wzr, [x19, 2048]
mov w0, 1
str w0, [x19, 2048]
str wzr, [x19, 2048]
mov x0, 750
str wzr, [x19, 2048]
bl __const_udelay
bl nandc_wait_flash_ready_no_delay
mov w0, 218
str w0, [x19, 2056]
mov x0, 250
bl __const_udelay
b .L297
.size zftl_flash_enter_slc_mode, .-zftl_flash_enter_slc_mode
.align 2
.global zftl_flash_exit_slc_mode
.type zftl_flash_exit_slc_mode, %function
zftl_flash_exit_slc_mode:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and x19, x0, 255
adrp x0, .LANCHOR0
stp x21, x22, [sp, 32]
add x21, x0, :lo12:.LANCHOR0
ldrb w0, [x0, #:lo12:.LANCHOR0]
cbz w0, .L317
cmp w0, 1
ldr x20, [x21, 1056]
bne .L320
adrp x0, .LANCHOR2+38
ldrb w0, [x0, #:lo12:.LANCHOR2+38]
cbz w0, .L317
.L338:
add x19, x19, 8
add x19, x20, x19, lsl 8
str w0, [x19, 8]
.L317:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L320:
cmp w0, 2
bne .L322
add x21, x21, x19
ldrb w0, [x21, 1208]
cbnz w0, .L317
adrp x22, .LANCHOR2
add x22, x22, :lo12:.LANCHOR2
mov w1, 4
add x22, x22, 8
ldrb w0, [x22, 12]
cmp w0, 2
csel w0, w0, w1, eq
strb w0, [x21, 1208]
ldrb w0, [x22, 30]
cbz w0, .L317
bl nandc_wait_flash_ready_no_delay
ldrb w0, [x22, 30]
b .L338
.L322:
cmp w0, 3
bne .L317
add x21, x21, w19, sxtw
ldrb w0, [x21, 1208]
cbnz w0, .L317
adrp x22, .LANCHOR2
add x22, x22, :lo12:.LANCHOR2
bl nandc_wait_flash_ready_no_delay
ubfiz x19, x19, 8, 8
add x19, x20, x19
mov w1, 4
ldrb w0, [x22, 20]
cmp w0, 2
csel w0, w0, w1, eq
strb w0, [x21, 1208]
mov w0, 239
str w0, [x19, 2056]
mov w0, 145
str w0, [x19, 2052]
mov x0, 500
bl __const_udelay
ldrb w0, [x22, 15]
cmp w0, 9
mov w0, 1
bne .L325
str w0, [x19, 2048]
.L326:
str w0, [x19, 2048]
mov x0, 750
str wzr, [x19, 2048]
str wzr, [x19, 2048]
bl __const_udelay
bl nandc_wait_flash_ready_no_delay
mov w0, 223
str w0, [x19, 2056]
mov x0, 250
bl __const_udelay
b .L317
.L325:
ldrb w1, [x21, 1208]
str w1, [x19, 2048]
b .L326
.size zftl_flash_exit_slc_mode, .-zftl_flash_exit_slc_mode
.align 2
.global flash_start_page_read
.type flash_start_page_read, %function
flash_start_page_read:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w0, 255
adrp x22, .LANCHOR0
add x0, x22, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
mov w19, 24
stp x23, x24, [sp, 48]
mov w23, w1
mov w20, 1
ldrb w1, [x0, 1205]
ldrb w0, [x0, 1153]
sub w24, w19, w1
lsl w20, w20, w1
sub w20, w20, #1
lsr w1, w23, w24
and w20, w20, w1
and w20, w20, 255
cmp w0, w20
bhi .L340
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 256
mov w2, 1013
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L340:
add x5, x22, :lo12:.LANCHOR0
ldrb w0, [x5, 1153]
cmp w0, w20
bls .L339
add x20, x5, w20, sxtw
mov w19, 1
ubfx x4, x23, 24, 2
lsl w19, w19, w24
sub w19, w19, #1
and w19, w19, w23
ldrb w23, [x20, 1196]
ldr x20, [x5, 1056]
mov w0, w23
bl nandc_cs
cbnz w4, .L342
mov w0, w19
bl slc_phy_page_address_calc
mov w19, w0
ldrb w0, [x22, #:lo12:.LANCHOR0]
cbz w0, .L343
mov w0, w23
bl zftl_flash_enter_slc_mode
.L343:
add x0, x22, :lo12:.LANCHOR0
ldr x0, [x0, 1144]
ldrb w1, [x0, 7]
cmp w1, 1
bne .L345
ldrb w0, [x0, 12]
cmp w0, 2
bne .L345
sxtw x0, w23
mov w1, 38
add x0, x0, 8
add x0, x20, x0, lsl 8
str w1, [x0, 8]
.L345:
ubfiz x0, x23, 8, 8
and w1, w19, 255
add x0, x20, x0
add x22, x22, :lo12:.LANCHOR0
str wzr, [x0, 2056]
str wzr, [x0, 2052]
str wzr, [x0, 2052]
str w1, [x0, 2052]
lsr w1, w19, 8
str w1, [x0, 2052]
lsr w1, w19, 16
str w1, [x0, 2052]
ldrb w1, [x22, 1204]
cbz w1, .L346
lsr w19, w19, 24
str w19, [x0, 2052]
.L346:
str w21, [x0, 2056]
.L339:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L342:
ldr x0, [x5, 1144]
ldrb w0, [x0, 12]
cmp w0, 3
bne .L344
ldrb w0, [x5, 1212]
cbnz w0, .L344
ldrb w0, [x5, 1213]
cbnz w0, .L344
sxtw x0, w23
add x0, x0, 8
add x0, x20, x0, lsl 8
str w4, [x0, 8]
b .L343
.L344:
mov w0, w23
bl zftl_flash_exit_slc_mode
b .L343
.size flash_start_page_read, .-flash_start_page_read
.align 2
.global nandc_wait_flash_ready
.type nandc_wait_flash_ready, %function
nandc_wait_flash_ready:
stp x29, x30, [sp, -48]!
mov x0, 750
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, 34464
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
movk w19, 0x1, lsl 16
bl __const_udelay
.L356:
ldr x0, [x20, 1056]
ldr w0, [x0]
str w0, [x29, 40]
ldr w0, [x29, 40]
tbnz x0, 9, .L357
mov x0, 50
bl __const_udelay
subs w19, w19, #1
bne .L356
mov w0, -1
.L354:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.L357:
mov w0, 0
b .L354
.size nandc_wait_flash_ready, .-nandc_wait_flash_ready
.align 2
.global sandisk_set_rr_para
.type sandisk_set_rr_para, %function
sandisk_set_rr_para:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x0
mov w0, 239
and w19, w1, 255
str w0, [x20, 8]
mov w0, 17
str w0, [x20, 4]
mov x0, 1000
bl __const_udelay
add w1, w19, 1
mov w0, 5
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
umull x1, w1, w0
adrp x0, .LANCHOR1
add x0, x0, :lo12:.LANCHOR1
add x3, x0, 48
add x0, x0, 144
add x3, x3, x1
add x0, x0, x1
mov x1, 0
.L361:
ldrb w4, [x2, 1137]
cmp w4, w1
bhi .L364
bl nandc_wait_flash_ready
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L364:
ldrb w4, [x2, 1136]
cmp w4, 67
bne .L362
ldrsb w4, [x0, x1]
.L366:
add x1, x1, 1
str w4, [x20]
b .L361
.L362:
ldrsb w4, [x3, x1]
b .L366
.size sandisk_set_rr_para, .-sandisk_set_rr_para
.align 2
.global toshiba_3d_set_tlc_rr_para
.type toshiba_3d_set_tlc_rr_para, %function
toshiba_3d_set_tlc_rr_para:
stp x29, x30, [sp, -48]!
and x2, x1, 255
mov x1, 7
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
str x21, [sp, 32]
mov w21, 213
mov w0, -119
madd x1, x2, x1, x1
str w21, [x19, 8]
str wzr, [x19, 4]
str w0, [x19, 4]
adrp x0, .LANCHOR1
add x0, x0, :lo12:.LANCHOR1
add x0, x0, 280
add x20, x0, x1
ldrsb w0, [x0, x1]
str w0, [x19]
ldrsb w0, [x20, 1]
str w0, [x19]
ldrsb w0, [x20, 2]
str w0, [x19]
ldrsb w0, [x20, 3]
str w0, [x19]
bl nandc_wait_flash_ready
str w21, [x19, 8]
str wzr, [x19, 4]
mov w0, -118
str w0, [x19, 4]
ldrsb w0, [x20, 4]
str w0, [x19]
ldrsb w0, [x20, 5]
str w0, [x19]
ldrsb w0, [x20, 6]
str w0, [x19]
str wzr, [x19]
bl nandc_wait_flash_ready
ldr x21, [sp, 32]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.size toshiba_3d_set_tlc_rr_para, .-toshiba_3d_set_tlc_rr_para
.align 2
.global toshiba_3d_set_slc_rr_para
.type toshiba_3d_set_slc_rr_para, %function
toshiba_3d_set_slc_rr_para:
stp x29, x30, [sp, -16]!
mov w2, 213
add x29, sp, 0
str w2, [x0, 8]
mov w2, -117
str wzr, [x0, 4]
str w2, [x0, 4]
adrp x2, .LANCHOR1
add x2, x2, :lo12:.LANCHOR1
add x1, x2, w1, uxtb
ldrsb w1, [x1, 681]
str w1, [x0]
str wzr, [x0]
str wzr, [x0]
str wzr, [x0]
bl nandc_wait_flash_ready
ldp x29, x30, [sp], 16
ret
.size toshiba_3d_set_slc_rr_para, .-toshiba_3d_set_slc_rr_para
.align 2
.global toshiba_tlc_set_rr_para
.type toshiba_tlc_set_rr_para, %function
toshiba_tlc_set_rr_para:
stp x29, x30, [sp, -48]!
uxtw x1, w1
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
str x21, [sp, 32]
mov w21, 239
adrp x0, .LANCHOR2
str w21, [x19, 8]
cbz w2, .L372
mov w2, 18
str w2, [x19, 4]
mov x2, 7
add x0, x0, :lo12:.LANCHOR2
add x0, x0, 40
mul x1, x1, x2
add x20, x0, x1
ldrb w0, [x0, x1]
str w0, [x19]
ldrb w0, [x20, 1]
str w0, [x19]
ldrb w0, [x20, 2]
str w0, [x19]
ldrb w0, [x20, 3]
str w0, [x19]
bl nandc_wait_flash_ready
str w21, [x19, 8]
mov w0, 19
str w0, [x19, 4]
ldrb w0, [x20, 4]
str w0, [x19]
ldrb w0, [x20, 5]
str w0, [x19]
ldrb w0, [x20, 6]
str w0, [x19]
.L375:
str wzr, [x19]
bl nandc_wait_flash_ready
ldr x21, [sp, 32]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.L372:
add x0, x0, :lo12:.LANCHOR2
mov w2, 20
add x0, x0, 376
str w2, [x19, 4]
ldrb w0, [x0, x1]
str w0, [x19]
str wzr, [x19]
str wzr, [x19]
b .L375
.size toshiba_tlc_set_rr_para, .-toshiba_tlc_set_rr_para
.align 2
.global ymtc_3d_set_tlc_rr_para
.type ymtc_3d_set_tlc_rr_para, %function
ymtc_3d_set_tlc_rr_para:
stp x29, x30, [sp, -48]!
and x1, x1, 255
mov x2, 7
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
str x21, [sp, 32]
mov w0, 160
mov w21, 239
mul x1, x1, x2
str w21, [x19, 8]
str w0, [x19, 4]
adrp x0, .LANCHOR1
add x0, x0, :lo12:.LANCHOR1
add x0, x0, 696
add x20, x0, x1
ldrsb w0, [x0, x1]
str w0, [x19]
ldrsb w0, [x20, 4]
str w0, [x19]
str wzr, [x19]
str wzr, [x19]
bl nandc_wait_flash_ready
str w21, [x19, 8]
mov w0, 161
str w0, [x19, 4]
ldrsb w0, [x20, 1]
str w0, [x19]
ldrsb w0, [x20, 3]
str w0, [x19]
ldrsb w0, [x20, 5]
str w0, [x19]
str wzr, [x19]
bl nandc_wait_flash_ready
str w21, [x19, 8]
mov w0, 162
str w0, [x19, 4]
ldrsb w0, [x20, 2]
str w0, [x19]
ldrsb w0, [x20, 6]
str w0, [x19]
str wzr, [x19]
str wzr, [x19]
bl nandc_wait_flash_ready
ldr x21, [sp, 32]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.size ymtc_3d_set_tlc_rr_para, .-ymtc_3d_set_tlc_rr_para
.align 2
.global ymtc_3d_set_slc_rr_para
.type ymtc_3d_set_slc_rr_para, %function
ymtc_3d_set_slc_rr_para:
stp x29, x30, [sp, -16]!
mov w2, 239
and x1, x1, 255
add x29, sp, 0
str w2, [x0, 8]
mov w2, 163
str w2, [x0, 4]
adrp x2, .LANCHOR1
add x2, x2, :lo12:.LANCHOR1
add x2, x2, 1056
ldrsb w1, [x2, x1]
str w1, [x0]
str wzr, [x0]
str wzr, [x0]
str wzr, [x0]
bl nandc_wait_flash_ready
ldp x29, x30, [sp], 16
ret
.size ymtc_3d_set_slc_rr_para, .-ymtc_3d_set_slc_rr_para
.align 2
.global flash_start_plane_read
.type flash_start_plane_read, %function
flash_start_plane_read:
stp x29, x30, [sp, -96]!
mov w3, 24
mov w2, 1
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x4, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
ubfx x24, x0, 24, 2
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldrb w19, [x4, 1205]
sub w3, w3, w19
lsl w19, w2, w19
sub w19, w19, #1
lsl w21, w2, w3
sub w21, w21, #1
and w22, w21, w0
lsr w3, w0, w3
ldrb w0, [x4, 1153]
and w19, w19, w3
and w19, w19, 255
and w21, w21, w1
cmp w0, w19
bhi .L381
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1072
mov w2, 1148
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L381:
add x4, x20, :lo12:.LANCHOR0
add x19, x4, w19, sxtw
ldr x25, [x4, 1056]
ldrb w23, [x19, 1196]
mov w0, w23
bl nandc_cs
cbnz w24, .L382
mov w0, w22
bl slc_phy_page_address_calc
mov w22, w0
mov w0, w21
bl slc_phy_page_address_calc
mov w21, w0
ldrb w0, [x20, #:lo12:.LANCHOR0]
cbz w0, .L383
mov w0, w23
bl zftl_flash_enter_slc_mode
.L383:
add x0, x20, :lo12:.LANCHOR0
and x19, x23, 255
and w3, w22, 255
lsr w2, w22, 8
and w28, w21, 255
lsr w27, w21, 8
ldrb w1, [x0, 1176]
lsr w26, w21, 16
cmp w1, 1
lsr w1, w22, 16
bne .L385
add x19, x25, x19, lsl 8
ldrb w4, [x0, 1168]
ldrb w0, [x0, 1204]
str w4, [x19, 2056]
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w3, [x19, 2052]
str w2, [x19, 2052]
str w1, [x19, 2052]
cbz w0, .L386
lsr w22, w22, 24
str w22, [x19, 2052]
.L386:
add x22, x20, :lo12:.LANCHOR0
ldrb w0, [x22, 1169]
str w0, [x19, 2056]
bl nandc_wait_flash_ready
ldr x0, [x22, 1144]
ldrb w0, [x0, 12]
cmp w0, 3
bne .L387
cbz w24, .L387
str w24, [x19, 2056]
.L387:
str wzr, [x19, 2056]
add x20, x20, :lo12:.LANCHOR0
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w28, [x19, 2052]
ldrb w0, [x20, 1204]
str w27, [x19, 2052]
str w26, [x19, 2052]
cbz w0, .L408
lsr w21, w21, 24
str w21, [x19, 2052]
.L408:
mov w0, 48
str w0, [x19, 2056]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L382:
ldr x0, [x4, 1144]
ldrb w0, [x0, 12]
cmp w0, 3
bne .L384
ldrb w0, [x4, 1212]
cbnz w0, .L384
ldrb w0, [x4, 1213]
cbnz w0, .L384
sxtw x0, w23
add x0, x0, 8
add x0, x25, x0, lsl 8
str w24, [x0, 8]
b .L383
.L384:
mov w0, w23
bl zftl_flash_exit_slc_mode
b .L383
.L385:
ldr x0, [x0, 1144]
ldrb w4, [x0, 7]
cmp w4, 1
bne .L390
ldrb w4, [x0, 12]
cmp w4, 2
bne .L390
add x23, x23, 8
mov w4, 38
add x23, x25, x23, lsl 8
str w4, [x23, 8]
.L390:
add x4, x20, :lo12:.LANCHOR0
add x19, x25, x19, lsl 8
ldrb w4, [x4, 1168]
str w4, [x19, 2056]
str w3, [x19, 2052]
str w2, [x19, 2052]
str w1, [x19, 2052]
ldrb w0, [x0, 12]
cmp w0, 3
bne .L391
cbz w24, .L391
str w24, [x19, 2056]
.L391:
add x20, x20, :lo12:.LANCHOR0
ldrb w0, [x20, 1169]
str w0, [x19, 2056]
str w28, [x19, 2052]
str w27, [x19, 2052]
str w26, [x19, 2052]
b .L408
.size flash_start_plane_read, .-flash_start_plane_read
.align 2
.global flash_set_interface_mode
.type flash_set_interface_mode, %function
flash_set_interface_mode:
stp x29, x30, [sp, -80]!
add x29, sp, 0
str x25, [sp, 64]
adrp x25, .LANCHOR0
add x25, x25, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x19, x20, [sp, 16]
mov w21, w0
add x22, x25, 1216
mov x20, x25
stp x23, x24, [sp, 48]
mov x24, 0
.L422:
lsl x0, x24, 3
ldr x19, [x25, 1056]
ldrb w23, [x0, x22]
cmp w23, 69
beq .L410
add w0, w23, 119
cmp w23, 44
and w1, w0, 255
cset w2, eq
cmp w1, 18
bhi .L423
mov x0, 32769
movk x0, 0x4, lsl 16
lsr x0, x0, x1
mvn x0, x0
.L411:
and w0, w0, 1
eor w0, w0, 1
orr w0, w2, w0
cbz w0, .L412
.L410:
ldrb w1, [x20, 1248]
cmp w21, 1
bne .L413
tbz x1, 0, .L412
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L414
adrp x0, .LC34
add x0, x0, :lo12:.LC34
bl printk
.L414:
add x0, x19, x24, lsl 8
mov w1, 239
cmp w23, 44
str w1, [x0, 2056]
mov w1, 137
ccmp w23, w1, 4, ne
mov w1, 1
bne .L415
.L446:
str w1, [x0, 2052]
mov w1, 5
.L445:
str w1, [x0, 2048]
.L420:
str wzr, [x0, 2048]
str wzr, [x0, 2048]
str wzr, [x0, 2048]
.L412:
add x24, x24, 1
cmp x24, 4
bne .L422
bl nandc_wait_flash_ready
ldr x25, [sp, 64]
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 80
ret
.L423:
mov x0, 1
b .L411
.L415:
cmp w23, 155
beq .L446
mov w2, 128
str w2, [x0, 2052]
b .L445
.L413:
tbz x1, 2, .L412
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L418
adrp x0, .LC35
add x0, x0, :lo12:.LC35
bl printk
.L418:
add x0, x19, x24, lsl 8
mov w1, 239
cmp w23, 44
str w1, [x0, 2056]
mov w1, 137
ccmp w23, w1, 4, ne
bne .L419
mov w1, 1
str w1, [x0, 2052]
mov w1, 35
b .L445
.L419:
cmp w23, 155
bne .L421
mov w1, 1
str w1, [x0, 2052]
mov w1, 37
b .L445
.L421:
mov w1, 128
str w1, [x0, 2052]
str wzr, [x0, 2048]
b .L420
.size flash_set_interface_mode, .-flash_set_interface_mode
.align 2
.type mt_auto_read_calibration_config, %function
mt_auto_read_calibration_config:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w20, w1
and w19, w0, 255
bl nandc_wait_flash_ready
adrp x1, .LANCHOR0+1056
ubfiz x0, x19, 8, 8
ldr x19, [x1, #:lo12:.LANCHOR0+1056]
add x19, x19, x0
mov w0, 239
str w0, [x19, 2056]
mov w0, 150
str w0, [x19, 2052]
mov x0, 1000
bl __const_udelay
str w20, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size mt_auto_read_calibration_config, .-mt_auto_read_calibration_config
.align 2
.global flash_reset
.type flash_reset, %function
flash_reset:
stp x29, x30, [sp, -16]!
adrp x1, .LANCHOR0+1056
ubfiz x0, x0, 8, 8
add x29, sp, 0
ldr x1, [x1, #:lo12:.LANCHOR0+1056]
add x0, x0, 2048
add x1, x1, x0
mov w0, 255
str w0, [x1, 8]
bl nandc_wait_flash_ready
ldp x29, x30, [sp], 16
ret
.size flash_reset, .-flash_reset
.align 2
.global flash_read_id
.type flash_read_id, %function
flash_read_id:
stp x29, x30, [sp, -48]!
add x29, sp, 0
str x21, [sp, 32]
and w21, w0, 255
adrp x0, .LANCHOR0+1056
stp x19, x20, [sp, 16]
mov x19, x1
ldr x20, [x0, #:lo12:.LANCHOR0+1056]
mov w0, w21
bl flash_reset
mov w0, w21
bl nandc_cs
ubfiz x0, x21, 8, 8
add x20, x20, x0
mov w0, 144
str w0, [x20, 2056]
mov x0, 1000
str wzr, [x20, 2052]
bl __const_udelay
ldr w0, [x20, 2048]
strb w0, [x19]
ldr w0, [x20, 2048]
strb w0, [x19, 1]
ldr w0, [x20, 2048]
strb w0, [x19, 2]
ldr w0, [x20, 2048]
strb w0, [x19, 3]
ldr w0, [x20, 2048]
strb w0, [x19, 4]
ldr w0, [x20, 2048]
strb w0, [x19, 5]
ldr w0, [x20, 2048]
strb w0, [x19, 6]
ldr w0, [x20, 2048]
strb w0, [x19, 7]
bl nandc_de_cs.constprop.35
ldrb w2, [x19]
sub w0, w2, #1
and w0, w0, 255
cmp w0, 253
bhi .L451
ldrb w7, [x19, 5]
adrp x0, .LC36
ldrb w6, [x19, 4]
add w1, w21, 1
ldrb w5, [x19, 3]
add x0, x0, :lo12:.LC36
ldrb w4, [x19, 2]
ldrb w3, [x19, 1]
bl printk
.L451:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size flash_read_id, .-flash_read_id
.align 2
.global flash_read_spare
.type flash_read_spare, %function
flash_read_spare:
stp x29, x30, [sp, -32]!
ubfiz x0, x0, 8, 8
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x2
adrp x2, .LANCHOR2+17
ldrb w3, [x2, #:lo12:.LANCHOR2+17]
adrp x2, .LANCHOR0+1056
ldr x19, [x2, #:lo12:.LANCHOR0+1056]
lsl w3, w3, 9
add x19, x19, x0
and w0, w1, 255
str wzr, [x19, 2056]
str w3, [x19, 2052]
lsr w3, w3, 8
str w3, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w1, 8
str w0, [x19, 2052]
lsr w1, w1, 16
str w1, [x19, 2052]
mov w0, 48
str w0, [x19, 2056]
bl nandc_wait_flash_ready
ldr w0, [x19, 2048]
strb w0, [x20]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size flash_read_spare, .-flash_read_spare
.align 2
.global flash_read_otp_data
.type flash_read_otp_data, %function
flash_read_otp_data:
stp x29, x30, [sp, -48]!
and w4, w0, 255
adrp x0, .LANCHOR0+1056
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w20, w1
ldr x19, [x0, #:lo12:.LANCHOR0+1056]
mov w0, w4
stp x21, x22, [sp, 32]
mov x22, x2
bl nandc_cs
ubfiz x4, x4, 8, 8
add x19, x19, x4
mov w0, 239
mov w21, 144
str w0, [x19, 2056]
mov x0, 250
str w21, [x19, 2052]
bl __const_udelay
mov w0, 1
str w0, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
bl nandc_wait_flash_ready
mov w0, 238
str w0, [x19, 2056]
str w21, [x19, 2052]
mov w1, w20
adrp x0, .LC37
add x0, x0, :lo12:.LC37
ldr w2, [x19, 2048]
ldr w3, [x19, 2048]
ldr w4, [x19, 2048]
bl printk
bl nandc_wait_flash_ready
str wzr, [x19, 2056]
str wzr, [x19, 2052]
and w0, w20, 255
str wzr, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w20, 8
str w0, [x19, 2052]
lsr w20, w20, 16
str w20, [x19, 2052]
mov w0, 48
str w0, [x19, 2056]
bl nandc_wait_flash_ready
mov x0, 0
.L457:
ldr w1, [x19, 2048]
strb w1, [x22, x0]
add x0, x0, 1
cmp x0, 16384
bne .L457
mov w0, 239
str w0, [x19, 2056]
mov w0, 144
str w0, [x19, 2052]
mov x0, 250
bl __const_udelay
str wzr, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
bl nandc_de_cs.constprop.35
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size flash_read_otp_data, .-flash_read_otp_data
.align 2
.global sandisk_prog_test_bad_block
.type sandisk_prog_test_bad_block, %function
sandisk_prog_test_bad_block:
stp x29, x30, [sp, -48]!
and x2, x0, 255
mov x0, x2
add x2, x2, 8
add x29, sp, 0
stp x21, x22, [sp, 32]
mov w22, w1
adrp x1, .LANCHOR0+1056
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR2
ldr x19, [x1, #:lo12:.LANCHOR0+1056]
add x1, x20, :lo12:.LANCHOR2
ldrb w1, [x1, 37]
add x2, x19, x2, lsl 8
cbz w1, .L461
.L476:
ubfiz x0, x0, 8, 8
str w1, [x2, 8]
add x19, x19, x0
mov w0, 128
str w0, [x19, 2056]
and w0, w22, 255
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w22, 8
str w0, [x19, 2052]
lsr w0, w22, 16
str w0, [x19, 2052]
mov w0, 16
str w0, [x19, 2056]
bl nandc_wait_flash_ready
mov w0, 112
str w0, [x19, 2056]
mov x0, 1000
bl __const_udelay
ldr w2, [x19, 2048]
cmp w2, 255
bne .L463
ldr w2, [x19, 2048]
.L463:
mov w0, 5
ands w21, w2, w0
beq .L464
ldr w0, [x20, #:lo12:.LANCHOR2]
tbz x0, 12, .L464
adrp x0, .LC38
mov w1, w22
add x0, x0, :lo12:.LC38
bl printk
.L464:
add x20, x20, :lo12:.LANCHOR2
ldrb w0, [x20, 38]
cbz w0, .L460
str w0, [x19, 2056]
.L460:
mov w0, w21
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L461:
mov w1, 162
b .L476
.size sandisk_prog_test_bad_block, .-sandisk_prog_test_bad_block
.align 2
.global nandc_rdy_status
.type nandc_rdy_status, %function
nandc_rdy_status:
adrp x0, .LANCHOR0+1056
sub sp, sp, #16
ldr x0, [x0, #:lo12:.LANCHOR0+1056]
ldr w0, [x0]
str w0, [sp, 8]
ldr w0, [sp, 8]
add sp, sp, 16
ubfx x0, x0, 9, 1
ret
.size nandc_rdy_status, .-nandc_rdy_status
.align 2
.global nandc_bch_sel
.type nandc_bch_sel, %function
nandc_bch_sel:
sub sp, sp, #16
str wzr, [sp, 8]
ldr w1, [sp, 8]
orr w1, w1, 1
str w1, [sp, 8]
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
ldrb w2, [x1, 1028]
strb w0, [x1, 1249]
cmp w2, 9
bne .L480
ldr x1, [x1, 1056]
cmp w0, 70
ldr w2, [sp, 8]
str w2, [x1, 16]
beq .L486
cmp w0, 60
beq .L487
cmp w0, 40
cset w0, eq
add w0, w0, 1
.L481:
str wzr, [sp]
ldr w2, [sp]
bfi w2, w0, 25, 3
str w2, [sp]
ldr w0, [sp]
orr w0, w0, 1
str w0, [sp]
ldr w0, [sp]
str w0, [x1, 32]
.L479:
add sp, sp, 16
ret
.L486:
mov w0, 0
b .L481
.L487:
mov w0, 3
b .L481
.L480:
ldr x2, [x1, 1056]
mov w3, 16
ldr w1, [sp, 8]
cmp w0, w3
str w1, [x2, 8]
str wzr, [sp]
ldr w1, [sp]
bfi w1, w3, 8, 8
str w1, [sp]
ldr w1, [sp]
and w1, w1, -262145
str w1, [sp]
bne .L483
.L490:
ldr w0, [sp]
and w0, w0, -17
b .L491
.L483:
cmp w0, 24
bne .L485
ldr w0, [sp]
orr w0, w0, 16
.L491:
str w0, [sp]
b .L484
.L485:
ldr w1, [sp]
cmp w0, 40
orr w1, w1, 262144
str w1, [sp]
ldr w1, [sp]
orr w1, w1, 16
str w1, [sp]
beq .L490
.L484:
ldr w0, [sp]
orr w0, w0, 1
str w0, [sp]
ldr w0, [sp]
str w0, [x2, 12]
b .L479
.size nandc_bch_sel, .-nandc_bch_sel
.align 2
.global zftl_flash_resume
.type zftl_flash_resume, %function
zftl_flash_resume:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x0, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
ldrb w1, [x0, 1028]
ldr w2, [x0, 1064]
cmp w1, 9
ldr x1, [x0, 1056]
str w2, [x1]
ldr x1, [x0, 1056]
ldr w2, [x0, 1068]
str w2, [x1, 4]
ldr w2, [x0, 1072]
ldr x1, [x0, 1056]
bne .L493
str w2, [x1, 16]
ldr w2, [x0, 1076]
str w2, [x1, 32]
ldr w2, [x0, 1080]
str w2, [x1, 80]
ldr w2, [x0, 1084]
str w2, [x1, 84]
ldr w2, [x0, 1088]
str w2, [x1, 520]
ldr w0, [x0, 1092]
str w0, [x1, 8]
.L495:
add x0, x20, :lo12:.LANCHOR0
mov x19, 0
add x23, x0, 1216
add x21, x0, 1208
mov w24, 2
.L494:
lsl x0, x19, 3
ldrb w0, [x0, x23]
sub w0, w0, #1
and w0, w0, 255
cmp w0, 253
bhi .L496
and w22, w19, 255
mov w0, w22
bl flash_reset
strb w24, [x19, x21]
mov w0, w22
bl zftl_flash_enter_slc_mode
.L496:
add x19, x19, 1
cmp x19, 4
bne .L494
add x20, x20, :lo12:.LANCHOR0
ldrb w0, [x20, 1192]
cbz w0, .L497
mov w0, 1
bl nandc_set_if_mode
mov w0, w19
bl flash_set_interface_mode
mov w0, w19
bl nandc_set_if_mode
ldr w0, [x20, 1080]
lsr w0, w0, 8
bl nandc_set_ddr_para
.L497:
adrp x0, .LANCHOR2+28
ldrb w0, [x0, #:lo12:.LANCHOR2+28]
bl nandc_bch_sel
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L493:
str w2, [x1, 8]
ldr w2, [x0, 1076]
str w2, [x1, 12]
ldr w2, [x0, 1080]
str w2, [x1, 304]
ldr w2, [x0, 1084]
str w2, [x1, 308]
ldr w2, [x0, 1088]
str w2, [x1, 336]
ldr w0, [x0, 1092]
str w0, [x1, 344]
b .L495
.size zftl_flash_resume, .-zftl_flash_resume
.align 2
.global rk_nandc_flash_ready
.type rk_nandc_flash_ready, %function
rk_nandc_flash_ready:
stp x29, x30, [sp, -16]!
mov w1, 1
add x29, sp, 0
bl nandc_irq_disable
ldp x29, x30, [sp], 16
ret
.size rk_nandc_flash_ready, .-rk_nandc_flash_ready
.align 2
.global nandc_iqr_wait_flash_ready
.type nandc_iqr_wait_flash_ready, %function
nandc_iqr_wait_flash_ready:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldr x0, [x19, 1056]
bl rk_nandc_rb_irq_flag_init
ldrb w1, [x19, 1028]
ldr x0, [x19, 1056]
cmp w1, 9
bne .L506
ldr w1, [x0, 292]
orr w1, w1, 2
str w1, [x0, 292]
ldr w1, [x0, 288]
orr w1, w1, 2
str w1, [x0, 288]
.L507:
ldr w1, [x0]
tbnz x1, 9, .L508
bl wait_for_nand_flash_ready
.L505:
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L506:
ldr w1, [x0, 368]
orr w1, w1, 2
str w1, [x0, 368]
ldr w1, [x0, 364]
orr w1, w1, 2
str w1, [x0, 364]
b .L507
.L508:
mov w1, 1
bl nandc_irq_disable
b .L505
.size nandc_iqr_wait_flash_ready, .-nandc_iqr_wait_flash_ready
.align 2
.global flash_erase_duplane_block
.type flash_erase_duplane_block, %function
flash_erase_duplane_block:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w19, w0, 255
adrp x20, .LANCHOR0
add x0, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov w22, w2
stp x25, x26, [sp, 64]
mov w21, w3
stp x23, x24, [sp, 48]
and w25, w1, 255
ldrb w0, [x0, 1153]
cmp w0, w19
bhi .L512
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1096
mov w2, 695
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L512:
add x0, x20, :lo12:.LANCHOR0
ldrb w1, [x0, 1153]
cmp w1, w19
bls .L521
add x19, x0, w19, sxtw
ldr x26, [x0, 1056]
adrp x0, .LANCHOR2
ldrb w23, [x19, 1196]
ldr w0, [x0, #:lo12:.LANCHOR2]
and x19, x23, 255
add x24, x19, 8
add x24, x26, x24, lsl 8
tbz x0, 4, .L514
adrp x0, .LC39
mov w3, w21
mov w2, w22
mov w1, w23
add x0, x0, :lo12:.LC39
bl printk
.L514:
bl nandc_wait_flash_ready
mov w0, w23
bl nandc_cs
mov w0, w23
cbnz w25, .L515
bl zftl_flash_enter_slc_mode
.L516:
add x19, x26, x19, lsl 8
mov w0, 96
str w0, [x19, 2056]
and w0, w22, 255
str w0, [x19, 2052]
lsr w0, w22, 8
str w0, [x19, 2052]
lsr w0, w22, 16
str w0, [x19, 2052]
add x0, x20, :lo12:.LANCHOR0
ldrb w0, [x0, 1204]
cbz w0, .L517
lsr w0, w22, 24
str w0, [x19, 2052]
.L517:
add x0, x20, :lo12:.LANCHOR0
ldrb w0, [x0, 1250]
cbnz w0, .L522
mov w0, 208
str w0, [x19, 2056]
mov w23, 5
bl nandc_wait_flash_ready
mov x0, x24
bl flash_read_status
and w23, w0, w23
.L518:
mov w0, 96
add x20, x20, :lo12:.LANCHOR0
str w0, [x19, 2056]
and w0, w21, 255
str w0, [x19, 2052]
lsr w0, w21, 8
str w0, [x19, 2052]
lsr w0, w21, 16
str w0, [x19, 2052]
ldrb w0, [x20, 1204]
cbz w0, .L519
lsr w3, w21, 24
str w3, [x19, 2052]
.L519:
mov w0, 208
str w0, [x19, 2056]
mov w19, 5
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
mov x0, x24
bl flash_read_status
mov w2, w0
bl nandc_de_cs.constprop.35
and w19, w2, w19
orr w19, w19, w23
cbz w19, .L520
adrp x0, .LC40
mov w1, w22
add x0, x0, :lo12:.LC40
bl printk
.L520:
mov w0, w19
.L511:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L515:
bl zftl_flash_exit_slc_mode
b .L516
.L522:
mov w23, 0
b .L518
.L521:
mov w0, -1
b .L511
.size flash_erase_duplane_block, .-flash_erase_duplane_block
.align 2
.global flash_erase_block_en
.type flash_erase_block_en, %function
flash_erase_block_en:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x23, x24, [sp, 48]
mov w23, w2
stp x21, x22, [sp, 32]
and w22, w0, 255
adrp x0, .LANCHOR0
add x2, x0, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
mov w19, 24
stp x25, x26, [sp, 64]
and w25, w1, 255
str x27, [sp, 80]
mov x24, x0
ldrb w1, [x2, 1205]
sub w1, w19, w1
mov w19, 1
lsl w19, w19, w1
ldrb w1, [x2, 1153]
sub w19, w19, #1
and w19, w19, w23
cmp w1, w22
bhi .L537
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1128
mov w2, 757
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L537:
add x0, x24, :lo12:.LANCHOR0
ldrb w1, [x0, 1153]
cmp w1, w22
bls .L544
add x1, x0, w22, sxtw
ldr x27, [x0, 1056]
adrp x0, .LANCHOR2
ldrb w21, [x1, 1196]
ldr w0, [x0, #:lo12:.LANCHOR2]
and x20, x21, 255
add x26, x20, 8
add x26, x27, x26, lsl 8
tbz x0, 4, .L539
adrp x0, .LC41
mov w3, w25
mov w2, w23
mov w1, w21
add x0, x0, :lo12:.LC41
bl printk
.L539:
bl nandc_wait_flash_ready
mov w0, w21
bl nandc_cs
mov w0, w21
cbnz w25, .L540
bl zftl_flash_enter_slc_mode
.L541:
add x0, x27, x20, lsl 8
mov w1, 96
str w1, [x0, 2056]
and w1, w19, 255
str w1, [x0, 2052]
lsr w1, w19, 8
str w1, [x0, 2052]
lsr w1, w19, 16
str w1, [x0, 2052]
add x1, x24, :lo12:.LANCHOR0
ldrb w1, [x1, 1204]
cbz w1, .L542
lsr w19, w19, 24
str w19, [x0, 2052]
.L542:
mov w1, 208
str w1, [x0, 2056]
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
mov x0, x26
bl flash_read_status
mov w3, w0
bl nandc_de_cs.constprop.35
mov w0, 5
ands w3, w3, w0
beq .L543
add x0, x24, :lo12:.LANCHOR0
mov w1, w22
ldrh w2, [x0, 2]
adrp x0, .LC42
add x0, x0, :lo12:.LC42
udiv w2, w23, w2
bl printk
mov w3, -1
.L543:
mov w0, w3
.L536:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L540:
bl zftl_flash_exit_slc_mode
b .L541
.L544:
mov w0, -1
b .L536
.size flash_erase_block_en, .-flash_erase_block_en
.align 2
.global flash_erase_block
.type flash_erase_block, %function
flash_erase_block:
stp x29, x30, [sp, -16]!
mov w2, w1
mov w1, 0
add x29, sp, 0
bl flash_erase_block_en
ldp x29, x30, [sp], 16
ret
.size flash_erase_block, .-flash_erase_block
.align 2
.global flash_erase_all
.type flash_erase_all, %function
flash_erase_all:
stp x29, x30, [sp, -80]!
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
stp x23, x24, [sp, 48]
add x20, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
add x23, x20, 1024
str x25, [sp, 64]
mov x24, x20
mov w19, 0
ldrb w1, [x0, 21]
ldrh w21, [x0, 22]
mul w21, w21, w1
and w21, w21, 65535
.L558:
ldrb w0, [x20, 1153]
cmp w0, w19
bhi .L561
mov w1, 0
adrp x0, .LC43
add x0, x0, :lo12:.LC43
bl printk
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldr x25, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L561:
add x0, x23, w19, sxtw
mov w22, 0
ldrb w25, [x0, 172]
.L559:
cmp w21, w22, uxth
bhi .L560
add w19, w19, 1
and w19, w19, 65535
b .L558
.L560:
ldrh w1, [x24, 2]
mov w0, w25
mul w1, w1, w22
add w22, w22, 1
bl flash_erase_block
b .L559
.size flash_erase_all, .-flash_erase_all
.align 2
.global rk_nandc_flash_xfer_completed
.type rk_nandc_flash_xfer_completed, %function
rk_nandc_flash_xfer_completed:
stp x29, x30, [sp, -16]!
mov w1, 0
add x29, sp, 0
bl nandc_irq_disable
ldp x29, x30, [sp], 16
ret
.size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
.align 2
.global nandc_xfer_start
.type nandc_xfer_start, %function
nandc_xfer_start:
stp x29, x30, [sp, -80]!
and w1, w1, 255
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
str x21, [sp, 32]
and w21, w0, 255
mov x0, x2
add x2, x20, :lo12:.LANCHOR0
and w6, w21, 1
ldrb w4, [x2, 1028]
cmp w4, 9
add w4, w1, 1
bne .L566
str wzr, [x29, 56]
mov w5, 1
ubfx x4, x4, 1, 6
ldr w1, [x29, 56]
bfi w1, w6, 1, 1
str w1, [x29, 56]
ldr w1, [x29, 56]
orr w1, w1, 8
str w1, [x29, 56]
ldr w1, [x29, 56]
bfi w1, w5, 5, 2
str w1, [x29, 56]
ldr w1, [x29, 56]
orr w1, w1, 536870912
str w1, [x29, 56]
ldr w1, [x29, 56]
orr w1, w1, 1024
str w1, [x29, 56]
ldr w1, [x29, 56]
and w1, w1, -17
str w1, [x29, 56]
ldr w1, [x29, 56]
bfi w1, w4, 22, 6
str w1, [x29, 56]
ldr w1, [x29, 56]
orr w1, w1, 128
str w1, [x29, 56]
ldrb w1, [x2, 1251]
cbz w1, .L567
ldrb w1, [x2, 1252]
cbz w1, .L567
ldr w1, [x29, 56]
orr w1, w1, 512
str w1, [x29, 56]
.L567:
ldr w1, [x29, 56]
add x20, x20, :lo12:.LANCHOR0
mov w2, w21
ubfx x1, x1, 22, 6
str x3, [x20, 1272]
lsl w1, w1, 10
str x0, [x20, 1264]
bl rknand_dma_map_single
str w0, [x20, 1280]
ldr w1, [x29, 56]
mov w2, w21
ldr x0, [x20, 1272]
ubfx x1, x1, 22, 6
lsl w1, w1, 2
bl rknand_dma_map_single
str w0, [x20, 1284]
mov w1, 1
str w1, [x20, 1288]
ldr x1, [x20, 1056]
cmp w21, 0
ldr w2, [x20, 1280]
str w2, [x1, 52]
mov w2, 16
str w0, [x1, 56]
ldr w0, [x1, 48]
str w0, [x29, 64]
ldr w0, [x29, 64]
bfi w0, w2, 9, 5
str w0, [x29, 64]
mov w2, 2
ldr w0, [x29, 64]
orr w0, w0, 448
str w0, [x29, 64]
ldr w0, [x29, 64]
bfi w0, w2, 3, 3
str w0, [x29, 64]
cset w2, eq
ldr w0, [x29, 64]
orr w0, w0, 4
str w0, [x29, 64]
ldr w0, [x29, 64]
bfi w0, w2, 1, 1
str w0, [x29, 64]
ldrh w2, [x20, 1296]
ldr w0, [x29, 64]
orr w0, w0, 1
str w0, [x29, 64]
ldr w0, [x29, 64]
bfi w0, w2, 16, 11
str w0, [x29, 64]
ldr w0, [x29, 64]
str w0, [x1, 48]
ldr w0, [x29, 56]
str w0, [x1, 16]
ldr w0, [x29, 56]
orr w0, w0, 4
str w0, [x29, 56]
ldr w0, [x29, 56]
str w0, [x1, 16]
.L565:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 80
ret
.L566:
ldr x5, [x2, 1056]
mov w7, 16
ubfx x4, x4, 1, 6
ldr w5, [x5, 12]
str w5, [x29, 72]
ldr w5, [x29, 72]
bfi w5, w7, 8, 8
str w5, [x29, 72]
ldr w5, [x29, 72]
and w5, w5, -9
str w5, [x29, 72]
ldr w5, [x29, 72]
and w5, w5, -225
str w5, [x29, 72]
str wzr, [x29, 56]
ldr w5, [x29, 56]
bfi w5, w6, 1, 1
str w5, [x29, 56]
mov w6, 1
ldr w5, [x29, 56]
orr w5, w5, 8
str w5, [x29, 56]
ldr w5, [x29, 56]
bfi w5, w6, 5, 2
str w5, [x29, 56]
ldr w5, [x29, 56]
orr w5, w5, 536870912
str w5, [x29, 56]
ldr w5, [x29, 56]
orr w5, w5, 1024
str w5, [x29, 56]
ldr w5, [x29, 56]
and w5, w5, -17
str w5, [x29, 56]
ldr w5, [x29, 56]
bfi w5, w4, 22, 6
str w5, [x29, 56]
cbz w21, .L569
ldrb w4, [x2, 1249]
lsr w1, w1, 1
mov w6, 64
mov x5, 0
cmp w4, 25
mov w4, 128
csel w6, w6, w4, cc
mov w4, 0
.L571:
add w7, w6, w4
cmp w1, w5
bgt .L572
.L573:
add x20, x20, :lo12:.LANCHOR0
mov w2, w21
ldr x1, [x20, 1256]
str x1, [x20, 1272]
ldr w1, [x29, 56]
str x0, [x20, 1264]
ubfx x1, x1, 22, 6
lsl w1, w1, 10
bl rknand_dma_map_single
ldr w1, [x29, 56]
mov w2, w21
str w0, [x20, 1280]
ldr x0, [x20, 1272]
ubfx x1, x1, 22, 6
lsl w1, w1, 7
bl rknand_dma_map_single
str w0, [x20, 1284]
mov w0, 1
str w0, [x20, 1288]
ldr x0, [x20, 1056]
mov w2, 16
ldr w1, [x20, 1280]
cmp w21, 0
str w1, [x0, 20]
ldr w1, [x20, 1284]
str w1, [x0, 24]
str wzr, [x29, 64]
ldr w1, [x29, 64]
bfi w1, w2, 9, 5
str w1, [x29, 64]
mov w2, 2
ldr w1, [x29, 64]
orr w1, w1, 448
str w1, [x29, 64]
ldr w1, [x29, 64]
bfi w1, w2, 3, 3
str w1, [x29, 64]
cset w2, eq
ldr w1, [x29, 64]
orr w1, w1, 4
str w1, [x29, 64]
ldr w1, [x29, 64]
bfi w1, w2, 1, 1
str w1, [x29, 64]
ldr w1, [x29, 64]
orr w1, w1, 1
str w1, [x29, 64]
ldr w1, [x29, 64]
str w1, [x0, 16]
ldr w1, [x29, 72]
str w1, [x0, 12]
ldr w1, [x29, 56]
str w1, [x0, 8]
ldr w1, [x29, 56]
orr w1, w1, 4
str w1, [x29, 56]
ldr w1, [x29, 56]
str w1, [x0, 8]
b .L565
.L572:
ldr x8, [x2, 1256]
and x4, x4, 4294967292
ldr w9, [x3, x5, lsl 2]
add x5, x5, 1
str w9, [x8, x4]
mov w4, w7
b .L571
.L569:
ldr x1, [x2, 1256]
str w6, [x1]
b .L573
.size nandc_xfer_start, .-nandc_xfer_start
.align 2
.global nandc_set_seed
.type nandc_set_seed, %function
nandc_set_seed:
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
and x0, x0, 127
add x1, x1, 1152
ldrh w1, [x1, x0, lsl 1]
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
orr w2, w1, -1073741824
ldrb w3, [x0, 1252]
cmp w3, 0
csel w1, w2, w1, ne
ldrb w2, [x0, 1028]
ldr x0, [x0, 1056]
cmp w2, 9
bne .L584
str w1, [x0, 520]
ret
.L584:
str w1, [x0, 336]
ret
.size nandc_set_seed, .-nandc_set_seed
.align 2
.global zftl_flash_de_init
.type zftl_flash_de_init, %function
zftl_flash_de_init:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
bl nandc_wait_flash_ready
adrp x4, .LANCHOR0
mov x19, x4
ldrb w1, [x4, #:lo12:.LANCHOR0]
cbz w1, .L589
add x0, x4, :lo12:.LANCHOR0
ldrb w1, [x0, 1154]
cbnz w1, .L589
ldrb w0, [x0, 1028]
cmp w0, 9
beq .L589
mov w0, 0
bl zftl_flash_exit_slc_mode
.L589:
add x20, x19, :lo12:.LANCHOR0
mov w0, 0
bl hynix_reconfig_rr_para
ldrb w0, [x20, 1192]
cbz w0, .L590
ldrb w0, [x20, 1248]
tbz x0, 0, .L590
mov w0, 1
bl flash_set_interface_mode
mov w0, 1
bl nandc_set_if_mode
strb wzr, [x20, 1192]
.L590:
add x19, x19, :lo12:.LANCHOR0
ldrb w0, [x19, 1252]
cbz w0, .L591
mov w0, 0
strb wzr, [x19, 1252]
bl nandc_set_seed
mov w0, 1
strb w0, [x19, 1252]
.L591:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size zftl_flash_de_init, .-zftl_flash_de_init
.align 2
.global nandc_randomizer_enable
.type nandc_randomizer_enable, %function
nandc_randomizer_enable:
adrp x1, .LANCHOR0+1252
strb w0, [x1, #:lo12:.LANCHOR0+1252]
ret
.size nandc_randomizer_enable, .-nandc_randomizer_enable
.align 2
.global nandc_get_chip_if
.type nandc_get_chip_if, %function
nandc_get_chip_if:
adrp x1, .LANCHOR0+1056
ubfiz x0, x0, 8, 8
add x0, x0, 2048
ldr x1, [x1, #:lo12:.LANCHOR0+1056]
add x0, x1, x0
ret
.size nandc_get_chip_if, .-nandc_get_chip_if
.align 2
.global buf_reinit
.type buf_reinit, %function
buf_reinit:
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
add x1, x1, 1304
mov w2, 0
.L611:
and w3, w2, 255
strb wzr, [x1, 2]
add w4, w3, 1
strb w3, [x1, 1]
strb w4, [x1]
add w2, w2, 1
str xzr, [x1, 16]
cmp w2, 32
add x1, x1, 64
bne .L611
add x0, x0, :lo12:.LANCHOR0
mov w1, -1
strb wzr, [x0, 3352]
strb w1, [x0, 3288]
strb w2, [x0, 3353]
ret
.size buf_reinit, .-buf_reinit
.align 2
.global buf_add_tail
.type buf_add_tail, %function
buf_add_tail:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
str x21, [sp, 32]
mov w0, -1
strb w0, [x1]
mov x20, x1
ldrb w1, [x19]
cmp w1, 255
bne .L619
ldrb w0, [x20, 1]
cmp w0, 255
bne .L615
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1408
mov w2, 74
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L615:
ldrb w0, [x20, 1]
strb w0, [x19]
.L613:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L619:
adrp x0, .LANCHOR0
add x2, x0, :lo12:.LANCHOR0
add x2, x2, 1304
mov x19, x0
.L620:
sbfiz x0, x1, 6, 32
mov w21, w1
ldrb w1, [x2, x0]
cmp w1, 255
bne .L620
ldrb w0, [x20, 1]
cmp w0, 255
bne .L617
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1408
mov w2, 81
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L617:
add x0, x19, :lo12:.LANCHOR0
sbfiz x21, x21, 6, 32
add x0, x0, 1304
ldrb w1, [x20, 1]
strb w1, [x0, x21]
b .L613
.size buf_add_tail, .-buf_add_tail
.align 2
.type queue_read_cmd, %function
queue_read_cmd:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
mov x19, x0
mov w0, 48
ldr w1, [x19, 40]
bl flash_start_page_read
strb wzr, [x19, 59]
mov w0, 1
strb w0, [x19, 58]
mov w0, -1
strb w0, [x19]
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
mov x1, x19
add x0, x0, 3354
bl buf_add_tail
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size queue_read_cmd, .-queue_read_cmd
.align 2
.global zbuf_free
.type zbuf_free, %function
zbuf_free:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
adrp x19, .LANCHOR0
ldrb w1, [x0, 2]
and w1, w1, 8
strb w1, [x0, 2]
cbz w1, .L625
ldr w1, [x0, 36]
cmn w1, #1
beq .L625
mov x1, x0
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 3352
bl buf_add_tail
.L626:
add x19, x19, :lo12:.LANCHOR0
ldrb w0, [x19, 3353]
add w0, w0, 1
strb w0, [x19, 3353]
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L625:
add x1, x19, :lo12:.LANCHOR0
ldrb w2, [x1, 3352]
strb w2, [x0]
ldrb w0, [x0, 1]
strb w0, [x1, 3352]
b .L626
.size zbuf_free, .-zbuf_free
.align 2
.global buf_alloc
.type buf_alloc, %function
buf_alloc:
stp x29, x30, [sp, -48]!
adrp x1, .LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
add x20, x1, :lo12:.LANCHOR0
str x21, [sp, 32]
and w21, w0, 255
mov x19, x1
ldrb w0, [x20, 3353]
cbz w0, .L635
.L638:
add x1, x19, :lo12:.LANCHOR0
add x0, x1, 1304
ldrb w3, [x1, 3352]
ubfiz x2, x3, 6, 8
add x0, x0, x2
cbz w21, .L636
.L637:
add x1, x19, :lo12:.LANCHOR0
sbfiz x3, x3, 6, 32
add x4, x1, 1304
add x2, x4, x3
ldrb w5, [x4, x3]
strb w5, [x1, 3352]
ldrb w5, [x1, 3353]
strh wzr, [x2, 50]
sub w5, w5, #1
strb w5, [x1, 3353]
mov w1, 1
strb w1, [x2, 2]
mov w1, -1
strb wzr, [x2, 56]
strb w1, [x4, x3]
mov w1, -1
strb wzr, [x2, 57]
str xzr, [x2, 16]
str w1, [x2, 36]
b .L634
.L635:
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1424
mov w2, 121
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
ldrb w0, [x20, 3353]
cbnz w0, .L638
.L640:
mov x0, 0
.L634:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L636:
ldrb w1, [x1, 3353]
cmp w1, 1
bne .L637
b .L640
.size buf_alloc, .-buf_alloc
.align 2
.global buf_remove_buf
.type buf_remove_buf, %function
buf_remove_buf:
ldrb w4, [x1, 1]
ldrb w2, [x0]
cmp w4, w2
bne .L648
ldrb w1, [x1]
strb w1, [x0]
.L652:
mov w0, 1
ret
.L649:
mov w3, w2
sbfiz x2, x2, 6, 32
ldrb w2, [x0, x2]
cmp w4, w2
bne .L650
sbfiz x3, x3, 6, 32
ldrb w2, [x1]
strb w2, [x0, x3]
mov w0, -1
strb w0, [x1]
b .L652
.L648:
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
add x0, x0, 1304
.L650:
cmp w2, 255
bne .L649
mov w0, 0
ret
.size buf_remove_buf, .-buf_remove_buf
.align 2
.global buf_remove_free
.type buf_remove_free, %function
buf_remove_free:
stp x29, x30, [sp, -32]!
adrp x5, .LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x0
add x0, x5, :lo12:.LANCHOR0
mov x19, x5
ldrb w0, [x0, 3353]
cbnz w0, .L654
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1440
mov w2, 172
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L654:
add x19, x19, :lo12:.LANCHOR0
ldrb w0, [x19, 3353]
cbz w0, .L653
mov x1, x20
add x0, x19, 3352
bl buf_remove_buf
cmp w0, 1
bne .L653
ldrb w0, [x19, 3353]
sub w0, w0, #1
strb w0, [x19, 3353]
ldrb w0, [x20, 2]
orr w0, w0, 1
strb w0, [x20, 2]
.L653:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size buf_remove_free, .-buf_remove_free
.align 2
.global dump_buf_info
.type dump_buf_info, %function
dump_buf_info:
sub sp, sp, #64
adrp x0, .LC44
add x0, x0, :lo12:.LC44
stp x29, x30, [sp, 16]
add x29, sp, 16
stp x19, x20, [sp, 32]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
str x21, [sp, 48]
add x20, x19, 1304
adrp x21, .LC50
add x19, x19, 3352
add x21, x21, :lo12:.LC50
ldrb w1, [x19, 2]
bl printk
ldrb w1, [x19, 3]
adrp x0, .LC45
add x0, x0, :lo12:.LC45
bl printk
ldrb w1, [x19, 4]
adrp x0, .LC46
add x0, x0, :lo12:.LC46
bl printk
ldrb w1, [x19, 5]
adrp x0, .LC47
add x0, x0, :lo12:.LC47
bl printk
ldrb w1, [x19]
adrp x0, .LC48
add x0, x0, :lo12:.LC48
bl printk
ldrb w1, [x19, 1]
adrp x0, .LC49
add x0, x0, :lo12:.LC49
bl printk
.L660:
ldr w0, [x20, 40]
add x20, x20, 64
ldrb w5, [x20, -6]
ldrh w4, [x20, -14]
ldrb w3, [x20, -62]
ldrb w2, [x20, -64]
ldrb w1, [x20, -63]
str w0, [sp]
mov x0, x21
ldr w7, [x20, -28]
ldr w6, [x20, -12]
bl printk
cmp x20, x19
bne .L660
ldp x19, x20, [sp, 32]
ldp x29, x30, [sp, 16]
ldr x21, [sp, 48]
add sp, sp, 64
ret
.size dump_buf_info, .-dump_buf_info
.align 2
.global flash_check_bad_block
.type flash_check_bad_block, %function
flash_check_bad_block:
adrp x3, .LANCHOR2
add x3, x3, :lo12:.LANCHOR2
and w5, w0, 255
lsr w4, w1, 5
ldrb w0, [x3, 21]
ldrh w2, [x3, 22]
mul w2, w2, w0
mov x0, 912
and w2, w2, 65535
add w2, w2, 31
asr w2, w2, 5
lsl w2, w2, 2
umaddl x0, w2, w5, x0
adrp x2, .LANCHOR0+1048
ldr x2, [x2, #:lo12:.LANCHOR0+1048]
add x0, x0, w4, uxtw 2
ldr w0, [x2, x0]
lsr w0, w0, w1
and w0, w0, 1
ret
.size flash_check_bad_block, .-flash_check_bad_block
.align 2
.global flash_mask_bad_block
.type flash_mask_bad_block, %function
flash_mask_bad_block:
stp x29, x30, [sp, -48]!
mov w2, w1
add x29, sp, 0
str x21, [sp, 32]
and w21, w0, 255
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
stp x19, x20, [sp, 16]
mov w20, w1
ldrh w19, [x0, 22]
ldrb w1, [x0, 21]
adrp x0, .LC51
add x0, x0, :lo12:.LC51
mul w19, w19, w1
mov w1, w21
bl printk
and w19, w19, 65535
lsr w0, w20, 5
add w1, w19, 31
mov x19, 912
asr w1, w1, 5
mov w2, 1
lsl w1, w1, 2
umaddl x1, w1, w21, x19
add x1, x1, w0, uxtw 2
adrp x0, .LANCHOR0+1048
ldr x3, [x0, #:lo12:.LANCHOR0+1048]
lsl w0, w2, w20
ldr w2, [x3, x1]
orr w2, w2, w0
str w2, [x3, x1]
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size flash_mask_bad_block, .-flash_mask_bad_block
.align 2
.global str2hex
.type str2hex, %function
str2hex:
ldrb w1, [x0]
cmp w1, 48
bne .L667
ldrb w1, [x0, 1]
add x2, x0, 2
and w1, w1, -33
and w1, w1, 255
cmp w1, 88
csel x0, x2, x0, eq
.L667:
mov x2, x0
ldrb w1, [x2], 1
and w1, w1, -33
and w1, w1, 255
cmp w1, 88
mov w1, 0
csel x0, x2, x0, eq
.L669:
ldrb w2, [x0]
cbnz w2, .L674
.L666:
mov w0, w1
ret
.L674:
sub w3, w2, #48
and w3, w3, 255
cmp w3, 9
bhi .L670
add w1, w2, w1, lsl 4
sub w1, w1, #48
.L671:
add x0, x0, 1
b .L669
.L670:
sub w3, w2, #97
and w3, w3, 255
cmp w3, 5
bhi .L672
add w1, w2, w1, lsl 4
sub w1, w1, #87
b .L671
.L672:
sub w3, w2, #65
and w3, w3, 255
cmp w3, 5
bhi .L666
add w1, w2, w1, lsl 4
sub w1, w1, #55
b .L671
.size str2hex, .-str2hex
.align 2
.global zftl_proc_debug_init
.type zftl_proc_debug_init, %function
zftl_proc_debug_init:
stp x29, x30, [sp, -16]!
adrp x3, .LANCHOR1
add x3, x3, :lo12:.LANCHOR1
mov x4, 0
add x29, sp, 0
add x3, x3, 1456
mov x2, 0
mov w1, 292
adrp x0, .LC52
add x0, x0, :lo12:.LC52
bl proc_create_data
ldp x29, x30, [sp], 16
ret
.size zftl_proc_debug_init, .-zftl_proc_debug_init
.align 2
.global ftl_print_info_to_buf
.type ftl_print_info_to_buf, %function
ftl_print_info_to_buf:
stp x29, x30, [sp, -48]!
adrp x2, .LC1
adrp x1, .LC2
add x2, x2, :lo12:.LC1
add x29, sp, 0
stp x19, x20, [sp, 16]
add x1, x1, :lo12:.LC2
stp x21, x22, [sp, 32]
mov x20, x0
bl sprintf
add x19, x20, w0, sxtw
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
adrp x22, .LANCHOR0
add x21, x22, :lo12:.LANCHOR0
adrp x1, .LC53
add x1, x1, :lo12:.LC53
ldrb w7, [x0, 14]
ldrb w6, [x0, 13]
ldrb w5, [x0, 12]
ldrb w4, [x0, 11]
ldrb w3, [x0, 10]
ldrb w2, [x0, 9]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr w2, [x21, 1032]
mov x0, x19
adrp x1, .LC54
add x1, x1, :lo12:.LC54
lsr w2, w2, 11
bl sprintf
ldr w2, [x21, 3360]
add x19, x19, w0, sxtw
mov x0, x19
adrp x1, .LC55
add x1, x1, :lo12:.LC55
lsr w2, w2, 11
bl sprintf
add x19, x19, w0, sxtw
adrp x1, .LC56
mov x0, x19
add x1, x1, :lo12:.LC56
bl strcpy
add x19, x19, 10
ldr w2, [x21, 3364]
mov x0, x19
adrp x1, .LC57
add x1, x1, :lo12:.LC57
bl sprintf
add x19, x19, w0, sxtw
ldr w2, [x21, 1032]
mov x0, x19
adrp x1, .LC58
add x1, x1, :lo12:.LC58
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC59
add x1, x1, :lo12:.LC59
ldr w2, [x0, 524]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC60
add x1, x1, :lo12:.LC60
ldr w2, [x0, 528]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3368]
mov x0, x19
adrp x1, .LC61
add x1, x1, :lo12:.LC61
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3370]
mov x0, x19
adrp x1, .LC62
add x1, x1, :lo12:.LC62
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3372]
mov x0, x19
adrp x1, .LC63
add x1, x1, :lo12:.LC63
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3374]
mov x0, x19
adrp x1, .LC64
add x1, x1, :lo12:.LC64
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3376]
mov x0, x19
adrp x1, .LC65
add x1, x1, :lo12:.LC65
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3378]
mov x0, x19
adrp x1, .LC66
add x1, x1, :lo12:.LC66
bl sprintf
add x19, x19, w0, sxtw
ldrb w4, [x21, 3380]
mov x0, x19
ldrb w3, [x21, 3381]
adrp x1, .LC67
ldrb w2, [x21, 3353]
add x1, x1, :lo12:.LC67
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC68
add x1, x1, :lo12:.LC68
ldrh w3, [x0, 146]
ldrh w2, [x0, 148]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC69
add x1, x1, :lo12:.LC69
ldp w2, w0, [x0, 16]
add w2, w0, w2, lsr 11
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC70
add x1, x1, :lo12:.LC70
ldp w2, w0, [x0, 24]
add w2, w0, w2, lsr 11
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC71
add x1, x1, :lo12:.LC71
ldr w2, [x0, 64]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC72
add x1, x1, :lo12:.LC72
ldr w2, [x0, 68]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC73
add x1, x1, :lo12:.LC73
ldr w2, [x0, 12]
mov w0, 10
udiv w2, w2, w0
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC74
ldrb w2, [x22, #:lo12:.LANCHOR0]
add x1, x1, :lo12:.LC74
ldrh w4, [x0, 150]
ldr w3, [x0, 156]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC75
add x1, x1, :lo12:.LC75
ldr w2, [x0, 556]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC76
add x1, x1, :lo12:.LC76
ldr w2, [x0, 552]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC77
add x1, x1, :lo12:.LC77
ldr w2, [x0, 52]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC78
add x1, x1, :lo12:.LC78
ldr w2, [x0, 60]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC79
add x1, x1, :lo12:.LC79
ldr w2, [x0, 76]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC80
add x1, x1, :lo12:.LC80
ldr w2, [x0, 8]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC81
add x1, x1, :lo12:.LC81
ldrb w4, [x0, 25]
ldrh w3, [x0, 22]
ldrh w2, [x0, 16]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC82
add x1, x1, :lo12:.LC82
ldrb w4, [x0, 57]
ldrh w3, [x0, 54]
ldrh w2, [x0, 48]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC83
add x1, x1, :lo12:.LC83
ldrb w4, [x0, 89]
ldrh w3, [x0, 86]
ldrh w2, [x0, 80]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC84
add x1, x1, :lo12:.LC84
ldrh w6, [x0, 96]
ldrh w5, [x0, 92]
ldrh w4, [x0, 88]
ldrh w2, [x0, 74]
ldr w3, [x0, 84]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 3384]
adrp x1, .LC85
add x1, x1, :lo12:.LC85
ldrh w6, [x0, 98]
ldrh w5, [x0, 94]
ldrh w4, [x0, 90]
ldr w3, [x0, 80]
ldrh w2, [x0, 72]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldrh w2, [x21, 3392]
mov x0, x19
adrp x1, .LC86
add x1, x1, :lo12:.LC86
bl sprintf
add x19, x19, w0, sxtw
ldr w6, [x21, 3396]
mov x0, x19
ldrh w5, [x21, 3400]
adrp x1, .LC87
ldrh w4, [x21, 3402]
add x1, x1, :lo12:.LC87
ldrh w3, [x21, 3404]
ldrh w2, [x21, 3406]
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
adrp x1, .LC88
add x1, x1, :lo12:.LC88
ldrh w5, [x0, 590]
ldrh w4, [x0, 588]
ldrh w3, [x0, 586]
ldrh w2, [x0, 584]
mov x0, x19
bl sprintf
add x19, x19, w0, sxtw
ldr x0, [x21, 1128]
ldr x1, [x21, 3384]
add x5, x0, 512
mov x0, x19
ldp w2, w3, [x5, 24]
ldp w4, w6, [x5, 32]
ldr w5, [x1, 44]
adrp x1, .LC89
add x1, x1, :lo12:.LC89
bl sprintf
add x0, x19, w0, sxtw
sub w0, w0, w20
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size ftl_print_info_to_buf, .-ftl_print_info_to_buf
.align 2
.global zftl_proc_ftl_read
.type zftl_proc_ftl_read, %function
zftl_proc_ftl_read:
stp x29, x30, [sp, -16]!
add x29, sp, 0
bl ftl_print_info_to_buf
ldp x29, x30, [sp], 16
ret
.size zftl_proc_ftl_read, .-zftl_proc_ftl_read
.align 2
.global ftl_gc_write_buf
.type ftl_gc_write_buf, %function
ftl_gc_write_buf:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 2]
orr w1, w1, 2
strb w1, [x0, 2]
mov x1, x0
add x0, x19, 3408
bl buf_add_tail
ldrb w0, [x19, 3381]
add w0, w0, 1
and w0, w0, 255
strb w0, [x19, 3381]
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size ftl_gc_write_buf, .-ftl_gc_write_buf
.align 2
.global gc_hook
.type gc_hook, %function
gc_hook:
ret
.size gc_hook, .-gc_hook
.align 2
.global vpn_check
.type vpn_check, %function
vpn_check:
ret
.size vpn_check, .-vpn_check
.align 2
.global ftl_scan_all_data
.type ftl_scan_all_data, %function
ftl_scan_all_data:
ret
.size ftl_scan_all_data, .-ftl_scan_all_data
.align 2
.global gc_add_sblk
.type gc_add_sblk, %function
gc_add_sblk:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR2
stp x19, x20, [sp, 16]
and w19, w0, 65535
ldr w0, [x22, #:lo12:.LANCHOR2]
adrp x21, .LANCHOR0
stp x23, x24, [sp, 48]
and w24, w1, 65535
and w23, w2, 65535
tbz x0, 8, .L688
add x1, x21, :lo12:.LANCHOR0
uxtw x0, w19
ldr x2, [x1, 1104]
ldr x3, [x1, 1120]
ldrh w7, [x1, 3402]
add x2, x2, x0, lsl 2
ldrh w6, [x1, 3472]
mov w1, w19
ldrh w5, [x3, x0, lsl 1]
adrp x0, .LC90
ldrb w4, [x2, 2]
mov w3, w23
mov w2, w24
add x0, x0, :lo12:.LC90
ubfx x4, x4, 5, 3
bl printk
.L688:
add x0, x21, :lo12:.LANCHOR0
ldrh w0, [x0, 1096]
cmp w0, w19
bhi .L689
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1552
mov w2, 543
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L689:
add x1, x21, :lo12:.LANCHOR0
ldrh w0, [x1, 1096]
cmp w0, w19
bhi .L690
ldr w0, [x22, #:lo12:.LANCHOR2]
mov w20, 0
tbz x0, 10, .L687
adrp x0, .LC91
mov w3, w23
mov w2, w24
mov w1, w19
add x0, x0, :lo12:.LC91
bl printk
.L687:
mov w0, w20
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L690:
ldr x2, [x1, 1120]
uxtw x0, w19
ldrh w3, [x2, x0, lsl 1]
ldr x2, [x1, 1104]
add x0, x2, x0, lsl 2
ldrb w2, [x0, 2]
tst w2, 224
bne .L692
mov w20, 0
cbz w3, .L687
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1552
mov w2, 553
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L687
.L692:
ldrh w0, [x1, 3416]
cmp w0, w19
beq .L711
ldr x0, [x1, 1128]
ldrh w5, [x0, 48]
cmp w5, w19
beq .L711
ldrh w5, [x0, 16]
cmp w5, w19
beq .L711
ldrh w5, [x0, 80]
cmp w5, w19
beq .L711
ldrh w5, [x1, 3472]
add x1, x1, 3474
mov w4, 0
.L693:
cmp w4, w5
bcc .L694
cbnz w24, .L698
adrp x1, .LANCHOR3
add x1, x1, :lo12:.LANCHOR3
ldrh w6, [x1, 1280]
cmp w19, w6
beq .L711
add x1, x1, 1288
mov x4, 0
.L697:
ldrh w7, [x4, x1]
cmp w19, w7
bne .L696
ldr w0, [x22, #:lo12:.LANCHOR2]
mov w20, 0
tbz x0, 8, .L687
mov w5, w6
mov w4, w19
ubfx x2, x2, 5, 3
mov w1, w19
adrp x0, .LC92
add x0, x0, :lo12:.LC92
bl printk
b .L687
.L694:
ldrh w6, [x1], 2
cmp w6, w19
beq .L711
add w4, w4, 1
b .L693
.L696:
add x4, x4, 2
cmp x4, 16
bne .L697
ubfiz x20, x23, 7, 16
add x20, x20, 136
add x20, x0, x20
.L699:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 8, .L700
add x0, x21, :lo12:.LANCHOR0
mov w4, w3
mov w1, w19
ubfx x3, x2, 5, 3
mov w2, w24
ldrh w6, [x0, 3402]
adrp x0, .LC93
add x0, x0, :lo12:.LC93
bl printk
.L700:
mov x0, x20
add x1, x20, 128
mov w2, 65535
.L703:
ldrh w3, [x0]
cmp w3, w2
bne .L701
strh w19, [x0]
add x21, x21, :lo12:.LANCHOR0
cbz w24, .L702
ldr x1, [x21, 1128]
ldrh w0, [x1, 124]
add w0, w0, 1
strh w0, [x1, 124]
.L725:
mov w20, 1
b .L687
.L698:
add x20, x0, 392
b .L699
.L702:
ldr x0, [x21, 1128]
add x23, x0, w23, uxth 1
ldrh w0, [x23, 120]
add w0, w0, 1
strh w0, [x23, 120]
b .L725
.L701:
add x0, x0, 2
cmp x1, x0
bne .L703
b .L725
.L711:
mov w20, 0
b .L687
.size gc_add_sblk, .-gc_add_sblk
.align 2
.global gc_mark_bad_ppa
.type gc_mark_bad_ppa, %function
gc_mark_bad_ppa:
stp x29, x30, [sp, -64]!
adrp x1, .LANCHOR3
add x1, x1, :lo12:.LANCHOR3
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
stp x21, x22, [sp, 32]
add x21, x20, :lo12:.LANCHOR0
str x23, [sp, 48]
mov w19, 24
mov w23, 1
ldrb w4, [x21, 1205]
add x21, x21, 3416
ldrh w3, [x1, 1304]
sub w19, w19, w4
ldrb w1, [x1, 1306]
sub w19, w19, w3
lsr w2, w0, w3
mov w3, w0
lsl w19, w23, w19
sub w19, w19, #1
and w19, w19, w2
and w22, w2, 65535
mov w2, w22
adrp x0, .LC94
add x0, x0, :lo12:.LC94
udiv w19, w19, w1
ldr w1, [x21, 2200]
and w19, w19, 65535
bl printk
mov w1, w23
mov w2, 0
mov w0, w19
bl gc_add_sblk
ldr w0, [x21, 2200]
mov w1, 0
.L727:
cmp w1, w0
bcc .L729
cmp w0, 5
bhi .L728
add x20, x20, :lo12:.LANCHOR0
add w1, w0, 1
str w1, [x20, 5616]
add x20, x20, w0, uxtw 1
strh w22, [x20, 5620]
.L728:
mov w0, 0
ldr x23, [sp, 48]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.L729:
add x2, x21, w1, sxtw 1
ldrh w2, [x2, 2204]
cmp w2, w22
beq .L728
add w1, w1, 1
and w1, w1, 65535
b .L727
.size gc_mark_bad_ppa, .-gc_mark_bad_ppa
.align 2
.global gc_get_src_ppa_from_index
.type gc_get_src_ppa_from_index, %function
gc_get_src_ppa_from_index:
adrp x1, .LANCHOR3+1312
ubfiz x0, x0, 2, 16
ldr x1, [x1, #:lo12:.LANCHOR3+1312]
ldr w0, [x1, x0]
ret
.size gc_get_src_ppa_from_index, .-gc_get_src_ppa_from_index
.align 2
.global gc_write_completed
.type gc_write_completed, %function
gc_write_completed:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
stp x23, x24, [sp, 48]
add x24, x22, :lo12:.LANCHOR0
stp x25, x26, [sp, 64]
add x25, x24, 1304
stp x19, x20, [sp, 16]
.L733:
add x3, x22, :lo12:.LANCHOR0
ldrb w0, [x3, 3356]
cmp w0, 255
bne .L746
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L746:
sxtw x21, w0
add x1, x3, 1304
lsl x4, x21, 6
add x2, x1, x4
ldrb w0, [x1, x4]
ldr w1, [x2, 52]
strb w0, [x3, 3356]
ldrh w23, [x2, 48]
cbz w1, .L734
ldr w2, [x2, 40]
mov w0, 1
str w2, [x3, 5612]
strh w0, [x3, 5610]
adrp x0, .LC95
add x0, x0, :lo12:.LC95
bl printk
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1568
mov w2, 956
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L734:
adrp x20, .LANCHOR3
add x1, x20, :lo12:.LANCHOR3
ldrb w0, [x1, 1320]
cmp w0, 3
bne .L735
ldrb w0, [x24, 1212]
cbnz w0, .L735
ldr x0, [x24, 1128]
ldrb w1, [x1, 1321]
ldrb w0, [x0, 89]
mov w19, w0
cmp w1, w0
bhi .L747
cmp w0, 2
mov w0, 2
csel w19, w19, w0, ls
.L736:
add w19, w19, w19, lsl 1
.L737:
add x0, x20, :lo12:.LANCHOR3
and x1, x23, 65535
ldr x2, [x0, 1328]
add x0, x25, x21, lsl 6
ldrb w0, [x0, 1]
ldrb w1, [x2, x1]
cmp w1, w0
beq .L738
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1568
mov w2, 976
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L738:
add x0, x25, x21, lsl 6
ldrb w0, [x0, 61]
cmp w0, 3
beq .L739
add x0, x20, :lo12:.LANCHOR3
ldrb w1, [x0, 1320]
cmp w1, 3
bne .L739
ldrb w1, [x0, 1336]
cbnz w1, .L739
ldrb w1, [x24, 1212]
cbnz w1, .L739
ldrb w1, [x24, 1213]
cbnz w1, .L739
ldrb w1, [x0, 1322]
cbz w1, .L740
ldrb w0, [x0, 1323]
cbnz w0, .L739
.L740:
add x20, x20, :lo12:.LANCHOR3
mov w0, 0
ldr x2, [x20, 1328]
.L741:
cmp w19, w0, uxth
bls .L733
add w1, w23, w0
add w0, w0, 1
ldrb w1, [x2, x1]
add x1, x25, x1, lsl 6
strb wzr, [x1, 61]
b .L741
.L747:
mov w19, 1
b .L736
.L735:
add x0, x20, :lo12:.LANCHOR3
ldrb w1, [x0, 1322]
cbz w1, .L748
ldrb w0, [x0, 1323]
cmp w0, 0
cset w19, ne
add w19, w19, 1
b .L737
.L748:
mov w19, 1
b .L737
.L739:
add x20, x20, :lo12:.LANCHOR3
strh w23, [x24, 5524]
mov w21, 0
mov w26, -1
.L742:
cmp w19, w21, uxth
bls .L733
ldr x2, [x20, 1328]
add w1, w23, w21
add w21, w21, 1
ldrb w0, [x2, x1]
strb w26, [x2, x1]
sbfiz x1, x0, 6, 32
ubfiz x0, x0, 6, 8
add x1, x25, x1
add x0, x25, x0
strb wzr, [x1, 61]
bl zbuf_free
ldrb w0, [x24, 3423]
sub w0, w0, #1
strb w0, [x24, 3423]
b .L742
.size gc_write_completed, .-gc_write_completed
.align 2
.global gc_get_src_blk
.type gc_get_src_blk, %function
gc_get_src_blk:
adrp x2, .LANCHOR0
add x0, x2, :lo12:.LANCHOR0
ldr x1, [x0, 1128]
ldrh w0, [x1, 124]
cbz w0, .L761
add x1, x1, 392
mov w3, 1
.L762:
add x4, x1, 128
mov w5, 65535
.L766:
ldrh w0, [x1]
cmp w0, w5
beq .L764
mov w4, -1
strh w4, [x1]
add x2, x2, :lo12:.LANCHOR0
cbz w3, .L765
ldr x2, [x2, 1128]
ldrh w1, [x2, 124]
sub w1, w1, #1
strh w1, [x2, 124]
ret
.L761:
adrp x0, .LANCHOR3+1337
ldrb w0, [x0, #:lo12:.LANCHOR3+1337]
add x3, x1, w0, sxtw 1
ldrh w3, [x3, 120]
cbz w3, .L767
ubfiz x0, x0, 7, 8
mov w3, 0
add x0, x0, 136
add x1, x1, x0
b .L762
.L765:
adrp x1, .LANCHOR3+1337
ldr x2, [x2, 1128]
ldrb w1, [x1, #:lo12:.LANCHOR3+1337]
add x1, x2, x1, lsl 1
ldrh w2, [x1, 120]
sub w2, w2, #1
strh w2, [x1, 120]
ret
.L764:
add x1, x1, 2
cmp x1, x4
bne .L766
ret
.L767:
mov w0, 65535
ret
.size gc_get_src_blk, .-gc_get_src_blk
.align 2
.global gc_free_temp_buf
.type gc_free_temp_buf, %function
gc_free_temp_buf:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ldrb w1, [x0, 3423]
cbz w1, .L776
ldrb w1, [x0, 3353]
cmp w1, 1
bhi .L776
adrp x21, .LANCHOR3
add x2, x21, :lo12:.LANCHOR3
ldrh w20, [x0, 5524]
add x0, x0, 1304
ldrb w4, [x2, 1321]
add w3, w20, 24
ldrh w1, [x2, 1338]
mul w1, w1, w4
ldr x4, [x2, 1328]
cmp w1, w3
csel w1, w1, w3, ls
.L771:
cmp w20, w1
bcc .L774
.L776:
mov w0, 0
b .L769
.L774:
uxtw x22, w20
ldrb w2, [x4, x22]
cmp w2, 255
beq .L772
sbfiz x3, x2, 6, 32
add x3, x0, x3
ldrb w3, [x3, 61]
cbnz w3, .L772
ubfiz x2, x2, 6, 8
add x0, x0, x2
bl zbuf_free
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L773
add x0, x21, :lo12:.LANCHOR3
mov w1, w20
ldr x0, [x0, 1328]
ldrb w2, [x0, x22]
adrp x0, .LC96
add x0, x0, :lo12:.LC96
bl printk
.L773:
add x21, x21, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
mov w1, -1
ldr x0, [x21, 1328]
strb w1, [x0, x22]
ldrb w0, [x19, 3423]
sub w0, w0, #1
strb w0, [x19, 3423]
mov w0, 1
.L769:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L772:
add w20, w20, 1
b .L771
.size gc_free_temp_buf, .-gc_free_temp_buf
.align 2
.global get_ink_scaned_blk
.type get_ink_scaned_blk, %function
get_ink_scaned_blk:
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
add x0, x1, 3416
ldrh w2, [x1, 5528]
cbz w2, .L786
sub w2, w2, #1
strh w2, [x1, 5528]
add x0, x0, w2, sxtw 1
ldrh w0, [x0, 2114]
ret
.L786:
mov w0, 65535
ret
.size get_ink_scaned_blk, .-get_ink_scaned_blk
.align 2
.global print_gc_debug_info
.type print_gc_debug_info, %function
print_gc_debug_info:
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
add x29, sp, 0
ldrh w6, [x0, 3392]
ldrb w5, [x0, 3423]
ldrb w4, [x0, 3353]
ldrh w3, [x0, 5522]
ldrh w2, [x0, 3418]
ldrh w1, [x0, 3416]
adrp x0, .LC97
add x0, x0, :lo12:.LC97
bl printk
ldp x29, x30, [sp], 16
ret
.size print_gc_debug_info, .-print_gc_debug_info
.align 2
.global _list_pop_index_node
.type _list_pop_index_node, %function
_list_pop_index_node:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
ldr x20, [x0]
cbz x20, .L795
adrp x3, .LANCHOR0+1040
and w1, w1, 65535
mov w4, 65535
mov w5, 6
ldr x19, [x3, #:lo12:.LANCHOR0+1040]
.L791:
cbnz w1, .L792
.L794:
sub x19, x20, x19
mov x1, -6148914691236517206
asr x19, x19, 1
movk x1, 0xaaab, lsl 0
mul x19, x19, x1
and w19, w19, 65535
mov w1, w19
bl _list_remove_node
mov w0, -1
strh w0, [x20]
strh w0, [x20, 2]
mov w0, w19
.L789:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L792:
ldrh w3, [x20]
cmp w3, w4
beq .L794
sub w1, w1, #1
umaddl x20, w3, w5, x19
and w1, w1, 65535
b .L791
.L795:
mov w0, 65535
b .L789
.size _list_pop_index_node, .-_list_pop_index_node
.align 2
.global _list_get_gc_head_node
.type _list_get_gc_head_node, %function
_list_get_gc_head_node:
ldr x0, [x0]
and w1, w1, 65535
cbz x0, .L802
adrp x2, .LANCHOR0+1040
mov w3, 65535
mov w4, 6
ldr x2, [x2, #:lo12:.LANCHOR0+1040]
.L799:
cbz w1, .L800
ldrh w0, [x0]
cmp w0, w3
bne .L801
ret
.L801:
sub w1, w1, #1
umaddl x0, w0, w4, x2
and w1, w1, 65535
b .L799
.L802:
mov w0, 65535
ret
.L800:
sub x0, x0, x2
mov x1, -6148914691236517206
asr x0, x0, 1
movk x1, 0xaaab, lsl 0
mul x0, x0, x1
and w0, w0, 65535
ret
.size _list_get_gc_head_node, .-_list_get_gc_head_node
.align 2
.type zftl_get_gc_node.part.10, %function
zftl_get_gc_node.part.10:
stp x29, x30, [sp, -16]!
mov w1, w0
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x29, sp, 0
add x0, x0, 1344
bl _list_get_gc_head_node
ldp x29, x30, [sp], 16
ret
.size zftl_get_gc_node.part.10, .-zftl_get_gc_node.part.10
.align 2
.global gc_search_src_blk
.type gc_search_src_blk, %function
gc_search_src_blk:
stp x29, x30, [sp, -160]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w22, w0, 255
and w0, w1, 255
stp x19, x20, [sp, 16]
str w0, [x29, 144]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
and w20, w2, 255
stp x27, x28, [sp, 80]
ldr x2, [x0, 1128]
add x1, x2, w22, sxtw 1
ldrh w21, [x1, 120]
cbz w21, .L807
mov w0, w21
.L806:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 160
ret
.L807:
ldrh w1, [x0, 3472]
cmp w1, 1
bhi .L809
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
strh wzr, [x0, 1352]
strh wzr, [x0, 1354]
strh wzr, [x0, 1356]
.L809:
cbnz w22, .L810
adrp x25, .LANCHOR3
adrp x27, .LC98
add x26, x25, :lo12:.LANCHOR3
add x27, x27, :lo12:.LC98
add x0, x26, 1360
mov w23, 0
mov w24, 0
str x0, [x29, 136]
.L811:
add w28, w20, 1
cmp w24, w28
bge .L816
ldrh w6, [x26, 1354]
ldr x0, [x29, 136]
mov w1, w6
bl _list_get_gc_head_node
add w2, w6, 1
and w2, w2, 65535
strh w2, [x26, 1354]
and w1, w0, 65535
mov w0, 65535
mov w4, w1
cmp w1, w0
beq .L812
adrp x0, .LANCHOR2
uxtw x6, w1
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L813
add x0, x19, :lo12:.LANCHOR0
str x6, [x29, 128]
str w1, [x29, 120]
ldr x0, [x0, 1120]
ldrh w3, [x0, x6, lsl 1]
mov x0, x27
bl printk
ldr w4, [x29, 120]
ldr x6, [x29, 128]
.L813:
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 1120]
ldrh w0, [x0, 3402]
ldrh w1, [x1, x6, lsl 1]
cmp w1, w0
bcs .L814
mov w2, 0
mov w1, 0
mov w0, w4
bl gc_add_sblk
cbz w0, .L815
add w5, w23, 1
and w23, w5, 65535
cmp w23, w20
bcc .L815
.L816:
ldr x0, [x29, 144]
tbz x0, 1, .L818
add x6, x19, :lo12:.LANCHOR0
ldrh w0, [x6, 3378]
cmp w0, 32
bls .L818
adrp x27, .LANCHOR3
add x25, x27, :lo12:.LANCHOR3
add x0, x25, 1368
mov x26, x6
str x0, [x29, 136]
mov w24, 0
and w0, w20, 65535
str w0, [x29, 128]
.L819:
cmp w28, w24
ble .L823
ldrh w7, [x25, 1356]
ldr x0, [x29, 136]
mov w1, w7
bl _list_get_gc_head_node
add w7, w7, 1
strh w7, [x25, 1356]
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L820
ldr x2, [x26, 1120]
ubfiz x1, x1, 1, 16
ldrh w2, [x2, x1]
ldrh w1, [x26, 3400]
cmp w2, w1
bcs .L820
mov w2, 0
mov w1, 0
bl gc_add_sblk
cbz w0, .L822
add w5, w23, 1
ldr w0, [x29, 128]
and w23, w5, 65535
cmp w23, w0
bcc .L822
.L823:
cmp w23, w20
bcs .L825
add x27, x27, :lo12:.LANCHOR3
add x2, x19, :lo12:.LANCHOR0
ldrh w0, [x27, 1338]
ldrb w4, [x27, 1321]
ldrh w1, [x27, 1376]
ldrh w3, [x2, 3400]
mul w0, w0, w4
sub w0, w0, w1, lsr 2
cmp w3, w0
bge .L818
add w1, w3, w1, lsr 3
strh w1, [x2, 3400]
.L818:
ldr x0, [x29, 144]
tbz x0, 0, .L826
and w25, w20, 65535
cmp w23, w25
bcs .L826
adrp x24, .LANCHOR3
add x27, x24, :lo12:.LANCHOR3
mov w26, 65535
.L831:
ldrh w6, [x27, 1352]
mov w0, w6
bl zftl_get_gc_node.part.10
add w6, w6, 1
strh w6, [x27, 1352]
cmp w26, w0, uxth
beq .L827
mov w2, 0
mov w1, 0
bl gc_add_sblk
cbz w0, .L828
add w5, w23, 1
and w23, w5, 65535
cmp w25, w23
bhi .L828
.L829:
add x24, x24, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
ldrh w0, [x24, 1376]
ldrh w1, [x19, 3402]
cmp w1, w0, lsr 1
bls .L826
sub w0, w1, w0, lsr 3
b .L917
.L814:
add x25, x25, :lo12:.LANCHOR3
strh wzr, [x25, 1354]
b .L816
.L812:
strh wzr, [x26, 1354]
b .L816
.L815:
add w24, w24, 1
and w24, w24, 65535
b .L811
.L820:
strh wzr, [x25, 1356]
b .L823
.L822:
add w3, w24, 1
and w24, w3, 65535
b .L819
.L825:
add x1, x19, :lo12:.LANCHOR0
add x27, x27, :lo12:.LANCHOR3
ldrh w2, [x1, 3400]
ldrh w0, [x27, 1376]
cmp w2, w0
bls .L818
sub w0, w2, w0, lsr 3
strh w0, [x1, 3400]
b .L818
.L827:
strh wzr, [x27, 1352]
.L830:
cmp w23, w25
bcs .L829
add x19, x19, :lo12:.LANCHOR0
add x24, x24, :lo12:.LANCHOR3
ldrh w1, [x19, 3402]
ldrh w0, [x24, 1376]
cmp w1, w0
bcs .L826
add w0, w1, w0, lsr 3
.L917:
strh w0, [x19, 3402]
.L826:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L862
ldr w2, [x29, 144]
adrp x0, .LC99
mov w4, w20
mov w3, w23
mov w1, w22
add x0, x0, :lo12:.LC99
bl printk
.L862:
mov w0, w23
b .L806
.L828:
add w21, w21, 1
and w21, w21, 65535
cmp w25, w21
bhi .L831
b .L830
.L810:
adrp x24, .LANCHOR3
add x0, x24, :lo12:.LANCHOR3
cmp w20, 1
ldrb w25, [x0, 1321]
ldrh w0, [x0, 1338]
mul w25, w25, w0
and w25, w25, 65535
bne .L832
cbz w1, .L832
ldrh w2, [x2, 80]
mov w0, 65535
cmp w2, w0
beq .L865
add x0, x19, :lo12:.LANCHOR0
ldrh w0, [x0, 5522]
sub w25, w25, w0
and w25, w25, 65535
.L865:
mov w20, 8
.L832:
ldr w0, [x29, 144]
add x2, x19, :lo12:.LANCHOR0
add x3, x24, :lo12:.LANCHOR3
and w0, w0, 1
str w0, [x29, 136]
ldr x0, [x29, 144]
strh wzr, [x2, 5608]
strh wzr, [x3, 1378]
tbz x0, 0, .L866
ldrh w0, [x2, 3374]
ldrh w3, [x3, 1380]
cmp w0, w3, lsr 2
bhi .L834
ldrh w2, [x2, 3376]
cmp w2, w0
bcs .L867
.L834:
cmp w1, 1
bls .L836
.L838:
mov w23, 0
.L837:
add x27, x24, :lo12:.LANCHOR3
add x8, x19, :lo12:.LANCHOR0
and w0, w20, 65535
mov w28, 0
mov w26, 64
str w0, [x29, 128]
.L841:
ldrh w6, [x27, 1352]
str x8, [x29, 112]
mov w0, w6
bl zftl_get_gc_node.part.10
and w4, w0, 65535
str w4, [x29, 120]
mov w1, 65535
cmp w4, w1
beq .L839
add w6, w6, 1
mov w2, w22
strh w6, [x27, 1352]
mov w1, 0
bl gc_add_sblk
ldr x8, [x29, 112]
cbz w0, .L840
ldr w4, [x29, 120]
add w5, w23, 1
ldr x0, [x8, 1120]
and w23, w5, 65535
ubfiz x4, x4, 1, 16
ldrh w0, [x0, x4]
add w3, w28, w0
ldr w0, [x29, 128]
and w28, w3, 65535
cmp w23, w0
bcs .L835
cmp w25, w28
bcc .L835
ldrh w0, [x8, 3376]
ldrh w1, [x8, 3374]
cmp w0, w1, lsl 1
ble .L840
.L835:
add x0, x19, :lo12:.LANCHOR0
add x2, x24, :lo12:.LANCHOR3
ldrh w1, [x0, 3376]
ldrh w2, [x2, 1380]
cmp w1, w2, lsr 2
bhi .L863
ldrh w0, [x0, 3374]
add w0, w0, 8
cmp w1, w0
ble .L833
.L863:
cmp w25, w28
bls .L833
add x27, x24, :lo12:.LANCHOR3
mov w26, 64
add x0, x27, 1360
str x0, [x29, 128]
add x0, x19, :lo12:.LANCHOR0
str x0, [x29, 120]
and w0, w20, 65535
str w0, [x29, 112]
.L844:
ldrh w6, [x27, 1354]
ldr x0, [x29, 128]
mov w1, w6
bl _list_get_gc_head_node
and w7, w0, 65535
str w7, [x29, 104]
mov w1, 65535
cmp w7, w1
beq .L842
add w6, w6, 1
mov w2, w22
strh w6, [x27, 1354]
mov w1, 0
bl gc_add_sblk
cbz w0, .L843
ldr x0, [x29, 120]
add w5, w23, 1
ldr w7, [x29, 104]
and w23, w5, 65535
ldr x0, [x0, 1120]
ubfiz x7, x7, 1, 16
ldrh w0, [x0, x7]
add w3, w28, w0
ldr w0, [x29, 112]
and w28, w3, 65535
cmp w23, w0
bcs .L833
cmp w25, w28
bcs .L843
.L833:
ldr x0, [x29, 144]
tbz x0, 1, .L845
add x7, x19, :lo12:.LANCHOR0
ldrh w0, [x7, 3378]
cmp w0, 32
bls .L845
cmp w28, w25
bcs .L845
add x27, x24, :lo12:.LANCHOR3
mov w26, 64
add x0, x27, 1368
str x0, [x29, 128]
and w0, w20, 65535
str w0, [x29, 120]
.L851:
ldrh w8, [x27, 1356]
ldr x0, [x29, 128]
mov w1, w8
str x7, [x29, 112]
bl _list_get_gc_head_node
and w4, w0, 65535
mov w1, 65535
cmp w4, w1
beq .L846
add w8, w8, 1
strh w8, [x27, 1356]
cmp w20, 1
ldr x7, [x29, 112]
bne .L847
ldrb w1, [x27, 1321]
ldrh w2, [x27, 1338]
mul w2, w1, w2
ldrh w1, [x27, 1376]
sub w1, w2, w1, lsr 3
strh w1, [x7, 3406]
.L847:
ldr x1, [x7, 1120]
ubfiz x4, x4, 1, 16
stp x4, x7, [x29, 104]
ldrh w2, [x1, x4]
ldrh w1, [x7, 3406]
cmp w2, w1
bcs .L848
mov w2, w22
mov w1, 0
bl gc_add_sblk
ldr x7, [x29, 112]
cbz w0, .L849
ldr x0, [x7, 1120]
add w5, w23, 1
ldr x4, [x29, 104]
add w21, w21, 1
and w23, w5, 65535
and w21, w21, 65535
ldrh w0, [x0, x4]
add w3, w28, w0
ldr w0, [x29, 120]
and w28, w3, 65535
cmp w23, w0
bcs .L850
cmp w25, w28
bcs .L849
.L850:
cmp w23, w20
bcc .L852
cbnz w21, .L853
add x1, x19, :lo12:.LANCHOR0
add x0, x24, :lo12:.LANCHOR3
ldrh w1, [x1, 3378]
ldrh w0, [x0, 1382]
cmp w1, w0
bls .L853
.L852:
add x4, x24, :lo12:.LANCHOR3
add x6, x19, :lo12:.LANCHOR0
ldrh w2, [x4, 1376]
ldrh w0, [x4, 1338]
ldrb w4, [x4, 1321]
ldrh w1, [x6, 3406]
lsr w2, w2, 3
mul w0, w0, w4
sub w0, w0, w2
cmp w1, w0
bge .L845
add w1, w1, w2
strh w1, [x6, 3406]
.L845:
ldr w0, [x29, 136]
cbz w0, .L826
and w27, w20, 65535
cmp w23, w27
bcs .L826
cmp w28, w25
bcs .L826
add x4, x24, :lo12:.LANCHOR3
add x7, x19, :lo12:.LANCHOR0
add x0, x4, 1360
mov w26, 64
str x0, [x29, 136]
.L861:
ldrh w6, [x4, 1354]
ldr x0, [x29, 136]
mov w1, w6
stp x7, x4, [x29, 120]
bl _list_get_gc_head_node
and w21, w0, 65535
mov w1, 65535
ldr x4, [x29, 128]
cmp w21, w1
beq .L855
ldr x7, [x29, 120]
ubfiz x21, x21, 1, 16
add w6, w6, 1
strh w6, [x4, 1354]
ldr x1, [x7, 1120]
ldrh w2, [x1, x21]
ldrh w1, [x7, 3404]
cmp w2, w1
bcs .L856
ldrh w2, [x4, 1380]
ldrh w1, [x7, 3376]
cmp w1, w2, lsr 1
bls .L857
.L856:
stp x7, x4, [x29, 120]
mov w2, w22
mov w1, 0
bl gc_add_sblk
ldp x7, x4, [x29, 120]
cbz w0, .L858
ldr x0, [x7, 1120]
add w5, w23, 1
and w23, w5, 65535
cmp w27, w23
ldrh w0, [x0, x21]
add w3, w28, w0
and w28, w3, 65535
bls .L859
cmp w25, w28
bcs .L858
.L860:
add x24, x24, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
ldrh w0, [x24, 1376]
ldrh w1, [x19, 3404]
cmp w1, w0, lsr 1
bls .L826
sub w0, w1, w0, lsr 3
strh w0, [x19, 3404]
b .L826
.L836:
add x5, x24, :lo12:.LANCHOR3
lsr w0, w0, 2
strh w0, [x5, 1352]
mov w0, 0
bl zftl_get_gc_node.part.10
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L838
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x3, [x2, 1120]
ldrh w2, [x5, 1376]
ldrh w1, [x3, x1]
cmp w1, w2, lsr 2
bcs .L838
mov w1, 1
mov w2, w22
strh w1, [x5, 1352]
mov w1, 0
bl gc_add_sblk
cmp w0, 0
cset w23, ne
b .L837
.L839:
strh wzr, [x27, 1352]
b .L835
.L840:
sub w26, w26, #1
ands w26, w26, 65535
bne .L841
b .L835
.L842:
cmp w6, 64
bls .L833
strh wzr, [x27, 1354]
b .L833
.L843:
sub w26, w26, #1
ands w26, w26, 65535
bne .L844
b .L833
.L866:
mov w28, 0
mov w23, 0
b .L833
.L848:
add x0, x24, :lo12:.LANCHOR3
strh wzr, [x0, 1356]
b .L850
.L846:
strh wzr, [x27, 1356]
b .L850
.L849:
sub w26, w26, #1
ands w26, w26, 65535
bne .L851
b .L850
.L853:
add x24, x24, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
ldrh w0, [x24, 1376]
ldrb w1, [x24, 1321]
ldrh w2, [x19, 3406]
mul w1, w1, w0
cmp w2, w1
ble .L826
sub w0, w2, w0, lsr 3
strh w0, [x19, 3406]
b .L826
.L855:
cmp w6, 64
bls .L857
strh wzr, [x4, 1354]
.L857:
cmp w23, w27
bcc .L860
.L859:
add x24, x24, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
ldrh w1, [x24, 1376]
ldrb w0, [x24, 1321]
ldrh w2, [x19, 3404]
mul w0, w0, w1
sub w0, w0, #32
cmp w2, w0
bge .L826
add w1, w2, w1, lsr 3
strh w1, [x19, 3404]
b .L826
.L858:
sub w26, w26, #1
ands w26, w26, 65535
bne .L861
b .L857
.L867:
mov w28, 0
mov w23, 0
b .L835
.size gc_search_src_blk, .-gc_search_src_blk
.align 2
.global zftl_get_gc_node
.type zftl_get_gc_node, %function
zftl_get_gc_node:
stp x29, x30, [sp, -16]!
and w1, w1, 65535
and w0, w0, 65535
cmp w1, 5
add x29, sp, 0
bne .L919
mov w1, w0
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x0, x0, 1368
.L923:
bl _list_get_gc_head_node
b .L924
.L919:
cmp w1, 2
bne .L921
bl zftl_get_gc_node.part.10
.L924:
and w0, w0, 65535
ldp x29, x30, [sp], 16
ret
.L921:
mov w1, w0
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x0, x0, 1360
b .L923
.size zftl_get_gc_node, .-zftl_get_gc_node
.align 2
.global zftl_insert_free_list
.type zftl_insert_free_list, %function
zftl_insert_free_list:
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
and w1, w0, 65535
adrp x3, .LANCHOR3
add x3, x3, :lo12:.LANCHOR3
add x29, sp, 0
ldr x0, [x2, 1104]
add x0, x0, w1, uxth 2
ldrb w0, [x0, 2]
ands w0, w0, 24
bne .L926
add x2, x2, 3368
add x0, x3, 1384
.L930:
bl _insert_free_list
ldp x29, x30, [sp], 16
ret
.L926:
cmp w0, 16
bne .L928
add x2, x2, 3370
add x0, x3, 1392
b .L930
.L928:
add x2, x2, 3372
add x0, x3, 1400
b .L930
.size zftl_insert_free_list, .-zftl_insert_free_list
.align 2
.global zftl_insert_data_list
.type zftl_insert_data_list, %function
zftl_insert_data_list:
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
and w1, w0, 65535
add x29, sp, 0
ldr x0, [x2, 1104]
add x0, x0, w1, uxth 2
ldrb w3, [x0, 2]
and w3, w3, 224
cmp w3, 64
bne .L932
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3374
add x0, x0, 1344
.L936:
bl _insert_data_list
.L931:
ldp x29, x30, [sp], 16
ret
.L932:
cmp w3, 96
bne .L934
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3376
add x0, x0, 1360
b .L936
.L934:
cmp w3, 160
bne .L931
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3378
add x0, x0, 1368
b .L936
.size zftl_insert_data_list, .-zftl_insert_data_list
.align 2
.global zftl_gc_get_free_sblk
.type zftl_gc_get_free_sblk, %function
zftl_gc_get_free_sblk:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w22, w0, 65535
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x21, x19, :lo12:.LANCHOR0
str x23, [sp, 48]
and w23, w1, 65535
ldr x0, [x21, 1128]
ldrh w20, [x0, 588]
mov w0, 65535
cmp w20, w0
beq .L938
cbnz w22, .L938
mov w1, w20
adrp x0, .LC100
add x0, x0, :lo12:.LC100
bl printk
ldr x0, [x21, 1128]
mov w1, -1
strh w1, [x0, 588]
.L939:
mov w0, w20
ldr x23, [sp, 48]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.L938:
add x2, x19, :lo12:.LANCHOR0
adrp x21, .LANCHOR3
ldrh w0, [x2, 3370]
ldrh w1, [x2, 3372]
cmp w0, w1
bcc .L940
ldrh w2, [x2, 3368]
cmp w2, w0
bls .L941
cbz w1, .L941
.L940:
cbnz w22, .L942
lsr w1, w1, 2
.L943:
add x2, x19, :lo12:.LANCHOR0
add x0, x21, :lo12:.LANCHOR3
add x2, x2, 3372
add x0, x0, 1400
.L958:
bl _list_pop_index_node
and w20, w0, 65535
mov w0, 65535
cmp w20, w0
bne .L946
add x0, x19, :lo12:.LANCHOR0
add x21, x21, :lo12:.LANCHOR3
mov w2, w23
mov w1, w20
ldrh w5, [x0, 3372]
ldrh w4, [x0, 3368]
adrp x0, .LC101
ldr x3, [x21, 1384]
add x0, x0, :lo12:.LC101
bl printk
.L946:
cbz w22, .L939
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L939
add x19, x19, :lo12:.LANCHOR0
uxtw x3, w20
lsl x0, x3, 2
ldr x1, [x19, 1104]
ldr x6, [x19, 1120]
add x2, x1, x0
ldr w4, [x1, x0]
ldrh w6, [x6, x3, lsl 1]
ldrb w2, [x2, 2]
ldrh w5, [x1, x0]
ubfx x4, x4, 11, 8
mov w1, w20
adrp x0, .LC102
ubfx x3, x2, 3, 2
and w5, w5, 2047
ubfx x2, x2, 5, 3
add x0, x0, :lo12:.LC102
bl printk
b .L939
.L942:
mov w1, 7
mul w1, w0, w1
lsr w1, w1, 3
b .L943
.L941:
lsr w1, w0, 3
cmp w22, 0
add x2, x19, :lo12:.LANCHOR0
add x0, x21, :lo12:.LANCHOR3
csel w1, w1, wzr, ne
add x2, x2, 3370
add x0, x0, 1392
b .L958
.size zftl_gc_get_free_sblk, .-zftl_gc_get_free_sblk
.align 2
.global zftl_get_free_sblk
.type zftl_get_free_sblk, %function
zftl_get_free_sblk:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
stp x21, x22, [sp, 32]
and w21, w1, 65535
cmp w21, 5
bne .L960
add x2, x19, :lo12:.LANCHOR0
adrp x0, .LANCHOR3
ldrh w3, [x2, 3370]
ldrh w1, [x2, 3372]
cmp w3, w1
bcc .L961
ldrh w2, [x2, 3368]
cmp w2, w3
bls .L962
cbz w1, .L962
.L961:
add x2, x19, :lo12:.LANCHOR0
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3372
lsr w1, w1, 1
.L981:
add x0, x0, 1400
b .L980
.L962:
add x2, x19, :lo12:.LANCHOR0
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3370
add x0, x0, 1392
mov w1, 0
.L980:
bl _list_pop_index_node
and w20, w0, 65535
mov w0, 65535
cmp w20, w0
bne .L965
add x19, x19, :lo12:.LANCHOR0
adrp x0, .LANCHOR3+1384
mov w2, w21
mov w1, w20
ldr x3, [x0, #:lo12:.LANCHOR3+1384]
adrp x0, .LC101
ldrh w5, [x19, 3372]
add x0, x0, :lo12:.LC101
ldrh w4, [x19, 3368]
bl printk
b .L965
.L960:
add x22, x19, :lo12:.LANCHOR0
and w3, w0, 65535
ldr x0, [x22, 1128]
ldrh w20, [x0, 590]
mov w0, 65535
cmp w20, w0
beq .L964
cmp w21, 1
beq .L964
mov w1, w20
adrp x0, .LC103
add x0, x0, :lo12:.LC103
bl printk
ldr x0, [x22, 1128]
mov w1, -1
strh w1, [x0, 590]
.L965:
mov w0, w20
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L964:
add x1, x19, :lo12:.LANCHOR0
ldrh w0, [x1, 3368]
ldrh w2, [x1, 3372]
cmp w0, w2
bcc .L966
ldrh w1, [x1, 3370]
cmp w1, w0
bls .L967
cbz w2, .L967
.L966:
bl get_ink_scaned_blk
and w20, w0, 65535
mov w0, 65535
cmp w20, w0
bne .L965
cmp w21, 1
bne .L968
add x0, x19, :lo12:.LANCHOR0
ldrh w3, [x0, 3372]
lsr w3, w3, 1
.L968:
add x2, x19, :lo12:.LANCHOR0
adrp x0, .LANCHOR3
add x2, x2, 3372
mov w1, w3
add x0, x0, :lo12:.LANCHOR3
b .L981
.L967:
lsr w0, w0, 1
cmp w21, 1
csel w3, w0, w3, eq
add x2, x19, :lo12:.LANCHOR0
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3368
mov w1, w3
add x0, x0, 1384
b .L980
.size zftl_get_free_sblk, .-zftl_get_free_sblk
.align 2
.global zftl_remove_data_node
.type zftl_remove_data_node, %function
zftl_remove_data_node:
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
and w1, w0, 65535
add x29, sp, 0
ldr x0, [x2, 1104]
add x0, x0, w1, uxth 2
ldrb w3, [x0, 2]
and w3, w3, 224
cmp w3, 64
bne .L983
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3374
add x0, x0, 1344
.L987:
bl _list_remove_node
.L982:
ldp x29, x30, [sp], 16
ret
.L983:
cmp w3, 96
bne .L985
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3376
add x0, x0, 1360
b .L987
.L985:
cmp w3, 160
bne .L982
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3378
add x0, x0, 1368
b .L987
.size zftl_remove_data_node, .-zftl_remove_data_node
.align 2
.global zftl_remove_free_node
.type zftl_remove_free_node, %function
zftl_remove_free_node:
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
and w1, w0, 65535
adrp x3, .LANCHOR3
add x3, x3, :lo12:.LANCHOR3
add x29, sp, 0
ldr x0, [x2, 1104]
add x0, x0, w1, uxth 2
ldrb w0, [x0, 2]
ands w0, w0, 24
bne .L989
add x2, x2, 3368
add x0, x3, 1384
.L993:
bl _list_remove_node
ldp x29, x30, [sp], 16
ret
.L989:
cmp w0, 16
bne .L991
add x2, x2, 3370
add x0, x3, 1392
b .L993
.L991:
add x2, x2, 3372
add x0, x3, 1400
b .L993
.size zftl_remove_free_node, .-zftl_remove_free_node
.align 2
.global zftl_list_update_data_list
.type zftl_list_update_data_list, %function
zftl_list_update_data_list:
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
stp x29, x30, [sp, -16]!
and w1, w0, 65535
add x29, sp, 0
ldr x0, [x2, 1104]
add x0, x0, w1, uxth 2
ldrb w3, [x0, 2]
and w3, w3, 224
cmp w3, 64
bne .L995
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3374
add x0, x0, 1344
.L999:
bl _list_update_data_list
.L994:
ldp x29, x30, [sp], 16
ret
.L995:
cmp w3, 96
bne .L997
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3376
add x0, x0, 1360
b .L999
.L997:
cmp w3, 160
bne .L994
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add x2, x2, 3378
add x0, x0, 1368
b .L999
.size zftl_list_update_data_list, .-zftl_list_update_data_list
.align 2
.global print_list_info
.type print_list_info, %function
print_list_info:
sub sp, sp, #96
stp x29, x30, [sp, 32]
add x29, sp, 32
stp x19, x20, [sp, 48]
mov x19, x0
stp x21, x22, [sp, 64]
stp x23, x24, [sp, 80]
ldrh w2, [x1]
ldr x1, [x0]
adrp x0, .LC104
add x0, x0, :lo12:.LC104
bl printk
ldr x19, [x19]
cbz x19, .L1000
adrp x21, .LANCHOR0
mov x24, -6148914691236517206
adrp x23, .LC105
adrp x22, .LANCHOR3
add x21, x21, :lo12:.LANCHOR0
add x23, x23, :lo12:.LC105
add x22, x22, :lo12:.LANCHOR3
mov w20, 0
movk x24, 0xaaab, lsl 0
.L1003:
ldr x2, [x21, 1040]
ldr x1, [x21, 1104]
sub x2, x19, x2
ldr x8, [x21, 1120]
asr x2, x2, 1
ldrh w5, [x19, 4]
ldrh w4, [x19, 2]
mul x2, x2, x24
and x7, x2, 65535
and w2, w2, 65535
lsl x0, x7, 2
add x3, x1, x0
ldrh w7, [x8, x7, lsl 1]
ldrb w6, [x3, 2]
ldrh w3, [x19]
str w7, [sp, 16]
ldrh w7, [x1, x0]
and w7, w7, 2047
str w7, [sp, 8]
ubfx x7, x6, 3, 2
ubfx x6, x6, 5, 3
ldr w0, [x1, x0]
mov w1, w20
ubfx x0, x0, 11, 8
str w0, [sp]
mov x0, x23
bl printk
ldrh w19, [x19]
mov w0, 65535
cmp w19, w0
beq .L1000
ldr x0, [x21, 1040]
mov w1, 6
add w20, w20, 1
and w20, w20, 65535
umaddl x19, w19, w1, x0
ldrh w0, [x22, 1408]
cmp w0, w20
bcs .L1003
.L1000:
ldp x19, x20, [sp, 48]
ldp x21, x22, [sp, 64]
ldp x23, x24, [sp, 80]
ldp x29, x30, [sp, 32]
add sp, sp, 96
ret
.size print_list_info, .-print_list_info
.align 2
.global dump_all_list_info
.type dump_all_list_info, %function
dump_all_list_info:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
adrp x19, .LANCHOR3
add x20, x20, :lo12:.LANCHOR0
add x19, x19, :lo12:.LANCHOR3
add x1, x20, 3368
add x0, x19, 1384
bl print_list_info
add x1, x20, 3370
add x0, x19, 1392
bl print_list_info
add x1, x20, 3372
add x0, x19, 1400
bl print_list_info
add x1, x20, 3374
add x0, x19, 1344
bl print_list_info
add x1, x20, 3376
add x0, x19, 1360
bl print_list_info
add x1, x20, 3378
add x0, x19, 1368
bl print_list_info
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size dump_all_list_info, .-dump_all_list_info
.align 2
.global ftl_tmp_into_update
.type ftl_tmp_into_update, %function
ftl_tmp_into_update:
adrp x0, .LANCHOR0+3384
ldr x0, [x0, #:lo12:.LANCHOR0+3384]
ldr w1, [x0, 16]
cmp w1, 2048
bls .L1008
ldr w2, [x0, 20]
add w2, w2, w1, lsr 11
and w1, w1, 2047
stp w1, w2, [x0, 16]
.L1008:
ldr w1, [x0, 24]
cmp w1, 2048
bls .L1009
ldr w2, [x0, 28]
add w2, w2, w1, lsr 11
and w1, w1, 2047
stp w1, w2, [x0, 24]
.L1009:
ldr w1, [x0, 32]
cmp w1, 1024
bls .L1010
ldr w2, [x0, 36]
add w2, w2, w1, lsr 10
and w1, w1, 1023
stp w1, w2, [x0, 32]
.L1010:
ldr w1, [x0, 40]
cmp w1, 1024
bls .L1007
ldr w2, [x0, 44]
add w2, w2, w1, lsr 10
and w1, w1, 1023
stp w1, w2, [x0, 40]
.L1007:
ret
.size ftl_tmp_into_update, .-ftl_tmp_into_update
.align 2
.global ftl_get_blk_list_in_sblk
.type ftl_get_blk_list_in_sblk, %function
ftl_get_blk_list_in_sblk:
adrp x5, .LANCHOR0
add x5, x5, :lo12:.LANCHOR0
and w9, w0, 65535
mov w4, 0
mov w0, 0
mov w12, 24
ldr x2, [x5, 1104]
add x2, x2, w9, uxth 2
ldrb w11, [x2, 3]
adrp x2, .LANCHOR3
add x7, x2, :lo12:.LANCHOR3
mov x3, x2
.L1013:
ldrb w2, [x7, 1321]
cmp w4, w2
blt .L1016
mov w4, w0
add x2, x3, :lo12:.LANCHOR3
mov w5, -1
.L1017:
ldrb w3, [x2, 1321]
cmp w4, w3
blt .L1018
ret
.L1016:
asr w2, w11, w4
tbnz x2, 0, .L1014
ldrb w2, [x7, 1306]
sbfiz x10, x0, 1, 32
ldrb w6, [x5, 1205]
ldrh w13, [x7, 1304]
sub w6, w12, w6
sdiv w8, w4, w2
sub w6, w6, w13
lsl w6, w8, w6
madd w2, w9, w2, w6
and w2, w2, 65535
strh w2, [x1, x10]
ldrb w6, [x7, 1306]
cmp w6, 1
bls .L1015
sub w6, w6, #1
and w6, w6, w4
add w2, w2, w6
strh w2, [x1, x10]
.L1015:
add w0, w0, 1
.L1014:
add w4, w4, 1
b .L1013
.L1018:
strh w5, [x1, w4, sxtw 1]
add w4, w4, 1
b .L1017
.size ftl_get_blk_list_in_sblk, .-ftl_get_blk_list_in_sblk
.align 2
.global ftl_erase_phy_blk
.type ftl_erase_phy_blk, %function
ftl_erase_phy_blk:
stp x29, x30, [sp, -48]!
mov w2, 24
and w0, w0, 65535
add x29, sp, 0
stp x21, x22, [sp, 32]
mov w22, w1
adrp x1, .LANCHOR0+1205
stp x19, x20, [sp, 16]
ldrb w19, [x1, #:lo12:.LANCHOR0+1205]
adrp x1, .LANCHOR3
add x3, x1, :lo12:.LANCHOR3
mov x20, x1
sub w19, w2, w19
ldrh w2, [x3, 1304]
sub w2, w19, w2
mov w19, 1
lsl w19, w19, w2
sub w19, w19, #1
and w19, w19, w0
asr w21, w0, w2
ldrb w0, [x3, 1322]
sxth w19, w19
cbz w0, .L1020
ldrb w0, [x3, 1323]
cbnz w0, .L1020
ldrh w2, [x3, 1410]
cmp w22, 0
cset w1, eq
mov w0, w21
mul w2, w2, w19
bl flash_erase_block_en
.L1020:
add x1, x20, :lo12:.LANCHOR3
mov w0, w21
ldrh w2, [x1, 1410]
mov w1, w22
mul w2, w2, w19
bl flash_erase_block_en
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size ftl_erase_phy_blk, .-ftl_erase_phy_blk
.align 2
.global ftl_erase_sblk
.type ftl_erase_sblk, %function
ftl_erase_sblk:
stp x29, x30, [sp, -176]!
add x29, sp, 0
stp x21, x22, [sp, 32]
mov w22, w1
stp x25, x26, [sp, 64]
and w25, w0, 65535
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
ubfiz x21, x25, 2, 16
stp x23, x24, [sp, 48]
adrp x26, .LANCHOR3
stp x27, x28, [sp, 80]
mov x20, x0
add x27, x29, 112
add x24, x26, :lo12:.LANCHOR3
ldr x1, [x1, 1104]
mov w19, 0
add x1, x1, x21
ldrb w28, [x1, 3]
.L1026:
add x0, x26, :lo12:.LANCHOR3
ldrb w1, [x0, 1412]
cmp w19, w1
bge .L1037
ldrb w1, [x0, 1306]
mov w23, 0
ldrh w3, [x0, 1410]
mov w0, 0
sub w4, w1, #1
mul w6, w19, w1
mul w5, w25, w1
b .L1038
.L1028:
add w2, w6, w0
asr w2, w28, w2
tbnz x2, 0, .L1027
and w2, w0, w4
add w2, w2, w5
mul w2, w2, w3
str w2, [x27, w23, sxtw 2]
add w23, w23, 1
.L1027:
add w0, w0, 1
.L1038:
cmp w0, w1
blt .L1028
cmp w1, 4
bne .L1029
mov x3, 0
.L1030:
cmp w23, w3
bgt .L1031
.L1032:
add w19, w19, 1
b .L1026
.L1031:
ldr w2, [x27, x3, lsl 2]
mov w1, w22
str x3, [x29, 104]
mov w0, w19
bl flash_erase_block_en
ldr x3, [x29, 104]
add x3, x3, 1
b .L1030
.L1029:
cmp w23, 2
bne .L1033
ldrb w0, [x24, 1322]
cbz w0, .L1034
ldrb w0, [x24, 1323]
cbnz w0, .L1034
ldp w2, w3, [x29, 112]
cmp w22, 0
cset w1, eq
mov w0, w19
bl flash_erase_duplane_block
.L1034:
ldp w2, w3, [x29, 112]
mov w1, w22
mov w0, w19
bl flash_erase_duplane_block
b .L1032
.L1033:
cmp w23, 1
bne .L1032
ldrb w0, [x24, 1322]
cbz w0, .L1036
ldrb w0, [x24, 1323]
cbnz w0, .L1036
ldr w2, [x29, 112]
cmp w22, 0
cset w1, eq
mov w0, w19
bl flash_erase_block_en
.L1036:
ldr w2, [x29, 112]
mov w1, w22
mov w0, w19
bl flash_erase_block_en
b .L1032
.L1037:
add x0, x20, :lo12:.LANCHOR0
cbnz w22, .L1039
ldr x2, [x0, 1104]
ldrh w1, [x2, x21]
add w3, w1, 1
bfi w1, w3, 0, 11
strh w1, [x2, x21]
ldr x1, [x0, 3384]
ldr x0, [x0, 1104]
ldr w2, [x1, 84]
ldrh w3, [x1, 96]
add w2, w2, 1
str w2, [x1, 84]
ldrh w0, [x0, x21]
ubfx x0, x0, 0, 11
and w2, w0, 65535
cmp w3, w2
bge .L1041
strh w0, [x1, 96]
.L1041:
ldp x19, x20, [sp, 16]
mov w0, 0
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 176
ret
.L1039:
ldr x3, [x0, 1104]
ldr w1, [x3, x21]
ubfx x2, x1, 11, 8
add w2, w2, 1
bfi w1, w2, 11, 8
str w1, [x3, x21]
ldr x1, [x0, 3384]
ldr x0, [x0, 1104]
ldr w2, [x1, 80]
add w2, w2, 1
str w2, [x1, 80]
ldrh w2, [x1, 98]
ldr w0, [x0, x21]
ubfx x0, x0, 11, 8
cmp w2, w0, uxtb
bcs .L1041
strh w0, [x1, 98]
b .L1041
.size ftl_erase_sblk, .-ftl_erase_sblk
.align 2
.global ftl_alloc_sys_blk
.type ftl_alloc_sys_blk, %function
ftl_alloc_sys_blk:
stp x29, x30, [sp, -32]!
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
add x29, sp, 0
str x19, [sp, 16]
mov x19, x0
ldr x1, [x1, 3384]
ldrh w2, [x1, 136]
cmp w2, 63
bls .L1051
strh wzr, [x1, 136]
.L1051:
ldrh w0, [x1, 112]
cbnz w0, .L1052
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1592
mov w2, 1359
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1052:
add x0, x19, :lo12:.LANCHOR0
mov w4, 65535
ldr x1, [x0, 3384]
.L1056:
ldrh w2, [x1, 136]
ubfiz x3, x2, 1, 16
add x3, x3, 160
add x3, x1, x3
.L1053:
cmp w2, 63
ble .L1055
strh wzr, [x1, 136]
b .L1056
.L1055:
ldrh w0, [x3], 2
cmp w0, w4
bne .L1058
add w2, w2, 1
b .L1053
.L1058:
add x3, x1, w2, sxtw 1
mov w4, -1
strh w4, [x3, 160]
strh w2, [x1, 136]
ldrh w2, [x1, 112]
sub w2, w2, #1
strh w2, [x1, 112]
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size ftl_alloc_sys_blk, .-ftl_alloc_sys_blk
.align 2
.global ftl_free_sys_blk
.type ftl_free_sys_blk, %function
ftl_free_sys_blk:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 65535
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
mov x19, x0
ldr x1, [x1, 3384]
ldrh w2, [x1, 138]
cmp w2, 63
bls .L1061
strh wzr, [x1, 138]
.L1061:
ldrh w0, [x1, 112]
cmp w0, 63
bls .L1062
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1616
mov w2, 1386
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1062:
add x0, x19, :lo12:.LANCHOR0
mov w3, 65535
ldr x0, [x0, 3384]
.L1066:
ldrh w1, [x0, 138]
ubfiz x2, x1, 1, 16
add x2, x2, 160
add x2, x0, x2
.L1063:
cmp w1, 63
ble .L1065
strh wzr, [x0, 138]
b .L1066
.L1065:
ldrh w4, [x2], 2
cmp w4, w3
bne .L1064
add x2, x0, w1, sxtw 1
strh w20, [x2, 160]
strh w1, [x0, 138]
ldrh w1, [x0, 112]
add w1, w1, 1
strh w1, [x0, 112]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1064:
add w1, w1, 1
b .L1063
.size ftl_free_sys_blk, .-ftl_free_sys_blk
.align 2
.global ftl_info_data_recovery
.type ftl_info_data_recovery, %function
ftl_info_data_recovery:
ldrh w2, [x0]
mov w1, 65535
cmp w2, w1
beq .L1079
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
str x23, [sp, 48]
add x23, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ubfiz x20, x2, 2, 16
ldr x21, [x23, 1104]
add x22, x21, x20
ldrb w1, [x22, 2]
tst w1, 224
bne .L1069
ldrb w0, [x0, 4]
bfi w1, w0, 5, 3
strb w1, [x22, 2]
mov w0, w2
bl zftl_remove_free_node
ldrb w0, [x22, 2]
ldr x1, [x23, 3384]
tbz x0, 3, .L1073
ldrh w0, [x1, 116]
sub w0, w0, #1
strh w0, [x1, 116]
.L1074:
ldrb w0, [x22, 2]
and w0, w0, 224
cmp w0, 160
bne .L1076
ldr w0, [x21, x20]
add x19, x19, :lo12:.LANCHOR0
ubfx x1, x0, 11, 8
add w1, w1, 1
bfi w0, w1, 11, 8
str w0, [x21, x20]
ldr x1, [x19, 3384]
ldrh w0, [x1, 120]
sub w0, w0, #1
strh w0, [x1, 120]
.L1069:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldr x23, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L1073:
tst w0, 24
bne .L1075
ldrh w0, [x1, 114]
sub w0, w0, #1
strh w0, [x1, 114]
b .L1074
.L1075:
ldrh w0, [x1, 118]
sub w0, w0, #1
strh w0, [x1, 118]
b .L1074
.L1076:
ldrh w1, [x21, x20]
cmp w0, 64
add w2, w1, 1
bfi w1, w2, 0, 11
strh w1, [x21, x20]
bne .L1077
add x19, x19, :lo12:.LANCHOR0
ldr x1, [x19, 3384]
ldrh w0, [x1, 122]
sub w0, w0, #1
strh w0, [x1, 122]
b .L1069
.L1077:
cmp w0, 96
bne .L1069
add x19, x19, :lo12:.LANCHOR0
ldr x1, [x19, 3384]
ldrh w0, [x1, 124]
sub w0, w0, #1
strh w0, [x1, 124]
b .L1069
.L1079:
ret
.size ftl_info_data_recovery, .-ftl_info_data_recovery
.align 2
.global ftl_get_ppa_from_index
.type ftl_get_ppa_from_index, %function
ftl_get_ppa_from_index:
stp x29, x30, [sp, -48]!
adrp x1, .LANCHOR0+1128
and w0, w0, 65535
add x29, sp, 0
ldr x2, [x1, #:lo12:.LANCHOR0+1128]
adrp x1, .LANCHOR3
add x4, x1, :lo12:.LANCHOR3
stp x19, x20, [sp, 16]
str x21, [sp, 32]
mov x19, x1
ldrh w3, [x4, 1376]
ldrb w4, [x4, 1321]
mul w3, w3, w4
cmp w0, w3
bge .L1083
add x2, x2, 16
.L1084:
ldrb w1, [x2, 9]
sdiv w20, w0, w1
msub w0, w20, w1, w0
add x0, x2, w0, uxth 1
ldrh w21, [x0, 16]
mov w0, 65535
cmp w21, w0
bne .L1085
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1640
mov w2, 1945
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1085:
add x1, x19, :lo12:.LANCHOR3
ldrh w0, [x1, 1410]
madd w0, w0, w21, w20
ldr x21, [sp, 32]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.L1083:
sub w0, w0, w3
add x2, x2, 48
and w0, w0, 65535
b .L1084
.size ftl_get_ppa_from_index, .-ftl_get_ppa_from_index
.align 2
.global lpa_hash_get_ppa
.type lpa_hash_get_ppa, %function
lpa_hash_get_ppa:
adrp x1, .LANCHOR3
add x1, x1, :lo12:.LANCHOR3
and x3, x0, 255
add x2, x1, 1416
ldr x4, [x1, 1928]
ldr x5, [x1, 1936]
ldrh w2, [x2, x3, lsl 1]
mov w3, 65535
.L1088:
cmp w2, w3
bne .L1091
mov w0, -1
ret
.L1091:
uxtw x1, w2
ldr w6, [x4, x1, lsl 2]
cmp w0, w6
bne .L1089
stp x29, x30, [sp, -16]!
mov w0, w2
add x29, sp, 0
bl ftl_get_ppa_from_index
ldp x29, x30, [sp], 16
ret
.L1089:
ldrh w2, [x5, x1, lsl 1]
b .L1088
.size lpa_hash_get_ppa, .-lpa_hash_get_ppa
.align 2
.global ftl_get_new_free_page
.type ftl_get_new_free_page, %function
ftl_get_new_free_page:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
ldrh w1, [x0]
mov w0, 65535
cmp w1, w0
bne .L1097
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1664
mov w2, 2088
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1097:
adrp x20, .LANCHOR3
add x0, x20, :lo12:.LANCHOR3
ldrh w1, [x19, 2]
ldrh w0, [x0, 1376]
cmp w1, w0
bne .L1098
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1664
mov w2, 2089
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1098:
ldrh w0, [x19, 6]
cbnz w0, .L1099
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1664
mov w2, 2090
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1099:
ldrb w0, [x19, 5]
mov w2, 65535
add x0, x0, 8
ldrh w3, [x19, x0, lsl 1]
add x0, x20, :lo12:.LANCHOR3
ldrb w4, [x0, 1321]
.L1100:
cmp w3, w2
ldrb w1, [x19, 5]
beq .L1102
add x20, x20, :lo12:.LANCHOR3
add w1, w1, 1
and w1, w1, 255
ldrh w2, [x19, 2]
strb w1, [x19, 5]
cmp w4, w1
ldrh w0, [x20, 1410]
mul w0, w0, w3
ldrh w3, [x19, 6]
sub w3, w3, #1
strh w3, [x19, 6]
ldrh w3, [x19, 10]
orr w0, w0, w2
add w3, w3, 1
strh w3, [x19, 10]
bne .L1096
add w2, w2, 1
strb wzr, [x19, 5]
strh w2, [x19, 2]
.L1096:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1102:
add w1, w1, 1
and w1, w1, 255
strb w1, [x19, 5]
cmp w1, w4
bne .L1101
ldrh w0, [x19, 2]
strb wzr, [x19, 5]
add w0, w0, 1
strh w0, [x19, 2]
.L1101:
ldrb w0, [x19, 5]
add x0, x0, 8
ldrh w3, [x19, x0, lsl 1]
b .L1100
.size ftl_get_new_free_page, .-ftl_get_new_free_page
.align 2
.global ftl_ext_alloc_new_blk
.type ftl_ext_alloc_new_blk, %function
ftl_ext_alloc_new_blk:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
bl ftl_alloc_sys_blk
and w0, w0, 65535
mov w1, 65533
mov w20, w0
sub w0, w0, #1
cmp w1, w0, uxth
bcs .L1106
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1688
mov w2, 2125
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1106:
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
mov w1, 0
mov w0, w20
bl ftl_erase_phy_blk
ldr x0, [x19, 3384]
ldrh w0, [x0, 130]
bl ftl_free_sys_blk
ldr x0, [x19, 3384]
strh w20, [x0, 130]
strh wzr, [x0, 140]
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size ftl_ext_alloc_new_blk, .-ftl_ext_alloc_new_blk
.align 2
.global ftl_total_vpn_update
.type ftl_total_vpn_update, %function
ftl_total_vpn_update:
adrp x1, .LANCHOR3
add x3, x1, :lo12:.LANCHOR3
ldrh w2, [x3, 1944]
cmp w2, 4
bhi .L1109
cbnz w0, .L1109
add w2, w2, 1
strh w2, [x3, 1944]
ret
.L1109:
add x1, x1, :lo12:.LANCHOR3
adrp x0, .LANCHOR0
mov x2, 0
mov w3, 0
mov w9, 65535
strh wzr, [x1, 1944]
add x1, x0, :lo12:.LANCHOR0
ldrh w6, [x1, 1096]
ldr x8, [x1, 1104]
ldr x7, [x1, 1120]
mov w1, 0
.L1111:
cmp w6, w2, uxth
bhi .L1114
add x0, x0, :lo12:.LANCHOR0
ldr x2, [x0, 1128]
ldr x0, [x0, 3384]
str w3, [x2, 524]
str w1, [x2, 528]
ldrh w0, [x0, 120]
cbz w0, .L1108
udiv w1, w1, w0
str w1, [x2, 532]
.L1108:
ret
.L1114:
ldrh w4, [x7, x2, lsl 1]
cmp w4, w9
beq .L1112
add x5, x8, x2, lsl 2
ldrb w5, [x5, 2]
and w5, w5, 224
cmp w5, 160
bne .L1113
add w1, w1, w4
.L1112:
add x2, x2, 1
b .L1111
.L1113:
add w3, w3, w4
b .L1112
.size ftl_total_vpn_update, .-ftl_total_vpn_update
.align 2
.global ftl_debug_info_fill
.type ftl_debug_info_fill, %function
ftl_debug_info_fill:
adrp x3, .LANCHOR3+1946
ldrb w3, [x3, #:lo12:.LANCHOR3+1946]
cmp w3, 8
bls .L1123
and w0, w0, 255
cmp x2, 0
ccmp w0, 2, 0, ne
bne .L1121
stp x29, x30, [sp, -32]!
mov x0, x2
add x29, sp, 0
str x19, [sp, 16]
mov x19, x1
mov w1, 21320
movk w1, 0x4841, lsl 16
str w1, [x19]
mov w1, 1024
bl js_hash
str w0, [x19, 4]
mov w0, 0
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1121:
stp wzr, wzr, [x1]
.L1123:
mov w0, 0
ret
.size ftl_debug_info_fill, .-ftl_debug_info_fill
.align 2
.global ftl_vpn_update
.type ftl_vpn_update, %function
ftl_vpn_update:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
and w19, w0, 65535
mov w0, w19
bl zftl_list_update_data_list
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
ubfiz x19, x19, 1, 16
ldr x0, [x1, 1120]
ldrh w0, [x0, x19]
cbnz w0, .L1128
mov w0, 1
str w0, [x1, 3396]
.L1126:
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1128:
mov w0, 0
b .L1126
.size ftl_vpn_update, .-ftl_vpn_update
.align 2
.global ftl_vpn_decrement
.type ftl_vpn_decrement, %function
ftl_vpn_decrement:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 65535
mov w0, 65535
cmp w20, w0
beq .L1131
adrp x2, .LANCHOR0
add x2, x2, :lo12:.LANCHOR0
uxtw x1, w20
lsl x3, x1, 1
ldr x4, [x2, 1120]
ldrh w0, [x4, x3]
cbnz w0, .L1132
ldr x0, [x2, 1104]
mov w2, 0
add x1, x0, x1, lsl 2
adrp x0, .LC106
add x0, x0, :lo12:.LC106
ldrb w3, [x1, 2]
mov w1, w20
ubfx x3, x3, 5, 3
bl printk
.L1137:
mov w0, 0
b .L1130
.L1132:
sub w0, w0, #1
strh w0, [x4, x3]
.L1131:
adrp x19, .LANCHOR3
add x19, x19, :lo12:.LANCHOR3
ldrh w0, [x19, 1280]
cmp w20, w0
beq .L1137
mov w1, 65535
cmp w0, w1
bne .L1134
strh w20, [x19, 1280]
b .L1137
.L1134:
bl ftl_vpn_update
cmp w0, 0
ldrh w2, [x19, 1948]
cset w0, ne
add x1, x19, 1288
ldrh w3, [x19, 1280]
add w2, w2, 1
strh w20, [x19, 1280]
and w2, w2, 65535
cmp w2, 7
csel w2, w2, wzr, ls
strh w2, [x19, 1948]
and x2, x2, 65535
strh w3, [x1, x2, lsl 1]
.L1130:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size ftl_vpn_decrement, .-ftl_vpn_decrement
.align 2
.global lpa_hash_update_ppa
.type lpa_hash_update_ppa, %function
lpa_hash_update_ppa:
adrp x3, .LANCHOR3
add x6, x3, :lo12:.LANCHOR3
add x5, x6, 1416
and x4, x0, 255
and w2, w2, 65535
ldr x10, [x6, 1928]
ldrh w5, [x5, x4, lsl 1]
ldr x11, [x6, 1936]
mov w6, 65535
mov w9, w6
.L1140:
cmp w5, w9
beq .L1144
uxtw x8, w5
lsl x7, x8, 2
add x12, x10, x7
ldr w7, [x10, x7]
cmp w0, w7
lsl x7, x8, 1
bne .L1141
mov w5, -1
str w5, [x12]
cmp w6, w9
add x5, x3, :lo12:.LANCHOR3
bne .L1142
ldr x6, [x5, 1936]
add x5, x5, 1416
ldrh w6, [x6, x7]
strh w6, [x5, x4, lsl 1]
.L1143:
add x5, x3, :lo12:.LANCHOR3
mov w6, -1
ldr x5, [x5, 1936]
strh w6, [x5, x8, lsl 1]
.L1144:
add x3, x3, :lo12:.LANCHOR3
uxtw x5, w2
cmn w1, #1
ldr x6, [x3, 1928]
str w0, [x6, x5, lsl 2]
add x0, x3, 1416
ldrh w6, [x0, x4, lsl 1]
strh w2, [x0, x4, lsl 1]
ldr x0, [x3, 1936]
strh w6, [x0, x5, lsl 1]
beq .L1151
stp x29, x30, [sp, -16]!
adrp x0, .LANCHOR0+1205
add x29, sp, 0
ldrb w2, [x0, #:lo12:.LANCHOR0+1205]
mov w0, 24
ldrh w4, [x3, 1304]
sub w0, w0, w2
sub w2, w0, w4
mov w0, 1
lsr w1, w1, w4
lsl w0, w0, w2
sub w0, w0, #1
and w1, w0, w1
ldrb w0, [x3, 1306]
udiv w0, w1, w0
bl ftl_vpn_decrement
mov w0, -1
ldp x29, x30, [sp], 16
ret
.L1142:
ldr x5, [x5, 1936]
ldrh w7, [x5, x7]
strh w7, [x5, w6, uxtw 1]
b .L1143
.L1141:
mov w6, w5
ldrh w5, [x11, x7]
b .L1140
.L1151:
mov w0, -1
ret
.size lpa_hash_update_ppa, .-lpa_hash_update_ppa
.align 2
.global ftl_mask_bad_block
.type ftl_mask_bad_block, %function
ftl_mask_bad_block:
stp x29, x30, [sp, -48]!
adrp x6, .LANCHOR0
add x1, x6, :lo12:.LANCHOR0
adrp x3, .LANCHOR3
add x29, sp, 0
stp x19, x20, [sp, 16]
add x3, x3, :lo12:.LANCHOR3
str x21, [sp, 32]
mov w7, 24
mov w4, 1
mov x19, x6
ldrb w1, [x1, 1205]
ldrb w5, [x3, 1306]
ldrh w3, [x3, 1304]
sub w7, w7, w1
lsl w1, w4, w1
sub w1, w1, #1
lsr w2, w0, w7
and w1, w1, w2
lsr w0, w0, w3
sub w3, w7, w3
and w1, w1, 255
cmp w5, 1
lsl w3, w4, w3
sub w3, w3, #1
and w3, w3, w0
and w4, w3, 65535
mul w2, w1, w5
udiv w3, w3, w5
and w20, w2, 255
and w21, w3, 65535
bls .L1155
sub w2, w5, #1
and w2, w2, w4
add w2, w20, w2
and w20, w2, 255
.L1155:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 14, .L1156
adrp x0, .LC107
and w3, w3, 65535
mov w2, w20
add x0, x0, :lo12:.LC107
bl printk
.L1156:
add x0, x19, :lo12:.LANCHOR0
ldrh w1, [x0, 1096]
cmp w1, w21
bls .L1154
ldr x0, [x0, 1104]
mov w2, 1
lsl w2, w2, w20
add x21, x0, w21, uxth 2
ldrb w20, [x21, 3]
orr w2, w2, w20
strb w2, [x21, 3]
.L1154:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size ftl_mask_bad_block, .-ftl_mask_bad_block
.align 2
.global gc_free_bad_sblk
.type gc_free_bad_sblk, %function
gc_free_bad_sblk:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x23, x24, [sp, 48]
adrp x24, .LANCHOR0
add x24, x24, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
and w22, w0, 65535
stp x19, x20, [sp, 16]
stp x25, x26, [sp, 64]
ldr w0, [x24, 5616]
str x27, [sp, 80]
cbz w0, .L1177
mov w23, 20041
add x27, x24, 3416
mov w26, 0
movk w23, 0x444b, lsl 16
.L1164:
adrp x21, .LANCHOR3
add x2, x21, :lo12:.LANCHOR3
ldrb w0, [x2, 1321]
cmp w0, w26
bhi .L1174
.L1177:
mov w0, 0
ldr x27, [sp, 80]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
ret
.L1174:
ldrb w3, [x2, 1306]
mov w1, 24
ldrb w4, [x24, 1205]
ldrh w2, [x2, 1304]
and w0, w3, 65535
sub w1, w1, w4
cmp w3, 1
sdiv w19, w26, w3
sub w1, w1, w2
lsl w19, w19, w1
madd w19, w22, w0, w19
and w19, w19, 65535
bls .L1165
sub w0, w0, #1
and w0, w0, w26
add w19, w19, w0
and w19, w19, 65535
.L1165:
adrp x25, .LC108
add x25, x25, :lo12:.LC108
mov w20, 0
.L1166:
ldr w0, [x27, 2200]
cmp w20, w0
bcc .L1173
add w26, w26, 1
and w26, w26, 65535
b .L1164
.L1173:
add x0, x27, w20, sxtw 1
ldrh w0, [x0, 2204]
cmp w0, w19
bne .L1167
mov w1, w19
mov x0, x25
bl printk
add x0, x21, :lo12:.LANCHOR3
ldrb w1, [x0, 1950]
cbnz w1, .L1168
ldrb w0, [x0, 1322]
cbz w0, .L1169
.L1168:
ldr x0, [x24, 3384]
ldr w0, [x0, 156]
cmp w0, w23
beq .L1170
.L1169:
add x0, x21, :lo12:.LANCHOR3
ldrh w0, [x0, 1304]
lsl w0, w19, w0
bl ftl_mask_bad_block
.L1170:
ldr w1, [x27, 2200]
mov w0, w20
.L1171:
cmp w0, w1
bcc .L1172
sub w1, w1, #1
str w1, [x27, 2200]
.L1167:
add w20, w20, 1
and w20, w20, 65535
b .L1166
.L1172:
add w2, w0, 1
add x0, x27, w0, sxtw 1
add x3, x27, w2, sxtw 1
ldrh w3, [x3, 2204]
strh w3, [x0, 2204]
and w0, w2, 65535
b .L1171
.size gc_free_bad_sblk, .-gc_free_bad_sblk
.align 2
.global ftl_free_sblk
.type ftl_free_sblk, %function
ftl_free_sblk:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x3, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
and x24, x0, 65535
lsl x19, x24, 2
mov x22, x24
ldr x4, [x3, 1104]
add x21, x4, x19
ldrb w0, [x21, 2]
ubfx x23, x0, 5, 3
tbz x0, 3, .L1184
ldr x5, [x3, 3384]
ldr w2, [x4, x19]
ldrh w1, [x4, x19]
ldrh w6, [x5, 74]
and w1, w1, 2047
ubfx x7, x2, 11, 8
ldrh w2, [x3, 1112]
add w6, w1, w6
and w8, w6, 65535
ldrh w6, [x5, 72]
adrp x5, .LANCHOR3
add x5, x5, :lo12:.LANCHOR3
add w6, w7, w6
udiv w9, w8, w2
and w6, w6, 65535
ldrh w10, [x5, 1952]
add w9, w9, w6
cmp w9, w10
ble .L1185
ldrh w6, [x3, 3370]
ldrh w8, [x3, 3378]
add w8, w8, w6
ldrh w6, [x5, 1382]
add w6, w6, 8
cmp w8, w6
bge .L1186
.L1191:
mov w3, 2
bfi w0, w3, 3, 2
b .L1203
.L1186:
ldrh w6, [x3, 3374]
ldrh w8, [x3, 3368]
ldrh w5, [x5, 1380]
ldrh w3, [x3, 3376]
add w6, w6, w8
add w5, w5, 8
add w3, w6, w3
cmp w3, w5
.L1207:
bge .L1191
b .L1205
.L1185:
madd w6, w2, w6, w8
ldrh w8, [x5, 1954]
cmp w6, w8
ble .L1187
ldrh w8, [x3, 3368]
ldrh w6, [x3, 3374]
add w6, w6, w8
ldrh w8, [x3, 3376]
add w6, w6, w8
ldrh w8, [x5, 1380]
add w9, w8, 8
cmp w6, w9
bge .L1189
.L1205:
and w0, w0, -25
.L1203:
strb w0, [x21, 2]
.L1187:
ldrb w0, [x21, 2]
ands w0, w0, 24
bne .L1192
mul w2, w7, w2
ldrh w0, [x4, x19]
add w2, w2, w2, lsl 1
add w1, w1, w2, lsr 2
lsr w2, w7, 3
bfi w0, w1, 0, 11
strh w0, [x4, x19]
ldr w0, [x4, x19]
bfi w0, w2, 11, 8
str w0, [x4, x19]
.L1193:
mov w0, w22
bl zftl_remove_data_node
add x1, x20, :lo12:.LANCHOR0
add w23, w23, 6
and w23, w23, 7
cmp w23, 4
ldr x0, [x1, 1104]
add x19, x0, x19
ldrb w0, [x19, 2]
and w0, w0, 31
strb w0, [x19, 2]
ldr x0, [x1, 1120]
strh wzr, [x0, x24, lsl 1]
bhi .L1196
mov w0, w22
bl gc_free_bad_sblk
.L1196:
ldrb w0, [x21, 2]
tbz x0, 3, .L1197
add x20, x20, :lo12:.LANCHOR0
ldr x0, [x20, 1128]
ldrh w1, [x0, 586]
cmp w1, w22
bne .L1197
mov w1, -1
ldrh w2, [x0, 590]
strh w1, [x0, 586]
mov w1, 65535
cmp w2, w1
bne .L1197
strh w22, [x0, 590]
mov w1, w22
adrp x0, .LC109
add x0, x0, :lo12:.LC109
bl printk
.L1183:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L1189:
ldrh w9, [x3, 3378]
ldrh w3, [x3, 3370]
add w9, w9, w3
ldrh w3, [x5, 1382]
add w3, w3, 8
cmp w9, w3
blt .L1191
add w8, w8, 24
cmp w6, w8
b .L1207
.L1192:
cmp w0, 16
bne .L1193
sdiv w2, w1, w2
ldr w0, [x4, x19]
add w2, w2, w2, lsl 1
add w2, w7, w2, lsr 2
.L1204:
bfi w0, w2, 11, 8
asr w1, w1, 5
str w0, [x4, x19]
bfi w0, w1, 0, 11
strh w0, [x4, x19]
b .L1193
.L1184:
tst w0, 24
bne .L1193
ldrh w1, [x3, 3372]
cbnz w1, .L1193
ldrh w7, [x3, 3370]
cmp w7, 15
bhi .L1193
ldrh w2, [x3, 3368]
ldrh w1, [x3, 3374]
add w1, w1, w2
ldrh w2, [x3, 3376]
add w1, w1, w2
adrp x2, .LANCHOR3
add x2, x2, :lo12:.LANCHOR3
ldrh w6, [x2, 1380]
add w6, w6, 16
cmp w1, w6
ble .L1193
ldrh w5, [x3, 3378]
ldrh w1, [x2, 1382]
add w5, w5, w7
add w1, w1, 8
cmp w5, w1
bge .L1193
mov w1, 2
bfi w0, w1, 3, 2
strb w0, [x21, 2]
ldrh w0, [x3, 1112]
ldrh w1, [x4, x19]
and w1, w1, 2047
sdiv w0, w1, w0
add w2, w0, w0, lsl 1
ldr w0, [x4, x19]
ubfx x3, x0, 11, 8
add w2, w3, w2, lsr 2
b .L1204
.L1197:
mov w0, w22
bl zftl_insert_free_list
b .L1183
.size ftl_free_sblk, .-ftl_free_sblk
.align 2
.global gc_free_src_blk
.type gc_free_src_blk, %function
gc_free_src_blk:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
stp x23, x24, [sp, 48]
add x24, x22, :lo12:.LANCHOR0
adrp x23, .LC110
add x21, x24, 3416
add x23, x23, :lo12:.LC110
stp x19, x20, [sp, 16]
stp x25, x26, [sp, 64]
mov w20, 0
.L1209:
ldrh w0, [x21, 56]
cmp w0, w20
bhi .L1224
strh wzr, [x21, 56]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L1224:
add x0, x21, w20, sxtw 1
ldrh w25, [x0, 58]
ldr x0, [x24, 1120]
mov x19, x25
lsl x26, x25, 1
ldrh w2, [x0, x26]
cbz w2, .L1210
mov w1, w25
mov x0, x23
bl printk
.L1210:
add x0, x22, :lo12:.LANCHOR0
ldr x1, [x0, 1120]
strh wzr, [x1, x26]
ldr x1, [x0, 1120]
ldrh w1, [x1, x26]
cbnz w1, .L1211
ldr x0, [x0, 1104]
add x25, x0, x25, lsl 2
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L1212
ldrb w2, [x25, 2]
adrp x0, .LC111
mov w1, w19
add x0, x0, :lo12:.LC111
ubfx x2, x2, 5, 3
bl printk
.L1212:
ldrb w0, [x25, 2]
and w1, w0, 224
cmp w1, 224
beq .L1213
tst w0, 192
bne .L1214
.L1213:
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1712
mov w2, 1363
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1214:
mov w0, w19
bl ftl_free_sblk
add x0, x22, :lo12:.LANCHOR0
ldr x0, [x0, 1128]
ldrh w2, [x0, 124]
cbz w2, .L1215
add x3, x0, 392
mov w1, 0
.L1217:
ldrh w4, [x3]
cmp w4, w19
bne .L1216
add x1, x0, w1, sxtw 1
mov w3, -1
sub w2, w2, #1
strh w3, [x1, 392]
strh w2, [x0, 124]
.L1215:
ldrh w2, [x0, 120]
cbz w2, .L1218
add x3, x0, 136
mov w1, 0
.L1220:
ldrh w4, [x3]
cmp w4, w19
bne .L1219
add x1, x0, w1, sxtw 1
mov w3, -1
sub w2, w2, #1
strh w3, [x1, 136]
strh w2, [x0, 120]
.L1218:
ldrh w2, [x0, 122]
cbz w2, .L1221
add x3, x0, 264
mov w1, 0
.L1223:
ldrh w4, [x3]
cmp w4, w19
bne .L1222
add x1, x0, w1, sxtw 1
mov w3, -1
sub w2, w2, #1
strh w3, [x1, 264]
strh w2, [x0, 122]
.L1221:
add w20, w20, 1
and w20, w20, 65535
b .L1209
.L1216:
add w1, w1, 1
add x3, x3, 2
cmp w1, 64
bne .L1217
b .L1215
.L1219:
add w1, w1, 1
add x3, x3, 2
cmp w1, 64
bne .L1220
b .L1218
.L1222:
add w1, w1, 1
add x3, x3, 2
cmp w1, 64
bne .L1223
b .L1221
.L1211:
mov w2, 0
mov w1, 1
mov w0, w19
bl gc_add_sblk
b .L1221
.size gc_free_src_blk, .-gc_free_src_blk
.align 2
.global print_ftl_debug_info
.type print_ftl_debug_info, %function
print_ftl_debug_info:
sub sp, sp, #64
stp x29, x30, [sp, 32]
add x29, sp, 32
str x19, [sp, 48]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldr x1, [x19, 3384]
ldr x0, [x19, 1128]
ldr w8, [x19, 3364]
ldrh w7, [x19, 3376]
ldrh w2, [x1, 146]
ldrh w1, [x1, 148]
str w8, [sp, 24]
ldrh w6, [x19, 3374]
ldr w8, [x0, 528]
str w8, [sp, 16]
ldrh w5, [x19, 3372]
ldr w0, [x0, 524]
ldrh w4, [x19, 3370]
ldrh w3, [x19, 3368]
str w0, [sp, 8]
ldrh w0, [x19, 3378]
str w0, [sp]
adrp x0, .LC112
add x0, x0, :lo12:.LC112
bl printk
ldr x0, [x19, 3384]
ldrb w3, [x19, 3380]
ldr w4, [x0, 8]
ldr w5, [x0, 64]
ldr w1, [x0, 20]
ldr w2, [x0, 28]
adrp x0, .LC113
add x0, x0, :lo12:.LC113
bl printk
ldr x0, [x19, 3384]
ldr w1, [x0, 52]
ldr w2, [x0, 60]
ldr w3, [x0, 16]
adrp x0, .LC114
add x0, x0, :lo12:.LC114
lsr w3, w3, 11
bl printk
ldr x0, [x19, 3384]
ldrh w2, [x0, 98]
ldrh w6, [x0, 72]
ldrh w5, [x0, 96]
ldrh w4, [x0, 92]
ldrh w3, [x0, 88]
ldrh w1, [x0, 74]
str w2, [sp, 16]
ldrh w2, [x0, 94]
str w2, [sp, 8]
ldrh w2, [x0, 90]
str w2, [sp]
ldp w7, w2, [x0, 80]
adrp x0, .LC115
add x0, x0, :lo12:.LC115
bl printk
ldrh w5, [x19, 3392]
adrp x0, .LC116
ldrh w4, [x19, 3400]
add x0, x0, :lo12:.LC116
ldrh w3, [x19, 3402]
ldrh w2, [x19, 3404]
ldrh w1, [x19, 3406]
bl printk
ldr x0, [x19, 1128]
ldr x1, [x19, 3384]
ldrh w4, [x0, 590]
ldrh w6, [x1, 150]
ldrh w3, [x0, 588]
ldrh w2, [x0, 586]
ldr w5, [x1, 156]
ldrh w1, [x0, 584]
adrp x0, .LC117
add x0, x0, :lo12:.LC117
bl printk
ldr x19, [sp, 48]
ldp x29, x30, [sp, 32]
add sp, sp, 64
ret
.size print_ftl_debug_info, .-print_ftl_debug_info
.align 2
.global ftl_write_buf
.type ftl_write_buf, %function
ftl_write_buf:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
str x21, [sp, 32]
cbnz x0, .L1250
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1728
mov w2, 811
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
bl print_ftl_debug_info
mov w0, -1
.L1249:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L1253:
add x19, x19, :lo12:.LANCHOR0
mov x1, x20
add x0, x19, 3408
bl buf_add_tail
ldrb w3, [x20, 56]
ldr x1, [x19, 3384]
ldrb w0, [x19, 3381]
add w0, w0, 1
ldr w2, [x1, 16]
and w0, w0, 255
strb w0, [x19, 3381]
add w2, w2, w3
str w2, [x1, 16]
ldr w2, [x1, 32]
add w2, w2, 1
str w2, [x1, 32]
b .L1249
.L1250:
mov x20, x0
adrp x0, .LANCHOR3
add x1, x0, :lo12:.LANCHOR3
mov x21, x0
ldrb w2, [x20, 56]
ldrb w1, [x1, 1946]
cmp w2, w1
bls .L1255
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1728
mov w2, 818
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1255:
ldrb w1, [x20, 56]
adrp x19, .LANCHOR0
cbz w1, .L1252
add x0, x21, :lo12:.LANCHOR3
ldrb w0, [x0, 1946]
cmp w0, w1
bcs .L1253
.L1252:
add x19, x19, :lo12:.LANCHOR0
mov x0, x20
bl zbuf_free
ldrb w0, [x19, 3381]
b .L1249
.size ftl_write_buf, .-ftl_write_buf
.align 2
.global ftl_write_completed
.type ftl_write_completed, %function
ftl_write_completed:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR0
stp x19, x20, [sp, 16]
add x19, x21, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
add x22, x19, 1304
mov w23, 20041
str x25, [sp, 64]
movk w23, 0x444b, lsl 16
mov w25, 0
.L1261:
add x1, x21, :lo12:.LANCHOR0
ldrb w0, [x1, 3357]
cmp w0, 255
bne .L1272
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldr x25, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L1272:
add x2, x1, 1304
lsl x3, x0, 6
add x24, x2, x3
ubfiz x20, x0, 6, 8
add x20, x2, x20
ldrb w2, [x2, x3]
strb w2, [x1, 3357]
ldr w1, [x24, 52]
cmn w1, #1
bne .L1262
adrp x2, .LANCHOR3
add x1, x2, :lo12:.LANCHOR3
ldrb w3, [x1, 1950]
cbnz w3, .L1263
ldrb w1, [x1, 1322]
cbz w1, .L1264
.L1263:
ldr x1, [x19, 3384]
ldr w1, [x1, 156]
cmp w1, w23
beq .L1265
.L1264:
add x2, x2, :lo12:.LANCHOR3
ldrb w3, [x19, 1205]
mov w1, 24
add x4, x22, x0, lsl 6
sub w1, w1, w3
ldrh w5, [x2, 1304]
ldrb w2, [x2, 1306]
sub w3, w1, w5
mov w1, 1
lsl w1, w1, w3
ldr w3, [x4, 40]
sub w1, w1, #1
lsr w3, w3, w5
and w1, w1, w3
mov w3, 65535
udiv w1, w1, w2
ldr x2, [x19, 1128]
ldr w5, [x2, 560]
and w24, w1, 65535
and w1, w1, w3
cmp w5, w3
bne .L1266
str w1, [x2, 560]
ldr w3, [x4, 40]
str w3, [x2, 564]
.L1266:
add x0, x22, x0, lsl 6
ldp w2, w3, [x0, 36]
adrp x0, .LC118
add x0, x0, :lo12:.LC118
bl printk
ldr x0, [x19, 1128]
ldr w1, [x0, 556]
add w1, w1, 1
str w1, [x0, 556]
ldrh w1, [x0, 16]
cmp w1, w24
bne .L1267
strh wzr, [x0, 22]
.L1265:
mov x0, x20
mov w25, 1
bl ftl_write_buf
b .L1261
.L1267:
ldrh w1, [x0, 48]
cmp w1, w24
bne .L1265
strh wzr, [x0, 54]
b .L1265
.L1262:
cbz w25, .L1270
ldp w1, w2, [x24, 36]
adrp x0, .LC119
add x0, x0, :lo12:.LC119
bl printk
mov x0, x20
bl ftl_write_buf
b .L1261
.L1270:
ldrh w2, [x24, 48]
ldr w0, [x24, 36]
ldr w1, [x24, 44]
bl lpa_hash_update_ppa
ldrb w0, [x24, 2]
tbz x0, 2, .L1271
and w0, w0, -3
strb w0, [x24, 2]
b .L1261
.L1271:
mov x0, x20
bl zbuf_free
b .L1261
.size ftl_write_completed, .-ftl_write_completed
.align 2
.global zftl_add_read_buf
.type zftl_add_read_buf, %function
zftl_add_read_buf:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
cbnz x0, .L1278
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1744
mov w2, 1151
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
bl print_ftl_debug_info
.L1277:
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1278:
mov x20, x0
adrp x19, .LANCHOR3
add x0, x19, :lo12:.LANCHOR3
ldrb w1, [x20, 56]
ldrb w0, [x0, 1946]
cmp w1, w0
bls .L1281
adrp x1, .LANCHOR1
add x1, x1, :lo12:.LANCHOR1
add x1, x1, 1744
mov w2, 1158
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1281:
add x19, x19, :lo12:.LANCHOR3
mov x1, x20
add x0, x19, 1956
bl buf_add_tail
ldrb w0, [x19, 1957]
add w0, w0, 1
strb w0, [x19, 1957]
b .L1277
.size zftl_add_read_buf, .-zftl_add_read_buf
.align 2
.global sblk_init
.type sblk_init, %function
sblk_init:
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
mov w1, -1
strb w1, [x0, 3354]
strb w1, [x0, 3357]
strb w1, [x0, 3355]
strb w1, [x0, 3356]
mov w0, 0
ret
.size sblk_init, .-sblk_init
.align 2
.global dump_sblk_queue
.type dump_sblk_queue, %function
dump_sblk_queue:
stp x29, x30, [sp, -48]!
adrp x0, .LC120
add x0, x0, :lo12:.LC120
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
str x21, [sp, 32]
ldrb w1, [x20, 3354]
bl printk
ldrb w19, [x20, 3354]
cmp w19, 255
beq .L1284
add x20, x20, 1304
ubfiz x19, x19, 6, 8
adrp x21, .LC121
add x19, x20, x19
add x21, x21, :lo12:.LC121
.L1286:
ldrb w2, [x19, 58]
mov x0, x21
ldrb w1, [x19, 1]
ldr w3, [x19, 40]
bl printk
ldrb w19, [x19]
cmp w19, 255
beq .L1284
ubfiz x19, x19, 6, 8
add x19, x20, x19
b .L1286
.L1284:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size dump_sblk_queue, .-dump_sblk_queue
.align 2
.global queue_lun_state
.type queue_lun_state, %function
queue_lun_state:
adrp x5, .LANCHOR0
add x5, x5, :lo12:.LANCHOR0
ldrb w2, [x5, 3354]
cmp w2, 255
beq .L1302
adrp x6, .LANCHOR3
add x6, x6, :lo12:.LANCHOR3
ldrb w3, [x5, 1205]
mov w9, 24
mov w4, 1
adrp x12, .L1298
ldrh w11, [x6, 1304]
sub w9, w9, w3
ldrb w8, [x6, 1306]
lsl w3, w4, w3
sub w7, w9, w11
sub w3, w3, #1
sub w8, w8, #1
and w3, w3, 65535
lsl w4, w4, w7
and w8, w8, 65535
sub w4, w4, #1
asr w6, w0, w11
and w4, w4, 65535
and w6, w6, w8
asr w10, w0, w9
and w6, w6, w4
and w10, w10, w3
add x5, x5, 1304
add x12, x12, :lo12:.L1298
.L1301:
add x13, x5, x2, lsl 6
ldr w7, [x13, 40]
lsr w0, w7, w9
and w0, w3, w0
cmp w10, w0
bne .L1296
lsr w7, w7, w11
and w7, w8, w7
and w7, w4, w7
ldrb w0, [x13, 58]
cmp w6, w7
bne .L1297
cmp w1, 1
bne .L1294
cmp w0, 7
ccmp w0, 9, 4, ne
beq .L1296
ret
.L1297:
cmp w1, 3
bhi .L1296
ldrb w7, [x12,w1,uxtw]
adr x13, .Lrtx1298
add x7, x13, w7, sxtb #2
br x7
.Lrtx1298:
.section .rodata
.align 0
.align 2
.L1298:
.byte (.L1294 - .Lrtx1298) / 4
.byte (.L1299 - .Lrtx1298) / 4
.byte (.L1300 - .Lrtx1298) / 4
.byte (.L1294 - .Lrtx1298) / 4
.text
.L1299:
cmp w0, 7
ccmp w0, 9, 4, ne
beq .L1296
ret
.L1300:
cmp w0, 11
bne .L1294
.L1296:
lsl x2, x2, 6
ldrb w2, [x5, x2]
cmp w2, 255
bne .L1301
.L1302:
mov w0, 0
.L1294:
ret
.size queue_lun_state, .-queue_lun_state
.align 2
.global queue_remove_completed_req
.type queue_remove_completed_req, %function
queue_remove_completed_req:
adrp x3, .LANCHOR0
add x0, x3, :lo12:.LANCHOR0
add x4, x0, 1304
add x12, x0, 3355
add x13, x0, 3356
add x14, x0, 3357
ldrb w7, [x0, 3354]
mov w5, 0
ldrb w9, [x0, 3355]
mov w11, -1
ldrb w10, [x0, 3357]
ldrb w8, [x0, 3356]
.L1305:
cmp w7, 255
beq .L1306
sbfiz x6, x7, 6, 32
sxtw x1, w7
add x2, x4, x6
ldrb w2, [x2, 58]
sub w2, w2, #12
and w2, w2, 255
cmp w2, 1
bls .L1307
cbz w5, .L1304
strb w7, [x0, 3354]
ret
.L1307:
lsl x5, x1, 6
ldrb w7, [x4, x6]
add x2, x4, x5
strb w11, [x4, x5]
ldrb w5, [x2, 59]
cmp w5, 1
bne .L1310
ldrh w2, [x2, 50]
cbnz w2, .L1318
mov w2, w10
mov x5, x14
.L1311:
cmp w2, 255
bne .L1316
add x3, x3, :lo12:.LANCHOR0
add x1, x3, x1, lsl 6
strb w7, [x3, 3354]
ldrb w0, [x1, 1305]
strb w0, [x5]
ret
.L1310:
cbnz w5, .L1312
ldr w2, [x2, 36]
cmn w2, #1
beq .L1312
mov w2, w9
mov x5, x12
b .L1311
.L1318:
mov w2, w8
mov x5, x13
b .L1311
.L1316:
mov w5, w2
sbfiz x2, x2, 6, 32
ldrb w2, [x4, x2]
cmp w2, 255
bne .L1316
add x1, x4, x1, lsl 6
sbfiz x5, x5, 6, 32
ldrb w1, [x1, 1]
strb w1, [x4, x5]
.L1312:
mov w5, 1
b .L1305
.L1306:
cbz w5, .L1304
add x3, x3, :lo12:.LANCHOR0
mov w0, -1
strb w0, [x3, 3354]
.L1304:
ret
.size queue_remove_completed_req, .-queue_remove_completed_req
.align 2
.global pm_select_ram_region
.type pm_select_ram_region, %function
pm_select_ram_region:
stp x29, x30, [sp, -32]!
adrp x1, .LANCHOR3
add x0, x1, :lo12:.LANCHOR3
mov x2, 0
add x29, sp, 0
add x3, x0, 1960
mov w4, 65535
str x19, [sp, 16]
.L1330:
lsl x5, x2, 4
and w19, w2, 65535
ldrh w5, [x5, x3]
cmp w5, w4
beq .L1329
add x2, x2, 1
cmp x2, 32
bne .L1330
add x0, x0, 1962
mov w19, w2
mov x3, x0
mov w5, 32768
mov w2, 0
.L1332:
ldrh w4, [x3]
tbnz x4, 15, .L1331
cmp w4, w5
bcs .L1331
mov w5, w4
mov w19, w2
.L1331:
add w2, w2, 1
add x3, x3, 16
and w2, w2, 65535
cmp w2, 32
bne .L1332
cmp w19, 32
bne .L1329
add x1, x1, :lo12:.LANCHOR3
mov w2, -1
ldrb w3, [x1, 2472]
mov w1, 0
.L1334:
ldrh w5, [x0]
cmp w5, w2
bcs .L1333
ldrh w4, [x0, -2]
cmp w4, w3
csel w2, w2, w5, eq
csel w19, w19, w1, eq
.L1333:
add w1, w1, 1
add x0, x0, 16
and w1, w1, 65535
cmp w1, 32
bne .L1334
cmp w19, 32
bne .L1329
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
mov w2, 377
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1329:
mov w0, w19
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size pm_select_ram_region, .-pm_select_ram_region
.align 2
.global ftl_memset
.type ftl_memset, %function
ftl_memset:
stp x29, x30, [sp, -16]!
uxtw x2, w2
add x29, sp, 0
bl memset
ldp x29, x30, [sp], 16
ret
.size ftl_memset, .-ftl_memset
.align 2
.global flash_lsb_page_tbl_build
.type flash_lsb_page_tbl_build, %function
flash_lsb_page_tbl_build:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x1, x19, :lo12:.LANCHOR0
str x21, [sp, 32]
mov w20, 1024
ldr x2, [x1, 1144]
ldrb w2, [x2, 12]
sdiv w20, w20, w2
cbnz w0, .L1342
add x1, x1, 4
mov x0, 0
.L1343:
strh w0, [x1, x0, lsl 1]
add x0, x0, 1
cmp x0, 512
bne .L1343
.L1349:
adrp x21, .LANCHOR3
add x21, x21, :lo12:.LANCHOR3
add x21, x21, 2476
add x19, x19, :lo12:.LANCHOR0
mov w2, 2048
mov w1, 255
mov x0, x21
add x19, x19, 4
bl ftl_memset
mov x0, 0
.L1344:
ldrh w1, [x19, x0, lsl 1]
add x0, x0, 1
cmp w20, w0, uxth
strh w1, [x21, w1, sxtw 1]
bhi .L1344
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L1342:
cmp w0, 1
bne .L1345
add x1, x1, 4
mov x2, 0
.L1348:
and w0, w2, 65535
cmp x2, 3
bls .L1346
ubfiz w3, w0, 1, 15
and w0, w0, 1
add w0, w0, 2
sub w0, w3, w0
and w0, w0, 65535
.L1346:
strh w0, [x1, x2, lsl 1]
add x2, x2, 1
cmp x2, 512
bne .L1348
b .L1349
.L1345:
cmp w0, 2
bne .L1350
add x1, x1, 4
mov w2, 65535
mov x0, 0
.L1352:
cmp x0, 2
and w3, w0, 65535
csel w3, w3, w2, cc
strh w3, [x1, x0, lsl 1]
add w2, w2, 2
add x0, x0, 1
and w2, w2, 65535
cmp x0, 512
bne .L1352
b .L1349
.L1350:
cmp w0, 3
bne .L1353
add x1, x1, 4
mov x2, 0
.L1356:
and w0, w2, 65535
cmp x2, 5
bls .L1354
ubfiz w3, w0, 1, 15
and w0, w0, 1
add w0, w0, 4
sub w0, w3, w0
and w0, w0, 65535
.L1354:
strh w0, [x1, x2, lsl 1]
add x2, x2, 1
cmp x2, 512
bne .L1356
b .L1349
.L1353:
cmp w0, 4
bne .L1357
mov w3, 1
strh w0, [x1, 12]
mov w0, 5
strh w3, [x1, 6]
strh w0, [x1, 14]
mov w3, 2
mov w0, 7
strh w3, [x1, 8]
strh w0, [x1, 16]
mov w3, 3
mov w0, 8
strh wzr, [x1, 4]
strh w0, [x1, 18]
add x1, x1, 20
strh w3, [x1, -10]
mov w0, 8
.L1359:
and w3, w0, 1
ubfiz w2, w0, 1, 15
add w3, w3, 6
add w0, w0, 1
sub w2, w2, w3
strh w2, [x1], 2
and w0, w0, 65535
cmp w0, 512
bne .L1359
b .L1349
.L1357:
cmp w0, 5
bne .L1360
add x2, x1, 4
mov x0, 0
.L1361:
strh w0, [x2, x0, lsl 1]
add x0, x0, 1
cmp x0, 16
bne .L1361
add x1, x1, 36
.L1362:
strh w0, [x1], 2
add w0, w0, 2
and w0, w0, 65535
cmp w0, 1008
bne .L1362
b .L1349
.L1360:
cmp w0, 8
bne .L1363
add x1, x1, 4
mov x0, 0
.L1364:
strh w0, [x0, x1]
add x0, x0, 2
cmp x0, 1024
bne .L1364
b .L1349
.L1363:
cmp w0, 9
bne .L1365
mov w2, 1
strh wzr, [x1, 4]
strh w2, [x1, 6]
mov w2, 2
add x1, x1, 10
strh w2, [x1, -2]
mov w0, 3
.L1366:
strh w0, [x1], 2
add w0, w0, 2
and w0, w0, 65535
cmp w0, 1021
bne .L1366
b .L1349
.L1365:
cmp w0, 10
bne .L1367
add x2, x1, 4
mov x0, 0
.L1368:
strh w0, [x2, x0, lsl 1]
add x0, x0, 1
cmp x0, 63
bne .L1368
add x1, x1, 130
.L1369:
strh w0, [x1], 2
add w0, w0, 2
and w0, w0, 65535
cmp w0, 961
bne .L1369
b .L1349
.L1367:
cmp w0, 11
bne .L1370
add x1, x19, :lo12:.LANCHOR0
mov x0, 0
add x2, x1, 4
.L1371:
strh w0, [x2, x0, lsl 1]
add x0, x0, 1
cmp x0, 8
bne .L1371
add x1, x1, 20
.L1373:
and w3, w0, 1
ubfiz w2, w0, 1, 15
add w3, w3, 6
add w0, w0, 1
sub w2, w2, w3
strh w2, [x1], 2
and w0, w0, 65535
cmp w0, 512
bne .L1373
b .L1349
.L1370:
cmp w0, 13
bne .L1349
add x2, x19, :lo12:.LANCHOR0
mov x1, 0
add x2, x2, 4
mov w0, 0
.L1374:
strh w0, [x1, x2]
add w0, w0, 3
and w0, w0, 65535
add x1, x1, 2
cmp w0, 1536
bne .L1374
b .L1349
.size flash_lsb_page_tbl_build, .-flash_lsb_page_tbl_build
.align 2
.global flash_die_info_init
.type flash_die_info_init, %function
flash_die_info_init:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR2
stp x21, x22, [sp, 32]
ldr w0, [x19, #:lo12:.LANCHOR2]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
str x27, [sp, 80]
tbz x0, 12, .L1397
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
adrp x0, .LC4
add x1, x1, 24
add x0, x0, :lo12:.LC4
bl printk
.L1397:
add x24, x19, :lo12:.LANCHOR2
adrp x22, .LANCHOR0
add x20, x22, :lo12:.LANCHOR0
adrp x21, .LANCHOR5
add x23, x21, :lo12:.LANCHOR5
mov w2, 8
ldrh w0, [x24, 34]
add x25, x20, 1208
ldrb w1, [x24, 20]
add x27, x24, 9
strh w0, [x20, 2]
mov w26, 2
ldrh w0, [x24, 18]
strb wzr, [x20, 1153]
sdiv w0, w0, w1
mov w1, 0
strh w0, [x23, 172]
add x0, x20, 1196
bl ftl_memset
add x0, x23, 176
mov x23, 0
mov w2, 32
mov w1, 0
bl ftl_memset
.L1399:
ldrb w2, [x24, 8]
add x7, x20, 1024
strb w26, [x23, x25]
add x1, x20, 1216
add x1, x1, x23, lsl 3
mov x0, x27
bl flash_mem_cmp8
cbnz w0, .L1398
ldrb w2, [x20, 1153]
add x1, x21, :lo12:.LANCHOR5
add x1, x1, 176
add x7, x7, x2
add w0, w2, 1
strb w0, [x20, 1153]
and w0, w23, 255
str wzr, [x1, x2, lsl 2]
strb w0, [x7, 172]
bl zftl_flash_enter_slc_mode
.L1398:
add x23, x23, 1
cmp x23, 4
bne .L1399
add x0, x19, :lo12:.LANCHOR2
add x1, x0, 8
ldrb w2, [x1, 8]
cmp w2, 2
beq .L1400
.L1404:
add x19, x19, :lo12:.LANCHOR2
add x22, x22, :lo12:.LANCHOR0
add x21, x21, :lo12:.LANCHOR5
ldr x27, [sp, 80]
ldp x23, x24, [sp, 48]
ldrb w1, [x19, 21]
ldrb w0, [x22, 1153]
ldp x25, x26, [sp, 64]
mul w0, w0, w1
ldrh w1, [x19, 22]
ldp x19, x20, [sp, 16]
mul w0, w0, w1
strh w0, [x21, 208]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 96
ret
.L1400:
add x8, x22, :lo12:.LANCHOR0
ldrh w7, [x1, 14]
add x11, x21, :lo12:.LANCHOR5
ldrb w12, [x0, 8]
and w7, w7, 65280
ldrb w13, [x1, 23]
ldrh w2, [x8, 2]
add x15, x8, 1216
add x10, x0, 9
add x11, x11, 176
add x18, x8, 1024
mov x9, 0
mul w7, w7, w2
ldrb w2, [x1, 13]
mul w7, w7, w2
lsl w14, w7, 1
.L1403:
mov w2, w12
add x1, x15, x9, lsl 3
mov x0, x10
bl flash_mem_cmp8
cbnz w0, .L1401
ldrb w0, [x8, 1153]
cmp w13, 0
csel w2, w7, w14, eq
add w1, w0, 1
strb w1, [x8, 1153]
str w2, [x11, x0, lsl 2]
add x0, x18, x0
strb w9, [x0, 172]
.L1401:
add x9, x9, 1
cmp x9, 4
bne .L1403
b .L1404
.size flash_die_info_init, .-flash_die_info_init
.align 2
.global lpa_hash_init
.type lpa_hash_init, %function
lpa_hash_init:
stp x29, x30, [sp, -32]!
mov w2, 512
mov w1, 255
add x29, sp, 0
str x19, [sp, 16]
adrp x19, .LANCHOR3
add x19, x19, :lo12:.LANCHOR3
add x0, x19, 1416
bl ftl_memset
mov w1, 255
ldrb w0, [x19, 1321]
ldrh w2, [x19, 1376]
mul w2, w2, w0
ldr x0, [x19, 1936]
lsl w2, w2, 2
bl ftl_memset
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size lpa_hash_init, .-lpa_hash_init
.align 2
.global lpa_rebuild_hash
.type lpa_rebuild_hash, %function
lpa_rebuild_hash:
stp x29, x30, [sp, -32]!
adrp x0, .LANCHOR2
add x29, sp, 0
ldr w0, [x0, #:lo12:.LANCHOR2]
stp x19, x20, [sp, 16]
tbz x0, 12, .L1417
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
adrp x0, .LC122
mov w3, 0
mov w2, 239
add x1, x1, 48
add x0, x0, :lo12:.LC122
bl printk
.L1417:
adrp x19, .LANCHOR3
add x19, x19, :lo12:.LANCHOR3
add x20, x19, 1416
mov w2, 512
mov w1, 255
mov x0, x20
bl ftl_memset
ldrb w0, [x19, 1321]
mov w1, 255
ldrh w2, [x19, 1376]
mul w2, w2, w0
ldr x0, [x19, 1936]
lsl w2, w2, 2
bl ftl_memset
mov w1, 0
.L1418:
ldrh w0, [x19, 1376]
ldrb w2, [x19, 1321]
mul w0, w0, w2
cmp w1, w0, lsl 1
blt .L1420
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1420:
ldr x0, [x19, 1928]
uxtw x2, w1
ldr w0, [x0, x2, lsl 2]
cmn w0, #1
beq .L1419
and x0, x0, 255
ldrh w3, [x20, x0, lsl 1]
strh w1, [x20, x0, lsl 1]
ldr x0, [x19, 1936]
strh w3, [x0, x2, lsl 1]
.L1419:
add w1, w1, 1
and w1, w1, 65535
b .L1418
.size lpa_rebuild_hash, .-lpa_rebuild_hash
.align 2
.global zftl_read_flash_info
.type zftl_read_flash_info, %function
zftl_read_flash_info:
stp x29, x30, [sp, -32]!
mov w2, 11
mov w1, 0
add x29, sp, 0
str x19, [sp, 16]
mov x19, x0
bl ftl_memset
adrp x1, .LANCHOR2
adrp x0, .LANCHOR0
add x1, x1, :lo12:.LANCHOR2
add x0, x0, :lo12:.LANCHOR0
add x1, x1, 8
strb wzr, [x19, 10]
mov w4, 1
ldrb w2, [x1, 9]
ldrh w3, [x0, 2]
add x0, x0, 1196
mul w2, w2, w3
strh w2, [x19, 4]
ldrb w2, [x0, 53]
strb w2, [x19, 7]
ldr w2, [x0, -164]
str w2, [x19]
ldrb w2, [x1, 9]
strb w2, [x19, 6]
ldrb w3, [x0, -43]
mov w2, 32
ldrb w1, [x1, 7]
strb w2, [x19, 8]
mov x2, 0
strb w1, [x19, 9]
.L1429:
cmp w3, w2, uxtb
bhi .L1430
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L1430:
ldrb w1, [x2, x0]
add x2, x2, 1
ldrb w5, [x19, 10]
lsl w1, w4, w1
orr w1, w1, w5
strb w1, [x19, 10]
b .L1429
.size zftl_read_flash_info, .-zftl_read_flash_info
.align 2
.global gc_static_wearleveling
.type gc_static_wearleveling, %function
gc_static_wearleveling:
stp x29, x30, [sp, -144]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldr x0, [x0, 3384]
ldr w1, [x0, 32]
mov w0, 10240
cmp w1, w0
bls .L1433
bl ftl_tmp_into_update
.L1433:
add x3, x19, :lo12:.LANCHOR0
mov w4, 36000
ldr x0, [x3, 1128]
ldr w1, [x0, 568]
ldr w2, [x0, 12]
add w4, w1, w4
cmp w2, w4
bcs .L1434
ldr x4, [x3, 3384]
ldr w3, [x0, 572]
add w3, w3, 256
ldr w4, [x4, 36]
cmp w4, w3
bcc .L1486
.L1434:
add w1, w1, 860160
add w1, w1, 3840
cmp w2, w1
bhi .L1436
add x1, x19, :lo12:.LANCHOR0
ldr x3, [x1, 3384]
ldr w1, [x0, 572]
add w1, w1, 32
ldr w3, [x3, 36]
cmp w3, w1
bls .L1487
.L1436:
add x24, x19, :lo12:.LANCHOR0
mov w20, 65535
adrp x8, .LC123
mov w21, w20
mov w9, w20
add x8, x8, :lo12:.LC123
ldr x1, [x24, 3384]
mov w28, 0
mov w27, 0
mov w26, 0
mov w25, 0
mov w23, 0
adrp x10, .LANCHOR2
stp wzr, wzr, [x29, 128]
ldr w3, [x1, 36]
str w3, [x0, 572]
str w2, [x0, 568]
str wzr, [x29, 136]
ldrh w22, [x1, 134]
.L1438:
ldrh w0, [x24, 1096]
cmp w0, w22
bhi .L1447
ldr x0, [x24, 1128]
mov w2, 128
mov w1, 255
adrp x22, .LANCHOR2
add x0, x0, 264
strh wzr, [x0, -142]
bl ftl_memset
ldr x0, [x24, 1128]
ldr w2, [x22, #:lo12:.LANCHOR2]
ldr x10, [x24, 1104]
ldrh w0, [x0, 586]
mov x1, x0
lsl x9, x0, 2
add x8, x10, x9
tbz x2, 10, .L1448
ldr x5, [x24, 1120]
ldrb w6, [x8, 3]
ldrb w4, [x8, 2]
ldr w3, [x10, x9]
ldrh w7, [x5, x0, lsl 1]
adrp x0, .LC124
ldrh w2, [x10, x9]
ubfx x5, x4, 5, 3
stp x9, x10, [x29, 104]
ubfx x3, x3, 11, 8
str x8, [x29, 120]
and w2, w2, 2047
ubfx x4, x4, 3, 2
add x0, x0, :lo12:.LC124
bl printk
ldp x9, x10, [x29, 104]
ldr x8, [x29, 120]
.L1448:
ldrb w0, [x8, 2]
adrp x24, .LANCHOR5
and w0, w0, 224
cmp w0, 32
bne .L1449
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
ldrh w0, [x0, 688]
cmp w0, 2
bls .L1449
add x0, x24, :lo12:.LANCHOR5
mov w1, 1
str w1, [x0, 212]
.L1449:
ldrb w0, [x8, 2]
tbz x0, 3, .L1450
add x3, x19, :lo12:.LANCHOR0
ldrh w1, [x10, x9]
and w1, w1, 2047
ldr x0, [x3, 3384]
ldrh w2, [x0, 96]
add x0, x24, :lo12:.LANCHOR5
ldrh w0, [x0, 216]
add w0, w1, w0, lsr 2
cmp w2, w0
ble .L1450
ldrb w0, [x8, 2]
and w1, w0, 192
cmp w1, 64
bne .L1451
ldr x0, [x3, 1128]
mov w2, 1
str x3, [x29, 120]
mov w1, 0
ldrh w0, [x0, 586]
bl gc_add_sblk
ldr x3, [x29, 120]
mov w0, 1
strh w0, [x3, 5608]
.L1450:
add x0, x19, :lo12:.LANCHOR0
ldr w2, [x22, #:lo12:.LANCHOR2]
ldr x1, [x0, 1128]
ldr x10, [x0, 1104]
ldrh w5, [x1, 584]
mov x1, x5
lsl x9, x5, 2
add x8, x10, x9
tbz x2, 10, .L1452
ldr x0, [x0, 1120]
ldrb w6, [x8, 3]
ldrb w4, [x8, 2]
ldr w3, [x10, x9]
ldrh w7, [x0, x5, lsl 1]
adrp x0, .LC125
ldrh w2, [x10, x9]
ubfx x5, x4, 5, 3
stp x9, x10, [x29, 104]
ubfx x3, x3, 11, 8
str x8, [x29, 120]
and w2, w2, 2047
ubfx x4, x4, 3, 2
add x0, x0, :lo12:.LC125
bl printk
ldp x9, x10, [x29, 104]
ldr x8, [x29, 120]
.L1452:
ldrb w0, [x8, 2]
tbz x0, 3, .L1453
add x3, x19, :lo12:.LANCHOR0
ldr w1, [x10, x9]
ldr x0, [x3, 3384]
ubfx x1, x1, 11, 8
ldrh w2, [x0, 98]
add x0, x24, :lo12:.LANCHOR5
ldrh w0, [x0, 218]
add w0, w1, w0, lsr 2
cmp w2, w0
ble .L1453
ldrb w0, [x8, 2]
and w1, w0, 192
cmp w1, 64
bne .L1454
ldr x0, [x3, 1128]
mov w2, 1
str x3, [x29, 120]
mov w1, 0
ldrh w0, [x0, 584]
bl gc_add_sblk
ldr x3, [x29, 120]
mov w0, 1
strh w0, [x3, 5608]
.L1453:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 10, .L1455
add x0, x19, :lo12:.LANCHOR0
uxtw x6, w28
lsl x1, x6, 2
ldr x2, [x0, 1104]
ldr x0, [x0, 1120]
add x5, x2, x1
ldr w3, [x2, x1]
ldrh w7, [x0, x6, lsl 1]
adrp x0, .LC126
ldrb w6, [x5, 3]
add x0, x0, :lo12:.LC126
ldrb w4, [x5, 2]
ubfx x3, x3, 11, 8
ldrh w2, [x2, x1]
mov w1, w28
ubfx x5, x4, 5, 3
and w2, w2, 2047
ubfx x4, x4, 3, 2
bl printk
.L1455:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 10, .L1456
add x0, x19, :lo12:.LANCHOR0
ldr w6, [x29, 128]
ldr x2, [x0, 1104]
lsl x1, x6, 2
ldr x0, [x0, 1120]
add x5, x2, x1
ldr w3, [x2, x1]
ldrh w7, [x0, x6, lsl 1]
adrp x0, .LC127
ldrh w2, [x2, x1]
add x0, x0, :lo12:.LC127
ldrb w6, [x5, 3]
ubfx x3, x3, 11, 8
ldr w1, [x29, 128]
and w2, w2, 2047
ldrb w4, [x5, 2]
ubfx x5, x4, 5, 3
ubfx x4, x4, 3, 2
bl printk
.L1456:
ldr w1, [x29, 132]
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
udiv w3, w1, w26
ldr w1, [x29, 136]
strh w25, [x0, 96]
udiv w4, w1, w27
strh w23, [x0, 98]
strh w20, [x0, 92]
strh w21, [x0, 94]
strh w3, [x0, 88]
strh w4, [x0, 90]
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 10, .L1457
adrp x0, .LC128
and w4, w4, 65535
and w3, w3, 65535
mov w2, w27
mov w1, w26
add x0, x0, :lo12:.LC128
bl printk
.L1457:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 10, .L1458
add x0, x24, :lo12:.LANCHOR5
mov w4, w23
mov w3, w25
mov w2, w21
mov w1, w20
ldrh w6, [x0, 218]
ldrh w5, [x0, 216]
adrp x0, .LC129
add x0, x0, :lo12:.LC129
bl printk
.L1458:
add x1, x24, :lo12:.LANCHOR5
sub w0, w23, w21
str w0, [x29, 128]
ldrh w0, [x1, 218]
ldr w2, [x29, 128]
cmp w2, w0
bgt .L1459
ldrh w1, [x1, 216]
sub w0, w25, w20
cmp w0, w1
ble .L1488
.L1459:
add x8, x19, :lo12:.LANCHOR0
mov w26, 0
mov x27, x8
mov w23, 0
ldr x0, [x8, 1128]
ldrh w28, [x0, 580]
ldr x0, [x8, 3384]
ldrh w0, [x0, 134]
str w0, [x29, 132]
add x0, x8, 3416
str x0, [x29, 136]
adrp x0, .LC131
add x0, x0, :lo12:.LC131
str x0, [x29, 120]
.L1461:
ldrh w0, [x27, 1096]
ldr w1, [x29, 132]
cmp w1, w0
bcc .L1471
.L1470:
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 1128]
str w28, [x0, 580]
.L1460:
cbz w21, .L1473
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldrh w1, [x1, 134]
.L1474:
ldrh w2, [x0, 1096]
cmp w2, w1
bhi .L1476
ldr x0, [x0, 3384]
ldrh w1, [x0, 72]
add w1, w21, w1
strh w1, [x0, 72]
ldrh w1, [x0, 98]
cmp w21, w1
bcs .L1473
sub w21, w1, w21
strh w21, [x0, 98]
.L1473:
cbz w20, .L1479
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldrh w1, [x1, 134]
.L1480:
ldrh w2, [x0, 1096]
cmp w2, w1
bhi .L1482
ldr x0, [x0, 3384]
ldrh w1, [x0, 74]
add w1, w20, w1
strh w1, [x0, 74]
ldrh w1, [x0, 96]
cmp w20, w1
bcs .L1479
sub w20, w1, w20
strh w20, [x0, 96]
.L1479:
adrp x5, .LANCHOR3
add x5, x5, :lo12:.LANCHOR3
mov w1, 0
add x0, x5, 1368
bl _list_get_gc_head_node
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L1437
add x19, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldrh w2, [x5, 1376]
ldr x3, [x19, 1120]
ldrh w1, [x3, x1]
cmp w1, w2, lsr 1
bhi .L1437
add w23, w23, 1
mov w2, 1
mov w1, 0
bl gc_add_sblk
.L1437:
add w0, w23, w26
.L1432:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
ret
.L1447:
uxtw x7, w22
ldr x5, [x24, 1104]
lsl x2, x7, 2
add x6, x5, x2
ldrb w0, [x6, 2]
and w1, w0, 224
cmp w1, 224
beq .L1439
tbz x0, 3, .L1440
ldr w0, [x5, x2]
ldrh w1, [x5, x2]
ubfx x0, x0, 11, 8
and w1, w1, 2047
.L1441:
ldr w3, [x29, 132]
add w26, w26, 1
and w26, w26, 65535
cmp w20, w1
add w3, w3, w1
str w3, [x29, 132]
bls .L1485
ldr x3, [x24, 1128]
mov w20, w1
strh w22, [x3, 586]
.L1485:
cmp w25, w1
bcs .L1444
mov w28, w22
mov w25, w1
.L1444:
cmp w0, w9
bne .L1443
.L1445:
cmp w0, 9
ccmp w1, 9, 0, hi
bhi .L1439
ldr w0, [x10, #:lo12:.LANCHOR2]
tbz x0, 8, .L1439
ldr x0, [x24, 1120]
mov w1, w22
ldrb w4, [x6, 2]
ldrb w6, [x6, 3]
ldr w3, [x5, x2]
ldrh w7, [x0, x7, lsl 1]
mov x0, x8
ldrh w2, [x5, x2]
ubfx x5, x4, 5, 3
str x10, [x29, 104]
ubfx x4, x4, 3, 2
str w9, [x29, 112]
ubfx x3, x3, 11, 8
str x8, [x29, 120]
and w2, w2, 2047
bl printk
ldr w9, [x29, 112]
ldr x10, [x29, 104]
ldr x8, [x29, 120]
.L1439:
add w22, w22, 1
and w22, w22, 65535
b .L1438
.L1440:
tst w0, 24
bne .L1442
ldrh w1, [x5, x2]
mov w0, 65535
and w1, w1, 2047
b .L1441
.L1442:
ldr w0, [x5, x2]
mov w1, 65535
ubfx x0, x0, 11, 8
.L1443:
ldr w3, [x29, 136]
add w27, w27, 1
and w27, w27, 65535
cmp w21, w0
add w3, w3, w0
str w3, [x29, 136]
bls .L1446
ldr x3, [x24, 1128]
mov w21, w0
strh w22, [x3, 584]
.L1446:
cmp w23, w0
bcs .L1445
mov w23, w0
str w22, [x29, 128]
b .L1445
.L1451:
tst w0, 224
bne .L1450
ldr x1, [x3, 1128]
mov w0, 65535
ldrh w2, [x1, 590]
cmp w2, w0
bne .L1450
ldrh w0, [x1, 586]
str x3, [x29, 120]
ldrh w1, [x1, 588]
cmp w1, w0
beq .L1450
bl zftl_remove_free_node
ldr x3, [x29, 120]
ldr x0, [x3, 1128]
ldrh w1, [x0, 586]
strh w1, [x0, 590]
mov w1, -1
strh w1, [x0, 586]
b .L1450
.L1454:
and w0, w0, 248
cmp w0, 16
bne .L1453
ldr x1, [x3, 1128]
mov w0, 65535
ldrh w2, [x1, 588]
cmp w2, w0
bne .L1453
ldrh w0, [x1, 584]
str x3, [x29, 120]
ldrh w1, [x1, 590]
cmp w1, w0
beq .L1453
bl zftl_remove_free_node
ldr x3, [x29, 120]
ldr x0, [x3, 1128]
ldrh w1, [x0, 584]
strh w1, [x0, 588]
mov w1, -1
strh w1, [x0, 584]
b .L1453
.L1471:
add w7, w28, 1
ldr x4, [x27, 1104]
and w28, w7, 65535
cmp w0, w28
csel w28, w28, wzr, hi
uxtw x9, w28
lsl x3, x9, 2
add x0, x4, x3
ldrb w0, [x0, 2]
tst w0, 192
beq .L1463
and w2, w0, 224
cmp w2, 224
beq .L1463
ubfx x0, x0, 3, 2
and w1, w0, 1
tbz x0, 0, .L1464
cmp w2, 160
.L1551:
bne .L1466
add x0, x24, :lo12:.LANCHOR5
ldr w2, [x29, 128]
ldrh w0, [x0, 218]
cmp w2, w0
ble .L1467
ldr w0, [x4, x3]
ubfx x0, x0, 11, 8
cmp w0, w21
bls .L1468
cbz w1, .L1467
ldrh w0, [x4, x3]
and w0, w0, 2047
cmp w0, w20
bgt .L1467
.L1468:
mov w1, 0
stp x4, x9, [x29, 96]
str x3, [x29, 112]
mov w2, 1
mov w0, w28
bl gc_add_sblk
ldr x1, [x29, 136]
mov w0, 1
add w23, w23, 1
ldr x3, [x29, 112]
ldp x4, x9, [x29, 96]
strh w0, [x1, 2192]
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 10, .L1467
ldr x0, [x27, 1104]
ldr w6, [x4, x3]
ldrh w5, [x4, x3]
add x3, x0, x3
ldr x1, [x27, 1120]
ldr x0, [x29, 136]
ubfx x6, x6, 11, 8
ldrb w2, [x3, 2]
and w5, w5, 2047
ldrh w3, [x1, x9, lsl 1]
mov w1, w28
ldrh w4, [x0, 56]
ubfx x2, x2, 5, 3
adrp x0, .LC130
add x0, x0, :lo12:.LC130
.L1552:
bl printk
.L1467:
cmp w23, 4
ccmp w26, 4, 2, ls
bhi .L1470
.L1463:
ldr w0, [x29, 132]
add w0, w0, 1
and w0, w0, 65535
str w0, [x29, 132]
b .L1461
.L1464:
cmp w0, 2
b .L1551
.L1466:
add x2, x24, :lo12:.LANCHOR5
sub w0, w25, w20
ldrh w2, [x2, 216]
cmp w0, w2
ble .L1467
ldrh w0, [x4, x3]
add w2, w20, 8
and w0, w0, 2047
cmp w0, w2
ble .L1469
cbz w1, .L1467
ldr w0, [x4, x3]
add w1, w21, 4
ubfx x0, x0, 11, 8
cmp w0, w1
bgt .L1467
.L1469:
mov w1, 0
stp x4, x9, [x29, 96]
str x3, [x29, 112]
mov w2, 1
mov w0, w28
bl gc_add_sblk
ldr x1, [x29, 136]
mov w0, 1
add w26, w26, 1
ldr x3, [x29, 112]
ldp x4, x9, [x29, 96]
strh w0, [x1, 2192]
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 10, .L1467
ldr x0, [x27, 1104]
ldr w6, [x4, x3]
ldrh w5, [x4, x3]
add x3, x0, x3
ldr x1, [x27, 1120]
ldr x0, [x29, 136]
ubfx x6, x6, 11, 8
ldrb w2, [x3, 2]
and w5, w5, 2047
ldrh w3, [x1, x9, lsl 1]
mov w1, w28
ldrh w4, [x0, 56]
ubfx x2, x2, 5, 3
ldr x0, [x29, 120]
b .L1552
.L1488:
mov w26, 0
mov w23, 0
b .L1460
.L1476:
ldr x5, [x0, 1104]
ubfiz x4, x1, 2, 16
add x6, x5, x4
ldr w2, [x5, x4]
ubfx x3, x2, 11, 8
cmp w21, w3
bhi .L1475
ldrb w6, [x6, 2]
tst w6, 24
beq .L1475
sub w3, w3, w21
bfi w2, w3, 11, 8
str w2, [x5, x4]
.L1475:
add w1, w1, 1
and w1, w1, 65535
b .L1474
.L1482:
ldr x5, [x0, 1104]
ubfiz x4, x1, 2, 16
add x6, x5, x4
ldrh w2, [x5, x4]
and w3, w2, 2047
cmp w3, w20
blt .L1481
ldrb w6, [x6, 2]
and w6, w6, 24
cmp w6, 16
beq .L1481
sub w3, w3, w20
bfi w2, w3, 0, 11
strh w2, [x5, x4]
.L1481:
add w1, w1, 1
and w1, w1, 65535
b .L1480
.L1487:
mov w26, 0
mov w23, 0
b .L1437
.L1486:
mov w0, 0
b .L1432
.size gc_static_wearleveling, .-gc_static_wearleveling
.align 2
.global zftl_sblk_list_init
.type zftl_sblk_list_init, %function
zftl_sblk_list_init:
stp x29, x30, [sp, -96]!
mov w0, 6
mov w1, 0
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
adrp x25, .LANCHOR4
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR3
ldrh w2, [x19, 1096]
add x25, x25, :lo12:.LANCHOR4
str x27, [sp, 80]
add x26, x19, 3372
add x25, x25, 72
mov w23, 0
mul w2, w2, w0
ldr x0, [x19, 1040]
bl ftl_memset
strh wzr, [x19, 3368]
add x0, x22, :lo12:.LANCHOR3
mov w1, 32
strh wzr, [x19, 3370]
strh wzr, [x19, 3372]
ldrb w24, [x0, 1321]
strh w1, [x0, 1408]
str xzr, [x0, 1344]
str xzr, [x0, 1360]
str xzr, [x0, 1368]
str xzr, [x0, 1384]
str xzr, [x0, 1392]
str xzr, [x0, 1400]
ldrh w0, [x0, 1338]
strh wzr, [x19, 3374]
strh wzr, [x19, 3378]
strh wzr, [x19, 3376]
mul w0, w24, w0
mov w24, 32768
sdiv w24, w24, w0
ldr x0, [x19, 3384]
ldrsh w20, [x0, 134]
sxth w24, w24
strh wzr, [x0, 146]
.L1554:
ldrh w0, [x19, 1096]
cmp w20, w0
blt .L1571
ldr x0, [x19, 3384]
ldrh w1, [x19, 3368]
strh w1, [x0, 114]
ldrh w1, [x19, 3370]
strh w1, [x0, 118]
ldrh w1, [x19, 3372]
strh w1, [x0, 116]
ldrh w1, [x19, 3374]
strh w1, [x0, 122]
ldrh w1, [x19, 3378]
strh w1, [x0, 120]
ldrh w1, [x19, 3376]
strh w1, [x0, 124]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L1571:
ldr x21, [x19, 1104]
sxtw x27, w20
add x21, x21, x27, lsl 2
ldrb w0, [x21, 3]
cbz w0, .L1572
add x0, x22, :lo12:.LANCHOR3
ldr x3, [x19, 3384]
mov w1, 0
ldrb w4, [x0, 1321]
ldrh w5, [x0, 1338]
mov w0, 0
.L1556:
cmp w1, w4
blt .L1559
cbz w0, .L1560
mov w1, 32768
sdiv w0, w1, w0
add w0, w0, 1
sxth w0, w0
.L1555:
mov w1, 6
ldr x2, [x19, 1040]
smull x1, w20, w1
add x2, x2, x1
strh w0, [x2, 4]
mov w2, -1
ldr x0, [x19, 1040]
add x3, x0, x1
strh w2, [x3, 2]
strh w2, [x0, x1]
mov w1, 224
ldrb w0, [x21, 2]
and w0, w0, 224
cmp w0, 32
ccmp w0, w1, 4, ne
beq .L1561
ldr x1, [x19, 1128]
ldrh w2, [x1, 16]
cmp w20, w2
beq .L1561
ldrh w2, [x1, 48]
cmp w20, w2
beq .L1561
ldrh w1, [x1, 80]
cmp w20, w1
beq .L1561
cmp w0, 64
bne .L1562
and w21, w20, 65535
add x0, x22, :lo12:.LANCHOR3
add x2, x19, 3374
mov w1, w21
add x0, x0, 1344
.L1583:
bl _insert_data_list
ldr x0, [x19, 1120]
ldrh w0, [x0, x27, lsl 1]
cmp w0, 7
bhi .L1561
mov w0, w21
mov w2, 0
mov w1, 1
.L1581:
bl gc_add_sblk
.L1561:
add w20, w20, 1
sxth w20, w20
b .L1554
.L1559:
ldrb w2, [x21, 3]
asr w2, w2, w1
tbnz x2, 0, .L1557
add w0, w5, w0
sxth w0, w0
.L1558:
add w1, w1, 1
b .L1556
.L1557:
ldrh w2, [x3, 146]
add w2, w2, 1
strh w2, [x3, 146]
b .L1558
.L1560:
ldrb w1, [x21, 2]
mov w2, -1
orr w1, w1, -32
strb w1, [x21, 2]
ldr x1, [x19, 1120]
strh w2, [x1, x27, lsl 1]
b .L1555
.L1572:
mov w0, w24
b .L1555
.L1562:
cmp w0, 96
bne .L1563
and w21, w20, 65535
add x0, x22, :lo12:.LANCHOR3
add x2, x19, 3376
mov w1, w21
add x0, x0, 1360
b .L1583
.L1563:
cmp w0, 160
bne .L1564
and w21, w20, 65535
add x0, x22, :lo12:.LANCHOR3
add x2, x19, 3378
mov w1, w21
add x0, x0, 1368
b .L1583
.L1564:
cbnz w0, .L1561
ldr x0, [x19, 1120]
ldrh w2, [x0, x27, lsl 1]
cbz w2, .L1565
cmp w23, 2
bgt .L1566
mov w1, w20
adrp x0, .LC132
add x0, x0, :lo12:.LC132
bl printk
ldrb w0, [x21, 2]
add w23, w23, 1
sxth w23, w23
tbz x0, 4, .L1567
mov w1, 5
.L1577:
bfi w0, w1, 5, 3
mov w2, 0
strb w0, [x21, 2]
mov w1, 1
mov w0, w20
b .L1581
.L1567:
mov w1, 2
b .L1577
.L1566:
mov x1, x25
mov w2, 656
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1565:
ldrb w0, [x21, 2]
ands w0, w0, 24
bne .L1569
add x0, x22, :lo12:.LANCHOR3
add x2, x19, 3368
mov w1, w20
add x0, x0, 1384
.L1579:
bl _insert_free_list
b .L1561
.L1569:
cmp w0, 16
add x0, x22, :lo12:.LANCHOR3
bne .L1570
add x2, x19, 3370
mov w1, w20
add x0, x0, 1392
b .L1579
.L1570:
mov x2, x26
mov w1, w20
add x0, x0, 1400
b .L1579
.size zftl_sblk_list_init, .-zftl_sblk_list_init
.align 2
.global pm_free_sblk
.type pm_free_sblk, %function
pm_free_sblk:
stp x29, x30, [sp, -368]!
adrp x0, .LANCHOR5
add x1, x0, :lo12:.LANCHOR5
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldrh w1, [x1, 220]
cmp w1, 128
bls .L1586
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 96
mov w2, 94
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L1586:
adrp x21, .LANCHOR0
add x0, x21, :lo12:.LANCHOR0
add x19, x19, :lo12:.LANCHOR5
mov w1, 0
mov w4, 65535
ldr x0, [x0, 3384]
ldrh w3, [x19, 220]
mov w19, 0
add x0, x0, 416
ldrh w2, [x0, 272]
.L1589:
ldrh w5, [x0]
cmp w5, w4
beq .L1587
add w1, w1, 1
and w1, w1, 65535
.L1587:
cmp w1, w2
bcs .L1588
cmp w1, w3
bcs .L1588
add w19, w19, 1
add x0, x0, 2
and w19, w19, 65535
cmp w19, 128
bne .L1589
.L1588:
add w19, w19, 1
mov w0, 128
and w19, w19, 65535
add x22, x29, 112
cmp w19, 129
mov w2, 256
csel w19, w19, w0, ne
mov w1, 0
mov x0, x22
adrp x23, .LANCHOR3
bl ftl_memset
str x23, [x29, 104]
add x0, x21, :lo12:.LANCHOR0
add x1, x23, :lo12:.LANCHOR3
mov w2, 24
ldr x5, [x0, 3384]
ldrb w0, [x0, 1205]
ldrh w8, [x1, 1304]
add x4, x5, 704
sub w2, w2, w0
ldrb w9, [x1, 1306]
ldrh w1, [x5, 698]
sub w0, w2, w8
mov w2, 1
add x1, x1, 176
lsl w2, w2, w0
add x1, x5, x1, lsl 2
sub w2, w2, #1
.L1591:
cmp x1, x4
bne .L1594
ldr x0, [x29, 104]
adrp x27, .LC133
adrp x28, .LC134
add x21, x21, :lo12:.LANCHOR0
add x0, x0, :lo12:.LANCHOR3
add x27, x27, :lo12:.LC133
add x28, x28, :lo12:.LC134
mov x20, 0
mov w23, 65535
mov w26, 0
ldrb w24, [x0, 1321]
ldrh w0, [x0, 1376]
mul w24, w24, w0
and w24, w24, 65535
.L1600:
ldr x0, [x21, 3384]
and w25, w20, 65535
ldr x2, [x29, 104]
mov w6, w20
add x1, x0, w20, sxtw 1
add x2, x2, :lo12:.LANCHOR3
ldrh w3, [x1, 416]
ldrb w4, [x2, 1306]
ldrh w1, [x0, 692]
sdiv w1, w1, w4
cmp w1, w3
bne .L1595
ldrb w1, [x2, 1321]
ldrh w2, [x2, 1376]
mul w1, w1, w2
strh w1, [x22, x20, lsl 1]
.L1595:
ldrh w2, [x22, x20, lsl 1]
cmp w2, w24
bcs .L1596
cmp w2, 0
csel w26, w26, w25, eq
csel w24, w24, w2, eq
.L1596:
ldrh w1, [x0, 74]
cmp w1, 2
bls .L1597
mov w1, 65535
cmp w3, w1
beq .L1597
ldr x4, [x21, 1104]
ubfiz x1, x3, 2, 16
ldrh w0, [x0, 92]
add w0, w0, 4
ldrh w4, [x4, x1]
and w4, w4, 2047
cmp w4, w0
bgt .L1597
mov w1, w6
str w6, [x29, 100]
mov x0, x27
bl printk
ldr w6, [x29, 100]
mov w23, w25
.L1597:
ldrh w0, [x22, x20, lsl 1]
cbnz w0, .L1598
sxtw x25, w6
ldr x0, [x21, 3384]
add x1, x25, 208
ldrh w3, [x0, x1, lsl 1]
mov w1, 65535
cmp w3, w1
beq .L1598
adrp x1, .LANCHOR2
ldr w1, [x1, #:lo12:.LANCHOR2]
tbz x1, 12, .L1599
ldrh w4, [x0, 688]
mov w2, 0
mov w1, w6
mov x0, x28
bl printk
.L1599:
ldr x0, [x21, 3384]
add x25, x25, 208
ldrh w0, [x0, x25, lsl 1]
bl ftl_free_sblk
ldr x0, [x21, 3384]
mov w1, -1
strh w1, [x0, x25, lsl 1]
ldrh w1, [x0, 688]
sub w1, w1, #1
strh w1, [x0, 688]
.L1598:
add x20, x20, 1
cmp w19, w20, uxth
bhi .L1600
mov w0, 65535
cmp w23, w0
csel w0, w26, w23, eq
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 368
ret
.L1594:
ldr w0, [x4]
add x6, x5, 416
mov x3, 0
lsr w0, w0, w8
and w0, w0, w2
udiv w0, w0, w9
and w0, w0, 65535
.L1593:
ldrh w7, [x6]
cmp w7, w0
bne .L1592
ldrh w7, [x22, x3, lsl 1]
add w7, w7, 1
strh w7, [x22, x3, lsl 1]
.L1592:
add x3, x3, 1
add x6, x6, 2
cmp w19, w3, uxth
bhi .L1593
add x4, x4, 4
b .L1591
.size pm_free_sblk, .-pm_free_sblk
.align 2
.global ftl_memcpy
.type ftl_memcpy, %function
ftl_memcpy:
stp x29, x30, [sp, -16]!
uxtw x2, w2
add x29, sp, 0
bl memcpy
ldp x29, x30, [sp], 16
ret
.size ftl_memcpy, .-ftl_memcpy
.align 2
.global flash_info_data_init
.type flash_info_data_init, %function
flash_info_data_init:
stp x29, x30, [sp, -32]!
adrp x1, .LANCHOR2
add x29, sp, 0
ldr w0, [x1, #:lo12:.LANCHOR2]
stp x19, x20, [sp, 16]
mov x20, x1
tbz x0, 12, .L1614
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
adrp x0, .LC135
add x2, x2, 112
mov w1, 120
add x0, x0, :lo12:.LC135
bl printk
.L1614:
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
mov w2, 2048
mov w1, 0
ldr x0, [x19, 1048]
bl ftl_memset
ldr x0, [x19, 1048]
mov w1, 21321
movk w1, 0x5359, lsl 16
mov w2, 32
str w1, [x0]
mov w1, 2032
ldr x0, [x19, 1048]
add x0, x0, 80
str w1, [x0, -72]
mov w1, 1
strh w1, [x0, -64]
add x1, x19, 1160
bl ftl_memcpy
ldr x0, [x19, 1048]
add x1, x20, :lo12:.LANCHOR2
mov w2, 32
add x1, x1, 8
add x0, x0, 48
bl ftl_memcpy
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size flash_info_data_init, .-flash_info_data_init
.align 2
.global ftl_memcpy32
.type ftl_memcpy32, %function
ftl_memcpy32:
mov x3, 0
.L1620:
cmp w2, w3
bhi .L1621
ret
.L1621:
ldr w4, [x1, x3, lsl 2]
str w4, [x0, x3, lsl 2]
add x3, x3, 1
b .L1620
.size ftl_memcpy32, .-ftl_memcpy32
.align 2
.global ftl_memcmp
.type ftl_memcmp, %function
ftl_memcmp:
stp x29, x30, [sp, -16]!
uxtw x2, w2
add x29, sp, 0
bl memcmp
ldp x29, x30, [sp], 16
ret
.size ftl_memcmp, .-ftl_memcmp
.align 2
.global timer_get_time
.type timer_get_time, %function
timer_get_time:
stp x29, x30, [sp, -16]!
adrp x0, jiffies
add x29, sp, 0
ldr x1, [x0, #:lo12:jiffies]
adrp x0, .LANCHOR5+224
ldr x0, [x0, #:lo12:.LANCHOR5+224]
sub x0, x1, x0
bl jiffies_to_msecs
ldp x29, x30, [sp], 16
ret
.size timer_get_time, .-timer_get_time
.align 2
.global StorageSysDataLoad
.type StorageSysDataLoad, %function
StorageSysDataLoad:
stp x29, x30, [sp, -32]!
mov w2, 512
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x1
mov w1, 0
mov w20, w0
mov x0, x19
bl ftl_memset
bl rknand_device_lock
adrp x0, .LANCHOR5+232
mov x2, x19
mov w1, 1
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x3, [x0, 24]
mov w0, w20
blr x3
mov w19, w0
bl rknand_device_unlock
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size StorageSysDataLoad, .-StorageSysDataLoad
.align 2
.global StorageSysDataStore
.type StorageSysDataStore, %function
StorageSysDataStore:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, w0
mov x20, x1
bl rknand_device_lock
adrp x0, .LANCHOR5+232
mov x2, x20
mov w1, 1
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x3, [x0, 32]
mov w0, w19
blr x3
mov w19, w0
bl rknand_device_unlock
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size StorageSysDataStore, .-StorageSysDataStore
.align 2
.global FlashBootVendorRead
.type FlashBootVendorRead, %function
FlashBootVendorRead:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, w0
mov w20, w1
str x21, [sp, 32]
mov x21, x2
bl rknand_device_lock
adrp x0, .LANCHOR5+232
mov x2, x21
mov w1, w20
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x3, [x0, 8]
mov w0, w19
blr x3
mov w19, w0
bl rknand_device_unlock
ldr x21, [sp, 32]
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.size FlashBootVendorRead, .-FlashBootVendorRead
.align 2
.global FlashBootVendorWrite
.type FlashBootVendorWrite, %function
FlashBootVendorWrite:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, w0
mov w20, w1
str x21, [sp, 32]
mov x21, x2
bl rknand_device_lock
adrp x0, .LANCHOR5+232
mov x2, x21
mov w1, w20
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x3, [x0, 16]
mov w0, w19
blr x3
mov w19, w0
bl rknand_device_unlock
ldr x21, [sp, 32]
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.size FlashBootVendorWrite, .-FlashBootVendorWrite
.align 2
.global flash_sram_load_store
.type flash_sram_load_store, %function
flash_sram_load_store:
stp x29, x30, [sp, -16]!
adrp x4, .LANCHOR5+240
uxtw x5, w1
add x29, sp, 0
ldr x4, [x4, #:lo12:.LANCHOR5+240]
add x4, x4, 4096
cbnz w2, .L1635
mov w2, w3
add x1, x4, x5
.L1638:
bl ftl_memcpy
ldp x29, x30, [sp], 16
ret
.L1635:
mov x1, x0
mov w2, w3
add x0, x4, x5
b .L1638
.size flash_sram_load_store, .-flash_sram_load_store
.align 2
.global FlashCs123Init
.type FlashCs123Init, %function
FlashCs123Init:
ret
.size FlashCs123Init, .-FlashCs123Init
.align 2
.global ftl_dma32_malloc
.type ftl_dma32_malloc, %function
ftl_dma32_malloc:
stp x29, x30, [sp, -48]!
cmp w0, 8192
add x29, sp, 0
stp x19, x20, [sp, 16]
str x21, [sp, 32]
ble .L1641
bl ftl_malloc
.L1640:
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L1641:
adrp x1, .LANCHOR5
add x21, x1, :lo12:.LANCHOR5
add w19, w0, 63
mov x20, x1
and w19, w19, -64
ldr w0, [x21, 248]
cmp w19, w0
ble .L1643
mov w0, 16384
bl ftl_malloc
str x0, [x21, 256]
mov w0, 16384
str w0, [x21, 248]
.L1643:
add x1, x20, :lo12:.LANCHOR5
ldr w0, [x1, 248]
sub w0, w0, w19
str w0, [x1, 248]
ldr x0, [x1, 256]
add x19, x0, w19, sxtw
str x19, [x1, 256]
b .L1640
.size ftl_dma32_malloc, .-ftl_dma32_malloc
.align 2
.global nandc_init
.type nandc_init, %function
nandc_init:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR2
mov x22, x0
stp x19, x20, [sp, 16]
ldr w0, [x21, #:lo12:.LANCHOR2]
str wzr, [x29, 56]
tbz x0, 12, .L1646
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
adrp x0, .LC136
mov x2, x22
add x1, x1, 136
add x0, x0, :lo12:.LC136
bl printk
.L1646:
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
ldr w3, [x22, 352]
mov w2, 6
mov x20, x0
strb w2, [x1, 1028]
mov w2, 12336
str x22, [x1, 1056]
movk w2, 0x5638, lsl 16
cmp w3, w2
bne .L1647
mov w0, 8
strb w0, [x1, 1028]
.L1647:
ldr w1, [x22, 128]
mov w0, 12336
movk w0, 0x5639, lsl 16
cmp w1, w0
bne .L1648
add x0, x20, :lo12:.LANCHOR0
mov w1, 9
strb w1, [x0, 1028]
.L1648:
add x19, x20, :lo12:.LANCHOR0
ldrb w0, [x19, 1028]
cmp w0, 9
bne .L1649
mov w0, 1
strb w0, [x19, 1251]
ldr w0, [x29, 56]
mov w1, 2
orr w0, w0, 256
str w0, [x29, 56]
ldr w0, [x29, 56]
bfi w0, w1, 18, 3
str w0, [x29, 56]
mov w1, 4161
ldr w0, [x29, 56]
str w0, [x22]
ldr x0, [x19, 1056]
str wzr, [x0, 520]
str w1, [x0, 4]
mov w1, 8321
ldr x0, [x19, 1056]
str w1, [x0, 8]
mov w1, 4099
movk w1, 0x10, lsl 16
str w1, [x0, 80]
mov w1, 38
str w1, [x0, 84]
mov w1, 39
str w1, [x0, 84]
ldr w1, [x21, #:lo12:.LANCHOR2]
tbz x1, 12, .L1651
ldr w1, [x0]
ldr w2, [x0, 8]
ldr w3, [x0, 80]
ldr w4, [x0, 84]
ldr w5, [x0, 88]
.L1664:
adrp x0, .LC137
add x0, x0, :lo12:.LC137
bl printk
.L1651:
add x0, x20, :lo12:.LANCHOR0
mov w1, 1
strb w1, [x0, 1252]
ldr w1, [x21, #:lo12:.LANCHOR2]
strh wzr, [x0, 1296]
strb wzr, [x0, 1249]
tbz x1, 12, .L1645
ldrb w1, [x0, 1028]
adrp x0, .LC138
add x0, x0, :lo12:.LC138
bl printk
.L1645:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.L1649:
ldr w0, [x29, 56]
mov w1, 1
strb wzr, [x19, 1251]
orr w0, w0, 256
str w0, [x29, 56]
ldr w0, [x29, 56]
bfi w0, w1, 24, 3
str w0, [x29, 56]
mov w1, 4193
ldr w0, [x29, 56]
str w0, [x22]
ldr x0, [x19, 1056]
str wzr, [x0, 336]
str w1, [x0, 4]
mov w1, 8321
ldr x0, [x19, 1056]
str w1, [x0, 344]
mov w1, 4099
movk w1, 0x10, lsl 16
str w1, [x0, 304]
mov w1, 38
str w1, [x0, 308]
mov w1, 39
str w1, [x0, 308]
mov w0, 2048
bl ftl_dma32_malloc
str x0, [x19, 1256]
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 12, .L1651
ldr x0, [x19, 1056]
ldr w1, [x0]
ldr w2, [x0, 344]
ldr w3, [x0, 304]
ldr w4, [x0, 308]
ldr w5, [x0, 312]
b .L1664
.size nandc_init, .-nandc_init
.align 2
.global zbuf_init
.type zbuf_init, %function
zbuf_init:
stp x29, x30, [sp, -48]!
adrp x0, .LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
add x19, x0, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
add x19, x19, 1304
adrp x22, .LANCHOR3
mov x20, x0
add x22, x22, :lo12:.LANCHOR3
mov w21, 0
.L1666:
and w0, w21, 255
strb w0, [x19, 1]
add w1, w0, 1
ldrb w0, [x22, 1946]
strb w1, [x19]
add w21, w21, 1
strb wzr, [x19, 2]
add x19, x19, 64
str xzr, [x19, -48]
lsl w0, w0, 9
bl ftl_dma32_malloc
str x0, [x19, -56]
mov w0, 64
bl ftl_dma32_malloc
str x0, [x19, -40]
cmp w21, 32
bne .L1666
add x0, x20, :lo12:.LANCHOR0
mov w1, -1
strb wzr, [x0, 3352]
strb w1, [x0, 3288]
strb w21, [x0, 3353]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size zbuf_init, .-zbuf_init
.align 2
.global gc_init
.type gc_init, %function
gc_init:
stp x29, x30, [sp, -48]!
mov w2, 2216
mov w1, 0
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR3
stp x21, x22, [sp, 32]
add x19, x19, :lo12:.LANCHOR3
adrp x21, .LANCHOR5
add x21, x21, :lo12:.LANCHOR5
adrp x20, .LANCHOR0
add x20, x20, :lo12:.LANCHOR0
add x22, x20, 3416
strb wzr, [x19, 1337]
strb wzr, [x21, 264]
mov x0, x22
strh wzr, [x19, 1378]
str wzr, [x21, 268]
bl ftl_memset
ldrh w1, [x19, 1376]
mov w0, -1
ldrb w3, [x19, 1321]
strh w0, [x20, 3416]
lsr w0, w1, 2
lsr w2, w1, 1
strh w0, [x20, 3452]
strh w0, [x20, 3402]
ldrh w0, [x19, 1338]
strh w2, [x20, 3454]
mul w2, w1, w3
strh w1, [x20, 3400]
mov w1, 4
and w2, w2, 65535
strh w1, [x21, 272]
sub w4, w2, #32
mul w0, w0, w3
strh w4, [x20, 3404]
strh w2, [x20, 3406]
strh wzr, [x19, 1352]
lsl w0, w0, 2
strh wzr, [x19, 1354]
strh wzr, [x19, 1356]
str xzr, [x20, 3424]
bl ftl_dma32_malloc
ldrb w1, [x19, 1321]
str x0, [x21, 280]
ldrh w0, [x19, 1338]
mul w0, w0, w1
lsl w0, w0, 2
bl ftl_dma32_malloc
ldrh w1, [x19, 1338]
str x0, [x21, 288]
ldrb w0, [x19, 1321]
mul w0, w1, w0
bl ftl_dma32_malloc
str x0, [x19, 1328]
ldrb w1, [x19, 1321]
ldrh w0, [x19, 1338]
mul w0, w0, w1
lsl w0, w0, 2
bl ftl_dma32_malloc
ldrb w1, [x19, 1321]
str x0, [x19, 1312]
ldrh w0, [x19, 1338]
mul w0, w0, w1
lsl w0, w0, 2
bl ftl_dma32_malloc
str x0, [x21, 296]
ldrh w0, [x19, 1380]
ldp x21, x22, [sp, 32]
lsr w0, w0, 2
strh w0, [x20, 3392]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.size gc_init, .-gc_init
.align 2
.global rk_ftl_de_init
.type rk_ftl_de_init, %function
rk_ftl_de_init:
stp x29, x30, [sp, -16]!
mov w1, 0
adrp x0, .LC139
add x0, x0, :lo12:.LC139
add x29, sp, 0
bl printk
adrp x0, .LANCHOR5+232
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x0, [x0, 80]
blr x0
ldp x29, x30, [sp], 16
ret
.size rk_ftl_de_init, .-rk_ftl_de_init
.align 2
.global rk_ftl_cache_write_back
.type rk_ftl_cache_write_back, %function
rk_ftl_cache_write_back:
stp x29, x30, [sp, -16]!
adrp x0, .LANCHOR5+232
add x29, sp, 0
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x1, [x0, 64]
mov w0, 0
blr x1
ldp x29, x30, [sp], 16
ret
.size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
.align 2
.global rk_nand_suspend
.type rk_nand_suspend, %function
rk_nand_suspend:
stp x29, x30, [sp, -16]!
adrp x0, .LANCHOR5+232
add x29, sp, 0
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x0, [x0, 88]
blr x0
ldp x29, x30, [sp], 16
ret
.size rk_nand_suspend, .-rk_nand_suspend
.align 2
.global rk_nand_resume
.type rk_nand_resume, %function
rk_nand_resume:
stp x29, x30, [sp, -16]!
adrp x0, .LANCHOR5+232
add x29, sp, 0
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x0, [x0, 96]
blr x0
ldp x29, x30, [sp], 16
ret
.size rk_nand_resume, .-rk_nand_resume
.align 2
.global rk_ftl_get_capacity
.type rk_ftl_get_capacity, %function
rk_ftl_get_capacity:
stp x29, x30, [sp, -16]!
adrp x0, .LANCHOR5+232
add x29, sp, 0
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x1, [x0, 72]
mov w0, 0
blr x1
ldp x29, x30, [sp], 16
ret
.size rk_ftl_get_capacity, .-rk_ftl_get_capacity
.align 2
.global rk_nandc_get_irq_status
.type rk_nandc_get_irq_status, %function
rk_nandc_get_irq_status:
stp x29, x30, [sp, -16]!
adrp x1, .LANCHOR5+232
add x29, sp, 0
ldr x1, [x1, #:lo12:.LANCHOR5+232]
ldr x1, [x1, 120]
blr x1
ldp x29, x30, [sp], 16
ret
.size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
.align 2
.global rknand_proc_ftlread
.type rknand_proc_ftlread, %function
rknand_proc_ftlread:
stp x29, x30, [sp, -16]!
adrp x1, .LANCHOR5+232
add x29, sp, 0
ldr x1, [x1, #:lo12:.LANCHOR5+232]
ldr x1, [x1, 128]
blr x1
ldp x29, x30, [sp], 16
ret
.size rknand_proc_ftlread, .-rknand_proc_ftlread
.align 2
.global FtlRead
.type FtlRead, %function
FtlRead:
stp x29, x30, [sp, -16]!
adrp x4, .LANCHOR5+232
and w0, w0, 255
add x29, sp, 0
ldr x4, [x4, #:lo12:.LANCHOR5+232]
ldr x4, [x4, 40]
blr x4
ldp x29, x30, [sp], 16
ret
.size FtlRead, .-FtlRead
.align 2
.global FtlDiscard
.type FtlDiscard, %function
FtlDiscard:
stp x29, x30, [sp, -16]!
adrp x2, .LANCHOR5+232
add x29, sp, 0
ldr x2, [x2, #:lo12:.LANCHOR5+232]
ldr x2, [x2, 56]
blr x2
ldp x29, x30, [sp], 16
ret
.size FtlDiscard, .-FtlDiscard
.align 2
.global rk_ftl_garbage_collect
.type rk_ftl_garbage_collect, %function
rk_ftl_garbage_collect:
stp x29, x30, [sp, -16]!
adrp x2, .LANCHOR5+232
add x29, sp, 0
ldr x2, [x2, #:lo12:.LANCHOR5+232]
ldr x2, [x2, 104]
blr x2
ldp x29, x30, [sp], 16
ret
.size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
.align 2
.global ReadFlashInfo
.type ReadFlashInfo, %function
ReadFlashInfo:
stp x29, x30, [sp, -16]!
adrp x1, .LANCHOR5+232
add x29, sp, 0
ldr x1, [x1, #:lo12:.LANCHOR5+232]
ldr x1, [x1, 112]
blr x1
ldp x29, x30, [sp], 16
ret
.size ReadFlashInfo, .-ReadFlashInfo
.align 2
.global rknand_print_hex
.type rknand_print_hex, %function
rknand_print_hex:
mul w6, w2, w3
stp x29, x30, [sp, -16]!
mov x5, x1
mov w4, w2
add x29, sp, 0
mov x1, x0
mov w7, 0
mov w3, 16
mov w2, 0
adrp x0, .LC140
add x0, x0, :lo12:.LC140
bl print_hex_dump
ldp x29, x30, [sp], 16
ret
.size rknand_print_hex, .-rknand_print_hex
.align 2
.global hynix_get_read_retry_default
.type hynix_get_read_retry_default, %function
hynix_get_read_retry_default:
stp x29, x30, [sp, -144]!
mov w4, -83
mov w1, -82
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
stp x23, x24, [sp, 48]
mov w23, w0
add x0, x20, :lo12:.LANCHOR0
stp x25, x26, [sp, 64]
stp x21, x22, [sp, 32]
cmp w23, 2
stp x27, x28, [sp, 80]
ldr x26, [x0, 1048]
add x0, x26, 112
str x0, [x29, 136]
mov w0, -84
add x25, x26, 128
strb w0, [x26, 128]
mov w0, -81
strb w23, [x26, 112]
strb w4, [x26, 129]
strb w1, [x26, 130]
strb w0, [x26, 131]
bne .L1696
mov w0, -89
strb w0, [x26, 128]
adrp x0, .LANCHOR2+425
mov w1, -9
strb w1, [x0, #:lo12:.LANCHOR2+425]
.L1761:
mov w28, 7
b .L1806
.L1696:
cmp w23, 3
bne .L1698
mov x4, 0
.L1699:
sub w0, w4, #80
strb w0, [x25, x4]
add x4, x4, 1
cmp x4, 8
bne .L1699
mov w28, w4
mov w27, w4
.L1697:
sub w0, w23, #1
cmp w0, 1
bhi .L1705
add x20, x20, :lo12:.LANCHOR0
adrp x21, .LANCHOR2
add x21, x21, :lo12:.LANCHOR2
add x23, x20, 1024
add x21, x21, 408
mov w26, 0
.L1706:
ldrb w0, [x20, 1153]
cmp w0, w26
bhi .L1712
.L1713:
ldr x0, [x29, 136]
strb w27, [x0, 1]
strb w28, [x0, 2]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
ret
.L1698:
cmp w23, 4
bne .L1700
mov w5, -52
strb w5, [x26, 128]
mov w5, -65
strb w5, [x26, 129]
mov w5, -86
strb w5, [x26, 130]
mov w5, -85
mov w28, 8
strb w5, [x26, 131]
mov w27, w28
mov w5, -51
strb w4, [x26, 133]
strb w5, [x26, 132]
strb w1, [x26, 134]
strb w0, [x26, 135]
b .L1697
.L1700:
cmp w23, 5
bne .L1701
mov w0, 56
strb w0, [x26, 128]
mov w0, 57
strb w0, [x26, 129]
mov w0, 58
mov w28, 8
strb w0, [x26, 130]
mov w0, 59
strb w0, [x26, 131]
.L1806:
mov w27, 4
b .L1697
.L1701:
cmp w23, 6
bne .L1702
mov w0, 14
strb w0, [x26, 128]
mov w0, 15
strb w0, [x26, 129]
mov w0, 16
mov w28, 12
strb w0, [x26, 130]
mov w0, 17
strb w0, [x26, 131]
b .L1806
.L1702:
cmp w23, 7
bne .L1703
mov x0, 0
.L1704:
sub w1, w0, #80
strb w1, [x25, x0]
add x0, x0, 1
cmp x0, 8
bne .L1704
mov w0, -44
mov w28, 12
strb w0, [x26, 136]
mov w27, 10
mov w0, -43
strb w0, [x26, 137]
b .L1697
.L1703:
cmp w23, 8
bne .L1761
mov w0, 6
strb w0, [x26, 128]
mov w0, 7
strb w0, [x26, 129]
mov w0, 9
strb w23, [x26, 130]
strb w0, [x26, 131]
mov w28, 50
mov w0, 10
mov w27, 5
strb w0, [x26, 132]
b .L1697
.L1712:
add x0, x23, w26, sxtw
mov x1, 32
mov w19, 160
ldr x24, [x20, 1056]
mov x22, 0
ldrb w0, [x0, 172]
umaddl x19, w19, w0, x1
ldr x1, [x29, 136]
ubfiz x0, x0, 8, 8
add x24, x24, x0
add x19, x1, x19
mov w1, 55
.L1707:
str w1, [x24, 2056]
str w1, [x29, 132]
ldrb w0, [x25, x22]
str w0, [x24, 2052]
mov x0, 1000
bl __const_udelay
ldr w0, [x24, 2048]
strb w0, [x19, x22]
add x22, x22, 1
cmp w27, w22, uxtb
ldr w1, [x29, 132]
bhi .L1707
mov x0, 0
.L1710:
add x1, x0, 4
add x2, x0, 28
add w3, w0, 8
add x1, x21, x1
add x2, x21, x2
.L1709:
ldrb w7, [x1], 4
ldrb w6, [x19, x0]
cmp x2, x1
add w6, w6, w7
strb w6, [x19, w3, sxtw]
add w3, w3, 8
bne .L1709
add x0, x0, 1
cmp x0, 4
bne .L1710
add w26, w26, 1
strb wzr, [x19, 16]
strb wzr, [x19, 24]
and w26, w26, 255
strb wzr, [x19, 32]
strb wzr, [x19, 40]
strb wzr, [x19, 48]
strb wzr, [x19, 41]
strb wzr, [x19, 49]
b .L1706
.L1705:
sub w0, w23, #3
cmp w0, 5
bhi .L1713
mul w0, w27, w28
add x20, x20, :lo12:.LANCHOR0
sub w25, w27, #1
mov w21, 0
and x25, x25, 255
asr w24, w0, 1
lsl w0, w0, 4
str w0, [x29, 128]
lsl w0, w24, 1
str w0, [x29, 132]
add x0, x20, 1024
str x0, [x29, 120]
add x0, x25, 1
str x0, [x29, 112]
.L1714:
ldrb w0, [x20, 1153]
cmp w0, w21
bls .L1713
ldr x0, [x29, 120]
mov w22, 160
sub w25, w23, #5
add x0, x0, w21, sxtw
ldrb w19, [x0, 172]
mov w0, w19
bl zftl_flash_exit_slc_mode
mov x0, 32
mov w1, 255
str w1, [x29, 108]
nop // between mem op and mult-accumulate
umaddl x22, w22, w19, x0
ldr x0, [x29, 136]
ubfiz x19, x19, 8, 8
add x22, x0, x22
ldr x0, [x20, 1056]
add x19, x0, x19
str w1, [x19, 2056]
bl nandc_wait_flash_ready
cmp w23, 8
ldr w1, [x29, 108]
bne .L1715
mov w0, 120
str w0, [x19, 2056]
str wzr, [x19, 2052]
mov w0, 23
str wzr, [x19, 2052]
mov w1, 25
str wzr, [x19, 2052]
add x22, x26, 144
str w0, [x19, 2056]
mov w0, 4
str w0, [x19, 2056]
str w1, [x19, 2056]
mov w1, 218
str w1, [x19, 2056]
mov w1, 21
str wzr, [x19, 2056]
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w1, [x19, 2052]
.L1809:
str w0, [x19, 2052]
mov w0, 48
str wzr, [x19, 2052]
str w0, [x19, 2056]
bl nandc_wait_flash_ready
cmp w25, 1
ccmp w23, 8, 4, hi
beq .L1762
cmp w23, 7
mov w0, 32
mov w1, 2
csel w1, w1, w0, ne
.L1722:
adrp x8, .LANCHOR5
add x0, x8, :lo12:.LANCHOR5
mov x7, 0
ldr x0, [x0, 304]
.L1723:
ldr w9, [x19, 2048]
strb w9, [x0, x7]
add x7, x7, 1
cmp w1, w7, uxtb
bhi .L1723
cmp w23, 8
bne .L1724
mov w1, 0
.L1726:
ldrb w7, [x0]
cmp w7, 50
beq .L1725
ldrb w7, [x0, 1]
cmp w7, 5
beq .L1725
add w1, w1, 1
add x0, x0, 4
and w1, w1, 255
cmp w1, 8
bne .L1726
.L1727:
adrp x0, .LC141
mov w1, 0
add x0, x0, :lo12:.LC141
bl printk
.L1729:
b .L1729
.L1715:
mov w0, 54
str w0, [x19, 2056]
cmp w23, 4
bne .L1717
mov w0, 64
str w1, [x19, 2052]
str w0, [x19, 2048]
mov w0, 204
.L1807:
str w0, [x19, 2052]
mov w0, 77
b .L1808
.L1717:
cmp w25, 1
bhi .L1719
ldrb w0, [x26, 128]
str w0, [x19, 2052]
mov w0, 82
.L1808:
str w0, [x19, 2048]
.L1718:
mov w0, 22
str w0, [x19, 2056]
mov w0, 23
str w0, [x19, 2056]
mov w0, 4
str w0, [x19, 2056]
mov w0, 25
str w0, [x19, 2056]
str wzr, [x19, 2056]
cmp w23, 6
str wzr, [x19, 2052]
str wzr, [x19, 2052]
bne .L1720
mov w0, 31
str w0, [x19, 2052]
.L1721:
mov w0, 2
b .L1809
.L1719:
cmp w23, 7
bne .L1718
mov w0, 174
str w0, [x19, 2052]
str wzr, [x19, 2048]
mov w0, 176
b .L1807
.L1720:
str wzr, [x19, 2052]
b .L1721
.L1762:
mov w1, 16
b .L1722
.L1725:
cmp w1, 6
bhi .L1727
.L1728:
add x0, x8, :lo12:.LANCHOR5
ldr x10, [x0, 304]
mov x0, 0
.L1738:
ldr w1, [x29, 128]
cmp w1, w0
bgt .L1739
add x0, x8, :lo12:.LANCHOR5
mov w9, w24
mov w7, 8
ldr x11, [x0, 304]
.L1741:
mov w0, 0
.L1740:
add w1, w0, w9
add w0, w0, 1
sbfiz x1, x1, 1, 32
cmp w24, w0
ldrh w12, [x11, x1]
mvn w12, w12
strh w12, [x11, x1]
bgt .L1740
ldr w0, [x29, 132]
subs w7, w7, #1
add w9, w9, w0
bne .L1741
mov x7, 0
mov w15, 1
.L1747:
mov w1, 0
mov w0, 0
.L1746:
mov w13, w7
lsl w14, w15, w0
mov w9, 16
mov w12, 0
.L1744:
ldrh w16, [x11, w13, sxtw 1]
add w13, w13, w24
bics wzr, w14, w16
cinc w12, w12, eq
subs w9, w9, #1
bne .L1744
cmp w12, 8
bls .L1745
orr w1, w1, w14
and w1, w1, 65535
.L1745:
add w0, w0, 1
cmp w0, 16
bne .L1746
strh w1, [x11, x7, lsl 1]
add x7, x7, 1
cmp w24, w7
bgt .L1747
add x0, x8, :lo12:.LANCHOR5
mov w7, 0
ldr x1, [x0, 304]
mov x0, 0
.L1750:
ldr w8, [x1, x0]
add x0, x0, 4
cmp w8, 0
cinc w7, w7, eq
cmp x0, 32
bne .L1750
cmp w7, 7
ble .L1751
mov w3, 1024
mov w2, 1
adrp x0, .LC142
add x0, x0, :lo12:.LC142
bl rknand_print_hex
adrp x0, .LC141
mov w1, 0
add x0, x0, :lo12:.LC141
bl printk
.L1752:
b .L1752
.L1724:
cmp w23, 7
bne .L1730
mov w1, 0
.L1732:
ldrb w7, [x0]
cmp w7, 12
beq .L1731
ldrb w7, [x0, 1]
cmp w7, 10
beq .L1731
add w1, w1, 1
add x0, x0, 4
and w1, w1, 255
cmp w1, 8
bne .L1732
.L1733:
adrp x0, .LC141
mov w1, 0
add x0, x0, :lo12:.LC141
bl printk
.L1734:
b .L1734
.L1731:
cmp w1, 6
bls .L1728
b .L1733
.L1730:
cmp w23, 6
bne .L1728
mov x1, 0
.L1735:
ldrb w7, [x0, x1]
cmp w7, 12
beq .L1728
add x7, x0, x1
ldrb w7, [x7, 8]
cmp w7, 4
beq .L1728
add x1, x1, 1
cmp x1, 8
bne .L1735
adrp x0, .LC141
mov w1, 0
add x0, x0, :lo12:.LC141
bl printk
.L1737:
b .L1737
.L1739:
ldr w1, [x19, 2048]
strb w1, [x10, x0]
add x0, x0, 1
b .L1738
.L1751:
cmp w23, 6
beq .L1764
cmp w23, 7
beq .L1765
cmp w23, 8
mov w0, 5
mov w1, 8
csel w1, w1, w0, ne
.L1753:
mov w7, 0
.L1754:
mov x0, 0
.L1755:
add w8, w9, w0
ldrb w11, [x10, x0]
add x0, x0, 1
cmp w27, w0, uxtb
strb w11, [x22, w8, sxtw]
bhi .L1755
ldr x0, [x29, 112]
add w7, w7, 1
add w9, w9, w1
cmp w28, w7
add x10, x10, x0
bgt .L1754
mov w22, 255
str w22, [x19, 2056]
bl nandc_wait_flash_ready
cmp w25, 1
bhi .L1757
mov w0, 54
str w0, [x19, 2056]
ldrb w0, [x26, 128]
str w0, [x19, 2052]
str wzr, [x19, 2048]
mov w0, 22
str w0, [x19, 2056]
mov w0, 48
str wzr, [x19, 2056]
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w22, [x19, 2052]
str w22, [x19, 2052]
str w22, [x19, 2052]
.L1810:
str w0, [x19, 2056]
add w21, w21, 1
and w21, w21, 255
bl nandc_wait_flash_ready
b .L1714
.L1764:
mov w1, 4
b .L1753
.L1765:
mov w1, 10
b .L1753
.L1757:
cmp w23, 8
bne .L1759
mov w0, 190
b .L1810
.L1759:
mov w0, 56
b .L1810
.size hynix_get_read_retry_default, .-hynix_get_read_retry_default
.align 2
.global flash_get_read_retry_tbl
.type flash_get_read_retry_tbl, %function
flash_get_read_retry_tbl:
adrp x0, .LANCHOR2+27
ldrb w0, [x0, #:lo12:.LANCHOR2+27]
sub w1, w0, #1
and w1, w1, 255
cmp w1, 7
bhi .L1814
stp x29, x30, [sp, -16]!
add x29, sp, 0
bl hynix_get_read_retry_default
ldp x29, x30, [sp], 16
ret
.L1814:
ret
.size flash_get_read_retry_tbl, .-flash_get_read_retry_tbl
.align 2
.global nandc_xfer_done
.type nandc_xfer_done, %function
nandc_xfer_done:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR5
add x0, x21, :lo12:.LANCHOR5
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
adrp x20, .LANCHOR0
strb wzr, [x0, 312]
add x0, x20, :lo12:.LANCHOR0
ldrb w1, [x0, 1028]
cmp w1, 9
bne .L1818
ldr x22, [x0, 1056]
ldr w1, [x22, 16]
str w1, [x29, 64]
ldr w1, [x22, 48]
tbnz x1, 1, .L1819
adrp x23, .LC145
adrp x24, .LC146
mov x19, x0
add x23, x23, :lo12:.LC145
add x24, x24, :lo12:.LC146
mov w21, 0
.L1820:
ldr w0, [x29, 64]
tbz x0, 20, .L1830
add x19, x20, :lo12:.LANCHOR0
add x19, x19, 1256
ldr w0, [x19, 32]
cbz w0, .L1828
ldr w1, [x29, 64]
mov w2, 1
ldr w0, [x19, 24]
ubfx x1, x1, 22, 6
lsl w1, w1, 10
bl rknand_dma_unmap_single
ldr w1, [x29, 64]
mov w2, 1
ubfx x1, x1, 22, 6
b .L1865
.L1819:
mov x19, x0
mov w23, 0
.L1821:
ldr w1, [x22, 64]
ldr w0, [x29, 64]
ubfx x1, x1, 16, 6
ubfx x0, x0, 22, 6
cmp w1, w0
bge .L1823
ldr x0, [x19, 1056]
ldr w0, [x0]
str w0, [x29, 72]
ldr w0, [x29, 72]
tbz x0, 13, .L1822
ldr w0, [x29, 72]
tbz x0, 17, .L1822
ldr w1, [x29, 72]
adrp x0, .LC143
add x0, x0, :lo12:.LC143
ubfx x1, x1, 17, 1
bl printk
.L1823:
add x19, x20, :lo12:.LANCHOR0
add x19, x19, 1256
ldr w0, [x19, 32]
cbz w0, .L1828
ldr w1, [x29, 64]
mov w2, 0
ldr w0, [x19, 24]
ubfx x1, x1, 22, 6
lsl w1, w1, 10
bl rknand_dma_unmap_single
ldr w1, [x29, 64]
mov w2, 0
ubfx x1, x1, 22, 6
.L1865:
lsl w1, w1, 2
.L1863:
ldr w0, [x19, 28]
bl rknand_dma_unmap_single
.L1828:
add x20, x20, :lo12:.LANCHOR0
ldp x21, x22, [sp, 32]
str wzr, [x20, 1288]
ldp x23, x24, [sp, 48]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 80
ret
.L1822:
ldr w0, [x29, 64]
add w23, w23, 1
ubfx x0, x0, 22, 6
cmp w23, w0, lsl 12
bne .L1824
ldr w2, [x22, 64]
mov w1, w23
ldr w3, [x29, 64]
adrp x0, .LC144
add x21, x21, :lo12:.LANCHOR5
add x0, x0, :lo12:.LC144
ubfx x2, x2, 16, 5
ubfx x3, x3, 22, 6
bl printk
ldr w1, [x29, 72]
mov w0, 1
strb w0, [x21, 312]
tbnz x1, 13, .L1823
mov x0, 35160
movk x0, 0x41, lsl 16
bl __const_udelay
b .L1823
.L1824:
mov x1, 10
mov x0, 5
bl usleep_range
b .L1821
.L1830:
ldr x0, [x19, 1056]
add w21, w21, 1
tst x21, 16777215
ldr w0, [x0, 16]
str w0, [x29, 64]
bne .L1829
ldr w2, [x29, 64]
mov w1, w21
ldr w3, [x22, 64]
mov x0, x23
ubfx x3, x3, 16, 6
bl printk
ldr x1, [x19, 1056]
mov w3, 64
mov w2, 4
mov x0, x24
bl rknand_print_hex
.L1829:
mov x1, 10
mov x0, 5
bl usleep_range
b .L1820
.L1818:
ldr x21, [x0, 1056]
mov w22, 0
mov x19, x0
ldr w1, [x21, 8]
str w1, [x29, 64]
ldr w1, [x21, 16]
tbnz x1, 1, .L1832
adrp x23, .LC145
adrp x24, .LC146
add x23, x23, :lo12:.LC145
add x24, x24, :lo12:.LC146
.L1833:
ldr w0, [x29, 64]
tbz x0, 20, .L1840
add x19, x20, :lo12:.LANCHOR0
add x19, x19, 1256
ldr w0, [x19, 32]
cbz w0, .L1828
ldr w1, [x29, 64]
mov w2, 1
ldr w0, [x19, 24]
ubfx x1, x1, 22, 6
lsl w1, w1, 10
bl rknand_dma_unmap_single
ldr w1, [x29, 64]
mov w2, 1
ubfx x1, x1, 22, 6
b .L1864
.L1832:
adrp x23, .LC144
adrp x24, .LC146
add x23, x23, :lo12:.LC144
add x24, x24, :lo12:.LC146
.L1834:
ldr w1, [x21, 28]
ldr w0, [x29, 64]
ubfx x1, x1, 16, 5
ubfx x0, x0, 22, 6
cmp w1, w0
bge .L1836
ldr x0, [x19, 1056]
ldr w0, [x0]
str w0, [x29, 72]
ldr w0, [x29, 72]
tbz x0, 13, .L1835
ldr w0, [x29, 72]
tbz x0, 17, .L1835
ldr w1, [x29, 72]
adrp x0, .LC147
add x0, x0, :lo12:.LC147
bl printk
.L1836:
add x19, x20, :lo12:.LANCHOR0
add x19, x19, 1256
ldr w0, [x19, 32]
cbz w0, .L1828
ldr w1, [x29, 64]
mov w2, 0
ldr w0, [x19, 24]
ubfx x1, x1, 22, 6
lsl w1, w1, 10
bl rknand_dma_unmap_single
ldr w1, [x29, 64]
mov w2, 0
ubfx x1, x1, 22, 6
.L1864:
lsl w1, w1, 7
b .L1863
.L1835:
add w22, w22, 1
tst x22, 16777215
bne .L1837
ldr w2, [x21, 28]
mov w1, w22
ldr w3, [x29, 64]
mov x0, x23
ubfx x2, x2, 16, 5
ubfx x3, x3, 22, 6
bl printk
ldr x1, [x19, 1056]
mov w3, 64
mov w2, 4
mov x0, x24
bl rknand_print_hex
.L1837:
mov x1, 10
mov x0, 5
bl usleep_range
b .L1834
.L1840:
ldr x0, [x19, 1056]
add w22, w22, 1
tst x22, 16777215
ldr w0, [x0, 8]
str w0, [x29, 64]
bne .L1839
ldr w2, [x29, 64]
mov w1, w22
ldr w3, [x21, 28]
mov x0, x23
ubfx x3, x3, 16, 5
bl printk
ldr x1, [x19, 1056]
mov w3, 64
mov w2, 4
mov x0, x24
bl rknand_print_hex
.L1839:
mov x1, 10
mov x0, 5
bl usleep_range
b .L1833
.size nandc_xfer_done, .-nandc_xfer_done
.align 2
.global nandc_xfer
.type nandc_xfer, %function
nandc_xfer:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w2, 255
stp x21, x22, [sp, 32]
mov x21, x3
and w19, w1, 255
mov x3, x4
mov x2, x21
mov w1, w20
mov w0, w19
mov x22, x4
bl nandc_xfer_start
mov w0, w19
bl nandc_xfer_done
cbnz w19, .L1885
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 1028]
cmp w1, 9
bne .L1868
lsr w20, w20, 2
ldr x5, [x0, 1056]
mov w3, 1
mov w2, 0
mov w0, 0
.L1869:
cmp w2, w20
bcc .L1873
ldr w20, [x5]
cmp w3, 0
mov w1, 512
csel w0, w0, w1, eq
mov w1, 8192
movk w1, 0x2, lsl 16
and w1, w20, w1
cmp w1, 139264
bne .L1875
mov w1, w20
adrp x0, .LC148
add x0, x0, :lo12:.LC148
bl printk
add x0, x19, :lo12:.LANCHOR0
orr w20, w20, 131072
ldr x0, [x0, 1056]
str w20, [x0]
mov w0, -1
.L1875:
tbz x20, 13, .L1876
adrp x1, .LANCHOR5+312
ldrb w1, [x1, #:lo12:.LANCHOR5+312]
cbz w1, .L1876
add x19, x19, :lo12:.LANCHOR0
mov w1, w20
adrp x0, .LC149
add x0, x0, :lo12:.LC149
bl printk
ldr x0, [x19, 1056]
mov w1, 1
str w1, [x0, 16]
.L1904:
mov w0, -1
.L1867:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.L1873:
uxtw x1, w2
add x1, x1, 84
ldr w1, [x5, x1, lsl 2]
str w1, [x29, 56]
ldr w1, [x29, 56]
ldr w4, [x29, 56]
ubfx x4, x4, 26, 1
and w1, w4, w1, lsr 10
and w3, w3, w1
ldr w1, [x29, 56]
tbnz x1, 2, .L1887
ldr w1, [x29, 56]
tbnz x1, 18, .L1887
ldr w4, [x29, 56]
ldr w1, [x29, 56]
ubfx x4, x4, 3, 7
ubfx x1, x1, 19, 7
cmp w4, w1
ldr w1, [x29, 56]
ble .L1871
ubfx x1, x1, 3, 7
.L1872:
cmp w0, w1
csel w0, w0, w1, cs
.L1870:
add w2, w2, 1
b .L1869
.L1871:
ubfx x1, x1, 19, 7
b .L1872
.L1887:
mov w0, -1
b .L1870
.L1868:
ldrb w1, [x0, 1249]
lsr w5, w20, 1
mov w4, 64
mov w2, 1
cmp w1, 25
mov w1, 128
mov w3, 0
csel w4, w4, w1, cc
mov w1, 0
.L1878:
add w6, w4, w1
cmp w3, w5
bcc .L1879
add x0, x19, :lo12:.LANCHOR0
lsr w20, w20, 2
mov w3, 0
ldr x4, [x0, 1056]
mov w0, 0
.L1880:
cmp w3, w20
bcc .L1884
str wzr, [x4, 16]
mov w1, 8192
movk w1, 0x2, lsl 16
ldr w20, [x4]
and w1, w20, w1
cmp w1, 139264
bne .L1876
add x19, x19, :lo12:.LANCHOR0
mov w1, w20
adrp x0, .LC150
add x0, x0, :lo12:.LC150
bl printk
orr w20, w20, 131072
ldr x0, [x19, 1056]
str w20, [x0]
b .L1904
.L1879:
ldr x7, [x0, 1256]
and x1, x1, 4294967292
ldr w1, [x7, x1]
lsl w7, w3, 2
add w3, w3, 1
strb w1, [x22, x7]
lsr w7, w1, 8
strb w7, [x22, w2, uxtw]
add w7, w2, 1
lsr w8, w1, 16
lsr w1, w1, 24
strb w8, [x22, x7]
add w7, w2, 2
add w2, w2, 4
strb w1, [x22, x7]
mov w1, w6
b .L1878
.L1884:
uxtw x1, w3
add x1, x1, 8
ldr w1, [x4, x1, lsl 2]
str w1, [x29, 56]
ldr w1, [x29, 56]
tbnz x1, 2, .L1890
ldr w1, [x29, 56]
tbnz x1, 15, .L1890
ldr w2, [x29, 56]
ubfx x6, x2, 3, 5
ldr w2, [x29, 56]
ldr w1, [x29, 56]
ubfx x2, x2, 27, 1
ubfx x5, x1, 16, 5
ldr w1, [x29, 56]
orr w2, w6, w2, lsl 5
ubfx x1, x1, 29, 1
orr w1, w5, w1, lsl 5
cmp w2, w1
ldr w1, [x29, 56]
bls .L1882
ubfx x2, x1, 3, 5
ldr w1, [x29, 56]
ubfx x1, x1, 27, 1
.L1903:
orr w1, w2, w1, lsl 5
cmp w0, w1
csel w0, w0, w1, cs
.L1881:
add w3, w3, 1
b .L1880
.L1882:
ubfx x2, x1, 16, 5
ldr w1, [x29, 56]
ubfx x1, x1, 29, 1
b .L1903
.L1890:
mov w0, -1
b .L1881
.L1876:
cmn w0, #1
beq .L1867
ldr w1, [x22]
cmn w1, #1
bne .L1867
ldr w1, [x22, 4]
cmn w1, #1
bne .L1867
ldr w1, [x21]
cmn w1, #1
mov w1, 512
csel w0, w0, w1, ne
b .L1867
.L1885:
mov w0, 0
b .L1867
.size nandc_xfer, .-nandc_xfer
.align 2
.global flash_read_page
.type flash_read_page, %function
flash_read_page:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR0
str x27, [sp, 80]
add x27, x21, :lo12:.LANCHOR0
and w22, w0, 255
stp x19, x20, [sp, 16]
mov w19, 24
stp x23, x24, [sp, 48]
ldrb w0, [x27, 1205]
ubfx x23, x1, 24, 2
stp x25, x26, [sp, 64]
mov w24, w4
sub w0, w19, w0
mov w19, 1
mov x25, x2
mov x26, x3
lsl w19, w19, w0
sub w19, w19, #1
and w19, w19, w1
ldr x20, [x27, 1056]
bl nandc_wait_flash_ready
mov w0, w22
bl nandc_cs
cbnz w23, .L1906
mov w0, w22
bl zftl_flash_enter_slc_mode
.L1907:
add x0, x21, :lo12:.LANCHOR0
ldr x1, [x0, 1144]
ldrb w0, [x1, 7]
cmp w0, 1
bne .L1909
ldrb w0, [x1, 12]
cmp w0, 2
bne .L1909
sxtw x0, w22
mov w2, 38
add x0, x0, 8
add x0, x20, x0, lsl 8
str w2, [x0, 8]
.L1909:
ubfiz x0, x22, 8, 8
add x20, x20, x0
and w0, w19, 255
str wzr, [x20, 2056]
str wzr, [x20, 2052]
str wzr, [x20, 2052]
str w0, [x20, 2052]
lsr w0, w19, 8
str w0, [x20, 2052]
lsr w0, w19, 16
str w0, [x20, 2052]
add x0, x21, :lo12:.LANCHOR0
ldrb w0, [x0, 1204]
cbz w0, .L1910
lsr w0, w19, 24
str w0, [x20, 2052]
.L1910:
mov w0, 48
str w0, [x20, 2056]
ldrb w0, [x1, 12]
cmp w0, 3
bne .L1911
cbz w23, .L1911
add x21, x21, :lo12:.LANCHOR0
ldrb w0, [x21, 1212]
cbnz w0, .L1911
ldrb w0, [x21, 1213]
cbnz w0, .L1911
add w19, w19, w19, lsl 1
sub w0, w19, #1
add w0, w0, w23
.L1920:
bl nandc_set_seed
bl nandc_wait_flash_ready
mov w0, 5
str w0, [x20, 2056]
str wzr, [x20, 2052]
mov w0, 224
str wzr, [x20, 2052]
mov w2, w24
str w0, [x20, 2056]
mov x4, x26
mov x3, x25
mov w1, 0
mov w0, w22
bl nandc_xfer
mov w2, w0
bl nandc_de_cs.constprop.35
mov w0, w2
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L1906:
ldr x0, [x27, 1144]
ldrb w0, [x0, 12]
cmp w0, 3
bne .L1908
ldrb w0, [x27, 1212]
cbnz w0, .L1908
ldrb w0, [x27, 1213]
cbnz w0, .L1908
sxtw x0, w22
add x0, x0, 8
add x0, x20, x0, lsl 8
str w23, [x0, 8]
b .L1907
.L1908:
mov w0, w22
bl zftl_flash_exit_slc_mode
b .L1907
.L1911:
mov w0, w19
b .L1920
.size flash_read_page, .-flash_read_page
.align 2
.global micron_read_retrial
.type micron_read_retrial, %function
micron_read_retrial:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
and w20, w0, 255
stp x25, x26, [sp, 64]
mov w24, w1
stp x27, x28, [sp, 80]
mov x26, x3
str x2, [x29, 112]
mov w22, 0
ldrb w0, [x19, 1249]
add w0, w0, w0, lsl 1
asr w1, w0, 2
stp w4, w1, [x29, 120]
bl nandc_wait_flash_ready
ldr x19, [x19, 1056]
ubfiz x0, x20, 8, 8
add x19, x19, x0
.L1922:
adrp x23, .LANCHOR5
add x23, x23, :lo12:.LANCHOR5
mov x27, x23
mov w21, 0
mov w25, -1
mov w0, w20
bl zftl_flash_enter_slc_mode
mov w0, w20
bl zftl_flash_exit_slc_mode
.L1923:
ldrb w0, [x23, 328]
cmp w21, w0
bcc .L1928
.L1927:
mov w0, 239
str w0, [x19, 2056]
mov w0, 137
str w0, [x19, 2052]
mov x0, 1000
bl __const_udelay
str wzr, [x19, 2048]
str wzr, [x19, 2048]
str wzr, [x19, 2048]
ldr w0, [x29, 124]
str wzr, [x19, 2048]
cmp w25, w0
bcc .L1929
cmn w25, #1
mov w0, 256
csel w25, w25, w0, eq
.L1929:
cmn w25, #1
cset w23, eq
cmp w25, 256
cset w0, eq
orr w0, w23, w0
cbz w0, .L1930
mov w4, w25
mov w3, w21
mov w2, w24
mov w1, w20
adrp x0, .LC152
add x0, x0, :lo12:.LC152
bl printk
eor w0, w22, 1
tst w23, w0
beq .L1931
mov w1, 3
mov w0, w20
mov w22, 1
bl mt_auto_read_calibration_config
b .L1922
.L1928:
mov w0, 239
str w0, [x19, 2056]
mov w0, 137
str w0, [x19, 2052]
add w28, w21, 1
mov x0, 1000
bl __const_udelay
str w28, [x19, 2048]
str wzr, [x19, 2048]
mov x3, x26
ldr w4, [x29, 120]
mov w1, w24
ldr x2, [x29, 112]
mov w0, w20
str wzr, [x19, 2048]
str wzr, [x19, 2048]
bl flash_read_page
mov w6, w0
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L1924
mov w4, w6
str w6, [x29, 108]
mov w3, w25
mov w2, w24
mov w1, w21
adrp x0, .LC151
add x0, x0, :lo12:.LC151
bl printk
ldr w6, [x29, 108]
.L1924:
cmn w6, #1
beq .L1925
ldr x0, [x27, 304]
cmn w25, #1
str x0, [x29, 112]
csel w25, w25, w6, ne
ldr w0, [x29, 124]
ldr x26, [x27, 320]
cmp w6, w0
bcc .L1934
.L1925:
mov w21, w28
b .L1923
.L1934:
mov w25, w6
b .L1927
.L1931:
cbz w22, .L1932
mov w0, w20
mov w1, 0
bl mt_auto_read_calibration_config
cmn w25, #1
mov w0, 256
csel w25, w25, w0, eq
.L1932:
bl nandc_wait_flash_ready
mov w0, w25
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L1930:
cbz w22, .L1932
mov w1, 0
mov w0, w20
mov w25, 256
bl mt_auto_read_calibration_config
b .L1932
.size micron_read_retrial, .-micron_read_retrial
.align 2
.global toshiba_3d_read_retrial
.type toshiba_3d_read_retrial, %function
toshiba_3d_read_retrial:
stp x29, x30, [sp, -144]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
stp x23, x24, [sp, 48]
mov w24, w1
stp x25, x26, [sp, 64]
and w23, w0, 255
stp x27, x28, [sp, 80]
mov x26, x2
stp x19, x20, [sp, 16]
mov x27, x3
mov w28, w4
bl nandc_wait_flash_ready
add x0, x22, :lo12:.LANCHOR0
and x1, x23, 255
add x21, x1, 8
str x1, [x29, 120]
mov w2, 46
mov w3, 56
ldrb w1, [x0, 1136]
ubfx x19, x24, 24, 2
ldr x25, [x0, 1056]
cmp w1, 36
mov w1, 26
csel w2, w3, w2, ne
str w2, [x29, 112]
mov w2, 10
csel w1, w2, w1, ne
str w1, [x29, 128]
add x21, x25, x21, lsl 8
cbnz w19, .L1952
str x0, [x29, 136]
sxtw x0, w23
add x0, x0, 8
mov w19, -1
add x0, x25, x0, lsl 8
mov w20, 1
str x0, [x29, 112]
.L1959:
ldr x0, [x29, 136]
ldrb w0, [x0, 1136]
cmp w0, 36
bne .L1953
mov w1, w20
mov x0, x21
mov w2, 0
bl toshiba_tlc_set_rr_para
ldr x1, [x29, 112]
mov w0, 93
str w0, [x1, 8]
.L1954:
mov w4, w28
mov x3, x27
mov x2, x26
mov w1, w24
mov w0, w23
bl flash_read_page
mov w4, w0
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 4, .L1955
mov w3, w4
str w4, [x29, 108]
mov w2, w24
mov w1, w20
adrp x0, .LC153
add x0, x0, :lo12:.LC153
bl printk
ldr w4, [x29, 108]
.L1955:
cmn w4, #1
beq .L1956
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
cmn w19, #1
csel w19, w19, w4, ne
ldr x26, [x0, 304]
ldr x27, [x0, 320]
ldr x0, [x29, 136]
ldrb w0, [x0, 1249]
add w0, w0, w0, lsl 1
cmp w4, w0, lsr 2
bcc .L1974
.L1956:
ldr w0, [x29, 128]
add w20, w20, 1
cmp w0, w20
bne .L1959
.L1958:
add x0, x22, :lo12:.LANCHOR0
ldrb w0, [x0, 1136]
cmp w0, 36
bne .L1960
mov w2, 0
.L1997:
mov w1, 0
mov x0, x21
bl toshiba_tlc_set_rr_para
b .L1961
.L1953:
mov w1, w20
mov x0, x21
bl toshiba_3d_set_slc_rr_para
b .L1954
.L1974:
mov w19, w4
b .L1958
.L1960:
mov w1, 0
mov x0, x21
bl toshiba_3d_set_slc_rr_para
.L1961:
add x0, x22, :lo12:.LANCHOR0
ldrb w0, [x0, 1136]
cmp w0, 36
bne .L1970
ldr x0, [x29, 120]
add x25, x25, x0, lsl 8
mov w0, 85
str w0, [x25, 2056]
mov w0, 255
str wzr, [x25, 2052]
str wzr, [x25, 2048]
str w0, [x25, 2056]
.L1970:
add x22, x22, :lo12:.LANCHOR0
ldrb w0, [x22, 1249]
add w0, w0, w0, lsl 1
cmp w19, w0, lsr 2
bcc .L1971
cmn w19, #1
mov w0, 256
csel w19, w19, w0, eq
.L1971:
cmp w19, 256
ccmn w19, #1, 4, ne
bne .L1972
adrp x0, .LC155
mov w4, w19
mov w3, w20
mov w2, w24
mov w1, w23
add x0, x0, :lo12:.LC155
bl printk
.L1972:
bl nandc_wait_flash_ready
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
ret
.L1952:
str x0, [x29, 136]
sxtw x0, w23
add x0, x0, 8
mov w19, -1
add x0, x25, x0, lsl 8
mov w20, 1
str x0, [x29, 128]
.L1968:
ldr x0, [x29, 136]
ldrb w0, [x0, 1136]
cmp w0, 36
bne .L1962
mov x0, x21
mov w2, 1
mov w1, w20
bl toshiba_tlc_set_rr_para
mov w0, 93
.L1996:
ldr x1, [x29, 128]
mov w4, w28
mov x3, x27
mov x2, x26
str w0, [x1, 8]
mov w1, w24
mov w0, w23
bl flash_read_page
mov w4, w0
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 4, .L1964
mov w3, w4
str w4, [x29, 108]
mov w2, w24
mov w1, w20
adrp x0, .LC154
add x0, x0, :lo12:.LC154
bl printk
ldr w4, [x29, 108]
.L1964:
cmn w4, #1
beq .L1965
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
cmn w19, #1
csel w19, w19, w4, ne
ldr x26, [x0, 304]
ldr x27, [x0, 320]
ldr x0, [x29, 136]
ldrb w0, [x0, 1249]
add w0, w0, w0, lsl 1
cmp w4, w0, lsr 2
bcc .L1975
.L1965:
ldr w0, [x29, 112]
add w20, w20, 1
cmp w0, w20
bne .L1968
.L1967:
add x0, x22, :lo12:.LANCHOR0
ldrb w0, [x0, 1136]
cmp w0, 36
bne .L1969
mov w2, 1
b .L1997
.L1962:
mov x0, x21
mov w1, w20
bl toshiba_3d_set_tlc_rr_para
mov w0, 38
b .L1996
.L1975:
mov w19, w4
b .L1967
.L1969:
mov w1, 0
mov x0, x21
bl toshiba_3d_set_tlc_rr_para
b .L1961
.size toshiba_3d_read_retrial, .-toshiba_3d_read_retrial
.align 2
.global toshiba_read_retrial
.type toshiba_read_retrial, %function
toshiba_read_retrial:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w19, w0, 255
stp x27, x28, [sp, 80]
mov x27, x2
stp w4, w1, [x29, 120]
mov x28, x3
stp x21, x22, [sp, 32]
adrp x20, .LANCHOR0
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
bl nandc_wait_flash_ready
mov w0, w19
bl zftl_flash_enter_slc_mode
mov w0, w19
bl zftl_flash_exit_slc_mode
add x1, x20, :lo12:.LANCHOR0
and x0, x19, 255
add x22, x0, 8
str x0, [x29, 112]
ldrb w0, [x1, 1136]
ldr x23, [x1, 1056]
sub w0, w0, #67
and w0, w0, 255
add x22, x23, x22, lsl 8
cmp w0, 1
bls .L2016
ldrb w0, [x1, 1192]
cbz w0, .L2017
mov w24, 1
mov w0, 1
bl nandc_set_if_mode
.L2000:
and x0, x19, 255
mov w1, 92
add x0, x23, x0, lsl 8
str w1, [x0, 2056]
mov w1, 197
str w1, [x0, 2056]
.L1999:
sxtw x0, w19
mov w21, 1
add x0, x0, 8
mov w25, -1
add x0, x23, x0, lsl 8
str x0, [x29, 104]
.L2001:
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
ldrb w0, [x0, 328]
add w0, w0, 1
cmp w21, w0
bcc .L2010
mov w26, w25
.L2009:
add x0, x20, :lo12:.LANCHOR0
mov w1, 0
ldrb w0, [x0, 1136]
sub w0, w0, #67
and w0, w0, 255
cmp w0, 1
mov x0, x22
bhi .L2011
bl sandisk_set_rr_para
.L2012:
sxtw x19, w19
add x20, x20, :lo12:.LANCHOR0
add x19, x19, 8
mov w0, 255
add x23, x23, x19, lsl 8
str w0, [x23, 8]
ldrb w0, [x20, 1249]
add w0, w0, w0, lsl 1
cmp w26, w0, lsr 2
bcc .L2013
cmn w26, #1
mov w0, 256
csel w26, w26, w0, eq
.L2013:
cmp w26, 256
ccmn w26, #1, 4, ne
bne .L2014
ldr w2, [x29, 124]
adrp x0, .LC155
mov w4, w26
mov w3, w21
mov w1, w21
add x0, x0, :lo12:.LC155
bl printk
.L2014:
bl nandc_wait_flash_ready
cbz w24, .L1998
mov w0, 4
bl nandc_set_if_mode
.L1998:
mov w0, w26
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L2017:
mov w24, 0
b .L2000
.L2016:
mov w24, 0
b .L1999
.L2010:
add x0, x20, :lo12:.LANCHOR0
mov w1, w21
ldrb w0, [x0, 1136]
sub w0, w0, #67
and w0, w0, 255
cmp w0, 1
mov x0, x22
bhi .L2002
bl sandisk_set_rr_para
.L2003:
add x0, x20, :lo12:.LANCHOR0
ldrb w0, [x0, 1136]
cmp w0, 34
bne .L2004
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
ldrb w0, [x0, 328]
sub w0, w0, #3
cmp w21, w0
bne .L2004
ldr x1, [x29, 104]
mov w0, 179
str w0, [x1, 8]
.L2004:
ldr x0, [x29, 112]
mov w1, 38
ldr w4, [x29, 120]
mov x3, x28
mov x2, x27
add x0, x23, x0, lsl 8
str w1, [x0, 2056]
mov w1, 93
str w1, [x0, 2056]
mov w0, w19
ldr w1, [x29, 124]
bl flash_read_page
mov w26, w0
cmn w0, #1
beq .L2007
cmn w25, #1
csel w25, w25, w0, ne
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
ldr x27, [x0, 304]
ldr x28, [x0, 320]
add x0, x20, :lo12:.LANCHOR0
ldrb w0, [x0, 1249]
add w0, w0, w0, lsl 1
cmp w26, w0, lsr 2
bcc .L2009
.L2007:
add w21, w21, 1
b .L2001
.L2002:
bl toshiba_set_rr_para
b .L2003
.L2011:
bl toshiba_set_rr_para
b .L2012
.size toshiba_read_retrial, .-toshiba_read_retrial
.align 2
.global ymtc_3d_read_retrial
.type ymtc_3d_read_retrial, %function
ymtc_3d_read_retrial:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, -1
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
stp x23, x24, [sp, 48]
mov w24, w1
and w23, w0, 255
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
mov x25, x2
mov x26, x3
mov w27, w4
bl nandc_wait_flash_ready
ubfiz x28, x23, 8, 8
mov w0, w23
bl zftl_flash_enter_slc_mode
mov w0, w23
bl zftl_flash_exit_slc_mode
add x1, x22, :lo12:.LANCHOR0
add x0, x28, 2048
adrp x5, .LANCHOR5
mov w20, 1
add x5, x5, :lo12:.LANCHOR5
mov x21, x1
ldr x28, [x1, 1056]
tst x24, 50331648
add x28, x28, x0
bne .L2040
.L2035:
str x5, [x29, 104]
mov w1, w20
mov x0, x28
bl ymtc_3d_set_slc_rr_para
mov w4, w27
mov x3, x26
mov x2, x25
mov w1, w24
mov w0, w23
bl flash_read_page
ldr x5, [x29, 104]
cmn w0, #1
beq .L2032
ldrb w1, [x21, 1249]
cmn w19, #1
csel w19, w19, w0, ne
ldr x25, [x5, 304]
ldr x26, [x5, 320]
add w1, w1, w1, lsl 1
cmp w0, w1, lsr 2
bcc .L2043
.L2032:
add w20, w20, 1
cmp w20, 10
bne .L2035
.L2034:
mov w1, 0
mov x0, x28
bl ymtc_3d_set_slc_rr_para
.L2036:
add x22, x22, :lo12:.LANCHOR0
ldrb w0, [x22, 1249]
add w0, w0, w0, lsl 1
cmp w19, w0, lsr 2
bcc .L2041
cmn w19, #1
mov w0, 256
csel w19, w19, w0, eq
.L2041:
cmp w19, 256
ccmn w19, #1, 4, ne
bne .L2042
adrp x0, .LC156
mov w4, w19
mov w3, w20
mov w2, w24
mov w1, w20
add x0, x0, :lo12:.LC156
bl printk
.L2042:
bl nandc_wait_flash_ready
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L2043:
mov w19, w0
b .L2034
.L2040:
str x5, [x29, 104]
mov w1, w20
mov x0, x28
bl ymtc_3d_set_tlc_rr_para
mov w4, w27
mov x3, x26
mov x2, x25
mov w1, w24
mov w0, w23
bl flash_read_page
ldr x5, [x29, 104]
cmn w0, #1
beq .L2037
ldrb w1, [x21, 1249]
cmn w19, #1
csel w19, w19, w0, ne
ldr x25, [x5, 304]
ldr x26, [x5, 320]
add w1, w1, w1, lsl 1
cmp w0, w1, lsr 2
bcc .L2044
.L2037:
add w20, w20, 1
cmp w20, 51
bne .L2040
.L2039:
mov w1, 0
mov x0, x28
bl ymtc_3d_set_tlc_rr_para
b .L2036
.L2044:
mov w19, w0
b .L2039
.size ymtc_3d_read_retrial, .-ymtc_3d_read_retrial
.align 2
.global samsung_read_retrial
.type samsung_read_retrial, %function
samsung_read_retrial:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w22, w0, 255
mov w21, w1
stp x23, x24, [sp, 48]
str w4, [x29, 108]
mov x23, x2
mov x24, x3
stp x19, x20, [sp, 16]
stp x25, x26, [sp, 64]
adrp x20, .LANCHOR0
stp x27, x28, [sp, 80]
bl nandc_wait_flash_ready
mov w0, w22
bl zftl_flash_enter_slc_mode
mov w0, w22
bl zftl_flash_exit_slc_mode
add x0, x20, :lo12:.LANCHOR0
tst x21, 50331648
and x5, x22, 255
adrp x7, .LANCHOR4
ldr x0, [x0, 1056]
bne .L2060
add x7, x7, :lo12:.LANCHOR4
adrp x25, .LC157
add x25, x25, :lo12:.LC157
add x27, x0, x5, lsl 8
mov x28, 0
add x0, x7, 152
mov w26, -1
str x0, [x29, 96]
.L2065:
mov w0, 239
str w0, [x27, 2056]
mov w0, 141
str w0, [x27, 2052]
ldr x0, [x29, 96]
add w19, w28, 1
add x0, x0, x28
ldrsb w0, [x0, 1]
str w0, [x27, 2048]
str wzr, [x27, 2048]
str wzr, [x27, 2048]
str wzr, [x27, 2048]
bl nandc_wait_flash_ready
ldr w4, [x29, 108]
mov x3, x24
mov x2, x23
mov w1, w21
mov w0, w22
bl flash_read_page
mov w4, w0
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 4, .L2061
mov w3, w4
str w4, [x29, 104]
mov w2, w21
mov w1, w19
mov x0, x25
bl printk
ldr w4, [x29, 104]
.L2061:
cmn w4, #1
beq .L2062
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
cmn w26, #1
csel w26, w26, w4, ne
ldr x23, [x0, 304]
ldr x24, [x0, 320]
add x0, x20, :lo12:.LANCHOR0
ldrb w0, [x0, 1249]
add w0, w0, w0, lsl 1
cmp w4, w0, lsr 2
bcc .L2074
.L2062:
add x28, x28, 1
cmp x28, 25
bne .L2065
mov w19, 26
.L2064:
mov w0, 239
str w0, [x27, 2056]
mov w0, 141
str w0, [x27, 2052]
str wzr, [x27, 2048]
str wzr, [x27, 2048]
str wzr, [x27, 2048]
str wzr, [x27, 2048]
.L2096:
add x20, x20, :lo12:.LANCHOR0
bl nandc_wait_flash_ready
ldrb w0, [x20, 1249]
add w0, w0, w0, lsl 1
cmp w26, w0, lsr 2
bcc .L2072
cmn w26, #1
mov w0, 256
csel w26, w26, w0, eq
.L2072:
cmp w26, 256
ccmn w26, #1, 4, ne
bne .L2073
adrp x0, .LC159
mov w4, w26
mov w3, w19
mov w2, w21
mov w1, w19
add x0, x0, :lo12:.LC159
bl printk
.L2073:
bl nandc_wait_flash_ready
mov w0, w26
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L2074:
mov w26, w4
b .L2064
.L2060:
add x7, x7, :lo12:.LANCHOR4
adrp x25, .LC158
add x27, x7, 188
add x28, x0, x5, lsl 8
add x25, x25, :lo12:.LC158
mov w26, -1
mov w19, 1
.L2071:
mov w0, 239
str w0, [x28, 2056]
mov w0, 137
str w0, [x28, 2052]
ldrb w0, [x27]
str w0, [x28, 2048]
ldrb w0, [x27, 1]
str w0, [x28, 2048]
ldrb w0, [x27, 2]
str w0, [x28, 2048]
ldrb w0, [x27, 3]
str w0, [x28, 2048]
bl nandc_wait_flash_ready
ldr w4, [x29, 108]
mov x3, x24
mov x2, x23
mov w1, w21
mov w0, w22
bl flash_read_page
mov w4, w0
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 4, .L2067
mov w3, w4
str w4, [x29, 96]
mov w2, w21
mov w1, w19
mov x0, x25
bl printk
ldr w4, [x29, 96]
.L2067:
cmn w4, #1
beq .L2068
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
cmn w26, #1
csel w26, w26, w4, ne
ldr x23, [x0, 304]
ldr x24, [x0, 320]
add x0, x20, :lo12:.LANCHOR0
ldrb w0, [x0, 1249]
add w0, w0, w0, lsl 1
cmp w4, w0, lsr 2
bcc .L2075
.L2068:
add w19, w19, 1
add x27, x27, 4
cmp w19, 26
bne .L2071
.L2070:
mov w0, 239
str w0, [x28, 2056]
mov w0, 137
str w0, [x28, 2052]
str wzr, [x28, 2048]
str wzr, [x28, 2048]
str wzr, [x28, 2048]
str wzr, [x28, 2048]
b .L2096
.L2075:
mov w26, w4
b .L2070
.size samsung_read_retrial, .-samsung_read_retrial
.align 2
.global hynix_read_retrial
.type hynix_read_retrial, %function
hynix_read_retrial:
stp x29, x30, [sp, -128]!
adrp x5, .LANCHOR0
add x8, x5, :lo12:.LANCHOR0
add x29, sp, 0
stp x21, x22, [sp, 32]
mov w22, w1
stp x25, x26, [sp, 64]
mov x25, x2
stp x19, x20, [sp, 16]
mov x26, x3
stp x23, x24, [sp, 48]
and x23, x0, 255
stp x27, x28, [sp, 80]
mov w27, w4
stp x5, x8, [x29, 112]
mov x21, x23
ldr x28, [x8, 1048]
mov w19, -1
add x28, x28, 112
add x0, x28, x23
ldrb w24, [x28, 2]
ldrb w20, [x0, 8]
bl nandc_wait_flash_ready
mov w0, w23
bl zftl_flash_enter_slc_mode
mov w0, w23
bl zftl_flash_exit_slc_mode
ldp x5, x8, [x29, 112]
adrp x7, .LANCHOR5
add x7, x7, :lo12:.LANCHOR5
mov w6, 0
.L2098:
cmp w6, w24
bcc .L2103
.L2102:
add x1, x5, :lo12:.LANCHOR0
add x23, x28, x23
ldrb w0, [x1, 1249]
strb w20, [x23, 8]
add w0, w0, w0, lsl 1
cmp w19, w0, lsr 2
bcc .L2104
cmn w19, #1
mov w0, 256
csel w19, w19, w0, eq
.L2104:
cmp w19, 256
ccmn w19, #1, 4, ne
bne .L2105
adrp x0, .LC160
mov w4, w19
mov w3, w6
mov w2, w22
mov w1, w6
add x0, x0, :lo12:.LC160
bl printk
.L2105:
bl nandc_wait_flash_ready
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L2103:
add w20, w20, 1
stp x8, x7, [x29, 96]
and w20, w20, 255
str x5, [x29, 112]
cmp w24, w20
str w6, [x29, 120]
csel w20, w20, wzr, hi
mov w0, w21
mov w1, w20
bl hynix_set_rr_para
mov w4, w27
mov x3, x26
mov x2, x25
mov w1, w22
mov w0, w21
bl flash_read_page
ldr w6, [x29, 120]
cmn w0, #1
ldp x8, x7, [x29, 96]
ldr x5, [x29, 112]
beq .L2100
ldrb w1, [x8, 1249]
cmn w19, #1
csel w19, w19, w0, ne
ldr x25, [x7, 304]
ldr x26, [x7, 320]
add w1, w1, w1, lsl 1
cmp w0, w1, lsr 2
bcc .L2106
.L2100:
add w6, w6, 1
b .L2098
.L2106:
mov w19, w0
b .L2102
.size hynix_read_retrial, .-hynix_read_retrial
.align 2
.global flash_ddr_tuning_read
.type flash_ddr_tuning_read, %function
flash_ddr_tuning_read:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 255
stp x21, x22, [sp, 32]
mov w22, w1
stp x23, x24, [sp, 48]
mov x24, x2
stp x25, x26, [sp, 64]
adrp x23, .LANCHOR5
stp x27, x28, [sp, 80]
mov x25, x3
str w4, [x29, 120]
add x23, x23, :lo12:.LANCHOR5
bl nandc_get_ddr_para
mov w28, 0
str w0, [x29, 116]
mov w26, 0
adrp x0, .LC161
mov w27, 0
add x0, x0, :lo12:.LC161
mov w19, 1024
mov w21, -1
mov w7, 6
str wzr, [x29, 124]
str x0, [x29, 104]
.L2122:
mov w0, w7
str w7, [x29, 112]
bl nandc_set_ddr_para
ldr w4, [x29, 120]
mov x3, x25
mov x2, x24
mov w1, w22
mov w0, w20
bl flash_read_page
mov w4, w0
adrp x0, .LANCHOR2
ldr w7, [x29, 112]
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 4, .L2117
ldr x0, [x29, 104]
mov w3, w4
mov w1, w7
str w4, [x29, 100]
str w7, [x29, 112]
mov w2, w22
bl printk
ldr w4, [x29, 100]
ldr w7, [x29, 112]
.L2117:
add w0, w19, 1
cmp w4, w0
bhi .L2118
adrp x0, .LANCHOR0+1249
ldr x24, [x23, 304]
ldr x25, [x23, 320]
ldrb w0, [x0, #:lo12:.LANCHOR0+1249]
cmp w4, w0, lsr 2
bcs .L2128
add w27, w27, 1
cmp w27, 7
bls .L2128
sub w28, w7, w27
mov w19, w4
mov w21, 0
.L2120:
ldr w0, [x29, 124]
cmp w27, w26
csel w28, w28, w0, cs
.L2121:
cbz w28, .L2123
adrp x0, .LANCHOR0+1249
mov w1, 3
ldrb w0, [x0, #:lo12:.LANCHOR0+1249]
udiv w0, w0, w1
cmp w0, w19
bls .L2123
mov w1, w28
adrp x0, .LC162
add x0, x0, :lo12:.LC162
bl printk
mov w0, w28
.L2142:
bl nandc_set_ddr_para
cbz w21, .L2116
adrp x0, .LANCHOR0
add x27, x0, :lo12:.LANCHOR0
mov x23, x0
ldrb w1, [x27, 1248]
tbz x1, 0, .L2116
mov w2, w22
mov w1, w20
adrp x0, .LC163
add x0, x0, :lo12:.LC163
bl printk
mov w0, w20
bl flash_reset
mov w0, 1
bl flash_set_interface_mode
mov w0, 1
bl nandc_set_if_mode
add x0, x27, w20, sxtw
mov w1, 2
strb w1, [x0, 1208]
mov w0, w20
bl zftl_flash_enter_slc_mode
ldr w4, [x29, 120]
mov x3, x25
mov x2, x24
mov w1, w22
mov w0, w20
bl flash_read_page
mov w19, w0
mov w3, w0
mov w2, w22
mov w1, w20
adrp x0, .LC164
add x0, x0, :lo12:.LC164
bl printk
ldrb w0, [x27, 1249]
cmp w19, w0
bhi .L2130
adrp x1, .LANCHOR5
add x1, x1, :lo12:.LANCHOR5
ldr w0, [x1, 332]
add w0, w0, 1
str w0, [x1, 332]
cmp w0, 100
bls .L2126
strb wzr, [x27, 1192]
.L2116:
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L2118:
cmp w27, w26
bls .L2129
sub w0, w28, w27
str w0, [x29, 124]
cmp w27, 7
bhi .L2121
mov w26, w27
.L2129:
mov w27, 0
b .L2119
.L2128:
mov w28, w7
mov w19, w4
mov w21, 0
.L2119:
add w7, w7, 2
cmp w7, 50
bne .L2122
b .L2120
.L2123:
ldrb w0, [x29, 116]
b .L2142
.L2130:
mov w19, w21
.L2126:
add x23, x23, :lo12:.LANCHOR0
ldrb w0, [x23, 1248]
bl flash_set_interface_mode
ldrb w0, [x23, 1248]
bl nandc_set_if_mode
b .L2116
.size flash_ddr_tuning_read, .-flash_ddr_tuning_read
.align 2
.global flash_read_page_en
.type flash_read_page_en, %function
flash_read_page_en:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
stp x25, x26, [sp, 64]
and w25, w0, 255
add x0, x20, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
stp x21, x22, [sp, 32]
mov w19, w1
mov x22, x2
mov x23, x3
ldrb w0, [x0, 1153]
mov w24, w4
cmp w0, w25
bhi .L2144
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 288
mov w2, 431
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2144:
add x0, x20, :lo12:.LANCHOR0
add x1, x0, w25, sxtw
ldrb w4, [x0, 1153]
ldrb w21, [x1, 1196]
cmp w25, w4
bcc .L2145
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbnz x0, 6, .L2146
.L2170:
mov w0, -1
.L2143:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L2146:
mov w3, w19
mov w2, w25
mov w1, w21
adrp x0, .LC165
add x0, x0, :lo12:.LC165
bl printk
b .L2170
.L2145:
tst x19, 50331648
bne .L2148
ldrb w1, [x20, #:lo12:.LANCHOR0]
cbz w1, .L2149
ldrb w0, [x0, 1]
cbz w0, .L2148
.L2149:
add x1, x20, :lo12:.LANCHOR0
ldrh w2, [x1, 2]
udiv w0, w19, w2
mul w0, w0, w2
ldrb w2, [x1, 1]
sub w19, w19, w0
cbz w2, .L2150
add w19, w0, w19, lsl 1
.L2148:
mov w4, w24
mov x3, x23
mov x2, x22
mov w1, w19
mov w0, w21
bl flash_read_page
cmn w0, #1
bne .L2143
add x25, x20, :lo12:.LANCHOR0
ldrb w26, [x25, 1252]
cbnz w26, .L2151
.L2154:
adrp x0, .LANCHOR5+336
ldr x5, [x0, #:lo12:.LANCHOR5+336]
cbnz x5, .L2152
.L2153:
add x20, x20, :lo12:.LANCHOR0
mov w3, -1
mov w2, w19
mov w1, 0
adrp x0, .LC166
add x0, x0, :lo12:.LC166
ldrb w4, [x20, 1252]
bl printk
ldrb w0, [x20, 1192]
cbz w0, .L2170
mov w4, w24
mov x3, x23
mov x2, x22
mov w1, w19
mov w0, w21
bl flash_ddr_tuning_read
b .L2143
.L2150:
add x1, x1, 4
ldrh w19, [x1, w19, uxtw 1]
add w19, w19, w0
b .L2148
.L2151:
strb wzr, [x25, 1252]
mov w4, w24
mov x3, x23
mov x2, x22
mov w1, w19
mov w0, w21
bl flash_read_page
strb w26, [x25, 1252]
cmn w0, #1
beq .L2154
b .L2143
.L2152:
mov w4, w24
mov x3, x23
mov x2, x22
mov w1, w19
mov w0, w21
blr x5
cmn w0, #1
bne .L2143
b .L2153
.size flash_read_page_en, .-flash_read_page_en
.align 2
.global flash_get_last_written_page
.type flash_get_last_written_page, %function
flash_get_last_written_page:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x23, x24, [sp, 48]
and w23, w0, 255
adrp x0, .LANCHOR5+172
stp x19, x20, [sp, 16]
stp x27, x28, [sp, 80]
adrp x27, .LANCHOR2
ldrh w19, [x0, #:lo12:.LANCHOR5+172]
add x0, x27, :lo12:.LANCHOR2
stp x21, x22, [sp, 32]
and w21, w1, 65535
stp x25, x26, [sp, 64]
sub w19, w19, #1
sxth w19, w19
mov x24, x2
ldrh w26, [x0, 34]
mov x22, x3
mov w25, w4
mov w0, w23
mul w26, w26, w21
add w1, w19, w26
bl flash_read_page_en
cmp w0, 512
bne .L2172
mov w28, 0
mov w5, 2
.L2173:
cmp w28, w19
ble .L2176
.L2172:
ldr w0, [x27, #:lo12:.LANCHOR2]
tbz x0, 12, .L2177
ldr w3, [x22]
adrp x0, .LC167
mov w2, w19
mov w1, w21
add x0, x0, :lo12:.LC167
bl printk
.L2177:
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L2176:
add w20, w28, w19
str w5, [x29, 108]
mov w4, w25
mov x3, x22
mov x2, x24
mov w0, w23
sdiv w20, w20, w5
add w1, w26, w20, sxth
bl flash_read_page_en
ldr w5, [x29, 108]
cmp w0, 512
bne .L2174
sub w19, w20, #1
sxth w19, w19
b .L2173
.L2174:
add w20, w20, 1
sxth w28, w20
b .L2173
.size flash_get_last_written_page, .-flash_get_last_written_page
.align 2
.global flash_get_last_written_page_ext
.type flash_get_last_written_page_ext, %function
flash_get_last_written_page_ext:
stp x29, x30, [sp, -16]!
adrp x4, .LANCHOR0+1205
mov w5, 24
mov w6, 1
add x29, sp, 0
ldrb w4, [x4, #:lo12:.LANCHOR0+1205]
and w0, w0, 65535
sub w5, w5, w4
adrp x4, .LANCHOR3+1304
ldrh w4, [x4, #:lo12:.LANCHOR3+1304]
sub w5, w5, w4
mov w4, w3
mov x3, x2
mov x2, x1
lsl w6, w6, w5
sub w6, w6, #1
and w1, w6, w0
asr w0, w0, w5
bl flash_get_last_written_page
ldp x29, x30, [sp], 16
ret
.size flash_get_last_written_page_ext, .-flash_get_last_written_page_ext
.align 2
.global flash_ddr_para_scan
.type flash_ddr_para_scan, %function
flash_ddr_para_scan:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
stp x21, x22, [sp, 32]
add x21, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
and w23, w0, 255
mov w24, w1
mov w22, 1
ldrb w0, [x21, 1248]
adrp x20, .LANCHOR5
strb w22, [x21, 1192]
add x20, x20, :lo12:.LANCHOR5
bl flash_set_interface_mode
ldrb w0, [x21, 1248]
bl nandc_set_if_mode
ldp x3, x2, [x20, 344]
mov w4, 4
mov w1, w24
mov w0, w23
bl flash_ddr_tuning_read
ldp x3, x2, [x20, 344]
mov w4, 4
mov w1, w24
mov w0, w23
bl flash_read_page
cmn w0, #1
bne .L2185
ldrb w0, [x21, 1248]
tbz x0, 0, .L2185
mov w0, 1
bl flash_set_interface_mode
mov w0, w22
bl nandc_set_if_mode
strb wzr, [x21, 1192]
.L2186:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L2185:
add x19, x19, :lo12:.LANCHOR0
mov w0, 1
strb w0, [x19, 1192]
b .L2186
.size flash_ddr_para_scan, .-flash_ddr_para_scan
.align 2
.global flash_prog_page
.type flash_prog_page, %function
flash_prog_page:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w0, 255
str x27, [sp, 80]
adrp x27, .LANCHOR0
add x0, x27, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
mov w22, w1
stp x25, x26, [sp, 64]
mov w20, 24
mov x24, x2
mov x25, x3
ldrb w1, [x0, 1205]
and x19, x21, 255
ldr x26, [x0, 1056]
add x23, x19, 8
sub w1, w20, w1
mov w20, 1
lsl w20, w20, w1
sub w20, w20, #1
bl nandc_wait_flash_ready
and w20, w20, w22
mov w0, w21
bl hynix_reconfig_rr_para
mov w0, w21
bl nandc_cs
add x23, x26, x23, lsl 8
mov w0, w21
tst x22, 50331648
bne .L2192
bl zftl_flash_enter_slc_mode
.L2193:
add x19, x26, x19, lsl 8
mov w0, 128
str w0, [x19, 2056]
and w0, w20, 255
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w20, 8
str w0, [x19, 2052]
lsr w0, w20, 16
str w0, [x19, 2052]
add x0, x27, :lo12:.LANCHOR0
ldrb w0, [x0, 1204]
cbz w0, .L2194
lsr w0, w20, 24
str w0, [x19, 2052]
.L2194:
mov w0, w20
bl nandc_set_seed
adrp x0, .LANCHOR2+17
mov x4, x25
mov x3, x24
mov w1, 1
ldrb w2, [x0, #:lo12:.LANCHOR2+17]
mov w0, w21
bl nandc_xfer
mov w0, 16
str w0, [x19, 2056]
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
mov x0, x23
bl flash_read_status
mov w3, w0
bl nandc_de_cs.constprop.35
and w2, w3, 4
tbz x3, 2, .L2191
mov w1, w22
adrp x0, .LC168
add x0, x0, :lo12:.LC168
bl printk
mov w2, -1
.L2191:
mov w0, w2
ldr x27, [sp, 80]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
ret
.L2192:
bl zftl_flash_exit_slc_mode
b .L2193
.size flash_prog_page, .-flash_prog_page
.align 2
.global flash_test_blk
.type flash_test_blk, %function
flash_test_blk:
stp x29, x30, [sp, -48]!
mov w2, 32
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR5
add x19, x19, :lo12:.LANCHOR5
stp x21, x22, [sp, 32]
and w22, w0, 255
and w20, w1, 65535
mov w1, 165
ldr x0, [x19, 304]
bl ftl_memset
ldr x0, [x19, 320]
mov w2, 8
mov w1, 90
bl ftl_memset
adrp x0, .LANCHOR0+2
ldrh w0, [x0, #:lo12:.LANCHOR0+2]
mul w20, w0, w20
mov w0, w22
mov w1, w20
bl flash_erase_block
cmn w0, #1
bne .L2204
.L2206:
mov w19, -1
.L2205:
mov w1, w20
mov w0, w22
bl flash_erase_block
mov w0, w19
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L2204:
adrp x21, .LANCHOR2
add x21, x21, :lo12:.LANCHOR2
ldr x2, [x19, 304]
mov w1, w20
ldr x3, [x19, 320]
mov w0, w22
ldrb w4, [x21, 17]
add x21, x21, 8
bl flash_prog_page
cmn w0, #1
beq .L2206
ldrb w4, [x21, 9]
mov w1, w20
ldr x2, [x19, 304]
mov w0, w22
ldr x3, [x19, 320]
bl flash_read_page_en
cmn w0, #1
beq .L2206
ldr x0, [x19, 304]
ldr w1, [x0]
mov w0, 42405
movk w0, 0xa5a5, lsl 16
cmp w1, w0
bne .L2206
ldr x0, [x19, 320]
ldr w1, [x0]
mov w0, 23130
movk w0, 0x5a5a, lsl 16
cmp w1, w0
csetm w19, ne
b .L2205
.size flash_test_blk, .-flash_test_blk
.align 2
.global flash_start_one_pass_page_prog
.type flash_start_one_pass_page_prog, %function
flash_start_one_pass_page_prog:
stp x29, x30, [sp, -32]!
and w9, w0, 255
and w8, w3, 255
adrp x7, .LANCHOR0
add x29, sp, 0
add x0, x7, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
and w20, w2, 255
ldr x19, [x0, 1056]
mov w0, w8
bl nandc_cs
cbz w9, .L2215
sxtw x0, w8
add x0, x0, 8
add x0, x19, x0, lsl 8
str w9, [x0, 8]
.L2215:
ubfiz x0, x8, 8, 8
add x7, x7, :lo12:.LANCHOR0
add x19, x19, x0
mov w0, 128
str w0, [x19, 2056]
and w0, w4, 255
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w4, 8
str w0, [x19, 2052]
lsr w0, w4, 16
str w0, [x19, 2052]
ldrb w0, [x7, 1204]
cbz w0, .L2216
lsr w0, w4, 24
str w0, [x19, 2052]
.L2216:
mov w0, w4
bl nandc_set_seed
adrp x0, .LANCHOR2+17
mov x4, x6
mov x3, x5
mov w1, 1
ldrb w2, [x0, #:lo12:.LANCHOR2+17]
mov w0, w8
bl nandc_xfer
str w20, [x19, 2056]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size flash_start_one_pass_page_prog, .-flash_start_one_pass_page_prog
.align 2
.global flash_dual_page_prog
.type flash_dual_page_prog, %function
flash_dual_page_prog:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 255
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ubfiz x22, x20, 8, 8
stp x23, x24, [sp, 48]
mov w19, 24
stp x25, x26, [sp, 64]
mov x25, x2
stp x27, x28, [sp, 80]
add x2, x22, 2048
adrp x27, .LANCHOR2
mov w21, w1
ldr x22, [x0, 1056]
mov x26, x3
ldrb w0, [x0, 1205]
mov x23, x4
mov x24, x5
ubfx x28, x21, 24, 2
sub w0, w19, w0
mov w19, 1
add x22, x22, x2
lsl w19, w19, w0
ldr w0, [x27, #:lo12:.LANCHOR2]
sub w19, w19, #1
and w19, w19, w1
tbz x0, 4, .L2225
adrp x0, .LC169
mov w3, w6
mov w2, w28
add x0, x0, :lo12:.LC169
bl printk
.L2225:
bl nandc_wait_flash_ready
mov w0, w20
bl nandc_cs
mov w0, w20
cbnz w28, .L2226
bl zftl_flash_enter_slc_mode
.L2227:
mov x6, x26
mov x5, x25
mov w4, w19
mov w3, w20
mov w2, 16
mov w1, 0
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
mov x6, x24
mov x5, x23
add w4, w19, 1
mov w3, w20
mov w2, 16
mov w1, 0
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
mov x0, x22
bl flash_read_status
mov w3, w0
bl nandc_de_cs.constprop.35
and w2, w3, 4
tbz x3, 2, .L2224
ldr w0, [x27, #:lo12:.LANCHOR2]
tbz x0, 12, .L2229
adrp x0, .LC168
mov w1, w21
add x0, x0, :lo12:.LC168
bl printk
.L2229:
mov w2, -1
.L2224:
mov w0, w2
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L2226:
bl zftl_flash_exit_slc_mode
b .L2227
.size flash_dual_page_prog, .-flash_dual_page_prog
.align 2
.global ymtc_flash_tlc_page_prog
.type ymtc_flash_tlc_page_prog, %function
ymtc_flash_tlc_page_prog:
stp x29, x30, [sp, -80]!
add x29, sp, 0
str x25, [sp, 64]
mov w25, w1
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
and w20, w0, 255
stp x21, x22, [sp, 32]
mov w19, 24
stp x23, x24, [sp, 48]
ubfiz x24, x20, 8, 8
add x0, x24, 2048
mov x22, x2
ldr x24, [x1, 1056]
mov x23, x3
mov w21, 1
add x24, x24, x0
ldrb w0, [x1, 1205]
sub w19, w19, w0
bl nandc_wait_flash_ready
lsl w19, w21, w19
mov w0, w20
sub w19, w19, #1
bl nandc_cs
and w19, w19, w25
mov w0, w20
bl zftl_flash_exit_slc_mode
mov x6, x23
mov x5, x22
mov w4, w19
mov w3, w20
mov w1, w21
mov w2, 26
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
mov x6, x23
mov x5, x22
add w4, w19, w21
mov w3, w20
mov w1, w21
mov w2, 26
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
mov x6, x23
mov x5, x22
add w4, w19, 2
mov w3, w20
mov w1, w21
mov w2, 16
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
mov x0, x24
bl flash_read_status
mov w3, w0
bl nandc_de_cs.constprop.35
and w2, w3, 4
tbz x3, 2, .L2237
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L2239
adrp x0, .LC170
mov w1, w25
add x0, x0, :lo12:.LC170
bl printk
.L2239:
mov w2, -1
.L2237:
mov w0, w2
ldr x25, [sp, 64]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 80
ret
.size ymtc_flash_tlc_page_prog, .-ymtc_flash_tlc_page_prog
.section .text.unlikely
.align 2
.type fw_flash_page_prog.constprop.29, %function
fw_flash_page_prog.constprop.29:
stp x29, x30, [sp, -64]!
adrp x4, .LANCHOR0
add x4, x4, :lo12:.LANCHOR0
add x29, sp, 0
stp x21, x22, [sp, 32]
mov x21, x1
str x23, [sp, 48]
mov x23, x2
stp x19, x20, [sp, 16]
ldr x1, [x4, 1144]
ldrb w22, [x4, 1249]
ldrb w19, [x1, 9]
udiv w19, w0, w19
ldrb w0, [x4, 1152]
bl nandc_bch_sel
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
ldrb w1, [x0, 15]
cmp w1, 9
bne .L2245
ldrb w1, [x4, 1154]
cbnz w1, .L2245
add x0, x0, 8
ldrb w0, [x0, 12]
cmp w0, 3
bne .L2246
mov x3, x23
mov x2, x21
mov w1, w19
mov w0, 0
bl ymtc_flash_tlc_page_prog
.L2249:
mov w4, w0
mov w0, w22
bl nandc_bch_sel
mov w0, w4
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldr x23, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L2246:
adrp x20, .LANCHOR5
add x20, x20, :lo12:.LANCHOR5
mov w2, 16384
mov w1, 255
ldr x0, [x20, 304]
bl ftl_memset
ldr x5, [x20, 304]
mov w6, 4
mov x3, x23
mov x2, x21
mov w1, w19
mov x4, x5
mov w0, 0
bl flash_dual_page_prog
b .L2249
.L2245:
mov w4, 4
mov x3, x23
mov x2, x21
mov w1, w19
mov w0, 0
bl flash_prog_page
b .L2249
.size fw_flash_page_prog.constprop.29, .-fw_flash_page_prog.constprop.29
.text
.align 2
.global flash_start_tlc_page_prog
.type flash_start_tlc_page_prog, %function
flash_start_tlc_page_prog:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w1, 255
stp x25, x26, [sp, 64]
and w25, w0, 255
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
and w26, w3, 255
stp x23, x24, [sp, 48]
and w22, w2, 255
mov w20, w4
mov x23, x5
ldrb w1, [x1, 1153]
mov x24, x6
mov x19, x0
cmp w1, w26
bhi .L2251
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 312
mov w2, 868
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2251:
add x0, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 1153]
cmp w1, w26
bls .L2250
add x26, x0, w26, sxtw
ldr x19, [x0, 1056]
ldrb w5, [x26, 1196]
mov w0, w5
bl nandc_cs
cbz w25, .L2253
sxtw x0, w5
add x0, x0, 8
add x0, x19, x0, lsl 8
str w25, [x0, 8]
.L2253:
ubfiz x0, x5, 8, 8
add x19, x19, x0
mov w0, 128
str w21, [x19, 2056]
str w0, [x19, 2056]
and w0, w20, 255
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w20, 8
str w0, [x19, 2052]
lsr w0, w20, 16
add w20, w20, w20, lsl 1
str w0, [x19, 2052]
sub w0, w20, #1
add w0, w0, w21
bl nandc_set_seed
adrp x0, .LANCHOR2+17
mov x4, x24
mov x3, x23
mov w1, 1
ldrb w2, [x0, #:lo12:.LANCHOR2+17]
mov w0, w5
bl nandc_xfer
str w22, [x19, 2056]
bl nandc_de_cs.constprop.35
.L2250:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.size flash_start_tlc_page_prog, .-flash_start_tlc_page_prog
.align 2
.type queue_tlc_prog_cmd, %function
queue_tlc_prog_cmd:
stp x29, x30, [sp, -64]!
mov w3, 24
add x29, sp, 0
stp x19, x20, [sp, 16]
stp x21, x22, [sp, 32]
mov x21, x0
stp x23, x24, [sp, 48]
adrp x22, .LANCHOR0
mov w24, w1
mov w23, 1
ldr x7, [x0]
add x0, x22, :lo12:.LANCHOR0
ldrb w1, [x0, 1205]
ldr w2, [x7, 40]
sub w3, w3, w1
ldrb w0, [x0, 1213]
lsl w19, w23, w1
sub w19, w19, #1
lsl w20, w23, w3
sub w20, w20, #1
and w20, w20, w2
lsr w2, w2, w3
and w19, w19, w2
and w19, w19, 255
cbz w0, .L2259
mov w0, w19
bl zftl_flash_exit_slc_mode
ldr x0, [x21]
mov w4, w20
mov w3, w19
mov w1, w23
mov w2, 26
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x0, [x21, 8]
add w4, w20, w23
mov w3, w19
mov w1, w23
mov w2, 26
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x0, [x21, 16]
add w4, w20, 2
mov w3, w19
mov w2, 16
mov w1, w23
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
.L2260:
cbz w24, .L2258
ldr x1, [x21]
mov w0, 4
strb w0, [x1, 58]
mov w0, 1
strb w0, [x1, 59]
mov w0, -1
strb w0, [x1]
add x0, x22, :lo12:.LANCHOR0
add x0, x0, 3354
bl buf_add_tail
.L2258:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L2259:
ldr x5, [x7, 8]
mov w4, w20
ldr x6, [x7, 24]
mov w3, w19
ldrb w0, [x7, 60]
mov w1, w23
mov w2, 26
bl flash_start_tlc_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldp x7, x0, [x21]
mov w4, w20
mov w3, w19
mov w2, 26
mov w1, 2
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x0, [x21, 16]
mov w4, w20
ldr x7, [x21]
mov w3, w19
mov w2, 16
mov w1, 3
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
b .L2260
.size queue_tlc_prog_cmd, .-queue_tlc_prog_cmd
.align 2
.global sblk_3d_tlc_dump_prog
.type sblk_3d_tlc_dump_prog, %function
sblk_3d_tlc_dump_prog:
stp x29, x30, [sp, -48]!
adrp x1, .LANCHOR0
add x1, x1, :lo12:.LANCHOR0
mov w3, 24
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x0
stp x21, x22, [sp, 32]
mov w22, 1
ldr w2, [x0, 40]
ldrb w0, [x1, 1205]
sub w3, w3, w0
lsl w19, w22, w0
ldrb w0, [x1, 1213]
lsl w21, w22, w3
sub w19, w19, #1
sub w21, w21, #1
and w21, w21, w2
lsr w2, w2, w3
and w19, w19, w2
and w19, w19, 255
cbz w0, .L2267
mov w0, w19
bl zftl_flash_exit_slc_mode
ldr x5, [x20, 8]
mov w4, w21
ldr x6, [x20, 24]
mov w3, w19
mov w1, w22
mov w2, 26
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x5, [x20, 8]
add w4, w21, w22
ldr x6, [x20, 24]
mov w3, w19
mov w1, w22
mov w2, 26
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x5, [x20, 8]
add w4, w21, 2
ldr x6, [x20, 24]
mov w3, w19
mov w2, 16
mov w1, w22
mov w0, 0
bl flash_start_one_pass_page_prog
.L2268:
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr w0, [x20, 40]
mov w1, 64
bl flash_wait_device_ready
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L2267:
ldr x5, [x20, 8]
mov w4, w21
ldr x6, [x20, 24]
mov w3, w19
mov w1, w22
mov w2, 26
mov w0, 0
bl flash_start_tlc_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x5, [x20, 8]
mov w4, w21
ldr x6, [x20, 24]
mov w3, w19
mov w2, 26
mov w1, 2
mov w0, 0
bl flash_start_tlc_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x5, [x20, 8]
mov w4, w21
ldr x6, [x20, 24]
mov w3, w19
mov w2, 16
mov w1, 3
mov w0, 0
bl flash_start_tlc_page_prog
b .L2268
.size sblk_3d_tlc_dump_prog, .-sblk_3d_tlc_dump_prog
.align 2
.global flash_start_3d_mlc_page_prog
.type flash_start_3d_mlc_page_prog, %function
flash_start_3d_mlc_page_prog:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w1, 255
stp x21, x22, [sp, 32]
and w21, w0, 255
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
mov x22, x3
mov w24, w2
mov x23, x4
ldrb w1, [x1, 1153]
mov x19, x0
cmp w1, w20
bhi .L2271
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 344
mov w2, 903
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2271:
add x0, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 1153]
cmp w1, w20
bls .L2270
add x20, x0, w20, sxtw
ldr x19, [x0, 1056]
ldrb w5, [x20, 1196]
mov w0, w5
bl nandc_cs
ubfiz x0, x5, 8, 8
add x19, x19, x0
mov w0, 128
str w0, [x19, 2056]
and w0, w24, 255
str wzr, [x19, 2052]
str wzr, [x19, 2052]
str w0, [x19, 2052]
lsr w0, w24, 8
str w0, [x19, 2052]
lsr w0, w24, 16
str w0, [x19, 2052]
mov w0, w24
bl nandc_set_seed
adrp x0, .LANCHOR2+17
mov x4, x23
mov x3, x22
mov w1, 1
ldrb w2, [x0, #:lo12:.LANCHOR2+17]
mov w0, w5
bl nandc_xfer
str w21, [x19, 2056]
.L2270:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.size flash_start_3d_mlc_page_prog, .-flash_start_3d_mlc_page_prog
.align 2
.global sblk_mlc_dump_prog
.type sblk_mlc_dump_prog, %function
sblk_mlc_dump_prog:
stp x29, x30, [sp, -48]!
mov w2, 24
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x0
str x21, [sp, 32]
ldr w1, [x0, 40]
adrp x0, .LANCHOR0+1205
ldrb w19, [x0, #:lo12:.LANCHOR0+1205]
mov w0, 1
sub w2, w2, w19
lsl w19, w0, w19
sub w19, w19, #1
lsl w21, w0, w2
sub w21, w21, #1
and w21, w21, w1
lsr w1, w1, w2
and w19, w19, w1
and w19, w19, 255
mov w0, w19
bl zftl_flash_exit_slc_mode
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L2275
ldr w2, [x20, 40]
adrp x0, .LC171
mov w1, w21
add x0, x0, :lo12:.LC171
add w3, w2, 1
bl printk
.L2275:
ldr x3, [x20, 8]
mov w2, w21
ldr x4, [x20, 24]
mov w1, w19
mov w0, 16
bl flash_start_3d_mlc_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr x3, [x20, 8]
add w2, w21, 1
ldr x4, [x20, 24]
mov w1, w19
mov w0, 16
bl flash_start_3d_mlc_page_prog
bl nandc_iqr_wait_flash_ready
bl nandc_wait_flash_ready
ldr w0, [x20, 40]
mov w1, 64
bl flash_wait_device_ready
mov w2, w0
bl nandc_de_cs.constprop.35
mov w0, w2
ldp x19, x20, [sp, 16]
ldr x21, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size sblk_mlc_dump_prog, .-sblk_mlc_dump_prog
.align 2
.global flash_start_page_prog
.type flash_start_page_prog, %function
flash_start_page_prog:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w0, 255
stp x25, x26, [sp, 64]
adrp x26, .LANCHOR0
add x0, x26, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
mov w24, w1
str x27, [sp, 80]
mov w19, 24
mov w20, 1
mov x22, x2
ldrb w1, [x0, 1205]
mov x23, x3
ldrb w0, [x0, 1153]
sub w25, w19, w1
lsl w20, w20, w1
sub w20, w20, #1
lsr w1, w24, w25
and w20, w20, w1
and w20, w20, 255
cmp w0, w20
bhi .L2281
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 376
mov w2, 956
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2281:
add x1, x26, :lo12:.LANCHOR0
ldrb w0, [x1, 1153]
cmp w0, w20
bls .L2280
add x0, x1, w20, sxtw
mov w19, 1
lsl w19, w19, w25
sub w19, w19, #1
and w19, w19, w24
ldr x25, [x1, 1056]
ldrb w27, [x0, 1196]
bl nandc_rdy_status
cbnz w0, .L2283
ldrb w0, [x1, 1153]
cmp w0, 1
bne .L2284
bl nandc_wait_flash_ready
.L2283:
mov w0, w27
bl hynix_reconfig_rr_para
mov w0, w27
bl nandc_cs
tst x24, 50331648
bne .L2285
mov w0, w19
bl slc_phy_page_address_calc
mov w19, w0
ldrb w0, [x26, #:lo12:.LANCHOR0]
cbz w0, .L2286
mov w0, w27
bl zftl_flash_enter_slc_mode
.L2286:
ubfiz x20, x27, 8, 8
mov w0, 128
add x20, x25, x20
add x26, x26, :lo12:.LANCHOR0
str w0, [x20, 2056]
and w0, w19, 255
str wzr, [x20, 2052]
str wzr, [x20, 2052]
str w0, [x20, 2052]
lsr w0, w19, 8
str w0, [x20, 2052]
lsr w0, w19, 16
str w0, [x20, 2052]
ldrb w0, [x26, 1204]
cbz w0, .L2287
lsr w0, w19, 24
str w0, [x20, 2052]
.L2287:
mov w0, w19
bl nandc_set_seed
adrp x0, .LANCHOR2+17
mov x4, x23
mov x3, x22
mov w1, 1
ldrb w2, [x0, #:lo12:.LANCHOR2+17]
mov w0, w27
bl nandc_xfer
str w21, [x20, 2056]
bl nandc_de_cs.constprop.35
.L2280:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L2284:
mov w2, 64
mov w1, w19
mov w0, w20
bl flash_wait_device_ready_raw
b .L2283
.L2285:
mov w0, w27
bl zftl_flash_exit_slc_mode
b .L2286
.size flash_start_page_prog, .-flash_start_page_prog
.align 2
.type queue_prog_cmd, %function
queue_prog_cmd:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
mov x19, x0
ldr w1, [x0, 40]
ldr x3, [x0, 24]
ldr x2, [x0, 8]
mov w0, 16
bl flash_start_page_prog
adrp x0, .LANCHOR0
add x3, x0, :lo12:.LANCHOR0
ldr w4, [x19, 40]
ldrb w1, [x3, 3354]
cmp w1, 255
beq .L2296
ldrb w5, [x3, 1205]
mov w2, 1
mov w6, 24
add x3, x3, 1304
sub w6, w6, w5
lsl w2, w2, w5
sub w2, w2, #1
and w2, w2, 65535
asr w4, w4, w6
and w4, w4, w2
.L2298:
add x7, x3, x1, lsl 6
ldr w5, [x7, 40]
lsr w5, w5, w6
and w5, w2, w5
cmp w4, w5
bne .L2297
ldrb w5, [x7, 58]
cmp w5, 7
bne .L2297
mov w1, 3
strb w1, [x7, 58]
.L2296:
mov w1, 3
strb w1, [x19, 58]
mov w1, 1
strb w1, [x19, 59]
mov w1, -1
strb w1, [x19]
add x0, x0, :lo12:.LANCHOR0
mov x1, x19
add x0, x0, 3354
bl buf_add_tail
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L2297:
lsl x1, x1, 6
ldrb w1, [x3, x1]
cmp w1, 255
bne .L2298
b .L2296
.size queue_prog_cmd, .-queue_prog_cmd
.align 2
.global flash_complete_plane_page_read
.type flash_complete_plane_page_read, %function
flash_complete_plane_page_read:
stp x29, x30, [sp, -64]!
mov w4, 24
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
stp x23, x24, [sp, 48]
mov w24, w0
add x0, x22, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
mov x20, x1
mov w19, 1
mov x21, x2
ldrb w1, [x0, 1205]
ldrb w0, [x0, 1153]
sub w23, w4, w1
lsl w19, w19, w1
sub w19, w19, #1
lsr w1, w24, w23
and w19, w19, w1
and w19, w19, 255
cmp w0, w19
bhi .L2305
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 400
mov w2, 1070
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2305:
add x2, x22, :lo12:.LANCHOR0
ldrb w0, [x2, 1153]
cmp w0, w19
bls .L2316
add x19, x2, w19, sxtw
mov w4, 1
lsl w4, w4, w23
ldr x7, [x2, 1056]
sub w4, w4, #1
ldrb w9, [x19, 1196]
and w4, w4, w24
ubfx x24, x24, 24, 2
mov w0, w9
bl nandc_cs
cbnz w24, .L2307
mov w0, w4
bl slc_phy_page_address_calc
mov w4, w0
.L2307:
add x8, x22, :lo12:.LANCHOR0
and x1, x9, 255
and w6, w4, 255
lsr w5, w4, 8
lsr w3, w4, 16
ldrb w0, [x8, 1176]
ldrb w2, [x8, 1204]
cmp w0, 1
bne .L2308
add x1, x7, x1, lsl 8
mov w0, 6
.L2334:
str w0, [x1, 2056]
str wzr, [x1, 2052]
str wzr, [x1, 2052]
str w6, [x1, 2052]
str w5, [x1, 2052]
str w3, [x1, 2052]
cbz w2, .L2330
lsr w0, w4, 24
str w0, [x1, 2052]
.L2330:
add x22, x22, :lo12:.LANCHOR0
mov w0, 224
str w0, [x1, 2056]
ldr x0, [x22, 1144]
ldrb w0, [x0, 12]
cmp w0, 3
bne .L2314
cbz w24, .L2314
ldrb w0, [x22, 1212]
cbnz w0, .L2314
ldrb w0, [x22, 1213]
cbnz w0, .L2314
add w4, w4, w4, lsl 1
sub w0, w24, #1
add w0, w4, w0
.L2331:
bl nandc_set_seed
adrp x0, .LANCHOR2+17
mov x4, x21
mov x3, x20
mov w1, 0
ldrb w2, [x0, #:lo12:.LANCHOR2+17]
mov w0, w9
bl nandc_xfer
mov w2, w0
bl nandc_de_cs.constprop.35
mov w0, w2
.L2304:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L2308:
ldr x0, [x8, 1144]
add x1, x7, x1, lsl 8
ldrb w0, [x0, 12]
cmp w0, 3
bne .L2311
mov w0, 5
b .L2334
.L2311:
str wzr, [x1, 2056]
str wzr, [x1, 2052]
str wzr, [x1, 2052]
str w6, [x1, 2052]
str w5, [x1, 2052]
str w3, [x1, 2052]
cbz w2, .L2313
lsr w0, w4, 24
str w0, [x1, 2052]
.L2313:
mov w0, 5
str w0, [x1, 2056]
str wzr, [x1, 2052]
str wzr, [x1, 2052]
b .L2330
.L2314:
mov w0, w4
b .L2331
.L2316:
mov w0, -1
b .L2304
.size flash_complete_plane_page_read, .-flash_complete_plane_page_read
.align 2
.global flash_complete_page_read
.type flash_complete_page_read, %function
flash_complete_page_read:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x23, x24, [sp, 48]
mov x23, x2
adrp x24, .LANCHOR0
add x2, x24, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
mov w21, w0
stp x19, x20, [sp, 16]
mov w0, 1
stp x25, x26, [sp, 64]
mov x22, x1
stp x27, x28, [sp, 80]
mov w1, 24
ubfx x25, x21, 24, 2
ldrb w20, [x2, 1205]
sub w1, w1, w20
lsl w20, w0, w20
sub w20, w20, #1
lsl w19, w0, w1
ldrb w0, [x2, 1153]
lsr w1, w21, w1
and w20, w20, w1
sub w19, w19, #1
and w20, w20, 255
and w19, w19, w21
cmp w0, w20
bhi .L2336
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 432
mov w2, 1232
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2336:
add x0, x24, :lo12:.LANCHOR0
add x20, x0, w20, sxtw
ldr x4, [x0, 1056]
ldrb w26, [x20, 1196]
mov w0, w26
bl nandc_cs
cbnz w25, .L2337
mov w0, w19
bl slc_phy_page_address_calc
mov w19, w0
.L2337:
adrp x20, .LANCHOR2
add x0, x20, :lo12:.LANCHOR2
ldrb w0, [x0, 20]
cmp w0, 3
bne .L2338
ubfiz x0, x26, 8, 8
mov w1, 5
add x0, x4, x0
str w1, [x0, 2056]
and w1, w19, 255
str wzr, [x0, 2052]
str wzr, [x0, 2052]
str w1, [x0, 2052]
lsr w1, w19, 8
str w1, [x0, 2052]
lsr w1, w19, 16
str w1, [x0, 2052]
mov w1, 224
str w1, [x0, 2056]
.L2338:
add x0, x24, :lo12:.LANCHOR0
ldr x1, [x0, 1144]
ldrb w1, [x1, 12]
cmp w1, 3
bne .L2339
cbz w25, .L2339
ldrb w1, [x0, 1212]
cbnz w1, .L2339
ldrb w0, [x0, 1213]
cbnz w0, .L2339
sub w0, w25, #1
add w1, w19, w19, lsl 1
add w0, w0, w1
.L2366:
add x27, x20, :lo12:.LANCHOR2
bl nandc_set_seed
mov x4, x23
mov x3, x22
mov w1, 0
mov w0, w26
ldrb w2, [x27, 17]
add x27, x27, 8
bl nandc_xfer
cmn w0, #1
bne .L2341
add x28, x24, :lo12:.LANCHOR0
ldrb w5, [x28, 1252]
cbz w5, .L2342
ldrb w4, [x27, 9]
mov x3, x23
str w5, [x29, 108]
mov x2, x22
strb wzr, [x28, 1252]
orr w1, w19, w25, lsl 24
mov w0, w26
bl flash_read_page
ldr w5, [x29, 108]
strb w5, [x28, 1252]
cbnz w25, .L2343
.L2348:
ldrb w2, [x24, #:lo12:.LANCHOR0]
add x1, x24, :lo12:.LANCHOR0
cbz w2, .L2343
ldrb w1, [x1, 1249]
add w1, w1, w1, lsl 1
cmp w0, w1, lsr 2
blt .L2343
add x20, x20, :lo12:.LANCHOR2
ldrb w1, [x20, 27]
sub w1, w1, #4
and w1, w1, 255
cmp w1, 4
mov w1, 256
csel w0, w0, w1, hi
.L2335:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L2339:
mov w0, w19
b .L2366
.L2343:
cmn w0, #1
bne .L2335
.L2349:
adrp x0, .LANCHOR5+336
ldr x5, [x0, #:lo12:.LANCHOR5+336]
cbnz x5, .L2345
.L2347:
add x24, x24, :lo12:.LANCHOR0
mov w3, -1
mov w2, w21
mov w1, 0
adrp x0, .LC172
add x0, x0, :lo12:.LC172
ldrb w4, [x24, 1252]
bl printk
ldrb w0, [x24, 1192]
cbnz w0, .L2346
mov w0, -1
b .L2335
.L2345:
add x0, x20, :lo12:.LANCHOR2
mov x3, x23
mov x2, x22
orr w1, w19, w25, lsl 24
ldrb w4, [x0, 17]
mov w0, w26
blr x5
cmn w0, #1
bne .L2335
b .L2347
.L2346:
add x20, x20, :lo12:.LANCHOR2
mov x3, x23
mov x2, x22
orr w1, w19, w25, lsl 24
mov w0, w26
ldrb w4, [x20, 17]
bl flash_ddr_tuning_read
b .L2335
.L2342:
cbz w25, .L2348
b .L2349
.L2341:
cbnz w25, .L2335
b .L2348
.size flash_complete_page_read, .-flash_complete_page_read
.align 2
.type queue_wait_first_req_completed, %function
queue_wait_first_req_completed:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x1, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
str x27, [sp, 80]
ldrb w0, [x1, 3354]
cmp w0, 255
bne .L2368
.L2401:
mov w21, 0
b .L2367
.L2368:
add x1, x1, 1304
sxtw x20, w0
add x1, x1, x20, lsl 6
ldrb w2, [x1, 58]
ldr w21, [x1, 40]
sub w3, w2, #1
cmp w3, 10
bhi .L2401
adrp x1, .L2371
add x1, x1, :lo12:.L2371
ldrh w1, [x1,w3,uxtw #1]
adr x3, .Lrtx2371
add x1, x3, w1, sxth #2
br x1
.Lrtx2371:
.section .rodata
.align 0
.align 2
.L2371:
.2byte (.L2370 - .Lrtx2371) / 4
.2byte (.L2372 - .Lrtx2371) / 4
.2byte (.L2373 - .Lrtx2371) / 4
.2byte (.L2373 - .Lrtx2371) / 4
.2byte (.L2373 - .Lrtx2371) / 4
.2byte (.L2373 - .Lrtx2371) / 4
.2byte (.L2374 - .Lrtx2371) / 4
.2byte (.L2375 - .Lrtx2371) / 4
.2byte (.L2376 - .Lrtx2371) / 4
.2byte (.L2373 - .Lrtx2371) / 4
.2byte (.L2376 - .Lrtx2371) / 4
.text
.L2370:
bl nandc_wait_flash_ready
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x20, lsl 6
ldp x1, x2, [x0, 8]
cbz x2, .L2377
ldrb w3, [x0, 56]
adrp x0, .LANCHOR3+1946
ldrb w0, [x0, #:lo12:.LANCHOR3+1946]
cmp w3, w0
csel x1, x1, x2, ne
.L2377:
add x19, x19, :lo12:.LANCHOR0
mov w0, w21
add x19, x19, 1304
add x20, x19, x20, lsl 6
ldr x2, [x20, 24]
bl flash_complete_page_read
str w0, [x20, 52]
mov w0, 13
strb w0, [x20, 58]
ldrb w0, [x20, 2]
orr w0, w0, 8
strb w0, [x20, 2]
b .L2401
.L2372:
bl nandc_wait_flash_ready
add x0, x19, :lo12:.LANCHOR0
lsl x2, x20, 6
add x0, x0, 1304
add x1, x0, x2
ldrb w21, [x0, x2]
add x0, x0, x21, lsl 6
ldr x23, [x0, 8]
ldp x26, x0, [x1, 8]
cbz x0, .L2378
ldrb w2, [x1, 56]
adrp x1, .LANCHOR3+1946
ldrb w1, [x1, #:lo12:.LANCHOR3+1946]
cmp w2, w1
csel x26, x26, x0, ne
.L2378:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x21, lsl 6
ldr x1, [x0, 16]
cbz x1, .L2379
ldrb w2, [x0, 56]
adrp x0, .LANCHOR3+1946
ldrb w0, [x0, #:lo12:.LANCHOR3+1946]
cmp w2, w0
csel x23, x23, x1, ne
.L2379:
add x24, x19, :lo12:.LANCHOR0
mov x1, x26
add x24, x24, 1304
add x27, x24, x20, lsl 6
add x24, x24, x21, lsl 6
ldr x2, [x27, 24]
ldr w0, [x27, 40]
bl flash_complete_plane_page_read
mov w22, w0
ldr x2, [x24, 24]
mov x1, x23
ldr w0, [x24, 40]
bl flash_complete_plane_page_read
mov w25, w0
cmn w22, #1
beq .L2380
ldr w0, [x27, 36]
cmn w0, #1
beq .L2381
ldr x1, [x27, 24]
ldr w1, [x1, 4]
cmp w0, w1
beq .L2381
.L2380:
add x0, x19, :lo12:.LANCHOR0
mov w5, 1
add x24, x0, 1304
add x24, x24, x20, lsl 6
ldrb w2, [x0, 1205]
mov w0, 24
sub w0, w0, w2
ldr x3, [x24, 24]
lsl w5, w5, w2
adrp x2, .LANCHOR3+1946
sub w5, w5, #1
ldr w1, [x24, 40]
ldrb w4, [x2, #:lo12:.LANCHOR3+1946]
mov x2, x26
lsl w6, w5, w0
lsr w0, w1, w0
bic w1, w1, w6
and w0, w0, w5
bl flash_read_page_en
mov w22, w0
ldr w2, [x24, 36]
cmn w2, #1
beq .L2382
ldr x0, [x24, 24]
ldr w4, [x0, 4]
cmp w2, w4
beq .L2382
adrp x1, .LANCHOR2
ldr w1, [x1, #:lo12:.LANCHOR2]
tbz x1, 6, .L2382
ldr w3, [x0]
adrp x0, .LC173
ldr w1, [x24, 40]
add x0, x0, :lo12:.LC173
bl printk
.L2382:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x20, lsl 6
ldr w1, [x0, 36]
cmn w1, #1
beq .L2381
ldr x0, [x0, 24]
ldr w0, [x0, 4]
cmp w1, w0
beq .L2381
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 464
mov w2, 431
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2381:
add x0, x19, :lo12:.LANCHOR0
mov w1, 13
add x0, x0, 1304
cmn w25, #1
add x20, x0, x20, lsl 6
strb w1, [x20, 58]
ldrb w1, [x20, 2]
str w22, [x20, 52]
orr w1, w1, 8
strb w1, [x20, 2]
beq .L2383
add x0, x0, x21, lsl 6
ldr w1, [x0, 36]
cmn w1, #1
beq .L2385
ldr x0, [x0, 24]
ldr w0, [x0, 4]
cmp w1, w0
beq .L2385
.L2383:
add x0, x19, :lo12:.LANCHOR0
mov w5, 1
add x20, x0, 1304
add x20, x20, x21, lsl 6
ldrb w2, [x0, 1205]
mov w0, 24
sub w0, w0, w2
ldr x3, [x20, 24]
lsl w5, w5, w2
adrp x2, .LANCHOR3+1946
sub w5, w5, #1
ldr w1, [x20, 40]
ldrb w4, [x2, #:lo12:.LANCHOR3+1946]
mov x2, x23
lsl w6, w5, w0
lsr w0, w1, w0
bic w1, w1, w6
and w0, w0, w5
bl flash_read_page_en
ldr w2, [x20, 36]
cmn w2, #1
beq .L2387
ldr x0, [x20, 24]
ldr w4, [x0, 4]
cmp w2, w4
beq .L2387
adrp x1, .LANCHOR2
ldr w1, [x1, #:lo12:.LANCHOR2]
tbz x1, 6, .L2387
ldr w3, [x0]
adrp x0, .LC173
ldr w1, [x20, 40]
add x0, x0, :lo12:.LC173
bl printk
.L2387:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x21, lsl 6
ldr w1, [x0, 36]
cmn w1, #1
beq .L2385
ldr x0, [x0, 24]
ldr w0, [x0, 4]
cmp w1, w0
beq .L2385
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 464
mov w2, 450
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2385:
add x19, x19, :lo12:.LANCHOR0
mov w0, 13
add x19, x19, 1304
add x21, x19, x21, lsl 6
strb w0, [x21, 58]
ldrb w0, [x21, 2]
str w22, [x21, 52]
orr w0, w0, 8
strb w0, [x21, 2]
b .L2401
.L2373:
bl nandc_iqr_wait_flash_ready
mov w0, w21
mov w1, 64
bl flash_wait_device_ready
mov w21, w0
tbz x21, 6, .L2401
mov w0, 5
tst w21, w0
beq .L2389
add x19, x19, :lo12:.LANCHOR0
mov w0, 12
add x19, x19, 1304
mov w4, 12
add x20, x19, x20, lsl 6
mov w2, w21
ldrb w1, [x20, 1]
ldr w3, [x20, 40]
strb w0, [x20, 58]
adrp x0, .LC174
add x0, x0, :lo12:.LC174
bl printk
.L2459:
mov w0, -1
str w0, [x20, 52]
b .L2367
.L2389:
add x0, x19, :lo12:.LANCHOR0
mov w1, 13
add x21, x0, 1304
add x21, x21, x20, lsl 6
strb w1, [x21, 58]
ldr x1, [x0, 3384]
str wzr, [x21, 52]
ldr w2, [x1, 156]
mov w1, 20041
movk w1, 0x444b, lsl 16
cmp w2, w1
bne .L2401
ldrh w1, [x21, 50]
cbnz w1, .L2401
ldrb w2, [x0, 1205]
mov w5, 1
adrp x22, .LANCHOR5
add x22, x22, :lo12:.LANCHOR5
mov w0, 24
sub w0, w0, w2
lsl w5, w5, w2
adrp x2, .LANCHOR3+1946
sub w5, w5, #1
ldr w1, [x21, 40]
ldrb w4, [x2, #:lo12:.LANCHOR3+1946]
ldp x3, x2, [x22, 344]
lsl w6, w5, w0
lsr w0, w1, w0
bic w1, w1, w6
and w0, w0, w5
bl flash_read_page_en
cmn w0, #1
beq .L2390
ldr x2, [x21, 24]
ldr x1, [x22, 344]
ldr w2, [x2]
ldr w1, [x1]
cmp w2, w1
beq .L2401
.L2390:
add x19, x19, :lo12:.LANCHOR0
mov w3, w0
add x1, x19, 1304
adrp x0, .LC175
add x20, x1, x20, lsl 6
add x0, x0, :lo12:.LC175
ldrb w4, [x19, 1252]
ldrb w1, [x20, 1]
ldr w2, [x20, 40]
bl printk
mov w0, -1
str w0, [x20, 52]
b .L2401
.L2376:
cmp w2, 11
mov w1, 3
mov w5, 10
csel w5, w5, w1, eq
add x1, x19, :lo12:.LANCHOR0
mov w4, 24
mov w2, 1
add x22, x1, 1304
ubfiz x0, x0, 6, 8
mov x24, x1
ldrb w3, [x1, 1205]
add x0, x22, x0
sub w4, w4, w3
lsl w2, w2, w3
sub w2, w2, #1
lsr w3, w21, w4
and w3, w3, w2
and w3, w3, 65535
.L2392:
ldrb w1, [x0]
cmp w1, 255
bne .L2399
mov w21, -1
b .L2367
.L2399:
sxtw x23, w1
ubfiz x0, x1, 6, 8
add x1, x22, x23, lsl 6
add x0, x22, x0
ldrb w6, [x1, 58]
cmp w6, w5
bne .L2392
ldr w1, [x1, 40]
lsr w1, w1, w4
and w1, w1, w2
cmp w3, w1
bne .L2392
bl nandc_iqr_wait_flash_ready
mov w0, w21
mov w1, 64
bl flash_wait_device_ready
mov w21, w0
tbnz x21, 6, .L2394
.L2458:
mov w21, 0
b .L2395
.L2394:
tst x21, 15
beq .L2396
add x22, x22, x20, lsl 6
mov w2, w0
mov w4, 12
adrp x0, .LC176
add x0, x0, :lo12:.LC176
ldrb w1, [x22, 1]
ldr w3, [x22, 40]
bl printk
mov w0, 12
strb w0, [x22, 58]
mov w0, -1
str w0, [x22, 52]
.L2395:
add x1, x19, :lo12:.LANCHOR0
add x1, x1, 1304
add x20, x1, x20, lsl 6
add x1, x1, x23, lsl 6
ldrb w0, [x20, 58]
strb w0, [x1, 58]
ldr w0, [x20, 52]
str w0, [x1, 52]
.L2367:
mov w0, w21
ldr x27, [sp, 80]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
ret
.L2396:
add x21, x22, x20, lsl 6
mov w0, 13
strb w0, [x21, 58]
ldr x0, [x24, 3384]
str wzr, [x21, 52]
ldr w1, [x0, 156]
mov w0, 20041
movk w0, 0x444b, lsl 16
cmp w1, w0
bne .L2458
ldrh w0, [x21, 50]
cbnz w0, .L2458
ldrb w2, [x24, 1205]
mov w5, 1
adrp x22, .LANCHOR5
add x22, x22, :lo12:.LANCHOR5
mov w0, 24
sub w0, w0, w2
lsl w5, w5, w2
adrp x2, .LANCHOR3+1946
sub w5, w5, #1
ldr w1, [x21, 40]
ldrb w4, [x2, #:lo12:.LANCHOR3+1946]
ldp x3, x2, [x22, 344]
lsl w6, w5, w0
lsr w0, w1, w0
bic w1, w1, w6
and w0, w0, w5
bl flash_read_page_en
cmn w0, #1
beq .L2398
ldr x2, [x21, 24]
ldr x1, [x22, 344]
ldr w2, [x2]
ldr w1, [x1]
cmp w2, w1
beq .L2458
.L2398:
add x1, x19, :lo12:.LANCHOR0
mov w3, w0
add x21, x1, 1304
adrp x0, .LC177
add x21, x21, x20, lsl 6
add x0, x0, :lo12:.LC177
ldrb w4, [x1, 1252]
ldr w2, [x21, 40]
ldrb w1, [x21, 1]
bl printk
mov w0, -1
str w0, [x21, 52]
b .L2458
.L2374:
mov w0, w21
mov w1, 32
bl flash_wait_device_ready
mov w21, w0
tbz x21, 5, .L2401
add x19, x19, :lo12:.LANCHOR0
tst x21, 15
add x19, x19, 1304
add x20, x19, x20, lsl 6
beq .L2400
mov w0, 12
strb w0, [x20, 58]
b .L2459
.L2400:
mov w0, 13
str wzr, [x20, 52]
strb w0, [x20, 58]
b .L2401
.L2375:
mov w1, 64
mov w0, w21
bl flash_wait_device_ready
tbz x0, 6, .L2401
add x19, x19, :lo12:.LANCHOR0
add x19, x19, 1304
add x19, x19, x20, lsl 6
str w0, [x19, 52]
mov w0, 7
strb w0, [x19, 58]
b .L2401
.size queue_wait_first_req_completed, .-queue_wait_first_req_completed
.align 2
.global sblk_prog_page
.type sblk_prog_page, %function
sblk_prog_page:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
stp x21, x22, [sp, 32]
and w20, w1, 255
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldrh w0, [x0, 50]
cbz w0, .L2461
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L2461
ldr w1, [x19, 40]
adrp x0, .LC178
mov w2, w20
add x0, x0, :lo12:.LC178
bl printk
.L2461:
adrp x24, .LANCHOR0
add x25, x24, :lo12:.LANCHOR0
add x27, x25, 1304
mov w21, 0
mov w23, 1
.L2462:
cbnz w20, .L2473
.L2489:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L2473:
ldrb w26, [x19]
ldr w22, [x19, 40]
.L2463:
mov w1, 1
mov w0, w22
bl queue_lun_state
cbnz w0, .L2464
cmp w20, 1
beq .L2465
add x0, x24, :lo12:.LANCHOR0
ldrb w1, [x0, 1250]
cbz w1, .L2465
ldrb w1, [x0, 1213]
cbz w1, .L2466
.L2465:
mov x0, x19
bl queue_prog_cmd
.L2467:
subs w20, w20, #1
beq .L2489
add x19, x24, :lo12:.LANCHOR0
ubfiz x26, x26, 6, 8
add x19, x19, 1304
add x19, x19, x26
b .L2462
.L2464:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2463
.L2466:
ldrb w0, [x0, 1205]
mov w28, 24
sub w28, w28, w0
lsl w0, w23, w0
sub w0, w0, #1
lsr w28, w22, w28
and w28, w28, w0
ldrb w0, [x19]
and w28, w28, 65535
cmp w0, 255
bne .L2468
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 496
mov w2, 697
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2468:
ldrb w0, [x19]
mov w1, 24
add x0, x27, x0, lsl 6
ldr w4, [x0, 40]
ldrb w0, [x25, 1205]
sub w1, w1, w0
lsl w0, w23, w0
sub w0, w0, #1
lsr w2, w4, w1
and w0, w0, w2
cmp w28, w0, uxth
bne .L2469
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
ldrh w2, [x0, 1304]
ldrb w3, [x0, 1306]
sub w0, w1, w2
sub w3, w3, #1
lsl w1, w23, w2
lsl w0, w23, w0
sub w0, w0, #1
and w0, w0, w3
sub w1, w1, #1
and w0, w0, 65535
lsr w5, w22, w2
and w1, w1, 65535
and w5, w0, w5
lsr w2, w4, w2
and w0, w0, w2
and w22, w1, w22
cmp w5, w0
and w1, w1, w4
ccmp w22, w1, 0, ne
bne .L2469
cmp w21, w3
beq .L2469
ldr w1, [x19, 40]
mov w0, 17
ldr x2, [x19, 8]
add w21, w21, 1
ldr x3, [x19, 24]
bl flash_start_page_prog
strb w23, [x19, 59]
mov w0, 9
strb w0, [x19, 58]
mov w0, -1
strb w0, [x19]
mov x1, x19
add x0, x25, 3354
bl buf_add_tail
b .L2467
.L2469:
mov x0, x19
mov w21, 0
bl queue_prog_cmd
b .L2467
.size sblk_prog_page, .-sblk_prog_page
.align 2
.global sblk_wait_write_queue_completed
.type sblk_wait_write_queue_completed, %function
sblk_wait_write_queue_completed:
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
.L2492:
ldrb w0, [x19, 3354]
cmp w0, 255
bne .L2493
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L2493:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2492
.size sblk_wait_write_queue_completed, .-sblk_wait_write_queue_completed
.align 2
.global ftl_flush
.type ftl_flush, %function
ftl_flush:
stp x29, x30, [sp, -32]!
adrp x2, .LANCHOR0
add x0, x2, :lo12:.LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x2
adrp x20, .LANCHOR5
ldrb w1, [x0, 3380]
cbz w1, .L2496
add x2, x20, :lo12:.LANCHOR5
add x0, x0, 1304
ldrb w2, [x2, 360]
add x0, x0, x2, lsl 6
bl sblk_prog_page
.L2496:
add x2, x19, :lo12:.LANCHOR0
add x20, x20, :lo12:.LANCHOR5
mov w0, -1
strb wzr, [x2, 3380]
strb w0, [x20, 360]
bl sblk_wait_write_queue_completed
bl ftl_write_completed
mov w0, -1
bl ftl_vpn_decrement
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size ftl_flush, .-ftl_flush
.align 2
.global zftl_cache_flush
.type zftl_cache_flush, %function
zftl_cache_flush:
adrp x0, .LANCHOR0+3380
ldrb w0, [x0, #:lo12:.LANCHOR0+3380]
cbz w0, .L2506
stp x29, x30, [sp, -16]!
add x29, sp, 0
bl timer_get_time
adrp x1, .LANCHOR5+364
ldr w1, [x1, #:lo12:.LANCHOR5+364]
add w1, w1, 100
cmp w0, w1
bls .L2501
bl ftl_flush
.L2501:
ldp x29, x30, [sp], 16
ret
.L2506:
ret
.size zftl_cache_flush, .-zftl_cache_flush
.align 2
.global ftl_read_page
.type ftl_read_page, %function
ftl_read_page:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w19, w0, 255
stp x21, x22, [sp, 32]
mov w20, w1
mov x21, x2
mov x22, x3
str x23, [sp, 48]
mov w23, w4
bl sblk_wait_write_queue_completed
mov w4, w23
mov x3, x22
mov x2, x21
mov w1, w20
mov w0, w19
bl flash_read_page_en
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldr x23, [sp, 48]
ldp x29, x30, [sp], 64
ret
.size ftl_read_page, .-ftl_read_page
.align 2
.global ftl_read_ppa_page
.type ftl_read_ppa_page, %function
ftl_read_ppa_page:
stp x29, x30, [sp, -64]!
mov w5, 1
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w20, w0
adrp x0, .LANCHOR0+1205
mov w19, 24
stp x21, x22, [sp, 32]
mov x21, x1
ldrb w0, [x0, #:lo12:.LANCHOR0+1205]
mov x22, x2
str x23, [sp, 48]
mov w23, w3
sub w19, w19, w0
lsl w5, w5, w0
sub w5, w5, #1
lsr w19, w20, w19
and w19, w19, w5
and w19, w19, 255
bl sblk_wait_write_queue_completed
mov w4, w23
mov x3, x22
mov x2, x21
mov w1, w20
mov w0, w19
bl flash_read_page_en
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldr x23, [sp, 48]
ldp x29, x30, [sp], 64
ret
.size ftl_read_ppa_page, .-ftl_read_ppa_page
.align 2
.global sblk_read_page
.type sblk_read_page, %function
sblk_read_page:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w1, 255
stp x25, x26, [sp, 64]
adrp x25, .LANCHOR0
add x26, x25, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
mov x22, x0
mov x19, x0
mov w20, w21
add x23, x26, 1304
stp x27, x28, [sp, 80]
adrp x28, .LANCHOR5
.L2514:
cbnz w20, .L2524
.L2537:
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
add x19, x19, 1304
.L2525:
cbnz w21, .L2527
ldp x19, x20, [sp, 16]
mov w0, 0
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L2524:
ldrb w24, [x19]
ldr w27, [x19, 40]
.L2515:
mov w1, 0
mov w0, w27
bl queue_lun_state
cbnz w0, .L2516
cmp w20, 1
beq .L2521
add x0, x28, :lo12:.LANCHOR5
ldrb w0, [x0, 368]
cbnz w0, .L2518
.L2521:
mov x0, x19
bl queue_read_cmd
b .L2519
.L2516:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2515
.L2518:
add x0, x25, :lo12:.LANCHOR0
mov w3, 24
ldrb w1, [x0, 1205]
mov w0, 1
sub w3, w3, w1
lsl w0, w0, w1
sub w0, w0, #1
lsr w3, w27, w3
and w3, w3, w0
ldrb w0, [x19]
and w3, w3, 65535
cmp w0, 255
bne .L2520
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 512
mov w2, 782
str w3, [x29, 124]
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
ldr w3, [x29, 124]
.L2520:
ldrb w4, [x19]
mov w0, 24
ldrb w7, [x26, 1205]
mov w2, 1
sbfiz x5, x4, 6, 32
sub w0, w0, w7
add x6, x23, x5
lsl w2, w2, w7
sub w2, w2, #1
ldr w1, [x6, 40]
lsr w0, w1, w0
and w0, w0, w2
cmp w3, w0, uxth
bne .L2521
adrp x0, .LANCHOR3+1410
ldrh w0, [x0, #:lo12:.LANCHOR3+1410]
add w27, w0, w27
cmp w1, w27
bne .L2521
ldr w0, [x19, 40]
mov w27, -1
ldrb w24, [x23, x5]
sub w20, w20, #1
stp x6, x5, [x29, 104]
str w4, [x29, 120]
bl flash_start_plane_read
strb wzr, [x19, 59]
mov w2, 2
strb w27, [x19]
strb w2, [x19, 58]
add x0, x26, 3354
mov x1, x19
str w2, [x29, 124]
mov x19, x0
bl buf_add_tail
ldp x6, x5, [x29, 104]
strb wzr, [x6, 59]
ldp w4, w2, [x29, 120]
strb w2, [x6, 58]
strb w27, [x23, x5]
mov x0, x19
ubfiz x1, x4, 6, 8
add x1, x23, x1
bl buf_add_tail
.L2519:
subs w20, w20, #1
beq .L2537
add x19, x25, :lo12:.LANCHOR0
ubfiz x24, x24, 6, 8
add x19, x19, 1304
add x19, x19, x24
b .L2514
.L2527:
ldrb w0, [x22, 58]
cmp w0, 13
bne .L2526
ldrb w0, [x22]
sub w21, w21, #1
cmp w0, 255
beq .L2526
ubfiz x22, x0, 6, 8
add x22, x19, x22
.L2526:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2525
.size sblk_read_page, .-sblk_read_page
.align 2
.global gc_check_data_one_wl
.type gc_check_data_one_wl, %function
gc_check_data_one_wl:
sub sp, sp, #128
stp x29, x30, [sp, 16]
add x29, sp, 16
stp x19, x20, [sp, 32]
adrp x19, .LANCHOR0
add x20, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 48]
stp x23, x24, [sp, 64]
stp x25, x26, [sp, 80]
stp x27, x28, [sp, 96]
ldr x0, [x20, 3424]
ldr x21, [x20, 1128]
cbnz x0, .L2540
add x20, x20, 3416
mov w0, 1
bl buf_alloc
str x0, [x20, 8]
.L2540:
add x0, x19, :lo12:.LANCHOR0
ldr x22, [x0, 3424]
cbnz x22, .L2541
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 528
mov w2, 729
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2541:
add x27, x19, :lo12:.LANCHOR0
adrp x4, .LANCHOR3
add x23, x27, 3416
mov x20, x4
mov w25, 0
.L2542:
add x28, x21, 80
ldrb w0, [x28, 9]
cmp w25, w0
bge .L2553
sxtw x26, w25
mov w24, 1
add x26, x26, 8
b .L2554
.L2552:
add x1, x4, :lo12:.LANCHOR3
ldrh w0, [x28, x26, lsl 1]
ldrh w2, [x1, 1410]
ldrb w1, [x1, 1320]
cmp w1, 2
mul w2, w0, w2
beq .L2543
ldrb w0, [x27, 1212]
cbz w0, .L2544
.L2543:
ldrh w0, [x23, 16]
sub w3, w0, #1
add w0, w24, w2
add w0, w3, w0
orr w1, w0, w1, lsl 24
str w1, [x22, 40]
.L2545:
str x4, [x29, 104]
mov w1, 1
mov x0, x22
bl sblk_read_page
ldr w2, [x22, 52]
adrp x0, .LANCHOR5
ldr x4, [x29, 104]
cmn w2, #1
beq .L2548
add x5, x0, :lo12:.LANCHOR5
ldrh w1, [x23, 22]
ldr x3, [x22, 24]
ldr x6, [x5, 280]
lsl x1, x1, 2
ldr w7, [x6, x1]
ldr w6, [x3, 4]
cmp w7, w6
bne .L2548
ldr x5, [x5, 288]
ldr w5, [x5, x1]
ldr w1, [x3, 8]
cmp w5, w1
beq .L2549
.L2548:
add x0, x0, :lo12:.LANCHOR5
ldrh w1, [x23, 22]
ldr x3, [x0, 280]
lsl x1, x1, 2
ldr w3, [x3, x1]
cmn w3, #1
beq .L2549
adrp x4, .LANCHOR2
ldr w4, [x4, #:lo12:.LANCHOR2]
tbz x4, 10, .L2550
ldr x4, [x22, 24]
ldr x0, [x0, 288]
ldr w5, [x4, 12]
str w5, [sp]
ldp w5, w6, [x4]
ldr w7, [x4, 8]
ldr w4, [x0, x1]
adrp x0, .LC179
ldr w1, [x22, 40]
add x0, x0, :lo12:.LC179
bl printk
.L2550:
add x19, x19, :lo12:.LANCHOR0
ldrh w1, [x21, 80]
ldr x0, [x19, 1120]
strh wzr, [x0, x1, lsl 1]
ldr x1, [x19, 1128]
ldr w0, [x1, 556]
add w0, w0, 1
str w0, [x1, 556]
ldr x0, [x19, 3384]
ldr w1, [x0, 156]
mov w0, 20041
movk w0, 0x444b, lsl 16
cmp w1, w0
bne .L2557
add x20, x20, :lo12:.LANCHOR3
ldrb w0, [x20, 1950]
cbnz w0, .L2557
ldrb w0, [x20, 1322]
cbnz w0, .L2557
ldr w0, [x22, 40]
bl ftl_mask_bad_block
.L2557:
mov w0, -1
.L2539:
ldp x19, x20, [sp, 32]
ldp x21, x22, [sp, 48]
ldp x23, x24, [sp, 64]
ldp x25, x26, [sp, 80]
ldp x27, x28, [sp, 96]
ldp x29, x30, [sp, 16]
add sp, sp, 128
ret
.L2544:
cmp w1, 3
ldrh w0, [x23, 16]
bne .L2546
ldrb w1, [x27, 1213]
cbz w1, .L2547
add w0, w0, w0, lsl 1
sub w1, w0, #1
add w0, w24, w2
add w0, w1, w0
orr w0, w0, 50331648
.L2572:
str w0, [x22, 40]
b .L2545
.L2547:
add w0, w0, w2
orr w0, w0, w24, lsl 24
b .L2572
.L2546:
add w0, w0, w2
b .L2572
.L2549:
ldrh w0, [x23, 22]
add w24, w24, 1
add w0, w0, 1
strh w0, [x23, 22]
.L2554:
ldrh w0, [x23, 20]
cmp w24, w0
ble .L2552
add w25, w25, 1
b .L2542
.L2553:
add x19, x19, :lo12:.LANCHOR0
add x19, x19, 3416
ldrh w0, [x19, 16]
add w1, w0, 1
strh w1, [x19, 16]
adrp x1, .LANCHOR3+1322
ldrb w1, [x1, #:lo12:.LANCHOR3+1322]
cbz w1, .L2558
add w0, w0, 2
strh w0, [x19, 16]
.L2558:
.L2551:
mov w0, 0
b .L2539
.size gc_check_data_one_wl, .-gc_check_data_one_wl
.align 2
.global sblk_tlc_prog_one_page
.type sblk_tlc_prog_one_page, %function
sblk_tlc_prog_one_page:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x19, x0
ldr x0, [x0]
ldr w20, [x0, 40]
.L2574:
mov w1, 1
mov w0, w20
bl queue_lun_state
cbnz w0, .L2575
mov x0, x19
mov w1, 1
bl queue_tlc_prog_cmd
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L2575:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2574
.size sblk_tlc_prog_one_page, .-sblk_tlc_prog_one_page
.align 2
.global sblk_xlc_prog_pages
.type sblk_xlc_prog_pages, %function
sblk_xlc_prog_pages:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x0
stp x21, x22, [sp, 32]
mov x22, x1
stp x25, x26, [sp, 64]
mov w25, w2
stp x23, x24, [sp, 48]
ldr x0, [x0]
ldr w19, [x0, 40]
.L2578:
mov w1, 1
mov w0, w19
bl queue_lun_state
cbnz w0, .L2579
cmp w25, 2
bne .L2580
adrp x23, .LANCHOR0
add x4, x23, :lo12:.LANCHOR0
ldr x5, [x22]
ldrb w0, [x4, 1250]
cbz w0, .L2581
ldr x0, [x20]
mov w26, 1
ldrb w1, [x4, 1205]
mov w3, 24
ldr w5, [x5, 40]
sub w3, w3, w1
lsl w19, w26, w1
ldr w2, [x0, 40]
ldrb w1, [x4, 1213]
lsl w21, w26, w3
sub w19, w19, #1
sub w21, w21, #1
and w24, w2, w21
lsr w2, w2, w3
and w19, w19, w2
and w21, w21, w5
and w19, w19, 255
cbz w1, .L2582
mov w0, w19
bl zftl_flash_exit_slc_mode
ldr x0, [x20]
mov w4, w24
mov w3, w19
mov w1, w26
mov w2, 17
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
ldr x0, [x22]
mov w4, w21
mov w3, w19
mov w1, w26
mov w2, 26
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
ldr x0, [x20, 8]
add w4, w24, w26
mov w3, w19
mov w1, w25
mov w2, 17
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
ldr x0, [x22, 8]
add w4, w21, w26
mov w3, w19
mov w1, w25
mov w2, 26
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
ldr x0, [x20, 16]
add w4, w24, 2
mov w3, w19
mov w2, 17
mov w1, 3
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
bl nandc_wait_flash_ready
ldr x0, [x22, 16]
add w4, w21, 2
mov w3, w19
mov w2, 16
mov w1, 3
ldr x5, [x0, 8]
ldr x6, [x0, 24]
mov w0, 0
bl flash_start_one_pass_page_prog
.L2583:
ldr x1, [x20]
mov w0, 5
strb w0, [x1, 58]
mov w0, 1
strb w0, [x1, 59]
mov w0, -1
strb w0, [x1]
add x0, x23, :lo12:.LANCHOR0
add x0, x0, 3354
bl buf_add_tail
.L2584:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L2579:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2578
.L2582:
ldr x5, [x0, 8]
mov w4, w24
ldr x6, [x0, 24]
mov w3, w19
ldrb w0, [x0, 60]
mov w1, w26
mov w2, 17
bl flash_start_tlc_page_prog
bl nandc_wait_flash_ready
ldr x7, [x20]
mov w4, w21
ldr x0, [x22]
mov w3, w19
mov w1, w26
mov w2, 26
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
bl nandc_wait_flash_ready
ldp x7, x0, [x20]
mov w4, w24
mov w3, w19
mov w1, w25
mov w2, 17
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
bl nandc_wait_flash_ready
ldr x7, [x20]
mov w4, w21
ldr x0, [x22, 8]
mov w3, w19
mov w1, w25
mov w2, 26
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
bl nandc_wait_flash_ready
ldr x7, [x20]
mov w4, w24
ldr x0, [x20, 16]
mov w3, w19
mov w2, 17
mov w1, 3
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
bl nandc_wait_flash_ready
ldr x0, [x22, 16]
mov w4, w21
ldr x7, [x20]
mov w3, w19
mov w2, 16
mov w1, 3
ldr x5, [x0, 8]
ldr x6, [x0, 24]
ldrb w0, [x7, 60]
bl flash_start_tlc_page_prog
b .L2583
.L2581:
ldr w19, [x5, 40]
.L2585:
mov w1, 1
mov w0, w19
bl queue_lun_state
cbnz w0, .L2586
mov w1, 1
mov x0, x20
bl queue_tlc_prog_cmd
mov w1, 0
mov x0, x22
bl queue_tlc_prog_cmd
.L2587:
mov w1, 1
mov w0, w19
bl queue_lun_state
cbz w0, .L2584
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2587
.L2586:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2585
.L2580:
mov w1, 1
mov x0, x20
bl queue_tlc_prog_cmd
b .L2584
.size sblk_xlc_prog_pages, .-sblk_xlc_prog_pages
.align 2
.global sblk_3d_mlc_prog_pages
.type sblk_3d_mlc_prog_pages, %function
sblk_3d_mlc_prog_pages:
stp x29, x30, [sp, -80]!
ubfiz x1, x1, 4, 32
add x1, x1, 8
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
add x22, x22, :lo12:.LANCHOR0
stp x25, x26, [sp, 64]
add x21, x0, x1
add x26, x0, 8
add x25, x22, 3354
stp x23, x24, [sp, 48]
stp x19, x20, [sp, 16]
mov w23, 1
mov w24, 24
.L2591:
cmp x21, x26
bne .L2594
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L2594:
ldr x0, [x26, -8]
ldr w19, [x0, 40]
.L2592:
mov w1, 1
mov w0, w19
bl queue_lun_state
cbnz w0, .L2593
ldr x0, [x26, -8]
add x26, x26, 16
ldrb w1, [x22, 1205]
sub w2, w24, w1
ldr w0, [x0, 40]
lsl w19, w23, w1
lsl w20, w23, w2
sub w19, w19, #1
sub w20, w20, #1
and w20, w20, w0
lsr w0, w0, w2
and w19, w19, w0
and w19, w19, 255
mov w0, w19
bl zftl_flash_exit_slc_mode
ldr x0, [x26, -24]
mov w2, w20
mov w1, w19
ldr x3, [x0, 8]
ldr x4, [x0, 24]
mov w0, 16
bl flash_start_3d_mlc_page_prog
bl nandc_wait_flash_ready
ldr x0, [x26, -16]
add w2, w20, 1
mov w1, w19
ldr x3, [x0, 8]
ldr x4, [x0, 24]
mov w0, 16
bl flash_start_3d_mlc_page_prog
bl nandc_de_cs.constprop.35
ldr x1, [x26, -24]
mov w0, 4
strb w23, [x1, 59]
strb w0, [x1, 58]
mov w0, -1
strb w0, [x1]
mov x0, x25
bl buf_add_tail
b .L2591
.L2593:
bl queue_wait_first_req_completed
bl queue_remove_completed_req
b .L2592
.size sblk_3d_mlc_prog_pages, .-sblk_3d_mlc_prog_pages
.align 2
.global flash_prog_page_en
.type flash_prog_page_en, %function
flash_prog_page_en:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w0, 255
and w0, w5, 255
stp x19, x20, [sp, 16]
str w0, [x29, 108]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
stp x27, x28, [sp, 80]
mov w20, w1
stp x25, x26, [sp, 64]
mov x23, x2
mov x22, x3
mov w27, w4
ldrb w0, [x0, 1153]
ubfx x24, x20, 24, 2
cmp w0, w21
bhi .L2597
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 552
mov w2, 642
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2597:
add x0, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 1153]
cmp w1, w21
bls .L2608
add x1, x0, w21, sxtw
ldrb w26, [x1, 1196]
cbnz w24, .L2610
ldrb w1, [x19, #:lo12:.LANCHOR0]
cbz w1, .L2600
ldrb w0, [x0, 1]
cbz w0, .L2610
.L2600:
add x0, x19, :lo12:.LANCHOR0
ldrh w1, [x0, 2]
ldrb w2, [x0, 1]
udiv w19, w20, w1
mul w19, w19, w1
sub w1, w20, w19
cbz w2, .L2601
add w19, w19, w1, lsl 1
.L2599:
adrp x24, .LC180
adrp x28, .LANCHOR5
add x24, x24, :lo12:.LC180
add x25, x28, :lo12:.LANCHOR5
.L2605:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 4, .L2602
mov w3, w19
mov w2, w20
mov w1, w26
mov x0, x24
bl printk
.L2602:
mov w4, w27
mov x3, x22
mov x2, x23
mov w1, w19
mov w0, w26
bl flash_prog_page
mov w5, w0
ldr w0, [x29, 108]
cbz w0, .L2603
add x6, x28, :lo12:.LANCHOR5
mov w4, w27
mov w1, w20
mov w0, w21
str x6, [x29, 96]
ldp x3, x2, [x6, 344]
str w5, [x29, 104]
bl flash_read_page_en
cmp w0, 512
mov w4, w0
ccmn w0, #1, 4, ne
beq .L2604
ldr x6, [x29, 96]
ldr w1, [x23]
ldr w5, [x29, 104]
ldr x0, [x6, 352]
ldr w0, [x0]
cmp w1, w0
bne .L2604
ldr x0, [x6, 344]
ldr w1, [x22]
ldr w0, [x0]
cmp w1, w0
beq .L2603
.L2604:
str w4, [x29, 96]
mov w3, 4
mov x1, x23
mov w2, w3
adrp x0, .LC181
add x0, x0, :lo12:.LC181
bl rknand_print_hex
mov w3, 4
mov x1, x22
mov w2, w3
adrp x0, .LC182
add x0, x0, :lo12:.LC182
bl rknand_print_hex
ldr x1, [x25, 344]
mov w3, 4
adrp x0, .LC183
mov w2, w3
add x0, x0, :lo12:.LC183
bl rknand_print_hex
ldr x1, [x25, 352]
mov w3, 4
adrp x0, .LC184
mov w2, w3
add x0, x0, :lo12:.LC184
bl rknand_print_hex
ldr w4, [x29, 96]
cmp w4, 512
beq .L2605
.L2607:
mov w1, w20
adrp x0, .LC185
add x0, x0, :lo12:.LC185
bl printk
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 552
mov w2, 685
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2608:
mov w0, -1
b .L2596
.L2601:
add x0, x0, 4
ldrh w0, [x0, w1, uxtw 1]
add w19, w0, w19
b .L2599
.L2610:
mov w19, w20
b .L2599
.L2603:
mov w0, w5
cmn w5, #1
beq .L2607
.L2596:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.size flash_prog_page_en, .-flash_prog_page_en
.align 2
.global ftl_prog_page
.type ftl_prog_page, %function
ftl_prog_page:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w19, w0, 255
stp x21, x22, [sp, 32]
mov w20, w1
mov x21, x2
mov x22, x3
str x23, [sp, 48]
mov w23, w4
bl sblk_wait_write_queue_completed
mov w0, w19
mov w5, 1
mov w4, w23
mov x3, x22
mov x2, x21
mov w1, w20
bl flash_prog_page_en
mov w19, w0
cmn w0, #1
bne .L2626
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 576
mov w2, 2678
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
adrp x0, .LC185
mov w1, w20
add x0, x0, :lo12:.LC185
bl printk
.L2626:
mov w0, w19
ldr x23, [sp, 48]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.size ftl_prog_page, .-ftl_prog_page
.align 2
.global ftl_info_flush
.type ftl_info_flush, %function
ftl_info_flush:
stp x29, x30, [sp, -112]!
mov w1, 0
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR3
stp x25, x26, [sp, 64]
mov w26, w0
add x0, x21, :lo12:.LANCHOR3
stp x23, x24, [sp, 48]
stp x19, x20, [sp, 16]
adrp x22, .LANCHOR5
stp x27, x28, [sp, 80]
adrp x23, .LANCHOR0
ldrb w2, [x0, 1946]
add x0, x22, :lo12:.LANCHOR5
ldr x0, [x0, 376]
lsl w2, w2, 1
bl ftl_memset
add x0, x23, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
ldrh w1, [x0, 74]
cmp w1, 1
bls .L2630
strh wzr, [x0, 150]
.L2630:
adrp x24, .LANCHOR4
add x24, x24, :lo12:.LANCHOR4
add x19, x22, :lo12:.LANCHOR5
add x24, x24, 592
mov w25, 0
.L2643:
add x2, x23, :lo12:.LANCHOR0
add x1, x21, :lo12:.LANCHOR3
ldrb w20, [x19, 384]
ldrh w27, [x19, 386]
ldr x3, [x2, 3384]
ldrh w28, [x1, 1410]
ldr w0, [x3, 4]
add w0, w0, 1
str w0, [x3, 4]
ldr x0, [x19, 376]
str w26, [x0]
ldr x3, [x2, 3384]
ldr x0, [x19, 376]
ldrb w1, [x1, 1946]
ldr w3, [x3, 4]
str w3, [x0, 4]
lsl w1, w1, 9
ldr x3, [x19, 376]
ldr x0, [x19, 392]
stp x2, x3, [x29, 96]
bl js_hash
ldp x2, x3, [x29, 96]
str w0, [x3, 8]
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L2631
ldr x0, [x2, 3384]
ldrb w1, [x19, 384]
ldrh w2, [x19, 386]
ldr w3, [x0, 4]
adrp x0, .LC186
add x0, x0, :lo12:.LC186
bl printk
.L2631:
add x1, x21, :lo12:.LANCHOR3
ldrh w0, [x19, 386]
ldrh w1, [x1, 1376]
cmp w1, w0
bhi .L2632
add x20, x23, :lo12:.LANCHOR0
.L2639:
ldrb w0, [x19, 385]
add w0, w0, 1
and w0, w0, 255
strb w0, [x19, 385]
cmp w0, 7
bls .L2633
mov x0, 0
.L2638:
ldr x2, [x20, 1048]
add w1, w0, 8
and w25, w0, 65535
add x1, x2, w1, sxtw
ldrb w2, [x1, 32]
add w1, w2, 127
and w1, w1, 255
cmp w1, 125
bhi .L2634
mov x1, x24
mov w2, 846
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2637:
strb w25, [x19, 385]
mov w25, 1
.L2633:
ldrb w1, [x19, 385]
ldr x0, [x20, 1048]
add x0, x0, x1
ldrb w0, [x0, 40]
strb w0, [x19, 384]
cmp w0, 255
beq .L2639
add x27, x21, :lo12:.LANCHOR3
ldrh w20, [x27, 1410]
mul w20, w20, w0
mov w0, 0
mov w1, w20
bl flash_erase_block
ldrb w4, [x27, 1946]
mov w1, w20
ldr x3, [x19, 376]
mov w0, 0
ldr x2, [x19, 392]
add w20, w20, 1
bl ftl_prog_page
mov w0, 1
strh w0, [x19, 386]
.L2640:
add x0, x21, :lo12:.LANCHOR3
ldr x3, [x19, 376]
ldr x2, [x19, 392]
mov w1, w20
ldrb w4, [x0, 1946]
mov w0, 0
bl ftl_prog_page
cmn w0, #1
ldrh w1, [x19, 386]
add w1, w1, 1
strh w1, [x19, 386]
beq .L2641
ldrb w0, [x19, 400]
cbz w0, .L2642
.L2641:
strb wzr, [x19, 400]
b .L2643
.L2634:
cmp w2, 255
bne .L2637
add x0, x0, 1
cmp x0, 8
bne .L2638
mov w25, w0
b .L2637
.L2632:
madd w20, w20, w28, w27
cbnz w0, .L2640
mov w1, w20
bl flash_erase_block
b .L2640
.L2642:
cbnz w25, .L2644
.L2652:
add x22, x22, :lo12:.LANCHOR5
ldrb w0, [x22, 384]
cmp w0, 255
bne .L2646
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 592
mov w2, 890
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2646:
ldp x19, x20, [sp, 16]
mov w0, 0
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L2644:
ldrb w19, [x19, 385]
adrp x20, .LANCHOR4
add x20, x20, :lo12:.LANCHOR4
adrp x24, .LC0
add w19, w19, 1
add x20, x20, 592
add x24, x24, :lo12:.LC0
.L2647:
cmp w19, 7
bhi .L2652
add x0, x23, :lo12:.LANCHOR0
ldr x1, [x0, 1048]
add w0, w19, 8
add x0, x1, w0, sxtw
ldrb w25, [x0, 32]
add w0, w25, 127
and w0, w0, 255
cmp w0, 125
bhi .L2648
mov x1, x20
mov w2, 881
mov x0, x24
bl printk
bl dump_stack
.L2649:
add x0, x21, :lo12:.LANCHOR3
ldrh w1, [x0, 1410]
mov w0, 0
mul w1, w1, w25
bl flash_erase_block
b .L2650
.L2648:
cmp w25, 255
bne .L2649
.L2650:
add w19, w19, 1
and w19, w19, 65535
b .L2647
.size ftl_info_flush, .-ftl_info_flush
.align 2
.global ftl_info_blk_init
.type ftl_info_blk_init, %function
ftl_info_blk_init:
stp x29, x30, [sp, -112]!
mov w0, 1
mov w2, 16384
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
stp x21, x22, [sp, 32]
add x22, x19, :lo12:.LANCHOR0
adrp x21, .LANCHOR5
add x20, x21, :lo12:.LANCHOR5
stp x25, x26, [sp, 64]
adrp x26, .LC187
stp x27, x28, [sp, 80]
add x26, x26, :lo12:.LC187
stp x23, x24, [sp, 48]
mov w27, 21574
strb w0, [x20, 400]
movk w27, 0x494c, lsl 16
strb w0, [x20, 402]
ldrh w1, [x22, 1096]
ldr x0, [x20, 392]
strb wzr, [x20, 401]
str x0, [x22, 1104]
add x1, x0, x1, lsl 2
str x1, [x22, 3384]
mov w1, 0
bl ftl_memset
ldr x0, [x20, 408]
mov w2, 16384
mov w1, 0
bl ftl_memset
strb wzr, [x20, 385]
ldr x0, [x22, 1048]
adrp x22, .LANCHOR3
add x22, x22, :lo12:.LANCHOR3
strh wzr, [x20, 386]
ldrb w0, [x0, 40]
strb w0, [x20, 384]
mov w20, 7
.L2668:
add x0, x19, :lo12:.LANCHOR0
sxth w24, w20
ldr x1, [x0, 1048]
add w0, w20, 8
add x0, x1, w0, sxtw
ldrb w0, [x0, 32]
cmp w0, 255
bne .L2667
.L2672:
sub w20, w20, #1
cmn w20, #1
bne .L2668
mov w24, 0
.L2669:
adrp x23, .LANCHOR2
ldr w0, [x23, #:lo12:.LANCHOR2]
tbz x0, 12, .L2673
add x0, x19, :lo12:.LANCHOR0
mov w2, 4800
mov w1, w20
ldr x0, [x0, 3384]
ldr w3, [x0]
adrp x0, .LC188
add x0, x0, :lo12:.LC188
bl printk
.L2673:
cmn w20, #1
bne .L2674
add x21, x21, :lo12:.LANCHOR5
add x19, x19, :lo12:.LANCHOR0
mov w1, 0
mov w2, 16384
ldr x0, [x21, 392]
bl ftl_memset
ldr x0, [x19, 3384]
mov w1, 21574
movk w1, 0x494c, lsl 16
str w1, [x0]
mov w1, 36
movk w1, 0x6, lsl 16
ldr x0, [x19, 3384]
str w1, [x0, 12]
mov w0, w20
.L2666:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L2667:
add x28, x21, :lo12:.LANCHOR5
ldrh w25, [x22, 1410]
ldrb w4, [x22, 1946]
ldr x3, [x28, 376]
ldr x2, [x28, 392]
mul w25, w25, w0
mov w0, 0
mov w1, w25
bl ftl_read_page
mov w23, w0
cmn w0, #1
bne .L2670
ldrb w4, [x22, 1946]
add w1, w25, 1
ldr x3, [x28, 376]
mov w0, 0
ldr x2, [x28, 392]
bl ftl_read_page
mov w23, w0
.L2670:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L2671
add x0, x19, :lo12:.LANCHOR0
mov w3, 749
mov w2, w23
mov w1, w20
ldr x0, [x0, 3384]
ldr w4, [x0]
mov x0, x26
bl printk
.L2671:
cmn w23, #1
beq .L2672
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
ldr w0, [x0]
cmp w0, w27
bne .L2672
mov w20, w24
b .L2669
.L2674:
add x0, x19, :lo12:.LANCHOR0
add x20, x21, :lo12:.LANCHOR5
adrp x22, .LANCHOR3
add x22, x22, :lo12:.LANCHOR3
mov w4, 4
mov w28, 21574
ldr x1, [x0, 1048]
add w0, w24, 8
ldr x3, [x20, 376]
adrp x27, .LC189
ldr x2, [x20, 392]
add x27, x27, :lo12:.LC189
add x0, x1, w0, sxtw
strb w24, [x20, 385]
movk w28, 0x494c, lsl 16
ldrb w1, [x0, 32]
mov w0, 0
strb w1, [x20, 384]
bl flash_get_last_written_page
sxth w25, w0
add w0, w0, 1
ldrb w26, [x20, 384]
and w24, w0, 65535
ldrh w0, [x22, 1410]
madd w26, w26, w0, w25
.L2676:
tbnz w25, #31, .L2680
ldrb w4, [x22, 1946]
mov w1, w26
ldr x3, [x20, 376]
mov w0, 0
ldr x2, [x20, 392]
bl ftl_read_page
cmn w0, #1
beq .L2677
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
ldr w0, [x0]
cmp w0, w28
bne .L2677
ldr x0, [x20, 376]
ldr w2, [x0, 8]
cbnz w2, .L2678
.L2680:
add x21, x21, :lo12:.LANCHOR5
add x19, x19, :lo12:.LANCHOR0
strh w24, [x21, 386]
bl ftl_tmp_into_update
ldr x1, [x19, 3384]
ldr w0, [x1, 64]
add w0, w0, 1
str w0, [x1, 64]
mov w0, 0
bl ftl_info_flush
mov w0, 0
bl ftl_info_flush
ldr w0, [x23, #:lo12:.LANCHOR2]
tbnz x0, 14, .L2679
.L2696:
mov w0, 0
b .L2666
.L2678:
ldr x0, [x20, 392]
ldrb w1, [x22, 1946]
str w2, [x29, 108]
lsl w1, w1, 9
bl js_hash
ldr w2, [x29, 108]
cmp w2, w0
beq .L2680
ldr x0, [x20, 376]
ldr w1, [x0, 8]
mov x0, x27
bl printk
.L2677:
sub w25, w25, #1
sub w26, w26, #1
sxth w25, w25
b .L2676
.L2679:
ldr x0, [x19, 3384]
ldr w1, [x0, 156]
adrp x0, .LC190
add x0, x0, :lo12:.LC190
bl printk
b .L2696
.size ftl_info_blk_init, .-ftl_info_blk_init
.align 2
.global ftl_ext_info_flush
.type ftl_ext_info_flush, %function
ftl_ext_info_flush:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
str x27, [sp, 80]
bl timer_get_time
mov w1, 100
udiv w0, w0, w1
add x1, x19, :lo12:.LANCHOR0
ldr x1, [x1, 1128]
ldr w3, [x1, 520]
cmp w0, w3
bls .L2698
ldr w2, [x1, 12]
sub w2, w2, w3
add w2, w2, w0
str w2, [x1, 12]
.L2712:
str w0, [x1, 520]
b .L2699
.L2698:
bcc .L2712
.L2699:
adrp x22, .LANCHOR4
add x22, x22, :lo12:.LANCHOR4
add x19, x19, :lo12:.LANCHOR0
add x22, x22, 608
mov w0, 0
bl ftl_total_vpn_update
.L2700:
adrp x23, .LANCHOR3
.L2703:
ldr x1, [x19, 3384]
ldr w0, [x1, 56]
add w0, w0, 1
str w0, [x1, 56]
add x0, x23, :lo12:.LANCHOR3
ldrh w1, [x1, 140]
ldrh w0, [x0, 1376]
cmp w1, w0
bcc .L2701
bl ftl_ext_alloc_new_blk
.L2701:
ldr x0, [x19, 3384]
ldrh w1, [x0, 130]
mov w0, 65535
cmp w1, w0
bne .L2702
mov x1, x22
mov w2, 2211
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2702:
add x25, x23, :lo12:.LANCHOR3
ldr x1, [x19, 3384]
ldrb w20, [x19, 1205]
mov w0, 24
adrp x24, .LANCHOR5
add x21, x24, :lo12:.LANCHOR5
sub w20, w0, w20
ldrh w0, [x25, 1304]
ldrh w2, [x1, 130]
sub w0, w20, w0
mov w20, 1
lsl w20, w20, w0
sub w20, w20, #1
asr w26, w2, w0
and w20, w20, w2
ldrh w0, [x1, 140]
sxth w20, w20
ldrh w2, [x25, 1410]
mov w1, 0
madd w20, w20, w2, w0
ldr x0, [x21, 376]
ldrb w2, [x25, 1946]
lsl w2, w2, 1
bl ftl_memset
ldr x0, [x21, 376]
str wzr, [x0]
ldr x1, [x19, 3384]
ldr x0, [x21, 376]
ldr w1, [x1, 56]
str w1, [x0, 4]
ldrb w1, [x25, 1946]
ldr x0, [x21, 408]
ldr x27, [x21, 376]
lsl w1, w1, 9
bl js_hash
ldr x2, [x21, 408]
mov w1, w20
ldrb w4, [x25, 1946]
ldr x3, [x21, 376]
str w0, [x27, 8]
mov w0, w26
bl ftl_prog_page
ldr x2, [x19, 3384]
ldrh w1, [x2, 140]
add w1, w1, 1
and w1, w1, 65535
strh w1, [x2, 140]
cmp w1, 1
beq .L2703
cmn w0, #1
beq .L2704
ldrb w0, [x21, 402]
cbz w0, .L2705
.L2704:
add x24, x24, :lo12:.LANCHOR5
strb wzr, [x24, 402]
b .L2700
.L2705:
mov w0, 0
ldr x27, [sp, 80]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
ret
.size ftl_ext_info_flush, .-ftl_ext_info_flush
.align 2
.global ftl_ext_info_init
.type ftl_ext_info_init, %function
ftl_ext_info_init:
stp x29, x30, [sp, -128]!
mov w4, 4
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR3
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x22, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
add x2, x21, :lo12:.LANCHOR3
stp x27, x28, [sp, 80]
adrp x25, .LANCHOR5
ldr x0, [x22, 3384]
ldrb w20, [x22, 1205]
strh wzr, [x2, 1944]
ldrh w1, [x0, 130]
mov w0, 24
sub w0, w0, w20
ldrh w20, [x2, 1304]
sub w0, w0, w20
mov w20, 1
asr w24, w1, w0
and w27, w24, 255
lsl w20, w20, w0
add x0, x25, :lo12:.LANCHOR5
sub w20, w20, #1
and w20, w20, w1
ldr x3, [x0, 376]
mov w1, w20
ldr x2, [x0, 408]
mov w0, w27
bl flash_get_last_written_page
sxth w23, w0
adrp x0, .LANCHOR2
stp x0, x25, [x29, 112]
ldr w1, [x0, #:lo12:.LANCHOR2]
tbz x1, 12, .L2714
ldr x0, [x22, 3384]
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
and w4, w24, 65535
mov w3, w23
mov w2, 2256
add x1, x1, 632
ldrh w5, [x0, 130]
adrp x0, .LC191
add x0, x0, :lo12:.LC191
bl printk
.L2714:
adrp x26, .LC192
and w22, w23, 65535
add x25, x21, :lo12:.LANCHOR3
add x26, x26, :lo12:.LC192
mov w24, 0
.L2715:
sub w0, w22, w24
tbnz x0, 15, .L2720
ldr x0, [x29, 120]
sub w1, w23, w24
ldrb w4, [x25, 1946]
add x28, x0, :lo12:.LANCHOR5
ldrh w0, [x25, 1410]
ldr x3, [x28, 376]
madd w1, w0, w20, w1
ldr x2, [x28, 408]
mov w0, w27
bl flash_read_page_en
cmp w0, 512
ccmn w0, #1, 4, ne
beq .L2716
add x0, x19, :lo12:.LANCHOR0
mov w1, 20038
movk w1, 0x4549, lsl 16
ldr x0, [x0, 1128]
ldr w0, [x0]
cmp w0, w1
bne .L2716
ldr x0, [x28, 376]
ldr w2, [x0, 8]
cbnz w2, .L2717
.L2720:
bl zftl_sblk_list_init
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
ldrh w1, [x0, 140]
cmp w1, w23
bgt .L2719
add w22, w22, 1
strh w22, [x0, 140]
bl ftl_ext_info_flush
.L2719:
add x19, x19, :lo12:.LANCHOR0
ldr x20, [x19, 1128]
bl timer_get_time
mov w1, 100
udiv w0, w0, w1
str w0, [x20, 520]
ldr x20, [x19, 1128]
bl timer_get_time
mov w1, -1
str w0, [x20, 604]
ldr x0, [x19, 1128]
strh w1, [x0, 584]
strh w1, [x0, 586]
strh w1, [x0, 588]
strh w1, [x0, 590]
mov w1, 65535
str w1, [x0, 560]
mov w1, -1
str w1, [x0, 564]
ldr x1, [x29, 112]
str wzr, [x0, 608]
ldr w1, [x1, #:lo12:.LANCHOR2]
tbz x1, 12, .L2722
ldr w20, [x0, 12]
ldr w19, [x0, 520]
bl timer_get_time
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
mov w4, w0
mov w3, w20
adrp x0, .LC193
mov w2, w19
add x1, x1, 632
add x0, x0, :lo12:.LC193
bl printk
.L2722:
add x21, x21, :lo12:.LANCHOR3
mov w0, -1
ldp x19, x20, [sp, 16]
strh w0, [x21, 1280]
mov w0, 0
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L2717:
ldr x0, [x28, 408]
ldrb w1, [x25, 1946]
str w2, [x29, 108]
lsl w1, w1, 9
bl js_hash
ldr w2, [x29, 108]
cmp w2, w0
beq .L2720
ldr x0, [x28, 376]
ldr w1, [x0, 8]
mov x0, x26
bl printk
.L2716:
add w24, w24, 1
b .L2715
.size ftl_ext_info_init, .-ftl_ext_info_init
.align 2
.global ftl_prog_ppa_page
.type ftl_prog_ppa_page, %function
ftl_prog_ppa_page:
stp x29, x30, [sp, -16]!
adrp x4, .LANCHOR0+1205
mov w5, 1
add x29, sp, 0
ldrb w6, [x4, #:lo12:.LANCHOR0+1205]
mov w4, 24
sub w4, w4, w6
lsl w7, w5, w4
sub w7, w7, #1
lsl w5, w5, w6
sub w6, w5, #1
lsr w5, w0, w4
mov w4, w3
mov x3, x2
mov x2, x1
and w1, w7, w0
and w0, w6, w5
bl ftl_prog_page
ldp x29, x30, [sp], 16
ret
.size ftl_prog_ppa_page, .-ftl_prog_ppa_page
.align 2
.global ftl_write_last_log_page
.type ftl_write_last_log_page, %function
ftl_write_last_log_page:
ldrh w1, [x0, 6]
cmp w1, 1
bne .L2737
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR3
add x20, x20, :lo12:.LANCHOR3
stp x21, x22, [sp, 32]
str x23, [sp, 48]
mov x19, x0
ldr x21, [x20, 1928]
ldrh w23, [x0, 12]
bl ftl_get_new_free_page
mov w22, w0
cmn w0, #1
beq .L2738
ldrh w0, [x19]
adrp x19, .LANCHOR5
add x19, x19, :lo12:.LANCHOR5
add x21, x21, w23, uxth 2
bl ftl_vpn_decrement
ldr x0, [x19, 416]
mov w1, 15555
movk w1, 0xf55f, lsl 16
str w1, [x0]
ldrb w0, [x20, 1321]
ldrh w1, [x20, 1376]
ldr x23, [x19, 416]
mul w1, w1, w0
mov x0, x21
lsl w1, w1, 2
bl js_hash
str w0, [x23, 4]
mov x2, 0
mov w0, 2
ldr x1, [x19, 416]
stp wzr, wzr, [x1, 8]
str wzr, [x1, 16]!
bl ftl_debug_info_fill
ldrb w3, [x20, 1946]
mov x1, x21
ldr x2, [x19, 416]
mov w0, w22
bl ftl_prog_ppa_page
.L2738:
mov w0, 0
ldr x23, [sp, 48]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.L2737:
mov w0, -1
ret
.size ftl_write_last_log_page, .-ftl_write_last_log_page
.align 2
.global ftl_dump_write_open_sblk
.type ftl_dump_write_open_sblk, %function
ftl_dump_write_open_sblk:
sub sp, sp, #224
stp x29, x30, [sp, 48]
add x29, sp, 48
stp x19, x20, [sp, 64]
and w20, w0, 65535
stp x21, x22, [sp, 80]
adrp x21, .LANCHOR0
add x0, x21, :lo12:.LANCHOR0
stp x23, x24, [sp, 96]
stp x25, x26, [sp, 112]
stp x27, x28, [sp, 128]
ldrh w0, [x0, 1096]
cmp w0, w20
bls .L2743
adrp x23, .LANCHOR3
add x0, x23, :lo12:.LANCHOR3
ldrb w1, [x0, 1336]
cbnz w1, .L2745
ldrb w0, [x0, 1322]
cbz w0, .L2743
.L2745:
add x0, x21, :lo12:.LANCHOR0
ldrb w1, [x0, 1212]
cbnz w1, .L2743
ldr x0, [x0, 1104]
ubfiz x14, x20, 2, 16
add x0, x0, x14
ldrb w0, [x0, 2]
and w0, w0, 224
cmp w0, 160
bne .L2767
add x0, x23, :lo12:.LANCHOR3
ldrb w26, [x0, 1320]
.L2746:
add x22, x29, 176
add x24, x23, :lo12:.LANCHOR3
mov w0, w20
adrp x27, .LC195
add x27, x27, :lo12:.LC195
mov w28, 0
strh w20, [x22, -32]!
add x1, x22, 16
bl ftl_get_blk_list_in_sblk
ldrh w1, [x24, 1376]
and w0, w0, 255
strb w0, [x29, 153]
strh wzr, [x29, 146]
strb wzr, [x29, 149]
mul w0, w0, w1
strh wzr, [x29, 154]
strh w0, [x29, 150]
add x0, x21, :lo12:.LANCHOR0
ldr x0, [x0, 1104]
add x1, x0, x14
ldr w5, [x0, x14]
ldrb w2, [x1, 2]
mov w1, w20
ldrh w4, [x0, x14]
adrp x0, .LC194
ubfx x5, x5, 11, 8
add x0, x0, :lo12:.LC194
ubfx x3, x2, 3, 2
and w4, w4, 2047
ubfx x2, x2, 5, 3
bl printk
mov w0, 1
bl buf_alloc
mov x19, x0
mov x11, x24
mov w9, 0
mov w10, 0
.L2747:
ldrh w0, [x11, 1376]
cmp w0, w28
bls .L2755
lsl w24, w28, 1
mov w10, 0
sub w0, w24, #1
add w24, w24, w28
sub w24, w24, #1
str w0, [x29, 136]
b .L2758
.L2767:
mov w26, 1
b .L2746
.L2756:
ldrh w12, [x22, x25]
mov w0, 65535
cmp w12, w0
bne .L2748
.L2754:
add w9, w9, 1
and w9, w9, 65535
.L2749:
cmp w26, w9
bcs .L2756
add w10, w10, 1
and w10, w10, 65535
.L2758:
ldrb w0, [x29, 153]
cmp w0, w10
bls .L2757
sxtw x25, w10
mov w9, 1
add x25, x25, 8
lsl x25, x25, 1
b .L2749
.L2748:
ldrh w3, [x11, 1410]
cmp w26, 3
mul w3, w3, w12
add w0, w3, w9
bne .L2750
add x1, x21, :lo12:.LANCHOR0
ldrb w1, [x1, 1213]
cbz w1, .L2751
ldrb w3, [x11, 1320]
add w0, w0, w24
.L2781:
orr w3, w0, w3, lsl 24
b .L2752
.L2751:
add w3, w28, w3
orr w3, w3, w9, lsl 24
.L2752:
str w3, [x19, 40]
mov w1, 1
str x11, [x29, 104]
mov x0, x19
str w9, [x29, 112]
stp w12, w10, [x29, 124]
str w3, [x29, 132]
bl sblk_read_page
ldr w13, [x19, 52]
ldr w9, [x29, 112]
cmp w13, 512
ldr w3, [x29, 132]
ccmn w13, #1, 4, ne
ldr x11, [x29, 104]
ldp w12, w10, [x29, 124]
bne .L2754
ldr x1, [x19, 24]
mov w4, w13
ldr x0, [x19, 8]
str x11, [x29, 112]
stp w9, w10, [x29, 124]
ldr w2, [x1, 12]
str w2, [sp, 32]
str w13, [x29, 132]
ldr w2, [x1, 8]
str w2, [sp, 24]
ldr w2, [x1, 4]
str w2, [sp, 16]
mov w2, w28
ldr w1, [x1]
str w1, [sp, 8]
ldr w1, [x0, 12]
str w1, [sp]
mov w1, w12
ldp w5, w6, [x0]
ldr w7, [x0, 8]
mov x0, x27
bl printk
ldr w13, [x29, 132]
ldp w9, w10, [x29, 124]
cmp w13, 512
ldr x11, [x29, 112]
bne .L2754
.L2755:
add x24, x23, :lo12:.LANCHOR3
mov w4, w9
mov w3, w10
mov w2, w28
mov w1, w20
adrp x0, .LC196
add x0, x0, :lo12:.LC196
bl printk
ldr x0, [x19, 8]
mov w1, 0
ldrb w2, [x24, 1946]
adrp x26, .LC197
add x26, x26, :lo12:.LC197
lsl w2, w2, 9
bl ftl_memset
ldr x0, [x19, 24]
mov w1, 0
ldrb w2, [x24, 1946]
lsl w2, w2, 1
bl ftl_memset
.L2759:
add x24, x23, :lo12:.LANCHOR3
ldrh w0, [x24, 1376]
cmp w0, w28
bls .L2765
add x0, x21, :lo12:.LANCHOR0
lsl w27, w28, 1
mov w25, 0
str x0, [x29, 136]
b .L2766
.L2750:
cmp w26, 2
bne .L2753
ldr w1, [x29, 136]
ldrb w3, [x11, 1320]
add w0, w1, w0
b .L2781
.L2753:
add w3, w28, w3
b .L2752
.L2757:
add w8, w28, 1
and w28, w8, 65535
b .L2747
.L2764:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L2760
mov w2, w25
mov w1, w28
mov x0, x26
bl printk
.L2760:
ldrb w1, [x24, 1336]
sxtw x0, w25
ldrh w2, [x24, 1410]
cbz w1, .L2761
add x0, x0, 8
ldrh w1, [x22, x0, lsl 1]
mov x0, x19
mul w1, w1, w2
orr w1, w1, w28
str w1, [x19, 40]
bl sblk_3d_tlc_dump_prog
.L2762:
add w25, w25, 1
and w25, w25, 65535
.L2766:
ldrb w0, [x29, 153]
cmp w0, w25
bhi .L2764
add w8, w28, 1
and w28, w8, 65535
b .L2759
.L2761:
add x0, x0, 8
ldrb w1, [x24, 1320]
cmp w1, 2
ldrh w1, [x22, x0, lsl 1]
mul w1, w1, w2
bne .L2763
orr w1, w1, w27
mov x0, x19
orr w1, w1, 33554432
str w1, [x19, 40]
bl sblk_mlc_dump_prog
b .L2762
.L2763:
ldr x0, [x29, 136]
mov w6, 1
ldrb w4, [x24, 1946]
orr w1, w1, w28
ldr x3, [x19, 24]
mov w5, 0
str w1, [x19, 40]
ldrb w2, [x0, 1205]
mov w0, 24
sub w0, w0, w2
lsl w6, w6, w2
ldr x2, [x19, 8]
sub w6, w6, #1
lsl w7, w6, w0
lsr w0, w1, w0
bic w1, w1, w7
and w0, w0, w6
bl flash_prog_page_en
b .L2762
.L2765:
mov x0, x19
bl zbuf_free
adrp x0, .LC198
mov w1, w20
add x0, x0, :lo12:.LC198
bl printk
.L2743:
ldp x19, x20, [sp, 64]
ldp x21, x22, [sp, 80]
ldp x23, x24, [sp, 96]
ldp x25, x26, [sp, 112]
ldp x27, x28, [sp, 128]
ldp x29, x30, [sp, 48]
add sp, sp, 224
ret
.size ftl_dump_write_open_sblk, .-ftl_dump_write_open_sblk
.align 2
.global gc_ink_check_sblk
.type gc_ink_check_sblk, %function
gc_ink_check_sblk:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
ldrh w1, [x0, 5526]
ldr x21, [x0, 5600]
cmp w1, 3
bhi .L2783
adrp x0, .L2785
mov x20, x19
add x0, x0, :lo12:.L2785
ldrh w0, [x0,w1,uxtw #1]
adr x1, .Lrtx2785
add x0, x1, w0, sxth #2
br x0
.Lrtx2785:
.section .rodata
.align 0
.align 2
.L2785:
.2byte (.L2784 - .Lrtx2785) / 4
.2byte (.L2786 - .Lrtx2785) / 4
.2byte (.L2787 - .Lrtx2785) / 4
.2byte (.L2788 - .Lrtx2785) / 4
.text
.L2784:
add x19, x19, :lo12:.LANCHOR0
ldrh w0, [x19, 3372]
cmp w0, 7
bls .L2782
ldrb w0, [x19, 3353]
cmp w0, 2
bls .L2782
adrp x20, .LANCHOR3
add x20, x20, :lo12:.LANCHOR3
add x23, x20, 1400
mov w1, 0
mov x0, x23
bl _list_get_gc_head_node
and w0, w0, 65535
mov w22, 65535
cmp w0, w22
beq .L2782
ldr x1, [x19, 1104]
ubfiz x0, x0, 2, 16
ldrh w0, [x1, x0]
and w0, w0, 2047
cmp w0, 2
bgt .L2782
mov w0, 1
bl buf_alloc
str x0, [x19, 5600]
add x21, x19, 3416
cbz x0, .L2782
add x2, x19, 3372
mov w1, 0
mov x0, x23
bl _list_pop_index_node
and w14, w0, 65535
cmp w14, w22
bne .L2792
ldr x0, [x19, 5600]
bl zbuf_free
str xzr, [x19, 5600]
.L2782:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L2792:
mov w0, w14
add x1, x21, 2162
bl ftl_get_blk_list_in_sblk
strb w0, [x21, 2155]
mov w0, 1
strh w0, [x19, 5526]
ldr x0, [x19, 1104]
strh w14, [x19, 5562]
ubfiz x14, x14, 2, 16
strh wzr, [x19, 5564]
ldrb w2, [x20, 1946]
ldrh w0, [x0, x14]
tbz x0, 0, .L2793
ldr x0, [x19, 5600]
lsl w2, w2, 9
mov w1, 85
.L2808:
ldr x0, [x0, 8]
bl ftl_memset
b .L2782
.L2793:
lsl w2, w2, 9
mov w1, 170
ldr x0, [x19, 5600]
b .L2808
.L2786:
add x20, x19, :lo12:.LANCHOR0
mov w1, 0
ldrh w0, [x20, 5562]
bl ftl_erase_sblk
mov w0, 2
strh w0, [x20, 5526]
b .L2782
.L2787:
add x19, x19, :lo12:.LANCHOR0
adrp x24, .LANCHOR3
mov w20, 65280
add x22, x19, 3416
add x24, x24, :lo12:.LANCHOR3
mov w23, 0
movk w20, 0x55aa, lsl 16
bl sblk_wait_write_queue_completed
.L2794:
ldrb w0, [x22, 2155]
cmp w0, w23
bhi .L2796
ldrh w0, [x22, 2148]
adrp x1, .LANCHOR3+1376
add w0, w0, 1
ldrh w1, [x1, #:lo12:.LANCHOR3+1376]
and w0, w0, 65535
strh w0, [x22, 2148]
cmp w1, w0
bhi .L2782
mov w0, 3
strh wzr, [x22, 2148]
strh w0, [x22, 2110]
b .L2782
.L2796:
add x0, x22, w23, sxtw 1
mov w1, 65535
ldrh w0, [x0, 2162]
cmp w0, w1
beq .L2795
ldrh w2, [x22, 2148]
mov w6, 1
ldrh w1, [x24, 1410]
mov w5, 0
madd w1, w1, w0, w2
ldr x0, [x21, 8]
str w1, [x0]
ldr x0, [x21, 8]
str w20, [x0, 4]
ldr x0, [x21, 24]
str wzr, [x0]
mov w0, 24
ldrb w2, [x19, 1205]
ldrb w4, [x24, 1946]
sub w0, w0, w2
ldr x3, [x21, 24]
lsl w6, w6, w2
ldr x2, [x21, 8]
sub w6, w6, #1
lsl w7, w6, w0
lsr w0, w1, w0
bic w1, w1, w7
and w0, w0, w6
bl flash_prog_page_en
.L2795:
add w23, w23, 1
and w23, w23, 65535
b .L2794
.L2788:
add x19, x19, :lo12:.LANCHOR0
adrp x25, .LANCHOR3
add x19, x19, 3416
add x25, x25, :lo12:.LANCHOR3
mov w22, 0
mov w26, 65535
bl sblk_wait_write_queue_completed
.L2797:
ldrb w0, [x19, 2155]
cmp w0, w22
bhi .L2801
ldrh w0, [x19, 2148]
adrp x1, .LANCHOR3+1376
add w0, w0, 1
ldrh w1, [x1, #:lo12:.LANCHOR3+1376]
and w0, w0, 65535
strh w0, [x19, 2148]
cmp w1, w0
bhi .L2782
ldr x0, [x19, 2184]
strh wzr, [x19, 2110]
bl zbuf_free
str xzr, [x19, 2184]
ldrh w0, [x19, 2112]
cmp w0, 15
bhi .L2802
add w1, w0, 1
add x0, x19, w0, sxtw 1
strh w1, [x19, 2112]
ldrh w1, [x19, 2146]
strh w1, [x0, 2114]
.L2803:
add x19, x20, :lo12:.LANCHOR0
adrp x0, .LC199
add x0, x0, :lo12:.LC199
ldrh w2, [x19, 5528]
ldrh w1, [x19, 5562]
bl printk
b .L2782
.L2801:
add x24, x19, w22, sxtw 1
add x24, x24, 16
ldrh w0, [x24, 2146]
cmp w0, w26
beq .L2799
ldrh w1, [x19, 2148]
ldrh w23, [x25, 1410]
madd w23, w23, w0, w1
mov w1, 1
str w23, [x21, 40]
mov x0, x21
bl sblk_read_page
ldr x0, [x21, 8]
ldr w0, [x0]
cmp w23, w0
beq .L2799
mov w0, w23
bl ftl_mask_bad_block
mov w0, -1
strh w0, [x24, 2146]
.L2799:
add w22, w22, 1
and w22, w22, 65535
b .L2797
.L2802:
ldrh w0, [x19, 2146]
bl zftl_insert_free_list
b .L2803
.L2783:
strh wzr, [x0, 5526]
b .L2782
.size gc_ink_check_sblk, .-gc_ink_check_sblk
.align 2
.global ftl_ink_check_sblk
.type ftl_ink_check_sblk, %function
ftl_ink_check_sblk:
stp x29, x30, [sp, -144]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR0
add x22, x21, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
stp x25, x26, [sp, 64]
and w20, w0, 65535
stp x23, x24, [sp, 48]
ubfiz x25, x20, 2, 16
stp x27, x28, [sp, 80]
mov w1, w20
ldr x0, [x22, 1104]
ldr w3, [x0, x25]
ldrh w2, [x0, x25]
adrp x0, .LC200
add x0, x0, :lo12:.LC200
ubfx x3, x3, 11, 8
and w2, w2, 2047
bl printk
mov w0, 65535
cmp w20, w0
beq .L2809
ldrh w0, [x22, 1096]
cmp w0, w20
bls .L2809
add x24, x29, 144
mov w1, 0
mov w0, w20
bl ftl_erase_sblk
mov w0, w20
strh w20, [x24, -32]!
add x1, x24, 16
bl ftl_get_blk_list_in_sblk
strb w0, [x29, 121]
mov w0, 1
bl buf_alloc
mov x19, x0
ldr x0, [x22, 1104]
adrp x22, .LANCHOR3
ldrh w0, [x0, x25]
and w0, w0, 2047
cmp w0, 1
add x0, x22, :lo12:.LANCHOR3
ldrb w2, [x0, 1946]
lsl w2, w2, 9
bgt .L2811
mov w1, 85
.L2827:
ldr x0, [x19, 8]
add x27, x22, :lo12:.LANCHOR3
mov w26, 0
bl ftl_memset
bl sblk_wait_write_queue_completed
mov w9, 65280
mov w8, 65535
movk w9, 0x55aa, lsl 16
.L2813:
ldrh w0, [x27, 1376]
cmp w0, w26
bls .L2816
mov w23, 0
add x7, x21, :lo12:.LANCHOR0
mov w28, 24
b .L2817
.L2811:
mov w1, 170
b .L2827
.L2815:
add x0, x24, w23, sxtw 1
ldrh w0, [x0, 16]
cmp w0, w8
beq .L2814
ldrh w1, [x27, 1410]
mov w6, 1
stp w8, w9, [x29, 96]
mov w5, 0
str x7, [x29, 104]
madd w1, w1, w0, w26
ldr x0, [x19, 8]
str w1, [x0]
ldr x0, [x19, 8]
str w9, [x0, 4]
ldr x0, [x19, 24]
str wzr, [x0]
ldrb w2, [x7, 1205]
ldrb w4, [x27, 1946]
sub w0, w28, w2
ldr x3, [x19, 24]
lsl w6, w6, w2
ldr x2, [x19, 8]
sub w6, w6, #1
lsl w10, w6, w0
lsr w0, w1, w0
bic w1, w1, w10
and w0, w0, w6
bl flash_prog_page_en
ldp w8, w9, [x29, 96]
ldr x7, [x29, 104]
.L2814:
add w23, w23, 1
and w23, w23, 65535
.L2817:
ldrb w0, [x29, 121]
cmp w0, w23
bhi .L2815
add w26, w26, 1
and w26, w26, 65535
b .L2813
.L2816:
add x22, x22, :lo12:.LANCHOR3
mov w26, 0
mov w27, 65535
.L2818:
ldrh w0, [x22, 1376]
cmp w0, w26
bls .L2823
mov w23, 0
b .L2824
.L2822:
sxtw x28, w23
add x28, x28, 8
lsl x28, x28, 1
ldrh w0, [x24, x28]
cmp w0, w27
beq .L2820
ldrh w3, [x22, 1410]
mov w1, 1
madd w3, w3, w0, w26
mov x0, x19
str w3, [x19, 40]
str w3, [x29, 104]
bl sblk_read_page
ldr x0, [x19, 8]
ldr w3, [x29, 104]
ldr w0, [x0]
cmp w3, w0
beq .L2820
mov w0, w3
bl ftl_mask_bad_block
mov w0, -1
strh w0, [x24, x28]
.L2820:
add w23, w23, 1
and w23, w23, 65535
.L2824:
ldrb w0, [x29, 121]
cmp w0, w23
bhi .L2822
add w2, w26, 1
and w26, w2, 65535
b .L2818
.L2823:
add x21, x21, :lo12:.LANCHOR0
mov x0, x19
bl zbuf_free
mov w1, w20
ldr x0, [x21, 1104]
ldr w3, [x0, x25]
ldrh w2, [x0, x25]
adrp x0, .LC201
add x0, x0, :lo12:.LC201
ubfx x3, x3, 11, 8
and w2, w2, 2047
bl printk
.L2809:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
ret
.size ftl_ink_check_sblk, .-ftl_ink_check_sblk
.align 2
.global ftl_alloc_sblk
.type ftl_alloc_sblk, %function
ftl_alloc_sblk:
stp x29, x30, [sp, -80]!
cmp w0, 5
add x29, sp, 0
stp x21, x22, [sp, 32]
and w21, w0, 65535
stp x19, x20, [sp, 16]
mov w22, w0
stp x23, x24, [sp, 48]
mov w1, w21
cset w23, eq
mov w0, 0
str x25, [sp, 64]
bl zftl_get_free_sblk
and w20, w0, 65535
mov w0, 65535
cmp w20, w0
beq .L2830
adrp x0, .LANCHOR0
add x1, x0, :lo12:.LANCHOR0
ubfiz x25, x20, 2, 16
lsl w23, w23, 1
mov w24, w20
mov x19, x0
ldr x21, [x1, 1104]
add x21, x21, x25
ldrb w1, [x21, 2]
tst w1, 224
beq .L2831
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 656
mov w2, 1012
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2831:
ldrb w0, [x21, 2]
bfi w0, w22, 5, 3
ubfx x1, x0, 3, 2
orr w1, w23, w1
bfi w0, w1, 3, 2
strb w0, [x21, 2]
and w1, w0, 24
cmp w1, 24
bne .L2832
cbnz w23, .L2832
mov w1, 1
bfi w0, w1, 3, 2
strb w0, [x21, 2]
.L2832:
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldrh w1, [x1, 150]
cbz w1, .L2833
ldr x0, [x0, 1104]
ldrh w0, [x0, x25]
tst x0, 2047
bne .L2833
cbnz w23, .L2833
mov w0, w24
bl ftl_ink_check_sblk
.L2833:
mov w0, w20
ldr x25, [sp, 64]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 80
ret
.L2830:
bl print_ftl_debug_info
adrp x19, .LC202
mov w2, w22
add x19, x19, :lo12:.LC202
mov w1, w20
mov x0, x19
bl printk
mov w1, w21
mov w0, 0
bl zftl_get_free_sblk
and w20, w0, 65535
mov w2, w22
mov w1, w20
mov x0, x19
bl printk
bl dump_all_list_info
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 656
mov w2, 1031
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L2833
.size ftl_alloc_sblk, .-ftl_alloc_sblk
.align 2
.global ftl_open_sblk_init
.type ftl_open_sblk_init, %function
ftl_open_sblk_init:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR0
stp x23, x24, [sp, 48]
adrp x22, .LC203
stp x19, x20, [sp, 16]
adrp x24, .LANCHOR3
stp x25, x26, [sp, 64]
mov x19, x0
mov w23, w1
add x25, x24, :lo12:.LANCHOR3
add x21, x21, :lo12:.LANCHOR0
add x22, x22, :lo12:.LC203
.L2843:
mov w26, 65535
.L2844:
mov w0, w23
bl ftl_alloc_sblk
and w20, w0, 65535
cmp w20, w26
beq .L2844
mov w1, 0
mov w0, w20
bl ftl_erase_sblk
add x1, x19, 16
mov w0, w20
bl ftl_get_blk_list_in_sblk
strh w20, [x19]
add x2, x24, :lo12:.LANCHOR3
and w0, w0, 255
strb w0, [x19, 9]
cmp w23, 2
strh wzr, [x19, 2]
ldrh w1, [x2, 1376]
strb wzr, [x19, 5]
strh wzr, [x19, 10]
strb w23, [x19, 4]
mul w0, w1, w0
strh w0, [x19, 6]
beq .L2847
ldrb w0, [x2, 1321]
mul w0, w1, w0
and w0, w0, 65535
.L2845:
ldrb w2, [x25, 1321]
ubfiz x26, x20, 1, 16
ldr x3, [x25, 1928]
strh w0, [x19, 12]
mul w2, w2, w1
add x0, x3, w0, uxth 2
mov w1, 255
lsl w2, w2, 2
bl ftl_memset
ldr x0, [x21, 1120]
ldrh w1, [x19, 6]
strh w1, [x0, x26]
ldrb w0, [x19, 9]
cbnz w0, .L2842
mov w1, w20
mov x0, x22
bl printk
ldr x0, [x21, 1120]
mov w1, -1
strh w1, [x0, x26]
mov w0, 7
strb w0, [x19, 4]
b .L2843
.L2847:
mov w0, 0
b .L2845
.L2842:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.size ftl_open_sblk_init, .-ftl_open_sblk_init
.align 2
.global pm_alloc_new_blk
.type pm_alloc_new_blk, %function
pm_alloc_new_blk:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
adrp x22, .LANCHOR3
add x2, x22, :lo12:.LANCHOR3
ldr x1, [x0, 3384]
ldrb w2, [x2, 1321]
ldrh w0, [x1, 690]
add w0, w0, 1
and w0, w0, 65535
strh w0, [x1, 690]
cmp w2, w0
bls .L2851
add x0, x1, w0, sxtw 1
ldrh w1, [x0, 672]
mov w0, 65535
cmp w1, w0
bne .L2852
.L2851:
adrp x23, .LC203
add x20, x19, :lo12:.LANCHOR0
add x23, x23, :lo12:.LC203
mov w24, 65535
.L2853:
mov w0, 1
bl ftl_alloc_sblk
and w21, w0, 65535
cmp w21, w24
beq .L2853
mov w1, 0
mov w0, w21
bl ftl_erase_sblk
ldr x1, [x20, 3384]
mov w0, w21
add x1, x1, 672
bl ftl_get_blk_list_in_sblk
tst w0, 65535
bne .L2854
mov w1, w21
mov x0, x23
bl printk
ldr x0, [x20, 1104]
add x21, x0, w21, uxth 2
ldrb w0, [x21, 2]
orr w0, w0, -32
strb w0, [x21, 2]
b .L2853
.L2854:
ldr x0, [x20, 3384]
adrp x1, .LANCHOR5+424
mov w2, 1
mov w20, 0
add x0, x0, 416
str w2, [x1, #:lo12:.LANCHOR5+424]
mov w1, 65535
strh wzr, [x0, 274]
.L2856:
ldrh w2, [x0]
cmp w2, w1
beq .L2855
add w20, w20, 1
add x0, x0, 2
and w20, w20, 65535
cmp w20, 128
bne .L2856
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 672
mov w2, 264
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2855:
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
add x20, x0, w20, sxtw 1
strh w21, [x20, 416]
ldrh w1, [x0, 688]
add w1, w1, 1
strh w1, [x0, 688]
.L2852:
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldrh w0, [x1, 690]
add x0, x0, 336
ldrh w20, [x1, x0, lsl 1]
mov w0, 65533
sub w1, w20, #1
cmp w0, w1, uxth
bcs .L2858
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 672
mov w2, 270
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2858:
add x19, x19, :lo12:.LANCHOR0
add x22, x22, :lo12:.LANCHOR3
mov w2, 24
ldrb w1, [x19, 1205]
ldr x0, [x19, 3384]
sub w2, w2, w1
ldrh w1, [x22, 1304]
sub w2, w2, w1
strh wzr, [x0, 696]
asr w4, w20, w2
strh w20, [x0, 692]
strh w4, [x0, 694]
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L2861
mov w0, 1
and w4, w4, 65535
lsl w2, w0, w2
mov w3, w20
adrp x0, .LC204
sub w2, w2, #1
mov w1, w20
add x0, x0, :lo12:.LC204
bl printk
.L2861:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.size pm_alloc_new_blk, .-pm_alloc_new_blk
.align 2
.global pm_write_page
.type pm_write_page, %function
pm_write_page:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x21, x22, [sp, 32]
mov w21, w0
stp x23, x24, [sp, 48]
mov x24, x1
stp x25, x26, [sp, 64]
adrp x25, .LANCHOR0
adrp x26, .LANCHOR3
add x22, x25, :lo12:.LANCHOR0
add x23, x26, :lo12:.LANCHOR3
stp x19, x20, [sp, 16]
stp x27, x28, [sp, 80]
.L2869:
add x0, x25, :lo12:.LANCHOR0
ldr x0, [x0, 3384]
ldr w1, [x0, 48]
ldrh w2, [x0, 696]
add w1, w1, 1
str w1, [x0, 48]
add x1, x26, :lo12:.LANCHOR3
ldrh w1, [x1, 1376]
cmp w2, w1
bcs .L2870
ldrh w1, [x0, 692]
mov w0, 65535
cmp w1, w0
bne .L2871
.L2870:
bl pm_alloc_new_blk
mov w0, 0
bl ftl_info_flush
.L2871:
ldr x0, [x22, 3384]
ldrh w1, [x0, 692]
mov w0, 65535
cmp w1, w0
bne .L2872
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 696
mov w2, 303
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L2872:
ldr x0, [x22, 3384]
adrp x19, .LANCHOR5
ldrh w1, [x23, 1410]
add x20, x19, :lo12:.LANCHOR5
mov w2, 64
ldrh w27, [x0, 692]
ldrh w0, [x0, 696]
madd w27, w27, w1, w0
ldr x0, [x20, 432]
mov w1, 0
bl ftl_memset
ldr x0, [x20, 432]
str w21, [x0]
ldr x1, [x22, 3384]
ldr x0, [x20, 432]
ldr w1, [x1, 48]
str w1, [x0, 4]
mov x0, x24
ldrb w1, [x23, 1946]
ldr x28, [x20, 432]
lsl w1, w1, 9
bl js_hash
ldrb w4, [x23, 1946]
mov x2, x24
str w0, [x28, 8]
mov w1, w27
ldr x0, [x22, 3384]
ldr x3, [x20, 432]
ldrb w0, [x0, 694]
bl ftl_prog_page
ldr x2, [x22, 3384]
ldrh w1, [x2, 696]
add w1, w1, 1
and w1, w1, 65535
strh w1, [x2, 696]
cmp w1, 1
beq .L2873
ldrb w1, [x20, 440]
cbz w1, .L2874
.L2873:
add x19, x19, :lo12:.LANCHOR5
strb wzr, [x19, 440]
b .L2869
.L2874:
cmn w0, #1
bne .L2876
mov w1, w27
adrp x0, .LC205
add x0, x0, :lo12:.LC205
bl printk
b .L2869
.L2876:
ldrh w0, [x2, 698]
cmp w21, w0
bcs .L2877
add x21, x2, w21, uxtw 2
str w27, [x21, 704]
.L2877:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 96
ret
.size pm_write_page, .-pm_write_page
.align 2
.global flash_info_flush
.type flash_info_flush, %function
flash_info_flush:
stp x29, x30, [sp, -80]!
adrp x0, .LANCHOR2
add x29, sp, 0
ldr w0, [x0, #:lo12:.LANCHOR2]
stp x19, x20, [sp, 16]
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
tbz x0, 12, .L2883
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
adrp x0, .LC135
add x2, x2, 712
mov w1, 365
add x0, x0, :lo12:.LC135
bl printk
.L2883:
adrp x19, .LANCHOR5
add x19, x19, :lo12:.LANCHOR5
adrp x20, .LANCHOR0
add x22, x20, :lo12:.LANCHOR0
mov w2, 64
mov w1, 0
ldr x0, [x19, 448]
adrp x23, .LC207
mov w25, 21321
add x23, x23, :lo12:.LC207
mov w24, 0
movk w25, 0x5359, lsl 16
bl ftl_memset
ldr x1, [x22, 1048]
mov w3, 16
mov w2, 4
adrp x0, .LC206
add x0, x0, :lo12:.LC206
bl rknand_print_hex
ldr x21, [x22, 1048]
add x0, x21, 16
ldr w1, [x21, 8]
bl js_hash
str w0, [x21, 12]
.L2884:
ldrb w26, [x19, 456]
mov x0, x23
ldrh w21, [x19, 458]
mov w1, w26
ldrh w20, [x22, 2]
mov w2, w21
bl printk
ldrh w0, [x19, 172]
ldrh w1, [x19, 458]
sub w0, w0, #1
cmp w1, w0
blt .L2885
ldr x1, [x22, 1048]
strh wzr, [x19, 458]
ldr w0, [x1, 4]
add w0, w0, 1
str w0, [x1, 4]
ldrb w0, [x19, 456]
ldr x21, [x22, 1048]
ldrb w1, [x19, 457]
strb w0, [x19, 457]
mov x0, x21
strb w1, [x19, 456]
ldrh w1, [x21, 16]
add w1, w1, 1
strh w1, [x0, 16]!
ldr w1, [x21, 8]
bl js_hash
ldrb w20, [x19, 456]
str w0, [x21, 12]
ldrh w0, [x22, 2]
mul w20, w20, w0
.L2894:
mov w1, w20
mov w0, 0
bl flash_erase_block
b .L2886
.L2889:
mov w24, 1
b .L2884
.L2885:
madd w20, w20, w26, w21
cbz w1, .L2894
.L2886:
ldr x1, [x22, 1048]
mov w5, 1
ldr x0, [x19, 448]
mov w4, 4
ldr w1, [x1, 4]
str w1, [x0]
mov w1, w20
ldr x0, [x19, 448]
str w25, [x0, 4]
mov w0, 0
ldr x3, [x19, 448]
ldr x2, [x22, 1048]
bl flash_prog_page_en
cmn w0, #1
ldrh w1, [x19, 458]
add w1, w1, 1
strh w1, [x19, 458]
bne .L2887
mov w1, w20
adrp x0, .LC208
add x0, x0, :lo12:.LC208
bl printk
b .L2884
.L2887:
cbz w24, .L2889
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.size flash_info_flush, .-flash_info_flush
.align 2
.global flash_info_blk_init
.type flash_info_blk_init, %function
flash_info_blk_init:
stp x29, x30, [sp, -80]!
adrp x0, .LANCHOR2
add x29, sp, 0
ldr w0, [x0, #:lo12:.LANCHOR2]
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR0
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
tbz x0, 12, .L2896
add x0, x22, :lo12:.LANCHOR0
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
mov w3, 2048
add x2, x2, 736
mov w1, 50
ldr x4, [x0, 1048]
adrp x0, .LC209
add x0, x0, :lo12:.LC209
bl printk
.L2896:
adrp x20, .LANCHOR5
mov w25, 21321
add x21, x20, :lo12:.LANCHOR5
add x19, x22, :lo12:.LANCHOR0
mov w24, 4
movk w25, 0x5359, lsl 16
.L2900:
mov w23, 0
.L2899:
ldrh w1, [x19, 2]
mov w4, 4
ldr x2, [x19, 1048]
mov w0, 0
ldr x3, [x21, 448]
madd w1, w1, w24, w23
bl flash_read_page_en
cmn w0, #1
beq .L2897
ldr x2, [x19, 1048]
ldr w0, [x2]
cmp w0, w25
beq .L2898
.L2897:
add w23, w23, 1
cmp w23, 4
bne .L2899
add w24, w24, 1
cmp w24, 16
bne .L2900
.L2926:
mov w0, -1
.L2895:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L2908:
ldr x0, [x19, 1048]
ldr w1, [x0]
cmp w1, w25
bne .L2909
ldr w21, [x0, 4]
.L2902:
add x19, x20, :lo12:.LANCHOR5
add x23, x22, :lo12:.LANCHOR0
mov w4, 4
ldrh w0, [x23, 2]
ldrb w1, [x19, 457]
ldr x3, [x19, 448]
ldr x2, [x23, 1048]
mul w1, w1, w0
mov w0, 0
bl flash_read_page_en
cmn w0, #1
beq .L2903
ldr x0, [x23, 1048]
mov w1, 21321
movk w1, 0x5359, lsl 16
ldr w2, [x0]
cmp w2, w1
bne .L2903
ldr w1, [x0, 4]
cmp w21, w1
bcs .L2903
ldrb w1, [x0, 37]
ldrb w0, [x0, 36]
strb w1, [x19, 456]
strb w0, [x19, 457]
.L2903:
add x21, x20, :lo12:.LANCHOR5
add x19, x22, :lo12:.LANCHOR0
mov w4, 4
mov w0, 0
mov w26, 21321
mov x20, x19
ldrb w1, [x21, 456]
mov w23, 0
ldr x2, [x19, 1048]
movk w26, 0x5359, lsl 16
ldr x3, [x21, 448]
bl flash_get_last_written_page
and w25, w0, 65535
add w1, w25, 1
ldrb w24, [x21, 456]
strh w1, [x21, 458]
ldrh w1, [x19, 2]
mul w24, w24, w1
add w24, w24, w0, sxth
.L2904:
sub w0, w25, w23
sxth w19, w0
tbz w19, #31, .L2907
cmn w19, #1
bne .L2906
add x22, x22, :lo12:.LANCHOR0
ldr x0, [x22, 1048]
ldr w1, [x0]
adrp x0, .LC210
add x0, x0, :lo12:.LC210
bl printk
b .L2926
.L2907:
ldr x2, [x20, 1048]
mov w4, 4
ldr x3, [x21, 448]
sub w1, w24, w23
mov w0, 0
bl flash_read_page_en
cmn w0, #1
beq .L2905
ldr x0, [x20, 1048]
ldr w0, [x0]
cmp w0, w26
beq .L2906
.L2905:
add w23, w23, 1
b .L2904
.L2906:
cmp w23, 1
bls .L2910
bl flash_info_flush
.L2910:
mov w0, 0
b .L2895
.L2898:
ldrb w1, [x2, 37]
mov w4, 4
ldrb w0, [x2, 36]
strb w1, [x21, 457]
ldrh w1, [x19, 2]
ldr x3, [x21, 448]
strb w0, [x21, 456]
mul w1, w1, w0
mov w0, 0
bl flash_read_page_en
cmn w0, #1
bne .L2908
.L2909:
mov w21, 0
b .L2902
.size flash_info_blk_init, .-flash_info_blk_init
.align 2
.global nand_flash_init
.type nand_flash_init, %function
nand_flash_init:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR2
mov x19, x0
stp x21, x22, [sp, 32]
ldr w0, [x20, #:lo12:.LANCHOR2]
stp x23, x24, [sp, 48]
str x25, [sp, 64]
tbz x0, 12, .L2928
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
adrp x0, .LC135
add x2, x2, 760
mov w1, 3450
add x0, x0, :lo12:.LC135
bl printk
.L2928:
adrp x21, .LANCHOR5
add x23, x21, :lo12:.LANCHOR5
mov x0, x19
adrp x19, .LANCHOR0
add x22, x19, :lo12:.LANCHOR0
mov w25, 44
str wzr, [x23, 332]
bl nandc_init
add x0, x20, :lo12:.LANCHOR2
mov w2, 8
add x0, x0, 8
str x0, [x22, 1144]
mov w0, 1
strb w0, [x22, 1153]
mov w0, 3
strb w0, [x22, 1205]
add x0, x22, 1196
add x22, x22, 1216
mov w1, 0
mov x24, x22
bl ftl_memset
add x0, x23, 176
mov w23, 0
mov w2, 32
mov w1, 0
bl ftl_memset
.L2934:
mov x1, x22
mov w0, w23
bl flash_read_id
cbnz w23, .L2929
ldrb w0, [x24]
sub w0, w0, #1
and w0, w0, 255
cmp w0, 253
bls .L2930
.L2932:
mov w22, -2
.L2927:
mov w0, w22
ldr x25, [sp, 64]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 80
ret
.L2930:
ldrb w0, [x24, 1]
cmp w0, 255
beq .L2932
.L2929:
ldrb w0, [x22]
cmp w0, 181
bne .L2933
strb w25, [x22]
.L2933:
add w23, w23, 1
add x22, x22, 8
and w23, w23, 255
cmp w23, 4
bne .L2934
add x7, x20, :lo12:.LANCHOR2
add x9, x19, :lo12:.LANCHOR0
add x7, x7, 441
add x9, x9, 1216
mov x8, 0
.L2937:
ldrb w2, [x7, -1]
mov w10, w8
lsl x24, x8, 5
mov x1, x9
mov x0, x7
bl flash_mem_cmp8
cbnz w0, .L2935
add x2, x20, :lo12:.LANCHOR2
ubfiz x10, x10, 5, 32
add x0, x2, 440
add x1, x2, 2008
add x24, x0, x24
add x0, x0, x10
ldrb w3, [x0, 22]
mov x0, 0
.L2936:
lsl x4, x0, 5
mov w2, w0
ldrb w4, [x4, x1]
cmp w4, w3
beq .L2938
add x0, x0, 1
cmp x0, 4
bne .L2936
mov w2, w0
.L2938:
add x22, x20, :lo12:.LANCHOR2
ubfiz x1, x2, 5, 32
add x0, x22, 2008
add x23, x19, :lo12:.LANCHOR0
add x1, x0, x1
mov w2, 32
add x0, x23, 1160
add x22, x22, 8
bl ftl_memcpy
mov w2, 32
mov x1, x24
mov x0, x22
bl ftl_memcpy
ldrb w0, [x23, 1028]
cmp w0, 8
bhi .L2939
ldrb w1, [x22, 20]
cmp w1, 60
bls .L2940
mov w1, 60
strb w1, [x22, 20]
.L2940:
cmp w0, 6
beq .L2932
.L2939:
ldr w0, [x20, #:lo12:.LANCHOR2]
tbz x0, 12, .L2941
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
adrp x0, .LC135
add x2, x2, 760
mov w1, 3480
add x0, x0, :lo12:.LC135
bl printk
.L2941:
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 1144]
ldrh w1, [x1, 10]
cmp w1, 1023
bls .L2942
mov w1, 2
strb w1, [x0, 1205]
.L2942:
add x23, x21, :lo12:.LANCHOR5
add x22, x19, :lo12:.LANCHOR0
mov w0, 16384
bl ftl_malloc
add x24, x20, :lo12:.LANCHOR2
str x0, [x23, 352]
mov w0, 16384
bl ftl_malloc
str x0, [x23, 304]
mov w0, 2048
bl ftl_dma32_malloc
str x0, [x22, 1048]
mov w0, 64
bl ftl_dma32_malloc
str x0, [x23, 344]
mov w0, 64
bl ftl_dma32_malloc
str x0, [x23, 320]
mov w0, 64
bl ftl_dma32_malloc
strb wzr, [x23, 460]
str x0, [x23, 448]
bl flash_die_info_init
ldrb w0, [x24, 26]
bl flash_lsb_page_tbl_build
ldrb w0, [x24, 28]
bl nandc_bch_sel
str xzr, [x23, 336]
ldr x3, [x22, 1144]
adrp x2, .LANCHOR3
add x2, x2, :lo12:.LANCHOR3
ldrh w0, [x3, 16]
ubfx x1, x0, 8, 3
strb w1, [x22, 1248]
ubfx x1, x0, 3, 1
strb w1, [x23, 368]
ubfx x1, x0, 4, 1
strb w1, [x22, 1250]
ubfx x1, x0, 12, 1
strb w1, [x2, 1336]
ubfx x1, x0, 13, 1
strb w1, [x2, 1322]
ubfx x1, x0, 11, 1
strb w1, [x22, 1212]
ldrb w1, [x3, 31]
ubfx x4, x1, 1, 1
strb w4, [x2, 1950]
ubfx x4, x1, 2, 1
strb w4, [x23, 461]
ubfx x4, x0, 14, 1
lsr w0, w0, 15
strb w0, [x2, 1323]
ubfx x2, x1, 3, 1
ldrb w0, [x3, 28]
ubfx x1, x1, 4, 1
strb w2, [x22, 1204]
strb w1, [x22, 1213]
mov w1, 60
ldrb w2, [x22, 1028]
strb w4, [x22, 1]
strb w0, [x19, #:lo12:.LANCHOR0]
cmp w2, 9
strb w1, [x22, 1152]
bne .L2943
mov w1, 70
strb w1, [x22, 1152]
.L2943:
add x1, x19, :lo12:.LANCHOR0
strb w0, [x1, 1154]
add x0, x20, :lo12:.LANCHOR2
add x0, x0, 8
ldrb w3, [x0, 31]
tbz x3, 0, .L2944
ldrb w0, [x0, 29]
cbz w0, .L2945
mov w0, 2
.L3007:
strb w0, [x1, 1154]
.L2944:
cmp w2, 8
bne .L2946
add x0, x19, :lo12:.LANCHOR0
mov w2, 137
ldrb w1, [x0, 1216]
cmp w1, 44
ccmp w1, w2, 4, ne
bne .L2946
add x1, x20, :lo12:.LANCHOR2
ldrb w1, [x1, 36]
cmp w1, 3
bne .L2946
strb wzr, [x0, 1154]
.L2946:
add x1, x20, :lo12:.LANCHOR2
add x2, x19, :lo12:.LANCHOR0
add x1, x1, 8
ldrb w0, [x1, 19]
ldrh w1, [x1, 16]
strb w0, [x2, 1136]
tbz x1, 6, .L2948
sub w1, w0, #17
and w1, w1, 255
cmp w1, 2
ccmp w0, 21, 4, hi
bne .L2949
add x1, x21, :lo12:.LANCHOR5
adrp x2, micron_read_retrial
add x2, x2, :lo12:micron_read_retrial
cmp w0, 21
str x2, [x1, 336]
beq .L2950
mov w0, 15
.L3009:
strb w0, [x1, 328]
.L2948:
ldr w0, [x20, #:lo12:.LANCHOR2]
tbz x0, 12, .L2959
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
adrp x0, .LC135
add x2, x2, 760
mov w1, 3573
add x0, x0, :lo12:.LC135
bl printk
.L2959:
add x0, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 1248]
strb wzr, [x0, 1192]
tbz x1, 0, .L2960
ldrb w0, [x0, 1216]
cmp w0, 155
beq .L2961
mov w0, 4
bl flash_set_interface_mode
mov w0, 4
bl nandc_set_if_mode
.L2961:
mov w0, 1
bl flash_set_interface_mode
mov w0, 1
.L3012:
bl nandc_set_if_mode
bl flash_info_blk_init
mov w22, w0
cmn w0, #1
bne .L2963
add x19, x19, :lo12:.LANCHOR0
mov w1, 17
ldr x0, [x19, 1048]
strb wzr, [x19, 1208]
strb w1, [x0, 32]
mov w0, 0
bl zftl_flash_exit_slc_mode
b .L2927
.L2935:
add x8, x8, 1
add x7, x7, 32
cmp x8, 49
bne .L2937
b .L2932
.L2945:
mov w0, 3
b .L3007
.L2950:
mov w0, 4
b .L3009
.L2949:
sub w1, w0, #65
cmp w0, 33
and w1, w1, 255
ccmp w1, 1, 0, ne
bhi .L2952
add x0, x21, :lo12:.LANCHOR5
adrp x1, toshiba_read_retrial
add x1, x1, :lo12:toshiba_read_retrial
str x1, [x0, 336]
mov w1, 4
strb w1, [x2, 1137]
.L3013:
mov w1, 7
.L3011:
strb w1, [x0, 328]
b .L2948
.L2952:
sub w3, w0, #34
sub w1, w0, #67
and w3, w3, 255
and w1, w1, 255
cmp w3, 1
ccmp w1, 1, 0, hi
bhi .L2953
add x2, x21, :lo12:.LANCHOR5
adrp x3, toshiba_read_retrial
add x3, x3, :lo12:toshiba_read_retrial
cmp w0, 35
str x3, [x2, 336]
mov w3, 68
ccmp w0, w3, 4, ne
beq .L2954
mov w0, 7
.L3008:
strb w0, [x2, 328]
cmp w1, 1
add x0, x19, :lo12:.LANCHOR0
bhi .L2956
mov w1, 4
.L3010:
strb w1, [x0, 1137]
b .L2948
.L2954:
mov w0, 17
b .L3008
.L2956:
mov w1, 5
b .L3010
.L2953:
sub w1, w0, #36
and w1, w1, 255
cmp w1, 1
bhi .L2957
add x0, x21, :lo12:.LANCHOR5
adrp x1, toshiba_3d_read_retrial
add x1, x1, :lo12:toshiba_3d_read_retrial
str x1, [x0, 336]
b .L3013
.L2957:
cmp w0, 50
bne .L2958
add x0, x21, :lo12:.LANCHOR5
adrp x1, samsung_read_retrial
add x1, x1, :lo12:samsung_read_retrial
str x1, [x0, 336]
mov w1, 25
b .L3011
.L2958:
cmp w0, 81
bne .L2948
add x0, x21, :lo12:.LANCHOR5
adrp x1, ymtc_3d_read_retrial
add x1, x1, :lo12:ymtc_3d_read_retrial
strb wzr, [x2, 1251]
str x1, [x0, 336]
mov w1, 7
strb w1, [x0, 328]
b .L2948
.L2960:
mov w0, 4
b .L3012
.L2963:
add x0, x20, :lo12:.LANCHOR2
ldrb w0, [x0, 15]
cmp w0, 9
bne .L2964
add x0, x19, :lo12:.LANCHOR0
ldr x1, [x0, 1048]
ldrb w1, [x1, 20]
cmp w1, 1
beq .L2964
strb wzr, [x0, 1154]
.L2964:
add x0, x19, :lo12:.LANCHOR0
ldrb w0, [x0, 1136]
sub w0, w0, #1
and w0, w0, 255
cmp w0, 7
bhi .L2965
add x0, x21, :lo12:.LANCHOR5
adrp x1, hynix_read_retrial
add x1, x1, :lo12:hynix_read_retrial
str x1, [x0, 336]
.L2965:
add x19, x19, :lo12:.LANCHOR0
ldrb w0, [x19, 1248]
tbz x0, 2, .L2967
ldr x0, [x19, 1048]
ldrb w0, [x0, 19]
cbz w0, .L2967
add x21, x21, :lo12:.LANCHOR5
ldrh w0, [x19, 2]
ldrb w1, [x21, 456]
mul w1, w1, w0
mov w0, 0
bl flash_ddr_para_scan
ldrb w0, [x19, 1192]
cbnz w0, .L2967
ldr x0, [x19, 1048]
strb wzr, [x0, 19]
bl flash_info_flush
.L2967:
ldr w0, [x20, #:lo12:.LANCHOR2]
tbz x0, 12, .L2969
adrp x2, .LANCHOR4
add x2, x2, :lo12:.LANCHOR4
adrp x0, .LC135
add x2, x2, 760
mov w1, 3676
add x0, x0, :lo12:.LC135
bl printk
.L2969:
bl nand_flash_print_info
mov w22, 0
b .L2927
.size nand_flash_init, .-nand_flash_init
.align 2
.global ftl_sysblk_dump
.type ftl_sysblk_dump, %function
ftl_sysblk_dump:
sub sp, sp, #144
stp x29, x30, [sp, 48]
add x29, sp, 48
stp x19, x20, [sp, 64]
mov w20, 0
stp x25, x26, [sp, 112]
adrp x26, .LANCHOR3
stp x27, x28, [sp, 128]
add x26, x26, :lo12:.LANCHOR3
stp x21, x22, [sp, 80]
adrp x22, .LC195
stp x23, x24, [sp, 96]
and w24, w0, 65535
mov w0, 1
bl buf_alloc
ldr x27, [x0, 8]
mov x25, x0
add x22, x22, :lo12:.LC195
mov w19, 0
mov w28, 1
.L3015:
ldrh w0, [x26, 1376]
cmp w0, w19
bhi .L3017
add x1, x27, 704
mov w3, 32
mov w2, 4
adrp x0, .LC211
add x0, x0, :lo12:.LC211
bl rknand_print_hex
mov x0, x25
bl zbuf_free
cbz w20, .L3018
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 776
mov w2, 1619
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3018:
mov w0, w20
ldp x19, x20, [sp, 64]
ldp x21, x22, [sp, 80]
ldp x23, x24, [sp, 96]
ldp x25, x26, [sp, 112]
ldp x27, x28, [sp, 128]
ldp x29, x30, [sp, 48]
add sp, sp, 144
ret
.L3017:
ldrh w21, [x26, 1410]
ldrb w3, [x26, 1946]
ldr x1, [x25, 8]
ldr x2, [x25, 24]
madd w21, w21, w24, w19
mov w0, w21
bl ftl_read_ppa_page
mov w23, w0
ldr x1, [x25, 24]
mov w4, w0
ldr x0, [x25, 8]
mov w3, w21
ldr w2, [x1, 12]
str w2, [sp, 32]
ldr w2, [x1, 8]
str w2, [sp, 24]
ldr w2, [x1, 4]
str w2, [sp, 16]
mov w2, w19
add w19, w19, 1
ldr w1, [x1]
and w19, w19, 65535
str w1, [sp, 8]
ldr w1, [x0, 12]
str w1, [sp]
mov w1, w24
ldp w5, w6, [x0]
ldr w7, [x0, 8]
mov x0, x22
bl printk
cmp w23, 512
ccmn w23, #1, 4, ne
csel w20, w20, w28, ne
b .L3015
.size ftl_sysblk_dump, .-ftl_sysblk_dump
.align 2
.global ftl_open_sblk_recovery
.type ftl_open_sblk_recovery, %function
ftl_open_sblk_recovery:
stp x29, x30, [sp, -352]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR2
stp x19, x20, [sp, 16]
mov x19, x0
ldr w0, [x21, #:lo12:.LANCHOR2]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
str x1, [x29, 112]
tbz x0, 12, .L3026
ldrh w1, [x19, 2]
adrp x0, .LC212
add x0, x0, :lo12:.LC212
bl printk
.L3026:
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 12, .L3027
ldrb w1, [x19, 5]
adrp x0, .LC213
add x0, x0, :lo12:.LC213
bl printk
.L3027:
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 12, .L3028
ldrh w1, [x19]
adrp x0, .LC214
add x0, x0, :lo12:.LC214
bl printk
.L3028:
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 12, .L3029
ldrh w2, [x19, 18]
adrp x0, .LC215
ldrh w1, [x19, 16]
add x0, x0, :lo12:.LC215
bl printk
.L3029:
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 12, .L3030
ldrb w1, [x19, 9]
adrp x0, .LC216
add x0, x0, :lo12:.LC216
bl printk
.L3030:
ldrh w0, [x19, 10]
adrp x24, .LANCHOR0
strh w0, [x19, 14]
add x0, x24, :lo12:.LANCHOR0
ldrh w1, [x19]
ldrh w0, [x0, 1096]
cmp w1, w0
bcs .L3025
mov w0, 1
bl buf_alloc
adrp x20, .LANCHOR3
mov x27, x0
add x0, x20, :lo12:.LANCHOR3
add x25, x29, 160
mov w2, 64
add x28, x29, 288
ldr x1, [x27, 8]
ldrb w0, [x0, 1946]
sub w0, w0, #2
sbfiz x0, x0, 9, 32
add x0, x1, x0
mov w1, 255
str x0, [x29, 144]
mov x0, x25
bl ftl_memset
mov w2, 64
mov w1, 255
add x0, x29, 224
bl ftl_memset
mov w2, 64
mov w1, 255
mov x0, x28
bl ftl_memset
ldrb w22, [x19, 5]
mov w0, 2
ldrh w23, [x19, 2]
str w0, [x29, 152]
adrp x0, .LANCHOR5
str wzr, [x29, 120]
add x0, x0, :lo12:.LANCHOR5
str x0, [x29, 104]
.L3032:
add x0, x20, :lo12:.LANCHOR3
ldrh w0, [x0, 1376]
cmp w0, w23
bhi .L3049
.L3035:
add x2, x20, :lo12:.LANCHOR3
ldrh w0, [x19, 10]
ldrh w1, [x19, 6]
strh w23, [x19, 2]
add w1, w1, w0
ldrh w2, [x2, 1376]
ldrb w0, [x19, 9]
strb w22, [x19, 5]
mul w0, w0, w2
cmp w1, w0
beq .L3050
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 792
mov w2, 1802
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3050:
add x0, x20, :lo12:.LANCHOR3
ldrh w3, [x19, 10]
mov w1, 0
ldr x4, [x0, 1928]
mov w0, 0
.L3051:
cmp w1, w3
bcc .L3053
add x1, x20, :lo12:.LANCHOR3
ldrb w22, [x19, 9]
ldrh w1, [x1, 1376]
madd w22, w22, w1, w0
ldr w0, [x21, #:lo12:.LANCHOR2]
sub w22, w22, w3
and w22, w22, 65535
tbz x0, 12, .L3054
add x0, x24, :lo12:.LANCHOR0
ldrh w1, [x19]
ldr x0, [x0, 1120]
ubfiz x2, x1, 1, 16
ldrh w3, [x0, x2]
adrp x0, .LC219
mov w2, w22
add x0, x0, :lo12:.LC219
bl printk
.L3054:
add x0, x24, :lo12:.LANCHOR0
ldrh w1, [x19]
ldr x0, [x0, 1120]
strh w22, [x0, x1, lsl 1]
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 14, .L3055
ldp w1, w2, [x29, 160]
adrp x0, .LC220
ldp w3, w4, [x29, 168]
add x0, x0, :lo12:.LC220
bl printk
.L3055:
add x0, x20, :lo12:.LANCHOR3
mov w1, 0
mov x23, 0
ldrb w2, [x0, 1946]
ldr x0, [x27, 8]
lsl w2, w2, 9
bl ftl_memset
adrp x0, .LC221
add x0, x0, :lo12:.LC221
str x0, [x29, 128]
adrp x0, .LC222
add x0, x0, :lo12:.LC222
str x0, [x29, 112]
.L3056:
add x1, x20, :lo12:.LANCHOR3
ldr w2, [x29, 152]
str w23, [x29, 140]
ldrb w0, [x1, 1321]
mul w0, w0, w2
cmp w23, w0
bcc .L3068
adrp x22, .LC223
adrp x23, .LC222
mov x20, x1
add x22, x22, :lo12:.LC223
add x23, x23, :lo12:.LC222
mov x24, 0
.L3069:
ldrb w0, [x20, 1321]
ldr w1, [x29, 152]
mul w0, w0, w1
cmp w0, w24
bhi .L3075
mov x0, x27
bl zbuf_free
ldrh w1, [x19, 12]
ldrh w0, [x20, 1376]
ldrb w2, [x19, 9]
madd w0, w0, w2, w1
mov x1, -4
add x0, x1, w0, sxtw 2
ldr x1, [x20, 1928]
ldr w0, [x1, x0]
cmn w0, #1
beq .L3076
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 792
mov w2, 1917
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3076:
ldrh w0, [x19, 6]
cmp w0, 1
bne .L3025
mov x0, x19
bl ftl_write_last_log_page
.L3025:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 352
ret
.L3049:
ldrb w22, [x19, 5]
.L3033:
ldrb w0, [x19, 9]
cmp w0, w22
bhi .L3048
add w23, w23, 1
strb wzr, [x19, 5]
and w23, w23, 65535
b .L3032
.L3048:
add x0, x19, w22, sxtw 1
ldrh w0, [x0, 16]
str w0, [x29, 140]
mov w0, 65535
ldr w1, [x29, 140]
cmp w1, w0
beq .L3034
add x0, x20, :lo12:.LANCHOR3
ldr w2, [x29, 140]
ldrh w1, [x0, 1410]
ldrb w3, [x0, 1946]
madd w1, w1, w2, w23
ldr x2, [x27, 24]
str w1, [x29, 128]
ldr x1, [x27, 8]
ldr w0, [x29, 128]
bl ftl_read_ppa_page
mov w26, w0
cmp w0, 512
beq .L3035
cmn w0, #1
beq .L3036
ldr x0, [x27, 24]
ldr w1, [x0]
cmn w1, #1
bne .L3036
ldr w0, [x0, 4]
cmn w0, #1
bne .L3036
ldr x0, [x27, 8]
ldr w0, [x0]
cmn w0, #1
beq .L3035
.L3036:
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
mov w1, 1
strb w1, [x0, 401]
ldrb w0, [x19, 9]
ldrh w1, [x19, 10]
madd w0, w0, w23, w22
cmp w1, w0
beq .L3037
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 792
mov w2, 1694
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3037:
ldrh w0, [x19, 10]
ldrh w1, [x19, 6]
ldrb w2, [x19, 9]
add w1, w1, w0
add x0, x20, :lo12:.LANCHOR3
ldrh w0, [x0, 1376]
mul w0, w0, w2
cmp w1, w0
beq .L3038
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 792
mov w2, 1695
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3038:
add x0, x20, :lo12:.LANCHOR3
str x0, [x29, 152]
ldrb w0, [x0, 1946]
cmp w0, 8
bls .L3039
ldr x0, [x27, 24]
mov w2, 15555
movk w2, 0xf55f, lsl 16
ldr w1, [x0]
cmp w1, w2
beq .L3039
cmn w26, #1
beq .L3041
ldr w1, [x0, 4]
cmn w1, #1
bne .L3042
.L3045:
ldr x1, [x27, 24]
ldr w0, [x1, 4]
cmn w0, #1
bne .L3043
.L3041:
ldrh w0, [x19, 6]
sub w0, w0, #1
strh w0, [x19, 6]
ldrh w0, [x19, 10]
add w0, w0, 1
strh w0, [x19, 10]
mov w0, 4
str w0, [x29, 152]
mov w0, 1
str w0, [x29, 120]
.L3034:
add w22, w22, 1
and w22, w22, 65535
b .L3033
.L3042:
ldr w1, [x0, 16]
mov w2, 21320
movk w2, 0x4841, lsl 16
cmp w1, w2
bne .L3045
ldr w2, [x0, 20]
mov w1, 1024
ldr x0, [x29, 144]
str w2, [x29, 152]
bl js_hash
ldr w2, [x29, 152]
cmp w2, w0
beq .L3045
ldr x0, [x29, 144]
mov w1, 1024
bl js_hash
mov w5, w0
ldr w3, [x29, 128]
mov w4, w26
ldr w1, [x29, 140]
mov w2, w23
adrp x0, .LC217
add x0, x0, :lo12:.LC217
bl printk
ldr x1, [x29, 144]
mov w3, 16
mov w2, 4
adrp x0, .LC218
add x0, x0, :lo12:.LC218
bl rknand_print_hex
add x0, x20, :lo12:.LANCHOR3
ldr x1, [x27, 24]
mov w2, 4
ldrb w0, [x0, 1946]
lsr w3, w0, 1
adrp x0, .LC183
add x0, x0, :lo12:.LC183
bl rknand_print_hex
b .L3041
.L3039:
cmn w26, #1
bne .L3045
b .L3041
.L3043:
ldr w1, [x1]
mov w2, 15555
movk w2, 0xf55f, lsl 16
cmp w1, w2
beq .L3041
bl lpa_hash_get_ppa
ldr x1, [x29, 112]
cbz x1, .L3046
ldr x3, [x27, 24]
ldr w1, [x3, 8]
cmp w0, w1
beq .L3046
cmn w0, #1
beq .L3046
add x7, x24, :lo12:.LANCHOR0
add x4, x20, :lo12:.LANCHOR3
mov w5, 24
mov w26, 1
ldrb w1, [x7, 1205]
ldrh w8, [x4, 1304]
sub w1, w5, w1
sub w1, w1, w8
lsr w2, w0, w8
lsl w1, w26, w1
sub w1, w1, #1
and w1, w1, w2
ldrb w2, [x4, 1306]
udiv w1, w1, w2
ldr x2, [x29, 112]
ldrh w2, [x2]
cmp w2, w1, uxth
bne .L3046
ldr x1, [x29, 104]
ldr w8, [x3]
ldrb w3, [x4, 1946]
stp w5, w8, [x29, 136]
ldr x2, [x1, 376]
ldr x1, [x27, 8]
str x7, [x29, 120]
str x4, [x29, 152]
bl ftl_read_ppa_page
ldr x0, [x29, 104]
ldr w8, [x29, 140]
ldr x0, [x0, 376]
ldr w0, [x0]
cmp w8, w0
bhi .L3046
ldr x0, [x27, 24]
ldr w3, [x0, 8]
cmn w3, #1
beq .L3041
ldr x7, [x29, 120]
ldr x4, [x29, 152]
ldr w5, [x29, 136]
ldrb w2, [x7, 1205]
ldrh w1, [x4, 1304]
sub w5, w5, w2
sub w5, w5, w1
lsr w0, w3, w1
lsl w26, w26, w5
sub w26, w26, #1
and w26, w26, w0
ldrb w0, [x4, 1306]
udiv w0, w26, w0
bl ftl_vpn_decrement
b .L3041
.L3053:
ldrh w2, [x19, 12]
add w2, w2, w1
ldr w2, [x4, x2, lsl 2]
cmn w2, #1
beq .L3052
add w22, w0, 1
and w0, w22, 65535
.L3052:
add w1, w1, 1
b .L3051
.L3068:
ldr w0, [x25, x23, lsl 2]
cmn w0, #1
bne .L3057
.L3061:
add x1, x24, :lo12:.LANCHOR0
ldr x0, [x27, 24]
mov w22, -1
mov x2, 0
ldr x1, [x1, 3384]
ldr w1, [x1, 8]
str w1, [x0]
ldr x0, [x27, 24]
str w22, [x0, 4]
ldr x0, [x27, 24]
str w22, [x0, 8]
ldr x0, [x27, 24]
str wzr, [x0, 12]
ldr x0, [x27, 24]
str wzr, [x0, 16]
ldr x0, [x27, 8]
str wzr, [x0]
mov w0, 2
ldr x1, [x27, 24]
add x1, x1, 16
bl ftl_debug_info_fill
.L3058:
ldr w0, [x29, 120]
cbz w0, .L3063
ldrh w0, [x19, 6]
cmp w0, 1
bls .L3063
add x0, x20, :lo12:.LANCHOR3
str x0, [x29, 144]
.L3122:
mov x0, x19
bl ftl_get_new_free_page
mov w26, w0
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 14, .L3065
ldrh w0, [x19, 12]
mov w1, w26
ldrh w3, [x19, 10]
add w3, w3, w0
ldr x0, [x27, 24]
sub w3, w3, #1
ldr w2, [x0, 4]
ldr x0, [x29, 112]
bl printk
.L3065:
ldr x0, [x29, 144]
ldr w2, [x29, 152]
ldrh w1, [x19, 6]
ldrb w0, [x0, 1321]
mul w0, w0, w2
ldr w2, [x29, 140]
add w0, w0, 1
sub w0, w0, w2
cmp w1, w0
bls .L3063
ldr x0, [x29, 144]
ldr x1, [x27, 8]
ldr x2, [x27, 24]
ldrb w3, [x0, 1946]
mov w0, w26
bl ftl_prog_ppa_page
mov w1, w0
ldrh w0, [x19]
str w1, [x29, 104]
bl ftl_vpn_decrement
ldr w1, [x29, 104]
cmn w22, #1
ccmn w1, #1, 4, ne
beq .L3066
add x0, x29, 224
ldrh w1, [x19, 12]
str w26, [x0, x23, lsl 2]
ldrh w0, [x19, 10]
add w0, w0, w1
sub w0, w0, #1
str w0, [x28, x23, lsl 2]
.L3063:
add x23, x23, 1
b .L3056
.L3057:
ldrb w3, [x1, 1946]
ldr x2, [x27, 24]
ldr x1, [x27, 8]
bl ftl_read_ppa_page
mov w22, w0
ldr x0, [x27, 24]
ldr w0, [x0, 4]
bl lpa_hash_get_ppa
mov w26, w0
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 14, .L3059
ldr x0, [x27, 24]
mov w1, w26
ldr w2, [x25, x23, lsl 2]
ldr w3, [x0, 4]
ldr x0, [x29, 128]
bl printk
.L3059:
ldr w0, [x25, x23, lsl 2]
mov w1, 1
mov x2, 0
cmp w26, w0
ldr x0, [x27, 24]
csinv w22, w22, wzr, eq
str w26, [x0, 8]
ldr x0, [x27, 24]
str w1, [x0, 12]
ldr x0, [x27, 24]
str wzr, [x0, 16]
mov w0, 2
ldr x1, [x27, 24]
add x1, x1, 16
bl ftl_debug_info_fill
cmn w22, #1
bne .L3058
b .L3061
.L3066:
ldrh w0, [x19, 6]
cmp w0, 1
bls .L3063
cmn w22, #1
bne .L3122
b .L3063
.L3075:
add x0, x29, 224
ldr w0, [x0, x24, lsl 2]
cmn w0, #1
beq .L3071
ldrb w3, [x20, 1946]
ldr w0, [x25, x24, lsl 2]
ldr x1, [x27, 8]
ldr x2, [x27, 24]
bl ftl_read_ppa_page
cmp w0, 256
ccmn w0, #1, 4, ne
bne .L3071
add x0, x29, 224
ldrb w3, [x20, 1946]
ldr x1, [x27, 8]
ldr x2, [x27, 24]
ldr w0, [x0, x24, lsl 2]
bl ftl_read_ppa_page
mov w26, w0
ldr w0, [x21, #:lo12:.LANCHOR2]
tbz x0, 14, .L3073
ldr x0, [x27, 24]
mov w1, w26
ldr w3, [x25, x24, lsl 2]
ldr w2, [x0, 8]
mov x0, x23
bl printk
.L3073:
cmn w26, #1
beq .L3071
ldr x0, [x27, 24]
ldr w2, [x25, x24, lsl 2]
ldr w1, [x0, 8]
cmp w2, w1
bne .L3071
ldr w1, [x21, #:lo12:.LANCHOR2]
tbz x1, 14, .L3074
ldr w1, [x0, 4]
mov x0, x22
ldr w3, [x28, x24, lsl 2]
bl printk
.L3074:
ldr x0, [x27, 24]
lsl x1, x24, 2
ldrh w2, [x28, x1]
ldr w1, [x0, 8]
ldr w0, [x0, 4]
bl lpa_hash_update_ppa
.L3071:
add x24, x24, 1
b .L3069
.L3046:
ldr x2, [x27, 24]
add x1, x24, :lo12:.LANCHOR0
ldr w0, [x1, 3364]
ldr w3, [x2, 4]
cmp w3, w0
bcs .L3041
add x4, x20, :lo12:.LANCHOR3
ldrb w0, [x19, 9]
ldrh w3, [x19, 10]
ldrh w4, [x4, 1376]
mul w0, w0, w4
sub w0, w0, #1
cmp w3, w0
bge .L3041
ldr x0, [x1, 3384]
ldr w2, [x2]
ldr w1, [x0, 8]
cmp w2, w1
bls .L3047
str w2, [x0, 8]
.L3047:
ldr x0, [x27, 24]
ldrh w1, [x19, 12]
ldrh w2, [x19, 10]
add w2, w2, w1
ldr w1, [x0, 8]
ldr w0, [x0, 4]
bl lpa_hash_update_ppa
ldr w0, [x29, 164]
str w0, [x29, 160]
ldr w0, [x29, 168]
str w0, [x29, 164]
ldr w0, [x29, 172]
str w0, [x29, 168]
ldr w0, [x29, 128]
str w0, [x29, 172]
b .L3041
.size ftl_open_sblk_recovery, .-ftl_open_sblk_recovery
.align 2
.global dump_ftl_info
.type dump_ftl_info, %function
dump_ftl_info:
stp x29, x30, [sp, -32]!
adrp x0, .LC224
add x0, x0, :lo12:.LC224
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
adrp x20, .LANCHOR3
add x20, x20, :lo12:.LANCHOR3
ldrb w1, [x19, 3353]
bl printk
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
ldrh w3, [x0, 386]
ldrb w2, [x0, 385]
ldrb w1, [x0, 384]
adrp x0, .LC225
add x0, x0, :lo12:.LC225
bl printk
ldr x0, [x19, 3384]
ldrh w2, [x0, 140]
ldrh w1, [x0, 130]
adrp x0, .LC226
add x0, x0, :lo12:.LC226
bl printk
ldr x1, [x19, 1128]
adrp x0, .LC227
add x0, x0, :lo12:.LC227
ldrh w5, [x1, 26]
ldrh w4, [x1, 22]
ldrb w3, [x1, 21]
ldrh w2, [x1, 18]
ldrh w1, [x1, 16]
bl printk
ldr x1, [x19, 1128]
adrp x0, .LC228
add x0, x0, :lo12:.LC228
ldrh w5, [x1, 58]
ldrh w4, [x1, 54]
ldrb w3, [x1, 53]
ldrh w2, [x1, 50]
ldrh w1, [x1, 48]
bl printk
ldr x1, [x19, 1128]
adrp x0, .LC229
add x0, x0, :lo12:.LC229
ldrh w5, [x1, 90]
ldrh w4, [x1, 86]
ldrb w3, [x1, 85]
ldrh w2, [x1, 82]
ldrh w1, [x1, 80]
bl printk
ldrb w0, [x20, 1321]
mov w2, 4
ldrh w3, [x20, 1376]
ldr x1, [x20, 1928]
mul w3, w3, w0
adrp x0, .LC230
add x0, x0, :lo12:.LC230
lsl w3, w3, 1
bl rknand_print_hex
ldrh w3, [x19, 1096]
mov w2, 2
ldr x1, [x19, 1120]
adrp x0, .LC231
add x0, x0, :lo12:.LC231
bl rknand_print_hex
ldr x1, [x19, 3384]
mov w2, 4
adrp x0, .LC211
add x0, x0, :lo12:.LC211
add x1, x1, 704
ldrh w3, [x1, -6]
bl rknand_print_hex
ldrh w3, [x19, 1096]
mov w2, 4
ldr x1, [x19, 1104]
adrp x0, .LC232
add x0, x0, :lo12:.LC232
bl rknand_print_hex
add x1, x20, 1416
mov w3, 256
mov w2, 2
adrp x0, .LC233
add x0, x0, :lo12:.LC233
bl rknand_print_hex
ldrb w0, [x20, 1321]
mov w2, 2
ldrh w3, [x20, 1376]
ldr x1, [x20, 1936]
mul w3, w3, w0
adrp x0, .LC234
add x0, x0, :lo12:.LC234
lsl w3, w3, 1
bl rknand_print_hex
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size dump_ftl_info, .-dump_ftl_info
.align 2
.global pm_ppa_update_check
.type pm_ppa_update_check, %function
pm_ppa_update_check:
adrp x3, .LANCHOR0
add x3, x3, :lo12:.LANCHOR0
adrp x6, .LANCHOR3
add x6, x6, :lo12:.LANCHOR3
mov w5, 24
ldrb w4, [x3, 1205]
ldrh w7, [x6, 1304]
sub w4, w5, w4
ldr x3, [x3, 1104]
sub w5, w4, w7
mov w4, 1
lsr w7, w2, w7
lsl w4, w4, w5
ldrb w5, [x6, 1306]
sub w4, w4, #1
and w4, w4, w7
udiv w4, w4, w5
add x4, x3, w4, uxth 2
ldrb w3, [x4, 2]
ubfx x3, x3, 5, 3
cmp w3, 1
ccmp w3, 7, 4, ne
bne .L3151
mov w3, w2
mov w2, w1
mov x1, x0
stp x29, x30, [sp, -16]!
adrp x0, .LC235
add x0, x0, :lo12:.LC235
add x29, sp, 0
bl printk
bl dump_ftl_info
mov w0, -1
ldp x29, x30, [sp], 16
ret
.L3151:
mov w0, 0
ret
.size pm_ppa_update_check, .-pm_ppa_update_check
.align 2
.type load_l2p_region, %function
load_l2p_region:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 65535
stp x21, x22, [sp, 32]
and x21, x1, 65535
stp x23, x24, [sp, 48]
cmp w21, 31
stp x25, x26, [sp, 64]
bls .L3157
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 816
mov w2, 32
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3157:
adrp x23, .LANCHOR0
add x22, x23, :lo12:.LANCHOR0
adrp x19, .LANCHOR5
ldr x0, [x22, 3384]
ldrh w2, [x0, 698]
cmp w2, w20
bcs .L3158
mov w1, w20
adrp x0, .LC236
add x19, x19, :lo12:.LANCHOR5
add x0, x0, :lo12:.LC236
bl printk
mov x0, 0
mov w1, 255
ldrh w2, [x19, 462]
ldr x0, [x0, 8]
bl ftl_memset
ldr x0, [x22, 3384]
ldrh w0, [x0, 698]
cmp w0, w20
bcc .L3159
.L3169:
mov w0, 0
.L3156:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L3159:
mov w2, 37
.L3170:
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 816
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L3169
.L3158:
add x0, x0, w20, sxtw 2
adrp x22, .LANCHOR3
lsl x1, x21, 4
ldr w24, [x0, 704]
add x0, x22, :lo12:.LANCHOR3
add x2, x0, 1960
add x26, x2, x1
strh w20, [x2, x1]
strh wzr, [x26, 2]
cbnz w24, .L3161
add x19, x19, :lo12:.LANCHOR5
mov w1, w20
mov w2, 0
adrp x0, .LC237
add x0, x0, :lo12:.LC237
bl printk
ldrh w2, [x19, 462]
mov w1, 255
ldr x0, [x26, 8]
bl ftl_memset
b .L3169
.L3161:
add x25, x19, :lo12:.LANCHOR5
ldrb w3, [x0, 1946]
ldr x1, [x26, 8]
mov w0, w24
ldr x2, [x25, 432]
bl ftl_read_ppa_page
ldr x1, [x25, 432]
ldr w2, [x1]
cmp w2, w20
bne .L3162
cmp w0, 512
ccmn w0, #1, 4, ne
beq .L3162
.L3166:
add x19, x19, :lo12:.LANCHOR5
ldr x0, [x19, 432]
ldr w0, [x0]
cmp w20, w0
beq .L3169
mov w2, 73
b .L3170
.L3162:
add x23, x23, :lo12:.LANCHOR0
mov w4, w24
mov w3, w0
mov w1, w20
adrp x0, .LC238
add x0, x0, :lo12:.LC238
bl printk
add x22, x22, :lo12:.LANCHOR3
ldr x1, [x23, 3384]
mov w2, 4
adrp x0, .LC239
add x0, x0, :lo12:.LC239
add x1, x1, 704
add x23, x19, :lo12:.LANCHOR5
ldrh w3, [x1, -6]
bl rknand_print_hex
add x0, x22, 1960
ldrb w3, [x22, 1946]
add x21, x0, x21, lsl 4
mov w2, 4
adrp x0, .LC218
add x0, x0, :lo12:.LC218
lsl w3, w3, 7
ldr x1, [x21, 8]
bl rknand_print_hex
ldr x1, [x23, 432]
mov w3, 16
mov w2, 4
adrp x0, .LC240
add x0, x0, :lo12:.LC240
bl rknand_print_hex
ldrb w3, [x22, 1946]
mov w0, w24
ldr x1, [x21, 8]
ldr x2, [x23, 432]
bl ftl_read_ppa_page
cmp w0, 512
ccmn w0, #1, 4, ne
bne .L3165
ldrh w2, [x23, 462]
mov w1, 255
ldr x0, [x21, 8]
bl ftl_memset
.L3167:
mov w0, -1
b .L3156
.L3165:
ldr x0, [x23, 432]
ldr w0, [x0]
cmp w20, w0
beq .L3166
b .L3167
.size load_l2p_region, .-load_l2p_region
.align 2
.global pm_gc
.type pm_gc, %function
pm_gc:
stp x29, x30, [sp, -64]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
adrp x20, .LANCHOR5
add x1, x20, :lo12:.LANCHOR5
ldr x0, [x0, 3384]
ldrh w2, [x0, 688]
ldrh w0, [x1, 220]
sub w0, w0, #1
cmp w2, w0
bge .L3172
ldr w0, [x1, 212]
cbz w0, .L3173
.L3172:
bl pm_free_sblk
add x1, x19, :lo12:.LANCHOR0
add x3, x20, :lo12:.LANCHOR5
ldr x2, [x1, 3384]
ldrh w1, [x3, 220]
sub w1, w1, #1
ldrh w4, [x2, 688]
cmp w4, w1
bge .L3174
ldr w1, [x3, 212]
cbz w1, .L3173
.L3174:
add x20, x20, :lo12:.LANCHOR5
add x0, x2, w0, uxth 1
str wzr, [x20, 212]
mov w20, 65535
ldrh w22, [x0, 416]
cmp w22, w20
bne .L3176
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 832
mov w2, 182
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
bl pm_free_sblk
add x1, x19, :lo12:.LANCHOR0
ldr x1, [x1, 3384]
add x0, x1, w0, uxth 1
ldrh w22, [x0, 416]
cmp w22, w20
beq .L3173
.L3176:
bl pm_select_ram_region
adrp x24, .LANCHOR3
and x21, x0, 65535
add x0, x24, :lo12:.LANCHOR3
lsl x1, x21, 4
add x0, x0, 1960
add x20, x0, x1
mov x23, x21
ldrh w0, [x0, x1]
mov w1, 65535
cmp w0, w1
beq .L3177
ldr x1, [x20, 8]
cbz x1, .L3177
ldrsh w2, [x20, 2]
tbz w2, #31, .L3177
bl pm_write_page
ldrh w0, [x20, 2]
and w0, w0, 32767
strh w0, [x20, 2]
.L3177:
add x24, x24, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
add x0, x24, 1960
mov w20, 0
add x21, x0, x21, lsl 4
.L3178:
ldr x2, [x19, 3384]
ldrh w0, [x2, 698]
cmp w0, w20
bhi .L3181
bl pm_free_sblk
.L3173:
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 64
ret
.L3181:
ldrb w1, [x19, 1205]
mov w0, 24
ldrh w3, [x24, 1304]
add x2, x2, w20, sxtw 2
sub w0, w0, w1
sub w1, w0, w3
mov w0, 1
lsl w0, w0, w1
ldr w1, [x2, 704]
sub w0, w0, #1
lsr w1, w1, w3
and w0, w0, w1
ldrb w1, [x24, 1306]
udiv w0, w0, w1
cmp w22, w0, uxth
bne .L3179
mov w1, w23
mov w0, w20
bl load_l2p_region
cbnz w0, .L3180
ldr x1, [x21, 8]
mov w0, w20
bl pm_write_page
.L3180:
mov w0, -1
strh w0, [x21]
.L3179:
add w20, w20, 1
and w20, w20, 65535
b .L3178
.size pm_gc, .-pm_gc
.align 2
.global pm_flush_id
.type pm_flush_id, %function
pm_flush_id:
stp x29, x30, [sp, -32]!
adrp x2, .LANCHOR3
add x2, x2, :lo12:.LANCHOR3
ubfiz x0, x0, 4, 16
add x2, x2, 1960
add x29, sp, 0
str x19, [sp, 16]
add x19, x2, x0
ldrh w0, [x2, x0]
ldr x1, [x19, 8]
bl pm_write_page
ldrh w0, [x19, 2]
and w0, w0, 32767
strh w0, [x19, 2]
adrp x19, .LANCHOR5
add x19, x19, :lo12:.LANCHOR5
ldr w0, [x19, 424]
cbz w0, .L3190
bl pm_gc
str wzr, [x19, 424]
.L3190:
mov w0, 0
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size pm_flush_id, .-pm_flush_id
.align 2
.global pm_flush
.type pm_flush, %function
pm_flush:
stp x29, x30, [sp, -32]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR3
add x19, x19, :lo12:.LANCHOR3
mov w20, 0
add x19, x19, 1962
.L3197:
ldrsh w0, [x19]
tbz w0, #31, .L3196
mov w0, w20
bl pm_flush_id
.L3196:
add w20, w20, 1
add x19, x19, 16
and w20, w20, 65535
cmp w20, 32
bne .L3197
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 32
ret
.size pm_flush, .-pm_flush
.align 2
.global flt_sys_flush
.type flt_sys_flush, %function
flt_sys_flush:
stp x29, x30, [sp, -16]!
add x29, sp, 0
bl ftl_flush
bl pm_flush
bl ftl_ext_info_flush
mov w0, 0
bl ftl_info_flush
ldp x29, x30, [sp], 16
ret
.size flt_sys_flush, .-flt_sys_flush
.align 2
.global zftl_deinit
.type zftl_deinit, %function
zftl_deinit:
stp x29, x30, [sp, -16]!
add x29, sp, 0
bl zftl_flash_de_init
bl flt_sys_flush
bl zftl_flash_de_init
ldp x29, x30, [sp], 16
ret
.size zftl_deinit, .-zftl_deinit
.align 2
.global pm_init
.type pm_init, %function
pm_init:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR5
add x19, x20, :lo12:.LANCHOR5
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
mov w24, w0
stp x25, x26, [sp, 64]
mov w0, 1
stp x27, x28, [sp, 80]
mov w25, -1
strb w0, [x19, 440]
mov w0, 64
str wzr, [x19, 212]
str wzr, [x19, 424]
bl ftl_dma32_malloc
str x0, [x19, 432]
adrp x19, .LANCHOR3
add x0, x19, :lo12:.LANCHOR3
add x21, x0, 1960
add x23, x0, 2472
mov x22, x0
.L3206:
strh w25, [x21]
strh wzr, [x21, 2]
cbz w24, .L3205
ldrb w0, [x22, 1946]
lsl w0, w0, 9
bl ftl_dma32_malloc
str x0, [x21, 8]
.L3205:
add x21, x21, 16
cmp x21, x23
bne .L3206
add x0, x19, :lo12:.LANCHOR3
adrp x21, .LANCHOR0
add x23, x21, :lo12:.LANCHOR0
mov w4, 4
ldr x26, [x0, 1968]
add x0, x20, :lo12:.LANCHOR5
mov x2, x26
ldr x22, [x0, 432]
ldr x0, [x23, 3384]
mov x3, x22
ldrh w1, [x0, 692]
ldrb w0, [x0, 694]
bl flash_get_last_written_page
sxth w24, w0
ldr x0, [x23, 3384]
mov w25, w24
ldrh w2, [x0, 696]
cmp w2, w24
bgt .L3207
ldrh w1, [x0, 692]
mov w3, w24
adrp x0, .LC241
add x0, x0, :lo12:.LC241
adrp x28, .LC243
add x28, x28, :lo12:.LC243
adrp x27, .LC242
bl printk
ldr x0, [x23, 3384]
ldrsh w23, [x0, 696]
add w0, w24, 1
str w0, [x29, 124]
add x0, x27, :lo12:.LC242
str x0, [x29, 112]
.L3208:
ldr w0, [x29, 124]
cmp w23, w0
blt .L3211
add x0, x20, :lo12:.LANCHOR5
add x21, x21, :lo12:.LANCHOR0
mov w1, 1
add w25, w25, 1
strb w1, [x0, 401]
ldr x0, [x21, 3384]
strh w25, [x0, 696]
bl pm_free_sblk
.L3207:
add x19, x19, :lo12:.LANCHOR3
add x20, x20, :lo12:.LANCHOR5
mov w1, 255
add x19, x19, 1960
ldrh w2, [x20, 462]
ldr x0, [x19, 8]
bl ftl_memset
ldr x1, [x19, 8]
mov w0, -1
bl pm_write_page
ldrb w0, [x20, 401]
cbz w0, .L3212
ldr x1, [x19, 8]
mov w0, -1
bl pm_write_page
ldr x1, [x19, 8]
mov w0, -1
bl pm_write_page
ldr x1, [x19, 8]
mov w0, -1
bl pm_write_page
.L3212:
bl pm_free_sblk
bl pm_gc
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L3211:
add x27, x21, :lo12:.LANCHOR0
add x5, x19, :lo12:.LANCHOR3
mov x3, x22
mov x2, x26
str x5, [x29, 104]
ldr x0, [x27, 3384]
ldrh w1, [x5, 1410]
ldrb w4, [x5, 1946]
ldrh w24, [x0, 692]
ldrb w0, [x0, 694]
madd w24, w24, w1, w23
mov w1, w24
bl flash_read_page_en
mov w4, w0
ldr x0, [x27, 3384]
str w4, [x29, 120]
mov w2, w24
ldr w1, [x0, 48]
ldrh w3, [x0, 694]
add w1, w1, 1
str w1, [x0, 48]
ldr x0, [x29, 112]
ldr w1, [x22]
bl printk
ldr w4, [x29, 120]
cmp w4, 512
ccmn w4, #1, 4, ne
beq .L3209
ldr x0, [x27, 3384]
ldr w1, [x22]
ldrh w0, [x0, 698]
cmp w1, w0
bcs .L3209
ldr w2, [x22, 8]
ldr x5, [x29, 104]
cbz w2, .L3210
ldrb w1, [x5, 1946]
mov x0, x26
str w2, [x29, 120]
lsl w1, w1, 9
bl js_hash
ldr w2, [x29, 120]
cmp w2, w0
beq .L3210
ldr w1, [x22, 8]
mov x0, x28
bl printk
.L3209:
add w23, w23, 1
sxth w23, w23
b .L3208
.L3210:
add x0, x21, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldr w0, [x22]
add x0, x0, 176
str w24, [x1, x0, lsl 2]
b .L3209
.size pm_init, .-pm_init
.align 2
.global pm_log2phys
.type pm_log2phys, %function
pm_log2phys:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR3
stp x23, x24, [sp, 48]
mov x23, x1
add x1, x21, :lo12:.LANCHOR3
stp x25, x26, [sp, 64]
stp x19, x20, [sp, 16]
mov w24, w2
str x27, [sp, 80]
adrp x22, .LANCHOR0
add x2, x22, :lo12:.LANCHOR0
ldrb w20, [x1, 1946]
ldr w2, [x2, 3364]
lsl w25, w20, 7
ubfiz w20, w20, 7, 9
cmp w0, w2
udiv w25, w0, w25
and w26, w25, 65535
msub w20, w26, w20, w0
bcc .L3228
mov w1, w0
adrp x0, .LC244
add x0, x0, :lo12:.LC244
bl printk
mov w0, -1
cbnz w24, .L3227
str w0, [x23]
.L3227:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L3228:
and x20, x20, 65535
add x0, x1, 1968
mov x19, 0
.L3234:
ldr x1, [x0]
cbz x1, .L3230
ldrh w1, [x0, -8]
cmp w1, w26
bne .L3230
.L3231:
cbnz w24, .L3232
add x3, x21, :lo12:.LANCHOR3
add x22, x22, :lo12:.LANCHOR0
add x0, x3, x19, lsl 4
mov w2, 24
mov w1, 1
ldr x0, [x0, 1968]
ldr w0, [x0, x20, lsl 2]
str w0, [x23]
ldrb w4, [x22, 1205]
sub w2, w2, w4
lsl w1, w1, w4
sub w1, w1, #1
lsr w0, w0, w2
and w0, w0, w1
ldrb w1, [x3, 1412]
cmp w0, w1
bcc .L3233
mov w0, -1
str w0, [x23]
.L3233:
add x21, x21, :lo12:.LANCHOR3
add x21, x21, 1960
add x19, x21, x19, lsl 4
ldrh w0, [x19, 2]
mvn x1, x0
tst x1, 32767
beq .L3237
add w0, w0, 1
strh w0, [x19, 2]
.L3237:
mov w0, 0
b .L3227
.L3232:
add x2, x21, :lo12:.LANCHOR3
ldr w3, [x23]
add x0, x2, 1960
add x0, x0, x19, lsl 4
ldr x1, [x0, 8]
str w3, [x1, x20, lsl 2]
strb w25, [x2, 2472]
ldrh w1, [x0, 2]
orr w1, w1, -32768
strh w1, [x0, 2]
b .L3233
.L3230:
add w19, w19, 1
add x0, x0, 16
and x19, x19, 65535
cmp w19, 32
bne .L3234
bl pm_select_ram_region
and x19, x0, 65535
add x2, x21, :lo12:.LANCHOR3
sbfiz x1, x19, 4, 32
add x2, x2, 1960
mov w27, w0
add x3, x2, x1
ldrh w2, [x2, x1]
mov w1, 65535
cmp w2, w1
beq .L3235
ldrsh w1, [x3, 2]
tbz w1, #31, .L3235
bl pm_flush_id
.L3235:
adrp x0, .LANCHOR5+464
mov w1, w27
strb w19, [x0, #:lo12:.LANCHOR5+464]
mov w0, w26
bl load_l2p_region
b .L3231
.size pm_log2phys, .-pm_log2phys
.align 2
.global gc_recovery
.type gc_recovery, %function
gc_recovery:
sub sp, sp, #224
stp x29, x30, [sp, 32]
add x29, sp, 32
stp x21, x22, [sp, 64]
adrp x22, .LANCHOR3
stp x19, x20, [sp, 48]
adrp x19, .LANCHOR0
add x21, x19, :lo12:.LANCHOR0
stp x23, x24, [sp, 80]
stp x25, x26, [sp, 96]
adrp x23, .LANCHOR5
stp x27, x28, [sp, 112]
add x0, x23, :lo12:.LANCHOR5
add x25, x22, :lo12:.LANCHOR3
ldr x20, [x21, 1128]
strb wzr, [x0, 264]
mov w0, 65535
strb wzr, [x25, 1337]
ldrh w1, [x20, 80]
cmp w1, w0
beq .L3244
add x24, x20, 80
mov w0, -1
strh w0, [x20, 130]
mov w0, 1
bl buf_alloc
mov x28, x0
ldrb w0, [x24, 9]
ldrh w1, [x25, 1410]
sub w0, w0, #1
ldrb w2, [x25, 1320]
add x0, x24, w0, sxtw 1
cmp w2, 2
ldrh w0, [x0, 16]
mul w1, w0, w1
str w1, [x29, 184]
beq .L3245
ldrb w0, [x21, 1212]
cbnz w0, .L3245
ldrb w0, [x21, 1213]
cbz w0, .L3246
.L3245:
add x0, x22, :lo12:.LANCHOR3
ldrh w0, [x0, 1338]
sub w0, w0, #1
add w0, w0, w1
orr w2, w0, w2, lsl 24
str w2, [x28, 40]
.L3247:
mov w1, 1
mov x0, x28
bl sblk_read_page
ldr w0, [x28, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
beq .L3248
ldr x0, [x28, 24]
ldr w1, [x0]
mov w0, 15555
movk w0, 0xf55f, lsl 16
cmp w1, w0
beq .L3249
.L3248:
mov x0, x28
bl zbuf_free
ldr x1, [x28, 24]
ldr x0, [x28, 8]
ldr w2, [x1, 12]
str w2, [sp, 16]
ldr w2, [x1, 8]
str w2, [sp, 8]
ldr w2, [x1, 4]
str w2, [sp]
ldp w3, w4, [x0]
ldp w5, w6, [x0, 8]
adrp x0, .LC245
ldr w7, [x1]
add x0, x0, :lo12:.LC245
ldr w1, [x28, 40]
ldr w2, [x28, 52]
bl printk
.L3338:
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x20, 80]
mov w21, 0
ldr x1, [x0, 1120]
strh wzr, [x1, x2, lsl 1]
ldr x0, [x0, 1128]
ldrh w1, [x20, 80]
strh w1, [x0, 130]
.L3250:
add x1, x19, :lo12:.LANCHOR0
ldrh w0, [x20, 80]
ldr x1, [x1, 1120]
ubfiz x2, x0, 1, 16
ldrh w1, [x1, x2]
cbnz w1, .L3294
bl ftl_dump_write_open_sblk
.L3294:
ldrh w1, [x20, 80]
mov w2, w21
adrp x0, .LC247
add x0, x0, :lo12:.LC247
bl printk
mov w0, -1
strh w0, [x20, 80]
bl pm_flush
bl ftl_ext_info_flush
add x1, x19, :lo12:.LANCHOR0
mov w2, 65535
ldr x0, [x1, 1128]
ldrh w0, [x0, 130]
cmp w0, w2
beq .L3295
ldrh w1, [x1, 1096]
cmp w1, w0
bhi .L3296
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 840
mov w2, 517
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3296:
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 1128]
ldrh w0, [x0, 130]
bl ftl_free_sblk
.L3295:
add x19, x19, :lo12:.LANCHOR0
mov w0, -1
ldr x1, [x19, 3384]
strh w0, [x1, 126]
ldr x1, [x19, 1128]
strh w0, [x1, 130]
mov w0, 0
bl ftl_info_flush
.L3243:
ldp x19, x20, [sp, 48]
ldp x21, x22, [sp, 64]
ldp x23, x24, [sp, 80]
ldp x25, x26, [sp, 96]
ldp x27, x28, [sp, 112]
ldp x29, x30, [sp, 32]
add sp, sp, 224
ret
.L3246:
cmp w2, 3
bne .L3247
ldrh w0, [x25, 1376]
sub w0, w0, #1
add w0, w0, w1
orr w0, w0, 50331648
str w0, [x28, 40]
b .L3247
.L3249:
add x1, x23, :lo12:.LANCHOR5
ldrb w0, [x1, 465]
cmp w0, 2
bne .L3251
add x21, x22, :lo12:.LANCHOR3
ldrb w0, [x21, 1320]
cmp w0, 3
bne .L3251
ldrh w2, [x21, 1338]
ldrb w3, [x21, 1321]
ldrh w0, [x1, 462]
ubfiz w2, w2, 2, 14
mul w2, w2, w3
ldr x3, [x1, 280]
ldr x1, [x28, 8]
sub w2, w2, w0
and x0, x0, 65532
and w2, w2, 65535
add x0, x3, x0
bl ftl_memcpy
add x0, x19, :lo12:.LANCHOR0
ldrb w1, [x0, 1212]
cbnz w1, .L3252
ldrb w0, [x0, 1213]
cbz w0, .L3253
.L3252:
ldr w0, [x28, 40]
sub w0, w0, #1
.L3332:
str w0, [x28, 40]
mov w1, 1
mov x0, x28
bl sblk_read_page
ldr w0, [x28, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
beq .L3255
ldr x0, [x28, 24]
ldr w1, [x0]
mov w0, 15555
movk w0, 0xf55f, lsl 16
cmp w1, w0
beq .L3256
.L3255:
mov x0, x28
bl zbuf_free
b .L3338
.L3253:
ldr w0, [x29, 184]
ldrh w1, [x21, 1376]
sub w0, w0, #1
add w0, w0, w1
orr w0, w0, 33554432
b .L3332
.L3256:
add x0, x23, :lo12:.LANCHOR5
ldrh w2, [x0, 462]
.L3333:
ldr x1, [x28, 8]
add x21, x22, :lo12:.LANCHOR3
ldr x0, [x0, 280]
bl ftl_memcpy
ldrb w1, [x21, 1321]
ldrh w0, [x21, 1338]
mul w0, w0, w1
ldrb w1, [x21, 1946]
lsl w2, w0, 2
cmp w1, w0, lsr 6
bge .L3258
add x25, x23, :lo12:.LANCHOR5
mov w1, 0
ldr x0, [x25, 288]
bl ftl_memset
ldrb w26, [x25, 465]
cmp w26, 1
bne .L3299
ldrb w1, [x21, 1321]
ldrh w0, [x21, 1338]
ldrh w21, [x25, 462]
mul w0, w0, w1
ldr x1, [x28, 8]
sub w21, w21, w0, lsl 2
add x1, x1, w0, sxtw 2
ldr x0, [x25, 288]
mov w2, w21
bl ftl_memcpy
mov w10, w26
.L3259:
add x0, x22, :lo12:.LANCHOR3
ldrh w1, [x0, 1376]
ldrb w25, [x0, 1320]
str w1, [x29, 168]
cmp w25, 2
bne .L3260
ldrb w0, [x0, 1322]
cbz w0, .L3261
.L3260:
add x0, x19, :lo12:.LANCHOR0
ldrb w0, [x0, 1212]
cbz w0, .L3262
.L3261:
ldr w0, [x29, 168]
mul w0, w0, w25
mov w25, 1
str w0, [x29, 168]
.L3262:
add x14, x22, :lo12:.LANCHOR3
adrp x26, .LC246
mov w9, 0
add x0, x26, :lo12:.LC246
mov w13, 0
str x0, [x29, 152]
.L3263:
sub w0, w9, #1
str w0, [x29, 164]
ldr w0, [x29, 168]
cmp w0, w9
bls .L3276
add w0, w9, w9, lsl 1
mov w26, 0
sub w0, w0, #1
str w0, [x29, 172]
b .L3277
.L3251:
add x0, x22, :lo12:.LANCHOR3
ldrh w2, [x0, 1338]
ldrb w0, [x0, 1321]
mul w2, w2, w0
add x0, x23, :lo12:.LANCHOR5
lsl w2, w2, 2
b .L3333
.L3258:
add x3, x23, :lo12:.LANCHOR5
ldr x1, [x28, 8]
add x1, x1, w0, sxtw 2
ldr x0, [x3, 288]
bl ftl_memcpy
mov w10, 0
.L3334:
mov w21, 0
b .L3259
.L3299:
mov w10, 1
b .L3334
.L3272:
ldrh w1, [x14, 1410]
ldrh w0, [x24, x27, lsl 1]
ldrb w2, [x14, 1320]
cmp w2, 2
mul w0, w0, w1
str w0, [x29, 184]
add w1, w11, w0
beq .L3264
add x3, x19, :lo12:.LANCHOR0
ldrb w4, [x3, 1212]
cbz w4, .L3265
.L3264:
ldr w0, [x29, 164]
add w1, w1, w0
orr w1, w1, w2, lsl 24
.L3335:
str w1, [x28, 40]
.L3266:
str x14, [x29, 120]
mov w1, 1
str w10, [x29, 128]
mov x0, x28
str w9, [x29, 136]
str w13, [x29, 144]
str w11, [x29, 160]
bl sblk_read_page
ldr w10, [x29, 128]
ldr w13, [x29, 144]
ldr w9, [x29, 136]
ldr w11, [x29, 160]
sxtw x15, w13
ldr x14, [x29, 120]
cbz w10, .L3269
add x0, x23, :lo12:.LANCHOR5
lsl x1, x15, 2
ldr x0, [x0, 288]
ldr w2, [x0, x1]
cbnz w2, .L3269
ldr x2, [x28, 24]
ldr w2, [x2, 8]
str w2, [x0, x1]
.L3269:
add x1, x23, :lo12:.LANCHOR5
lsl x15, x15, 2
ldr x0, [x1, 280]
ldr w3, [x0, x15]
ldr x0, [x28, 24]
ldr w6, [x0, 4]
cmp w3, w6
bne .L3270
ldr x1, [x1, 288]
ldr w2, [x1, x15]
ldr w1, [x0, 8]
cmp w2, w1
beq .L3271
.L3270:
add x18, x23, :lo12:.LANCHOR5
ldr w2, [x0, 12]
str x14, [x29, 104]
stp w10, w11, [x29, 116]
ldr x1, [x18, 288]
str w2, [sp]
str w9, [x29, 128]
ldr w5, [x0]
ldr w4, [x1, x15]
ldr w7, [x0, 8]
ldr w1, [x28, 40]
ldr w2, [x28, 52]
ldr x0, [x29, 152]
stp x18, x15, [x29, 136]
str w13, [x29, 160]
bl printk
ldp x18, x15, [x29, 136]
ldp w10, w11, [x29, 116]
ldr x0, [x18, 280]
ldr w9, [x29, 128]
ldr w13, [x29, 160]
ldr x14, [x29, 104]
ldr w0, [x0, x15]
cmn w0, #1
beq .L3271
mov x0, x28
bl zbuf_free
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x20, 80]
ldr x1, [x0, 1120]
strh wzr, [x1, x2, lsl 1]
ldr x0, [x0, 1128]
ldrh w1, [x20, 80]
strh w1, [x0, 130]
b .L3250
.L3265:
cmp w2, 3
bne .L3267
ldrb w2, [x3, 1213]
cbz w2, .L3268
ldr w0, [x29, 172]
add w1, w1, w0
orr w1, w1, 50331648
b .L3335
.L3268:
add w0, w9, w0
orr w0, w0, w11, lsl 24
.L3336:
str w0, [x28, 40]
b .L3266
.L3267:
add w0, w9, w0
b .L3336
.L3271:
add w13, w13, 1
add w11, w11, 1
.L3274:
cmp w25, w11
bcs .L3272
add w26, w26, 1
.L3277:
ldrb w0, [x24, 9]
cmp w26, w0
bge .L3273
sxtw x27, w26
mov w11, 1
add x27, x27, 8
b .L3274
.L3273:
ldrb w0, [x14, 1322]
cmp w0, 0
cinc w9, w9, ne
add w9, w9, 1
b .L3263
.L3276:
mov x0, x28
bl zbuf_free
add x0, x19, :lo12:.LANCHOR0
add x3, x22, :lo12:.LANCHOR3
ldrh w2, [x20, 80]
mov w21, 0
mov w27, 0
str wzr, [x29, 164]
ldrh w3, [x3, 1338]
ldr x1, [x0, 1120]
ldrb w0, [x24, 9]
mul w0, w0, w3
strh w0, [x1, x2, lsl 1]
.L3278:
sub w0, w27, #1
str w0, [x29, 136]
ldr w0, [x29, 168]
cmp w0, w27
bls .L3292
add w0, w27, w27, lsl 1
add x28, x23, :lo12:.LANCHOR5
sub w0, w0, #1
str wzr, [x29, 172]
str w0, [x29, 160]
b .L3293
.L3288:
ldr w0, [x29, 164]
ldr x1, [x28, 280]
sbfiz x0, x0, 2, 32
ldr w5, [x1, x0]
cmn w5, #1
beq .L3279
ldr x1, [x28, 288]
str w5, [x29, 144]
ldr w0, [x1, x0]
str w0, [x29, 152]
mov w0, w5
bl lpa_hash_get_ppa
str w0, [x29, 188]
cmn w0, #1
ldr w5, [x29, 144]
bne .L3280
mov w0, w5
str w5, [x29, 144]
mov w2, 0
add x1, x29, 188
bl pm_log2phys
ldr w5, [x29, 144]
.L3280:
ldr x0, [x29, 128]
add x2, x22, :lo12:.LANCHOR3
ldrh w1, [x2, 1410]
ldrh w0, [x24, x0, lsl 1]
ldrb w2, [x2, 1320]
cmp w2, 2
mul w0, w0, w1
add w1, w26, w0
beq .L3281
add x6, x19, :lo12:.LANCHOR0
ldrb w7, [x6, 1212]
cbz w7, .L3282
.L3281:
ldr w0, [x29, 136]
add w1, w0, w1
orr w1, w1, w2, lsl 24
str w1, [x29, 184]
.L3283:
add x0, x19, :lo12:.LANCHOR0
add x6, x22, :lo12:.LANCHOR3
ldr w3, [x29, 152]
ldrb w2, [x0, 1205]
mov w0, 24
ldrh w1, [x6, 1304]
sub w0, w0, w2
mov w2, 1
sub w0, w0, w1
lsr w1, w3, w1
lsl w0, w2, w0
sub w0, w0, #1
and w0, w0, w1
ldrb w1, [x6, 1306]
udiv w0, w0, w1
and w0, w0, 65535
str w0, [x29, 144]
ldr w0, [x29, 188]
cmp w3, w0
bne .L3286
add x1, x29, 184
mov w0, w5
bl pm_log2phys
add w21, w21, 1
ldrh w0, [x29, 144]
bl ftl_vpn_decrement
.L3287:
ldr w0, [x29, 164]
add x2, x19, :lo12:.LANCHOR0
add w0, w0, 1
str w0, [x29, 164]
ldr x1, [x2, 1104]
ldr w0, [x29, 144]
add x1, x1, x0, lsl 2
ldrb w1, [x1, 2]
tst w1, 224
bne .L3279
ldr x1, [x2, 1120]
lsl x0, x0, 1
ldrh w2, [x1, x0]
cbz w2, .L3279
strh wzr, [x1, x0]
.L3279:
add w26, w26, 1
.L3290:
cmp w25, w26
bcs .L3288
ldr w0, [x29, 172]
add w0, w0, 1
str w0, [x29, 172]
.L3293:
ldrb w0, [x24, 9]
ldr w1, [x29, 172]
cmp w1, w0
bge .L3289
ldrsw x0, [x29, 172]
mov w26, 1
add x0, x0, 8
str x0, [x29, 128]
b .L3290
.L3282:
cmp w2, 3
bne .L3284
ldrb w6, [x6, 1213]
lsl w2, w26, 24
cbz w6, .L3285
ldr w0, [x29, 160]
add w1, w0, w1
orr w0, w1, w2
.L3337:
str w0, [x29, 184]
b .L3283
.L3285:
add w0, w27, w0
orr w0, w0, w2
b .L3337
.L3284:
add w0, w27, w0
b .L3337
.L3286:
ldr w1, [x29, 184]
cmp w0, w1
cinc w21, w21, eq
b .L3287
.L3289:
add x0, x22, :lo12:.LANCHOR3
ldrb w0, [x0, 1322]
cmp w0, 0
cinc w27, w27, ne
add w27, w27, 1
b .L3278
.L3292:
add x0, x19, :lo12:.LANCHOR0
ldrh w1, [x20, 80]
ldr x0, [x0, 1120]
strh w21, [x0, x1, lsl 1]
ldrh w0, [x20, 80]
bl zftl_insert_data_list
b .L3250
.L3244:
ldrh w0, [x20, 130]
cmp w0, w1
beq .L3243
ldr x1, [x21, 3384]
ldrh w1, [x1, 126]
cmp w1, w0
bne .L3298
bl pm_flush
ldr x0, [x21, 1128]
ldrh w0, [x0, 130]
bl ftl_free_sblk
ldr x0, [x21, 3384]
mov w1, -1
strh w1, [x0, 126]
mov w0, 0
bl ftl_info_flush
.L3298:
add x19, x19, :lo12:.LANCHOR0
mov w1, -1
ldr x0, [x19, 1128]
strh w1, [x0, 130]
b .L3243
.size gc_recovery, .-gc_recovery
.align 2
.global gc_update_l2p_map_new
.type gc_update_l2p_map_new, %function
gc_update_l2p_map_new:
stp x29, x30, [sp, -160]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
adrp x22, .LANCHOR3
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldr x20, [x0, 1128]
add x0, x22, :lo12:.LANCHOR3
ldrh w24, [x0, 1338]
add x0, x20, 80
str x0, [x29, 112]
ldrb w0, [x0, 9]
mul w24, w24, w0
adrp x0, .LANCHOR2
str x0, [x29, 136]
ldr w1, [x0, #:lo12:.LANCHOR2]
tbz x1, 8, .L3340
ldrh w1, [x20, 80]
adrp x0, .LC248
add x0, x0, :lo12:.LC248
bl printk
.L3340:
add x0, x19, :lo12:.LANCHOR0
adrp x1, .LANCHOR5
ldrh w3, [x20, 80]
mov w23, 0
mov w21, 0
str x1, [x29, 120]
ldr x2, [x0, 1120]
add x0, x1, :lo12:.LANCHOR5
ldrb w0, [x0, 465]
sub w0, w24, w0
strh w0, [x2, x3, lsl 1]
adrp x0, .LC250
add x0, x0, :lo12:.LC250
str x0, [x29, 104]
.L3341:
cmp w21, w24
bne .L3350
ldr x0, [x29, 136]
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3351
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x20, 80]
mov w3, w23
ldr x1, [x0, 1120]
ldr x0, [x0, 1128]
ldrh w2, [x1, x2, lsl 1]
ldrh w1, [x0, 80]
adrp x0, .LC251
add x0, x0, :lo12:.LC251
bl printk
.L3351:
add x0, x19, :lo12:.LANCHOR0
ldrh w1, [x20, 80]
ldr x0, [x0, 1120]
ldrh w0, [x0, x1, lsl 1]
cmp w23, w0
beq .L3352
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 856
mov w2, 898
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3352:
add x19, x19, :lo12:.LANCHOR0
ldrh w1, [x20, 80]
ldr x0, [x19, 1120]
strh w23, [x0, x1, lsl 1]
ldrh w0, [x20, 80]
bl zftl_insert_data_list
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 160
ret
.L3350:
ldr x0, [x29, 120]
add x0, x0, :lo12:.LANCHOR5
ldr x0, [x0, 280]
ldr w2, [x0, w21, sxtw 2]
cmn w2, #1
beq .L3342
add x0, x22, :lo12:.LANCHOR3
ldrb w0, [x0, 1946]
lsl w0, w0, 7
udiv w0, w2, w0
and w0, w0, 65535
str w0, [x29, 132]
ldr x0, [x29, 136]
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3343
ldr w1, [x29, 132]
adrp x0, .LC249
mov w3, w21
add x0, x0, :lo12:.LC249
bl printk
.L3343:
ldr x0, [x29, 120]
mov w25, w21
add x26, x0, :lo12:.LANCHOR5
.L3349:
ldr x0, [x26, 280]
sbfiz x27, x25, 2, 32
ldr w4, [x0, x27]
cmn w4, #1
beq .L3344
add x0, x22, :lo12:.LANCHOR3
ldr w1, [x29, 132]
ldrb w0, [x0, 1946]
lsl w0, w0, 7
udiv w0, w4, w0
cmp w1, w0, uxth
bne .L3344
ldr x0, [x26, 288]
str w4, [x29, 128]
ldr w28, [x0, x27]
mov w0, w4
bl lpa_hash_get_ppa
str w0, [x29, 156]
cmn w0, #1
ldr w4, [x29, 128]
bne .L3345
mov w0, w4
str w4, [x29, 128]
mov w2, 0
add x1, x29, 156
bl pm_log2phys
ldr w4, [x29, 128]
.L3345:
ldr w3, [x29, 156]
cmp w28, w3
bne .L3346
ldr x0, [x26, 296]
mov w2, 1
add x1, x29, 152
add w23, w23, 1
ldr w0, [x0, x27]
str w0, [x29, 152]
mov w0, w4
bl pm_log2phys
add x0, x19, :lo12:.LANCHOR0
add x3, x22, :lo12:.LANCHOR3
ldrb w1, [x0, 1205]
mov w0, 24
ldrh w2, [x3, 1304]
sub w0, w0, w1
sub w1, w0, w2
mov w0, 1
lsr w28, w28, w2
lsl w0, w0, w1
sub w0, w0, #1
and w28, w0, w28
ldrb w0, [x3, 1306]
udiv w0, w28, w0
.L3373:
bl ftl_vpn_decrement
ldr x0, [x26, 280]
mov w1, -1
str w1, [x0, x27]
.L3344:
add w25, w25, 1
cmp w24, w25
bne .L3349
.L3342:
add w21, w21, 1
b .L3341
.L3346:
ldr x0, [x29, 136]
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3348
ldr x0, [x29, 104]
mov w2, w28
mov w1, w4
bl printk
.L3348:
ldr x0, [x29, 112]
ldrh w0, [x0]
b .L3373
.size gc_update_l2p_map_new, .-gc_update_l2p_map_new
.align 2
.global gc_scan_src_blk_one_page
.type gc_scan_src_blk_one_page, %function
gc_scan_src_blk_one_page:
stp x29, x30, [sp, -96]!
mov w3, 0
mov w4, 0
mov w5, 65535
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x1, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
add x1, x1, 3416
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
adrp x21, .LANCHOR3
ldrb w0, [x1, 4]
add x2, x1, w0, sxtw 1
ldrh w22, [x2, 40]
add x2, x21, :lo12:.LANCHOR3
ldrb w6, [x2, 1321]
ldrh w2, [x1, 2]
.L3375:
cmp w22, w5
beq .L3377
cbz w4, .L3378
add x1, x20, :lo12:.LANCHOR0
strh w2, [x1, 3418]
.L3378:
cbz w3, .L3379
add x1, x20, :lo12:.LANCHOR0
strb w0, [x1, 3420]
.L3379:
add x20, x20, :lo12:.LANCHOR0
mov w0, 1
add x19, x20, 3416
bl buf_alloc
add x25, x21, :lo12:.LANCHOR3
mov x23, x0
mov w24, 1
.L3380:
ldrb w1, [x19, 6]
cmp w24, w1
ble .L3390
mov x0, x23
bl zbuf_free
ldrb w0, [x19, 4]
add x21, x21, :lo12:.LANCHOR3
add w0, w0, 1
and w0, w0, 255
ldrb w1, [x21, 1321]
strb w0, [x19, 4]
cmp w1, w0
bne .L3374
ldrh w0, [x19, 2]
strb wzr, [x19, 4]
add w0, w0, 1
strh w0, [x19, 2]
.L3374:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x29, x30, [sp], 96
ret
.L3377:
add w0, w0, 1
and w0, w0, 255
cmp w0, w6
bne .L3376
add w2, w2, 1
mov w0, 0
and w2, w2, 65535
mov w4, 1
.L3376:
add x3, x1, w0, sxtw 1
ldrh w22, [x3, 40]
mov w3, 1
b .L3375
.L3390:
ldrh w0, [x25, 1410]
cmp w1, 2
mul w0, w0, w22
bne .L3381
ldrh w1, [x19, 2]
lsl w1, w1, 1
.L3400:
sub w1, w1, #1
add w0, w24, w0
add w0, w1, w0
ldrb w1, [x25, 1320]
orr w0, w0, w1, lsl 24
.L3399:
str w0, [x23, 40]
mov w1, 1
mov x0, x23
bl sblk_read_page
ldr w0, [x23, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
beq .L3387
ldr x0, [x23, 24]
ldr w26, [x0, 4]
mov w0, w26
bl lpa_hash_get_ppa
str w0, [x29, 92]
cmn w0, #1
bne .L3388
ldr w0, [x20, 3364]
cmp w26, w0
bcs .L3388
mov w2, 0
add x1, x29, 92
mov w0, w26
bl pm_log2phys
.L3388:
ldr w0, [x23, 40]
ldr w1, [x29, 92]
cmp w0, w1
bne .L3387
ldrh w2, [x19, 24]
ldr x1, [x25, 1312]
str w0, [x1, x2, lsl 2]
ldrh w0, [x19, 24]
add w0, w0, 1
strh w0, [x19, 24]
.L3387:
ldrh w0, [x19, 26]
add w24, w24, 1
add w0, w0, 1
strh w0, [x19, 26]
b .L3380
.L3381:
cmp w1, 3
bne .L3383
ldrb w1, [x20, 1212]
cbnz w1, .L3384
ldrb w1, [x20, 1213]
cbz w1, .L3385
.L3384:
ldrh w1, [x19, 2]
add w1, w1, w1, lsl 1
b .L3400
.L3385:
ldrh w1, [x19, 2]
add w0, w1, w0
orr w0, w0, w24, lsl 24
b .L3399
.L3383:
ldrh w1, [x19, 2]
add w0, w1, w0
b .L3399
.size gc_scan_src_blk_one_page, .-gc_scan_src_blk_one_page
.align 2
.global gc_scan_src_blk
.type gc_scan_src_blk, %function
gc_scan_src_blk:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x20, .LANCHOR0
add x0, x20, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
str x27, [sp, 80]
ldrh w1, [x0, 3416]
mov w0, 65535
cmp w1, w0
bne .L3402
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 880
mov w2, 1505
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3402:
add x0, x20, :lo12:.LANCHOR0
mov w2, 65535
ldrh w1, [x0, 3416]
cmp w1, w2
beq .L3432
adrp x2, .LANCHOR2
ldr w2, [x2, #:lo12:.LANCHOR2]
tbz x2, 8, .L3404
ldr x0, [x0, 1120]
ubfiz x2, x1, 1, 16
ldrh w2, [x0, x2]
adrp x0, .LC252
add x0, x0, :lo12:.LC252
bl printk
.L3404:
bl timer_get_time
add x14, x20, :lo12:.LANCHOR0
add x15, x14, 3416
add x1, x14, 3456
ldrh w0, [x14, 3416]
bl ftl_get_blk_list_in_sblk
and w1, w0, 255
strb w1, [x15, 5]
cbnz w1, .L3405
mov w0, -1
strh w0, [x14, 3416]
.L3432:
mov w0, 0
b .L3401
.L3405:
ldrh w3, [x14, 3416]
ldr x1, [x14, 1104]
mov x2, x3
add x1, x1, x3, lsl 2
ldrb w1, [x1, 2]
and w1, w1, 224
cmp w1, 32
beq .L3406
cmp w1, 224
beq .L3406
cbz w1, .L3407
ldr x1, [x14, 1128]
ldrh w3, [x1, 16]
cmp w3, w2
beq .L3406
ldrh w3, [x1, 48]
cmp w3, w2
beq .L3406
ldrh w1, [x1, 80]
cmp w1, w2
bne .L3452
.L3406:
add x20, x20, :lo12:.LANCHOR0
mov w0, -1
strh wzr, [x20, 3440]
strh w0, [x20, 3416]
b .L3432
.L3407:
ldr x0, [x14, 1120]
ldrh w0, [x0, x3, lsl 1]
cbz w0, .L3409
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 880
mov w2, 1530
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3409:
add x0, x20, :lo12:.LANCHOR0
ldrh w1, [x0, 3416]
ldr x0, [x0, 1120]
strh wzr, [x0, x1, lsl 1]
b .L3406
.L3452:
and w0, w0, 255
sub w0, w0, #1
add x0, x15, w0, sxtw 1
ldrh w22, [x0, 40]
mov w0, 65535
cmp w22, w0
bne .L3410
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 880
mov w2, 1540
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3410:
add x3, x20, :lo12:.LANCHOR0
adrp x23, .LANCHOR3
add x1, x23, :lo12:.LANCHOR3
ldrh w2, [x3, 3416]
ldr x3, [x3, 1104]
ldrh w21, [x1, 1410]
ldrh w0, [x1, 1376]
add x2, x3, x2, lsl 2
sub w0, w0, #1
and w0, w0, 65535
mul w21, w21, w22
ldrb w2, [x2, 2]
and w2, w2, 224
cmp w2, 160
bne .L3433
ldrb w2, [x1, 1320]
and w27, w2, 65535
cmp w2, 2
orr w21, w21, w2, lsl 24
bne .L3412
ldrh w0, [x1, 1338]
sub w0, w0, #1
and w0, w0, 65535
.L3412:
add x1, x20, :lo12:.LANCHOR0
ldrb w2, [x1, 1212]
cbnz w2, .L3413
ldrb w1, [x1, 1213]
cbz w1, .L3411
.L3413:
add x0, x23, :lo12:.LANCHOR3
ldrh w0, [x0, 1338]
sub w0, w0, #1
and w0, w0, 65535
.L3411:
add x24, x20, :lo12:.LANCHOR0
orr w21, w0, w21
mov w0, 1
strb w27, [x24, 3422]
strh wzr, [x24, 3418]
strb wzr, [x24, 3420]
strh wzr, [x24, 3442]
strh wzr, [x24, 3444]
bl buf_alloc
mov x19, x0
str w21, [x0, 40]
mov w1, 1
bl sblk_read_page
strh wzr, [x24, 3440]
ldr w0, [x19, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
bne .L3414
.L3457:
mov x0, x19
bl zbuf_free
.L3455:
mov w0, -1
.L3401:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L3433:
mov w27, 1
b .L3411
.L3414:
ldr x0, [x19, 24]
mov w1, 15555
movk w1, 0xf55f, lsl 16
ldr w2, [x0]
cmp w2, w1
beq .L3415
mov w2, 1578
.L3458:
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 880
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L3457
.L3415:
add x1, x23, :lo12:.LANCHOR3
adrp x26, .LANCHOR5
add x2, x26, :lo12:.LANCHOR5
ldrb w24, [x1, 1321]
ldrh w25, [x1, 1376]
ldrb w3, [x2, 465]
cmp w3, 2
mul w25, w24, w25
mul w25, w27, w25
and w25, w25, 65535
bne .L3416
cmp w27, 3
bne .L3416
ldrh w0, [x2, 462]
ldrh w2, [x1, 1338]
ldr x3, [x1, 1312]
ldr x1, [x19, 8]
ubfiz w2, w2, 2, 14
mul w24, w24, w2
sub w24, w24, w0
and x0, x0, 65532
and w24, w24, 65535
add x0, x3, x0
mov w2, w24
bl ftl_memcpy
ldr x0, [x19, 24]
ldr w27, [x0, 4]
cbz w27, .L3417
ldr x0, [x19, 8]
mov w1, w24
bl js_hash
cmp w27, w0
beq .L3417
mov x0, x19
bl zbuf_free
ldr x0, [x19, 24]
mov w3, w24
.L3456:
ldr w1, [x0, 4]
adrp x0, .LC253
ldr w2, [x19, 40]
add x0, x0, :lo12:.LC253
bl printk
b .L3455
.L3417:
add x0, x20, :lo12:.LANCHOR0
ldrb w1, [x0, 1212]
cbnz w1, .L3418
ldrb w0, [x0, 1213]
cbz w0, .L3419
.L3418:
sub w0, w21, #1
str w0, [x19, 40]
.L3420:
mov w1, 1
mov x0, x19
bl sblk_read_page
ldr w0, [x19, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
beq .L3457
ldr x0, [x19, 24]
ldr w1, [x0]
mov w0, 15555
movk w0, 0xf55f, lsl 16
cmp w1, w0
beq .L3422
mov w2, 1619
b .L3458
.L3419:
add x1, x23, :lo12:.LANCHOR3
ldrh w0, [x1, 1376]
ldrh w1, [x1, 1410]
sub w0, w0, #1
and w0, w0, 65535
orr w0, w0, 33554432
mul w22, w1, w22
orr w22, w0, w22
str w22, [x19, 40]
b .L3420
.L3422:
add x26, x26, :lo12:.LANCHOR5
add x0, x23, :lo12:.LANCHOR3
ldrh w2, [x26, 462]
.L3454:
ldr x0, [x0, 1312]
add x23, x23, :lo12:.LANCHOR3
ldr x1, [x19, 8]
add x24, x20, :lo12:.LANCHOR0
add x21, x24, 3416
mov x27, 0
mov w26, 24
bl ftl_memcpy
ldr x22, [x23, 1312]
.L3425:
cmp w25, w27
bgt .L3430
mov x0, x19
bl zbuf_free
add x0, x20, :lo12:.LANCHOR0
ldrh w1, [x0, 3416]
ldr x3, [x0, 1120]
ubfiz x2, x1, 1, 16
ldrh w2, [x3, x2]
ldrh w3, [x0, 3440]
cmp w2, w3
beq .L3431
adrp x0, .LC254
add x0, x0, :lo12:.LC254
bl printk
.L3431:
add x20, x20, :lo12:.LANCHOR0
ldrh w2, [x20, 3416]
ldr x1, [x20, 1120]
ldrh w3, [x20, 3440]
strh w3, [x1, x2, lsl 1]
strh wzr, [x20, 3444]
ldrh w0, [x20, 3440]
b .L3401
.L3416:
ldr w22, [x0, 4]
lsl w21, w25, 2
ldr x0, [x19, 8]
mov w1, w21
bl js_hash
cmp w22, w0
beq .L3424
mov x0, x19
bl zbuf_free
mov w3, w21
ldr x0, [x19, 24]
b .L3456
.L3424:
add x0, x23, :lo12:.LANCHOR3
mov w2, w21
b .L3454
.L3430:
ldr w0, [x22, x27, lsl 2]
cmn w0, #1
beq .L3427
bl lpa_hash_get_ppa
str w0, [x29, 108]
cmn w0, #1
bne .L3428
ldr w0, [x22, x27, lsl 2]
mov w2, 0
add x1, x29, 108
bl pm_log2phys
.L3428:
ldrb w1, [x24, 1205]
ldrh w2, [x23, 1304]
sub w0, w26, w1
ldr w3, [x29, 108]
sub w1, w0, w2
mov w0, 1
lsl w0, w0, w1
ldrb w1, [x23, 1306]
sub w0, w0, #1
lsr w2, w3, w2
and w0, w0, w2
udiv w0, w0, w1
ldrh w1, [x21]
cmp w0, w1
bne .L3427
ldrh w1, [x21, 24]
ldr x0, [x23, 1312]
str w3, [x0, x1, lsl 2]
ldrh w0, [x21, 24]
add w0, w0, 1
strh w0, [x21, 24]
.L3427:
bl timer_get_time
add x27, x27, 1
b .L3425
.size gc_scan_src_blk, .-gc_scan_src_blk
.align 2
.global gc_scan_static_data
.type gc_scan_static_data, %function
gc_scan_static_data:
stp x29, x30, [sp, -64]!
adrp x1, .LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
add x19, x1, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
ldr x0, [x19, 1128]
ldr w2, [x0, 544]
cmn w2, #1
beq .L3460
adrp x20, .LANCHOR4
add x20, x20, :lo12:.LANCHOR4
add x20, x20, 896
mov w21, 0
.L3468:
ldr x0, [x19, 1128]
mov w2, 0
add x1, x29, 60
ldr w0, [x0, 544]
bl pm_log2phys
ldr w0, [x29, 60]
cmn w0, #1
beq .L3461
mov w0, 1
bl buf_alloc
ldr w1, [x29, 60]
mov x22, x0
str w1, [x0, 40]
mov w1, 1
bl sblk_read_page
ldr w0, [x22, 52]
cmp w0, 256
bne .L3462
adrp x2, .LANCHOR3
add x2, x2, :lo12:.LANCHOR3
ldrb w1, [x19, 1205]
mov w0, 24
ldr w3, [x29, 60]
ldrh w4, [x2, 1304]
sub w0, w0, w1
mov w1, 1
sub w0, w0, w4
lsr w3, w3, w4
lsl w0, w1, w0
sub w0, w0, #1
and w0, w0, w3
ldrb w3, [x2, 1306]
mov w2, 0
udiv w0, w0, w3
bl gc_add_sblk
.L3462:
ldr x0, [x19, 1128]
ldr x1, [x22, 24]
ldr w0, [x0, 544]
ldr w1, [x1, 4]
cmp w1, w0
beq .L3463
mov x1, x20
mov w2, 2163
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3463:
mov x0, x22
bl zbuf_free
.L3461:
ldr x0, [x19, 1128]
ldr w2, [x19, 3364]
ldr w1, [x0, 544]
add w1, w1, 1
str w1, [x0, 544]
cmp w1, w2
bcc .L3464
mov w1, -1
str w1, [x0, 544]
ldr w1, [x0, 548]
add w1, w1, 1
str w1, [x0, 548]
bl ftl_flush
bl pm_flush
bl ftl_ext_info_flush
mov w0, 0
bl ftl_info_flush
.L3459:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 64
ret
.L3464:
ldr w0, [x29, 60]
cmn w0, #1
bne .L3459
adrp x1, .LANCHOR5+462
add w0, w21, 1
and w0, w0, 65535
ldrh w1, [x1, #:lo12:.LANCHOR5+462]
cmp w21, w1, lsr 2
bcs .L3459
mov w21, w0
b .L3468
.L3460:
ldr w2, [x0, 536]
ldr w3, [x0, 12]
add w2, w2, 12959744
add w2, w2, 256
cmp w3, w2
bhi .L3470
ldr w2, [x0, 540]
mov w4, 5000
add w2, w2, w4
ldr x4, [x19, 3384]
ldr w4, [x4, 44]
cmp w4, w2
bls .L3459
.L3470:
add x1, x1, :lo12:.LANCHOR0
ldr x1, [x1, 3384]
ldr w1, [x1, 44]
str w1, [x0, 540]
str w3, [x0, 536]
str wzr, [x0, 544]
b .L3459
.size gc_scan_static_data, .-gc_scan_static_data
.align 2
.global gc_block_vpn_scan
.type gc_block_vpn_scan, %function
gc_block_vpn_scan:
stp x29, x30, [sp, -144]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x20, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldr x1, [x20, 1128]
ldrh w0, [x20, 1096]
ldr w1, [x1, 608]
cmp w1, w0
bcs .L3476
bl timer_get_time
ldr x21, [x20, 1128]
mov w2, 30000
ldr w1, [x21, 604]
add w1, w1, w2
cmp w0, w1
bls .L3476
bl timer_get_time
str w0, [x21, 604]
ldr x0, [x20, 1128]
ldrh w2, [x20, 1096]
ldr w1, [x0, 600]
cmp w1, w2
bcs .L3478
ldr x2, [x20, 3384]
ldrh w2, [x2, 134]
cmp w1, w2
bcs .L3479
.L3478:
add x1, x19, :lo12:.LANCHOR0
ldr x1, [x1, 3384]
ldrh w1, [x1, 134]
str w1, [x0, 600]
.L3479:
ldr w25, [x0, 600]
mov w0, 65535
and w21, w25, 65535
cmp w21, w0
bne .L3480
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 920
mov w2, 2504
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3480:
add x14, x19, :lo12:.LANCHOR0
add x15, x29, 128
ldr x0, [x14, 1128]
ldr w1, [x0, 600]
add w1, w1, 1
str w1, [x0, 600]
ldr w1, [x0, 608]
add w1, w1, 1
str w1, [x0, 608]
mov x1, x15
mov w0, w21
bl ftl_get_blk_list_in_sblk
mov w1, w0
tst w0, 65535
beq .L3476
ldr x24, [x14, 1104]
uxtw x23, w21
mov w2, 224
add x24, x24, x23, lsl 2
ldrb w0, [x24, 2]
and w0, w0, 224
cmp w0, 32
ccmp w0, w2, 4, ne
beq .L3481
cbz w0, .L3482
ldr x0, [x14, 1128]
ldrh w2, [x0, 16]
cmp w2, w21
beq .L3476
ldrh w2, [x0, 48]
cmp w2, w21
beq .L3476
ldrh w0, [x0, 80]
cmp w0, w21
bne .L3512
.L3476:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
ret
.L3481:
cbnz w0, .L3476
.L3482:
add x0, x19, :lo12:.LANCHOR0
lsl x23, x23, 1
ldr x0, [x0, 1120]
ldrh w0, [x0, x23]
cbz w0, .L3484
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 920
mov w2, 2521
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3484:
add x19, x19, :lo12:.LANCHOR0
ldr x0, [x19, 1120]
strh wzr, [x0, x23]
b .L3476
.L3512:
and w1, w1, 65535
mov w0, 65535
sub w1, w1, #1
ldrh w26, [x15, w1, sxtw 1]
cmp w26, w0
bne .L3486
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 920
mov w2, 2529
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3486:
adrp x20, .LANCHOR3
add x2, x20, :lo12:.LANCHOR3
ldrb w1, [x24, 2]
ldrh w22, [x2, 1410]
and w1, w1, 224
ldrh w0, [x2, 1376]
cmp w1, 160
sub w0, w0, #1
and w0, w0, 65535
mul w22, w22, w26
bne .L3496
ldrb w1, [x2, 1320]
cmp w1, 2
orr w22, w22, w1, lsl 24
beq .L3488
and w26, w1, 65535
.L3487:
add x20, x20, :lo12:.LANCHOR3
orr w22, w0, w22
mov w0, 1
bl buf_alloc
str w22, [x0, 40]
mov x27, x0
mov w1, 1
bl sblk_read_page
ldrb w0, [x20, 1321]
mov w1, 255
ldrh w2, [x20, 1338]
mul w2, w2, w0
ldr x0, [x20, 1312]
lsl w2, w2, 2
bl ftl_memset
ldr w0, [x27, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
bne .L3489
.L3514:
mov w2, 0
mov w1, 1
mov w0, w21
bl gc_add_sblk
mov x0, x27
bl zbuf_free
b .L3476
.L3488:
ldrh w0, [x2, 1338]
mov w26, w1
sub w0, w0, #1
and w0, w0, 65535
b .L3487
.L3496:
mov w26, 1
b .L3487
.L3489:
ldr x0, [x27, 24]
ldr w1, [x0]
mov w0, 15555
movk w0, 0xf55f, lsl 16
cmp w1, w0
bne .L3514
ldrh w0, [x20, 1376]
mov x28, 0
ldrb w1, [x20, 1321]
mov w22, 0
mul w1, w1, w0
mul w1, w26, w1
ldr x26, [x27, 8]
and w0, w1, 65535
str w0, [x29, 108]
and w0, w25, 65535
str w0, [x29, 104]
add x0, x19, :lo12:.LANCHOR0
str x0, [x29, 96]
.L3491:
ldr w0, [x29, 108]
cmp w0, w28
bgt .L3494
mov x0, x27
bl zbuf_free
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3495
add x0, x19, :lo12:.LANCHOR0
ldrb w4, [x24, 2]
mov w3, w22
and w1, w25, 65535
ldr x0, [x0, 1120]
ubfx x4, x4, 5, 3
ldrh w2, [x0, x23, lsl 1]
adrp x0, .LC255
add x0, x0, :lo12:.LC255
bl printk
.L3495:
add x19, x19, :lo12:.LANCHOR0
cmp w22, 31
ldr x0, [x19, 1120]
strh w22, [x0, x23, lsl 1]
bhi .L3476
mov w2, 0
mov w1, 1
mov w0, w21
bl gc_add_sblk
b .L3476
.L3494:
ldr w0, [x26, x28, lsl 2]
cmn w0, #1
beq .L3492
bl lpa_hash_get_ppa
str w0, [x29, 124]
cmn w0, #1
bne .L3493
ldr w0, [x26, x28, lsl 2]
mov w2, 0
add x1, x29, 124
bl pm_log2phys
.L3493:
ldr x0, [x29, 96]
mov w1, 24
ldrh w2, [x20, 1304]
ldrb w0, [x0, 1205]
sub w0, w1, w0
sub w1, w0, w2
mov w0, 1
lsl w0, w0, w1
ldr w1, [x29, 124]
sub w0, w0, #1
lsr w1, w1, w2
and w0, w0, w1
ldrb w1, [x20, 1306]
udiv w0, w0, w1
ldr w1, [x29, 104]
cmp w1, w0
bne .L3492
add w22, w22, 1
and w22, w22, 65535
.L3492:
add x28, x28, 1
b .L3491
.size gc_block_vpn_scan, .-gc_block_vpn_scan
.align 2
.global ftl_sblk_dump
.type ftl_sblk_dump, %function
ftl_sblk_dump:
sub sp, sp, #288
and x0, x0, 65535
stp x29, x30, [sp, 48]
add x29, sp, 48
stp x19, x20, [sp, 64]
mov x20, x0
stp x21, x22, [sp, 80]
adrp x21, .LANCHOR0
add x19, x21, :lo12:.LANCHOR0
stp x23, x24, [sp, 96]
stp x25, x26, [sp, 112]
lsl x23, x0, 2
stp x27, x28, [sp, 128]
str x0, [x29, 136]
ldr x0, [x19, 1104]
str x1, [x29, 152]
add x1, x0, x23
ldr w5, [x0, x23]
ldrb w2, [x1, 2]
mov w1, w20
ldrh w4, [x0, x23]
adrp x0, .LC256
ubfx x5, x5, 11, 8
add x0, x0, :lo12:.LC256
ubfx x3, x2, 3, 2
and w4, w4, 2047
ubfx x2, x2, 5, 3
bl printk
str x21, [x29, 160]
mov w0, 65535
cmp w20, w0
beq .L3537
ldrh w1, [x19, 1096]
mov w0, 0
cmp w1, w20
bls .L3515
ldr x0, [x19, 1104]
adrp x28, .LANCHOR3
add x0, x0, x23
ldrb w0, [x0, 2]
and w0, w0, 224
cmp w0, 160
bne .L3539
add x0, x28, :lo12:.LANCHOR3
ldrb w24, [x0, 1320]
.L3517:
add x27, x29, 240
mov w0, w20
mov w19, 0
strh w20, [x27, -32]!
add x1, x27, 16
bl ftl_get_blk_list_in_sblk
add x2, x28, :lo12:.LANCHOR3
and w1, w0, 255
strb w1, [x29, 217]
and w4, w0, 255
strh wzr, [x29, 210]
mov w3, w24
ldrh w2, [x2, 1376]
adrp x0, .LC257
strb wzr, [x29, 213]
add x0, x0, :lo12:.LC257
strh wzr, [x29, 218]
mul w1, w1, w2
strh w1, [x29, 214]
ldr x1, [x29, 160]
add x1, x1, :lo12:.LANCHOR0
ldr x1, [x1, 1104]
add x1, x1, x23
ldrb w2, [x1, 2]
mov w1, w20
ubfx x2, x2, 5, 3
bl printk
mov w0, 1
bl buf_alloc
stp wzr, wzr, [x29, 168]
mov x25, x0
str wzr, [x29, 176]
adrp x0, .LC195
add x0, x0, :lo12:.LC195
str x0, [x29, 120]
.L3518:
add x0, x28, :lo12:.LANCHOR3
ldrh w0, [x0, 1376]
cmp w0, w19
bls .L3535
lsl w0, w19, 1
mov w22, 0
sub w1, w0, #1
add w0, w0, w19
sub w0, w0, #1
stp w1, w0, [x29, 144]
b .L3536
.L3539:
mov w24, 1
b .L3517
.L3532:
ldr x0, [x29, 128]
ldrh w10, [x27, x0]
mov w0, 65535
cmp w10, w0
beq .L3519
add x2, x28, :lo12:.LANCHOR3
cmp w24, 3
ldrh w8, [x2, 1410]
mul w1, w8, w10
add w0, w21, w1
bne .L3520
ldr x3, [x29, 160]
add x3, x3, :lo12:.LANCHOR0
ldrb w4, [x3, 1212]
cbz w4, .L3521
ldrb w8, [x2, 1320]
ldr w1, [x29, 148]
.L3548:
add w0, w0, w1
orr w26, w0, w8, lsl 24
b .L3522
.L3521:
ldrb w2, [x3, 1213]
lsl w8, w21, 24
cbz w2, .L3523
ldr w1, [x29, 148]
add w0, w0, w1
orr w26, w0, w8
.L3522:
str w26, [x25, 40]
mov w1, 1
str w10, [x29, 108]
mov x0, x25
bl sblk_read_page
ldr x1, [x25, 24]
mov w3, w26
ldr x0, [x25, 8]
ldr w11, [x25, 52]
ldr w10, [x29, 108]
ldr w2, [x1, 12]
mov w4, w11
str w2, [sp, 32]
str w11, [x29, 112]
ldr w2, [x1, 8]
str w2, [sp, 24]
ldr w2, [x1, 4]
str w2, [sp, 16]
mov w2, w19
ldr w1, [x1]
str w1, [sp, 8]
ldr w1, [x0, 12]
str w1, [sp]
mov w1, w10
ldp w5, w6, [x0]
ldr w7, [x0, 8]
ldr x0, [x29, 120]
bl printk
ldr w11, [x29, 112]
ldr w0, [x29, 168]
cmp w11, 512
ccmn w11, #1, 4, ne
csinc w0, w0, wzr, ne
str w0, [x29, 168]
mov x0, 35160
movk x0, 0x41, lsl 16
bl __const_udelay
ldr x0, [x29, 160]
mov w1, 32
add x0, x0, :lo12:.LANCHOR0
ldr x0, [x0, 1104]
add x0, x0, x23
ldrb w0, [x0, 2]
and w0, w0, 224
cmp w0, 224
ccmp w0, w1, 4, ne
beq .L3519
ldr x0, [x25, 24]
ldr w0, [x0, 4]
bl lpa_hash_get_ppa
str w0, [x29, 204]
cmn w0, #1
bne .L3526
ldr x0, [x25, 24]
mov w2, 0
add x1, x29, 204
ldr w0, [x0, 4]
bl pm_log2phys
.L3526:
ldr w0, [x29, 204]
cmp w26, w0
bne .L3527
ldr w0, [x29, 172]
mov w1, w26
add w0, w0, 1
str w0, [x29, 172]
ldr x0, [x25, 24]
ldr w3, [x29, 172]
ldr w2, [x0, 4]
adrp x0, .LC258
add x0, x0, :lo12:.LC258
bl printk
.L3527:
ldr x0, [x29, 152]
cbz x0, .L3529
ldr x0, [x29, 176]
ubfiz x3, x0, 2, 32
ldr x0, [x29, 152]
ldr w2, [x0, x3]
ldr x0, [x25, 24]
ldr w0, [x0, 4]
cmp w0, w2
beq .L3530
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L3530
ldr w1, [x29, 176]
adrp x0, .LC259
str x3, [x29, 112]
add x0, x0, :lo12:.LC259
bl printk
ldr x3, [x29, 112]
.L3530:
ldr x1, [x25, 24]
ldr x0, [x29, 152]
ldr w1, [x1, 4]
ldr w0, [x0, x3]
cmp w1, w0
beq .L3529
cmn w0, #1
beq .L3529
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 944
mov w2, 1575
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3529:
ldr w0, [x29, 176]
add w0, w0, 1
str w0, [x29, 176]
.L3519:
add w21, w21, 1
and w21, w21, 65535
.L3534:
cmp w24, w21
bcs .L3532
add w22, w22, 1
and w22, w22, 65535
.L3536:
ldrb w0, [x29, 217]
cmp w0, w22
bls .L3533
sxtw x0, w22
mov w21, 1
add x0, x0, 8
lsl x0, x0, 1
str x0, [x29, 128]
b .L3534
.L3523:
add w1, w19, w1
orr w26, w8, w1
b .L3522
.L3520:
cmp w24, 2
bne .L3524
ldrb w8, [x2, 1320]
ldr w1, [x29, 144]
b .L3548
.L3524:
add w26, w19, w1
b .L3522
.L3533:
add w19, w19, 1
and w19, w19, 65535
b .L3518
.L3535:
mov x0, x25
bl zbuf_free
ldr x0, [x29, 160]
ldr x1, [x29, 136]
add x0, x0, :lo12:.LANCHOR0
ldr w3, [x29, 172]
ldr x0, [x0, 1120]
ldrh w2, [x0, x1, lsl 1]
mov w1, w20
adrp x0, .LC260
add x0, x0, :lo12:.LC260
bl printk
ldr w0, [x29, 168]
.L3515:
ldp x19, x20, [sp, 64]
ldp x21, x22, [sp, 80]
ldp x23, x24, [sp, 96]
ldp x25, x26, [sp, 112]
ldp x27, x28, [sp, 128]
ldp x29, x30, [sp, 48]
add sp, sp, 288
ret
.L3537:
mov w0, 0
b .L3515
.size ftl_sblk_dump, .-ftl_sblk_dump
.align 2
.global zftl_read
.type zftl_read, %function
zftl_read:
sub sp, sp, #176
stp x29, x30, [sp, 16]
add x29, sp, 16
stp x19, x20, [sp, 32]
mov w20, w0
adrp x0, .LANCHOR2
stp x23, x24, [sp, 64]
stp x21, x22, [sp, 48]
mov w19, w1
ldr w0, [x0, #:lo12:.LANCHOR2]
mov w24, w2
stp x25, x26, [sp, 80]
mov x23, x3
stp x27, x28, [sp, 96]
tbz x0, 12, .L3550
mov w3, w2
adrp x0, .LC261
mov w2, w1
add x0, x0, :lo12:.LC261
mov w1, w20
bl printk
.L3550:
cbnz w20, .L3551
adrp x0, .LANCHOR0+1032
mov w20, 24576
ldr w0, [x0, #:lo12:.LANCHOR0+1032]
.L3552:
cmp w0, w19
ccmp w0, w24, 0, hi
bcc .L3585
add w1, w19, w24
cmp w0, w1
bcc .L3585
add w20, w20, w19
adrp x19, .LANCHOR0
add x0, x19, :lo12:.LANCHOR0
adrp x21, .LANCHOR3
ldr x1, [x0, 3384]
ldr w0, [x1, 24]
add w0, w0, w24
str w0, [x1, 24]
add x0, x21, :lo12:.LANCHOR3
add w1, w24, w20
stp w1, wzr, [x29, 136]
sub w1, w1, #1
ldrb w0, [x0, 1946]
udiv w26, w20, w0
udiv w0, w1, w0
mov w22, w26
sub w25, w0, w26
str w0, [x29, 132]
add w25, w25, 1
adrp x0, .LANCHOR4
add x0, x0, :lo12:.LANCHOR4
add x0, x0, 960
str x0, [x29, 112]
.L3554:
cbnz w25, .L3582
bl timer_get_time
adrp x1, .LANCHOR5+468
str w0, [x1, #:lo12:.LANCHOR5+468]
ldr w0, [x29, 140]
.L3549:
ldp x19, x20, [sp, 32]
ldp x21, x22, [sp, 48]
ldp x23, x24, [sp, 64]
ldp x25, x26, [sp, 80]
ldp x27, x28, [sp, 96]
ldp x29, x30, [sp, 16]
add sp, sp, 176
ret
.L3551:
cmp w20, 3
bhi .L3585
lsl w20, w20, 13
mov w0, 8192
b .L3552
.L3582:
add x0, x21, :lo12:.LANCHOR3
cmp w22, w26
ldrb w1, [x0, 1946]
ldr w0, [x29, 132]
and w27, w1, 65535
ccmp w22, w0, 4, ne
bne .L3586
cmp w22, w26
bne .L3556
udiv w3, w20, w1
and w0, w24, 65535
msub w1, w3, w1, w20
and w28, w1, 65535
sub w27, w27, w28
and w27, w27, 65535
cmp w24, w27
csel w27, w0, w27, cc
.L3555:
add x1, x19, :lo12:.LANCHOR0
mov w0, 0
add x1, x1, 1306
.L3559:
ldr w2, [x1, 34]
cmp w22, w2
bne .L3557
ldrb w2, [x1]
tbz x2, 3, .L3557
add x1, x19, :lo12:.LANCHOR0
ubfiz x0, x0, 6, 32
add x0, x1, x0
lsl w2, w27, 9
ubfiz x27, x27, 9, 16
ubfiz x28, x28, 9, 16
ldr x1, [x0, 1312]
mov x0, x23
add x23, x23, x27
add x1, x1, x28
bl ftl_memcpy
.L3558:
add w22, w22, 1
sub w25, w25, #1
.L3565:
add x0, x19, :lo12:.LANCHOR0
ldrb w0, [x0, 3353]
cmp w0, 2
bls .L3566
cbnz w25, .L3554
.L3566:
add x2, x21, :lo12:.LANCHOR3
ldrb w1, [x2, 1957]
cbz w1, .L3554
ldrb w2, [x2, 1956]
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x2, lsl 6
bl sblk_read_page
adrp x0, .LC0
add x0, x0, :lo12:.LC0
str x0, [x29, 120]
.L3568:
add x0, x21, :lo12:.LANCHOR3
ldrb w1, [x0, 1957]
cbnz w1, .L3581
mov w1, -1
strb wzr, [x0, 1957]
strb w1, [x0, 1956]
b .L3554
.L3556:
ldr w0, [x29, 136]
msub w27, w1, w22, w0
and w27, w27, 255
.L3586:
mov w28, 0
b .L3555
.L3557:
add w0, w0, 1
add x1, x1, 64
cmp w0, 32
bne .L3559
mov w0, w22
bl lpa_hash_get_ppa
str w0, [x29, 156]
cmn w0, #1
bne .L3560
mov w2, 0
add x1, x29, 156
mov w0, w22
bl pm_log2phys
.L3560:
ldr w0, [x29, 156]
cmn w0, #1
bne .L3561
add x28, x21, :lo12:.LANCHOR3
mov w27, 0
.L3562:
ldrb w0, [x28, 1946]
cmp w27, w0
bcs .L3558
madd w0, w22, w0, w27
cmp w20, w0
bhi .L3563
ldr w1, [x29, 136]
cmp w1, w0
bls .L3563
mov x0, x23
add x23, x23, 512
mov w2, 512
mov w1, 0
bl ftl_memset
.L3563:
add w27, w27, 1
b .L3562
.L3561:
mov w0, 0
bl buf_alloc
cbz x0, .L3565
add x2, x19, :lo12:.LANCHOR0
ldr x4, [x2, 3384]
ldr w2, [x4, 40]
add w2, w2, 1
str w2, [x4, 40]
ldr w2, [x29, 156]
strb w27, [x0, 56]
ubfiz x27, x27, 9, 16
str x23, [x0, 16]
add x23, x23, x27
strb w28, [x0, 57]
stp w22, w2, [x0, 36]
str w2, [x0, 44]
bl zftl_add_read_buf
b .L3558
.L3581:
ldrb w0, [x0, 1956]
cmp w0, 255
bne .L3569
ldp x1, x0, [x29, 112]
mov w2, 1284
bl printk
bl dump_stack
.L3569:
add x0, x21, :lo12:.LANCHOR3
add x4, x19, :lo12:.LANCHOR0
add x1, x4, 1304
ldrb w8, [x0, 1956]
ubfiz x27, x8, 6, 8
add x28, x1, x27
sxtw x27, w8
lsl x3, x27, 6
add x2, x1, x3
ldrb w1, [x1, x3]
ldr w9, [x2, 52]
strb w1, [x0, 1956]
cmn w9, #1
bne .L3570
ldr x1, [x4, 1128]
str w9, [x29, 140]
ldr w0, [x1, 552]
add w0, w0, 1
str w0, [x1, 552]
.L3571:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x27, lsl 6
ldr x3, [x0, 24]
ldr w0, [x0, 36]
ldr w1, [x3, 4]
cmp w1, w0
bne .L3572
cmn w9, #1
bne .L3573
.L3572:
add x0, x21, :lo12:.LANCHOR3
add x5, x19, :lo12:.LANCHOR0
ldrb w4, [x0, 1946]
add x0, x5, 1304
add x0, x0, x27, lsl 6
ldrb w6, [x5, 1205]
mov w5, 1
ldrb w1, [x0, 56]
lsl w5, w5, w6
ldp x2, x7, [x0, 8]
cmp w1, w4
sub w5, w5, #1
ldr w1, [x0, 40]
mov w0, 24
sub w0, w0, w6
csel x2, x7, x2, cs
lsl w6, w5, w0
lsr w0, w1, w0
bic w1, w1, w6
and w0, w0, w5
bl flash_read_page_en
mov w9, w0
.L3573:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x27, lsl 6
ldr x1, [x0, 24]
ldr w0, [x0, 36]
ldr w1, [x1, 4]
cmp w1, w0
bne .L3575
cmn w9, #1
bne .L3576
.L3575:
add x11, x19, :lo12:.LANCHOR0
str w9, [x29, 128]
add x10, x11, 1304
add x10, x10, x27, lsl 6
stp x11, x10, [x29, 96]
ldr x1, [x11, 1128]
ldr w0, [x1, 552]
add w0, w0, 1
str w0, [x1, 552]
ldr x0, [x10, 24]
ldrb w1, [x10, 1]
ldr w2, [x0, 12]
str w2, [sp]
mov w2, w9
ldp w3, w4, [x10, 36]
ldp w5, w6, [x0]
ldr w7, [x0, 8]
adrp x0, .LC263
add x0, x0, :lo12:.LC263
bl printk
ldp x11, x10, [x29, 96]
add x2, x21, :lo12:.LANCHOR3
mov w0, 24
ldrb w1, [x11, 1205]
ldrh w3, [x2, 1304]
sub w0, w0, w1
ldrb w2, [x2, 1306]
sub w1, w0, w3
mov w0, 1
lsl w0, w0, w1
ldr w1, [x10, 40]
sub w0, w0, #1
lsr w1, w1, w3
and w0, w0, w1
mov x1, 0
udiv w0, w0, w2
bl ftl_sblk_dump
ldr w9, [x29, 128]
.L3576:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x0, x0, x27, lsl 6
ldr x1, [x0, 24]
ldr w0, [x0, 36]
ldr w1, [x1, 4]
cmp w1, w0
bne .L3577
cmn w9, #1
bne .L3578
.L3577:
ldp x1, x0, [x29, 112]
mov w2, 1320
bl printk
bl dump_stack
.L3578:
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 1304
add x8, x0, x27, lsl 6
add x0, x21, :lo12:.LANCHOR3
ldrb w2, [x8, 56]
ldrb w0, [x0, 1946]
cmp w0, w2
bls .L3579
ldr x0, [x8, 8]
lsl w2, w2, 9
ldrb w1, [x8, 57]
add x1, x0, x1, lsl 9
ldr x0, [x8, 16]
bl ftl_memcpy
.L3580:
mov x1, x28
add x0, x19, :lo12:.LANCHOR0
add x0, x0, 3355
bl buf_remove_buf
mov x0, x28
bl zbuf_free
add x1, x21, :lo12:.LANCHOR3
ldrb w0, [x1, 1957]
sub w0, w0, #1
strb w0, [x1, 1957]
b .L3568
.L3570:
cmp w9, 256
bne .L3571
ldrb w5, [x4, 1205]
mov w4, 24
ldrh w1, [x0, 1304]
sub w4, w4, w5
ldr w3, [x2, 40]
sub w4, w4, w1
mov w5, 1
ldrb w0, [x0, 1306]
lsl w4, w5, w4
sub w4, w4, #1
lsr w1, w3, w1
and w4, w4, w1
ldr w2, [x2, 36]
str w9, [x29, 96]
udiv w4, w4, w0
str w5, [x29, 104]
adrp x0, .LC262
add x0, x0, :lo12:.LC262
and w1, w4, 65535
str w4, [x29, 128]
bl printk
ldr w5, [x29, 104]
mov w2, 0
ldr w4, [x29, 128]
mov w1, w5
mov w0, w4
bl gc_add_sblk
ldr w9, [x29, 96]
b .L3571
.L3579:
ldrb w0, [x8, 2]
and w0, w0, -9
strb w0, [x8, 2]
b .L3580
.L3585:
mov w0, -1
b .L3549
.size zftl_read, .-zftl_read
.align 2
.global zftl_vendor_read
.type zftl_vendor_read, %function
zftl_vendor_read:
stp x29, x30, [sp, -16]!
mov x3, x2
mov w2, w1
add w1, w0, 512
add x29, sp, 0
mov w0, 2
bl zftl_read
ldp x29, x30, [sp], 16
ret
.size zftl_vendor_read, .-zftl_vendor_read
.align 2
.global zftl_sys_read
.type zftl_sys_read, %function
zftl_sys_read:
stp x29, x30, [sp, -16]!
mov x3, x2
mov w2, w1
mov w1, w0
add x29, sp, 0
mov w0, 2
bl zftl_read
ldp x29, x30, [sp], 16
ret
.size zftl_sys_read, .-zftl_sys_read
.align 2
.type zftl_debug_proc_write, %function
zftl_debug_proc_write:
sub sp, sp, #224
cmp x2, 79
stp x29, x30, [sp, 32]
add x29, sp, 32
stp x19, x20, [sp, 48]
add x19, x29, 112
stp x21, x22, [sp, 64]
stp x23, x24, [sp, 80]
stp x25, x26, [sp, 96]
stp x27, x28, [sp, 112]
str x19, [x29, 104]
bhi .L3623
mov x21, x2
mov x0, x19
bl rk_copy_from_user
mov x1, -14
cbnz x0, .L3605
mov x1, x19
strb wzr, [x19, x21]
adrp x0, .LC264
add x0, x0, :lo12:.LC264
bl printk
mov x1, x19
adrp x0, .LC265
add x0, x0, :lo12:.LC265
mov w3, 16
mov w2, 1
bl rknand_print_hex
bl rknand_device_lock
mov x2, 7
adrp x1, .LC266
mov x0, x19
add x1, x1, :lo12:.LC266
bl memcmp
mov w22, w0
cbnz w0, .L3607
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
adrp x20, .LANCHOR5
add x20, x20, :lo12:.LANCHOR5
mov w2, 4
adrp x0, .LC267
ldr x1, [x19, 3384]
add x0, x0, :lo12:.LC267
mov w23, 65535
add x1, x1, 704
ldrh w3, [x1, -6]
bl rknand_print_hex
ldrh w3, [x20, 220]
adrp x0, .LC268
ldr x1, [x19, 3384]
mov w2, 2
add x0, x0, :lo12:.LC268
add x1, x1, 416
bl rknand_print_hex
.L3608:
ldrh w0, [x20, 220]
cmp w22, w0
blt .L3610
.L3611:
bl rknand_device_unlock
mov x1, x21
.L3605:
ldp x19, x20, [sp, 48]
mov x0, x1
ldp x21, x22, [sp, 64]
ldp x23, x24, [sp, 80]
ldp x25, x26, [sp, 96]
ldp x27, x28, [sp, 112]
ldp x29, x30, [sp, 32]
add sp, sp, 224
ret
.L3610:
mov w0, 300
bl msleep
ldr x0, [x19, 3384]
add x0, x0, w22, sxtw 1
ldrh w0, [x0, 416]
cmp w0, w23
beq .L3609
mov x1, 0
bl ftl_sblk_dump
.L3609:
add w22, w22, 1
b .L3608
.L3607:
adrp x1, .LC269
mov x2, 7
add x1, x1, :lo12:.LC269
mov x0, x19
bl memcmp
cbnz w0, .L3612
adrp x22, .LANCHOR0
add x20, x22, :lo12:.LANCHOR0
mov w2, 4
adrp x0, .LC267
add x0, x0, :lo12:.LC267
adrp x25, .LC271
ldr x1, [x20, 3384]
adrp x24, .LC272
add x25, x25, :lo12:.LC271
add x24, x24, :lo12:.LC272
add x1, x1, 704
ldrh w3, [x1, -6]
bl rknand_print_hex
adrp x0, .LANCHOR5+220
ldr x1, [x20, 3384]
mov w2, 2
add x20, x29, 192
ldrh w3, [x0, #:lo12:.LANCHOR5+220]
add x1, x1, 416
adrp x0, .LC268
add x0, x0, :lo12:.LC268
bl rknand_print_hex
mov w0, 50
bl msleep
add x1, x19, 7
adrp x0, .LC270
str x1, [x20, -88]!
add x0, x0, :lo12:.LC270
bl printk
ldr x0, [x29, 104]
mov x1, x20
adrp x20, .LANCHOR3
bl rk_simple_strtoull.constprop.33
mov w23, w0
add x1, x20, :lo12:.LANCHOR3
and w27, w0, 65535
add x19, x1, 1960
add x26, x1, 2472
mov x28, x1
str w0, [x29, 100]
.L3614:
ldrh w2, [x19, 2]
mov x0, x25
ldrh w1, [x19]
bl printk
ldrh w0, [x19]
cmp w0, w27
bne .L3613
ldrb w3, [x28, 1946]
mov w2, 4
ldr x1, [x19, 8]
mov x0, x24
lsl w3, w3, 7
bl rknand_print_hex
mov w0, 50
bl msleep
.L3613:
add x19, x19, 16
cmp x19, x26
bne .L3614
add x22, x22, :lo12:.LANCHOR0
mov w0, 300
bl msleep
add x20, x20, :lo12:.LANCHOR3
mov w0, 1
bl buf_alloc
ldr x1, [x22, 3384]
mov x19, x0
add x1, x1, w23, uxth 2
ldr w1, [x1, 704]
str w1, [x0, 40]
str w1, [x29, 100]
mov w1, 1
bl sblk_read_page
ldr x1, [x19, 24]
ldr x0, [x19, 8]
ldr w2, [x1, 12]
str w2, [sp, 16]
ldr w2, [x1, 8]
str w2, [sp, 8]
ldr w2, [x1, 4]
str w2, [sp]
ldp w3, w4, [x0]
ldp w5, w6, [x0, 8]
adrp x0, .LC245
ldr w7, [x1]
add x0, x0, :lo12:.LC245
ldr w2, [x19, 52]
ldr w1, [x29, 100]
bl printk
ldrb w3, [x20, 1946]
adrp x0, .LC273
ldr x1, [x19, 8]
add x0, x0, :lo12:.LC273
mov w2, 4
lsl w3, w3, 7
.L3630:
bl rknand_print_hex
mov x0, x19
bl zbuf_free
b .L3611
.L3612:
adrp x1, .LC274
mov x2, 7
add x1, x1, :lo12:.LC274
mov x0, x19
bl memcmp
cbnz w0, .L3615
bl dump_ftl_info
b .L3611
.L3615:
adrp x1, .LC275
mov x2, 9
add x1, x1, :lo12:.LC275
mov x0, x19
bl memcmp
cbnz w0, .L3616
add x1, x29, 192
add x0, x19, 9
str x0, [x1, -88]!
bl rk_simple_strtoull.constprop.33
str w0, [x29, 100]
adrp x1, .LANCHOR3+1408
strh w0, [x1, #:lo12:.LANCHOR3+1408]
bl dump_all_list_info
b .L3611
.L3616:
adrp x1, .LC276
mov x2, 8
add x1, x1, :lo12:.LC276
mov x0, x19
bl memcmp
cbz w0, .L3611
adrp x1, .LC277
mov x2, 8
add x1, x1, :lo12:.LC277
mov x0, x19
bl memcmp
cbnz w0, .L3618
add x20, x29, 192
add x1, x19, 8
adrp x0, .LC270
add x0, x0, :lo12:.LC270
str x1, [x20, -88]!
bl printk
ldr x0, [x29, 104]
mov x1, x20
adrp x20, .LANCHOR3
add x20, x20, :lo12:.LANCHOR3
bl rk_simple_strtoull.constprop.33
str w0, [x29, 100]
mov w0, 1
bl buf_alloc
ldr w1, [x29, 100]
mov x19, x0
str w1, [x0, 40]
mov w1, 1
bl sblk_read_page
ldr x1, [x19, 24]
ldr x0, [x19, 8]
ldr w2, [x1, 12]
str w2, [sp, 16]
ldr w2, [x1, 8]
str w2, [sp, 8]
ldr w2, [x1, 4]
str w2, [sp]
ldp w3, w4, [x0]
ldp w5, w6, [x0, 8]
adrp x0, .LC245
ldr w7, [x1]
add x0, x0, :lo12:.LC245
ldr w2, [x19, 52]
ldr w1, [x29, 100]
bl printk
ldr x1, [x19, 8]
mov w2, 4
ldrb w3, [x20, 1946]
adrp x0, .LC218
add x0, x0, :lo12:.LC218
lsl w3, w3, 7
bl rknand_print_hex
ldrb w3, [x20, 1946]
adrp x0, .LC240
mov w2, 4
add x0, x0, :lo12:.LC240
ldr x1, [x19, 24]
lsl w3, w3, 1
b .L3630
.L3618:
adrp x1, .LC278
mov x2, 8
add x1, x1, :lo12:.LC278
mov x0, x19
bl memcmp
cbnz w0, .L3619
add x20, x29, 192
add x1, x19, 8
adrp x0, .LC270
add x0, x0, :lo12:.LC270
str x1, [x20, -88]!
bl printk
ldr x0, [x29, 104]
mov x1, x20
bl rk_simple_strtoull.constprop.33
str w0, [x29, 100]
mov x1, 0
bl ftl_sblk_dump
b .L3611
.L3619:
adrp x1, .LC279
mov x2, 10
add x1, x1, :lo12:.LC279
mov x0, x19
bl memcmp
cbnz w0, .L3620
add x20, x29, 192
add x1, x19, 10
adrp x0, .LC270
add x0, x0, :lo12:.LC270
str x1, [x20, -88]!
bl printk
ldr x0, [x29, 104]
mov x1, x20
bl rk_simple_strtoull.constprop.33
str w0, [x29, 100]
adrp x1, .LANCHOR2
str w0, [x1, #:lo12:.LANCHOR2]
b .L3611
.L3620:
adrp x1, .LC280
mov x2, 8
add x1, x1, :lo12:.LC280
mov x0, x19
bl memcmp
cbnz w0, .L3621
add x1, x19, 8
add x19, x29, 192
adrp x0, .LC270
add x0, x0, :lo12:.LC270
str x1, [x19, -88]!
bl printk
ldr x0, [x29, 104]
mov x1, x19
bl rk_simple_strtoull.constprop.33
mov w19, w0
bl lpa_hash_get_ppa
str w0, [x29, 100]
cmn w0, #1
bne .L3622
mov w2, 0
add x1, x29, 100
mov w0, w19
bl pm_log2phys
.L3622:
ldr w2, [x29, 100]
mov w1, w19
adrp x0, .LC281
add x0, x0, :lo12:.LC281
bl printk
b .L3611
.L3621:
adrp x0, .LC282
add x0, x0, :lo12:.LC282
bl printk
adrp x0, .LC283
add x0, x0, :lo12:.LC283
bl printk
adrp x0, .LC284
add x0, x0, :lo12:.LC284
bl printk
adrp x0, .LC285
add x0, x0, :lo12:.LC285
bl printk
adrp x0, .LC286
add x0, x0, :lo12:.LC286
bl printk
adrp x0, .LC287
add x0, x0, :lo12:.LC287
bl printk
adrp x0, .LC288
add x0, x0, :lo12:.LC288
bl printk
adrp x0, .LC289
add x0, x0, :lo12:.LC289
bl printk
adrp x0, .LC290
add x0, x0, :lo12:.LC290
bl printk
b .L3611
.L3623:
mov x1, -22
b .L3605
.size zftl_debug_proc_write, .-zftl_debug_proc_write
.align 2
.global ftl_update_l2p_map
.type ftl_update_l2p_map, %function
ftl_update_l2p_map:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x21, x22, [sp, 32]
mov x22, x0
stp x25, x26, [sp, 64]
adrp x26, .LANCHOR3
add x0, x26, :lo12:.LANCHOR3
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
stp x27, x28, [sp, 80]
ldrh w23, [x0, 1376]
ldrb w1, [x22, 9]
ldr x0, [x0, 1928]
ldrh w19, [x22, 12]
mul w23, w23, w1
add x19, x0, x19, lsl 2
add x0, x19, w23, sxtw 2
ldr w0, [x0, -4]
cmn w0, #1
beq .L3632
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 976
mov w2, 1998
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3632:
adrp x27, .LC292
mov w21, 0
add x0, x27, :lo12:.LC292
mov w25, 0
str x0, [x29, 104]
.L3633:
cmp w25, w23
bne .L3639
adrp x0, .LANCHOR2
adrp x19, .LANCHOR0
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L3640
add x0, x19, :lo12:.LANCHOR0
ldrh w1, [x22]
ldr x0, [x0, 1120]
ubfiz x2, x1, 1, 16
ldrh w3, [x0, x2]
adrp x0, .LC294
mov w2, w21
add x0, x0, :lo12:.LC294
bl printk
.L3640:
add x19, x19, :lo12:.LANCHOR0
ldrh w1, [x22]
ldr x0, [x19, 1120]
strh w21, [x0, x1, lsl 1]
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.L3639:
ldr w2, [x19]
cmn w2, #1
beq .L3634
add x0, x26, :lo12:.LANCHOR3
ldrb w20, [x0, 1946]
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
lsl w20, w20, 7
udiv w20, w2, w20
and w20, w20, 65535
tbz x0, 12, .L3635
adrp x0, .LC291
mov w3, w25
mov w1, w20
add x0, x0, :lo12:.LC291
bl printk
.L3635:
adrp x28, .LC293
mov x24, x19
mov w27, w25
add x28, x28, :lo12:.LC293
.L3638:
ldr w0, [x24]
cmn w0, #1
beq .L3636
add x5, x26, :lo12:.LANCHOR3
ldrb w1, [x5, 1946]
lsl w1, w1, 7
udiv w0, w0, w1
cmp w20, w0, uxth
bne .L3636
ldrb w0, [x22, 9]
str x5, [x29, 96]
sdiv w1, w27, w0
msub w0, w1, w0, w27
add x0, x22, w0, sxtw 1
ldrh w2, [x0, 16]
ldrh w0, [x5, 1410]
madd w2, w2, w0, w1
ldr x0, [x29, 104]
str w2, [x29, 124]
ldr w1, [x24]
bl pm_ppa_update_check
ldr x5, [x29, 96]
cbz w0, .L3637
ldr x1, [x5, 1928]
mov w3, w23
mov w2, 4
mov x0, x28
bl rknand_print_hex
.L3637:
ldr w0, [x24]
add w21, w21, 1
mov w2, 1
add x1, x29, 124
and w21, w21, 65535
bl pm_log2phys
mov w0, -1
str w0, [x24]
.L3636:
add w27, w27, 1
add x24, x24, 4
cmp w23, w27
bne .L3638
.L3634:
add w25, w25, 1
add x19, x19, 4
b .L3633
.size ftl_update_l2p_map, .-ftl_update_l2p_map
.align 2
.global ftl_alloc_new_data_sblk
.type ftl_alloc_new_data_sblk, %function
ftl_alloc_new_data_sblk:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x0
str x21, [sp, 32]
ldrh w21, [x0]
bl ftl_update_l2p_map
bl pm_flush
ldrh w0, [x20]
mov w1, 65535
cmp w0, w1
beq .L3662
bl zftl_insert_data_list
.L3662:
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
ldr x0, [x19, 1128]
add x0, x0, 16
cmp x20, x0
mov x0, x20
cset w1, ne
add w1, w1, 2
bl ftl_open_sblk_init
ldr x0, [x19, 1128]
ldr w0, [x0, 560]
cmp w0, w21
bne .L3664
mov w20, 65535
cmp w21, w20
beq .L3664
mov w1, w21
adrp x0, .LC295
add x0, x0, :lo12:.LC295
bl printk
ldr x0, [x19, 1128]
ldr w0, [x0, 564]
bl gc_mark_bad_ppa
ldr x0, [x19, 1128]
mov w1, -1
str w20, [x0, 560]
str w1, [x0, 564]
.L3664:
bl ftl_ext_info_flush
mov w0, 0
bl ftl_info_flush
bl lpa_rebuild_hash
ldr x21, [sp, 32]
mov w0, 0
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.size ftl_alloc_new_data_sblk, .-ftl_alloc_new_data_sblk
.align 2
.global ftl_write_commit
.type ftl_write_commit, %function
ftl_write_commit:
stp x29, x30, [sp, -144]!
adrp x0, .LANCHOR0
add x29, sp, 0
stp x19, x20, [sp, 16]
add x20, x0, :lo12:.LANCHOR0
stp x27, x28, [sp, 80]
add x28, x20, 1304
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
.L3668:
adrp x0, .LANCHOR0
add x0, x0, :lo12:.LANCHOR0
ldrb w1, [x0, 3381]
cbz w1, .L3670
ldrb w3, [x0, 3408]
add x2, x0, 1304
sub w1, w1, #1
strb w1, [x0, 3381]
ubfiz x4, x3, 6, 8
add x4, x2, x4
stp x3, x4, [x29, 104]
lsl x3, x3, 6
add x4, x2, x3
ldrb w2, [x2, x3]
strb w2, [x0, 3408]
ldr w1, [x4, 36]
ldr w0, [x0, 3364]
cmp w1, w0
bcc .L3672
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1000
mov w2, 607
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3672:
ldr x0, [x29, 104]
ldr w1, [x20, 3364]
add x0, x28, x0, lsl 6
ldr w23, [x0, 36]
cmp w23, w1
bcc .L3673
ldr x0, [x29, 112]
bl zbuf_free
mov w0, -1
.L3667:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 144
ret
.L3673:
ldrb w22, [x0, 57]
ldrb w21, [x0, 56]
ldr x27, [x0, 8]
ldr x24, [x0, 24]
ldrb w0, [x20, 3380]
cbz w0, .L3675
adrp x0, .LANCHOR5+360
ldrb w19, [x0, #:lo12:.LANCHOR5+360]
add x19, x28, x19, lsl 6
.L3676:
ldrb w0, [x19]
cmp w0, 255
bne .L3677
ldr w0, [x19, 36]
cmp w23, w0
bne .L3675
ldr x0, [x19, 8]
ubfiz x22, x22, 9, 8
lsl w2, w21, 9
add x1, x27, x22
add x0, x0, x22
bl ftl_memcpy
adrp x0, .LANCHOR3+1946
ldr x2, [x19, 8]
ldr x1, [x19, 24]
ldrb w0, [x0, #:lo12:.LANCHOR3+1946]
add x1, x1, 16
sub w0, w0, #2
sbfiz x0, x0, 9, 32
add x2, x2, x0
mov w0, 2
bl ftl_debug_info_fill
ldr x0, [x29, 112]
bl zbuf_free
b .L3668
.L3677:
ubfiz x19, x0, 6, 8
add x19, x28, x19
b .L3676
.L3675:
mov w0, w23
bl lpa_hash_get_ppa
str w0, [x29, 140]
cmn w0, #1
bne .L3679
mov w2, 0
add x1, x29, 140
mov w0, w23
bl pm_log2phys
.L3679:
ldr x19, [x20, 1128]
add x0, x20, 1306
ldr w2, [x29, 140]
add x4, x20, 3354
add x19, x19, 16
mov w3, 0
mov x26, 0
.L3681:
ldr w1, [x0, 34]
cmp w23, w1
bne .L3680
ldrb w1, [x0]
tbz x1, 3, .L3680
ldr w2, [x0, 38]
and w1, w1, -9
ldr x26, [x0, 6]
mov w3, 1
strb w1, [x0]
.L3680:
add x0, x0, 64
cmp x0, x4
bne .L3681
cbz w3, .L3682
str w2, [x29, 140]
.L3682:
adrp x25, .LANCHOR3
add x0, x25, :lo12:.LANCHOR3
str x25, [x29, 120]
ldrb w0, [x0, 1946]
cmp w21, w0
bcs .L3708
add w21, w22, w21
cbz x26, .L3684
cbz w22, .L3685
lsl w2, w22, 9
mov x1, x26
mov x0, x27
bl ftl_memcpy
ldr x19, [x20, 1128]
add x19, x19, 48
.L3685:
ldr x0, [x29, 120]
add x0, x0, :lo12:.LANCHOR3
ldrb w2, [x0, 1946]
cmp w21, w2
bcc .L3686
ldr x19, [x20, 1128]
add x19, x19, 16
.L3708:
mov w26, 0
b .L3683
.L3686:
ubfiz x0, x21, 9, 9
sub w2, w2, w21
add x1, x26, x0
lsl w2, w2, 9
add x0, x27, x0
bl ftl_memcpy
b .L3708
.L3684:
ldr w0, [x29, 140]
cmn w0, #1
beq .L3687
mov w0, 1
bl buf_alloc
ldr w1, [x29, 140]
mov x25, x0
stp w23, w1, [x0, 36]
mov w1, 1
bl sblk_read_page
ldr x3, [x25, 24]
ldr w0, [x3, 4]
ldr w26, [x3, 12]
cmp w23, w0
add w26, w26, 1
bne .L3688
ldr w0, [x25, 52]
cmn w0, #1
bne .L3689
.L3688:
ldrb w2, [x20, 1205]
mov w6, 1
mov w0, 24
ldr w1, [x25, 40]
sub w0, w0, w2
lsl w6, w6, w2
ldr x2, [x29, 120]
sub w6, w6, #1
add x2, x2, :lo12:.LANCHOR3
lsl w7, w6, w0
lsr w0, w1, w0
bic w1, w1, w7
ldrb w4, [x2, 1946]
and w0, w0, w6
ldr x2, [x25, 8]
bl flash_read_page_en
str w0, [x25, 52]
.L3689:
ldr x0, [x25, 24]
ldr w0, [x0, 4]
cmp w23, w0
bne .L3690
ldr w0, [x25, 52]
cmn w0, #1
bne .L3691
.L3690:
ldr x1, [x20, 1128]
mov w3, w23
ldr w2, [x29, 140]
ldr w0, [x1, 552]
add w0, w0, 1
str w0, [x1, 552]
adrp x0, .LC296
add x0, x0, :lo12:.LC296
ldrb w1, [x25, 1]
ldr w4, [x25, 52]
bl printk
ldr x1, [x25, 24]
mov w3, 4
adrp x0, .LC240
mov w2, w3
add x0, x0, :lo12:.LC240
bl rknand_print_hex
.L3691:
ldr x0, [x25, 24]
ldr w0, [x0, 4]
cmp w23, w0
bne .L3692
ldr w0, [x25, 52]
cmn w0, #1
bne .L3693
.L3692:
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1000
mov w2, 699
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3693:
cbz w22, .L3694
ldr w0, [x29, 140]
lsl w2, w22, 9
cmn w0, #1
beq .L3695
ldr x1, [x25, 8]
mov x0, x27
bl ftl_memcpy
.L3696:
ldr x19, [x20, 1128]
add x19, x19, 48
.L3694:
ldr x0, [x29, 120]
add x0, x0, :lo12:.LANCHOR3
ldrb w2, [x0, 1946]
cmp w21, w2
bcc .L3697
bls .L3698
ldr x19, [x20, 1128]
add x19, x19, 16
.L3698:
cbz x25, .L3683
ldrb w0, [x25, 2]
mov x1, x25
and w0, w0, -9
strb w0, [x25, 2]
add x0, x20, 3355
bl buf_remove_buf
mov x0, x25
bl zbuf_free
.L3683:
ldrh w0, [x19, 6]
cbnz w0, .L3700
bl ftl_flush
mov x0, x19
bl ftl_alloc_new_data_sblk
.L3700:
mov x0, x19
bl ftl_get_new_free_page
mov w3, w0
ldr x0, [x29, 104]
mov x1, x24
str w3, [x29, 100]
lsl x22, x0, 6
add x21, x28, x22
ldr w0, [x21, 32]
stp w0, w23, [x24]
str w26, [x24, 12]
ldr w0, [x29, 140]
str w0, [x24, 8]
ldr x0, [x29, 120]
str wzr, [x1, 16]!
add x25, x0, :lo12:.LANCHOR3
mov w0, 2
ldrb w2, [x25, 1946]
sub w2, w2, #2
sbfiz x2, x2, 9, 32
add x2, x27, x2
bl ftl_debug_info_fill
ldr w0, [x29, 140]
mov w1, 10
ldr w3, [x29, 100]
stp w3, w0, [x21, 40]
mov w0, -1
strb w0, [x28, x22]
ldrb w0, [x21, 2]
orr w0, w0, w1
strb w0, [x21, 2]
ldrh w1, [x19, 12]
ldrh w0, [x19, 10]
add w0, w0, w1
ldr x1, [x29, 112]
sub w0, w0, #1
strh w0, [x21, 48]
adrp x21, .LANCHOR5
add x22, x21, :lo12:.LANCHOR5
add x0, x22, 360
bl buf_add_tail
ldrb w0, [x20, 3380]
add w0, w0, 1
strb w0, [x20, 3380]
bl timer_get_time
str w0, [x22, 364]
ldrb w2, [x20, 3380]
ldrh w0, [x19, 6]
cmp w2, 2
bhi .L3701
cmp w0, 1
bne .L3671
.L3701:
ldrb w1, [x19, 5]
cmp w1, 0
mov w1, 0
cset w4, ne
cmp w0, 1
add x0, x21, :lo12:.LANCHOR5
csinc w4, w2, w4, eq
ldrb w0, [x0, 360]
mov w3, w0
.L3705:
cmp w1, w4
bne .L3706
and w1, w1, 255
add x21, x21, :lo12:.LANCHOR5
sub w2, w2, w1
ubfiz x0, x0, 6, 8
strb w2, [x20, 3380]
add x0, x28, x0
strb w3, [x21, 360]
bl sblk_prog_page
ldrh w0, [x19, 6]
cmp w0, 1
bne .L3671
bl sblk_wait_write_queue_completed
bl ftl_write_completed
mov x0, x19
bl ftl_write_last_log_page
mov x0, x19
bl ftl_alloc_new_data_sblk
.L3671:
ldrb w0, [x20, 3381]
cbnz w0, .L3668
.L3670:
bl ftl_write_completed
mov w0, 0
b .L3667
.L3697:
ldr w0, [x29, 140]
sub w2, w2, w21
lsl w2, w2, 9
cmn w0, #1
ubfiz x0, x21, 7, 9
beq .L3699
ldr x1, [x25, 8]
lsl x0, x0, 2
add x1, x1, x0
add x0, x27, x0
bl ftl_memcpy
b .L3698
.L3699:
mov w1, 0
add x0, x27, x0, lsl 2
bl ftl_memset
b .L3698
.L3706:
ubfiz x3, x3, 6, 8
add w1, w1, 1
ldrb w3, [x28, x3]
b .L3705
.L3707:
lsl w2, w22, 9
mov x25, 0
mov w26, 0
.L3695:
mov w1, 0
mov x0, x27
bl ftl_memset
b .L3696
.L3687:
cbnz w22, .L3707
mov w26, 0
mov x25, 0
b .L3694
.size ftl_write_commit, .-ftl_write_commit
.align 2
.global gc_do_copy_back
.type gc_do_copy_back, %function
gc_do_copy_back:
stp x29, x30, [sp, -240]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x22, .LANCHOR3
add x1, x22, :lo12:.LANCHOR3
stp x19, x20, [sp, 16]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldrb w0, [x1, 1337]
cbnz w0, .L3734
bl buf_alloc
mov x20, x0
cbz x0, .L3733
adrp x19, .LANCHOR0
add x2, x19, :lo12:.LANCHOR0
ldrh w3, [x2, 3442]
mov w0, w3
bl gc_get_src_ppa_from_index
add w3, w3, 1
mov w23, w0
str w23, [x20, 40]
strh w3, [x2, 3442]
mov w1, 1
mov x0, x20
bl sblk_read_page
ldr w0, [x20, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
bne .L3736
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1024
mov w2, 1032
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3736:
ldr x0, [x20, 24]
ldr w21, [x0, 4]
mov w0, w21
bl lpa_hash_get_ppa
str w0, [x29, 192]
cmn w0, #1
bne .L3737
mov w2, 0
add x1, x29, 192
mov w0, w21
bl pm_log2phys
.L3737:
ldr w24, [x29, 192]
cmp w23, w24
bne .L3738
add x1, x19, :lo12:.LANCHOR0
add x0, x1, 1306
add x1, x1, 3354
.L3741:
ldr w2, [x0, 34]
cmp w21, w2
bne .L3739
ldrb w2, [x0]
tbz x2, 1, .L3739
mov x0, x20
bl zbuf_free
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3733
add x19, x19, :lo12:.LANCHOR0
adrp x0, .LC297
mov w2, w23
mov w1, w21
add x0, x0, :lo12:.LC297
ldrh w3, [x19, 3442]
bl printk
.L3733:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 240
ret
.L3739:
add x0, x0, 64
cmp x1, x0
bne .L3741
add x22, x22, :lo12:.LANCHOR3
strb wzr, [x20, 57]
str w21, [x20, 36]
ldrb w0, [x22, 1946]
strb w0, [x20, 56]
ldr x0, [x20, 24]
ldr w1, [x0]
str w1, [x20, 32]
str wzr, [x0, 16]
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3742
mov w0, w21
bl lpa_hash_get_ppa
add x1, x19, :lo12:.LANCHOR0
mov w3, w0
mov w4, w23
adrp x0, .LC298
mov w2, w24
add x0, x0, :lo12:.LC298
ldrh w5, [x1, 3442]
mov w1, w21
bl printk
.L3742:
add x19, x19, :lo12:.LANCHOR0
mov x0, x20
bl ftl_gc_write_buf
bl ftl_write_commit
ldr x1, [x19, 3384]
ldr w0, [x1, 60]
add w0, w0, 1
str w0, [x1, 60]
ldrh w0, [x19, 3444]
add w0, w0, 1
strh w0, [x19, 3444]
b .L3733
.L3738:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3743
add x19, x19, :lo12:.LANCHOR0
mov w0, w21
bl lpa_hash_get_ppa
mov w3, w0
mov w4, w23
adrp x0, .LC298
ldrh w5, [x19, 3442]
mov w2, w24
mov w1, w21
add x0, x0, :lo12:.LC298
bl printk
.L3743:
mov x0, x20
bl zbuf_free
b .L3733
.L3734:
adrp x21, .LANCHOR0
add x0, x21, :lo12:.LANCHOR0
ldrb w1, [x1, 1321]
ldr x26, [x0, 1128]
add x0, x26, 80
str x0, [x29, 184]
ldrb w0, [x0, 9]
and w19, w0, 65535
cmp w1, w19
bhi .L3798
cmp w19, 2
mov w23, 2
csel w23, w19, w23, ls
and w23, w23, 65535
.L3744:
add x1, x22, :lo12:.LANCHOR3
ldrb w20, [x1, 1320]
cmp w20, 3
bne .L3745
add x3, x21, :lo12:.LANCHOR0
ldrb w2, [x3, 1212]
ldrh w5, [x3, 5522]
cbz w2, .L3746
sdiv w0, w5, w0
ldrb w1, [x1, 1950]
mov w24, w5
and w26, w0, 65535
cbz w1, .L3747
adrp x1, .LANCHOR2
add x1, x1, :lo12:.LANCHOR2
add x1, x1, 2136
ldrh w0, [x1, w0, sxtw 1]
cmp w0, 0
cset w20, ne
.L3865:
add w20, w20, 1
.L3748:
msub w19, w19, w26, w5
and w19, w19, 65535
.L3749:
adrp x8, .LANCHOR5
adrp x0, .LANCHOR2
add x8, x8, :lo12:.LANCHOR5
add x0, x0, :lo12:.LANCHOR2
add x7, x21, :lo12:.LANCHOR0
mul w11, w20, w23
add x10, x22, :lo12:.LANCHOR3
add x6, x0, 2136
sxtw x12, w26
mov x13, x8
add x7, x7, 3416
mov w5, 0
.L3753:
cmp w5, w11
bge .L3806
ldr x1, [x29, 184]
add w2, w24, w5
ldrh w0, [x10, 1338]
ldrb w1, [x1, 9]
mul w0, w0, w1
ldrb w1, [x8, 465]
sub w0, w0, w1
cmp w2, w0
blt .L3754
ldrb w0, [x10, 1950]
cbz w0, .L3806
ldrh w0, [x6, x12, lsl 1]
cmp w0, w26
bcc .L3755
.L3806:
mov w0, 1
str w0, [x29, 180]
b .L3751
.L3798:
mov w23, 1
b .L3744
.L3747:
adrp x0, .LANCHOR5+461
ldrb w0, [x0, #:lo12:.LANCHOR5+461]
cbz w0, .L3800
sub w0, w26, #62
and w0, w0, 65535
cmp w0, 2159
bhi .L3801
udiv w20, w26, w20
add w20, w20, w20, lsl 1
sub w20, w26, w20
and w20, w20, 65535
cmp w20, 0
cset w20, eq
b .L3865
.L3800:
mov w20, 1
b .L3748
.L3801:
mov w20, 2
b .L3748
.L3746:
ldrb w1, [x1, 1336]
cbz w1, .L3750
add w19, w0, w0, lsl 1
mov w24, w5
sdiv w19, w5, w19
mul w0, w0, w19
and w26, w19, 65535
sub w0, w0, w0, lsl 2
add w19, w0, w5
ldrb w0, [x3, 1213]
sdiv w19, w19, w20
and w19, w19, 65535
cbz w0, .L3749
add w4, w26, w26, lsl 1
and w26, w4, 65535
b .L3749
.L3750:
sdiv w2, w5, w0
adrp x1, .LANCHOR2
add x1, x1, :lo12:.LANCHOR2
add x1, x1, 3672
msub w19, w19, w2, w5
ldrh w25, [x1, w2, sxtw 1]
and w19, w19, 65535
and w1, w25, 7
str w1, [x29, 180]
lsr w26, w25, 3
madd w0, w26, w0, w19
add w0, w0, w0, lsl 1
and w24, w0, 65535
uxtw x0, w1
cmp w0, 1
beq .L3749
.L3751:
mul w0, w20, w23
str wzr, [x29, 160]
str w0, [x29, 176]
ubfiz w0, w23, 1, 15
strh w0, [x29, 128]
str w0, [x29, 156]
msub w0, w0, w20, w24
and w0, w0, 65535
str w0, [x29, 152]
ldrh w0, [x29, 152]
str x0, [x29, 120]
adrp x0, .LANCHOR5
add x28, x0, :lo12:.LANCHOR5
adrp x0, .LANCHOR4
add x0, x0, :lo12:.LANCHOR4
str x0, [x29, 112]
.L3756:
ldr w0, [x29, 160]
ldr w1, [x29, 176]
and w0, w0, 65535
str w0, [x29, 164]
ldrh w27, [x29, 160]
cmp w0, w1
blt .L3780
add x1, x22, :lo12:.LANCHOR3
ldrb w0, [x1, 1320]
cmp w0, 3
add x0, x29, 192
bne .L3781
add x2, x21, :lo12:.LANCHOR0
ldrb w2, [x2, 1212]
cbz w2, .L3782
ldr w2, [x29, 176]
mov w1, 0
sub w2, w2, #1
.L3783:
cmp w1, w2
blt .L3784
.L3870:
ldr x0, [x0, w2, sxtw 3]
mov w1, -1
strb w1, [x0]
ldrb w1, [x29, 176]
ldr x0, [x29, 192]
bl sblk_prog_page
b .L3785
.L3745:
ldrb w1, [x1, 1322]
cbnz w1, .L3752
add x1, x21, :lo12:.LANCHOR0
mov w20, 1
ldrh w24, [x1, 5522]
sdiv w26, w24, w0
msub w19, w19, w26, w24
and w19, w19, 65535
b .L3749
.L3752:
add x1, x21, :lo12:.LANCHOR0
mov w20, 2
ldrh w24, [x1, 5522]
sdiv w26, w24, w0
msub w19, w19, w26, w24
and w19, w19, 65535
b .L3749
.L3755:
tbz x5, 0, .L3806
.L3754:
ldr x9, [x13, 288]
sbfiz x2, x2, 2, 32
ldr w0, [x9, x2]
cmn w0, #1
bne .L3757
ldrh w3, [x7, 26]
ldrh w0, [x7, 24]
cmp w0, w3
bls .L3733
ldrb w0, [x10, 1950]
cbz w0, .L3758
ldrh w0, [x6, x12, lsl 1]
cmp w0, w26
bcs .L3758
tbz x5, 0, .L3758
ubfiz x0, x0, 2, 16
ldr w0, [x9, x0]
.L3866:
str w0, [x9, x2]
.L3757:
add w5, w5, 1
and w5, w5, 65535
b .L3753
.L3758:
mov w0, w3
bl gc_get_src_ppa_from_index
add w3, w3, 1
strh w3, [x7, 26]
b .L3866
.L3780:
ldr w0, [x29, 164]
add w1, w24, w0
sxtw x0, w1
str x0, [x29, 168]
add x0, x22, :lo12:.LANCHOR3
sxtw x2, w1
ldr x0, [x0, 1328]
ldrb w0, [x0, x2]
cmp w0, 255
bne .L3760
str w1, [x29, 144]
mov w0, 0
bl buf_alloc
mov x25, x0
ldr w1, [x29, 144]
cbnz x0, .L3761
str w1, [x29, 144]
bl sblk_wait_write_queue_completed
bl ftl_write_completed
bl gc_write_completed
bl gc_free_temp_buf
mov w0, 0
bl buf_alloc
ldr w1, [x29, 144]
mov x25, x0
cbz x0, .L3733
.L3761:
add x2, x22, :lo12:.LANCHOR3
ldr x3, [x29, 168]
ldrb w5, [x25, 1]
ldr x0, [x2, 1328]
strb w5, [x0, x3]
add x0, x21, :lo12:.LANCHOR0
ldr x3, [x29, 184]
ldrb w5, [x0, 3423]
add w5, w5, 1
strb w5, [x0, 3423]
add w0, w27, w24
strh w0, [x25, 48]
ldrb w0, [x29, 180]
strb w0, [x25, 61]
ldrh w0, [x2, 1338]
ldrb w5, [x3, 9]
adrp x3, .LANCHOR5
mul w0, w0, w5
add x5, x3, :lo12:.LANCHOR5
ldrb w5, [x5, 465]
sub w0, w0, w5
cmp w1, w0
blt .L3762
ldrb w0, [x2, 1950]
cbz w0, .L3763
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
add x0, x0, 2136
ldrh w0, [x0, w26, sxtw 1]
cmp w0, w26
bcs .L3763
tbnz x27, 0, .L3762
.L3763:
ldr x0, [x28, 280]
mov w2, -1
ldr x3, [x29, 168]
str w2, [x0, x3, lsl 2]
ldrb w0, [x28, 465]
cmp w0, 2
bne .L3764
ldr x0, [x29, 184]
add x7, x22, :lo12:.LANCHOR3
ldrh w2, [x28, 462]
ldrh w6, [x7, 1338]
ldrb w0, [x0, 9]
mul w0, w0, w6
sub w0, w0, #2
cmp w1, w0
bne .L3765
ldr x1, [x28, 280]
ldr x0, [x25, 8]
str x7, [x29, 144]
bl ftl_memcpy
ldr x7, [x29, 144]
mov w1, 0
ldr x0, [x25, 24]
ldrb w2, [x7, 1946]
lsl w2, w2, 1
bl ftl_memset
ldr x0, [x25, 24]
mov w1, 15555
movk w1, 0xf55f, lsl 16
str w1, [x0]
ldr x2, [x25, 24]
ldrh w1, [x28, 462]
ldr x0, [x25, 8]
str x2, [x29, 144]
bl js_hash
ldr x2, [x29, 144]
add x1, x21, :lo12:.LANCHOR0
str w0, [x2, 4]
ldr x1, [x1, 1128]
ldr x0, [x25, 24]
ldr w1, [x1, 132]
str w1, [x0, 8]
ldr x0, [x25, 24]
str wzr, [x0, 12]
.L3766:
ldr x0, [x25, 24]
str wzr, [x0, 16]
.L3760:
add x5, x22, :lo12:.LANCHOR3
ldr x1, [x29, 168]
ldrsw x2, [x29, 164]
add x3, x29, 192
add x7, x21, :lo12:.LANCHOR0
ldr x0, [x5, 1328]
add x6, x7, 1304
ldrb w1, [x0, x1]
ubfiz x0, x1, 6, 8
add x0, x6, x0
add x6, x6, x1, lsl 6
str x0, [x3, x2, lsl 3]
ldrb w0, [x29, 180]
strb w0, [x6, 61]
mov w0, 2
strh w0, [x6, 50]
ldrb w0, [x5, 1320]
cmp w0, 3
bne .L3771
ldrb w8, [x7, 1212]
cbz w8, .L3772
ldrb w0, [x5, 1950]
and w6, w27, 1
add w7, w6, w26
cbz w0, .L3773
adrp x5, .LANCHOR2
add x5, x5, :lo12:.LANCHOR2
add x5, x5, 2136
ldrh w0, [x5, w26, sxtw 1]
cmp w0, w26
bcs .L3773
cmp w6, 0
csel w7, w7, w0, eq
.L3773:
udiv w5, w27, w20
ldr x0, [x29, 184]
add x6, x21, :lo12:.LANCHOR0
add x6, x6, x1, lsl 6
add w5, w5, w19
add x5, x0, w5, sxtw 1
ldrh w0, [x5, 16]
add x5, x22, :lo12:.LANCHOR3
ldrh w5, [x5, 1410]
madd w0, w0, w5, w7
orr w0, w0, 50331648
str w0, [x6, 1344]
.L3778:
add x0, x21, :lo12:.LANCHOR0
add x0, x0, 1304
add x1, x0, x1, lsl 6
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
ldr w5, [x1, 40]
ldr x0, [x0, 296]
ldrh w1, [x1, 48]
str w5, [x0, x1, lsl 2]
b .L3797
.L3765:
ldrb w5, [x7, 1321]
and x1, x2, 65532
ldr x0, [x28, 280]
str x7, [x29, 144]
add x1, x0, x1
ldr x0, [x25, 8]
mul w5, w5, w6
lsl w5, w5, 2
sub w5, w5, w2
str w5, [x29, 104]
mov w2, w5
bl ftl_memcpy
ldr x7, [x29, 144]
mov w1, 0
ldr x0, [x25, 24]
ldrb w2, [x7, 1946]
lsl w2, w2, 1
bl ftl_memset
ldr x0, [x25, 24]
mov w1, 15555
movk w1, 0xf55f, lsl 16
ldr w5, [x29, 104]
str w1, [x0]
mov w1, w5
ldr x2, [x25, 24]
ldr x0, [x25, 8]
str x2, [x29, 144]
bl js_hash
ldr x2, [x29, 144]
add x1, x21, :lo12:.LANCHOR0
str w0, [x2, 4]
ldr x1, [x1, 1128]
ldr x0, [x25, 24]
ldr w1, [x1, 132]
str w1, [x0, 8]
mov w1, 1
ldr x0, [x25, 24]
str w1, [x0, 12]
b .L3766
.L3764:
add x5, x22, :lo12:.LANCHOR3
ldr x1, [x28, 280]
str x5, [x29, 144]
ldrb w0, [x5, 1321]
ldrh w2, [x5, 1338]
mul w2, w2, w0
ldr x0, [x25, 8]
lsl w2, w2, 2
bl ftl_memcpy
ldr x5, [x29, 144]
ldrb w1, [x5, 1321]
ldrh w0, [x5, 1338]
mul w0, w0, w1
ldrb w1, [x5, 1946]
lsl w2, w0, 2
cmp w1, w0, lsr 6
bge .L3767
ldrh w1, [x28, 462]
sub w2, w1, w2
.L3767:
ldr x5, [x25, 8]
ldr x1, [x28, 288]
add x0, x5, w0, sxtw 2
bl ftl_memcpy
add x5, x22, :lo12:.LANCHOR3
ldr x0, [x25, 24]
mov w1, 0
str x5, [x29, 104]
ldrb w2, [x5, 1946]
lsl w2, w2, 1
bl ftl_memset
ldr x0, [x25, 24]
mov w1, 15555
ldr x5, [x29, 104]
movk w1, 0xf55f, lsl 16
str w1, [x0]
ldrb w0, [x5, 1321]
ldrh w1, [x5, 1338]
ldr x2, [x25, 24]
str x2, [x29, 144]
mul w1, w1, w0
ldr x0, [x25, 8]
lsl w1, w1, 2
bl js_hash
ldr x2, [x29, 144]
add x1, x21, :lo12:.LANCHOR0
str w0, [x2, 4]
ldr x1, [x1, 1128]
ldr x0, [x25, 24]
ldr w1, [x1, 132]
.L3867:
str w1, [x0, 8]
b .L3766
.L3762:
ldr x0, [x29, 168]
lsl x0, x0, 2
str x0, [x29, 144]
ldr x0, [x28, 288]
ldr x1, [x29, 144]
ldr w0, [x0, x1]
mov w1, 1
str w0, [x25, 40]
mov x0, x25
bl sblk_read_page
ldr w0, [x25, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
bne .L3769
add x0, x21, :lo12:.LANCHOR0
add x2, x22, :lo12:.LANCHOR3
ldrb w1, [x0, 1205]
mov w0, 24
ldrh w5, [x2, 1304]
sub w0, w0, w1
ldrb w2, [x2, 1306]
sub w1, w0, w5
mov w0, 1
lsl w0, w0, w1
ldr w1, [x25, 40]
sub w0, w0, #1
lsr w1, w1, w5
and w0, w0, w1
mov x1, 0
udiv w0, w0, w2
bl ftl_sblk_dump
ldr w0, [x25, 52]
cmp w0, 512
ccmn w0, #1, 4, ne
bne .L3769
ldr x0, [x25, 24]
mov w1, -1
str w1, [x0, 4]
ldr w0, [x25, 52]
cmp w0, 512
ccmp w0, w1, 4, ne
bne .L3769
ldr x0, [x29, 112]
mov w2, 1223
add x1, x0, 1024
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3769:
ldr x1, [x25, 24]
add x0, x21, :lo12:.LANCHOR0
ldr w0, [x0, 3364]
ldr w2, [x1, 4]
cmp w2, w0
bcc .L3770
mov w0, -1
str w0, [x1, 4]
.L3770:
ldr x0, [x25, 24]
ldr x2, [x29, 144]
ldr w1, [x0, 4]
ldr x0, [x28, 280]
str w1, [x0, x2]
ldr w1, [x25, 40]
ldr x0, [x25, 24]
b .L3867
.L3772:
udiv w0, w27, w0
ldrb w7, [x7, 1213]
ldrh w8, [x5, 1410]
cbz w7, .L3775
ldr x4, [x29, 184]
add w7, w0, w19
add w0, w0, w0, lsl 1
sub w0, w27, w0
add x7, x4, w7, sxtw 1
ldrh w5, [x7, 16]
madd w5, w5, w8, w26
add w0, w5, w0, uxth
.L3871:
str w0, [x6, 40]
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
add x5, x21, :lo12:.LANCHOR0
add x5, x5, 1304
add x1, x5, x1, lsl 6
ldr x5, [x0, 296]
mov w0, 3
udiv w0, w27, w0
ldrh w6, [x1, 48]
ldr w1, [x1, 40]
add w0, w0, w0, lsl 1
sub w0, w27, w0
and w0, w0, 65535
add w0, w0, 1
orr w0, w1, w0, lsl 24
str w0, [x5, x6, lsl 2]
.L3797:
add x1, x22, :lo12:.LANCHOR3
ldrb w0, [x1, 1950]
cbz w0, .L3779
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
add x0, x0, 2136
ldrh w0, [x0, w26, sxtw 1]
cmp w0, w26
bcs .L3779
tbz x27, 0, .L3779
ldr x0, [x1, 1328]
mov w5, -1
ldr x4, [x29, 168]
strb w5, [x0, x4]
ldr x0, [x3, x2, lsl 3]
ldrh w2, [x29, 152]
strh w2, [x0, 48]
ldrb w2, [x0, 1]
ldr x0, [x1, 1328]
ldr x1, [x29, 120]
strb w2, [x0, x1]
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
mov w1, -1
ldr x0, [x0, 288]
str w1, [x0, x4, lsl 2]
.L3779:
ldr w0, [x29, 160]
add w0, w0, 1
str w0, [x29, 160]
b .L3756
.L3775:
ldr x4, [x29, 184]
add w0, w0, w19
add x0, x4, w0, sxtw 1
ldrh w0, [x0, 16]
madd w0, w0, w8, w26
b .L3871
.L3771:
cmp w0, 2
bne .L3778
ldrb w0, [x5, 1322]
ldrh w7, [x5, 1410]
cbnz w0, .L3777
ldr w0, [x29, 164]
add w5, w19, w0
ldr x0, [x29, 184]
add x5, x0, w5, sxtw 1
ldrh w0, [x5, 16]
madd w0, w0, w7, w26
.L3868:
orr w0, w0, 33554432
str w0, [x6, 40]
b .L3778
.L3777:
ldr x0, [x29, 184]
add w5, w19, w27, lsr 1
add x5, x0, w5, sxtw 1
ldrh w0, [x5, 16]
and w5, w27, 1
madd w0, w0, w7, w26
add w0, w0, w5
b .L3868
.L3784:
ldr x3, [x0, w1, sxtw 3]
add w1, w1, 1
ldr x5, [x0, w1, sxtw 3]
and w1, w1, 65535
ldrb w5, [x5, 1]
strb w5, [x3]
b .L3783
.L3782:
ldrb w2, [x1, 1336]
ldr x1, [x29, 192]
cbz w2, .L3786
.L3789:
strb wzr, [x1, 60]
b .L3788
.L3786:
ldr w2, [x29, 180]
cmp w2, 1
bne .L3787
mov w2, 9
.L3869:
strb w2, [x1, 60]
.L3788:
mov w2, w23
add x1, x0, 24
bl sblk_xlc_prog_pages
.L3785:
add x0, x22, :lo12:.LANCHOR3
ldrb w1, [x0, 1336]
cbz w1, .L3794
ldr w0, [x29, 128]
add w23, w23, w0
and w23, w23, 65535
.L3795:
add x21, x21, :lo12:.LANCHOR0
add x22, x22, :lo12:.LANCHOR3
ldr x1, [x21, 3384]
ldr w0, [x1, 52]
add w0, w0, w23
str w0, [x1, 52]
ldr x1, [x29, 184]
ldrh w0, [x21, 5522]
add w23, w23, w0
ldrh w0, [x22, 1338]
and w23, w23, 65535
strh w23, [x21, 5522]
ldrb w1, [x1, 9]
mul w0, w0, w1
cmp w23, w0
blt .L3796
ldr x0, [x21, 1128]
strh wzr, [x0, 86]
.L3796:
bl gc_write_completed
b .L3733
.L3787:
ldr w2, [x29, 180]
cmp w2, 2
bne .L3789
mov w2, 13
b .L3869
.L3781:
ldrb w2, [x1, 1322]
cbz w2, .L3807
ldrb w1, [x1, 1323]
cbnz w1, .L3791
.L3790:
ldr w2, [x29, 176]
sub w2, w2, #1
.L3792:
cmp w1, w2
bge .L3870
ldr x3, [x0, w1, sxtw 3]
add w1, w1, 1
ldr x5, [x0, w1, sxtw 3]
and w1, w1, 65535
ldrb w5, [x5, 1]
strb w5, [x3]
b .L3792
.L3807:
mov w1, 0
b .L3790
.L3791:
mov w1, w23
bl sblk_3d_mlc_prog_pages
b .L3785
.L3794:
ldrb w1, [x0, 1322]
cbnz w1, .L3808
add x1, x21, :lo12:.LANCHOR0
ldrb w1, [x1, 1212]
cbz w1, .L3795
ldrb w0, [x0, 1950]
ldrh w1, [x29, 176]
cbz w0, .L3809
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
add x0, x0, 2136
ldrh w0, [x0, w26, sxtw 1]
cmp w0, w26
csel w23, w23, w1, cc
b .L3795
.L3808:
ldr w23, [x29, 156]
b .L3795
.L3809:
mov w23, w1
b .L3795
.size gc_do_copy_back, .-gc_do_copy_back
.align 2
.global zftl_do_gc
.type zftl_do_gc, %function
zftl_do_gc:
sub sp, sp, #128
stp x29, x30, [sp, 16]
add x29, sp, 16
stp x19, x20, [sp, 32]
adrp x19, .LANCHOR0
stp x27, x28, [sp, 96]
mov w27, w0
add x0, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 48]
stp x23, x24, [sp, 64]
cmp w27, 1
stp x25, x26, [sp, 80]
adrp x20, .LANCHOR5
ldrh w24, [x0, 3372]
ldrh w22, [x0, 3368]
ldrh w23, [x0, 3370]
add w22, w24, w22
ldr x25, [x0, 1128]
and w22, w22, 65535
beq .L3873
.L3885:
add x0, x20, :lo12:.LANCHOR5
ldrb w1, [x0, 264]
cmp w1, 6
bhi .L4000
adrp x0, .L3876
add x0, x0, :lo12:.L3876
ldrh w0, [x0,w1,uxtw #1]
adr x1, .Lrtx3876
add x0, x1, w0, sxth #2
br x0
.Lrtx3876:
.section .rodata
.align 0
.align 2
.L3876:
.2byte (.L3875 - .Lrtx3876) / 4
.2byte (.L3877 - .Lrtx3876) / 4
.2byte (.L3878 - .Lrtx3876) / 4
.2byte (.L3879 - .Lrtx3876) / 4
.2byte (.L3880 - .Lrtx3876) / 4
.2byte (.L3881 - .Lrtx3876) / 4
.2byte (.L3882 - .Lrtx3876) / 4
.text
.L3881:
add x21, x19, :lo12:.LANCHOR0
mov w23, 0
add x21, x21, 3416
.L3883:
bl gc_check_data_one_wl
cbz w0, .L3996
add x19, x19, :lo12:.LANCHOR0
add x20, x20, :lo12:.LANCHOR5
ldr x0, [x19, 1128]
strh wzr, [x19, 3472]
ldrh w0, [x0, 80]
bl ftl_free_sblk
ldr x1, [x19, 1128]
mov w0, -1
ldr x2, [x19, 3384]
strh w0, [x1, 80]
strh w0, [x2, 126]
strh w0, [x1, 130]
ldr x0, [x19, 3424]
bl zbuf_free
strb wzr, [x20, 264]
str xzr, [x19, 3424]
b .L4090
.L3873:
add x0, x20, :lo12:.LANCHOR5
ldr w21, [x0, 468]
cbnz w21, .L3884
ldr w0, [x0, 472]
cbz w0, .L3885
.L3884:
adrp x0, .LANCHOR3+1380
ldrh w0, [x0, #:lo12:.LANCHOR3+1380]
cmp w22, w0, lsr 2
bls .L3885
add x0, x19, :lo12:.LANCHOR0
ldrh w0, [x0, 3392]
cmp w0, w22
bcs .L3885
add w21, w21, 20
bl timer_get_time
cmp w21, w0
bcs .L3886
add x0, x20, :lo12:.LANCHOR5
str wzr, [x0, 468]
.L3886:
add x26, x20, :lo12:.LANCHOR5
ldr w21, [x26, 472]
bl timer_get_time
add w21, w21, 20
cmp w21, w0
bcs .L3887
str wzr, [x26, 472]
.L3887:
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 1128]
ldrh w0, [x0, 124]
cbnz w0, .L3885
.L4000:
mov w23, 16
b .L3872
.L3875:
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x25, 80]
add w24, w24, w23
and w24, w24, 65535
ldrh w1, [x0, 3376]
ldrh w26, [x0, 3374]
add w26, w26, w1
mov w1, 65535
and w26, w26, 65535
cmp w2, w1
beq .L3888
cbnz w27, .L3889
ldrh w0, [x0, 3392]
cmp w22, w0, lsl 1
bge .L4000
.L3889:
adrp x21, .LANCHOR3
add x5, x21, :lo12:.LANCHOR3
add x0, x5, 1368
ldrh w1, [x5, 1378]
add w1, w1, 1
and w1, w1, 65535
strh w1, [x5, 1378]
bl _list_get_gc_head_node
and w2, w0, 65535
mov w1, 65535
cmp w2, w1
beq .L3891
add x3, x20, :lo12:.LANCHOR5
ubfiz x2, x2, 1, 16
ldr w1, [x3, 268]
add w1, w1, 1
str w1, [x3, 268]
add x3, x19, :lo12:.LANCHOR0
ldr x4, [x3, 1120]
ldrh w2, [x4, x2]
ldrh w4, [x5, 1376]
cmp w4, w2
bcs .L3892
ldrh w4, [x3, 1096]
cmp w1, w4, lsr 4
bls .L3891
ldrh w1, [x3, 3406]
cmp w1, w2
bls .L3891
.L3892:
add x1, x21, :lo12:.LANCHOR3
ldrb w2, [x1, 1337]
mov w1, 0
bl gc_add_sblk
cbz w0, .L3893
add x20, x20, :lo12:.LANCHOR5
mov w0, 1
str wzr, [x20, 268]
strb w0, [x20, 264]
b .L4000
.L3891:
add x0, x21, :lo12:.LANCHOR3
strh wzr, [x0, 1378]
.L3893:
cmp w24, 15
bls .L4002
add x1, x19, :lo12:.LANCHOR0
add x0, x21, :lo12:.LANCHOR3
ldrh w1, [x1, 3378]
ldrh w0, [x0, 1382]
cmp w1, w0
bhi .L4002
cmp w26, 0
cset w23, eq
add w23, w23, 1
.L3894:
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3895
add x19, x19, :lo12:.LANCHOR0
mov w4, w24
mov w3, w22
mov w1, 2807
ldr x0, [x19, 1128]
ldrh w7, [x0, 122]
ldrh w6, [x0, 120]
ldrh w5, [x0, 124]
add x0, x21, :lo12:.LANCHOR3
ldrb w2, [x0, 1337]
ldrh w0, [x25, 80]
str w0, [sp]
adrp x0, .LC299
add x0, x0, :lo12:.LC299
bl printk
.L3895:
add x21, x21, :lo12:.LANCHOR3
mov w2, 1
mov w1, w23
ldrb w0, [x21, 1337]
bl gc_search_src_blk
cmp w0, 0
ble .L3896
.L3897:
add x20, x20, :lo12:.LANCHOR5
mov w0, 1
.L4092:
strb w0, [x20, 264]
b .L4000
.L4002:
mov w23, 2
b .L3894
.L3896:
ldrb w0, [x21, 1337]
mov w2, 1
mov w1, 3
bl gc_search_src_blk
cmp w0, 0
bgt .L3897
b .L4000
.L3888:
cmp w27, 1
bne .L3898
ldr x1, [x0, 3384]
ldrh w1, [x1, 150]
cbz w1, .L3899
ldrh w0, [x0, 3372]
cmp w0, 8
bls .L3899
bl gc_ink_check_sblk
.L3899:
bl gc_scan_static_data
adrp x21, .LANCHOR3
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 1128]
ldrh w0, [x0, 122]
cbz w0, .L3900
.L3901:
add x21, x21, :lo12:.LANCHOR3
mov w0, 1
add x20, x20, :lo12:.LANCHOR5
strb w0, [x21, 1337]
b .L4092
.L3900:
bl gc_static_wearleveling
mov w23, w0
cbnz w0, .L3901
bl gc_block_vpn_scan
cbz w24, .L3902
cmp w22, w26
bcs .L3903
add x0, x21, :lo12:.LANCHOR3
ldrh w0, [x0, 1380]
cmp w0, w22
bhi .L3904
.L3903:
add x1, x21, :lo12:.LANCHOR3
add w0, w22, w26
ldrh w2, [x1, 1380]
cmp w0, w2
blt .L3904
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x0, 3378]
ldrh w0, [x1, 1382]
cmp w2, w0
bcc .L3902
.L3904:
add x5, x21, :lo12:.LANCHOR3
mov w0, 1
strb w0, [x5, 1337]
mov w0, 16
bl zftl_get_gc_node.part.10
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L3905
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x3, [x2, 1120]
add x2, x20, :lo12:.LANCHOR5
ldrh w3, [x3, x1]
ldrh w1, [x2, 272]
cmp w3, w1
bcs .L3905
cmp w22, 2
bls .L3905
str wzr, [x2, 268]
mov w1, 1
strb wzr, [x5, 1337]
mov w2, 0
bl gc_add_sblk
cbnz w0, .L3897
.L3905:
add x5, x21, :lo12:.LANCHOR3
mov w1, 0
add x0, x5, 1360
bl _list_get_gc_head_node
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L3906
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x3, [x2, 1120]
add x2, x20, :lo12:.LANCHOR5
ldrh w3, [x3, x1]
ldrh w1, [x2, 272]
cmp w3, w1
bcs .L3906
cmp w22, 2
bls .L3906
str wzr, [x2, 268]
mov w1, 1
strb wzr, [x5, 1337]
mov w2, 0
bl gc_add_sblk
cbnz w0, .L3897
.L3906:
add x1, x20, :lo12:.LANCHOR5
add x2, x21, :lo12:.LANCHOR3
ldrh w0, [x1, 272]
ldrh w8, [x2, 1376]
add w0, w0, 1
and w0, w0, 65535
strh w0, [x1, 272]
cmp w0, w8, lsr 5
bls .L3907
mov w0, 4
strh w0, [x1, 272]
.L3907:
add x6, x20, :lo12:.LANCHOR5
add x7, x19, :lo12:.LANCHOR0
add x5, x21, :lo12:.LANCHOR3
ldr w0, [x6, 268]
ldrh w1, [x7, 1096]
add w0, w0, 1
strh wzr, [x5, 1352]
strh wzr, [x5, 1354]
strh wzr, [x5, 1356]
cmp w0, w1, lsr 5
str w0, [x6, 268]
bls .L3908
ldrh w0, [x7, 3378]
cmp w0, w24
bls .L3908
mov w1, 0
add x0, x5, 1368
bl _list_get_gc_head_node
and w0, w0, 65535
mov w1, 65535
cmp w0, w1
bne .L3909
.L4082:
mov w23, 16
b .L3910
.L3909:
ldr x1, [x7, 1120]
ubfiz x0, x0, 1, 16
ldrh w1, [x1, x0]
ldrb w0, [x5, 1321]
mul w0, w0, w8
cmp w1, w0
bgt .L4082
ldrb w0, [x5, 1337]
mov w2, 4
mov w1, 2
str wzr, [x6, 268]
.L4081:
bl gc_search_src_blk
and w0, w0, 65535
cbz w0, .L4082
b .L3897
.L3908:
add x0, x19, :lo12:.LANCHOR0
add x3, x21, :lo12:.LANCHOR3
ldrh w2, [x0, 3378]
ldrh w1, [x3, 1382]
cmp w2, w1
bcc .L3913
mov w2, 1
mov w1, 2
ldrb w0, [x3, 1337]
b .L4081
.L3913:
ldrh w1, [x0, 3374]
cbnz w1, .L3914
ldrh w1, [x0, 3376]
cmp w1, 8
bls .L3915
.L3914:
add x21, x21, :lo12:.LANCHOR3
mov w2, 4
mov w1, 1
ldrb w0, [x21, 1337]
b .L4081
.L3915:
ldrh w0, [x0, 5526]
cbnz w0, .L4082
.L3910:
add x0, x19, :lo12:.LANCHOR0
adrp x21, .LANCHOR3
ldr w1, [x0, 3396]
cbz w1, .L3916
str wzr, [x0, 3396]
cmp w24, 0
ccmp w22, 15, 2, ne
add x0, x21, :lo12:.LANCHOR3
bls .L3917
strb wzr, [x0, 1337]
.L3918:
add x5, x21, :lo12:.LANCHOR3
mov w1, 0
add x0, x5, 1368
bl _list_get_gc_head_node
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L3919
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x3, [x2, 1120]
ldrh w1, [x3, x1]
cmp w1, 8
bhi .L3919
mov w1, 1
str w1, [x2, 3396]
ldrb w2, [x5, 1337]
mov w1, 0
bl gc_add_sblk
cbnz w0, .L3897
.L3919:
add x5, x21, :lo12:.LANCHOR3
mov w1, 0
add x0, x5, 1360
bl _list_get_gc_head_node
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L3920
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x3, [x2, 1120]
ldrh w1, [x3, x1]
cmp w1, 4
bhi .L3920
mov w1, 1
str w1, [x2, 3396]
ldrb w2, [x5, 1337]
mov w1, 0
bl gc_add_sblk
cbnz w0, .L3897
.L3920:
mov w0, 0
bl zftl_get_gc_node.part.10
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L3916
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x3, [x2, 1120]
ldrh w1, [x3, x1]
cmp w1, 4
bhi .L3916
mov w1, 1
str w1, [x2, 3396]
add x2, x21, :lo12:.LANCHOR3
ldrb w2, [x2, 1337]
bl gc_add_sblk
cbnz w0, .L3897
.L3916:
add x28, x19, :lo12:.LANCHOR0
add x25, x21, :lo12:.LANCHOR3
mov w1, 1
ldr x0, [x28, 1128]
strb w1, [x25, 1337]
ldrh w0, [x0, 124]
cbz w0, .L3921
add x20, x20, :lo12:.LANCHOR5
strb wzr, [x25, 1337]
strb w1, [x20, 264]
.L3872:
mov w0, w23
ldp x19, x20, [sp, 32]
ldp x21, x22, [sp, 48]
ldp x23, x24, [sp, 64]
ldp x25, x26, [sp, 80]
ldp x27, x28, [sp, 96]
ldp x29, x30, [sp, 16]
add sp, sp, 128
ret
.L3902:
add x21, x21, :lo12:.LANCHOR3
add x0, x20, :lo12:.LANCHOR5
ldrh w2, [x21, 1376]
ldrh w1, [x0, 272]
cmp w1, w2, lsr 5
bcc .L4082
mov w1, 4
strh w1, [x0, 272]
b .L4082
.L3898:
ldrh w1, [x0, 3392]
cmp w1, w22
bcs .L4082
ldr x0, [x0, 1128]
ldrh w0, [x0, 124]
cbz w0, .L4000
b .L4082
.L3917:
mov w1, 1
strb w1, [x0, 1337]
b .L3918
.L3921:
ldrh w0, [x28, 3392]
cmp w22, w0
bcs .L3922
cbz w24, .L3923
cmp w24, 16
bls .L3924
ldrh w2, [x28, 3378]
ldrh w0, [x25, 1382]
cmp w2, w0
bhi .L3924
mov w2, 4
mov w0, w1
bl gc_search_src_blk
tst w0, 65535
bne .L3925
.L4089:
mov w2, 4
mov w1, 3
ldrb w0, [x25, 1337]
b .L4084
.L3925:
mov w1, 0
add x0, x25, 1368
bl _list_get_gc_head_node
and w2, w0, 65535
mov w1, 65535
cmp w2, w1
beq .L3928
add x3, x20, :lo12:.LANCHOR5
ubfiz x2, x2, 1, 16
ldr w1, [x3, 268]
add w1, w1, 1
str w1, [x3, 268]
ldr x3, [x28, 1120]
ldrh w2, [x3, x2]
ldrh w3, [x25, 1376]
cmp w3, w2
bcs .L3929
ldrh w3, [x28, 1096]
cmp w1, w3, lsr 4
bls .L3928
ldrh w1, [x28, 3406]
cmp w1, w2
bls .L3928
.L3929:
add x21, x21, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
mov w1, 0
ldrb w2, [x21, 1337]
bl gc_add_sblk
mov w0, 1
str w0, [x19, 3396]
add x0, x20, :lo12:.LANCHOR5
str wzr, [x0, 268]
.L3928:
add x20, x20, :lo12:.LANCHOR5
mov w0, 1
strb w0, [x20, 264]
b .L3872
.L3924:
mov w2, 1
mov w1, 2
mov w0, w2
bl gc_search_src_blk
tst w0, 65535
bne .L3928
add x21, x21, :lo12:.LANCHOR3
mov w2, 4
mov w1, 3
ldrb w0, [x21, 1337]
.L4084:
bl gc_search_src_blk
and w0, w0, 65535
.L3926:
cbnz w0, .L3928
b .L3872
.L3923:
strb wzr, [x25, 1337]
cmp w22, 16
bls .L3931
mov w2, 4
mov w1, 3
mov w0, 0
b .L4084
.L3931:
mov w2, w1
mov w0, 0
bl gc_search_src_blk
tst w0, 65535
bne .L3928
b .L4089
.L3922:
cmp w27, 1
bne .L3872
cmp w22, w0, lsl 1
bge .L3932
cmp w26, w24, lsr 1
bcs .L3933
ldrh w1, [x28, 3378]
ldrh w0, [x25, 1382]
cmp w1, w0
bcs .L3933
ldrh w0, [x25, 1380]
lsr w0, w0, 2
strh w0, [x28, 3392]
b .L3872
.L3933:
mov w0, 8
bl zftl_get_gc_node.part.10
and w1, w0, 65535
mov w2, 65535
cmp w1, w2
beq .L3934
add x2, x19, :lo12:.LANCHOR0
ubfiz x1, x1, 1, 16
ldr x2, [x2, 1120]
ldrh w1, [x2, x1]
cmp w1, 3
bhi .L3934
cbz w22, .L3934
add x1, x21, :lo12:.LANCHOR3
mov w2, 0
strb wzr, [x1, 1337]
mov w1, 1
bl gc_add_sblk
cbnz w0, .L3928
.L3934:
add x5, x21, :lo12:.LANCHOR3
mov w1, 0
add x0, x5, 1368
bl _list_get_gc_head_node
and w25, w0, 65535
mov w1, 65535
mov w28, w25
cmp w25, w1
bne .L3935
.L3940:
cmp w24, 1
bhi .L3936
.L3937:
cmp w22, w26
bcs .L3944
add x21, x21, :lo12:.LANCHOR3
mov w0, 4
add x19, x19, :lo12:.LANCHOR0
strb wzr, [x21, 1337]
bl zftl_get_gc_node.part.10
and w0, w0, 65535
mov w1, 65535
cmp w0, w1
beq .L4088
ldr x1, [x19, 1120]
ubfiz x0, x0, 1, 16
ldrb w2, [x21, 1321]
ldrh w1, [x1, x0]
ldrh w0, [x21, 1376]
mul w0, w0, w2
cmp w1, w0, lsr 1
ble .L3946
.L4088:
ldrh w0, [x21, 1380]
lsr w0, w0, 2
strh w0, [x19, 3392]
b .L3872
.L3935:
add x27, x20, :lo12:.LANCHOR5
add x2, x19, :lo12:.LANCHOR0
uxtw x25, w25
ldr w1, [x27, 268]
ldrh w3, [x2, 1096]
add w1, w1, 1
str w1, [x27, 268]
cmp w1, w3, lsr 4
bls .L3938
ldr x1, [x2, 1120]
str wzr, [x27, 268]
ldrh w3, [x1, x25, lsl 1]
ldrh w1, [x2, 3406]
cmp w3, w1
bcs .L3938
mov w3, 1
mov w2, 1
strb w3, [x5, 1337]
mov w1, 0
str w3, [x29, 108]
bl gc_add_sblk
ldr w3, [x29, 108]
cbz w0, .L3938
strb w3, [x27, 264]
b .L3872
.L3938:
add x0, x19, :lo12:.LANCHOR0
add x3, x21, :lo12:.LANCHOR3
ldr x1, [x0, 1120]
ldrh w2, [x1, x25, lsl 1]
ldrh w1, [x3, 1376]
cmp w2, w1, lsr 1
bhi .L3939
mov w2, 0
mov w1, 1
mov w0, w28
bl gc_add_sblk
b .L3928
.L3939:
ldrh w1, [x0, 3374]
ldrh w4, [x0, 3376]
ldrh w3, [x3, 1380]
add w1, w1, w4
cmp w1, w3, lsl 1
ble .L3940
ldrh w0, [x0, 3406]
cmp w0, w2
bcc .L3937
b .L3940
.L3936:
add x25, x21, :lo12:.LANCHOR3
mov w1, 1
cmp w24, 16
strb w1, [x25, 1337]
bls .L3941
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x0, 3378]
ldrh w0, [x25, 1382]
cmp w2, w0
bhi .L3941
mov w2, 4
mov w0, w1
bl gc_search_src_blk
ands w0, w0, 65535
bne .L3942
ldrb w0, [x25, 1337]
mov w2, 4
mov w1, 3
.L4083:
bl gc_search_src_blk
and w0, w0, 65535
.L3942:
add x21, x21, :lo12:.LANCHOR3
add x19, x19, :lo12:.LANCHOR0
cmp w22, w26, lsr 1
ldrh w1, [x21, 1380]
bls .L4085
lsr w1, w1, 2
.L4086:
strh w1, [x19, 3392]
b .L3926
.L3941:
mov w2, 1
mov w1, 2
mov w0, w2
bl gc_search_src_blk
ands w0, w0, 65535
bne .L3942
add x0, x21, :lo12:.LANCHOR3
mov w2, 4
mov w1, 3
ldrb w0, [x0, 1337]
b .L4083
.L3946:
mov w1, 3
mov w2, 4
mov w0, 0
bl gc_search_src_blk
ldrh w1, [x21, 1380]
and w0, w0, 65535
.L4085:
lsr w1, w1, 1
b .L4086
.L3944:
add x19, x19, :lo12:.LANCHOR0
add x21, x21, :lo12:.LANCHOR3
b .L4088
.L3932:
ldrh w0, [x25, 1380]
lsr w0, w0, 2
strh w0, [x28, 3392]
ldrh w0, [x28, 5526]
cmp w0, 0
csel w23, w23, wzr, ne
b .L3872
.L3877:
add x6, x19, :lo12:.LANCHOR0
mov w0, 65535
ldrh w1, [x6, 3416]
cmp w1, w0
bne .L3947
bl gc_get_src_blk
strh w0, [x6, 3416]
.L3947:
add x0, x19, :lo12:.LANCHOR0
mov w2, 65535
ldrh w1, [x0, 3416]
cmp w1, w2
beq .L3948
ldrh w2, [x0, 1096]
cmp w2, w1
bhi .L3948
mov w1, -1
strh w1, [x0, 3416]
.L3948:
add x0, x19, :lo12:.LANCHOR0
mov w2, 65535
ldrh w3, [x0, 3416]
cmp w3, w2
beq .L4091
ldrh w5, [x0, 3472]
uxtw x4, w3
ldr x2, [x0, 1104]
add x2, x2, x4, lsl 2
cbz w5, .L3950
add x0, x0, 3474
mov w1, 0
.L3952:
ldrh w6, [x0], 2
cmp w6, w3
bne .L3951
.L3956:
add x19, x19, :lo12:.LANCHOR0
mov w0, -1
strh w0, [x19, 3416]
b .L4000
.L3951:
add w1, w1, 1
and w1, w1, 65535
cmp w5, w1
bne .L3952
.L3950:
ldrb w0, [x2, 2]
and w1, w0, 224
cmp w1, 224
beq .L3953
tst w0, 192
bne .L3954
.L3953:
add x0, x19, :lo12:.LANCHOR0
ldr x0, [x0, 1120]
ldrh w0, [x0, x4, lsl 1]
cbz w0, .L3956
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3306
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L3956
.L3954:
add x20, x20, :lo12:.LANCHOR5
mov w0, 2
b .L4092
.L3878:
bl gc_scan_src_blk
cmn w0, #1
bne .L3957
add x20, x20, :lo12:.LANCHOR5
mov w0, 3
b .L4092
.L3957:
add x1, x19, :lo12:.LANCHOR0
mov w3, 65535
ldrh w0, [x1, 3416]
cmp w0, w3
beq .L3897
ldrh w3, [x1, 3440]
add x20, x20, :lo12:.LANCHOR5
cbz w3, .L3958
mov w0, 4
strh wzr, [x1, 3442]
strb w0, [x20, 264]
b .L4000
.L3958:
ldr x1, [x1, 1120]
ubfiz x0, x0, 1, 16
mov w2, 1
strb w2, [x20, 264]
ldrh w0, [x1, x0]
cbz w0, .L3959
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3336
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3959:
add x20, x19, :lo12:.LANCHOR0
add x21, x20, 3416
ldrh w0, [x20, 3416]
bl ftl_free_sblk
ldr x0, [x20, 1120]
ldrh w1, [x20, 3416]
strh wzr, [x0, x1, lsl 1]
ldrh w0, [x21, 30]
add w0, w0, 1
and w0, w0, 65535
cmp w0, 8
bhi .L3960
strh w0, [x21, 30]
b .L3956
.L3960:
strh wzr, [x21, 30]
bl ftl_flush
bl pm_flush
bl ftl_ext_info_flush
mov w0, 0
bl ftl_info_flush
b .L3956
.L3879:
add x23, x19, :lo12:.LANCHOR0
adrp x24, .LANCHOR3
add x21, x23, 3416
add x24, x24, :lo12:.LANCHOR3
.L4053:
bl gc_scan_src_blk_one_page
ldrh w1, [x21, 2]
ldrh w0, [x24, 1376]
cmp w1, w0
bcs .L3962
cmp w22, 7
bls .L4053
b .L4000
.L3962:
ldrh w3, [x21, 24]
ldrh w1, [x21]
cbz w3, .L3963
add x20, x20, :lo12:.LANCHOR5
mov w0, 4
ldr x2, [x23, 1120]
strh wzr, [x21, 26]
strb w0, [x20, 264]
ubfiz x0, x1, 1, 16
ldrh w2, [x2, x0]
cmp w3, w2
beq .L3964
adrp x0, .LANCHOR2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 10, .L3964
adrp x0, .LC300
add x0, x0, :lo12:.LC300
bl printk
.L3964:
add x0, x19, :lo12:.LANCHOR0
ldrh w2, [x0, 3416]
ldr x1, [x0, 1120]
ldrh w0, [x0, 3440]
ldrh w1, [x1, x2, lsl 1]
cmp w1, w0
beq .L3965
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3379
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3965:
add x19, x19, :lo12:.LANCHOR0
ldrh w1, [x19, 3416]
ldr x0, [x19, 1120]
ldrh w2, [x19, 3440]
strh w2, [x0, x1, lsl 1]
b .L4000
.L3963:
add x20, x20, :lo12:.LANCHOR5
mov w0, 1
ldr x21, [x23, 1104]
strb w0, [x20, 264]
adrp x0, .LANCHOR2
add x21, x21, w1, uxth 2
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 8, .L3966
ldrb w2, [x21, 2]
adrp x0, .LC301
add x0, x0, :lo12:.LC301
ubfx x2, x2, 5, 3
bl printk
.L3966:
ldrb w0, [x21, 2]
and w1, w0, 224
cmp w1, 224
beq .L3967
tst w0, 192
bne .L3968
.L3967:
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3389
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3968:
add x19, x19, :lo12:.LANCHOR0
add x20, x19, 3416
ldrh w0, [x19, 3416]
bl ftl_free_sblk
mov w0, -1
strh w0, [x19, 3416]
ldrh w0, [x20, 30]
add w0, w0, 1
and w0, w0, 65535
cmp w0, 8
bhi .L3969
strh w0, [x20, 30]
b .L4000
.L3969:
strh wzr, [x20, 30]
.L4090:
bl flt_sys_flush
b .L4000
.L3880:
cbnz w27, .L3970
add x0, x19, :lo12:.LANCHOR0
ldrh w0, [x0, 3392]
cmp w0, w22
bcc .L4000
.L3970:
ldrh w1, [x25, 80]
mov w0, 65535
cmp w1, w0
bne .L3971
adrp x21, .LANCHOR3
add x0, x21, :lo12:.LANCHOR3
ldrb w23, [x0, 1337]
cmp w23, 1
bne .L3971
bl ftl_flush
add x0, x19, :lo12:.LANCHOR0
mov w1, 5
ldrh w0, [x0, 5608]
cbz w0, .L3972
mov w0, w23
.L4087:
bl zftl_gc_get_free_sblk
and w22, w0, 65535
mov w0, 65535
cmp w22, w0
beq .L3974
add x0, x19, :lo12:.LANCHOR0
ldr x23, [x0, 1104]
add x23, x23, w22, uxth 2
ldrb w0, [x23, 2]
tst w0, 224
beq .L3975
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3423
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3975:
ldrb w0, [x23, 2]
mov w1, 5
bfi w0, w1, 5, 3
orr w0, w0, 16
strb w0, [x23, 2]
.L3999:
mov w1, 1
mov w0, w22
bl ftl_erase_sblk
add x21, x21, :lo12:.LANCHOR3
mov w0, 5
strb w0, [x25, 84]
add x1, x25, 96
mov w0, w22
bl ftl_get_blk_list_in_sblk
and w0, w0, 255
ldrh w1, [x21, 1376]
add x20, x20, :lo12:.LANCHOR5
strb w0, [x25, 89]
add x19, x19, :lo12:.LANCHOR0
ldrh w2, [x21, 1338]
strh w22, [x25, 80]
mul w0, w0, w1
strh wzr, [x25, 82]
strh w0, [x25, 86]
mov w1, 255
ldrb w0, [x21, 1321]
strb wzr, [x25, 85]
strh wzr, [x25, 90]
mul w2, w2, w0
ldr x0, [x20, 280]
lsl w2, w2, 2
bl ftl_memset
ldrb w0, [x21, 1321]
mov w1, 255
ldrh w2, [x21, 1338]
mul w2, w2, w0
ldr x0, [x20, 288]
lsl w2, w2, 2
bl ftl_memset
ldrb w0, [x21, 1321]
mov w1, 255
ldrh w2, [x21, 1338]
mul w2, w2, w0
ldr x0, [x21, 1328]
bl ftl_memset
ldr x0, [x19, 1128]
mov w1, -1
str w22, [x0, 132]
strh w1, [x0, 128]
strh w1, [x0, 130]
bl pm_flush
bl ftl_ext_info_flush
strh wzr, [x19, 3472]
ldr x0, [x19, 3384]
strh w22, [x0, 126]
mov w0, -1
strh wzr, [x19, 5522]
str w0, [x19, 5612]
mov w0, 0
strh wzr, [x19, 5524]
strh wzr, [x19, 5610]
bl ftl_info_flush
b .L4000
.L3972:
mov w0, 0
b .L4087
.L3971:
cmp w27, 1
mov w23, 4
csinc w23, w23, wzr, eq
add x26, x19, :lo12:.LANCHOR0
cmp w22, 15
mov w0, w23
add w23, w23, 4
adrp x22, .LANCHOR3
csel w23, w23, w0, ls
add x24, x22, :lo12:.LANCHOR3
add x21, x26, 3416
.L3978:
sub w23, w23, #1
and w23, w23, 255
cmp w23, 255
beq .L4000
bl gc_do_copy_back
ldrb w0, [x24, 1337]
cbnz w0, .L3979
ldrb w0, [x26, 3353]
cmp w0, 3
bhi .L3980
bl ftl_write_commit
.L3980:
ldrh w1, [x21, 26]
ldrh w0, [x21, 24]
cmp w1, w0
bcc .L3978
add x20, x20, :lo12:.LANCHOR5
mov w0, 1
strb w0, [x20, 264]
bl ftl_write_commit
bl ftl_flush
ldrh w1, [x21]
ldr x0, [x26, 1120]
ldrh w0, [x0, x1, lsl 1]
cbz w0, .L3982
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3507
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L3982:
add x1, x19, :lo12:.LANCHOR0
ldrh w0, [x1, 3416]
ldr x1, [x1, 1120]
ubfiz x2, x0, 1, 16
ldrh w1, [x1, x2]
cbnz w1, .L3983
bl ftl_free_sblk
b .L3956
.L3983:
mov w2, 1
mov w1, 0
bl gc_add_sblk
b .L3956
.L3979:
ldrh w0, [x21, 2194]
cbz w0, .L3984
strh wzr, [x21, 2194]
bl sblk_wait_write_queue_completed
bl gc_write_completed
ldr w0, [x21, 2196]
cmn w0, #1
beq .L3985
ldrb w1, [x24, 1950]
cbnz w1, .L3986
ldrb w1, [x24, 1322]
cbz w1, .L3987
.L3986:
add x4, x19, :lo12:.LANCHOR0
ldr x1, [x4, 3384]
ldr w2, [x1, 156]
mov w1, 20041
movk w1, 0x444b, lsl 16
cmp w2, w1
bne .L3987
add x22, x22, :lo12:.LANCHOR3
ldrb w2, [x4, 1205]
mov w1, 24
sub w1, w1, w2
ldrh w3, [x22, 1304]
sub w2, w1, w3
mov w1, 1
lsr w0, w0, w3
lsl w1, w1, w2
sub w1, w1, #1
and w0, w1, w0
ldrb w1, [x22, 1306]
ldr x2, [x4, 1104]
udiv w0, w0, w1
lsl x0, x0, 2
add x5, x2, x0
ldrb w1, [x5, 2]
tbz x1, 3, .L3985
ldrh w3, [x4, 3368]
ldrh w6, [x22, 1380]
add w3, w3, 8
cmp w3, w6
bge .L3985
and w1, w1, -25
strb w1, [x5, 2]
ldrh w1, [x4, 1112]
ldr w3, [x2, x0]
ldrh w4, [x2, x0]
ubfx x3, x3, 11, 8
and w5, w4, 2047
mul w1, w1, w3
lsr w3, w3, 3
add w1, w1, w1, lsl 1
add w1, w5, w1, lsr 2
bfi w4, w1, 0, 11
strh w4, [x2, x0]
ldr w1, [x2, x0]
bfi w1, w3, 11, 8
str w1, [x2, x0]
.L3985:
add x21, x19, :lo12:.LANCHOR0
ldr x0, [x21, 1128]
str wzr, [x21, 5612]
strh wzr, [x21, 3472]
ldrh w0, [x0, 80]
bl ftl_free_sblk
ldr x1, [x21, 1128]
mov w0, -1
ldr x2, [x21, 3384]
strh w0, [x1, 80]
strh w0, [x2, 126]
strh w0, [x1, 130]
ldr x0, [x21, 3424]
cbz x0, .L3988
bl zbuf_free
.L3988:
add x19, x19, :lo12:.LANCHOR0
add x20, x20, :lo12:.LANCHOR5
str xzr, [x19, 3424]
bl flt_sys_flush
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3567
strb wzr, [x20, 264]
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L4000
.L3987:
bl ftl_mask_bad_block
b .L3985
.L3984:
ldrh w0, [x25, 86]
ldrh w1, [x21, 26]
cmp w0, 1
ldrh w0, [x21, 24]
bls .L3989
cmp w1, w0
bcc .L3978
add x20, x20, :lo12:.LANCHOR5
mov w0, 1
strb w0, [x20, 264]
ldrh w0, [x21, 56]
add w1, w0, 1
strh w1, [x21, 56]
add x0, x21, w0, sxtw 1
ldrh w1, [x21]
strh w1, [x0, 58]
mov w0, -1
strh w0, [x21]
b .L4000
.L3989:
add x20, x20, :lo12:.LANCHOR5
mov w2, 5
cmp w1, w0
strb w2, [x20, 264]
bcc .L3990
ldrh w0, [x21, 56]
add w1, w0, 1
strh w1, [x21, 56]
add x0, x21, w0, sxtw 1
ldrh w1, [x21]
strh w1, [x0, 58]
mov w0, -1
strh w0, [x21]
.L3990:
add x20, x19, :lo12:.LANCHOR0
bl ftl_flush
bl sblk_wait_write_queue_completed
bl gc_write_completed
ldr x0, [x20, 1128]
ldrh w1, [x25, 80]
strh w1, [x0, 128]
bl pm_flush
bl ftl_ext_info_flush
strh wzr, [x20, 3432]
add x1, x22, :lo12:.LANCHOR3
ldrb w3, [x20, 1212]
ldrh w2, [x1, 1376]
strh w2, [x20, 3434]
ldrb w2, [x1, 1320]
strh w2, [x20, 3436]
cbz w3, .L3991
ldrh w1, [x1, 1338]
strh w1, [x20, 3434]
mov w1, 1
strh w1, [x20, 3436]
.L3991:
cmp w2, 2
bne .L3993
add x0, x19, :lo12:.LANCHOR0
add x22, x22, :lo12:.LANCHOR3
add x0, x0, 3416
ldrh w1, [x0, 18]
ubfiz w1, w1, 1, 15
strh w1, [x0, 18]
ldrb w1, [x22, 1322]
cbnz w1, .L3993
mov w1, 1
strh w1, [x0, 20]
.L3993:
add x19, x19, :lo12:.LANCHOR0
strh wzr, [x19, 3438]
b .L4000
.L3996:
ldrh w1, [x21, 16]
ldrh w0, [x21, 18]
cmp w1, w0
bcc .L3997
add x20, x20, :lo12:.LANCHOR5
mov w0, 6
strb w0, [x20, 264]
ldr x0, [x21, 8]
bl zbuf_free
str xzr, [x21, 8]
b .L4000
.L3997:
cmp w22, 15
bls .L3883
cmp w27, 1
bne .L4000
add w23, w23, 1
and w23, w23, 255
cmp w23, 4
bls .L3883
b .L4000
.L3882:
bl gc_update_l2p_map_new
mov w21, -1
bl gc_free_src_blk
add x19, x19, :lo12:.LANCHOR0
bl ftl_flush
bl pm_flush
strh w21, [x25, 80]
bl ftl_ext_info_flush
ldr x0, [x19, 3384]
strh w21, [x0, 126]
mov w0, 0
bl ftl_info_flush
.L4091:
add x20, x20, :lo12:.LANCHOR5
strb wzr, [x20, 264]
b .L4000
.L3974:
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1040
mov w2, 3430
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
b .L3999
.size zftl_do_gc, .-zftl_do_gc
.align 2
.global zftl_init
.type zftl_init, %function
zftl_init:
stp x29, x30, [sp, -80]!
mov w0, -1
adrp x1, .LC1
add x1, x1, :lo12:.LC1
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
stp x21, x22, [sp, 32]
adrp x20, .LANCHOR5
stp x23, x24, [sp, 48]
adrp x21, .LANCHOR3
str x25, [sp, 64]
add x23, x21, :lo12:.LANCHOR3
add x24, x19, :lo12:.LANCHOR0
add x25, x20, :lo12:.LANCHOR5
adrp x22, .LANCHOR2
strb w0, [x23, 1956]
strb w0, [x24, 3408]
strb w0, [x25, 360]
mov w0, -1
strb wzr, [x24, 3381]
str w0, [x25, 476]
adrp x0, .LC2
strb wzr, [x23, 1957]
add x0, x0, :lo12:.LC2
strb wzr, [x24, 3380]
bl printk
add x1, x22, :lo12:.LANCHOR2
ldrb w2, [x24, 1153]
strb w2, [x23, 1412]
ldrh w4, [x24, 2]
ldrb w9, [x1, 20]
ldrh w5, [x1, 18]
ldrb w3, [x1, 21]
ldrb w0, [x1, 17]
ldrh w6, [x1, 22]
mov w1, 0
sdiv w10, w5, w9
strb w3, [x23, 1306]
mul w2, w2, w3
ubfiz w8, w0, 9, 7
strb w9, [x23, 1320]
mov w3, 1
and w2, w2, 255
strb w0, [x23, 1946]
strh w5, [x23, 1338]
strh w10, [x23, 1376]
strb w2, [x23, 1321]
strh w6, [x24, 1096]
strh w8, [x25, 462]
strh w4, [x23, 1410]
.L4094:
cmp w4, w3
bcs .L4095
mul w7, w0, w5
add x3, x21, :lo12:.LANCHOR3
sub w1, w1, #1
mov w4, 0
strh w1, [x3, 1304]
mov w1, 1
mul w3, w6, w7
lsr w11, w3, 21
.L4096:
cmp w11, w1
bcs .L4097
mov w1, 57344
add x11, x19, :lo12:.LANCHOR0
movk w1, 0x1c, lsl 16
sub w4, w4, #1
mul w3, w3, w2
lsr w6, w6, 4
mul w1, w2, w1
str w3, [x11, 3360]
mul w10, w10, w2
cmp w6, 79
mul w7, w7, w2
lsl w1, w1, w4
add w3, w1, 24576
str w1, [x11, 1032]
add x4, x20, :lo12:.LANCHOR5
sub w7, w7, #1
udiv w0, w3, w0
str w3, [x4, 480]
udiv w3, w3, w7
str w0, [x11, 3364]
sub w11, w8, #1
add w0, w11, w0, lsl 2
add w3, w3, 8
udiv w0, w0, w8
strh w0, [x4, 484]
ubfiz w0, w0, 4, 16
sdiv w0, w0, w10
strh w0, [x4, 220]
add x0, x21, :lo12:.LANCHOR3
strh w3, [x0, 1382]
strh w6, [x0, 1380]
bhi .L4098
mov w3, 80
strh w3, [x0, 1380]
.L4098:
add x0, x21, :lo12:.LANCHOR3
mov w3, 2000
add x6, x19, :lo12:.LANCHOR0
mov w4, 256
cmp w9, 2
strh w3, [x0, 1954]
mov w3, 50
strh w3, [x0, 1952]
add x3, x20, :lo12:.LANCHOR5
strh w4, [x3, 216]
mov w4, 48
strh w4, [x3, 218]
mov w4, 32
strh w4, [x6, 1112]
beq .L4099
ldrb w7, [x0, 1336]
cbz w7, .L4100
.L4099:
add x3, x21, :lo12:.LANCHOR3
mov w0, 150
mov w4, 64
mov w6, 12
strh w0, [x3, 1952]
add x0, x20, :lo12:.LANCHOR5
strh w4, [x0, 218]
add x4, x19, :lo12:.LANCHOR0
strh w6, [x4, 1112]
ldrb w6, [x19, #:lo12:.LANCHOR0]
cbnz w6, .L4101
mov w6, 4
strh w6, [x4, 1112]
mov w4, 600
strh w4, [x3, 1954]
mov w3, 128
strh w3, [x0, 216]
.L4101:
add x0, x19, :lo12:.LANCHOR0
ldrb w0, [x0, 1213]
cbz w0, .L4103
add x0, x21, :lo12:.LANCHOR3
mov w3, 200
strh w3, [x0, 1952]
mov w3, 2000
strh w3, [x0, 1954]
.L4103:
add x0, x19, :lo12:.LANCHOR0
mul w2, w5, w2
mov w3, 1
str wzr, [x0, 3396]
add x0, x20, :lo12:.LANCHOR5
cmp w8, w2, lsl 2
strb w3, [x0, 465]
bge .L4105
mov w2, 2
strb w2, [x0, 465]
.L4105:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4106
adrp x0, .LC302
add x0, x0, :lo12:.LC302
bl printk
.L4106:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4107
add x0, x19, :lo12:.LANCHOR0
ldr w1, [x0, 3360]
adrp x0, .LC303
add x0, x0, :lo12:.LC303
bl printk
.L4107:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4108
add x0, x19, :lo12:.LANCHOR0
ldr w1, [x0, 3364]
adrp x0, .LC304
add x0, x0, :lo12:.LC304
bl printk
.L4108:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4109
add x0, x20, :lo12:.LANCHOR5
ldr w1, [x0, 480]
adrp x0, .LC305
add x0, x0, :lo12:.LC305
bl printk
.L4109:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4110
add x0, x20, :lo12:.LANCHOR5
ldrh w1, [x0, 484]
adrp x0, .LC306
add x0, x0, :lo12:.LC306
bl printk
.L4110:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4111
add x0, x20, :lo12:.LANCHOR5
ldrh w1, [x0, 462]
adrp x0, .LC307
add x0, x0, :lo12:.LC307
bl printk
.L4111:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4112
add x0, x20, :lo12:.LANCHOR5
ldrh w1, [x0, 220]
adrp x0, .LC308
add x0, x0, :lo12:.LC308
bl printk
.L4112:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4113
add x0, x21, :lo12:.LANCHOR3
ldrh w1, [x0, 1380]
adrp x0, .LC309
add x0, x0, :lo12:.LC309
bl printk
.L4113:
ldr w0, [x22, #:lo12:.LANCHOR2]
tbz x0, 12, .L4114
add x0, x21, :lo12:.LANCHOR3
ldrh w1, [x0, 1382]
adrp x0, .LC310
add x0, x0, :lo12:.LC310
bl printk
.L4114:
add x24, x20, :lo12:.LANCHOR5
bl zbuf_init
mov w0, 16384
bl ftl_malloc
add x25, x19, :lo12:.LANCHOR0
add x23, x21, :lo12:.LANCHOR3
str x0, [x24, 392]
mov w0, 16384
bl ftl_malloc
str x0, [x24, 408]
mov w0, 16384
bl ftl_malloc
str x0, [x24, 488]
mov w0, 256
bl ftl_dma32_malloc
str x0, [x24, 376]
mov w0, 256
bl ftl_dma32_malloc
ldrh w1, [x25, 1096]
str x0, [x24, 416]
mov w0, 6
mul w0, w1, w0
bl ftl_dma32_malloc
str x0, [x25, 1040]
ldrb w1, [x23, 1321]
ldrh w0, [x23, 1376]
mul w0, w0, w1
lsl w0, w0, 2
bl ftl_dma32_malloc
ldrb w1, [x23, 1321]
str x0, [x23, 1936]
ldrh w0, [x23, 1376]
ldr x2, [x24, 408]
str x2, [x23, 1928]
mul w0, w0, w1
ldrh w1, [x25, 1096]
add x3, x2, w0, sxtw 3
lsl w0, w0, 1
add w1, w0, w1, lsr 1
ldr w0, [x22, #:lo12:.LANCHOR2]
add x1, x2, w1, sxtw 2
str x3, [x25, 1120]
str x1, [x25, 1128]
tbz x0, 12, .L4115
adrp x0, .LC311
add x0, x0, :lo12:.LC311
bl printk
.L4115:
add x0, x19, :lo12:.LANCHOR0
add x21, x21, :lo12:.LANCHOR3
ldrh w1, [x0, 1096]
ldrh w0, [x21, 1376]
ldrb w21, [x21, 1321]
mul w21, w0, w21
add x0, x20, :lo12:.LANCHOR5
ldrh w23, [x0, 484]
add w21, w1, w21, lsl 2
lsl w1, w1, 2
lsl w21, w21, 1
add w21, w21, 632
add w23, w1, w23, lsl 2
ldr w1, [x22, #:lo12:.LANCHOR2]
add w23, w23, 704
tbz x1, 12, .L4116
ldrh w3, [x0, 462]
mov w2, w23
adrp x0, .LC312
mov w1, w21
add x0, x0, :lo12:.LC312
bl printk
.L4116:
add x20, x20, :lo12:.LANCHOR5
ldrh w0, [x20, 462]
cmp w21, w0
bhi .L4117
cmp w23, w0
bls .L4118
.L4117:
.L4171:
b .L4171
.L4095:
add w1, w1, 1
lsl w3, w3, 1
and w1, w1, 65535
b .L4094
.L4097:
add w4, w4, 1
lsl w1, w1, 1
and w4, w4, 65535
b .L4096
.L4100:
ldrb w6, [x6, 1212]
cbz w6, .L4103
mov w6, 1200
strh w4, [x0, 1952]
strh w6, [x0, 1954]
strh w4, [x3, 218]
b .L4103
.L4118:
bl sblk_init
bl gc_init
bl ftl_info_blk_init
cmn w0, #1
beq .L4093
add x21, x19, :lo12:.LANCHOR0
bl ftl_ext_info_init
mov w0, 1
bl pm_init
bl lpa_rebuild_hash
ldr x0, [x21, 1128]
mov x1, 0
add x0, x0, 16
bl ftl_open_sblk_recovery
ldr x0, [x21, 1128]
add x1, x0, 16
add x0, x0, 48
bl ftl_open_sblk_recovery
ldr x1, [x21, 3384]
ldr w0, [x1, 8]
add w0, w0, 16
str w0, [x1, 8]
ldr x0, [x21, 1128]
add x0, x0, 16
bl ftl_info_data_recovery
ldr x0, [x21, 1128]
add x0, x0, 48
bl ftl_info_data_recovery
ldr x0, [x21, 1128]
add x0, x0, 80
bl ftl_info_data_recovery
bl gc_recovery
bl pm_flush
mov w0, 1
bl ftl_total_vpn_update
ldrb w0, [x20, 401]
cbz w0, .L4120
ldr x1, [x21, 3384]
ldr w0, [x1, 68]
add w0, w0, 1
str w0, [x1, 68]
.L4120:
bl ftl_ext_info_flush
mov w0, 0
bl ftl_info_flush
bl print_ftl_debug_info
add x1, x19, :lo12:.LANCHOR0
ldr x0, [x1, 1128]
ldrh w0, [x0, 124]
cbnz w0, .L4127
ldrh w0, [x1, 3368]
ldrh w1, [x1, 3372]
add w0, w0, w1
cmp w0, 7
ble .L4127
.L4123:
mov w0, 0
.L4093:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldr x25, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L4127:
add x19, x19, :lo12:.LANCHOR0
mov w20, 16384
mov w21, 65535
.L4124:
mov w1, 1
mov w0, 0
bl zftl_do_gc
mov w1, 1
mov w0, w1
bl zftl_do_gc
ldr x0, [x19, 1128]
ldrh w1, [x0, 124]
cbnz w1, .L4122
ldrh w0, [x0, 80]
cmp w0, w21
bne .L4122
ldrh w0, [x19, 3368]
ldrh w1, [x19, 3372]
add w0, w0, w1
cmp w0, 7
bgt .L4123
.L4122:
subs w20, w20, #1
bne .L4124
b .L4123
.size zftl_init, .-zftl_init
.align 2
.global rk_ftl_init
.type rk_ftl_init, %function
rk_ftl_init:
stp x29, x30, [sp, -48]!
adrp x0, jiffies
add x29, sp, 0
stp x19, x20, [sp, 16]
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR5
add x19, x21, :lo12:.LANCHOR5
ldr x0, [x0, #:lo12:jiffies]
str x0, [x19, 224]
mov w0, 136
strb wzr, [x19, 496]
str wzr, [x19, 248]
bl ftl_dma32_malloc
str x0, [x19, 232]
cbnz x0, .L4174
.L4176:
mov w20, -1
.L4173:
mov w0, w20
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L4174:
mov w0, 2048
bl ftl_dma32_malloc
add x1, x19, 512
stp x0, xzr, [x19, 504]
str xzr, [x19, 240]
add x0, x19, 240
bl rknand_get_reg_addr
ldr x0, [x19, 240]
cbz x0, .L4176
bl rk_nandc_irq_init
ldr x0, [x19, 504]
mov w3, 2048
mov w2, 0
mov w1, 0
bl flash_sram_load_store
bl rknand_flash_cs_init
ldr x0, [x19, 232]
adrp x1, zftl_deinit
add x1, x1, :lo12:zftl_deinit
str x1, [x0, 80]
adrp x1, zftl_cache_flush
add x1, x1, :lo12:zftl_cache_flush
str x1, [x0, 64]
adrp x1, zftl_flash_suspend
add x1, x1, :lo12:zftl_flash_suspend
str x1, [x0, 88]
adrp x1, zftl_flash_resume
add x1, x1, :lo12:zftl_flash_resume
str x1, [x0, 96]
adrp x1, zftl_get_density
add x1, x1, :lo12:zftl_get_density
str x1, [x0, 72]
adrp x1, zftl_read_flash_info
add x1, x1, :lo12:zftl_read_flash_info
str x1, [x0, 112]
adrp x1, zftl_read
add x1, x1, :lo12:zftl_read
str x1, [x0, 40]
adrp x1, zftl_write
add x1, x1, :lo12:zftl_write
str x1, [x0, 48]
adrp x1, zftl_sys_read
add x1, x1, :lo12:zftl_sys_read
str x1, [x0, 24]
adrp x1, zftl_sys_write
add x1, x1, :lo12:zftl_sys_write
str x1, [x0, 32]
adrp x1, zftl_vendor_read
add x1, x1, :lo12:zftl_vendor_read
str x1, [x0, 8]
adrp x1, zftl_vendor_write
add x1, x1, :lo12:zftl_vendor_write
str x1, [x0, 16]
adrp x1, zftl_nandc_get_irq_status
add x1, x1, :lo12:zftl_nandc_get_irq_status
str x1, [x0, 120]
adrp x1, zftl_proc_ftl_read
add x1, x1, :lo12:zftl_proc_ftl_read
str x1, [x0, 128]
adrp x1, zftl_do_gc
add x1, x1, :lo12:zftl_do_gc
str x1, [x0, 104]
adrp x1, zftl_discard
add x1, x1, :lo12:zftl_discard
str x1, [x0, 56]
ldr x0, [x19, 240]
bl nand_flash_init
mov w22, w0
cbnz w0, .L4177
bl zftl_init
mov w20, w0
bl zftl_proc_debug_init
mov w0, 1
strb w0, [x19, 496]
.L4178:
mov w1, w20
adrp x0, .LC313
add x0, x0, :lo12:.LC313
bl printk
b .L4173
.L4177:
ldr x0, [x19, 232]
adrp x1, ftl_deinit
add x1, x1, :lo12:ftl_deinit
str x1, [x0, 80]
adrp x1, ftl_cache_flush
add x1, x1, :lo12:ftl_cache_flush
str x1, [x0, 64]
adrp x1, ftl_flash_suspend
add x1, x1, :lo12:ftl_flash_suspend
str x1, [x0, 88]
adrp x1, ftl_flash_resume
add x1, x1, :lo12:ftl_flash_resume
str x1, [x0, 96]
adrp x1, ftl_get_density
add x1, x1, :lo12:ftl_get_density
str x1, [x0, 72]
adrp x1, ftl_read_flash_info
add x1, x1, :lo12:ftl_read_flash_info
str x1, [x0, 112]
adrp x1, ftl_read
add x1, x1, :lo12:ftl_read
str x1, [x0, 40]
adrp x1, ftl_write
add x1, x1, :lo12:ftl_write
str x1, [x0, 48]
adrp x1, ftl_sys_read
add x1, x1, :lo12:ftl_sys_read
str x1, [x0, 24]
adrp x1, ftl_sys_write
add x1, x1, :lo12:ftl_sys_write
str x1, [x0, 32]
adrp x1, ftl_vendor_read
add x1, x1, :lo12:ftl_vendor_read
str x1, [x0, 8]
adrp x1, ftl_vendor_write
add x1, x1, :lo12:ftl_vendor_write
str x1, [x0, 16]
adrp x1, ftl_nandc_get_irq_status
add x1, x1, :lo12:ftl_nandc_get_irq_status
str x1, [x0, 120]
adrp x1, ftl_proc_ftl_read
add x1, x1, :lo12:ftl_proc_ftl_read
str x1, [x0, 128]
adrp x1, ftl_do_gc
add x1, x1, :lo12:ftl_do_gc
str x1, [x0, 104]
adrp x1, ftl_discard
add x1, x1, :lo12:ftl_discard
str x1, [x0, 56]
ldr x0, [x19, 240]
bl FlashInit
mov w20, w0
cmn w22, #2
adrp x22, .LANCHOR2
bne .L4179
add x19, x22, :lo12:.LANCHOR2
mov w2, 32
add x19, x19, 8
adrp x1, gNandParaInfo
mov x0, x19
add x1, x1, :lo12:gNandParaInfo
bl ftl_memcpy
ldrb w0, [x19, 18]
bl flash_lsb_page_tbl_build
ldrh w0, [x19, 10]
strh w0, [x19, 26]
.L4179:
adrp x0, g_nandc_version_data
ldr w1, [x0, #:lo12:g_nandc_version_data]
mov w0, 12336
movk w0, 0x5638, lsl 16
cmp w1, w0
adrp x1, .LANCHOR0
bne .L4180
adrp x0, gFlashSlcMode
ldrb w0, [x0, #:lo12:gFlashSlcMode]
cbnz w0, .L4181
.L4180:
add x0, x1, :lo12:.LANCHOR0
strb wzr, [x1, #:lo12:.LANCHOR0]
strb wzr, [x0, 1154]
.L4181:
adrp x2, gNandFlashIDBEccBits
add x0, x1, :lo12:.LANCHOR0
add x22, x22, :lo12:.LANCHOR2
add x21, x21, :lo12:.LANCHOR5
ldrb w2, [x2, #:lo12:gNandFlashIDBEccBits]
strb w2, [x0, 1152]
adrp x2, gNandFlashEccBits
ldrh w3, [x22, 18]
str xzr, [x21, 336]
ldrb w2, [x2, #:lo12:gNandFlashEccBits]
strb w2, [x0, 1249]
mov w0, 0
mov w2, 1
.L4182:
cmp w3, w2
bcs .L4183
add x1, x1, :lo12:.LANCHOR0
adrp x2, .LANCHOR3+1304
sub w0, w0, #1
strh w0, [x2, #:lo12:.LANCHOR3+1304]
strb wzr, [x1, 1192]
cbnz w20, .L4178
bl FtlInit
mov w20, w0
b .L4178
.L4183:
add w0, w0, 1
lsl w2, w2, 1
and w0, w0, 65535
b .L4182
.size rk_ftl_init, .-rk_ftl_init
.align 2
.global zftl_write
.type zftl_write, %function
zftl_write:
stp x29, x30, [sp, -112]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, w0
adrp x0, .LANCHOR2
stp x21, x22, [sp, 32]
stp x25, x26, [sp, 64]
mov w20, w1
ldr w0, [x0, #:lo12:.LANCHOR2]
mov w21, w2
stp x23, x24, [sp, 48]
mov x26, x3
stp x27, x28, [sp, 80]
tbz x0, 12, .L4189
ldr w4, [x26]
mov w3, w2
adrp x0, .LC314
mov w2, w1
add x0, x0, :lo12:.LC314
mov w1, w19
bl printk
.L4189:
cbnz w19, .L4190
adrp x0, .LANCHOR0+1032
mov w19, 24576
ldr w0, [x0, #:lo12:.LANCHOR0+1032]
.L4191:
cmp w0, w20
ccmp w0, w21, 0, hi
bcc .L4209
add w1, w20, w21
cmp w0, w1
bcc .L4209
adrp x0, .LANCHOR3
add x0, x0, :lo12:.LANCHOR3
add w19, w19, w20
sub w23, w21, #1
add w23, w23, w19
adrp x22, .LANCHOR0
ldrb w1, [x0, 1946]
add x27, x22, :lo12:.LANCHOR0
str x0, [x29, 104]
add w0, w19, w21
str w0, [x29, 100]
udiv w25, w19, w1
udiv w23, w23, w1
mov w20, w25
sub w24, w23, w25
add w24, w24, 1
.L4193:
cbnz w24, .L4202
bl ftl_write_commit
mov w1, 1
mov w0, 0
bl zftl_do_gc
add x1, x22, :lo12:.LANCHOR0
ldr x0, [x1, 1128]
ldrh w0, [x0, 124]
cbnz w0, .L4203
ldrh w0, [x1, 3368]
ldrh w1, [x1, 3372]
add w0, w0, w1
cmp w0, 11
bgt .L4204
.L4203:
mov w1, 1
mov w0, 0
bl zftl_do_gc
.L4204:
add x22, x22, :lo12:.LANCHOR0
.L4205:
ldrh w0, [x22, 3368]
ldrh w1, [x22, 3372]
add w0, w0, w1
cmp w0, 7
ble .L4206
bl timer_get_time
adrp x1, .LANCHOR5+472
str w0, [x1, #:lo12:.LANCHOR5+472]
mov w0, 0
.L4188:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L4190:
cmp w19, 3
bhi .L4209
lsl w19, w19, 13
mov w0, 8192
b .L4191
.L4202:
ldrb w0, [x27, 3381]
cbz w0, .L4194
ldrb w0, [x27, 3353]
cmp w0, 2
bhi .L4194
bl ftl_write_commit
.L4194:
mov w0, 0
bl buf_alloc
mov x28, x0
cbnz x0, .L4195
bl ftl_write_commit
b .L4193
.L4195:
strb wzr, [x0, 57]
cmp w20, w25
ldr x0, [x29, 104]
ccmp w20, w23, 4, ne
ldrb w0, [x0, 1946]
strb w0, [x28, 56]
bne .L4198
cmp w20, w25
bne .L4199
udiv w1, w19, w0
msub w1, w1, w0, w19
and w1, w1, 255
strb w1, [x28, 57]
sub w0, w0, w1
and w0, w0, 255
cmp w21, w0
csel w0, w21, w0, cc
.L4217:
strb w0, [x28, 56]
.L4198:
ldrb w4, [x28, 57]
mov x1, x26
ldrb w2, [x28, 56]
sub w24, w24, #1
ldr x0, [x28, 8]
lsl w2, w2, 9
add x0, x0, x4, lsl 9
bl ftl_memcpy
ldr x1, [x27, 3384]
str w20, [x28, 36]
add w20, w20, 1
ldr w0, [x1, 8]
add w2, w0, 1
str w2, [x1, 8]
str w0, [x28, 32]
mov x0, x28
bl ftl_write_buf
ldrb w0, [x28, 56]
add x26, x26, x0, lsl 9
b .L4193
.L4199:
ldr w1, [x29, 100]
msub w0, w0, w20, w1
b .L4217
.L4206:
mov w1, 1
mov w0, 0
bl zftl_do_gc
mov w1, 1
mov w0, w1
bl zftl_do_gc
b .L4205
.L4209:
mov w0, -1
b .L4188
.size zftl_write, .-zftl_write
.align 2
.global zftl_vendor_write
.type zftl_vendor_write, %function
zftl_vendor_write:
stp x29, x30, [sp, -16]!
mov x3, x2
mov w2, w1
add w1, w0, 512
add x29, sp, 0
mov w0, 2
bl zftl_write
ldp x29, x30, [sp], 16
ret
.size zftl_vendor_write, .-zftl_vendor_write
.align 2
.global zftl_sys_write
.type zftl_sys_write, %function
zftl_sys_write:
stp x29, x30, [sp, -16]!
mov x3, x2
mov w2, w1
mov w1, w0
add x29, sp, 0
mov w0, 2
bl zftl_write
ldp x29, x30, [sp], 16
ret
.size zftl_sys_write, .-zftl_sys_write
.align 2
.global zftl_discard
.type zftl_discard, %function
zftl_discard:
stp x29, x30, [sp, -128]!
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, w1
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR0
add x1, x21, :lo12:.LANCHOR0
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldr w1, [x1, 1032]
cmp w0, w1
ccmp w19, w1, 2, cc
bhi .L4244
add w2, w0, w19
cmp w1, w2
bcc .L4244
add w23, w0, 24576
adrp x24, .LANCHOR5
add x0, x24, :lo12:.LANCHOR5
ldr w1, [x0, 520]
add w1, w19, w1
str w1, [x0, 520]
adrp x0, .LANCHOR2
str x0, [x29, 104]
ldr w2, [x0, #:lo12:.LANCHOR2]
tbz x2, 12, .L4224
adrp x0, .LC315
mov w4, 0
mov w3, w19
mov w2, w23
add x0, x0, :lo12:.LC315
bl printk
.L4224:
add x0, x21, :lo12:.LANCHOR0
adrp x25, .LANCHOR3
ldr x0, [x0, 3384]
ldr w27, [x0, 8]
add w1, w27, 1
str w1, [x0, 8]
bl ftl_write_commit
bl ftl_flush
add x0, x25, :lo12:.LANCHOR3
ldrb w22, [x0, 1946]
udiv w20, w23, w22
msub w26, w20, w22, w23
cbz w26, .L4225
sub w22, w22, w26
mov w0, w20
cmp w22, w19
csel w22, w22, w19, ls
bl lpa_hash_get_ppa
str w0, [x29, 120]
cmn w0, #1
bne .L4226
mov w2, 0
add x1, x29, 120
mov w0, w20
bl pm_log2phys
.L4226:
ldr w0, [x29, 120]
and w28, w22, 65535
cmn w0, #1
beq .L4228
mov w0, 0
bl buf_alloc
mov x3, x0
cbz x0, .L4228
strb w26, [x0, 57]
ubfiz x26, x26, 9, 25
strb w22, [x0, 56]
mov w1, 0
ldr x0, [x0, 8]
lsl w2, w28, 9
stp w27, w20, [x3, 32]
str x3, [x29, 96]
add x0, x0, x26
bl ftl_memset
ldr x3, [x29, 96]
mov x0, x3
bl ftl_write_buf
bl ftl_write_commit
add x0, x21, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldr w0, [x1, 76]
add w0, w0, 1
str w0, [x1, 76]
.L4228:
add w20, w20, 1
sub w19, w19, w28
.L4225:
cbz w19, .L4230
bl ftl_flush
.L4230:
add x22, x25, :lo12:.LANCHOR3
add x26, x21, :lo12:.LANCHOR0
mov w0, -1
mov w28, 1
str w0, [x29, 124]
.L4231:
ldrb w0, [x22, 1946]
cmp w19, w0
bcs .L4236
cbz w19, .L4238
mov w0, w20
bl lpa_hash_get_ppa
str w0, [x29, 120]
cmn w0, #1
bne .L4239
mov w2, 0
add x1, x29, 120
mov w0, w20
bl pm_log2phys
.L4239:
ldr w0, [x29, 120]
cmn w0, #1
beq .L4238
mov w0, 0
bl buf_alloc
mov x22, x0
cbz x0, .L4238
add x25, x25, :lo12:.LANCHOR3
strb wzr, [x0, 57]
strb w19, [x0, 56]
stp w27, w20, [x22, 32]
ldrb w0, [x25, 1946]
cmp w19, w0
bcc .L4241
adrp x1, .LANCHOR4
add x1, x1, :lo12:.LANCHOR4
add x1, x1, 1056
mov w2, 1496
adrp x0, .LC0
add x0, x0, :lo12:.LC0
bl printk
bl dump_stack
.L4241:
ldr x0, [x22, 8]
lsl w2, w19, 9
mov w1, 0
bl ftl_memset
mov x0, x22
bl ftl_write_buf
bl ftl_write_commit
add x0, x21, :lo12:.LANCHOR0
ldr x1, [x0, 3384]
ldr w0, [x1, 76]
add w0, w0, 1
str w0, [x1, 76]
.L4238:
add x0, x24, :lo12:.LANCHOR5
ldr w1, [x0, 520]
cmp w1, 8192
bls .L4245
ldr x0, [x29, 104]
ldr w0, [x0, #:lo12:.LANCHOR2]
tbz x0, 12, .L4242
adrp x0, .LC315
mov w4, 0
mov w3, w19
mov w2, w23
add x0, x0, :lo12:.LC315
bl printk
.L4242:
add x24, x24, :lo12:.LANCHOR5
add x21, x21, :lo12:.LANCHOR0
str wzr, [x24, 520]
bl flt_sys_flush
mov w0, 1
str w0, [x21, 3396]
.L4245:
mov w0, 0
b .L4222
.L4236:
mov w0, w20
bl lpa_hash_get_ppa
str w0, [x29, 120]
cmn w0, #1
beq .L4232
mov w0, 0
bl buf_alloc
mov x3, x0
cbz x0, .L4234
ldrb w2, [x22, 1946]
mov w1, 0
strb w2, [x0, 56]
strb wzr, [x0, 57]
ldr x0, [x0, 8]
lsl w2, w2, 9
stp w27, w20, [x3, 32]
str x3, [x29, 96]
bl ftl_memset
ldr x3, [x29, 96]
mov x0, x3
bl ftl_write_buf
bl ftl_write_commit
.L4271:
ldr x1, [x26, 3384]
ldr w0, [x1, 76]
add w0, w0, 1
str w0, [x1, 76]
.L4234:
ldrb w0, [x22, 1946]
add w20, w20, 1
sub w19, w19, w0
b .L4231
.L4232:
mov w2, 0
add x1, x29, 120
mov w0, w20
bl pm_log2phys
ldr w0, [x29, 120]
cmn w0, #1
beq .L4234
add x1, x29, 124
mov w2, 1
mov w0, w20
bl pm_log2phys
ldrb w1, [x26, 1205]
mov w0, 24
ldrh w2, [x22, 1304]
sub w0, w0, w1
ldr w1, [x29, 120]
sub w0, w0, w2
lsr w1, w1, w2
lsl w0, w28, w0
sub w0, w0, #1
and w0, w0, w1
ldrb w1, [x22, 1306]
udiv w0, w0, w1
bl ftl_vpn_decrement
b .L4271
.L4244:
mov w0, -1
.L4222:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 128
ret
.size zftl_discard, .-zftl_discard
.align 2
.global dump_pm_blk
.type dump_pm_blk, %function
dump_pm_blk:
stp x29, x30, [sp, -48]!
mov w2, 4
adrp x0, .LC267
add x0, x0, :lo12:.LC267
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR0
add x19, x19, :lo12:.LANCHOR0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR5
add x21, x21, :lo12:.LANCHOR5
mov w20, 0
mov w22, 65535
ldr x1, [x19, 3384]
add x1, x1, 704
ldrh w3, [x1, -6]
bl rknand_print_hex
ldrh w3, [x21, 220]
adrp x0, .LC268
ldr x1, [x19, 3384]
mov w2, 2
add x0, x0, :lo12:.LC268
add x1, x1, 416
bl rknand_print_hex
.L4273:
ldrh w0, [x21, 220]
cmp w0, w20
bhi .L4275
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.L4275:
ldr x0, [x19, 3384]
add x0, x0, w20, sxtw 1
ldrh w0, [x0, 416]
cmp w0, w22
beq .L4274
mov x1, 0
bl ftl_sblk_dump
.L4274:
add w20, w20, 1
and w20, w20, 65535
b .L4273
.size dump_pm_blk, .-dump_pm_blk
.align 2
.global id_block_prog_msb_ff_data
.type id_block_prog_msb_ff_data, %function
id_block_prog_msb_ff_data:
stp x29, x30, [sp, -96]!
add x29, sp, 0
stp x21, x22, [sp, 32]
adrp x21, .LANCHOR0
stp x23, x24, [sp, 48]
and w24, w0, 255
add x0, x21, :lo12:.LANCHOR0
stp x19, x20, [sp, 16]
stp x25, x26, [sp, 64]
and w19, w2, 65535
str x27, [sp, 80]
ldrb w2, [x0, 1154]
cbnz w2, .L4277
ldr x0, [x0, 1144]
ldrb w0, [x0, 19]
sub w0, w0, #5
and w0, w0, 255
cmp w0, 63
bhi .L4277
mov x2, 16391
movk x2, 0x4000, lsl 16
movk x2, 0x8000, lsl 48
lsr x0, x2, x0
tbz x0, 0, .L4277
adrp x20, .LANCHOR3
add x20, x20, :lo12:.LANCHOR3
adrp x23, .LC316
mov w25, w1
add x20, x20, 2476
add x23, x23, :lo12:.LC316
.L4279:
add x26, x21, :lo12:.LANCHOR0
ldr x0, [x26, 1144]
ldrh w0, [x0, 10]
cmp w0, w19
bhi .L4280
.L4277:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldr x27, [sp, 80]
ldp x29, x30, [sp], 96
ret
.L4280:
sxtw x22, w19
add w27, w19, w25
mov w1, w19
mov w2, w27
mov x0, x23
ldrh w3, [x20, x22, lsl 1]
bl printk
ldrh w1, [x20, x22, lsl 1]
mov w0, 65535
cmp w1, w0
bne .L4277
adrp x22, .LANCHOR5
add x22, x22, :lo12:.LANCHOR5
mov w2, 16384
mov w1, 255
add w19, w19, 1
ldr x0, [x22, 304]
and w19, w19, 65535
bl ftl_memset
ldr x0, [x26, 1144]
mov w1, w27
ldr x3, [x22, 304]
mov x2, x3
ldrb w4, [x0, 9]
mov w0, w24
bl flash_prog_page
b .L4279
.size id_block_prog_msb_ff_data, .-id_block_prog_msb_ff_data
.align 2
.global write_idblock
.type write_idblock, %function
write_idblock:
stp x29, x30, [sp, -304]!
mov w4, 35899
movk w4, 0xfcdc, lsl 16
add x29, sp, 0
stp x23, x24, [sp, 48]
adrp x23, .LANCHOR0
stp x19, x20, [sp, 16]
ldrb w3, [x23, #:lo12:.LANCHOR0]
str w3, [x29, 160]
stp x21, x22, [sp, 32]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
ldrh w3, [x29, 160]
str w3, [x29, 212]
ldr w3, [x1]
cmp w3, w4
mov w4, 19282
movk w4, 0x534e, lsl 16
ccmp w3, w4, 4, ne
beq .L4283
add w4, w4, 327680
cmp w3, w4
beq .L4283
.L4401:
mov w0, -1
.L4282:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 304
ret
.L4283:
cmp w0, 15
bls .L4401
add x25, x23, :lo12:.LANCHOR0
mov w19, w0
str x2, [x29, 168]
str x1, [x29, 216]
ldr x0, [x25, 1144]
ldrb w20, [x0, 9]
ldrh w24, [x0, 10]
adrp x0, .LANCHOR2+34
ldrh w21, [x0, #:lo12:.LANCHOR2+34]
ldrb w0, [x25, 1154]
str w0, [x29, 144]
mov w0, 59392
movk w0, 0x3, lsl 16
bl ftl_malloc
mov x22, x0
cbz x0, .L4401
adrp x0, .LANCHOR5+496
ldrb w0, [x0, #:lo12:.LANCHOR5+496]
cbz w0, .L4340
ldrb w1, [x23, #:lo12:.LANCHOR0]
ldrb w0, [x25, 1154]
cbz w1, .L4287
cmp w0, 0
cset w0, eq
.L4398:
str w0, [x29, 236]
b .L4286
.L4287:
cmp w0, 3
beq .L4341
ldr w2, [x29, 212]
cmp w0, 2
mov w1, 2
mov w0, 3
csel w1, w2, w1, ne
csel w0, wzr, w0, ne
str w1, [x29, 212]
b .L4398
.L4340:
str wzr, [x29, 236]
.L4286:
add w19, w19, 511
lsr w19, w19, 9
cmp w19, 8
bls .L4343
cmp w19, 500
bhi .L4289
.L4288:
ldr x0, [x29, 216]
mov w1, 35899
movk w1, 0xfcdc, lsl 16
ldr w0, [x0]
cmp w0, w1
mov w1, 19282
movk w1, 0x534e, lsl 16
ccmp w0, w1, 4, ne
beq .L4290
add w1, w1, 327680
cmp w0, w1
beq .L4290
.L4289:
mov x0, x22
bl ftl_free
b .L4401
.L4341:
str w0, [x29, 212]
mov w0, 2
b .L4398
.L4343:
mov w19, 8
b .L4288
.L4290:
mov w0, 0
bl zftl_flash_exit_slc_mode
add x0, x23, :lo12:.LANCHOR0
mul w24, w24, w20
mov w4, 17739
mov w2, 63871
movk w4, 0x4e52, lsl 16
ldrb w0, [x0, 1154]
strb w0, [x23, #:lo12:.LANCHOR0]
sub w0, w24, #1
add w0, w0, w19
udiv w0, w0, w24
str w0, [x29, 132]
ldr x0, [x29, 216]
add x3, x0, 253952
mov w0, 0
add x3, x3, 1532
.L4296:
ldr w1, [x3]
cbnz w1, .L4291
cbnz w0, .L4292
str w4, [x3, 512]
.L4293:
add w0, w0, 1
sub w2, w2, #1
cmp w0, 4095
sub x3, x3, #4
csel w0, w0, wzr, cc
cmp w2, 4096
bne .L4296
.L4295:
ldr x1, [x29, 168]
mul w0, w21, w20
mov w3, 5
mov w2, 4
str w0, [x29, 164]
adrp x0, .LC318
add x0, x0, :lo12:.LC318
bl rknand_print_hex
mov w2, w19
mov w1, w19
adrp x0, .LC319
add x0, x0, :lo12:.LC319
bl printk
str xzr, [x29, 224]
adrp x0, .LANCHOR2
add x0, x0, :lo12:.LANCHOR2
add x0, x0, 8
str wzr, [x29, 232]
str x0, [x29, 136]
.L4337:
adrp x27, .LANCHOR5
add x1, x27, :lo12:.LANCHOR5
ldr w0, [x29, 224]
ldrb w1, [x1, 496]
cbnz w1, .L4297
ldr x2, [x29, 224]
cmp w0, 0
ldr x1, [x29, 168]
ldr w1, [x1, x2, lsl 2]
ldr w2, [x29, 164]
mul w21, w2, w1
ldr w2, [x29, 132]
ccmp w2, 1, 0, ne
bls .L4298
ldr x2, [x29, 168]
sub w0, w0, #1
ldr w0, [x2, x0, lsl 2]
add w0, w0, 1
cmp w1, w0
bne .L4298
.L4299:
ldr x0, [x29, 224]
add x0, x0, 1
str x0, [x29, 224]
cmp x0, 4
bne .L4337
.L4339:
mov w0, 0
bl zftl_flash_exit_slc_mode
adrp x0, .LANCHOR0
ldrb w2, [x29, 160]
add x1, x0, :lo12:.LANCHOR0
strb w2, [x0, #:lo12:.LANCHOR0]
ldr w2, [x29, 236]
cbz w2, .L4338
ldrb w2, [x29, 144]
strb w2, [x1, 1154]
.L4338:
add x0, x0, :lo12:.LANCHOR0
mov w1, 2
strb w1, [x0, 1208]
mov w0, 0
bl zftl_flash_enter_slc_mode
mov x0, x22
bl ftl_free
ldr w0, [x29, 232]
cmp w0, 0
csetm w0, eq
b .L4282
.L4292:
ldr x1, [x29, 216]
ldr w1, [x1, w0, uxtw 2]
str w1, [x3, 512]
b .L4293
.L4291:
adrp x0, .LC317
add x0, x0, :lo12:.LC317
bl printk
b .L4295
.L4297:
adrp x20, .LANCHOR0
add x23, x20, :lo12:.LANCHOR0
ldr w2, [x29, 224]
ldr x1, [x23, 1048]
add x1, x1, w2, uxtw
ldrb w21, [x1, 32]
mov x1, x20
cmp w21, 255
beq .L4299
ldr w2, [x29, 164]
mul w21, w21, w2
ldr w2, [x29, 236]
cbz w2, .L4298
and w0, w0, -3
cmp w0, 1
beq .L4300
cmp w2, 3
bne .L4301
.L4300:
add x2, x1, :lo12:.LANCHOR0
ldrb w0, [x29, 212]
strb w0, [x1, #:lo12:.LANCHOR0]
strb w0, [x2, 1154]
.L4298:
mov w2, 512
mov w1, 0
mov x0, x22
bl ftl_memset
adrp x20, .LANCHOR0
add x0, x20, :lo12:.LANCHOR0
ldr x1, [x0, 1144]
ldrb w24, [x1, 9]
ldrh w23, [x1, 10]
adrp x1, .LANCHOR2
add x1, x1, :lo12:.LANCHOR2
ldrh w25, [x1, 34]
mul w23, w23, w24
ldrb w1, [x0, 1252]
str w1, [x29, 128]
udiv w1, w21, w24
strb wzr, [x0, 1252]
mov w0, 0
mul w25, w25, w24
bl flash_erase_block
cmp w23, w19
bcs .L4344
add w1, w21, w25
mov w0, 0
bl flash_erase_block
mov w1, 2
.L4302:
add x28, x20, :lo12:.LANCHOR0
ldr x0, [x28, 1144]
ldrh w23, [x0, 10]
ldrb w0, [x0, 12]
lsl w23, w23, 2
mul w23, w23, w1
sdiv w0, w23, w0
str w0, [x29, 176]
udiv w0, w21, w25
msub w0, w0, w25, w21
str w0, [x29, 208]
sub w26, w21, w0
cmp w21, w26
bne .L4346
ldrb w0, [x28, 1028]
cmp w0, 9
bne .L4346
add x27, x27, :lo12:.LANCHOR5
mov w2, 1024
mov w1, 0
ldr x27, [x27, 352]
mov x0, x27
bl ftl_memset
mov w0, 18766
movk w0, 0x464e, lsl 16
str w0, [x27]
mov w0, 12
str w0, [x27, 4]
ldrb w0, [x28, 1154]
strb wzr, [x27, 16]
str wzr, [x27, 12]
cbz w0, .L4304
ldr x0, [x28, 1144]
ldrb w0, [x0, 29]
strb w0, [x27, 16]
.L4304:
add x20, x20, :lo12:.LANCHOR0
mov w0, 4
strb w0, [x27, 17]
cmp w24, 8
sub w28, w19, #4
ldr x1, [x20, 1144]
ldrh w0, [x1, 10]
ldrb w1, [x1, 12]
strb wzr, [x27, 20]
strh wzr, [x27, 22]
sdiv w0, w0, w1
mov w1, 16
strh w0, [x27, 18]
mov w0, 70
csel w0, w0, w1, hi
strb w0, [x27, 21]
mov w1, 12
add x0, x27, 12
bl js_hash
str w0, [x27, 8]
.L4303:
ldr x20, [x29, 216]
adrp x0, .LANCHOR0
add x25, x0, :lo12:.LANCHOR0
mov w23, 0
add x0, x25, 4
str x0, [x29, 200]
.L4306:
ldr w0, [x29, 176]
cmp w0, w23
bhi .L4317
ldr x0, [x29, 136]
mov x23, x22
mov w24, 4
mov w25, 0
stp w28, wzr, [x29, 192]
ldrb w0, [x0, 9]
str w0, [x29, 156]
ldr x0, [x29, 136]
ldr w1, [x29, 156]
ldrh w0, [x0, 26]
mul w0, w0, w1
adrp x1, .LANCHOR0
add x20, x1, :lo12:.LANCHOR0
udiv w1, w21, w0
strb wzr, [x20, 1252]
msub w0, w1, w0, w21
str w0, [x29, 208]
sub w0, w21, w0
str w0, [x29, 152]
ldr w0, [x29, 208]
and w0, w0, 3
str w0, [x29, 200]
add x0, x20, 4
str x0, [x29, 104]
.L4318:
ldr w0, [x29, 192]
cmp w25, w0
bcc .L4332
adrp x0, .LANCHOR0
add x20, x0, :lo12:.LANCHOR0
ldrb w0, [x29, 128]
strb w0, [x20, 1252]
ldr w0, [x29, 236]
cbz w0, .L4333
mov w0, 0
bl zftl_flash_exit_slc_mode
adrp x0, .LANCHOR0
strb wzr, [x20, 1154]
strb wzr, [x0, #:lo12:.LANCHOR0]
.L4333:
lsl w0, w28, 7
mov x1, 0
.L4334:
cmp w0, w1
bhi .L4335
ldr w0, [x29, 232]
add w0, w0, 1
str w0, [x29, 232]
cmp w0, 5
bls .L4299
b .L4339
.L4301:
mov w0, 0
bl zftl_flash_exit_slc_mode
strb wzr, [x20, #:lo12:.LANCHOR0]
strb wzr, [x23, 1154]
b .L4298
.L4344:
mov w1, 1
b .L4302
.L4346:
mov w28, w19
mov x27, 0
b .L4303
.L4317:
ldr w0, [x29, 208]
ldrb w2, [x25, 1154]
add w8, w0, w23
ldr x0, [x29, 200]
ubfx x8, x8, 2, 16
add w1, w8, 1
ldrh w0, [x0, w1, sxtw 1]
cbz w2, .L4308
ldrb w4, [x25, 1]
lsl w0, w1, 1
cmp w4, 0
csel w0, w0, w1, ne
.L4308:
ldrb w1, [x25, 1028]
cmp w1, 9
bne .L4310
.L4399:
str w0, [x29, 240]
mov w0, 61424
str w0, [x29, 244]
ldr x0, [x29, 200]
ldrh w0, [x0, w8, sxtw 1]
cbnz w2, .L4312
mov w8, w0
.L4313:
mul w0, w24, w8
cbnz x27, .L4314
ldr w5, [x20]
mov x4, x20
ldr w6, [x29, 240]
mov w3, w19
add w27, w0, w26
mov w7, 61424
str w8, [x29, 196]
mov w2, w23
mov w1, w27
adrp x0, .LC320
add x0, x0, :lo12:.LC320
bl printk
add x2, x29, 240
mov x1, x20
mov w0, w27
bl fw_flash_page_prog.constprop.29
ldrb w0, [x25, 1154]
ldr w8, [x29, 196]
cbnz w0, .L4315
udiv w1, w26, w24
add w2, w8, 1
bl id_block_prog_msb_ff_data
.L4315:
add w0, w28, 16
add x20, x20, 2048
cmp w23, w0
bcc .L4316
ldr x0, [x29, 216]
add w1, w28, 20
cmp w23, w1
add x0, x0, 2048
csel x20, x0, x20, cc
.L4316:
add w9, w23, 4
mov x27, 0
and w23, w9, 65535
b .L4306
.L4310:
sub w0, w0, #1
lsl w0, w0, 2
b .L4399
.L4312:
ldrb w1, [x25, 1]
lsl w0, w8, 1
cmp w1, 0
csel w8, w0, w8, ne
b .L4313
.L4314:
add x2, x29, 240
mov x1, x27
add w0, w0, w26
bl fw_flash_page_prog.constprop.29
b .L4316
.L4332:
ldr w0, [x29, 200]
ldr x1, [x29, 104]
sub w0, w24, w0
ldrb w2, [x20, 1154]
and w0, w0, 65535
str w0, [x29, 176]
ldr w0, [x29, 208]
add w0, w0, w25
udiv w0, w0, w24
and w0, w0, 65535
ldrh w1, [x1, w0, sxtw 1]
cbnz w2, .L4319
mov w0, w1
.L4320:
ldp w2, w1, [x29, 152]
ldrb w27, [x20, 1152]
madd w0, w1, w0, w2
str w0, [x29, 148]
ldr w0, [x29, 200]
ldr w1, [x29, 148]
add w26, w0, w1
ldr x0, [x20, 1144]
ldrb w0, [x0, 9]
udiv w26, w26, w0
ldrb w0, [x20, 1249]
str w0, [x29, 124]
mov w0, w27
bl nandc_bch_sel
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
str x0, [x29, 112]
.L4321:
mov w4, w24
add x3, x29, 240
mov x2, x23
mov w1, w26
mov w0, 0
bl flash_read_page
mov w5, w0
cmn w0, #1
bne .L4322
ldrb w6, [x20, 1252]
cbnz w6, .L4323
.L4326:
ldr x0, [x29, 112]
ldr x6, [x0, 336]
cbnz x6, .L4324
.L4325:
ldrb w0, [x20, 1192]
cbz w0, .L4322
mov w4, w24
add x3, x29, 240
mov x2, x23
mov w1, w26
mov w0, 0
bl flash_ddr_tuning_read
b .L4400
.L4319:
ldrb w2, [x20, 1]
lsl w1, w0, 1
cmp w2, 0
csel w0, w1, w0, ne
b .L4320
.L4323:
str w6, [x29, 100]
mov w4, w24
str w5, [x29, 120]
add x3, x29, 240
strb wzr, [x20, 1252]
mov x2, x23
mov w1, w26
mov w0, 0
bl flash_read_page
cmn w0, #1
ldr w6, [x29, 100]
strb w6, [x20, 1252]
ldr w5, [x29, 120]
beq .L4326
.L4400:
mov w5, w0
.L4322:
cmn w5, #1
cset w4, eq
cmp w27, 16
cset w0, ne
tst w4, w0
beq .L4328
mov w0, 16
mov w27, 16
bl nandc_bch_sel
b .L4321
.L4324:
str w5, [x29, 120]
mov w4, w24
add x3, x29, 240
mov x2, x23
mov w1, w26
mov w0, 0
blr x6
cmn w0, #1
ldr w5, [x29, 120]
beq .L4325
b .L4400
.L4328:
ldr w0, [x29, 124]
bl nandc_bch_sel
cmp w4, 0
ldr w0, [x29, 196]
csinv w0, w0, wzr, eq
str w0, [x29, 196]
ldr w0, [x29, 152]
cmp w25, 0
ccmp w21, w0, 0, eq
bne .L4330
ldr w0, [x29, 196]
cbnz w0, .L4330
ldr w0, [x23]
mov w1, 18766
movk w1, 0x464e, lsl 16
cmp w0, w1
bne .L4330
ldr w0, [x29, 192]
ldr w1, [x29, 176]
ldrb w24, [x23, 17]
add w0, w0, w1
str w0, [x29, 192]
.L4331:
ldr w0, [x29, 176]
add w25, w0, w25
and w25, w25, 65535
b .L4318
.L4330:
ldr x0, [x29, 176]
mov w2, w25
ldr w1, [x29, 148]
ldp w3, w4, [x29, 240]
ubfiz x0, x0, 9, 16
add x23, x23, x0
adrp x0, .LC321
add x0, x0, :lo12:.LC321
bl printk
str wzr, [x29, 200]
b .L4331
.L4335:
ldr x2, [x29, 216]
ldr w3, [x22, x1, lsl 2]
add x1, x1, 1
add x2, x2, x1, lsl 2
ldr w2, [x2, -4]
cmp w3, w2
beq .L4334
mov w2, 512
mov w1, 0
mov x0, x22
bl ftl_memset
mov w1, w21
mov w0, 0
bl flash_erase_block
b .L4299
.size write_idblock, .-write_idblock
.align 2
.global write_loader_lba
.type write_loader_lba, %function
write_loader_lba:
stp x29, x30, [sp, -112]!
cmp w0, 64
add x29, sp, 0
stp x19, x20, [sp, 16]
mov w19, w0
stp x21, x22, [sp, 32]
adrp x20, .LANCHOR5
stp x23, x24, [sp, 48]
mov w21, w1
mov x24, x2
bne .L4403
ldr w0, [x2]
mov w1, 35899
movk w1, 0xfcdc, lsl 16
cmp w0, w1
mov w1, 19282
movk w1, 0x534e, lsl 16
ccmp w0, w1, 4, ne
beq .L4404
add w1, w1, 327680
cmp w0, w1
bne .L4403
.L4404:
add x22, x20, :lo12:.LANCHOR5
mov w0, 1
strb w0, [x22, 524]
mov w0, 59392
movk w0, 0x3, lsl 16
bl ftl_malloc
mov w2, 59392
mov w1, 0
movk w2, 0x3, lsl 16
str x0, [x22, 528]
bl ftl_memset
mov w0, 64
str w0, [x22, 536]
.L4403:
add x23, x20, :lo12:.LANCHOR5
ldr w2, [x24]
mov w4, w21
mov w3, w19
adrp x0, .LC322
add x0, x0, :lo12:.LC322
ldr x1, [x23, 528]
bl printk
ldrb w0, [x23, 524]
cbz w0, .L4402
ldr x22, [x23, 528]
cbz x22, .L4402
sub w0, w19, #64
cmp w0, 499
bhi .L4406
mov w2, 564
sub w2, w2, w19
cmp w21, w2
ubfiz x0, x0, 9, 25
csel w2, w21, w2, ls
mov x1, x24
lsl w2, w2, 9
add x0, x22, x0
bl ftl_memcpy
.L4407:
add x23, x20, :lo12:.LANCHOR5
ldr w0, [x23, 536]
cmp w19, w0
beq .L4416
strb wzr, [x23, 524]
mov x0, x22
bl ftl_free
str xzr, [x23, 528]
b .L4416
.L4406:
cmp w19, 563
bls .L4407
ldr w0, [x23, 536]
mov w1, 500
sub w0, w0, #64
cmp w0, 500
csel w0, w0, w1, ls
adrp x1, .LANCHOR0+1144
ldr x1, [x1, #:lo12:.LANCHOR0+1144]
ldrb w1, [x1, 9]
cmp w1, 4
beq .L4408
mov w1, 2
str w1, [x29, 72]
mov w1, 3
str w1, [x29, 76]
mov w1, 4
str w1, [x29, 80]
mov w1, 5
str w1, [x29, 84]
mov w1, 6
str w1, [x29, 88]
.L4409:
add x2, x22, 245760
mov w1, 61952
add x2, x2, 2048
.L4415:
ldr w3, [x2]
cbz w3, .L4413
add w0, w1, 2048
lsl w0, w0, 2
.L4414:
mov x1, x22
add x22, x20, :lo12:.LANCHOR5
add x2, x29, 72
bl write_idblock
ldr x0, [x22, 528]
strb wzr, [x22, 524]
bl ftl_free
str xzr, [x22, 528]
.L4416:
add x20, x20, :lo12:.LANCHOR5
add w19, w19, w21
str w19, [x20, 536]
.L4402:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x29, x30, [sp], 112
ret
.L4408:
add x2, x29, 72
mov x1, 0
.L4412:
cmp w0, 256
bls .L4410
lsl w3, w1, 1
str w3, [x2, x1, lsl 2]
.L4411:
add x1, x1, 1
cmp x1, 5
bne .L4412
b .L4409
.L4410:
str w1, [x2, x1, lsl 2]
b .L4411
.L4413:
sub w1, w1, #1
sub x2, x2, #4
cmp w1, 4096
bne .L4415
lsl w0, w0, 9
b .L4414
.size write_loader_lba, .-write_loader_lba
.align 2
.global FtlWrite
.type FtlWrite, %function
FtlWrite:
stp x29, x30, [sp, -48]!
add x29, sp, 0
stp x19, x20, [sp, 16]
and w20, w0, 255
stp x21, x22, [sp, 32]
sub w0, w1, #64
mov w19, w1
mov w21, w2
mov x22, x3
cmp w0, 1983
bhi .L4428
cbnz w20, .L4428
mov x2, x3
mov w1, w21
mov w0, w19
bl write_loader_lba
.L4428:
adrp x0, .LANCHOR5+232
mov x3, x22
mov w2, w21
mov w1, w19
ldr x0, [x0, #:lo12:.LANCHOR5+232]
ldr x4, [x0, 48]
mov w0, w20
blr x4
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x29, x30, [sp], 48
ret
.size FtlWrite, .-FtlWrite
.align 2
.global rknand_sys_storage_ioctl
.type rknand_sys_storage_ioctl, %function
rknand_sys_storage_ioctl:
mov w0, 25364
movk w0, 0x4004, lsl 16
cmp w1, w0
bne .L4434
stp x29, x30, [sp, -16]!
add x29, sp, 0
bl rknand_dev_flush
mov x1, 0
adrp x0, .LC323
add x0, x0, :lo12:.LC323
bl printk
mov x0, 0
ldp x29, x30, [sp], 16
ret
.L4434:
mov x0, -22
ret
.size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
.align 2
.global rk_ftl_storage_sys_init
.type rk_ftl_storage_sys_init, %function
rk_ftl_storage_sys_init:
stp x29, x30, [sp, -16]!
adrp x0, .LANCHOR5
add x0, x0, :lo12:.LANCHOR5
mov w1, -1
add x29, sp, 0
str w1, [x0, 536]
strb wzr, [x0, 524]
str xzr, [x0, 528]
str xzr, [x0, 544]
bl rknand_sys_storage_init
ldp x29, x30, [sp], 16
ret
.size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
.align 2
.global StorageSysDataDeInit
.type StorageSysDataDeInit, %function
StorageSysDataDeInit:
mov w0, 0
ret
.size StorageSysDataDeInit, .-StorageSysDataDeInit
.align 2
.global rk_ftl_vendor_storage_init
.type rk_ftl_vendor_storage_init, %function
rk_ftl_vendor_storage_init:
stp x29, x30, [sp, -80]!
add x29, sp, 0
stp x19, x20, [sp, 16]
adrp x19, .LANCHOR5
add x20, x19, :lo12:.LANCHOR5
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
str x25, [sp, 64]
ldr x0, [x20, 552]
cbnz x0, .L4443
mov w0, 65536
bl ftl_malloc
str x0, [x20, 552]
.L4443:
add x19, x19, :lo12:.LANCHOR5
ldr x0, [x19, 552]
cbz x0, .L4448
adrp x23, .LC324
mov w25, 22084
add x23, x23, :lo12:.LC324
mov w24, 0
mov w22, 0
mov w21, 0
movk w25, 0x524b, lsl 16
.L4446:
ldr x2, [x19, 552]
mov w1, 128
lsl w0, w21, 7
bl FlashBootVendorRead
cbnz w0, .L4449
ldr x0, [x19, 552]
add x1, x0, 61440
ldr w3, [x0, 4]
ldr w2, [x1, 4092]
ldr w1, [x0]
mov x0, x23
bl printk
ldr x20, [x19, 552]
ldr w0, [x20]
cmp w0, w25
bne .L4445
add x0, x20, 61440
ldr w1, [x20, 4]
ldr w0, [x0, 4092]
cmp w0, w1
bne .L4445
cmp w0, w22
bls .L4445
mov w24, w21
mov w22, w0
.L4445:
add w21, w21, 1
cmp w21, 2
bne .L4446
cbz w22, .L4447
mov x2, x20
mov w1, 128
lsl w0, w24, 7
bl FlashBootVendorRead
cmp w0, 0
csetm w0, ne
.L4442:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldr x25, [sp, 64]
ldp x29, x30, [sp], 80
ret
.L4447:
mov w1, 0
mov x2, 65536
mov x0, x20
bl memset
mov w1, 22084
mov w0, 1
movk w1, 0x524b, lsl 16
stp w1, w0, [x20]
add x1, x20, 61440
str w0, [x1, 4092]
mov w0, -1032
strh w0, [x20, 14]
mov w0, 0
b .L4442
.L4448:
mov w0, -12
b .L4442
.L4449:
mov w0, -1
b .L4442
.size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init
.align 2
.global rk_ftl_vendor_read
.type rk_ftl_vendor_read, %function
rk_ftl_vendor_read:
adrp x3, .LANCHOR5+552
ldr x4, [x3, #:lo12:.LANCHOR5+552]
cbz x4, .L4457
ldrh w6, [x4, 10]
add x5, x4, 16
mov w3, 0
.L4454:
cmp w3, w6
bcc .L4456
.L4457:
mov w0, -1
ret
.L4456:
ldrh w7, [x5], 8
cmp w7, w0
bne .L4455
stp x29, x30, [sp, -32]!
add x3, x4, w3, uxtw 3
mov x0, x1
add x29, sp, 0
str x19, [sp, 16]
ldrh w19, [x3, 20]
ldrh w1, [x3, 18]
cmp w19, w2
csel w19, w19, w2, ls
add x1, x1, 1024
uxtw x2, w19
add x1, x4, x1
bl memcpy
mov w0, w19
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
ret
.L4455:
add w3, w3, 1
b .L4454
.size rk_ftl_vendor_read, .-rk_ftl_vendor_read
.align 2
.global rk_ftl_vendor_write
.type rk_ftl_vendor_write, %function
rk_ftl_vendor_write:
stp x29, x30, [sp, -112]!
adrp x3, .LANCHOR5+552
add x29, sp, 0
stp x19, x20, [sp, 16]
ldr x19, [x3, #:lo12:.LANCHOR5+552]
stp x21, x22, [sp, 32]
stp x23, x24, [sp, 48]
stp x25, x26, [sp, 64]
stp x27, x28, [sp, 80]
cbz x19, .L4477
add w4, w2, 63
ldrh w3, [x19, 10]
ldrh w24, [x19, 8]
mov x28, x1
mov w26, w2
and w22, w4, -64
add x1, x19, 16
mov w20, 0
.L4464:
cmp w20, w3
bcc .L4472
ldrh w1, [x19, 14]
cmp w22, w1
bhi .L4477
add x3, x19, w3, uxth 3
strh w0, [x3, 16]
and w0, w22, 65535
ldrh w2, [x19, 12]
strh w2, [x3, 18]
strh w26, [x3, 20]
add w2, w2, w0
sub w0, w1, w0
strh w2, [x19, 12]
strh w0, [x19, 14]
uxtw x2, w26
mov x1, x28
ldrh w0, [x3, 18]
add x0, x0, 1024
add x0, x19, x0
bl memcpy
ldrh w0, [x19, 10]
add w0, w0, 1
strh w0, [x19, 10]
b .L4479
.L4472:
ldrh w6, [x1], 8
cmp w6, w0
bne .L4465
uxtw x23, w20
add x5, x19, 1024
add x21, x19, x23, lsl 3
ldrh w25, [x21, 20]
add w25, w25, 63
and w25, w25, -64
cmp w26, w25
bls .L4466
ldrh w0, [x19, 14]
cmp w22, w0
bhi .L4477
add x23, x23, 2
ldrh w21, [x21, 18]
add x23, x19, x23, lsl 3
sub w3, w3, #1
.L4467:
cmp w20, w3
bcc .L4468
add x20, x19, w20, uxtw 3
and w21, w21, 65535
add x0, x5, w21, uxth
uxtw x2, w26
mov x1, x28
strh w21, [x20, 18]
strh w6, [x20, 16]
strh w26, [x20, 20]
bl memcpy
ldrh w0, [x19, 14]
and w4, w22, 65535
add w21, w21, w4
strh w21, [x19, 12]
sub w0, w0, w4
add w25, w0, w25
strh w25, [x19, 14]
.L4479:
ldr w0, [x19, 4]
add x1, x19, 61440
mov x2, x19
add w0, w0, 1
str w0, [x19, 4]
str w0, [x1, 4092]
mov w1, 128
ldrh w0, [x19, 8]
add w0, w0, 1
and w0, w0, 65535
cmp w0, 1
csel w0, w0, wzr, ls
strh w0, [x19, 8]
lsl w0, w24, 7
bl FlashBootVendorWrite
mov w0, 0
.L4462:
ldp x19, x20, [sp, 16]
ldp x21, x22, [sp, 32]
ldp x23, x24, [sp, 48]
ldp x25, x26, [sp, 64]
ldp x27, x28, [sp, 80]
ldp x29, x30, [sp], 112
ret
.L4468:
add w20, w20, 1
stp w3, w6, [x29, 96]
add x0, x19, w20, uxtw 3
str x5, [x29, 104]
add x23, x23, 8
ldrh w1, [x0, 16]
strh w1, [x23, -8]
ldrh w1, [x0, 20]
strh w1, [x23, -4]
strh w21, [x23, -6]
ldrh w27, [x0, 20]
ldrh w1, [x0, 18]
add x0, x5, w21, uxtw
add w27, w27, 63
and w27, w27, -64
add x1, x5, x1
and x2, x27, 131008
bl memcpy
add w21, w21, w27
ldr x5, [x29, 104]
ldp w3, w6, [x29, 96]
b .L4467
.L4466:
ldrh w0, [x21, 18]
uxtw x2, w26
mov x1, x28
add x0, x5, x0
bl memcpy
strh w26, [x21, 20]
b .L4479
.L4465:
add w20, w20, 1
b .L4464
.L4477:
mov w0, -1
b .L4462
.size rk_ftl_vendor_write, .-rk_ftl_vendor_write
.align 2
.global rk_ftl_vendor_storage_ioctl
.type rk_ftl_vendor_storage_ioctl, %function
rk_ftl_vendor_storage_ioctl:
stp x29, x30, [sp, -48]!
mov w0, 9216
add x29, sp, 0
stp x19, x20, [sp, 16]
mov x20, x2
str x21, [sp, 32]
mov w21, w1
bl ftl_malloc
cbz x0, .L4488
mov w1, 30209
mov x19, x0
movk w1, 0x4004, lsl 16
cmp w21, w1
beq .L4483
add w1, w1, 1
cmp w21, w1
beq .L4484
.L4494:
mov x20, -14
b .L4482
.L4483:
mov x2, 8
mov x1, x20
bl rk_copy_from_user
cbnz x0, .L4494
ldr w1, [x19]
mov w0, 17745
movk w0, 0x5652, lsl 16
cmp w1, w0
beq .L4486
.L4487:
mov x20, -1
.L4482:
mov x0, x19
bl kfree
.L4480:
mov x0, x20
ldr x21, [sp, 32]
ldp x19, x20, [sp, 16]
ldp x29, x30, [sp], 48
ret
.L4486:
ldrh w2, [x19, 6]
add x1, x19, 8
ldrh w0, [x19, 4]
bl rk_ftl_vendor_read
cmn w0, #1
beq .L4487
strh w0, [x19, 6]
and x0, x0, 65535
add x2, x0, 8
mov x1, x19
mov x0, x20
bl rk_copy_to_user
cbnz x0, .L4494
mov x20, 0
b .L4482
.L4484:
mov x2, 8
mov x1, x20
bl rk_copy_from_user
cbnz x0, .L4494
ldr w1, [x19]
mov w0, 17745
movk w0, 0x5652, lsl 16
cmp w1, w0
bne .L4487
ldrh w2, [x19, 6]
cmp w2, 4087
bhi .L4487
add w2, w2, 8
mov x1, x20
sxtw x2, w2
mov x0, x19
bl rk_copy_from_user
cbnz x0, .L4494
ldrh w2, [x19, 6]
add x1, x19, 8
ldrh w0, [x19, 4]
bl rk_ftl_vendor_write
sxtw x20, w0
b .L4482
.L4488:
mov x20, -1
b .L4480
.size rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl
.global SecureBootUnlockTryCount
.global SecureBootCheckOK
.global SecureBootEn
.global gpVendor1Info
.global gpVendor0Info
.global g_idb_buffer
.global gSnSectorData
.global gpDrmKeyInfo
.global gpBootConfig
.global ftl_dma32_buffer_size
.global ftl_dma32_buffer
.global gLoaderBootInfo
.global RK29_NANDC1_REG_BASE
.global RK29_NANDC_REG_BASE
.global gp_ftl_api
.global rk_zftl_enable
.global g_pm_spare
.global pm_first_write
.global pm_force_gc
.global pm_gc_enable
.global pm_last_load_ram_id
.global pm_last_update_ram_id
.global pm_ram_info
.global sblk_gc_write_completed_queue_head
.global sblk_read_completed_queue_head
.global sblk_write_completed_queue_head
.global sblk_queue_head
.global slc_cache_sblk
.global xlc_data_sblk
.global slc_data_sblk
.global free_mix_sblk
.global free_xlc_sblk
.global free_slc_sblk
.global gp_data_xlc_data_head
.global gp_data_slc_data_head
.global gp_data_slc_cache_head
.global gp_free_mix_head
.global gp_free_xlc_head
.global gp_free_slc_head
.global gp_sblk_list_tbl
.global zftl_print_list_count
.global ftl_ext_info_first_write
.global ftl_sys_info_first_write
.global ftl_low_format_cur_blk
.global ftl_power_lost_flag
.global ftl_vpn_update_count
.global ftl_sblk_update_list_offset
.global ftl_sblk_update_list
.global ftl_sblk_vpn_update_id
.global ftl_sblk_lpa_tbl
.global ftl_sblk_vpn
.global gp_ftl_ext_info
.global gp_ftl_info
.global gp_blk_info
.global ftl_tmp_buffer
.global ftl_ext_info_data_buffer
.global ftl_info_data_buffer
.global ftl_tmp_spare
.global ftl_info_spare
.global g_ftl_info_blk
.global tlc_b05a_prog_tbl
.global tlc_prog_order
.global gc_des_ppa_tbl
.global gc_valid_page_ppa
.global gc_page_buf_id
.global gc_pre_ppa_tbl
.global gc_lpa_tbl
.global g_gc_info
.global gc_xlc_search_index
.global gc_xlc_data_index
.global gc_slc_cache_index
.global gc_slc_data_index
.global gc_free_slc_sblk_th
.global gc_slc_mode_vpn_th
.global gc_slc_mode_slc_vpn_th
.global gc_slc_mode_tlc_vpn_th
.global gc_tlc_mode_tlc_vpn_th
.global gc_tlc_mode_slc_vpn_th
.global gc_state
.global gc_mode
.global p_read_ahead_ext_buf
.global discard_sector_count
.global read_ahead_lpa
.global _ftl_gc_tag_page_num
.global read_buf_count
.global read_buf_head
.global write_commit_count
.global write_commit_head
.global write_buf_count
.global write_buf_head
.global ftl_flush_jiffies
.global lpa_hash
.global lpa_hash_index
.global _c_slc_to_xlc_ec_ratio
.global _c_mix_max_xlc_ec_count
.global _c_mix_max_slc_ec_count
.global _c_swl_xlc_gc_th
.global _c_swl_slc_gc_th
.global _gc_after_discard_en
.global _last_write_time
.global _last_read_time
.global _min_slc_super_block
.global _max_xlc_super_block
.global _c_max_pm_sblk
.global _c_ftl_pm_page_num
.global _c_totle_log_page
.global _c_totle_data_density
.global _c_user_data_density
.global _c_totle_phy_density
.global _c_ftl_block_addr_log2
.global _c_ftl_block_align_addr
.global _c_ftl_byte_pre_page
.global _c_ftl_nand_blks_per_die
.global _c_ftl_page_pre_slc_blk
.global _c_ftl_page_pre_blk
.global _c_ftl_blk_pre_plane
.global _c_ftl_nand_planes_num
.global _c_ftl_planes_per_die
.global _c_ftl_sec_per_page
.global _c_ftl_nand_die_num
.global _c_ftl_nand_type
.global zftl_debug
.global g_flash_blk_info
.global gp_flash_info
.global p_free_buf_head
.global free_buf_count
.global g_buf
.global nandc_ecc_sts
.global g_nandc_v6_master_info
.global nandc_randomizer_en
.global nandc_hw_seed
.global fill_spare_size
.global g_nandc_ecc_bits
.global g_nandc_tran_timeout
.global g_nandc_ver
.global gp_nandc
.global hy_f26_ref_value
.global sd15_tlc_rr
.global sd15_slc_rr
.global g_nand_para_info
.global gp_nand_para_info
.global g_nand_opt_para
.global g_msb_page_tbl
.global g_lsb_page_tbl
.global g_die_addr
.global g_die_cs_idx
.global IDByte
.global flash_read_retry
.global _c_ftl_cs_bits
.global g_maxRetryCount
.global g_maxRegNum
.global g_retryMode
.global g_flash_toggle_mode_en
.global g_flash_ymtc_3d_tlc_flag
.global g_flash_micron_3d_tlc_b16a
.global g_flash_micron_3d_tlc_b05a
.global g_flash_micron_3d_tlc_flag
.global g_flash_3d_mlc_flag
.global g_flash_3d_tlc_flag
.global g_flash_multi_page_prog_en
.global g_flash_multi_page_read_en
.global g_flash_interface_mode
.global g_idb_ecc_bits
.global g_idb_slc_mode_enable
.global g_one_pass_program
.global g_slc_mode_addr2
.global g_slc_mode_enable
.global g_flash_cur_mode
.global g_flash_six_addr
.global g_flash_slc_mode
.global g_slc_page_num
.global g_totle_phy_block
.global g_block_align_addr
.global g_flash_reversd_blks
.global g_nand_max_die
.global g_flash_tmp_spare_buffer
.global g_flash_tmp_page_buffer
.global g_flash_sys_spare_buffer
.global g_flash_spare_buffer
.global g_flash_page_buffer
.data
.align 3
.set .LANCHOR2,. + 0
.type zftl_debug, %object
.size zftl_debug, 4
zftl_debug:
.word 17476
.zero 4
.type g_nand_para_info, %object
.size g_nand_para_info, 32
g_nand_para_info:
.byte 6
.byte -104
.byte 58
.byte -104
.byte -77
.byte 118
.byte 114
.byte 1
.byte 1
.byte 32
.hword 768
.byte 3
.byte 2
.hword 758
.hword 5593
.byte 0
.byte 37
.byte 60
.byte 32
.byte 2
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.type sd15_tlc_rr, %object
.size sd15_tlc_rr, 329
sd15_tlc_rr:
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte -8
.byte 0
.byte 16
.byte 8
.byte 8
.byte 0
.byte -8
.byte -8
.byte -8
.byte -16
.byte -8
.byte -8
.byte -8
.byte -8
.byte -24
.byte 0
.byte 0
.byte 0
.byte -8
.byte -16
.byte -32
.byte 0
.byte 8
.byte -8
.byte 8
.byte 8
.byte 0
.byte 0
.byte -16
.byte -8
.byte -8
.byte -8
.byte 0
.byte -16
.byte -24
.byte -16
.byte 8
.byte 8
.byte -8
.byte -16
.byte -16
.byte 0
.byte 8
.byte 8
.byte 8
.byte 8
.byte -8
.byte -8
.byte -24
.byte 0
.byte -16
.byte 0
.byte -8
.byte -16
.byte -8
.byte -8
.byte 0
.byte 8
.byte 0
.byte 0
.byte -8
.byte 0
.byte -24
.byte -8
.byte 0
.byte 0
.byte -8
.byte -24
.byte -8
.byte 8
.byte -8
.byte 0
.byte -8
.byte 8
.byte -16
.byte -8
.byte -8
.byte -8
.byte 8
.byte 8
.byte 0
.byte 0
.byte -8
.byte -8
.byte 8
.byte -8
.byte -8
.byte 0
.byte 0
.byte -8
.byte -16
.byte -16
.byte -8
.byte 0
.byte 0
.byte -8
.byte 0
.byte -16
.byte 8
.byte 0
.byte 8
.byte 0
.byte -16
.byte -8
.byte -16
.byte 16
.byte 0
.byte 16
.byte 0
.byte -8
.byte 8
.byte 0
.byte -24
.byte 0
.byte -16
.byte -8
.byte -16
.byte -16
.byte -16
.byte -16
.byte 0
.byte 8
.byte -8
.byte -24
.byte 0
.byte 8
.byte 8
.byte 16
.byte 16
.byte 0
.byte 8
.byte -8
.byte 8
.byte 16
.byte -8
.byte 24
.byte 0
.byte 8
.byte -4
.byte 0
.byte 16
.byte 8
.byte 24
.byte 8
.byte 0
.byte -4
.byte -8
.byte 24
.byte 16
.byte 16
.byte 0
.byte 0
.byte 0
.byte -16
.byte 0
.byte 0
.byte 4
.byte 0
.byte -4
.byte -4
.byte -4
.byte 8
.byte 8
.byte 16
.byte 0
.byte 16
.byte -4
.byte 16
.byte 0
.byte 16
.byte 8
.byte 0
.byte 16
.byte -4
.byte 16
.byte -8
.byte 0
.byte 0
.byte -8
.byte 16
.byte -4
.byte 16
.byte -16
.byte -8
.byte -8
.byte -8
.byte 8
.byte -4
.byte 8
.byte -24
.byte 4
.byte -16
.byte 0
.byte 8
.byte 0
.byte 0
.byte -24
.byte 8
.byte -16
.byte 8
.byte 0
.byte 8
.byte -24
.byte -32
.byte 16
.byte -24
.byte 8
.byte -8
.byte 8
.byte -24
.byte -32
.byte 8
.byte 0
.byte 16
.byte 0
.byte 16
.byte 0
.byte -32
.byte 4
.byte 0
.byte -8
.byte -16
.byte -8
.byte 0
.byte -32
.byte 4
.byte 0
.byte 8
.byte -24
.byte 8
.byte 0
.byte -32
.byte 4
.byte 0
.byte 0
.byte -32
.byte -4
.byte 0
.byte -24
.byte 4
.byte 0
.byte 16
.byte -24
.byte 16
.byte 0
.byte -24
.byte -4
.byte 0
.byte 8
.byte -32
.byte 8
.byte 0
.byte 0
.byte -4
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte -4
.byte 0
.byte 0
.byte 0
.byte -4
.byte 0
.byte 0
.byte -4
.byte 0
.byte -8
.byte 0
.byte -8
.byte 0
.byte 0
.byte -4
.byte 0
.byte -16
.byte 0
.byte -16
.byte 0
.byte 0
.byte -16
.byte 0
.byte -16
.byte 0
.byte -16
.byte 0
.byte 0
.byte -8
.byte 0
.byte -16
.byte 0
.byte -16
.byte 0
.byte 0
.byte -16
.byte 0
.byte -24
.byte 0
.byte -24
.byte 0
.byte 0
.byte -24
.byte 0
.byte -24
.byte 0
.byte -24
.byte 0
.byte 0
.byte -24
.byte 0
.byte -16
.byte 0
.byte -16
.byte 0
.byte 0
.byte -24
.byte 0
.byte -32
.byte 0
.byte -32
.byte 0
.zero 7
.type sd15_slc_rr, %object
.size sd15_slc_rr, 25
sd15_slc_rr:
.byte 0
.byte 8
.byte -8
.byte 16
.byte -16
.byte 24
.byte -24
.byte 32
.byte -32
.byte 32
.byte -40
.byte 48
.byte -48
.byte 56
.byte -56
.byte 64
.byte -64
.byte 72
.byte -72
.byte 80
.byte -80
.byte 88
.byte 96
.byte 104
.byte 112
.zero 7
.type hy_f26_ref_value, %object
.size hy_f26_ref_value, 28
hy_f26_ref_value:
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte 10
.byte 6
.byte 0
.byte -3
.byte -7
.byte -8
.byte 0
.byte -6
.byte -13
.byte -15
.byte 0
.byte -11
.byte -20
.byte -23
.byte 0
.byte 0
.byte -26
.byte -30
.byte 0
.byte 0
.byte -32
.byte -37
.zero 4
.type zftl_nand_flash_para_tbl, %object
.size zftl_nand_flash_para_tbl, 1568
zftl_nand_flash_para_tbl:
.byte 6
.byte -104
.byte 58
.byte -104
.byte -77
.byte 118
.byte 114
.byte 1
.byte 1
.byte 32
.hword 768
.byte 3
.byte 2
.hword 758
.hword 5593
.byte 0
.byte 37
.byte 60
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte 60
.byte -104
.byte -77
.byte 118
.byte 114
.byte 1
.byte 1
.byte 32
.hword 768
.byte 3
.byte 2
.hword 1478
.hword 5593
.byte 0
.byte 37
.byte 60
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte 58
.byte -104
.byte -93
.byte 118
.byte 81
.byte 1
.byte 1
.byte 32
.hword 384
.byte 3
.byte 2
.hword 1446
.hword 1497
.byte 0
.byte 36
.byte 60
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -34
.byte -108
.byte -109
.byte 118
.byte 81
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1074
.hword 17881
.byte 2
.byte 35
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -34
.byte -124
.byte -109
.byte 114
.byte 87
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 1
.hword 2092
.hword 17857
.byte 2
.byte 33
.byte 40
.byte 32
.byte 3
.byte 1
.byte 1
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte 58
.byte -108
.byte -109
.byte 118
.byte 81
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 2106
.hword 17881
.byte 2
.byte 35
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -41
.byte -124
.byte -109
.byte 114
.byte 81
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 1
.hword 1056
.hword 17857
.byte 2
.byte 35
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -41
.byte -124
.byte -109
.byte 114
.byte 80
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 1
.hword 1060
.hword 17857
.byte 2
.byte 34
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -34
.byte -108
.byte -109
.byte 118
.byte 80
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1066
.hword 17881
.byte 2
.byte 34
.byte 40
.byte 32
.byte 3
.byte 1
.byte 1
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -41
.byte -124
.byte -109
.byte 114
.byte 87
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 1
.hword 1060
.hword 17857
.byte 2
.byte 33
.byte 40
.byte 32
.byte 3
.byte 1
.byte 1
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -34
.byte -108
.byte -109
.byte 118
.byte 87
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1058
.hword 17881
.byte 2
.byte 33
.byte 40
.byte 32
.byte 3
.byte 1
.byte 1
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte -104
.byte -34
.byte -108
.byte -109
.byte 118
.byte -47
.byte 1
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1074
.hword 17881
.byte 2
.byte 35
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte 69
.byte 58
.byte -108
.byte -109
.byte 118
.byte 81
.byte 8
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 2106
.hword 17881
.byte 2
.byte 68
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte 69
.byte -34
.byte -108
.byte -109
.byte 118
.byte 81
.byte 8
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1074
.hword 17881
.byte 2
.byte 68
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte 69
.byte -34
.byte -108
.byte -109
.byte 118
.byte 87
.byte 8
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1058
.hword 17881
.byte 2
.byte 66
.byte 40
.byte 32
.byte 3
.byte 1
.byte 4
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte 69
.byte -34
.byte -108
.byte -109
.byte 118
.byte 80
.byte 8
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1066
.hword 17881
.byte 2
.byte 67
.byte 40
.byte 32
.byte 3
.byte 1
.byte 1
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 6
.byte 69
.byte -41
.byte -124
.byte -109
.byte 114
.byte 87
.byte 8
.byte 1
.byte 32
.hword 256
.byte 2
.byte 1
.hword 1060
.hword 17857
.byte 2
.byte 66
.byte 40
.byte 32
.byte 2
.byte 1
.byte 1
.byte 0
.hword 256
.byte 1
.byte -94
.byte 0
.byte 0
.byte 5
.byte 44
.byte 100
.byte 68
.byte 50
.byte -91
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 1048
.hword 9671
.byte 5
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 4
.byte 0
.hword 512
.byte 1
.byte -38
.byte -33
.byte 0
.byte 5
.byte 44
.byte 100
.byte 100
.byte 86
.byte -91
.byte 0
.byte 4
.byte 1
.byte 24
.hword 512
.byte 2
.byte 2
.hword 700
.hword 479
.byte 4
.byte 18
.byte 60
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte 68
.byte 68
.byte 75
.byte -87
.byte 0
.byte 4
.byte 1
.byte 16
.hword 256
.byte 2
.byte 2
.hword 1064
.hword 479
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 256
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte -124
.byte 100
.byte 84
.byte -87
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 2
.hword 1024
.hword 479
.byte 4
.byte 18
.byte 60
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 0
.byte 0
.byte 0
.byte 1
.byte 5
.byte 44
.byte 100
.byte 100
.byte 84
.byte -92
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 1024
.hword 455
.byte 4
.byte 18
.byte 60
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 0
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte 100
.byte 68
.byte 75
.byte -87
.byte 0
.byte 4
.byte 1
.byte 16
.hword 256
.byte 2
.byte 4
.hword 1024
.hword 449
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 256
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte -124
.byte 100
.byte 60
.byte -91
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 2
.hword 1024
.hword 479
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte -124
.byte 68
.byte 52
.byte -92
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 2184
.hword 9671
.byte 5
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 4
.byte 0
.hword 512
.byte 1
.byte -38
.byte -33
.byte 0
.byte 5
.byte 44
.byte 100
.byte 100
.byte 60
.byte -91
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 1044
.hword 471
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte -124
.byte 68
.byte 50
.byte -86
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 2184
.hword 9671
.byte 5
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 4
.byte 0
.hword 512
.byte 1
.byte -38
.byte -33
.byte 0
.byte 5
.byte 44
.byte -124
.byte -60
.byte 52
.byte -86
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 2184
.hword 9671
.byte 5
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 4
.byte 0
.hword 512
.byte 1
.byte -38
.byte -33
.byte 0
.byte 5
.byte 44
.byte -124
.byte 68
.byte 52
.byte -86
.byte 0
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 2184
.hword 9671
.byte 5
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 4
.byte 0
.hword 512
.byte 1
.byte -38
.byte -33
.byte 0
.byte 6
.byte -101
.byte 73
.byte 1
.byte 0
.byte -101
.byte 73
.byte 9
.byte 1
.byte 32
.hword 256
.byte 2
.byte 1
.hword 2144
.hword -23097
.byte 8
.byte 21
.byte 70
.byte 32
.byte 1
.byte 0
.byte 8
.byte 0
.hword 256
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte 44
.byte -124
.byte 100
.byte 60
.byte -87
.byte 4
.byte 4
.byte 1
.byte 32
.hword 512
.byte 2
.byte 2
.hword 1024
.hword 479
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 0
.byte 0
.byte 0
.byte 1
.byte 5
.byte 44
.byte -124
.byte 88
.byte 50
.byte -95
.byte 0
.byte 4
.byte 1
.byte 32
.hword 768
.byte 3
.byte 1
.hword 1440
.hword 3527
.byte 0
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 1024
.byte 3
.byte 0
.byte 0
.byte 2
.byte 6
.byte 44
.byte -92
.byte 8
.byte 50
.byte -95
.byte 0
.byte 4
.byte 1
.byte 32
.hword 2304
.byte 3
.byte 1
.hword 1008
.hword 3521
.byte 0
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 4096
.byte 3
.byte 0
.byte 0
.byte 4
.byte 6
.byte 44
.byte -92
.byte 100
.byte 50
.byte -86
.byte 4
.byte 4
.byte 1
.byte 32
.hword 1024
.byte 2
.byte 1
.hword 2192
.hword 9671
.byte 10
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 1024
.byte 1
.byte -38
.byte -33
.byte 0
.byte 6
.byte -101
.byte -61
.byte 72
.byte 37
.byte 16
.byte 0
.byte 9
.byte 1
.byte 32
.hword 1152
.byte 3
.byte 2
.hword 1006
.hword -27169
.byte 13
.byte 81
.byte 70
.byte 32
.byte 1
.byte 0
.byte 4
.byte 0
.hword 2048
.byte 1
.byte -38
.byte -33
.byte 24
.byte 6
.byte -83
.byte -34
.byte 20
.byte -85
.byte 66
.byte 74
.byte 2
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1056
.hword 455
.byte 2
.byte 6
.byte 40
.byte 32
.byte 3
.byte 1
.byte 3
.byte 0
.hword 256
.byte 2
.byte -65
.byte -66
.byte 0
.byte 6
.byte -83
.byte -34
.byte -108
.byte -21
.byte 116
.byte 68
.byte 2
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1066
.hword 473
.byte 1
.byte 7
.byte 40
.byte 32
.byte 4
.byte 1
.byte 3
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -83
.byte -34
.byte 20
.byte -89
.byte 66
.byte 74
.byte 2
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 1060
.hword 473
.byte 2
.byte 5
.byte 40
.byte 32
.byte 4
.byte 1
.byte 3
.byte 0
.hword 256
.byte 2
.byte -65
.byte -66
.byte 0
.byte 6
.byte -83
.byte -41
.byte -108
.byte -111
.byte 96
.byte 68
.byte 2
.byte 1
.byte 16
.hword 256
.byte 2
.byte 2
.hword 1046
.hword 473
.byte 1
.byte 3
.byte 40
.byte 32
.byte 4
.byte 1
.byte 3
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -83
.byte 58
.byte 20
.byte -85
.byte 66
.byte 74
.byte 2
.byte 1
.byte 32
.hword 256
.byte 2
.byte 2
.hword 2092
.hword 473
.byte 2
.byte 5
.byte 40
.byte 32
.byte 3
.byte 1
.byte 3
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -83
.byte -41
.byte 20
.byte -98
.byte 52
.byte 74
.byte 2
.byte 1
.byte 16
.hword 256
.byte 2
.byte 2
.hword 1056
.hword 473
.byte 2
.byte 5
.byte 40
.byte 32
.byte 4
.byte 1
.byte 3
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -83
.byte 58
.byte 20
.byte 3
.byte 8
.byte 80
.byte 2
.byte 1
.byte 32
.hword 388
.byte 2
.byte 2
.hword 1362
.hword 473
.byte 9
.byte 8
.byte 40
.byte 32
.byte 3
.byte 1
.byte 3
.byte 0
.hword 512
.byte 0
.byte -65
.byte -66
.byte 1
.byte 5
.byte -119
.byte 100
.byte 100
.byte 60
.byte -95
.byte 0
.byte 7
.byte 1
.byte 32
.hword 512
.byte 2
.byte 1
.hword 1024
.hword 455
.byte 4
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 3
.byte 0
.byte 0
.byte 0
.byte 5
.byte -119
.byte -124
.byte 100
.byte 60
.byte -91
.byte 0
.byte 7
.byte 1
.byte 32
.hword 512
.byte 2
.byte 2
.hword 1024
.hword 455
.byte 4
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 512
.byte 3
.byte 0
.byte 0
.byte 0
.byte 6
.byte -119
.byte 100
.byte 68
.byte 75
.byte -87
.byte 0
.byte 7
.byte 1
.byte 16
.hword 256
.byte 2
.byte 4
.hword 1024
.hword 449
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -119
.byte -120
.byte 36
.byte 75
.byte -87
.byte -124
.byte 7
.byte 1
.byte 16
.hword 256
.byte 2
.byte 4
.hword 1024
.hword 449
.byte 3
.byte 17
.byte 40
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -119
.byte -120
.byte 4
.byte 75
.byte -87
.byte 0
.byte 7
.byte 1
.byte 16
.hword 256
.byte 2
.byte 4
.hword 1024
.hword 449
.byte 1
.byte 0
.byte 24
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 256
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte -119
.byte -92
.byte 8
.byte 50
.byte -95
.byte 0
.byte 7
.byte 1
.byte 32
.hword 2304
.byte 3
.byte 1
.hword 1008
.hword 3521
.byte 0
.byte 19
.byte 70
.byte 32
.byte 1
.byte 0
.byte 1
.byte 0
.hword 4096
.byte 3
.byte 0
.byte 0
.byte 4
.byte 6
.byte -20
.byte -34
.byte -108
.byte -61
.byte -92
.byte -54
.byte 0
.byte 1
.byte 32
.hword 792
.byte 2
.byte 1
.hword 688
.hword 1217
.byte 11
.byte 50
.byte 40
.byte 32
.byte 3
.byte 1
.byte 1
.byte 0
.hword 1024
.byte 1
.byte -38
.byte -33
.byte 0
.type nand_opt_para, %object
.size nand_opt_para, 128
nand_opt_para:
.byte 1
.byte 0
.byte 49
.byte 63
.byte 0
.byte 49
.byte -128
.byte 21
.byte 0
.byte 50
.byte 17
.byte -128
.byte 112
.byte 120
.byte 120
.byte 3
.byte 1
.byte 0
.zero 14
.byte 2
.byte 0
.byte 49
.byte 63
.byte 0
.byte 49
.byte -128
.byte 21
.byte 0
.byte 0
.byte 17
.byte -127
.byte 112
.byte -15
.byte -14
.byte 0
.byte 0
.byte 0
.zero 14
.byte 3
.byte 0
.byte 49
.byte 63
.byte 0
.byte 49
.byte -128
.byte 21
.byte 96
.byte 96
.byte 17
.byte -127
.byte 112
.byte -15
.byte -14
.byte 0
.byte 0
.byte 0
.zero 14
.byte 4
.byte 0
.byte 49
.byte 63
.byte 0
.byte 49
.byte -128
.byte 21
.byte 96
.byte 96
.byte 17
.byte -127
.byte 112
.byte 112
.byte 112
.byte 0
.byte 0
.byte 0
.zero 14
.type tlc_b05a_prog_tbl, %object
.size tlc_b05a_prog_tbl, 1536
tlc_b05a_prog_tbl:
.hword 0
.hword 0
.hword 0
.hword 0
.hword 0
.hword 0
.hword 0
.hword 0
.hword 9
.hword 0
.hword 11
.hword 0
.hword 13
.hword 0
.hword 15
.hword 0
.hword 17
.hword 0
.hword 19
.hword 0
.hword 21
.hword 0
.hword 23
.hword 0
.hword 25
.hword 0
.hword 27
.hword 0
.hword 29
.hword 0
.hword 31
.hword 0
.hword 33
.hword 0
.hword 35
.hword 0
.hword 37
.hword 0
.hword 39
.hword 0
.hword 41
.hword 0
.hword 43
.hword 0
.hword 45
.hword 0
.hword 47
.hword 0
.hword 49
.hword 0
.hword 51
.hword 0
.hword 53
.hword 0
.hword 55
.hword 0
.hword 25
.hword 58
.hword 0
.hword 27
.hword 61
.hword 0
.hword 29
.hword 64
.hword 0
.hword 31
.hword 67
.hword 0
.hword 33
.hword 70
.hword 0
.hword 35
.hword 73
.hword 0
.hword 37
.hword 76
.hword 0
.hword 39
.hword 79
.hword 0
.hword 41
.hword 82
.hword 0
.hword 43
.hword 85
.hword 0
.hword 45
.hword 88
.hword 0
.hword 47
.hword 91
.hword 0
.hword 49
.hword 94
.hword 0
.hword 51
.hword 97
.hword 0
.hword 53
.hword 100
.hword 0
.hword 55
.hword 103
.hword 0
.hword 58
.hword 106
.hword 0
.hword 61
.hword 109
.hword 0
.hword 64
.hword 112
.hword 0
.hword 67
.hword 115
.hword 0
.hword 70
.hword 118
.hword 0
.hword 73
.hword 121
.hword 0
.hword 76
.hword 124
.hword 0
.hword 79
.hword 127
.hword 0
.hword 82
.hword 130
.hword 0
.hword 85
.hword 133
.hword 0
.hword 88
.hword 136
.hword 0
.hword 91
.hword 139
.hword 0
.hword 94
.hword 142
.hword 0
.hword 97
.hword 145
.hword 0
.hword 100
.hword 148
.hword 0
.hword 103
.hword 151
.hword 0
.hword 106
.hword 154
.hword 0
.hword 109
.hword 157
.hword 0
.hword 112
.hword 160
.hword 0
.hword 115
.hword 163
.hword 0
.hword 118
.hword 166
.hword 0
.hword 121
.hword 169
.hword 0
.hword 124
.hword 172
.hword 0
.hword 127
.hword 175
.hword 0
.hword 130
.hword 178
.hword 0
.hword 133
.hword 181
.hword 0
.hword 136
.hword 184
.hword 0
.hword 139
.hword 187
.hword 0
.hword 142
.hword 190
.hword 0
.hword 145
.hword 193
.hword 0
.hword 148
.hword 196
.hword 0
.hword 151
.hword 199
.hword 0
.hword 154
.hword 202
.hword 0
.hword 157
.hword 205
.hword 0
.hword 160
.hword 208
.hword 0
.hword 163
.hword 211
.hword 0
.hword 166
.hword 214
.hword 0
.hword 169
.hword 217
.hword 0
.hword 172
.hword 220
.hword 0
.hword 175
.hword 223
.hword 0
.hword 178
.hword 226
.hword 0
.hword 181
.hword 229
.hword 0
.hword 184
.hword 232
.hword 0
.hword 187
.hword 235
.hword 0
.hword 190
.hword 238
.hword 0
.hword 193
.hword 241
.hword 0
.hword 196
.hword 244
.hword 0
.hword 199
.hword 247
.hword 0
.hword 202
.hword 250
.hword 0
.hword 205
.hword 253
.hword 0
.hword 208
.hword 256
.hword 0
.hword 211
.hword 259
.hword 0
.hword 214
.hword 262
.hword 0
.hword 217
.hword 265
.hword 0
.hword 220
.hword 268
.hword 0
.hword 223
.hword 271
.hword 0
.hword 226
.hword 274
.hword 0
.hword 229
.hword 277
.hword 0
.hword 232
.hword 280
.hword 0
.hword 235
.hword 283
.hword 0
.hword 238
.hword 286
.hword 0
.hword 241
.hword 289
.hword 0
.hword 244
.hword 292
.hword 0
.hword 247
.hword 295
.hword 0
.hword 250
.hword 298
.hword 0
.hword 253
.hword 301
.hword 0
.hword 256
.hword 304
.hword 0
.hword 259
.hword 307
.hword 0
.hword 262
.hword 310
.hword 0
.hword 265
.hword 313
.hword 0
.hword 268
.hword 316
.hword 0
.hword 271
.hword 319
.hword 0
.hword 274
.hword 322
.hword 0
.hword 277
.hword 325
.hword 0
.hword 280
.hword 328
.hword 0
.hword 283
.hword 331
.hword 0
.hword 286
.hword 334
.hword 0
.hword 289
.hword 337
.hword 0
.hword 292
.hword 340
.hword 0
.hword 295
.hword 343
.hword 0
.hword 298
.hword 346
.hword 0
.hword 301
.hword 349
.hword 0
.hword 304
.hword 352
.hword 0
.hword 307
.hword 355
.hword 0
.hword 310
.hword 358
.hword 0
.hword 313
.hword 361
.hword 0
.hword 316
.hword 364
.hword 0
.hword 319
.hword 367
.hword 0
.hword 322
.hword 370
.hword 0
.hword 325
.hword 373
.hword 0
.hword 328
.hword 376
.hword 0
.hword 331
.hword 379
.hword 0
.hword 334
.hword 382
.hword 0
.hword 337
.hword 385
.hword 0
.hword 340
.hword 388
.hword 0
.hword 343
.hword 391
.hword 0
.hword 346
.hword 394
.hword 0
.hword 349
.hword 397
.hword 0
.hword 352
.hword 400
.hword 0
.hword 355
.hword 403
.hword 0
.hword 358
.hword 406
.hword 0
.hword 361
.hword 409
.hword 0
.hword 364
.hword 412
.hword 0
.hword 367
.hword 415
.hword 0
.hword 370
.hword 418
.hword 0
.hword 373
.hword 421
.hword 0
.hword 376
.hword 424
.hword 0
.hword 379
.hword 427
.hword 0
.hword 382
.hword 430
.hword 0
.hword 385
.hword 433
.hword 0
.hword 388
.hword 436
.hword 0
.hword 391
.hword 439
.hword 0
.hword 394
.hword 442
.hword 0
.hword 397
.hword 445
.hword 0
.hword 400
.hword 448
.hword 0
.hword 403
.hword 451
.hword 0
.hword 406
.hword 454
.hword 0
.hword 409
.hword 457
.hword 0
.hword 412
.hword 460
.hword 0
.hword 415
.hword 463
.hword 0
.hword 418
.hword 466
.hword 0
.hword 421
.hword 469
.hword 0
.hword 424
.hword 472
.hword 0
.hword 427
.hword 475
.hword 0
.hword 430
.hword 478
.hword 0
.hword 433
.hword 481
.hword 0
.hword 436
.hword 484
.hword 0
.hword 439
.hword 487
.hword 0
.hword 442
.hword 490
.hword 0
.hword 445
.hword 493
.hword 0
.hword 448
.hword 496
.hword 0
.hword 451
.hword 499
.hword 0
.hword 454
.hword 502
.hword 0
.hword 457
.hword 505
.hword 0
.hword 460
.hword 508
.hword 0
.hword 463
.hword 511
.hword 0
.hword 466
.hword 514
.hword 0
.hword 469
.hword 517
.hword 0
.hword 472
.hword 520
.hword 0
.hword 475
.hword 523
.hword 0
.hword 478
.hword 526
.hword 0
.hword 481
.hword 529
.hword 0
.hword 484
.hword 532
.hword 0
.hword 487
.hword 535
.hword 0
.hword 490
.hword 538
.hword 0
.hword 493
.hword 541
.hword 0
.hword 496
.hword 544
.hword 0
.hword 499
.hword 547
.hword 0
.hword 502
.hword 550
.hword 0
.hword 505
.hword 553
.hword 0
.hword 508
.hword 556
.hword 0
.hword 511
.hword 559
.hword 0
.hword 514
.hword 562
.hword 0
.hword 517
.hword 565
.hword 0
.hword 520
.hword 568
.hword 0
.hword 523
.hword 571
.hword 0
.hword 526
.hword 574
.hword 0
.hword 529
.hword 577
.hword 0
.hword 532
.hword 580
.hword 0
.hword 535
.hword 583
.hword 0
.hword 538
.hword 586
.hword 0
.hword 541
.hword 589
.hword 0
.hword 544
.hword 592
.hword 0
.hword 547
.hword 595
.hword 0
.hword 550
.hword 598
.hword 0
.hword 553
.hword 601
.hword 0
.hword 556
.hword 604
.hword 0
.hword 559
.hword 607
.hword 0
.hword 562
.hword 610
.hword 0
.hword 565
.hword 613
.hword 0
.hword 568
.hword 616
.hword 0
.hword 571
.hword 619
.hword 0
.hword 574
.hword 622
.hword 0
.hword 577
.hword 625
.hword 0
.hword 580
.hword 628
.hword 0
.hword 583
.hword 631
.hword 0
.hword 586
.hword 634
.hword 0
.hword 589
.hword 637
.hword 0
.hword 592
.hword 640
.hword 0
.hword 595
.hword 643
.hword 0
.hword 598
.hword 646
.hword 0
.hword 601
.hword 649
.hword 0
.hword 604
.hword 652
.hword 0
.hword 607
.hword 655
.hword 0
.hword 610
.hword 658
.hword 0
.hword 613
.hword 661
.hword 0
.hword 616
.hword 664
.hword 0
.hword 619
.hword 667
.hword 0
.hword 622
.hword 670
.hword 0
.hword 625
.hword 673
.hword 0
.hword 628
.hword 676
.hword 0
.hword 631
.hword 679
.hword 0
.hword 634
.hword 682
.hword 0
.hword 637
.hword 685
.hword 0
.hword 640
.hword 688
.hword 0
.hword 643
.hword 691
.hword 0
.hword 646
.hword 694
.hword 0
.hword 649
.hword 697
.hword 0
.hword 652
.hword 700
.hword 0
.hword 655
.hword 703
.hword 0
.hword 658
.hword 706
.hword 0
.hword 661
.hword 709
.hword 0
.hword 664
.hword 712
.hword 0
.hword 667
.hword 715
.hword 0
.hword 670
.hword 718
.hword 0
.hword 673
.hword 721
.hword 0
.hword 676
.hword 724
.hword 0
.hword 679
.hword 727
.hword 0
.hword 682
.hword 730
.hword 0
.hword 685
.hword 733
.hword 0
.hword 688
.hword 736
.hword 0
.hword 691
.hword 739
.hword 0
.hword 694
.hword 742
.hword 0
.hword 697
.hword 745
.hword 0
.hword 700
.hword 748
.hword 0
.hword 703
.hword 751
.hword 0
.hword 706
.hword 0
.hword 709
.hword 0
.hword 712
.hword 0
.hword 715
.hword 0
.hword 718
.hword 0
.hword 721
.hword 0
.hword 724
.hword 0
.hword 727
.hword 0
.type tlc_prog_order, %object
.size tlc_prog_order, 768
tlc_prog_order:
.hword 1
.hword 9
.hword 2
.hword 17
.hword 10
.hword 3
.hword 25
.hword 18
.hword 11
.hword 33
.hword 26
.hword 19
.hword 41
.hword 34
.hword 27
.hword 49
.hword 42
.hword 35
.hword 57
.hword 50
.hword 43
.hword 65
.hword 58
.hword 51
.hword 73
.hword 66
.hword 59
.hword 81
.hword 74
.hword 67
.hword 89
.hword 82
.hword 75
.hword 97
.hword 90
.hword 83
.hword 105
.hword 98
.hword 91
.hword 113
.hword 106
.hword 99
.hword 121
.hword 114
.hword 107
.hword 129
.hword 122
.hword 115
.hword 137
.hword 130
.hword 123
.hword 145
.hword 138
.hword 131
.hword 153
.hword 146
.hword 139
.hword 161
.hword 154
.hword 147
.hword 169
.hword 162
.hword 155
.hword 177
.hword 170
.hword 163
.hword 185
.hword 178
.hword 171
.hword 193
.hword 186
.hword 179
.hword 201
.hword 194
.hword 187
.hword 209
.hword 202
.hword 195
.hword 217
.hword 210
.hword 203
.hword 225
.hword 218
.hword 211
.hword 233
.hword 226
.hword 219
.hword 241
.hword 234
.hword 227
.hword 249
.hword 242
.hword 235
.hword 257
.hword 250
.hword 243
.hword 265
.hword 258
.hword 251
.hword 273
.hword 266
.hword 259
.hword 281
.hword 274
.hword 267
.hword 289
.hword 282
.hword 275
.hword 297
.hword 290
.hword 283
.hword 305
.hword 298
.hword 291
.hword 313
.hword 306
.hword 299
.hword 321
.hword 314
.hword 307
.hword 329
.hword 322
.hword 315
.hword 337
.hword 330
.hword 323
.hword 345
.hword 338
.hword 331
.hword 353
.hword 346
.hword 339
.hword 361
.hword 354
.hword 347
.hword 369
.hword 362
.hword 355
.hword 377
.hword 370
.hword 363
.hword 385
.hword 378
.hword 371
.hword 393
.hword 386
.hword 379
.hword 401
.hword 394
.hword 387
.hword 409
.hword 402
.hword 395
.hword 417
.hword 410
.hword 403
.hword 425
.hword 418
.hword 411
.hword 433
.hword 426
.hword 419
.hword 441
.hword 434
.hword 427
.hword 449
.hword 442
.hword 435
.hword 457
.hword 450
.hword 443
.hword 465
.hword 458
.hword 451
.hword 473
.hword 466
.hword 459
.hword 481
.hword 474
.hword 467
.hword 489
.hword 482
.hword 475
.hword 497
.hword 490
.hword 483
.hword 505
.hword 498
.hword 491
.hword 513
.hword 506
.hword 499
.hword 521
.hword 514
.hword 507
.hword 529
.hword 522
.hword 515
.hword 537
.hword 530
.hword 523
.hword 545
.hword 538
.hword 531
.hword 553
.hword 546
.hword 539
.hword 561
.hword 554
.hword 547
.hword 569
.hword 562
.hword 555
.hword 577
.hword 570
.hword 563
.hword 585
.hword 578
.hword 571
.hword 593
.hword 586
.hword 579
.hword 601
.hword 594
.hword 587
.hword 609
.hword 602
.hword 595
.hword 617
.hword 610
.hword 603
.hword 625
.hword 618
.hword 611
.hword 633
.hword 626
.hword 619
.hword 641
.hword 634
.hword 627
.hword 649
.hword 642
.hword 635
.hword 657
.hword 650
.hword 643
.hword 665
.hword 658
.hword 651
.hword 673
.hword 666
.hword 659
.hword 681
.hword 674
.hword 667
.hword 689
.hword 682
.hword 675
.hword 697
.hword 690
.hword 683
.hword 705
.hword 698
.hword 691
.hword 713
.hword 706
.hword 699
.hword 721
.hword 714
.hword 707
.hword 729
.hword 722
.hword 715
.hword 737
.hword 730
.hword 723
.hword 745
.hword 738
.hword 731
.hword 753
.hword 746
.hword 739
.hword 761
.hword 754
.hword 747
.hword 769
.hword 762
.hword 755
.hword 777
.hword 770
.hword 763
.hword 785
.hword 778
.hword 771
.hword 793
.hword 786
.hword 779
.hword 801
.hword 794
.hword 787
.hword 809
.hword 802
.hword 795
.hword 817
.hword 810
.hword 803
.hword 825
.hword 818
.hword 811
.hword 833
.hword 826
.hword 819
.hword 841
.hword 834
.hword 827
.hword 849
.hword 842
.hword 835
.hword 857
.hword 850
.hword 843
.hword 865
.hword 858
.hword 851
.hword 873
.hword 866
.hword 859
.hword 881
.hword 874
.hword 867
.hword 889
.hword 882
.hword 875
.hword 897
.hword 890
.hword 883
.hword 905
.hword 898
.hword 891
.hword 913
.hword 906
.hword 899
.hword 921
.hword 914
.hword 907
.hword 929
.hword 922
.hword 915
.hword 937
.hword 930
.hword 923
.hword 945
.hword 938
.hword 931
.hword 953
.hword 946
.hword 939
.hword 961
.hword 954
.hword 947
.hword 969
.hword 962
.hword 955
.hword 977
.hword 970
.hword 963
.hword 985
.hword 978
.hword 971
.hword 993
.hword 986
.hword 979
.hword 1001
.hword 994
.hword 987
.hword 1009
.hword 1002
.hword 995
.hword 1017
.hword 1010
.hword 1003
.hword 1018
.hword 1011
.hword 1019
.bss
.align 6
.set .LANCHOR0,. + 0
.set .LANCHOR3,. + 4352
.set .LANCHOR5,. + 8704
.type g_flash_slc_mode, %object
.size g_flash_slc_mode, 1
g_flash_slc_mode:
.zero 1
.type g_slc_mode_addr2, %object
.size g_slc_mode_addr2, 1
g_slc_mode_addr2:
.zero 1
.type g_block_align_addr, %object
.size g_block_align_addr, 2
g_block_align_addr:
.zero 2
.type g_lsb_page_tbl, %object
.size g_lsb_page_tbl, 1024
g_lsb_page_tbl:
.zero 1024
.type g_nandc_ver, %object
.size g_nandc_ver, 1
g_nandc_ver:
.zero 1
.zero 3
.type _c_user_data_density, %object
.size _c_user_data_density, 4
_c_user_data_density:
.zero 4
.zero 4
.type gp_sblk_list_tbl, %object
.size gp_sblk_list_tbl, 8
gp_sblk_list_tbl:
.zero 8
.type gp_flash_info, %object
.size gp_flash_info, 8
gp_flash_info:
.zero 8
.type gp_nandc, %object
.size gp_nandc, 8
gp_nandc:
.zero 8
.type NANDC_FMCTL, %object
.size NANDC_FMCTL, 4
NANDC_FMCTL:
.zero 4
.type NANDC_FMWAIT, %object
.size NANDC_FMWAIT, 4
NANDC_FMWAIT:
.zero 4
.type NANDC_FLCTL, %object
.size NANDC_FLCTL, 4
NANDC_FLCTL:
.zero 4
.type NANDC_BCHCTL, %object
.size NANDC_BCHCTL, 4
NANDC_BCHCTL:
.zero 4
.type NANDC_DLL_CTL_REG0, %object
.size NANDC_DLL_CTL_REG0, 4
NANDC_DLL_CTL_REG0:
.zero 4
.type NANDC_DLL_CTL_REG1, %object
.size NANDC_DLL_CTL_REG1, 4
NANDC_DLL_CTL_REG1:
.zero 4
.type NANDC_RANDMZ_CFG, %object
.size NANDC_RANDMZ_CFG, 4
NANDC_RANDMZ_CFG:
.zero 4
.type NANDC_FMWAIT_SYN, %object
.size NANDC_FMWAIT_SYN, 4
NANDC_FMWAIT_SYN:
.zero 4
.type _c_ftl_blk_pre_plane, %object
.size _c_ftl_blk_pre_plane, 2
_c_ftl_blk_pre_plane:
.zero 2
.zero 6
.type gp_blk_info, %object
.size gp_blk_info, 8
gp_blk_info:
.zero 8
.type _c_slc_to_xlc_ec_ratio, %object
.size _c_slc_to_xlc_ec_ratio, 2
_c_slc_to_xlc_ec_ratio:
.zero 2
.zero 6
.type ftl_sblk_vpn, %object
.size ftl_sblk_vpn, 8
ftl_sblk_vpn:
.zero 8
.type gp_ftl_ext_info, %object
.size gp_ftl_ext_info, 8
gp_ftl_ext_info:
.zero 8
.type g_retryMode, %object
.size g_retryMode, 1
g_retryMode:
.zero 1
.type g_maxRegNum, %object
.size g_maxRegNum, 1
g_maxRegNum:
.zero 1
.zero 6
.type gp_nand_para_info, %object
.size gp_nand_para_info, 8
gp_nand_para_info:
.zero 8
.type g_idb_ecc_bits, %object
.size g_idb_ecc_bits, 1
g_idb_ecc_bits:
.zero 1
.type g_nand_max_die, %object
.size g_nand_max_die, 1
g_nand_max_die:
.zero 1
.type g_idb_slc_mode_enable, %object
.size g_idb_slc_mode_enable, 1
g_idb_slc_mode_enable:
.zero 1
.zero 5
.type g_nand_opt_para, %object
.size g_nand_opt_para, 32
g_nand_opt_para:
.zero 32
.type g_flash_toggle_mode_en, %object
.size g_flash_toggle_mode_en, 1
g_flash_toggle_mode_en:
.zero 1
.zero 3
.type g_die_cs_idx, %object
.size g_die_cs_idx, 8
g_die_cs_idx:
.zero 8
.type g_flash_six_addr, %object
.size g_flash_six_addr, 1
g_flash_six_addr:
.zero 1
.type _c_ftl_cs_bits, %object
.size _c_ftl_cs_bits, 1
_c_ftl_cs_bits:
.zero 1
.zero 2
.type g_flash_cur_mode, %object
.size g_flash_cur_mode, 4
g_flash_cur_mode:
.zero 4
.type g_flash_micron_3d_tlc_flag, %object
.size g_flash_micron_3d_tlc_flag, 1
g_flash_micron_3d_tlc_flag:
.zero 1
.type g_flash_ymtc_3d_tlc_flag, %object
.size g_flash_ymtc_3d_tlc_flag, 1
g_flash_ymtc_3d_tlc_flag:
.zero 1
.zero 2
.type IDByte, %object
.size IDByte, 32
IDByte:
.zero 32
.type g_flash_interface_mode, %object
.size g_flash_interface_mode, 1
g_flash_interface_mode:
.zero 1
.type g_nandc_ecc_bits, %object
.size g_nandc_ecc_bits, 1
g_nandc_ecc_bits:
.zero 1
.type g_flash_multi_page_prog_en, %object
.size g_flash_multi_page_prog_en, 1
g_flash_multi_page_prog_en:
.zero 1
.type nandc_hw_seed, %object
.size nandc_hw_seed, 1
nandc_hw_seed:
.zero 1
.type nandc_randomizer_en, %object
.size nandc_randomizer_en, 1
nandc_randomizer_en:
.zero 1
.zero 3
.type g_nandc_v6_master_info, %object
.size g_nandc_v6_master_info, 40
g_nandc_v6_master_info:
.zero 40
.type fill_spare_size, %object
.size fill_spare_size, 2
fill_spare_size:
.zero 2
.zero 6
.type g_buf, %object
.size g_buf, 2048
g_buf:
.zero 2048
.type p_free_buf_head, %object
.size p_free_buf_head, 1
p_free_buf_head:
.zero 1
.type free_buf_count, %object
.size free_buf_count, 1
free_buf_count:
.zero 1
.type sblk_queue_head, %object
.size sblk_queue_head, 1
sblk_queue_head:
.zero 1
.type sblk_read_completed_queue_head, %object
.size sblk_read_completed_queue_head, 1
sblk_read_completed_queue_head:
.zero 1
.type sblk_gc_write_completed_queue_head, %object
.size sblk_gc_write_completed_queue_head, 1
sblk_gc_write_completed_queue_head:
.zero 1
.type sblk_write_completed_queue_head, %object
.size sblk_write_completed_queue_head, 1
sblk_write_completed_queue_head:
.zero 1
.zero 2
.type _c_totle_phy_density, %object
.size _c_totle_phy_density, 4
_c_totle_phy_density:
.zero 4
.type _c_totle_log_page, %object
.size _c_totle_log_page, 4
_c_totle_log_page:
.zero 4
.type free_slc_sblk, %object
.size free_slc_sblk, 2
free_slc_sblk:
.zero 2
.type free_xlc_sblk, %object
.size free_xlc_sblk, 2
free_xlc_sblk:
.zero 2
.type free_mix_sblk, %object
.size free_mix_sblk, 2
free_mix_sblk:
.zero 2
.type slc_data_sblk, %object
.size slc_data_sblk, 2
slc_data_sblk:
.zero 2
.type slc_cache_sblk, %object
.size slc_cache_sblk, 2
slc_cache_sblk:
.zero 2
.type xlc_data_sblk, %object
.size xlc_data_sblk, 2
xlc_data_sblk:
.zero 2
.type write_commit_count, %object
.size write_commit_count, 1
write_commit_count:
.zero 1
.type write_buf_count, %object
.size write_buf_count, 1
write_buf_count:
.zero 1
.zero 2
.type gp_ftl_info, %object
.size gp_ftl_info, 8
gp_ftl_info:
.zero 8
.type gc_free_slc_sblk_th, %object
.size gc_free_slc_sblk_th, 2
gc_free_slc_sblk_th:
.zero 2
.zero 2
.type _gc_after_discard_en, %object
.size _gc_after_discard_en, 4
_gc_after_discard_en:
.zero 4
.type gc_slc_mode_tlc_vpn_th, %object
.size gc_slc_mode_tlc_vpn_th, 2
gc_slc_mode_tlc_vpn_th:
.zero 2
.type gc_slc_mode_vpn_th, %object
.size gc_slc_mode_vpn_th, 2
gc_slc_mode_vpn_th:
.zero 2
.type gc_tlc_mode_slc_vpn_th, %object
.size gc_tlc_mode_slc_vpn_th, 2
gc_tlc_mode_slc_vpn_th:
.zero 2
.type gc_tlc_mode_tlc_vpn_th, %object
.size gc_tlc_mode_tlc_vpn_th, 2
gc_tlc_mode_tlc_vpn_th:
.zero 2
.type write_buf_head, %object
.size write_buf_head, 1
write_buf_head:
.zero 1
.zero 7
.type g_gc_info, %object
.size g_gc_info, 2216
g_gc_info:
.zero 2216
.type ftl_sblk_vpn_update_id, %object
.size ftl_sblk_vpn_update_id, 2
ftl_sblk_vpn_update_id:
.zero 2
.zero 6
.type ftl_sblk_update_list, %object
.size ftl_sblk_update_list, 16
ftl_sblk_update_list:
.zero 16
.type _c_ftl_block_addr_log2, %object
.size _c_ftl_block_addr_log2, 2
_c_ftl_block_addr_log2:
.zero 2
.type _c_ftl_planes_per_die, %object
.size _c_ftl_planes_per_die, 1
_c_ftl_planes_per_die:
.zero 1
.zero 5
.type gc_valid_page_ppa, %object
.size gc_valid_page_ppa, 8
gc_valid_page_ppa:
.zero 8
.type _c_ftl_nand_type, %object
.size _c_ftl_nand_type, 1
_c_ftl_nand_type:
.zero 1
.type _c_ftl_nand_planes_num, %object
.size _c_ftl_nand_planes_num, 1
_c_ftl_nand_planes_num:
.zero 1
.type g_flash_3d_mlc_flag, %object
.size g_flash_3d_mlc_flag, 1
g_flash_3d_mlc_flag:
.zero 1
.type g_one_pass_program, %object
.size g_one_pass_program, 1
g_one_pass_program:
.zero 1
.zero 4
.type gc_page_buf_id, %object
.size gc_page_buf_id, 8
gc_page_buf_id:
.zero 8
.type g_flash_3d_tlc_flag, %object
.size g_flash_3d_tlc_flag, 1
g_flash_3d_tlc_flag:
.zero 1
.type gc_mode, %object
.size gc_mode, 1
gc_mode:
.zero 1
.type _c_ftl_page_pre_blk, %object
.size _c_ftl_page_pre_blk, 2
_c_ftl_page_pre_blk:
.zero 2
.zero 4
.type gp_data_slc_data_head, %object
.size gp_data_slc_data_head, 8
gp_data_slc_data_head:
.zero 8
.type gc_slc_data_index, %object
.size gc_slc_data_index, 2
gc_slc_data_index:
.zero 2
.type gc_slc_cache_index, %object
.size gc_slc_cache_index, 2
gc_slc_cache_index:
.zero 2
.type gc_xlc_data_index, %object
.size gc_xlc_data_index, 2
gc_xlc_data_index:
.zero 2
.zero 2
.type gp_data_slc_cache_head, %object
.size gp_data_slc_cache_head, 8
gp_data_slc_cache_head:
.zero 8
.type gp_data_xlc_data_head, %object
.size gp_data_xlc_data_head, 8
gp_data_xlc_data_head:
.zero 8
.type _c_ftl_page_pre_slc_blk, %object
.size _c_ftl_page_pre_slc_blk, 2
_c_ftl_page_pre_slc_blk:
.zero 2
.type gc_xlc_search_index, %object
.size gc_xlc_search_index, 2
gc_xlc_search_index:
.zero 2
.type _min_slc_super_block, %object
.size _min_slc_super_block, 2
_min_slc_super_block:
.zero 2
.type _max_xlc_super_block, %object
.size _max_xlc_super_block, 2
_max_xlc_super_block:
.zero 2
.type gp_free_slc_head, %object
.size gp_free_slc_head, 8
gp_free_slc_head:
.zero 8
.type gp_free_xlc_head, %object
.size gp_free_xlc_head, 8
gp_free_xlc_head:
.zero 8
.type gp_free_mix_head, %object
.size gp_free_mix_head, 8
gp_free_mix_head:
.zero 8
.type zftl_print_list_count, %object
.size zftl_print_list_count, 2
zftl_print_list_count:
.zero 2
.type _c_ftl_block_align_addr, %object
.size _c_ftl_block_align_addr, 2
_c_ftl_block_align_addr:
.zero 2
.type _c_ftl_nand_die_num, %object
.size _c_ftl_nand_die_num, 1
_c_ftl_nand_die_num:
.zero 1
.zero 3
.type lpa_hash, %object
.size lpa_hash, 512
lpa_hash:
.zero 512
.type ftl_sblk_lpa_tbl, %object
.size ftl_sblk_lpa_tbl, 8
ftl_sblk_lpa_tbl:
.zero 8
.type lpa_hash_index, %object
.size lpa_hash_index, 8
lpa_hash_index:
.zero 8
.type ftl_vpn_update_count, %object
.size ftl_vpn_update_count, 2
ftl_vpn_update_count:
.zero 2
.type _c_ftl_sec_per_page, %object
.size _c_ftl_sec_per_page, 1
_c_ftl_sec_per_page:
.zero 1
.zero 1
.type ftl_sblk_update_list_offset, %object
.size ftl_sblk_update_list_offset, 2
ftl_sblk_update_list_offset:
.zero 2
.type g_flash_micron_3d_tlc_b05a, %object
.size g_flash_micron_3d_tlc_b05a, 1
g_flash_micron_3d_tlc_b05a:
.zero 1
.zero 1
.type _c_mix_max_xlc_ec_count, %object
.size _c_mix_max_xlc_ec_count, 2
_c_mix_max_xlc_ec_count:
.zero 2
.type _c_mix_max_slc_ec_count, %object
.size _c_mix_max_slc_ec_count, 2
_c_mix_max_slc_ec_count:
.zero 2
.type read_buf_head, %object
.size read_buf_head, 1
read_buf_head:
.zero 1
.type read_buf_count, %object
.size read_buf_count, 1
read_buf_count:
.zero 1
.zero 2
.type pm_ram_info, %object
.size pm_ram_info, 512
pm_ram_info:
.zero 512
.type pm_last_update_ram_id, %object
.size pm_last_update_ram_id, 1
pm_last_update_ram_id:
.zero 1
.zero 3
.type g_msb_page_tbl, %object
.size g_msb_page_tbl, 2048
g_msb_page_tbl:
.zero 2048
.type g_slc_page_num, %object
.size g_slc_page_num, 2
g_slc_page_num:
.zero 2
.zero 2
.type g_die_addr, %object
.size g_die_addr, 32
g_die_addr:
.zero 32
.type g_totle_phy_block, %object
.size g_totle_phy_block, 2
g_totle_phy_block:
.zero 2
.zero 2
.type pm_force_gc, %object
.size pm_force_gc, 4
pm_force_gc:
.zero 4
.type _c_swl_slc_gc_th, %object
.size _c_swl_slc_gc_th, 2
_c_swl_slc_gc_th:
.zero 2
.type _c_swl_xlc_gc_th, %object
.size _c_swl_xlc_gc_th, 2
_c_swl_xlc_gc_th:
.zero 2
.type _c_max_pm_sblk, %object
.size _c_max_pm_sblk, 2
_c_max_pm_sblk:
.zero 2
.zero 2
.type power_on_init_jiffies, %object
.size power_on_init_jiffies, 8
power_on_init_jiffies:
.zero 8
.type gp_ftl_api, %object
.size gp_ftl_api, 8
gp_ftl_api:
.zero 8
.type RK29_NANDC_REG_BASE, %object
.size RK29_NANDC_REG_BASE, 8
RK29_NANDC_REG_BASE:
.zero 8
.type ftl_dma32_buffer_size, %object
.size ftl_dma32_buffer_size, 4
ftl_dma32_buffer_size:
.zero 4
.zero 4
.type ftl_dma32_buffer, %object
.size ftl_dma32_buffer, 8
ftl_dma32_buffer:
.zero 8
.type gc_state, %object
.size gc_state, 1
gc_state:
.zero 1
.zero 3
.type gc_search_count, %object
.size gc_search_count, 4
gc_search_count:
.zero 4
.type gc_slc_mode_slc_vpn_th, %object
.size gc_slc_mode_slc_vpn_th, 2
gc_slc_mode_slc_vpn_th:
.zero 2
.zero 6
.type gc_lpa_tbl, %object
.size gc_lpa_tbl, 8
gc_lpa_tbl:
.zero 8
.type gc_pre_ppa_tbl, %object
.size gc_pre_ppa_tbl, 8
gc_pre_ppa_tbl:
.zero 8
.type gc_des_ppa_tbl, %object
.size gc_des_ppa_tbl, 8
gc_des_ppa_tbl:
.zero 8
.type g_flash_tmp_page_buffer, %object
.size g_flash_tmp_page_buffer, 8
g_flash_tmp_page_buffer:
.zero 8
.type g_nandc_tran_timeout, %object
.size g_nandc_tran_timeout, 1
g_nandc_tran_timeout:
.zero 1
.zero 7
.type g_flash_tmp_spare_buffer, %object
.size g_flash_tmp_spare_buffer, 8
g_flash_tmp_spare_buffer:
.zero 8
.type g_maxRetryCount, %object
.size g_maxRetryCount, 1
g_maxRetryCount:
.zero 1
.zero 3
.type flash_ddr_tuning_sdr_read_count, %object
.size flash_ddr_tuning_sdr_read_count, 4
flash_ddr_tuning_sdr_read_count:
.zero 4
.type flash_read_retry, %object
.size flash_read_retry, 8
flash_read_retry:
.zero 8
.type g_flash_spare_buffer, %object
.size g_flash_spare_buffer, 8
g_flash_spare_buffer:
.zero 8
.type g_flash_page_buffer, %object
.size g_flash_page_buffer, 8
g_flash_page_buffer:
.zero 8
.type write_commit_head, %object
.size write_commit_head, 1
write_commit_head:
.zero 1
.zero 3
.type ftl_flush_jiffies, %object
.size ftl_flush_jiffies, 4
ftl_flush_jiffies:
.zero 4
.type g_flash_multi_page_read_en, %object
.size g_flash_multi_page_read_en, 1
g_flash_multi_page_read_en:
.zero 1
.zero 7
.type ftl_info_spare, %object
.size ftl_info_spare, 8
ftl_info_spare:
.zero 8
.type g_ftl_info_blk, %object
.size g_ftl_info_blk, 4
g_ftl_info_blk:
.zero 4
.zero 4
.type ftl_info_data_buffer, %object
.size ftl_info_data_buffer, 8
ftl_info_data_buffer:
.zero 8
.type ftl_sys_info_first_write, %object
.size ftl_sys_info_first_write, 1
ftl_sys_info_first_write:
.zero 1
.type ftl_power_lost_flag, %object
.size ftl_power_lost_flag, 1
ftl_power_lost_flag:
.zero 1
.type ftl_ext_info_first_write, %object
.size ftl_ext_info_first_write, 1
ftl_ext_info_first_write:
.zero 1
.zero 5
.type ftl_ext_info_data_buffer, %object
.size ftl_ext_info_data_buffer, 8
ftl_ext_info_data_buffer:
.zero 8
.type ftl_tmp_spare, %object
.size ftl_tmp_spare, 8
ftl_tmp_spare:
.zero 8
.type pm_gc_enable, %object
.size pm_gc_enable, 4
pm_gc_enable:
.zero 4
.zero 4
.type g_pm_spare, %object
.size g_pm_spare, 8
g_pm_spare:
.zero 8
.type pm_first_write, %object
.size pm_first_write, 1
pm_first_write:
.zero 1
.zero 7
.type g_flash_sys_spare_buffer, %object
.size g_flash_sys_spare_buffer, 8
g_flash_sys_spare_buffer:
.zero 8
.type g_flash_blk_info, %object
.size g_flash_blk_info, 4
g_flash_blk_info:
.zero 4
.type g_flash_reversd_blks, %object
.size g_flash_reversd_blks, 1
g_flash_reversd_blks:
.zero 1
.type g_flash_micron_3d_tlc_b16a, %object
.size g_flash_micron_3d_tlc_b16a, 1
g_flash_micron_3d_tlc_b16a:
.zero 1
.type _c_ftl_byte_pre_page, %object
.size _c_ftl_byte_pre_page, 2
_c_ftl_byte_pre_page:
.zero 2
.type pm_last_load_ram_id, %object
.size pm_last_load_ram_id, 1
pm_last_load_ram_id:
.zero 1
.type _ftl_gc_tag_page_num, %object
.size _ftl_gc_tag_page_num, 1
_ftl_gc_tag_page_num:
.zero 1
.zero 2
.type _last_read_time, %object
.size _last_read_time, 4
_last_read_time:
.zero 4
.type _last_write_time, %object
.size _last_write_time, 4
_last_write_time:
.zero 4
.type read_ahead_lpa, %object
.size read_ahead_lpa, 4
read_ahead_lpa:
.zero 4
.type _c_totle_data_density, %object
.size _c_totle_data_density, 4
_c_totle_data_density:
.zero 4
.type _c_ftl_pm_page_num, %object
.size _c_ftl_pm_page_num, 2
_c_ftl_pm_page_num:
.zero 2
.zero 2
.type ftl_tmp_buffer, %object
.size ftl_tmp_buffer, 8
ftl_tmp_buffer:
.zero 8
.type rk_zftl_enable, %object
.size rk_zftl_enable, 1
rk_zftl_enable:
.zero 1
.zero 7
.type gLoaderBootInfo, %object
.size gLoaderBootInfo, 8
gLoaderBootInfo:
.zero 8
.type RK29_NANDC1_REG_BASE, %object
.size RK29_NANDC1_REG_BASE, 8
RK29_NANDC1_REG_BASE:
.zero 8
.type discard_sector_count, %object
.size discard_sector_count, 4
discard_sector_count:
.zero 4
.type idb_write_enable, %object
.size idb_write_enable, 1
idb_write_enable:
.zero 1
.zero 3
.type idb_buf, %object
.size idb_buf, 8
idb_buf:
.zero 8
.type idb_last_lba, %object
.size idb_last_lba, 4
idb_last_lba:
.zero 4
.zero 4
.type g_idb_buffer, %object
.size g_idb_buffer, 8
g_idb_buffer:
.zero 8
.type g_vendor, %object
.size g_vendor, 8
g_vendor:
.zero 8
.type SecureBootUnlockTryCount, %object
.size SecureBootUnlockTryCount, 4
SecureBootUnlockTryCount:
.zero 4
.type SecureBootCheckOK, %object
.size SecureBootCheckOK, 4
SecureBootCheckOK:
.zero 4
.type SecureBootEn, %object
.size SecureBootEn, 4
SecureBootEn:
.zero 4
.zero 4
.type gpVendor1Info, %object
.size gpVendor1Info, 8
gpVendor1Info:
.zero 8
.type gpVendor0Info, %object
.size gpVendor0Info, 8
gpVendor0Info:
.zero 8
.type gSnSectorData, %object
.size gSnSectorData, 512
gSnSectorData:
.zero 512
.type gpDrmKeyInfo, %object
.size gpDrmKeyInfo, 8
gpDrmKeyInfo:
.zero 8
.type gpBootConfig, %object
.size gpBootConfig, 8
gpBootConfig:
.zero 8
.type ftl_low_format_cur_blk, %object
.size ftl_low_format_cur_blk, 2
ftl_low_format_cur_blk:
.zero 2
.zero 6
.type p_read_ahead_ext_buf, %object
.size p_read_ahead_ext_buf, 8
p_read_ahead_ext_buf:
.zero 8
.type _c_ftl_nand_blks_per_die, %object
.size _c_ftl_nand_blks_per_die, 2
_c_ftl_nand_blks_per_die:
.zero 2
.zero 6
.type nandc_ecc_sts, %object
.size nandc_ecc_sts, 16
nandc_ecc_sts:
.zero 16
.type g_slc_mode_enable, %object
.size g_slc_mode_enable, 1
g_slc_mode_enable:
.zero 1
.section .rodata
.align 3
.set .LANCHOR1,. + 0
.type __func__.46344, %object
.size __func__.46344, 18
__func__.46344:
.string "_list_remove_node"
.zero 6
.type __func__.46369, %object
.size __func__.46369, 23
__func__.46369:
.string "_list_update_data_list"
.zero 1
.type toshiba_15ref_value, %object
.size toshiba_15ref_value, 95
toshiba_15ref_value:
.byte 4
.byte 5
.byte 6
.byte 7
.byte 13
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 2
.byte 4
.byte 2
.byte 0
.byte 0
.byte 8
.byte 8
.byte 0
.byte 0
.byte 0
.byte 124
.byte 0
.byte 124
.byte 124
.byte 0
.byte 122
.byte 0
.byte 122
.byte 122
.byte 0
.byte 11
.byte 126
.byte 118
.byte 116
.byte 0
.byte 120
.byte 2
.byte 120
.byte 122
.byte 0
.byte 126
.byte 4
.byte 126
.byte 122
.byte 0
.byte 16
.byte 118
.byte 114
.byte 112
.byte 0
.byte 118
.byte 4
.byte 118
.byte 120
.byte 0
.byte 4
.byte 4
.byte 4
.byte 118
.byte 0
.byte 2
.byte 0
.byte 126
.byte 124
.byte 0
.byte 6
.byte 10
.byte 6
.byte 2
.byte 0
.byte 116
.byte 124
.byte 116
.byte 118
.byte 0
.byte 4
.byte 4
.byte 124
.byte 126
.byte 0
.byte 0
.byte 124
.byte 120
.byte 120
.byte 0
.byte 124
.byte 118
.byte 116
.byte 114
.byte 0
.zero 1
.type toshiba_A19ref_value, %object
.size toshiba_A19ref_value, 45
toshiba_A19ref_value:
.byte 4
.byte 5
.byte 6
.byte 7
.byte 13
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 4
.byte 4
.byte 124
.byte 126
.byte 0
.byte 0
.byte 124
.byte 120
.byte 120
.byte 0
.byte 124
.byte 118
.byte 116
.byte 114
.byte 0
.byte 8
.byte 8
.byte 0
.byte 0
.byte 0
.byte 11
.byte 126
.byte 118
.byte 116
.byte 0
.byte 16
.byte 118
.byte 114
.byte 112
.byte 0
.byte 2
.byte 0
.byte 126
.byte 124
.byte 0
.zero 3
.type toshiba_ref_value, %object
.size toshiba_ref_value, 8
toshiba_ref_value:
.byte 0
.byte 4
.byte 124
.byte 120
.byte 116
.byte 8
.byte 12
.byte 112
.type __func__.26714, %object
.size __func__.26714, 22
__func__.26714:
.string "nand_flash_print_info"
.zero 2
.type __func__.26187, %object
.size __func__.26187, 28
__func__.26187:
.string "flash_wait_device_ready_raw"
.zero 4
.type __func__.26251, %object
.size __func__.26251, 22
__func__.26251:
.string "flash_start_page_read"
.zero 2
.type toshiba_3D_tlc_value, %object
.size toshiba_3D_tlc_value, 399
toshiba_3D_tlc_value:
.byte -119
.byte -119
.byte -119
.byte -119
.byte -118
.byte -118
.byte -118
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 5
.byte -2
.byte -1
.byte 0
.byte -3
.byte -2
.byte 6
.byte -9
.byte -12
.byte -9
.byte -7
.byte -13
.byte -12
.byte -7
.byte -6
.byte -15
.byte -15
.byte -2
.byte -12
.byte -16
.byte -6
.byte -2
.byte -19
.byte -19
.byte -6
.byte -4
.byte -12
.byte -14
.byte -2
.byte -11
.byte -23
.byte -34
.byte -4
.byte -20
.byte -22
.byte -2
.byte -7
.byte -31
.byte -30
.byte -12
.byte -20
.byte -18
.byte 2
.byte -15
.byte -19
.byte -36
.byte -12
.byte -28
.byte -34
.byte -6
.byte -15
.byte -11
.byte 2
.byte -12
.byte -8
.byte -2
.byte 2
.byte -3
.byte -7
.byte -10
.byte -4
.byte -8
.byte -6
.byte -6
.byte -11
.byte -27
.byte -38
.byte -16
.byte -12
.byte -2
.byte 2
.byte -7
.byte -31
.byte -22
.byte -4
.byte -16
.byte -22
.byte -7
.byte -31
.byte -23
.byte -22
.byte -28
.byte -28
.byte -26
.byte 2
.byte -7
.byte -11
.byte -14
.byte -8
.byte -12
.byte -10
.byte -10
.byte -27
.byte -25
.byte -22
.byte -20
.byte -28
.byte -22
.byte -7
.byte -23
.byte -29
.byte -34
.byte -24
.byte -32
.byte -22
.byte -10
.byte -11
.byte -29
.byte -18
.byte -12
.byte -24
.byte -22
.byte 6
.byte 1
.byte -3
.byte -6
.byte 0
.byte -4
.byte -2
.byte 10
.byte -3
.byte -7
.byte -6
.byte 4
.byte -4
.byte -2
.byte -10
.byte -23
.byte -39
.byte -22
.byte -19
.byte -24
.byte -18
.byte -14
.byte -23
.byte -29
.byte -30
.byte -15
.byte -30
.byte -30
.byte -7
.byte -27
.byte -35
.byte -26
.byte -15
.byte -24
.byte -26
.byte 6
.byte -11
.byte 5
.byte -2
.byte -16
.byte -16
.byte -2
.byte -2
.byte -15
.byte -15
.byte -20
.byte -8
.byte -16
.byte -18
.byte 6
.byte 5
.byte -15
.byte -2
.byte -24
.byte -28
.byte -22
.byte 10
.byte -15
.byte -3
.byte -30
.byte -8
.byte -24
.byte -30
.byte -10
.byte -27
.byte -19
.byte -30
.byte -12
.byte -16
.byte -10
.byte 14
.byte -19
.byte -3
.byte -30
.byte 4
.byte 4
.byte 6
.byte 2
.byte 1
.byte -3
.byte -10
.byte -8
.byte -4
.byte -6
.byte -2
.byte -15
.byte -11
.byte -26
.byte -8
.byte -20
.byte -30
.byte 6
.byte -19
.byte -3
.byte -46
.byte 0
.byte 0
.byte 2
.byte 6
.byte 9
.byte 5
.byte 2
.byte 4
.byte 8
.byte 6
.byte 8
.byte 9
.byte 9
.byte 6
.byte 8
.byte 8
.byte 6
.byte 10
.byte 13
.byte 9
.byte 6
.byte 8
.byte 12
.byte 10
.byte 2
.byte 5
.byte 1
.byte -2
.byte 0
.byte 0
.byte 6
.byte 12
.byte 1
.byte 13
.byte 2
.byte 12
.byte 12
.byte 14
.byte -12
.byte -14
.byte -20
.byte -18
.byte -16
.byte -16
.byte -14
.byte -12
.byte -10
.byte -21
.byte -14
.byte -12
.byte -12
.byte -10
.byte -12
.byte -18
.byte -22
.byte -24
.byte -18
.byte -18
.byte -18
.byte -12
.byte -14
.byte -23
.byte -20
.byte -20
.byte -20
.byte -20
.byte -12
.byte -24
.byte -24
.byte -30
.byte -24
.byte -28
.byte -28
.byte -12
.byte -26
.byte -25
.byte -34
.byte -24
.byte -24
.byte -24
.byte -12
.byte -13
.byte -26
.byte -20
.byte -14
.byte -18
.byte -18
.byte -12
.byte -15
.byte -27
.byte -22
.byte -20
.byte -24
.byte -22
.byte -12
.byte -21
.byte -28
.byte -28
.byte -24
.byte -26
.byte -24
.byte 20
.byte 16
.byte 6
.byte 10
.byte 16
.byte 12
.byte 12
.byte 16
.byte 16
.byte 8
.byte 8
.byte 12
.byte 12
.byte 12
.byte 18
.byte 18
.byte 10
.byte 8
.byte 14
.byte 14
.byte 14
.byte 16
.byte 14
.byte 6
.byte 6
.byte 12
.byte 14
.byte 8
.byte 20
.byte 18
.byte 8
.byte 6
.byte 14
.byte 14
.byte 10
.byte 20
.byte 20
.byte 6
.byte 10
.byte 10
.byte 12
.byte 12
.byte 10
.byte 13
.byte 5
.byte 2
.byte 14
.byte 8
.byte 6
.byte 6
.byte 13
.byte 9
.byte 4
.byte 14
.byte 10
.byte 10
.byte 10
.byte 13
.byte 9
.byte 6
.byte 8
.byte 12
.byte 10
.byte 2
.byte 5
.byte 1
.byte -2
.byte 0
.byte 0
.byte 6
.byte 12
.byte 1
.byte 13
.byte 2
.byte 12
.byte 12
.byte 14
.zero 1
.type toshiba_3D_slc_value, %object
.size toshiba_3D_slc_value, 11
toshiba_3D_slc_value:
.byte -117
.byte 0
.byte -8
.byte 8
.byte -16
.byte -24
.byte 24
.byte -40
.byte 40
.byte -56
.byte 56
.zero 5
.type ymtc_3D_tlc_value, %object
.size ymtc_3D_tlc_value, 357
ymtc_3D_tlc_value:
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte -10
.byte -10
.byte -6
.byte -6
.byte -2
.byte 2
.byte 2
.byte -6
.byte -6
.byte -4
.byte -4
.byte -4
.byte -6
.byte -8
.byte 6
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte -2
.byte -2
.byte -2
.byte -4
.byte -4
.byte -6
.byte -6
.byte -6
.byte -6
.byte -6
.byte -6
.byte -6
.byte -6
.byte -11
.byte -2
.byte 2
.byte 4
.byte 4
.byte 6
.byte 6
.byte 6
.byte -6
.byte -6
.byte -6
.byte -6
.byte -6
.byte -8
.byte -14
.byte -6
.byte -15
.byte -11
.byte 2
.byte -12
.byte -8
.byte -2
.byte 2
.byte -3
.byte -7
.byte -10
.byte -4
.byte -8
.byte -6
.byte -18
.byte -18
.byte -14
.byte -14
.byte -10
.byte -5
.byte -5
.byte -14
.byte -14
.byte -12
.byte -12
.byte -12
.byte -13
.byte -15
.byte -2
.byte -8
.byte -8
.byte -8
.byte -8
.byte -7
.byte -7
.byte -10
.byte -10
.byte -10
.byte -12
.byte -12
.byte -13
.byte -13
.byte -14
.byte -14
.byte -14
.byte -14
.byte -14
.byte -13
.byte -18
.byte -10
.byte -6
.byte -4
.byte -4
.byte -2
.byte -1
.byte -1
.byte -14
.byte -14
.byte -14
.byte -14
.byte -14
.byte -15
.byte -21
.byte -12
.byte -11
.byte -7
.byte -7
.byte -3
.byte 1
.byte 1
.byte -8
.byte -7
.byte -5
.byte -5
.byte -5
.byte -7
.byte -9
.byte 4
.byte -1
.byte -1
.byte -1
.byte -1
.byte -1
.byte -1
.byte -4
.byte -3
.byte -3
.byte -5
.byte -5
.byte -7
.byte -7
.byte -8
.byte -7
.byte -7
.byte -7
.byte -7
.byte -7
.byte -12
.byte -4
.byte 1
.byte 3
.byte 3
.byte 5
.byte 5
.byte 5
.byte -8
.byte -7
.byte -7
.byte -7
.byte -7
.byte -9
.byte -15
.byte 2
.byte -7
.byte -11
.byte -14
.byte -8
.byte -12
.byte -10
.byte 6
.byte 1
.byte -3
.byte -6
.byte 0
.byte -4
.byte -2
.byte 10
.byte -3
.byte -7
.byte -6
.byte 4
.byte -4
.byte -2
.byte -10
.byte -23
.byte -39
.byte -22
.byte -19
.byte -24
.byte -18
.byte -7
.byte -27
.byte -35
.byte -26
.byte -15
.byte -24
.byte -26
.byte 6
.byte -11
.byte 5
.byte -2
.byte -16
.byte -16
.byte -2
.byte -2
.byte -15
.byte -15
.byte -20
.byte -8
.byte -16
.byte -18
.byte 2
.byte 1
.byte -3
.byte -10
.byte -8
.byte -4
.byte -6
.byte -2
.byte -15
.byte -11
.byte -26
.byte -8
.byte -20
.byte -30
.byte 6
.byte -19
.byte -3
.byte -46
.byte 0
.byte 0
.byte 2
.byte 6
.byte 9
.byte 5
.byte 2
.byte 4
.byte 8
.byte 6
.byte 8
.byte 9
.byte 9
.byte 6
.byte 8
.byte 8
.byte 6
.byte 10
.byte 13
.byte 9
.byte 6
.byte 8
.byte 12
.byte 10
.byte 2
.byte 5
.byte 1
.byte -2
.byte 0
.byte 0
.byte 6
.byte 12
.byte 1
.byte 13
.byte 2
.byte 12
.byte 12
.byte 14
.byte -12
.byte -14
.byte -20
.byte -18
.byte -16
.byte -16
.byte -14
.byte -12
.byte -10
.byte -21
.byte -14
.byte -12
.byte -12
.byte -10
.byte -12
.byte -18
.byte -22
.byte -24
.byte -18
.byte -18
.byte -18
.byte -12
.byte -14
.byte -23
.byte -20
.byte -20
.byte -20
.byte -20
.byte 16
.byte 16
.byte 8
.byte 8
.byte 12
.byte 12
.byte 12
.byte 18
.byte 18
.byte 10
.byte 8
.byte 14
.byte 14
.byte 14
.byte 16
.byte 14
.byte 6
.byte 6
.byte 12
.byte 14
.byte 8
.byte 10
.byte 13
.byte 5
.byte 2
.byte 14
.byte 8
.byte 6
.byte 6
.byte 13
.byte 9
.byte 4
.byte 14
.byte 10
.byte 10
.byte 10
.byte 13
.byte 9
.byte 6
.byte 8
.byte 12
.byte 10
.byte 2
.byte 5
.byte 1
.byte -2
.byte 0
.byte 0
.byte 6
.byte 12
.byte 1
.byte 13
.byte 2
.byte 12
.byte 12
.byte 14
.zero 3
.type ymtc_3D_slc_value, %object
.size ymtc_3D_slc_value, 10
ymtc_3D_slc_value:
.byte 0
.byte -8
.byte 8
.byte -16
.byte -20
.byte 24
.byte -26
.byte 40
.byte -12
.byte 56
.zero 6
.type __func__.26276, %object
.size __func__.26276, 23
__func__.26276:
.string "flash_start_plane_read"
.zero 1
.type __func__.26162, %object
.size __func__.26162, 26
__func__.26162:
.string "flash_erase_duplane_block"
.zero 6
.type __func__.26173, %object
.size __func__.26173, 21
__func__.26173:
.string "flash_erase_block_en"
.zero 3
.type random_seed, %object
.size random_seed, 256
random_seed:
.hword 22378
.hword 1512
.hword 25245
.hword 17827
.hword 25756
.hword 19440
.hword 9026
.hword 10030
.hword 29528
.hword 20467
.hword 29676
.hword 24432
.hword 31328
.hword 6872
.hword 13426
.hword 13842
.hword 8783
.hword 1108
.hword 782
.hword 28837
.hword 30729
.hword 9505
.hword 18676
.hword 23085
.hword 18730
.hword 1085
.hword 32609
.hword 14697
.hword 20858
.hword 15170
.hword 30365
.hword 1607
.hword 32298
.hword 4995
.hword 18905
.hword 1976
.hword 9592
.hword 20204
.hword 17443
.hword 13615
.hword 23330
.hword 29369
.hword 13947
.hword 9398
.hword 32398
.hword 8984
.hword 27600
.hword 21785
.hword 6019
.hword 6311
.hword 31598
.hword 30210
.hword 19327
.hword 13896
.hword 11347
.hword 27545
.hword 3107
.hword 26575
.hword 32270
.hword 19852
.hword 20601
.hword 8349
.hword 9290
.hword 29819
.hword 13579
.hword 3661
.hword 28676
.hword 27331
.hword 32574
.hword 8693
.hword 31253
.hword 9081
.hword 5399
.hword 6842
.hword 20087
.hword 5537
.hword 1274
.hword 11617
.hword 9530
.hword 4866
.hword 8035
.hword 23219
.hword 1178
.hword 23272
.hword 7383
.hword 18944
.hword 12488
.hword 12871
.hword 29340
.hword 20532
.hword 11022
.hword 22514
.hword 228
.hword 22363
.hword 24978
.hword 14584
.hword 12138
.hword 3092
.hword 17916
.hword 16863
.hword 14554
.hword 31457
.hword 29474
.hword 25311
.hword 24121
.hword 3684
.hword 28037
.hword 22865
.hword 22839
.hword 25217
.hword 13217
.hword 27186
.hword 14938
.hword 11180
.hword 29754
.hword 24180
.hword 15150
.hword 32455
.hword 20434
.hword 23848
.hword 29983
.hword 16120
.hword 14769
.hword 20041
.hword 29803
.hword 28406
.hword 17598
.hword 28087
.type __func__.26979, %object
.size __func__.26979, 13
__func__.26979:
.string "buf_add_tail"
.zero 3
.type __func__.26992, %object
.size __func__.26992, 10
__func__.26992:
.string "buf_alloc"
.zero 6
.type __func__.27006, %object
.size __func__.27006, 16
__func__.27006:
.string "buf_remove_free"
.type zftl_debug_proc_fops, %object
.size zftl_debug_proc_fops, 96
zftl_debug_proc_fops:
.zero 8
.xword zftl_debug_proc_open
.xword seq_read
.zero 8
.xword zftl_debug_proc_write
.xword seq_lseek
.xword single_release
.zero 40
.type __func__.45877, %object
.size __func__.45877, 12
__func__.45877:
.string "gc_add_sblk"
.zero 4
.type __func__.45969, %object
.size __func__.45969, 19
__func__.45969:
.string "gc_write_completed"
.zero 5
.type __func__.46575, %object
.size __func__.46575, 18
__func__.46575:
.string "ftl_alloc_sys_blk"
.zero 6
.type __func__.46585, %object
.size __func__.46585, 17
__func__.46585:
.string "ftl_free_sys_blk"
.zero 7
.type __func__.46706, %object
.size __func__.46706, 23
__func__.46706:
.string "ftl_get_ppa_from_index"
.zero 1
.type __func__.46746, %object
.size __func__.46746, 22
__func__.46746:
.string "ftl_get_new_free_page"
.zero 2
.type __func__.46757, %object
.size __func__.46757, 22
__func__.46757:
.string "ftl_ext_alloc_new_blk"
.zero 2
.type __func__.46026, %object
.size __func__.46026, 16
__func__.46026:
.string "gc_free_src_blk"
.type __func__.45620, %object
.size __func__.45620, 14
__func__.45620:
.string "ftl_write_buf"
.zero 2
.type __func__.45665, %object
.size __func__.45665, 18
__func__.45665:
.string "zftl_add_read_buf"
.align 3
.set .LANCHOR4,. + 0
.type __func__.47179, %object
.size __func__.47179, 21
__func__.47179:
.string "pm_select_ram_region"
.zero 3
.type __func__.26704, %object
.size __func__.26704, 20
__func__.26704:
.string "flash_die_info_init"
.zero 4
.type __func__.45552, %object
.size __func__.45552, 17
__func__.45552:
.string "lpa_rebuild_hash"
.zero 7
.type __func__.46444, %object
.size __func__.46444, 20
__func__.46444:
.string "zftl_sblk_list_init"
.zero 4
.type __func__.47111, %object
.size __func__.47111, 13
__func__.47111:
.string "pm_free_sblk"
.zero 3
.type __func__.27042, %object
.size __func__.27042, 21
__func__.27042:
.string "flash_info_data_init"
.zero 3
.type __func__.26800, %object
.size __func__.26800, 11
__func__.26800:
.string "nandc_init"
.zero 5
.type samsung_14nm_slc_rr, %object
.size samsung_14nm_slc_rr, 26
samsung_14nm_slc_rr:
.byte 0
.byte 10
.byte -10
.byte 20
.byte -20
.byte 30
.byte -30
.byte 40
.byte -40
.byte 50
.byte -50
.byte 60
.byte -60
.byte -70
.byte -80
.byte -90
.byte -100
.byte -110
.byte -120
.byte -9
.byte 70
.byte 80
.byte 90
.byte -125
.byte -115
.byte 100
.zero 6
.type samsung_14nm_mlc_rr, %object
.size samsung_14nm_mlc_rr, 104
samsung_14nm_mlc_rr:
.byte 0
.byte 0
.byte 0
.byte 0
.byte -4
.byte 3
.byte -4
.byte -6
.byte 6
.byte 0
.byte 6
.byte -10
.byte -10
.byte 4
.byte -10
.byte 16
.byte 12
.byte -4
.byte 12
.byte 8
.byte -16
.byte 10
.byte -16
.byte 24
.byte 18
.byte -14
.byte 18
.byte -4
.byte -22
.byte -16
.byte -22
.byte -8
.byte 24
.byte -9
.byte 24
.byte 8
.byte -28
.byte -4
.byte -28
.byte 16
.byte 30
.byte 10
.byte 30
.byte 10
.byte -34
.byte 6
.byte -34
.byte 0
.byte 36
.byte -8
.byte 36
.byte -8
.byte -40
.byte -2
.byte -40
.byte -20
.byte -46
.byte -4
.byte -46
.byte -30
.byte 3
.byte 0
.byte 3
.byte -3
.byte -2
.byte -4
.byte -2
.byte -6
.byte -4
.byte -4
.byte -4
.byte -10
.byte -6
.byte -8
.byte -6
.byte -14
.byte -9
.byte -8
.byte -9
.byte -18
.byte -52
.byte 22
.byte -52
.byte 10
.byte 42
.byte 4
.byte 42
.byte 4
.byte 48
.byte -9
.byte 48
.byte 4
.byte -58
.byte 12
.byte -58
.byte 0
.byte -64
.byte -24
.byte -64
.byte -6
.byte 9
.byte 18
.byte 9
.byte 8
.type __func__.26085, %object
.size __func__.26085, 19
__func__.26085:
.string "flash_read_page_en"
.zero 5
.type __func__.26211, %object
.size __func__.26211, 26
__func__.26211:
.string "flash_start_tlc_page_prog"
.zero 6
.type __func__.26222, %object
.size __func__.26222, 29
__func__.26222:
.string "flash_start_3d_mlc_page_prog"
.zero 3
.type __func__.26240, %object
.size __func__.26240, 22
__func__.26240:
.string "flash_start_page_prog"
.zero 2
.type __func__.26264, %object
.size __func__.26264, 31
__func__.26264:
.string "flash_complete_plane_page_read"
.zero 1
.type __func__.26289, %object
.size __func__.26289, 25
__func__.26289:
.string "flash_complete_page_read"
.zero 7
.type __func__.46944, %object
.size __func__.46944, 31
__func__.46944:
.string "queue_wait_first_req_completed"
.zero 1
.type __func__.46998, %object
.size __func__.46998, 15
__func__.46998:
.string "sblk_prog_page"
.zero 1
.type __func__.47025, %object
.size __func__.47025, 15
__func__.47025:
.string "sblk_read_page"
.zero 1
.type __func__.45924, %object
.size __func__.45924, 21
__func__.45924:
.string "gc_check_data_one_wl"
.zero 3
.type __func__.26146, %object
.size __func__.26146, 19
__func__.26146:
.string "flash_prog_page_en"
.zero 5
.type __func__.46821, %object
.size __func__.46821, 14
__func__.46821:
.string "ftl_prog_page"
.zero 2
.type __func__.46478, %object
.size __func__.46478, 15
__func__.46478:
.string "ftl_info_flush"
.zero 1
.type __func__.46783, %object
.size __func__.46783, 19
__func__.46783:
.string "ftl_ext_info_flush"
.zero 5
.type __func__.46795, %object
.size __func__.46795, 18
__func__.46795:
.string "ftl_ext_info_init"
.zero 6
.type __func__.46533, %object
.size __func__.46533, 15
__func__.46533:
.string "ftl_alloc_sblk"
.zero 1
.type __func__.47151, %object
.size __func__.47151, 17
__func__.47151:
.string "pm_alloc_new_blk"
.zero 7
.type __func__.47161, %object
.size __func__.47161, 14
__func__.47161:
.string "pm_write_page"
.zero 2
.type __func__.27064, %object
.size __func__.27064, 17
__func__.27064:
.string "flash_info_flush"
.zero 7
.type __func__.27027, %object
.size __func__.27027, 20
__func__.27027:
.string "flash_info_blk_init"
.zero 4
.type __func__.26759, %object
.size __func__.26759, 16
__func__.26759:
.string "nand_flash_init"
.type __func__.46648, %object
.size __func__.46648, 16
__func__.46648:
.string "ftl_sysblk_dump"
.type __func__.46673, %object
.size __func__.46673, 23
__func__.46673:
.string "ftl_open_sblk_recovery"
.zero 1
.type __func__.47095, %object
.size __func__.47095, 16
__func__.47095:
.string "load_l2p_region"
.type __func__.47135, %object
.size __func__.47135, 6
__func__.47135:
.string "pm_gc"
.zero 2
.type __func__.45867, %object
.size __func__.45867, 12
__func__.45867:
.string "gc_recovery"
.zero 4
.type __func__.45956, %object
.size __func__.45956, 22
__func__.45956:
.string "gc_update_l2p_map_new"
.zero 2
.type __func__.46070, %object
.size __func__.46070, 16
__func__.46070:
.string "gc_scan_src_blk"
.type __func__.46131, %object
.size __func__.46131, 20
__func__.46131:
.string "gc_scan_static_data"
.zero 4
.type __func__.46194, %object
.size __func__.46194, 18
__func__.46194:
.string "gc_block_vpn_scan"
.zero 6
.type __func__.46624, %object
.size __func__.46624, 14
__func__.46624:
.string "ftl_sblk_dump"
.zero 2
.type __func__.45698, %object
.size __func__.45698, 10
__func__.45698:
.string "zftl_read"
.zero 6
.type __func__.46727, %object
.size __func__.46727, 19
__func__.46727:
.string "ftl_update_l2p_map"
.zero 5
.type __func__.45602, %object
.size __func__.45602, 17
__func__.45602:
.string "ftl_write_commit"
.zero 7
.type __func__.45999, %object
.size __func__.45999, 16
__func__.45999:
.string "gc_do_copy_back"
.type __func__.46249, %object
.size __func__.46249, 11
__func__.46249:
.string "zftl_do_gc"
.zero 5
.type __func__.45730, %object
.size __func__.45730, 13
__func__.45730:
.string "_ftl_discard"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "\n!!!!! error @ func:%s - line:%d\n"
.LC1:
.string "FTL version: 6.0.24 20210716"
.LC2:
.string "%s\n"
.LC3:
.string "zftl_debug:0x%x\n"
.LC4:
.string "...%s enter...\n"
.LC5:
.string "No.0 FLASH ID: %x %x %x %x %x %x\n"
.LC6:
.string "DiePerChip: %x\n"
.LC7:
.string "SectPerPage: %x\n"
.LC8:
.string "PagePerBlk: %x\n"
.LC9:
.string "Cell: %x\n"
.LC10:
.string "PlanePerDie: %x\n"
.LC11:
.string "BlkPerPlane: %x\n"
.LC12:
.string "die gap: %x\n"
.LC13:
.string "lsbMode: %x\n"
.LC14:
.string "ReadRetryMode: %x\n"
.LC15:
.string "ecc: %x\n"
.LC16:
.string "idb ecc: %x\n"
.LC17:
.string "OptMode: %x\n"
.LC18:
.string "g_nand_max_die: %x\n"
.LC19:
.string "Cache read enable: %x\n"
.LC20:
.string "Cache random read enable: %x\n"
.LC21:
.string "Cache prog enable: %x\n"
.LC22:
.string "multi read enable: %x\n"
.LC23:
.string "multi prog enable: %x\n"
.LC24:
.string "interleave enable: %x\n"
.LC25:
.string "read retry enable: %x\n"
.LC26:
.string "randomizer enable: %x\n"
.LC27:
.string "SDR enable: %x\n"
.LC28:
.string "ONFI enable: %x\n"
.LC29:
.string "TOGGLE enable: %x\n"
.LC30:
.string "g_flash_slc_mode: %x %x\n"
.LC31:
.string "MultiPlaneProgCmd: %x %x\n"
.LC32:
.string "MultiPlaneReadCmd: %x %x\n"
.LC33:
.string "g_flash_toggle_mode_en: %x\n"
.LC34:
.string "nand sdr mode %x\n"
.LC35:
.string "nand ddr mode %x\n"
.LC36:
.string "No.%d FLASH ID:%x %x %x %x %x %x\n"
.LC37:
.string "otp:%x %x %x %x\n"
.LC38:
.string "bad block test:%x %x\n"
.LC39:
.string "flash_erase_duplane_block %x %x %x\n"
.LC40:
.string "flash_erase_duplane_block pageadd = %x status = %x\n"
.LC41:
.string "flash_erase_block %x %x %x\n"
.LC42:
.string "flash_erase_block %d block = %x status = %x\n"
.LC43:
.string "erase done: %x\n"
.LC44:
.string "sblk_queue_head = %d\n"
.LC45:
.string "sblk_read_completed_queue_head = %d\n"
.LC46:
.string "sblk_gc_write_completed_queue_head = %d\n"
.LC47:
.string "sblk_write_completed_queue_head = %d\n"
.LC48:
.string "p_free_buf_head = %d\n"
.LC49:
.string "free_buf_count = %d\n"
.LC50:
.string "buf = %d, next=%d, flag=%d gc_write_flag=%d, lun_state=%d, op_status = %d lpa=%x, ppa=%x\n"
.LC51:
.string "flash_mask_bad_block %d %d\n"
.LC52:
.string "zftl_debug"
.LC53:
.string "FLASH ID: %x %x %x %x %x %x\n"
.LC54:
.string "density: %d MB\n"
.LC55:
.string "device density: %d MB\n"
.LC56:
.string "FTL INFO:\n"
.LC57:
.string "max_lpn = 0x%x\n"
.LC58:
.string "density = 0x%x\n"
.LC59:
.string "slc vpn = 0x%x\n"
.LC60:
.string "xlc vpn = 0x%x\n"
.LC61:
.string "free slc blk = 0x%x\n"
.LC62:
.string "free xlc blk = 0x%x\n"
.LC63:
.string "free mix blk = 0x%x\n"
.LC64:
.string "slc data blk = 0x%x\n"
.LC65:
.string "slc cache blk = 0x%x\n"
.LC66:
.string "xlc data blk = 0x%x\n"
.LC67:
.string "free buf = %d, %d, %d\n"
.LC68:
.string "bad blk = %d %d\n"
.LC69:
.string "TBW = %d MB\n"
.LC70:
.string "TBR = %d MB\n"
.LC71:
.string "POC = %d\n"
.LC72:
.string "PLC = %d\n"
.LC73:
.string "sys run time = %d S\n"
.LC74:
.string "slc mode = %x %x %x\n"
.LC75:
.string "prog err = %d\n"
.LC76:
.string "read err = %d\n"
.LC77:
.string "GC XLC page = %d\n"
.LC78:
.string "GC SLC page = %d\n"
.LC79:
.string "discard page = 0x%x\n"
.LC80:
.string "version = %d\n"
.LC81:
.string "acblk = 0x%x %d %d\n"
.LC82:
.string "tmblk = 0x%x %d %d\n"
.LC83:
.string "gcblk = 0x%x %d %d\n"
.LC84:
.string "slc ec = %d, %d, %d, %d, %d\n"
.LC85:
.string "xlc ec = %d, %d, %d, %d, %d\n"
.LC86:
.string "gc free blk th = %d\n"
.LC87:
.string "gc vpn th = %d %d %d %d %d\n"
.LC88:
.string "swl blk = %x %x %x %x\n"
.LC89:
.string "rf info = %x %x %x %x %x\n"
.LC90:
.string "gc_add_sblk = %d, %d, %d, %d, %d, %d, %d\n"
.LC91:
.string "gc_add_sblk = %d, %d, %d\n"
.LC92:
.string "gc_add_sblk = %d, %d, %d,last update:%d, %d\n"
.LC93:
.string "gc_add_sblk = %d, %d, %d, %d, %d, %d\n"
.LC94:
.string "gc_mark_bad_ppa %d %x %x\n"
.LC95:
.string "status: %x, ppa: %x\n"
.LC96:
.string "%d gc_free_temp_buf buf id= %x\n"
.LC97:
.string "gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n"
.LC98:
.string "zftl_get_gc_node cache = %x index = %d vpn = %x\n"
.LC99:
.string "gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n"
.LC100:
.string "swl_tlc_free_mini_ec_blk alloc sblk %x\n"
.LC101:
.string "zftl_get_free_sblk %x %d, %p %d %d\n"
.LC102:
.string "zftl_gc_get_free_sblk %x %x %x, %d %d %d\n"
.LC103:
.string "swl_slc_free_mini_ec_blk alloc sblk %x\n"
.LC104:
.string "list count:%p %d\n"
.LC105:
.string "%d: node:%x %x %x %x, %d %d %d %d %d\n"
.LC106:
.string "ftl_vpn_decrement %x = %d, %d\n"
.LC107:
.string "mask bad block:cs %x %x block: %x %x\n"
.LC108:
.string "gc_free_bad_sblk 0x%x\n"
.LC109:
.string "swl_slc_free_mini_ec_blk sblk %x\n"
.LC110:
.string "gc_free_src_blk = %x, vpn = %d\n"
.LC111:
.string "gc_free_src_blk %x, %d\n"
.LC112:
.string "bad blk = %x, %x free blk: s:%x,t:%x,m:%x, data blk:s:%x,%x,t%x vpn: s:%x t:%x, max_vpn: %x\n"
.LC113:
.string "totle w: %d MB,r: %d MB %d dv:0x%X,poc:%d\n"
.LC114:
.string "gc xlc page: %d,gc slc page: %d, tmp w: %d MB\n"
.LC115:
.string "slc ec: %d,%d,%d,%d,%d,tlc ec: %d,%d,%d,%d,%d\n"
.LC116:
.string "gc th: tlc_tlc: %d tlc_slc: %d slc_slc: %d slc_tlc:%d free_th: %d\n"
.LC117:
.string "swl : %x %x %x %x %x %x\n"
.LC118:
.string "ftl prog error =%x, lpa = %x, ppa= %x\n"
.LC119:
.string "ftl re prog: lpa = %x, ppa= %x\n"
.LC120:
.string "dump_sblk_queue: %d\n"
.LC121:
.string "buf id= %d state = %d ppa = %x\n"
.LC122:
.string "%s %d %d\n"
.LC123:
.string "gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC124:
.string "gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC125:
.string "gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC126:
.string "gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC127:
.string "gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC128:
.string "gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n"
.LC129:
.string "gc_static_wearleveling: min slc ec: %x, min tlc ec: %d max slc ec: %d, max tlc ec: %d; %d %d\n"
.LC130:
.string "swl add tlc gc = %x, %d, %d, %d, %d, %d\n"
.LC131:
.string "swl add slc gc = %x, %d, %d, %d, %d, %d\n"
.LC132:
.string "free blk vpn error: %x %x\n"
.LC133:
.string "GC PM block %x %x %x %d\n"
.LC134:
.string "ftl_free_no_use_map_blk %x %x %x %d\n"
.LC135:
.string "...%d @ %s\n"
.LC136:
.string "...%s enter... %p\n"
.LC137:
.string "0:%x %x %x %x %x\n"
.LC138:
.string "g_nandc_ver...%d\n"
.LC139:
.string "rk_ftl_de_init %x\n"
.LC140:
.string "\0013"
.LC141:
.string "otp error! %d"
.LC142:
.string "rr"
.LC143:
.string "flash_abort_clear = %d\n"
.LC144:
.string "%d mtrans_cnt = %d page_num = %d\n"
.LC145:
.string "%d flReg.d32=%x %x\n"
.LC146:
.string "nandc:"
.LC147:
.string "nandc_xfer_done read error %x\n"
.LC148:
.string "dqs data abort %x\n"
.LC149:
.string "dqs data timeout %x\n"
.LC150:
.string "xfer error %x\n"
.LC151:
.string "MT %d row=%x,last status %d,status = %d\n"
.LC152:
.string "MT RR %d row=%x,count %d,status=%d\n"
.LC153:
.string "toshiba SRR %d row=%x, status=%d\n"
.LC154:
.string "toshiba TRR %d row=%x, status=%d\n"
.LC155:
.string "toshiba RR %d row=%x,count %d,status=%d\n"
.LC156:
.string "YMTC RR %d row=%x,count %d,status=%d\n"
.LC157:
.string "samsung SRR %d row=%x, status=%d\n"
.LC158:
.string "samsung TRR %d row=%x, status=%d\n"
.LC159:
.string "samsung RR %d row=%x,count %d,status=%d\n"
.LC160:
.string "hynix RR %d row=%x, count %d, status=%d\n"
.LC161:
.string "%d flash_ddr_tuning_read %x ecc=%d\n"
.LC162:
.string "sync para %d\n"
.LC163:
.string "DDR mode Read error %x %x\n"
.LC164:
.string "SDR mode Read %x %x ecc:%x\n"
.LC165:
.string "flash_read_page_en %x %x %x %x\n"
.LC166:
.string "flash_read_page_en %x %x error_ecc %d %d\n"
.LC167:
.string "flash_get_last_written_page: %x %x %x\n"
.LC168:
.string "flash_prog_page page_addr = %x status = %x\n"
.LC169:
.string "flash_prog_page %x %x %x\n"
.LC170:
.string "ymtc_flash_tlc_page_prog page_addr = %x status = %x\n"
.LC171:
.string "sblk_mlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n"
.LC172:
.string "flash_complete_page_read %x %x error_ecc %d %d\n"
.LC173:
.string "read: %x %x %x %x\n"
.LC174:
.string "0set buf %d,status = %x, ppa = %x lun state = %d\n"
.LC175:
.string "prog end %x %x error_ecc %d %d\n"
.LC176:
.string "1set buf %d,status = %x, ppa = %x lun state = %d\n"
.LC177:
.string "dp prog end %x %x error_ecc %d %d\n"
.LC178:
.string "sblk_prog_page ppa = %x, count = %d\n"
.LC179:
.string "err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n"
.LC180:
.string "flash_prog_page_en:%x %x %x\n"
.LC181:
.string "w d:"
.LC182:
.string "w s:"
.LC183:
.string "spare"
.LC184:
.string "data"
.LC185:
.string "write error: %x\n"
.LC186:
.string "g_ftl_info_blk blk = %x, page = %x version = %d\n"
.LC187:
.string "%d %x @%d %x\n"
.LC188:
.string "ftl_info_blk_init %d %d %x\n"
.LC189:
.string "ftl info hash %x error\n"
.LC190:
.string "ink flag: %x\n"
.LC191:
.string "%s %d %d %x %x\n"
.LC192:
.string "ext info hash %x error\n"
.LC193:
.string "%s %x %x %x\n"
.LC194:
.string "ftl_sblk_dump_write = %x %d %d %d %d\n"
.LC195:
.string "blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n"
.LC196:
.string "ftl_sblk_dump_write2 = %x %d %d %d\n"
.LC197:
.string "ftl_sblk_dump_write = %x %x\n"
.LC198:
.string "ftl_sblk_dump_write done = %x\n"
.LC199:
.string "%x: ink_scaned_blk_num %x\n"
.LC200:
.string "ftl_ink_check_sblk = %x %d %d\n"
.LC201:
.string "ftl_ink_check_sblk = %x %d %d end\n"
.LC202:
.string "alloc sblk %x %d\n"
.LC203:
.string "blk %x is bad block\n"
.LC204:
.string "pm_alloc_new_blk: %x %x %x %x\n"
.LC205:
.string "pm_write_page write error: %x\n"
.LC206:
.string "finfo:"
.LC207:
.string "flash_info_flush id = %x, page = %x\n"
.LC208:
.string "sys_info_flush error:%x\n"
.LC209:
.string "...%d @ %s %d %p\n"
.LC210:
.string "no sys info %x\n"
.LC211:
.string "l2p:"
.LC212:
.string "saved_active_page = %x\n"
.LC213:
.string "saved_active_plane = %x\n"
.LC214:
.string "sblk = %x\n"
.LC215:
.string "phy_blk = %x %x\n"
.LC216:
.string "num_planes = %x\n"
.LC217:
.string "recovery blk=%x, page=%x, ppa = %x, status = %x, hash:%x\n"
.LC218:
.string "data:"
.LC219:
.string "sblk = %x, vpn0 = %d, vpn1 = %d\n"
.LC220:
.string "dump_write_lpa = %x %x %x %x\n"
.LC221:
.string "dump write new ppa = %x, last ppa = %x lpa = %x\n"
.LC222:
.string "dump write = %x %x %x\n"
.LC223:
.string "dump write hash update = %x %x %x\n"
.LC224:
.string "free_buf_count: %d\n"
.LC225:
.string "g_ftl_info_blk blk:0x%x, index:0x%x, page:0x%x\n"
.LC226:
.string "ftl_ext_info_blk blk:0x%x, page:0x%x\n"
.LC227:
.string "ac_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n"
.LC228:
.string "tmp_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n"
.LC229:
.string "gc_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n"
.LC230:
.string "lpa:"
.LC231:
.string "vpn:"
.LC232:
.string "sblk:"
.LC233:
.string "lpa_hash:"
.LC234:
.string "lpa_hash_index:"
.LC235:
.string "%s w error lpn = %x, max ppa = %d\n"
.LC236:
.string "region_id = %d, pm_max_region = %d\n"
.LC237:
.string "load_l2p_region no ppa = %x , %x, all setting 0xff....\n"
.LC238:
.string "load_l2p_region = %x,%x,%x, %x\n"
.LC239:
.string "pm_ppa:"
.LC240:
.string "spare:"
.LC241:
.string "pm_init posr %x %x %x\n"
.LC242:
.string "pm_init recovery %x %x %x\n"
.LC243:
.string "pm_init hash %x error\n"
.LC244:
.string "pm_log2phys lpn = %d, max lpn = %d\n"
.LC245:
.string "ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n"
.LC246:
.string "ppa = %x, status = %x, %x %x spare: %x %x %x %x\n"
.LC247:
.string "gc_recovery: %x vpn = %x\n"
.LC248:
.string "gc_update_l2p_map_new sblk %x\n"
.LC249:
.string "gc_update_l2p_map_new: %x %x %x\n"
.LC250:
.string "lpa: %x %x %x\n"
.LC251:
.string "gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n"
.LC252:
.string "gc_scan_src_blk = %x, vpn = %d\n"
.LC253:
.string "js hash error:%x %x %x\n"
.LC254:
.string "gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n"
.LC255:
.string "gc_block_vpn_scan = %x, s vpn0 = %d, c vpn1 = %d f:%d\n"
.LC256:
.string "ftl_sblk_dump = %x %d %d %d %d\n"
.LC257:
.string "ftl_sblk_dump = %x %x %x %x\n"
.LC258:
.string "page_addr = %x, lpa=%x vpn = %d\n"
.LC259:
.string "index= %x, lpa=%x\n"
.LC260:
.string "block = %x, vpn=%x check vpn = %x\n"
.LC261:
.string "ftl_read %x %x %x\n"
.LC262:
.string "ftl_read refresh =%x, lpa = %x, ppa= %x\n"
.LC263:
.string "id=%d, status = %x, lpa = %x, ppa = %x spare = %x %x %x %x\n"
.LC264:
.string "zftl debug cmd: %s\n"
.LC265:
.string "cmd:"
.LC266:
.string "dumpl2p"
.LC267:
.string "pm l2p:"
.LC268:
.string "pm blk:"
.LC269:
.string "dumppm:"
.LC270:
.string "p_cmd: %s\n"
.LC271:
.string "pm ram = %x, %x\n"
.LC272:
.string "ram:"
.LC273:
.string "pm:"
.LC274:
.string "dumpsys"
.LC275:
.string "dumplist:"
.LC276:
.string "vpncheck"
.LC277:
.string "dumpppa:"
.LC278:
.string "dumpblk:"
.LC279:
.string "setzdebug:"
.LC280:
.string "lpa2ppa:"
.LC281:
.string "lpa: %x--> ppa: %x\n"
.LC282:
.string "help:\n"
.LC283:
.string "1. echo dumpl2p > /proc/zftl_debug\n"
.LC284:
.string "2. echo dumppm:x > /proc/zftl_debug\n"
.LC285:
.string "3. echo dumpsys > /proc/zftl_debug\n"
.LC286:
.string "4. echo dumpppa:x > /proc/zftl_debug\n"
.LC287:
.string "5. echo vpncheck > /proc/zftl_debug\n"
.LC288:
.string "6. echo setzdebug:x > /proc/zftl_debug\n"
.LC289:
.string "7. echo dumplist:x > /proc/zftl_debug\n"
.LC290:
.string "8. echo lpa2ppa:x> /proc/zftl_debug\n"
.LC291:
.string "ftl_update_l2p_map: %x %x %x\n"
.LC292:
.string "ftl_update_l2p_map"
.LC293:
.string "lpa_tbl:"
.LC294:
.string "sblk %x vpn: %d %d\n"
.LC295:
.string "error gc_add_sblk: %x\n"
.LC296:
.string "%d read error: ppa:%x, lpa:%x, status:%x\n"
.LC297:
.string "gc page in buf: lpa %x ppa = %x pageindex= %x\n"
.LC298:
.string "gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n"
.LC299:
.string "gc %d: %d %d %d %d %d %d %d\n"
.LC300:
.string "GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n"
.LC301:
.string "gc free %x, %d\n"
.LC302:
.string "_c_user_data_density := %d\n"
.LC303:
.string "_c_totle_phy_density := %d\n"
.LC304:
.string "_c_totle_log_page := %d\n"
.LC305:
.string "_c_totle_data_density := %d\n"
.LC306:
.string "_c_ftl_pm_page_num := %d\n"
.LC307:
.string "_c_ftl_byte_pre_page := %d\n"
.LC308:
.string "_c_max_pm_sblk := %d\n"
.LC309:
.string "_min_slc_super_block := %d\n"
.LC310:
.string "_max_xlc_super_block := %d\n"
.LC311:
.string "gp_ftl_ext_info %p %p %p\n"
.LC312:
.string "flash info size: %d %d %d\n"
.LC313:
.string "ftl_init %x\n"
.LC314:
.string "ftlwrite %x %x %x %x\n"
.LC315:
.string "ftl_discard:(%x, %x, %x, %x)\n"
.LC316:
.string "id_block_prog_msb_ff_data slc page = %d pageadd=%x %x\n"
.LC317:
.string "write_idblock fix data %x %x\n"
.LC318:
.string "idblk:"
.LC319:
.string "write_idblock totle_sec %x %x\n"
.LC320:
.string "prog page: %x %x %x, %p %x %x %x\n"
.LC321:
.string "read page: %x %x %x %x\n"
.LC322:
.string "wl_lba %p %x %x %x\n"
.LC323:
.string "return ret = %lx\n"
.LC324:
.string "\0013vendor storage %x,%x,%x\n"