35208 lines
597 KiB
ArmAsm
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"
|