13194 lines
256 KiB
ArmAsm
13194 lines
256 KiB
ArmAsm
/*
|
|
* Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0
|
|
* date: 2022-08-15
|
|
*/
|
|
.arch armv8-a+nosimd
|
|
.file "rk_sftl.c"
|
|
.section .text.l2p_addr_tran.isra.0,"ax",@progbits
|
|
.align 2
|
|
.type l2p_addr_tran.isra.0, %function
|
|
l2p_addr_tran.isra.0:
|
|
adrp x4, .LANCHOR0
|
|
add x4, x4, :lo12:.LANCHOR0
|
|
ldrh w3, [x4, 8]
|
|
ldrh w6, [x4, 10]
|
|
ldrh w4, [x4, 14]
|
|
cmp w4, 4
|
|
bne .L2
|
|
lsr w3, w3, 1
|
|
ubfiz w6, w6, 1, 15
|
|
.L2:
|
|
lsr w5, w0, 10
|
|
and w0, w0, 1023
|
|
and w4, w5, 65535
|
|
and w5, w5, 65535
|
|
udiv w4, w4, w3
|
|
msub w3, w3, w4, w5
|
|
madd w3, w3, w6, w0
|
|
mov w0, 0
|
|
str w3, [x1]
|
|
str w4, [x2]
|
|
ret
|
|
.size l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0
|
|
.section .text.Ftl_log2,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_log2
|
|
.type Ftl_log2, %function
|
|
Ftl_log2:
|
|
mov w2, 1
|
|
mov w1, 0
|
|
.L4:
|
|
cmp w2, w0
|
|
bls .L5
|
|
sub w0, w1, #1
|
|
ret
|
|
.L5:
|
|
add w1, w1, 1
|
|
lsl w2, w2, 1
|
|
and w1, w1, 65535
|
|
b .L4
|
|
.size Ftl_log2, .-Ftl_log2
|
|
.section .text.FtlPrintInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlPrintInfo
|
|
.type FtlPrintInfo, %function
|
|
FtlPrintInfo:
|
|
ret
|
|
.size FtlPrintInfo, .-FtlPrintInfo
|
|
.section .text.FtlSysBlkNumInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlSysBlkNumInit
|
|
.type FtlSysBlkNumInit, %function
|
|
FtlSysBlkNumInit:
|
|
and w0, w0, 65535
|
|
mov w1, 24
|
|
cmp w0, 24
|
|
adrp x2, .LANCHOR3
|
|
csel w0, w0, w1, cs
|
|
adrp x1, .LANCHOR1
|
|
and w0, w0, 65535
|
|
str w0, [x1, #:lo12:.LANCHOR1]
|
|
adrp x1, .LANCHOR2
|
|
ldrh w1, [x1, #:lo12:.LANCHOR2]
|
|
mul w1, w1, w0
|
|
str w1, [x2, #:lo12:.LANCHOR3]
|
|
adrp x2, .LANCHOR5
|
|
ldrh w2, [x2, #:lo12:.LANCHOR5]
|
|
sub w0, w2, w0
|
|
adrp x2, .LANCHOR4
|
|
strh w0, [x2, #:lo12:.LANCHOR4]
|
|
adrp x0, .LANCHOR7
|
|
ldr w0, [x0, #:lo12:.LANCHOR7]
|
|
sub w1, w0, w1
|
|
adrp x0, .LANCHOR6
|
|
str w1, [x0, #:lo12:.LANCHOR6]
|
|
mov w0, 0
|
|
ret
|
|
.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
|
|
.section .text.FtlConstantsInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlConstantsInit
|
|
.type FtlConstantsInit, %function
|
|
FtlConstantsInit:
|
|
stp x29, x30, [sp, -16]!
|
|
mov x5, x0
|
|
adrp x2, .LANCHOR10
|
|
adrp x1, .LANCHOR5
|
|
add x29, sp, 0
|
|
ldrh w3, [x0]
|
|
adrp x0, .LANCHOR8
|
|
ldrh w4, [x5, 2]
|
|
adrp x6, .LANCHOR11
|
|
strh w3, [x0, #:lo12:.LANCHOR8]
|
|
adrp x0, .LANCHOR9
|
|
ldrh w7, [x5, 14]
|
|
strh w4, [x0, #:lo12:.LANCHOR9]
|
|
ldrh w8, [x5, 4]
|
|
cmp w7, 4
|
|
ldrh w0, [x5, 6]
|
|
strh w8, [x2, #:lo12:.LANCHOR10]
|
|
strh w0, [x1, #:lo12:.LANCHOR5]
|
|
strh w7, [x6, #:lo12:.LANCHOR11]
|
|
bne .L9
|
|
lsr w0, w0, 1
|
|
strh w0, [x1, #:lo12:.LANCHOR5]
|
|
mov w0, 8
|
|
strh w0, [x6, #:lo12:.LANCHOR11]
|
|
.L10:
|
|
adrp x7, .LANCHOR12
|
|
add x7, x7, :lo12:.LANCHOR12
|
|
mov x0, 0
|
|
.L11:
|
|
strb w0, [x0, x7]
|
|
add x0, x0, 1
|
|
cmp x0, 32
|
|
bne .L11
|
|
adrp x0, .LANCHOR13
|
|
mov w7, 5
|
|
cmp w3, 1
|
|
strh w7, [x0, #:lo12:.LANCHOR13]
|
|
adrp x7, .LANCHOR14
|
|
strh wzr, [x7, #:lo12:.LANCHOR14]
|
|
bne .L12
|
|
strh w3, [x0, #:lo12:.LANCHOR13]
|
|
.L12:
|
|
adrp x0, .LANCHOR15
|
|
mov w3, 640
|
|
strh w3, [x0, #:lo12:.LANCHOR15]
|
|
ldrh w0, [x2, #:lo12:.LANCHOR10]
|
|
adrp x2, .LANCHOR2
|
|
ldrh w3, [x1, #:lo12:.LANCHOR5]
|
|
adrp x1, .LANCHOR16
|
|
mul w4, w4, w0
|
|
mul w0, w0, w3
|
|
and w4, w4, 65535
|
|
strh w4, [x2, #:lo12:.LANCHOR2]
|
|
and w0, w0, 65535
|
|
strh w0, [x1, #:lo12:.LANCHOR16]
|
|
bl Ftl_log2
|
|
ldrh w7, [x5, 12]
|
|
adrp x1, .LANCHOR17
|
|
ldrh w6, [x6, #:lo12:.LANCHOR11]
|
|
adrp x8, .LANCHOR18
|
|
strh w0, [x1, #:lo12:.LANCHOR17]
|
|
adrp x0, .LANCHOR19
|
|
mul w1, w4, w7
|
|
strh w7, [x8, #:lo12:.LANCHOR18]
|
|
strh w7, [x0, #:lo12:.LANCHOR19]
|
|
adrp x0, .LANCHOR20
|
|
strh w1, [x0, #:lo12:.LANCHOR20]
|
|
mov w0, w6
|
|
bl Ftl_log2
|
|
and w10, w0, 65535
|
|
adrp x2, .LANCHOR21
|
|
ubfiz w1, w6, 9, 7
|
|
strh w0, [x2, #:lo12:.LANCHOR21]
|
|
adrp x0, .LANCHOR22
|
|
strh w1, [x0, #:lo12:.LANCHOR22]
|
|
adrp x0, .LANCHOR23
|
|
ubfx w1, w1, 8, 8
|
|
strh w1, [x0, #:lo12:.LANCHOR23]
|
|
adrp x0, .LANCHOR24
|
|
ldrh w1, [x5, 20]
|
|
adrp x5, .LANCHOR26
|
|
strh w1, [x0, #:lo12:.LANCHOR24]
|
|
mul w0, w4, w3
|
|
adrp x1, .LANCHOR7
|
|
str w0, [x1, #:lo12:.LANCHOR7]
|
|
adrp x1, .LANCHOR25
|
|
mul w0, w0, w6
|
|
mul w6, w6, w7
|
|
mul w0, w0, w7
|
|
mov x7, x2
|
|
asr w0, w0, 11
|
|
str w0, [x1, #:lo12:.LANCHOR25]
|
|
mov w0, 5120
|
|
sdiv w0, w0, w6
|
|
and w0, w0, 65535
|
|
cmp w0, 4
|
|
bls .L13
|
|
.L19:
|
|
strh w0, [x5, #:lo12:.LANCHOR26]
|
|
adrp x1, .LANCHOR27
|
|
mov w0, 640
|
|
lsl w3, w3, 6
|
|
asr w0, w0, w10
|
|
add w0, w0, 2
|
|
strh w0, [x1, #:lo12:.LANCHOR27]
|
|
add w0, w10, 9
|
|
adrp x1, .LANCHOR29
|
|
cmp w4, 1
|
|
asr w3, w3, w0
|
|
adrp x0, .LANCHOR28
|
|
adrp x6, .LANCHOR1
|
|
strh w3, [x0, #:lo12:.LANCHOR28]
|
|
and w3, w3, 65535
|
|
mul w0, w3, w4
|
|
add w3, w3, 8
|
|
str w0, [x1, #:lo12:.LANCHOR29]
|
|
ldrh w0, [x5, #:lo12:.LANCHOR26]
|
|
udiv w0, w0, w4
|
|
mov x4, x1
|
|
add w3, w0, w3
|
|
beq .L15
|
|
.L20:
|
|
str w3, [x6, #:lo12:.LANCHOR1]
|
|
ldrh w0, [x6, #:lo12:.LANCHOR1]
|
|
bl FtlSysBlkNumInit
|
|
ldr w1, [x6, #:lo12:.LANCHOR1]
|
|
adrp x0, .LANCHOR30
|
|
ldp x29, x30, [sp], 16
|
|
str w1, [x0, #:lo12:.LANCHOR30]
|
|
adrp x0, .LANCHOR6
|
|
ldrh w1, [x8, #:lo12:.LANCHOR18]
|
|
ldr w0, [x0, #:lo12:.LANCHOR6]
|
|
lsl w0, w0, 2
|
|
mul w0, w0, w1
|
|
ldrh w1, [x7, #:lo12:.LANCHOR21]
|
|
add w1, w1, 9
|
|
lsr w0, w0, w1
|
|
adrp x1, .LANCHOR31
|
|
add w0, w0, 2
|
|
strh w0, [x1, #:lo12:.LANCHOR31]
|
|
adrp x0, .LANCHOR32
|
|
mov w1, 32
|
|
strh w1, [x0, #:lo12:.LANCHOR32]
|
|
adrp x0, .LANCHOR33
|
|
str wzr, [x0, #:lo12:.LANCHOR33]
|
|
ldrh w0, [x5, #:lo12:.LANCHOR26]
|
|
add w0, w0, 3
|
|
strh w0, [x5, #:lo12:.LANCHOR26]
|
|
ldr w0, [x4, #:lo12:.LANCHOR29]
|
|
add w0, w0, 3
|
|
str w0, [x4, #:lo12:.LANCHOR29]
|
|
mov w0, 0
|
|
ret
|
|
.L9:
|
|
cmp w7, 8
|
|
bne .L10
|
|
cmp w8, 1
|
|
bne .L10
|
|
lsr w0, w0, 1
|
|
strh w0, [x1, #:lo12:.LANCHOR5]
|
|
mov w0, 2
|
|
strh w0, [x2, #:lo12:.LANCHOR10]
|
|
b .L10
|
|
.L13:
|
|
mov w0, 4
|
|
b .L19
|
|
.L15:
|
|
add w3, w3, 4
|
|
b .L20
|
|
.size FtlConstantsInit, .-FtlConstantsInit
|
|
.section .text.IsBlkInVendorPart,"ax",@progbits
|
|
.align 2
|
|
.global IsBlkInVendorPart
|
|
.type IsBlkInVendorPart, %function
|
|
IsBlkInVendorPart:
|
|
adrp x1, .LANCHOR34
|
|
and w0, w0, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR34]
|
|
cbz w1, .L25
|
|
adrp x1, .LANCHOR26
|
|
ldrh w2, [x1, #:lo12:.LANCHOR26]
|
|
adrp x1, .LANCHOR35
|
|
ldr x3, [x1, #:lo12:.LANCHOR35]
|
|
mov x1, 0
|
|
.L23:
|
|
cmp w2, w1, uxth
|
|
bhi .L24
|
|
.L25:
|
|
mov w0, 0
|
|
ret
|
|
.L24:
|
|
add x1, x1, 1
|
|
add x4, x3, x1, lsl 1
|
|
ldrh w4, [x4, -2]
|
|
cmp w4, w0
|
|
bne .L23
|
|
mov w0, 1
|
|
ret
|
|
.size IsBlkInVendorPart, .-IsBlkInVendorPart
|
|
.section .text.FtlCacheWriteBack,"ax",@progbits
|
|
.align 2
|
|
.global FtlCacheWriteBack
|
|
.type FtlCacheWriteBack, %function
|
|
FtlCacheWriteBack:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlCacheWriteBack, .-FtlCacheWriteBack
|
|
.section .text.sftl_get_density,"ax",@progbits
|
|
.align 2
|
|
.global sftl_get_density
|
|
.type sftl_get_density, %function
|
|
sftl_get_density:
|
|
adrp x0, .LANCHOR33
|
|
ldr w0, [x0, #:lo12:.LANCHOR33]
|
|
ret
|
|
.size sftl_get_density, .-sftl_get_density
|
|
.section .text.FtlBbmMapBadBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbmMapBadBlock
|
|
.type FtlBbmMapBadBlock, %function
|
|
FtlBbmMapBadBlock:
|
|
stp x29, x30, [sp, -32]!
|
|
and w1, w0, 65535
|
|
adrp x0, .LANCHOR16
|
|
mov w4, 1
|
|
add x29, sp, 0
|
|
ldrh w0, [x0, #:lo12:.LANCHOR16]
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR36
|
|
add x19, x19, :lo12:.LANCHOR36
|
|
udiv w3, w1, w0
|
|
and w2, w3, 65535
|
|
msub w3, w3, w0, w1
|
|
add x0, x19, x2, uxth 3
|
|
and w3, w3, 65535
|
|
ldr x0, [x0, 32]
|
|
ubfx x5, x3, 5, 11
|
|
lsl x5, x5, 2
|
|
lsl w4, w4, w3
|
|
ldr w6, [x0, x5]
|
|
orr w4, w4, w6
|
|
str w4, [x0, x5]
|
|
adrp x0, .LC0
|
|
add x0, x0, :lo12:.LC0
|
|
bl printf
|
|
ldrh w0, [x19, 6]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 6]
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
|
|
.section .text.FtlBbmIsBadBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbmIsBadBlock
|
|
.type FtlBbmIsBadBlock, %function
|
|
FtlBbmIsBadBlock:
|
|
adrp x1, .LANCHOR16
|
|
and w0, w0, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR16]
|
|
udiv w2, w0, w1
|
|
msub w0, w2, w1, w0
|
|
adrp x1, .LANCHOR36
|
|
add x1, x1, :lo12:.LANCHOR36
|
|
add x2, x1, x2, uxth 3
|
|
and w0, w0, 65535
|
|
ubfx x3, x0, 5, 11
|
|
ldr x1, [x2, 32]
|
|
ldr w1, [x1, x3, lsl 2]
|
|
lsr w0, w1, w0
|
|
and w0, w0, 1
|
|
ret
|
|
.size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
|
|
.section .text.FtlBbtInfoPrint,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbtInfoPrint
|
|
.type FtlBbtInfoPrint, %function
|
|
FtlBbtInfoPrint:
|
|
ret
|
|
.size FtlBbtInfoPrint, .-FtlBbtInfoPrint
|
|
.section .text.V2P_block,"ax",@progbits
|
|
.align 2
|
|
.global V2P_block
|
|
.type V2P_block, %function
|
|
V2P_block:
|
|
adrp x2, .LANCHOR10
|
|
and w0, w0, 65535
|
|
adrp x4, .LANCHOR16
|
|
and w1, w1, 65535
|
|
ldrh w2, [x2, #:lo12:.LANCHOR10]
|
|
ldrh w4, [x4, #:lo12:.LANCHOR16]
|
|
udiv w3, w0, w2
|
|
msub w0, w3, w2, w0
|
|
madd w2, w2, w1, w0
|
|
madd w0, w3, w4, w2
|
|
ret
|
|
.size V2P_block, .-V2P_block
|
|
.section .text.P2V_plane,"ax",@progbits
|
|
.align 2
|
|
.global P2V_plane
|
|
.type P2V_plane, %function
|
|
P2V_plane:
|
|
and w3, w0, 65535
|
|
adrp x0, .LANCHOR10
|
|
ldrh w1, [x0, #:lo12:.LANCHOR10]
|
|
adrp x0, .LANCHOR16
|
|
ldrh w2, [x0, #:lo12:.LANCHOR16]
|
|
udiv w0, w3, w1
|
|
udiv w2, w3, w2
|
|
msub w0, w0, w1, w3
|
|
madd w0, w1, w2, w0
|
|
ret
|
|
.size P2V_plane, .-P2V_plane
|
|
.section .text.P2V_block_in_plane,"ax",@progbits
|
|
.align 2
|
|
.global P2V_block_in_plane
|
|
.type P2V_block_in_plane, %function
|
|
P2V_block_in_plane:
|
|
and w2, w0, 65535
|
|
adrp x0, .LANCHOR16
|
|
ldrh w1, [x0, #:lo12:.LANCHOR16]
|
|
udiv w0, w2, w1
|
|
msub w0, w0, w1, w2
|
|
adrp x1, .LANCHOR10
|
|
ldrh w1, [x1, #:lo12:.LANCHOR10]
|
|
and w0, w0, 65535
|
|
udiv w0, w0, w1
|
|
ret
|
|
.size P2V_block_in_plane, .-P2V_block_in_plane
|
|
.section .text.ftl_cmp_data_ver,"ax",@progbits
|
|
.align 2
|
|
.global ftl_cmp_data_ver
|
|
.type ftl_cmp_data_ver, %function
|
|
ftl_cmp_data_ver:
|
|
cmp w0, w1
|
|
mov w2, -2147483648
|
|
bls .L37
|
|
sub w1, w0, w1
|
|
cmp w1, w2
|
|
cset w0, ls
|
|
ret
|
|
.L37:
|
|
sub w1, w1, w0
|
|
cmp w1, w2
|
|
cset w0, hi
|
|
ret
|
|
.size ftl_cmp_data_ver, .-ftl_cmp_data_ver
|
|
.section .text.FtlFreeSysBlkQueueEmpty,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueEmpty
|
|
.type FtlFreeSysBlkQueueEmpty, %function
|
|
FtlFreeSysBlkQueueEmpty:
|
|
adrp x0, .LANCHOR37+6
|
|
ldrh w0, [x0, #:lo12:.LANCHOR37+6]
|
|
cmp w0, 0
|
|
cset w0, eq
|
|
ret
|
|
.size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
|
|
.section .text.FtlFreeSysBlkQueueFull,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueFull
|
|
.type FtlFreeSysBlkQueueFull, %function
|
|
FtlFreeSysBlkQueueFull:
|
|
adrp x0, .LANCHOR37+6
|
|
ldrh w0, [x0, #:lo12:.LANCHOR37+6]
|
|
cmp w0, 1024
|
|
cset w0, eq
|
|
ret
|
|
.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
|
|
.section .text.FtlFreeSysBLkSort,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBLkSort
|
|
.type FtlFreeSysBLkSort, %function
|
|
FtlFreeSysBLkSort:
|
|
adrp x0, .LANCHOR37
|
|
add x1, x0, :lo12:.LANCHOR37
|
|
ldrh w2, [x1, 6]
|
|
cbz w2, .L41
|
|
adrp x2, .LANCHOR38+28
|
|
ldrh w3, [x1, 2]
|
|
mov w6, 0
|
|
mov w4, 0
|
|
ldrh w5, [x2, #:lo12:.LANCHOR38+28]
|
|
ldrh w2, [x1, 4]
|
|
and w5, w5, 31
|
|
.L43:
|
|
cmp w5, w4
|
|
bgt .L44
|
|
cbz w6, .L41
|
|
add x0, x0, :lo12:.LANCHOR37
|
|
strh w3, [x0, 2]
|
|
strh w2, [x0, 4]
|
|
.L41:
|
|
ret
|
|
.L44:
|
|
add x6, x1, x3, sxtw 1
|
|
add w4, w4, 1
|
|
add w3, w3, 1
|
|
and w4, w4, 65535
|
|
and w3, w3, 1023
|
|
ldrh w7, [x6, 8]
|
|
add x6, x1, x2, sxtw 1
|
|
strh w7, [x6, 8]
|
|
mov w6, 1
|
|
add w2, w2, w6
|
|
and w2, w2, 1023
|
|
b .L43
|
|
.size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
|
|
.section .text.IsInFreeQueue,"ax",@progbits
|
|
.align 2
|
|
.global IsInFreeQueue
|
|
.type IsInFreeQueue, %function
|
|
IsInFreeQueue:
|
|
adrp x1, .LANCHOR37
|
|
add x1, x1, :lo12:.LANCHOR37
|
|
and w0, w0, 65535
|
|
ldrh w4, [x1, 6]
|
|
cmp w4, 1024
|
|
beq .L54
|
|
ldrh w5, [x1, 2]
|
|
mov w3, 0
|
|
.L52:
|
|
cmp w3, w4
|
|
bcc .L53
|
|
.L54:
|
|
mov w0, 0
|
|
ret
|
|
.L53:
|
|
add w2, w3, w5
|
|
ubfiz x2, x2, 1, 10
|
|
add x2, x1, x2
|
|
ldrh w2, [x2, 8]
|
|
cmp w2, w0
|
|
beq .L55
|
|
add w3, w3, 1
|
|
b .L52
|
|
.L55:
|
|
mov w0, 1
|
|
ret
|
|
.size IsInFreeQueue, .-IsInFreeQueue
|
|
.section .text.insert_data_list,"ax",@progbits
|
|
.align 2
|
|
.global insert_data_list
|
|
.type insert_data_list, %function
|
|
insert_data_list:
|
|
adrp x1, .LANCHOR4
|
|
and w0, w0, 65535
|
|
ldrh w12, [x1, #:lo12:.LANCHOR4]
|
|
cmp w12, w0
|
|
bls .L58
|
|
adrp x1, .LANCHOR39
|
|
mov w8, 6
|
|
ldr x4, [x1, #:lo12:.LANCHOR39]
|
|
umull x10, w0, w8
|
|
mov w1, -1
|
|
add x3, x4, x10
|
|
strh w1, [x3, 2]
|
|
strh w1, [x4, x10]
|
|
adrp x1, .LANCHOR40
|
|
mov x15, x1
|
|
ldr x7, [x1, #:lo12:.LANCHOR40]
|
|
cbnz x7, .L59
|
|
str x3, [x1, #:lo12:.LANCHOR40]
|
|
.L58:
|
|
mov w0, 0
|
|
ret
|
|
.L59:
|
|
adrp x1, .LANCHOR41
|
|
mov x2, -6148914691236517206
|
|
movk x2, 0xaaab, lsl 0
|
|
mov w6, 0
|
|
ldr x13, [x1, #:lo12:.LANCHOR41]
|
|
ubfiz x1, x0, 1, 16
|
|
mov w16, 65535
|
|
ldrh w5, [x13, x1]
|
|
ldrh w1, [x3, 4]
|
|
cmp w1, 0
|
|
mul w5, w5, w1
|
|
sub x1, x7, x4
|
|
asr x1, x1, 1
|
|
csinv w5, w5, wzr, ne
|
|
mul x1, x1, x2
|
|
mov x2, x7
|
|
and w1, w1, 65535
|
|
.L64:
|
|
add w6, w6, 1
|
|
and w6, w6, 65535
|
|
cmp w12, w6
|
|
bcc .L58
|
|
cmp w1, w0
|
|
beq .L58
|
|
ldrh w14, [x2, 4]
|
|
cbz w14, .L62
|
|
ubfiz x11, x1, 1, 16
|
|
ldrh w11, [x13, x11]
|
|
mul w11, w11, w14
|
|
cmp w5, w11
|
|
bls .L62
|
|
ldrh w11, [x2]
|
|
cmp w11, w16
|
|
bne .L63
|
|
strh w1, [x3, 2]
|
|
strh w0, [x2]
|
|
adrp x0, .LANCHOR42
|
|
str x3, [x0, #:lo12:.LANCHOR42]
|
|
b .L58
|
|
.L63:
|
|
umaddl x2, w11, w8, x4
|
|
mov w1, w11
|
|
b .L64
|
|
.L62:
|
|
strh w1, [x4, x10]
|
|
cmp x2, x7
|
|
ldrh w1, [x2, 2]
|
|
strh w1, [x3, 2]
|
|
bne .L65
|
|
strh w0, [x2, 2]
|
|
str x3, [x15, #:lo12:.LANCHOR40]
|
|
b .L58
|
|
.L65:
|
|
ldrh w1, [x2, 2]
|
|
mov w3, 6
|
|
umull x1, w1, w3
|
|
strh w0, [x4, x1]
|
|
strh w0, [x2, 2]
|
|
b .L58
|
|
.size insert_data_list, .-insert_data_list
|
|
.section .text.INSERT_DATA_LIST,"ax",@progbits
|
|
.align 2
|
|
.global INSERT_DATA_LIST
|
|
.type INSERT_DATA_LIST, %function
|
|
INSERT_DATA_LIST:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl insert_data_list
|
|
adrp x1, .LANCHOR43
|
|
ldrh w0, [x1, #:lo12:.LANCHOR43]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x1, #:lo12:.LANCHOR43]
|
|
adrp x1, .LANCHOR4
|
|
ldrh w1, [x1, #:lo12:.LANCHOR4]
|
|
cmp w1, w0
|
|
bcs .L70
|
|
ldp x29, x30, [sp], 16
|
|
mov w2, 214
|
|
adrp x1, .LANCHOR44
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR44
|
|
add x0, x0, :lo12:.LC1
|
|
b printf
|
|
.L70:
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size INSERT_DATA_LIST, .-INSERT_DATA_LIST
|
|
.section .text.insert_free_list,"ax",@progbits
|
|
.align 2
|
|
.global insert_free_list
|
|
.type insert_free_list, %function
|
|
insert_free_list:
|
|
and w0, w0, 65535
|
|
mov w7, 65535
|
|
cmp w0, w7
|
|
beq .L74
|
|
adrp x1, .LANCHOR39
|
|
mov w6, 6
|
|
ldr x3, [x1, #:lo12:.LANCHOR39]
|
|
umull x8, w0, w6
|
|
mov w1, -1
|
|
add x4, x3, x8
|
|
strh w1, [x4, 2]
|
|
strh w1, [x3, x8]
|
|
adrp x1, .LANCHOR45
|
|
mov x12, x1
|
|
ldr x5, [x1, #:lo12:.LANCHOR45]
|
|
cbnz x5, .L75
|
|
str x4, [x1, #:lo12:.LANCHOR45]
|
|
.L74:
|
|
mov w0, 0
|
|
ret
|
|
.L75:
|
|
adrp x1, .LANCHOR46
|
|
mov x2, -6148914691236517206
|
|
movk x2, 0xaaab, lsl 0
|
|
ldr x11, [x1, #:lo12:.LANCHOR46]
|
|
ubfiz x1, x0, 1, 16
|
|
ldrh w13, [x11, x1]
|
|
sub x1, x5, x3
|
|
asr x1, x1, 1
|
|
mul x1, x1, x2
|
|
mov x2, x5
|
|
and w1, w1, 65535
|
|
.L78:
|
|
ubfiz x10, x1, 1, 16
|
|
ldrh w10, [x11, x10]
|
|
cmp w10, w13
|
|
bcs .L76
|
|
ldrh w10, [x2]
|
|
cmp w10, w7
|
|
bne .L77
|
|
strh w1, [x4, 2]
|
|
strh w0, [x2]
|
|
b .L74
|
|
.L77:
|
|
umaddl x2, w10, w6, x3
|
|
mov w1, w10
|
|
b .L78
|
|
.L76:
|
|
ldrh w6, [x2, 2]
|
|
cmp x2, x5
|
|
strh w6, [x4, 2]
|
|
strh w1, [x3, x8]
|
|
bne .L79
|
|
strh w0, [x2, 2]
|
|
str x4, [x12, #:lo12:.LANCHOR45]
|
|
b .L74
|
|
.L79:
|
|
ldrh w1, [x2, 2]
|
|
mov w4, 6
|
|
umull x1, w1, w4
|
|
strh w0, [x3, x1]
|
|
strh w0, [x2, 2]
|
|
b .L74
|
|
.size insert_free_list, .-insert_free_list
|
|
.section .text.INSERT_FREE_LIST,"ax",@progbits
|
|
.align 2
|
|
.global INSERT_FREE_LIST
|
|
.type INSERT_FREE_LIST, %function
|
|
INSERT_FREE_LIST:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl insert_free_list
|
|
adrp x1, .LANCHOR47
|
|
ldrh w0, [x1, #:lo12:.LANCHOR47]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x1, #:lo12:.LANCHOR47]
|
|
adrp x1, .LANCHOR4
|
|
ldrh w1, [x1, #:lo12:.LANCHOR4]
|
|
cmp w1, w0
|
|
bcs .L80
|
|
ldp x29, x30, [sp], 16
|
|
mov w2, 207
|
|
adrp x1, .LANCHOR48
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR48
|
|
add x0, x0, :lo12:.LC1
|
|
b printf
|
|
.L80:
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size INSERT_FREE_LIST, .-INSERT_FREE_LIST
|
|
.section .text.List_remove_node,"ax",@progbits
|
|
.align 2
|
|
.global List_remove_node
|
|
.type List_remove_node, %function
|
|
List_remove_node:
|
|
stp x29, x30, [sp, -64]!
|
|
and w1, w1, 65535
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR39
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x0
|
|
mov w0, 6
|
|
str x23, [sp, 48]
|
|
ldr x23, [x20, #:lo12:.LANCHOR39]
|
|
umull x21, w1, w0
|
|
mov w0, 65535
|
|
add x19, x23, x21
|
|
ldrh w1, [x19, 2]
|
|
cmp w1, w0
|
|
bne .L84
|
|
ldr x0, [x22]
|
|
cmp x19, x0
|
|
beq .L84
|
|
adrp x1, .LANCHOR49
|
|
adrp x0, .LC1
|
|
mov w2, 372
|
|
add x1, x1, :lo12:.LANCHOR49
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L84:
|
|
ldr x0, [x22]
|
|
mov w1, 65535
|
|
cmp x19, x0
|
|
ldrh w0, [x23, x21]
|
|
bne .L85
|
|
cmp w0, w1
|
|
bne .L86
|
|
str xzr, [x22]
|
|
.L87:
|
|
mov w0, -1
|
|
strh w0, [x23, x21]
|
|
strh w0, [x19, 2]
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldr x23, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L86:
|
|
ldr x1, [x20, #:lo12:.LANCHOR39]
|
|
mov w2, 6
|
|
umaddl x0, w0, w2, x1
|
|
mov w1, -1
|
|
str x0, [x22]
|
|
strh w1, [x0, 2]
|
|
b .L87
|
|
.L85:
|
|
cmp w0, w1
|
|
ldrh w1, [x19, 2]
|
|
bne .L88
|
|
cmp w1, w0
|
|
beq .L87
|
|
mov w0, 6
|
|
mov w2, -1
|
|
umull x1, w1, w0
|
|
ldr x0, [x20, #:lo12:.LANCHOR39]
|
|
strh w2, [x0, x1]
|
|
b .L87
|
|
.L88:
|
|
ldr x2, [x20, #:lo12:.LANCHOR39]
|
|
mov w3, 6
|
|
umaddl x4, w0, w3, x2
|
|
strh w1, [x4, 2]
|
|
ldrh w1, [x19, 2]
|
|
umull x1, w1, w3
|
|
strh w0, [x2, x1]
|
|
b .L87
|
|
.size List_remove_node, .-List_remove_node
|
|
.section .text.List_pop_index_node,"ax",@progbits
|
|
.align 2
|
|
.global List_pop_index_node
|
|
.type List_pop_index_node, %function
|
|
List_pop_index_node:
|
|
ldr x2, [x0]
|
|
cbz x2, .L96
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x3, .LANCHOR39
|
|
and w1, w1, 65535
|
|
mov w4, 65535
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
mov w5, 6
|
|
ldr x19, [x3, #:lo12:.LANCHOR39]
|
|
.L92:
|
|
cbnz w1, .L93
|
|
.L95:
|
|
sub x19, x2, x19
|
|
mov x2, -6148914691236517206
|
|
asr x19, x19, 1
|
|
movk x2, 0xaaab, lsl 0
|
|
mul x19, x19, x2
|
|
and w19, w19, 65535
|
|
mov w1, w19
|
|
bl List_remove_node
|
|
mov w0, w19
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L93:
|
|
ldrh w3, [x2]
|
|
cmp w3, w4
|
|
beq .L95
|
|
sub w1, w1, #1
|
|
umaddl x2, w3, w5, x19
|
|
and w1, w1, 65535
|
|
b .L92
|
|
.L96:
|
|
mov w0, 65535
|
|
ret
|
|
.size List_pop_index_node, .-List_pop_index_node
|
|
.section .text.List_pop_head_node,"ax",@progbits
|
|
.align 2
|
|
.global List_pop_head_node
|
|
.type List_pop_head_node, %function
|
|
List_pop_head_node:
|
|
mov w1, 0
|
|
b List_pop_index_node
|
|
.size List_pop_head_node, .-List_pop_head_node
|
|
.section .text.List_get_gc_head_node,"ax",@progbits
|
|
.align 2
|
|
.global List_get_gc_head_node
|
|
.type List_get_gc_head_node, %function
|
|
List_get_gc_head_node:
|
|
and w2, w0, 65535
|
|
adrp x0, .LANCHOR40
|
|
ldr x1, [x0, #:lo12:.LANCHOR40]
|
|
cbz x1, .L107
|
|
adrp x0, .LANCHOR39
|
|
mov w4, 6
|
|
ldr x3, [x0, #:lo12:.LANCHOR39]
|
|
mov w0, 65535
|
|
.L104:
|
|
cbz w2, .L105
|
|
ldrh w1, [x1]
|
|
cmp w1, w0
|
|
bne .L106
|
|
ret
|
|
.L106:
|
|
sub w2, w2, #1
|
|
umaddl x1, w1, w4, x3
|
|
and w2, w2, 65535
|
|
b .L104
|
|
.L107:
|
|
mov w0, 65535
|
|
ret
|
|
.L105:
|
|
sub x0, x1, x3
|
|
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
|
|
.section .text.List_update_data_list,"ax",@progbits
|
|
.align 2
|
|
.global List_update_data_list
|
|
.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, w0, 65535
|
|
adrp x0, .LANCHOR50
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR50]
|
|
stp x25, x26, [sp, 64]
|
|
cmp w0, w19
|
|
beq .L110
|
|
adrp x0, .LANCHOR51
|
|
ldrh w0, [x0, #:lo12:.LANCHOR51]
|
|
cmp w0, w19
|
|
beq .L110
|
|
adrp x0, .LANCHOR52
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w19
|
|
beq .L110
|
|
adrp x0, .LANCHOR39
|
|
mov w21, 6
|
|
adrp x24, .LANCHOR40
|
|
mov x26, x0
|
|
umull x21, w19, w21
|
|
ldr x23, [x0, #:lo12:.LANCHOR39]
|
|
ldr x1, [x24, #:lo12:.LANCHOR40]
|
|
add x22, x23, x21
|
|
cmp x22, x1
|
|
beq .L110
|
|
adrp x1, .LANCHOR41
|
|
ubfiz x0, x19, 1, 16
|
|
mov x25, x1
|
|
ldr x2, [x1, #:lo12:.LANCHOR41]
|
|
mov w1, 65535
|
|
ldrh w20, [x2, x0]
|
|
ldrh w0, [x22, 4]
|
|
cmp w0, 0
|
|
mul w20, w20, w0
|
|
ldrh w0, [x22, 2]
|
|
csinv w20, w20, wzr, ne
|
|
cmp w0, w1
|
|
bne .L113
|
|
ldrh w1, [x23, x21]
|
|
cmp w1, w0
|
|
bne .L113
|
|
adrp x1, .LANCHOR53
|
|
adrp x0, .LC1
|
|
mov w2, 463
|
|
add x1, x1, :lo12:.LANCHOR53
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L113:
|
|
ldrh w0, [x22, 2]
|
|
mov w1, 65535
|
|
cmp w0, w1
|
|
bne .L114
|
|
ldrh w1, [x23, x21]
|
|
cmp w1, w0
|
|
beq .L110
|
|
.L114:
|
|
mov w1, 6
|
|
mov x2, -6148914691236517206
|
|
movk x2, 0xaaab, lsl 0
|
|
umull x0, w0, w1
|
|
asr x1, x0, 1
|
|
mul x1, x1, x2
|
|
ldr x2, [x25, #:lo12:.LANCHOR41]
|
|
ldrh w1, [x2, x1, lsl 1]
|
|
ldr x2, [x26, #:lo12:.LANCHOR39]
|
|
add x0, x2, x0
|
|
ldrh w2, [x0, 4]
|
|
cmp w2, 0
|
|
mul w0, w1, w2
|
|
csinv w0, w0, wzr, ne
|
|
cmp w20, w0
|
|
bcs .L110
|
|
adrp x20, .LANCHOR43
|
|
mov w1, w19
|
|
add x0, x24, :lo12:.LANCHOR40
|
|
bl List_remove_node
|
|
ldrh w0, [x20, #:lo12:.LANCHOR43]
|
|
cbnz w0, .L116
|
|
adrp x1, .LANCHOR53
|
|
adrp x0, .LC1
|
|
mov w2, 474
|
|
add x1, x1, :lo12:.LANCHOR53
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L116:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR43]
|
|
sub w0, w0, #1
|
|
strh w0, [x20, #:lo12:.LANCHOR43]
|
|
mov w0, w19
|
|
bl INSERT_DATA_LIST
|
|
.L110:
|
|
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 List_update_data_list, .-List_update_data_list
|
|
.section .text.select_l2p_ram_region,"ax",@progbits
|
|
.align 2
|
|
.global select_l2p_ram_region
|
|
.type select_l2p_ram_region, %function
|
|
select_l2p_ram_region:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR32
|
|
mov x1, 0
|
|
mov w3, 65535
|
|
add x29, sp, 0
|
|
ldrh w2, [x0, #:lo12:.LANCHOR32]
|
|
adrp x0, .LANCHOR54
|
|
str x19, [sp, 16]
|
|
ldr x0, [x0, #:lo12:.LANCHOR54]
|
|
.L121:
|
|
and w19, w1, 65535
|
|
cmp w19, w2
|
|
bcc .L123
|
|
add x3, x0, 4
|
|
mov w19, w2
|
|
mov w5, -2147483648
|
|
mov w1, 0
|
|
.L124:
|
|
cmp w1, w2
|
|
bne .L126
|
|
cmp w19, w2
|
|
bcc .L122
|
|
adrp x1, .LANCHOR55
|
|
mov w19, w2
|
|
mov w3, -1
|
|
ldrh w4, [x1, #:lo12:.LANCHOR55]
|
|
mov w1, 0
|
|
.L127:
|
|
cmp w1, w2
|
|
bne .L129
|
|
cmp w19, w1
|
|
bcc .L122
|
|
mov w2, 796
|
|
adrp x1, .LANCHOR56
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR56
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
b .L122
|
|
.L123:
|
|
add x1, x1, 1
|
|
add x4, x0, x1, lsl 4
|
|
ldrh w4, [x4, -16]
|
|
cmp w4, w3
|
|
bne .L121
|
|
.L122:
|
|
mov w0, w19
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L126:
|
|
ldr w4, [x3]
|
|
tbnz w4, #31, .L125
|
|
cmp w5, w4
|
|
bls .L125
|
|
mov w5, w4
|
|
mov w19, w1
|
|
.L125:
|
|
add w1, w1, 1
|
|
add x3, x3, 16
|
|
and w1, w1, 65535
|
|
b .L124
|
|
.L129:
|
|
ldr w6, [x0, 4]
|
|
cmp w3, w6
|
|
bls .L128
|
|
ldrh w5, [x0]
|
|
cmp w5, w4
|
|
csel w3, w3, w6, eq
|
|
csel w19, w19, w1, eq
|
|
.L128:
|
|
add w1, w1, 1
|
|
add x0, x0, 16
|
|
and w1, w1, 65535
|
|
b .L127
|
|
.size select_l2p_ram_region, .-select_l2p_ram_region
|
|
.section .text.FtlUpdateVaildLpn,"ax",@progbits
|
|
.align 2
|
|
.global FtlUpdateVaildLpn
|
|
.type FtlUpdateVaildLpn, %function
|
|
FtlUpdateVaildLpn:
|
|
adrp x2, .LANCHOR57
|
|
mov x3, x2
|
|
ldrh w1, [x2, #:lo12:.LANCHOR57]
|
|
cmp w1, 4
|
|
bhi .L132
|
|
cbnz w0, .L132
|
|
add w1, w1, 1
|
|
strh w1, [x2, #:lo12:.LANCHOR57]
|
|
ret
|
|
.L132:
|
|
adrp x1, .LANCHOR4
|
|
adrp x0, .LANCHOR58
|
|
strh wzr, [x3, #:lo12:.LANCHOR57]
|
|
mov w2, 0
|
|
ldrh w5, [x1, #:lo12:.LANCHOR4]
|
|
adrp x1, .LANCHOR41
|
|
str wzr, [x0, #:lo12:.LANCHOR58]
|
|
mov w3, 0
|
|
ldr x6, [x1, #:lo12:.LANCHOR41]
|
|
mov w7, 65535
|
|
mov x1, 0
|
|
.L133:
|
|
cmp w5, w1, uxth
|
|
bhi .L135
|
|
cbz w3, .L131
|
|
str w2, [x0, #:lo12:.LANCHOR58]
|
|
.L131:
|
|
ret
|
|
.L135:
|
|
ldrh w4, [x6, x1, lsl 1]
|
|
cmp w4, w7
|
|
beq .L134
|
|
add w2, w2, w4
|
|
mov w3, 1
|
|
.L134:
|
|
add x1, x1, 1
|
|
b .L133
|
|
.size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
|
|
.section .text.ftl_sb_update_avl_pages,"ax",@progbits
|
|
.align 2
|
|
.global ftl_sb_update_avl_pages
|
|
.type ftl_sb_update_avl_pages, %function
|
|
ftl_sb_update_avl_pages:
|
|
and w2, w2, 65535
|
|
and w6, w1, 65535
|
|
ubfiz x4, x2, 1, 16
|
|
adrp x1, .LANCHOR2
|
|
add x4, x4, 16
|
|
strh wzr, [x0, 4]
|
|
add x4, x0, x4
|
|
ldrh w3, [x1, #:lo12:.LANCHOR2]
|
|
mov w1, 65535
|
|
.L142:
|
|
cmp w2, w3
|
|
bcc .L144
|
|
adrp x1, .LANCHOR18
|
|
ubfiz x3, x3, 1, 16
|
|
add x3, x3, 16
|
|
add x2, x0, 16
|
|
ldrh w1, [x1, #:lo12:.LANCHOR18]
|
|
add x3, x0, x3
|
|
mov w5, 65535
|
|
sub w1, w1, #1
|
|
and w1, w1, 65535
|
|
sub w1, w1, w6
|
|
.L145:
|
|
cmp x2, x3
|
|
bne .L147
|
|
ret
|
|
.L144:
|
|
ldrh w5, [x4]
|
|
cmp w5, w1
|
|
beq .L143
|
|
ldrh w5, [x0, 4]
|
|
add w5, w5, 1
|
|
strh w5, [x0, 4]
|
|
.L143:
|
|
add w2, w2, 1
|
|
add x4, x4, 2
|
|
and w2, w2, 65535
|
|
b .L142
|
|
.L147:
|
|
ldrh w4, [x2]
|
|
cmp w4, w5
|
|
beq .L146
|
|
ldrh w4, [x0, 4]
|
|
add w4, w1, w4
|
|
strh w4, [x0, 4]
|
|
.L146:
|
|
add x2, x2, 2
|
|
b .L145
|
|
.size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
|
|
.section .text.FtlSlcSuperblockCheck,"ax",@progbits
|
|
.align 2
|
|
.global FtlSlcSuperblockCheck
|
|
.type FtlSlcSuperblockCheck, %function
|
|
FtlSlcSuperblockCheck:
|
|
ldrh w1, [x0, 4]
|
|
cbz w1, .L148
|
|
ldrh w2, [x0]
|
|
mov w1, 65535
|
|
cmp w2, w1
|
|
beq .L148
|
|
ldrb w2, [x0, 6]
|
|
add x2, x2, 8
|
|
ldrh w3, [x0, x2, lsl 1]
|
|
adrp x2, .LANCHOR2
|
|
ldrh w4, [x2, #:lo12:.LANCHOR2]
|
|
mov w2, w1
|
|
.L151:
|
|
cmp w3, w2
|
|
beq .L153
|
|
.L148:
|
|
ret
|
|
.L153:
|
|
ldrb w1, [x0, 6]
|
|
add w1, w1, 1
|
|
and w1, w1, 255
|
|
strb w1, [x0, 6]
|
|
cmp w1, w4
|
|
bne .L152
|
|
ldrh w1, [x0, 2]
|
|
strb wzr, [x0, 6]
|
|
add w1, w1, 1
|
|
strh w1, [x0, 2]
|
|
.L152:
|
|
ldrb w1, [x0, 6]
|
|
add x1, x1, 8
|
|
ldrh w3, [x0, x1, lsl 1]
|
|
b .L151
|
|
.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
|
|
.section .text.make_superblock,"ax",@progbits
|
|
.align 2
|
|
.global make_superblock
|
|
.type make_superblock, %function
|
|
make_superblock:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
ldrh w1, [x0]
|
|
str x19, [sp, 16]
|
|
mov x19, x0
|
|
adrp x0, .LANCHOR4
|
|
ldrh w0, [x0, #:lo12:.LANCHOR4]
|
|
cmp w1, w0
|
|
bcc .L155
|
|
adrp x1, .LANCHOR59
|
|
adrp x0, .LC1
|
|
mov w2, 2157
|
|
add x1, x1, :lo12:.LANCHOR59
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L155:
|
|
adrp x0, .LANCHOR2
|
|
adrp x7, .LANCHOR12
|
|
add x6, x19, 16
|
|
add x7, x7, :lo12:.LANCHOR12
|
|
ldrh w8, [x0, #:lo12:.LANCHOR2]
|
|
mov x5, 0
|
|
strh wzr, [x19, 4]
|
|
mov w10, -1
|
|
strb wzr, [x19, 7]
|
|
.L156:
|
|
cmp w8, w5, uxth
|
|
bhi .L158
|
|
adrp x1, .LANCHOR18
|
|
ldrb w0, [x19, 7]
|
|
strb wzr, [x19, 9]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR18]
|
|
mul w0, w0, w1
|
|
ldrh w1, [x19]
|
|
strh w0, [x19, 4]
|
|
adrp x0, .LANCHOR46
|
|
ldr x0, [x0, #:lo12:.LANCHOR46]
|
|
ldrh w1, [x0, x1, lsl 1]
|
|
mov w0, 10000
|
|
cmp w1, w0
|
|
bls .L159
|
|
mov w0, 1
|
|
strb w0, [x19, 9]
|
|
.L159:
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L158:
|
|
ldrh w1, [x19]
|
|
ldrb w0, [x7, x5]
|
|
bl V2P_block
|
|
mov w4, w0
|
|
strh w10, [x6]
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L157
|
|
strh w4, [x6]
|
|
ldrb w0, [x19, 7]
|
|
add w0, w0, 1
|
|
strb w0, [x19, 7]
|
|
.L157:
|
|
add x5, x5, 1
|
|
add x6, x6, 2
|
|
b .L156
|
|
.size make_superblock, .-make_superblock
|
|
.section .text.update_multiplier_value,"ax",@progbits
|
|
.align 2
|
|
.global update_multiplier_value
|
|
.type update_multiplier_value, %function
|
|
update_multiplier_value:
|
|
and w6, w0, 65535
|
|
adrp x0, .LANCHOR2
|
|
mov x7, 0
|
|
adrp x8, .LANCHOR12
|
|
ldrh w10, [x0, #:lo12:.LANCHOR2]
|
|
adrp x0, .LANCHOR18
|
|
mov w5, 0
|
|
add x8, x8, :lo12:.LANCHOR12
|
|
ldrh w11, [x0, #:lo12:.LANCHOR18]
|
|
cmp w10, w7, uxth
|
|
bhi .L173
|
|
cbz w5, .L171
|
|
mov w0, 32768
|
|
sdiv w5, w0, w5
|
|
.L172:
|
|
adrp x0, .LANCHOR39
|
|
mov w1, 6
|
|
ldr x0, [x0, #:lo12:.LANCHOR39]
|
|
umaddl x6, w6, w1, x0
|
|
mov w0, 0
|
|
strh w5, [x6, 4]
|
|
ret
|
|
.L166:
|
|
mov w5, 0
|
|
b .L165
|
|
.L171:
|
|
mov w5, 0
|
|
b .L172
|
|
.L173:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
.L164:
|
|
ldrb w0, [x8, x7]
|
|
mov w1, w6
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L163
|
|
add w5, w5, w11
|
|
and w5, w5, 65535
|
|
.L163:
|
|
add x7, x7, 1
|
|
cmp w10, w7, uxth
|
|
bhi .L164
|
|
cbz w5, .L166
|
|
mov w0, 32768
|
|
sdiv w5, w0, w5
|
|
.L165:
|
|
adrp x0, .LANCHOR39
|
|
mov w1, 6
|
|
ldr x0, [x0, #:lo12:.LANCHOR39]
|
|
umaddl x6, w6, w1, x0
|
|
mov w0, 0
|
|
strh w5, [x6, 4]
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size update_multiplier_value, .-update_multiplier_value
|
|
.section .text.GetFreeBlockMinEraseCount,"ax",@progbits
|
|
.align 2
|
|
.global GetFreeBlockMinEraseCount
|
|
.type GetFreeBlockMinEraseCount, %function
|
|
GetFreeBlockMinEraseCount:
|
|
adrp x0, .LANCHOR45
|
|
ldr x0, [x0, #:lo12:.LANCHOR45]
|
|
cbz x0, .L176
|
|
adrp x1, .LANCHOR39
|
|
ldr x1, [x1, #:lo12:.LANCHOR39]
|
|
sub x0, x0, x1
|
|
mov x1, -6148914691236517206
|
|
asr x0, x0, 1
|
|
movk x1, 0xaaab, lsl 0
|
|
mul x0, x0, x1
|
|
adrp x1, .LANCHOR46
|
|
ldr x1, [x1, #:lo12:.LANCHOR46]
|
|
and x0, x0, 65535
|
|
ldrh w0, [x1, x0, lsl 1]
|
|
ret
|
|
.L176:
|
|
mov w0, 0
|
|
ret
|
|
.size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
|
|
.section .text.GetFreeBlockMaxEraseCount,"ax",@progbits
|
|
.align 2
|
|
.global GetFreeBlockMaxEraseCount
|
|
.type GetFreeBlockMaxEraseCount, %function
|
|
GetFreeBlockMaxEraseCount:
|
|
adrp x1, .LANCHOR45
|
|
and w0, w0, 65535
|
|
ldr x1, [x1, #:lo12:.LANCHOR45]
|
|
cbz x1, .L184
|
|
adrp x2, .LANCHOR47
|
|
mov w3, 7
|
|
mov w5, 6
|
|
mov w6, 65535
|
|
ldrh w2, [x2, #:lo12:.LANCHOR47]
|
|
mul w2, w2, w3
|
|
asr w2, w2, 3
|
|
cmp w0, w2
|
|
csel w0, w2, w0, gt
|
|
adrp x2, .LANCHOR39
|
|
ldr x3, [x2, #:lo12:.LANCHOR39]
|
|
mov x2, -6148914691236517206
|
|
movk x2, 0xaaab, lsl 0
|
|
sub x1, x1, x3
|
|
asr x1, x1, 1
|
|
mul x1, x1, x2
|
|
mov w2, 0
|
|
and w1, w1, 65535
|
|
.L180:
|
|
cmp w0, w2
|
|
beq .L183
|
|
umull x4, w1, w5
|
|
ldrh w4, [x3, x4]
|
|
cmp w4, w6
|
|
bne .L181
|
|
.L183:
|
|
adrp x0, .LANCHOR46
|
|
ubfiz x1, x1, 1, 16
|
|
ldr x0, [x0, #:lo12:.LANCHOR46]
|
|
ldrh w0, [x0, x1]
|
|
ret
|
|
.L181:
|
|
add w2, w2, 1
|
|
mov w1, w4
|
|
and w2, w2, 65535
|
|
b .L180
|
|
.L184:
|
|
mov w0, 0
|
|
ret
|
|
.size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
|
|
.section .text.free_data_superblock,"ax",@progbits
|
|
.align 2
|
|
.global free_data_superblock
|
|
.type free_data_superblock, %function
|
|
free_data_superblock:
|
|
and w0, w0, 65535
|
|
mov w1, 65535
|
|
cmp w0, w1
|
|
beq .L188
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x2, .LANCHOR41
|
|
ubfiz x1, x0, 1, 16
|
|
add x29, sp, 0
|
|
ldr x2, [x2, #:lo12:.LANCHOR41]
|
|
strh wzr, [x2, x1]
|
|
bl INSERT_FREE_LIST
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L188:
|
|
mov w0, 0
|
|
ret
|
|
.size free_data_superblock, .-free_data_superblock
|
|
.section .text.get_new_active_ppa,"ax",@progbits
|
|
.align 2
|
|
.global get_new_active_ppa
|
|
.type get_new_active_ppa, %function
|
|
get_new_active_ppa:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w1, [x0]
|
|
mov w0, 65535
|
|
str x21, [sp, 32]
|
|
cmp w1, w0
|
|
bne .L192
|
|
adrp x1, .LANCHOR60
|
|
adrp x0, .LC1
|
|
mov w2, 2792
|
|
add x1, x1, :lo12:.LANCHOR60
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L192:
|
|
adrp x21, .LANCHOR18
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR18]
|
|
cmp w1, w0
|
|
bne .L193
|
|
adrp x1, .LANCHOR60
|
|
adrp x0, .LC1
|
|
mov w2, 2793
|
|
add x1, x1, :lo12:.LANCHOR60
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L193:
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L194
|
|
adrp x1, .LANCHOR60
|
|
adrp x0, .LC1
|
|
mov w2, 2794
|
|
add x1, x1, :lo12:.LANCHOR60
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L194:
|
|
ldrb w0, [x19, 6]
|
|
adrp x1, .LANCHOR2
|
|
strb wzr, [x19, 10]
|
|
add x0, x0, 8
|
|
ldrh w3, [x1, #:lo12:.LANCHOR2]
|
|
mov w1, 65535
|
|
ldrh w0, [x19, x0, lsl 1]
|
|
.L195:
|
|
cmp w0, w1
|
|
beq .L197
|
|
ldrh w20, [x19, 2]
|
|
ldrh w2, [x21, #:lo12:.LANCHOR18]
|
|
cmp w20, w2
|
|
bcs .L201
|
|
ldrh w1, [x19, 4]
|
|
orr w20, w20, w0, lsl 10
|
|
ldrb w0, [x19, 6]
|
|
mov w4, 65535
|
|
sub w1, w1, #1
|
|
and w1, w1, 65535
|
|
strh w1, [x19, 4]
|
|
.L200:
|
|
add w0, w0, 1
|
|
and w0, w0, 255
|
|
cmp w3, w0
|
|
bne .L199
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
mov w0, 0
|
|
.L199:
|
|
add x5, x19, x0, sxtw 1
|
|
ldrh w5, [x5, 16]
|
|
cmp w5, w4
|
|
beq .L200
|
|
strb w0, [x19, 6]
|
|
ldrh w0, [x19, 2]
|
|
cmp w0, w2
|
|
bne .L191
|
|
cbz w1, .L191
|
|
adrp x1, .LANCHOR60
|
|
adrp x0, .LC1
|
|
mov w2, 2817
|
|
add x1, x1, :lo12:.LANCHOR60
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L191:
|
|
mov w0, w20
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L197:
|
|
ldrb w0, [x19, 6]
|
|
add w0, w0, 1
|
|
and w0, w0, 255
|
|
strb w0, [x19, 6]
|
|
cmp w0, w3
|
|
bne .L196
|
|
ldrh w0, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
.L196:
|
|
ldrb w0, [x19, 6]
|
|
add x0, x0, 8
|
|
ldrh w0, [x19, x0, lsl 1]
|
|
b .L195
|
|
.L201:
|
|
mov w20, 65535
|
|
b .L191
|
|
.size get_new_active_ppa, .-get_new_active_ppa
|
|
.section .text.FtlGcBufInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcBufInit
|
|
.type FtlGcBufInit, %function
|
|
FtlGcBufInit:
|
|
adrp x1, .LANCHOR62
|
|
adrp x0, .LANCHOR61
|
|
adrp x7, .LANCHOR63
|
|
adrp x6, .LANCHOR64
|
|
ldr x5, [x1, #:lo12:.LANCHOR62]
|
|
adrp x1, .LANCHOR22
|
|
str wzr, [x0, #:lo12:.LANCHOR61]
|
|
adrp x0, .LANCHOR2
|
|
ldrh w10, [x1, #:lo12:.LANCHOR22]
|
|
adrp x1, .LANCHOR23
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
mov w8, 24
|
|
ldrh w11, [x1, #:lo12:.LANCHOR23]
|
|
adrp x1, .LANCHOR65
|
|
ldr x14, [x7, #:lo12:.LANCHOR63]
|
|
mov x3, x5
|
|
ldr x4, [x1, #:lo12:.LANCHOR65]
|
|
mov w2, 0
|
|
ldr x15, [x6, #:lo12:.LANCHOR64]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x8, w0, w8, x5
|
|
add x4, x4, 8
|
|
mov w1, 0
|
|
mov w16, 1
|
|
.L208:
|
|
add w13, w2, w10
|
|
add w12, w1, w11
|
|
cmp x3, x8
|
|
bne .L209
|
|
adrp x1, .LANCHOR66
|
|
ldr x7, [x7, #:lo12:.LANCHOR63]
|
|
ldr x6, [x6, #:lo12:.LANCHOR64]
|
|
mov w8, 24
|
|
ldr w4, [x1, #:lo12:.LANCHOR66]
|
|
.L210:
|
|
cmp w0, w4
|
|
bcc .L211
|
|
ret
|
|
.L209:
|
|
asr w2, w2, 2
|
|
asr w1, w1, 2
|
|
add x2, x14, x2, sxtw 2
|
|
add x1, x15, x1, sxtw 2
|
|
str w16, [x3, 16]
|
|
stp x2, x1, [x3]
|
|
add x3, x3, 24
|
|
stp x2, x1, [x4]
|
|
add x4, x4, 32
|
|
mov w1, w12
|
|
mov w2, w13
|
|
b .L208
|
|
.L211:
|
|
umull x3, w0, w8
|
|
mul w1, w10, w0
|
|
add x2, x5, x3
|
|
asr w1, w1, 2
|
|
add x1, x7, x1, sxtw 2
|
|
str wzr, [x2, 16]
|
|
str x1, [x5, x3]
|
|
mul w1, w11, w0
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
asr w1, w1, 2
|
|
add x1, x6, x1, sxtw 2
|
|
str x1, [x2, 8]
|
|
b .L210
|
|
.size FtlGcBufInit, .-FtlGcBufInit
|
|
.section .text.FtlGcBufFree,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcBufFree
|
|
.type FtlGcBufFree, %function
|
|
FtlGcBufFree:
|
|
adrp x2, .LANCHOR66
|
|
mov w3, 0
|
|
mov w8, 24
|
|
ldr w7, [x2, #:lo12:.LANCHOR66]
|
|
adrp x2, .LANCHOR62
|
|
ldr x5, [x2, #:lo12:.LANCHOR62]
|
|
.L213:
|
|
cmp w3, w1
|
|
bcs .L212
|
|
ubfiz x4, x3, 5, 16
|
|
mov w2, 0
|
|
add x4, x0, x4
|
|
b .L218
|
|
.L214:
|
|
add w2, w2, 1
|
|
and w2, w2, 65535
|
|
.L218:
|
|
cmp w2, w7
|
|
bcs .L215
|
|
umull x6, w2, w8
|
|
add x10, x5, x6
|
|
ldr x11, [x5, x6]
|
|
ldr x6, [x4, 8]
|
|
cmp x11, x6
|
|
bne .L214
|
|
str wzr, [x10, 16]
|
|
.L215:
|
|
add w3, w3, 1
|
|
and w3, w3, 65535
|
|
b .L213
|
|
.L212:
|
|
ret
|
|
.size FtlGcBufFree, .-FtlGcBufFree
|
|
.section .text.FtlGcBufAlloc,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcBufAlloc
|
|
.type FtlGcBufAlloc, %function
|
|
FtlGcBufAlloc:
|
|
adrp x2, .LANCHOR66
|
|
mov w3, 0
|
|
mov w7, 24
|
|
mov w8, 1
|
|
ldr w5, [x2, #:lo12:.LANCHOR66]
|
|
adrp x2, .LANCHOR62
|
|
ldr x6, [x2, #:lo12:.LANCHOR62]
|
|
.L220:
|
|
cmp w3, w1
|
|
bcs .L219
|
|
mov w2, 0
|
|
b .L225
|
|
.L221:
|
|
add w2, w2, 1
|
|
and w2, w2, 65535
|
|
.L225:
|
|
cmp w2, w5
|
|
bcs .L222
|
|
umaddl x4, w2, w7, x6
|
|
ldr w10, [x4, 16]
|
|
cbnz w10, .L221
|
|
ubfiz x2, x3, 5, 16
|
|
ldr x10, [x4]
|
|
add x2, x0, x2
|
|
str w8, [x4, 16]
|
|
ldr x4, [x4, 8]
|
|
stp x10, x4, [x2, 8]
|
|
.L222:
|
|
add w3, w3, 1
|
|
and w3, w3, 65535
|
|
b .L220
|
|
.L219:
|
|
ret
|
|
.size FtlGcBufAlloc, .-FtlGcBufAlloc
|
|
.section .text.IsBlkInGcList,"ax",@progbits
|
|
.align 2
|
|
.global IsBlkInGcList
|
|
.type IsBlkInGcList, %function
|
|
IsBlkInGcList:
|
|
adrp x1, .LANCHOR67
|
|
and w0, w0, 65535
|
|
ldrh w2, [x1, #:lo12:.LANCHOR67]
|
|
adrp x1, .LANCHOR68
|
|
ldr x3, [x1, #:lo12:.LANCHOR68]
|
|
mov x1, 0
|
|
.L227:
|
|
cmp w2, w1, uxth
|
|
bhi .L229
|
|
mov w0, 0
|
|
ret
|
|
.L229:
|
|
add x1, x1, 1
|
|
add x4, x3, x1, lsl 1
|
|
ldrh w4, [x4, -2]
|
|
cmp w4, w0
|
|
bne .L227
|
|
mov w0, 1
|
|
ret
|
|
.size IsBlkInGcList, .-IsBlkInGcList
|
|
.section .text.FtlGcUpdatePage,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcUpdatePage
|
|
.type FtlGcUpdatePage, %function
|
|
FtlGcUpdatePage:
|
|
mov w6, w0
|
|
mov w10, w1
|
|
mov w8, w2
|
|
stp x29, x30, [sp, -16]!
|
|
lsr w0, w0, 10
|
|
add x29, sp, 0
|
|
bl P2V_block_in_plane
|
|
and w7, w0, 65535
|
|
adrp x4, .LANCHOR67
|
|
adrp x2, .LANCHOR68
|
|
mov x3, 0
|
|
ldrh w1, [x4, #:lo12:.LANCHOR67]
|
|
ldr x5, [x2, #:lo12:.LANCHOR68]
|
|
.L232:
|
|
and w2, w3, 65535
|
|
cmp w2, w1
|
|
bcc .L234
|
|
bne .L233
|
|
and x3, x3, 65535
|
|
strh w0, [x5, x3, lsl 1]
|
|
ldrh w0, [x4, #:lo12:.LANCHOR67]
|
|
add w0, w0, 1
|
|
strh w0, [x4, #:lo12:.LANCHOR67]
|
|
b .L233
|
|
.L234:
|
|
add x3, x3, 1
|
|
add x2, x5, x3, lsl 1
|
|
ldrh w2, [x2, -2]
|
|
cmp w2, w7
|
|
bne .L232
|
|
.L233:
|
|
adrp x4, .LANCHOR69
|
|
adrp x1, .LANCHOR70
|
|
mov w3, 12
|
|
ldrh w0, [x4, #:lo12:.LANCHOR69]
|
|
ldr x5, [x1, #:lo12:.LANCHOR70]
|
|
umull x3, w0, w3
|
|
add w0, w0, 1
|
|
add x7, x5, x3
|
|
stp w10, w8, [x7, 4]
|
|
str w6, [x5, x3]
|
|
strh w0, [x4, #:lo12:.LANCHOR69]
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlGcUpdatePage, .-FtlGcUpdatePage
|
|
.section .text.FtlGcRefreshBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcRefreshBlock
|
|
.type FtlGcRefreshBlock, %function
|
|
FtlGcRefreshBlock:
|
|
adrp x4, .LANCHOR71
|
|
and w0, w0, 65535
|
|
ldrh w5, [x4, #:lo12:.LANCHOR71]
|
|
cmp w5, w0
|
|
beq .L237
|
|
adrp x1, .LANCHOR72
|
|
ldrh w3, [x1, #:lo12:.LANCHOR72]
|
|
cmp w0, w3
|
|
beq .L237
|
|
mov w2, 65535
|
|
cmp w5, w2
|
|
bne .L238
|
|
strh w0, [x4, #:lo12:.LANCHOR71]
|
|
.L237:
|
|
mov w0, 0
|
|
ret
|
|
.L238:
|
|
cmp w3, w2
|
|
bne .L237
|
|
strh w0, [x1, #:lo12:.LANCHOR72]
|
|
b .L237
|
|
.size FtlGcRefreshBlock, .-FtlGcRefreshBlock
|
|
.section .text.FtlGcMarkBadPhyBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcMarkBadPhyBlk
|
|
.type FtlGcMarkBadPhyBlk, %function
|
|
FtlGcMarkBadPhyBlk:
|
|
and w6, w0, 65535
|
|
stp x29, x30, [sp, -16]!
|
|
mov w0, w6
|
|
add x29, sp, 0
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
adrp x1, .LANCHOR73
|
|
adrp x3, .LANCHOR74
|
|
add x3, x3, :lo12:.LANCHOR74
|
|
mov x2, 0
|
|
ldrh w0, [x1, #:lo12:.LANCHOR73]
|
|
.L240:
|
|
cmp w0, w2, uxth
|
|
bhi .L242
|
|
cmp w0, 15
|
|
bhi .L241
|
|
add w2, w0, 1
|
|
strh w2, [x1, #:lo12:.LANCHOR73]
|
|
adrp x1, .LANCHOR74
|
|
add x1, x1, :lo12:.LANCHOR74
|
|
strh w6, [x1, w0, sxtw 1]
|
|
b .L241
|
|
.L242:
|
|
add x2, x2, 1
|
|
add x4, x3, x2, lsl 1
|
|
ldrh w4, [x4, -2]
|
|
cmp w4, w6
|
|
bne .L240
|
|
.L241:
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
|
|
.section .text.FtlGcReFreshBadBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcReFreshBadBlk
|
|
.type FtlGcReFreshBadBlk, %function
|
|
FtlGcReFreshBadBlk:
|
|
adrp x0, .LANCHOR73
|
|
ldrh w0, [x0, #:lo12:.LANCHOR73]
|
|
cbz w0, .L251
|
|
adrp x1, .LANCHOR71
|
|
ldrh w2, [x1, #:lo12:.LANCHOR71]
|
|
mov w1, 65535
|
|
cmp w2, w1
|
|
bne .L251
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x6, .LANCHOR75
|
|
add x29, sp, 0
|
|
ldrh w1, [x6, #:lo12:.LANCHOR75]
|
|
cmp w1, w0
|
|
bcc .L246
|
|
strh wzr, [x6, #:lo12:.LANCHOR75]
|
|
.L246:
|
|
ldrh w1, [x6, #:lo12:.LANCHOR75]
|
|
adrp x0, .LANCHOR74
|
|
add x0, x0, :lo12:.LANCHOR74
|
|
ldrh w0, [x0, x1, lsl 1]
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
ldrh w0, [x6, #:lo12:.LANCHOR75]
|
|
ldp x29, x30, [sp], 16
|
|
add w0, w0, 1
|
|
strh w0, [x6, #:lo12:.LANCHOR75]
|
|
mov w0, 0
|
|
ret
|
|
.L251:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
|
|
.section .text.ftl_malloc,"ax",@progbits
|
|
.align 2
|
|
.global ftl_malloc
|
|
.type ftl_malloc, %function
|
|
ftl_malloc:
|
|
mov w1, 0
|
|
sxtw x0, w0
|
|
b kmalloc
|
|
.size ftl_malloc, .-ftl_malloc
|
|
.section .text.ftl_free,"ax",@progbits
|
|
.align 2
|
|
.global ftl_free
|
|
.type ftl_free, %function
|
|
ftl_free:
|
|
b free
|
|
.size ftl_free, .-ftl_free
|
|
.section .text.rknand_print_hex,"ax",@progbits
|
|
.align 2
|
|
.global rknand_print_hex
|
|
.type rknand_print_hex, %function
|
|
rknand_print_hex:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x1
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LC2
|
|
stp x25, x26, [sp, 64]
|
|
mov w23, w2
|
|
stp x27, x28, [sp, 80]
|
|
adrp x25, .LC4
|
|
mov x28, x0
|
|
mov w27, w3
|
|
add x24, x24, :lo12:.LC2
|
|
add x25, x25, :lo12:.LC4
|
|
stp x19, x20, [sp, 16]
|
|
mov w21, 0
|
|
mov x19, 0
|
|
mov w20, 0
|
|
adrp x26, .LC3
|
|
.L257:
|
|
cmp w27, w19
|
|
bhi .L263
|
|
ldp x19, x20, [sp, 16]
|
|
adrp x0, .LC5
|
|
ldp x21, x22, [sp, 32]
|
|
add x0, x0, :lo12:.LC5
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 96
|
|
b printf
|
|
.L263:
|
|
cbnz w20, .L258
|
|
mov w2, w21
|
|
mov x1, x28
|
|
mov x0, x24
|
|
bl printf
|
|
.L258:
|
|
cmp w23, 4
|
|
bne .L259
|
|
ldr w1, [x22, x19, lsl 2]
|
|
.L266:
|
|
add x0, x26, :lo12:.LC3
|
|
.L265:
|
|
bl printf
|
|
add w20, w20, 1
|
|
cmp w20, 15
|
|
bls .L262
|
|
mov w20, 0
|
|
adrp x0, .LC5
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
.L262:
|
|
add x19, x19, 1
|
|
add w21, w21, w23
|
|
b .L257
|
|
.L259:
|
|
cmp w23, 2
|
|
bne .L261
|
|
ldrh w1, [x22, x19, lsl 1]
|
|
b .L266
|
|
.L261:
|
|
ldrb w1, [x22, x19]
|
|
mov x0, x25
|
|
b .L265
|
|
.size rknand_print_hex, .-rknand_print_hex
|
|
.section .text.FlashEraseBlocks,"ax",@progbits
|
|
.align 2
|
|
.global FlashEraseBlocks
|
|
.type FlashEraseBlocks, %function
|
|
FlashEraseBlocks:
|
|
stp x29, x30, [sp, -112]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x20, x0
|
|
adrp x0, .LANCHOR0
|
|
add x1, x0, :lo12:.LANCHOR0
|
|
stp x23, x24, [sp, 48]
|
|
add x19, x20, 4
|
|
stp x21, x22, [sp, 32]
|
|
ubfiz x21, x2, 5, 32
|
|
ldrh w24, [x1, 12]
|
|
add x23, x21, 4
|
|
stp x25, x26, [sp, 64]
|
|
add x23, x20, x23
|
|
adrp x25, .LANCHOR77
|
|
str x27, [sp, 80]
|
|
lsl w26, w24, 3
|
|
mov x22, x0
|
|
add x27, x25, :lo12:.LANCHOR77
|
|
.L268:
|
|
cmp x19, x23
|
|
beq .L282
|
|
ldr w0, [x19]
|
|
add x2, x29, 104
|
|
add x1, x29, 108
|
|
bl l2p_addr_tran.isra.0
|
|
ldr w0, [x29, 104]
|
|
cbnz w0, .L269
|
|
ldr w1, [x29, 108]
|
|
cmp w26, w1
|
|
bls .L269
|
|
mov x19, x20
|
|
add x21, x20, x21
|
|
adrp x22, .LC6
|
|
adrp x20, .LANCHOR76
|
|
add x22, x22, :lo12:.LC6
|
|
add x20, x20, :lo12:.LANCHOR76
|
|
mov w23, -1
|
|
.L270:
|
|
cmp x19, x21
|
|
bne .L271
|
|
.L282:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
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
|
|
.L271:
|
|
ldr w2, [x29, 108]
|
|
mov x1, x20
|
|
str w23, [x19]
|
|
mov x0, x22
|
|
add x19, x19, 32
|
|
bl printf
|
|
ldr x1, [x19, -24]
|
|
mov w3, 16
|
|
mov w2, 4
|
|
adrp x0, .LC7
|
|
add x0, x0, :lo12:.LC7
|
|
bl rknand_print_hex
|
|
ldr x1, [x19, -16]
|
|
mov w3, 4
|
|
adrp x0, .LC8
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC8
|
|
bl rknand_print_hex
|
|
b .L270
|
|
.L269:
|
|
add x1, x25, :lo12:.LANCHOR77
|
|
ldr x2, [x1, 8]
|
|
ldr w1, [x29, 108]
|
|
blr x2
|
|
cbnz w0, .L272
|
|
str wzr, [x19, -4]
|
|
.L273:
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
ldrh w0, [x0, 14]
|
|
cmp w0, 4
|
|
bne .L275
|
|
ldrb w0, [x29, 104]
|
|
ldr x2, [x27, 8]
|
|
ldr w1, [x29, 108]
|
|
add w1, w24, w1
|
|
blr x2
|
|
cbz w0, .L275
|
|
mov w0, -1
|
|
str w0, [x19, -4]
|
|
.L275:
|
|
add x19, x19, 32
|
|
b .L268
|
|
.L272:
|
|
mov w0, -1
|
|
str w0, [x19, -4]
|
|
b .L273
|
|
.size FlashEraseBlocks, .-FlashEraseBlocks
|
|
.section .text.FtlFreeSysBlkQueueIn,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueIn
|
|
.type FtlFreeSysBlkQueueIn, %function
|
|
FtlFreeSysBlkQueueIn:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w20, w0, 65535
|
|
str x21, [sp, 32]
|
|
sub w2, w20, #1
|
|
mov w0, 65533
|
|
cmp w0, w2, uxth
|
|
bcc .L284
|
|
adrp x0, .LANCHOR37
|
|
add x2, x0, :lo12:.LANCHOR37
|
|
mov x19, x0
|
|
ldrh w2, [x2, 6]
|
|
cmp w2, 1024
|
|
beq .L284
|
|
and w1, w1, 65535
|
|
cbz w1, .L286
|
|
mov w0, w20
|
|
bl P2V_block_in_plane
|
|
and w21, w0, 65535
|
|
adrp x0, .LANCHOR78
|
|
lsl w1, w20, 10
|
|
mov w2, 1
|
|
ldr x0, [x0, #:lo12:.LANCHOR78]
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
adrp x1, .LANCHOR46
|
|
ubfiz x0, x21, 1, 16
|
|
ldr x2, [x1, #:lo12:.LANCHOR46]
|
|
ldrh w1, [x2, x0]
|
|
add w1, w1, 1
|
|
strh w1, [x2, x0]
|
|
adrp x1, .LANCHOR79
|
|
ldr w0, [x1, #:lo12:.LANCHOR79]
|
|
add w0, w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR79]
|
|
.L286:
|
|
add x0, x19, :lo12:.LANCHOR37
|
|
ldrh w1, [x0, 6]
|
|
add w1, w1, 1
|
|
strh w1, [x0, 6]
|
|
ldrh w1, [x0, 4]
|
|
add x2, x0, x1, sxtw 1
|
|
add w1, w1, 1
|
|
and w1, w1, 1023
|
|
strh w1, [x0, 4]
|
|
strh w20, [x2, 8]
|
|
.L284:
|
|
ldp x19, x20, [sp, 16]
|
|
ldr x21, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
|
|
.section .text.FtlFreeSysBlkQueueOut,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueOut
|
|
.type FtlFreeSysBlkQueueOut, %function
|
|
FtlFreeSysBlkQueueOut:
|
|
adrp x0, .LANCHOR37
|
|
add x1, x0, :lo12:.LANCHOR37
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
ldrh w2, [x1, 6]
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
cbz w2, .L298
|
|
ldrh w0, [x1, 2]
|
|
sub w2, w2, #1
|
|
strh w2, [x1, 6]
|
|
mov w2, 1
|
|
add x3, x1, x0, sxtw 1
|
|
add w0, w0, 1
|
|
and w0, w0, 1023
|
|
strh w0, [x1, 2]
|
|
adrp x0, .LANCHOR78
|
|
ldrh w20, [x3, 8]
|
|
ldr x0, [x0, #:lo12:.LANCHOR78]
|
|
lsl w1, w20, 10
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
adrp x1, .LANCHOR79
|
|
ldr w0, [x1, #:lo12:.LANCHOR79]
|
|
add w0, w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR79]
|
|
.L295:
|
|
sub w0, w20, #1
|
|
mov w1, 65533
|
|
cmp w1, w0, uxth
|
|
bcs .L296
|
|
add x0, x19, :lo12:.LANCHOR37
|
|
mov w1, w20
|
|
ldrh w2, [x0, 6]
|
|
adrp x0, .LC9
|
|
add x0, x0, :lo12:.LC9
|
|
bl printf
|
|
.L297:
|
|
b .L297
|
|
.L298:
|
|
mov w20, 65535
|
|
b .L295
|
|
.L296:
|
|
mov w0, w20
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
|
|
.section .text.ftl_map_blk_alloc_new_blk,"ax",@progbits
|
|
.align 2
|
|
.global ftl_map_blk_alloc_new_blk
|
|
.type ftl_map_blk_alloc_new_blk, %function
|
|
ftl_map_blk_alloc_new_blk:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w1, [x0, 10]
|
|
mov w20, 0
|
|
ldr x0, [x0, 16]
|
|
str x21, [sp, 32]
|
|
.L301:
|
|
cmp w20, w1
|
|
beq .L305
|
|
mov x21, x0
|
|
ldrh w2, [x0], 2
|
|
cbnz w2, .L302
|
|
bl FtlFreeSysBlkQueueOut
|
|
and w1, w0, 65535
|
|
strh w0, [x21]
|
|
sub w2, w1, #1
|
|
mov w0, 65533
|
|
cmp w0, w2, uxth
|
|
bcs .L303
|
|
adrp x0, .LANCHOR37+6
|
|
ldrh w2, [x0, #:lo12:.LANCHOR37+6]
|
|
adrp x0, .LC10
|
|
add x0, x0, :lo12:.LC10
|
|
bl printf
|
|
.L304:
|
|
b .L304
|
|
.L303:
|
|
ldr w0, [x19, 48]
|
|
strh wzr, [x19, 2]
|
|
add w0, w0, 1
|
|
str w0, [x19, 48]
|
|
ldrh w0, [x19, 8]
|
|
strh w20, [x19]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 8]
|
|
.L305:
|
|
ldrh w0, [x19, 10]
|
|
cmp w0, w20
|
|
bhi .L307
|
|
adrp x1, .LANCHOR80
|
|
adrp x0, .LC1
|
|
mov w2, 578
|
|
add x1, x1, :lo12:.LANCHOR80
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L307:
|
|
mov w0, 0
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L302:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L301
|
|
.size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
|
|
.section .text.ftl_memset,"ax",@progbits
|
|
.align 2
|
|
.global ftl_memset
|
|
.type ftl_memset, %function
|
|
ftl_memset:
|
|
uxtw x2, w2
|
|
b memset
|
|
.size ftl_memset, .-ftl_memset
|
|
.section .text.FtlMemInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlMemInit
|
|
.type FtlMemInit, %function
|
|
FtlMemInit:
|
|
stp x29, x30, [sp, -64]!
|
|
adrp x0, .LANCHOR81
|
|
mov w1, 65535
|
|
add x29, sp, 0
|
|
str wzr, [x0, #:lo12:.LANCHOR81]
|
|
adrp x0, .LANCHOR82
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR20
|
|
str wzr, [x0, #:lo12:.LANCHOR82]
|
|
adrp x0, .LANCHOR83
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR2
|
|
str wzr, [x0, #:lo12:.LANCHOR83]
|
|
adrp x0, .LANCHOR84
|
|
str x23, [sp, 48]
|
|
adrp x22, .LANCHOR22
|
|
str wzr, [x0, #:lo12:.LANCHOR84]
|
|
adrp x0, .LANCHOR85
|
|
adrp x23, .LANCHOR23
|
|
str wzr, [x0, #:lo12:.LANCHOR85]
|
|
adrp x0, .LANCHOR86
|
|
str wzr, [x0, #:lo12:.LANCHOR86]
|
|
adrp x0, .LANCHOR87
|
|
str wzr, [x0, #:lo12:.LANCHOR87]
|
|
adrp x0, .LANCHOR88
|
|
str wzr, [x0, #:lo12:.LANCHOR88]
|
|
adrp x0, .LANCHOR89
|
|
str wzr, [x0, #:lo12:.LANCHOR89]
|
|
adrp x0, .LANCHOR90
|
|
str wzr, [x0, #:lo12:.LANCHOR90]
|
|
adrp x0, .LANCHOR79
|
|
str wzr, [x0, #:lo12:.LANCHOR79]
|
|
adrp x0, .LANCHOR91
|
|
str wzr, [x0, #:lo12:.LANCHOR91]
|
|
adrp x0, .LANCHOR92
|
|
str wzr, [x0, #:lo12:.LANCHOR92]
|
|
adrp x0, .LANCHOR93
|
|
str wzr, [x0, #:lo12:.LANCHOR93]
|
|
adrp x0, .LANCHOR94
|
|
str wzr, [x0, #:lo12:.LANCHOR94]
|
|
adrp x0, .LANCHOR95
|
|
str w1, [x0, #:lo12:.LANCHOR95]
|
|
adrp x0, .LANCHOR96
|
|
adrp x1, .LANCHOR71
|
|
str wzr, [x0, #:lo12:.LANCHOR96]
|
|
adrp x0, .LANCHOR97
|
|
str wzr, [x0, #:lo12:.LANCHOR97]
|
|
adrp x0, .LANCHOR98
|
|
str wzr, [x0, #:lo12:.LANCHOR98]
|
|
mov w0, -1
|
|
strh w0, [x1, #:lo12:.LANCHOR71]
|
|
adrp x1, .LANCHOR72
|
|
strh w0, [x1, #:lo12:.LANCHOR72]
|
|
adrp x0, .LANCHOR99
|
|
mov w1, 32
|
|
strh w1, [x0, #:lo12:.LANCHOR99]
|
|
adrp x0, .LANCHOR100
|
|
mov w1, 128
|
|
strh w1, [x0, #:lo12:.LANCHOR100]
|
|
adrp x0, .LANCHOR101
|
|
strh wzr, [x0, #:lo12:.LANCHOR101]
|
|
adrp x0, .LANCHOR73
|
|
strh wzr, [x0, #:lo12:.LANCHOR73]
|
|
adrp x0, .LANCHOR75
|
|
strh wzr, [x0, #:lo12:.LANCHOR75]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR20]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR68
|
|
str x0, [x1, #:lo12:.LANCHOR68]
|
|
mov w0, 12
|
|
ldrh w1, [x19, #:lo12:.LANCHOR20]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
ldrh w19, [x21, #:lo12:.LANCHOR2]
|
|
adrp x1, .LANCHOR70
|
|
lsl w20, w19, 5
|
|
lsl w19, w19, 7
|
|
str x0, [x1, #:lo12:.LANCHOR70]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR102
|
|
str x0, [x1, #:lo12:.LANCHOR102]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR103
|
|
str x0, [x1, #:lo12:.LANCHOR103]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR104
|
|
str x0, [x1, #:lo12:.LANCHOR104]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR78
|
|
str x0, [x1, #:lo12:.LANCHOR78]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x20, .LANCHOR66
|
|
adrp x1, .LANCHOR65
|
|
ldrh w19, [x22, #:lo12:.LANCHOR22]
|
|
str x0, [x1, #:lo12:.LANCHOR65]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR2]
|
|
lsl w0, w0, 1
|
|
add w0, w0, 1
|
|
str w0, [x20, #:lo12:.LANCHOR66]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR105
|
|
str x0, [x1, #:lo12:.LANCHOR105]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR106
|
|
str x0, [x1, #:lo12:.LANCHOR106]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR107
|
|
str x0, [x1, #:lo12:.LANCHOR107]
|
|
ldr w0, [x20, #:lo12:.LANCHOR66]
|
|
mul w0, w19, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR63
|
|
str x0, [x1, #:lo12:.LANCHOR63]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR108
|
|
str x0, [x1, #:lo12:.LANCHOR108]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR109
|
|
str x0, [x1, #:lo12:.LANCHOR109]
|
|
mov w0, 24
|
|
ldr w1, [x20, #:lo12:.LANCHOR66]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR62
|
|
str x0, [x1, #:lo12:.LANCHOR62]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR110
|
|
str x0, [x1, #:lo12:.LANCHOR110]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR111
|
|
str x0, [x1, #:lo12:.LANCHOR111]
|
|
adrp x0, .LANCHOR11
|
|
ldrh w0, [x0, #:lo12:.LANCHOR11]
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR112
|
|
ldrh w19, [x23, #:lo12:.LANCHOR23]
|
|
str x0, [x1, #:lo12:.LANCHOR112]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR2]
|
|
adrp x21, .LANCHOR29
|
|
mul w19, w19, w0
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR113
|
|
str x0, [x1, #:lo12:.LANCHOR113]
|
|
lsl w0, w19, 2
|
|
bl ftl_malloc
|
|
adrp x19, .LANCHOR115
|
|
adrp x1, .LANCHOR114
|
|
str x0, [x1, #:lo12:.LANCHOR114]
|
|
ldrh w1, [x23, #:lo12:.LANCHOR23]
|
|
ldr w0, [x20, #:lo12:.LANCHOR66]
|
|
adrp x20, .LANCHOR5
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR64
|
|
str x0, [x1, #:lo12:.LANCHOR64]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR5]
|
|
ubfiz w0, w0, 1, 15
|
|
strh w0, [x19, #:lo12:.LANCHOR115]
|
|
and w0, w0, 65534
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR116
|
|
str x0, [x1, #:lo12:.LANCHOR116]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR115]
|
|
add x0, x0, 547
|
|
lsr x0, x0, 9
|
|
strh w0, [x19, #:lo12:.LANCHOR115]
|
|
lsl w0, w0, 9
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR117
|
|
str x0, [x1, #:lo12:.LANCHOR117]
|
|
adrp x1, .LANCHOR46
|
|
add x0, x0, 32
|
|
str x0, [x1, #:lo12:.LANCHOR46]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR5]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
ldr w19, [x21, #:lo12:.LANCHOR29]
|
|
adrp x1, .LANCHOR41
|
|
str x0, [x1, #:lo12:.LANCHOR41]
|
|
lsl w19, w19, 1
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR118
|
|
str x0, [x1, #:lo12:.LANCHOR118]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x19, .LANCHOR26
|
|
adrp x1, .LANCHOR119
|
|
str x0, [x1, #:lo12:.LANCHOR119]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR26]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR35
|
|
str x0, [x1, #:lo12:.LANCHOR35]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR26]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR120
|
|
str x0, [x1, #:lo12:.LANCHOR120]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR26]
|
|
adrp x19, .LANCHOR27
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR121
|
|
str x0, [x1, #:lo12:.LANCHOR121]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR27]
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
ldrh w2, [x19, #:lo12:.LANCHOR27]
|
|
adrp x1, .LANCHOR122
|
|
adrp x19, .LANCHOR32
|
|
str x0, [x1, #:lo12:.LANCHOR122]
|
|
mov w1, 0
|
|
lsl w2, w2, 2
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR31
|
|
ldrh w0, [x0, #:lo12:.LANCHOR31]
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR123
|
|
str x0, [x1, #:lo12:.LANCHOR123]
|
|
ldr w0, [x21, #:lo12:.LANCHOR29]
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR124
|
|
str x0, [x1, #:lo12:.LANCHOR124]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR32]
|
|
lsl w0, w0, 4
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR54
|
|
str x0, [x1, #:lo12:.LANCHOR54]
|
|
ldrh w1, [x19, #:lo12:.LANCHOR32]
|
|
adrp x19, .LANCHOR126
|
|
ldrh w0, [x22, #:lo12:.LANCHOR22]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR125
|
|
str x0, [x1, #:lo12:.LANCHOR125]
|
|
mov w0, 6
|
|
ldrh w1, [x20, #:lo12:.LANCHOR5]
|
|
adrp x20, .LANCHOR9
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR39
|
|
str x0, [x1, #:lo12:.LANCHOR39]
|
|
adrp x0, .LANCHOR16
|
|
ldrh w1, [x20, #:lo12:.LANCHOR9]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR16]
|
|
add w0, w0, 31
|
|
asr w0, w0, 5
|
|
strh w0, [x19, #:lo12:.LANCHOR126]
|
|
mul w0, w1, w0
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR36
|
|
ldrh w5, [x19, #:lo12:.LANCHOR126]
|
|
add x2, x1, :lo12:.LANCHOR36
|
|
ldrh w7, [x20, #:lo12:.LANCHOR9]
|
|
add x6, x2, 40
|
|
mov w3, w5
|
|
str x0, [x2, 32]
|
|
mov x0, 1
|
|
.L311:
|
|
cmp w0, w7
|
|
bcc .L312
|
|
mov w2, 8
|
|
sub w2, w2, w0
|
|
add x2, x2, 1
|
|
add x1, x1, :lo12:.LANCHOR36
|
|
mov x3, 0
|
|
.L313:
|
|
add x3, x3, 1
|
|
cmp x2, x3
|
|
bne .L314
|
|
mov w0, 0
|
|
ldr x23, [sp, 48]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L312:
|
|
ldr x4, [x2, 32]
|
|
add w0, w0, 1
|
|
add x4, x4, x3, uxtw 2
|
|
add w3, w3, w5
|
|
str x4, [x6], 8
|
|
b .L311
|
|
.L314:
|
|
add x4, x0, x3
|
|
add x4, x1, x4, lsl 3
|
|
str xzr, [x4, 24]
|
|
b .L313
|
|
.size FtlMemInit, .-FtlMemInit
|
|
.section .text.FtlBbt2Bitmap,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbt2Bitmap
|
|
.type FtlBbt2Bitmap, %function
|
|
FtlBbt2Bitmap:
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x0
|
|
adrp x0, .LANCHOR126
|
|
stp x23, x24, [sp, 48]
|
|
adrp x21, .LANCHOR16
|
|
adrp x23, .LANCHOR127
|
|
ldrh w2, [x0, #:lo12:.LANCHOR126]
|
|
add x21, x21, :lo12:.LANCHOR16
|
|
add x23, x23, :lo12:.LANCHOR127
|
|
stp x19, x20, [sp, 16]
|
|
mov w24, 65535
|
|
mov x19, 0
|
|
mov x20, x1
|
|
lsl w2, w2, 2
|
|
mov w1, 0
|
|
mov x0, x20
|
|
bl ftl_memset
|
|
.L319:
|
|
ldrh w0, [x22, x19]
|
|
cmp w0, w24
|
|
beq .L316
|
|
ldrh w1, [x21]
|
|
cmp w1, w0
|
|
bhi .L318
|
|
adrp x0, .LC1
|
|
mov w2, 74
|
|
mov x1, x23
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L318:
|
|
ldrh w2, [x22, x19]
|
|
mov w1, 1
|
|
add x19, x19, 2
|
|
cmp x19, 1024
|
|
ubfx x0, x2, 5, 11
|
|
lsl w2, w1, w2
|
|
lsl x0, x0, 2
|
|
ldr w1, [x20, x0]
|
|
orr w1, w1, w2
|
|
str w1, [x20, x0]
|
|
bne .L319
|
|
.L316:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.size FtlBbt2Bitmap, .-FtlBbt2Bitmap
|
|
.section .text.FtlBbtMemInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbtMemInit
|
|
.type FtlBbtMemInit, %function
|
|
FtlBbtMemInit:
|
|
adrp x1, .LANCHOR36
|
|
add x0, x1, :lo12:.LANCHOR36
|
|
mov w2, -1
|
|
add x0, x0, 12
|
|
strh w2, [x1, #:lo12:.LANCHOR36]
|
|
mov w2, 16
|
|
strh wzr, [x0, -6]
|
|
mov w1, 255
|
|
b ftl_memset
|
|
.size FtlBbtMemInit, .-FtlBbtMemInit
|
|
.section .text.FtlFreeSysBlkQueueInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueInit
|
|
.type FtlFreeSysBlkQueueInit, %function
|
|
FtlFreeSysBlkQueueInit:
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x1, .LANCHOR37
|
|
add x3, x1, :lo12:.LANCHOR37
|
|
mov w2, 2048
|
|
add x29, sp, 0
|
|
strh w0, [x1, #:lo12:.LANCHOR37]
|
|
mov w1, 0
|
|
strh wzr, [x3, 2]
|
|
add x0, x3, 8
|
|
strh wzr, [x3, 4]
|
|
strh wzr, [x3, 6]
|
|
bl ftl_memset
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
|
|
.section .text.ftl_free_no_use_map_blk,"ax",@progbits
|
|
.align 2
|
|
.global ftl_free_no_use_map_blk
|
|
.type ftl_free_no_use_map_blk, %function
|
|
ftl_free_no_use_map_blk:
|
|
stp x29, x30, [sp, -80]!
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w2, [x0, 10]
|
|
stp x21, x22, [sp, 32]
|
|
ldp x21, x20, [x0, 32]
|
|
stp x23, x24, [sp, 48]
|
|
ldr x22, [x0, 16]
|
|
lsl w2, w2, 1
|
|
mov x0, x21
|
|
str x25, [sp, 64]
|
|
bl ftl_memset
|
|
mov w0, 0
|
|
.L327:
|
|
ldrh w1, [x19, 6]
|
|
cmp w1, w0
|
|
bhi .L331
|
|
adrp x0, .LANCHOR19
|
|
mov w23, 0
|
|
mov w20, 0
|
|
ldrh w1, [x0, #:lo12:.LANCHOR19]
|
|
ldrh w0, [x19]
|
|
strh w1, [x21, x0, lsl 1]
|
|
ldrh w24, [x21]
|
|
.L332:
|
|
ldrh w0, [x19, 10]
|
|
cmp w0, w20
|
|
bhi .L336
|
|
mov w0, w23
|
|
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
|
|
.L331:
|
|
ubfiz x1, x0, 2, 16
|
|
ldr w2, [x20, x1]
|
|
mov w1, 0
|
|
ubfx x2, x2, 10, 16
|
|
.L328:
|
|
ldrh w3, [x19, 10]
|
|
cmp w3, w1
|
|
bhi .L330
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
b .L327
|
|
.L330:
|
|
ubfiz x3, x1, 1, 16
|
|
ldrh w4, [x22, x3]
|
|
cmp w4, w2
|
|
bne .L329
|
|
cbz w2, .L329
|
|
ldrh w4, [x21, x3]
|
|
add w4, w4, 1
|
|
strh w4, [x21, x3]
|
|
.L329:
|
|
add w1, w1, 1
|
|
and w1, w1, 65535
|
|
b .L328
|
|
.L336:
|
|
ubfiz x0, x20, 1, 16
|
|
ldrh w1, [x21, x0]
|
|
cmp w24, w1
|
|
bls .L333
|
|
add x25, x22, x0
|
|
ldrh w0, [x22, x0]
|
|
cbnz w0, .L334
|
|
.L335:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L332
|
|
.L333:
|
|
cbnz w1, .L335
|
|
add x25, x22, x0
|
|
ldrh w0, [x22, x0]
|
|
cbz w0, .L335
|
|
.L337:
|
|
mov w1, 1
|
|
bl FtlFreeSysBlkQueueIn
|
|
strh wzr, [x25]
|
|
ldrh w0, [x19, 8]
|
|
sub w0, w0, #1
|
|
strh w0, [x19, 8]
|
|
b .L335
|
|
.L338:
|
|
mov w24, 0
|
|
b .L337
|
|
.L334:
|
|
mov w23, w20
|
|
cbz w1, .L338
|
|
mov w24, w1
|
|
b .L335
|
|
.size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
|
|
.section .text.FtlL2PDataInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlL2PDataInit
|
|
.type FtlL2PDataInit, %function
|
|
FtlL2PDataInit:
|
|
stp x29, x30, [sp, -64]!
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR119
|
|
adrp x20, .LANCHOR29
|
|
stp x21, x22, [sp, 32]
|
|
ldr x0, [x19, #:lo12:.LANCHOR119]
|
|
adrp x22, .LANCHOR22
|
|
ldr w2, [x20, #:lo12:.LANCHOR29]
|
|
adrp x21, .LANCHOR32
|
|
str x23, [sp, 48]
|
|
adrp x23, .LANCHOR125
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldrh w0, [x21, #:lo12:.LANCHOR32]
|
|
mov w1, 255
|
|
ldrh w2, [x22, #:lo12:.LANCHOR22]
|
|
mul w2, w2, w0
|
|
ldr x0, [x23, #:lo12:.LANCHOR125]
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR54
|
|
ldrh w3, [x21, #:lo12:.LANCHOR32]
|
|
ldr x6, [x23, #:lo12:.LANCHOR125]
|
|
mov x1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR54]
|
|
mov w2, -1
|
|
ldrh w5, [x22, #:lo12:.LANCHOR22]
|
|
add x3, x0, x3, lsl 4
|
|
.L348:
|
|
add x4, x1, x5
|
|
cmp x0, x3
|
|
bne .L349
|
|
adrp x1, .LANCHOR128
|
|
add x0, x1, :lo12:.LANCHOR128
|
|
ldp x21, x22, [sp, 32]
|
|
strh w2, [x1, #:lo12:.LANCHOR128]
|
|
ldr w1, [x20, #:lo12:.LANCHOR29]
|
|
strh w1, [x0, 10]
|
|
mov w1, -3902
|
|
strh w1, [x0, 4]
|
|
adrp x1, .LANCHOR129
|
|
ldr x23, [sp, 48]
|
|
strh w2, [x0, 2]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR129]
|
|
strh w1, [x0, 8]
|
|
adrp x1, .LANCHOR31
|
|
ldrh w1, [x1, #:lo12:.LANCHOR31]
|
|
strh w1, [x0, 6]
|
|
adrp x1, .LANCHOR118
|
|
ldr x1, [x1, #:lo12:.LANCHOR118]
|
|
str x1, [x0, 16]
|
|
adrp x1, .LANCHOR124
|
|
ldr x1, [x1, #:lo12:.LANCHOR124]
|
|
str x1, [x0, 24]
|
|
ldr x1, [x19, #:lo12:.LANCHOR119]
|
|
ldp x19, x20, [sp, 16]
|
|
str x1, [x0, 32]
|
|
adrp x1, .LANCHOR123
|
|
ldr x1, [x1, #:lo12:.LANCHOR123]
|
|
str x1, [x0, 40]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L349:
|
|
and x1, x1, -4
|
|
strh w2, [x0]
|
|
add x1, x6, x1
|
|
str wzr, [x0, 4]
|
|
str x1, [x0, 8]
|
|
add x0, x0, 16
|
|
mov x1, x4
|
|
b .L348
|
|
.size FtlL2PDataInit, .-FtlL2PDataInit
|
|
.section .text.FtlVariablesInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlVariablesInit
|
|
.type FtlVariablesInit, %function
|
|
FtlVariablesInit:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR130
|
|
mov w1, -1
|
|
add x29, sp, 0
|
|
strh w1, [x0, #:lo12:.LANCHOR130]
|
|
adrp x0, .LANCHOR131
|
|
mov w1, -1
|
|
str x19, [sp, 16]
|
|
str wzr, [x0, #:lo12:.LANCHOR131]
|
|
adrp x0, .LANCHOR132
|
|
adrp x19, .LANCHOR5
|
|
str wzr, [x0, #:lo12:.LANCHOR132]
|
|
adrp x0, .LANCHOR133
|
|
str w1, [x0, #:lo12:.LANCHOR133]
|
|
adrp x0, .LANCHOR34
|
|
mov w1, 0
|
|
strh wzr, [x0, #:lo12:.LANCHOR34]
|
|
adrp x0, .LANCHOR26
|
|
ldrh w2, [x0, #:lo12:.LANCHOR26]
|
|
adrp x0, .LANCHOR35
|
|
ldr x0, [x0, #:lo12:.LANCHOR35]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR46
|
|
ldrh w2, [x19, #:lo12:.LANCHOR5]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR46]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR116
|
|
ldrh w2, [x19, #:lo12:.LANCHOR5]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR116]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
mov w2, 48
|
|
mov w1, 0
|
|
adrp x0, .LANCHOR38
|
|
add x0, x0, :lo12:.LANCHOR38
|
|
bl ftl_memset
|
|
mov w2, 512
|
|
mov w1, 0
|
|
adrp x0, .LANCHOR134
|
|
add x0, x0, :lo12:.LANCHOR134
|
|
bl ftl_memset
|
|
bl FtlGcBufInit
|
|
bl FtlL2PDataInit
|
|
ldr x19, [sp, 16]
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FtlVariablesInit, .-FtlVariablesInit
|
|
.section .text.SupperBlkListInit,"ax",@progbits
|
|
.align 2
|
|
.global SupperBlkListInit
|
|
.type SupperBlkListInit, %function
|
|
SupperBlkListInit:
|
|
stp x29, x30, [sp, -96]!
|
|
adrp x0, .LANCHOR5
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
ldrh w2, [x0, #:lo12:.LANCHOR5]
|
|
mov w0, 6
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR39
|
|
stp x19, x20, [sp, 16]
|
|
adrp x23, .LANCHOR43
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR47
|
|
mul w2, w2, w0
|
|
ldr x0, [x24, #:lo12:.LANCHOR39]
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR4
|
|
str x27, [sp, 80]
|
|
adrp x26, .LANCHOR12
|
|
add x25, x25, :lo12:.LANCHOR4
|
|
add x26, x26, :lo12:.LANCHOR12
|
|
bl ftl_memset
|
|
mov w21, 0
|
|
adrp x0, .LANCHOR45
|
|
mov w20, 0
|
|
mov w19, 0
|
|
strh wzr, [x23, #:lo12:.LANCHOR43]
|
|
str xzr, [x0, #:lo12:.LANCHOR45]
|
|
adrp x0, .LANCHOR40
|
|
strh wzr, [x22, #:lo12:.LANCHOR47]
|
|
adrp x27, .LANCHOR2
|
|
str xzr, [x0, #:lo12:.LANCHOR40]
|
|
adrp x0, .LANCHOR42
|
|
str xzr, [x0, #:lo12:.LANCHOR42]
|
|
.L354:
|
|
ldrh w0, [x25]
|
|
cmp w19, w0
|
|
bcs .L361
|
|
adrp x0, .LANCHOR18
|
|
ldrh w8, [x27, #:lo12:.LANCHOR2]
|
|
mov x6, 0
|
|
mov w5, 0
|
|
ldrh w7, [x0, #:lo12:.LANCHOR18]
|
|
b .L362
|
|
.L356:
|
|
ldrb w0, [x26, x6]
|
|
mov w1, w19
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L355
|
|
add w5, w5, w7
|
|
and w5, w5, 65535
|
|
.L355:
|
|
add x6, x6, 1
|
|
.L362:
|
|
cmp w8, w6, uxth
|
|
bhi .L356
|
|
cbz w5, .L357
|
|
mov w0, 32768
|
|
sdiv w5, w0, w5
|
|
.L358:
|
|
ldr x1, [x24, #:lo12:.LANCHOR39]
|
|
mov w0, 6
|
|
umaddl x0, w19, w0, x1
|
|
strh w5, [x0, 4]
|
|
adrp x0, .LANCHOR50
|
|
ldrh w0, [x0, #:lo12:.LANCHOR50]
|
|
cmp w0, w19
|
|
beq .L359
|
|
adrp x0, .LANCHOR51
|
|
ldrh w0, [x0, #:lo12:.LANCHOR51]
|
|
cmp w0, w19
|
|
beq .L359
|
|
adrp x0, .LANCHOR52
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w19
|
|
beq .L359
|
|
adrp x1, .LANCHOR41
|
|
ubfiz x0, x19, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x1, x0]
|
|
cbnz w0, .L360
|
|
add w21, w21, 1
|
|
mov w0, w19
|
|
and w21, w21, 65535
|
|
bl INSERT_FREE_LIST
|
|
.L359:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L354
|
|
.L357:
|
|
adrp x1, .LANCHOR41
|
|
ubfiz x0, x19, 1, 16
|
|
mov w2, -1
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
strh w2, [x1, x0]
|
|
b .L358
|
|
.L360:
|
|
add w20, w20, 1
|
|
mov w0, w19
|
|
and w20, w20, 65535
|
|
bl INSERT_DATA_LIST
|
|
b .L359
|
|
.L361:
|
|
strh w20, [x23, #:lo12:.LANCHOR43]
|
|
add w20, w20, w21
|
|
strh w21, [x22, #:lo12:.LANCHOR47]
|
|
cmp w20, w0
|
|
ble .L363
|
|
adrp x1, .LANCHOR135
|
|
adrp x0, .LC1
|
|
mov w2, 2219
|
|
add x1, x1, :lo12:.LANCHOR135
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L363:
|
|
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 SupperBlkListInit, .-SupperBlkListInit
|
|
.section .text.FtlGcPageVarInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcPageVarInit
|
|
.type FtlGcPageVarInit, %function
|
|
FtlGcPageVarInit:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR67
|
|
mov w1, 255
|
|
add x29, sp, 0
|
|
strh wzr, [x0, #:lo12:.LANCHOR67]
|
|
adrp x0, .LANCHOR69
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR20
|
|
strh wzr, [x0, #:lo12:.LANCHOR69]
|
|
adrp x0, .LANCHOR68
|
|
ldrh w2, [x19, #:lo12:.LANCHOR20]
|
|
ldr x0, [x0, #:lo12:.LANCHOR68]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldrh w2, [x19, #:lo12:.LANCHOR20]
|
|
mov w0, 12
|
|
mov w1, 255
|
|
mul w2, w2, w0
|
|
adrp x0, .LANCHOR70
|
|
ldr x0, [x0, #:lo12:.LANCHOR70]
|
|
bl ftl_memset
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
b FtlGcBufInit
|
|
.size FtlGcPageVarInit, .-FtlGcPageVarInit
|
|
.section .text.FlashGetBadBlockList,"ax",@progbits
|
|
.align 2
|
|
.global FlashGetBadBlockList
|
|
.type FlashGetBadBlockList, %function
|
|
FlashGetBadBlockList:
|
|
stp x29, x30, [sp, -32]!
|
|
mov w2, 256
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
mov w20, w1
|
|
mov w1, 255
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR77
|
|
mov w1, w20
|
|
ldr x2, [x0, #:lo12:.LANCHOR77]
|
|
mov x0, x19
|
|
blr x2
|
|
and w0, w0, 65535
|
|
cmp w0, 50
|
|
bls .L368
|
|
mov w2, 256
|
|
mov w1, 255
|
|
mov x0, x19
|
|
bl ftl_memset
|
|
mov w0, 0
|
|
.L368:
|
|
adrp x1, .LANCHOR0+14
|
|
ldrh w1, [x1, #:lo12:.LANCHOR0+14]
|
|
cmp w1, 4
|
|
bne .L372
|
|
mov x1, 0
|
|
.L370:
|
|
cmp w0, w1, uxth
|
|
bhi .L371
|
|
.L372:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L371:
|
|
ldrh w2, [x19, x1, lsl 1]
|
|
lsr w2, w2, 1
|
|
strh w2, [x19, x1, lsl 1]
|
|
add x1, x1, 1
|
|
b .L370
|
|
.size FlashGetBadBlockList, .-FlashGetBadBlockList
|
|
.section .text.ftl_memcpy,"ax",@progbits
|
|
.align 2
|
|
.global ftl_memcpy
|
|
.type ftl_memcpy, %function
|
|
ftl_memcpy:
|
|
uxtw x2, w2
|
|
b memcpy
|
|
.size ftl_memcpy, .-ftl_memcpy
|
|
.section .text.FlashReadPages,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadPages
|
|
.type FlashReadPages, %function
|
|
FlashReadPages:
|
|
stp x29, x30, [sp, -112]!
|
|
ubfiz x1, x1, 5, 32
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR0
|
|
add x2, x21, :lo12:.LANCHOR0
|
|
str x27, [sp, 80]
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR136
|
|
stp x19, x20, [sp, 16]
|
|
add x23, x0, x1
|
|
ldrh w27, [x2, 12]
|
|
mov x19, x0
|
|
stp x25, x26, [sp, 64]
|
|
add x24, x24, :lo12:.LANCHOR136
|
|
adrp x25, .LC1
|
|
add x25, x25, :lo12:.LC1
|
|
.L376:
|
|
cmp x23, x19
|
|
bne .L389
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
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
|
|
.L389:
|
|
ldr x0, [x19, 8]
|
|
cbz x0, .L377
|
|
ldr x0, [x19, 16]
|
|
cbnz x0, .L378
|
|
.L377:
|
|
mov w2, 90
|
|
mov x1, x24
|
|
mov x0, x25
|
|
bl printf
|
|
.L378:
|
|
ldr w0, [x19, 4]
|
|
add x2, x29, 104
|
|
add x1, x29, 108
|
|
bl l2p_addr_tran.isra.0
|
|
ldr w0, [x29, 104]
|
|
cmp w0, 3
|
|
bls .L379
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L380:
|
|
add x19, x19, 32
|
|
b .L376
|
|
.L379:
|
|
ldr x20, [x19, 8]
|
|
adrp x26, .LANCHOR110
|
|
tst x20, 63
|
|
beq .L381
|
|
ldr x20, [x26, #:lo12:.LANCHOR110]
|
|
.L381:
|
|
adrp x22, .LANCHOR77
|
|
add x22, x22, :lo12:.LANCHOR77
|
|
ldr w1, [x29, 108]
|
|
mov x2, x20
|
|
ldr x3, [x19, 16]
|
|
ldr x4, [x22, 24]
|
|
blr x4
|
|
str w0, [x19]
|
|
add x0, x21, :lo12:.LANCHOR0
|
|
ldrh w0, [x0, 14]
|
|
cmp w0, 4
|
|
bne .L383
|
|
ldrb w0, [x29, 104]
|
|
add x2, x20, 2048
|
|
ldr x4, [x22, 24]
|
|
ldr w1, [x29, 108]
|
|
ldr x3, [x19, 16]
|
|
add w1, w27, w1
|
|
add x3, x3, 8
|
|
blr x4
|
|
cmn w0, #1
|
|
beq .L384
|
|
ldr x1, [x19, 16]
|
|
ldr w2, [x1, 12]
|
|
cmn w2, #1
|
|
bne .L385
|
|
ldr w2, [x1, 8]
|
|
cmn w2, #1
|
|
bne .L385
|
|
ldr w1, [x1]
|
|
cmn w1, #1
|
|
beq .L385
|
|
.L384:
|
|
mov w1, -1
|
|
str w1, [x19]
|
|
.L385:
|
|
ldr w1, [x19]
|
|
cmn w1, #1
|
|
beq .L386
|
|
cmp w0, 256
|
|
bne .L386
|
|
str w0, [x19]
|
|
.L386:
|
|
ldr w3, [x19]
|
|
cmp w3, 256
|
|
ccmn w3, #1, 4, ne
|
|
bne .L383
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC11
|
|
ldr w2, [x29, 108]
|
|
add x0, x0, :lo12:.LC11
|
|
bl printf
|
|
ldr x1, [x19, 8]
|
|
cbz x1, .L388
|
|
mov w3, 4
|
|
adrp x0, .LC12
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC12
|
|
bl rknand_print_hex
|
|
.L388:
|
|
ldr x1, [x19, 16]
|
|
cbz x1, .L383
|
|
mov w3, 4
|
|
adrp x0, .LC13
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC13
|
|
bl rknand_print_hex
|
|
.L383:
|
|
ldr x0, [x26, #:lo12:.LANCHOR110]
|
|
cmp x20, x0
|
|
bne .L380
|
|
ldr x0, [x19, 8]
|
|
cmp x20, x0
|
|
beq .L380
|
|
adrp x1, .LANCHOR11
|
|
ldrh w2, [x1, #:lo12:.LANCHOR11]
|
|
mov x1, x20
|
|
lsl w2, w2, 9
|
|
bl ftl_memcpy
|
|
b .L380
|
|
.size FlashReadPages, .-FlashReadPages
|
|
.section .text.FtlLoadFactoryBbt,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadFactoryBbt
|
|
.type FtlLoadFactoryBbt, %function
|
|
FtlLoadFactoryBbt:
|
|
stp x29, x30, [sp, -112]!
|
|
adrp x2, .LANCHOR105
|
|
adrp x0, .LANCHOR137
|
|
add x1, x0, :lo12:.LANCHOR137
|
|
add x29, sp, 0
|
|
ldr x2, [x2, #:lo12:.LANCHOR105]
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x26, .LANCHOR16
|
|
stp x27, x28, [sp, 80]
|
|
add x28, x26, :lo12:.LANCHOR16
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR36
|
|
stp x23, x24, [sp, 48]
|
|
add x20, x20, :lo12:.LANCHOR36
|
|
str x2, [x1, 8]
|
|
adrp x2, .LANCHOR113
|
|
adrp x23, .LANCHOR9
|
|
add x20, x20, 12
|
|
ldr x25, [x2, #:lo12:.LANCHOR113]
|
|
add x23, x23, :lo12:.LANCHOR9
|
|
mov w21, 0
|
|
mov w27, -1
|
|
str x25, [x1, 16]
|
|
.L416:
|
|
ldrh w0, [x23]
|
|
cmp w21, w0
|
|
bcc .L421
|
|
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
|
|
.L421:
|
|
ldrh w19, [x26, #:lo12:.LANCHOR16]
|
|
add x24, x22, :lo12:.LANCHOR137
|
|
strh w27, [x20]
|
|
mov w3, 61664
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
.L417:
|
|
ldrh w0, [x28]
|
|
sub w1, w0, #15
|
|
cmp w1, w19
|
|
bgt .L419
|
|
madd w0, w0, w21, w19
|
|
mov w2, 1
|
|
str w3, [x29, 108]
|
|
mov w1, w2
|
|
lsl w0, w0, 10
|
|
str w0, [x24, 4]
|
|
mov x0, x24
|
|
bl FlashReadPages
|
|
ldr w0, [x24]
|
|
ldr w3, [x29, 108]
|
|
cmn w0, #1
|
|
beq .L418
|
|
ldrh w0, [x25]
|
|
cmp w0, w3
|
|
bne .L418
|
|
strh w19, [x20]
|
|
.L419:
|
|
add w21, w21, 1
|
|
add x20, x20, 2
|
|
b .L416
|
|
.L418:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L417
|
|
.size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
|
|
.section .text.FtlGetLastWrittenPage,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetLastWrittenPage
|
|
.type FtlGetLastWrittenPage, %function
|
|
FtlGetLastWrittenPage:
|
|
stp x29, x30, [sp, -160]!
|
|
cmp w1, 1
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
mov w23, w1
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
bne .L427
|
|
adrp x1, .LANCHOR19
|
|
ldrh w19, [x1, #:lo12:.LANCHOR19]
|
|
.L428:
|
|
adrp x1, .LANCHOR111
|
|
sub w19, w19, #1
|
|
sxth w19, w19
|
|
lsl w21, w0, 10
|
|
ldr x1, [x1, #:lo12:.LANCHOR111]
|
|
orr w0, w19, w21
|
|
str x1, [x29, 72]
|
|
add x1, x29, 96
|
|
str w0, [x29, 68]
|
|
mov w2, w23
|
|
str x1, [x29, 80]
|
|
add x0, x29, 64
|
|
mov w1, 1
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 96]
|
|
cmn w0, #1
|
|
bne .L429
|
|
mov w22, 0
|
|
mov w24, 2
|
|
.L430:
|
|
cmp w22, w19
|
|
ble .L433
|
|
.L429:
|
|
mov w0, w19
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 160
|
|
ret
|
|
.L427:
|
|
adrp x1, .LANCHOR18
|
|
ldrh w19, [x1, #:lo12:.LANCHOR18]
|
|
b .L428
|
|
.L433:
|
|
add w20, w22, w19
|
|
mov w2, w23
|
|
mov w1, 1
|
|
sdiv w20, w20, w24
|
|
sxth w0, w20
|
|
orr w0, w0, w21
|
|
str w0, [x29, 68]
|
|
add x0, x29, 64
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 96]
|
|
cmn w0, #1
|
|
bne .L431
|
|
ldr w0, [x29, 100]
|
|
cmn w0, #1
|
|
bne .L431
|
|
ldr w0, [x29, 64]
|
|
cmn w0, #1
|
|
beq .L431
|
|
sub w19, w20, #1
|
|
sxth w19, w19
|
|
b .L430
|
|
.L431:
|
|
add w20, w20, 1
|
|
sxth w22, w20
|
|
b .L430
|
|
.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
|
|
.section .text.FtlScanSysBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlScanSysBlk
|
|
.type FtlScanSysBlk, %function
|
|
FtlScanSysBlk:
|
|
stp x29, x30, [sp, -176]!
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR124
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR29
|
|
ldr x0, [x25, #:lo12:.LANCHOR124]
|
|
adrp x22, .LANCHOR121
|
|
ldr w2, [x21, #:lo12:.LANCHOR29]
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR129
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR34
|
|
stp x27, x28, [sp, 80]
|
|
adrp x27, .LANCHOR118
|
|
lsl w2, w2, 2
|
|
strh wzr, [x20, #:lo12:.LANCHOR129]
|
|
strh wzr, [x23, #:lo12:.LANCHOR34]
|
|
bl ftl_memset
|
|
ldr x0, [x27, #:lo12:.LANCHOR118]
|
|
mov w1, 0
|
|
ldr w2, [x21, #:lo12:.LANCHOR29]
|
|
adrp x19, .LANCHOR26
|
|
adrp x28, .LANCHOR35
|
|
adrp x24, .LANCHOR138
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldr x0, [x22, #:lo12:.LANCHOR121]
|
|
mov w1, 0
|
|
ldrh w2, [x19, #:lo12:.LANCHOR26]
|
|
lsl w2, w2, 2
|
|
bl ftl_memset
|
|
ldr x0, [x28, #:lo12:.LANCHOR35]
|
|
mov w1, 0
|
|
ldrh w2, [x19, #:lo12:.LANCHOR26]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
mov w2, 16
|
|
mov w1, 255
|
|
add x0, x24, :lo12:.LANCHOR138
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR4
|
|
stp x22, x25, [x29, 144]
|
|
str x27, [x29, 160]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR4]
|
|
str w0, [x29, 172]
|
|
adrp x0, .LANCHOR5
|
|
add x0, x0, :lo12:.LANCHOR5
|
|
str x0, [x29, 120]
|
|
adrp x0, .LANCHOR81
|
|
add x0, x0, :lo12:.LANCHOR81
|
|
str x0, [x29, 112]
|
|
.L439:
|
|
ldr x0, [x29, 120]
|
|
ldr w1, [x29, 172]
|
|
ldrh w0, [x0]
|
|
cmp w0, w1
|
|
bls .L479
|
|
adrp x0, .LANCHOR2
|
|
adrp x25, .LANCHOR102
|
|
adrp x6, .LANCHOR12
|
|
mov x5, 0
|
|
ldrh w12, [x0, #:lo12:.LANCHOR2]
|
|
adrp x0, .LANCHOR63
|
|
ldr x7, [x25, #:lo12:.LANCHOR102]
|
|
mov w22, 0
|
|
ldr x11, [x0, #:lo12:.LANCHOR63]
|
|
adrp x0, .LANCHOR64
|
|
add x6, x6, :lo12:.LANCHOR12
|
|
ldr x10, [x0, #:lo12:.LANCHOR64]
|
|
adrp x0, .LANCHOR23
|
|
ldrh w8, [x0, #:lo12:.LANCHOR23]
|
|
b .L480
|
|
.L441:
|
|
ldrh w1, [x29, 172]
|
|
ldrb w0, [x6, x5]
|
|
bl V2P_block
|
|
and w4, w0, 65535
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L440
|
|
ubfiz x0, x22, 5, 16
|
|
mul w1, w22, w8
|
|
add x0, x7, x0
|
|
add w22, w22, 1
|
|
and w22, w22, 65535
|
|
lsl w4, w4, 10
|
|
asr w1, w1, 2
|
|
add x1, x10, x1, sxtw 2
|
|
str w4, [x0, 4]
|
|
stp x11, x1, [x0, 8]
|
|
.L440:
|
|
add x5, x5, 1
|
|
.L480:
|
|
cmp w12, w5, uxth
|
|
bhi .L441
|
|
cbnz w22, .L442
|
|
.L478:
|
|
ldr w0, [x29, 172]
|
|
add w26, w0, 1
|
|
and w0, w26, 65535
|
|
str w0, [x29, 172]
|
|
b .L439
|
|
.L442:
|
|
mov w1, w22
|
|
mov w2, 1
|
|
mov x0, x7
|
|
bl FlashReadPages
|
|
ubfiz x0, x22, 5, 16
|
|
mov x22, 0
|
|
str x0, [x29, 128]
|
|
adrp x0, .LANCHOR139
|
|
add x0, x0, :lo12:.LANCHOR139
|
|
str x0, [x29, 136]
|
|
.L477:
|
|
ldr x0, [x25, #:lo12:.LANCHOR102]
|
|
add x1, x0, x22
|
|
ldr w0, [x0, x22]
|
|
ldr w3, [x1, 4]
|
|
cmn w0, #1
|
|
ldr x27, [x1, 16]
|
|
ubfx x26, x3, 10, 16
|
|
bne .L445
|
|
mov w5, 16
|
|
mov w7, 65535
|
|
.L447:
|
|
ldr x0, [x25, #:lo12:.LANCHOR102]
|
|
add x6, x25, :lo12:.LANCHOR102
|
|
mov w2, 1
|
|
str w7, [x29, 100]
|
|
add x0, x0, x22
|
|
str x6, [x29, 104]
|
|
str w5, [x29, 168]
|
|
ldr w1, [x0, 4]
|
|
add w1, w1, 1
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
ldrh w0, [x27]
|
|
ldr w7, [x29, 100]
|
|
ldr w5, [x29, 168]
|
|
cmp w0, w7
|
|
ldr x6, [x29, 104]
|
|
bne .L444
|
|
ldr x0, [x6]
|
|
mov w1, -1
|
|
str w1, [x0, x22]
|
|
ldr x0, [x6]
|
|
ldr w0, [x0, x22]
|
|
cmp w0, w1
|
|
bne .L445
|
|
.L446:
|
|
mov w1, 1
|
|
b .L516
|
|
.L444:
|
|
ldr x0, [x25, #:lo12:.LANCHOR102]
|
|
ldr w0, [x0, x22]
|
|
cmn w0, #1
|
|
bne .L445
|
|
sub w5, w5, #1
|
|
ands w5, w5, 65535
|
|
bne .L447
|
|
b .L446
|
|
.L445:
|
|
adrp x0, .LANCHOR81
|
|
ldr w1, [x0, #:lo12:.LANCHOR81]
|
|
ldr w0, [x27, 4]
|
|
cmn w1, #1
|
|
beq .L448
|
|
cmp w1, w0
|
|
bhi .L449
|
|
.L448:
|
|
cmn w0, #1
|
|
beq .L449
|
|
ldr x2, [x29, 112]
|
|
add w1, w0, 1
|
|
str w1, [x2]
|
|
.L449:
|
|
ldrh w1, [x27]
|
|
mov w2, 61604
|
|
cmp w1, w2
|
|
beq .L451
|
|
bhi .L452
|
|
mov w0, 61574
|
|
cmp w1, w0
|
|
beq .L453
|
|
.L450:
|
|
ldr x0, [x29, 128]
|
|
add x22, x22, 32
|
|
cmp x0, x22
|
|
bne .L477
|
|
b .L478
|
|
.L452:
|
|
mov w0, 61634
|
|
cmp w1, w0
|
|
beq .L454
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L450
|
|
mov w1, 0
|
|
.L516:
|
|
mov w0, w26
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L450
|
|
.L454:
|
|
ldrh w1, [x20, #:lo12:.LANCHOR129]
|
|
ldr w0, [x21, #:lo12:.LANCHOR29]
|
|
cmp w1, w0
|
|
bls .L456
|
|
ldr x1, [x29, 136]
|
|
adrp x0, .LC1
|
|
mov w2, 1232
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L456:
|
|
ldr w6, [x21, #:lo12:.LANCHOR29]
|
|
ldr x3, [x29, 152]
|
|
ldrh w1, [x20, #:lo12:.LANCHOR129]
|
|
and w2, w6, 65535
|
|
sub w0, w2, #1
|
|
sub w2, w2, w1
|
|
sxth x0, w0
|
|
sub w2, w2, #1
|
|
ldr x5, [x3, #:lo12:.LANCHOR124]
|
|
sxth w2, w2
|
|
.L457:
|
|
cmp w0, w2
|
|
bgt .L463
|
|
tbz w0, #31, .L497
|
|
b .L450
|
|
.L463:
|
|
sxtw x8, w0
|
|
ldr w11, [x27, 4]
|
|
lsl x7, x8, 2
|
|
add x10, x5, x7
|
|
ldr w7, [x5, x7]
|
|
cmp w11, w7
|
|
bls .L458
|
|
ldr w2, [x5]
|
|
cbnz w2, .L459
|
|
cmp w6, w1
|
|
beq .L459
|
|
add w1, w1, 1
|
|
strh w1, [x20, #:lo12:.LANCHOR129]
|
|
.L459:
|
|
ldr x1, [x29, 160]
|
|
ldr x6, [x1, #:lo12:.LANCHOR118]
|
|
mov w1, 0
|
|
.L460:
|
|
cmp w1, w0
|
|
bne .L461
|
|
ldr w1, [x27, 4]
|
|
str w1, [x10]
|
|
strh w26, [x6, x8, lsl 1]
|
|
tbnz w0, #31, .L450
|
|
ldrh w1, [x20, #:lo12:.LANCHOR129]
|
|
ldr w2, [x21, #:lo12:.LANCHOR29]
|
|
sub w2, w2, w1
|
|
sub w2, w2, #1
|
|
cmp w0, w2, sxth
|
|
bgt .L450
|
|
.L497:
|
|
add w1, w1, 1
|
|
strh w1, [x20, #:lo12:.LANCHOR129]
|
|
ldr w1, [x27, 4]
|
|
str w1, [x5, x0, lsl 2]
|
|
ldr x1, [x29, 160]
|
|
ldr x1, [x1, #:lo12:.LANCHOR118]
|
|
.L515:
|
|
strh w26, [x1, x0, lsl 1]
|
|
b .L450
|
|
.L461:
|
|
sxtw x2, w1
|
|
add w1, w1, 1
|
|
lsl x7, x2, 2
|
|
lsl x2, x2, 1
|
|
add x11, x5, x7
|
|
sxth w1, w1
|
|
ldr w11, [x11, 4]
|
|
str w11, [x5, x7]
|
|
add x7, x6, x2
|
|
ldrh w7, [x7, 2]
|
|
strh w7, [x6, x2]
|
|
b .L460
|
|
.L458:
|
|
sub w0, w0, #1
|
|
sxth x0, w0
|
|
b .L457
|
|
.L453:
|
|
ldrh w1, [x23, #:lo12:.LANCHOR34]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR26]
|
|
cmp w1, w0
|
|
bls .L466
|
|
ldr x1, [x29, 136]
|
|
adrp x0, .LC1
|
|
mov w2, 1273
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L466:
|
|
ldrh w6, [x19, #:lo12:.LANCHOR26]
|
|
ldrh w2, [x23, #:lo12:.LANCHOR34]
|
|
sub w1, w6, #1
|
|
sxth x0, w1
|
|
sub w5, w1, w2
|
|
ldr x1, [x29, 144]
|
|
ldr x1, [x1, #:lo12:.LANCHOR121]
|
|
.L467:
|
|
cmp w0, w5
|
|
ble .L472
|
|
sxtw x7, w0
|
|
ldr w11, [x27, 4]
|
|
lsl x8, x7, 2
|
|
add x10, x1, x8
|
|
ldr w8, [x1, x8]
|
|
cmp w11, w8
|
|
bls .L468
|
|
ldr w5, [x1]
|
|
cbnz w5, .L469
|
|
cmp w6, w2
|
|
beq .L469
|
|
add w2, w2, 1
|
|
strh w2, [x23, #:lo12:.LANCHOR34]
|
|
.L469:
|
|
ldr x6, [x28, #:lo12:.LANCHOR35]
|
|
mov w2, 0
|
|
.L470:
|
|
cmp w2, w0
|
|
bne .L471
|
|
ldr w2, [x27, 4]
|
|
str w2, [x10]
|
|
strh w26, [x6, x7, lsl 1]
|
|
.L472:
|
|
tbnz w0, #31, .L450
|
|
ldrh w2, [x19, #:lo12:.LANCHOR26]
|
|
ldrh w5, [x23, #:lo12:.LANCHOR34]
|
|
sub w2, w2, #1
|
|
sub w2, w2, w5
|
|
cmp w0, w2, sxth
|
|
bgt .L450
|
|
add w5, w5, 1
|
|
ldr w2, [x27, 4]
|
|
strh w5, [x23, #:lo12:.LANCHOR34]
|
|
str w2, [x1, x0, lsl 2]
|
|
ldr x1, [x28, #:lo12:.LANCHOR35]
|
|
b .L515
|
|
.L471:
|
|
sxtw x5, w2
|
|
add w2, w2, 1
|
|
lsl x8, x5, 2
|
|
lsl x5, x5, 1
|
|
add x11, x1, x8
|
|
sxth w2, w2
|
|
ldr w11, [x11, 4]
|
|
str w11, [x1, x8]
|
|
add x8, x6, x5
|
|
ldrh w8, [x8, 2]
|
|
strh w8, [x6, x5]
|
|
b .L470
|
|
.L468:
|
|
sub w0, w0, #1
|
|
sxth x0, w0
|
|
b .L467
|
|
.L451:
|
|
ldrh w5, [x24, #:lo12:.LANCHOR138]
|
|
mov w1, 65535
|
|
add x2, x24, :lo12:.LANCHOR138
|
|
cmp w5, w1
|
|
bne .L474
|
|
strh w26, [x24, #:lo12:.LANCHOR138]
|
|
str w0, [x2, 8]
|
|
b .L450
|
|
.L474:
|
|
ldrh w0, [x2, 4]
|
|
cmp w0, w1
|
|
beq .L475
|
|
mov w1, 1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L475:
|
|
add x0, x24, :lo12:.LANCHOR138
|
|
ldr w1, [x27, 4]
|
|
ldr w2, [x0, 8]
|
|
cmp w2, w1
|
|
bcs .L476
|
|
ldrh w2, [x24, #:lo12:.LANCHOR138]
|
|
strh w2, [x0, 4]
|
|
strh w26, [x24, #:lo12:.LANCHOR138]
|
|
str w1, [x0, 8]
|
|
b .L450
|
|
.L476:
|
|
strh w26, [x0, 4]
|
|
b .L450
|
|
.L479:
|
|
ldr x0, [x29, 160]
|
|
ldr x2, [x0, #:lo12:.LANCHOR118]
|
|
ldrh w0, [x2]
|
|
cbz w0, .L481
|
|
.L484:
|
|
ldr x1, [x28, #:lo12:.LANCHOR35]
|
|
ldrh w0, [x1]
|
|
cbz w0, .L482
|
|
.L483:
|
|
ldrh w1, [x20, #:lo12:.LANCHOR129]
|
|
ldr w0, [x21, #:lo12:.LANCHOR29]
|
|
cmp w1, w0
|
|
bls .L513
|
|
adrp x1, .LANCHOR139
|
|
adrp x0, .LC1
|
|
mov w2, 1398
|
|
add x1, x1, :lo12:.LANCHOR139
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L513:
|
|
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
|
|
.L481:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR129]
|
|
cbz w0, .L484
|
|
ldr w1, [x21, #:lo12:.LANCHOR29]
|
|
mov w0, 0
|
|
.L485:
|
|
cmp w0, w1
|
|
bcs .L484
|
|
ldrh w3, [x2, w0, sxtw 1]
|
|
cbz w3, .L486
|
|
ldr x1, [x29, 152]
|
|
add x7, x21, :lo12:.LANCHOR29
|
|
ldr x4, [x1, #:lo12:.LANCHOR124]
|
|
mov w1, w0
|
|
.L487:
|
|
ldr w3, [x7]
|
|
cmp w1, w3
|
|
bcs .L484
|
|
sxtw x6, w1
|
|
sub w3, w1, w0
|
|
lsl x5, x6, 1
|
|
sxtw x3, w3
|
|
add w1, w1, 1
|
|
ldr w6, [x4, x6, lsl 2]
|
|
sxth w1, w1
|
|
ldrh w8, [x2, x5]
|
|
strh w8, [x2, x3, lsl 1]
|
|
str w6, [x4, x3, lsl 2]
|
|
strh wzr, [x2, x5]
|
|
b .L487
|
|
.L486:
|
|
add w0, w0, 1
|
|
sxth w0, w0
|
|
b .L485
|
|
.L482:
|
|
ldrh w0, [x23, #:lo12:.LANCHOR34]
|
|
cbz w0, .L483
|
|
ldrh w2, [x19, #:lo12:.LANCHOR26]
|
|
mov w0, 0
|
|
.L492:
|
|
mov w6, w0
|
|
cmp w0, w2
|
|
bge .L483
|
|
ldrh w3, [x1, w0, sxtw 1]
|
|
cbz w3, .L493
|
|
ldr x2, [x29, 144]
|
|
add x19, x19, :lo12:.LANCHOR26
|
|
ldr x3, [x2, #:lo12:.LANCHOR121]
|
|
.L494:
|
|
ldrh w2, [x19]
|
|
cmp w0, w2
|
|
bge .L483
|
|
sxtw x5, w0
|
|
sub w2, w0, w6
|
|
lsl x4, x5, 1
|
|
sxtw x2, w2
|
|
add w0, w0, 1
|
|
ldr w5, [x3, x5, lsl 2]
|
|
sxth w0, w0
|
|
ldrh w7, [x1, x4]
|
|
strh w7, [x1, x2, lsl 1]
|
|
str w5, [x3, x2, lsl 2]
|
|
strh wzr, [x1, x4]
|
|
b .L494
|
|
.L493:
|
|
add w0, w0, 1
|
|
sxth w0, w0
|
|
b .L492
|
|
.size FtlScanSysBlk, .-FtlScanSysBlk
|
|
.section .text.FtlLoadBbt,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadBbt
|
|
.type FtlLoadBbt, %function
|
|
FtlLoadBbt:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR105
|
|
stp x19, x20, [sp, 16]
|
|
adrp x24, .LANCHOR16
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR137
|
|
add x20, x22, :lo12:.LANCHOR137
|
|
ldr x0, [x23, #:lo12:.LANCHOR105]
|
|
str x25, [sp, 64]
|
|
mov w25, 61649
|
|
str x0, [x20, 8]
|
|
adrp x0, .LANCHOR113
|
|
ldr x21, [x0, #:lo12:.LANCHOR113]
|
|
str x21, [x20, 16]
|
|
bl FtlBbtMemInit
|
|
ldrh w19, [x24, #:lo12:.LANCHOR16]
|
|
add x24, x24, :lo12:.LANCHOR16
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
.L518:
|
|
ldrh w0, [x24]
|
|
sub w0, w0, #15
|
|
cmp w0, w19
|
|
bgt .L521
|
|
lsl w0, w19, 10
|
|
mov w2, 1
|
|
str w0, [x20, 4]
|
|
mov w1, w2
|
|
mov x0, x20
|
|
bl FlashReadPages
|
|
ldr w0, [x20]
|
|
cmn w0, #1
|
|
bne .L519
|
|
ldr w0, [x20, 4]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
add w0, w0, 1
|
|
str w0, [x20, 4]
|
|
mov x0, x20
|
|
bl FlashReadPages
|
|
.L519:
|
|
ldr w0, [x20]
|
|
cmn w0, #1
|
|
beq .L520
|
|
ldrh w0, [x21]
|
|
cmp w0, w25
|
|
bne .L520
|
|
adrp x1, .LANCHOR36
|
|
add x0, x1, :lo12:.LANCHOR36
|
|
strh w19, [x1, #:lo12:.LANCHOR36]
|
|
ldr w1, [x21, 4]
|
|
str w1, [x0, 8]
|
|
ldrh w1, [x21, 8]
|
|
strh w1, [x0, 4]
|
|
.L521:
|
|
adrp x19, .LANCHOR36
|
|
mov w0, 65535
|
|
add x20, x19, :lo12:.LANCHOR36
|
|
ldrh w1, [x19, #:lo12:.LANCHOR36]
|
|
cmp w1, w0
|
|
beq .L535
|
|
ldrh w1, [x20, 4]
|
|
cmp w1, w0
|
|
beq .L525
|
|
add x0, x22, :lo12:.LANCHOR137
|
|
lsl w1, w1, 10
|
|
mov w2, 1
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
ldr w0, [x22, #:lo12:.LANCHOR137]
|
|
cmn w0, #1
|
|
beq .L525
|
|
ldrh w1, [x21]
|
|
mov w0, 61649
|
|
cmp w1, w0
|
|
bne .L525
|
|
ldr w1, [x20, 8]
|
|
ldr w0, [x21, 4]
|
|
cmp w0, w1
|
|
bls .L525
|
|
ldrh w1, [x20, 4]
|
|
str w0, [x20, 8]
|
|
ldrh w0, [x21, 8]
|
|
strh w1, [x19, #:lo12:.LANCHOR36]
|
|
strh w0, [x20, 4]
|
|
.L525:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR36]
|
|
add x24, x19, :lo12:.LANCHOR36
|
|
mov w1, 1
|
|
mov w25, 61649
|
|
bl FtlGetLastWrittenPage
|
|
sxth w20, w0
|
|
add w0, w0, 1
|
|
strh w0, [x24, 2]
|
|
add x24, x22, :lo12:.LANCHOR137
|
|
.L527:
|
|
tbz w20, #31, .L530
|
|
adrp x1, .LANCHOR140
|
|
adrp x0, .LC1
|
|
mov w2, 251
|
|
add x1, x1, :lo12:.LANCHOR140
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L529:
|
|
add x0, x19, :lo12:.LANCHOR36
|
|
ldrh w1, [x21, 10]
|
|
strh w1, [x0, 6]
|
|
mov w1, 65535
|
|
ldrh w0, [x21, 12]
|
|
cmp w0, w1
|
|
beq .L532
|
|
adrp x1, .LANCHOR1
|
|
ldr w2, [x1, #:lo12:.LANCHOR1]
|
|
cmp w0, w2
|
|
beq .L532
|
|
adrp x1, .LANCHOR5
|
|
ldrh w1, [x1, #:lo12:.LANCHOR5]
|
|
lsr w1, w1, 2
|
|
cmp w2, w1
|
|
bcs .L532
|
|
cmp w0, w1
|
|
bcs .L532
|
|
bl FtlSysBlkNumInit
|
|
.L532:
|
|
add x19, x19, :lo12:.LANCHOR36
|
|
adrp x21, .LANCHOR9
|
|
adrp x23, .LANCHOR126
|
|
add x19, x19, 32
|
|
add x21, x21, :lo12:.LANCHOR9
|
|
add x23, x23, :lo12:.LANCHOR126
|
|
add x22, x22, :lo12:.LANCHOR137
|
|
mov w20, 0
|
|
.L533:
|
|
ldrh w0, [x21]
|
|
cmp w20, w0
|
|
bcc .L534
|
|
mov w0, 0
|
|
.L517:
|
|
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
|
|
.L520:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L518
|
|
.L530:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR36]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
orr w0, w20, w0, lsl 10
|
|
str w0, [x24, 4]
|
|
ldr x0, [x23, #:lo12:.LANCHOR105]
|
|
str x0, [x24, 8]
|
|
mov x0, x24
|
|
bl FlashReadPages
|
|
ldr w0, [x24]
|
|
cmn w0, #1
|
|
beq .L528
|
|
ldrh w0, [x21]
|
|
cmp w0, w25
|
|
beq .L529
|
|
.L528:
|
|
sub w20, w20, #1
|
|
sxth w20, w20
|
|
b .L527
|
|
.L534:
|
|
ldrh w2, [x23]
|
|
ldr x0, [x22, 8]
|
|
mul w1, w2, w20
|
|
lsl w2, w2, 2
|
|
add w20, w20, 1
|
|
add x1, x0, x1, lsl 2
|
|
ldr x0, [x19], 8
|
|
bl ftl_memcpy
|
|
b .L533
|
|
.L535:
|
|
mov w0, -1
|
|
b .L517
|
|
.size FtlLoadBbt, .-FtlLoadBbt
|
|
.section .text.FlashProgPages,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgPages
|
|
.type FlashProgPages, %function
|
|
FlashProgPages:
|
|
stp x29, x30, [sp, -160]!
|
|
ubfiz x1, x1, 5, 32
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR0
|
|
stp x23, x24, [sp, 48]
|
|
add x21, x0, x1
|
|
str w2, [x29, 108]
|
|
add x2, x22, :lo12:.LANCHOR0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x23, .LANCHOR141
|
|
stp x27, x28, [sp, 80]
|
|
mov x19, x0
|
|
ldrh w24, [x2, 12]
|
|
mov x20, x0
|
|
stp x25, x26, [sp, 64]
|
|
add x23, x23, :lo12:.LANCHOR141
|
|
adrp x25, .LANCHOR77
|
|
add x28, x25, :lo12:.LANCHOR77
|
|
lsl w27, w24, 3
|
|
.L548:
|
|
cmp x20, x21
|
|
bne .L561
|
|
adrp x20, .LANCHOR110
|
|
adrp x22, .LANCHOR112
|
|
mov x23, x20
|
|
mov x24, x22
|
|
.L562:
|
|
cmp x19, x21
|
|
beq .L585
|
|
ldr x1, [x20, #:lo12:.LANCHOR110]
|
|
ldr x0, [x22, #:lo12:.LANCHOR112]
|
|
str wzr, [x1]
|
|
str wzr, [x0]
|
|
stp x1, x0, [x29, 136]
|
|
mov w1, 1
|
|
ldr w2, [x19, 4]
|
|
add x0, x29, 128
|
|
str w2, [x29, 132]
|
|
ldr w2, [x29, 108]
|
|
bl FlashReadPages
|
|
ldr w25, [x29, 128]
|
|
cmn w25, #1
|
|
bne .L563
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC14
|
|
add x0, x0, :lo12:.LC14
|
|
bl printf
|
|
str w25, [x19]
|
|
.L563:
|
|
ldr w25, [x29, 128]
|
|
cmp w25, 256
|
|
bne .L564
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC15
|
|
add x0, x0, :lo12:.LC15
|
|
bl printf
|
|
str w25, [x19]
|
|
.L564:
|
|
ldr x0, [x19, 16]
|
|
cbz x0, .L565
|
|
ldr x1, [x24, #:lo12:.LANCHOR112]
|
|
ldr w2, [x0]
|
|
ldr w4, [x1]
|
|
cmp w2, w4
|
|
bne .L566
|
|
ldr w5, [x0, 8]
|
|
ldr w3, [x1, 8]
|
|
cmp w5, w3
|
|
beq .L565
|
|
.L566:
|
|
ldr w3, [x0, 4]
|
|
adrp x0, .LC16
|
|
ldr w5, [x1, 4]
|
|
add x0, x0, :lo12:.LC16
|
|
ldr w1, [x19, 4]
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L565:
|
|
ldr x0, [x19, 8]
|
|
cbz x0, .L567
|
|
ldr x1, [x23, #:lo12:.LANCHOR110]
|
|
ldr w2, [x0]
|
|
ldr w4, [x1]
|
|
cmp w2, w4
|
|
bne .L568
|
|
ldr w5, [x0, 2048]
|
|
ldr w3, [x1, 2048]
|
|
cmp w5, w3
|
|
beq .L567
|
|
.L568:
|
|
ldr w3, [x0, 4]
|
|
adrp x0, .LC17
|
|
ldr w5, [x1, 4]
|
|
add x0, x0, :lo12:.LC17
|
|
ldr w1, [x19, 4]
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L567:
|
|
add x19, x19, 32
|
|
b .L562
|
|
.L561:
|
|
ldr x0, [x20, 8]
|
|
cbz x0, .L549
|
|
ldr x0, [x20, 16]
|
|
cbnz x0, .L550
|
|
.L549:
|
|
adrp x0, .LC1
|
|
mov w2, 142
|
|
mov x1, x23
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L550:
|
|
ldr w0, [x20, 4]
|
|
add x2, x29, 120
|
|
add x1, x29, 124
|
|
bl l2p_addr_tran.isra.0
|
|
ldr w0, [x29, 120]
|
|
cmp w0, 3
|
|
bls .L551
|
|
.L587:
|
|
mov w0, -1
|
|
str w0, [x20]
|
|
b .L552
|
|
.L551:
|
|
cbnz w0, .L553
|
|
ldr w0, [x29, 124]
|
|
cmp w27, w0
|
|
bls .L553
|
|
adrp x20, .LANCHOR141
|
|
adrp x22, .LC6
|
|
mov w23, -1
|
|
add x20, x20, :lo12:.LANCHOR141
|
|
add x22, x22, :lo12:.LC6
|
|
b .L584
|
|
.L555:
|
|
ldr w2, [x19, 4]
|
|
mov x1, x20
|
|
str w23, [x19]
|
|
mov x0, x22
|
|
add x19, x19, 32
|
|
bl printf
|
|
ldr x1, [x19, -24]
|
|
mov w3, 16
|
|
mov w2, 4
|
|
adrp x0, .LC7
|
|
add x0, x0, :lo12:.LC7
|
|
bl rknand_print_hex
|
|
ldr x1, [x19, -16]
|
|
mov w3, 4
|
|
adrp x0, .LC8
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC8
|
|
bl rknand_print_hex
|
|
.L584:
|
|
cmp x19, x21
|
|
bne .L555
|
|
.L585:
|
|
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], 160
|
|
ret
|
|
.L553:
|
|
ldr x1, [x20, 8]
|
|
tst x1, 63
|
|
beq .L571
|
|
adrp x0, .LANCHOR110
|
|
ldr x26, [x0, #:lo12:.LANCHOR110]
|
|
cmp x1, x26
|
|
beq .L556
|
|
adrp x0, .LANCHOR11
|
|
ldrh w2, [x0, #:lo12:.LANCHOR11]
|
|
mov x0, x26
|
|
lsl w2, w2, 9
|
|
bl ftl_memcpy
|
|
.L556:
|
|
add x0, x25, :lo12:.LANCHOR77
|
|
ldr w1, [x29, 124]
|
|
ldr x3, [x20, 16]
|
|
mov x2, x26
|
|
ldr x5, [x0, 16]
|
|
ldrb w0, [x29, 120]
|
|
blr x5
|
|
cbnz w0, .L557
|
|
str wzr, [x20]
|
|
.L558:
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
ldrh w0, [x0, 14]
|
|
cmp w0, 4
|
|
bne .L552
|
|
ldrb w0, [x29, 120]
|
|
add x2, x26, 2048
|
|
ldr x5, [x28, 16]
|
|
ldr w1, [x29, 124]
|
|
ldr x3, [x20, 16]
|
|
add w1, w24, w1
|
|
add x3, x3, 8
|
|
blr x5
|
|
cbnz w0, .L587
|
|
.L552:
|
|
add x20, x20, 32
|
|
b .L548
|
|
.L571:
|
|
mov x26, x1
|
|
b .L556
|
|
.L557:
|
|
mov w0, -1
|
|
str w0, [x20]
|
|
b .L558
|
|
.size FlashProgPages, .-FlashProgPages
|
|
.section .text.FtlLowFormatEraseBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlLowFormatEraseBlock
|
|
.type FtlLowFormatEraseBlock, %function
|
|
FtlLowFormatEraseBlock:
|
|
stp x29, x30, [sp, -128]!
|
|
adrp x7, .LANCHOR12
|
|
add x7, x7, :lo12:.LANCHOR12
|
|
mov x5, 0
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
and w23, w0, 65535
|
|
adrp x0, .LANCHOR98
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
adrp x20, .LANCHOR2
|
|
stp x25, x26, [sp, 64]
|
|
and w22, w1, 255
|
|
str w23, [x0, #:lo12:.LANCHOR98]
|
|
adrp x21, .LANCHOR78
|
|
adrp x0, .LANCHOR109
|
|
adrp x1, .LANCHOR114
|
|
adrp x25, .LANCHOR23
|
|
ldrh w8, [x20, #:lo12:.LANCHOR2]
|
|
ldr x6, [x21, #:lo12:.LANCHOR78]
|
|
mov w24, 0
|
|
ldr x10, [x0, #:lo12:.LANCHOR109]
|
|
mov w19, 0
|
|
ldr x11, [x1, #:lo12:.LANCHOR114]
|
|
ldrh w12, [x25, #:lo12:.LANCHOR23]
|
|
stp x27, x28, [sp, 80]
|
|
str x0, [x29, 112]
|
|
.L589:
|
|
cmp w8, w5, uxth
|
|
bhi .L593
|
|
cbz w24, .L588
|
|
mov w2, w24
|
|
ubfiz x24, x24, 5, 16
|
|
mov x26, 0
|
|
mov w1, 0
|
|
mov x0, x6
|
|
bl FlashEraseBlocks
|
|
.L597:
|
|
ldr x0, [x21, #:lo12:.LANCHOR78]
|
|
add x1, x0, x26
|
|
ldr w0, [x0, x26]
|
|
cmn w0, #1
|
|
bne .L596
|
|
ldr w0, [x1, 4]
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
.L596:
|
|
add x26, x26, 32
|
|
cmp x26, x24
|
|
bne .L597
|
|
cbz w22, .L610
|
|
adrp x0, .LANCHOR19
|
|
mov w26, 1
|
|
ldrh w28, [x0, #:lo12:.LANCHOR19]
|
|
.L598:
|
|
add x0, x20, :lo12:.LANCHOR2
|
|
adrp x27, .LANCHOR12
|
|
str x0, [x29, 120]
|
|
mov w24, 0
|
|
add x0, x27, :lo12:.LANCHOR12
|
|
str x0, [x29, 104]
|
|
.L606:
|
|
ldr x0, [x29, 120]
|
|
mov x5, 0
|
|
ldr x6, [x21, #:lo12:.LANCHOR78]
|
|
mov w20, 0
|
|
ldrh w11, [x25, #:lo12:.LANCHOR23]
|
|
ldrh w7, [x0]
|
|
adrp x0, .LANCHOR108
|
|
ldr x8, [x0, #:lo12:.LANCHOR108]
|
|
ldr x0, [x29, 112]
|
|
ldr x10, [x0, #:lo12:.LANCHOR109]
|
|
.L599:
|
|
cmp w7, w5, uxth
|
|
bhi .L602
|
|
cbz w20, .L588
|
|
mov w1, w20
|
|
mov w3, 1
|
|
mov w2, w26
|
|
mov x0, x6
|
|
bl FlashProgPages
|
|
mov x27, 0
|
|
ubfiz x1, x20, 5, 16
|
|
.L605:
|
|
ldr x0, [x21, #:lo12:.LANCHOR78]
|
|
add x3, x0, x27
|
|
ldr w0, [x0, x27]
|
|
cbz w0, .L604
|
|
ldr w0, [x3, 4]
|
|
add w19, w19, 1
|
|
str x1, [x29, 96]
|
|
and w19, w19, 65535
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
ldr x1, [x29, 96]
|
|
.L604:
|
|
add x27, x27, 32
|
|
cmp x1, x27
|
|
bne .L605
|
|
add w24, w24, 1
|
|
cmp w28, w24, uxth
|
|
bhi .L606
|
|
mov x24, 0
|
|
.L608:
|
|
cbz w22, .L607
|
|
ldr x0, [x21, #:lo12:.LANCHOR78]
|
|
add x1, x0, x24
|
|
ldr w0, [x0, x24]
|
|
cbnz w0, .L607
|
|
ldr w0, [x1, 4]
|
|
mov w1, 1
|
|
lsr w0, w0, 10
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L607:
|
|
add x24, x24, 32
|
|
cmp x24, x27
|
|
bne .L608
|
|
cmp w23, 63
|
|
ccmp w22, 0, 0, hi
|
|
beq .L588
|
|
ldr x0, [x21, #:lo12:.LANCHOR78]
|
|
mov w2, w20
|
|
mov w1, w26
|
|
bl FlashEraseBlocks
|
|
.L588:
|
|
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
|
|
.L593:
|
|
lsl x0, x5, 5
|
|
mov w1, w23
|
|
str wzr, [x6, x0]
|
|
ldrb w0, [x7, x5]
|
|
bl V2P_block
|
|
and w13, w0, 65535
|
|
mov w14, w13
|
|
cbz w22, .L590
|
|
bl IsBlkInVendorPart
|
|
cbnz w0, .L591
|
|
.L590:
|
|
mov w0, w14
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L592
|
|
ubfiz x0, x24, 5, 16
|
|
mul w1, w24, w12
|
|
add x0, x6, x0
|
|
add w24, w24, 1
|
|
and w24, w24, 65535
|
|
lsl w13, w13, 10
|
|
asr w1, w1, 2
|
|
add x1, x11, x1, sxtw 2
|
|
str w13, [x0, 4]
|
|
stp x10, x1, [x0, 8]
|
|
.L591:
|
|
add x5, x5, 1
|
|
b .L589
|
|
.L592:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L591
|
|
.L610:
|
|
mov w26, 0
|
|
mov w28, 2
|
|
b .L598
|
|
.L602:
|
|
lsl x0, x5, 5
|
|
mov w1, w23
|
|
str wzr, [x6, x0]
|
|
ldr x0, [x29, 104]
|
|
ldrb w0, [x0, x5]
|
|
bl V2P_block
|
|
and w12, w0, 65535
|
|
mov w13, w12
|
|
cbz w22, .L600
|
|
bl IsBlkInVendorPart
|
|
cbnz w0, .L601
|
|
.L600:
|
|
mov w0, w13
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L601
|
|
ubfiz x0, x20, 5, 16
|
|
mul w1, w20, w11
|
|
add x0, x6, x0
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
add w12, w24, w12, lsl 10
|
|
asr w1, w1, 2
|
|
add x1, x10, x1, sxtw 2
|
|
str w12, [x0, 4]
|
|
stp x8, x1, [x0, 8]
|
|
.L601:
|
|
add x5, x5, 1
|
|
b .L599
|
|
.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
|
|
.section .text.FlashTestBlk,"ax",@progbits
|
|
.align 2
|
|
.global FlashTestBlk
|
|
.type FlashTestBlk, %function
|
|
FlashTestBlk:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 65535
|
|
cmp w19, 11
|
|
bls .L634
|
|
adrp x20, .LANCHOR111
|
|
mov w2, 32
|
|
mov w1, 165
|
|
lsl w19, w19, 10
|
|
ldr x0, [x20, #:lo12:.LANCHOR111]
|
|
str x0, [x29, 40]
|
|
add x0, x29, 64
|
|
str x0, [x29, 48]
|
|
bl ftl_memset
|
|
ldr x0, [x20, #:lo12:.LANCHOR111]
|
|
mov w2, 8
|
|
mov w1, 90
|
|
bl ftl_memset
|
|
str w19, [x29, 36]
|
|
mov w2, 1
|
|
add x0, x29, 32
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
mov w3, 1
|
|
add x0, x29, 32
|
|
mov w2, w3
|
|
mov w1, w3
|
|
bl FlashProgPages
|
|
ldr w0, [x29, 32]
|
|
cbnz w0, .L635
|
|
add w0, w19, 1
|
|
mov w3, 1
|
|
str w0, [x29, 36]
|
|
mov w2, w3
|
|
mov w1, w3
|
|
add x0, x29, 32
|
|
bl FlashProgPages
|
|
ldr w0, [x29, 32]
|
|
cmp w0, 0
|
|
csetm w20, ne
|
|
.L633:
|
|
mov w2, 1
|
|
mov w1, 0
|
|
add x0, x29, 32
|
|
str w19, [x29, 36]
|
|
bl FlashEraseBlocks
|
|
.L631:
|
|
mov w0, w20
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.L635:
|
|
mov w20, -1
|
|
b .L633
|
|
.L634:
|
|
mov w20, 0
|
|
b .L631
|
|
.size FlashTestBlk, .-FlashTestBlk
|
|
.section .text.FtlBbmTblFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbmTblFlush
|
|
.type FtlBbmTblFlush, %function
|
|
FtlBbmTblFlush:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR113
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR137
|
|
stp x21, x22, [sp, 32]
|
|
add x19, x20, :lo12:.LANCHOR137
|
|
adrp x22, .LANCHOR105
|
|
ldr x1, [x23, #:lo12:.LANCHOR113]
|
|
stp x25, x26, [sp, 64]
|
|
adrp x21, .LANCHOR36
|
|
str x27, [sp, 80]
|
|
add x25, x21, :lo12:.LANCHOR36
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
adrp x26, .LANCHOR9
|
|
stp x0, x1, [x19, 8]
|
|
adrp x1, .LANCHOR22
|
|
adrp x27, .LANCHOR126
|
|
add x25, x25, 32
|
|
ldrh w2, [x1, #:lo12:.LANCHOR22]
|
|
mov w24, 0
|
|
add x26, x26, :lo12:.LANCHOR9
|
|
add x27, x27, :lo12:.LANCHOR126
|
|
mov w1, 0
|
|
bl ftl_memset
|
|
.L638:
|
|
ldrh w0, [x26]
|
|
cmp w24, w0
|
|
blt .L639
|
|
add x20, x20, :lo12:.LANCHOR137
|
|
add x19, x21, :lo12:.LANCHOR36
|
|
mov w2, 16
|
|
mov w1, 255
|
|
adrp x25, .LC18
|
|
adrp x26, .LANCHOR19
|
|
ldr x27, [x20, 16]
|
|
add x25, x25, :lo12:.LC18
|
|
add x26, x26, :lo12:.LANCHOR19
|
|
mov w24, 0
|
|
mov x0, x27
|
|
bl ftl_memset
|
|
mov w0, -3887
|
|
strh w0, [x27]
|
|
ldr w0, [x19, 8]
|
|
str w0, [x27, 4]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR36]
|
|
mov w21, 0
|
|
strh w0, [x27, 2]
|
|
ldrh w0, [x19, 4]
|
|
strh w0, [x27, 8]
|
|
ldrh w0, [x19, 6]
|
|
strh w0, [x27, 10]
|
|
adrp x0, .LANCHOR1
|
|
ldr w0, [x0, #:lo12:.LANCHOR1]
|
|
strh w0, [x27, 12]
|
|
adrp x0, .LANCHOR142
|
|
ldr w0, [x0, #:lo12:.LANCHOR142]
|
|
strh w0, [x27, 14]
|
|
.L640:
|
|
ldrh w1, [x19]
|
|
ldrh w4, [x27, 10]
|
|
ldrh w2, [x19, 2]
|
|
ldrh w3, [x19, 4]
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
str x0, [x20, 8]
|
|
ldr x0, [x23, #:lo12:.LANCHOR113]
|
|
str x0, [x20, 16]
|
|
orr w0, w2, w1, lsl 10
|
|
str wzr, [x20]
|
|
str w0, [x20, 4]
|
|
mov x0, x25
|
|
bl printf
|
|
ldrh w0, [x26]
|
|
ldrh w1, [x19, 2]
|
|
sub w0, w0, #1
|
|
cmp w1, w0
|
|
blt .L641
|
|
ldr w0, [x19, 8]
|
|
mov w2, 1
|
|
ldrh w1, [x19, 4]
|
|
add w0, w0, 1
|
|
str w0, [x19, 8]
|
|
str w0, [x27, 4]
|
|
ldrh w0, [x19]
|
|
strh w0, [x27, 8]
|
|
strh w0, [x19, 4]
|
|
adrp x0, .LANCHOR78
|
|
strh w1, [x19]
|
|
lsl w1, w1, 10
|
|
ldr x0, [x0, #:lo12:.LANCHOR78]
|
|
str w1, [x20, 4]
|
|
strh wzr, [x19, 2]
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
.L641:
|
|
mov w3, 1
|
|
mov x0, x20
|
|
mov w2, w3
|
|
mov w1, w3
|
|
bl FlashProgPages
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
ldr w0, [x20]
|
|
cmn w0, #1
|
|
bne .L642
|
|
ldr w1, [x20, 4]
|
|
add w21, w21, 1
|
|
adrp x0, .LC19
|
|
and w21, w21, 65535
|
|
add x0, x0, :lo12:.LC19
|
|
bl printf
|
|
cmp w21, 3
|
|
bls .L640
|
|
ldr w1, [x20, 4]
|
|
adrp x0, .LC20
|
|
mov w2, w21
|
|
add x0, x0, :lo12:.LC20
|
|
bl printf
|
|
.L644:
|
|
b .L644
|
|
.L639:
|
|
ldrh w2, [x27]
|
|
ldr x1, [x25], 8
|
|
ldr x0, [x19, 8]
|
|
mul w3, w24, w2
|
|
lsl w2, w2, 2
|
|
add w24, w24, 1
|
|
add x0, x0, x3, sxtw 2
|
|
bl ftl_memcpy
|
|
b .L638
|
|
.L642:
|
|
add w24, w24, 1
|
|
cmp w24, 1
|
|
beq .L640
|
|
cmp w0, 256
|
|
beq .L640
|
|
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 FtlBbmTblFlush, .-FtlBbmTblFlush
|
|
.section .text.allocate_data_superblock,"ax",@progbits
|
|
.align 2
|
|
.global allocate_data_superblock
|
|
.type allocate_data_superblock, %function
|
|
allocate_data_superblock:
|
|
stp x29, x30, [sp, -112]!
|
|
add x29, sp, 0
|
|
stp x27, x28, [sp, 80]
|
|
adrp x28, .LANCHOR47
|
|
stp x23, x24, [sp, 48]
|
|
add x24, x28, :lo12:.LANCHOR47
|
|
stp x19, x20, [sp, 16]
|
|
adrp x27, .LANCHOR43
|
|
mov x19, x0
|
|
stp x21, x22, [sp, 32]
|
|
add x0, x27, :lo12:.LANCHOR43
|
|
stp x25, x26, [sp, 64]
|
|
str x0, [x29, 104]
|
|
.L653:
|
|
ldr x1, [x29, 104]
|
|
adrp x23, .LANCHOR4
|
|
ldrh w0, [x28, #:lo12:.LANCHOR47]
|
|
ldrh w1, [x1]
|
|
add w0, w0, w1
|
|
ldrh w1, [x23, #:lo12:.LANCHOR4]
|
|
cmp w0, w1
|
|
ble .L654
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
mov w2, 2667
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L654:
|
|
adrp x0, .LANCHOR52
|
|
add x0, x0, :lo12:.LANCHOR52
|
|
cmp x19, x0
|
|
bne .L680
|
|
adrp x1, .LANCHOR94
|
|
ldrh w0, [x24]
|
|
ldr w1, [x1, #:lo12:.LANCHOR94]
|
|
mul w1, w0, w1
|
|
lsr w0, w0, 1
|
|
add w0, w0, 1
|
|
add w1, w0, w1, lsr 2
|
|
ands w1, w1, 65535
|
|
beq .L655
|
|
sub w1, w1, #1
|
|
and w1, w1, 65535
|
|
.L655:
|
|
adrp x0, .LANCHOR45
|
|
add x0, x0, :lo12:.LANCHOR45
|
|
bl List_pop_index_node
|
|
and w22, w0, 65535
|
|
ldrh w0, [x24]
|
|
cbnz w0, .L656
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
mov w2, 2676
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L656:
|
|
ldrh w0, [x24]
|
|
sub w0, w0, #1
|
|
strh w0, [x24]
|
|
ldrh w0, [x23, #:lo12:.LANCHOR4]
|
|
cmp w0, w22
|
|
bls .L653
|
|
adrp x25, .LANCHOR41
|
|
ubfiz x20, x22, 1, 16
|
|
ldr x0, [x25, #:lo12:.LANCHOR41]
|
|
ldrh w21, [x0, x20]
|
|
cbnz w21, .L653
|
|
strh w22, [x19]
|
|
mov x0, x19
|
|
bl make_superblock
|
|
ldrb w0, [x19, 7]
|
|
cbnz w0, .L658
|
|
ldr x0, [x25, #:lo12:.LANCHOR41]
|
|
mov w1, -1
|
|
strh w1, [x0, x20]
|
|
mov w0, w22
|
|
bl INSERT_DATA_LIST
|
|
ldrh w1, [x27, #:lo12:.LANCHOR43]
|
|
ldrh w0, [x24]
|
|
add w0, w0, w1
|
|
ldrh w1, [x23, #:lo12:.LANCHOR4]
|
|
cmp w0, w1
|
|
ble .L653
|
|
mov w2, 2690
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
b .L653
|
|
.L680:
|
|
mov w1, 0
|
|
b .L655
|
|
.L658:
|
|
ldrh w1, [x27, #:lo12:.LANCHOR43]
|
|
ldrh w0, [x24]
|
|
add w0, w0, w1
|
|
ldrh w1, [x23, #:lo12:.LANCHOR4]
|
|
cmp w0, w1
|
|
ble .L660
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
mov w2, 2693
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L660:
|
|
adrp x0, .LANCHOR2
|
|
adrp x25, .LANCHOR78
|
|
add x26, x19, 16
|
|
mov w6, 65535
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
mov x4, x26
|
|
ldr x3, [x25, #:lo12:.LANCHOR78]
|
|
ubfiz x0, x0, 5, 16
|
|
add x1, x3, 8
|
|
add x0, x0, 8
|
|
add x0, x3, x0
|
|
.L661:
|
|
cmp x0, x1
|
|
bne .L663
|
|
cbnz w21, .L664
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
mov w2, 2704
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L664:
|
|
adrp x0, .LANCHOR144
|
|
ldrh w0, [x0, #:lo12:.LANCHOR144]
|
|
cmp w0, w22
|
|
bne .L665
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
mov w2, 2706
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L665:
|
|
ldrb w0, [x19, 8]
|
|
adrp x3, .LANCHOR46
|
|
adrp x5, .LANCHOR13
|
|
adrp x2, .LANCHOR89
|
|
adrp x1, .LANCHOR90
|
|
ldr x4, [x3, #:lo12:.LANCHOR46]
|
|
cbnz w0, .L666
|
|
ldrh w0, [x4, x20]
|
|
cbz w0, .L667
|
|
ldrh w6, [x5, #:lo12:.LANCHOR13]
|
|
add w0, w0, w6
|
|
.L691:
|
|
strh w0, [x4, x20]
|
|
ldr w0, [x2, #:lo12:.LANCHOR89]
|
|
add w0, w0, 1
|
|
str w0, [x2, #:lo12:.LANCHOR89]
|
|
.L669:
|
|
ldr x0, [x3, #:lo12:.LANCHOR46]
|
|
ldrh w3, [x0, x20]
|
|
adrp x0, .LANCHOR91
|
|
ldr w4, [x0, #:lo12:.LANCHOR91]
|
|
cmp w3, w4
|
|
bls .L670
|
|
str w3, [x0, #:lo12:.LANCHOR91]
|
|
.L670:
|
|
ldr w2, [x2, #:lo12:.LANCHOR89]
|
|
ldr w1, [x1, #:lo12:.LANCHOR90]
|
|
ldrh w0, [x5, #:lo12:.LANCHOR13]
|
|
madd w0, w0, w2, w1
|
|
ldrh w1, [x23, #:lo12:.LANCHOR4]
|
|
udiv w0, w0, w1
|
|
adrp x1, .LANCHOR142
|
|
str w0, [x1, #:lo12:.LANCHOR142]
|
|
adrp x0, .LANCHOR117
|
|
ldr x1, [x0, #:lo12:.LANCHOR117]
|
|
ldr w0, [x1, 16]
|
|
add w0, w0, 1
|
|
str w0, [x1, 16]
|
|
ldr x0, [x25, #:lo12:.LANCHOR78]
|
|
ubfiz x1, x21, 5, 16
|
|
add x1, x1, 4
|
|
add x2, x0, 4
|
|
add x1, x0, x1
|
|
.L671:
|
|
cmp x1, x2
|
|
bne .L672
|
|
ldrb w1, [x19, 8]
|
|
mov w2, w21
|
|
mov x23, 0
|
|
bl FlashEraseBlocks
|
|
mov w1, 0
|
|
.L673:
|
|
cmp w21, w23, uxth
|
|
bhi .L675
|
|
cbz w1, .L676
|
|
mov w0, w22
|
|
bl update_multiplier_value
|
|
bl FtlBbmTblFlush
|
|
.L676:
|
|
ldrb w0, [x19, 7]
|
|
cbnz w0, .L677
|
|
adrp x0, .LANCHOR41
|
|
mov w1, -1
|
|
ldr x0, [x0, #:lo12:.LANCHOR41]
|
|
strh w1, [x0, x20]
|
|
b .L653
|
|
.L663:
|
|
ldrh w2, [x4]
|
|
stp xzr, xzr, [x1]
|
|
cmp w2, w6
|
|
beq .L662
|
|
ubfiz x5, x21, 5, 16
|
|
add w21, w21, 1
|
|
add x5, x3, x5
|
|
and w21, w21, 65535
|
|
lsl w2, w2, 10
|
|
str w2, [x5, 4]
|
|
.L662:
|
|
add x1, x1, 32
|
|
add x4, x4, 2
|
|
b .L661
|
|
.L667:
|
|
mov w0, 2
|
|
b .L691
|
|
.L666:
|
|
ldrh w0, [x4, x20]
|
|
add w0, w0, 1
|
|
strh w0, [x4, x20]
|
|
ldr w0, [x1, #:lo12:.LANCHOR90]
|
|
add w0, w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR90]
|
|
b .L669
|
|
.L672:
|
|
ldr w3, [x2]
|
|
and w3, w3, -1024
|
|
str w3, [x2], 32
|
|
b .L671
|
|
.L675:
|
|
ldr x2, [x25, #:lo12:.LANCHOR78]
|
|
lsl x0, x23, 5
|
|
add x3, x2, x0
|
|
ldr w2, [x2, x0]
|
|
cmn w2, #1
|
|
bne .L674
|
|
add w1, w1, 1
|
|
ldr w0, [x3, 4]
|
|
stp w2, w1, [x29, 96]
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
ldp w2, w1, [x29, 96]
|
|
strh w2, [x26]
|
|
ldrb w0, [x19, 7]
|
|
sub w0, w0, #1
|
|
strb w0, [x19, 7]
|
|
.L674:
|
|
add x23, x23, 1
|
|
add x26, x26, 2
|
|
b .L673
|
|
.L677:
|
|
adrp x1, .LANCHOR18
|
|
adrp x2, .LANCHOR81
|
|
strh wzr, [x19, 2]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR18]
|
|
strh w22, [x19]
|
|
strb wzr, [x19, 6]
|
|
mul w0, w0, w1
|
|
ldr w1, [x2, #:lo12:.LANCHOR81]
|
|
str w1, [x19, 12]
|
|
add w1, w1, 1
|
|
str w1, [x2, #:lo12:.LANCHOR81]
|
|
adrp x1, .LANCHOR41
|
|
and w0, w0, 65535
|
|
strh w0, [x19, 4]
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
strh w0, [x1, x20]
|
|
ldrh w0, [x19, 4]
|
|
cbz w0, .L678
|
|
ldrb w0, [x19, 7]
|
|
cbnz w0, .L679
|
|
.L678:
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC1
|
|
mov w2, 2759
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L679:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 112
|
|
ret
|
|
.size allocate_data_superblock, .-allocate_data_superblock
|
|
.section .text.FtlGcFreeBadSuperBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcFreeBadSuperBlk
|
|
.type FtlGcFreeBadSuperBlk, %function
|
|
FtlGcFreeBadSuperBlk:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR73
|
|
stp x25, x26, [sp, 64]
|
|
and w25, w0, 65535
|
|
ldrh w0, [x21, #:lo12:.LANCHOR73]
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
str x27, [sp, 80]
|
|
cbz w0, .L693
|
|
adrp x23, .LANCHOR74
|
|
add x24, x23, :lo12:.LANCHOR74
|
|
mov w19, 0
|
|
.L694:
|
|
adrp x0, .LANCHOR2
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
cmp w0, w19
|
|
bhi .L700
|
|
bl FtlGcReFreshBadBlk
|
|
.L693:
|
|
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
|
|
.L700:
|
|
adrp x0, .LANCHOR12
|
|
add x0, x0, :lo12:.LANCHOR12
|
|
mov w1, w25
|
|
add x22, x21, :lo12:.LANCHOR73
|
|
mov w20, 0
|
|
ldrb w0, [x0, w19, sxtw]
|
|
bl V2P_block
|
|
and w26, w0, 65535
|
|
.L695:
|
|
ldrh w0, [x22]
|
|
cmp w0, w20
|
|
bhi .L699
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L694
|
|
.L699:
|
|
add x0, x23, :lo12:.LANCHOR74
|
|
add w27, w20, 1
|
|
ldrh w0, [x0, w20, sxtw 1]
|
|
cmp w0, w26
|
|
bne .L696
|
|
mov w0, w26
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldrh w1, [x22]
|
|
sxtw x3, w27
|
|
and x4, x20, 65535
|
|
mov x0, 0
|
|
.L697:
|
|
add w2, w20, w0
|
|
cmp w1, w2, uxth
|
|
bhi .L698
|
|
sub w1, w1, #1
|
|
strh w1, [x22]
|
|
.L696:
|
|
and w20, w27, 65535
|
|
b .L695
|
|
.L698:
|
|
add x2, x3, x0
|
|
ldrh w5, [x24, x2, lsl 1]
|
|
add x2, x4, x0
|
|
add x0, x0, 1
|
|
strh w5, [x24, x2, lsl 1]
|
|
b .L697
|
|
.size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
|
|
.section .text.update_vpc_list,"ax",@progbits
|
|
.align 2
|
|
.global update_vpc_list
|
|
.type update_vpc_list, %function
|
|
update_vpc_list:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x1, .LANCHOR41
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 65535
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
ubfiz x0, x19, 1, 16
|
|
ldrh w0, [x1, x0]
|
|
cbnz w0, .L706
|
|
adrp x0, .LANCHOR71
|
|
ldrh w1, [x0, #:lo12:.LANCHOR71]
|
|
cmp w1, w19
|
|
bne .L707
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR71]
|
|
.L707:
|
|
adrp x0, .LANCHOR72
|
|
ldrh w1, [x0, #:lo12:.LANCHOR72]
|
|
cmp w1, w19
|
|
bne .L708
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR72]
|
|
.L708:
|
|
adrp x0, .LANCHOR144
|
|
ldrh w1, [x0, #:lo12:.LANCHOR144]
|
|
cmp w1, w19
|
|
bne .L709
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR144]
|
|
.L710:
|
|
adrp x20, .LANCHOR43
|
|
mov w1, w19
|
|
adrp x0, .LANCHOR40
|
|
add x0, x0, :lo12:.LANCHOR40
|
|
bl List_remove_node
|
|
ldrh w0, [x20, #:lo12:.LANCHOR43]
|
|
cbnz w0, .L712
|
|
adrp x1, .LANCHOR145
|
|
adrp x0, .LC1
|
|
mov w2, 2835
|
|
add x1, x1, :lo12:.LANCHOR145
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L712:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR43]
|
|
sub w0, w0, #1
|
|
strh w0, [x20, #:lo12:.LANCHOR43]
|
|
mov w0, w19
|
|
bl free_data_superblock
|
|
mov w0, w19
|
|
bl FtlGcFreeBadSuperBlk
|
|
adrp x0, .LANCHOR47
|
|
ldrh w1, [x20, #:lo12:.LANCHOR43]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR47]
|
|
add w0, w0, w1
|
|
adrp x1, .LANCHOR4
|
|
ldrh w1, [x1, #:lo12:.LANCHOR4]
|
|
cmp w0, w1
|
|
ble .L716
|
|
adrp x1, .LANCHOR145
|
|
adrp x0, .LC1
|
|
mov w2, 2838
|
|
add x1, x1, :lo12:.LANCHOR145
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L716:
|
|
mov w0, 1
|
|
b .L705
|
|
.L709:
|
|
adrp x0, .LANCHOR50
|
|
ldrh w0, [x0, #:lo12:.LANCHOR50]
|
|
cmp w0, w19
|
|
beq .L715
|
|
adrp x0, .LANCHOR51
|
|
ldrh w0, [x0, #:lo12:.LANCHOR51]
|
|
cmp w0, w19
|
|
beq .L715
|
|
adrp x0, .LANCHOR52
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w19
|
|
bne .L710
|
|
.L715:
|
|
mov w0, 0
|
|
.L705:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L706:
|
|
mov w0, w19
|
|
bl List_update_data_list
|
|
b .L715
|
|
.size update_vpc_list, .-update_vpc_list
|
|
.section .text.decrement_vpc_count,"ax",@progbits
|
|
.align 2
|
|
.global decrement_vpc_count
|
|
.type decrement_vpc_count, %function
|
|
decrement_vpc_count:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 65535
|
|
str x21, [sp, 32]
|
|
mov w0, 65535
|
|
cmp w19, w0
|
|
beq .L719
|
|
adrp x21, .LANCHOR41
|
|
ubfiz x20, x19, 1, 16
|
|
ldr x1, [x21, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x1, x20]
|
|
cbnz w0, .L720
|
|
mov w2, 0
|
|
mov w1, w19
|
|
adrp x0, .LC21
|
|
add x0, x0, :lo12:.LC21
|
|
bl printf
|
|
ldr x0, [x21, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x0, x20]
|
|
cbz w0, .L721
|
|
.L726:
|
|
mov w20, 0
|
|
.L718:
|
|
mov w0, w20
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L721:
|
|
mov w2, 2853
|
|
adrp x1, .LANCHOR146
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR146
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
b .L726
|
|
.L720:
|
|
sub w0, w0, #1
|
|
strh w0, [x1, x20]
|
|
.L719:
|
|
adrp x21, .LANCHOR130
|
|
mov w1, 65535
|
|
ldrh w0, [x21, #:lo12:.LANCHOR130]
|
|
cmp w0, w1
|
|
bne .L723
|
|
strh w19, [x21, #:lo12:.LANCHOR130]
|
|
b .L726
|
|
.L723:
|
|
cmp w19, w0
|
|
beq .L726
|
|
bl update_vpc_list
|
|
cmp w0, 0
|
|
adrp x1, .LANCHOR39
|
|
adrp x0, .LANCHOR40
|
|
strh w19, [x21, #:lo12:.LANCHOR130]
|
|
cset w20, ne
|
|
ldr x1, [x1, #:lo12:.LANCHOR39]
|
|
ldr x0, [x0, #:lo12:.LANCHOR40]
|
|
sub x0, x0, x1
|
|
mov x1, -6148914691236517206
|
|
asr x0, x0, 1
|
|
movk x1, 0xaaab, lsl 0
|
|
mul x0, x0, x1
|
|
adrp x1, .LANCHOR41
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
and x2, x0, 65535
|
|
ldrh w1, [x1, x2, lsl 1]
|
|
cbnz w1, .L718
|
|
cmp w19, w0, uxth
|
|
beq .L718
|
|
mov w2, 2869
|
|
adrp x1, .LANCHOR146
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR146
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
b .L718
|
|
.size decrement_vpc_count, .-decrement_vpc_count
|
|
.section .text.FtlSuperblockPowerLostFix,"ax",@progbits
|
|
.align 2
|
|
.global FtlSuperblockPowerLostFix
|
|
.type FtlSuperblockPowerLostFix, %function
|
|
FtlSuperblockPowerLostFix:
|
|
stp x29, x30, [sp, -80]!
|
|
adrp x1, .LANCHOR113
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
mov w0, -1
|
|
stp x21, x22, [sp, 32]
|
|
str w0, [x29, 72]
|
|
adrp x0, .LANCHOR105
|
|
ldr x21, [x1, #:lo12:.LANCHOR113]
|
|
mov w1, -3
|
|
ldr x0, [x0, #:lo12:.LANCHOR105]
|
|
adrp x22, .LANCHOR82
|
|
str x21, [x29, 64]
|
|
add x22, x22, :lo12:.LANCHOR82
|
|
str x0, [x29, 56]
|
|
ldrh w20, [x19, 4]
|
|
str w1, [x21, 8]
|
|
mov w1, -2
|
|
str w1, [x21, 12]
|
|
and w20, w20, 1
|
|
ldrh w1, [x19]
|
|
add w20, w20, 6
|
|
strh w1, [x21, 2]
|
|
strh wzr, [x21]
|
|
mov w1, 61589
|
|
str w1, [x0]
|
|
mov w1, 22136
|
|
movk w1, 0x1234, lsl 16
|
|
str w1, [x0, 4]
|
|
.L733:
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L729
|
|
.L730:
|
|
ldrh w0, [x19]
|
|
adrp x1, .LANCHOR41
|
|
ldrh w3, [x19, 4]
|
|
ldr x2, [x1, #:lo12:.LANCHOR41]
|
|
lsl x0, x0, 1
|
|
ldrh w1, [x2, x0]
|
|
sub w1, w1, w3
|
|
strh w1, [x2, x0]
|
|
adrp x0, .LANCHOR18
|
|
strb wzr, [x19, 6]
|
|
strh wzr, [x19, 4]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR18]
|
|
strh w0, [x19, 2]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.L729:
|
|
mov x0, x19
|
|
bl get_new_active_ppa
|
|
str w0, [x29, 52]
|
|
cmn w0, #1
|
|
beq .L730
|
|
ldr w0, [x22]
|
|
mov w3, 0
|
|
str w0, [x21, 4]
|
|
mov w2, 0
|
|
add w0, w0, 1
|
|
mov w1, 1
|
|
cmn w0, #1
|
|
csel w0, w0, wzr, ne
|
|
str w0, [x22]
|
|
add x0, x29, 48
|
|
bl FlashProgPages
|
|
ldrh w0, [x19]
|
|
bl decrement_vpc_count
|
|
subs w20, w20, #1
|
|
bne .L733
|
|
b .L730
|
|
.size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
|
|
.section .text.FtlMakeBbt,"ax",@progbits
|
|
.align 2
|
|
.global FtlMakeBbt
|
|
.type FtlMakeBbt, %function
|
|
FtlMakeBbt:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR36
|
|
stp x23, x24, [sp, 48]
|
|
add x21, x20, :lo12:.LANCHOR36
|
|
stp x25, x26, [sp, 64]
|
|
add x24, x21, 32
|
|
stp x27, x28, [sp, 80]
|
|
bl FtlBbtMemInit
|
|
bl FtlLoadFactoryBbt
|
|
adrp x28, .LANCHOR137
|
|
add x21, x21, 12
|
|
add x25, x28, :lo12:.LANCHOR137
|
|
adrp x0, .LANCHOR9
|
|
add x0, x0, :lo12:.LANCHOR9
|
|
str x0, [x29, 120]
|
|
.L742:
|
|
ldr x0, [x29, 120]
|
|
ldrh w0, [x0]
|
|
cmp w22, w0
|
|
bcc .L748
|
|
adrp x21, .LANCHOR24
|
|
add x21, x21, :lo12:.LANCHOR24
|
|
mov w19, 0
|
|
.L749:
|
|
ldrh w0, [x21]
|
|
cmp w0, w19
|
|
bhi .L750
|
|
add x21, x20, :lo12:.LANCHOR36
|
|
mov w22, 65535
|
|
ldrh w19, [x21, 12]
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
.L751:
|
|
ldrh w0, [x21, 12]
|
|
sub w0, w0, #47
|
|
cmp w0, w19
|
|
bgt .L755
|
|
mov w0, w19
|
|
bl FtlBbmIsBadBlock
|
|
cmp w0, 1
|
|
beq .L752
|
|
mov w0, w19
|
|
bl FlashTestBlk
|
|
cbz w0, .L753
|
|
mov w0, w19
|
|
bl FtlBbmMapBadBlock
|
|
.L752:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L751
|
|
.L748:
|
|
adrp x2, .LANCHOR113
|
|
adrp x0, .LANCHOR105
|
|
add x19, x28, :lo12:.LANCHOR137
|
|
ldrh w1, [x21]
|
|
ldr x0, [x0, #:lo12:.LANCHOR105]
|
|
mov w3, 65535
|
|
ldr x26, [x2, #:lo12:.LANCHOR113]
|
|
cmp w1, w3
|
|
stp x0, x26, [x19, 8]
|
|
adrp x23, .LANCHOR16
|
|
str x2, [x29, 112]
|
|
beq .L743
|
|
ldrh w4, [x23, #:lo12:.LANCHOR16]
|
|
mov w2, 1
|
|
madd w27, w4, w22, w1
|
|
mov w1, w2
|
|
lsl w0, w27, 10
|
|
str w0, [x19, 4]
|
|
mov x0, x19
|
|
bl FlashReadPages
|
|
ldr x1, [x19, 8]
|
|
ldr x0, [x24]
|
|
ldrh w2, [x23, #:lo12:.LANCHOR16]
|
|
add w2, w2, 7
|
|
lsr w2, w2, 3
|
|
bl ftl_memcpy
|
|
.L744:
|
|
mov w0, w27
|
|
add w22, w22, 1
|
|
bl FtlBbmMapBadBlock
|
|
add x24, x24, 8
|
|
add x21, x21, 2
|
|
b .L742
|
|
.L743:
|
|
mov w1, w22
|
|
bl FlashGetBadBlockList
|
|
ldr x0, [x19, 8]
|
|
ldr x1, [x24]
|
|
bl FtlBbt2Bitmap
|
|
ldrh w19, [x23, #:lo12:.LANCHOR16]
|
|
add x23, x23, :lo12:.LANCHOR16
|
|
adrp x0, .LANCHOR126
|
|
sub w19, w19, #1
|
|
add x0, x0, :lo12:.LANCHOR126
|
|
and w19, w19, 65535
|
|
str x0, [x29, 104]
|
|
.L745:
|
|
ldrh w0, [x23]
|
|
madd w0, w22, w0, w19
|
|
bl FtlBbmIsBadBlock
|
|
cmp w0, 1
|
|
beq .L746
|
|
ldr x0, [x29, 112]
|
|
mov w2, 16
|
|
strh w19, [x21]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR113]
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR105
|
|
mov w2, 4096
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR105]
|
|
bl ftl_memset
|
|
mov w0, -3872
|
|
strh w0, [x26]
|
|
ldrh w4, [x23]
|
|
ldrh w0, [x21]
|
|
strh w0, [x26, 2]
|
|
ldr x1, [x24]
|
|
str wzr, [x26, 4]
|
|
madd w27, w4, w22, w0
|
|
lsl w0, w27, 10
|
|
str w0, [x25, 4]
|
|
ldr x0, [x29, 104]
|
|
ldrh w2, [x0]
|
|
ldr x0, [x25, 8]
|
|
lsl w2, w2, 2
|
|
bl ftl_memcpy
|
|
mov w2, 1
|
|
mov x0, x25
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
mov w3, 1
|
|
mov x0, x25
|
|
mov w2, w3
|
|
mov w1, w3
|
|
bl FlashProgPages
|
|
ldr w0, [x25]
|
|
cmn w0, #1
|
|
bne .L744
|
|
mov w0, w27
|
|
bl FtlBbmMapBadBlock
|
|
b .L745
|
|
.L746:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L745
|
|
.L750:
|
|
mov w0, w19
|
|
add w19, w19, 1
|
|
bl FtlBbmMapBadBlock
|
|
and w19, w19, 65535
|
|
b .L749
|
|
.L753:
|
|
ldrh w0, [x21]
|
|
cmp w0, w22
|
|
bne .L754
|
|
strh w19, [x21]
|
|
b .L752
|
|
.L754:
|
|
strh w19, [x21, 4]
|
|
.L755:
|
|
adrp x0, .LANCHOR78
|
|
add x19, x20, :lo12:.LANCHOR36
|
|
ldrh w1, [x20, #:lo12:.LANCHOR36]
|
|
mov w2, 2
|
|
ldr x0, [x0, #:lo12:.LANCHOR78]
|
|
str wzr, [x19, 8]
|
|
lsl w1, w1, 10
|
|
strh wzr, [x19, 2]
|
|
str w1, [x0, 4]
|
|
ldrh w1, [x19, 4]
|
|
lsl w1, w1, 10
|
|
str w1, [x0, 36]
|
|
mov w1, 1
|
|
bl FlashEraseBlocks
|
|
ldrh w0, [x20, #:lo12:.LANCHOR36]
|
|
bl FtlBbmMapBadBlock
|
|
ldrh w0, [x19, 4]
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
strh wzr, [x19, 2]
|
|
ldr w0, [x19, 8]
|
|
ldrh w1, [x19, 4]
|
|
add w0, w0, 1
|
|
str w0, [x19, 8]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR36]
|
|
strh w0, [x19, 4]
|
|
strh w1, [x20, #:lo12:.LANCHOR36]
|
|
bl FtlBbmTblFlush
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.size FtlMakeBbt, .-FtlMakeBbt
|
|
.section .text.ftl_memcmp,"ax",@progbits
|
|
.align 2
|
|
.global ftl_memcmp
|
|
.type ftl_memcmp, %function
|
|
ftl_memcmp:
|
|
uxtw x2, w2
|
|
b memcmp
|
|
.size ftl_memcmp, .-ftl_memcmp
|
|
.section .text.js_hash,"ax",@progbits
|
|
.align 2
|
|
.global js_hash
|
|
.type js_hash, %function
|
|
js_hash:
|
|
mov x4, x0
|
|
mov w0, 42982
|
|
mov x3, 0
|
|
movk w0, 0x47c6, lsl 16
|
|
.L763:
|
|
cmp w1, w3
|
|
bhi .L764
|
|
ret
|
|
.L764:
|
|
lsr w2, w0, 2
|
|
ldrb w5, [x4, x3]
|
|
add w2, w2, w0, lsl 5
|
|
add x3, x3, 1
|
|
add w2, w2, w5
|
|
eor w0, w0, w2
|
|
b .L763
|
|
.size js_hash, .-js_hash
|
|
.section .text.Ftl_write_map_blk_to_last_page,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_write_map_blk_to_last_page
|
|
.type Ftl_write_map_blk_to_last_page, %function
|
|
Ftl_write_map_blk_to_last_page:
|
|
stp x29, x30, [sp, -64]!
|
|
mov w1, 65535
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldr x20, [x0, 16]
|
|
stp x21, x22, [sp, 32]
|
|
ldrh w0, [x0]
|
|
stp x23, x24, [sp, 48]
|
|
cmp w0, w1
|
|
bne .L766
|
|
ldrh w0, [x19, 8]
|
|
cbz w0, .L767
|
|
adrp x1, .LANCHOR147
|
|
adrp x0, .LC1
|
|
mov w2, 641
|
|
add x1, x1, :lo12:.LANCHOR147
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L767:
|
|
ldrh w0, [x19, 8]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 8]
|
|
bl FtlFreeSysBlkQueueOut
|
|
strh w0, [x20]
|
|
ldr w0, [x19, 48]
|
|
strh wzr, [x19, 2]
|
|
add w0, w0, 1
|
|
strh wzr, [x19]
|
|
str w0, [x19, 48]
|
|
.L768:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L766:
|
|
ubfiz x0, x0, 1, 16
|
|
adrp x2, .LANCHOR113
|
|
adrp x24, .LANCHOR105
|
|
ldr x23, [x19, 40]
|
|
ldr x21, [x2, #:lo12:.LANCHOR113]
|
|
ldrh w22, [x20, x0]
|
|
adrp x20, .LANCHOR137
|
|
ldrh w0, [x19, 2]
|
|
add x1, x20, :lo12:.LANCHOR137
|
|
orr w0, w0, w22, lsl 10
|
|
str w0, [x1, 4]
|
|
ldr x0, [x24, #:lo12:.LANCHOR105]
|
|
str x21, [x1, 16]
|
|
str x0, [x1, 8]
|
|
ldr w1, [x19, 48]
|
|
str w1, [x21, 4]
|
|
mov w1, -1291
|
|
strh w1, [x21, 8]
|
|
ldrh w1, [x19, 4]
|
|
strh w1, [x21]
|
|
adrp x1, .LANCHOR19
|
|
strh w22, [x21, 2]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR19]
|
|
mov w1, 255
|
|
lsl w2, w2, 3
|
|
bl ftl_memset
|
|
ldrh w4, [x19, 6]
|
|
mov x0, 0
|
|
ldr x3, [x24, #:lo12:.LANCHOR105]
|
|
mov w1, 0
|
|
.L769:
|
|
cmp w4, w0, uxth
|
|
bhi .L771
|
|
add x20, x20, :lo12:.LANCHOR137
|
|
adrp x0, .LANCHOR22
|
|
ldrh w1, [x0, #:lo12:.LANCHOR22]
|
|
ldr x0, [x20, 8]
|
|
bl js_hash
|
|
str w0, [x21, 12]
|
|
mov w2, 1
|
|
mov w3, 0
|
|
mov w1, w2
|
|
mov x0, x20
|
|
bl FlashProgPages
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
mov x0, x19
|
|
bl ftl_map_blk_gc
|
|
b .L768
|
|
.L771:
|
|
ldr w2, [x23, x0, lsl 2]
|
|
cmp w22, w2, lsr 10
|
|
bne .L770
|
|
add w1, w1, 1
|
|
and w1, w1, 65535
|
|
ubfiz x2, x1, 1, 16
|
|
str w0, [x3, x2, lsl 2]
|
|
add x2, x2, 1
|
|
ldr w5, [x23, x0, lsl 2]
|
|
str w5, [x3, x2, lsl 2]
|
|
.L770:
|
|
add x0, x0, 1
|
|
b .L769
|
|
.size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
|
|
.section .text.FtlMapWritePage,"ax",@progbits
|
|
.align 2
|
|
.global FtlMapWritePage
|
|
.type FtlMapWritePage, %function
|
|
FtlMapWritePage:
|
|
stp x29, x30, [sp, -112]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
mov w24, w1
|
|
stp x21, x22, [sp, 32]
|
|
adrp x23, .LANCHOR148
|
|
stp x25, x26, [sp, 64]
|
|
adrp x22, .LANCHOR87
|
|
stp x27, x28, [sp, 80]
|
|
adrp x25, .LANCHOR19
|
|
stp x19, x20, [sp, 16]
|
|
mov x27, x2
|
|
mov x19, x0
|
|
ubfiz x26, x24, 2, 32
|
|
add x22, x22, :lo12:.LANCHOR87
|
|
add x23, x23, :lo12:.LANCHOR148
|
|
add x28, x25, :lo12:.LANCHOR19
|
|
mov w21, 0
|
|
.L777:
|
|
ldr w0, [x22]
|
|
ldrh w1, [x19, 2]
|
|
add w0, w0, 1
|
|
str w0, [x22]
|
|
ldrh w0, [x25, #:lo12:.LANCHOR19]
|
|
sub w0, w0, #1
|
|
cmp w1, w0
|
|
bge .L778
|
|
ldrh w1, [x19]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L779
|
|
.L778:
|
|
mov x0, x19
|
|
bl Ftl_write_map_blk_to_last_page
|
|
.L779:
|
|
ldrh w1, [x19]
|
|
ldr x0, [x19, 16]
|
|
ldrh w0, [x0, x1, lsl 1]
|
|
cbnz w0, .L780
|
|
adrp x0, .LC1
|
|
mov w2, 700
|
|
mov x1, x23
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L780:
|
|
ldrh w1, [x19]
|
|
ldrh w0, [x19, 10]
|
|
cmp w1, w0
|
|
bcc .L781
|
|
adrp x0, .LC1
|
|
mov w2, 701
|
|
mov x1, x23
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L781:
|
|
ldrh w1, [x19]
|
|
adrp x4, .LANCHOR137
|
|
ldr x0, [x19, 16]
|
|
add x20, x4, :lo12:.LANCHOR137
|
|
str x4, [x29, 96]
|
|
mov w2, 16
|
|
ldrh w3, [x0, x1, lsl 1]
|
|
mov w1, 0
|
|
ldrh w0, [x19, 2]
|
|
str w3, [x29, 104]
|
|
str x27, [x20, 8]
|
|
orr w0, w0, w3, lsl 10
|
|
str w0, [x20, 4]
|
|
adrp x0, .LANCHOR113
|
|
ldr x0, [x0, #:lo12:.LANCHOR113]
|
|
str x0, [x20, 16]
|
|
bl ftl_memset
|
|
ldr x6, [x20, 16]
|
|
ldr w0, [x19, 48]
|
|
ldr w3, [x29, 104]
|
|
str w0, [x6, 4]
|
|
ldrh w0, [x19, 4]
|
|
strh w0, [x6]
|
|
adrp x0, .LANCHOR22
|
|
strh w3, [x6, 2]
|
|
strh w24, [x6, 8]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR22]
|
|
ldr x0, [x20, 8]
|
|
bl js_hash
|
|
str w0, [x6, 12]
|
|
mov w3, 1
|
|
mov x0, x20
|
|
mov w1, w3
|
|
mov w2, w3
|
|
bl FlashProgPages
|
|
ldr x4, [x29, 96]
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
ldr w1, [x4, #:lo12:.LANCHOR137]
|
|
strh w0, [x19, 2]
|
|
cmn w1, #1
|
|
bne .L782
|
|
ldr w1, [x20, 4]
|
|
adrp x0, .LC22
|
|
str x4, [x29, 104]
|
|
add x0, x0, :lo12:.LC22
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
bl printf
|
|
ldrh w0, [x19, 2]
|
|
ldr x2, [x29, 104]
|
|
cmp w0, 2
|
|
bhi .L783
|
|
ldrh w0, [x28]
|
|
sub w0, w0, #1
|
|
strh w0, [x19, 2]
|
|
.L783:
|
|
cmp w21, 3
|
|
bls .L784
|
|
add x0, x2, :lo12:.LANCHOR137
|
|
mov w2, w21
|
|
ldr w1, [x0, 4]
|
|
adrp x0, .LC23
|
|
add x0, x0, :lo12:.LC23
|
|
bl printf
|
|
.L785:
|
|
b .L785
|
|
.L784:
|
|
ldr w0, [x19, 52]
|
|
cbz w0, .L777
|
|
.L800:
|
|
b .L800
|
|
.L782:
|
|
ldr x1, [x19, 40]
|
|
cmp w0, 1
|
|
ldr w2, [x20, 4]
|
|
str w2, [x1, x26]
|
|
beq .L788
|
|
ldr w0, [x4, #:lo12:.LANCHOR137]
|
|
cmp w0, 256
|
|
beq .L788
|
|
ldr w1, [x19, 56]
|
|
cbz w1, .L789
|
|
.L788:
|
|
str wzr, [x19, 56]
|
|
b .L777
|
|
.L789:
|
|
cmn w0, #1
|
|
bne .L790
|
|
adrp x1, .LANCHOR148
|
|
adrp x0, .LC1
|
|
mov w2, 745
|
|
add x1, x1, :lo12:.LANCHOR148
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L790:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 112
|
|
ret
|
|
.size FtlMapWritePage, .-FtlMapWritePage
|
|
.section .text.load_l2p_region,"ax",@progbits
|
|
.align 2
|
|
.global load_l2p_region
|
|
.type load_l2p_region, %function
|
|
load_l2p_region:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR31
|
|
stp x19, x20, [sp, 16]
|
|
and w20, w0, 65535
|
|
stp x21, x22, [sp, 32]
|
|
and x19, x1, 65535
|
|
ldrh w0, [x24, #:lo12:.LANCHOR31]
|
|
stp x25, x26, [sp, 64]
|
|
str x27, [sp, 80]
|
|
cmp w0, w20
|
|
bcs .L803
|
|
adrp x1, .LANCHOR149
|
|
adrp x0, .LC1
|
|
mov w2, 485
|
|
add x1, x1, :lo12:.LANCHOR149
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L803:
|
|
adrp x27, .LANCHOR123
|
|
ubfiz x0, x20, 2, 16
|
|
adrp x22, .LANCHOR54
|
|
ldr x1, [x27, #:lo12:.LANCHOR123]
|
|
ldr w23, [x1, x0]
|
|
cbnz w23, .L804
|
|
ldr x0, [x22, #:lo12:.LANCHOR54]
|
|
lsl x19, x19, 4
|
|
adrp x1, .LANCHOR22
|
|
add x0, x0, x19
|
|
ldrh w2, [x1, #:lo12:.LANCHOR22]
|
|
mov w1, 255
|
|
ldr x0, [x0, 8]
|
|
bl ftl_memset
|
|
ldr x0, [x22, #:lo12:.LANCHOR54]
|
|
add x1, x0, x19
|
|
strh w20, [x0, x19]
|
|
str wzr, [x1, 4]
|
|
.L805:
|
|
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
|
|
.L804:
|
|
ldr x0, [x22, #:lo12:.LANCHOR54]
|
|
lsl x19, x19, 4
|
|
adrp x26, .LANCHOR137
|
|
add x21, x26, :lo12:.LANCHOR137
|
|
add x0, x0, x19
|
|
mov w2, 1
|
|
mov w1, w2
|
|
str w23, [x21, 4]
|
|
ldr x0, [x0, 8]
|
|
str x0, [x21, 8]
|
|
adrp x0, .LANCHOR113
|
|
ldr x0, [x0, #:lo12:.LANCHOR113]
|
|
str x0, [x21, 16]
|
|
mov x0, x21
|
|
bl FlashReadPages
|
|
ldr x25, [x21, 16]
|
|
ldrh w0, [x25, 8]
|
|
cmp w0, w20
|
|
beq .L806
|
|
mov w2, w23
|
|
mov w1, w20
|
|
adrp x0, .LC24
|
|
add x0, x0, :lo12:.LC24
|
|
bl printf
|
|
ldr x1, [x21, 16]
|
|
mov w3, 4
|
|
adrp x0, .LC13
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC13
|
|
bl rknand_print_hex
|
|
ldrh w3, [x24, #:lo12:.LANCHOR31]
|
|
adrp x0, .LC25
|
|
ldr x1, [x27, #:lo12:.LANCHOR123]
|
|
mov w2, 4
|
|
add x0, x0, :lo12:.LC25
|
|
bl rknand_print_hex
|
|
.L807:
|
|
ldrh w0, [x25, 8]
|
|
cmp w0, w20
|
|
beq .L808
|
|
adrp x1, .LANCHOR149
|
|
adrp x0, .LC1
|
|
mov w2, 508
|
|
add x1, x1, :lo12:.LANCHOR149
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L808:
|
|
ldr x0, [x22, #:lo12:.LANCHOR54]
|
|
add x1, x0, x19
|
|
str wzr, [x1, 4]
|
|
strh w20, [x0, x19]
|
|
b .L805
|
|
.L806:
|
|
ldr w0, [x26, #:lo12:.LANCHOR137]
|
|
cmp w0, 256
|
|
bne .L807
|
|
mov w2, w23
|
|
mov w1, w20
|
|
adrp x0, .LC26
|
|
add x0, x0, :lo12:.LC26
|
|
bl printf
|
|
ldr x0, [x22, #:lo12:.LANCHOR54]
|
|
mov w1, w20
|
|
add x0, x0, x19
|
|
ldr x2, [x0, 8]
|
|
adrp x0, .LANCHOR128
|
|
add x0, x0, :lo12:.LANCHOR128
|
|
bl FtlMapWritePage
|
|
b .L807
|
|
.size load_l2p_region, .-load_l2p_region
|
|
.section .text.ftl_map_blk_gc,"ax",@progbits
|
|
.align 2
|
|
.global ftl_map_blk_gc
|
|
.type ftl_map_blk_gc, %function
|
|
ftl_map_blk_gc:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR19
|
|
stp x25, x26, [sp, 64]
|
|
stp x21, x22, [sp, 32]
|
|
stp x27, x28, [sp, 80]
|
|
ldr x20, [x0, 16]
|
|
ldr x25, [x0, 40]
|
|
bl ftl_free_no_use_map_blk
|
|
ldrh w1, [x19, 10]
|
|
ldrh w2, [x19, 8]
|
|
sub w1, w1, #5
|
|
cmp w2, w1
|
|
blt .L811
|
|
ubfiz x0, x0, 1, 16
|
|
ldrh w22, [x20, x0]
|
|
cbz w22, .L811
|
|
ldr w1, [x19, 52]
|
|
cbnz w1, .L811
|
|
mov w1, 1
|
|
str w1, [x19, 52]
|
|
strh wzr, [x20, x0]
|
|
ldrh w0, [x19, 8]
|
|
ldrh w1, [x19, 2]
|
|
sub w0, w0, #1
|
|
strh w0, [x19, 8]
|
|
ldrh w0, [x24, #:lo12:.LANCHOR19]
|
|
cmp w1, w0
|
|
bcc .L812
|
|
mov x0, x19
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L812:
|
|
adrp x26, .LANCHOR137
|
|
adrp x23, .LANCHOR150
|
|
add x27, x26, :lo12:.LANCHOR137
|
|
add x23, x23, :lo12:.LANCHOR150
|
|
mov w20, 0
|
|
.L813:
|
|
ldrh w0, [x19, 6]
|
|
cmp w0, w20
|
|
bhi .L820
|
|
mov w1, 1
|
|
mov w0, w22
|
|
bl FtlFreeSysBlkQueueIn
|
|
str wzr, [x19, 52]
|
|
.L811:
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x24, #:lo12:.LANCHOR19]
|
|
cmp w1, w0
|
|
bcc .L821
|
|
mov x0, x19
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L821:
|
|
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
|
|
.L820:
|
|
ubfiz x0, x20, 2, 16
|
|
add x28, x25, x0
|
|
ldr w1, [x25, x0]
|
|
cmp w22, w1, lsr 10
|
|
bne .L814
|
|
adrp x2, .LANCHOR106
|
|
add x0, x26, :lo12:.LANCHOR137
|
|
ldr x2, [x2, #:lo12:.LANCHOR106]
|
|
str x2, [x0, 8]
|
|
adrp x2, .LANCHOR113
|
|
str w1, [x0, 4]
|
|
ldr x21, [x2, #:lo12:.LANCHOR113]
|
|
mov w2, 1
|
|
str x21, [x0, 16]
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
ldrh w0, [x21, 8]
|
|
cmp w0, w20
|
|
beq .L815
|
|
adrp x0, .LC1
|
|
mov w2, 611
|
|
mov x1, x23
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L815:
|
|
ldr w0, [x27]
|
|
cmn w0, #1
|
|
bne .L816
|
|
.L818:
|
|
str wzr, [x28]
|
|
.L817:
|
|
b .L817
|
|
.L816:
|
|
ldrh w0, [x21, 8]
|
|
cmp w0, w20
|
|
bne .L818
|
|
ldrh w1, [x21]
|
|
ldrh w0, [x19, 4]
|
|
cmp w1, w0
|
|
bne .L818
|
|
ldr x2, [x27, 8]
|
|
mov w1, w20
|
|
mov x0, x19
|
|
bl FtlMapWritePage
|
|
.L814:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L813
|
|
.size ftl_map_blk_gc, .-ftl_map_blk_gc
|
|
.section .text.flush_l2p_region,"ax",@progbits
|
|
.align 2
|
|
.global flush_l2p_region
|
|
.type flush_l2p_region, %function
|
|
flush_l2p_region:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR54
|
|
ubfiz x19, x0, 4, 16
|
|
ldr x0, [x20, #:lo12:.LANCHOR54]
|
|
add x1, x0, x19
|
|
ldr x2, [x1, 8]
|
|
ldrh w1, [x0, x19]
|
|
adrp x0, .LANCHOR128
|
|
add x0, x0, :lo12:.LANCHOR128
|
|
bl FtlMapWritePage
|
|
ldr x0, [x20, #:lo12:.LANCHOR54]
|
|
add x0, x0, x19
|
|
ldp x19, x20, [sp, 16]
|
|
ldr w1, [x0, 4]
|
|
and w1, w1, 2147483647
|
|
str w1, [x0, 4]
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size flush_l2p_region, .-flush_l2p_region
|
|
.section .text.l2p_flush,"ax",@progbits
|
|
.align 2
|
|
.global l2p_flush
|
|
.type l2p_flush, %function
|
|
l2p_flush:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR32
|
|
add x20, x20, :lo12:.LANCHOR32
|
|
str x21, [sp, 32]
|
|
mov w19, 0
|
|
adrp x21, .LANCHOR54
|
|
.L830:
|
|
ldrh w0, [x20]
|
|
cmp w0, w19
|
|
bhi .L832
|
|
mov w0, 0
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L832:
|
|
ldr x1, [x21, #:lo12:.LANCHOR54]
|
|
ubfiz x0, x19, 4, 16
|
|
add x0, x1, x0
|
|
ldr w0, [x0, 4]
|
|
tbz w0, #31, .L831
|
|
mov w0, w19
|
|
bl flush_l2p_region
|
|
.L831:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L830
|
|
.size l2p_flush, .-l2p_flush
|
|
.section .text.log2phys,"ax",@progbits
|
|
.align 2
|
|
.global log2phys
|
|
.type log2phys, %function
|
|
log2phys:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
mov w25, w0
|
|
adrp x0, .LANCHOR21
|
|
stp x23, x24, [sp, 48]
|
|
stp x19, x20, [sp, 16]
|
|
mov x20, x1
|
|
ldrh w24, [x0, #:lo12:.LANCHOR21]
|
|
adrp x0, .LANCHOR151
|
|
stp x21, x22, [sp, 32]
|
|
mov x19, x0
|
|
ldr w1, [x0, #:lo12:.LANCHOR151]
|
|
mov w21, w2
|
|
cmp w25, w1
|
|
bcc .L835
|
|
adrp x1, .LANCHOR152
|
|
adrp x0, .LC1
|
|
mov w2, 820
|
|
add x1, x1, :lo12:.LANCHOR152
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L835:
|
|
ldr w0, [x19, #:lo12:.LANCHOR151]
|
|
cmp w25, w0
|
|
bcs .L836
|
|
adrp x23, .LANCHOR54
|
|
add w24, w24, 7
|
|
adrp x0, .LANCHOR32
|
|
ldr x2, [x23, #:lo12:.LANCHOR54]
|
|
lsr w22, w25, w24
|
|
and w22, w22, 65535
|
|
ldrh w1, [x0, #:lo12:.LANCHOR32]
|
|
mov x0, 0
|
|
.L837:
|
|
and x19, x0, 65535
|
|
cmp w19, w1
|
|
bcc .L842
|
|
bl select_l2p_ram_region
|
|
and x19, x0, 65535
|
|
ldr x2, [x23, #:lo12:.LANCHOR54]
|
|
ubfiz x1, x19, 4, 16
|
|
mov w26, w0
|
|
add x3, x2, x1
|
|
ldrh w2, [x2, x1]
|
|
mov w1, 65535
|
|
cmp w2, w1
|
|
beq .L843
|
|
ldr w1, [x3, 4]
|
|
tbz w1, #31, .L843
|
|
bl flush_l2p_region
|
|
.L843:
|
|
mov w1, w26
|
|
mov w0, w22
|
|
bl load_l2p_region
|
|
b .L839
|
|
.L836:
|
|
mov w0, -1
|
|
cbnz w21, .L834
|
|
str w0, [x20]
|
|
.L834:
|
|
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
|
|
.L842:
|
|
add x0, x0, 1
|
|
add x3, x2, x0, lsl 4
|
|
ldrh w3, [x3, -16]
|
|
cmp w3, w22
|
|
bne .L837
|
|
.L839:
|
|
mov x0, 1
|
|
ldr x1, [x23, #:lo12:.LANCHOR54]
|
|
lsl x0, x0, x24
|
|
sub w0, w0, #1
|
|
and w0, w0, w25
|
|
and x0, x0, 65535
|
|
add x1, x1, x19, lsl 4
|
|
cbnz w21, .L840
|
|
ldr x1, [x1, 8]
|
|
ldr w0, [x1, x0, lsl 2]
|
|
str w0, [x20]
|
|
.L841:
|
|
ldr x0, [x23, #:lo12:.LANCHOR54]
|
|
add x19, x0, x19, lsl 4
|
|
ldr w0, [x19, 4]
|
|
cmn w0, #1
|
|
beq .L845
|
|
add w0, w0, 1
|
|
str w0, [x19, 4]
|
|
.L845:
|
|
mov w0, 0
|
|
b .L834
|
|
.L840:
|
|
ldr x2, [x1, 8]
|
|
ldr w3, [x20]
|
|
str w3, [x2, x0, lsl 2]
|
|
ldr w0, [x1, 4]
|
|
orr w0, w0, -2147483648
|
|
str w0, [x1, 4]
|
|
adrp x0, .LANCHOR55
|
|
strh w22, [x0, #:lo12:.LANCHOR55]
|
|
b .L841
|
|
.size log2phys, .-log2phys
|
|
.section .text.FtlReUsePrevPpa,"ax",@progbits
|
|
.align 2
|
|
.global FtlReUsePrevPpa
|
|
.type FtlReUsePrevPpa, %function
|
|
FtlReUsePrevPpa:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR41
|
|
stp x19, x20, [sp, 16]
|
|
mov w21, w0
|
|
str w1, [x29, 76]
|
|
lsr w0, w1, 10
|
|
str x23, [sp, 48]
|
|
bl P2V_block_in_plane
|
|
ldr x2, [x22, #:lo12:.LANCHOR41]
|
|
and w3, w0, 65535
|
|
ubfiz x20, x3, 1, 16
|
|
ldrh w1, [x2, x20]
|
|
cbnz w1, .L849
|
|
adrp x0, .LANCHOR45
|
|
ldr x19, [x0, #:lo12:.LANCHOR45]
|
|
cbz x19, .L850
|
|
adrp x2, .LANCHOR39
|
|
mov x5, -6148914691236517206
|
|
movk x5, 0xaaab, lsl 0
|
|
adrp x23, .LANCHOR47
|
|
ldr x2, [x2, #:lo12:.LANCHOR39]
|
|
mov w6, 65535
|
|
ldrh w4, [x23, #:lo12:.LANCHOR47]
|
|
sub x19, x19, x2
|
|
asr x19, x19, 1
|
|
mul x19, x19, x5
|
|
mov w5, 6
|
|
and w19, w19, 65535
|
|
.L851:
|
|
cmp w1, w4
|
|
beq .L850
|
|
cmp w19, w3
|
|
bne .L852
|
|
mov w1, w19
|
|
add x0, x0, :lo12:.LANCHOR45
|
|
bl List_remove_node
|
|
ldrh w0, [x23, #:lo12:.LANCHOR47]
|
|
cbnz w0, .L853
|
|
adrp x1, .LANCHOR153
|
|
adrp x0, .LC1
|
|
mov w2, 1742
|
|
add x1, x1, :lo12:.LANCHOR153
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L853:
|
|
ldrh w0, [x23, #:lo12:.LANCHOR47]
|
|
sub w0, w0, #1
|
|
strh w0, [x23, #:lo12:.LANCHOR47]
|
|
mov w0, w19
|
|
bl INSERT_DATA_LIST
|
|
ldr x1, [x22, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x1, x20]
|
|
add w0, w0, 1
|
|
strh w0, [x1, x20]
|
|
.L850:
|
|
add x1, x29, 76
|
|
mov w2, 1
|
|
mov w0, w21
|
|
bl log2phys
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldr x23, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.L852:
|
|
umull x19, w19, w5
|
|
ldrh w19, [x2, x19]
|
|
cmp w19, w6
|
|
beq .L850
|
|
add w1, w1, 1
|
|
and w1, w1, 65535
|
|
b .L851
|
|
.L849:
|
|
add w1, w1, 1
|
|
strh w1, [x2, x20]
|
|
b .L850
|
|
.size FtlReUsePrevPpa, .-FtlReUsePrevPpa
|
|
.section .text.FtlRecoverySuperblock,"ax",@progbits
|
|
.align 2
|
|
.global FtlRecoverySuperblock
|
|
.type FtlRecoverySuperblock, %function
|
|
FtlRecoverySuperblock:
|
|
stp x29, x30, [sp, -192]!
|
|
mov w1, 65535
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
stp x21, x22, [sp, 32]
|
|
ldrh w0, [x0]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
cmp w0, w1
|
|
stp x27, x28, [sp, 80]
|
|
beq .L986
|
|
ldrb w0, [x19, 6]
|
|
str w0, [x29, 164]
|
|
adrp x0, .LANCHOR18
|
|
ldrh w26, [x19, 2]
|
|
str x0, [x29, 128]
|
|
ldrh w2, [x0, #:lo12:.LANCHOR18]
|
|
cmp w2, w26
|
|
bne .L862
|
|
strh wzr, [x19, 4]
|
|
.L993:
|
|
strb wzr, [x19, 6]
|
|
.L986:
|
|
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], 192
|
|
ret
|
|
.L862:
|
|
ldrh w0, [x19, 16]
|
|
mov w20, 0
|
|
.L863:
|
|
cmp w0, w1
|
|
beq .L864
|
|
mov w1, 1
|
|
bl FtlGetLastWrittenPage
|
|
mov w23, w0
|
|
cmn w0, #1
|
|
beq .L865
|
|
adrp x1, .LANCHOR63
|
|
adrp x2, .LANCHOR2
|
|
adrp x20, .LANCHOR102
|
|
add x4, x19, 16
|
|
ldr x5, [x1, #:lo12:.LANCHOR63]
|
|
adrp x1, .LANCHOR22
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
mov w22, 0
|
|
ldrh w6, [x1, #:lo12:.LANCHOR22]
|
|
adrp x1, .LANCHOR64
|
|
mov w10, 65535
|
|
str x2, [x29, 152]
|
|
ldr x7, [x1, #:lo12:.LANCHOR64]
|
|
adrp x1, .LANCHOR23
|
|
ldrh w8, [x1, #:lo12:.LANCHOR23]
|
|
add x1, x19, 16
|
|
str x1, [x29, 168]
|
|
ldrh w1, [x2, #:lo12:.LANCHOR2]
|
|
add x1, x1, 8
|
|
add x1, x19, x1, lsl 1
|
|
.L866:
|
|
cmp x4, x1
|
|
bne .L870
|
|
mov w2, 0
|
|
mov w1, w22
|
|
bl FlashReadPages
|
|
adrp x0, .LANCHOR82
|
|
ldr x4, [x20, #:lo12:.LANCHOR102]
|
|
and w10, w23, 65535
|
|
add x7, x0, :lo12:.LANCHOR82
|
|
ldr w21, [x0, #:lo12:.LANCHOR82]
|
|
mov x11, x4
|
|
mov w6, 65535
|
|
mov w3, 0
|
|
sub w21, w21, #1
|
|
str x0, [x29, 144]
|
|
.L871:
|
|
cmp w22, w3
|
|
bne .L876
|
|
add w22, w23, 1
|
|
ldr w0, [x4, 4]
|
|
and w22, w22, 65535
|
|
.L988:
|
|
lsr w0, w0, 10
|
|
bl P2V_plane
|
|
and w27, w0, 65535
|
|
ldr x0, [x29, 128]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR18]
|
|
cmp w0, w22
|
|
bne .L878
|
|
strh w22, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
strh wzr, [x19, 4]
|
|
.L878:
|
|
ldr w0, [x29, 164]
|
|
cmp w22, w26
|
|
cset w1, eq
|
|
cmp w27, w0
|
|
cset w0, eq
|
|
tst w1, w0
|
|
beq .L879
|
|
.L994:
|
|
mov w2, w27
|
|
mov w1, w22
|
|
mov x0, x19
|
|
bl ftl_sb_update_avl_pages
|
|
b .L986
|
|
.L864:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
add x0, x19, x20, sxtw 1
|
|
ldrh w0, [x0, 16]
|
|
b .L863
|
|
.L865:
|
|
cbz w26, .L867
|
|
adrp x1, .LANCHOR154
|
|
adrp x0, .LC1
|
|
mov w2, 1809
|
|
add x1, x1, :lo12:.LANCHOR154
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L867:
|
|
ldr w0, [x29, 164]
|
|
cmp w0, 0
|
|
ccmp w20, w0, 4, ne
|
|
beq .L868
|
|
adrp x1, .LANCHOR154
|
|
adrp x0, .LC1
|
|
mov w2, 1810
|
|
add x1, x1, :lo12:.LANCHOR154
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L868:
|
|
strh wzr, [x19, 2]
|
|
b .L993
|
|
.L870:
|
|
ldrh w3, [x4]
|
|
cmp w3, w10
|
|
beq .L869
|
|
ubfiz x2, x22, 5, 16
|
|
orr w3, w23, w3, lsl 10
|
|
add x2, x0, x2
|
|
str w3, [x2, 4]
|
|
mul w3, w22, w6
|
|
asr w3, w3, 2
|
|
add x3, x5, x3, sxtw 2
|
|
str x3, [x2, 8]
|
|
mul w3, w22, w8
|
|
add w22, w22, 1
|
|
and w22, w22, 65535
|
|
asr w3, w3, 2
|
|
add x3, x7, x3, sxtw 2
|
|
str x3, [x2, 16]
|
|
.L869:
|
|
add x4, x4, 2
|
|
b .L866
|
|
.L876:
|
|
ldr w0, [x11]
|
|
cbnz w0, .L872
|
|
ldr x8, [x11, 16]
|
|
ldr w5, [x8, 4]
|
|
cmn w5, #1
|
|
beq .L873
|
|
ldr w1, [x7]
|
|
mov w0, w5
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L873
|
|
add w5, w5, 1
|
|
str w5, [x7]
|
|
.L873:
|
|
ldr w0, [x8]
|
|
cmn w0, #1
|
|
bne .L875
|
|
ubfiz x3, x3, 5, 16
|
|
and w22, w23, 65535
|
|
add x3, x4, x3
|
|
ldr w0, [x3, 4]
|
|
b .L988
|
|
.L872:
|
|
mov w6, w10
|
|
.L875:
|
|
add w3, w3, 1
|
|
add x11, x11, 32
|
|
and w3, w3, 65535
|
|
b .L871
|
|
.L879:
|
|
mov w0, 65535
|
|
cmp w6, w0
|
|
bne .L880
|
|
ldrb w0, [x19, 8]
|
|
cbnz w0, .L881
|
|
.L880:
|
|
adrp x25, .LANCHOR133
|
|
and w28, w23, 65535
|
|
ldr w0, [x25, #:lo12:.LANCHOR133]
|
|
cmn w0, #1
|
|
bne .L882
|
|
str w21, [x25, #:lo12:.LANCHOR133]
|
|
.L882:
|
|
add w0, w26, 7
|
|
cmp w0, w23, uxth
|
|
bge .L932
|
|
sub w24, w28, #7
|
|
and w24, w24, 65535
|
|
.L883:
|
|
ldr x0, [x29, 152]
|
|
mov w3, 65535
|
|
mov w5, 1
|
|
add x4, x0, :lo12:.LANCHOR2
|
|
.L884:
|
|
cmp w24, w28
|
|
bhi .L894
|
|
ldrh w1, [x4]
|
|
mov w23, 0
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
add x1, x1, 8
|
|
ldr x2, [x29, 168]
|
|
add x1, x19, x1, lsl 1
|
|
b .L895
|
|
.L932:
|
|
mov w24, w26
|
|
b .L883
|
|
.L886:
|
|
ldrh w6, [x2]
|
|
cmp w6, w3
|
|
beq .L885
|
|
ubfiz x7, x23, 5, 16
|
|
add w23, w23, 1
|
|
add x7, x0, x7
|
|
and w23, w23, 65535
|
|
orr w6, w24, w6, lsl 10
|
|
str w6, [x7, 4]
|
|
.L885:
|
|
add x2, x2, 2
|
|
.L895:
|
|
cmp x1, x2
|
|
bne .L886
|
|
mov w1, w23
|
|
mov w2, 0
|
|
str w5, [x29, 112]
|
|
ubfiz x23, x23, 5, 16
|
|
str w3, [x29, 120]
|
|
add x23, x23, 16
|
|
str x4, [x29, 136]
|
|
bl FlashReadPages
|
|
ldr x2, [x20, #:lo12:.LANCHOR102]
|
|
ldr w1, [x25, #:lo12:.LANCHOR133]
|
|
ldr w5, [x29, 112]
|
|
add x0, x2, 16
|
|
ldr w3, [x29, 120]
|
|
add x23, x2, x23
|
|
ldr x4, [x29, 136]
|
|
mov w2, 0
|
|
.L887:
|
|
cmp x23, x0
|
|
bne .L892
|
|
cbz w2, .L893
|
|
str w1, [x25, #:lo12:.LANCHOR133]
|
|
.L893:
|
|
add w24, w24, 1
|
|
and w24, w24, 65535
|
|
b .L884
|
|
.L892:
|
|
ldr w6, [x0, -16]
|
|
cbz w6, .L888
|
|
cbz w2, .L881
|
|
str w1, [x25, #:lo12:.LANCHOR133]
|
|
.L881:
|
|
adrp x0, .LANCHOR155
|
|
mov w23, w26
|
|
mov w1, 1
|
|
adrp x28, .LANCHOR133
|
|
strh w1, [x0, #:lo12:.LANCHOR155]
|
|
add x0, x28, :lo12:.LANCHOR133
|
|
str x0, [x29, 104]
|
|
.L896:
|
|
ldr x1, [x29, 152]
|
|
mov w24, 0
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
mov w5, 65535
|
|
ldr x2, [x29, 168]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR2]
|
|
add x1, x1, 8
|
|
add x1, x19, x1, lsl 1
|
|
.L897:
|
|
cmp x1, x2
|
|
bne .L899
|
|
mov w2, 0
|
|
mov w1, w24
|
|
bl FlashReadPages
|
|
mov x25, 0
|
|
ubfiz x0, x24, 5, 16
|
|
str x0, [x29, 112]
|
|
adrp x0, .LANCHOR156
|
|
add x0, x0, :lo12:.LANCHOR156
|
|
str x0, [x29, 120]
|
|
.L900:
|
|
ldr x0, [x29, 112]
|
|
cmp x25, x0
|
|
bne .L926
|
|
ldr x0, [x29, 128]
|
|
add w23, w23, 1
|
|
and w23, w23, 65535
|
|
ldrh w0, [x0, #:lo12:.LANCHOR18]
|
|
cmp w0, w23
|
|
bne .L896
|
|
ldr x0, [x29, 152]
|
|
mov w2, 65535
|
|
strh w23, [x19, 2]
|
|
strh wzr, [x19, 4]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR2]
|
|
mov w0, 0
|
|
.L927:
|
|
cmp w0, w1
|
|
beq .L986
|
|
ldr x4, [x29, 168]
|
|
ldrh w3, [x4], 2
|
|
str x4, [x29, 168]
|
|
cmp w3, w2
|
|
beq .L928
|
|
strb w0, [x19, 6]
|
|
b .L986
|
|
.L888:
|
|
ldr x6, [x0]
|
|
ldrh w7, [x6]
|
|
cmp w7, w3
|
|
beq .L891
|
|
ldr w6, [x6, 4]
|
|
cmn w6, #1
|
|
csel w1, w1, w6, eq
|
|
csel w2, w2, w5, eq
|
|
.L891:
|
|
add x0, x0, 32
|
|
b .L887
|
|
.L894:
|
|
mov w0, -1
|
|
str w0, [x25, #:lo12:.LANCHOR133]
|
|
b .L881
|
|
.L899:
|
|
ldrh w3, [x2]
|
|
cmp w3, w5
|
|
beq .L898
|
|
ubfiz x4, x24, 5, 16
|
|
add w24, w24, 1
|
|
add x4, x0, x4
|
|
and w24, w24, 65535
|
|
orr w3, w23, w3, lsl 10
|
|
str w3, [x4, 4]
|
|
.L898:
|
|
add x2, x2, 2
|
|
b .L897
|
|
.L926:
|
|
ldr x4, [x20, #:lo12:.LANCHOR102]
|
|
add x4, x4, x25
|
|
ldr w5, [x4, 4]
|
|
str w5, [x29, 188]
|
|
lsr w0, w5, 10
|
|
bl P2V_plane
|
|
and w0, w0, 65535
|
|
cmp w23, w26
|
|
bcc .L901
|
|
ldr w1, [x29, 164]
|
|
ccmp w1, w0, 0, eq
|
|
bhi .L901
|
|
cmp w23, w22
|
|
ccmp w27, w0, 0, eq
|
|
beq .L902
|
|
ldr w0, [x4]
|
|
cmn w0, #1
|
|
beq .L903
|
|
ldr x3, [x4, 16]
|
|
mov w0, 61589
|
|
ldrh w1, [x3]
|
|
cmp w1, w0
|
|
beq .L904
|
|
ldrh w0, [x19]
|
|
.L990:
|
|
bl decrement_vpc_count
|
|
b .L901
|
|
.L904:
|
|
ldr w21, [x3, 4]
|
|
cmn w21, #1
|
|
beq .L905
|
|
ldr x0, [x29, 144]
|
|
ldr w1, [x0, #:lo12:.LANCHOR82]
|
|
mov w0, w21
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L905
|
|
ldr x1, [x29, 144]
|
|
add w0, w21, 1
|
|
str w0, [x1, #:lo12:.LANCHOR82]
|
|
.L905:
|
|
ldp w24, w0, [x3, 8]
|
|
add x1, x29, 184
|
|
str w0, [x29, 180]
|
|
mov w2, 0
|
|
mov w0, w24
|
|
bl log2phys
|
|
ldr w1, [x28, #:lo12:.LANCHOR133]
|
|
ldr w3, [x29, 180]
|
|
cmn w1, #1
|
|
beq .L906
|
|
mov w0, w21
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L906
|
|
cmn w3, #1
|
|
beq .L907
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
mov w2, 0
|
|
mov w1, 1
|
|
add x0, x0, x25
|
|
ldr x4, [x0, 16]
|
|
str w3, [x0, 4]
|
|
str x4, [x29, 136]
|
|
bl FlashReadPages
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
ldr x4, [x29, 136]
|
|
add x3, x0, x25
|
|
ldr w0, [x0, x25]
|
|
cmn w0, #1
|
|
bne .L908
|
|
.L909:
|
|
mov w0, -1
|
|
str w0, [x29, 180]
|
|
.L916:
|
|
ldr w3, [x29, 180]
|
|
cmn w3, #1
|
|
beq .L901
|
|
.L931:
|
|
lsr w0, w3, 10
|
|
bl P2V_block_in_plane
|
|
and w24, w0, 65535
|
|
adrp x0, .LANCHOR4
|
|
mov w3, w24
|
|
ldrh w0, [x0, #:lo12:.LANCHOR4]
|
|
cmp w0, w24
|
|
bhi .L922
|
|
mov w2, 2066
|
|
adrp x1, .LANCHOR154
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR154
|
|
add x0, x0, :lo12:.LC1
|
|
str w24, [x29, 136]
|
|
bl printf
|
|
ldr w3, [x29, 136]
|
|
.L922:
|
|
adrp x1, .LANCHOR41
|
|
ubfiz x0, x24, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x1, x0]
|
|
cbz w0, .L923
|
|
mov w0, w3
|
|
b .L990
|
|
.L907:
|
|
ldp w1, w0, [x29, 184]
|
|
cmp w1, w0
|
|
bne .L901
|
|
mov w2, 1
|
|
add x1, x29, 180
|
|
mov w0, w24
|
|
bl log2phys
|
|
.L901:
|
|
add x25, x25, 32
|
|
b .L900
|
|
.L908:
|
|
ldr w0, [x4, 8]
|
|
cmp w24, w0
|
|
bne .L909
|
|
ldr w0, [x4, 4]
|
|
str w0, [x29, 136]
|
|
str x4, [x29, 96]
|
|
uxtw x1, w0
|
|
ldr w0, [x28, #:lo12:.LANCHOR133]
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L909
|
|
ldp w0, w1, [x29, 184]
|
|
ldr x4, [x29, 96]
|
|
cmp w0, w1
|
|
ldr w1, [x29, 180]
|
|
bne .L911
|
|
.L989:
|
|
mov w0, w24
|
|
bl FtlReUsePrevPpa
|
|
b .L909
|
|
.L911:
|
|
cmp w0, w1
|
|
beq .L909
|
|
cmn w0, #1
|
|
beq .L912
|
|
ldr x4, [x3, 16]
|
|
mov w2, 0
|
|
str w0, [x3, 4]
|
|
mov w1, 1
|
|
str x4, [x29, 96]
|
|
mov x0, x3
|
|
bl FlashReadPages
|
|
ldr x4, [x29, 96]
|
|
.L913:
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
ldr w0, [x0, x25]
|
|
cmn w0, #1
|
|
beq .L914
|
|
ldr x0, [x29, 104]
|
|
ldr w3, [x4, 4]
|
|
mov w1, w3
|
|
ldr w0, [x0]
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L914
|
|
ldr w0, [x29, 136]
|
|
mov w1, w3
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L909
|
|
.L914:
|
|
ldr w1, [x29, 180]
|
|
b .L989
|
|
.L912:
|
|
str w0, [x3]
|
|
b .L913
|
|
.L906:
|
|
ldp w1, w0, [x29, 184]
|
|
cmp w1, w0
|
|
beq .L916
|
|
cmn w3, #1
|
|
beq .L918
|
|
adrp x0, .LANCHOR7
|
|
ldr w0, [x0, #:lo12:.LANCHOR7]
|
|
cmp w0, w3, lsr 10
|
|
bhi .L918
|
|
adrp x0, .LC27
|
|
mov w1, w3
|
|
add x0, x0, :lo12:.LC27
|
|
.L992:
|
|
bl printf
|
|
b .L901
|
|
.L918:
|
|
mov w2, 1
|
|
add x1, x29, 188
|
|
mov w0, w24
|
|
bl log2phys
|
|
ldr w3, [x29, 184]
|
|
cmn w3, #1
|
|
beq .L916
|
|
ldr w0, [x29, 180]
|
|
cmp w3, w0
|
|
beq .L931
|
|
lsr w0, w3, 10
|
|
bl P2V_block_in_plane
|
|
adrp x1, .LANCHOR50
|
|
and w0, w0, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR50]
|
|
cmp w1, w0
|
|
beq .L921
|
|
adrp x1, .LANCHOR51
|
|
ldrh w1, [x1, #:lo12:.LANCHOR51]
|
|
cmp w1, w0
|
|
beq .L921
|
|
adrp x1, .LANCHOR52
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
cmp w1, w0
|
|
bne .L916
|
|
.L921:
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
mov w2, 0
|
|
mov w1, 1
|
|
ldr x4, [x0, 16]
|
|
str w3, [x0, 4]
|
|
str x4, [x29, 136]
|
|
bl FlashReadPages
|
|
ldr x0, [x20, #:lo12:.LANCHOR102]
|
|
ldr w0, [x0]
|
|
cmn w0, #1
|
|
beq .L916
|
|
ldr x4, [x29, 136]
|
|
mov w0, w21
|
|
ldr w1, [x4, 4]
|
|
bl ftl_cmp_data_ver
|
|
cbnz w0, .L916
|
|
mov w2, 1
|
|
add x1, x29, 184
|
|
mov w0, w24
|
|
bl log2phys
|
|
b .L916
|
|
.L923:
|
|
adrp x0, .LC28
|
|
mov w1, w24
|
|
add x0, x0, :lo12:.LC28
|
|
b .L992
|
|
.L903:
|
|
ldr x0, [x29, 120]
|
|
ldr w0, [x0]
|
|
cmp w0, 31
|
|
bhi .L924
|
|
adrp x1, .LANCHOR157
|
|
add x1, x1, :lo12:.LANCHOR157
|
|
str w5, [x1, w0, uxtw 2]
|
|
add w0, w0, 1
|
|
ldr x1, [x29, 120]
|
|
str w0, [x1]
|
|
.L924:
|
|
ldrh w0, [x19]
|
|
bl decrement_vpc_count
|
|
ldr w0, [x28, #:lo12:.LANCHOR133]
|
|
cmn w0, #1
|
|
bne .L925
|
|
.L991:
|
|
str w21, [x28, #:lo12:.LANCHOR133]
|
|
b .L901
|
|
.L925:
|
|
cmp w21, w0
|
|
bcs .L901
|
|
b .L991
|
|
.L928:
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
b .L927
|
|
.L902:
|
|
strb w27, [x19, 6]
|
|
strh w22, [x19, 2]
|
|
b .L994
|
|
.size FtlRecoverySuperblock, .-FtlRecoverySuperblock
|
|
.section .text.ftl_check_vpc,"ax",@progbits
|
|
.align 2
|
|
.global ftl_check_vpc
|
|
.type ftl_check_vpc, %function
|
|
ftl_check_vpc:
|
|
stp x29, x30, [sp, -112]!
|
|
adrp x0, .LC29
|
|
add x0, x0, :lo12:.LC29
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR151
|
|
add x23, x23, :lo12:.LANCHOR151
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, 0
|
|
stp x19, x20, [sp, 16]
|
|
stp x25, x26, [sp, 64]
|
|
adrp x21, .LANCHOR158
|
|
stp x27, x28, [sp, 80]
|
|
add x1, x21, :lo12:.LANCHOR158
|
|
adrp x20, check_vpc_table
|
|
bl printf
|
|
add x19, x20, :lo12:check_vpc_table
|
|
mov w2, 8192
|
|
mov w1, 0
|
|
mov x0, x19
|
|
bl ftl_memset
|
|
.L996:
|
|
ldr w0, [x23]
|
|
cmp w22, w0
|
|
bcc .L998
|
|
adrp x22, .LANCHOR4
|
|
adrp x24, .LC30
|
|
add x22, x22, :lo12:.LANCHOR4
|
|
add x26, x20, :lo12:check_vpc_table
|
|
add x24, x24, :lo12:.LC30
|
|
mov w23, 0
|
|
mov w19, 0
|
|
adrp x25, .LANCHOR41
|
|
.L999:
|
|
ldrh w0, [x22]
|
|
cmp w0, w19
|
|
bhi .L1001
|
|
adrp x0, .LANCHOR45
|
|
ldr x19, [x0, #:lo12:.LANCHOR45]
|
|
cbz x19, .L1002
|
|
adrp x0, .LANCHOR47
|
|
adrp x25, .LC31
|
|
add x20, x20, :lo12:check_vpc_table
|
|
add x25, x25, :lo12:.LC31
|
|
ldrh w26, [x0, #:lo12:.LANCHOR47]
|
|
adrp x0, .LANCHOR39
|
|
mov x24, x0
|
|
mov w22, 0
|
|
ldr x1, [x0, #:lo12:.LANCHOR39]
|
|
adrp x27, .LANCHOR41
|
|
mov w28, 6
|
|
sub x19, x19, x1
|
|
mov x1, -6148914691236517206
|
|
asr x19, x19, 1
|
|
movk x1, 0xaaab, lsl 0
|
|
mul x19, x19, x1
|
|
and w19, w19, 65535
|
|
.L1003:
|
|
cmp w22, w26
|
|
bne .L1005
|
|
.L1002:
|
|
cbz w23, .L995
|
|
adrp x0, .LC1
|
|
mov w2, 2394
|
|
add x1, x21, :lo12:.LANCHOR158
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L995:
|
|
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
|
|
.L998:
|
|
mov w2, 0
|
|
add x1, x29, 108
|
|
mov w0, w22
|
|
bl log2phys
|
|
ldr w0, [x29, 108]
|
|
cmn w0, #1
|
|
beq .L997
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
and x0, x0, 65535
|
|
ldrh w1, [x19, x0, lsl 1]
|
|
add w1, w1, 1
|
|
strh w1, [x19, x0, lsl 1]
|
|
.L997:
|
|
add w22, w22, 1
|
|
b .L996
|
|
.L1001:
|
|
ldr x0, [x25, #:lo12:.LANCHOR41]
|
|
ubfiz x28, x19, 1, 16
|
|
sxtw x27, w19
|
|
ldrh w2, [x0, x28]
|
|
ldrh w3, [x26, x27, lsl 1]
|
|
cmp w2, w3
|
|
beq .L1000
|
|
mov w1, w19
|
|
mov x0, x24
|
|
bl printf
|
|
ldr x0, [x25, #:lo12:.LANCHOR41]
|
|
mov w1, 65535
|
|
ldrh w0, [x0, x28]
|
|
cmp w0, w1
|
|
beq .L1000
|
|
ldrh w1, [x26, x27, lsl 1]
|
|
cmp w1, w0
|
|
csinc w23, w23, wzr, ls
|
|
.L1000:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L999
|
|
.L1005:
|
|
ldr x1, [x27, #:lo12:.LANCHOR41]
|
|
ubfiz x0, x19, 1, 16
|
|
ldrh w2, [x1, x0]
|
|
cbz w2, .L1004
|
|
ldrh w3, [x20, w19, sxtw 1]
|
|
mov w23, 1
|
|
mov w1, w19
|
|
mov x0, x25
|
|
bl printf
|
|
.L1004:
|
|
ldr x0, [x24, #:lo12:.LANCHOR39]
|
|
umull x19, w19, w28
|
|
ldrh w19, [x0, x19]
|
|
mov w0, 65535
|
|
cmp w19, w0
|
|
beq .L1002
|
|
add w22, w22, 1
|
|
and w22, w22, 65535
|
|
b .L1003
|
|
.size ftl_check_vpc, .-ftl_check_vpc
|
|
.section .text.ftl_scan_all_data,"ax",@progbits
|
|
.align 2
|
|
.global ftl_scan_all_data
|
|
.type ftl_scan_all_data, %function
|
|
ftl_scan_all_data:
|
|
sub sp, sp, #96
|
|
adrp x0, .LC32
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC32
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x19, x20, [sp, 32]
|
|
adrp x20, .LANCHOR137
|
|
stp x21, x22, [sp, 48]
|
|
mov w19, 0
|
|
adrp x21, .LANCHOR151
|
|
add x22, x20, :lo12:.LANCHOR137
|
|
add x21, x21, :lo12:.LANCHOR151
|
|
str x23, [sp, 64]
|
|
bl printf
|
|
.L1021:
|
|
ldr w0, [x21]
|
|
cmp w19, w0
|
|
bcc .L1027
|
|
ldp x19, x20, [sp, 32]
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x29, x30, [sp, 16]
|
|
ldr x23, [sp, 64]
|
|
add sp, sp, 96
|
|
ret
|
|
.L1027:
|
|
mov w2, 0
|
|
add x1, x29, 76
|
|
mov w0, w19
|
|
bl log2phys
|
|
tst x19, 2047
|
|
bne .L1022
|
|
ldr w2, [x29, 76]
|
|
adrp x0, .LC33
|
|
mov w1, w19
|
|
add x0, x0, :lo12:.LC33
|
|
bl printf
|
|
.L1022:
|
|
ldr w1, [x29, 76]
|
|
cmn w1, #1
|
|
beq .L1024
|
|
add x0, x20, :lo12:.LANCHOR137
|
|
str wzr, [x20, #:lo12:.LANCHOR137]
|
|
mov w2, 0
|
|
str w1, [x0, 4]
|
|
adrp x1, .LANCHOR105
|
|
str w19, [x0, 24]
|
|
ldr x1, [x1, #:lo12:.LANCHOR105]
|
|
str x1, [x0, 8]
|
|
adrp x1, .LANCHOR113
|
|
ldr x23, [x1, #:lo12:.LANCHOR113]
|
|
mov w1, 1
|
|
str x23, [x0, 16]
|
|
bl FlashReadPages
|
|
ldr w0, [x20, #:lo12:.LANCHOR137]
|
|
cmp w0, 256
|
|
ccmn w0, #1, 4, ne
|
|
beq .L1025
|
|
ldr w0, [x23, 8]
|
|
cmp w19, w0
|
|
beq .L1024
|
|
.L1025:
|
|
ldp x1, x0, [x22, 8]
|
|
ldr w2, [x1, 4]
|
|
str w2, [sp]
|
|
ldr w2, [x22, 4]
|
|
ldp w3, w4, [x0]
|
|
ldp w5, w6, [x0, 8]
|
|
adrp x0, .LC34
|
|
ldr w7, [x1]
|
|
add x0, x0, :lo12:.LC34
|
|
mov w1, w19
|
|
bl printf
|
|
.L1024:
|
|
add w19, w19, 1
|
|
b .L1021
|
|
.size ftl_scan_all_data, .-ftl_scan_all_data
|
|
.section .text.FtlGcScanTempBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcScanTempBlk
|
|
.type FtlGcScanTempBlk, %function
|
|
FtlGcScanTempBlk:
|
|
stp x29, x30, [sp, -144]!
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR159
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w20, [x25, #:lo12:.LANCHOR159]
|
|
mov w0, 65535
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
cmp w20, w0
|
|
str x27, [sp, 80]
|
|
beq .L1050
|
|
cbnz w20, .L1030
|
|
.L1031:
|
|
bl FtlGcPageVarInit
|
|
b .L1032
|
|
.L1050:
|
|
mov w20, 0
|
|
.L1030:
|
|
adrp x0, .LANCHOR18
|
|
ldrh w0, [x0, #:lo12:.LANCHOR18]
|
|
cmp w0, w1
|
|
beq .L1031
|
|
.L1032:
|
|
adrp x26, .LANCHOR151
|
|
add x26, x26, :lo12:.LANCHOR151
|
|
.L1047:
|
|
ldrh w1, [x19]
|
|
mov w0, 65535
|
|
strb wzr, [x19, 8]
|
|
cmp w1, w0
|
|
beq .L1033
|
|
.L1049:
|
|
adrp x1, .LANCHOR63
|
|
adrp x24, .LANCHOR102
|
|
add x4, x19, 16
|
|
mov w21, 0
|
|
ldr x5, [x1, #:lo12:.LANCHOR63]
|
|
adrp x1, .LANCHOR22
|
|
ldr x0, [x24, #:lo12:.LANCHOR102]
|
|
mov w10, 65535
|
|
ldrh w6, [x1, #:lo12:.LANCHOR22]
|
|
adrp x1, .LANCHOR64
|
|
ldr x7, [x1, #:lo12:.LANCHOR64]
|
|
adrp x1, .LANCHOR23
|
|
ldrh w8, [x1, #:lo12:.LANCHOR23]
|
|
adrp x1, .LANCHOR2
|
|
ldrh w1, [x1, #:lo12:.LANCHOR2]
|
|
add x1, x1, 8
|
|
add x1, x19, x1, lsl 1
|
|
.L1034:
|
|
cmp x1, x4
|
|
bne .L1036
|
|
mov w1, w21
|
|
ubfiz x21, x21, 5, 16
|
|
mov x22, 0
|
|
mov w2, 0
|
|
bl FlashReadPages
|
|
.L1037:
|
|
cmp x21, x22
|
|
bne .L1048
|
|
adrp x0, .LANCHOR18
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
ldrh w0, [x0, #:lo12:.LANCHOR18]
|
|
cmp w0, w20
|
|
bhi .L1049
|
|
.L1033:
|
|
strh w20, [x19, 2]
|
|
mov w0, -1
|
|
strb wzr, [x19, 6]
|
|
mov w1, w20
|
|
strh w0, [x25, #:lo12:.LANCHOR159]
|
|
mov w2, 0
|
|
mov x0, x19
|
|
bl ftl_sb_update_avl_pages
|
|
mov w0, -1
|
|
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], 144
|
|
ret
|
|
.L1036:
|
|
ldrh w3, [x4]
|
|
cmp w3, w10
|
|
beq .L1035
|
|
ubfiz x2, x21, 5, 16
|
|
orr w3, w20, w3, lsl 10
|
|
add x2, x0, x2
|
|
str w3, [x2, 4]
|
|
mul w3, w21, w6
|
|
asr w3, w3, 2
|
|
add x3, x5, x3, sxtw 2
|
|
str x3, [x2, 8]
|
|
mul w3, w21, w8
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
asr w3, w3, 2
|
|
add x3, x7, x3, sxtw 2
|
|
str x3, [x2, 16]
|
|
.L1035:
|
|
add x4, x4, 2
|
|
b .L1034
|
|
.L1048:
|
|
ldr x0, [x24, #:lo12:.LANCHOR102]
|
|
add x1, x0, x22
|
|
ldr w0, [x0, x22]
|
|
ldr w27, [x1, 4]
|
|
ldr x23, [x1, 16]
|
|
cbnz w0, .L1038
|
|
ldrh w1, [x23]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
beq .L1060
|
|
ldr w0, [x23, 8]
|
|
ldr w1, [x26]
|
|
cmp w0, w1
|
|
bls .L1040
|
|
.L1060:
|
|
adrp x0, .LANCHOR41
|
|
ldrh w1, [x19]
|
|
mov w20, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR41]
|
|
strh wzr, [x0, x1, lsl 1]
|
|
ldrh w0, [x19]
|
|
bl INSERT_FREE_LIST
|
|
mov w0, -1
|
|
adrp x1, .LANCHOR144
|
|
strh w0, [x19]
|
|
strh w0, [x1, #:lo12:.LANCHOR144]
|
|
bl FtlGcPageVarInit
|
|
b .L1047
|
|
.L1040:
|
|
add x1, x29, 108
|
|
mov w2, 0
|
|
bl log2phys
|
|
ldr w0, [x23, 12]
|
|
ldr w1, [x29, 108]
|
|
cmp w0, w1
|
|
beq .L1042
|
|
.L1044:
|
|
ldr w2, [x23, 8]
|
|
.L1061:
|
|
ldr w0, [x23, 12]
|
|
mov w1, w27
|
|
add x22, x22, 32
|
|
bl FtlGcUpdatePage
|
|
b .L1037
|
|
.L1042:
|
|
cmn w0, #1
|
|
beq .L1044
|
|
str w0, [x29, 116]
|
|
adrp x0, .LANCHOR109
|
|
mov w2, 0
|
|
mov w1, 1
|
|
ldr x0, [x0, #:lo12:.LANCHOR109]
|
|
str x0, [x29, 120]
|
|
adrp x0, .LANCHOR114
|
|
ldr x0, [x0, #:lo12:.LANCHOR114]
|
|
str x0, [x29, 128]
|
|
add x0, x29, 112
|
|
bl FlashReadPages
|
|
adrp x0, .LANCHOR11
|
|
ldr x2, [x24, #:lo12:.LANCHOR102]
|
|
ldr x3, [x29, 120]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR11]
|
|
add x2, x2, x22
|
|
mov x0, 0
|
|
ubfiz x1, x1, 9, 16
|
|
.L1045:
|
|
cmp x0, x1
|
|
beq .L1044
|
|
ldr x4, [x2, 8]
|
|
ldr w5, [x4, x0]
|
|
add x0, x0, 4
|
|
add x4, x3, x0
|
|
ldr w4, [x4, -4]
|
|
cmp w5, w4
|
|
beq .L1045
|
|
ldrh w1, [x19]
|
|
adrp x0, .LC35
|
|
ldr w2, [x29, 116]
|
|
add x0, x0, :lo12:.LC35
|
|
bl printf
|
|
b .L1060
|
|
.L1038:
|
|
mov w2, -1
|
|
b .L1061
|
|
.size FtlGcScanTempBlk, .-FtlGcScanTempBlk
|
|
.section .text.FtlVendorPartWrite,"ax",@progbits
|
|
.align 2
|
|
.global FtlVendorPartWrite
|
|
.type FtlVendorPartWrite, %function
|
|
FtlVendorPartWrite:
|
|
stp x29, x30, [sp, -208]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w20, w1
|
|
stp x27, x28, [sp, 80]
|
|
add w1, w0, w1
|
|
mov w28, w0
|
|
adrp x0, .LANCHOR15
|
|
stp x21, x22, [sp, 32]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR15]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
cmp w1, w0
|
|
bhi .L1070
|
|
adrp x0, .LANCHOR21
|
|
adrp x25, .LANCHOR11
|
|
adrp x26, .LANCHOR22
|
|
mov x24, x2
|
|
ldrh w21, [x0, #:lo12:.LANCHOR21]
|
|
add x25, x25, :lo12:.LANCHOR11
|
|
add x26, x26, :lo12:.LANCHOR22
|
|
mov w23, 0
|
|
lsr w21, w28, w21
|
|
.L1064:
|
|
cbnz w20, .L1069
|
|
.L1062:
|
|
mov w0, w23
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 208
|
|
ret
|
|
.L1069:
|
|
ldrh w1, [x25]
|
|
adrp x0, .LANCHOR122
|
|
adrp x27, .LANCHOR107
|
|
ldr x0, [x0, #:lo12:.LANCHOR122]
|
|
udiv w22, w28, w1
|
|
ldr w2, [x0, w21, uxtw 2]
|
|
and w0, w20, 65535
|
|
msub w22, w22, w1, w28
|
|
sub w19, w1, w22
|
|
and w19, w19, 65535
|
|
cmp w20, w19
|
|
csel w19, w0, w19, cc
|
|
cbz w2, .L1066
|
|
cmp w19, w1
|
|
beq .L1066
|
|
ldr x0, [x27, #:lo12:.LANCHOR107]
|
|
str x0, [x29, 120]
|
|
add x0, x29, 144
|
|
str w2, [x29, 116]
|
|
mov w2, 1
|
|
str x0, [x29, 128]
|
|
mov w1, w2
|
|
add x0, x29, 112
|
|
bl FlashReadPages
|
|
.L1067:
|
|
lsl w4, w19, 9
|
|
ldr x0, [x27, #:lo12:.LANCHOR107]
|
|
lsl w22, w22, 7
|
|
mov w2, w4
|
|
mov x1, x24
|
|
str w4, [x29, 108]
|
|
add x0, x0, x22, sxtw 2
|
|
bl ftl_memcpy
|
|
ldr x2, [x27, #:lo12:.LANCHOR107]
|
|
mov w1, w21
|
|
adrp x0, .LANCHOR160
|
|
add x0, x0, :lo12:.LANCHOR160
|
|
sub w20, w20, w19
|
|
add w28, w28, w19
|
|
add w21, w21, 1
|
|
bl FtlMapWritePage
|
|
cmn w0, #1
|
|
ldr w4, [x29, 108]
|
|
csinv w23, w23, wzr, ne
|
|
add x24, x24, x4, sxtw
|
|
b .L1064
|
|
.L1066:
|
|
ldrh w2, [x26]
|
|
mov w1, 0
|
|
ldr x0, [x27, #:lo12:.LANCHOR107]
|
|
bl ftl_memset
|
|
b .L1067
|
|
.L1070:
|
|
mov w23, -1
|
|
b .L1062
|
|
.size FtlVendorPartWrite, .-FtlVendorPartWrite
|
|
.section .text.Ftl_save_ext_data,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_save_ext_data
|
|
.type Ftl_save_ext_data, %function
|
|
Ftl_save_ext_data:
|
|
adrp x0, .LANCHOR134
|
|
add x2, x0, :lo12:.LANCHOR134
|
|
ldr w1, [x0, #:lo12:.LANCHOR134]
|
|
mov w0, 19539
|
|
movk w0, 0x4654, lsl 16
|
|
cmp w1, w0
|
|
bne .L1075
|
|
mov w0, 87
|
|
mov w1, 1
|
|
movk w0, 0x5000, lsl 16
|
|
str w0, [x2, 4]
|
|
adrp x0, .LANCHOR161
|
|
ldr w0, [x0, #:lo12:.LANCHOR161]
|
|
str w0, [x2, 88]
|
|
adrp x0, .LANCHOR162
|
|
ldr w0, [x0, #:lo12:.LANCHOR162]
|
|
str w0, [x2, 92]
|
|
adrp x0, .LANCHOR83
|
|
ldr w0, [x0, #:lo12:.LANCHOR83]
|
|
str w0, [x2, 8]
|
|
adrp x0, .LANCHOR84
|
|
ldr w0, [x0, #:lo12:.LANCHOR84]
|
|
str w0, [x2, 12]
|
|
adrp x0, .LANCHOR88
|
|
ldr w0, [x0, #:lo12:.LANCHOR88]
|
|
str w0, [x2, 16]
|
|
adrp x0, .LANCHOR87
|
|
ldr w0, [x0, #:lo12:.LANCHOR87]
|
|
str w0, [x2, 20]
|
|
adrp x0, .LANCHOR90
|
|
ldr w0, [x0, #:lo12:.LANCHOR90]
|
|
str w0, [x2, 28]
|
|
adrp x0, .LANCHOR79
|
|
ldr w0, [x0, #:lo12:.LANCHOR79]
|
|
str w0, [x2, 32]
|
|
adrp x0, .LANCHOR85
|
|
ldr w0, [x0, #:lo12:.LANCHOR85]
|
|
str w0, [x2, 36]
|
|
adrp x0, .LANCHOR86
|
|
ldr w0, [x0, #:lo12:.LANCHOR86]
|
|
str w0, [x2, 40]
|
|
adrp x0, .LANCHOR91
|
|
ldr w0, [x0, #:lo12:.LANCHOR91]
|
|
str w0, [x2, 44]
|
|
adrp x0, .LANCHOR92
|
|
ldr w0, [x0, #:lo12:.LANCHOR92]
|
|
str w0, [x2, 48]
|
|
mov w0, 0
|
|
b FtlVendorPartWrite
|
|
.L1075:
|
|
ret
|
|
.size Ftl_save_ext_data, .-Ftl_save_ext_data
|
|
.section .text.FtlEctTblFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlEctTblFlush
|
|
.type FtlEctTblFlush, %function
|
|
FtlEctTblFlush:
|
|
adrp x2, .LANCHOR163
|
|
ldrh w1, [x2, #:lo12:.LANCHOR163]
|
|
cmp w1, 31
|
|
bhi .L1081
|
|
add w1, w1, 1
|
|
strh w1, [x2, #:lo12:.LANCHOR163]
|
|
mov w1, 1
|
|
.L1078:
|
|
adrp x2, .LANCHOR117
|
|
cbnz w0, .L1079
|
|
ldr x0, [x2, #:lo12:.LANCHOR117]
|
|
ldr w3, [x0, 20]
|
|
ldr w0, [x0, 16]
|
|
add w1, w1, w3
|
|
cmp w0, w1
|
|
bcc .L1083
|
|
.L1079:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
ldr x2, [x2, #:lo12:.LANCHOR117]
|
|
ldr w0, [x2, 16]
|
|
str w0, [x2, 20]
|
|
mov w0, 17221
|
|
str wzr, [x2, 4]
|
|
movk w0, 0x4254, lsl 16
|
|
str w0, [x2]
|
|
adrp x0, .LANCHOR115
|
|
ldrh w1, [x0, #:lo12:.LANCHOR115]
|
|
lsl w0, w1, 9
|
|
str w0, [x2, 12]
|
|
ldr w0, [x2, 8]
|
|
add w0, w0, 1
|
|
str w0, [x2, 8]
|
|
mov w0, 64
|
|
bl FtlVendorPartWrite
|
|
bl Ftl_save_ext_data
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L1081:
|
|
mov w1, 32
|
|
b .L1078
|
|
.L1083:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlEctTblFlush, .-FtlEctTblFlush
|
|
.section .text.sftl_vendor_write,"ax",@progbits
|
|
.align 2
|
|
.global sftl_vendor_write
|
|
.type sftl_vendor_write, %function
|
|
sftl_vendor_write:
|
|
add w0, w0, 256
|
|
b FtlVendorPartWrite
|
|
.size sftl_vendor_write, .-sftl_vendor_write
|
|
.section .text.FtlVendorPartRead,"ax",@progbits
|
|
.align 2
|
|
.global FtlVendorPartRead
|
|
.type FtlVendorPartRead, %function
|
|
FtlVendorPartRead:
|
|
stp x29, x30, [sp, -208]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, w0
|
|
mov w21, w1
|
|
add w1, w0, w1
|
|
adrp x0, .LANCHOR15
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR15]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cmp w1, w0
|
|
bhi .L1095
|
|
adrp x0, .LANCHOR21
|
|
mov x25, x2
|
|
mov w24, 0
|
|
adrp x27, .LANCHOR122
|
|
ldrh w20, [x0, #:lo12:.LANCHOR21]
|
|
adrp x0, .LANCHOR11
|
|
add x0, x0, :lo12:.LANCHOR11
|
|
str x0, [x29, 104]
|
|
lsr w20, w22, w20
|
|
.L1088:
|
|
cbnz w21, .L1094
|
|
.L1086:
|
|
mov w0, w24
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 208
|
|
ret
|
|
.L1094:
|
|
ldr x0, [x27, #:lo12:.LANCHOR122]
|
|
ldr w4, [x0, w20, uxtw 2]
|
|
ldr x0, [x29, 104]
|
|
ldrh w19, [x0]
|
|
and w0, w21, 65535
|
|
udiv w23, w22, w19
|
|
msub w23, w23, w19, w22
|
|
sub w19, w19, w23
|
|
and w19, w19, 65535
|
|
cmp w21, w19
|
|
csel w19, w0, w19, cc
|
|
lsl w26, w19, 9
|
|
cbz w4, .L1090
|
|
adrp x28, .LANCHOR107
|
|
mov w2, 1
|
|
str w4, [x29, 96]
|
|
mov w1, w2
|
|
ldr x0, [x28, #:lo12:.LANCHOR107]
|
|
str x0, [x29, 120]
|
|
add x0, x29, 144
|
|
str w4, [x29, 116]
|
|
str x0, [x29, 128]
|
|
add x0, x29, 112
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 112]
|
|
mov x5, x28
|
|
ldr w4, [x29, 96]
|
|
cmn w0, #1
|
|
adrp x0, .LANCHOR137
|
|
csinv w24, w24, wzr, ne
|
|
ldr w0, [x0, #:lo12:.LANCHOR137]
|
|
cmp w0, 256
|
|
bne .L1092
|
|
mov w2, w4
|
|
mov w1, w20
|
|
adrp x0, .LC36
|
|
str x28, [x29, 96]
|
|
add x0, x0, :lo12:.LC36
|
|
bl printf
|
|
ldr x2, [x28, #:lo12:.LANCHOR107]
|
|
mov w1, w20
|
|
adrp x0, .LANCHOR160
|
|
add x0, x0, :lo12:.LANCHOR160
|
|
bl FtlMapWritePage
|
|
ldr x5, [x29, 96]
|
|
.L1092:
|
|
ldr x1, [x5, #:lo12:.LANCHOR107]
|
|
lsl w23, w23, 7
|
|
mov w2, w26
|
|
mov x0, x25
|
|
add x1, x1, x23, sxtw 2
|
|
bl ftl_memcpy
|
|
.L1093:
|
|
add w20, w20, 1
|
|
sub w21, w21, w19
|
|
add w22, w22, w19
|
|
add x25, x25, x26, sxtw
|
|
b .L1088
|
|
.L1090:
|
|
mov w2, w26
|
|
mov w1, 0
|
|
mov x0, x25
|
|
bl ftl_memset
|
|
b .L1093
|
|
.L1095:
|
|
mov w24, -1
|
|
b .L1086
|
|
.size FtlVendorPartRead, .-FtlVendorPartRead
|
|
.section .text.FtlLoadEctTbl,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadEctTbl
|
|
.type FtlLoadEctTbl, %function
|
|
FtlLoadEctTbl:
|
|
stp x29, x30, [sp, -32]!
|
|
mov w0, 64
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR117
|
|
adrp x20, .LANCHOR115
|
|
ldr x2, [x19, #:lo12:.LANCHOR117]
|
|
ldrh w1, [x20, #:lo12:.LANCHOR115]
|
|
bl FtlVendorPartRead
|
|
ldr x0, [x19, #:lo12:.LANCHOR117]
|
|
ldr w1, [x0]
|
|
mov w0, 17221
|
|
movk w0, 0x4254, lsl 16
|
|
cmp w1, w0
|
|
beq .L1098
|
|
adrp x1, .LC37
|
|
adrp x0, .LC38
|
|
add x1, x1, :lo12:.LC37
|
|
add x0, x0, :lo12:.LC38
|
|
bl printf
|
|
ldr x0, [x19, #:lo12:.LANCHOR117]
|
|
mov w1, 0
|
|
ldrh w2, [x20, #:lo12:.LANCHOR115]
|
|
lsl w2, w2, 9
|
|
bl ftl_memset
|
|
.L1098:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FtlLoadEctTbl, .-FtlLoadEctTbl
|
|
.section .text.Ftl_load_ext_data,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_load_ext_data
|
|
.type Ftl_load_ext_data, %function
|
|
Ftl_load_ext_data:
|
|
stp x29, x30, [sp, -48]!
|
|
mov w1, 1
|
|
mov w0, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR134
|
|
str x21, [sp, 32]
|
|
add x21, x19, :lo12:.LANCHOR134
|
|
mov x2, x21
|
|
bl FtlVendorPartRead
|
|
ldr w0, [x19, #:lo12:.LANCHOR134]
|
|
mov w20, 19539
|
|
movk w20, 0x4654, lsl 16
|
|
cmp w0, w20
|
|
beq .L1101
|
|
mov w2, 512
|
|
mov w1, 0
|
|
mov x0, x21
|
|
bl ftl_memset
|
|
str w20, [x19, #:lo12:.LANCHOR134]
|
|
.L1101:
|
|
ldr w1, [x19, #:lo12:.LANCHOR134]
|
|
add x0, x19, :lo12:.LANCHOR134
|
|
cmp w1, w20
|
|
adrp x1, .LANCHOR90
|
|
bne .L1102
|
|
adrp x2, .LANCHOR161
|
|
ldr w3, [x0, 88]
|
|
str w3, [x2, #:lo12:.LANCHOR161]
|
|
adrp x2, .LANCHOR162
|
|
ldr w3, [x0, 92]
|
|
str w3, [x2, #:lo12:.LANCHOR162]
|
|
adrp x2, .LANCHOR83
|
|
ldr w3, [x0, 8]
|
|
str w3, [x2, #:lo12:.LANCHOR83]
|
|
adrp x2, .LANCHOR84
|
|
ldr w3, [x0, 12]
|
|
str w3, [x2, #:lo12:.LANCHOR84]
|
|
adrp x2, .LANCHOR88
|
|
ldr w3, [x0, 16]
|
|
str w3, [x2, #:lo12:.LANCHOR88]
|
|
adrp x2, .LANCHOR87
|
|
ldr w3, [x0, 20]
|
|
str w3, [x2, #:lo12:.LANCHOR87]
|
|
ldp w2, w3, [x0, 28]
|
|
str w2, [x1, #:lo12:.LANCHOR90]
|
|
adrp x2, .LANCHOR79
|
|
str w3, [x2, #:lo12:.LANCHOR79]
|
|
adrp x2, .LANCHOR85
|
|
ldr w3, [x0, 36]
|
|
str w3, [x2, #:lo12:.LANCHOR85]
|
|
adrp x2, .LANCHOR86
|
|
ldr w3, [x0, 40]
|
|
str w3, [x2, #:lo12:.LANCHOR86]
|
|
adrp x2, .LANCHOR91
|
|
ldr w3, [x0, 44]
|
|
str w3, [x2, #:lo12:.LANCHOR91]
|
|
ldr w2, [x0, 48]
|
|
adrp x0, .LANCHOR92
|
|
str w2, [x0, #:lo12:.LANCHOR92]
|
|
.L1102:
|
|
adrp x0, .LANCHOR13
|
|
adrp x2, .LANCHOR89
|
|
ldr w1, [x1, #:lo12:.LANCHOR90]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR13]
|
|
ldr w2, [x2, #:lo12:.LANCHOR89]
|
|
ldp x19, x20, [sp, 16]
|
|
ldr x21, [sp, 32]
|
|
madd w0, w0, w2, w1
|
|
adrp x1, .LANCHOR4
|
|
ldp x29, x30, [sp], 48
|
|
ldrh w1, [x1, #:lo12:.LANCHOR4]
|
|
udiv w0, w0, w1
|
|
adrp x1, .LANCHOR142
|
|
str w0, [x1, #:lo12:.LANCHOR142]
|
|
ret
|
|
.size Ftl_load_ext_data, .-Ftl_load_ext_data
|
|
.section .text.sftl_vendor_read,"ax",@progbits
|
|
.align 2
|
|
.global sftl_vendor_read
|
|
.type sftl_vendor_read, %function
|
|
sftl_vendor_read:
|
|
add w0, w0, 256
|
|
b FtlVendorPartRead
|
|
.size sftl_vendor_read, .-sftl_vendor_read
|
|
.section .text.FtlMapBlkWriteDump_data,"ax",@progbits
|
|
.align 2
|
|
.global FtlMapBlkWriteDump_data
|
|
.type FtlMapBlkWriteDump_data, %function
|
|
FtlMapBlkWriteDump_data:
|
|
ldr w1, [x0, 56]
|
|
cbz w1, .L1105
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w20, [x0, 6]
|
|
adrp x0, .LANCHOR106
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR137
|
|
add x21, x23, :lo12:.LANCHOR137
|
|
ldr x0, [x0, #:lo12:.LANCHOR106]
|
|
mov x22, x23
|
|
str x0, [x21, 8]
|
|
adrp x0, .LANCHOR113
|
|
ldr x24, [x0, #:lo12:.LANCHOR113]
|
|
ldrh w0, [x19, 2]
|
|
str x25, [sp, 64]
|
|
str x24, [x21, 16]
|
|
str wzr, [x19, 56]
|
|
ldr x25, [x19, 40]
|
|
cbz w0, .L1107
|
|
adrp x1, .LANCHOR19
|
|
ldrh w1, [x1, #:lo12:.LANCHOR19]
|
|
sub w1, w1, #1
|
|
cmp w0, w1
|
|
bge .L1107
|
|
ldrh w1, [x19]
|
|
mov w2, 65535
|
|
cmp w1, w2
|
|
beq .L1107
|
|
ldr x2, [x19, 16]
|
|
ubfiz x1, x1, 1, 16
|
|
sub w0, w0, #1
|
|
ldrh w1, [x2, x1]
|
|
mov w2, 1
|
|
orr w0, w0, w1, lsl 10
|
|
mov w1, w2
|
|
str w0, [x21, 4]
|
|
mov x0, x21
|
|
bl FlashReadPages
|
|
ldr w0, [x23, #:lo12:.LANCHOR137]
|
|
cmn w0, #1
|
|
beq .L1107
|
|
ldrh w1, [x24, 8]
|
|
ldr x2, [x19, 40]
|
|
ubfiz x0, x1, 2, 16
|
|
ldr w2, [x2, x0]
|
|
ldr w0, [x21, 4]
|
|
cmp w2, w0
|
|
bne .L1107
|
|
ldr x2, [x21, 8]
|
|
.L1119:
|
|
mov x0, x19
|
|
ldr x25, [sp, 64]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
b FtlMapWritePage
|
|
.L1107:
|
|
sub w20, w20, #1
|
|
and w20, w20, 65535
|
|
ubfiz x0, x20, 2, 16
|
|
ldr w1, [x25, x0]
|
|
add x0, x22, :lo12:.LANCHOR137
|
|
str w1, [x0, 4]
|
|
cbz w1, .L1108
|
|
mov w2, 1
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
.L1109:
|
|
add x22, x22, :lo12:.LANCHOR137
|
|
mov w1, w20
|
|
ldr x2, [x22, 8]
|
|
b .L1119
|
|
.L1108:
|
|
adrp x1, .LANCHOR22
|
|
ldr x0, [x0, 8]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR22]
|
|
mov w1, 255
|
|
bl ftl_memset
|
|
b .L1109
|
|
.L1105:
|
|
ret
|
|
.size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
|
|
.section .text.FtlVpcTblFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlVpcTblFlush
|
|
.type FtlVpcTblFlush, %function
|
|
FtlVpcTblFlush:
|
|
stp x29, x30, [sp, -112]!
|
|
adrp x1, .LANCHOR138
|
|
mov w2, 19539
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR113
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR105
|
|
stp x23, x24, [sp, 48]
|
|
adrp x21, .LANCHOR137
|
|
stp x27, x28, [sp, 80]
|
|
add x24, x21, :lo12:.LANCHOR137
|
|
ldr x27, [x25, #:lo12:.LANCHOR113]
|
|
add x28, x1, :lo12:.LANCHOR138
|
|
stp x19, x20, [sp, 16]
|
|
movk w2, 0x4654, lsl 16
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
adrp x23, .LANCHOR81
|
|
ldrh w1, [x1, #:lo12:.LANCHOR138]
|
|
adrp x26, .LANCHOR22
|
|
stp x0, x27, [x24, 8]
|
|
mov w20, 0
|
|
strh w1, [x27, 2]
|
|
mov w1, -3932
|
|
strh w1, [x27]
|
|
ldr w1, [x28, 8]
|
|
stp w1, wzr, [x27, 4]
|
|
adrp x1, .LANCHOR38
|
|
add x19, x1, :lo12:.LANCHOR38
|
|
str wzr, [x27, 12]
|
|
str w2, [x1, #:lo12:.LANCHOR38]
|
|
mov w1, 87
|
|
movk w1, 0x5000, lsl 16
|
|
str w1, [x19, 4]
|
|
ldrh w1, [x28, 6]
|
|
adrp x2, .LANCHOR50
|
|
strh w1, [x19, 8]
|
|
adrp x1, .LANCHOR9
|
|
ldrh w1, [x1, #:lo12:.LANCHOR9]
|
|
strb w1, [x19, 10]
|
|
add x1, x2, :lo12:.LANCHOR50
|
|
ldrh w2, [x2, #:lo12:.LANCHOR50]
|
|
strh w2, [x19, 14]
|
|
ldrh w2, [x1, 2]
|
|
ldrb w3, [x1, 6]
|
|
ldrb w1, [x1, 8]
|
|
strb w1, [x19, 11]
|
|
orr w2, w3, w2, lsl 6
|
|
strh w2, [x19, 16]
|
|
adrp x2, .LANCHOR51
|
|
add x1, x2, :lo12:.LANCHOR51
|
|
ldrh w2, [x2, #:lo12:.LANCHOR51]
|
|
ldrb w3, [x1, 6]
|
|
strh w2, [x19, 18]
|
|
ldrh w2, [x1, 2]
|
|
ldrb w1, [x1, 8]
|
|
strb w1, [x19, 12]
|
|
orr w2, w3, w2, lsl 6
|
|
strh w2, [x19, 20]
|
|
adrp x2, .LANCHOR52
|
|
add x1, x2, :lo12:.LANCHOR52
|
|
ldrh w2, [x2, #:lo12:.LANCHOR52]
|
|
ldrb w3, [x1, 6]
|
|
strh w2, [x19, 22]
|
|
ldrh w2, [x1, 2]
|
|
ldrb w1, [x1, 8]
|
|
strb w1, [x19, 13]
|
|
adrp x1, .LANCHOR89
|
|
orr w2, w3, w2, lsl 6
|
|
strh w2, [x19, 24]
|
|
ldr w1, [x1, #:lo12:.LANCHOR89]
|
|
str w1, [x19, 32]
|
|
ldr w1, [x23, #:lo12:.LANCHOR81]
|
|
str w1, [x19, 40]
|
|
ldrh w2, [x26, #:lo12:.LANCHOR22]
|
|
adrp x1, .LANCHOR82
|
|
ldr w1, [x1, #:lo12:.LANCHOR82]
|
|
str w1, [x19, 36]
|
|
mov w1, 255
|
|
bl ftl_memset
|
|
ldr x0, [x24, 8]
|
|
mov x1, x19
|
|
mov w2, 48
|
|
mov x19, x24
|
|
bl ftl_memcpy
|
|
adrp x0, .LANCHOR4
|
|
adrp x1, .LANCHOR41
|
|
ldrh w2, [x0, #:lo12:.LANCHOR4]
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
ldr x0, [x24, 8]
|
|
adrp x24, .LANCHOR19
|
|
lsl w2, w2, 1
|
|
add x24, x24, :lo12:.LANCHOR19
|
|
add x0, x0, 48
|
|
bl ftl_memcpy
|
|
mov w0, 0
|
|
bl FtlUpdateVaildLpn
|
|
mov w0, 65535
|
|
str x24, [x29, 96]
|
|
str w0, [x29, 108]
|
|
.L1121:
|
|
ldrh w2, [x28, 2]
|
|
ldrh w1, [x28]
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
str x0, [x19, 8]
|
|
ldr x0, [x25, #:lo12:.LANCHOR113]
|
|
str x0, [x19, 16]
|
|
orr w0, w2, w1, lsl 10
|
|
str w0, [x19, 4]
|
|
ldrh w0, [x24]
|
|
sub w0, w0, #1
|
|
cmp w2, w0
|
|
blt .L1122
|
|
ldrh w0, [x28, 4]
|
|
strh wzr, [x28, 2]
|
|
strh w1, [x28, 4]
|
|
str w0, [x29, 108]
|
|
bl FtlFreeSysBlkQueueOut
|
|
strh w0, [x28]
|
|
ldr w1, [x23, #:lo12:.LANCHOR81]
|
|
str w1, [x28, 8]
|
|
add w2, w1, 1
|
|
str w2, [x23, #:lo12:.LANCHOR81]
|
|
ubfiz w2, w0, 10, 16
|
|
str w2, [x19, 4]
|
|
strh w0, [x27, 2]
|
|
str w1, [x27, 4]
|
|
.L1122:
|
|
ldrh w1, [x26, #:lo12:.LANCHOR22]
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
bl js_hash
|
|
str w0, [x27, 12]
|
|
mov w3, 1
|
|
mov x0, x19
|
|
mov w1, w3
|
|
mov w2, w3
|
|
bl FlashProgPages
|
|
ldrh w0, [x28, 2]
|
|
ldr w1, [x19]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x28, 2]
|
|
cmn w1, #1
|
|
bne .L1123
|
|
cmp w0, 1
|
|
bne .L1124
|
|
adrp x1, .LANCHOR164
|
|
adrp x0, .LC1
|
|
mov w2, 1145
|
|
add x1, x1, :lo12:.LANCHOR164
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1124:
|
|
ldrh w0, [x28, 2]
|
|
cmp w0, 1
|
|
bne .L1125
|
|
ldr x0, [x29, 96]
|
|
ldrh w0, [x0]
|
|
sub w0, w0, #1
|
|
strh w0, [x28, 2]
|
|
.L1125:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
cmp w20, 3
|
|
bls .L1121
|
|
add x21, x21, :lo12:.LANCHOR137
|
|
adrp x0, .LC39
|
|
mov w2, w20
|
|
add x0, x0, :lo12:.LC39
|
|
ldr w1, [x21, 4]
|
|
bl printf
|
|
.L1127:
|
|
b .L1127
|
|
.L1123:
|
|
cmp w0, 1
|
|
beq .L1121
|
|
cmp w1, 256
|
|
beq .L1121
|
|
ldr w1, [x29, 108]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
beq .L1128
|
|
ldrh w0, [x29, 108]
|
|
mov w1, 1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L1128:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 112
|
|
ret
|
|
.size FtlVpcTblFlush, .-FtlVpcTblFlush
|
|
.section .text.FtlSysFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlSysFlush
|
|
.type FtlSysFlush, %function
|
|
FtlSysFlush:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl l2p_flush
|
|
mov w0, 1
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlSysFlush, .-FtlSysFlush
|
|
.section .text.sftl_deinit,"ax",@progbits
|
|
.align 2
|
|
.global sftl_deinit
|
|
.type sftl_deinit, %function
|
|
sftl_deinit:
|
|
adrp x0, .LANCHOR165
|
|
ldr w0, [x0, #:lo12:.LANCHOR165]
|
|
cmp w0, 1
|
|
bne .L1141
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl FtlSysFlush
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L1141:
|
|
mov w0, 0
|
|
ret
|
|
.size sftl_deinit, .-sftl_deinit
|
|
.section .text.FtlDiscard,"ax",@progbits
|
|
.align 2
|
|
.global FtlDiscard
|
|
.type FtlDiscard, %function
|
|
FtlDiscard:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, w1
|
|
adrp x1, .LANCHOR33
|
|
stp x21, x22, [sp, 32]
|
|
str x23, [sp, 48]
|
|
ldr w1, [x1, #:lo12:.LANCHOR33]
|
|
cmp w1, w0
|
|
bls .L1154
|
|
cmp w1, w19
|
|
bcc .L1154
|
|
add w2, w0, w19
|
|
cmp w1, w2
|
|
bcc .L1154
|
|
cmp w19, 31
|
|
bhi .L1146
|
|
.L1162:
|
|
mov w0, 0
|
|
.L1144:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldr x23, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.L1146:
|
|
adrp x21, .LANCHOR11
|
|
ldrh w1, [x21, #:lo12:.LANCHOR11]
|
|
udiv w20, w0, w1
|
|
msub w0, w1, w20, w0
|
|
ands w0, w0, 65535
|
|
beq .L1147
|
|
sub w0, w1, w0
|
|
add w20, w20, 1
|
|
cmp w0, w19
|
|
csel w0, w0, w19, ls
|
|
sub w19, w19, w0, uxth
|
|
.L1147:
|
|
adrp x22, .LANCHOR166
|
|
adrp x23, .LANCHOR85
|
|
add x22, x22, :lo12:.LANCHOR166
|
|
add x23, x23, :lo12:.LANCHOR85
|
|
mov w0, -1
|
|
str w0, [x29, 76]
|
|
.L1148:
|
|
ldrh w0, [x21, #:lo12:.LANCHOR11]
|
|
cmp w19, w0
|
|
bcs .L1150
|
|
adrp x0, .LANCHOR166
|
|
ldr w1, [x0, #:lo12:.LANCHOR166]
|
|
cmp w1, 32
|
|
bls .L1162
|
|
str wzr, [x0, #:lo12:.LANCHOR166]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
b .L1162
|
|
.L1150:
|
|
mov w2, 0
|
|
add x1, x29, 72
|
|
mov w0, w20
|
|
bl log2phys
|
|
ldr w0, [x29, 72]
|
|
cmn w0, #1
|
|
beq .L1149
|
|
ldr w0, [x22]
|
|
mov w2, 1
|
|
add x1, x29, 76
|
|
add w0, w0, 1
|
|
str w0, [x22]
|
|
ldr w0, [x23]
|
|
add w0, w0, 1
|
|
str w0, [x23]
|
|
mov w0, w20
|
|
bl log2phys
|
|
ldr w0, [x29, 72]
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
.L1149:
|
|
ldrh w0, [x21, #:lo12:.LANCHOR11]
|
|
add w20, w20, 1
|
|
sub w19, w19, w0
|
|
b .L1148
|
|
.L1154:
|
|
mov w0, -1
|
|
b .L1144
|
|
.size FtlDiscard, .-FtlDiscard
|
|
.section .text.allocate_new_data_superblock,"ax",@progbits
|
|
.align 2
|
|
.global allocate_new_data_superblock
|
|
.type allocate_new_data_superblock, %function
|
|
allocate_new_data_superblock:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
ldrh w19, [x0]
|
|
str x21, [sp, 32]
|
|
mov x21, x0
|
|
adrp x0, .LANCHOR4
|
|
ldrh w0, [x0, #:lo12:.LANCHOR4]
|
|
cmp w0, w19
|
|
bcs .L1164
|
|
adrp x1, .LANCHOR167
|
|
adrp x0, .LC1
|
|
mov w2, 2766
|
|
add x1, x1, :lo12:.LANCHOR167
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1164:
|
|
mov w0, 65535
|
|
cmp w19, w0
|
|
beq .L1165
|
|
adrp x1, .LANCHOR41
|
|
ubfiz x0, x19, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x1, x0]
|
|
cbz w0, .L1166
|
|
mov w0, w19
|
|
bl INSERT_DATA_LIST
|
|
.L1165:
|
|
adrp x1, .LANCHOR130
|
|
mov w0, 1
|
|
strb w0, [x21, 8]
|
|
mov w2, 65535
|
|
ldrh w0, [x1, #:lo12:.LANCHOR130]
|
|
mov x20, x1
|
|
cmp w0, w2
|
|
beq .L1167
|
|
cmp w19, w0
|
|
bne .L1168
|
|
adrp x2, .LANCHOR41
|
|
ubfiz x1, x0, 1, 16
|
|
ldr x2, [x2, #:lo12:.LANCHOR41]
|
|
ldrh w1, [x2, x1]
|
|
cbz w1, .L1169
|
|
.L1168:
|
|
bl update_vpc_list
|
|
.L1169:
|
|
mov w0, -1
|
|
strh w0, [x20, #:lo12:.LANCHOR130]
|
|
.L1167:
|
|
mov x0, x21
|
|
bl allocate_data_superblock
|
|
bl l2p_flush
|
|
mov w0, 0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
ldr x21, [sp, 32]
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L1166:
|
|
mov w0, w19
|
|
bl INSERT_FREE_LIST
|
|
b .L1165
|
|
.size allocate_new_data_superblock, .-allocate_new_data_superblock
|
|
.section .text.FtlProgPages,"ax",@progbits
|
|
.align 2
|
|
.global FtlProgPages
|
|
.type FtlProgPages, %function
|
|
FtlProgPages:
|
|
stp x29, x30, [sp, -80]!
|
|
mov w2, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x20, x3
|
|
stp x21, x22, [sp, 32]
|
|
mov w21, w1
|
|
stp x23, x24, [sp, 48]
|
|
ubfiz x21, x21, 5, 32
|
|
mov x22, x0
|
|
add x21, x21, 4
|
|
ldrb w3, [x3, 9]
|
|
adrp x23, .LC40
|
|
adrp x24, .LANCHOR2
|
|
add x19, x22, 4
|
|
add x21, x22, x21
|
|
add x23, x23, :lo12:.LC40
|
|
add x24, x24, :lo12:.LANCHOR2
|
|
bl FlashProgPages
|
|
.L1175:
|
|
cmp x21, x19
|
|
beq .L1181
|
|
sub x22, x19, #4
|
|
b .L1182
|
|
.L1177:
|
|
ldr w1, [x19]
|
|
mov x0, x23
|
|
bl printf
|
|
ldr w0, [x19]
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
ldrh w0, [x20, 4]
|
|
cbnz w0, .L1176
|
|
mov x0, x20
|
|
bl allocate_new_data_superblock
|
|
.L1176:
|
|
mov x0, x20
|
|
bl get_new_active_ppa
|
|
str w0, [x19]
|
|
mov w2, 0
|
|
str w0, [x29, 76]
|
|
mov w1, 1
|
|
ldrb w3, [x20, 9]
|
|
mov x0, x22
|
|
bl FlashProgPages
|
|
.L1182:
|
|
ldr w2, [x19, -4]
|
|
cmp w2, 256
|
|
ccmn w2, #1, 4, ne
|
|
beq .L1177
|
|
ldrb w1, [x20, 6]
|
|
ldrh w0, [x24]
|
|
cmp w1, w0
|
|
bcc .L1178
|
|
adrp x1, .LANCHOR168
|
|
adrp x0, .LC1
|
|
mov w2, 985
|
|
add x1, x1, :lo12:.LANCHOR168
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1178:
|
|
add x1, x29, 80
|
|
ldr w0, [x22, 4]
|
|
mov w2, 1
|
|
str w0, [x1, -4]!
|
|
ldr w0, [x22, 24]
|
|
bl log2phys
|
|
ldr x0, [x22, 16]
|
|
ldr w3, [x0, 12]
|
|
lsr w0, w3, 10
|
|
bl P2V_block_in_plane
|
|
and w1, w0, 65535
|
|
mov w22, w1
|
|
cmn w3, #1
|
|
beq .L1179
|
|
adrp x2, .LANCHOR41
|
|
ubfiz x0, x1, 1, 16
|
|
ldr x2, [x2, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x2, x0]
|
|
cbnz w0, .L1180
|
|
adrp x0, .LC41
|
|
mov w2, 0
|
|
add x0, x0, :lo12:.LC41
|
|
bl printf
|
|
.L1180:
|
|
mov w0, w22
|
|
bl decrement_vpc_count
|
|
.L1179:
|
|
add x19, x19, 32
|
|
b .L1175
|
|
.L1181:
|
|
adrp x0, .LANCHOR2
|
|
ldrb w1, [x20, 6]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
cmp w1, w0
|
|
bcc .L1174
|
|
adrp x1, .LANCHOR168
|
|
adrp x0, .LC1
|
|
mov w2, 1000
|
|
add x1, x1, :lo12:.LANCHOR168
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1174:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.size FtlProgPages, .-FtlProgPages
|
|
.section .text.FtlGcFreeTempBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcFreeTempBlock
|
|
.type FtlGcFreeTempBlock, %function
|
|
FtlGcFreeTempBlock:
|
|
stp x29, x30, [sp, -112]!
|
|
mov w1, 65535
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR52
|
|
stp x21, x22, [sp, 32]
|
|
ldrh w2, [x19, #:lo12:.LANCHOR52]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
cmp w2, w1
|
|
stp x27, x28, [sp, 80]
|
|
beq .L1189
|
|
adrp x1, .LANCHOR18
|
|
add x0, x19, :lo12:.LANCHOR52
|
|
ldrh w1, [x1, #:lo12:.LANCHOR18]
|
|
bl FtlGcScanTempBlk
|
|
str w0, [x29, 108]
|
|
.L1189:
|
|
adrp x0, .LANCHOR132
|
|
ldrh w2, [x19, #:lo12:.LANCHOR52]
|
|
mov w1, 65535
|
|
str wzr, [x0, #:lo12:.LANCHOR132]
|
|
cmp w2, w1
|
|
add x0, x19, :lo12:.LANCHOR52
|
|
beq .L1191
|
|
ldrb w1, [x0, 7]
|
|
adrp x0, .LANCHOR18
|
|
adrp x20, .LANCHOR69
|
|
mov x21, x0
|
|
ldrh w3, [x0, #:lo12:.LANCHOR18]
|
|
ldrh w2, [x20, #:lo12:.LANCHOR69]
|
|
mul w1, w1, w3
|
|
cmp w2, w1
|
|
beq .L1192
|
|
adrp x1, .LANCHOR169
|
|
adrp x0, .LC1
|
|
mov w2, 164
|
|
add x1, x1, :lo12:.LANCHOR169
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1192:
|
|
add x0, x19, :lo12:.LANCHOR52
|
|
adrp x22, .LANCHOR41
|
|
ldrh w3, [x21, #:lo12:.LANCHOR18]
|
|
adrp x25, .LANCHOR151
|
|
ldrh w2, [x19, #:lo12:.LANCHOR52]
|
|
add x26, x20, :lo12:.LANCHOR69
|
|
ldrb w0, [x0, 7]
|
|
add x25, x25, :lo12:.LANCHOR151
|
|
ldr x1, [x22, #:lo12:.LANCHOR41]
|
|
mov w21, 0
|
|
adrp x27, .LANCHOR70
|
|
mul w0, w0, w3
|
|
strh w0, [x1, x2, lsl 1]
|
|
adrp x1, .LANCHOR83
|
|
ldrh w0, [x20, #:lo12:.LANCHOR69]
|
|
ldr w2, [x1, #:lo12:.LANCHOR83]
|
|
add w0, w0, w2
|
|
str w0, [x1, #:lo12:.LANCHOR83]
|
|
.L1193:
|
|
ldrh w0, [x26]
|
|
cmp w0, w21
|
|
bhi .L1197
|
|
mov w0, -1
|
|
bl decrement_vpc_count
|
|
ldrh w0, [x19, #:lo12:.LANCHOR52]
|
|
ldr x2, [x22, #:lo12:.LANCHOR41]
|
|
ubfiz x1, x0, 1, 16
|
|
ldrh w1, [x2, x1]
|
|
cbz w1, .L1198
|
|
bl INSERT_DATA_LIST
|
|
.L1199:
|
|
adrp x0, .LANCHOR67
|
|
mov w21, -1
|
|
strh wzr, [x20, #:lo12:.LANCHOR69]
|
|
strh w21, [x19, #:lo12:.LANCHOR52]
|
|
strh wzr, [x0, #:lo12:.LANCHOR67]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
adrp x0, .LANCHOR144
|
|
strh w21, [x0, #:lo12:.LANCHOR144]
|
|
adrp x0, .LANCHOR47
|
|
ldrh w1, [x0, #:lo12:.LANCHOR47]
|
|
adrp x0, .LANCHOR170
|
|
ldrh w0, [x0, #:lo12:.LANCHOR170]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w1, w0, lsr 2
|
|
ble .L1191
|
|
adrp x0, .LANCHOR99
|
|
mov w1, 20
|
|
strh w1, [x0, #:lo12:.LANCHOR99]
|
|
.L1191:
|
|
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
|
|
.L1197:
|
|
mov w24, 12
|
|
ldr x28, [x27, #:lo12:.LANCHOR70]
|
|
ldr w1, [x25]
|
|
umull x24, w21, w24
|
|
add x23, x28, x24
|
|
ldr w0, [x23, 8]
|
|
cmp w0, w1
|
|
bcc .L1194
|
|
.L1202:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR52]
|
|
b .L1203
|
|
.L1194:
|
|
add x1, x29, 108
|
|
mov w2, 0
|
|
bl log2phys
|
|
ldr w0, [x28, x24]
|
|
ldr w1, [x29, 108]
|
|
cmp w0, w1
|
|
bne .L1196
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
mov w24, w0
|
|
ldr w0, [x23, 8]
|
|
mov w2, 1
|
|
add x1, x23, 4
|
|
bl log2phys
|
|
mov w0, w24
|
|
.L1203:
|
|
bl decrement_vpc_count
|
|
b .L1195
|
|
.L1196:
|
|
ldr w0, [x23, 4]
|
|
cmp w1, w0
|
|
bne .L1202
|
|
.L1195:
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
b .L1193
|
|
.L1198:
|
|
bl INSERT_FREE_LIST
|
|
b .L1199
|
|
.size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
|
|
.section .text.FtlGcPageRecovery,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcPageRecovery
|
|
.type FtlGcPageRecovery, %function
|
|
FtlGcPageRecovery:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR18
|
|
adrp x19, .LANCHOR52
|
|
add x19, x19, :lo12:.LANCHOR52
|
|
ldrh w1, [x20, #:lo12:.LANCHOR18]
|
|
mov x0, x19
|
|
bl FtlGcScanTempBlk
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR18]
|
|
cmp w1, w0
|
|
bcc .L1204
|
|
adrp x0, .LANCHOR128
|
|
add x0, x0, :lo12:.LANCHOR128
|
|
bl FtlMapBlkWriteDump_data
|
|
mov w0, 0
|
|
bl FtlGcFreeTempBlock
|
|
adrp x0, .LANCHOR132
|
|
str wzr, [x0, #:lo12:.LANCHOR132]
|
|
.L1204:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FtlGcPageRecovery, .-FtlGcPageRecovery
|
|
.section .text.FtlPowerLostRecovery,"ax",@progbits
|
|
.align 2
|
|
.global FtlPowerLostRecovery
|
|
.type FtlPowerLostRecovery, %function
|
|
FtlPowerLostRecovery:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR156
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR50
|
|
add x19, x19, :lo12:.LANCHOR50
|
|
str wzr, [x0, #:lo12:.LANCHOR156]
|
|
mov x0, x19
|
|
bl FtlRecoverySuperblock
|
|
mov x0, x19
|
|
adrp x19, .LANCHOR51
|
|
bl FtlSlcSuperblockCheck
|
|
add x19, x19, :lo12:.LANCHOR51
|
|
mov x0, x19
|
|
bl FtlRecoverySuperblock
|
|
mov x0, x19
|
|
bl FtlSlcSuperblockCheck
|
|
bl FtlGcPageRecovery
|
|
mov w0, -1
|
|
bl decrement_vpc_count
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FtlPowerLostRecovery, .-FtlPowerLostRecovery
|
|
.section .text.Ftl_gc_temp_data_write_back,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_gc_temp_data_write_back
|
|
.type Ftl_gc_temp_data_write_back, %function
|
|
Ftl_gc_temp_data_write_back:
|
|
stp x29, x30, [sp, -32]!
|
|
mov w3, 0
|
|
mov w2, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR61
|
|
adrp x20, .LANCHOR103
|
|
ldr w1, [x19, #:lo12:.LANCHOR61]
|
|
add x19, x19, :lo12:.LANCHOR61
|
|
ldr x0, [x20, #:lo12:.LANCHOR103]
|
|
bl FlashProgPages
|
|
mov w11, 0
|
|
.L1210:
|
|
ldr w1, [x19]
|
|
cmp w11, w1
|
|
bcc .L1213
|
|
ldr x0, [x20, #:lo12:.LANCHOR103]
|
|
bl FtlGcBufFree
|
|
str wzr, [x19]
|
|
adrp x0, .LANCHOR52+4
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52+4]
|
|
cbnz w0, .L1215
|
|
mov w0, 1
|
|
bl FtlGcFreeTempBlock
|
|
mov w0, 1
|
|
.L1209:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L1213:
|
|
ldr x2, [x20, #:lo12:.LANCHOR103]
|
|
ubfiz x0, x11, 5, 16
|
|
add x1, x2, x0
|
|
ldr w2, [x2, x0]
|
|
ldr x3, [x1, 16]
|
|
cmn w2, #1
|
|
bne .L1211
|
|
.L1217:
|
|
ldr w1, [x1, 4]
|
|
ldr w0, [x3, 12]
|
|
bl FtlGcUpdatePage
|
|
add w11, w11, 1
|
|
and w11, w11, 65535
|
|
b .L1210
|
|
.L1211:
|
|
ldr w2, [x3, 8]
|
|
b .L1217
|
|
.L1215:
|
|
mov w0, 0
|
|
b .L1209
|
|
.size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
|
|
.section .text.Ftl_get_new_temp_ppa,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_get_new_temp_ppa
|
|
.type Ftl_get_new_temp_ppa, %function
|
|
Ftl_get_new_temp_ppa:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR52
|
|
mov w2, 65535
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w3, [x0, #:lo12:.LANCHOR52]
|
|
cmp w3, w2
|
|
beq .L1219
|
|
add x1, x0, :lo12:.LANCHOR52
|
|
ldrh w0, [x1, 4]
|
|
cbnz w0, .L1220
|
|
.L1219:
|
|
mov w0, 0
|
|
bl FtlGcFreeTempBlock
|
|
add x0, x19, :lo12:.LANCHOR52
|
|
strb wzr, [x0, 8]
|
|
bl allocate_data_superblock
|
|
adrp x0, .LANCHOR67
|
|
strh wzr, [x0, #:lo12:.LANCHOR67]
|
|
adrp x0, .LANCHOR69
|
|
strh wzr, [x0, #:lo12:.LANCHOR69]
|
|
bl l2p_flush
|
|
mov w0, 0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L1220:
|
|
add x0, x19, :lo12:.LANCHOR52
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
b get_new_active_ppa
|
|
.size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
|
|
.section .text.rk_ftl_garbage_collect,"ax",@progbits
|
|
.align 2
|
|
.global rk_ftl_garbage_collect
|
|
.type rk_ftl_garbage_collect, %function
|
|
rk_ftl_garbage_collect:
|
|
stp x29, x30, [sp, -176]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR93
|
|
stp x19, x20, [sp, 16]
|
|
ldr w1, [x21, #:lo12:.LANCHOR93]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cbnz w1, .L1279
|
|
adrp x1, .LANCHOR43
|
|
ldrh w1, [x1, #:lo12:.LANCHOR43]
|
|
cmp w1, 47
|
|
bls .L1279
|
|
adrp x1, .LANCHOR72
|
|
mov w4, 65535
|
|
ldrh w3, [x1, #:lo12:.LANCHOR72]
|
|
cmp w3, w4
|
|
beq .L1224
|
|
adrp x2, .LANCHOR71
|
|
ldrh w5, [x2, #:lo12:.LANCHOR71]
|
|
cmp w5, w4
|
|
bne .L1224
|
|
strh w3, [x2, #:lo12:.LANCHOR71]
|
|
mov w2, -1
|
|
strh w2, [x1, #:lo12:.LANCHOR72]
|
|
.L1224:
|
|
cbnz w0, .L1280
|
|
adrp x1, .LANCHOR47
|
|
ldrh w1, [x1, #:lo12:.LANCHOR47]
|
|
cmp w1, 24
|
|
bhi .L1281
|
|
adrp x2, .LANCHOR18
|
|
cmp w1, 16
|
|
ldrh w20, [x2, #:lo12:.LANCHOR18]
|
|
bls .L1227
|
|
lsr w20, w20, 5
|
|
.L1226:
|
|
adrp x2, .LANCHOR99
|
|
ldrh w3, [x2, #:lo12:.LANCHOR99]
|
|
cmp w3, w1
|
|
mov x3, x2
|
|
bcs .L1230
|
|
adrp x1, .LANCHOR52
|
|
mov w4, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
cmp w1, w4
|
|
bne .L1231
|
|
adrp x4, .LANCHOR71
|
|
ldrh w4, [x4, #:lo12:.LANCHOR71]
|
|
cmp w4, w1
|
|
bne .L1231
|
|
adrp x0, .LANCHOR171
|
|
ldrh w0, [x0, #:lo12:.LANCHOR171]
|
|
cbnz w0, .L1232
|
|
adrp x1, .LANCHOR151
|
|
adrp x4, .LANCHOR58
|
|
ldr w1, [x1, #:lo12:.LANCHOR151]
|
|
ldr w4, [x4, #:lo12:.LANCHOR58]
|
|
add w1, w1, w1, lsl 1
|
|
cmp w4, w1, lsr 2
|
|
bcs .L1233
|
|
.L1232:
|
|
adrp x1, .LANCHOR170
|
|
ldrh w1, [x1, #:lo12:.LANCHOR170]
|
|
add w1, w1, w1, lsl 1
|
|
asr w1, w1, 2
|
|
strh w1, [x3, #:lo12:.LANCHOR99]
|
|
.L1234:
|
|
adrp x1, .LANCHOR94
|
|
str wzr, [x1, #:lo12:.LANCHOR94]
|
|
.L1222:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 176
|
|
ret
|
|
.L1227:
|
|
cmp w1, 12
|
|
bls .L1228
|
|
lsr w20, w20, 4
|
|
b .L1226
|
|
.L1228:
|
|
cmp w1, 8
|
|
bls .L1226
|
|
lsr w20, w20, 2
|
|
b .L1226
|
|
.L1281:
|
|
mov w20, 1
|
|
b .L1226
|
|
.L1233:
|
|
mov w1, 18
|
|
strh w1, [x2, #:lo12:.LANCHOR99]
|
|
b .L1234
|
|
.L1231:
|
|
adrp x1, .LANCHOR170
|
|
ldrh w1, [x1, #:lo12:.LANCHOR170]
|
|
add w1, w1, w1, lsl 1
|
|
asr w1, w1, 2
|
|
strh w1, [x3, #:lo12:.LANCHOR99]
|
|
.L1230:
|
|
adrp x1, .LANCHOR73
|
|
ldrh w1, [x1, #:lo12:.LANCHOR73]
|
|
cbz w1, .L1225
|
|
add w20, w20, 32
|
|
and w20, w20, 65535
|
|
.L1225:
|
|
adrp x19, .LANCHOR144
|
|
str w0, [x29, 152]
|
|
mov w0, 65535
|
|
ldrh w2, [x19, #:lo12:.LANCHOR144]
|
|
cmp w2, w0
|
|
bne .L1237
|
|
adrp x0, .LANCHOR71
|
|
ldrh w1, [x0, #:lo12:.LANCHOR71]
|
|
cmp w1, w2
|
|
beq .L1238
|
|
adrp x2, .LANCHOR41
|
|
ubfiz x1, x1, 1, 16
|
|
ldr x2, [x2, #:lo12:.LANCHOR41]
|
|
ldrh w1, [x2, x1]
|
|
cbnz w1, .L1239
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR71]
|
|
.L1239:
|
|
ldrh w1, [x0, #:lo12:.LANCHOR71]
|
|
strh w1, [x19, #:lo12:.LANCHOR144]
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR71]
|
|
.L1238:
|
|
add x0, x19, :lo12:.LANCHOR144
|
|
mov w1, 65535
|
|
strb wzr, [x0, 8]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR144]
|
|
cmp w0, w1
|
|
beq .L1237
|
|
bl IsBlkInGcList
|
|
cbz w0, .L1241
|
|
mov w0, -1
|
|
strh w0, [x19, #:lo12:.LANCHOR144]
|
|
.L1241:
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
mov w0, 65535
|
|
add x22, x19, :lo12:.LANCHOR144
|
|
cmp w1, w0
|
|
beq .L1237
|
|
mov x0, x22
|
|
bl make_superblock
|
|
adrp x0, .LANCHOR172
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
strh wzr, [x22, 2]
|
|
strh wzr, [x0, #:lo12:.LANCHOR172]
|
|
adrp x0, .LANCHOR41
|
|
strb wzr, [x22, 6]
|
|
ldr x0, [x0, #:lo12:.LANCHOR41]
|
|
ldrh w1, [x0, x1, lsl 1]
|
|
adrp x0, .LANCHOR173
|
|
strh w1, [x0, #:lo12:.LANCHOR173]
|
|
.L1237:
|
|
adrp x1, .LANCHOR50
|
|
ldrh w0, [x19, #:lo12:.LANCHOR144]
|
|
str x1, [x29, 128]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR50]
|
|
cmp w2, w0
|
|
beq .L1242
|
|
adrp x1, .LANCHOR51
|
|
ldrh w1, [x1, #:lo12:.LANCHOR51]
|
|
cmp w1, w0
|
|
beq .L1242
|
|
adrp x1, .LANCHOR52
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
cmp w1, w0
|
|
bne .L1243
|
|
.L1242:
|
|
mov w0, -1
|
|
strh w0, [x19, #:lo12:.LANCHOR144]
|
|
.L1243:
|
|
adrp x25, .LANCHOR101
|
|
add x26, x25, :lo12:.LANCHOR101
|
|
.L1277:
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L1244
|
|
adrp x0, .LANCHOR94
|
|
adrp x22, .LANCHOR18
|
|
add x22, x22, :lo12:.LANCHOR18
|
|
str wzr, [x0, #:lo12:.LANCHOR94]
|
|
.L1245:
|
|
ldrh w5, [x25, #:lo12:.LANCHOR101]
|
|
add x7, x25, :lo12:.LANCHOR101
|
|
mov w0, w5
|
|
bl List_get_gc_head_node
|
|
and w6, w0, 65535
|
|
strh w6, [x19, #:lo12:.LANCHOR144]
|
|
mov w0, 65535
|
|
cmp w6, w0
|
|
bne .L1246
|
|
strh wzr, [x7]
|
|
mov w0, 8
|
|
b .L1222
|
|
.L1280:
|
|
mov w20, 1
|
|
b .L1225
|
|
.L1246:
|
|
mov w0, w6
|
|
bl IsBlkInGcList
|
|
add w5, w5, 1
|
|
cbz w0, .L1247
|
|
strh w5, [x25, #:lo12:.LANCHOR101]
|
|
b .L1245
|
|
.L1247:
|
|
adrp x23, .LANCHOR41
|
|
adrp x4, .LANCHOR2
|
|
ldrh w0, [x22]
|
|
ubfiz x1, x6, 1, 16
|
|
ldr x2, [x23, #:lo12:.LANCHOR41]
|
|
and w5, w5, 65535
|
|
ldrh w4, [x4, #:lo12:.LANCHOR2]
|
|
strh w5, [x25, #:lo12:.LANCHOR101]
|
|
ldrh w3, [x2, x1]
|
|
mul w0, w0, w4
|
|
cmp w3, w0, asr 1
|
|
bgt .L1249
|
|
cmp w5, 48
|
|
bls .L1250
|
|
cmp w3, 8
|
|
bls .L1250
|
|
adrp x3, .LANCHOR67
|
|
ldrh w3, [x3, #:lo12:.LANCHOR67]
|
|
cmp w3, 35
|
|
bhi .L1250
|
|
.L1249:
|
|
strh wzr, [x26]
|
|
.L1250:
|
|
ldrh w1, [x2, x1]
|
|
cmp w0, w1
|
|
bgt .L1251
|
|
ldrh w0, [x26]
|
|
cmp w0, 3
|
|
bhi .L1251
|
|
mov w0, -1
|
|
strh wzr, [x26]
|
|
strh w0, [x19, #:lo12:.LANCHOR144]
|
|
.L1310:
|
|
adrp x0, .LANCHOR171
|
|
ldrh w0, [x0, #:lo12:.LANCHOR171]
|
|
b .L1222
|
|
.L1251:
|
|
cbnz w1, .L1252
|
|
mov w0, -1
|
|
bl decrement_vpc_count
|
|
ldrh w0, [x26]
|
|
add w0, w0, 1
|
|
strh w0, [x26]
|
|
b .L1245
|
|
.L1252:
|
|
add x0, x19, :lo12:.LANCHOR144
|
|
strb wzr, [x0, 8]
|
|
ldr x0, [x29, 128]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR50]
|
|
cmp w0, w6
|
|
bne .L1253
|
|
adrp x1, .LANCHOR174
|
|
adrp x0, .LC1
|
|
mov w2, 717
|
|
add x1, x1, :lo12:.LANCHOR174
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1253:
|
|
adrp x0, .LANCHOR51
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR51]
|
|
cmp w1, w0
|
|
bne .L1254
|
|
adrp x1, .LANCHOR174
|
|
adrp x0, .LC1
|
|
mov w2, 718
|
|
add x1, x1, :lo12:.LANCHOR174
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1254:
|
|
adrp x0, .LANCHOR52
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w1, w0
|
|
bne .L1255
|
|
adrp x1, .LANCHOR174
|
|
adrp x0, .LC1
|
|
mov w2, 719
|
|
add x1, x1, :lo12:.LANCHOR174
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1255:
|
|
add x22, x19, :lo12:.LANCHOR144
|
|
mov x0, x22
|
|
bl make_superblock
|
|
adrp x0, .LANCHOR172
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
strh wzr, [x0, #:lo12:.LANCHOR172]
|
|
ldr x0, [x23, #:lo12:.LANCHOR41]
|
|
ldrh w1, [x0, x1, lsl 1]
|
|
adrp x0, .LANCHOR173
|
|
strh wzr, [x22, 2]
|
|
strh w1, [x0, #:lo12:.LANCHOR173]
|
|
strb wzr, [x22, 6]
|
|
.L1244:
|
|
mov w0, 1
|
|
str w0, [x21, #:lo12:.LANCHOR93]
|
|
adrp x0, .LANCHOR18
|
|
str x0, [x29, 120]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR18]
|
|
ldr w0, [x29, 152]
|
|
str w1, [x29, 156]
|
|
cbz w0, .L1256
|
|
adrp x0, .LANCHOR2
|
|
ldrh w2, [x19, #:lo12:.LANCHOR144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
mul w0, w0, w1
|
|
adrp x1, .LANCHOR41
|
|
ldr x1, [x1, #:lo12:.LANCHOR41]
|
|
ldrh w1, [x1, x2, lsl 1]
|
|
sub w0, w0, w1
|
|
mov w1, 4
|
|
sdiv w0, w0, w1
|
|
add w20, w20, w0
|
|
and w20, w20, 65535
|
|
.L1256:
|
|
add x0, x19, :lo12:.LANCHOR144
|
|
ldr w2, [x29, 156]
|
|
ldrh w0, [x0, 2]
|
|
add w1, w0, w20
|
|
cmp w1, w2
|
|
ble .L1257
|
|
sub w20, w2, w0
|
|
and w20, w20, 65535
|
|
.L1257:
|
|
adrp x0, .LANCHOR172
|
|
mov w28, 0
|
|
add x0, x0, :lo12:.LANCHOR172
|
|
str x0, [x29, 144]
|
|
.L1258:
|
|
cmp w20, w28, uxth
|
|
bls .L1266
|
|
add x1, x19, :lo12:.LANCHOR144
|
|
adrp x0, .LANCHOR2
|
|
adrp x23, .LANCHOR65
|
|
add x1, x1, 16
|
|
ldrh w7, [x0, #:lo12:.LANCHOR2]
|
|
mov w22, 0
|
|
ldrh w4, [x1, -14]
|
|
mov w2, 0
|
|
ldr x0, [x23, #:lo12:.LANCHOR65]
|
|
mov w6, 65535
|
|
add w4, w4, w28
|
|
b .L1267
|
|
.L1260:
|
|
ldrh w3, [x1]
|
|
cmp w3, w6
|
|
beq .L1259
|
|
ubfiz x5, x22, 5, 16
|
|
add w22, w22, 1
|
|
add x5, x0, x5
|
|
and w22, w22, 65535
|
|
orr w3, w4, w3, lsl 10
|
|
str w3, [x5, 4]
|
|
.L1259:
|
|
add w2, w2, 1
|
|
add x1, x1, 2
|
|
and w2, w2, 65535
|
|
.L1267:
|
|
cmp w2, w7
|
|
bne .L1260
|
|
add x1, x19, :lo12:.LANCHOR144
|
|
adrp x24, .LANCHOR61
|
|
add x24, x24, :lo12:.LANCHOR61
|
|
ldrb w2, [x1, 8]
|
|
mov w1, w22
|
|
bl FlashReadPages
|
|
ubfiz x0, x22, 5, 16
|
|
mov x22, 0
|
|
str x0, [x29, 136]
|
|
.L1261:
|
|
ldr x0, [x29, 136]
|
|
cmp x22, x0
|
|
bne .L1265
|
|
add w28, w28, 1
|
|
b .L1258
|
|
.L1265:
|
|
ldr x0, [x23, #:lo12:.LANCHOR65]
|
|
add x1, x0, x22
|
|
ldr w0, [x0, x22]
|
|
cmn w0, #1
|
|
beq .L1262
|
|
ldr x27, [x1, 16]
|
|
mov w0, 61589
|
|
ldrh w1, [x27]
|
|
cmp w1, w0
|
|
bne .L1262
|
|
ldr w4, [x27, 8]
|
|
cmn w4, #1
|
|
bne .L1263
|
|
str w4, [x29, 112]
|
|
mov w2, 753
|
|
adrp x1, .LANCHOR174
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR174
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
ldr w4, [x29, 112]
|
|
.L1263:
|
|
mov w2, 0
|
|
add x1, x29, 168
|
|
mov w0, w4
|
|
bl log2phys
|
|
ldr x0, [x23, #:lo12:.LANCHOR65]
|
|
ldr w1, [x29, 168]
|
|
add x0, x0, x22
|
|
ldr w2, [x0, 4]
|
|
cmp w2, w1
|
|
bne .L1262
|
|
ldr x1, [x29, 144]
|
|
adrp x4, .LANCHOR103
|
|
ldr x2, [x29, 144]
|
|
ldr w0, [x0, 24]
|
|
ldrh w1, [x1]
|
|
add w1, w1, 1
|
|
strh w1, [x2]
|
|
ldr x2, [x4, #:lo12:.LANCHOR103]
|
|
ldr w1, [x24]
|
|
add x1, x2, x1, lsl 5
|
|
stp x4, x1, [x29, 104]
|
|
str w0, [x1, 24]
|
|
bl Ftl_get_new_temp_ppa
|
|
ldp x4, x1, [x29, 104]
|
|
ldr x2, [x4, #:lo12:.LANCHOR103]
|
|
str w0, [x1, 4]
|
|
ldr w1, [x24]
|
|
ubfiz x0, x1, 5, 32
|
|
add w1, w1, 1
|
|
add x2, x2, x0
|
|
ldr x0, [x23, #:lo12:.LANCHOR65]
|
|
add x0, x0, x22
|
|
ldr x4, [x0, 8]
|
|
str x4, [x2, 8]
|
|
ldr x4, [x0, 16]
|
|
str x4, [x2, 16]
|
|
ldr w2, [x29, 168]
|
|
str w2, [x27, 12]
|
|
adrp x2, .LANCHOR52
|
|
add x11, x2, :lo12:.LANCHOR52
|
|
ldrh w2, [x2, #:lo12:.LANCHOR52]
|
|
strh w2, [x27, 2]
|
|
adrp x2, .LANCHOR82
|
|
str w1, [x24]
|
|
mov w1, 1
|
|
ldr w2, [x2, #:lo12:.LANCHOR82]
|
|
str w2, [x27, 4]
|
|
bl FtlGcBufAlloc
|
|
ldrb w1, [x11, 7]
|
|
ldr w0, [x24]
|
|
cmp w1, w0
|
|
beq .L1264
|
|
ldrh w0, [x11, 4]
|
|
cbnz w0, .L1262
|
|
.L1264:
|
|
bl Ftl_gc_temp_data_write_back
|
|
cbz w0, .L1262
|
|
add x0, x19, :lo12:.LANCHOR144
|
|
mov w1, -1
|
|
str wzr, [x21, #:lo12:.LANCHOR93]
|
|
strh w1, [x19, #:lo12:.LANCHOR144]
|
|
strh wzr, [x0, 2]
|
|
b .L1310
|
|
.L1262:
|
|
add x22, x22, 32
|
|
b .L1261
|
|
.L1266:
|
|
add x1, x19, :lo12:.LANCHOR144
|
|
ldrh w0, [x1, 2]
|
|
add w20, w20, w0
|
|
ldr w0, [x29, 156]
|
|
and w20, w20, 65535
|
|
strh w20, [x1, 2]
|
|
cmp w0, w20
|
|
bhi .L1268
|
|
adrp x0, .LANCHOR61
|
|
ldr w0, [x0, #:lo12:.LANCHOR61]
|
|
cbz w0, .L1269
|
|
bl Ftl_gc_temp_data_write_back
|
|
cbz w0, .L1269
|
|
str wzr, [x21, #:lo12:.LANCHOR93]
|
|
b .L1310
|
|
.L1269:
|
|
adrp x0, .LANCHOR172
|
|
ldrh w0, [x0, #:lo12:.LANCHOR172]
|
|
cbnz w0, .L1270
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
adrp x20, .LANCHOR41
|
|
add x0, x19, :lo12:.LANCHOR144
|
|
ldr x3, [x20, #:lo12:.LANCHOR41]
|
|
ubfiz x2, x1, 1, 16
|
|
ldrh w4, [x3, x2]
|
|
cbz w4, .L1270
|
|
adrp x2, .LANCHOR173
|
|
adrp x22, .LANCHOR151
|
|
add x23, x22, :lo12:.LANCHOR151
|
|
mov w24, 0
|
|
ldrh w5, [x2, #:lo12:.LANCHOR173]
|
|
mov w3, 0
|
|
ldrh w2, [x0, 2]
|
|
adrp x0, .LC42
|
|
add x0, x0, :lo12:.LC42
|
|
bl printf
|
|
.L1271:
|
|
ldr w0, [x23]
|
|
cmp w24, w0
|
|
bcs .L1273
|
|
mov w2, 0
|
|
add x1, x29, 172
|
|
mov w0, w24
|
|
bl log2phys
|
|
ldr w3, [x29, 172]
|
|
cmn w3, #1
|
|
beq .L1272
|
|
lsr w0, w3, 10
|
|
bl P2V_block_in_plane
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
cmp w1, w0, uxth
|
|
bne .L1272
|
|
adrp x0, .LC43
|
|
mov w2, w3
|
|
mov w1, w24
|
|
add x0, x0, :lo12:.LC43
|
|
bl printf
|
|
.L1273:
|
|
ldr w0, [x22, #:lo12:.LANCHOR151]
|
|
cmp w24, w0
|
|
bcc .L1270
|
|
ldrh w1, [x19, #:lo12:.LANCHOR144]
|
|
ldr x0, [x20, #:lo12:.LANCHOR41]
|
|
strh wzr, [x0, x1, lsl 1]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR144]
|
|
bl update_vpc_list
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L1270:
|
|
mov w0, -1
|
|
strh w0, [x19, #:lo12:.LANCHOR144]
|
|
.L1268:
|
|
adrp x0, .LANCHOR47
|
|
str wzr, [x21, #:lo12:.LANCHOR93]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR47]
|
|
cmp w0, 2
|
|
bhi .L1276
|
|
ldr x0, [x29, 120]
|
|
ldrh w20, [x0, #:lo12:.LANCHOR18]
|
|
b .L1277
|
|
.L1272:
|
|
add w24, w24, 1
|
|
b .L1271
|
|
.L1276:
|
|
add w0, w0, 1
|
|
b .L1222
|
|
.L1279:
|
|
mov w0, 0
|
|
b .L1222
|
|
.size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
|
|
.section .text.FtlRead,"ax",@progbits
|
|
.align 2
|
|
.global FtlRead
|
|
.type FtlRead, %function
|
|
FtlRead:
|
|
stp x29, x30, [sp, -176]!
|
|
and w0, w0, 255
|
|
cmp w0, 16
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x3
|
|
stp x23, x24, [sp, 48]
|
|
mov w24, w2
|
|
stp x27, x28, [sp, 80]
|
|
mov w27, w1
|
|
stp x19, x20, [sp, 16]
|
|
stp x25, x26, [sp, 64]
|
|
bne .L1312
|
|
mov x2, x3
|
|
mov w1, w24
|
|
add w0, w27, 256
|
|
bl FtlVendorPartRead
|
|
mov w19, w0
|
|
.L1311:
|
|
mov w0, w19
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 176
|
|
ret
|
|
.L1312:
|
|
adrp x0, .LANCHOR33
|
|
ldr w0, [x0, #:lo12:.LANCHOR33]
|
|
cmp w1, w0
|
|
bcs .L1335
|
|
cmp w2, w0
|
|
bhi .L1335
|
|
add w1, w1, w2
|
|
str w1, [x29, 136]
|
|
cmp w0, w1
|
|
bcc .L1335
|
|
adrp x0, .LANCHOR165
|
|
ldr w19, [x0, #:lo12:.LANCHOR165]
|
|
cmn w19, #1
|
|
beq .L1311
|
|
adrp x21, .LANCHOR11
|
|
adrp x25, .LANCHOR134
|
|
add x25, x25, :lo12:.LANCHOR134
|
|
mov w26, 0
|
|
ldrh w0, [x21, #:lo12:.LANCHOR11]
|
|
mov w19, 0
|
|
adrp x28, .LANCHOR102
|
|
stp wzr, wzr, [x29, 140]
|
|
udiv w1, w27, w0
|
|
stp wzr, w1, [x29, 148]
|
|
add w1, w27, w2
|
|
sub w23, w1, #1
|
|
adrp x1, .LANCHOR162
|
|
ldr w20, [x29, 152]
|
|
udiv w23, w23, w0
|
|
ldr w0, [x29, 152]
|
|
sub w0, w23, w0
|
|
add w0, w0, 1
|
|
str w0, [x29, 156]
|
|
ldr w0, [x1, #:lo12:.LANCHOR162]
|
|
add w0, w0, w2
|
|
str w0, [x1, #:lo12:.LANCHOR162]
|
|
adrp x1, .LANCHOR88
|
|
ldr w2, [x29, 156]
|
|
ldr w0, [x1, #:lo12:.LANCHOR88]
|
|
add w0, w0, w2
|
|
str w0, [x1, #:lo12:.LANCHOR88]
|
|
.L1314:
|
|
ldr w0, [x29, 156]
|
|
cbnz w0, .L1331
|
|
adrp x0, .LANCHOR73
|
|
ldrh w0, [x0, #:lo12:.LANCHOR73]
|
|
cbnz w0, .L1332
|
|
adrp x0, .LANCHOR47
|
|
ldrh w0, [x0, #:lo12:.LANCHOR47]
|
|
cmp w0, 31
|
|
bhi .L1311
|
|
.L1332:
|
|
mov w1, 1
|
|
mov w0, 0
|
|
bl rk_ftl_garbage_collect
|
|
b .L1311
|
|
.L1331:
|
|
add x1, x29, 172
|
|
mov w2, 0
|
|
mov w0, w20
|
|
bl log2phys
|
|
ldr w1, [x29, 172]
|
|
cmn w1, #1
|
|
bne .L1315
|
|
add x6, x21, :lo12:.LANCHOR11
|
|
mov w5, 0
|
|
.L1316:
|
|
ldrh w0, [x6]
|
|
cmp w5, w0
|
|
bcc .L1318
|
|
.L1319:
|
|
ldr w0, [x29, 156]
|
|
add w20, w20, 1
|
|
subs w0, w0, #1
|
|
str w0, [x29, 156]
|
|
beq .L1323
|
|
adrp x0, .LANCHOR2
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
cmp w26, w0, lsl 2
|
|
bne .L1314
|
|
.L1323:
|
|
cbz w26, .L1314
|
|
ldr x0, [x28, #:lo12:.LANCHOR102]
|
|
mov w1, w26
|
|
mov w2, 0
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 140]
|
|
lsl w0, w0, 9
|
|
str w0, [x29, 116]
|
|
ldr w0, [x29, 148]
|
|
lsl w0, w0, 9
|
|
str x0, [x29, 128]
|
|
ldr w0, [x29, 144]
|
|
lsl w0, w0, 9
|
|
str w0, [x29, 120]
|
|
ubfiz x0, x26, 5, 32
|
|
mov x26, 0
|
|
str x0, [x29, 104]
|
|
add x0, x21, :lo12:.LANCHOR11
|
|
str x0, [x29, 96]
|
|
.L1330:
|
|
ldr x0, [x28, #:lo12:.LANCHOR102]
|
|
ldr w2, [x29, 152]
|
|
add x0, x0, x26
|
|
ldr w1, [x0, 24]
|
|
cmp w2, w1
|
|
bne .L1325
|
|
ldr x1, [x0, 8]
|
|
adrp x0, .LANCHOR108
|
|
ldr x0, [x0, #:lo12:.LANCHOR108]
|
|
cmp x1, x0
|
|
bne .L1326
|
|
ldr x0, [x29, 128]
|
|
ldr w2, [x29, 120]
|
|
add x1, x1, x0
|
|
mov x0, x22
|
|
.L1346:
|
|
bl ftl_memcpy
|
|
.L1326:
|
|
ldr x0, [x28, #:lo12:.LANCHOR102]
|
|
add x0, x0, x26
|
|
ldr x1, [x0, 16]
|
|
ldr w2, [x0, 24]
|
|
ldr w1, [x1, 8]
|
|
cmp w2, w1
|
|
beq .L1327
|
|
ldr w1, [x25, 72]
|
|
add w1, w1, 1
|
|
str w1, [x25, 72]
|
|
.L1327:
|
|
ldr w1, [x0]
|
|
cmn w1, #1
|
|
bne .L1328
|
|
ldr w0, [x25, 72]
|
|
mov w19, w1
|
|
add w0, w0, 1
|
|
str w0, [x25, 72]
|
|
.L1329:
|
|
ldr x0, [x29, 104]
|
|
add x26, x26, 32
|
|
cmp x0, x26
|
|
bne .L1330
|
|
mov w26, 0
|
|
b .L1314
|
|
.L1318:
|
|
madd w0, w20, w0, w5
|
|
cmp w27, w0
|
|
bhi .L1317
|
|
ldr w1, [x29, 136]
|
|
cmp w1, w0
|
|
bls .L1317
|
|
sub w0, w0, w27
|
|
str x6, [x29, 120]
|
|
lsl w0, w0, 9
|
|
str w5, [x29, 128]
|
|
mov w2, 512
|
|
mov w1, 0
|
|
add x0, x22, x0
|
|
bl ftl_memset
|
|
ldr w5, [x29, 128]
|
|
ldr x6, [x29, 120]
|
|
.L1317:
|
|
add w5, w5, 1
|
|
b .L1316
|
|
.L1315:
|
|
ldr x2, [x28, #:lo12:.LANCHOR102]
|
|
ubfiz x0, x26, 5, 32
|
|
add x0, x2, x0
|
|
str w1, [x0, 4]
|
|
ldr w1, [x29, 152]
|
|
cmp w20, w1
|
|
bne .L1320
|
|
adrp x1, .LANCHOR108
|
|
ldr x1, [x1, #:lo12:.LANCHOR108]
|
|
str x1, [x0, 8]
|
|
ldrh w1, [x21, #:lo12:.LANCHOR11]
|
|
udiv w2, w27, w1
|
|
msub w2, w2, w1, w27
|
|
str w2, [x29, 148]
|
|
sub w2, w1, w2
|
|
cmp w24, w2
|
|
csel w2, w24, w2, ls
|
|
str w2, [x29, 144]
|
|
cmp w1, w2
|
|
bne .L1321
|
|
str x22, [x0, 8]
|
|
.L1321:
|
|
adrp x1, .LANCHOR23
|
|
adrp x2, .LANCHOR114
|
|
str w20, [x0, 24]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR23]
|
|
ldr x2, [x2, #:lo12:.LANCHOR114]
|
|
mul w1, w1, w26
|
|
add w26, w26, 1
|
|
and x1, x1, 4294967292
|
|
add x1, x2, x1
|
|
str x1, [x0, 16]
|
|
b .L1319
|
|
.L1320:
|
|
cmp w20, w23
|
|
bne .L1322
|
|
ldrh w2, [x21, #:lo12:.LANCHOR11]
|
|
adrp x1, .LANCHOR109
|
|
ldr w3, [x29, 136]
|
|
ldr x1, [x1, #:lo12:.LANCHOR109]
|
|
str x1, [x0, 8]
|
|
mul w1, w20, w2
|
|
sub w3, w3, w1
|
|
str w3, [x29, 140]
|
|
cmp w2, w3
|
|
bne .L1321
|
|
.L1345:
|
|
sub w1, w1, w27
|
|
lsl w1, w1, 9
|
|
add x1, x22, x1
|
|
str x1, [x0, 8]
|
|
b .L1321
|
|
.L1322:
|
|
ldrh w1, [x21, #:lo12:.LANCHOR11]
|
|
mul w1, w1, w20
|
|
b .L1345
|
|
.L1325:
|
|
cmp w23, w1
|
|
bne .L1326
|
|
ldr x1, [x0, 8]
|
|
adrp x0, .LANCHOR109
|
|
ldr x0, [x0, #:lo12:.LANCHOR109]
|
|
cmp x1, x0
|
|
bne .L1326
|
|
ldr x0, [x29, 96]
|
|
ldr w2, [x29, 116]
|
|
ldrh w0, [x0]
|
|
mul w0, w0, w23
|
|
sub w0, w0, w27
|
|
lsl w0, w0, 9
|
|
add x0, x22, x0
|
|
b .L1346
|
|
.L1328:
|
|
cmp w1, 256
|
|
bne .L1329
|
|
ldr w0, [x0, 4]
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
b .L1329
|
|
.L1335:
|
|
mov w19, -1
|
|
b .L1311
|
|
.size FtlRead, .-FtlRead
|
|
.section .text.sftl_read,"ax",@progbits
|
|
.align 2
|
|
.global sftl_read
|
|
.type sftl_read, %function
|
|
sftl_read:
|
|
mov x3, x2
|
|
mov w2, w1
|
|
mov w1, w0
|
|
mov w0, 0
|
|
b FtlRead
|
|
.size sftl_read, .-sftl_read
|
|
.section .text.FtlWrite,"ax",@progbits
|
|
.align 2
|
|
.global FtlWrite
|
|
.type FtlWrite, %function
|
|
FtlWrite:
|
|
stp x29, x30, [sp, -224]!
|
|
and w0, w0, 255
|
|
cmp w0, 16
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, w1
|
|
stp x25, x26, [sp, 64]
|
|
mov w26, w2
|
|
stp x27, x28, [sp, 80]
|
|
mov x27, x3
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
bne .L1349
|
|
mov x2, x3
|
|
mov w1, w26
|
|
add w0, w22, 256
|
|
bl FtlVendorPartWrite
|
|
.L1348:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 224
|
|
ret
|
|
.L1349:
|
|
adrp x0, .LANCHOR33
|
|
ldr w0, [x0, #:lo12:.LANCHOR33]
|
|
cmp w1, w0
|
|
bcs .L1383
|
|
cmp w2, w0
|
|
bhi .L1383
|
|
add w1, w1, w2
|
|
str w1, [x29, 136]
|
|
cmp w0, w1
|
|
bcc .L1383
|
|
adrp x0, .LANCHOR165
|
|
ldr w0, [x0, #:lo12:.LANCHOR165]
|
|
cmn w0, #1
|
|
beq .L1348
|
|
adrp x0, .LANCHOR175
|
|
mov w1, 2048
|
|
add w2, w22, w2
|
|
str w1, [x0, #:lo12:.LANCHOR175]
|
|
adrp x1, .LANCHOR11
|
|
sub w2, w2, #1
|
|
str x1, [x29, 160]
|
|
ldrh w0, [x1, #:lo12:.LANCHOR11]
|
|
udiv w25, w22, w0
|
|
udiv w0, w2, w0
|
|
adrp x2, .LANCHOR161
|
|
mov w19, w25
|
|
str w0, [x29, 144]
|
|
sub w0, w0, w25
|
|
add w24, w0, 1
|
|
str w0, [x29, 140]
|
|
ldr w0, [x2, #:lo12:.LANCHOR161]
|
|
add w0, w0, w26
|
|
str w0, [x2, #:lo12:.LANCHOR161]
|
|
adrp x2, .LANCHOR84
|
|
ldr w0, [x2, #:lo12:.LANCHOR84]
|
|
add w0, w0, w24
|
|
str w0, [x2, #:lo12:.LANCHOR84]
|
|
adrp x0, .LANCHOR50
|
|
add x20, x0, :lo12:.LANCHOR50
|
|
.L1351:
|
|
cbnz w24, .L1376
|
|
ldr w1, [x29, 140]
|
|
mov w0, 0
|
|
bl rk_ftl_garbage_collect
|
|
adrp x0, .LANCHOR47
|
|
mov x22, x0
|
|
ldrh w1, [x0, #:lo12:.LANCHOR47]
|
|
cmp w1, 5
|
|
bls .L1377
|
|
.L1379:
|
|
mov w0, 0
|
|
b .L1348
|
|
.L1376:
|
|
adrp x0, .LANCHOR50
|
|
add x0, x0, :lo12:.LANCHOR50
|
|
adrp x1, .LANCHOR2
|
|
str x1, [x29, 112]
|
|
ldrb w2, [x0, 6]
|
|
ldrh w0, [x1, #:lo12:.LANCHOR2]
|
|
cmp w2, w0
|
|
bcc .L1352
|
|
adrp x1, .LANCHOR176
|
|
adrp x0, .LC1
|
|
mov w2, 1041
|
|
add x1, x1, :lo12:.LANCHOR176
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1352:
|
|
ldrh w0, [x20, 4]
|
|
cbnz w0, .L1353
|
|
mov x0, x20
|
|
bl allocate_new_data_superblock
|
|
.L1353:
|
|
ldrb w0, [x20, 7]
|
|
ldrh w1, [x20, 4]
|
|
lsl w0, w0, 2
|
|
cmp w0, w1
|
|
csel w0, w0, w1, ls
|
|
ldrb w1, [x20, 6]
|
|
cmp w0, w24
|
|
csel w0, w0, w24, ls
|
|
str w0, [x29, 148]
|
|
ldr x0, [x29, 112]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
cmp w1, w0
|
|
bcc .L1354
|
|
adrp x1, .LANCHOR176
|
|
adrp x0, .LC1
|
|
mov w2, 1074
|
|
add x1, x1, :lo12:.LANCHOR176
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1354:
|
|
adrp x0, .LANCHOR23
|
|
add x0, x0, :lo12:.LANCHOR23
|
|
str xzr, [x29, 168]
|
|
str x0, [x29, 104]
|
|
adrp x0, .LANCHOR22
|
|
add x0, x0, :lo12:.LANCHOR22
|
|
str x0, [x29, 96]
|
|
.L1355:
|
|
ldr w1, [x29, 148]
|
|
adrp x28, .LANCHOR104
|
|
ldr w23, [x29, 168]
|
|
cmp w23, w1
|
|
bcc .L1374
|
|
mov x23, x1
|
|
.L1356:
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
mov x3, x20
|
|
mov w2, 0
|
|
mov w1, w23
|
|
bl FtlProgPages
|
|
cmp w24, w23
|
|
bcs .L1375
|
|
adrp x1, .LANCHOR176
|
|
adrp x0, .LC1
|
|
mov w2, 1152
|
|
add x1, x1, :lo12:.LANCHOR176
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1375:
|
|
sub w24, w24, w23
|
|
b .L1351
|
|
.L1374:
|
|
ldrh w0, [x20, 4]
|
|
cbz w0, .L1356
|
|
add x1, x29, 188
|
|
mov w2, 0
|
|
mov w0, w19
|
|
bl log2phys
|
|
mov x0, x20
|
|
bl get_new_active_ppa
|
|
ldr x1, [x29, 168]
|
|
lsl x21, x1, 5
|
|
ldr x1, [x28, #:lo12:.LANCHOR104]
|
|
add x1, x1, x21
|
|
str w0, [x1, 4]
|
|
ldr x0, [x29, 104]
|
|
str w19, [x1, 24]
|
|
ldrh w2, [x0]
|
|
mul w23, w23, w2
|
|
and x0, x23, 4294967292
|
|
str x0, [x29, 128]
|
|
adrp x0, .LANCHOR114
|
|
ldr x3, [x29, 128]
|
|
ldr x0, [x0, #:lo12:.LANCHOR114]
|
|
str x0, [x29, 120]
|
|
add x23, x0, x3
|
|
str x23, [x1, 16]
|
|
mov x0, x23
|
|
mov w1, 0
|
|
bl ftl_memset
|
|
ldr w0, [x29, 144]
|
|
cmp w19, w25
|
|
ccmp w19, w0, 4, ne
|
|
bne .L1357
|
|
cmp w19, w25
|
|
ldr x0, [x29, 160]
|
|
bne .L1358
|
|
ldrh w2, [x0, #:lo12:.LANCHOR11]
|
|
udiv w0, w22, w2
|
|
msub w0, w0, w2, w22
|
|
str w0, [x29, 152]
|
|
sub w2, w2, w0
|
|
cmp w2, w26
|
|
csel w0, w2, w26, ls
|
|
str w0, [x29, 156]
|
|
.L1359:
|
|
ldr x0, [x29, 160]
|
|
ldr w1, [x29, 156]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR11]
|
|
cmp w1, w0
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
bne .L1360
|
|
add x21, x0, x21
|
|
cmp w19, w25
|
|
bne .L1361
|
|
str x27, [x21, 8]
|
|
.L1362:
|
|
ldr x0, [x29, 112]
|
|
ldrb w1, [x20, 6]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR2]
|
|
cmp w1, w0
|
|
bcc .L1371
|
|
adrp x1, .LANCHOR176
|
|
adrp x0, .LC1
|
|
mov w2, 1143
|
|
add x1, x1, :lo12:.LANCHOR176
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1371:
|
|
ldp x1, x2, [x29, 120]
|
|
mov w0, -3947
|
|
strh w0, [x1, x2]
|
|
adrp x1, .LANCHOR82
|
|
ldr w0, [x1, #:lo12:.LANCHOR82]
|
|
stp w0, w19, [x23, 4]
|
|
add w19, w19, 1
|
|
add w0, w0, 1
|
|
cmn w0, #1
|
|
csel w0, w0, wzr, ne
|
|
str w0, [x1, #:lo12:.LANCHOR82]
|
|
ldr w0, [x29, 188]
|
|
str w0, [x23, 12]
|
|
ldrh w0, [x20]
|
|
strh w0, [x23, 2]
|
|
ldr x0, [x29, 168]
|
|
add x0, x0, 1
|
|
str x0, [x29, 168]
|
|
b .L1355
|
|
.L1358:
|
|
ldrh w2, [x0, #:lo12:.LANCHOR11]
|
|
ldr w0, [x29, 136]
|
|
msub w2, w19, w2, w0
|
|
and w0, w2, 65535
|
|
stp wzr, w0, [x29, 152]
|
|
b .L1359
|
|
.L1361:
|
|
ldr w0, [x29, 156]
|
|
.L1391:
|
|
mul w0, w0, w19
|
|
sub w0, w0, w22
|
|
lsl w0, w0, 9
|
|
add x0, x27, x0
|
|
str x0, [x21, 8]
|
|
b .L1362
|
|
.L1360:
|
|
add x0, x0, x21
|
|
cmp w19, w25
|
|
bne .L1363
|
|
adrp x1, .LANCHOR108
|
|
ldr x1, [x1, #:lo12:.LANCHOR108]
|
|
.L1390:
|
|
str x1, [x0, 8]
|
|
ldr w0, [x29, 188]
|
|
cmn w0, #1
|
|
beq .L1365
|
|
str w0, [x29, 196]
|
|
mov w2, 0
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
str w19, [x29, 216]
|
|
add x0, x0, x21
|
|
ldp x1, x0, [x0, 8]
|
|
stp x1, x0, [x29, 200]
|
|
mov w1, 1
|
|
add x0, x29, 192
|
|
bl FlashReadPages
|
|
ldr w3, [x29, 192]
|
|
cmn w3, #1
|
|
bne .L1366
|
|
adrp x0, .LANCHOR134
|
|
add x0, x0, :lo12:.LANCHOR134
|
|
mov w2, w19
|
|
ldr w1, [x0, 72]
|
|
add w1, w1, 1
|
|
str w1, [x0, 72]
|
|
ldr w1, [x23, 8]
|
|
adrp x0, .LC44
|
|
add x0, x0, :lo12:.LC44
|
|
bl printf
|
|
.L1369:
|
|
ldr w0, [x29, 156]
|
|
cmp w19, w25
|
|
lsl w2, w0, 9
|
|
bne .L1370
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
mov x1, x27
|
|
add x21, x0, x21
|
|
ldr w0, [x29, 152]
|
|
ldr x3, [x21, 8]
|
|
lsl w0, w0, 9
|
|
add x0, x3, x0
|
|
.L1392:
|
|
bl ftl_memcpy
|
|
b .L1362
|
|
.L1363:
|
|
adrp x1, .LANCHOR109
|
|
ldr x1, [x1, #:lo12:.LANCHOR109]
|
|
b .L1390
|
|
.L1366:
|
|
ldr w1, [x23, 8]
|
|
cmp w19, w1
|
|
beq .L1368
|
|
adrp x0, .LANCHOR134
|
|
add x0, x0, :lo12:.LANCHOR134
|
|
ldr w2, [x0, 72]
|
|
add w2, w2, 1
|
|
str w2, [x0, 72]
|
|
adrp x0, .LC45
|
|
mov w2, w19
|
|
add x0, x0, :lo12:.LC45
|
|
bl printf
|
|
.L1368:
|
|
ldr w0, [x23, 8]
|
|
cmp w19, w0
|
|
beq .L1369
|
|
mov w2, 1128
|
|
adrp x1, .LANCHOR176
|
|
adrp x0, .LC1
|
|
add x1, x1, :lo12:.LANCHOR176
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
b .L1369
|
|
.L1365:
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
ldr x1, [x29, 96]
|
|
add x0, x0, x21
|
|
ldrh w2, [x1]
|
|
mov w1, 0
|
|
ldr x0, [x0, 8]
|
|
bl ftl_memset
|
|
b .L1369
|
|
.L1370:
|
|
ldr x0, [x29, 160]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR11]
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
add x21, x0, x21
|
|
mul w1, w1, w19
|
|
sub w1, w1, w22
|
|
ldr x0, [x21, 8]
|
|
lsl w1, w1, 9
|
|
add x1, x27, x1
|
|
b .L1392
|
|
.L1357:
|
|
ldr x0, [x28, #:lo12:.LANCHOR104]
|
|
add x21, x0, x21
|
|
ldr x0, [x29, 160]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR11]
|
|
b .L1391
|
|
.L1377:
|
|
adrp x23, .LANCHOR71
|
|
adrp x20, .LANCHOR100
|
|
adrp x21, .LANCHOR99
|
|
add x23, x23, :lo12:.LANCHOR71
|
|
add x20, x20, :lo12:.LANCHOR100
|
|
add x21, x21, :lo12:.LANCHOR99
|
|
mov w19, 256
|
|
.L1380:
|
|
adrp x0, .LANCHOR144
|
|
mov w1, 65535
|
|
ldrh w0, [x0, #:lo12:.LANCHOR144]
|
|
cmp w0, w1
|
|
bne .L1378
|
|
ldrh w1, [x23]
|
|
cmp w1, w0
|
|
bne .L1378
|
|
mov w0, 0
|
|
bl List_get_gc_head_node
|
|
bl FtlGcRefreshBlock
|
|
.L1378:
|
|
mov w0, 128
|
|
mov w1, 1
|
|
strh w0, [x20]
|
|
strh w0, [x21]
|
|
mov w0, w1
|
|
bl rk_ftl_garbage_collect
|
|
mov w1, 1
|
|
mov w0, 0
|
|
bl rk_ftl_garbage_collect
|
|
ldrh w0, [x22, #:lo12:.LANCHOR47]
|
|
cmp w0, 2
|
|
bhi .L1379
|
|
subs w19, w19, #1
|
|
bne .L1380
|
|
b .L1379
|
|
.L1383:
|
|
mov w0, -1
|
|
b .L1348
|
|
.size FtlWrite, .-FtlWrite
|
|
.section .text.sftl_gc,"ax",@progbits
|
|
.align 2
|
|
.global sftl_gc
|
|
.type sftl_gc, %function
|
|
sftl_gc:
|
|
mov w1, 1
|
|
mov w0, w1
|
|
b rk_ftl_garbage_collect
|
|
.size sftl_gc, .-sftl_gc
|
|
.section .text.FtlLoadSysInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadSysInfo
|
|
.type FtlLoadSysInfo, %function
|
|
FtlLoadSysInfo:
|
|
stp x29, x30, [sp, -112]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR137
|
|
stp x21, x22, [sp, 32]
|
|
add x0, x19, :lo12:.LANCHOR137
|
|
adrp x22, .LANCHOR105
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR113
|
|
stp x23, x24, [sp, 48]
|
|
stp x27, x28, [sp, 80]
|
|
adrp x23, .LANCHOR41
|
|
ldr x1, [x22, #:lo12:.LANCHOR105]
|
|
adrp x21, .LANCHOR4
|
|
str x1, [x0, 8]
|
|
adrp x20, .LANCHOR138
|
|
ldr x1, [x25, #:lo12:.LANCHOR113]
|
|
str x1, [x0, 16]
|
|
ldr x0, [x23, #:lo12:.LANCHOR41]
|
|
mov w1, 0
|
|
ldrh w2, [x21, #:lo12:.LANCHOR4]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldrh w0, [x20, #:lo12:.LANCHOR138]
|
|
mov w1, 65535
|
|
cmp w0, w1
|
|
bne .L1395
|
|
.L1406:
|
|
mov w0, -1
|
|
.L1394:
|
|
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
|
|
.L1395:
|
|
add x24, x20, :lo12:.LANCHOR138
|
|
mov w1, 1
|
|
bl FtlGetLastWrittenPage
|
|
sxth w28, w0
|
|
add w0, w0, 1
|
|
adrp x26, .LANCHOR22
|
|
strh w0, [x24, 2]
|
|
adrp x27, .LANCHOR177
|
|
ldrsh w24, [x20, #:lo12:.LANCHOR138]
|
|
add x26, x26, :lo12:.LANCHOR22
|
|
add x27, x27, :lo12:.LANCHOR177
|
|
.L1397:
|
|
tbz w28, #31, .L1403
|
|
adrp x1, .LANCHOR177
|
|
adrp x0, .LC1
|
|
mov w2, 1474
|
|
add x1, x1, :lo12:.LANCHOR177
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1402:
|
|
adrp x1, .LANCHOR22
|
|
ldrh w0, [x21, #:lo12:.LANCHOR4]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR22]
|
|
add x0, x0, 24
|
|
cmp x1, x0, lsl 1
|
|
bcs .L1405
|
|
adrp x1, .LANCHOR177
|
|
adrp x0, .LC1
|
|
mov w2, 1476
|
|
add x1, x1, :lo12:.LANCHOR177
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1405:
|
|
add x24, x19, :lo12:.LANCHOR137
|
|
adrp x19, .LANCHOR38
|
|
add x22, x19, :lo12:.LANCHOR38
|
|
mov w2, 48
|
|
mov x0, x22
|
|
ldr x1, [x24, 8]
|
|
bl ftl_memcpy
|
|
ldr x0, [x23, #:lo12:.LANCHOR41]
|
|
ldrh w2, [x21, #:lo12:.LANCHOR4]
|
|
ldr x1, [x24, 8]
|
|
lsl w2, w2, 1
|
|
add x1, x1, 48
|
|
bl ftl_memcpy
|
|
ldr w1, [x19, #:lo12:.LANCHOR38]
|
|
mov w0, 19539
|
|
movk w0, 0x4654, lsl 16
|
|
cmp w1, w0
|
|
bne .L1406
|
|
add x20, x20, :lo12:.LANCHOR138
|
|
adrp x0, .LANCHOR9
|
|
ldrh w1, [x22, 8]
|
|
ldrb w2, [x22, 10]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR9]
|
|
strh w1, [x20, 6]
|
|
cmp w2, w0
|
|
bne .L1406
|
|
adrp x0, .LANCHOR178
|
|
adrp x2, .LANCHOR151
|
|
adrp x3, .LANCHOR2
|
|
str w1, [x0, #:lo12:.LANCHOR178]
|
|
adrp x0, .LANCHOR18
|
|
ldrh w3, [x3, #:lo12:.LANCHOR2]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR18]
|
|
mul w0, w0, w1
|
|
str w0, [x2, #:lo12:.LANCHOR151]
|
|
adrp x2, .LANCHOR11
|
|
ldrh w2, [x2, #:lo12:.LANCHOR11]
|
|
mul w0, w2, w0
|
|
adrp x2, .LANCHOR33
|
|
str w0, [x2, #:lo12:.LANCHOR33]
|
|
adrp x0, .LANCHOR6
|
|
ldr w2, [x0, #:lo12:.LANCHOR6]
|
|
adrp x0, .LANCHOR36+6
|
|
ldrh w0, [x0, #:lo12:.LANCHOR36+6]
|
|
cmp w1, w2
|
|
sub w0, w2, w0
|
|
sub w0, w0, w1
|
|
udiv w0, w0, w3
|
|
adrp x3, .LANCHOR170
|
|
strh w0, [x3, #:lo12:.LANCHOR170]
|
|
bls .L1407
|
|
adrp x1, .LANCHOR177
|
|
adrp x0, .LC1
|
|
mov w2, 1498
|
|
add x1, x1, :lo12:.LANCHOR177
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L1407:
|
|
add x4, x19, :lo12:.LANCHOR38
|
|
adrp x0, .LANCHOR50
|
|
add x2, x0, :lo12:.LANCHOR50
|
|
adrp x5, .LANCHOR144
|
|
adrp x20, .LANCHOR51
|
|
mov x22, x5
|
|
ldrh w1, [x4, 16]
|
|
ldrh w6, [x4, 14]
|
|
strh w6, [x0, #:lo12:.LANCHOR50]
|
|
lsr w3, w1, 6
|
|
and w1, w1, 63
|
|
strb w1, [x2, 6]
|
|
ldrb w1, [x4, 11]
|
|
strb w1, [x2, 8]
|
|
add x1, x5, :lo12:.LANCHOR144
|
|
strh w3, [x2, 2]
|
|
mov w2, -1
|
|
strh w2, [x5, #:lo12:.LANCHOR144]
|
|
add x2, x20, :lo12:.LANCHOR51
|
|
strh wzr, [x1, 2]
|
|
strb wzr, [x1, 6]
|
|
strb wzr, [x1, 8]
|
|
ldrh w1, [x4, 18]
|
|
strh w1, [x20, #:lo12:.LANCHOR51]
|
|
ldrh w1, [x4, 20]
|
|
lsr w3, w1, 6
|
|
and w1, w1, 63
|
|
strb w1, [x2, 6]
|
|
ldrb w1, [x4, 12]
|
|
strh w3, [x2, 2]
|
|
strb w1, [x2, 8]
|
|
adrp x2, .LANCHOR52
|
|
ldrh w1, [x4, 22]
|
|
add x3, x2, :lo12:.LANCHOR52
|
|
strh w1, [x2, #:lo12:.LANCHOR52]
|
|
mov x21, x2
|
|
ldrh w1, [x4, 24]
|
|
lsr w7, w1, 6
|
|
and w1, w1, 63
|
|
strb w1, [x3, 6]
|
|
ldrb w1, [x4, 13]
|
|
strb w1, [x3, 8]
|
|
adrp x1, .LANCHOR83
|
|
strh w7, [x3, 2]
|
|
ldr w3, [x4, 32]
|
|
str wzr, [x1, #:lo12:.LANCHOR83]
|
|
adrp x1, .LANCHOR84
|
|
str wzr, [x1, #:lo12:.LANCHOR84]
|
|
adrp x1, .LANCHOR88
|
|
str wzr, [x1, #:lo12:.LANCHOR88]
|
|
adrp x1, .LANCHOR87
|
|
str wzr, [x1, #:lo12:.LANCHOR87]
|
|
adrp x1, .LANCHOR89
|
|
str w3, [x1, #:lo12:.LANCHOR89]
|
|
adrp x1, .LANCHOR90
|
|
str wzr, [x1, #:lo12:.LANCHOR90]
|
|
adrp x1, .LANCHOR91
|
|
str wzr, [x1, #:lo12:.LANCHOR91]
|
|
adrp x1, .LANCHOR86
|
|
ldr w3, [x4, 40]
|
|
str wzr, [x1, #:lo12:.LANCHOR86]
|
|
adrp x1, .LANCHOR81
|
|
ldr w4, [x1, #:lo12:.LANCHOR81]
|
|
cmp w3, w4
|
|
bls .L1408
|
|
str w3, [x1, #:lo12:.LANCHOR81]
|
|
.L1408:
|
|
add x19, x19, :lo12:.LANCHOR38
|
|
adrp x1, .LANCHOR82
|
|
ldr w3, [x1, #:lo12:.LANCHOR82]
|
|
ldr w2, [x19, 36]
|
|
cmp w2, w3
|
|
bls .L1409
|
|
str w2, [x1, #:lo12:.LANCHOR82]
|
|
.L1409:
|
|
mov w1, 65535
|
|
cmp w6, w1
|
|
beq .L1410
|
|
add x0, x0, :lo12:.LANCHOR50
|
|
bl make_superblock
|
|
.L1410:
|
|
ldrh w2, [x20, #:lo12:.LANCHOR51]
|
|
mov w1, 65535
|
|
add x0, x20, :lo12:.LANCHOR51
|
|
cmp w2, w1
|
|
beq .L1411
|
|
bl make_superblock
|
|
.L1411:
|
|
ldrh w2, [x21, #:lo12:.LANCHOR52]
|
|
mov w1, 65535
|
|
add x0, x21, :lo12:.LANCHOR52
|
|
cmp w2, w1
|
|
beq .L1412
|
|
bl make_superblock
|
|
.L1412:
|
|
ldrh w2, [x22, #:lo12:.LANCHOR144]
|
|
mov w1, 65535
|
|
add x0, x22, :lo12:.LANCHOR144
|
|
cmp w2, w1
|
|
beq .L1413
|
|
bl make_superblock
|
|
.L1413:
|
|
mov w0, 0
|
|
b .L1394
|
|
.L1403:
|
|
add x3, x19, :lo12:.LANCHOR137
|
|
orr w0, w28, w24, lsl 10
|
|
mov w2, 1
|
|
str x3, [x29, 104]
|
|
mov w1, w2
|
|
str w0, [x3, 4]
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
str x0, [x3, 8]
|
|
mov x0, x3
|
|
bl FlashReadPages
|
|
ldr x3, [x29, 104]
|
|
ldr x0, [x3, 16]
|
|
ldr w8, [x0, 12]
|
|
cbz w8, .L1398
|
|
ldr w0, [x19, #:lo12:.LANCHOR137]
|
|
cmn w0, #1
|
|
beq .L1398
|
|
ldrh w1, [x26]
|
|
ldr x0, [x3, 8]
|
|
bl js_hash
|
|
cmp w8, w0
|
|
beq .L1398
|
|
add x10, x20, :lo12:.LANCHOR138
|
|
mov w6, w0
|
|
mov w5, w8
|
|
adrp x0, .LC46
|
|
mov w3, w28
|
|
mov w2, w24
|
|
ldrh w4, [x10, 4]
|
|
mov x1, x27
|
|
add x0, x0, :lo12:.LC46
|
|
str x10, [x29, 104]
|
|
bl printf
|
|
cbnz w28, .L1399
|
|
ldr x10, [x29, 104]
|
|
ldrh w0, [x10, 4]
|
|
cmp w24, w0
|
|
beq .L1399
|
|
sxth w24, w0
|
|
adrp x0, .LANCHOR19
|
|
ldrh w7, [x0, #:lo12:.LANCHOR19]
|
|
sub w7, w7, #1
|
|
.L1425:
|
|
sxth w28, w7
|
|
b .L1397
|
|
.L1399:
|
|
mov w0, -1
|
|
str w0, [x19, #:lo12:.LANCHOR137]
|
|
.L1398:
|
|
ldr w0, [x19, #:lo12:.LANCHOR137]
|
|
cmn w0, #1
|
|
beq .L1401
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
mov w1, 19539
|
|
movk w1, 0x4654, lsl 16
|
|
ldr w0, [x0]
|
|
cmp w0, w1
|
|
bne .L1401
|
|
ldr x0, [x25, #:lo12:.LANCHOR113]
|
|
ldrh w1, [x0]
|
|
mov w0, 61604
|
|
cmp w1, w0
|
|
beq .L1402
|
|
.L1401:
|
|
sub w7, w28, #1
|
|
b .L1425
|
|
.size FtlLoadSysInfo, .-FtlLoadSysInfo
|
|
.section .text.FtlMapTblRecovery,"ax",@progbits
|
|
.align 2
|
|
.global FtlMapTblRecovery
|
|
.type FtlMapTblRecovery, %function
|
|
FtlMapTblRecovery:
|
|
stp x29, x30, [sp, -160]!
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
stp x25, x26, [sp, 64]
|
|
mov w20, 0
|
|
ldrh w25, [x0, 6]
|
|
adrp x26, .LANCHOR19
|
|
stp x23, x24, [sp, 48]
|
|
ldr x23, [x0, 40]
|
|
ldr x24, [x0, 16]
|
|
lsl w2, w25, 2
|
|
ldr x0, [x0, 24]
|
|
str x0, [x29, 144]
|
|
ldrh w0, [x19, 8]
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR105
|
|
stp x27, x28, [sp, 80]
|
|
str w0, [x29, 152]
|
|
mov x0, x23
|
|
bl ftl_memset
|
|
stp wzr, wzr, [x19, 48]
|
|
adrp x0, .LANCHOR137
|
|
add x6, x0, :lo12:.LANCHOR137
|
|
ldr x1, [x22, #:lo12:.LANCHOR105]
|
|
mov x27, x6
|
|
str x0, [x29, 128]
|
|
str x1, [x6, 8]
|
|
adrp x1, .LANCHOR113
|
|
ldr w0, [x29, 152]
|
|
ldr x21, [x1, #:lo12:.LANCHOR113]
|
|
mov w1, -1
|
|
str x21, [x6, 16]
|
|
sub w0, w0, #1
|
|
strh w1, [x19]
|
|
strh w1, [x19, 2]
|
|
mov w1, 1
|
|
str w0, [x29, 108]
|
|
add x0, x26, :lo12:.LANCHOR19
|
|
str w1, [x19, 56]
|
|
str x0, [x29, 96]
|
|
.L1427:
|
|
ldr w0, [x29, 152]
|
|
cmp w20, w0
|
|
bge .L1446
|
|
ldr w0, [x29, 108]
|
|
sxtw x28, w20
|
|
cmp w20, w0
|
|
bne .L1428
|
|
lsl x0, x28, 1
|
|
mov w1, 1
|
|
add x26, x24, x0
|
|
adrp x27, .LANCHOR22
|
|
add x27, x27, :lo12:.LANCHOR22
|
|
ldrh w0, [x24, x0]
|
|
mov w24, 0
|
|
bl FtlGetLastWrittenPage
|
|
sxth w1, w0
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
ldr x0, [x29, 144]
|
|
strh w20, [x19]
|
|
str w1, [x29, 152]
|
|
ldr w0, [x0, x28, lsl 2]
|
|
adrp x28, .LANCHOR179
|
|
str w0, [x19, 48]
|
|
add x28, x28, :lo12:.LANCHOR179
|
|
ldr x0, [x29, 128]
|
|
add x22, x0, :lo12:.LANCHOR137
|
|
.L1429:
|
|
ldr w0, [x29, 152]
|
|
cmp w24, w0
|
|
ble .L1432
|
|
.L1446:
|
|
mov x0, x19
|
|
bl ftl_free_no_use_map_blk
|
|
adrp x0, .LANCHOR19
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR19]
|
|
cmp w1, w0
|
|
bne .L1434
|
|
mov x0, x19
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L1434:
|
|
mov x0, x19
|
|
bl ftl_map_blk_gc
|
|
mov x0, x19
|
|
bl ftl_map_blk_gc
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 160
|
|
ret
|
|
.L1432:
|
|
ldrh w0, [x26]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
orr w0, w24, w0, lsl 10
|
|
str w0, [x22, 4]
|
|
mov x0, x22
|
|
bl FlashReadPages
|
|
ldr x0, [x22, 16]
|
|
ldr w0, [x0, 12]
|
|
str w0, [x29, 156]
|
|
uxtw x0, w0
|
|
cbz w0, .L1430
|
|
ldr w0, [x22]
|
|
cmn w0, #1
|
|
beq .L1430
|
|
ldrh w1, [x27]
|
|
ldr x0, [x22, 8]
|
|
bl js_hash
|
|
ldr w1, [x29, 156]
|
|
cmp w1, w0
|
|
beq .L1430
|
|
mov w5, w0
|
|
mov x4, x1
|
|
mov w3, w24
|
|
mov w2, w20
|
|
mov x1, x28
|
|
adrp x0, .LC47
|
|
add x0, x0, :lo12:.LC47
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x22]
|
|
.L1430:
|
|
ldr w0, [x22]
|
|
cmn w0, #1
|
|
beq .L1431
|
|
ldrh w0, [x21, 8]
|
|
cmp w25, w0
|
|
bls .L1431
|
|
ldrh w2, [x21]
|
|
ldrh w1, [x19, 4]
|
|
cmp w2, w1
|
|
bne .L1431
|
|
ubfiz x0, x0, 2, 16
|
|
ldr w1, [x22, 4]
|
|
str w1, [x23, x0]
|
|
.L1431:
|
|
add w6, w24, 1
|
|
sxth w24, w6
|
|
b .L1429
|
|
.L1428:
|
|
lsl x2, x28, 1
|
|
ldr x0, [x22, #:lo12:.LANCHOR105]
|
|
str x0, [x27, 8]
|
|
add x0, x24, x2
|
|
ldrh w1, [x26, #:lo12:.LANCHOR19]
|
|
str x0, [x29, 136]
|
|
ldrh w0, [x24, x2]
|
|
sub w1, w1, #1
|
|
mov w2, 1
|
|
orr w0, w1, w0, lsl 10
|
|
mov w1, w2
|
|
str w0, [x27, 4]
|
|
mov x0, x27
|
|
bl FlashReadPages
|
|
ldr w0, [x27]
|
|
cmn w0, #1
|
|
beq .L1448
|
|
ldrh w1, [x21]
|
|
ldrh w0, [x19, 4]
|
|
cmp w1, w0
|
|
bne .L1448
|
|
ldrh w1, [x21, 8]
|
|
mov w0, 64245
|
|
cmp w1, w0
|
|
beq .L1436
|
|
.L1448:
|
|
adrp x0, .LANCHOR22
|
|
add x0, x0, :lo12:.LANCHOR22
|
|
mov w28, 0
|
|
str x0, [x29, 120]
|
|
adrp x0, .LANCHOR179
|
|
add x0, x0, :lo12:.LANCHOR179
|
|
str x0, [x29, 112]
|
|
.L1437:
|
|
ldr x0, [x29, 96]
|
|
ldrh w0, [x0]
|
|
cmp w28, w0
|
|
bge .L1444
|
|
ldr x0, [x29, 136]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
ldrh w0, [x0]
|
|
orr w0, w28, w0, lsl 10
|
|
str w0, [x27, 4]
|
|
mov x0, x27
|
|
bl FlashReadPages
|
|
ldr x0, [x27, 16]
|
|
ldr w0, [x0, 12]
|
|
str w0, [x29, 156]
|
|
uxtw x0, w0
|
|
cbz w0, .L1441
|
|
ldr w0, [x27]
|
|
cmn w0, #1
|
|
beq .L1441
|
|
ldr x0, [x29, 120]
|
|
ldrh w1, [x0]
|
|
ldr x0, [x27, 8]
|
|
bl js_hash
|
|
ldr w1, [x29, 156]
|
|
cmp w1, w0
|
|
beq .L1441
|
|
mov x4, x1
|
|
ldr x1, [x29, 112]
|
|
mov w5, w0
|
|
mov w3, w28
|
|
mov w2, w20
|
|
adrp x0, .LC48
|
|
add x0, x0, :lo12:.LC48
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x27]
|
|
.L1441:
|
|
ldr w0, [x27]
|
|
cmn w0, #1
|
|
beq .L1442
|
|
ldrh w0, [x21, 8]
|
|
cmp w25, w0
|
|
bls .L1442
|
|
ldrh w2, [x21]
|
|
ldrh w1, [x19, 4]
|
|
cmp w2, w1
|
|
bne .L1442
|
|
ubfiz x0, x0, 2, 16
|
|
ldr w1, [x27, 4]
|
|
str w1, [x23, x0]
|
|
.L1442:
|
|
add w7, w28, 1
|
|
sxth w28, w7
|
|
b .L1437
|
|
.L1436:
|
|
ldrh w3, [x26, #:lo12:.LANCHOR19]
|
|
mov w0, 0
|
|
ldr x4, [x22, #:lo12:.LANCHOR105]
|
|
sub w3, w3, #1
|
|
.L1438:
|
|
cmp w0, w3
|
|
blt .L1440
|
|
.L1444:
|
|
add w20, w20, 1
|
|
sxth w20, w20
|
|
b .L1427
|
|
.L1440:
|
|
lsl w2, w0, 1
|
|
sxtw x2, w2
|
|
lsl x1, x2, 2
|
|
ldrh w1, [x4, x1]
|
|
cmp w25, w1
|
|
bls .L1439
|
|
add x2, x2, 1
|
|
ubfiz x1, x1, 2, 16
|
|
ldr w2, [x4, x2, lsl 2]
|
|
str w2, [x23, x1]
|
|
.L1439:
|
|
add w0, w0, 1
|
|
sxth w0, w0
|
|
b .L1438
|
|
.size FtlMapTblRecovery, .-FtlMapTblRecovery
|
|
.section .text.FtlLoadVonderInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadVonderInfo
|
|
.type FtlLoadVonderInfo, %function
|
|
FtlLoadVonderInfo:
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x1, .LANCHOR26
|
|
adrp x0, .LANCHOR160
|
|
add x0, x0, :lo12:.LANCHOR160
|
|
add x29, sp, 0
|
|
ldrh w1, [x1, #:lo12:.LANCHOR26]
|
|
strh w1, [x0, 10]
|
|
mov w1, -3962
|
|
strh w1, [x0, 4]
|
|
adrp x1, .LANCHOR34
|
|
ldrh w1, [x1, #:lo12:.LANCHOR34]
|
|
strh w1, [x0, 8]
|
|
adrp x1, .LANCHOR27
|
|
ldrh w1, [x1, #:lo12:.LANCHOR27]
|
|
strh w1, [x0, 6]
|
|
adrp x1, .LANCHOR35
|
|
ldr x1, [x1, #:lo12:.LANCHOR35]
|
|
str x1, [x0, 16]
|
|
adrp x1, .LANCHOR121
|
|
ldr x1, [x1, #:lo12:.LANCHOR121]
|
|
str x1, [x0, 24]
|
|
adrp x1, .LANCHOR120
|
|
ldr x1, [x1, #:lo12:.LANCHOR120]
|
|
str x1, [x0, 32]
|
|
adrp x1, .LANCHOR122
|
|
ldr x1, [x1, #:lo12:.LANCHOR122]
|
|
str x1, [x0, 40]
|
|
bl FtlMapTblRecovery
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlLoadVonderInfo, .-FtlLoadVonderInfo
|
|
.section .text.FtlLoadMapInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadMapInfo
|
|
.type FtlLoadMapInfo, %function
|
|
FtlLoadMapInfo:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl FtlL2PDataInit
|
|
adrp x0, .LANCHOR128
|
|
add x0, x0, :lo12:.LANCHOR128
|
|
bl FtlMapTblRecovery
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlLoadMapInfo, .-FtlLoadMapInfo
|
|
.section .text.FtlSysBlkInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlSysBlkInit
|
|
.type FtlSysBlkInit, %function
|
|
FtlSysBlkInit:
|
|
stp x29, x30, [sp, -64]!
|
|
adrp x0, .LANCHOR3
|
|
add x29, sp, 0
|
|
ldrh w0, [x0, #:lo12:.LANCHOR3]
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR155
|
|
stp x21, x22, [sp, 32]
|
|
strh wzr, [x19, #:lo12:.LANCHOR155]
|
|
str x23, [sp, 48]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlScanSysBlk
|
|
adrp x0, .LANCHOR138
|
|
ldrh w1, [x0, #:lo12:.LANCHOR138]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L1473
|
|
.L1475:
|
|
mov w21, -1
|
|
.L1472:
|
|
mov w0, w21
|
|
ldr x23, [sp, 48]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L1473:
|
|
bl FtlLoadSysInfo
|
|
mov w21, w0
|
|
cbnz w0, .L1475
|
|
bl FtlLoadMapInfo
|
|
bl FtlLoadVonderInfo
|
|
bl Ftl_load_ext_data
|
|
bl FtlLoadEctTbl
|
|
bl FtlFreeSysBLkSort
|
|
bl SupperBlkListInit
|
|
bl FtlPowerLostRecovery
|
|
mov w0, 1
|
|
bl FtlUpdateVaildLpn
|
|
adrp x0, .LANCHOR32
|
|
ldrh w2, [x0, #:lo12:.LANCHOR32]
|
|
adrp x0, .LANCHOR54
|
|
ldr x1, [x0, #:lo12:.LANCHOR54]
|
|
mov w0, 0
|
|
add x1, x1, 4
|
|
.L1476:
|
|
cmp w0, w2
|
|
bge .L1481
|
|
ldr w3, [x1], 16
|
|
tbz w3, #31, .L1477
|
|
.L1481:
|
|
adrp x3, .LANCHOR82
|
|
cmp w0, w2
|
|
ldr w1, [x3, #:lo12:.LANCHOR82]
|
|
add w1, w1, 32
|
|
str w1, [x3, #:lo12:.LANCHOR82]
|
|
bge .L1483
|
|
.L1478:
|
|
adrp x23, .LANCHOR50
|
|
add x20, x23, :lo12:.LANCHOR50
|
|
mov x0, x20
|
|
adrp x22, .LANCHOR51
|
|
bl FtlSuperblockPowerLostFix
|
|
add x19, x22, :lo12:.LANCHOR51
|
|
mov x0, x19
|
|
bl FtlSuperblockPowerLostFix
|
|
adrp x0, .LANCHOR41
|
|
ldrh w3, [x20, 4]
|
|
ldr x1, [x0, #:lo12:.LANCHOR41]
|
|
ldrh w0, [x23, #:lo12:.LANCHOR50]
|
|
lsl x0, x0, 1
|
|
ldrh w2, [x1, x0]
|
|
sub w2, w2, w3
|
|
adrp x3, .LANCHOR18
|
|
strh w2, [x1, x0]
|
|
strb wzr, [x20, 6]
|
|
ldrh w0, [x3, #:lo12:.LANCHOR18]
|
|
strh w0, [x20, 2]
|
|
ldrh w0, [x22, #:lo12:.LANCHOR51]
|
|
strh wzr, [x20, 4]
|
|
ldrh w4, [x19, 4]
|
|
lsl x0, x0, 1
|
|
ldrh w2, [x1, x0]
|
|
sub w2, w2, w4
|
|
strh w2, [x1, x0]
|
|
strb wzr, [x19, 6]
|
|
ldrh w0, [x3, #:lo12:.LANCHOR18]
|
|
strh w0, [x19, 2]
|
|
adrp x0, .LANCHOR38
|
|
add x0, x0, :lo12:.LANCHOR38
|
|
strh wzr, [x19, 4]
|
|
ldrh w1, [x0, 30]
|
|
add w1, w1, 1
|
|
strh w1, [x0, 30]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L1485:
|
|
bl FtlVpcTblFlush
|
|
b .L1472
|
|
.L1477:
|
|
add w0, w0, 1
|
|
b .L1476
|
|
.L1483:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR155]
|
|
cbnz w0, .L1478
|
|
bl l2p_flush
|
|
b .L1485
|
|
.size FtlSysBlkInit, .-FtlSysBlkInit
|
|
.section .text.ftl_low_format,"ax",@progbits
|
|
.align 2
|
|
.global ftl_low_format
|
|
.type ftl_low_format, %function
|
|
ftl_low_format:
|
|
stp x29, x30, [sp, -80]!
|
|
adrp x0, .LANCHOR82
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR3
|
|
str wzr, [x0, #:lo12:.LANCHOR82]
|
|
adrp x0, .LANCHOR142
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR81
|
|
str wzr, [x0, #:lo12:.LANCHOR142]
|
|
ldrh w0, [x23, #:lo12:.LANCHOR3]
|
|
stp x21, x22, [sp, 32]
|
|
stp x25, x26, [sp, 64]
|
|
str wzr, [x20, #:lo12:.LANCHOR81]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cbz w0, .L1487
|
|
bl FtlMakeBbt
|
|
.L1487:
|
|
adrp x22, .LANCHOR11
|
|
adrp x0, .LANCHOR108
|
|
mov w6, 23752
|
|
ldrh w1, [x22, #:lo12:.LANCHOR11]
|
|
movk w6, 0xa0f, lsl 16
|
|
ldr x4, [x0, #:lo12:.LANCHOR108]
|
|
adrp x0, .LANCHOR109
|
|
lsl w1, w1, 7
|
|
ldr x5, [x0, #:lo12:.LANCHOR109]
|
|
mov w0, 0
|
|
.L1488:
|
|
cmp w0, w1
|
|
blt .L1489
|
|
adrp x24, .LANCHOR4
|
|
adrp x21, .LANCHOR5
|
|
add x26, x21, :lo12:.LANCHOR5
|
|
mov w19, 0
|
|
ldrh w25, [x24, #:lo12:.LANCHOR4]
|
|
.L1490:
|
|
ldrh w0, [x26]
|
|
cmp w0, w25
|
|
bhi .L1491
|
|
adrp x25, .LANCHOR2
|
|
sub w1, w19, #2
|
|
ldrh w0, [x25, #:lo12:.LANCHOR2]
|
|
cmp w1, w0, lsl 1
|
|
bgt .L1492
|
|
.L1496:
|
|
add x24, x24, :lo12:.LANCHOR4
|
|
mov w19, 0
|
|
mov w23, 0
|
|
.L1493:
|
|
ldrh w0, [x24]
|
|
cmp w0, w23
|
|
bhi .L1497
|
|
adrp x0, .LANCHOR98
|
|
ldrh w1, [x21, #:lo12:.LANCHOR5]
|
|
ldrh w4, [x25, #:lo12:.LANCHOR2]
|
|
adrp x2, .LANCHOR170
|
|
str w1, [x0, #:lo12:.LANCHOR98]
|
|
adrp x0, .LANCHOR6
|
|
adrp x3, .LANCHOR151
|
|
ldr w1, [x0, #:lo12:.LANCHOR6]
|
|
udiv w5, w1, w4
|
|
ubfx x0, x5, 5, 16
|
|
str w5, [x3, #:lo12:.LANCHOR151]
|
|
add w6, w0, 36
|
|
strh w6, [x2, #:lo12:.LANCHOR170]
|
|
mov w6, 24
|
|
mul w6, w4, w6
|
|
cmp w19, w6
|
|
ble .L1498
|
|
sub w1, w1, w19
|
|
udiv w1, w1, w4
|
|
str w1, [x3, #:lo12:.LANCHOR151]
|
|
lsr w1, w1, 5
|
|
add w1, w1, 24
|
|
strh w1, [x2, #:lo12:.LANCHOR170]
|
|
.L1498:
|
|
adrp x1, .LANCHOR14
|
|
ldrh w1, [x1, #:lo12:.LANCHOR14]
|
|
cbz w1, .L1500
|
|
ldrh w6, [x2, #:lo12:.LANCHOR170]
|
|
add w6, w6, w1, lsr 1
|
|
strh w6, [x2, #:lo12:.LANCHOR170]
|
|
mul w6, w1, w4
|
|
cmp w19, w6
|
|
bge .L1500
|
|
add w1, w1, 32
|
|
str w5, [x3, #:lo12:.LANCHOR151]
|
|
add w1, w0, w1
|
|
strh w1, [x2, #:lo12:.LANCHOR170]
|
|
.L1500:
|
|
ldrh w1, [x2, #:lo12:.LANCHOR170]
|
|
adrp x23, .LANCHOR178
|
|
ldr w0, [x3, #:lo12:.LANCHOR151]
|
|
sub w0, w0, w1
|
|
adrp x1, .LANCHOR18
|
|
ldrh w1, [x1, #:lo12:.LANCHOR18]
|
|
mul w0, w0, w4
|
|
str w0, [x23, #:lo12:.LANCHOR178]
|
|
mul w0, w1, w0
|
|
ldrh w1, [x22, #:lo12:.LANCHOR11]
|
|
str w0, [x3, #:lo12:.LANCHOR151]
|
|
mov x22, x23
|
|
mul w0, w1, w0
|
|
adrp x1, .LANCHOR33
|
|
str w0, [x1, #:lo12:.LANCHOR33]
|
|
bl FtlBbmTblFlush
|
|
ldrh w2, [x21, #:lo12:.LANCHOR5]
|
|
adrp x21, .LANCHOR41
|
|
mov w1, 0
|
|
ldr x0, [x21, #:lo12:.LANCHOR41]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
adrp x2, .LANCHOR144
|
|
add x1, x2, :lo12:.LANCHOR144
|
|
adrp x0, .LANCHOR58
|
|
strh wzr, [x1, 2]
|
|
strb wzr, [x1, 6]
|
|
strb wzr, [x1, 8]
|
|
adrp x1, .LANCHOR50
|
|
add x19, x1, :lo12:.LANCHOR50
|
|
str wzr, [x0, #:lo12:.LANCHOR58]
|
|
mov w0, -1
|
|
mov w23, w0
|
|
strh wzr, [x1, #:lo12:.LANCHOR50]
|
|
mov w1, 1
|
|
strh w0, [x2, #:lo12:.LANCHOR144]
|
|
strh wzr, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
strb w1, [x19, 8]
|
|
.L1502:
|
|
mov x0, x19
|
|
bl make_superblock
|
|
ldrb w1, [x19, 7]
|
|
ldrh w0, [x19]
|
|
cbnz w1, .L1503
|
|
ldr x1, [x21, #:lo12:.LANCHOR41]
|
|
ubfiz x0, x0, 1, 16
|
|
strh w23, [x1, x0]
|
|
ldrh w0, [x19]
|
|
add w0, w0, 1
|
|
strh w0, [x19]
|
|
b .L1502
|
|
.L1489:
|
|
ubfiz x3, x0, 2, 16
|
|
mvn w2, w0
|
|
orr w2, w0, w2, lsl 16
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
str w2, [x4, x3]
|
|
str w6, [x5, x3]
|
|
b .L1488
|
|
.L1491:
|
|
mov w0, w25
|
|
mov w1, 1
|
|
add w25, w25, 1
|
|
bl FtlLowFormatEraseBlock
|
|
add w19, w19, w0
|
|
and w25, w25, 65535
|
|
and w19, w19, 65535
|
|
b .L1490
|
|
.L1492:
|
|
udiv w0, w19, w0
|
|
adrp x1, .LANCHOR30
|
|
ldr w19, [x1, #:lo12:.LANCHOR30]
|
|
add w0, w0, w19
|
|
bl FtlSysBlkNumInit
|
|
ldrh w0, [x23, #:lo12:.LANCHOR3]
|
|
add x23, x21, :lo12:.LANCHOR5
|
|
bl FtlFreeSysBlkQueueInit
|
|
ldrh w19, [x24, #:lo12:.LANCHOR4]
|
|
.L1494:
|
|
ldrh w0, [x23]
|
|
cmp w0, w19
|
|
bls .L1496
|
|
mov w0, w19
|
|
add w19, w19, 1
|
|
mov w1, 1
|
|
and w19, w19, 65535
|
|
bl FtlLowFormatEraseBlock
|
|
b .L1494
|
|
.L1497:
|
|
mov w0, w23
|
|
mov w1, 0
|
|
add w23, w23, 1
|
|
bl FtlLowFormatEraseBlock
|
|
add w19, w19, w0
|
|
and w23, w23, 65535
|
|
and w19, w19, 65535
|
|
b .L1493
|
|
.L1503:
|
|
ldr w1, [x20, #:lo12:.LANCHOR81]
|
|
ubfiz x0, x0, 1, 16
|
|
str w1, [x19, 12]
|
|
mov w23, -1
|
|
add w1, w1, 1
|
|
str w1, [x20, #:lo12:.LANCHOR81]
|
|
ldr x1, [x21, #:lo12:.LANCHOR41]
|
|
ldrh w2, [x19, 4]
|
|
strh w2, [x1, x0]
|
|
adrp x2, .LANCHOR51
|
|
add x0, x2, :lo12:.LANCHOR51
|
|
ldrh w1, [x19]
|
|
mov x19, x0
|
|
add w1, w1, 1
|
|
strh wzr, [x0, 2]
|
|
strh w1, [x2, #:lo12:.LANCHOR51]
|
|
mov w1, 1
|
|
strb wzr, [x0, 6]
|
|
strb w1, [x0, 8]
|
|
.L1504:
|
|
mov x0, x19
|
|
bl make_superblock
|
|
ldrb w1, [x19, 7]
|
|
ldrh w0, [x19]
|
|
cbnz w1, .L1505
|
|
ldr x1, [x21, #:lo12:.LANCHOR41]
|
|
ubfiz x0, x0, 1, 16
|
|
strh w23, [x1, x0]
|
|
ldrh w0, [x19]
|
|
add w0, w0, 1
|
|
strh w0, [x19]
|
|
b .L1504
|
|
.L1505:
|
|
ldr w1, [x20, #:lo12:.LANCHOR81]
|
|
ubfiz x0, x0, 1, 16
|
|
str w1, [x19, 12]
|
|
add w1, w1, 1
|
|
str w1, [x20, #:lo12:.LANCHOR81]
|
|
ldr x1, [x21, #:lo12:.LANCHOR41]
|
|
ldrh w2, [x19, 4]
|
|
mov w19, -1
|
|
strh w2, [x1, x0]
|
|
adrp x0, .LANCHOR52
|
|
strh w19, [x0, #:lo12:.LANCHOR52]
|
|
bl FtlFreeSysBlkQueueOut
|
|
adrp x2, .LANCHOR138
|
|
add x1, x2, :lo12:.LANCHOR138
|
|
strh w0, [x2, #:lo12:.LANCHOR138]
|
|
ldr w0, [x22, #:lo12:.LANCHOR178]
|
|
strh w0, [x1, 6]
|
|
ldr w0, [x20, #:lo12:.LANCHOR81]
|
|
str w0, [x1, 8]
|
|
add w0, w0, 1
|
|
strh wzr, [x1, 2]
|
|
strh w19, [x1, 4]
|
|
str w0, [x20, #:lo12:.LANCHOR81]
|
|
bl FtlVpcTblFlush
|
|
bl FtlSysBlkInit
|
|
cbnz w0, .L1506
|
|
adrp x0, .LANCHOR165
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR165]
|
|
.L1506:
|
|
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 ftl_low_format, .-ftl_low_format
|
|
.section .text.sftl_init,"ax",@progbits
|
|
.align 2
|
|
.global sftl_init
|
|
.type sftl_init, %function
|
|
sftl_init:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x1, .LC49
|
|
add x1, x1, :lo12:.LC49
|
|
mov w0, -1
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR165
|
|
adrp x19, .LANCHOR180
|
|
add x19, x19, :lo12:.LANCHOR180
|
|
str w0, [x20, #:lo12:.LANCHOR165]
|
|
adrp x0, .LC38
|
|
add x0, x0, :lo12:.LC38
|
|
bl printf
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
bl FtlConstantsInit
|
|
bl FtlMemInit
|
|
bl FtlVariablesInit
|
|
adrp x0, .LANCHOR3
|
|
ldrh w0, [x0, #:lo12:.LANCHOR3]
|
|
bl FtlFreeSysBlkQueueInit
|
|
.L1512:
|
|
bl FtlLoadBbt
|
|
cbz w0, .L1513
|
|
.L1523:
|
|
ldr w0, [x19]
|
|
cmp w0, 1
|
|
bne .L1512
|
|
str wzr, [x19]
|
|
bl ftl_low_format
|
|
b .L1512
|
|
.L1513:
|
|
bl FtlSysBlkInit
|
|
cbnz w0, .L1523
|
|
mov w1, 1
|
|
str w1, [x20, #:lo12:.LANCHOR165]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size sftl_init, .-sftl_init
|
|
.section .text.FtlWriteToIDB,"ax",@progbits
|
|
.align 2
|
|
.global FtlWriteToIDB
|
|
.type FtlWriteToIDB, %function
|
|
FtlWriteToIDB:
|
|
stp x29, x30, [sp, -224]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
add w22, w1, w0
|
|
stp x23, x24, [sp, 48]
|
|
sub w23, w22, #1
|
|
stp x27, x28, [sp, 80]
|
|
cmp w23, 63
|
|
stp x19, x20, [sp, 16]
|
|
adrp x27, .LANCHOR181
|
|
stp x25, x26, [sp, 64]
|
|
bls .L1525
|
|
mov w19, w0
|
|
cmp w0, 575
|
|
bls .L1526
|
|
.L1525:
|
|
ldr w0, [x27, #:lo12:.LANCHOR181]
|
|
cbnz w0, .L1527
|
|
.L1591:
|
|
mov w19, 0
|
|
b .L1524
|
|
.L1527:
|
|
adrp x0, .LANCHOR182
|
|
str x0, [x29, 112]
|
|
mov w1, 35899
|
|
ldr x26, [x0, #:lo12:.LANCHOR182]
|
|
movk w1, 0xfcdc, lsl 16
|
|
ldr w2, [x26]
|
|
cmp w2, w1
|
|
bne .L1529
|
|
adrp x22, .LANCHOR0
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
add x1, x26, 258048
|
|
mov w19, 65023
|
|
add x1, x1, 2044
|
|
mov w3, 4097
|
|
ldrh w2, [x0, 10]
|
|
mov w0, 0
|
|
.L1533:
|
|
ldr w4, [x1]
|
|
cbnz w4, .L1530
|
|
ldr w4, [x26, w0, uxtw 2]
|
|
add w0, w0, 1
|
|
str w4, [x1, 2048]
|
|
cmp w0, w3
|
|
sub w19, w19, #1
|
|
csel w0, w0, wzr, cc
|
|
sub x1, x1, #4
|
|
cmp w19, 4096
|
|
bne .L1533
|
|
mov w19, 512
|
|
b .L1532
|
|
.L1530:
|
|
add w19, w19, 127
|
|
lsr w19, w19, 7
|
|
.L1532:
|
|
ubfiz w0, w2, 2, 14
|
|
add w21, w19, 4
|
|
mov w1, w19
|
|
mov w24, 0
|
|
udiv w21, w21, w0
|
|
adrp x0, .LC50
|
|
add x0, x0, :lo12:.LC50
|
|
add w21, w21, 1
|
|
mov w2, w21
|
|
bl printf
|
|
lsl w0, w19, 7
|
|
str w0, [x29, 136]
|
|
adrp x0, .LANCHOR77
|
|
add x20, x0, :lo12:.LANCHOR77
|
|
str wzr, [x29, 156]
|
|
.L1534:
|
|
add w0, w21, w24
|
|
str w0, [x29, 140]
|
|
cmp w0, 8
|
|
bls .L1556
|
|
ldr w0, [x29, 156]
|
|
cbnz w0, .L1557
|
|
.L1529:
|
|
mov w19, -1
|
|
.L1557:
|
|
ldr x0, [x29, 112]
|
|
str wzr, [x27, #:lo12:.LANCHOR181]
|
|
ldr x0, [x0, #:lo12:.LANCHOR182]
|
|
bl free
|
|
adrp x0, .LANCHOR183
|
|
ldr x0, [x0, #:lo12:.LANCHOR183]
|
|
bl free
|
|
.L1524:
|
|
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], 224
|
|
ret
|
|
.L1556:
|
|
adrp x23, .LANCHOR183
|
|
mov w1, 0
|
|
mov x2, 512
|
|
ldr x0, [x23, #:lo12:.LANCHOR183]
|
|
bl memset
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
ldrh w3, [x0, 10]
|
|
mul w0, w24, w3
|
|
str w0, [x29, 144]
|
|
adrp x0, .LANCHOR77
|
|
add x0, x0, :lo12:.LANCHOR77
|
|
ldr x1, [x0, 32]
|
|
cbz x1, .L1564
|
|
ldr x0, [x0, 40]
|
|
mov w25, 6
|
|
cmp x0, 0
|
|
mov w0, 9
|
|
csel w25, w25, w0, eq
|
|
.L1535:
|
|
mul w4, w24, w3
|
|
mov w28, 0
|
|
.L1536:
|
|
ldr x5, [x20, 8]
|
|
mov w1, w4
|
|
str w3, [x29, 128]
|
|
mov w0, 0
|
|
str w4, [x29, 152]
|
|
add w28, w28, 1
|
|
blr x5
|
|
ldr w3, [x29, 128]
|
|
cmp w21, w28
|
|
ldr w4, [x29, 152]
|
|
add w4, w4, w3
|
|
bhi .L1536
|
|
cmp w25, 9
|
|
bne .L1566
|
|
ldr x28, [x23, #:lo12:.LANCHOR183]
|
|
mov w2, 1024
|
|
str w3, [x29, 152]
|
|
mov w1, 0
|
|
mov x0, x28
|
|
bl ftl_memset
|
|
mov w0, 18766
|
|
mov w1, 12
|
|
movk w0, 0x464e, lsl 16
|
|
stp w0, w1, [x28]
|
|
mov w0, 4
|
|
strb w0, [x28, 17]
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
strb wzr, [x28, 16]
|
|
strb wzr, [x28, 20]
|
|
strh wzr, [x28, 22]
|
|
ldrh w0, [x0, 10]
|
|
strh w0, [x28, 18]
|
|
str wzr, [x28, 12]
|
|
mov w0, 16
|
|
strb w0, [x28, 21]
|
|
add x0, x28, 12
|
|
bl js_hash
|
|
str w0, [x28, 8]
|
|
ldr w3, [x29, 152]
|
|
.L1537:
|
|
mul w0, w21, w3
|
|
mov x6, x26
|
|
str w0, [x29, 152]
|
|
mov x5, 0
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
str x0, [x29, 128]
|
|
.L1538:
|
|
ldr w0, [x29, 152]
|
|
mov w1, w5
|
|
cmp w5, w0
|
|
bcs .L1545
|
|
cmp w25, 9
|
|
bne .L1539
|
|
add w0, w1, 1
|
|
.L1589:
|
|
str w0, [x29, 160]
|
|
mov w0, 61424
|
|
str w0, [x29, 164]
|
|
cmp w1, 0
|
|
ccmp w25, 9, 0, eq
|
|
bne .L1541
|
|
ldr x1, [x20, 32]
|
|
mov w0, 70
|
|
stp x6, x5, [x29, 96]
|
|
blr x1
|
|
ldr w1, [x29, 144]
|
|
add x3, x29, 160
|
|
ldr x7, [x20, 16]
|
|
mov x2, x28
|
|
mov w0, 0
|
|
blr x7
|
|
mov w1, w0
|
|
ldr x0, [x29, 128]
|
|
ldr x2, [x20, 32]
|
|
str w1, [x29, 120]
|
|
ldrb w0, [x0, 22]
|
|
blr x2
|
|
ldr w1, [x29, 120]
|
|
ldp x6, x5, [x29, 96]
|
|
cmn w1, #1
|
|
bne .L1542
|
|
.L1545:
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
ldr x25, [x23, #:lo12:.LANCHOR183]
|
|
ldrb w1, [x0, 14]
|
|
ldrh w0, [x0, 10]
|
|
str w1, [x29, 128]
|
|
mul w1, w24, w0
|
|
str w1, [x29, 144]
|
|
ldr x1, [x20, 32]
|
|
cbnz x1, .L1543
|
|
mov w1, 6
|
|
.L1590:
|
|
mul w0, w21, w0
|
|
mov x28, 0
|
|
str w0, [x29, 120]
|
|
str w1, [x29, 152]
|
|
.L1547:
|
|
ldr w0, [x29, 120]
|
|
mov w1, w28
|
|
cmp w0, w28
|
|
bls .L1551
|
|
ldr w0, [x29, 152]
|
|
cmp w28, 0
|
|
ccmp w0, 9, 0, eq
|
|
bne .L1548
|
|
ldr x1, [x20, 32]
|
|
mov w0, 70
|
|
blr x1
|
|
ldr x1, [x20, 40]
|
|
mov w0, 2
|
|
blr x1
|
|
ldr x6, [x20, 24]
|
|
add x3, x29, 160
|
|
ldr w1, [x29, 144]
|
|
mov x2, x25
|
|
mov w0, 0
|
|
blr x6
|
|
ldrb w0, [x29, 128]
|
|
ldr x1, [x20, 40]
|
|
blr x1
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
ldr x1, [x20, 32]
|
|
ldrb w0, [x0, 22]
|
|
blr x1
|
|
ldr w0, [x25]
|
|
mov w1, 18766
|
|
movk w1, 0x464e, lsl 16
|
|
cmp w0, w1
|
|
beq .L1549
|
|
.L1551:
|
|
ldr x0, [x23, #:lo12:.LANCHOR183]
|
|
mov x2, x26
|
|
mov x1, 0
|
|
.L1550:
|
|
ldr w3, [x29, 136]
|
|
mov w28, w1
|
|
cmp w1, w3
|
|
bcc .L1554
|
|
ldr w0, [x29, 156]
|
|
add w0, w0, 1
|
|
str w0, [x29, 156]
|
|
cmp w0, 5
|
|
bls .L1553
|
|
b .L1557
|
|
.L1564:
|
|
mov w25, 6
|
|
b .L1535
|
|
.L1566:
|
|
mov x28, 0
|
|
b .L1537
|
|
.L1539:
|
|
lsl w0, w1, 2
|
|
b .L1589
|
|
.L1541:
|
|
ldr x7, [x20, 16]
|
|
add x3, x29, 160
|
|
ldr w0, [x29, 144]
|
|
mov x2, x6
|
|
str x5, [x29, 104]
|
|
add w1, w1, w0
|
|
str x6, [x29, 120]
|
|
mov w0, 0
|
|
blr x7
|
|
cmn w0, #1
|
|
beq .L1545
|
|
ldr x6, [x29, 120]
|
|
ldr x5, [x29, 104]
|
|
add x6, x6, 2048
|
|
.L1542:
|
|
add x5, x5, 1
|
|
b .L1538
|
|
.L1543:
|
|
ldr x1, [x20, 40]
|
|
mov w2, 6
|
|
cmp x1, 0
|
|
mov w1, 9
|
|
csel w1, w2, w1, eq
|
|
b .L1590
|
|
.L1548:
|
|
ldr x6, [x20, 24]
|
|
add x3, x29, 160
|
|
ldr w0, [x29, 144]
|
|
mov x2, x25
|
|
add w1, w0, w1
|
|
mov w0, 0
|
|
blr x6
|
|
cmn w0, #1
|
|
beq .L1551
|
|
ldr w0, [x29, 164]
|
|
mov w1, 61424
|
|
cmp w0, w1
|
|
bne .L1551
|
|
add x25, x25, 2048
|
|
.L1549:
|
|
add x28, x28, 1
|
|
b .L1547
|
|
.L1554:
|
|
mov x25, x2
|
|
ldr w4, [x0, x1, lsl 2]
|
|
lsl x5, x1, 2
|
|
add x2, x2, 4
|
|
add x1, x1, 1
|
|
ldr w3, [x25]
|
|
cmp w4, w3
|
|
beq .L1550
|
|
mov x2, 512
|
|
mov w1, 0
|
|
str x5, [x29, 144]
|
|
bl memset
|
|
ldr x0, [x23, #:lo12:.LANCHOR183]
|
|
mov w1, w24
|
|
ldr x5, [x29, 144]
|
|
mov w4, w28
|
|
ldr w3, [x25]
|
|
ldr w2, [x0, x5]
|
|
adrp x0, .LC51
|
|
add x0, x0, :lo12:.LC51
|
|
bl printf
|
|
add x0, x22, :lo12:.LANCHOR0
|
|
ldr x2, [x20, 8]
|
|
ldrh w1, [x0, 10]
|
|
mov w0, 0
|
|
mul w1, w1, w24
|
|
blr x2
|
|
.L1553:
|
|
ldr w24, [x29, 140]
|
|
b .L1534
|
|
.L1526:
|
|
mov w20, w1
|
|
mov x21, x2
|
|
cmp w0, 64
|
|
bne .L1558
|
|
adrp x24, .LANCHOR182
|
|
mov w0, 262144
|
|
bl ftl_malloc
|
|
str x0, [x24, #:lo12:.LANCHOR182]
|
|
mov w0, 262144
|
|
bl ftl_malloc
|
|
mov x1, x0
|
|
adrp x0, .LANCHOR183
|
|
str x1, [x0, #:lo12:.LANCHOR183]
|
|
ldr x0, [x24, #:lo12:.LANCHOR182]
|
|
cbz x0, .L1559
|
|
cbz x1, .L1559
|
|
mov w1, 1
|
|
mov w2, 262144
|
|
str w1, [x27, #:lo12:.LANCHOR181]
|
|
mov w1, 0
|
|
bl ftl_memset
|
|
.L1558:
|
|
ldr w0, [x27, #:lo12:.LANCHOR181]
|
|
cbz w0, .L1591
|
|
adrp x0, .LANCHOR182
|
|
cmp w19, 63
|
|
ldr x0, [x0, #:lo12:.LANCHOR182]
|
|
bhi .L1561
|
|
mov w1, 64
|
|
sub w19, w1, w19
|
|
sub w20, w20, w19
|
|
ubfiz x19, x19, 9, 25
|
|
add x1, x21, x19
|
|
.L1562:
|
|
cmp w23, 575
|
|
bls .L1563
|
|
sub w20, w20, w22
|
|
sub w20, w20, #446
|
|
.L1563:
|
|
lsl w2, w20, 9
|
|
bl ftl_memcpy
|
|
b .L1591
|
|
.L1559:
|
|
adrp x1, .LANCHOR184
|
|
adrp x0, .LC52
|
|
add x1, x1, :lo12:.LANCHOR184
|
|
add x0, x0, :lo12:.LC52
|
|
bl printf
|
|
b .L1558
|
|
.L1561:
|
|
lsl w2, w19, 7
|
|
mov x1, x21
|
|
sub w2, w2, #8192
|
|
add x0, x0, x2, lsl 2
|
|
b .L1562
|
|
.size FtlWriteToIDB, .-FtlWriteToIDB
|
|
.section .text.sftl_write,"ax",@progbits
|
|
.align 2
|
|
.global sftl_write
|
|
.type sftl_write, %function
|
|
sftl_write:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, w1
|
|
str x21, [sp, 32]
|
|
mov w21, w0
|
|
add w21, w19, w21
|
|
mov x20, x2
|
|
bl FtlWriteToIDB
|
|
.L1593:
|
|
sub w1, w21, w19
|
|
mov x3, x20
|
|
cmp w19, 256
|
|
bhi .L1595
|
|
mov w2, w19
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 48
|
|
b FtlWrite
|
|
.L1595:
|
|
mov w2, 256
|
|
mov w0, 0
|
|
bl FtlWrite
|
|
cbnz w0, .L1592
|
|
add x20, x20, 131072
|
|
sub w19, w19, #256
|
|
b .L1593
|
|
.L1592:
|
|
ldp x19, x20, [sp, 16]
|
|
ldr x21, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size sftl_write, .-sftl_write
|
|
.global g_nand_ops
|
|
.global g_nand_phy_info
|
|
.global gc_ink_free_return_value
|
|
.global check_vpc_table
|
|
.global FtlUpdateVaildLpnCount
|
|
.global g_ect_tbl_power_up_flush
|
|
.global power_up_flag
|
|
.global low_format_en
|
|
.global gFtlInitStatus
|
|
.global DeviceCapacity
|
|
.global g_power_lost_recovery_flag
|
|
.global c_mlc_erase_count_value
|
|
.global g_recovery_ppa_tbl
|
|
.global g_recovery_page_min_ver
|
|
.global g_recovery_page_num
|
|
.global sftl_nand_check_spare_buf
|
|
.global sftl_temp_buf
|
|
.global sftl_nand_check_buf
|
|
.global g_cur_erase_blk
|
|
.global g_gc_skip_write_count
|
|
.global g_gc_head_data_block_count
|
|
.global g_gc_head_data_block
|
|
.global g_ftl_nand_free_count
|
|
.global g_in_swl_replace
|
|
.global g_in_gc_progress
|
|
.global g_max_erase_count
|
|
.global g_totle_sys_slc_erase_count
|
|
.global g_totle_slc_erase_count
|
|
.global g_min_erase_count
|
|
.global g_totle_avg_erase_count
|
|
.global g_totle_mlc_erase_count
|
|
.global g_totle_l2p_write_count
|
|
.global g_totle_cache_write_count
|
|
.global g_tmp_data_superblock_id
|
|
.global g_totle_read_page_count
|
|
.global g_totle_discard_page_count
|
|
.global g_totle_read_sector
|
|
.global g_totle_write_sector
|
|
.global g_totle_write_page_count
|
|
.global g_totle_gc_page_count
|
|
.global g_gc_blk_index
|
|
.global g_gc_merge_free_blk_threshold
|
|
.global g_gc_free_blk_threshold
|
|
.global g_gc_bad_block_temp_tbl
|
|
.global g_gc_bad_block_gc_index
|
|
.global g_gc_bad_block_temp_num
|
|
.global g_gc_next_blk_1
|
|
.global g_gc_next_blk
|
|
.global g_gc_cur_blk_max_valid_pages
|
|
.global g_gc_cur_blk_valid_pages
|
|
.global g_gc_page_offset
|
|
.global g_gc_blk_num
|
|
.global p_gc_blk_tbl
|
|
.global p_gc_page_info
|
|
.global g_sys_ext_data
|
|
.global g_sys_save_data
|
|
.global gp_last_act_superblock
|
|
.global g_gc_superblock
|
|
.global g_gc_temp_superblock
|
|
.global g_buffer_superblock
|
|
.global g_active_superblock
|
|
.global g_num_data_superblocks
|
|
.global g_num_free_superblocks
|
|
.global p_data_block_list_tail
|
|
.global p_data_block_list_head
|
|
.global p_free_data_block_list_head
|
|
.global p_data_block_list_table
|
|
.global g_l2p_last_update_region_id
|
|
.global p_l2p_map_buf
|
|
.global p_l2p_ram_map
|
|
.global g_totle_vendor_block
|
|
.global p_vendor_region_ppn_table
|
|
.global p_vendor_block_ver_table
|
|
.global p_vendor_block_valid_page_count
|
|
.global p_vendor_block_table
|
|
.global g_totle_map_block
|
|
.global p_map_region_ppn_table
|
|
.global p_map_block_ver_table
|
|
.global p_map_block_valid_page_count
|
|
.global p_map_block_table
|
|
.global p_valid_page_count_check_table
|
|
.global p_valid_page_count_table
|
|
.global g_totle_swl_count
|
|
.global p_swl_mul_table
|
|
.global p_erase_count_table
|
|
.global g_ect_tbl_info_size
|
|
.global gp_ect_tbl_info
|
|
.global g_gc_num_req
|
|
.global c_gc_page_buf_num
|
|
.global gp_gc_page_buf_info
|
|
.global p_gc_data_buf
|
|
.global p_gc_spare_buf
|
|
.global p_io_spare_buf
|
|
.global p_io_data_buf_1
|
|
.global p_io_data_buf_0
|
|
.global p_sys_spare_buf
|
|
.global p_vendor_data_buf
|
|
.global p_sys_data_buf_1
|
|
.global p_sys_data_buf
|
|
.global p_plane_order_table
|
|
.global req_gc_dst
|
|
.global req_gc
|
|
.global req_erase
|
|
.global req_prgm
|
|
.global req_read
|
|
.global req_sys
|
|
.global gVendorBlkInfo
|
|
.global gL2pMapInfo
|
|
.global gSysFreeQueue
|
|
.global gSysInfo
|
|
.global gBbtInfo
|
|
.global g_MaxLbn
|
|
.global g_VaildLpn
|
|
.global g_MaxLpn
|
|
.global g_MaxLbaSector
|
|
.global g_GlobalDataVersion
|
|
.global g_GlobalSysVersion
|
|
.global ftl_gc_temp_power_lost_recovery_flag
|
|
.global c_ftl_nand_max_data_blks
|
|
.global c_ftl_nand_data_op_blks_per_plane
|
|
.global c_ftl_nand_data_blks_per_plane
|
|
.global c_ftl_nand_max_sys_blks
|
|
.global c_ftl_nand_init_sys_blks_per_plane
|
|
.global c_ftl_nand_sys_blks_per_plane
|
|
.global c_ftl_vendor_part_size
|
|
.global c_ftl_nand_max_vendor_blks
|
|
.global c_ftl_nand_max_map_blks
|
|
.global c_ftl_nand_map_blks_per_plane
|
|
.global c_ftl_nand_vendor_region_num
|
|
.global c_ftl_nand_l2pmap_ram_region_num
|
|
.global c_ftl_nand_map_region_num
|
|
.global c_ftl_nand_totle_phy_blks
|
|
.global c_ftl_nand_reserved_blks
|
|
.global c_ftl_nand_byte_pre_oob
|
|
.global c_ftl_nand_byte_pre_page
|
|
.global c_ftl_nand_sec_pre_page_shift
|
|
.global c_ftl_nand_sec_pre_page
|
|
.global c_ftl_nand_page_pre_super_blk
|
|
.global c_ftl_nand_page_pre_slc_blk
|
|
.global c_ftl_nand_page_pre_blk
|
|
.global c_ftl_nand_bbm_buf_size
|
|
.global c_ftl_nand_ext_blk_pre_plane
|
|
.global c_ftl_nand_blk_pre_plane
|
|
.global c_ftl_nand_planes_num
|
|
.global c_ftl_nand_blks_per_die_shift
|
|
.global c_ftl_nand_blks_per_die
|
|
.global c_ftl_nand_planes_per_die
|
|
.global c_ftl_nand_die_num
|
|
.global c_ftl_nand_type
|
|
.section .bss.DeviceCapacity,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR25,. + 0
|
|
.type DeviceCapacity, %object
|
|
.size DeviceCapacity, 4
|
|
DeviceCapacity:
|
|
.zero 4
|
|
.section .bss.FtlUpdateVaildLpnCount,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR57,. + 0
|
|
.type FtlUpdateVaildLpnCount, %object
|
|
.size FtlUpdateVaildLpnCount, 2
|
|
FtlUpdateVaildLpnCount:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_bbm_buf_size,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR126,. + 0
|
|
.type c_ftl_nand_bbm_buf_size, %object
|
|
.size c_ftl_nand_bbm_buf_size, 2
|
|
c_ftl_nand_bbm_buf_size:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_blk_pre_plane,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR5,. + 0
|
|
.type c_ftl_nand_blk_pre_plane, %object
|
|
.size c_ftl_nand_blk_pre_plane, 2
|
|
c_ftl_nand_blk_pre_plane:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_blks_per_die,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR16,. + 0
|
|
.type c_ftl_nand_blks_per_die, %object
|
|
.size c_ftl_nand_blks_per_die, 2
|
|
c_ftl_nand_blks_per_die:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_blks_per_die_shift,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR17,. + 0
|
|
.type c_ftl_nand_blks_per_die_shift, %object
|
|
.size c_ftl_nand_blks_per_die_shift, 2
|
|
c_ftl_nand_blks_per_die_shift:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_byte_pre_oob,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR23,. + 0
|
|
.type c_ftl_nand_byte_pre_oob, %object
|
|
.size c_ftl_nand_byte_pre_oob, 2
|
|
c_ftl_nand_byte_pre_oob:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_byte_pre_page,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR22,. + 0
|
|
.type c_ftl_nand_byte_pre_page, %object
|
|
.size c_ftl_nand_byte_pre_page, 2
|
|
c_ftl_nand_byte_pre_page:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_data_blks_per_plane,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR4,. + 0
|
|
.type c_ftl_nand_data_blks_per_plane, %object
|
|
.size c_ftl_nand_data_blks_per_plane, 2
|
|
c_ftl_nand_data_blks_per_plane:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_data_op_blks_per_plane,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR170,. + 0
|
|
.type c_ftl_nand_data_op_blks_per_plane, %object
|
|
.size c_ftl_nand_data_op_blks_per_plane, 2
|
|
c_ftl_nand_data_op_blks_per_plane:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_die_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR9,. + 0
|
|
.type c_ftl_nand_die_num, %object
|
|
.size c_ftl_nand_die_num, 2
|
|
c_ftl_nand_die_num:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_ext_blk_pre_plane,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR14,. + 0
|
|
.type c_ftl_nand_ext_blk_pre_plane, %object
|
|
.size c_ftl_nand_ext_blk_pre_plane, 2
|
|
c_ftl_nand_ext_blk_pre_plane:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_init_sys_blks_per_plane,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR30,. + 0
|
|
.type c_ftl_nand_init_sys_blks_per_plane, %object
|
|
.size c_ftl_nand_init_sys_blks_per_plane, 4
|
|
c_ftl_nand_init_sys_blks_per_plane:
|
|
.zero 4
|
|
.section .bss.c_ftl_nand_l2pmap_ram_region_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR32,. + 0
|
|
.type c_ftl_nand_l2pmap_ram_region_num, %object
|
|
.size c_ftl_nand_l2pmap_ram_region_num, 2
|
|
c_ftl_nand_l2pmap_ram_region_num:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_map_blks_per_plane,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR28,. + 0
|
|
.type c_ftl_nand_map_blks_per_plane, %object
|
|
.size c_ftl_nand_map_blks_per_plane, 2
|
|
c_ftl_nand_map_blks_per_plane:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_map_region_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR31,. + 0
|
|
.type c_ftl_nand_map_region_num, %object
|
|
.size c_ftl_nand_map_region_num, 2
|
|
c_ftl_nand_map_region_num:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_max_data_blks,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR6,. + 0
|
|
.type c_ftl_nand_max_data_blks, %object
|
|
.size c_ftl_nand_max_data_blks, 4
|
|
c_ftl_nand_max_data_blks:
|
|
.zero 4
|
|
.section .bss.c_ftl_nand_max_map_blks,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR29,. + 0
|
|
.type c_ftl_nand_max_map_blks, %object
|
|
.size c_ftl_nand_max_map_blks, 4
|
|
c_ftl_nand_max_map_blks:
|
|
.zero 4
|
|
.section .bss.c_ftl_nand_max_sys_blks,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR3,. + 0
|
|
.type c_ftl_nand_max_sys_blks, %object
|
|
.size c_ftl_nand_max_sys_blks, 4
|
|
c_ftl_nand_max_sys_blks:
|
|
.zero 4
|
|
.section .bss.c_ftl_nand_max_vendor_blks,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR26,. + 0
|
|
.type c_ftl_nand_max_vendor_blks, %object
|
|
.size c_ftl_nand_max_vendor_blks, 2
|
|
c_ftl_nand_max_vendor_blks:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_page_pre_blk,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR18,. + 0
|
|
.type c_ftl_nand_page_pre_blk, %object
|
|
.size c_ftl_nand_page_pre_blk, 2
|
|
c_ftl_nand_page_pre_blk:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_page_pre_slc_blk,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR19,. + 0
|
|
.type c_ftl_nand_page_pre_slc_blk, %object
|
|
.size c_ftl_nand_page_pre_slc_blk, 2
|
|
c_ftl_nand_page_pre_slc_blk:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_page_pre_super_blk,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR20,. + 0
|
|
.type c_ftl_nand_page_pre_super_blk, %object
|
|
.size c_ftl_nand_page_pre_super_blk, 2
|
|
c_ftl_nand_page_pre_super_blk:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_planes_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR2,. + 0
|
|
.type c_ftl_nand_planes_num, %object
|
|
.size c_ftl_nand_planes_num, 2
|
|
c_ftl_nand_planes_num:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_planes_per_die,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR10,. + 0
|
|
.type c_ftl_nand_planes_per_die, %object
|
|
.size c_ftl_nand_planes_per_die, 2
|
|
c_ftl_nand_planes_per_die:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_reserved_blks,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR24,. + 0
|
|
.type c_ftl_nand_reserved_blks, %object
|
|
.size c_ftl_nand_reserved_blks, 2
|
|
c_ftl_nand_reserved_blks:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_sec_pre_page,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR11,. + 0
|
|
.type c_ftl_nand_sec_pre_page, %object
|
|
.size c_ftl_nand_sec_pre_page, 2
|
|
c_ftl_nand_sec_pre_page:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_sec_pre_page_shift,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR21,. + 0
|
|
.type c_ftl_nand_sec_pre_page_shift, %object
|
|
.size c_ftl_nand_sec_pre_page_shift, 2
|
|
c_ftl_nand_sec_pre_page_shift:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_sys_blks_per_plane,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR1,. + 0
|
|
.type c_ftl_nand_sys_blks_per_plane, %object
|
|
.size c_ftl_nand_sys_blks_per_plane, 4
|
|
c_ftl_nand_sys_blks_per_plane:
|
|
.zero 4
|
|
.section .bss.c_ftl_nand_totle_phy_blks,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR7,. + 0
|
|
.type c_ftl_nand_totle_phy_blks, %object
|
|
.size c_ftl_nand_totle_phy_blks, 4
|
|
c_ftl_nand_totle_phy_blks:
|
|
.zero 4
|
|
.section .bss.c_ftl_nand_type,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR8,. + 0
|
|
.type c_ftl_nand_type, %object
|
|
.size c_ftl_nand_type, 2
|
|
c_ftl_nand_type:
|
|
.zero 2
|
|
.section .bss.c_ftl_nand_vendor_region_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR27,. + 0
|
|
.type c_ftl_nand_vendor_region_num, %object
|
|
.size c_ftl_nand_vendor_region_num, 2
|
|
c_ftl_nand_vendor_region_num:
|
|
.zero 2
|
|
.section .bss.c_ftl_vendor_part_size,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR15,. + 0
|
|
.type c_ftl_vendor_part_size, %object
|
|
.size c_ftl_vendor_part_size, 2
|
|
c_ftl_vendor_part_size:
|
|
.zero 2
|
|
.section .bss.c_gc_page_buf_num,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR66,. + 0
|
|
.type c_gc_page_buf_num, %object
|
|
.size c_gc_page_buf_num, 4
|
|
c_gc_page_buf_num:
|
|
.zero 4
|
|
.section .bss.c_mlc_erase_count_value,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR13,. + 0
|
|
.type c_mlc_erase_count_value, %object
|
|
.size c_mlc_erase_count_value, 2
|
|
c_mlc_erase_count_value:
|
|
.zero 2
|
|
.section .bss.check_vpc_table,"aw",@nobits
|
|
.align 3
|
|
.type check_vpc_table, %object
|
|
.size check_vpc_table, 16384
|
|
check_vpc_table:
|
|
.zero 16384
|
|
.section .bss.ftl_gc_temp_power_lost_recovery_flag,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR132,. + 0
|
|
.type ftl_gc_temp_power_lost_recovery_flag, %object
|
|
.size ftl_gc_temp_power_lost_recovery_flag, 4
|
|
ftl_gc_temp_power_lost_recovery_flag:
|
|
.zero 4
|
|
.section .bss.gBbtInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR36,. + 0
|
|
.type gBbtInfo, %object
|
|
.size gBbtInfo, 96
|
|
gBbtInfo:
|
|
.zero 96
|
|
.section .bss.gL2pMapInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR128,. + 0
|
|
.type gL2pMapInfo, %object
|
|
.size gL2pMapInfo, 64
|
|
gL2pMapInfo:
|
|
.zero 64
|
|
.section .bss.gSysFreeQueue,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR37,. + 0
|
|
.type gSysFreeQueue, %object
|
|
.size gSysFreeQueue, 2056
|
|
gSysFreeQueue:
|
|
.zero 2056
|
|
.section .bss.gSysInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR138,. + 0
|
|
.type gSysInfo, %object
|
|
.size gSysInfo, 16
|
|
gSysInfo:
|
|
.zero 16
|
|
.section .bss.gVendorBlkInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR160,. + 0
|
|
.type gVendorBlkInfo, %object
|
|
.size gVendorBlkInfo, 64
|
|
gVendorBlkInfo:
|
|
.zero 64
|
|
.section .bss.g_GlobalDataVersion,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR82,. + 0
|
|
.type g_GlobalDataVersion, %object
|
|
.size g_GlobalDataVersion, 4
|
|
g_GlobalDataVersion:
|
|
.zero 4
|
|
.section .bss.g_GlobalSysVersion,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR81,. + 0
|
|
.type g_GlobalSysVersion, %object
|
|
.size g_GlobalSysVersion, 4
|
|
g_GlobalSysVersion:
|
|
.zero 4
|
|
.section .bss.g_MaxLbaSector,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR33,. + 0
|
|
.type g_MaxLbaSector, %object
|
|
.size g_MaxLbaSector, 4
|
|
g_MaxLbaSector:
|
|
.zero 4
|
|
.section .bss.g_MaxLbn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR178,. + 0
|
|
.type g_MaxLbn, %object
|
|
.size g_MaxLbn, 4
|
|
g_MaxLbn:
|
|
.zero 4
|
|
.section .bss.g_MaxLpn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR151,. + 0
|
|
.type g_MaxLpn, %object
|
|
.size g_MaxLpn, 4
|
|
g_MaxLpn:
|
|
.zero 4
|
|
.section .bss.g_VaildLpn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR58,. + 0
|
|
.type g_VaildLpn, %object
|
|
.size g_VaildLpn, 4
|
|
g_VaildLpn:
|
|
.zero 4
|
|
.section .bss.g_active_superblock,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR50,. + 0
|
|
.type g_active_superblock, %object
|
|
.size g_active_superblock, 48
|
|
g_active_superblock:
|
|
.zero 48
|
|
.section .bss.g_buffer_superblock,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR51,. + 0
|
|
.type g_buffer_superblock, %object
|
|
.size g_buffer_superblock, 48
|
|
g_buffer_superblock:
|
|
.zero 48
|
|
.section .bss.g_cur_erase_blk,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR98,. + 0
|
|
.type g_cur_erase_blk, %object
|
|
.size g_cur_erase_blk, 4
|
|
g_cur_erase_blk:
|
|
.zero 4
|
|
.section .bss.g_ect_tbl_info_size,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR115,. + 0
|
|
.type g_ect_tbl_info_size, %object
|
|
.size g_ect_tbl_info_size, 2
|
|
g_ect_tbl_info_size:
|
|
.zero 2
|
|
.section .bss.g_ect_tbl_power_up_flush,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR163,. + 0
|
|
.type g_ect_tbl_power_up_flush, %object
|
|
.size g_ect_tbl_power_up_flush, 2
|
|
g_ect_tbl_power_up_flush:
|
|
.zero 2
|
|
.section .bss.g_ftl_nand_free_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR175,. + 0
|
|
.type g_ftl_nand_free_count, %object
|
|
.size g_ftl_nand_free_count, 4
|
|
g_ftl_nand_free_count:
|
|
.zero 4
|
|
.section .bss.g_gc_bad_block_gc_index,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR75,. + 0
|
|
.type g_gc_bad_block_gc_index, %object
|
|
.size g_gc_bad_block_gc_index, 2
|
|
g_gc_bad_block_gc_index:
|
|
.zero 2
|
|
.section .bss.g_gc_bad_block_temp_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR73,. + 0
|
|
.type g_gc_bad_block_temp_num, %object
|
|
.size g_gc_bad_block_temp_num, 2
|
|
g_gc_bad_block_temp_num:
|
|
.zero 2
|
|
.section .bss.g_gc_bad_block_temp_tbl,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR74,. + 0
|
|
.type g_gc_bad_block_temp_tbl, %object
|
|
.size g_gc_bad_block_temp_tbl, 34
|
|
g_gc_bad_block_temp_tbl:
|
|
.zero 34
|
|
.section .bss.g_gc_blk_index,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR101,. + 0
|
|
.type g_gc_blk_index, %object
|
|
.size g_gc_blk_index, 2
|
|
g_gc_blk_index:
|
|
.zero 2
|
|
.section .bss.g_gc_blk_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR67,. + 0
|
|
.type g_gc_blk_num, %object
|
|
.size g_gc_blk_num, 2
|
|
g_gc_blk_num:
|
|
.zero 2
|
|
.section .bss.g_gc_cur_blk_max_valid_pages,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR173,. + 0
|
|
.type g_gc_cur_blk_max_valid_pages, %object
|
|
.size g_gc_cur_blk_max_valid_pages, 2
|
|
g_gc_cur_blk_max_valid_pages:
|
|
.zero 2
|
|
.section .bss.g_gc_cur_blk_valid_pages,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR172,. + 0
|
|
.type g_gc_cur_blk_valid_pages, %object
|
|
.size g_gc_cur_blk_valid_pages, 2
|
|
g_gc_cur_blk_valid_pages:
|
|
.zero 2
|
|
.section .bss.g_gc_free_blk_threshold,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR99,. + 0
|
|
.type g_gc_free_blk_threshold, %object
|
|
.size g_gc_free_blk_threshold, 2
|
|
g_gc_free_blk_threshold:
|
|
.zero 2
|
|
.section .bss.g_gc_head_data_block,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR95,. + 0
|
|
.type g_gc_head_data_block, %object
|
|
.size g_gc_head_data_block, 4
|
|
g_gc_head_data_block:
|
|
.zero 4
|
|
.section .bss.g_gc_head_data_block_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR96,. + 0
|
|
.type g_gc_head_data_block_count, %object
|
|
.size g_gc_head_data_block_count, 4
|
|
g_gc_head_data_block_count:
|
|
.zero 4
|
|
.section .bss.g_gc_merge_free_blk_threshold,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR100,. + 0
|
|
.type g_gc_merge_free_blk_threshold, %object
|
|
.size g_gc_merge_free_blk_threshold, 2
|
|
g_gc_merge_free_blk_threshold:
|
|
.zero 2
|
|
.section .bss.g_gc_next_blk,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR71,. + 0
|
|
.type g_gc_next_blk, %object
|
|
.size g_gc_next_blk, 2
|
|
g_gc_next_blk:
|
|
.zero 2
|
|
.section .bss.g_gc_next_blk_1,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR72,. + 0
|
|
.type g_gc_next_blk_1, %object
|
|
.size g_gc_next_blk_1, 2
|
|
g_gc_next_blk_1:
|
|
.zero 2
|
|
.section .bss.g_gc_num_req,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR61,. + 0
|
|
.type g_gc_num_req, %object
|
|
.size g_gc_num_req, 4
|
|
g_gc_num_req:
|
|
.zero 4
|
|
.section .bss.g_gc_page_offset,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR69,. + 0
|
|
.type g_gc_page_offset, %object
|
|
.size g_gc_page_offset, 2
|
|
g_gc_page_offset:
|
|
.zero 2
|
|
.section .bss.g_gc_skip_write_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR97,. + 0
|
|
.type g_gc_skip_write_count, %object
|
|
.size g_gc_skip_write_count, 4
|
|
g_gc_skip_write_count:
|
|
.zero 4
|
|
.section .bss.g_gc_superblock,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR144,. + 0
|
|
.type g_gc_superblock, %object
|
|
.size g_gc_superblock, 48
|
|
g_gc_superblock:
|
|
.zero 48
|
|
.section .bss.g_gc_temp_superblock,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR52,. + 0
|
|
.type g_gc_temp_superblock, %object
|
|
.size g_gc_temp_superblock, 48
|
|
g_gc_temp_superblock:
|
|
.zero 48
|
|
.section .bss.g_in_gc_progress,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR93,. + 0
|
|
.type g_in_gc_progress, %object
|
|
.size g_in_gc_progress, 4
|
|
g_in_gc_progress:
|
|
.zero 4
|
|
.section .bss.g_in_swl_replace,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR94,. + 0
|
|
.type g_in_swl_replace, %object
|
|
.size g_in_swl_replace, 4
|
|
g_in_swl_replace:
|
|
.zero 4
|
|
.section .bss.g_l2p_last_update_region_id,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR55,. + 0
|
|
.type g_l2p_last_update_region_id, %object
|
|
.size g_l2p_last_update_region_id, 2
|
|
g_l2p_last_update_region_id:
|
|
.zero 2
|
|
.section .bss.g_max_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR91,. + 0
|
|
.type g_max_erase_count, %object
|
|
.size g_max_erase_count, 4
|
|
g_max_erase_count:
|
|
.zero 4
|
|
.section .bss.g_min_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR92,. + 0
|
|
.type g_min_erase_count, %object
|
|
.size g_min_erase_count, 4
|
|
g_min_erase_count:
|
|
.zero 4
|
|
.section .bss.g_nand_ops,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR77,. + 0
|
|
.type g_nand_ops, %object
|
|
.size g_nand_ops, 48
|
|
g_nand_ops:
|
|
.zero 48
|
|
.section .bss.g_nand_phy_info,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR0,. + 0
|
|
.type g_nand_phy_info, %object
|
|
.size g_nand_phy_info, 24
|
|
g_nand_phy_info:
|
|
.zero 24
|
|
.section .bss.g_num_data_superblocks,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR43,. + 0
|
|
.type g_num_data_superblocks, %object
|
|
.size g_num_data_superblocks, 2
|
|
g_num_data_superblocks:
|
|
.zero 2
|
|
.section .bss.g_num_free_superblocks,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR47,. + 0
|
|
.type g_num_free_superblocks, %object
|
|
.size g_num_free_superblocks, 2
|
|
g_num_free_superblocks:
|
|
.zero 2
|
|
.section .bss.g_power_lost_recovery_flag,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR155,. + 0
|
|
.type g_power_lost_recovery_flag, %object
|
|
.size g_power_lost_recovery_flag, 2
|
|
g_power_lost_recovery_flag:
|
|
.zero 2
|
|
.section .bss.g_recovery_page_min_ver,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR133,. + 0
|
|
.type g_recovery_page_min_ver, %object
|
|
.size g_recovery_page_min_ver, 4
|
|
g_recovery_page_min_ver:
|
|
.zero 4
|
|
.section .bss.g_recovery_page_num,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR156,. + 0
|
|
.type g_recovery_page_num, %object
|
|
.size g_recovery_page_num, 4
|
|
g_recovery_page_num:
|
|
.zero 4
|
|
.section .bss.g_recovery_ppa_tbl,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR157,. + 0
|
|
.type g_recovery_ppa_tbl, %object
|
|
.size g_recovery_ppa_tbl, 128
|
|
g_recovery_ppa_tbl:
|
|
.zero 128
|
|
.section .bss.g_sys_ext_data,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR134,. + 0
|
|
.type g_sys_ext_data, %object
|
|
.size g_sys_ext_data, 512
|
|
g_sys_ext_data:
|
|
.zero 512
|
|
.section .bss.g_sys_save_data,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR38,. + 0
|
|
.type g_sys_save_data, %object
|
|
.size g_sys_save_data, 48
|
|
g_sys_save_data:
|
|
.zero 48
|
|
.section .bss.g_tmp_data_superblock_id,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR130,. + 0
|
|
.type g_tmp_data_superblock_id, %object
|
|
.size g_tmp_data_superblock_id, 2
|
|
g_tmp_data_superblock_id:
|
|
.zero 2
|
|
.section .bss.g_totle_avg_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR142,. + 0
|
|
.type g_totle_avg_erase_count, %object
|
|
.size g_totle_avg_erase_count, 4
|
|
g_totle_avg_erase_count:
|
|
.zero 4
|
|
.section .bss.g_totle_cache_write_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR86,. + 0
|
|
.type g_totle_cache_write_count, %object
|
|
.size g_totle_cache_write_count, 4
|
|
g_totle_cache_write_count:
|
|
.zero 4
|
|
.section .bss.g_totle_discard_page_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR85,. + 0
|
|
.type g_totle_discard_page_count, %object
|
|
.size g_totle_discard_page_count, 4
|
|
g_totle_discard_page_count:
|
|
.zero 4
|
|
.section .bss.g_totle_gc_page_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR83,. + 0
|
|
.type g_totle_gc_page_count, %object
|
|
.size g_totle_gc_page_count, 4
|
|
g_totle_gc_page_count:
|
|
.zero 4
|
|
.section .bss.g_totle_l2p_write_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR87,. + 0
|
|
.type g_totle_l2p_write_count, %object
|
|
.size g_totle_l2p_write_count, 4
|
|
g_totle_l2p_write_count:
|
|
.zero 4
|
|
.section .bss.g_totle_map_block,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR129,. + 0
|
|
.type g_totle_map_block, %object
|
|
.size g_totle_map_block, 2
|
|
g_totle_map_block:
|
|
.zero 2
|
|
.section .bss.g_totle_mlc_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR89,. + 0
|
|
.type g_totle_mlc_erase_count, %object
|
|
.size g_totle_mlc_erase_count, 4
|
|
g_totle_mlc_erase_count:
|
|
.zero 4
|
|
.section .bss.g_totle_read_page_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR88,. + 0
|
|
.type g_totle_read_page_count, %object
|
|
.size g_totle_read_page_count, 4
|
|
g_totle_read_page_count:
|
|
.zero 4
|
|
.section .bss.g_totle_read_sector,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR162,. + 0
|
|
.type g_totle_read_sector, %object
|
|
.size g_totle_read_sector, 4
|
|
g_totle_read_sector:
|
|
.zero 4
|
|
.section .bss.g_totle_slc_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR90,. + 0
|
|
.type g_totle_slc_erase_count, %object
|
|
.size g_totle_slc_erase_count, 4
|
|
g_totle_slc_erase_count:
|
|
.zero 4
|
|
.section .bss.g_totle_swl_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR131,. + 0
|
|
.type g_totle_swl_count, %object
|
|
.size g_totle_swl_count, 4
|
|
g_totle_swl_count:
|
|
.zero 4
|
|
.section .bss.g_totle_sys_slc_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR79,. + 0
|
|
.type g_totle_sys_slc_erase_count, %object
|
|
.size g_totle_sys_slc_erase_count, 4
|
|
g_totle_sys_slc_erase_count:
|
|
.zero 4
|
|
.section .bss.g_totle_vendor_block,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR34,. + 0
|
|
.type g_totle_vendor_block, %object
|
|
.size g_totle_vendor_block, 2
|
|
g_totle_vendor_block:
|
|
.zero 2
|
|
.section .bss.g_totle_write_page_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR84,. + 0
|
|
.type g_totle_write_page_count, %object
|
|
.size g_totle_write_page_count, 4
|
|
g_totle_write_page_count:
|
|
.zero 4
|
|
.section .bss.g_totle_write_sector,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR161,. + 0
|
|
.type g_totle_write_sector, %object
|
|
.size g_totle_write_sector, 4
|
|
g_totle_write_sector:
|
|
.zero 4
|
|
.section .bss.gc_discard_updated,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR166,. + 0
|
|
.type gc_discard_updated, %object
|
|
.size gc_discard_updated, 4
|
|
gc_discard_updated:
|
|
.zero 4
|
|
.section .bss.gc_ink_free_return_value,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR171,. + 0
|
|
.type gc_ink_free_return_value, %object
|
|
.size gc_ink_free_return_value, 2
|
|
gc_ink_free_return_value:
|
|
.zero 2
|
|
.section .bss.gp_ect_tbl_info,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR117,. + 0
|
|
.type gp_ect_tbl_info, %object
|
|
.size gp_ect_tbl_info, 8
|
|
gp_ect_tbl_info:
|
|
.zero 8
|
|
.section .bss.gp_flash_check_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR183,. + 0
|
|
.type gp_flash_check_buf, %object
|
|
.size gp_flash_check_buf, 8
|
|
gp_flash_check_buf:
|
|
.zero 8
|
|
.section .bss.gp_gc_page_buf_info,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR62,. + 0
|
|
.type gp_gc_page_buf_info, %object
|
|
.size gp_gc_page_buf_info, 8
|
|
gp_gc_page_buf_info:
|
|
.zero 8
|
|
.section .bss.gp_last_act_superblock,"aw",@nobits
|
|
.align 3
|
|
.type gp_last_act_superblock, %object
|
|
.size gp_last_act_superblock, 8
|
|
gp_last_act_superblock:
|
|
.zero 8
|
|
.section .bss.idb_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR182,. + 0
|
|
.type idb_buf, %object
|
|
.size idb_buf, 8
|
|
idb_buf:
|
|
.zero 8
|
|
.section .bss.idb_need_write_back,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR181,. + 0
|
|
.type idb_need_write_back, %object
|
|
.size idb_need_write_back, 4
|
|
idb_need_write_back:
|
|
.zero 4
|
|
.section .bss.low_format_en,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR180,. + 0
|
|
.type low_format_en, %object
|
|
.size low_format_en, 4
|
|
low_format_en:
|
|
.zero 4
|
|
.section .bss.p_data_block_list_head,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR40,. + 0
|
|
.type p_data_block_list_head, %object
|
|
.size p_data_block_list_head, 8
|
|
p_data_block_list_head:
|
|
.zero 8
|
|
.section .bss.p_data_block_list_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR39,. + 0
|
|
.type p_data_block_list_table, %object
|
|
.size p_data_block_list_table, 8
|
|
p_data_block_list_table:
|
|
.zero 8
|
|
.section .bss.p_data_block_list_tail,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR42,. + 0
|
|
.type p_data_block_list_tail, %object
|
|
.size p_data_block_list_tail, 8
|
|
p_data_block_list_tail:
|
|
.zero 8
|
|
.section .bss.p_erase_count_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR46,. + 0
|
|
.type p_erase_count_table, %object
|
|
.size p_erase_count_table, 8
|
|
p_erase_count_table:
|
|
.zero 8
|
|
.section .bss.p_free_data_block_list_head,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR45,. + 0
|
|
.type p_free_data_block_list_head, %object
|
|
.size p_free_data_block_list_head, 8
|
|
p_free_data_block_list_head:
|
|
.zero 8
|
|
.section .bss.p_gc_blk_tbl,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR68,. + 0
|
|
.type p_gc_blk_tbl, %object
|
|
.size p_gc_blk_tbl, 8
|
|
p_gc_blk_tbl:
|
|
.zero 8
|
|
.section .bss.p_gc_data_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR63,. + 0
|
|
.type p_gc_data_buf, %object
|
|
.size p_gc_data_buf, 8
|
|
p_gc_data_buf:
|
|
.zero 8
|
|
.section .bss.p_gc_page_info,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR70,. + 0
|
|
.type p_gc_page_info, %object
|
|
.size p_gc_page_info, 8
|
|
p_gc_page_info:
|
|
.zero 8
|
|
.section .bss.p_gc_spare_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR64,. + 0
|
|
.type p_gc_spare_buf, %object
|
|
.size p_gc_spare_buf, 8
|
|
p_gc_spare_buf:
|
|
.zero 8
|
|
.section .bss.p_io_data_buf_0,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR108,. + 0
|
|
.type p_io_data_buf_0, %object
|
|
.size p_io_data_buf_0, 8
|
|
p_io_data_buf_0:
|
|
.zero 8
|
|
.section .bss.p_io_data_buf_1,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR109,. + 0
|
|
.type p_io_data_buf_1, %object
|
|
.size p_io_data_buf_1, 8
|
|
p_io_data_buf_1:
|
|
.zero 8
|
|
.section .bss.p_io_spare_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR114,. + 0
|
|
.type p_io_spare_buf, %object
|
|
.size p_io_spare_buf, 8
|
|
p_io_spare_buf:
|
|
.zero 8
|
|
.section .bss.p_l2p_map_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR125,. + 0
|
|
.type p_l2p_map_buf, %object
|
|
.size p_l2p_map_buf, 8
|
|
p_l2p_map_buf:
|
|
.zero 8
|
|
.section .bss.p_l2p_ram_map,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR54,. + 0
|
|
.type p_l2p_ram_map, %object
|
|
.size p_l2p_ram_map, 8
|
|
p_l2p_ram_map:
|
|
.zero 8
|
|
.section .bss.p_map_block_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR118,. + 0
|
|
.type p_map_block_table, %object
|
|
.size p_map_block_table, 8
|
|
p_map_block_table:
|
|
.zero 8
|
|
.section .bss.p_map_block_valid_page_count,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR119,. + 0
|
|
.type p_map_block_valid_page_count, %object
|
|
.size p_map_block_valid_page_count, 8
|
|
p_map_block_valid_page_count:
|
|
.zero 8
|
|
.section .bss.p_map_block_ver_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR124,. + 0
|
|
.type p_map_block_ver_table, %object
|
|
.size p_map_block_ver_table, 8
|
|
p_map_block_ver_table:
|
|
.zero 8
|
|
.section .bss.p_map_region_ppn_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR123,. + 0
|
|
.type p_map_region_ppn_table, %object
|
|
.size p_map_region_ppn_table, 8
|
|
p_map_region_ppn_table:
|
|
.zero 8
|
|
.section .bss.p_plane_order_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR12,. + 0
|
|
.type p_plane_order_table, %object
|
|
.size p_plane_order_table, 32
|
|
p_plane_order_table:
|
|
.zero 32
|
|
.section .bss.p_swl_mul_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR116,. + 0
|
|
.type p_swl_mul_table, %object
|
|
.size p_swl_mul_table, 8
|
|
p_swl_mul_table:
|
|
.zero 8
|
|
.section .bss.p_sys_data_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR105,. + 0
|
|
.type p_sys_data_buf, %object
|
|
.size p_sys_data_buf, 8
|
|
p_sys_data_buf:
|
|
.zero 8
|
|
.section .bss.p_sys_data_buf_1,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR106,. + 0
|
|
.type p_sys_data_buf_1, %object
|
|
.size p_sys_data_buf_1, 8
|
|
p_sys_data_buf_1:
|
|
.zero 8
|
|
.section .bss.p_sys_spare_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR113,. + 0
|
|
.type p_sys_spare_buf, %object
|
|
.size p_sys_spare_buf, 8
|
|
p_sys_spare_buf:
|
|
.zero 8
|
|
.section .bss.p_valid_page_count_check_table,"aw",@nobits
|
|
.align 3
|
|
.type p_valid_page_count_check_table, %object
|
|
.size p_valid_page_count_check_table, 8
|
|
p_valid_page_count_check_table:
|
|
.zero 8
|
|
.section .bss.p_valid_page_count_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR41,. + 0
|
|
.type p_valid_page_count_table, %object
|
|
.size p_valid_page_count_table, 8
|
|
p_valid_page_count_table:
|
|
.zero 8
|
|
.section .bss.p_vendor_block_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR35,. + 0
|
|
.type p_vendor_block_table, %object
|
|
.size p_vendor_block_table, 8
|
|
p_vendor_block_table:
|
|
.zero 8
|
|
.section .bss.p_vendor_block_valid_page_count,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR120,. + 0
|
|
.type p_vendor_block_valid_page_count, %object
|
|
.size p_vendor_block_valid_page_count, 8
|
|
p_vendor_block_valid_page_count:
|
|
.zero 8
|
|
.section .bss.p_vendor_block_ver_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR121,. + 0
|
|
.type p_vendor_block_ver_table, %object
|
|
.size p_vendor_block_ver_table, 8
|
|
p_vendor_block_ver_table:
|
|
.zero 8
|
|
.section .bss.p_vendor_data_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR107,. + 0
|
|
.type p_vendor_data_buf, %object
|
|
.size p_vendor_data_buf, 8
|
|
p_vendor_data_buf:
|
|
.zero 8
|
|
.section .bss.p_vendor_region_ppn_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR122,. + 0
|
|
.type p_vendor_region_ppn_table, %object
|
|
.size p_vendor_region_ppn_table, 8
|
|
p_vendor_region_ppn_table:
|
|
.zero 8
|
|
.section .bss.req_erase,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR78,. + 0
|
|
.type req_erase, %object
|
|
.size req_erase, 8
|
|
req_erase:
|
|
.zero 8
|
|
.section .bss.req_gc,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR65,. + 0
|
|
.type req_gc, %object
|
|
.size req_gc, 8
|
|
req_gc:
|
|
.zero 8
|
|
.section .bss.req_gc_dst,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR103,. + 0
|
|
.type req_gc_dst, %object
|
|
.size req_gc_dst, 8
|
|
req_gc_dst:
|
|
.zero 8
|
|
.section .bss.req_prgm,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR104,. + 0
|
|
.type req_prgm, %object
|
|
.size req_prgm, 8
|
|
req_prgm:
|
|
.zero 8
|
|
.section .bss.req_read,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR102,. + 0
|
|
.type req_read, %object
|
|
.size req_read, 8
|
|
req_read:
|
|
.zero 8
|
|
.section .bss.req_sys,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR137,. + 0
|
|
.type req_sys, %object
|
|
.size req_sys, 32
|
|
req_sys:
|
|
.zero 32
|
|
.section .bss.sftl_nand_check_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR110,. + 0
|
|
.type sftl_nand_check_buf, %object
|
|
.size sftl_nand_check_buf, 8
|
|
sftl_nand_check_buf:
|
|
.zero 8
|
|
.section .bss.sftl_nand_check_spare_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR112,. + 0
|
|
.type sftl_nand_check_spare_buf, %object
|
|
.size sftl_nand_check_spare_buf, 8
|
|
sftl_nand_check_spare_buf:
|
|
.zero 8
|
|
.section .bss.sftl_temp_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR111,. + 0
|
|
.type sftl_temp_buf, %object
|
|
.size sftl_temp_buf, 8
|
|
sftl_temp_buf:
|
|
.zero 8
|
|
.section .data.ftl_gc_temp_block_bops_scan_page_addr,"aw",@progbits
|
|
.align 1
|
|
.set .LANCHOR159,. + 0
|
|
.type ftl_gc_temp_block_bops_scan_page_addr, %object
|
|
.size ftl_gc_temp_block_bops_scan_page_addr, 2
|
|
ftl_gc_temp_block_bops_scan_page_addr:
|
|
.hword -1
|
|
.section .data.gFtlInitStatus,"aw",@progbits
|
|
.align 2
|
|
.set .LANCHOR165,. + 0
|
|
.type gFtlInitStatus, %object
|
|
.size gFtlInitStatus, 4
|
|
gFtlInitStatus:
|
|
.word -1
|
|
.section .data.power_up_flag,"aw",@progbits
|
|
.align 2
|
|
.type power_up_flag, %object
|
|
.size power_up_flag, 4
|
|
power_up_flag:
|
|
.word 1
|
|
.section .rodata.FlashEraseBlocks.str1.1,"aMS",@progbits,1
|
|
.LC6:
|
|
.string "%s: addr: %x is in id block!!!!!!!!!!\n"
|
|
.LC7:
|
|
.string "not free: w: d:"
|
|
.LC8:
|
|
.string "not free: w: s:"
|
|
.section .rodata.FlashProgPages.str1.1,"aMS",@progbits,1
|
|
.LC14:
|
|
.string "prog read error: = %x\n"
|
|
.LC15:
|
|
.string "prog read REFRESH: = %x\n"
|
|
.LC16:
|
|
.string "prog read s error: = %x %x %x %x %x\n"
|
|
.LC17:
|
|
.string "prog read d error: = %x %x %x %x %x\n"
|
|
.section .rodata.FlashReadPages.str1.1,"aMS",@progbits,1
|
|
.LC11:
|
|
.string "FlashReadPages %x %x error_ecc_bits %d\n"
|
|
.LC12:
|
|
.string "data:"
|
|
.LC13:
|
|
.string "spare:"
|
|
.section .rodata.FtlBbmMapBadBlock.str1.1,"aMS",@progbits,1
|
|
.LC0:
|
|
.string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
|
|
.section .rodata.FtlBbmTblFlush.str1.1,"aMS",@progbits,1
|
|
.LC18:
|
|
.string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
|
|
.LC19:
|
|
.string "FtlBbmTblFlush error:%x\n"
|
|
.LC20:
|
|
.string "FtlBbmTblFlush error = %x error count = %d\n"
|
|
.section .rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",@progbits,1
|
|
.LC9:
|
|
.string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n"
|
|
.section .rodata.FtlGcScanTempBlk.str1.1,"aMS",@progbits,1
|
|
.LC35:
|
|
.string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n"
|
|
.section .rodata.FtlLoadEctTbl.str1.1,"aMS",@progbits,1
|
|
.LC37:
|
|
.string "no ect"
|
|
.LC38:
|
|
.string "%s\n"
|
|
.section .rodata.FtlLoadSysInfo.str1.1,"aMS",@progbits,1
|
|
.LC46:
|
|
.string "%s hash error this.id =%x page =%x pre_id =%x hash =%x hash_r =%x\n"
|
|
.section .rodata.FtlMapTblRecovery.str1.1,"aMS",@progbits,1
|
|
.LC47:
|
|
.string "%s last blk_id =%x page =%x hash error hash =%x hash_r =%x\n"
|
|
.LC48:
|
|
.string "%s scan blk_id =%x page =%x hash error hash =%x hash_r =%x\n"
|
|
.section .rodata.FtlMapWritePage.str1.1,"aMS",@progbits,1
|
|
.LC22:
|
|
.string "FtlMapWritePage error = %x \n"
|
|
.LC23:
|
|
.string "FtlMapWritePage error = %x error count = %d\n"
|
|
.section .rodata.FtlProgPages.str1.1,"aMS",@progbits,1
|
|
.LC40:
|
|
.string "FtlProgPages error %x = %d\n"
|
|
.LC41:
|
|
.string "Ftlwrite decrement_vpc_count %x = %d\n"
|
|
.section .rodata.FtlRecoverySuperblock.str1.1,"aMS",@progbits,1
|
|
.LC27:
|
|
.string "data prev_ppa = %x error...................\n"
|
|
.LC28:
|
|
.string "spuer block %x vpn is 0\n "
|
|
.section .rodata.FtlVendorPartRead.str1.1,"aMS",@progbits,1
|
|
.LC36:
|
|
.string "FtlVendorPartRead refresh = %x phyAddr = %x\n"
|
|
.section .rodata.FtlVpcTblFlush.str1.1,"aMS",@progbits,1
|
|
.LC39:
|
|
.string "FtlVpcTblFlush error = %x error count = %d\n"
|
|
.section .rodata.FtlWrite.str1.1,"aMS",@progbits,1
|
|
.LC44:
|
|
.string "FtlWrite: ecc error:%x %x %x\n"
|
|
.LC45:
|
|
.string "FtlWrite: lpa error:%x %x\n"
|
|
.section .rodata.FtlWriteToIDB.str1.1,"aMS",@progbits,1
|
|
.LC50:
|
|
.string "write_idblock %x %x\n"
|
|
.LC51:
|
|
.string "write_idblock fail! %x %x %x %x\n"
|
|
.LC52:
|
|
.string "%s idb buffer alloc fail\n"
|
|
.section .rodata.INSERT_DATA_LIST.str1.1,"aMS",@progbits,1
|
|
.LC1:
|
|
.string "\n!!!!! error @ func:%s - line:%d\n"
|
|
.section .rodata.__func__.6436,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR168,. + 0
|
|
.type __func__.6436, %object
|
|
.size __func__.6436, 13
|
|
__func__.6436:
|
|
.string "FtlProgPages"
|
|
.section .rodata.__func__.6464,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR176,. + 0
|
|
.type __func__.6464, %object
|
|
.size __func__.6464, 9
|
|
__func__.6464:
|
|
.string "FtlWrite"
|
|
.section .rodata.__func__.6546,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR127,. + 0
|
|
.type __func__.6546, %object
|
|
.size __func__.6546, 14
|
|
__func__.6546:
|
|
.string "FtlBbt2Bitmap"
|
|
.section .rodata.__func__.6581,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR140,. + 0
|
|
.type __func__.6581, %object
|
|
.size __func__.6581, 11
|
|
__func__.6581:
|
|
.string "FtlLoadBbt"
|
|
.section .rodata.__func__.6696,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR48,. + 0
|
|
.type __func__.6696, %object
|
|
.size __func__.6696, 17
|
|
__func__.6696:
|
|
.string "INSERT_FREE_LIST"
|
|
.section .rodata.__func__.6701,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR44,. + 0
|
|
.type __func__.6701, %object
|
|
.size __func__.6701, 17
|
|
__func__.6701:
|
|
.string "INSERT_DATA_LIST"
|
|
.section .rodata.__func__.6732,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR49,. + 0
|
|
.type __func__.6732, %object
|
|
.size __func__.6732, 17
|
|
__func__.6732:
|
|
.string "List_remove_node"
|
|
.section .rodata.__func__.6764,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR53,. + 0
|
|
.type __func__.6764, %object
|
|
.size __func__.6764, 22
|
|
__func__.6764:
|
|
.string "List_update_data_list"
|
|
.section .rodata.__func__.6773,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR149,. + 0
|
|
.type __func__.6773, %object
|
|
.size __func__.6773, 16
|
|
__func__.6773:
|
|
.string "load_l2p_region"
|
|
.section .rodata.__func__.6806,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR80,. + 0
|
|
.type __func__.6806, %object
|
|
.size __func__.6806, 26
|
|
__func__.6806:
|
|
.string "ftl_map_blk_alloc_new_blk"
|
|
.section .rodata.__func__.6817,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR150,. + 0
|
|
.type __func__.6817, %object
|
|
.size __func__.6817, 15
|
|
__func__.6817:
|
|
.string "ftl_map_blk_gc"
|
|
.section .rodata.__func__.6832,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR147,. + 0
|
|
.type __func__.6832, %object
|
|
.size __func__.6832, 31
|
|
__func__.6832:
|
|
.string "Ftl_write_map_blk_to_last_page"
|
|
.section .rodata.__func__.6846,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR148,. + 0
|
|
.type __func__.6846, %object
|
|
.size __func__.6846, 16
|
|
__func__.6846:
|
|
.string "FtlMapWritePage"
|
|
.section .rodata.__func__.6871,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR56,. + 0
|
|
.type __func__.6871, %object
|
|
.size __func__.6871, 22
|
|
__func__.6871:
|
|
.string "select_l2p_ram_region"
|
|
.section .rodata.__func__.6888,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR152,. + 0
|
|
.type __func__.6888, %object
|
|
.size __func__.6888, 9
|
|
__func__.6888:
|
|
.string "log2phys"
|
|
.section .rodata.__func__.6952,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR164,. + 0
|
|
.type __func__.6952, %object
|
|
.size __func__.6952, 15
|
|
__func__.6952:
|
|
.string "FtlVpcTblFlush"
|
|
.section .rodata.__func__.6974,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR139,. + 0
|
|
.type __func__.6974, %object
|
|
.size __func__.6974, 14
|
|
__func__.6974:
|
|
.string "FtlScanSysBlk"
|
|
.section .rodata.__func__.7023,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR177,. + 0
|
|
.type __func__.7023, %object
|
|
.size __func__.7023, 15
|
|
__func__.7023:
|
|
.string "FtlLoadSysInfo"
|
|
.section .rodata.__func__.7045,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR179,. + 0
|
|
.type __func__.7045, %object
|
|
.size __func__.7045, 18
|
|
__func__.7045:
|
|
.string "FtlMapTblRecovery"
|
|
.section .rodata.__func__.7091,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR153,. + 0
|
|
.type __func__.7091, %object
|
|
.size __func__.7091, 16
|
|
__func__.7091:
|
|
.string "FtlReUsePrevPpa"
|
|
.section .rodata.__func__.7125,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR154,. + 0
|
|
.type __func__.7125, %object
|
|
.size __func__.7125, 22
|
|
__func__.7125:
|
|
.string "FtlRecoverySuperblock"
|
|
.section .rodata.__func__.7182,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR59,. + 0
|
|
.type __func__.7182, %object
|
|
.size __func__.7182, 16
|
|
__func__.7182:
|
|
.string "make_superblock"
|
|
.section .rodata.__func__.7203,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR135,. + 0
|
|
.type __func__.7203, %object
|
|
.size __func__.7203, 18
|
|
__func__.7203:
|
|
.string "SupperBlkListInit"
|
|
.section .rodata.__func__.7230,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR158,. + 0
|
|
.type __func__.7230, %object
|
|
.size __func__.7230, 14
|
|
__func__.7230:
|
|
.string "ftl_check_vpc"
|
|
.section .rodata.__func__.7295,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR143,. + 0
|
|
.type __func__.7295, %object
|
|
.size __func__.7295, 25
|
|
__func__.7295:
|
|
.string "allocate_data_superblock"
|
|
.section .rodata.__func__.7316,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR167,. + 0
|
|
.type __func__.7316, %object
|
|
.size __func__.7316, 29
|
|
__func__.7316:
|
|
.string "allocate_new_data_superblock"
|
|
.section .rodata.__func__.7323,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR60,. + 0
|
|
.type __func__.7323, %object
|
|
.size __func__.7323, 19
|
|
__func__.7323:
|
|
.string "get_new_active_ppa"
|
|
.section .rodata.__func__.7336,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR145,. + 0
|
|
.type __func__.7336, %object
|
|
.size __func__.7336, 16
|
|
__func__.7336:
|
|
.string "update_vpc_list"
|
|
.section .rodata.__func__.7343,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR146,. + 0
|
|
.type __func__.7343, %object
|
|
.size __func__.7343, 20
|
|
__func__.7343:
|
|
.string "decrement_vpc_count"
|
|
.section .rodata.__func__.7413,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR169,. + 0
|
|
.type __func__.7413, %object
|
|
.size __func__.7413, 19
|
|
__func__.7413:
|
|
.string "FtlGcFreeTempBlock"
|
|
.section .rodata.__func__.7512,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR174,. + 0
|
|
.type __func__.7512, %object
|
|
.size __func__.7512, 23
|
|
__func__.7512:
|
|
.string "rk_ftl_garbage_collect"
|
|
.section .rodata.__func__.7780,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR136,. + 0
|
|
.type __func__.7780, %object
|
|
.size __func__.7780, 15
|
|
__func__.7780:
|
|
.string "FlashReadPages"
|
|
.section .rodata.__func__.7799,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR141,. + 0
|
|
.type __func__.7799, %object
|
|
.size __func__.7799, 15
|
|
__func__.7799:
|
|
.string "FlashProgPages"
|
|
.section .rodata.__func__.7823,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR76,. + 0
|
|
.type __func__.7823, %object
|
|
.size __func__.7823, 17
|
|
__func__.7823:
|
|
.string "FlashEraseBlocks"
|
|
.section .rodata.__func__.7942,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR184,. + 0
|
|
.type __func__.7942, %object
|
|
.size __func__.7942, 14
|
|
__func__.7942:
|
|
.string "FtlWriteToIDB"
|
|
.section .rodata.decrement_vpc_count.str1.1,"aMS",@progbits,1
|
|
.LC21:
|
|
.string "decrement_vpc_count %x = %d\n"
|
|
.section .rodata.ftl_check_vpc.str1.1,"aMS",@progbits,1
|
|
.LC29:
|
|
.string "...%s enter...\n"
|
|
.LC30:
|
|
.string "FtlCheckVpc2 %x = %x %x\n"
|
|
.LC31:
|
|
.string "free blk vpc error %x = %x %x\n"
|
|
.section .rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",@progbits,1
|
|
.LC10:
|
|
.string "FtlFreeSysBlkQueueOut = %x, free count = %d\n"
|
|
.section .rodata.ftl_scan_all_data.str1.1,"aMS",@progbits,1
|
|
.LC32:
|
|
.string "ftl_scan_all_data = %x\n"
|
|
.LC33:
|
|
.string "scan lpa = %x ppa= %x\n"
|
|
.LC34:
|
|
.string "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
|
|
.section .rodata.load_l2p_region.str1.1,"aMS",@progbits,1
|
|
.LC24:
|
|
.string "region_id = %x phyAddr = %x\n"
|
|
.LC25:
|
|
.string "map_ppn:"
|
|
.LC26:
|
|
.string "load_l2p_region refresh = %x phyAddr = %x\n"
|
|
.section .rodata.rk_ftl_garbage_collect.str1.1,"aMS",@progbits,1
|
|
.LC42:
|
|
.string "g_gc_superblock_free %x %x %x %x %x\n"
|
|
.LC43:
|
|
.string "lpa=%x, ppa=%x\n"
|
|
.section .rodata.rknand_print_hex.str1.1,"aMS",@progbits,1
|
|
.LC2:
|
|
.string "%s 0x%x:"
|
|
.LC3:
|
|
.string "%x "
|
|
.LC4:
|
|
.string "%02x "
|
|
.LC5:
|
|
.string "\n"
|
|
.section .rodata.sftl_init.str1.1,"aMS",@progbits,1
|
|
.LC49:
|
|
.string "SFTL version: 5.0.58 20220814"
|
|
.hidden free
|