26154 lines
477 KiB
ArmAsm
26154 lines
477 KiB
ArmAsm
/*
|
|
* Copyright (c) 2016-2017, Fuzhou Rockchip Electronics Co., Ltd
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
* date: 2020-09-23
|
|
*/
|
|
.arch armv8-a
|
|
.file "rk_ftl_arm_v8.S"
|
|
.section .text.flash_read_ecc,"ax",@progbits
|
|
.align 2
|
|
.type flash_read_ecc, %function
|
|
flash_read_ecc:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
stp x29, x30, [sp, -32]!
|
|
add x2, x1, x0
|
|
add x29, sp, 0
|
|
ldr x0, [x1, x0]
|
|
str x19, [sp, 16]
|
|
ldrb w19, [x2, 8]
|
|
add x19, x0, x19, lsl 8
|
|
mov w0, 122
|
|
str w0, [x19, 2056]
|
|
mov x0, 80
|
|
bl udelay
|
|
ldr w1, [x19, 2048]
|
|
ldr w0, [x19, 2048]
|
|
and w1, w1, 15
|
|
and w0, w0, 15
|
|
cmp w1, w0
|
|
csel w1, w1, w0, cs
|
|
ldr w0, [x19, 2048]
|
|
ldr w2, [x19, 2048]
|
|
and w0, w0, 15
|
|
ldr x19, [sp, 16]
|
|
and w2, w2, 15
|
|
cmp w0, w2
|
|
csel w0, w0, w2, cs
|
|
cmp w0, w1
|
|
csel w0, w0, w1, cs
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size flash_read_ecc, .-flash_read_ecc
|
|
.section .text.ftl_set_blk_mode.part.11,"ax",@progbits
|
|
.align 2
|
|
.type ftl_set_blk_mode.part.11, %function
|
|
ftl_set_blk_mode.part.11:
|
|
and w0, w0, 65535
|
|
adrp x2, .LANCHOR1
|
|
ubfx x1, x0, 5, 11
|
|
ldr x3, [x2, #:lo12:.LANCHOR1]
|
|
lsl x1, x1, 2
|
|
and w0, w0, 31
|
|
mov w2, 1
|
|
lsl w2, w2, w0
|
|
ldr w0, [x3, x1]
|
|
orr w0, w0, w2
|
|
str w0, [x3, x1]
|
|
ret
|
|
.size ftl_set_blk_mode.part.11, .-ftl_set_blk_mode.part.11
|
|
.section .text.FlashMemCmp8,"ax",@progbits
|
|
.align 2
|
|
.global FlashMemCmp8
|
|
.type FlashMemCmp8, %function
|
|
FlashMemCmp8:
|
|
adrp x3, .LANCHOR2
|
|
ldrb w3, [x3, #:lo12:.LANCHOR2]
|
|
cbz w3, .L9
|
|
ldrb w4, [x0, 1]
|
|
ldrb w3, [x1, 1]
|
|
cmp w4, w3
|
|
beq .L10
|
|
.L9:
|
|
mov x3, 0
|
|
.L7:
|
|
mov w4, w3
|
|
cmp w3, w2
|
|
bcc .L8
|
|
.L10:
|
|
mov w0, 0
|
|
ret
|
|
.L8:
|
|
ldrb w5, [x0, x3]
|
|
add x3, x3, 1
|
|
add x6, x1, x3
|
|
ldrb w6, [x6, -1]
|
|
cmp w6, w5
|
|
beq .L7
|
|
add w0, w4, 1
|
|
ret
|
|
.size FlashMemCmp8, .-FlashMemCmp8
|
|
.section .text.FlashRsvdBlkChk,"ax",@progbits
|
|
.align 2
|
|
.global FlashRsvdBlkChk
|
|
.type FlashRsvdBlkChk, %function
|
|
FlashRsvdBlkChk:
|
|
adrp x2, .LANCHOR3
|
|
adrp x3, .LANCHOR4
|
|
and w0, w0, 255
|
|
ldrb w2, [x2, #:lo12:.LANCHOR3]
|
|
ldr w3, [x3, #:lo12:.LANCHOR4]
|
|
mul w2, w2, w3
|
|
cmp w2, w1
|
|
bls .L14
|
|
cmp w0, 0
|
|
cset w0, ne
|
|
ret
|
|
.L14:
|
|
mov w0, 1
|
|
ret
|
|
.size FlashRsvdBlkChk, .-FlashRsvdBlkChk
|
|
.section .text.FlashGetRandomizer,"ax",@progbits
|
|
.align 2
|
|
.global FlashGetRandomizer
|
|
.type FlashGetRandomizer, %function
|
|
FlashGetRandomizer:
|
|
and x3, x1, 127
|
|
adrp x2, .LANCHOR5
|
|
add x2, x2, :lo12:.LANCHOR5
|
|
ldrh w4, [x2, x3, lsl 1]
|
|
adrp x2, .LANCHOR6
|
|
ldrb w2, [x2, #:lo12:.LANCHOR6]
|
|
cbz w2, .L23
|
|
stp x29, x30, [sp, -16]!
|
|
and w0, w0, 255
|
|
add x29, sp, 0
|
|
bl FlashRsvdBlkChk
|
|
cmp w0, 0
|
|
orr w1, w4, -1073741824
|
|
csel w4, w1, w4, ne
|
|
mov w0, w4
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L23:
|
|
mov w0, w4
|
|
ret
|
|
.size FlashGetRandomizer, .-FlashGetRandomizer
|
|
.section .text.FlashSetRandomizer,"ax",@progbits
|
|
.align 2
|
|
.global FlashSetRandomizer
|
|
.type FlashSetRandomizer, %function
|
|
FlashSetRandomizer:
|
|
and w5, w0, 255
|
|
and x2, x1, 127
|
|
adrp x0, .LANCHOR5
|
|
add x0, x0, :lo12:.LANCHOR5
|
|
ldrh w4, [x0, x2, lsl 1]
|
|
adrp x0, .LANCHOR6
|
|
ldrb w0, [x0, #:lo12:.LANCHOR6]
|
|
cbz w0, .L34
|
|
stp x29, x30, [sp, -16]!
|
|
mov w0, w5
|
|
add x29, sp, 0
|
|
bl FlashRsvdBlkChk
|
|
cmp w0, 0
|
|
sbfiz x5, x5, 4, 32
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
orr w1, w4, -1073741824
|
|
csel w4, w1, w4, ne
|
|
ldr x0, [x0, x5]
|
|
str w4, [x0, 336]
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L34:
|
|
sbfiz x5, x5, 4, 32
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
ldr x0, [x0, x5]
|
|
str w4, [x0, 336]
|
|
ret
|
|
.size FlashSetRandomizer, .-FlashSetRandomizer
|
|
.section .text.FlashBlockAlignInit,"ax",@progbits
|
|
.align 2
|
|
.global FlashBlockAlignInit
|
|
.type FlashBlockAlignInit, %function
|
|
FlashBlockAlignInit:
|
|
and w0, w0, 65535
|
|
adrp x1, .LANCHOR4
|
|
cmp w0, 512
|
|
bls .L38
|
|
mov w0, 1024
|
|
.L42:
|
|
str w0, [x1, #:lo12:.LANCHOR4]
|
|
ret
|
|
.L38:
|
|
cmp w0, 256
|
|
bls .L40
|
|
mov w0, 512
|
|
b .L42
|
|
.L40:
|
|
cmp w0, 128
|
|
bls .L42
|
|
mov w0, 256
|
|
b .L42
|
|
.size FlashBlockAlignInit, .-FlashBlockAlignInit
|
|
.section .text.FlashReadCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadCmd
|
|
.type FlashReadCmd, %function
|
|
FlashReadCmd:
|
|
and w0, w0, 255
|
|
adrp x2, .LANCHOR0
|
|
sbfiz x3, x0, 4, 32
|
|
add x2, x2, :lo12:.LANCHOR0
|
|
add x4, x2, x3
|
|
ldr x2, [x2, x3]
|
|
adrp x3, .LANCHOR7
|
|
ldrb w4, [x4, 8]
|
|
ldr x3, [x3, #:lo12:.LANCHOR7]
|
|
ldrb w3, [x3, 7]
|
|
cmp w3, 1
|
|
bne .L44
|
|
sxtw x3, w4
|
|
mov w5, 38
|
|
add x3, x3, 8
|
|
add x3, x2, x3, lsl 8
|
|
str w5, [x3, 8]
|
|
.L44:
|
|
ubfiz x4, x4, 8, 8
|
|
and w3, w1, 255
|
|
add x2, x2, x4
|
|
str wzr, [x2, 2056]
|
|
str wzr, [x2, 2052]
|
|
str wzr, [x2, 2052]
|
|
str w3, [x2, 2052]
|
|
lsr w3, w1, 8
|
|
str w3, [x2, 2052]
|
|
lsr w3, w1, 16
|
|
str w3, [x2, 2052]
|
|
mov w3, 48
|
|
str w3, [x2, 2056]
|
|
b FlashSetRandomizer
|
|
.size FlashReadCmd, .-FlashReadCmd
|
|
.section .text.FlashReadDpDataOutCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadDpDataOutCmd
|
|
.type FlashReadDpDataOutCmd, %function
|
|
FlashReadDpDataOutCmd:
|
|
and w0, w0, 255
|
|
adrp x2, .LANCHOR0
|
|
sbfiz x3, x0, 4, 32
|
|
add x2, x2, :lo12:.LANCHOR0
|
|
add x4, x2, x3
|
|
and w5, w1, 255
|
|
ldr x6, [x2, x3]
|
|
adrp x2, .LANCHOR8+16
|
|
lsr w3, w1, 16
|
|
ldrb w2, [x2, #:lo12:.LANCHOR8+16]
|
|
cmp w2, 1
|
|
ldrb w2, [x4, 8]
|
|
lsr w4, w1, 8
|
|
add x2, x6, x2, lsl 8
|
|
bne .L46
|
|
mov w6, 6
|
|
str w6, [x2, 2056]
|
|
str wzr, [x2, 2052]
|
|
str wzr, [x2, 2052]
|
|
str w5, [x2, 2052]
|
|
str w4, [x2, 2052]
|
|
str w3, [x2, 2052]
|
|
.L48:
|
|
mov w3, 224
|
|
str w3, [x2, 2056]
|
|
b FlashSetRandomizer
|
|
.L46:
|
|
str wzr, [x2, 2056]
|
|
str wzr, [x2, 2052]
|
|
str wzr, [x2, 2052]
|
|
str w5, [x2, 2052]
|
|
str w4, [x2, 2052]
|
|
str w3, [x2, 2052]
|
|
mov w3, 5
|
|
str w3, [x2, 2056]
|
|
str wzr, [x2, 2052]
|
|
str wzr, [x2, 2052]
|
|
b .L48
|
|
.size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
|
|
.section .text.FlashProgFirstCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgFirstCmd
|
|
.type FlashProgFirstCmd, %function
|
|
FlashProgFirstCmd:
|
|
and w0, w0, 255
|
|
adrp x4, .LANCHOR0
|
|
sbfiz x5, x0, 4, 32
|
|
add x4, x4, :lo12:.LANCHOR0
|
|
add x2, x4, x5
|
|
lsr w3, w1, 16
|
|
ldr x4, [x4, x5]
|
|
ldrb w2, [x2, 8]
|
|
add x2, x4, x2, lsl 8
|
|
mov w4, 128
|
|
str w4, [x2, 2056]
|
|
and w4, w1, 255
|
|
str wzr, [x2, 2052]
|
|
str wzr, [x2, 2052]
|
|
str w4, [x2, 2052]
|
|
lsr w4, w1, 8
|
|
str w4, [x2, 2052]
|
|
str w3, [x2, 2052]
|
|
b FlashSetRandomizer
|
|
.size FlashProgFirstCmd, .-FlashProgFirstCmd
|
|
.section .text.FlashEraseCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashEraseCmd
|
|
.type FlashEraseCmd, %function
|
|
FlashEraseCmd:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x3, .LANCHOR0
|
|
add x3, x3, :lo12:.LANCHOR0
|
|
add x4, x3, x0
|
|
ldr x3, [x3, x0]
|
|
ldrb w0, [x4, 8]
|
|
cbz w2, .L51
|
|
add x2, x3, x0, lsl 8
|
|
mov w4, 96
|
|
str w4, [x2, 2056]
|
|
and w4, w1, 255
|
|
str w4, [x2, 2052]
|
|
lsr w4, w1, 8
|
|
str w4, [x2, 2052]
|
|
lsr w4, w1, 16
|
|
str w4, [x2, 2052]
|
|
adrp x2, .LANCHOR4
|
|
ldr w2, [x2, #:lo12:.LANCHOR4]
|
|
add w1, w1, w2
|
|
.L51:
|
|
add x0, x3, x0, lsl 8
|
|
mov w2, 96
|
|
str w2, [x0, 2056]
|
|
and w2, w1, 255
|
|
str w2, [x0, 2052]
|
|
lsr w2, w1, 8
|
|
str w2, [x0, 2052]
|
|
lsr w1, w1, 16
|
|
str w1, [x0, 2052]
|
|
mov w1, 208
|
|
str w1, [x0, 2056]
|
|
ret
|
|
.size FlashEraseCmd, .-FlashEraseCmd
|
|
.section .text.FlashProgDpSecondCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgDpSecondCmd
|
|
.type FlashProgDpSecondCmd, %function
|
|
FlashProgDpSecondCmd:
|
|
and w0, w0, 255
|
|
adrp x2, .LANCHOR8+11
|
|
sbfiz x5, x0, 4, 32
|
|
adrp x4, .LANCHOR0
|
|
add x4, x4, :lo12:.LANCHOR0
|
|
ldrb w6, [x2, #:lo12:.LANCHOR8+11]
|
|
add x2, x4, x5
|
|
lsr w3, w1, 16
|
|
ldr x4, [x4, x5]
|
|
ldrb w2, [x2, 8]
|
|
add x2, x4, x2, lsl 8
|
|
and w4, w1, 255
|
|
str w6, [x2, 2056]
|
|
str wzr, [x2, 2052]
|
|
str wzr, [x2, 2052]
|
|
str w4, [x2, 2052]
|
|
lsr w4, w1, 8
|
|
str w4, [x2, 2052]
|
|
str w3, [x2, 2052]
|
|
b FlashSetRandomizer
|
|
.size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
|
|
.section .text.FlashProgSecondCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgSecondCmd
|
|
.type FlashProgSecondCmd, %function
|
|
FlashProgSecondCmd:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x2, x1, x0
|
|
ldr x1, [x1, x0]
|
|
ldrb w0, [x2, 8]
|
|
add x0, x0, 8
|
|
add x0, x1, x0, lsl 8
|
|
mov w1, 16
|
|
str w1, [x0, 8]
|
|
ret
|
|
.size FlashProgSecondCmd, .-FlashProgSecondCmd
|
|
.section .text.FlashProgDpFirstCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgDpFirstCmd
|
|
.type FlashProgDpFirstCmd, %function
|
|
FlashProgDpFirstCmd:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x3, x1, x0
|
|
ldr x2, [x1, x0]
|
|
adrp x0, .LANCHOR8+10
|
|
ldrb w1, [x0, #:lo12:.LANCHOR8+10]
|
|
ldrb w0, [x3, 8]
|
|
add x0, x0, 8
|
|
add x0, x2, x0, lsl 8
|
|
str w1, [x0, 8]
|
|
ret
|
|
.size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
|
|
.section .text.FlashReadStatus,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadStatus
|
|
.type FlashReadStatus, %function
|
|
FlashReadStatus:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
stp x29, x30, [sp, -32]!
|
|
add x2, x1, x0
|
|
add x29, sp, 0
|
|
ldr x0, [x1, x0]
|
|
str x19, [sp, 16]
|
|
ldrb w19, [x2, 8]
|
|
add x19, x0, x19, lsl 8
|
|
mov w0, 112
|
|
str w0, [x19, 2056]
|
|
mov x0, 80
|
|
bl udelay
|
|
ldr w0, [x19, 2048]
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FlashReadStatus, .-FlashReadStatus
|
|
.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
|
|
.L61:
|
|
cmp w1, w3
|
|
bhi .L62
|
|
ret
|
|
.L62:
|
|
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 .L61
|
|
.size js_hash, .-js_hash
|
|
.section .text.FlashLoadIdbInfo,"ax",@progbits
|
|
.align 2
|
|
.global FlashLoadIdbInfo
|
|
.type FlashLoadIdbInfo, %function
|
|
FlashLoadIdbInfo:
|
|
mov w0, 0
|
|
ret
|
|
.size FlashLoadIdbInfo, .-FlashLoadIdbInfo
|
|
.section .text.FlashPrintInfo,"ax",@progbits
|
|
.align 2
|
|
.global FlashPrintInfo
|
|
.type FlashPrintInfo, %function
|
|
FlashPrintInfo:
|
|
ret
|
|
.size FlashPrintInfo, .-FlashPrintInfo
|
|
.section .text.ToshibaSetRRPara,"ax",@progbits
|
|
.align 2
|
|
.global ToshibaSetRRPara
|
|
.type ToshibaSetRRPara, %function
|
|
ToshibaSetRRPara:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
str x27, [sp, 80]
|
|
and w27, w1, 255
|
|
add w2, w27, 1
|
|
stp x21, x22, [sp, 32]
|
|
mov x21, x0
|
|
mov w0, 5
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR9
|
|
umull x2, w2, w0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x0, .LANCHOR10
|
|
add x20, x20, :lo12:.LANCHOR9
|
|
add x24, x0, :lo12:.LANCHOR10
|
|
stp x25, x26, [sp, 64]
|
|
adrp x23, .LANCHOR13
|
|
adrp x25, .LANCHOR11
|
|
adrp x26, .LANCHOR12
|
|
add x23, x23, :lo12:.LANCHOR13
|
|
add x25, x25, :lo12:.LANCHOR11
|
|
add x26, x26, :lo12:.LANCHOR12
|
|
add x20, x20, x2
|
|
add x24, x24, x2
|
|
mov x22, x0
|
|
mov x19, 0
|
|
.L66:
|
|
ldrb w0, [x23]
|
|
cmp w0, w19
|
|
bhi .L70
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldr x27, [sp, 80]
|
|
ldp x29, x30, [sp], 96
|
|
ret
|
|
.L70:
|
|
mov w0, 85
|
|
str w0, [x21, 8]
|
|
add x0, x22, :lo12:.LANCHOR10
|
|
ldrsb w0, [x19, x0]
|
|
str w0, [x21, 4]
|
|
mov x0, 200
|
|
bl udelay
|
|
ldrb w0, [x25]
|
|
cmp w0, 34
|
|
bne .L67
|
|
ldrsb w0, [x24, x19]
|
|
.L72:
|
|
add x19, x19, 1
|
|
str w0, [x21]
|
|
b .L66
|
|
.L67:
|
|
cmp w0, 35
|
|
bne .L69
|
|
ldrsb w0, [x20, x19]
|
|
b .L72
|
|
.L69:
|
|
ldrsb w0, [x26, w27, sxtw]
|
|
b .L72
|
|
.size ToshibaSetRRPara, .-ToshibaSetRRPara
|
|
.section .text.SamsungSetRRPara,"ax",@progbits
|
|
.align 2
|
|
.global SamsungSetRRPara
|
|
.type SamsungSetRRPara, %function
|
|
SamsungSetRRPara:
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
ubfiz x21, x1, 2, 8
|
|
mov x22, x0
|
|
add x21, x21, 4
|
|
adrp x0, .LANCHOR14
|
|
add x0, x0, :lo12:.LANCHOR14
|
|
stp x19, x20, [sp, 16]
|
|
add x21, x0, x21
|
|
stp x23, x24, [sp, 48]
|
|
mov x19, x0
|
|
adrp x23, .LANCHOR13
|
|
add x23, x23, :lo12:.LANCHOR13
|
|
mov x20, 0
|
|
mov w24, 161
|
|
.L74:
|
|
ldrb w0, [x23]
|
|
cmp w0, w20
|
|
bhi .L75
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L75:
|
|
str w24, [x22, 8]
|
|
str wzr, [x22]
|
|
ldrsb w0, [x20, x19]
|
|
str w0, [x22]
|
|
ldrsb w0, [x21, x20]
|
|
add x20, x20, 1
|
|
str w0, [x22]
|
|
mov x0, 300
|
|
bl udelay
|
|
b .L74
|
|
.size SamsungSetRRPara, .-SamsungSetRRPara
|
|
.section .text.LogAddr2PhyAddr,"ax",@progbits
|
|
.align 2
|
|
.global LogAddr2PhyAddr
|
|
.type LogAddr2PhyAddr, %function
|
|
LogAddr2PhyAddr:
|
|
adrp x6, .LANCHOR15
|
|
add x6, x6, :lo12:.LANCHOR15
|
|
and w4, w4, 255
|
|
ldrh w8, [x6, 12]
|
|
ldrh w5, [x6, 14]
|
|
mul w5, w5, w8
|
|
and w8, w5, 65535
|
|
adrp x5, .LANCHOR4
|
|
ldrh w7, [x5, #:lo12:.LANCHOR4]
|
|
adrp x5, .LANCHOR2
|
|
ldrb w6, [x5, #:lo12:.LANCHOR2]
|
|
ubfiz w5, w7, 1, 15
|
|
cmp w6, 1
|
|
ldr w6, [x0, 4]
|
|
csel w7, w5, w7, eq
|
|
cmp w1, 1
|
|
ubfx x11, x6, 10, 16
|
|
and w6, w6, 1023
|
|
udiv w5, w11, w8
|
|
and w10, w5, 65535
|
|
msub w5, w5, w8, w11
|
|
and w5, w5, 65535
|
|
bne .L79
|
|
adrp x1, .LANCHOR16
|
|
ldrb w1, [x1, #:lo12:.LANCHOR16]
|
|
cbnz w1, .L79
|
|
adrp x1, .LANCHOR17
|
|
add x1, x1, :lo12:.LANCHOR17
|
|
ldrh w6, [x1, w6, sxtw 1]
|
|
.L79:
|
|
uxtw x8, w10
|
|
adrp x1, .LANCHOR18
|
|
add x1, x1, :lo12:.LANCHOR18
|
|
cmp w4, 1
|
|
ldr w1, [x1, x8, lsl 2]
|
|
madd w5, w5, w7, w1
|
|
add w5, w5, w6
|
|
str w5, [x2]
|
|
str w10, [x3]
|
|
bls .L81
|
|
ldr w1, [x0, 4]
|
|
ldr w0, [x0, 60]
|
|
add w1, w1, 1024
|
|
cmp w1, w0
|
|
cset w0, eq
|
|
ret
|
|
.L81:
|
|
mov w0, 0
|
|
ret
|
|
.size LogAddr2PhyAddr, .-LogAddr2PhyAddr
|
|
.section .text.FlashReadStatusEN,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadStatusEN
|
|
.type FlashReadStatusEN, %function
|
|
FlashReadStatusEN:
|
|
stp x29, x30, [sp, -32]!
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x3, .LANCHOR0
|
|
add x3, x3, :lo12:.LANCHOR0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
add x4, x3, x0
|
|
ldr x20, [x3, x0]
|
|
adrp x0, .LANCHOR7
|
|
ldr x0, [x0, #:lo12:.LANCHOR7]
|
|
ldrb w19, [x4, 8]
|
|
ldrb w0, [x0, 8]
|
|
cmp w0, 2
|
|
bne .L83
|
|
and w2, w2, 255
|
|
adrp x0, .LANCHOR8
|
|
cbnz w2, .L84
|
|
add x2, x0, :lo12:.LANCHOR8
|
|
ldrb w3, [x2, 13]
|
|
.L94:
|
|
add x2, x19, 8
|
|
add x0, x0, :lo12:.LANCHOR8
|
|
add x2, x20, x2, lsl 8
|
|
str w3, [x2, 8]
|
|
ldrb w4, [x0, 15]
|
|
cbz w4, .L88
|
|
add x3, x19, 8
|
|
mov w2, 0
|
|
add x3, x20, x3, lsl 8
|
|
.L87:
|
|
cmp w2, w4
|
|
bcc .L89
|
|
.L88:
|
|
add x19, x19, 8
|
|
mov x0, 80
|
|
lsl x19, x19, 8
|
|
bl udelay
|
|
ldr w0, [x20, x19]
|
|
ldp x19, x20, [sp, 16]
|
|
and w0, w0, 255
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L84:
|
|
add x2, x0, :lo12:.LANCHOR8
|
|
ldrb w3, [x2, 14]
|
|
b .L94
|
|
.L89:
|
|
lsl w0, w2, 3
|
|
add w2, w2, 1
|
|
lsr w0, w1, w0
|
|
and w0, w0, 255
|
|
str w0, [x3, 4]
|
|
b .L87
|
|
.L83:
|
|
add x0, x19, 8
|
|
mov w1, 112
|
|
add x0, x20, x0, lsl 8
|
|
str w1, [x0, 8]
|
|
b .L88
|
|
.size FlashReadStatusEN, .-FlashReadStatusEN
|
|
.section .text.FlashWaitReadyEN,"ax",@progbits
|
|
.align 2
|
|
.global FlashWaitReadyEN
|
|
.type FlashWaitReadyEN, %function
|
|
FlashWaitReadyEN:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 255
|
|
str x21, [sp, 32]
|
|
mov w20, w1
|
|
and w21, w2, 255
|
|
.L99:
|
|
mov w1, w20
|
|
mov w2, w21
|
|
mov w0, w19
|
|
bl FlashReadStatusEN
|
|
mov w1, w0
|
|
cmp w0, 255
|
|
beq .L99
|
|
tbz x1, 6, .L99
|
|
ldp x19, x20, [sp, 16]
|
|
ldr x21, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size FlashWaitReadyEN, .-FlashWaitReadyEN
|
|
.section .text.NandcReadDontCaseBusyEn,"ax",@progbits
|
|
.align 2
|
|
.global NandcReadDontCaseBusyEn
|
|
.type NandcReadDontCaseBusyEn, %function
|
|
NandcReadDontCaseBusyEn:
|
|
ret
|
|
.size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
|
|
.section .text.NandcGetChipIf,"ax",@progbits
|
|
.align 2
|
|
.global NandcGetChipIf
|
|
.type NandcGetChipIf, %function
|
|
NandcGetChipIf:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x2, x1, x0
|
|
ldr x0, [x1, x0]
|
|
ldrb w2, [x2, 8]
|
|
add x2, x2, 8
|
|
add x0, x0, x2, lsl 8
|
|
ret
|
|
.size NandcGetChipIf, .-NandcGetChipIf
|
|
.section .text.NandcSetDdrPara,"ax",@progbits
|
|
.align 2
|
|
.global NandcSetDdrPara
|
|
.type NandcSetDdrPara, %function
|
|
NandcSetDdrPara:
|
|
adrp x1, .LANCHOR19
|
|
and w0, w0, 255
|
|
lsl w2, w0, 8
|
|
ldr x1, [x1, #:lo12:.LANCHOR19]
|
|
orr w0, w2, w0, lsl 16
|
|
orr w0, w0, 1
|
|
str w0, [x1, 304]
|
|
ret
|
|
.size NandcSetDdrPara, .-NandcSetDdrPara
|
|
.section .text.NandcSetDdrDiv,"ax",@progbits
|
|
.align 2
|
|
.global NandcSetDdrDiv
|
|
.type NandcSetDdrDiv, %function
|
|
NandcSetDdrDiv:
|
|
adrp x1, .LANCHOR19
|
|
and w0, w0, 255
|
|
mov w2, 16640
|
|
orr w0, w0, w2
|
|
ldr x1, [x1, #:lo12:.LANCHOR19]
|
|
str w0, [x1, 344]
|
|
ret
|
|
.size NandcSetDdrDiv, .-NandcSetDdrDiv
|
|
.section .text.NandcSetDdrMode,"ax",@progbits
|
|
.align 2
|
|
.global NandcSetDdrMode
|
|
.type NandcSetDdrMode, %function
|
|
NandcSetDdrMode:
|
|
adrp x1, .LANCHOR19
|
|
cmp w0, 0
|
|
ldr x2, [x1, #:lo12:.LANCHOR19]
|
|
ldr w1, [x2]
|
|
and w3, w1, -8193
|
|
orr w1, w1, 253952
|
|
csel w1, w1, w3, ne
|
|
str w1, [x2]
|
|
ret
|
|
.size NandcSetDdrMode, .-NandcSetDdrMode
|
|
.section .text.NandcSetMode,"ax",@progbits
|
|
.align 2
|
|
.global NandcSetMode
|
|
.type NandcSetMode, %function
|
|
NandcSetMode:
|
|
adrp x1, .LANCHOR19
|
|
and w0, w0, 255
|
|
tst w0, 6
|
|
ldr x2, [x1, #:lo12:.LANCHOR19]
|
|
ldr w1, [x2]
|
|
beq .L111
|
|
orr w1, w1, 24576
|
|
tst x0, 4
|
|
and w1, w1, -32769
|
|
mov w0, 16641
|
|
orr w1, w1, 196608
|
|
str w0, [x2, 344]
|
|
mov w0, 6659
|
|
orr w3, w1, 32768
|
|
movk w0, 0x1a, lsl 16
|
|
str w0, [x2, 304]
|
|
csel w1, w3, w1, ne
|
|
mov w0, 38
|
|
str w0, [x2, 308]
|
|
mov w0, 39
|
|
str w0, [x2, 308]
|
|
.L113:
|
|
mov w0, 0
|
|
str w1, [x2]
|
|
ret
|
|
.L111:
|
|
and w1, w1, -8193
|
|
b .L113
|
|
.size NandcSetMode, .-NandcSetMode
|
|
.section .text.NandcFlashCs,"ax",@progbits
|
|
.align 2
|
|
.global NandcFlashCs
|
|
.type NandcFlashCs, %function
|
|
NandcFlashCs:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x3, x1, x0
|
|
ldr x2, [x1, x0]
|
|
mov w1, 1
|
|
ldrb w3, [x3, 8]
|
|
ldr w0, [x2]
|
|
lsl w1, w1, w3
|
|
bfi w0, w1, 0, 8
|
|
str w0, [x2]
|
|
ret
|
|
.size NandcFlashCs, .-NandcFlashCs
|
|
.section .text.NandcFlashDeCs,"ax",@progbits
|
|
.align 2
|
|
.global NandcFlashDeCs
|
|
.type NandcFlashDeCs, %function
|
|
NandcFlashDeCs:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
ldr x1, [x1, x0]
|
|
ldr w0, [x1]
|
|
and w0, w0, -256
|
|
and w0, w0, -131073
|
|
str w0, [x1]
|
|
ret
|
|
.size NandcFlashDeCs, .-NandcFlashDeCs
|
|
.section .text.HynixSetRRPara,"ax",@progbits
|
|
.align 2
|
|
.global HynixSetRRPara
|
|
.type HynixSetRRPara, %function
|
|
HynixSetRRPara:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w22, w0, 255
|
|
adrp x0, .LANCHOR7
|
|
stp x19, x20, [sp, 16]
|
|
stp x25, x26, [sp, 64]
|
|
mov x20, x2
|
|
ldr x0, [x0, #:lo12:.LANCHOR7]
|
|
and w26, w1, 255
|
|
stp x23, x24, [sp, 48]
|
|
and w21, w3, 255
|
|
adrp x19, .LANCHOR20
|
|
ldrb w0, [x0, 19]
|
|
cmp w0, 6
|
|
bne .L119
|
|
add x0, x19, :lo12:.LANCHOR20
|
|
ubfiz x19, x22, 6, 8
|
|
add x19, x19, 20
|
|
add x19, x19, x21, uxtw 2
|
|
.L126:
|
|
add x19, x0, x19
|
|
.L120:
|
|
sxtw x25, w22
|
|
adrp x0, .LANCHOR0
|
|
lsl x1, x25, 4
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
add x2, x0, x1
|
|
and x26, x26, 255
|
|
mov x24, 0
|
|
ldr x23, [x0, x1]
|
|
mov w0, w22
|
|
ldrb w5, [x2, 8]
|
|
bl NandcFlashCs
|
|
ubfiz x5, x5, 8, 8
|
|
add x23, x23, x5
|
|
mov w0, 54
|
|
str w0, [x23, 2056]
|
|
.L123:
|
|
cmp x24, x26
|
|
bne .L124
|
|
mov w0, 22
|
|
str w0, [x23, 2056]
|
|
mov w0, w22
|
|
bl NandcFlashDeCs
|
|
adrp x0, .LANCHOR21
|
|
add x0, x0, :lo12:.LANCHOR21
|
|
strb w21, [x0, x25]
|
|
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
|
|
.L119:
|
|
cmp w0, 7
|
|
bne .L121
|
|
add x0, x19, :lo12:.LANCHOR20
|
|
mov x1, 28
|
|
mov w19, 160
|
|
umaddl x1, w19, w22, x1
|
|
mov w19, 10
|
|
umaddl x19, w21, w19, x1
|
|
b .L126
|
|
.L121:
|
|
cmp w0, 8
|
|
bne .L122
|
|
add x19, x19, :lo12:.LANCHOR20
|
|
add x0, x19, 28
|
|
add w19, w21, w21, lsl 2
|
|
add x19, x0, x19, sxtw
|
|
b .L120
|
|
.L122:
|
|
add x0, x19, :lo12:.LANCHOR20
|
|
and x19, x21, 255
|
|
add x19, x19, 2
|
|
add x19, x19, x22, uxtw 3
|
|
add x19, x0, x19, lsl 3
|
|
add x19, x19, 4
|
|
b .L120
|
|
.L124:
|
|
ldrb w0, [x20, x24]
|
|
str w0, [x23, 2052]
|
|
mov x0, 200
|
|
bl udelay
|
|
ldrsb w0, [x19, x24]
|
|
add x24, x24, 1
|
|
str w0, [x23, 2048]
|
|
b .L123
|
|
.size HynixSetRRPara, .-HynixSetRRPara
|
|
.section .text.FlashSetReadRetryDefault,"ax",@progbits
|
|
.align 2
|
|
.global FlashSetReadRetryDefault
|
|
.type FlashSetReadRetryDefault, %function
|
|
FlashSetReadRetryDefault:
|
|
adrp x0, .LANCHOR7
|
|
ldr x0, [x0, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 19]
|
|
sub w0, w0, #1
|
|
and w0, w0, 255
|
|
cmp w0, 7
|
|
bhi .L134
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR20
|
|
add x20, x20, :lo12:.LANCHOR20
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR22
|
|
add x22, x20, 4
|
|
add x21, x21, :lo12:.LANCHOR22
|
|
mov x19, 0
|
|
.L130:
|
|
lsl x1, x19, 3
|
|
and w0, w19, 255
|
|
ldrb w1, [x1, x21]
|
|
cmp w1, 173
|
|
bne .L129
|
|
ldrb w1, [x20, 1]
|
|
mov w3, 0
|
|
mov x2, x22
|
|
bl HynixSetRRPara
|
|
.L129:
|
|
add x19, x19, 1
|
|
cmp x19, 4
|
|
bne .L130
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L134:
|
|
ret
|
|
.size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
|
|
.section .text.FlashWaitCmdDone,"ax",@progbits
|
|
.align 2
|
|
.global FlashWaitCmdDone
|
|
.type FlashWaitCmdDone, %function
|
|
FlashWaitCmdDone:
|
|
and x4, x0, 255
|
|
mov x0, 24
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x1, .LANCHOR23
|
|
add x1, x1, :lo12:.LANCHOR23
|
|
mul x0, x4, x0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
add x19, x1, x0
|
|
ldr x2, [x19, 8]
|
|
cbz x2, .L139
|
|
ldrb w20, [x1, x0]
|
|
mov w0, w20
|
|
bl NandcFlashCs
|
|
adrp x0, .LANCHOR18
|
|
add x0, x0, :lo12:.LANCHOR18
|
|
ldr w1, [x19, 4]
|
|
ldr w0, [x0, x4, lsl 2]
|
|
cmp w0, 0
|
|
mov w0, w20
|
|
cset w2, ne
|
|
bl FlashWaitReadyEN
|
|
mov w2, w0
|
|
mov w0, w20
|
|
bl NandcFlashDeCs
|
|
sbfx x0, x2, 0, 1
|
|
ldr x1, [x19, 8]
|
|
str w0, [x1]
|
|
ldr x1, [x19, 16]
|
|
str xzr, [x19, 8]
|
|
cbz x1, .L139
|
|
str w0, [x1]
|
|
str xzr, [x19, 16]
|
|
.L139:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FlashWaitCmdDone, .-FlashWaitCmdDone
|
|
.section .text.NandcDelayns,"ax",@progbits
|
|
.align 2
|
|
.global NandcDelayns
|
|
.type NandcDelayns, %function
|
|
NandcDelayns:
|
|
stp x29, x30, [sp, -16]!
|
|
uxtw x0, w0
|
|
add x29, sp, 0
|
|
bl udelay
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size NandcDelayns, .-NandcDelayns
|
|
.section .text.NandcWaitFlashReadyNoDelay,"ax",@progbits
|
|
.align 2
|
|
.global NandcWaitFlashReadyNoDelay
|
|
.type NandcWaitFlashReadyNoDelay, %function
|
|
NandcWaitFlashReadyNoDelay:
|
|
stp x29, x30, [sp, -48]!
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, 34464
|
|
ldr x20, [x1, x0]
|
|
movk w19, 0x1, lsl 16
|
|
.L149:
|
|
ldr w0, [x20]
|
|
str w0, [x29, 40]
|
|
ldr w0, [x29, 40]
|
|
tbnz x0, 9, .L150
|
|
mov x0, 10
|
|
bl udelay
|
|
subs w19, w19, #1
|
|
bne .L149
|
|
mov w0, -1
|
|
.L147:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L150:
|
|
mov w0, 0
|
|
b .L147
|
|
.size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay
|
|
.section .text.NandcWaitFlashReady,"ax",@progbits
|
|
.align 2
|
|
.global NandcWaitFlashReady
|
|
.type NandcWaitFlashReady, %function
|
|
NandcWaitFlashReady:
|
|
stp x29, x30, [sp, -48]!
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, 34464
|
|
movk w19, 0x1, lsl 16
|
|
ldr x20, [x1, x0]
|
|
mov x0, 130
|
|
bl udelay
|
|
.L155:
|
|
ldr w0, [x20]
|
|
str w0, [x29, 40]
|
|
ldr w0, [x29, 40]
|
|
tbnz x0, 9, .L156
|
|
mov x0, 10
|
|
bl udelay
|
|
subs w19, w19, #1
|
|
bne .L155
|
|
mov w0, -1
|
|
.L153:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L156:
|
|
mov w0, 0
|
|
b .L153
|
|
.size NandcWaitFlashReady, .-NandcWaitFlashReady
|
|
.section .text.FlashReset,"ax",@progbits
|
|
.align 2
|
|
.global FlashReset
|
|
.type FlashReset, %function
|
|
FlashReset:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
and w19, w0, 255
|
|
sbfiz x1, x19, 4, 32
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
add x2, x0, x1
|
|
ldr x5, [x0, x1]
|
|
mov w0, w19
|
|
ldrb w4, [x2, 8]
|
|
bl NandcFlashCs
|
|
add x4, x4, 8
|
|
add x4, x5, x4, lsl 8
|
|
mov w0, 255
|
|
str w0, [x4, 8]
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w0, w19
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
b NandcFlashDeCs
|
|
.size FlashReset, .-FlashReset
|
|
.section .text.flash_enter_slc_mode,"ax",@progbits
|
|
.align 2
|
|
.global flash_enter_slc_mode
|
|
.type flash_enter_slc_mode, %function
|
|
flash_enter_slc_mode:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w21, w0, 255
|
|
adrp x0, .LANCHOR16
|
|
stp x19, x20, [sp, 16]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L161
|
|
mov w0, w21
|
|
bl NandcFlashCs
|
|
sxtw x0, w21
|
|
adrp x1, .LANCHOR0
|
|
lsl x2, x0, 4
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x3, x1, x2
|
|
lsl x0, x0, 3
|
|
ldr x22, [x1, x2]
|
|
adrp x1, .LANCHOR22
|
|
add x1, x1, :lo12:.LANCHOR22
|
|
ldrb w19, [x3, 8]
|
|
ldrb w0, [x1, x0]
|
|
cmp w0, 44
|
|
bne .L163
|
|
ubfiz x20, x19, 8, 8
|
|
mov w0, 239
|
|
add x20, x22, x20
|
|
str w0, [x20, 2056]
|
|
mov w0, 145
|
|
str w0, [x20, 2052]
|
|
mov x0, 50
|
|
bl udelay
|
|
str wzr, [x20, 2048]
|
|
mov w0, 1
|
|
str w0, [x20, 2048]
|
|
str wzr, [x20, 2048]
|
|
mov x0, 100
|
|
str wzr, [x20, 2048]
|
|
bl udelay
|
|
.L163:
|
|
add x19, x19, 8
|
|
mov w0, w21
|
|
add x19, x22, x19, lsl 8
|
|
bl NandcWaitFlashReadyNoDelay
|
|
mov w0, 218
|
|
str w0, [x19, 8]
|
|
mov w0, w21
|
|
bl NandcWaitFlashReady
|
|
adrp x0, .LANCHOR24
|
|
mov w1, 2
|
|
strb w1, [x0, #:lo12:.LANCHOR24]
|
|
.L161:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size flash_enter_slc_mode, .-flash_enter_slc_mode
|
|
.section .text.flash_exit_slc_mode,"ax",@progbits
|
|
.align 2
|
|
.global flash_exit_slc_mode
|
|
.type flash_exit_slc_mode, %function
|
|
flash_exit_slc_mode:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w21, w0, 255
|
|
adrp x0, .LANCHOR16
|
|
stp x19, x20, [sp, 16]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L168
|
|
mov w0, w21
|
|
bl NandcFlashCs
|
|
sxtw x0, w21
|
|
adrp x1, .LANCHOR0
|
|
lsl x2, x0, 4
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x3, x1, x2
|
|
lsl x0, x0, 3
|
|
ldr x22, [x1, x2]
|
|
adrp x1, .LANCHOR22
|
|
add x1, x1, :lo12:.LANCHOR22
|
|
ldrb w19, [x3, 8]
|
|
ldrb w0, [x1, x0]
|
|
cmp w0, 44
|
|
bne .L170
|
|
ubfiz x20, x19, 8, 8
|
|
mov w0, 239
|
|
add x20, x22, x20
|
|
str w0, [x20, 2056]
|
|
mov w0, 145
|
|
str w0, [x20, 2052]
|
|
mov x0, 50
|
|
bl udelay
|
|
mov w0, 2
|
|
str w0, [x20, 2048]
|
|
mov w0, 1
|
|
str w0, [x20, 2048]
|
|
str wzr, [x20, 2048]
|
|
mov x0, 100
|
|
str wzr, [x20, 2048]
|
|
bl udelay
|
|
.L170:
|
|
add x19, x19, 8
|
|
mov w0, w21
|
|
add x19, x22, x19, lsl 8
|
|
bl NandcWaitFlashReadyNoDelay
|
|
mov w0, 223
|
|
str w0, [x19, 8]
|
|
mov w0, w21
|
|
bl NandcWaitFlashReady
|
|
adrp x0, .LANCHOR24
|
|
strb wzr, [x0, #:lo12:.LANCHOR24]
|
|
.L168:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size flash_exit_slc_mode, .-flash_exit_slc_mode
|
|
.section .text.FlashEraseBlock,"ax",@progbits
|
|
.align 2
|
|
.global FlashEraseBlock
|
|
.type FlashEraseBlock, %function
|
|
FlashEraseBlock:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 255
|
|
mov w20, w1
|
|
str x21, [sp, 32]
|
|
mov w0, w19
|
|
mov w21, w2
|
|
bl NandcWaitFlashReady
|
|
mov w0, w19
|
|
bl NandcFlashCs
|
|
mov w2, w21
|
|
mov w1, w20
|
|
mov w0, w19
|
|
bl FlashEraseCmd
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w1, w20
|
|
mov w0, w19
|
|
bl FlashReadStatus
|
|
mov w2, w0
|
|
mov w0, w19
|
|
bl NandcFlashDeCs
|
|
ldr x21, [sp, 32]
|
|
and w0, w2, 1
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size FlashEraseBlock, .-FlashEraseBlock
|
|
.section .text.FlashSetInterfaceMode,"ax",@progbits
|
|
.align 2
|
|
.global FlashSetInterfaceMode
|
|
.type FlashSetInterfaceMode, %function
|
|
FlashSetInterfaceMode:
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x1, .LANCHOR25
|
|
adrp x2, .LANCHOR0
|
|
add x2, x2, :lo12:.LANCHOR0
|
|
add x29, sp, 0
|
|
ldrb w1, [x1, #:lo12:.LANCHOR25]
|
|
adrp x7, .LANCHOR22
|
|
add x2, x2, 8
|
|
add x7, x7, :lo12:.LANCHOR22
|
|
and w12, w1, 4
|
|
and w6, w1, 1
|
|
mov x5, 0
|
|
mov w13, 69
|
|
mov w8, 239
|
|
mov w10, 128
|
|
mov w11, 1
|
|
mov w14, 35
|
|
mov w15, 32
|
|
mov w16, 5
|
|
mov w17, 44
|
|
.L187:
|
|
ldrb w3, [x5, x7]
|
|
ldrb w4, [x2]
|
|
cmp w3, 152
|
|
ccmp w3, w13, 4, ne
|
|
beq .L178
|
|
cmp w3, 173
|
|
ccmp w3, w17, 4, ne
|
|
bne .L179
|
|
.L178:
|
|
cmp w0, 1
|
|
ldr x1, [x2, -8]
|
|
bne .L180
|
|
cbz w6, .L179
|
|
ubfiz x4, x4, 8, 8
|
|
cmp w3, 173
|
|
add x1, x1, x4
|
|
str w8, [x1, 2056]
|
|
bne .L181
|
|
str w0, [x1, 2052]
|
|
.L199:
|
|
str wzr, [x1, 2048]
|
|
b .L185
|
|
.L181:
|
|
cmp w3, 44
|
|
bne .L183
|
|
str w0, [x1, 2052]
|
|
str w16, [x1, 2048]
|
|
.L185:
|
|
str wzr, [x1, 2048]
|
|
str wzr, [x1, 2048]
|
|
str wzr, [x1, 2048]
|
|
.L179:
|
|
add x5, x5, 8
|
|
add x2, x2, 16
|
|
cmp x5, 32
|
|
bne .L187
|
|
mov w0, 0
|
|
bl NandcWaitFlashReady
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L183:
|
|
str w10, [x1, 2052]
|
|
str w0, [x1, 2048]
|
|
b .L185
|
|
.L180:
|
|
cbz w12, .L179
|
|
ubfiz x4, x4, 8, 8
|
|
cmp w3, 173
|
|
add x1, x1, x4
|
|
str w8, [x1, 2056]
|
|
bne .L184
|
|
str w11, [x1, 2052]
|
|
str w15, [x1, 2048]
|
|
b .L185
|
|
.L184:
|
|
cmp w3, 44
|
|
bne .L186
|
|
str w11, [x1, 2052]
|
|
str w14, [x1, 2048]
|
|
b .L185
|
|
.L186:
|
|
str w10, [x1, 2052]
|
|
b .L199
|
|
.size FlashSetInterfaceMode, .-FlashSetInterfaceMode
|
|
.section .text.SandiskSetRRPara,"ax",@progbits
|
|
.align 2
|
|
.global SandiskSetRRPara
|
|
.type SandiskSetRRPara, %function
|
|
SandiskSetRRPara:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x20, x0
|
|
mov w0, 239
|
|
and w19, w1, 255
|
|
str w0, [x20, 8]
|
|
mov w0, 17
|
|
str w0, [x20, 4]
|
|
mov x0, 200
|
|
bl udelay
|
|
adrp x0, .LANCHOR13
|
|
add w1, w19, 1
|
|
adrp x2, .LANCHOR9
|
|
add x2, x2, :lo12:.LANCHOR9
|
|
ldrb w3, [x0, #:lo12:.LANCHOR13]
|
|
adrp x0, .LANCHOR11
|
|
ldrb w4, [x0, #:lo12:.LANCHOR11]
|
|
mov w0, 5
|
|
umull x1, w1, w0
|
|
adrp x0, .LANCHOR10
|
|
add x0, x0, :lo12:.LANCHOR10
|
|
add x2, x2, x1
|
|
add x1, x0, x1
|
|
mov x0, 0
|
|
.L201:
|
|
cmp w3, w0
|
|
bhi .L204
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 32
|
|
b NandcWaitFlashReady
|
|
.L204:
|
|
cmp w4, 67
|
|
bne .L202
|
|
ldrsb w5, [x1, x0]
|
|
.L206:
|
|
add x0, x0, 1
|
|
str w5, [x20]
|
|
b .L201
|
|
.L202:
|
|
ldrsb w5, [x2, x0]
|
|
b .L206
|
|
.size SandiskSetRRPara, .-SandiskSetRRPara
|
|
.section .text.micron_auto_read_calibration_config,"ax",@progbits
|
|
.align 2
|
|
.global micron_auto_read_calibration_config
|
|
.type micron_auto_read_calibration_config, %function
|
|
micron_auto_read_calibration_config:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 255
|
|
mov w20, w1
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
sbfiz x0, x19, 4, 32
|
|
adrp x2, .LANCHOR0
|
|
add x2, x2, :lo12:.LANCHOR0
|
|
add x1, x2, x0
|
|
ldr x0, [x2, x0]
|
|
ldrb w19, [x1, 8]
|
|
add x19, x0, x19, lsl 8
|
|
mov w0, 239
|
|
str w0, [x19, 2056]
|
|
mov w0, 150
|
|
str w0, [x19, 2052]
|
|
mov x0, 200
|
|
bl udelay
|
|
str w20, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config
|
|
.section .text.FlashEraseSLc2KBlocks,"ax",@progbits
|
|
.align 2
|
|
.global FlashEraseSLc2KBlocks
|
|
.type FlashEraseSLc2KBlocks, %function
|
|
FlashEraseSLc2KBlocks:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, 56
|
|
stp x23, x24, [sp, 48]
|
|
and w21, w1, 255
|
|
umaddl x22, w1, w22, x0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x23, .LANCHOR26
|
|
mov x20, x0
|
|
add x23, x23, :lo12:.LANCHOR26
|
|
adrp x24, .LANCHOR27
|
|
.L210:
|
|
cmp x20, x22
|
|
bne .L215
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.L215:
|
|
mov w1, 0
|
|
mov w4, w21
|
|
add x3, x29, 76
|
|
add x2, x29, 72
|
|
mov x0, x20
|
|
bl LogAddr2PhyAddr
|
|
ldrb w1, [x23]
|
|
ldr w0, [x29, 76]
|
|
cmp w1, w0
|
|
bhi .L211
|
|
mov w0, -1
|
|
str w0, [x20]
|
|
.L212:
|
|
sub w21, w21, #1
|
|
add x20, x20, 56
|
|
and w21, w21, 255
|
|
b .L210
|
|
.L211:
|
|
uxtw x0, w0
|
|
add x1, x24, :lo12:.LANCHOR27
|
|
ldrb w19, [x1, x0]
|
|
mov x1, 24
|
|
mul x0, x0, x1
|
|
adrp x1, .LANCHOR23
|
|
add x1, x1, :lo12:.LANCHOR23
|
|
strb w19, [x1, x0]
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w0, w19
|
|
bl NandcFlashCs
|
|
ldr w1, [x29, 72]
|
|
mov w2, 0
|
|
mov w0, w19
|
|
bl FlashEraseCmd
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
ldr w1, [x29, 72]
|
|
mov w0, w19
|
|
bl FlashReadStatus
|
|
sbfx x0, x0, 0, 1
|
|
str w0, [x20]
|
|
adrp x0, .LANCHOR4
|
|
ldr w1, [x29, 72]
|
|
mov w2, 0
|
|
ldr w0, [x0, #:lo12:.LANCHOR4]
|
|
add w1, w1, w0
|
|
mov w0, w19
|
|
bl FlashEraseCmd
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
ldr w1, [x29, 72]
|
|
mov w0, w19
|
|
bl FlashReadStatus
|
|
tbz x0, 0, .L213
|
|
mov w0, -1
|
|
str w0, [x20]
|
|
.L213:
|
|
ldr w0, [x20]
|
|
cmn w0, #1
|
|
bne .L214
|
|
ldr w1, [x29, 72]
|
|
adrp x0, .LC1
|
|
add x0, x0, :lo12:.LC1
|
|
bl printf
|
|
.L214:
|
|
mov w0, w19
|
|
bl NandcFlashDeCs
|
|
b .L212
|
|
.size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks
|
|
.section .text.FlashEraseBlocks,"ax",@progbits
|
|
.align 2
|
|
.global FlashEraseBlocks
|
|
.type FlashEraseBlocks, %function
|
|
FlashEraseBlocks:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
mov w24, w1
|
|
adrp x1, .LANCHOR2
|
|
stp x21, x22, [sp, 32]
|
|
stp x19, x20, [sp, 16]
|
|
mov w22, w2
|
|
ldrb w1, [x1, #:lo12:.LANCHOR2]
|
|
stp x25, x26, [sp, 64]
|
|
cbnz w1, .L221
|
|
adrp x25, .LANCHOR23
|
|
mov x23, x0
|
|
add x26, x25, :lo12:.LANCHOR23
|
|
mov w19, 0
|
|
.L222:
|
|
cmp w19, w22
|
|
adrp x13, .LANCHOR26
|
|
bcc .L231
|
|
adrp x20, .LANCHOR16
|
|
adrp x21, .LANCHOR23
|
|
add x22, x13, :lo12:.LANCHOR26
|
|
add x20, x20, :lo12:.LANCHOR16
|
|
add x21, x21, :lo12:.LANCHOR23
|
|
mov x19, 0
|
|
.L232:
|
|
ldrb w0, [x22]
|
|
cmp w0, w19
|
|
bhi .L234
|
|
mov w0, 0
|
|
b .L220
|
|
.L221:
|
|
mov w1, w2
|
|
bl FlashEraseSLc2KBlocks
|
|
.L220:
|
|
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
|
|
.L231:
|
|
mov w12, 56
|
|
mov w1, 0
|
|
sub w4, w22, w19
|
|
add x3, x29, 92
|
|
umull x12, w19, w12
|
|
add x2, x29, 88
|
|
add x20, x23, x12
|
|
mov x0, x20
|
|
bl LogAddr2PhyAddr
|
|
mov w21, w0
|
|
ldrb w1, [x13, #:lo12:.LANCHOR26]
|
|
ldr w0, [x29, 92]
|
|
cmp w1, w0
|
|
bhi .L224
|
|
mov w0, -1
|
|
str w0, [x23, x12]
|
|
.L225:
|
|
add w19, w19, 1
|
|
b .L222
|
|
.L224:
|
|
adrp x1, .LANCHOR28
|
|
add x2, x25, :lo12:.LANCHOR23
|
|
mov x3, 24
|
|
ldrb w1, [x1, #:lo12:.LANCHOR28]
|
|
cmp w1, 0
|
|
uxtw x1, w0
|
|
csel w21, w21, wzr, ne
|
|
madd x1, x1, x3, x2
|
|
ldr x1, [x1, 8]
|
|
cbz x1, .L227
|
|
bl FlashWaitCmdDone
|
|
.L227:
|
|
ldp w2, w1, [x29, 88]
|
|
mov x0, 24
|
|
madd x0, x1, x0, x26
|
|
str w2, [x0, 4]
|
|
stp x20, xzr, [x0, 8]
|
|
cbz w21, .L228
|
|
add w2, w19, 1
|
|
mov w3, 56
|
|
umaddl x2, w2, w3, x23
|
|
str x2, [x0, 16]
|
|
.L228:
|
|
adrp x0, .LANCHOR27
|
|
add x0, x0, :lo12:.LANCHOR27
|
|
ldrb w20, [x0, x1]
|
|
mov x0, 24
|
|
mul x1, x1, x0
|
|
mov w0, w20
|
|
strb w20, [x26, x1]
|
|
bl NandcFlashCs
|
|
cmp w24, 1
|
|
bne .L229
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L229
|
|
mov w0, w20
|
|
bl flash_enter_slc_mode
|
|
.L230:
|
|
ldr w1, [x29, 92]
|
|
adrp x0, .LANCHOR18
|
|
add x0, x0, :lo12:.LANCHOR18
|
|
add w19, w19, w21
|
|
ldr w0, [x0, x1, lsl 2]
|
|
ldr w1, [x29, 88]
|
|
cmp w0, 0
|
|
mov w0, w20
|
|
cset w2, ne
|
|
bl FlashWaitReadyEN
|
|
ldr w1, [x29, 88]
|
|
mov w2, w21
|
|
mov w0, w20
|
|
bl FlashEraseCmd
|
|
mov w0, w20
|
|
bl NandcFlashDeCs
|
|
b .L225
|
|
.L229:
|
|
mov w0, w20
|
|
bl flash_exit_slc_mode
|
|
b .L230
|
|
.L234:
|
|
mov w0, w19
|
|
bl FlashWaitCmdDone
|
|
cmp w24, 1
|
|
bne .L233
|
|
ldrb w0, [x20]
|
|
cbz w0, .L233
|
|
mov x0, 24
|
|
mul x0, x19, x0
|
|
ldrb w0, [x0, x21]
|
|
bl flash_exit_slc_mode
|
|
.L233:
|
|
add x19, x19, 1
|
|
b .L232
|
|
.size FlashEraseBlocks, .-FlashEraseBlocks
|
|
.section .text.FlashReadDpCmd,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadDpCmd
|
|
.type FlashReadDpCmd, %function
|
|
FlashReadDpCmd:
|
|
stp x29, x30, [sp, -64]!
|
|
adrp x7, .LANCHOR7
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w22, w0, 255
|
|
mov w21, w1
|
|
adrp x0, .LANCHOR0
|
|
sbfiz x1, x22, 4, 32
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
add x3, x0, x1
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
lsr w20, w2, 16
|
|
ldr x4, [x0, x1]
|
|
and w24, w2, 255
|
|
ldrb w19, [x3, 8]
|
|
adrp x3, .LANCHOR8
|
|
add x1, x3, :lo12:.LANCHOR8
|
|
lsr w23, w2, 8
|
|
ldr x2, [x7, #:lo12:.LANCHOR7]
|
|
and w6, w21, 255
|
|
lsr w5, w21, 8
|
|
ldrb w1, [x1, 16]
|
|
ldrb w2, [x2, 7]
|
|
cmp w1, 1
|
|
lsr w1, w21, 16
|
|
bne .L249
|
|
cmp w2, 1
|
|
bne .L250
|
|
sxtw x0, w19
|
|
mov w2, 38
|
|
add x0, x0, 8
|
|
add x0, x4, x0, lsl 8
|
|
str w2, [x0, 8]
|
|
.L250:
|
|
add x0, x3, :lo12:.LANCHOR8
|
|
add x19, x4, x19, lsl 8
|
|
ldrb w2, [x0, 8]
|
|
str w2, [x19, 2056]
|
|
str wzr, [x19, 2052]
|
|
str wzr, [x19, 2052]
|
|
str w6, [x19, 2052]
|
|
str w5, [x19, 2052]
|
|
ldrb w0, [x0, 9]
|
|
str w1, [x19, 2052]
|
|
str w0, [x19, 2056]
|
|
mov w0, w22
|
|
bl NandcWaitFlashReady
|
|
str wzr, [x19, 2056]
|
|
str wzr, [x19, 2052]
|
|
str wzr, [x19, 2052]
|
|
.L254:
|
|
str w24, [x19, 2052]
|
|
mov w0, 48
|
|
str w23, [x19, 2052]
|
|
mov w1, w21
|
|
str w20, [x19, 2052]
|
|
str w0, [x19, 2056]
|
|
mov w0, w22
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
b FlashSetRandomizer
|
|
.L249:
|
|
cmp w2, 1
|
|
bne .L252
|
|
sxtw x0, w19
|
|
mov w2, 38
|
|
add x0, x0, 8
|
|
add x0, x4, x0, lsl 8
|
|
str w2, [x0, 8]
|
|
.L252:
|
|
add x0, x3, :lo12:.LANCHOR8
|
|
add x19, x4, x19, lsl 8
|
|
ldrb w2, [x0, 8]
|
|
str w2, [x19, 2056]
|
|
str w6, [x19, 2052]
|
|
str w5, [x19, 2052]
|
|
ldrb w0, [x0, 9]
|
|
str w1, [x19, 2052]
|
|
str w0, [x19, 2056]
|
|
b .L254
|
|
.size FlashReadDpCmd, .-FlashReadDpCmd
|
|
.section .text.ftl_flash_de_init,"ax",@progbits
|
|
.align 2
|
|
.global ftl_flash_de_init
|
|
.type ftl_flash_de_init, %function
|
|
ftl_flash_de_init:
|
|
stp x29, x30, [sp, -32]!
|
|
mov w0, 0
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
bl NandcWaitFlashReady
|
|
bl FlashSetReadRetryDefault
|
|
adrp x0, .LANCHOR29
|
|
ldr w0, [x0, #:lo12:.LANCHOR29]
|
|
cbz w0, .L256
|
|
mov w0, 0
|
|
bl flash_enter_slc_mode
|
|
.L257:
|
|
adrp x19, .LANCHOR30
|
|
ldrb w0, [x19, #:lo12:.LANCHOR30]
|
|
cbz w0, .L258
|
|
adrp x0, .LANCHOR25
|
|
ldrb w0, [x0, #:lo12:.LANCHOR25]
|
|
tbz x0, 0, .L258
|
|
mov w0, 1
|
|
bl FlashSetInterfaceMode
|
|
mov w0, 1
|
|
bl NandcSetMode
|
|
strb wzr, [x19, #:lo12:.LANCHOR30]
|
|
.L258:
|
|
adrp x0, .LANCHOR0
|
|
ldr x0, [x0, #:lo12:.LANCHOR0]
|
|
str wzr, [x0, 336]
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L256:
|
|
mov w0, 0
|
|
bl flash_exit_slc_mode
|
|
b .L257
|
|
.size ftl_flash_de_init, .-ftl_flash_de_init
|
|
.section .text.NandcRandmzSel,"ax",@progbits
|
|
.align 2
|
|
.global NandcRandmzSel
|
|
.type NandcRandmzSel, %function
|
|
NandcRandmzSel:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x2, .LANCHOR0
|
|
add x2, x2, :lo12:.LANCHOR0
|
|
ldr x0, [x2, x0]
|
|
str w1, [x0, 336]
|
|
ret
|
|
.size NandcRandmzSel, .-NandcRandmzSel
|
|
.section .text.NandcTimeCfg,"ax",@progbits
|
|
.align 2
|
|
.global NandcTimeCfg
|
|
.type NandcTimeCfg, %function
|
|
NandcTimeCfg:
|
|
cmp w0, 35
|
|
adrp x1, .LANCHOR19
|
|
bhi .L268
|
|
ldr x0, [x1, #:lo12:.LANCHOR19]
|
|
mov w1, 4193
|
|
.L271:
|
|
str w1, [x0, 4]
|
|
ret
|
|
.L268:
|
|
cmp w0, 99
|
|
ldr x0, [x1, #:lo12:.LANCHOR19]
|
|
bls .L270
|
|
mov w1, 8322
|
|
b .L271
|
|
.L270:
|
|
mov w1, 4225
|
|
b .L271
|
|
.size NandcTimeCfg, .-NandcTimeCfg
|
|
.section .text.FlashTimingCfg,"ax",@progbits
|
|
.align 2
|
|
.global FlashTimingCfg
|
|
.type FlashTimingCfg, %function
|
|
FlashTimingCfg:
|
|
adrp x0, .LANCHOR31+21
|
|
ldrb w0, [x0, #:lo12:.LANCHOR31+21]
|
|
b NandcTimeCfg
|
|
.size FlashTimingCfg, .-FlashTimingCfg
|
|
.section .text.NandcBchSel,"ax",@progbits
|
|
.align 2
|
|
.global NandcBchSel
|
|
.type NandcBchSel, %function
|
|
NandcBchSel:
|
|
adrp x1, .LANCHOR19
|
|
and w0, w0, 255
|
|
cmp w0, 16
|
|
ldr x2, [x1, #:lo12:.LANCHOR19]
|
|
mov w1, 1
|
|
str w1, [x2, 8]
|
|
adrp x1, .LANCHOR32
|
|
str w0, [x1, #:lo12:.LANCHOR32]
|
|
mov w1, 4096
|
|
bne .L274
|
|
.L277:
|
|
and w1, w1, -17
|
|
.L275:
|
|
orr w1, w1, 1
|
|
str w1, [x2, 12]
|
|
ret
|
|
.L274:
|
|
cmp w0, 24
|
|
bne .L276
|
|
orr w1, w1, 16
|
|
b .L275
|
|
.L276:
|
|
orr w1, w1, 262144
|
|
cmp w0, 40
|
|
orr w1, w1, 16
|
|
bne .L275
|
|
b .L277
|
|
.size NandcBchSel, .-NandcBchSel
|
|
.section .text.FlashBchSel,"ax",@progbits
|
|
.align 2
|
|
.global FlashBchSel
|
|
.type FlashBchSel, %function
|
|
FlashBchSel:
|
|
adrp x1, .LANCHOR33
|
|
and w0, w0, 255
|
|
strb w0, [x1, #:lo12:.LANCHOR33]
|
|
b NandcBchSel
|
|
.size FlashBchSel, .-FlashBchSel
|
|
.section .text.ftl_nandc_get_irq_status,"ax",@progbits
|
|
.align 2
|
|
.global ftl_nandc_get_irq_status
|
|
.type ftl_nandc_get_irq_status, %function
|
|
ftl_nandc_get_irq_status:
|
|
ldr w0, [x0, 372]
|
|
ret
|
|
.size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status
|
|
.section .text.rk_nandc_flash_ready,"ax",@progbits
|
|
.align 2
|
|
.global rk_nandc_flash_ready
|
|
.type rk_nandc_flash_ready, %function
|
|
rk_nandc_flash_ready:
|
|
ret
|
|
.size rk_nandc_flash_ready, .-rk_nandc_flash_ready
|
|
.section .text.NandcIqrWaitFlashReady,"ax",@progbits
|
|
.align 2
|
|
.global NandcIqrWaitFlashReady
|
|
.type NandcIqrWaitFlashReady, %function
|
|
NandcIqrWaitFlashReady:
|
|
ret
|
|
.size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
|
|
.section .text.rk_nandc_flash_xfer_completed,"ax",@progbits
|
|
.align 2
|
|
.global rk_nandc_flash_xfer_completed
|
|
.type rk_nandc_flash_xfer_completed, %function
|
|
rk_nandc_flash_xfer_completed:
|
|
ret
|
|
.size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
|
|
.section .text.NandcSendDumpDataStart,"ax",@progbits
|
|
.align 2
|
|
.global NandcSendDumpDataStart
|
|
.type NandcSendDumpDataStart, %function
|
|
NandcSendDumpDataStart:
|
|
sub sp, sp, #16
|
|
ldr w2, [x0, 16]
|
|
mov w1, 1066
|
|
movk w1, 0x2020, lsl 16
|
|
str w2, [sp, 8]
|
|
ldr w2, [sp, 8]
|
|
and w2, w2, -5
|
|
str w2, [sp, 8]
|
|
ldr w2, [sp, 8]
|
|
str w2, [x0, 16]
|
|
str w1, [x0, 8]
|
|
orr w1, w1, 4
|
|
str w1, [x0, 8]
|
|
add sp, sp, 16
|
|
ret
|
|
.size NandcSendDumpDataStart, .-NandcSendDumpDataStart
|
|
.section .text.NandcSendDumpDataDone,"ax",@progbits
|
|
.align 2
|
|
.global NandcSendDumpDataDone
|
|
.type NandcSendDumpDataDone, %function
|
|
NandcSendDumpDataDone:
|
|
sub sp, sp, #16
|
|
.L289:
|
|
ldr w1, [x0, 8]
|
|
str w1, [sp, 8]
|
|
ldr w1, [sp, 8]
|
|
tbz x1, 20, .L289
|
|
add sp, sp, 16
|
|
ret
|
|
.size NandcSendDumpDataDone, .-NandcSendDumpDataDone
|
|
.section .text.NandcXferStart,"ax",@progbits
|
|
.align 2
|
|
.global NandcXferStart
|
|
.type NandcXferStart, %function
|
|
NandcXferStart:
|
|
stp x29, x30, [sp, -96]!
|
|
ubfiz x0, x0, 4, 8
|
|
ubfx x3, x3, 1, 7
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
and w24, w1, 255
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
add x6, x1, x0
|
|
stp x21, x22, [sp, 32]
|
|
stp x19, x20, [sp, 16]
|
|
ubfiz w19, w24, 1, 1
|
|
ldr x21, [x1, x0]
|
|
mov w1, 16
|
|
ldrb w0, [x6, 8]
|
|
orr w19, w19, 8
|
|
str x25, [sp, 64]
|
|
ldr w22, [x21, 12]
|
|
bfi w22, w1, 8, 8
|
|
and w22, w22, -9
|
|
bfi w22, w0, 5, 3
|
|
mov w0, 1
|
|
bfi w19, w0, 5, 2
|
|
adrp x0, .LANCHOR34
|
|
orr w19, w19, 536870912
|
|
orr w19, w19, 1024
|
|
ldr w0, [x0, #:lo12:.LANCHOR34]
|
|
bfi w19, w3, 4, 1
|
|
cmp w0, 3
|
|
bls .L294
|
|
ldr w0, [x21, 16]
|
|
cmp x5, 0
|
|
str w0, [x29, 88]
|
|
ccmp x4, 0, 0, eq
|
|
ldr w0, [x29, 88]
|
|
and w0, w0, -5
|
|
str w0, [x29, 88]
|
|
beq .L295
|
|
and w2, w2, 255
|
|
adrp x20, .LANCHOR35
|
|
cbnz w24, .L296
|
|
.L304:
|
|
ldr x0, [x20, #:lo12:.LANCHOR35]
|
|
add w2, w2, 1
|
|
cmp x4, 0
|
|
asr w2, w2, 1
|
|
csel x0, x4, x0, ne
|
|
add x20, x20, :lo12:.LANCHOR35
|
|
bfi w19, w2, 22, 6
|
|
and x2, x0, 4294967295
|
|
add x2, x2, 63
|
|
mov x25, x4
|
|
and x2, x2, -64
|
|
ldr x1, [x20, 8]
|
|
ubfx x23, x19, 22, 5
|
|
stp x0, x1, [x20, 16]
|
|
stp w0, w1, [x20, 32]
|
|
ubfiz x1, x23, 10, 5
|
|
add x1, x2, x1
|
|
and x0, x0, 4294967232
|
|
bl flush_dcache_range
|
|
ubfiz x23, x23, 7, 5
|
|
ldr w0, [x20, 36]
|
|
add x1, x0, 63
|
|
and x0, x0, 4294967232
|
|
and x1, x1, -64
|
|
add x1, x1, x23
|
|
bl flush_dcache_range
|
|
mov w0, 1
|
|
str w0, [x20, 40]
|
|
ldr w0, [x20, 32]
|
|
mov w1, 16
|
|
str w0, [x21, 20]
|
|
tst x25, 3
|
|
ldr w0, [x20, 36]
|
|
str w0, [x21, 24]
|
|
str wzr, [x29, 88]
|
|
ldr w0, [x29, 88]
|
|
bfi w0, w1, 9, 5
|
|
str w0, [x29, 88]
|
|
ldr w0, [x29, 88]
|
|
orr w0, w0, 448
|
|
str w0, [x29, 88]
|
|
bne .L305
|
|
ldr w0, [x29, 88]
|
|
mov w1, 2
|
|
bfi w0, w1, 3, 3
|
|
str w0, [x29, 88]
|
|
.L305:
|
|
ldr w0, [x29, 88]
|
|
cmp w24, 0
|
|
cset w1, eq
|
|
orr w0, w0, 4
|
|
str w0, [x29, 88]
|
|
ldr w0, [x29, 88]
|
|
bfi w0, w1, 1, 1
|
|
str w0, [x29, 88]
|
|
ldr w0, [x29, 88]
|
|
orr w0, w0, 1
|
|
str w0, [x29, 88]
|
|
.L295:
|
|
ldr w0, [x29, 88]
|
|
str w0, [x21, 16]
|
|
.L294:
|
|
str w22, [x21, 12]
|
|
str w19, [x21, 8]
|
|
orr w19, w19, 4
|
|
str w19, [x21, 8]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldr x25, [sp, 64]
|
|
ldp x29, x30, [sp], 96
|
|
ret
|
|
.L296:
|
|
adrp x0, .LANCHOR32
|
|
mov w6, 64
|
|
lsr w11, w2, 1
|
|
mov x1, x5
|
|
ldr w0, [x0, #:lo12:.LANCHOR32]
|
|
mov w7, 0
|
|
mov w3, 0
|
|
mov w12, -1
|
|
cmp w0, 25
|
|
mov w0, 128
|
|
csel w6, w6, w0, cc
|
|
add x0, x20, :lo12:.LANCHOR35
|
|
ldr x10, [x0, 8]
|
|
.L300:
|
|
cmp w3, w11
|
|
bcs .L304
|
|
lsr w0, w7, 2
|
|
lsl w0, w0, 2
|
|
cbz x5, .L301
|
|
ldrh w13, [x1]
|
|
add x1, x1, 4
|
|
ldrh w8, [x1, -2]
|
|
orr x8, x13, x8, lsl 16
|
|
str w8, [x10, x0]
|
|
.L302:
|
|
add w3, w3, 1
|
|
add w7, w7, w6
|
|
b .L300
|
|
.L301:
|
|
str w12, [x10, x0]
|
|
b .L302
|
|
.size NandcXferStart, .-NandcXferStart
|
|
.section .text.NandcXferComp,"ax",@progbits
|
|
.align 2
|
|
.global NandcXferComp
|
|
.type NandcXferComp, %function
|
|
NandcXferComp:
|
|
ubfiz x0, x0, 4, 8
|
|
adrp x1, .LANCHOR0
|
|
add x1, x1, :lo12:.LANCHOR0
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
ldr x3, [x1, x0]
|
|
adrp x0, .LANCHOR34
|
|
ldr w2, [x0, #:lo12:.LANCHOR34]
|
|
cmp w2, 3
|
|
bls .L333
|
|
ldr w0, [x3, 16]
|
|
tbz x0, 2, .L333
|
|
ldr w0, [x3, 16]
|
|
tbz x0, 1, .L321
|
|
ldr w0, [x3, 8]
|
|
str w0, [x29, 16]
|
|
.L316:
|
|
ldr w1, [x3, 28]
|
|
ldr w0, [x29, 16]
|
|
ubfx x1, x1, 16, 5
|
|
ubfx x0, x0, 22, 6
|
|
cmp w1, w0
|
|
bge .L317
|
|
cmp w2, 5
|
|
bls .L316
|
|
ldr w0, [x3]
|
|
str w0, [x29, 24]
|
|
ldr w0, [x29, 24]
|
|
tbz x0, 13, .L316
|
|
ldr w0, [x29, 24]
|
|
tbz x0, 17, .L316
|
|
.L317:
|
|
adrp x0, .LANCHOR35+40
|
|
str wzr, [x0, #:lo12:.LANCHOR35+40]
|
|
.L312:
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L321:
|
|
ldr w0, [x3, 8]
|
|
str w0, [x29, 16]
|
|
ldr w0, [x29, 16]
|
|
tbz x0, 20, .L321
|
|
adrp x0, .LANCHOR36
|
|
mov x4, x0
|
|
ldr w1, [x0, #:lo12:.LANCHOR36]
|
|
cbz w1, .L322
|
|
mov x0, x3
|
|
bl NandcSendDumpDataStart
|
|
.L322:
|
|
ldr w0, [x4, #:lo12:.LANCHOR36]
|
|
cbz w0, .L317
|
|
mov x0, x3
|
|
bl NandcSendDumpDataDone
|
|
b .L317
|
|
.L333:
|
|
ldr w0, [x3, 8]
|
|
str w0, [x29, 16]
|
|
ldr w0, [x29, 16]
|
|
tbz x0, 20, .L333
|
|
b .L312
|
|
.size NandcXferComp, .-NandcXferComp
|
|
.section .text.Ftl_log2,"ax",@progbits
|
|
.align 2
|
|
.global Ftl_log2
|
|
.type Ftl_log2, %function
|
|
Ftl_log2:
|
|
mov w2, 1
|
|
mov w1, 0
|
|
.L342:
|
|
cmp w2, w0
|
|
bls .L343
|
|
sub w0, w1, #1
|
|
ret
|
|
.L343:
|
|
add w1, w1, 1
|
|
lsl w2, w2, 1
|
|
and w1, w1, 65535
|
|
b .L342
|
|
.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, .LANCHOR39
|
|
csel w0, w0, w1, cs
|
|
adrp x1, .LANCHOR37
|
|
and w0, w0, 65535
|
|
str w0, [x1, #:lo12:.LANCHOR37]
|
|
adrp x1, .LANCHOR38
|
|
ldrh w1, [x1, #:lo12:.LANCHOR38]
|
|
mul w1, w1, w0
|
|
str w1, [x2, #:lo12:.LANCHOR39]
|
|
adrp x2, .LANCHOR41
|
|
ldrh w2, [x2, #:lo12:.LANCHOR41]
|
|
sub w0, w2, w0
|
|
adrp x2, .LANCHOR40
|
|
strh w0, [x2, #:lo12:.LANCHOR40]
|
|
adrp x0, .LANCHOR43
|
|
ldr w0, [x0, #:lo12:.LANCHOR43]
|
|
sub w1, w0, w1
|
|
adrp x0, .LANCHOR42
|
|
str w1, [x0, #:lo12:.LANCHOR42]
|
|
mov w0, 0
|
|
ret
|
|
.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
|
|
.section .text.FtlConstantsInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlConstantsInit
|
|
.type FtlConstantsInit, %function
|
|
FtlConstantsInit:
|
|
stp x29, x30, [sp, -32]!
|
|
mov x5, x0
|
|
adrp x1, .LANCHOR46
|
|
adrp x4, .LANCHOR45
|
|
add x29, sp, 0
|
|
ldrh w11, [x0, 8]
|
|
adrp x0, .LANCHOR44
|
|
adrp x6, .LANCHOR41
|
|
ldrh w2, [x5, 10]
|
|
strh w11, [x0, #:lo12:.LANCHOR44]
|
|
mov x3, 0
|
|
ldrh w0, [x5, 12]
|
|
ldrh w8, [x5, 14]
|
|
strh w0, [x1, #:lo12:.LANCHOR46]
|
|
adrp x1, .LANCHOR47
|
|
add x7, x1, :lo12:.LANCHOR47
|
|
strh w2, [x4, #:lo12:.LANCHOR45]
|
|
strh w8, [x6, #:lo12:.LANCHOR41]
|
|
str x19, [sp, 16]
|
|
.L347:
|
|
strb w3, [x3, x7]
|
|
add x3, x3, 1
|
|
cmp x3, 32
|
|
bne .L347
|
|
ldrh w7, [x5, 20]
|
|
ldrb w3, [x5, 15]
|
|
cmp w7, w3
|
|
bcs .L348
|
|
and w13, w0, 255
|
|
mul w15, w0, w2
|
|
ubfiz w14, w13, 1, 7
|
|
add x1, x1, :lo12:.LANCHOR47
|
|
mov w7, 0
|
|
.L349:
|
|
cmp w7, w0
|
|
bcs .L351
|
|
and w3, w7, 255
|
|
mov w10, w7
|
|
mov w12, 0
|
|
b .L352
|
|
.L350:
|
|
add w16, w15, w10
|
|
strb w3, [x1, w10, uxtw]
|
|
add w17, w13, w3
|
|
add w3, w14, w3
|
|
add w12, w12, 1
|
|
and w3, w3, 255
|
|
add w10, w10, w0
|
|
strb w17, [x1, x16]
|
|
.L352:
|
|
cmp w12, w2
|
|
bcc .L350
|
|
add w7, w7, 1
|
|
b .L349
|
|
.L351:
|
|
ubfiz w2, w2, 1, 15
|
|
lsr w8, w8, 1
|
|
strh w2, [x4, #:lo12:.LANCHOR45]
|
|
strh w8, [x6, #:lo12:.LANCHOR41]
|
|
.L348:
|
|
adrp x1, .LANCHOR48
|
|
adrp x13, .LANCHOR49
|
|
mov w2, 5
|
|
cmp w11, 1
|
|
strh w2, [x1, #:lo12:.LANCHOR48]
|
|
strh wzr, [x13, #:lo12:.LANCHOR49]
|
|
bne .L353
|
|
strh w11, [x1, #:lo12:.LANCHOR48]
|
|
.L353:
|
|
adrp x8, .LANCHOR50
|
|
mov w1, 4352
|
|
strh w1, [x8, #:lo12:.LANCHOR50]
|
|
adrp x1, .LANCHOR2
|
|
ldrb w11, [x1, #:lo12:.LANCHOR2]
|
|
cbz w11, .L354
|
|
mov w1, 384
|
|
strh w1, [x8, #:lo12:.LANCHOR50]
|
|
.L354:
|
|
ldrh w4, [x4, #:lo12:.LANCHOR45]
|
|
adrp x1, .LANCHOR38
|
|
ldrh w3, [x6, #:lo12:.LANCHOR41]
|
|
adrp x7, .LANCHOR52
|
|
ldrh w19, [x5, 16]
|
|
adrp x15, .LANCHOR55
|
|
ldrh w10, [x5, 20]
|
|
mul w4, w0, w4
|
|
ldrh w14, [x5, 18]
|
|
mul w0, w0, w3
|
|
strh w19, [x7, #:lo12:.LANCHOR52]
|
|
and w4, w4, 65535
|
|
strh w4, [x1, #:lo12:.LANCHOR38]
|
|
adrp x1, .LANCHOR51
|
|
strh w10, [x15, #:lo12:.LANCHOR55]
|
|
strh w0, [x1, #:lo12:.LANCHOR51]
|
|
mul w1, w4, w19
|
|
adrp x0, .LANCHOR53
|
|
strh w14, [x0, #:lo12:.LANCHOR53]
|
|
adrp x0, .LANCHOR54
|
|
strh w1, [x0, #:lo12:.LANCHOR54]
|
|
mov w0, w10
|
|
bl Ftl_log2
|
|
and w12, w0, 65535
|
|
adrp x6, .LANCHOR56
|
|
ubfiz w2, w10, 9, 7
|
|
ldrh w1, [x5, 26]
|
|
cmp w3, 1024
|
|
strh w0, [x6, #:lo12:.LANCHOR56]
|
|
adrp x0, .LANCHOR57
|
|
strh w2, [x0, #:lo12:.LANCHOR57]
|
|
adrp x0, .LANCHOR58
|
|
ubfx w2, w2, 8, 8
|
|
strh w2, [x0, #:lo12:.LANCHOR58]
|
|
adrp x0, .LANCHOR59
|
|
strh w1, [x0, #:lo12:.LANCHOR59]
|
|
adrp x0, .LANCHOR43
|
|
mul w1, w4, w3
|
|
str w1, [x0, #:lo12:.LANCHOR43]
|
|
bls .L355
|
|
and w0, w3, 255
|
|
strh w0, [x13, #:lo12:.LANCHOR49]
|
|
.L355:
|
|
ldrh w0, [x13, #:lo12:.LANCHOR49]
|
|
adrp x1, .LANCHOR60
|
|
sub w0, w3, w0
|
|
mul w0, w0, w4
|
|
mul w0, w0, w10
|
|
mul w0, w0, w19
|
|
asr w0, w0, 11
|
|
str w0, [x1, #:lo12:.LANCHOR60]
|
|
ldrh w0, [x8, #:lo12:.LANCHOR50]
|
|
mul w1, w14, w10
|
|
adrp x10, .LANCHOR61
|
|
lsl w0, w0, 3
|
|
sdiv w0, w0, w1
|
|
and w0, w0, 65535
|
|
cmp w0, 4
|
|
bls .L356
|
|
.L372:
|
|
strh w0, [x10, #:lo12:.LANCHOR61]
|
|
cbz w11, .L358
|
|
mov w0, 640
|
|
strh w0, [x8, #:lo12:.LANCHOR50]
|
|
.L358:
|
|
ldrh w0, [x8, #:lo12:.LANCHOR50]
|
|
adrp x1, .LANCHOR62
|
|
lsl w3, w3, 6
|
|
cmp w4, 1
|
|
adrp x8, .LANCHOR37
|
|
asr w0, w0, w12
|
|
add w0, w0, 2
|
|
strh w0, [x1, #:lo12:.LANCHOR62]
|
|
add w0, w12, 9
|
|
adrp x1, .LANCHOR64
|
|
asr w3, w3, w0
|
|
adrp x0, .LANCHOR63
|
|
strh w3, [x0, #:lo12:.LANCHOR63]
|
|
and w3, w3, 65535
|
|
mul w0, w4, w3
|
|
add w3, w3, 8
|
|
str w0, [x1, #:lo12:.LANCHOR64]
|
|
ldrh w0, [x10, #:lo12:.LANCHOR61]
|
|
udiv w0, w0, w4
|
|
mov x4, x1
|
|
add w3, w0, w3
|
|
beq .L359
|
|
.L373:
|
|
str w3, [x8, #:lo12:.LANCHOR37]
|
|
ldrh w0, [x8, #:lo12:.LANCHOR37]
|
|
bl FtlSysBlkNumInit
|
|
ldr w1, [x8, #:lo12:.LANCHOR37]
|
|
adrp x0, .LANCHOR65
|
|
mov w2, 24
|
|
str w1, [x0, #:lo12:.LANCHOR65]
|
|
adrp x0, .LANCHOR42
|
|
ldrh w1, [x7, #:lo12:.LANCHOR52]
|
|
ldr w0, [x0, #:lo12:.LANCHOR42]
|
|
lsl w0, w0, 2
|
|
mul w0, w0, w1
|
|
ldrh w1, [x6, #:lo12:.LANCHOR56]
|
|
adrp x6, .LANCHOR16
|
|
add w1, w1, 9
|
|
ldrb w6, [x6, #:lo12:.LANCHOR16]
|
|
lsr w0, w0, w1
|
|
adrp x1, .LANCHOR66
|
|
add w0, w0, 2
|
|
and w0, w0, 65535
|
|
strh w0, [x1, #:lo12:.LANCHOR66]
|
|
adrp x1, .LANCHOR67
|
|
strh w2, [x1, #:lo12:.LANCHOR67]
|
|
adrp x1, .LANCHOR68
|
|
ldrh w2, [x10, #:lo12:.LANCHOR61]
|
|
str wzr, [x1, #:lo12:.LANCHOR68]
|
|
add w1, w2, 3
|
|
strh w1, [x10, #:lo12:.LANCHOR61]
|
|
ldr w1, [x4, #:lo12:.LANCHOR64]
|
|
add w3, w1, 3
|
|
str w3, [x4, #:lo12:.LANCHOR64]
|
|
cbz w6, .L361
|
|
add w1, w1, 5
|
|
add w2, w2, 4
|
|
strh w2, [x10, #:lo12:.LANCHOR61]
|
|
.L374:
|
|
str w1, [x4, #:lo12:.LANCHOR64]
|
|
.L362:
|
|
adrp x1, .LANCHOR40
|
|
adrp x3, .LANCHOR69
|
|
ldrh w1, [x1, #:lo12:.LANCHOR40]
|
|
strh wzr, [x3, #:lo12:.LANCHOR69]
|
|
lsl w2, w1, 1
|
|
lsr w1, w1, 3
|
|
add w2, w2, 48
|
|
add w1, w1, 4
|
|
add w0, w2, w0, lsl 2
|
|
add w0, w0, w1
|
|
ldrh w1, [x15, #:lo12:.LANCHOR55]
|
|
cmp w0, w1, lsl 9
|
|
bcs .L363
|
|
mov w0, 1
|
|
strh w0, [x3, #:lo12:.LANCHOR69]
|
|
.L363:
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L356:
|
|
mov w0, 4
|
|
b .L372
|
|
.L359:
|
|
add w3, w3, 4
|
|
b .L373
|
|
.L361:
|
|
cmp w3, 7
|
|
bhi .L362
|
|
mov w1, 8
|
|
b .L374
|
|
.size FtlConstantsInit, .-FtlConstantsInit
|
|
.section .text.IsBlkInVendorPart,"ax",@progbits
|
|
.align 2
|
|
.global IsBlkInVendorPart
|
|
.type IsBlkInVendorPart, %function
|
|
IsBlkInVendorPart:
|
|
adrp x1, .LANCHOR70
|
|
and w0, w0, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR70]
|
|
cbz w1, .L379
|
|
adrp x1, .LANCHOR61
|
|
ldrh w2, [x1, #:lo12:.LANCHOR61]
|
|
adrp x1, .LANCHOR71
|
|
ldr x3, [x1, #:lo12:.LANCHOR71]
|
|
mov x1, 0
|
|
.L377:
|
|
cmp w2, w1, uxth
|
|
bhi .L378
|
|
.L379:
|
|
mov w0, 0
|
|
ret
|
|
.L378:
|
|
add x1, x1, 1
|
|
add x4, x3, x1, lsl 1
|
|
ldrh w4, [x4, -2]
|
|
cmp w4, w0
|
|
bne .L377
|
|
mov w0, 1
|
|
ret
|
|
.size IsBlkInVendorPart, .-IsBlkInVendorPart
|
|
.section .text.FtlCacheMetchLpa,"ax",@progbits
|
|
.align 2
|
|
.global FtlCacheMetchLpa
|
|
.type FtlCacheMetchLpa, %function
|
|
FtlCacheMetchLpa:
|
|
adrp x2, .LANCHOR72
|
|
ldr w4, [x2, #:lo12:.LANCHOR72]
|
|
cbz w4, .L386
|
|
adrp x2, .LANCHOR73
|
|
mov x5, 24
|
|
mov w6, 56
|
|
ldr x2, [x2, #:lo12:.LANCHOR73]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x4, w4, w6, x5
|
|
add x3, x2, 24
|
|
add x2, x2, x4
|
|
.L383:
|
|
cmp x3, x2
|
|
bne .L385
|
|
.L386:
|
|
mov w0, 0
|
|
ret
|
|
.L385:
|
|
ldr w4, [x3]
|
|
cmp w4, w0
|
|
bcc .L384
|
|
cmp w4, w1
|
|
bls .L387
|
|
.L384:
|
|
add x3, x3, 56
|
|
b .L383
|
|
.L387:
|
|
mov w0, 1
|
|
ret
|
|
.size FtlCacheMetchLpa, .-FtlCacheMetchLpa
|
|
.section .text.FtlGetCap,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetCap
|
|
.type FtlGetCap, %function
|
|
FtlGetCap:
|
|
adrp x0, .LANCHOR68
|
|
ldr w0, [x0, #:lo12:.LANCHOR68]
|
|
ret
|
|
.size FtlGetCap, .-FtlGetCap
|
|
.section .text.FtlGetCapacity,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetCapacity
|
|
.type FtlGetCapacity, %function
|
|
FtlGetCapacity:
|
|
adrp x0, .LANCHOR68
|
|
ldr w0, [x0, #:lo12:.LANCHOR68]
|
|
ret
|
|
.size FtlGetCapacity, .-FtlGetCapacity
|
|
.section .text.ftl_get_density,"ax",@progbits
|
|
.align 2
|
|
.global ftl_get_density
|
|
.type ftl_get_density, %function
|
|
ftl_get_density:
|
|
adrp x0, .LANCHOR68
|
|
ldr w0, [x0, #:lo12:.LANCHOR68]
|
|
ret
|
|
.size ftl_get_density, .-ftl_get_density
|
|
.section .text.FtlGetLpn,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetLpn
|
|
.type FtlGetLpn, %function
|
|
FtlGetLpn:
|
|
adrp x0, .LANCHOR74
|
|
ldr w0, [x0, #:lo12:.LANCHOR74]
|
|
ret
|
|
.size FtlGetLpn, .-FtlGetLpn
|
|
.section .text.FtlGetCurEraseBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetCurEraseBlock
|
|
.type FtlGetCurEraseBlock, %function
|
|
FtlGetCurEraseBlock:
|
|
adrp x0, .LANCHOR38
|
|
ldrh w1, [x0, #:lo12:.LANCHOR38]
|
|
adrp x0, .LANCHOR75
|
|
ldr w0, [x0, #:lo12:.LANCHOR75]
|
|
mul w0, w1, w0
|
|
ret
|
|
.size FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
|
|
.section .text.FtlGetAllBlockNum,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetAllBlockNum
|
|
.type FtlGetAllBlockNum, %function
|
|
FtlGetAllBlockNum:
|
|
adrp x0, .LANCHOR41
|
|
ldrh w1, [x0, #:lo12:.LANCHOR41]
|
|
adrp x0, .LANCHOR38
|
|
ldrh w0, [x0, #:lo12:.LANCHOR38]
|
|
mul w0, w1, w0
|
|
ret
|
|
.size FtlGetAllBlockNum, .-FtlGetAllBlockNum
|
|
.section .text.FtlBbmMapBadBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbmMapBadBlock
|
|
.type FtlBbmMapBadBlock, %function
|
|
FtlBbmMapBadBlock:
|
|
stp x29, x30, [sp, -32]!
|
|
and w1, w0, 65535
|
|
adrp x0, .LANCHOR51
|
|
mov w4, 1
|
|
add x29, sp, 0
|
|
ldrh w0, [x0, #:lo12:.LANCHOR51]
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR76
|
|
add x19, x19, :lo12:.LANCHOR76
|
|
udiv w3, w1, w0
|
|
and w2, w3, 65535
|
|
msub w3, w3, w0, w1
|
|
add x0, x19, x2, uxth 3
|
|
and w3, w3, 65535
|
|
and w6, w3, 31
|
|
ldr x0, [x0, 32]
|
|
ubfx x5, x3, 5, 11
|
|
lsl x5, x5, 2
|
|
lsl w4, w4, w6
|
|
ldr w6, [x0, x5]
|
|
orr w4, w4, w6
|
|
str w4, [x0, x5]
|
|
adrp x0, .LC2
|
|
add x0, x0, :lo12:.LC2
|
|
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, .LANCHOR51
|
|
and w0, w0, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR51]
|
|
udiv w2, w0, w1
|
|
msub w0, w2, w1, w0
|
|
adrp x1, .LANCHOR76
|
|
add x1, x1, :lo12:.LANCHOR76
|
|
add x2, x1, x2, uxth 3
|
|
and w0, w0, 65535
|
|
ubfx x3, x0, 5, 11
|
|
and w0, w0, 31
|
|
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, .LANCHOR46
|
|
and w0, w0, 65535
|
|
adrp x4, .LANCHOR51
|
|
and w1, w1, 65535
|
|
ldrh w2, [x2, #:lo12:.LANCHOR46]
|
|
ldrh w4, [x4, #:lo12:.LANCHOR51]
|
|
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, .LANCHOR46
|
|
ldrh w1, [x0, #:lo12:.LANCHOR46]
|
|
adrp x0, .LANCHOR51
|
|
ldrh w2, [x0, #:lo12:.LANCHOR51]
|
|
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, .LANCHOR51
|
|
ldrh w1, [x0, #:lo12:.LANCHOR51]
|
|
udiv w0, w2, w1
|
|
msub w0, w0, w1, w2
|
|
adrp x1, .LANCHOR46
|
|
ldrh w1, [x1, #:lo12:.LANCHOR46]
|
|
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 .L402
|
|
sub w1, w0, w1
|
|
cmp w1, w2
|
|
cset w0, ls
|
|
ret
|
|
.L402:
|
|
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, .LANCHOR77+6
|
|
ldrh w0, [x0, #:lo12:.LANCHOR77+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, .LANCHOR77+6
|
|
ldrh w0, [x0, #:lo12:.LANCHOR77+6]
|
|
cmp w0, 1024
|
|
cset w0, eq
|
|
ret
|
|
.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
|
|
.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 .L406
|
|
adrp x0, .LANCHOR77
|
|
add x2, x0, :lo12:.LANCHOR77
|
|
mov x19, x0
|
|
ldrh w2, [x2, 6]
|
|
cmp w2, 1024
|
|
beq .L406
|
|
and w1, w1, 65535
|
|
cbz w1, .L408
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L408
|
|
mov w0, w20
|
|
bl P2V_block_in_plane
|
|
and w21, w0, 65535
|
|
adrp x0, .LANCHOR79
|
|
lsl w1, w20, 10
|
|
mov w2, 1
|
|
ldr x0, [x0, #:lo12:.LANCHOR79]
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
adrp x1, .LANCHOR80
|
|
ubfiz x0, x21, 1, 16
|
|
ldr x2, [x1, #:lo12:.LANCHOR80]
|
|
ldrh w1, [x2, x0]
|
|
add w1, w1, 1
|
|
strh w1, [x2, x0]
|
|
adrp x1, .LANCHOR81
|
|
ldr w0, [x1, #:lo12:.LANCHOR81]
|
|
add w0, w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR81]
|
|
.L408:
|
|
add x0, x19, :lo12:.LANCHOR77
|
|
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]
|
|
.L406:
|
|
ldp x19, x20, [sp, 16]
|
|
ldr x21, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
|
|
.section .text.FtlFreeSysBLkSort,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBLkSort
|
|
.type FtlFreeSysBLkSort, %function
|
|
FtlFreeSysBLkSort:
|
|
adrp x0, .LANCHOR77
|
|
add x1, x0, :lo12:.LANCHOR77
|
|
ldrh w2, [x1, 6]
|
|
cbz w2, .L416
|
|
adrp x2, .LANCHOR82+28
|
|
ldrh w3, [x1, 2]
|
|
mov w6, 0
|
|
mov w4, 0
|
|
ldrh w5, [x2, #:lo12:.LANCHOR82+28]
|
|
ldrh w2, [x1, 4]
|
|
and w5, w5, 31
|
|
.L418:
|
|
cmp w5, w4
|
|
bgt .L419
|
|
cbz w6, .L416
|
|
add x0, x0, :lo12:.LANCHOR77
|
|
strh w3, [x0, 2]
|
|
strh w2, [x0, 4]
|
|
.L416:
|
|
ret
|
|
.L419:
|
|
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 .L418
|
|
.size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
|
|
.section .text.FtlFreeSysBlkQueueOut,"ax",@progbits
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueOut
|
|
.type FtlFreeSysBlkQueueOut, %function
|
|
FtlFreeSysBlkQueueOut:
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR77
|
|
add x19, x19, :lo12:.LANCHOR77
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
adrp x22, .LANCHOR78
|
|
mov x23, x19
|
|
add x22, x22, :lo12:.LANCHOR78
|
|
.L426:
|
|
ldrh w1, [x19, 6]
|
|
cbz w1, .L427
|
|
ldrh w0, [x19, 2]
|
|
sub w1, w1, #1
|
|
strh w1, [x19, 6]
|
|
add x2, x19, x0, sxtw 1
|
|
add w0, w0, 1
|
|
and w0, w0, 1023
|
|
strh w0, [x19, 2]
|
|
ldr w0, [x22]
|
|
ldrh w20, [x2, 8]
|
|
cbnz w0, .L428
|
|
mov w0, w20
|
|
bl P2V_block_in_plane
|
|
adrp x1, .LANCHOR79
|
|
and w21, w0, 65535
|
|
lsl w2, w20, 10
|
|
mov x24, x1
|
|
ldr x0, [x1, #:lo12:.LANCHOR79]
|
|
str w2, [x0, 4]
|
|
adrp x2, .LANCHOR16
|
|
ldrb w2, [x2, #:lo12:.LANCHOR16]
|
|
cbz w2, .L429
|
|
mov w2, 1
|
|
mov w1, 0
|
|
bl FlashEraseBlocks
|
|
.L429:
|
|
ldr x0, [x24, #:lo12:.LANCHOR79]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
adrp x1, .LANCHOR80
|
|
ubfiz x0, x21, 1, 16
|
|
ldr x2, [x1, #:lo12:.LANCHOR80]
|
|
ldrh w1, [x2, x0]
|
|
add w1, w1, 1
|
|
strh w1, [x2, x0]
|
|
adrp x1, .LANCHOR81
|
|
ldr w0, [x1, #:lo12:.LANCHOR81]
|
|
add w0, w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR81]
|
|
.L428:
|
|
sub w0, w20, #1
|
|
mov w1, 65533
|
|
cmp w1, w0, uxth
|
|
bcs .L431
|
|
ldrh w2, [x23, 6]
|
|
mov w1, w20
|
|
adrp x0, .LC4
|
|
add x0, x0, :lo12:.LC4
|
|
bl printf
|
|
b .L426
|
|
.L427:
|
|
adrp x0, .LC3
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC3
|
|
bl printf
|
|
.L430:
|
|
b .L430
|
|
.L431:
|
|
mov w0, w20
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
|
|
.section .text.test_node_in_list,"ax",@progbits
|
|
.align 2
|
|
.global test_node_in_list
|
|
.type test_node_in_list, %function
|
|
test_node_in_list:
|
|
ldr x2, [x0]
|
|
adrp x0, .LANCHOR83
|
|
mov x4, -6148914691236517206
|
|
and w1, w1, 65535
|
|
ldr x3, [x0, #:lo12:.LANCHOR83]
|
|
movk x4, 0xaaab, lsl 0
|
|
mov w5, 65535
|
|
sub x0, x2, x3
|
|
asr x0, x0, 1
|
|
mul x0, x0, x4
|
|
mov w4, 6
|
|
and w0, w0, 65535
|
|
.L438:
|
|
cmp w0, w1
|
|
beq .L439
|
|
ldrh w0, [x2]
|
|
cmp w0, w5
|
|
beq .L440
|
|
umaddl x2, w0, w4, x3
|
|
b .L438
|
|
.L439:
|
|
mov w0, 1
|
|
ret
|
|
.L440:
|
|
mov w0, 0
|
|
ret
|
|
.size test_node_in_list, .-test_node_in_list
|
|
.section .text.insert_data_list,"ax",@progbits
|
|
.align 2
|
|
.global insert_data_list
|
|
.type insert_data_list, %function
|
|
insert_data_list:
|
|
adrp x1, .LANCHOR40
|
|
and w0, w0, 65535
|
|
ldrh w14, [x1, #:lo12:.LANCHOR40]
|
|
cmp w14, w0
|
|
bls .L457
|
|
adrp x1, .LANCHOR83
|
|
mov w3, 6
|
|
ldr x6, [x1, #:lo12:.LANCHOR83]
|
|
umull x13, w0, w3
|
|
mov w1, -1
|
|
add x5, x6, x13
|
|
strh w1, [x5, 2]
|
|
strh w1, [x6, x13]
|
|
adrp x1, .LANCHOR84
|
|
mov x15, x1
|
|
ldr x12, [x1, #:lo12:.LANCHOR84]
|
|
cbnz x12, .L444
|
|
str x5, [x1, #:lo12:.LANCHOR84]
|
|
.L457:
|
|
mov w0, 0
|
|
ret
|
|
.L444:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x1, .LANCHOR85
|
|
ubfiz x2, x0, 1, 16
|
|
mov x4, -6148914691236517206
|
|
add x29, sp, 0
|
|
ldr x16, [x1, #:lo12:.LANCHOR85]
|
|
movk x4, 0xaaab, lsl 0
|
|
ldrh w1, [x5, 4]
|
|
mov w8, -1
|
|
mov w11, w8
|
|
stp x19, x20, [sp, 16]
|
|
cmp w1, 0
|
|
mov w20, 65535
|
|
ldrh w7, [x16, x2]
|
|
mul w7, w7, w1
|
|
sub x1, x12, x6
|
|
asr x1, x1, 1
|
|
csel w7, w7, w8, ne
|
|
mov w8, w3
|
|
mul x1, x1, x4
|
|
adrp x4, .LANCHOR80
|
|
ldr x17, [x4, #:lo12:.LANCHOR80]
|
|
and w1, w1, 65535
|
|
mov x4, x12
|
|
add x10, x17, x2
|
|
mov w2, 0
|
|
.L452:
|
|
add w2, w2, 1
|
|
and w2, w2, 65535
|
|
cmp w14, w2
|
|
bcc .L443
|
|
cmp w1, w0
|
|
beq .L443
|
|
ubfiz x30, x1, 1, 16
|
|
ldrh w19, [x4, 4]
|
|
cmp w19, 0
|
|
ldrh w3, [x16, x30]
|
|
mul w3, w3, w19
|
|
csel w3, w3, w11, ne
|
|
cmp w7, w3
|
|
bne .L448
|
|
ldrh w19, [x17, x30]
|
|
ldrh w3, [x10]
|
|
cmp w19, w3
|
|
bcc .L450
|
|
.L449:
|
|
strh w1, [x6, x13]
|
|
cmp x4, x12
|
|
ldrh w1, [x4, 2]
|
|
strh w1, [x5, 2]
|
|
bne .L453
|
|
strh w0, [x4, 2]
|
|
str x5, [x15, #:lo12:.LANCHOR84]
|
|
b .L443
|
|
.L448:
|
|
bcc .L449
|
|
.L450:
|
|
ldrh w3, [x4]
|
|
cmp w3, w20
|
|
bne .L451
|
|
strh w1, [x5, 2]
|
|
strh w0, [x4]
|
|
adrp x0, .LANCHOR86
|
|
str x5, [x0, #:lo12:.LANCHOR86]
|
|
.L443:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L451:
|
|
umaddl x4, w3, w8, x6
|
|
mov w1, w3
|
|
b .L452
|
|
.L453:
|
|
ldrh w1, [x4, 2]
|
|
mov w2, 6
|
|
umull x1, w1, w2
|
|
strh w0, [x6, x1]
|
|
strh w0, [x4, 2]
|
|
b .L443
|
|
.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, .LANCHOR87
|
|
ldrh w0, [x1, #:lo12:.LANCHOR87]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x1, #:lo12:.LANCHOR87]
|
|
adrp x1, .LANCHOR40
|
|
ldrh w1, [x1, #:lo12:.LANCHOR40]
|
|
cmp w1, w0
|
|
bcs .L459
|
|
mov w2, 245
|
|
adrp x1, .LANCHOR88
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR88
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
ldp x29, x30, [sp], 16
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
b printf
|
|
.L459:
|
|
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 .L463
|
|
adrp x1, .LANCHOR83
|
|
mov w6, 6
|
|
ldr x3, [x1, #:lo12:.LANCHOR83]
|
|
umull x8, w0, w6
|
|
mov w1, -1
|
|
add x4, x3, x8
|
|
strh w1, [x4, 2]
|
|
strh w1, [x3, x8]
|
|
adrp x1, .LANCHOR89
|
|
mov x12, x1
|
|
ldr x5, [x1, #:lo12:.LANCHOR89]
|
|
cbnz x5, .L464
|
|
str x4, [x1, #:lo12:.LANCHOR89]
|
|
.L463:
|
|
mov w0, 0
|
|
ret
|
|
.L464:
|
|
adrp x1, .LANCHOR80
|
|
mov x2, -6148914691236517206
|
|
movk x2, 0xaaab, lsl 0
|
|
ldr x11, [x1, #:lo12:.LANCHOR80]
|
|
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
|
|
.L467:
|
|
ubfiz x10, x1, 1, 16
|
|
ldrh w10, [x11, x10]
|
|
cmp w10, w13
|
|
bcs .L465
|
|
ldrh w10, [x2]
|
|
cmp w10, w7
|
|
bne .L466
|
|
strh w1, [x4, 2]
|
|
strh w0, [x2]
|
|
b .L463
|
|
.L466:
|
|
umaddl x2, w10, w6, x3
|
|
mov w1, w10
|
|
b .L467
|
|
.L465:
|
|
ldrh w6, [x2, 2]
|
|
cmp x2, x5
|
|
strh w6, [x4, 2]
|
|
strh w1, [x3, x8]
|
|
bne .L468
|
|
strh w0, [x2, 2]
|
|
str x4, [x12, #:lo12:.LANCHOR89]
|
|
b .L463
|
|
.L468:
|
|
ldrh w1, [x2, 2]
|
|
mov w4, 6
|
|
umull x1, w1, w4
|
|
strh w0, [x3, x1]
|
|
strh w0, [x2, 2]
|
|
b .L463
|
|
.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, .LANCHOR90
|
|
ldrh w0, [x1, #:lo12:.LANCHOR90]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x1, #:lo12:.LANCHOR90]
|
|
adrp x1, .LANCHOR40
|
|
ldrh w1, [x1, #:lo12:.LANCHOR40]
|
|
cmp w1, w0
|
|
bcs .L469
|
|
mov w2, 238
|
|
adrp x1, .LANCHOR91
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR91
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
ldp x29, x30, [sp], 16
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
b printf
|
|
.L469:
|
|
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, .LANCHOR83
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x0
|
|
mov w0, 6
|
|
str x23, [sp, 48]
|
|
ldr x23, [x20, #:lo12:.LANCHOR83]
|
|
umull x21, w1, w0
|
|
mov w0, 65535
|
|
add x19, x23, x21
|
|
ldrh w1, [x19, 2]
|
|
cmp w1, w0
|
|
bne .L473
|
|
ldr x0, [x22]
|
|
cmp x19, x0
|
|
beq .L473
|
|
mov w2, 435
|
|
adrp x1, .LANCHOR92
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR92
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L473:
|
|
ldr x0, [x22]
|
|
mov w1, 65535
|
|
cmp x19, x0
|
|
ldrh w0, [x23, x21]
|
|
bne .L474
|
|
cmp w0, w1
|
|
bne .L475
|
|
str xzr, [x22]
|
|
.L476:
|
|
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
|
|
.L475:
|
|
ldr x1, [x20, #:lo12:.LANCHOR83]
|
|
mov w2, 6
|
|
umaddl x0, w0, w2, x1
|
|
mov w1, -1
|
|
str x0, [x22]
|
|
strh w1, [x0, 2]
|
|
b .L476
|
|
.L474:
|
|
cmp w0, w1
|
|
ldrh w1, [x19, 2]
|
|
bne .L477
|
|
cmp w1, w0
|
|
beq .L476
|
|
mov w0, 6
|
|
mov w2, -1
|
|
umull x1, w1, w0
|
|
ldr x0, [x20, #:lo12:.LANCHOR83]
|
|
strh w2, [x0, x1]
|
|
b .L476
|
|
.L477:
|
|
ldr x2, [x20, #:lo12:.LANCHOR83]
|
|
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 .L476
|
|
.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, .L485
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x3, .LANCHOR83
|
|
and w1, w1, 65535
|
|
mov w4, 65535
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
mov w5, 6
|
|
ldr x19, [x3, #:lo12:.LANCHOR83]
|
|
.L481:
|
|
cbnz w1, .L482
|
|
.L484:
|
|
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
|
|
.L482:
|
|
ldrh w3, [x2]
|
|
cmp w3, w4
|
|
beq .L484
|
|
sub w1, w1, #1
|
|
umaddl x2, w3, w5, x19
|
|
and w1, w1, 65535
|
|
b .L481
|
|
.L485:
|
|
mov w0, 65535
|
|
ret
|
|
.size List_pop_index_node, .-List_pop_index_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, .LANCHOR84
|
|
ldr x1, [x0, #:lo12:.LANCHOR84]
|
|
cbz x1, .L495
|
|
adrp x0, .LANCHOR83
|
|
mov w4, 6
|
|
ldr x3, [x0, #:lo12:.LANCHOR83]
|
|
mov w0, 65535
|
|
.L492:
|
|
cbz w2, .L493
|
|
ldrh w1, [x1]
|
|
cmp w1, w0
|
|
bne .L494
|
|
ret
|
|
.L494:
|
|
sub w2, w2, #1
|
|
umaddl x1, w1, w4, x3
|
|
and w2, w2, 65535
|
|
b .L492
|
|
.L495:
|
|
mov w0, 65535
|
|
ret
|
|
.L493:
|
|
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, .LANCHOR93
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR93]
|
|
stp x25, x26, [sp, 64]
|
|
cmp w0, w19
|
|
beq .L498
|
|
adrp x0, .LANCHOR94
|
|
ldrh w0, [x0, #:lo12:.LANCHOR94]
|
|
cmp w0, w19
|
|
beq .L498
|
|
adrp x0, .LANCHOR95
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95]
|
|
cmp w0, w19
|
|
beq .L498
|
|
adrp x0, .LANCHOR83
|
|
mov w21, 6
|
|
adrp x24, .LANCHOR84
|
|
mov x26, x0
|
|
umull x21, w19, w21
|
|
ldr x23, [x0, #:lo12:.LANCHOR83]
|
|
ldr x1, [x24, #:lo12:.LANCHOR84]
|
|
add x22, x23, x21
|
|
cmp x22, x1
|
|
beq .L498
|
|
adrp x1, .LANCHOR85
|
|
ubfiz x0, x19, 1, 16
|
|
mov x25, x1
|
|
ldr x2, [x1, #:lo12:.LANCHOR85]
|
|
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 .L501
|
|
ldrh w1, [x23, x21]
|
|
cmp w1, w0
|
|
bne .L501
|
|
mov w2, 571
|
|
adrp x1, .LANCHOR96
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR96
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L501:
|
|
ldrh w0, [x22, 2]
|
|
mov w1, 65535
|
|
cmp w0, w1
|
|
bne .L502
|
|
ldrh w1, [x23, x21]
|
|
cmp w1, w0
|
|
beq .L498
|
|
.L502:
|
|
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:.LANCHOR85]
|
|
ldrh w1, [x2, x1, lsl 1]
|
|
ldr x2, [x26, #:lo12:.LANCHOR83]
|
|
add x0, x2, x0
|
|
ldrh w2, [x0, 4]
|
|
cmp w2, 0
|
|
mul w0, w1, w2
|
|
csinv w0, w0, wzr, ne
|
|
cmp w20, w0
|
|
bcs .L498
|
|
adrp x20, .LANCHOR87
|
|
mov w1, w19
|
|
add x0, x24, :lo12:.LANCHOR84
|
|
bl List_remove_node
|
|
ldrh w0, [x20, #:lo12:.LANCHOR87]
|
|
cbnz w0, .L504
|
|
mov w2, 585
|
|
adrp x1, .LANCHOR96
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR96
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L504:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR87]
|
|
sub w0, w0, #1
|
|
strh w0, [x20, #:lo12:.LANCHOR87]
|
|
mov w0, w19
|
|
bl INSERT_DATA_LIST
|
|
.L498:
|
|
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.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]
|
|
.L509:
|
|
cmp w20, w1
|
|
beq .L513
|
|
mov x21, x0
|
|
ldrh w2, [x0], 2
|
|
cbnz w2, .L510
|
|
bl FtlFreeSysBlkQueueOut
|
|
and w1, w0, 65535
|
|
strh w0, [x21]
|
|
sub w2, w1, #1
|
|
mov w0, 65533
|
|
cmp w0, w2, uxth
|
|
bcs .L511
|
|
adrp x0, .LANCHOR77+6
|
|
ldrh w2, [x0, #:lo12:.LANCHOR77+6]
|
|
adrp x0, .LC8
|
|
add x0, x0, :lo12:.LC8
|
|
bl printf
|
|
.L512:
|
|
b .L512
|
|
.L511:
|
|
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]
|
|
.L513:
|
|
ldrh w0, [x19, 10]
|
|
cmp w0, w20
|
|
bhi .L515
|
|
mov w2, 715
|
|
adrp x1, .LANCHOR97
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR97
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L515:
|
|
mov w0, 0
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L510:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L509
|
|
.size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
|
|
.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, .LANCHOR67
|
|
mov x1, 0
|
|
mov w3, 65535
|
|
add x29, sp, 0
|
|
ldrh w2, [x0, #:lo12:.LANCHOR67]
|
|
adrp x0, .LANCHOR98
|
|
str x19, [sp, 16]
|
|
ldr x0, [x0, #:lo12:.LANCHOR98]
|
|
.L518:
|
|
and w19, w1, 65535
|
|
cmp w19, w2
|
|
bcc .L520
|
|
add x3, x0, 4
|
|
mov w19, w2
|
|
mov w5, -2147483648
|
|
mov w1, 0
|
|
.L521:
|
|
cmp w1, w2
|
|
bne .L523
|
|
cmp w19, w2
|
|
bcc .L519
|
|
adrp x1, .LANCHOR99
|
|
mov w19, w2
|
|
mov w3, -1
|
|
ldrh w4, [x1, #:lo12:.LANCHOR99]
|
|
mov w1, 0
|
|
.L524:
|
|
cmp w1, w2
|
|
bne .L526
|
|
cmp w19, w1
|
|
bcc .L519
|
|
mov w2, 977
|
|
adrp x1, .LANCHOR100
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR100
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
b .L519
|
|
.L520:
|
|
add x1, x1, 1
|
|
add x4, x0, x1, lsl 4
|
|
ldrh w4, [x4, -16]
|
|
cmp w4, w3
|
|
bne .L518
|
|
.L519:
|
|
mov w0, w19
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L523:
|
|
ldr w4, [x3]
|
|
tbnz w4, #31, .L522
|
|
cmp w5, w4
|
|
bls .L522
|
|
mov w5, w4
|
|
mov w19, w1
|
|
.L522:
|
|
add w1, w1, 1
|
|
add x3, x3, 16
|
|
and w1, w1, 65535
|
|
b .L521
|
|
.L526:
|
|
ldr w6, [x0, 4]
|
|
cmp w3, w6
|
|
bls .L525
|
|
ldrh w5, [x0]
|
|
cmp w5, w4
|
|
csel w3, w3, w6, eq
|
|
csel w19, w19, w1, eq
|
|
.L525:
|
|
add w1, w1, 1
|
|
add x0, x0, 16
|
|
and w1, w1, 65535
|
|
b .L524
|
|
.size select_l2p_ram_region, .-select_l2p_ram_region
|
|
.section .text.FtlUpdateVaildLpn,"ax",@progbits
|
|
.align 2
|
|
.global FtlUpdateVaildLpn
|
|
.type FtlUpdateVaildLpn, %function
|
|
FtlUpdateVaildLpn:
|
|
adrp x2, .LANCHOR101
|
|
mov x3, x2
|
|
ldrh w1, [x2, #:lo12:.LANCHOR101]
|
|
cmp w1, 4
|
|
bhi .L529
|
|
cbnz w0, .L529
|
|
add w1, w1, 1
|
|
strh w1, [x2, #:lo12:.LANCHOR101]
|
|
ret
|
|
.L529:
|
|
adrp x1, .LANCHOR40
|
|
adrp x0, .LANCHOR102
|
|
strh wzr, [x3, #:lo12:.LANCHOR101]
|
|
mov w2, 0
|
|
ldrh w5, [x1, #:lo12:.LANCHOR40]
|
|
adrp x1, .LANCHOR85
|
|
str wzr, [x0, #:lo12:.LANCHOR102]
|
|
mov w3, 0
|
|
ldr x6, [x1, #:lo12:.LANCHOR85]
|
|
mov w7, 65535
|
|
mov x1, 0
|
|
.L530:
|
|
cmp w5, w1, uxth
|
|
bhi .L532
|
|
cbz w3, .L528
|
|
str w2, [x0, #:lo12:.LANCHOR102]
|
|
.L528:
|
|
ret
|
|
.L532:
|
|
ldrh w4, [x6, x1, lsl 1]
|
|
cmp w4, w7
|
|
beq .L531
|
|
add w2, w2, w4
|
|
mov w3, 1
|
|
.L531:
|
|
add x1, x1, 1
|
|
b .L530
|
|
.size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
|
|
.section .text.ftl_set_blk_mode,"ax",@progbits
|
|
.align 2
|
|
.global ftl_set_blk_mode
|
|
.type ftl_set_blk_mode, %function
|
|
ftl_set_blk_mode:
|
|
and w0, w0, 65535
|
|
cbz w1, .L539
|
|
b ftl_set_blk_mode.part.11
|
|
.L539:
|
|
adrp x1, .LANCHOR1
|
|
ubfx x2, x0, 5, 11
|
|
lsl x2, x2, 2
|
|
ldr x3, [x1, #:lo12:.LANCHOR1]
|
|
and w1, w0, 31
|
|
mov w0, 1
|
|
lsl w0, w0, w1
|
|
ldr w1, [x3, x2]
|
|
bic w0, w1, w0
|
|
str w0, [x3, x2]
|
|
ret
|
|
.size ftl_set_blk_mode, .-ftl_set_blk_mode
|
|
.section .text.ftl_get_blk_mode,"ax",@progbits
|
|
.align 2
|
|
.global ftl_get_blk_mode
|
|
.type ftl_get_blk_mode, %function
|
|
ftl_get_blk_mode:
|
|
adrp x1, .LANCHOR1
|
|
and w0, w0, 65535
|
|
ldr x1, [x1, #:lo12:.LANCHOR1]
|
|
ubfx x2, x0, 5, 11
|
|
and w0, w0, 31
|
|
ldr w1, [x1, x2, lsl 2]
|
|
lsr w0, w1, w0
|
|
and w0, w0, 1
|
|
ret
|
|
.size ftl_get_blk_mode, .-ftl_get_blk_mode
|
|
.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, .LANCHOR38
|
|
add x4, x4, 16
|
|
strh wzr, [x0, 4]
|
|
add x4, x0, x4
|
|
ldrh w3, [x1, #:lo12:.LANCHOR38]
|
|
mov w1, 65535
|
|
.L542:
|
|
cmp w2, w3
|
|
bcc .L544
|
|
adrp x1, .LANCHOR52
|
|
ubfiz x3, x3, 1, 16
|
|
add x3, x3, 16
|
|
add x2, x0, 16
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
add x3, x0, x3
|
|
mov w5, 65535
|
|
sub w1, w1, #1
|
|
and w1, w1, 65535
|
|
sub w1, w1, w6
|
|
.L545:
|
|
cmp x2, x3
|
|
bne .L547
|
|
ret
|
|
.L544:
|
|
ldrh w5, [x4]
|
|
cmp w5, w1
|
|
beq .L543
|
|
ldrh w5, [x0, 4]
|
|
add w5, w5, 1
|
|
strh w5, [x0, 4]
|
|
.L543:
|
|
add w2, w2, 1
|
|
add x4, x4, 2
|
|
and w2, w2, 65535
|
|
b .L542
|
|
.L547:
|
|
ldrh w4, [x2]
|
|
cmp w4, w5
|
|
beq .L546
|
|
ldrh w4, [x0, 4]
|
|
add w4, w1, w4
|
|
strh w4, [x0, 4]
|
|
.L546:
|
|
add x2, x2, 2
|
|
b .L545
|
|
.size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
|
|
.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, .LANCHOR40
|
|
ldrh w0, [x0, #:lo12:.LANCHOR40]
|
|
cmp w1, w0
|
|
bcc .L549
|
|
mov w2, 2819
|
|
adrp x1, .LANCHOR103
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR103
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L549:
|
|
adrp x0, .LANCHOR38
|
|
adrp x7, .LANCHOR47
|
|
add x6, x19, 16
|
|
add x7, x7, :lo12:.LANCHOR47
|
|
ldrh w8, [x0, #:lo12:.LANCHOR38]
|
|
mov x5, 0
|
|
strh wzr, [x19, 4]
|
|
mov w10, -1
|
|
strb wzr, [x19, 7]
|
|
.L550:
|
|
cmp w8, w5, uxth
|
|
bhi .L552
|
|
adrp x1, .LANCHOR52
|
|
ldrb w0, [x19, 7]
|
|
strb wzr, [x19, 9]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
mul w0, w0, w1
|
|
strh w0, [x19, 4]
|
|
adrp x0, .LANCHOR104
|
|
ldr w0, [x0, #:lo12:.LANCHOR104]
|
|
cbz w0, .L553
|
|
adrp x0, .LANCHOR80
|
|
ldrh w1, [x19]
|
|
ldr x0, [x0, #:lo12:.LANCHOR80]
|
|
ldrh w0, [x0, x1, lsl 1]
|
|
cmp w0, 79
|
|
bhi .L553
|
|
mov w0, 1
|
|
strb w0, [x19, 9]
|
|
.L553:
|
|
adrp x0, .LANCHOR2
|
|
ldrb w0, [x0, #:lo12:.LANCHOR2]
|
|
cbz w0, .L554
|
|
mov w0, 1
|
|
strb w0, [x19, 9]
|
|
.L554:
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L552:
|
|
ldrh w1, [x19]
|
|
ldrb w0, [x7, x5]
|
|
bl V2P_block
|
|
mov w4, w0
|
|
strh w10, [x6]
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L551
|
|
strh w4, [x6]
|
|
ldrb w0, [x19, 7]
|
|
add w0, w0, 1
|
|
strb w0, [x19, 7]
|
|
.L551:
|
|
add x5, x5, 1
|
|
add x6, x6, 2
|
|
b .L550
|
|
.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, .LANCHOR38
|
|
mov x7, 0
|
|
adrp x8, .LANCHOR47
|
|
ldrh w10, [x0, #:lo12:.LANCHOR38]
|
|
adrp x0, .LANCHOR52
|
|
mov w5, 0
|
|
add x8, x8, :lo12:.LANCHOR47
|
|
ldrh w11, [x0, #:lo12:.LANCHOR52]
|
|
cmp w10, w7, uxth
|
|
bhi .L574
|
|
cbz w5, .L572
|
|
mov w0, 32768
|
|
sdiv w5, w0, w5
|
|
.L573:
|
|
adrp x0, .LANCHOR83
|
|
mov w1, 6
|
|
ldr x0, [x0, #:lo12:.LANCHOR83]
|
|
umaddl x6, w6, w1, x0
|
|
mov w0, 0
|
|
strh w5, [x6, 4]
|
|
ret
|
|
.L567:
|
|
mov w5, 0
|
|
b .L566
|
|
.L572:
|
|
mov w5, 0
|
|
b .L573
|
|
.L574:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
.L565:
|
|
ldrb w0, [x8, x7]
|
|
mov w1, w6
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L564
|
|
add w5, w5, w11
|
|
and w5, w5, 65535
|
|
.L564:
|
|
add x7, x7, 1
|
|
cmp w10, w7, uxth
|
|
bhi .L565
|
|
cbz w5, .L567
|
|
mov w0, 32768
|
|
sdiv w5, w0, w5
|
|
.L566:
|
|
adrp x0, .LANCHOR83
|
|
mov w1, 6
|
|
ldr x0, [x0, #:lo12:.LANCHOR83]
|
|
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, .LANCHOR89
|
|
ldr x0, [x0, #:lo12:.LANCHOR89]
|
|
cbz x0, .L577
|
|
adrp x1, .LANCHOR83
|
|
ldr x1, [x1, #:lo12:.LANCHOR83]
|
|
sub x0, x0, x1
|
|
mov x1, -6148914691236517206
|
|
asr x0, x0, 1
|
|
movk x1, 0xaaab, lsl 0
|
|
mul x0, x0, x1
|
|
adrp x1, .LANCHOR80
|
|
ldr x1, [x1, #:lo12:.LANCHOR80]
|
|
and x0, x0, 65535
|
|
ldrh w0, [x1, x0, lsl 1]
|
|
ret
|
|
.L577:
|
|
mov w0, 0
|
|
ret
|
|
.size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
|
|
.section .text.GetFreeBlockMaxEraseCount,"ax",@progbits
|
|
.align 2
|
|
.global GetFreeBlockMaxEraseCount
|
|
.type GetFreeBlockMaxEraseCount, %function
|
|
GetFreeBlockMaxEraseCount:
|
|
adrp x1, .LANCHOR89
|
|
and w0, w0, 65535
|
|
ldr x1, [x1, #:lo12:.LANCHOR89]
|
|
cbz x1, .L585
|
|
adrp x2, .LANCHOR90
|
|
mov w3, 7
|
|
mov w5, 6
|
|
mov w6, 65535
|
|
ldrh w2, [x2, #:lo12:.LANCHOR90]
|
|
mul w2, w2, w3
|
|
asr w2, w2, 3
|
|
cmp w0, w2
|
|
csel w0, w2, w0, gt
|
|
adrp x2, .LANCHOR83
|
|
ldr x3, [x2, #:lo12:.LANCHOR83]
|
|
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
|
|
.L581:
|
|
cmp w0, w2
|
|
beq .L584
|
|
umull x4, w1, w5
|
|
ldrh w4, [x3, x4]
|
|
cmp w4, w6
|
|
bne .L582
|
|
.L584:
|
|
adrp x0, .LANCHOR80
|
|
ubfiz x1, x1, 1, 16
|
|
ldr x0, [x0, #:lo12:.LANCHOR80]
|
|
ldrh w0, [x0, x1]
|
|
ret
|
|
.L582:
|
|
add w2, w2, 1
|
|
mov w1, w4
|
|
and w2, w2, 65535
|
|
b .L581
|
|
.L585:
|
|
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 .L589
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x2, .LANCHOR85
|
|
ubfiz x1, x0, 1, 16
|
|
add x29, sp, 0
|
|
ldr x2, [x2, #:lo12:.LANCHOR85]
|
|
strh wzr, [x2, x1]
|
|
bl INSERT_FREE_LIST
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L589:
|
|
mov w0, 0
|
|
ret
|
|
.size free_data_superblock, .-free_data_superblock
|
|
.section .text.FtlGcBufInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcBufInit
|
|
.type FtlGcBufInit, %function
|
|
FtlGcBufInit:
|
|
adrp x1, .LANCHOR106
|
|
adrp x0, .LANCHOR105
|
|
adrp x7, .LANCHOR107
|
|
adrp x6, .LANCHOR108
|
|
ldr x5, [x1, #:lo12:.LANCHOR106]
|
|
adrp x1, .LANCHOR57
|
|
str wzr, [x0, #:lo12:.LANCHOR105]
|
|
adrp x0, .LANCHOR38
|
|
ldrh w10, [x1, #:lo12:.LANCHOR57]
|
|
adrp x1, .LANCHOR58
|
|
ldrh w0, [x0, #:lo12:.LANCHOR38]
|
|
mov w8, 24
|
|
ldrh w11, [x1, #:lo12:.LANCHOR58]
|
|
adrp x1, .LANCHOR109
|
|
ldr x14, [x7, #:lo12:.LANCHOR107]
|
|
mov x3, x5
|
|
ldr x4, [x1, #:lo12:.LANCHOR109]
|
|
mov w2, 0
|
|
ldr x15, [x6, #:lo12:.LANCHOR108]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x8, w0, w8, x5
|
|
add x4, x4, 8
|
|
mov w1, 0
|
|
mov w16, 1
|
|
.L593:
|
|
add w13, w2, w10
|
|
add w12, w1, w11
|
|
cmp x3, x8
|
|
bne .L594
|
|
adrp x1, .LANCHOR110
|
|
ldr x7, [x7, #:lo12:.LANCHOR107]
|
|
ldr x6, [x6, #:lo12:.LANCHOR108]
|
|
mov w8, 24
|
|
ldr w4, [x1, #:lo12:.LANCHOR110]
|
|
.L595:
|
|
cmp w0, w4
|
|
bcc .L596
|
|
ret
|
|
.L594:
|
|
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, 56
|
|
mov w1, w12
|
|
mov w2, w13
|
|
b .L593
|
|
.L596:
|
|
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 .L595
|
|
.size FtlGcBufInit, .-FtlGcBufInit
|
|
.section .text.FtlGcBufFree,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcBufFree
|
|
.type FtlGcBufFree, %function
|
|
FtlGcBufFree:
|
|
adrp x2, .LANCHOR110
|
|
mov w3, 0
|
|
mov w7, 56
|
|
mov w10, 24
|
|
ldr w8, [x2, #:lo12:.LANCHOR110]
|
|
adrp x2, .LANCHOR106
|
|
ldr x4, [x2, #:lo12:.LANCHOR106]
|
|
.L598:
|
|
cmp w3, w1
|
|
bcs .L597
|
|
umaddl x6, w3, w7, x0
|
|
mov w2, 0
|
|
b .L603
|
|
.L599:
|
|
add w2, w2, 1
|
|
and w2, w2, 65535
|
|
.L603:
|
|
cmp w2, w8
|
|
bcs .L600
|
|
umull x5, w2, w10
|
|
add x11, x4, x5
|
|
ldr x12, [x4, x5]
|
|
ldr x5, [x6, 8]
|
|
cmp x12, x5
|
|
bne .L599
|
|
str wzr, [x11, 16]
|
|
.L600:
|
|
add w3, w3, 1
|
|
and w3, w3, 65535
|
|
b .L598
|
|
.L597:
|
|
ret
|
|
.size FtlGcBufFree, .-FtlGcBufFree
|
|
.section .text.FtlGcBufAlloc,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcBufAlloc
|
|
.type FtlGcBufAlloc, %function
|
|
FtlGcBufAlloc:
|
|
adrp x2, .LANCHOR110
|
|
mov w3, 0
|
|
mov w7, 24
|
|
mov w8, 1
|
|
ldr w5, [x2, #:lo12:.LANCHOR110]
|
|
adrp x2, .LANCHOR106
|
|
mov w10, 56
|
|
ldr x6, [x2, #:lo12:.LANCHOR106]
|
|
.L605:
|
|
cmp w3, w1
|
|
bcs .L604
|
|
mov w2, 0
|
|
b .L610
|
|
.L606:
|
|
add w2, w2, 1
|
|
and w2, w2, 65535
|
|
.L610:
|
|
cmp w2, w5
|
|
bcs .L607
|
|
umaddl x4, w2, w7, x6
|
|
ldr w11, [x4, 16]
|
|
cbnz w11, .L606
|
|
umaddl x2, w3, w10, x0
|
|
ldr x11, [x4]
|
|
str w8, [x4, 16]
|
|
ldr x4, [x4, 8]
|
|
stp x11, x4, [x2, 8]
|
|
.L607:
|
|
add w3, w3, 1
|
|
and w3, w3, 65535
|
|
b .L605
|
|
.L604:
|
|
ret
|
|
.size FtlGcBufAlloc, .-FtlGcBufAlloc
|
|
.section .text.IsBlkInGcList,"ax",@progbits
|
|
.align 2
|
|
.global IsBlkInGcList
|
|
.type IsBlkInGcList, %function
|
|
IsBlkInGcList:
|
|
adrp x1, .LANCHOR111
|
|
and w0, w0, 65535
|
|
ldrh w2, [x1, #:lo12:.LANCHOR111]
|
|
adrp x1, .LANCHOR112
|
|
ldr x3, [x1, #:lo12:.LANCHOR112]
|
|
mov x1, 0
|
|
.L612:
|
|
cmp w2, w1, uxth
|
|
bhi .L614
|
|
mov w0, 0
|
|
ret
|
|
.L614:
|
|
add x1, x1, 1
|
|
add x4, x3, x1, lsl 1
|
|
ldrh w4, [x4, -2]
|
|
cmp w4, w0
|
|
bne .L612
|
|
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, .LANCHOR111
|
|
adrp x2, .LANCHOR112
|
|
mov x3, 0
|
|
ldrh w1, [x4, #:lo12:.LANCHOR111]
|
|
ldr x5, [x2, #:lo12:.LANCHOR112]
|
|
.L617:
|
|
and w2, w3, 65535
|
|
cmp w2, w1
|
|
bcc .L619
|
|
bne .L618
|
|
and x3, x3, 65535
|
|
strh w0, [x5, x3, lsl 1]
|
|
ldrh w0, [x4, #:lo12:.LANCHOR111]
|
|
add w0, w0, 1
|
|
strh w0, [x4, #:lo12:.LANCHOR111]
|
|
b .L618
|
|
.L619:
|
|
add x3, x3, 1
|
|
add x2, x5, x3, lsl 1
|
|
ldrh w2, [x2, -2]
|
|
cmp w2, w7
|
|
bne .L617
|
|
.L618:
|
|
adrp x4, .LANCHOR113
|
|
adrp x1, .LANCHOR114
|
|
mov w3, 12
|
|
ldrh w0, [x4, #:lo12:.LANCHOR113]
|
|
ldr x5, [x1, #:lo12:.LANCHOR114]
|
|
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:.LANCHOR113]
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlGcUpdatePage, .-FtlGcUpdatePage
|
|
.section .text.FtlGcRefreshOpenBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcRefreshOpenBlock
|
|
.type FtlGcRefreshOpenBlock, %function
|
|
FtlGcRefreshOpenBlock:
|
|
adrp x8, .LANCHOR115
|
|
and w0, w0, 65535
|
|
ldrh w10, [x8, #:lo12:.LANCHOR115]
|
|
cmp w10, w0
|
|
beq .L622
|
|
adrp x6, .LANCHOR116
|
|
ldrh w7, [x6, #:lo12:.LANCHOR116]
|
|
cmp w0, w7
|
|
beq .L622
|
|
adrp x4, .LANCHOR117
|
|
ldrh w5, [x4, #:lo12:.LANCHOR117]
|
|
cmp w0, w5
|
|
beq .L622
|
|
adrp x2, .LANCHOR118
|
|
ldrh w3, [x2, #:lo12:.LANCHOR118]
|
|
cmp w0, w3
|
|
beq .L622
|
|
mov w1, 65535
|
|
cmp w10, w1
|
|
bne .L623
|
|
strh w0, [x8, #:lo12:.LANCHOR115]
|
|
.L622:
|
|
mov w0, 0
|
|
ret
|
|
.L623:
|
|
cmp w7, w1
|
|
bne .L624
|
|
strh w0, [x6, #:lo12:.LANCHOR116]
|
|
b .L622
|
|
.L624:
|
|
cmp w5, w1
|
|
bne .L625
|
|
strh w0, [x4, #:lo12:.LANCHOR117]
|
|
b .L622
|
|
.L625:
|
|
cmp w3, w1
|
|
bne .L622
|
|
strh w0, [x2, #:lo12:.LANCHOR118]
|
|
b .L622
|
|
.size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock
|
|
.section .text.FtlGcRefreshBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcRefreshBlock
|
|
.type FtlGcRefreshBlock, %function
|
|
FtlGcRefreshBlock:
|
|
adrp x8, .LANCHOR115
|
|
and w0, w0, 65535
|
|
ldrh w10, [x8, #:lo12:.LANCHOR115]
|
|
cmp w10, w0
|
|
beq .L634
|
|
adrp x6, .LANCHOR116
|
|
ldrh w7, [x6, #:lo12:.LANCHOR116]
|
|
cmp w0, w7
|
|
beq .L634
|
|
adrp x4, .LANCHOR117
|
|
ldrh w5, [x4, #:lo12:.LANCHOR117]
|
|
cmp w0, w5
|
|
beq .L634
|
|
adrp x2, .LANCHOR118
|
|
ldrh w3, [x2, #:lo12:.LANCHOR118]
|
|
cmp w0, w3
|
|
beq .L634
|
|
mov w1, 65535
|
|
cmp w10, w1
|
|
bne .L628
|
|
strh w0, [x8, #:lo12:.LANCHOR115]
|
|
.L634:
|
|
mov w0, 0
|
|
ret
|
|
.L628:
|
|
cmp w7, w1
|
|
bne .L629
|
|
strh w0, [x6, #:lo12:.LANCHOR116]
|
|
b .L634
|
|
.L629:
|
|
cmp w5, w1
|
|
bne .L630
|
|
strh w0, [x4, #:lo12:.LANCHOR117]
|
|
b .L634
|
|
.L630:
|
|
cmp w3, w1
|
|
bne .L635
|
|
strh w0, [x2, #:lo12:.LANCHOR118]
|
|
b .L634
|
|
.L635:
|
|
mov w0, -1
|
|
ret
|
|
.size FtlGcRefreshBlock, .-FtlGcRefreshBlock
|
|
.section .text.FtlGcMarkBadPhyBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcMarkBadPhyBlk
|
|
.type FtlGcMarkBadPhyBlk, %function
|
|
FtlGcMarkBadPhyBlk:
|
|
and w12, w0, 65535
|
|
stp x29, x30, [sp, -16]!
|
|
mov w0, w12
|
|
add x29, sp, 0
|
|
bl P2V_block_in_plane
|
|
and w11, w0, 65535
|
|
bl FtlGcRefreshBlock
|
|
adrp x0, .LANCHOR104
|
|
ldr w0, [x0, #:lo12:.LANCHOR104]
|
|
cbz w0, .L637
|
|
adrp x1, .LANCHOR80
|
|
ubfiz x0, x11, 1, 16
|
|
ldr x2, [x1, #:lo12:.LANCHOR80]
|
|
ldrh w1, [x2, x0]
|
|
cmp w1, 39
|
|
bls .L637
|
|
sub w1, w1, #40
|
|
strh w1, [x2, x0]
|
|
.L637:
|
|
adrp x1, .LANCHOR119
|
|
adrp x3, .LANCHOR120
|
|
add x3, x3, :lo12:.LANCHOR120
|
|
mov x2, 0
|
|
ldrh w0, [x1, #:lo12:.LANCHOR119]
|
|
.L638:
|
|
cmp w0, w2, uxth
|
|
bhi .L640
|
|
cmp w0, 15
|
|
bhi .L639
|
|
add w2, w0, 1
|
|
strh w2, [x1, #:lo12:.LANCHOR119]
|
|
adrp x1, .LANCHOR120
|
|
add x1, x1, :lo12:.LANCHOR120
|
|
strh w12, [x1, w0, sxtw 1]
|
|
b .L639
|
|
.L640:
|
|
add x2, x2, 1
|
|
add x4, x3, x2, lsl 1
|
|
ldrh w4, [x4, -2]
|
|
cmp w4, w12
|
|
bne .L638
|
|
.L639:
|
|
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, .LANCHOR119
|
|
ldrh w0, [x0, #:lo12:.LANCHOR119]
|
|
cbz w0, .L652
|
|
adrp x1, .LANCHOR115
|
|
ldrh w2, [x1, #:lo12:.LANCHOR115]
|
|
mov w1, 65535
|
|
cmp w2, w1
|
|
bne .L652
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x11, .LANCHOR121
|
|
add x29, sp, 0
|
|
ldrh w1, [x11, #:lo12:.LANCHOR121]
|
|
cmp w1, w0
|
|
bcc .L647
|
|
strh wzr, [x11, #:lo12:.LANCHOR121]
|
|
.L647:
|
|
ldrh w1, [x11, #:lo12:.LANCHOR121]
|
|
adrp x0, .LANCHOR120
|
|
add x0, x0, :lo12:.LANCHOR120
|
|
ldrh w0, [x0, x1, lsl 1]
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
ldrh w0, [x11, #:lo12:.LANCHOR121]
|
|
ldp x29, x30, [sp], 16
|
|
add w0, w0, 1
|
|
strh w0, [x11, #:lo12:.LANCHOR121]
|
|
mov w0, 0
|
|
ret
|
|
.L652:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
|
|
.section .text.flash_boot_enter_slc_mode,"ax",@progbits
|
|
.align 2
|
|
.global flash_boot_enter_slc_mode
|
|
.type flash_boot_enter_slc_mode, %function
|
|
flash_boot_enter_slc_mode:
|
|
adrp x1, .LANCHOR122
|
|
and w0, w0, 255
|
|
ldr w2, [x1, #:lo12:.LANCHOR122]
|
|
mov w1, 12336
|
|
movk w1, 0x5638, lsl 16
|
|
cmp w2, w1
|
|
bne .L655
|
|
b flash_enter_slc_mode
|
|
.L655:
|
|
ret
|
|
.size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode
|
|
.section .text.flash_boot_exit_slc_mode,"ax",@progbits
|
|
.align 2
|
|
.global flash_boot_exit_slc_mode
|
|
.type flash_boot_exit_slc_mode, %function
|
|
flash_boot_exit_slc_mode:
|
|
adrp x1, .LANCHOR122
|
|
and w0, w0, 255
|
|
ldr w2, [x1, #:lo12:.LANCHOR122]
|
|
mov w1, 12336
|
|
movk w1, 0x5638, lsl 16
|
|
cmp w2, w1
|
|
bne .L657
|
|
b flash_exit_slc_mode
|
|
.L657:
|
|
ret
|
|
.size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode
|
|
.section .text.FW_FlashBlockErase.constprop.42,"ax",@progbits
|
|
.align 2
|
|
.type FW_FlashBlockErase.constprop.42, %function
|
|
FW_FlashBlockErase.constprop.42:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w20, w0
|
|
adrp x0, .LANCHOR7
|
|
ldr x0, [x0, #:lo12:.LANCHOR7]
|
|
ldrb w19, [x0, 9]
|
|
mov w0, 0
|
|
bl flash_boot_enter_slc_mode
|
|
mov w2, 0
|
|
mov w0, 0
|
|
udiv w1, w20, w19
|
|
bl FlashEraseBlock
|
|
mov w19, w0
|
|
mov w0, 0
|
|
bl flash_boot_exit_slc_mode
|
|
and w0, w19, 255
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size FW_FlashBlockErase.constprop.42, .-FW_FlashBlockErase.constprop.42
|
|
.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.BuildFlashLsbPageTable,"ax",@progbits
|
|
.align 2
|
|
.global BuildFlashLsbPageTable
|
|
.type BuildFlashLsbPageTable, %function
|
|
BuildFlashLsbPageTable:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, w1
|
|
cbnz w0, .L663
|
|
adrp x1, .LANCHOR17
|
|
add x1, x1, :lo12:.LANCHOR17
|
|
mov x0, 0
|
|
.L664:
|
|
strh w0, [x1, x0, lsl 1]
|
|
add x0, x0, 1
|
|
cmp x0, 512
|
|
bne .L664
|
|
.L670:
|
|
adrp x20, .LANCHOR123
|
|
add x20, x20, :lo12:.LANCHOR123
|
|
mov w1, 255
|
|
mov w2, 2048
|
|
mov x0, x20
|
|
bl ftl_memset
|
|
adrp x1, .LANCHOR17
|
|
and w19, w19, 65535
|
|
add x1, x1, :lo12:.LANCHOR17
|
|
mov x0, 0
|
|
.L665:
|
|
cmp w19, w0, uxth
|
|
bhi .L698
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L663:
|
|
cmp w0, 1
|
|
bne .L666
|
|
adrp x2, .LANCHOR17
|
|
add x2, x2, :lo12:.LANCHOR17
|
|
mov x1, 0
|
|
.L669:
|
|
and w0, w1, 65535
|
|
cmp x1, 3
|
|
bls .L667
|
|
ubfiz w3, w0, 1, 15
|
|
and w0, w0, 1
|
|
add w0, w0, 2
|
|
sub w0, w3, w0
|
|
and w0, w0, 65535
|
|
.L667:
|
|
strh w0, [x2, x1, lsl 1]
|
|
add x1, x1, 1
|
|
cmp x1, 512
|
|
bne .L669
|
|
b .L670
|
|
.L666:
|
|
cmp w0, 2
|
|
bne .L671
|
|
adrp x2, .LANCHOR17
|
|
add x2, x2, :lo12:.LANCHOR17
|
|
mov w1, 65535
|
|
mov x0, 0
|
|
.L673:
|
|
cmp x0, 2
|
|
and w3, w0, 65535
|
|
csel w3, w3, w1, cc
|
|
strh w3, [x2, x0, lsl 1]
|
|
add w1, w1, 2
|
|
add x0, x0, 1
|
|
and w1, w1, 65535
|
|
cmp x0, 512
|
|
bne .L673
|
|
b .L670
|
|
.L671:
|
|
cmp w0, 3
|
|
bne .L674
|
|
adrp x2, .LANCHOR17
|
|
add x2, x2, :lo12:.LANCHOR17
|
|
mov x1, 0
|
|
.L677:
|
|
and w0, w1, 65535
|
|
cmp x1, 5
|
|
bls .L675
|
|
ubfiz w3, w0, 1, 15
|
|
and w0, w0, 1
|
|
add w0, w0, 4
|
|
sub w0, w3, w0
|
|
and w0, w0, 65535
|
|
.L675:
|
|
strh w0, [x2, x1, lsl 1]
|
|
add x1, x1, 1
|
|
cmp x1, 512
|
|
bne .L677
|
|
b .L670
|
|
.L674:
|
|
cmp w0, 4
|
|
bne .L678
|
|
adrp x2, .LANCHOR17
|
|
add x1, x2, :lo12:.LANCHOR17
|
|
add x1, x1, 16
|
|
strh wzr, [x2, #:lo12:.LANCHOR17]
|
|
mov w2, 1
|
|
strh w0, [x1, -8]
|
|
mov w0, 5
|
|
strh w2, [x1, -14]
|
|
mov w2, 2
|
|
strh w0, [x1, -6]
|
|
mov w0, 7
|
|
strh w2, [x1, -12]
|
|
mov w2, 3
|
|
strh w0, [x1, -4]
|
|
mov w0, 8
|
|
strh w2, [x1, -10]
|
|
strh w0, [x1, -2]
|
|
mov w0, 8
|
|
.L680:
|
|
and w3, w0, 1
|
|
ubfiz w2, w0, 1, 15
|
|
add w3, w3, 6
|
|
add w0, w0, 1
|
|
sub w2, w2, w3
|
|
strh w2, [x1], 2
|
|
and w0, w0, 65535
|
|
cmp w0, 512
|
|
bne .L680
|
|
b .L670
|
|
.L678:
|
|
cmp w0, 5
|
|
bne .L681
|
|
adrp x1, .LANCHOR17
|
|
add x1, x1, :lo12:.LANCHOR17
|
|
mov x0, 0
|
|
.L682:
|
|
strh w0, [x1, x0, lsl 1]
|
|
add x0, x0, 1
|
|
cmp x0, 16
|
|
bne .L682
|
|
add x1, x1, 32
|
|
.L683:
|
|
strh w0, [x1], 2
|
|
add w0, w0, 2
|
|
and w0, w0, 65535
|
|
cmp w0, 1008
|
|
bne .L683
|
|
b .L670
|
|
.L681:
|
|
cmp w0, 6
|
|
bne .L684
|
|
adrp x3, .LANCHOR17
|
|
add x3, x3, :lo12:.LANCHOR17
|
|
mov w1, 0
|
|
mov x2, 0
|
|
mov w4, 12
|
|
mov w5, 10
|
|
.L687:
|
|
and w0, w2, 65535
|
|
cmp x2, 5
|
|
bls .L685
|
|
tst x0, 1
|
|
csel w0, w4, w5, ne
|
|
sub w0, w1, w0
|
|
and w0, w0, 65535
|
|
.L685:
|
|
strh w0, [x3, x2, lsl 1]
|
|
add w1, w1, 3
|
|
and w1, w1, 65535
|
|
add x2, x2, 1
|
|
cmp w1, 1536
|
|
bne .L687
|
|
b .L670
|
|
.L684:
|
|
cmp w0, 9
|
|
bne .L688
|
|
adrp x1, .LANCHOR17
|
|
add x0, x1, :lo12:.LANCHOR17
|
|
strh wzr, [x1, #:lo12:.LANCHOR17]
|
|
mov w1, 1
|
|
strh w1, [x0, 2]
|
|
mov w1, 2
|
|
strh w1, [x0, 4]
|
|
add x1, x0, 6
|
|
mov w0, 3
|
|
.L689:
|
|
strh w0, [x1], 2
|
|
add w0, w0, 2
|
|
and w0, w0, 65535
|
|
cmp w0, 1021
|
|
bne .L689
|
|
b .L670
|
|
.L688:
|
|
cmp w0, 10
|
|
bne .L690
|
|
adrp x1, .LANCHOR17
|
|
add x1, x1, :lo12:.LANCHOR17
|
|
mov x0, 0
|
|
.L691:
|
|
strh w0, [x1, x0, lsl 1]
|
|
add x0, x0, 1
|
|
cmp x0, 63
|
|
bne .L691
|
|
add x1, x1, 126
|
|
.L692:
|
|
strh w0, [x1], 2
|
|
add w0, w0, 2
|
|
and w0, w0, 65535
|
|
cmp w0, 961
|
|
bne .L692
|
|
b .L670
|
|
.L690:
|
|
cmp w0, 11
|
|
bne .L693
|
|
adrp x1, .LANCHOR17
|
|
add x1, x1, :lo12:.LANCHOR17
|
|
mov x0, 0
|
|
.L694:
|
|
strh w0, [x1, x0, lsl 1]
|
|
add x0, x0, 1
|
|
cmp x0, 8
|
|
bne .L694
|
|
add x1, x1, 16
|
|
.L696:
|
|
and w3, w0, 1
|
|
ubfiz w2, w0, 1, 15
|
|
add w3, w3, 6
|
|
add w0, w0, 1
|
|
sub w2, w2, w3
|
|
strh w2, [x1], 2
|
|
and w0, w0, 65535
|
|
cmp w0, 512
|
|
bne .L696
|
|
b .L670
|
|
.L693:
|
|
cmp w0, 12
|
|
bne .L670
|
|
adrp x1, .LANCHOR17
|
|
add x0, x1, :lo12:.LANCHOR17
|
|
strh wzr, [x1, #:lo12:.LANCHOR17]
|
|
mov w1, 1
|
|
strh w1, [x0, 2]
|
|
mov w1, 2
|
|
strh w1, [x0, 4]
|
|
mov w1, 3
|
|
strh w1, [x0, 6]
|
|
add x1, x0, 8
|
|
mov w0, 4
|
|
.L697:
|
|
sub w2, w0, #1
|
|
add w2, w2, w0, lsr 1
|
|
add w0, w0, 1
|
|
strh w2, [x1], 2
|
|
and w0, w0, 65535
|
|
cmp w0, 512
|
|
bne .L697
|
|
b .L670
|
|
.L698:
|
|
ldrh w2, [x1, x0, lsl 1]
|
|
add x0, x0, 1
|
|
strh w2, [x20, w2, sxtw 1]
|
|
b .L665
|
|
.size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
|
|
.section .text.FlashDieInfoInit,"ax",@progbits
|
|
.align 2
|
|
.global FlashDieInfoInit
|
|
.type FlashDieInfoInit, %function
|
|
FlashDieInfoInit:
|
|
stp x29, x30, [sp, -80]!
|
|
adrp x0, .LANCHOR31+10
|
|
add x29, sp, 0
|
|
ldrh w0, [x0, #:lo12:.LANCHOR31+10]
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR124
|
|
str x25, [sp, 64]
|
|
adrp x25, .LANCHOR26
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR27
|
|
strb wzr, [x19, #:lo12:.LANCHOR124]
|
|
add x21, x24, :lo12:.LANCHOR27
|
|
strb wzr, [x25, #:lo12:.LANCHOR26]
|
|
bl FlashBlockAlignInit
|
|
mov w2, 8
|
|
mov w1, 0
|
|
adrp x23, .LANCHOR18
|
|
mov x0, x21
|
|
add x20, x23, :lo12:.LANCHOR18
|
|
bl ftl_memset
|
|
mov w2, 32
|
|
mov w1, 0
|
|
mov x0, x20
|
|
bl ftl_memset
|
|
mov w2, 192
|
|
mov w1, 0
|
|
adrp x0, .LANCHOR23
|
|
add x0, x0, :lo12:.LANCHOR23
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR7
|
|
adrp x13, .LANCHOR22
|
|
add x15, x25, :lo12:.LANCHOR26
|
|
add x10, x13, :lo12:.LANCHOR22
|
|
ldr x7, [x0, #:lo12:.LANCHOR7]
|
|
add x11, x7, 1
|
|
ldrb w12, [x7]
|
|
.L722:
|
|
mov w2, w12
|
|
add x1, x10, x22, lsl 3
|
|
mov x0, x11
|
|
bl FlashMemCmp8
|
|
cbnz w0, .L721
|
|
ldrb w1, [x15]
|
|
add w0, w1, 1
|
|
strb w0, [x15]
|
|
str wzr, [x20, x1, lsl 2]
|
|
strb w22, [x21, x1]
|
|
.L721:
|
|
add x22, x22, 1
|
|
cmp x22, 4
|
|
bne .L722
|
|
ldrb w0, [x25, #:lo12:.LANCHOR26]
|
|
strb w0, [x19, #:lo12:.LANCHOR124]
|
|
ldrb w0, [x7, 8]
|
|
cmp w0, 2
|
|
beq .L723
|
|
.L727:
|
|
ldrb w0, [x25, #:lo12:.LANCHOR26]
|
|
ldrh w1, [x7, 14]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
mul w0, w0, w1
|
|
ldrb w1, [x7, 13]
|
|
ldp x23, x24, [sp, 48]
|
|
ldr x25, [sp, 64]
|
|
mul w0, w0, w1
|
|
adrp x1, .LANCHOR125
|
|
ldp x29, x30, [sp], 80
|
|
strh w0, [x1, #:lo12:.LANCHOR125]
|
|
ret
|
|
.L723:
|
|
adrp x0, .LANCHOR4
|
|
add x13, x13, :lo12:.LANCHOR22
|
|
add x15, x25, :lo12:.LANCHOR26
|
|
add x23, x23, :lo12:.LANCHOR18
|
|
ldr w20, [x0, #:lo12:.LANCHOR4]
|
|
add x14, x24, :lo12:.LANCHOR27
|
|
mov x19, 0
|
|
.L726:
|
|
mov w2, w12
|
|
add x1, x13, x19, lsl 3
|
|
mov x0, x11
|
|
bl FlashMemCmp8
|
|
cbnz w0, .L724
|
|
ldrb w2, [x7, 13]
|
|
ldrh w0, [x7, 14]
|
|
ldrb w1, [x15]
|
|
and w0, w0, 65280
|
|
mul w2, w2, w20
|
|
mul w0, w0, w2
|
|
sxtw x2, w1
|
|
str w0, [x23, x2, lsl 2]
|
|
ldrb w3, [x7, 23]
|
|
cbz w3, .L725
|
|
lsl w0, w0, 1
|
|
str w0, [x23, x2, lsl 2]
|
|
.L725:
|
|
add w1, w1, 1
|
|
strb w19, [x14, x2]
|
|
strb w1, [x15]
|
|
.L724:
|
|
add x19, x19, 1
|
|
cmp x19, 4
|
|
bne .L726
|
|
b .L727
|
|
.size FlashDieInfoInit, .-FlashDieInfoInit
|
|
.section .text.ftl_read_flash_info,"ax",@progbits
|
|
.align 2
|
|
.global ftl_read_flash_info
|
|
.type ftl_read_flash_info, %function
|
|
ftl_read_flash_info:
|
|
stp x29, x30, [sp, -32]!
|
|
mov w2, 11
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
mov x19, x0
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR7
|
|
mov w4, 1
|
|
ldr x2, [x0, #:lo12:.LANCHOR7]
|
|
adrp x0, .LANCHOR4
|
|
ldr w0, [x0, #:lo12:.LANCHOR4]
|
|
ldrb w3, [x2, 9]
|
|
mul w0, w0, w3
|
|
and w1, w0, 65535
|
|
strb w1, [x19, 4]
|
|
ubfx x0, x1, 8, 8
|
|
strb w0, [x19, 5]
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
strb w0, [x19, 7]
|
|
ldrb w0, [x2, 13]
|
|
mul w0, w0, w1
|
|
ldrh w1, [x2, 14]
|
|
mul w0, w0, w1
|
|
ldrb w1, [x2, 8]
|
|
strb w3, [x19, 6]
|
|
mul w0, w0, w1
|
|
strb w0, [x19]
|
|
ubfx x1, x0, 8, 8
|
|
strb w1, [x19, 1]
|
|
ubfx x1, x0, 16, 8
|
|
lsr w0, w0, 24
|
|
strb w1, [x19, 2]
|
|
mov x1, 0
|
|
strb w0, [x19, 3]
|
|
mov w0, 32
|
|
strb w0, [x19, 8]
|
|
ldrb w0, [x2, 7]
|
|
adrp x2, .LANCHOR27
|
|
strb w0, [x19, 9]
|
|
add x2, x2, :lo12:.LANCHOR27
|
|
adrp x0, .LANCHOR26
|
|
strb wzr, [x19, 10]
|
|
ldrb w3, [x0, #:lo12:.LANCHOR26]
|
|
.L736:
|
|
cmp w3, w1, uxtb
|
|
bhi .L737
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L737:
|
|
ldrb w0, [x1, x2]
|
|
add x1, x1, 1
|
|
ldrb w5, [x19, 10]
|
|
lsl w0, w4, w0
|
|
orr w0, w0, w5
|
|
strb w0, [x19, 10]
|
|
b .L736
|
|
.size ftl_read_flash_info, .-ftl_read_flash_info
|
|
.section .text.FtlBbt2Bitmap,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbt2Bitmap
|
|
.type FtlBbt2Bitmap, %function
|
|
FtlBbt2Bitmap:
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x20, x0
|
|
adrp x0, .LANCHOR126
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
adrp x22, .LANCHOR51
|
|
ldrh w2, [x0, #:lo12:.LANCHOR126]
|
|
adrp x23, .LANCHOR127
|
|
add x22, x22, :lo12:.LANCHOR51
|
|
add x23, x23, :lo12:.LANCHOR127
|
|
mov x19, 0
|
|
mov w24, 65535
|
|
mov x21, x1
|
|
lsl w2, w2, 2
|
|
mov w1, 0
|
|
mov x0, x21
|
|
bl ftl_memset
|
|
.L742:
|
|
ldrh w0, [x20, x19]
|
|
cmp w0, w24
|
|
beq .L739
|
|
ldrh w1, [x22]
|
|
cmp w1, w0
|
|
bhi .L741
|
|
mov w2, 92
|
|
mov x1, x23
|
|
adrp x0, .LC5
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L741:
|
|
ldrh w1, [x20, x19]
|
|
mov w2, 1
|
|
add x19, x19, 2
|
|
cmp x19, 1024
|
|
ubfx x0, x1, 5, 11
|
|
and w1, w1, 31
|
|
lsl x0, x0, 2
|
|
lsl w2, w2, w1
|
|
ldr w1, [x21, x0]
|
|
orr w1, w1, w2
|
|
str w1, [x21, x0]
|
|
adrp x0, .LANCHOR76
|
|
add x0, x0, :lo12:.LANCHOR76
|
|
ldrh w1, [x0, 6]
|
|
add w1, w1, 1
|
|
strh w1, [x0, 6]
|
|
bne .L742
|
|
.L739:
|
|
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, .LANCHOR76
|
|
add x0, x1, :lo12:.LANCHOR76
|
|
mov w2, -1
|
|
add x0, x0, 12
|
|
strh w2, [x1, #:lo12:.LANCHOR76]
|
|
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, .LANCHOR77
|
|
add x3, x1, :lo12:.LANCHOR77
|
|
mov w2, 2048
|
|
add x29, sp, 0
|
|
strh w0, [x1, #:lo12:.LANCHOR77]
|
|
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
|
|
.L750:
|
|
ldrh w1, [x19, 6]
|
|
cmp w1, w0
|
|
bhi .L754
|
|
adrp x0, .LANCHOR53
|
|
mov w23, 0
|
|
mov w20, 0
|
|
ldrh w1, [x0, #:lo12:.LANCHOR53]
|
|
ldrh w0, [x19]
|
|
strh w1, [x21, x0, lsl 1]
|
|
ldrh w24, [x21]
|
|
.L755:
|
|
ldrh w0, [x19, 10]
|
|
cmp w0, w20
|
|
bhi .L759
|
|
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
|
|
.L754:
|
|
ubfiz x1, x0, 2, 16
|
|
ldr w2, [x20, x1]
|
|
mov w1, 0
|
|
ubfx x2, x2, 10, 16
|
|
.L751:
|
|
ldrh w3, [x19, 10]
|
|
cmp w3, w1
|
|
bhi .L753
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
b .L750
|
|
.L753:
|
|
ubfiz x3, x1, 1, 16
|
|
ldrh w4, [x22, x3]
|
|
cmp w4, w2
|
|
bne .L752
|
|
cbz w2, .L752
|
|
ldrh w4, [x21, x3]
|
|
add w4, w4, 1
|
|
strh w4, [x21, x3]
|
|
.L752:
|
|
add w1, w1, 1
|
|
and w1, w1, 65535
|
|
b .L751
|
|
.L759:
|
|
ubfiz x0, x20, 1, 16
|
|
ldrh w1, [x21, x0]
|
|
cmp w24, w1
|
|
bls .L756
|
|
add x25, x22, x0
|
|
ldrh w0, [x22, x0]
|
|
cbnz w0, .L757
|
|
.L758:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L755
|
|
.L756:
|
|
cbnz w1, .L758
|
|
add x25, x22, x0
|
|
ldrh w0, [x22, x0]
|
|
cbz w0, .L758
|
|
.L760:
|
|
mov w1, 1
|
|
bl FtlFreeSysBlkQueueIn
|
|
strh wzr, [x25]
|
|
ldrh w0, [x19, 8]
|
|
sub w0, w0, #1
|
|
strh w0, [x19, 8]
|
|
b .L758
|
|
.L761:
|
|
mov w24, 0
|
|
b .L760
|
|
.L757:
|
|
mov w23, w20
|
|
cbz w1, .L761
|
|
mov w24, w1
|
|
b .L758
|
|
.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, .LANCHOR128
|
|
adrp x20, .LANCHOR64
|
|
stp x21, x22, [sp, 32]
|
|
ldr x0, [x19, #:lo12:.LANCHOR128]
|
|
adrp x22, .LANCHOR57
|
|
ldr w2, [x20, #:lo12:.LANCHOR64]
|
|
adrp x21, .LANCHOR67
|
|
str x23, [sp, 48]
|
|
adrp x23, .LANCHOR129
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldrh w0, [x21, #:lo12:.LANCHOR67]
|
|
mov w1, 255
|
|
ldrh w2, [x22, #:lo12:.LANCHOR57]
|
|
mul w2, w2, w0
|
|
ldr x0, [x23, #:lo12:.LANCHOR129]
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR98
|
|
ldrh w3, [x21, #:lo12:.LANCHOR67]
|
|
ldr x6, [x23, #:lo12:.LANCHOR129]
|
|
mov x1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR98]
|
|
mov w2, -1
|
|
ldrh w5, [x22, #:lo12:.LANCHOR57]
|
|
add x3, x0, x3, lsl 4
|
|
.L771:
|
|
add x4, x1, x5
|
|
cmp x0, x3
|
|
bne .L772
|
|
adrp x1, .LANCHOR130
|
|
add x0, x1, :lo12:.LANCHOR130
|
|
ldp x21, x22, [sp, 32]
|
|
strh w2, [x1, #:lo12:.LANCHOR130]
|
|
ldr w1, [x20, #:lo12:.LANCHOR64]
|
|
strh w1, [x0, 10]
|
|
mov w1, -3902
|
|
strh w1, [x0, 4]
|
|
adrp x1, .LANCHOR131
|
|
ldr x23, [sp, 48]
|
|
strh w2, [x0, 2]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR131]
|
|
strh w1, [x0, 8]
|
|
adrp x1, .LANCHOR66
|
|
ldrh w1, [x1, #:lo12:.LANCHOR66]
|
|
strh w1, [x0, 6]
|
|
adrp x1, .LANCHOR132
|
|
ldr x1, [x1, #:lo12:.LANCHOR132]
|
|
str x1, [x0, 16]
|
|
adrp x1, .LANCHOR133
|
|
ldr x1, [x1, #:lo12:.LANCHOR133]
|
|
str x1, [x0, 24]
|
|
ldr x1, [x19, #:lo12:.LANCHOR128]
|
|
ldp x19, x20, [sp, 16]
|
|
str x1, [x0, 32]
|
|
adrp x1, .LANCHOR134
|
|
ldr x1, [x1, #:lo12:.LANCHOR134]
|
|
str x1, [x0, 40]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L772:
|
|
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 .L771
|
|
.size FtlL2PDataInit, .-FtlL2PDataInit
|
|
.section .text.FtlVariablesInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlVariablesInit
|
|
.type FtlVariablesInit, %function
|
|
FtlVariablesInit:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR135
|
|
mov w1, -1
|
|
add x29, sp, 0
|
|
str xzr, [x0, #:lo12:.LANCHOR135]
|
|
adrp x0, .LANCHOR136
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR41
|
|
strh w1, [x0, #:lo12:.LANCHOR136]
|
|
adrp x0, .LANCHOR137
|
|
mov w1, -1
|
|
str wzr, [x0, #:lo12:.LANCHOR137]
|
|
adrp x0, .LANCHOR138
|
|
str wzr, [x0, #:lo12:.LANCHOR138]
|
|
adrp x0, .LANCHOR139
|
|
str w1, [x0, #:lo12:.LANCHOR139]
|
|
adrp x0, .LANCHOR104
|
|
mov w1, 0
|
|
str wzr, [x0, #:lo12:.LANCHOR104]
|
|
adrp x0, .LANCHOR70
|
|
strh wzr, [x0, #:lo12:.LANCHOR70]
|
|
adrp x0, .LANCHOR61
|
|
ldrh w2, [x0, #:lo12:.LANCHOR61]
|
|
adrp x0, .LANCHOR71
|
|
ldr x0, [x0, #:lo12:.LANCHOR71]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR80
|
|
ldrh w2, [x19, #:lo12:.LANCHOR41]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR80]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR140
|
|
ldrh w2, [x19, #:lo12:.LANCHOR41]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR140]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
mov w2, 48
|
|
mov w1, 0
|
|
adrp x0, .LANCHOR82
|
|
add x0, x0, :lo12:.LANCHOR82
|
|
bl ftl_memset
|
|
mov w2, 512
|
|
mov w1, 0
|
|
adrp x0, .LANCHOR141
|
|
add x0, x0, :lo12:.LANCHOR141
|
|
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, .LANCHOR41
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
ldrh w2, [x0, #:lo12:.LANCHOR41]
|
|
mov w0, 6
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR83
|
|
stp x19, x20, [sp, 16]
|
|
adrp x23, .LANCHOR87
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR90
|
|
mul w2, w2, w0
|
|
ldr x0, [x24, #:lo12:.LANCHOR83]
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR40
|
|
str x27, [sp, 80]
|
|
adrp x26, .LANCHOR47
|
|
add x25, x25, :lo12:.LANCHOR40
|
|
add x26, x26, :lo12:.LANCHOR47
|
|
bl ftl_memset
|
|
mov w21, 0
|
|
adrp x0, .LANCHOR89
|
|
mov w20, 0
|
|
mov w19, 0
|
|
strh wzr, [x23, #:lo12:.LANCHOR87]
|
|
str xzr, [x0, #:lo12:.LANCHOR89]
|
|
adrp x0, .LANCHOR84
|
|
strh wzr, [x22, #:lo12:.LANCHOR90]
|
|
adrp x27, .LANCHOR38
|
|
str xzr, [x0, #:lo12:.LANCHOR84]
|
|
adrp x0, .LANCHOR86
|
|
str xzr, [x0, #:lo12:.LANCHOR86]
|
|
adrp x0, .LANCHOR142
|
|
strh wzr, [x0, #:lo12:.LANCHOR142]
|
|
.L777:
|
|
ldrh w0, [x25]
|
|
cmp w19, w0
|
|
bge .L784
|
|
adrp x0, .LANCHOR52
|
|
ldrh w8, [x27, #:lo12:.LANCHOR38]
|
|
mov w5, 0
|
|
mov w6, 0
|
|
ldrh w7, [x0, #:lo12:.LANCHOR52]
|
|
b .L785
|
|
.L779:
|
|
ldrb w0, [x26, w6, sxtw]
|
|
mov w1, w19
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L778
|
|
add w5, w7, w5
|
|
sxth w5, w5
|
|
.L778:
|
|
add w6, w6, 1
|
|
sxth w6, w6
|
|
.L785:
|
|
cmp w6, w8
|
|
blt .L779
|
|
cbz w5, .L780
|
|
mov w0, 32768
|
|
sdiv w5, w0, w5
|
|
sxth w5, w5
|
|
.L781:
|
|
ldr x1, [x24, #:lo12:.LANCHOR83]
|
|
mov w0, 6
|
|
smaddl x0, w19, w0, x1
|
|
strh w5, [x0, 4]
|
|
adrp x0, .LANCHOR93
|
|
ldrh w0, [x0, #:lo12:.LANCHOR93]
|
|
cmp w19, w0
|
|
beq .L782
|
|
adrp x0, .LANCHOR94
|
|
ldrh w0, [x0, #:lo12:.LANCHOR94]
|
|
cmp w19, w0
|
|
beq .L782
|
|
adrp x0, .LANCHOR95
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95]
|
|
cmp w19, w0
|
|
beq .L782
|
|
adrp x0, .LANCHOR85
|
|
ldr x0, [x0, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x0, w19, sxtw 1]
|
|
cbnz w0, .L783
|
|
add w21, w21, 1
|
|
mov w0, w19
|
|
and w21, w21, 65535
|
|
bl INSERT_FREE_LIST
|
|
.L782:
|
|
add w19, w19, 1
|
|
sxth w19, w19
|
|
b .L777
|
|
.L780:
|
|
adrp x0, .LANCHOR85
|
|
mov w1, -1
|
|
ldr x0, [x0, #:lo12:.LANCHOR85]
|
|
strh w1, [x0, w19, sxtw 1]
|
|
b .L781
|
|
.L783:
|
|
add w20, w20, 1
|
|
mov w0, w19
|
|
and w20, w20, 65535
|
|
bl INSERT_DATA_LIST
|
|
b .L782
|
|
.L784:
|
|
strh w20, [x23, #:lo12:.LANCHOR87]
|
|
add w20, w20, w21
|
|
strh w21, [x22, #:lo12:.LANCHOR90]
|
|
cmp w0, w20
|
|
bge .L786
|
|
mov w2, 2899
|
|
adrp x1, .LANCHOR143
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR143
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L786:
|
|
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, .LANCHOR111
|
|
mov w1, 255
|
|
add x29, sp, 0
|
|
strh wzr, [x0, #:lo12:.LANCHOR111]
|
|
adrp x0, .LANCHOR113
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR54
|
|
strh wzr, [x0, #:lo12:.LANCHOR113]
|
|
adrp x0, .LANCHOR112
|
|
ldrh w2, [x19, #:lo12:.LANCHOR54]
|
|
ldr x0, [x0, #:lo12:.LANCHOR112]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldrh w2, [x19, #:lo12:.LANCHOR54]
|
|
mov w0, 12
|
|
mov w1, 255
|
|
mul w2, w2, w0
|
|
adrp x0, .LANCHOR114
|
|
ldr x0, [x0, #:lo12:.LANCHOR114]
|
|
bl ftl_memset
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
b FtlGcBufInit
|
|
.size FtlGcPageVarInit, .-FtlGcPageVarInit
|
|
.section .text.idb_init,"ax",@progbits
|
|
.align 2
|
|
.global idb_init
|
|
.type idb_init, %function
|
|
idb_init:
|
|
stp x29, x30, [sp, -16]!
|
|
mov w2, 262144
|
|
mov w1, 0
|
|
adrp x0, idb_buf
|
|
add x29, sp, 0
|
|
add x0, x0, :lo12:idb_buf
|
|
bl ftl_memset
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size idb_init, .-idb_init
|
|
.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.FlashReadIdbData,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadIdbData
|
|
.type FlashReadIdbData, %function
|
|
FlashReadIdbData:
|
|
stp x29, x30, [sp, -16]!
|
|
mov w2, 2048
|
|
adrp x1, .LANCHOR144
|
|
add x1, x1, :lo12:.LANCHOR144
|
|
add x29, sp, 0
|
|
bl ftl_memcpy
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FlashReadIdbData, .-FlashReadIdbData
|
|
.section .text.FlashLoadPhyInfoInRam,"ax",@progbits
|
|
.align 2
|
|
.global FlashLoadPhyInfoInRam
|
|
.type FlashLoadPhyInfoInRam, %function
|
|
FlashLoadPhyInfoInRam:
|
|
stp x29, x30, [sp, -48]!
|
|
adrp x0, .LANCHOR145
|
|
add x8, x0, :lo12:.LANCHOR145
|
|
adrp x11, .LANCHOR22
|
|
add x29, sp, 0
|
|
add x8, x8, 1
|
|
mov x7, x0
|
|
add x11, x11, :lo12:.LANCHOR22
|
|
stp x19, x20, [sp, 16]
|
|
mov x10, 0
|
|
str x21, [sp, 32]
|
|
.L798:
|
|
ldrb w2, [x8, -1]
|
|
mov w12, w10
|
|
lsl x21, x10, 5
|
|
mov x1, x11
|
|
mov x0, x8
|
|
bl FlashMemCmp8
|
|
mov w20, w0
|
|
cbnz w0, .L796
|
|
add x0, x7, :lo12:.LANCHOR145
|
|
ubfiz x12, x12, 5, 32
|
|
add x21, x0, x21
|
|
add x0, x0, x12
|
|
adrp x1, .LANCHOR146
|
|
add x4, x1, :lo12:.LANCHOR146
|
|
ldrb w3, [x0, 22]
|
|
mov x0, 0
|
|
.L797:
|
|
lsl x5, x0, 5
|
|
mov w2, w0
|
|
ldrb w5, [x5, x4]
|
|
cmp w5, w3
|
|
beq .L800
|
|
add x0, x0, 1
|
|
cmp x0, 4
|
|
bne .L797
|
|
mov w2, w0
|
|
.L800:
|
|
ubfiz x0, x2, 5, 32
|
|
add x1, x1, :lo12:.LANCHOR146
|
|
adrp x19, .LANCHOR31
|
|
add x19, x19, :lo12:.LANCHOR31
|
|
add x1, x1, x0
|
|
mov w2, 32
|
|
adrp x0, .LANCHOR8
|
|
add x0, x0, :lo12:.LANCHOR8
|
|
bl ftl_memcpy
|
|
mov w2, 32
|
|
mov x1, x21
|
|
mov x0, x19
|
|
bl ftl_memcpy
|
|
ldrh w0, [x19, 10]
|
|
bl FlashBlockAlignInit
|
|
b .L795
|
|
.L796:
|
|
add x10, x10, 1
|
|
add x8, x8, 32
|
|
cmp x10, 86
|
|
bne .L798
|
|
mov w20, -1
|
|
.L795:
|
|
mov w0, w20
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
|
|
.section .text.NandcCopy1KB,"ax",@progbits
|
|
.align 2
|
|
.global NandcCopy1KB
|
|
.type NandcCopy1KB, %function
|
|
NandcCopy1KB:
|
|
stp x29, x30, [sp, -48]!
|
|
and w1, w1, 255
|
|
cmp w1, 1
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w2, 255
|
|
str x21, [sp, 32]
|
|
add x2, x0, 4096
|
|
add x21, x0, 512
|
|
ubfiz x0, x19, 9, 8
|
|
mov x20, x4
|
|
add x0, x2, x0
|
|
bne .L805
|
|
cbz x3, .L806
|
|
mov w2, 1024
|
|
mov x1, x3
|
|
bl ftl_memcpy
|
|
.L806:
|
|
cbz x20, .L804
|
|
ldrb w0, [x20]
|
|
lsr w19, w19, 1
|
|
ldrb w1, [x20, 1]
|
|
orr x1, x0, x1, lsl 8
|
|
ldrb w0, [x20, 2]
|
|
orr x1, x1, x0, lsl 16
|
|
ldrb w0, [x20, 3]
|
|
orr x0, x1, x0, lsl 24
|
|
mov w1, 12
|
|
mul w19, w19, w1
|
|
str w0, [x21, w19, sxtw 2]
|
|
.L804:
|
|
ldp x19, x20, [sp, 16]
|
|
ldr x21, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L805:
|
|
cbz x3, .L809
|
|
mov x1, x0
|
|
mov w2, 1024
|
|
mov x0, x3
|
|
bl ftl_memcpy
|
|
.L809:
|
|
cbz x20, .L804
|
|
lsr w19, w19, 1
|
|
mov w0, 12
|
|
mul w19, w19, w0
|
|
ldr w0, [x21, w19, sxtw 2]
|
|
strb w0, [x20]
|
|
lsr w1, w0, 8
|
|
strb w1, [x20, 1]
|
|
lsr w1, w0, 16
|
|
lsr w0, w0, 24
|
|
strb w1, [x20, 2]
|
|
strb w0, [x20, 3]
|
|
b .L804
|
|
.size NandcCopy1KB, .-NandcCopy1KB
|
|
.section .text.NandcXferData,"ax",@progbits
|
|
.align 2
|
|
.global NandcXferData
|
|
.type NandcXferData, %function
|
|
NandcXferData:
|
|
stp x29, x30, [sp, -192]!
|
|
tst x3, 63
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
and w25, w0, 255
|
|
stp x19, x20, [sp, 16]
|
|
adrp x0, .LANCHOR0
|
|
and w20, w1, 255
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
sbfiz x1, x25, 4, 32
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
mov x26, x3
|
|
stp x27, x28, [sp, 80]
|
|
and w24, w2, 255
|
|
mov x21, x4
|
|
ldr x19, [x0, x1]
|
|
bne .L822
|
|
cbnz x4, .L823
|
|
add x21, x29, 128
|
|
mov w2, 64
|
|
mov w1, 255
|
|
add x0, x29, 128
|
|
bl ftl_memset
|
|
.L823:
|
|
mov x5, x21
|
|
mov x4, x26
|
|
mov w2, w24
|
|
mov w3, 0
|
|
mov w1, w20
|
|
mov w0, w25
|
|
bl NandcXferStart
|
|
mov w1, w20
|
|
mov w0, w25
|
|
bl NandcXferComp
|
|
cbnz w20, .L847
|
|
adrp x0, .LANCHOR32
|
|
adrp x4, .LANCHOR35
|
|
mov x1, x0
|
|
add x4, x4, :lo12:.LANCHOR35
|
|
ldr w2, [x0, #:lo12:.LANCHOR32]
|
|
mov w0, 128
|
|
mov w3, 64
|
|
cmp w2, 25
|
|
ubfx x2, x24, 1, 7
|
|
add x2, x21, x2, lsl 2
|
|
csel w3, w3, w0, cc
|
|
mov w0, 0
|
|
.L826:
|
|
add w5, w3, w0
|
|
cmp x21, x2
|
|
bne .L827
|
|
adrp x0, .LANCHOR34
|
|
ldr w4, [x1, #:lo12:.LANCHOR32]
|
|
lsr w24, w24, 2
|
|
mov w2, 0
|
|
ldr w3, [x0, #:lo12:.LANCHOR34]
|
|
mov w22, 0
|
|
.L828:
|
|
cmp w2, w24
|
|
bcs .L824
|
|
cbnz w4, .L834
|
|
.L824:
|
|
str wzr, [x19, 16]
|
|
.L835:
|
|
adrp x0, .LANCHOR34
|
|
ldr w0, [x0, #:lo12:.LANCHOR34]
|
|
cmp w0, 5
|
|
bls .L821
|
|
cbnz w20, .L821
|
|
ldr w0, [x19]
|
|
mov w1, 8192
|
|
movk w1, 0x2, lsl 16
|
|
and w1, w0, w1
|
|
cmp w1, 139264
|
|
bne .L821
|
|
orr w0, w0, 131072
|
|
mov w22, -1
|
|
str w0, [x19]
|
|
.L821:
|
|
mov w0, w22
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 192
|
|
ret
|
|
.L827:
|
|
ldr x6, [x4, 8]
|
|
and x0, x0, 4294967292
|
|
add x21, x21, 4
|
|
ldr w0, [x6, x0]
|
|
strb w0, [x21, -4]
|
|
lsr w6, w0, 8
|
|
strb w6, [x21, -3]
|
|
lsr w6, w0, 16
|
|
strb w6, [x21, -2]
|
|
lsr w0, w0, 24
|
|
strb w0, [x21, -1]
|
|
mov w0, w5
|
|
b .L826
|
|
.L834:
|
|
uxtw x0, w2
|
|
add x0, x0, 8
|
|
ldr w0, [x19, x0, lsl 2]
|
|
str w0, [x29, 120]
|
|
ldr w0, [x29, 120]
|
|
tbnz x0, 2, .L850
|
|
ldr w0, [x29, 120]
|
|
tbnz x0, 15, .L850
|
|
cmp w3, 5
|
|
bls .L830
|
|
ldr w1, [x29, 120]
|
|
ubfx x6, x1, 3, 5
|
|
ldr w1, [x29, 120]
|
|
ldr w0, [x29, 120]
|
|
ubfx x1, x1, 27, 1
|
|
ubfx x5, x0, 16, 5
|
|
ldr w0, [x29, 120]
|
|
orr w1, w6, w1, lsl 5
|
|
ubfx x0, x0, 29, 1
|
|
orr w0, w5, w0, lsl 5
|
|
cmp w1, w0
|
|
ldr w0, [x29, 120]
|
|
bls .L831
|
|
ubfx x1, x0, 3, 5
|
|
ldr w0, [x29, 120]
|
|
ubfx x0, x0, 27, 1
|
|
.L856:
|
|
orr w0, w1, w0, lsl 5
|
|
.L832:
|
|
cmp w22, w0
|
|
csel w22, w22, w0, cs
|
|
.L829:
|
|
add w2, w2, 1
|
|
b .L828
|
|
.L831:
|
|
ubfx x1, x0, 16, 5
|
|
ldr w0, [x29, 120]
|
|
ubfx x0, x0, 29, 1
|
|
b .L856
|
|
.L830:
|
|
cmp w3, 3
|
|
bls .L851
|
|
ldr w1, [x29, 120]
|
|
ubfx x6, x1, 3, 5
|
|
ldr w1, [x29, 120]
|
|
ldr w0, [x29, 120]
|
|
ubfx x1, x1, 28, 1
|
|
ubfx x5, x0, 16, 5
|
|
ldr w0, [x29, 120]
|
|
orr w1, w6, w1, lsl 5
|
|
ubfx x0, x0, 30, 1
|
|
orr w0, w5, w0, lsl 5
|
|
cmp w1, w0
|
|
ldr w0, [x29, 120]
|
|
bls .L833
|
|
ubfx x1, x0, 3, 5
|
|
ldr w0, [x29, 120]
|
|
ubfx x0, x0, 28, 1
|
|
b .L856
|
|
.L833:
|
|
ubfx x1, x0, 16, 5
|
|
ldr w0, [x29, 120]
|
|
ubfx x0, x0, 30, 1
|
|
b .L856
|
|
.L851:
|
|
mov w0, 0
|
|
b .L832
|
|
.L850:
|
|
mov w22, -1
|
|
b .L829
|
|
.L847:
|
|
mov w22, 0
|
|
b .L824
|
|
.L822:
|
|
cmp w20, 1
|
|
bne .L836
|
|
cmp x4, 0
|
|
mov w23, 2
|
|
csel w23, w23, wzr, ne
|
|
mov w27, 0
|
|
lsl w23, w23, 1
|
|
mov w22, 0
|
|
.L837:
|
|
cmp w22, w24
|
|
bcc .L839
|
|
mov w22, 0
|
|
b .L835
|
|
.L839:
|
|
and w28, w22, 3
|
|
cbz x26, .L852
|
|
lsl w3, w22, 9
|
|
add x3, x26, x3
|
|
.L838:
|
|
add x4, x21, x27, uxtw
|
|
mov w2, w28
|
|
mov w1, 1
|
|
mov x0, x19
|
|
bl NandcCopy1KB
|
|
add w22, w22, 2
|
|
mov w3, w28
|
|
mov x5, 0
|
|
mov x4, 0
|
|
mov w2, 2
|
|
mov w1, 1
|
|
mov w0, w25
|
|
bl NandcXferStart
|
|
add w27, w27, w23
|
|
mov w1, 1
|
|
mov w0, w25
|
|
bl NandcXferComp
|
|
b .L837
|
|
.L852:
|
|
mov x3, 0
|
|
b .L838
|
|
.L836:
|
|
mov w0, w25
|
|
mov x5, 0
|
|
mov x4, 0
|
|
mov w3, 0
|
|
mov w2, 2
|
|
mov w1, 0
|
|
bl NandcXferStart
|
|
mov w27, 2
|
|
cmp x21, 0
|
|
mov w28, 0
|
|
csel w27, w27, wzr, ne
|
|
mov w23, 0
|
|
lsl w0, w27, 1
|
|
mov w22, 0
|
|
str w0, [x29, 108]
|
|
.L840:
|
|
cmp w24, w23
|
|
bls .L835
|
|
mov w0, w25
|
|
mov w1, w20
|
|
bl NandcXferComp
|
|
add w27, w23, 2
|
|
ldr w0, [x19, 32]
|
|
cmp w24, w27
|
|
str w0, [x29, 120]
|
|
bls .L841
|
|
mov x5, 0
|
|
mov x4, 0
|
|
and w3, w27, 3
|
|
mov w2, 2
|
|
mov w1, 0
|
|
mov w0, w25
|
|
bl NandcXferStart
|
|
.L841:
|
|
ldr w0, [x29, 120]
|
|
tbnz x0, 2, .L853
|
|
ldr w0, [x29, 120]
|
|
ubfx x1, x0, 3, 5
|
|
ldr w0, [x29, 120]
|
|
ubfx x0, x0, 27, 1
|
|
orr w0, w1, w0, lsl 5
|
|
cmp w22, w0
|
|
csel w22, w22, w0, cs
|
|
.L842:
|
|
and w2, w23, 3
|
|
cbz x26, .L854
|
|
lsl w3, w23, 9
|
|
add x3, x26, x3
|
|
.L843:
|
|
add x4, x21, x28, uxtw
|
|
mov x0, x19
|
|
mov w1, 0
|
|
bl NandcCopy1KB
|
|
ldr w0, [x29, 108]
|
|
mov w23, w27
|
|
add w28, w28, w0
|
|
b .L840
|
|
.L853:
|
|
mov w22, -1
|
|
b .L842
|
|
.L854:
|
|
mov x3, 0
|
|
b .L843
|
|
.size NandcXferData, .-NandcXferData
|
|
.section .text.FlashReadRawPage,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadRawPage
|
|
.type FlashReadRawPage, %function
|
|
FlashReadRawPage:
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
ands w19, w0, 255
|
|
stp x21, x22, [sp, 32]
|
|
mov w21, w1
|
|
str x23, [sp, 48]
|
|
adrp x1, .LANCHOR31+9
|
|
mov x22, x2
|
|
mov x23, x3
|
|
ldrb w20, [x1, #:lo12:.LANCHOR31+9]
|
|
bne .L858
|
|
adrp x0, .LANCHOR3
|
|
adrp x1, .LANCHOR4
|
|
ldrb w0, [x0, #:lo12:.LANCHOR3]
|
|
ldr w1, [x1, #:lo12:.LANCHOR4]
|
|
mul w0, w0, w1
|
|
cmp w0, w21
|
|
mov w0, 4
|
|
csel w20, w20, w0, ls
|
|
.L858:
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w0, w19
|
|
bl NandcFlashCs
|
|
mov w1, w21
|
|
mov w0, w19
|
|
bl FlashReadCmd
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w2, w20
|
|
mov x4, x23
|
|
mov x3, x22
|
|
mov w1, 0
|
|
mov w0, w19
|
|
bl NandcXferData
|
|
mov w2, w0
|
|
mov w0, w19
|
|
bl NandcFlashDeCs
|
|
ldr x23, [sp, 48]
|
|
mov w0, w2
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.size FlashReadRawPage, .-FlashReadRawPage
|
|
.section .text.FlashDdrTunningRead,"ax",@progbits
|
|
.align 2
|
|
.global FlashDdrTunningRead
|
|
.type FlashDdrTunningRead, %function
|
|
FlashDdrTunningRead:
|
|
stp x29, x30, [sp, -112]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
and w24, w0, 255
|
|
adrp x0, .LANCHOR19
|
|
stp x25, x26, [sp, 64]
|
|
stp x21, x22, [sp, 32]
|
|
mov w25, w1
|
|
ldr x0, [x0, #:lo12:.LANCHOR19]
|
|
mov w22, 6
|
|
stp x27, x28, [sp, 80]
|
|
mov x23, x2
|
|
stp x19, x20, [sp, 16]
|
|
mov x28, x3
|
|
mov w26, w4
|
|
ldr w0, [x0, 304]
|
|
str w0, [x29, 108]
|
|
adrp x0, .LANCHOR34
|
|
ldr w0, [x0, #:lo12:.LANCHOR34]
|
|
cmp w0, 8
|
|
mov w0, 12
|
|
csel w22, w22, w0, cc
|
|
cbz w4, .L874
|
|
mov w0, 1
|
|
bl FlashSetInterfaceMode
|
|
mov w0, 1
|
|
bl NandcSetMode
|
|
mov w0, w24
|
|
adrp x19, .LANCHOR25
|
|
bl FlashReset
|
|
mov x3, x28
|
|
mov x2, x23
|
|
mov w1, w25
|
|
mov w0, w24
|
|
bl FlashReadRawPage
|
|
mov w21, w0
|
|
ldrb w0, [x19, #:lo12:.LANCHOR25]
|
|
bl FlashSetInterfaceMode
|
|
ldrb w0, [x19, #:lo12:.LANCHOR25]
|
|
bl NandcSetMode
|
|
cmn w21, #1
|
|
bne .L863
|
|
.L872:
|
|
mov w21, -1
|
|
.L860:
|
|
mov w0, w21
|
|
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
|
|
.L863:
|
|
mov w1, w25
|
|
mov w2, w21
|
|
adrp x0, .LC9
|
|
add x0, x0, :lo12:.LC9
|
|
bl printf
|
|
adrp x1, .LANCHOR147
|
|
ldr w0, [x1, #:lo12:.LANCHOR147]
|
|
add w0, w0, 1
|
|
cmp w0, 2047
|
|
bhi .L865
|
|
str w0, [x1, #:lo12:.LANCHOR147]
|
|
b .L860
|
|
.L865:
|
|
str wzr, [x1, #:lo12:.LANCHOR147]
|
|
mov x28, 0
|
|
mov x23, 0
|
|
.L862:
|
|
mov w5, 0
|
|
mov w20, 0
|
|
mov w6, 0
|
|
mov w19, 0
|
|
mov w27, -1
|
|
.L870:
|
|
stp w5, w6, [x29, 100]
|
|
mov w0, w22
|
|
bl NandcSetDdrPara
|
|
mov w1, w25
|
|
mov x3, x28
|
|
mov x2, x23
|
|
mov w0, w24
|
|
bl FlashReadRawPage
|
|
add w1, w21, 1
|
|
cmp w0, w1
|
|
ldp w5, w6, [x29, 100]
|
|
bhi .L866
|
|
cmp w0, 2
|
|
bhi .L876
|
|
add w19, w19, 1
|
|
cmp w19, 9
|
|
bls .L876
|
|
mov w1, w20
|
|
mov w21, w0
|
|
sub w20, w22, w19
|
|
mov w27, 0
|
|
.L868:
|
|
cmp w19, w6
|
|
csel w20, w20, w1, hi
|
|
.L869:
|
|
cbz w20, .L871
|
|
mov w1, w20
|
|
adrp x0, .LC10
|
|
add x0, x0, :lo12:.LC10
|
|
bl printf
|
|
mov w0, w20
|
|
bl NandcSetDdrPara
|
|
.L871:
|
|
cbz w27, .L860
|
|
adrp x0, .LC11
|
|
mov w2, w25
|
|
mov w1, w24
|
|
add x0, x0, :lo12:.LC11
|
|
bl printf
|
|
cbz w26, .L872
|
|
ldr w1, [x29, 108]
|
|
lsr w0, w1, 8
|
|
bl NandcSetDdrPara
|
|
b .L860
|
|
.L874:
|
|
mov w21, 1024
|
|
b .L862
|
|
.L866:
|
|
cmp w19, w6
|
|
bls .L877
|
|
sub w20, w5, w19
|
|
cmp w19, 7
|
|
bhi .L869
|
|
mov w6, w19
|
|
.L877:
|
|
mov w19, 0
|
|
b .L867
|
|
.L876:
|
|
mov w5, w22
|
|
mov w21, w0
|
|
mov w27, 0
|
|
mov x28, 0
|
|
mov x23, 0
|
|
.L867:
|
|
add w22, w22, 2
|
|
cmp w22, 69
|
|
bls .L870
|
|
mov w1, w20
|
|
mov w20, w5
|
|
b .L868
|
|
.size FlashDdrTunningRead, .-FlashDdrTunningRead
|
|
.section .text.FlashReadPage,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadPage
|
|
.type FlashReadPage, %function
|
|
FlashReadPage:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w20, w0, 255
|
|
stp x21, x22, [sp, 32]
|
|
mov w0, w20
|
|
stp x23, x24, [sp, 48]
|
|
mov w21, w1
|
|
mov x22, x2
|
|
mov x23, x3
|
|
str x25, [sp, 64]
|
|
bl FlashReadRawPage
|
|
mov w19, w0
|
|
cmn w0, #1
|
|
bne .L887
|
|
adrp x24, .LANCHOR6
|
|
ldrb w25, [x24, #:lo12:.LANCHOR6]
|
|
cbnz w25, .L888
|
|
.L890:
|
|
adrp x0, .LANCHOR30
|
|
ldrb w0, [x0, #:lo12:.LANCHOR30]
|
|
cbz w0, .L887
|
|
adrp x0, .LANCHOR19
|
|
mov w4, 1
|
|
mov x3, x23
|
|
mov x2, x22
|
|
ldr x0, [x0, #:lo12:.LANCHOR19]
|
|
mov w1, w21
|
|
ldr w24, [x0, 304]
|
|
mov w0, w20
|
|
bl FlashDdrTunningRead
|
|
mov w19, w0
|
|
cmn w0, #1
|
|
beq .L891
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
cmp w19, w0, lsr 1
|
|
bls .L887
|
|
.L891:
|
|
lsr w0, w24, 8
|
|
bl NandcSetDdrPara
|
|
b .L887
|
|
.L888:
|
|
strb wzr, [x24, #:lo12:.LANCHOR6]
|
|
mov x3, x23
|
|
mov x2, x22
|
|
mov w1, w21
|
|
mov w0, w20
|
|
bl FlashReadRawPage
|
|
strb w25, [x24, #:lo12:.LANCHOR6]
|
|
cmn w0, #1
|
|
beq .L890
|
|
mov w19, w0
|
|
.L887:
|
|
adrp x24, .LANCHOR148
|
|
ldr x4, [x24, #:lo12:.LANCHOR148]
|
|
cbz x4, .L886
|
|
cmn w19, #1
|
|
bne .L886
|
|
mov x3, x23
|
|
mov x2, x22
|
|
mov w1, w21
|
|
mov w0, w20
|
|
blr x4
|
|
mov w19, w0
|
|
mov w1, w0
|
|
mov w3, w21
|
|
mov w2, w20
|
|
adrp x0, .LC12
|
|
add x0, x0, :lo12:.LC12
|
|
bl printf
|
|
cmn w19, #1
|
|
bne .L886
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L886
|
|
mov w0, w20
|
|
bl flash_enter_slc_mode
|
|
ldr x4, [x24, #:lo12:.LANCHOR148]
|
|
mov x3, x23
|
|
mov x2, x22
|
|
mov w1, w21
|
|
mov w0, w20
|
|
blr x4
|
|
mov w19, w0
|
|
mov w0, w20
|
|
bl flash_exit_slc_mode
|
|
.L886:
|
|
mov w0, w19
|
|
ldr x25, [sp, 64]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.size FlashReadPage, .-FlashReadPage
|
|
.section .text.FlashDdrParaScan,"ax",@progbits
|
|
.align 2
|
|
.global FlashDdrParaScan
|
|
.type FlashDdrParaScan, %function
|
|
FlashDdrParaScan:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR25
|
|
and w20, w0, 255
|
|
stp x21, x22, [sp, 32]
|
|
ldrb w0, [x19, #:lo12:.LANCHOR25]
|
|
mov w21, w1
|
|
bl FlashSetInterfaceMode
|
|
ldrb w0, [x19, #:lo12:.LANCHOR25]
|
|
bl NandcSetMode
|
|
mov w4, 0
|
|
mov x3, 0
|
|
mov x2, 0
|
|
mov w1, w21
|
|
mov w0, w20
|
|
bl FlashDdrTunningRead
|
|
mov x3, 0
|
|
mov w22, w0
|
|
mov x2, 0
|
|
mov w0, w20
|
|
mov w1, w21
|
|
adrp x20, .LANCHOR30
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
beq .L907
|
|
cmn w22, #1
|
|
bne .L908
|
|
.L907:
|
|
ldrb w0, [x19, #:lo12:.LANCHOR25]
|
|
tbz x0, 0, .L908
|
|
mov w0, 1
|
|
bl FlashSetInterfaceMode
|
|
mov w0, 1
|
|
bl NandcSetMode
|
|
strb wzr, [x20, #:lo12:.LANCHOR30]
|
|
.L909:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L908:
|
|
mov w0, 1
|
|
strb w0, [x20, #:lo12:.LANCHOR30]
|
|
b .L909
|
|
.size FlashDdrParaScan, .-FlashDdrParaScan
|
|
.section .text.ToshibaReadRetrial,"ax",@progbits
|
|
.align 2
|
|
.global ToshibaReadRetrial
|
|
.type ToshibaReadRetrial, %function
|
|
ToshibaReadRetrial:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w21, w0, 255
|
|
stp x25, x26, [sp, 64]
|
|
mov w0, w21
|
|
stp x19, x20, [sp, 16]
|
|
mov x25, x2
|
|
stp x27, x28, [sp, 80]
|
|
mov x26, x3
|
|
str w1, [x29, 120]
|
|
stp x23, x24, [sp, 48]
|
|
bl NandcWaitFlashReady
|
|
sbfiz x1, x21, 4, 32
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
add x2, x0, x1
|
|
ldr x22, [x0, x1]
|
|
adrp x1, .LANCHOR11
|
|
ldrb w27, [x2, 8]
|
|
ldrb w0, [x1, #:lo12:.LANCHOR11]
|
|
str x1, [x29, 112]
|
|
add x19, x27, 8
|
|
sub w0, w0, #67
|
|
str w27, [x29, 124]
|
|
and w0, w0, 255
|
|
add x19, x22, x19, lsl 8
|
|
cmp w0, 1
|
|
bls .L934
|
|
adrp x0, .LANCHOR30
|
|
ldrb w0, [x0, #:lo12:.LANCHOR30]
|
|
cbz w0, .L935
|
|
mov w23, 1
|
|
mov w0, 0
|
|
bl NandcSetDdrMode
|
|
.L919:
|
|
add x0, x22, x27, lsl 8
|
|
mov w1, 92
|
|
str w1, [x0, 2056]
|
|
mov w1, 197
|
|
str w1, [x0, 2056]
|
|
.L918:
|
|
ldrsw x0, [x29, 124]
|
|
mov w20, 1
|
|
mov w24, -1
|
|
add x0, x0, 8
|
|
add x0, x22, x0, lsl 8
|
|
str x0, [x29, 104]
|
|
.L920:
|
|
adrp x0, .LANCHOR149
|
|
ldrb w0, [x0, #:lo12:.LANCHOR149]
|
|
add w0, w0, 1
|
|
cmp w20, w0
|
|
bcc .L929
|
|
mov w28, w24
|
|
.L928:
|
|
ldr x0, [x29, 112]
|
|
mov w1, 0
|
|
ldrb w0, [x0, #:lo12:.LANCHOR11]
|
|
sub w0, w0, #67
|
|
and w0, w0, 255
|
|
cmp w0, 1
|
|
mov x0, x19
|
|
bhi .L930
|
|
bl SandiskSetRRPara
|
|
.L931:
|
|
ldrsw x0, [x29, 124]
|
|
add x0, x0, 8
|
|
add x22, x22, x0, lsl 8
|
|
mov w0, 255
|
|
str w0, [x22, 8]
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w28, w0, lsr 2
|
|
bcc .L932
|
|
cmn w28, #1
|
|
mov w0, 256
|
|
csel w28, w28, w0, eq
|
|
.L932:
|
|
mov w0, w21
|
|
bl NandcWaitFlashReady
|
|
cbz w23, .L917
|
|
mov w0, 4
|
|
bl NandcSetDdrMode
|
|
.L917:
|
|
mov w0, w28
|
|
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
|
|
.L935:
|
|
mov w23, 0
|
|
b .L919
|
|
.L934:
|
|
mov w23, 0
|
|
b .L918
|
|
.L929:
|
|
ldr x0, [x29, 112]
|
|
mov w1, w20
|
|
ldrb w0, [x0, #:lo12:.LANCHOR11]
|
|
sub w0, w0, #67
|
|
and w0, w0, 255
|
|
cmp w0, 1
|
|
mov x0, x19
|
|
bhi .L921
|
|
bl SandiskSetRRPara
|
|
.L922:
|
|
ldr x0, [x29, 112]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR11]
|
|
cmp w0, 34
|
|
bne .L923
|
|
adrp x0, .LANCHOR149
|
|
ldrb w0, [x0, #:lo12:.LANCHOR149]
|
|
sub w0, w0, #3
|
|
cmp w20, w0
|
|
bne .L923
|
|
ldr x1, [x29, 104]
|
|
mov w0, 179
|
|
str w0, [x1, 8]
|
|
.L923:
|
|
add x0, x22, x27, lsl 8
|
|
mov w1, 38
|
|
str w1, [x0, 2056]
|
|
mov w1, 93
|
|
str w1, [x0, 2056]
|
|
cbz w23, .L924
|
|
mov w0, 4
|
|
bl NandcSetDdrMode
|
|
ldr w1, [x29, 120]
|
|
mov x3, x26
|
|
mov x2, x25
|
|
mov w0, w21
|
|
bl FlashReadRawPage
|
|
mov w28, w0
|
|
mov w0, 0
|
|
bl NandcSetDdrMode
|
|
.L925:
|
|
cmn w28, #1
|
|
beq .L926
|
|
adrp x0, .LANCHOR33
|
|
cmn w24, #1
|
|
csel w24, w24, w28, ne
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w28, w0, lsr 2
|
|
bcc .L928
|
|
mov x26, 0
|
|
mov x25, 0
|
|
.L926:
|
|
add w20, w20, 1
|
|
b .L920
|
|
.L921:
|
|
bl ToshibaSetRRPara
|
|
b .L922
|
|
.L924:
|
|
ldr w1, [x29, 120]
|
|
mov x3, x26
|
|
mov x2, x25
|
|
mov w0, w21
|
|
bl FlashReadRawPage
|
|
mov w28, w0
|
|
b .L925
|
|
.L930:
|
|
bl ToshibaSetRRPara
|
|
b .L931
|
|
.size ToshibaReadRetrial, .-ToshibaReadRetrial
|
|
.section .text.SamsungReadRetrial,"ax",@progbits
|
|
.align 2
|
|
.global SamsungReadRetrial
|
|
.type SamsungReadRetrial, %function
|
|
SamsungReadRetrial:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w22, w0, 255
|
|
stp x19, x20, [sp, 16]
|
|
mov w0, w22
|
|
stp x23, x24, [sp, 48]
|
|
mov w23, w1
|
|
stp x25, x26, [sp, 64]
|
|
mov x24, x2
|
|
str x27, [sp, 80]
|
|
mov x25, x3
|
|
bl NandcWaitFlashReady
|
|
adrp x26, .LANCHOR149
|
|
sbfiz x1, x22, 4, 32
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
adrp x27, .LANCHOR33
|
|
add x2, x0, x1
|
|
add x26, x26, :lo12:.LANCHOR149
|
|
add x27, x27, :lo12:.LANCHOR33
|
|
mov w21, 1
|
|
ldr x0, [x0, x1]
|
|
mov w19, -1
|
|
ldrb w20, [x2, 8]
|
|
add x20, x20, 8
|
|
add x20, x0, x20, lsl 8
|
|
.L946:
|
|
ldrb w0, [x26]
|
|
add w0, w0, 1
|
|
cmp w21, w0
|
|
bcc .L950
|
|
.L949:
|
|
mov x0, x20
|
|
mov w1, 0
|
|
bl SamsungSetRRPara
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w19, w0, lsr 2
|
|
bcc .L945
|
|
cmn w19, #1
|
|
mov w0, 256
|
|
csel w19, w19, w0, eq
|
|
.L945:
|
|
mov w0, w19
|
|
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
|
|
.L950:
|
|
mov w1, w21
|
|
mov x0, x20
|
|
bl SamsungSetRRPara
|
|
mov x3, x25
|
|
mov x2, x24
|
|
mov w1, w23
|
|
mov w0, w22
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
beq .L947
|
|
ldrb w1, [x27]
|
|
cmn w19, #1
|
|
csel w19, w19, w0, ne
|
|
add w1, w1, w1, lsl 1
|
|
cmp w0, w1, lsr 2
|
|
bcc .L952
|
|
mov x25, 0
|
|
mov x24, 0
|
|
.L947:
|
|
add w21, w21, 1
|
|
b .L946
|
|
.L952:
|
|
mov w19, w0
|
|
b .L949
|
|
.size SamsungReadRetrial, .-SamsungReadRetrial
|
|
.section .text.MicronReadRetrial,"ax",@progbits
|
|
.align 2
|
|
.global MicronReadRetrial
|
|
.type MicronReadRetrial, %function
|
|
MicronReadRetrial:
|
|
stp x29, x30, [sp, -144]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w20, w0, 255
|
|
adrp x0, .LANCHOR33
|
|
stp x23, x24, [sp, 48]
|
|
str w1, [x29, 140]
|
|
mov x24, x2
|
|
ldrb w19, [x0, #:lo12:.LANCHOR33]
|
|
adrp x0, .LANCHOR16
|
|
stp x25, x26, [sp, 64]
|
|
mov x25, x3
|
|
ldrb w1, [x0, #:lo12:.LANCHOR16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x27, x28, [sp, 80]
|
|
str x0, [x29, 128]
|
|
cbnz w1, .L960
|
|
add w19, w19, w19, lsl 1
|
|
asr w19, w19, 2
|
|
.L961:
|
|
adrp x21, .LANCHOR0
|
|
add x21, x21, :lo12:.LANCHOR0
|
|
add x21, x21, x20, sxtw 4
|
|
mov w23, 0
|
|
mov w28, 137
|
|
.L971:
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
ldrb w4, [x21, 8]
|
|
adrp x7, .LANCHOR149
|
|
ldr x8, [x21]
|
|
add x7, x7, :lo12:.LANCHOR149
|
|
mov w22, 0
|
|
mov w26, -1
|
|
add x27, x8, x4, lsl 8
|
|
.L962:
|
|
ldrb w0, [x7]
|
|
cmp w22, w0
|
|
bcc .L966
|
|
.L965:
|
|
add x4, x8, x4, lsl 8
|
|
mov w0, 239
|
|
str x4, [x29, 120]
|
|
str w0, [x4, 2056]
|
|
mov x0, 200
|
|
str w28, [x4, 2052]
|
|
bl udelay
|
|
ldr x4, [x29, 120]
|
|
cmp w26, w19
|
|
str wzr, [x4, 2048]
|
|
str wzr, [x4, 2048]
|
|
str wzr, [x4, 2048]
|
|
str wzr, [x4, 2048]
|
|
bcc .L967
|
|
cmn w26, #1
|
|
mov w0, 256
|
|
csel w26, w26, w0, eq
|
|
.L967:
|
|
cmp w26, 256
|
|
ccmn w26, #1, 4, ne
|
|
bne .L968
|
|
ldr w2, [x29, 140]
|
|
adrp x0, .LC13
|
|
mov w4, w26
|
|
mov w3, w22
|
|
mov w1, w22
|
|
add x0, x0, :lo12:.LC13
|
|
bl printf
|
|
cbnz w23, .L969
|
|
ldr x0, [x29, 128]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L959
|
|
cmn w26, #1
|
|
bne .L959
|
|
mov w1, 3
|
|
mov w0, w20
|
|
mov w23, 1
|
|
bl micron_auto_read_calibration_config
|
|
b .L971
|
|
.L960:
|
|
mov w0, 3
|
|
sdiv w19, w19, w0
|
|
b .L961
|
|
.L966:
|
|
mov w0, 239
|
|
str w0, [x27, 2056]
|
|
str w28, [x27, 2052]
|
|
mov x0, 200
|
|
stp x4, x7, [x29, 96]
|
|
str x8, [x29, 112]
|
|
bl udelay
|
|
add w10, w22, 1
|
|
str w10, [x27, 2048]
|
|
str wzr, [x27, 2048]
|
|
mov x3, x25
|
|
ldr w1, [x29, 140]
|
|
mov x2, x24
|
|
str wzr, [x27, 2048]
|
|
mov w0, w20
|
|
str wzr, [x27, 2048]
|
|
str w10, [x29, 120]
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
ldr w10, [x29, 120]
|
|
ldp x4, x7, [x29, 96]
|
|
ldr x8, [x29, 112]
|
|
beq .L963
|
|
cmn w26, #1
|
|
csel w26, w26, w0, ne
|
|
cmp w0, w19
|
|
bcc .L973
|
|
mov x25, 0
|
|
mov x24, 0
|
|
.L963:
|
|
mov w22, w10
|
|
b .L962
|
|
.L973:
|
|
mov w26, w0
|
|
mov x25, 0
|
|
mov x24, 0
|
|
b .L965
|
|
.L969:
|
|
mov w0, w20
|
|
mov w1, 0
|
|
bl micron_auto_read_calibration_config
|
|
cmn w26, #1
|
|
mov w0, 256
|
|
csel w26, w26, w0, eq
|
|
.L959:
|
|
mov w0, w26
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 144
|
|
ret
|
|
.L968:
|
|
cbz w23, .L959
|
|
mov w1, 0
|
|
mov w0, w20
|
|
mov w26, 256
|
|
bl micron_auto_read_calibration_config
|
|
b .L959
|
|
.size MicronReadRetrial, .-MicronReadRetrial
|
|
.section .text.HynixReadRetrial,"ax",@progbits
|
|
.align 2
|
|
.global HynixReadRetrial
|
|
.type HynixReadRetrial, %function
|
|
HynixReadRetrial:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR20
|
|
stp x27, x28, [sp, 80]
|
|
and x28, x0, 255
|
|
add x0, x19, :lo12:.LANCHOR20
|
|
stp x23, x24, [sp, 48]
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, w1
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR7
|
|
add x1, x0, x28
|
|
mov x20, x28
|
|
ldrb w21, [x0, 2]
|
|
mov x23, x2
|
|
ldr x0, [x25, #:lo12:.LANCHOR7]
|
|
mov x24, x3
|
|
ldrb w26, [x1, 12]
|
|
ldrb w0, [x0, 19]
|
|
sub w0, w0, #7
|
|
and w0, w0, 255
|
|
cmp w0, 1
|
|
bhi .L985
|
|
ldrb w26, [x1, 20]
|
|
.L985:
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
add x6, x19, :lo12:.LANCHOR20
|
|
adrp x5, .LANCHOR33
|
|
add x7, x6, 4
|
|
add x5, x5, :lo12:.LANCHOR33
|
|
mov w4, 0
|
|
mov w27, -1
|
|
.L986:
|
|
cmp w4, w21
|
|
bcc .L991
|
|
.L990:
|
|
ldr x0, [x25, #:lo12:.LANCHOR7]
|
|
add x19, x19, :lo12:.LANCHOR20
|
|
add x19, x19, x28
|
|
ldrb w0, [x0, 19]
|
|
sub w0, w0, #7
|
|
and w0, w0, 255
|
|
cmp w0, 1
|
|
bhi .L992
|
|
strb w26, [x19, 20]
|
|
.L993:
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w27, w0, lsr 2
|
|
bcc .L984
|
|
cmn w27, #1
|
|
mov w0, 256
|
|
csel w27, w27, w0, eq
|
|
.L984:
|
|
mov w0, w27
|
|
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
|
|
.L991:
|
|
add w26, w26, 1
|
|
ldrb w1, [x6, 1]
|
|
and w26, w26, 255
|
|
mov x2, x7
|
|
cmp w21, w26
|
|
str x5, [x29, 96]
|
|
csel w26, w26, wzr, hi
|
|
str w4, [x29, 108]
|
|
stp x7, x6, [x29, 112]
|
|
mov w3, w26
|
|
mov w0, w20
|
|
bl HynixSetRRPara
|
|
mov x3, x24
|
|
mov x2, x23
|
|
mov w1, w22
|
|
mov w0, w20
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
ldr w4, [x29, 108]
|
|
ldr x5, [x29, 96]
|
|
ldp x7, x6, [x29, 112]
|
|
beq .L988
|
|
ldrb w1, [x5]
|
|
cmn w27, #1
|
|
csel w27, w27, w0, ne
|
|
add w1, w1, w1, lsl 1
|
|
cmp w0, w1, lsr 2
|
|
bcc .L995
|
|
mov x24, 0
|
|
mov x23, 0
|
|
.L988:
|
|
add w4, w4, 1
|
|
b .L986
|
|
.L995:
|
|
mov w27, w0
|
|
b .L990
|
|
.L992:
|
|
strb w26, [x19, 12]
|
|
b .L993
|
|
.size HynixReadRetrial, .-HynixReadRetrial
|
|
.section .text.samsung_read_retrial,"ax",@progbits
|
|
.align 2
|
|
.type samsung_read_retrial, %function
|
|
samsung_read_retrial:
|
|
stp x29, x30, [sp, -112]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
and w22, w0, 255
|
|
stp x23, x24, [sp, 48]
|
|
mov w0, w22
|
|
stp x19, x20, [sp, 16]
|
|
mov x23, x2
|
|
stp x25, x26, [sp, 64]
|
|
mov x24, x3
|
|
mov w25, w1
|
|
stp x27, x28, [sp, 80]
|
|
bl NandcWaitFlashReady
|
|
sbfiz x1, x22, 4, 32
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
add x2, x0, x1
|
|
ldr x0, [x0, x1]
|
|
adrp x1, .LANCHOR24
|
|
ldrb w19, [x2, 8]
|
|
ldrb w1, [x1, #:lo12:.LANCHOR24]
|
|
cbnz w1, .L1003
|
|
adrp x27, .LANCHOR150
|
|
adrp x28, .LANCHOR33
|
|
add x19, x0, x19, lsl 8
|
|
add x27, x27, :lo12:.LANCHOR150
|
|
add x28, x28, :lo12:.LANCHOR33
|
|
mov x21, 0
|
|
mov w20, -1
|
|
mov w4, 239
|
|
.L1007:
|
|
str w4, [x19, 2056]
|
|
mov w0, 141
|
|
str w0, [x19, 2052]
|
|
add x0, x27, x21
|
|
str w4, [x29, 108]
|
|
mov x3, x24
|
|
mov x2, x23
|
|
mov w1, w25
|
|
ldrsb w0, [x0, 1]
|
|
add w26, w21, 1
|
|
str w0, [x19, 2048]
|
|
mov w0, w22
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
ldr w4, [x29, 108]
|
|
beq .L1004
|
|
ldrb w1, [x28]
|
|
cmn w20, #1
|
|
csel w20, w20, w0, ne
|
|
add w1, w1, w1, lsl 1
|
|
cmp w0, w1, lsr 2
|
|
bcc .L1015
|
|
mov x24, 0
|
|
mov x23, 0
|
|
.L1004:
|
|
add x21, x21, 1
|
|
cmp x21, 25
|
|
bne .L1007
|
|
mov w26, 26
|
|
.L1006:
|
|
mov w0, 239
|
|
str w0, [x19, 2056]
|
|
mov w0, 141
|
|
.L1031:
|
|
str w0, [x19, 2052]
|
|
adrp x0, .LANCHOR33
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
str wzr, [x19, 2048]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w20, w0, lsr 2
|
|
bcc .L1013
|
|
cmn w20, #1
|
|
mov w0, 256
|
|
csel w20, w20, w0, eq
|
|
.L1013:
|
|
cmp w20, 256
|
|
ccmn w20, #1, 4, ne
|
|
bne .L1014
|
|
adrp x0, .LC14
|
|
mov w4, w20
|
|
mov w3, w26
|
|
mov w2, w25
|
|
mov w1, w26
|
|
add x0, x0, :lo12:.LC14
|
|
bl printf
|
|
.L1014:
|
|
mov w0, w22
|
|
bl NandcWaitFlashReady
|
|
mov w0, w20
|
|
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
|
|
.L1015:
|
|
mov w20, w0
|
|
b .L1006
|
|
.L1003:
|
|
adrp x21, .LANCHOR151
|
|
add x21, x21, :lo12:.LANCHOR151
|
|
adrp x27, .LANCHOR33
|
|
add x21, x21, 4
|
|
add x19, x0, x19, lsl 8
|
|
add x27, x27, :lo12:.LANCHOR33
|
|
mov w20, -1
|
|
mov w26, 1
|
|
mov w4, 239
|
|
mov w28, 137
|
|
.L1012:
|
|
str w4, [x19, 2056]
|
|
mov x3, x24
|
|
str w28, [x19, 2052]
|
|
mov x2, x23
|
|
str w4, [x29, 108]
|
|
mov w1, w25
|
|
ldrb w0, [x21]
|
|
str w0, [x19, 2048]
|
|
ldrb w0, [x21, 1]
|
|
str w0, [x19, 2048]
|
|
ldrb w0, [x21, 2]
|
|
str w0, [x19, 2048]
|
|
ldrb w0, [x21, 3]
|
|
str w0, [x19, 2048]
|
|
mov w0, w22
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
ldr w4, [x29, 108]
|
|
beq .L1009
|
|
ldrb w1, [x27]
|
|
cmn w20, #1
|
|
csel w20, w20, w0, ne
|
|
add w1, w1, w1, lsl 1
|
|
cmp w0, w1, lsr 2
|
|
bcc .L1016
|
|
mov x24, 0
|
|
mov x23, 0
|
|
.L1009:
|
|
add w26, w26, 1
|
|
add x21, x21, 4
|
|
cmp w26, 26
|
|
bne .L1012
|
|
.L1011:
|
|
mov w0, 239
|
|
str w0, [x19, 2056]
|
|
mov w0, 137
|
|
b .L1031
|
|
.L1016:
|
|
mov w20, w0
|
|
b .L1011
|
|
.size samsung_read_retrial, .-samsung_read_retrial
|
|
.section .text.FlashProgPage,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgPage
|
|
.type FlashProgPage, %function
|
|
FlashProgPage:
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w20, w1
|
|
stp x21, x22, [sp, 32]
|
|
adrp x1, .LANCHOR31+9
|
|
str x23, [sp, 48]
|
|
mov x22, x2
|
|
ldrb w21, [x1, #:lo12:.LANCHOR31+9]
|
|
ands w19, w0, 255
|
|
mov x23, x3
|
|
bne .L1033
|
|
adrp x0, .LANCHOR3
|
|
adrp x1, .LANCHOR4
|
|
ldrb w0, [x0, #:lo12:.LANCHOR3]
|
|
ldr w1, [x1, #:lo12:.LANCHOR4]
|
|
mul w0, w0, w1
|
|
cmp w0, w20
|
|
bls .L1033
|
|
adrp x0, .LANCHOR2
|
|
ldrb w0, [x0, #:lo12:.LANCHOR2]
|
|
cmp w0, 0
|
|
mov w0, 4
|
|
csel w21, w21, w0, eq
|
|
.L1033:
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w0, w19
|
|
bl NandcFlashCs
|
|
mov w1, w20
|
|
mov w0, w19
|
|
bl FlashProgFirstCmd
|
|
mov x4, x23
|
|
mov x3, x22
|
|
mov w2, w21
|
|
mov w1, 1
|
|
mov w0, w19
|
|
bl NandcXferData
|
|
mov w1, w20
|
|
mov w0, w19
|
|
bl FlashProgSecondCmd
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
mov w1, w20
|
|
mov w0, w19
|
|
bl FlashReadStatus
|
|
mov w2, w0
|
|
mov w0, w19
|
|
bl NandcFlashDeCs
|
|
ldr x23, [sp, 48]
|
|
and w0, w2, 1
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.size FlashProgPage, .-FlashProgPage
|
|
.section .text.FlashPageProgMsbFFData,"ax",@progbits
|
|
.align 2
|
|
.global FlashPageProgMsbFFData
|
|
.type FlashPageProgMsbFFData, %function
|
|
FlashPageProgMsbFFData:
|
|
stp x29, x30, [sp, -80]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
and w23, w0, 255
|
|
adrp x0, .LANCHOR16
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
and w19, w2, 65535
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
str x25, [sp, 64]
|
|
cbz w0, .L1037
|
|
adrp x0, .LANCHOR29
|
|
ldr w0, [x0, #:lo12:.LANCHOR29]
|
|
cbnz w0, .L1036
|
|
.L1037:
|
|
adrp x2, .LANCHOR7
|
|
mov x20, x2
|
|
ldr x0, [x2, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 19]
|
|
sub w0, w0, #5
|
|
and w3, w0, 255
|
|
cmp w3, 63
|
|
bhi .L1036
|
|
mov x2, 16391
|
|
movk x2, 0x4000, lsl 16
|
|
movk x2, 0x2000, lsl 32
|
|
movk x2, 0x8000, lsl 48
|
|
lsr x0, x2, x3
|
|
tbz x0, 0, .L1036
|
|
adrp x21, .LANCHOR123
|
|
mov w22, w1
|
|
add x21, x21, :lo12:.LANCHOR123
|
|
mov w25, 65535
|
|
adrp x24, .LANCHOR152
|
|
.L1039:
|
|
ldr x0, [x20, #:lo12:.LANCHOR7]
|
|
ldrh w0, [x0, 10]
|
|
cmp w0, w19
|
|
bhi .L1040
|
|
.L1036:
|
|
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
|
|
.L1040:
|
|
ldrh w0, [x21, w19, sxtw 1]
|
|
cmp w0, w25
|
|
bne .L1036
|
|
ldr x0, [x24, #:lo12:.LANCHOR152]
|
|
mov w2, 32768
|
|
mov w1, 255
|
|
bl ftl_memset
|
|
ldr x3, [x24, #:lo12:.LANCHOR152]
|
|
add w1, w19, w22
|
|
add w19, w19, 1
|
|
mov w0, w23
|
|
mov x2, x3
|
|
and w19, w19, 65535
|
|
bl FlashProgPage
|
|
b .L1039
|
|
.size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
|
|
.section .text.FlashLoadPhyInfo,"ax",@progbits
|
|
.align 2
|
|
.global FlashLoadPhyInfo
|
|
.type FlashLoadPhyInfo, %function
|
|
FlashLoadPhyInfo:
|
|
stp x29, x30, [sp, -128]!
|
|
mov w0, 60
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR4
|
|
adrp x22, .LANCHOR154
|
|
stp x19, x20, [sp, 16]
|
|
strb w0, [x29, 120]
|
|
mov w0, 40
|
|
strb w0, [x29, 121]
|
|
mov w0, 24
|
|
strb w0, [x29, 122]
|
|
mov w0, 16
|
|
strb w0, [x29, 123]
|
|
adrp x20, .LANCHOR153
|
|
ldr w0, [x21, #:lo12:.LANCHOR4]
|
|
mov w19, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR155
|
|
str w0, [x29, 108]
|
|
mov w23, -1
|
|
ldr x0, [x22, #:lo12:.LANCHOR154]
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR31
|
|
str x0, [x20, #:lo12:.LANCHOR153]
|
|
mov w26, 4
|
|
stp x27, x28, [sp, 80]
|
|
add x25, x25, :lo12:.LANCHOR31
|
|
str wzr, [x24, #:lo12:.LANCHOR155]
|
|
mov w0, 0
|
|
bl flash_enter_slc_mode
|
|
.L1046:
|
|
add w28, w19, 1
|
|
mov x27, 0
|
|
.L1048:
|
|
add x0, x29, 120
|
|
ldrb w0, [x0, x27]
|
|
bl FlashBchSel
|
|
ldr x2, [x22, #:lo12:.LANCHOR154]
|
|
mov x3, 0
|
|
mov w1, w19
|
|
mov w0, 0
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
bne .L1047
|
|
ldr x2, [x22, #:lo12:.LANCHOR154]
|
|
mov x3, 0
|
|
mov w1, w28
|
|
mov w0, 0
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
bne .L1047
|
|
add x27, x27, 1
|
|
cmp x27, 4
|
|
bne .L1048
|
|
.L1049:
|
|
ldr w0, [x29, 108]
|
|
subs w26, w26, #1
|
|
add w19, w19, w0
|
|
bne .L1046
|
|
b .L1054
|
|
.L1050:
|
|
mov w1, 2036
|
|
add x0, x6, 12
|
|
bl js_hash
|
|
ldr w1, [x6, 8]
|
|
cmp w1, w0
|
|
bne .L1056
|
|
add x1, x6, 160
|
|
mov w2, 32
|
|
mov x0, x25
|
|
bl ftl_memcpy
|
|
ldr x1, [x20, #:lo12:.LANCHOR153]
|
|
mov w2, 32
|
|
adrp x0, .LANCHOR8
|
|
add x0, x0, :lo12:.LANCHOR8
|
|
add x1, x1, 192
|
|
bl ftl_memcpy
|
|
ldr x1, [x20, #:lo12:.LANCHOR153]
|
|
mov w2, 852
|
|
adrp x0, .LANCHOR20
|
|
add x0, x0, :lo12:.LANCHOR20
|
|
add x1, x1, 224
|
|
bl ftl_memcpy
|
|
ldrh w0, [x25, 10]
|
|
bl FlashBlockAlignInit
|
|
str w19, [x24, #:lo12:.LANCHOR155]
|
|
ldr x1, [x20, #:lo12:.LANCHOR153]
|
|
adrp x0, .LANCHOR30
|
|
ldr w2, [x1, 1076]
|
|
strb w2, [x0, #:lo12:.LANCHOR30]
|
|
ldr w0, [x21, #:lo12:.LANCHOR4]
|
|
adrp x2, .LANCHOR156
|
|
udiv w0, w19, w0
|
|
add w0, w0, 1
|
|
cmp w0, 1
|
|
bls .L1052
|
|
.L1059:
|
|
str w0, [x2, #:lo12:.LANCHOR156]
|
|
adrp x0, .LANCHOR157
|
|
ldrh w1, [x1, 14]
|
|
mov w23, 0
|
|
strb w1, [x0, #:lo12:.LANCHOR157]
|
|
b .L1049
|
|
.L1052:
|
|
mov w0, 2
|
|
b .L1059
|
|
.L1056:
|
|
mov w23, -1
|
|
b .L1049
|
|
.L1047:
|
|
ldr x6, [x20, #:lo12:.LANCHOR153]
|
|
mov w1, 20036
|
|
movk w1, 0x4e41, lsl 16
|
|
ldr w0, [x6]
|
|
cmp w0, w1
|
|
bne .L1049
|
|
cbnz w23, .L1050
|
|
ldr w0, [x21, #:lo12:.LANCHOR4]
|
|
udiv w19, w19, w0
|
|
adrp x0, .LANCHOR156
|
|
add w19, w19, 1
|
|
str w19, [x0, #:lo12:.LANCHOR156]
|
|
.L1054:
|
|
mov w0, 0
|
|
bl flash_exit_slc_mode
|
|
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], 128
|
|
ret
|
|
.size FlashLoadPhyInfo, .-FlashLoadPhyInfo
|
|
.section .text.FlashSavePhyInfo,"ax",@progbits
|
|
.align 2
|
|
.global FlashSavePhyInfo
|
|
.type FlashSavePhyInfo, %function
|
|
FlashSavePhyInfo:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR154
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR153
|
|
ldr x0, [x21, #:lo12:.LANCHOR154]
|
|
mov w22, 0
|
|
str x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w20, 0
|
|
adrp x0, .LANCHOR158
|
|
stp x23, x24, [sp, 48]
|
|
stp x27, x28, [sp, 80]
|
|
adrp x24, .LANCHOR152
|
|
ldrb w0, [x0, #:lo12:.LANCHOR158]
|
|
adrp x23, .LANCHOR4
|
|
stp x25, x26, [sp, 64]
|
|
mov w25, 20036
|
|
movk w25, 0x4e41, lsl 16
|
|
adrp x27, .LANCHOR16
|
|
add x28, x23, :lo12:.LANCHOR4
|
|
add x27, x27, :lo12:.LANCHOR16
|
|
bl FlashBchSel
|
|
ldr x0, [x21, #:lo12:.LANCHOR154]
|
|
mov w2, 2048
|
|
mov w1, 0
|
|
bl ftl_memset
|
|
ldr x0, [x19, #:lo12:.LANCHOR153]
|
|
adrp x1, .LANCHOR26
|
|
mov w2, 32
|
|
add x0, x0, 16
|
|
str w25, [x0, -16]
|
|
ldrb w1, [x1, #:lo12:.LANCHOR26]
|
|
strh w1, [x0, -4]
|
|
adrp x1, .LANCHOR3
|
|
ldrb w1, [x1, #:lo12:.LANCHOR3]
|
|
strh w1, [x0, -2]
|
|
adrp x1, .LANCHOR30
|
|
ldrb w1, [x1, #:lo12:.LANCHOR30]
|
|
str w1, [x0, 1060]
|
|
adrp x1, .LANCHOR22
|
|
add x1, x1, :lo12:.LANCHOR22
|
|
bl ftl_memcpy
|
|
ldr x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w2, 8
|
|
adrp x1, .LANCHOR27
|
|
add x1, x1, :lo12:.LANCHOR27
|
|
add x0, x0, 80
|
|
bl ftl_memcpy
|
|
ldr x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w2, 32
|
|
adrp x1, .LANCHOR18
|
|
add x1, x1, :lo12:.LANCHOR18
|
|
add x0, x0, 96
|
|
bl ftl_memcpy
|
|
ldr x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w2, 32
|
|
adrp x1, .LANCHOR31
|
|
add x1, x1, :lo12:.LANCHOR31
|
|
add x0, x0, 160
|
|
bl ftl_memcpy
|
|
ldr x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w2, 32
|
|
adrp x1, .LANCHOR8
|
|
add x1, x1, :lo12:.LANCHOR8
|
|
add x0, x0, 192
|
|
bl ftl_memcpy
|
|
ldr x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w2, 852
|
|
adrp x1, .LANCHOR20
|
|
add x1, x1, :lo12:.LANCHOR20
|
|
add x0, x0, 224
|
|
bl ftl_memcpy
|
|
ldr x6, [x19, #:lo12:.LANCHOR153]
|
|
mov w1, 2036
|
|
add x0, x6, 12
|
|
bl js_hash
|
|
str w0, [x6, 8]
|
|
mov w0, 1592
|
|
str w0, [x6, 4]
|
|
ldr x0, [x24, #:lo12:.LANCHOR152]
|
|
str x0, [x19, #:lo12:.LANCHOR153]
|
|
mov w0, 0
|
|
bl flash_enter_slc_mode
|
|
.L1066:
|
|
ldr w1, [x23, #:lo12:.LANCHOR4]
|
|
mov w2, 0
|
|
mov w0, 0
|
|
mul w1, w20, w1
|
|
bl FlashEraseBlock
|
|
ldrb w0, [x27]
|
|
cbz w0, .L1061
|
|
mov w26, 0
|
|
.L1062:
|
|
ldr w1, [x28]
|
|
mov x3, 0
|
|
ldr x2, [x21, #:lo12:.LANCHOR154]
|
|
mov w0, 0
|
|
madd w1, w20, w1, w26
|
|
add w26, w26, 1
|
|
bl FlashProgPage
|
|
cmp w26, 10
|
|
bne .L1062
|
|
.L1063:
|
|
ldr w1, [x28]
|
|
mov x3, 0
|
|
ldr x2, [x24, #:lo12:.LANCHOR152]
|
|
mov w0, 0
|
|
mul w1, w20, w1
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
add w7, w20, 1
|
|
beq .L1064
|
|
ldr x6, [x19, #:lo12:.LANCHOR153]
|
|
ldr w0, [x6]
|
|
cmp w0, w25
|
|
bne .L1064
|
|
mov w1, 2036
|
|
add x0, x6, 12
|
|
bl js_hash
|
|
ldr w1, [x6, 8]
|
|
cmp w1, w0
|
|
bne .L1064
|
|
adrp x0, .LANCHOR156
|
|
cmp w22, 1
|
|
str w7, [x0, #:lo12:.LANCHOR156]
|
|
ldr w0, [x28]
|
|
mul w20, w0, w20
|
|
adrp x0, .LANCHOR155
|
|
str w20, [x0, #:lo12:.LANCHOR155]
|
|
beq .L1067
|
|
mov w22, 1
|
|
.L1064:
|
|
mov w20, w7
|
|
cmp w7, 4
|
|
bne .L1066
|
|
.L1065:
|
|
mov w0, 0
|
|
bl flash_exit_slc_mode
|
|
cmp w22, 0
|
|
csetm w0, eq
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 96
|
|
ret
|
|
.L1061:
|
|
ldr w1, [x23, #:lo12:.LANCHOR4]
|
|
mov x3, 0
|
|
ldr x2, [x21, #:lo12:.LANCHOR154]
|
|
mov w0, 0
|
|
mul w1, w20, w1
|
|
bl FlashProgPage
|
|
ldr w1, [x23, #:lo12:.LANCHOR4]
|
|
mov x3, 0
|
|
ldr x2, [x21, #:lo12:.LANCHOR154]
|
|
mov w0, 0
|
|
mul w1, w20, w1
|
|
add w1, w1, 1
|
|
bl FlashProgPage
|
|
b .L1063
|
|
.L1067:
|
|
mov w22, 2
|
|
b .L1065
|
|
.size FlashSavePhyInfo, .-FlashSavePhyInfo
|
|
.section .text.FlashReadIdbDataRaw,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadIdbDataRaw
|
|
.type FlashReadIdbDataRaw, %function
|
|
FlashReadIdbDataRaw:
|
|
stp x29, x30, [sp, -144]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
mov x23, x0
|
|
mov w0, 60
|
|
stp x25, x26, [sp, 64]
|
|
strb w0, [x29, 136]
|
|
mov w0, 40
|
|
strb w0, [x29, 137]
|
|
mov w0, 24
|
|
strb w0, [x29, 138]
|
|
mov w0, 16
|
|
strb w0, [x29, 139]
|
|
adrp x0, .LANCHOR33
|
|
stp x19, x20, [sp, 16]
|
|
ldrb w26, [x0, #:lo12:.LANCHOR33]
|
|
adrp x0, .LANCHOR29
|
|
stp x21, x22, [sp, 32]
|
|
ldr w1, [x0, #:lo12:.LANCHOR29]
|
|
stp x27, x28, [sp, 80]
|
|
str x0, [x29, 120]
|
|
cbz w1, .L1075
|
|
mov w0, 0
|
|
bl flash_enter_slc_mode
|
|
.L1075:
|
|
adrp x24, .LANCHOR3
|
|
adrp x22, .LANCHOR4
|
|
add x27, x29, 136
|
|
add x22, x22, :lo12:.LANCHOR4
|
|
add x28, x24, :lo12:.LANCHOR3
|
|
mov w20, -1
|
|
mov w19, 2
|
|
mov w2, 2048
|
|
mov w1, 0
|
|
mov x0, x23
|
|
bl ftl_memset
|
|
.L1076:
|
|
ldrb w0, [x24, #:lo12:.LANCHOR3]
|
|
cmp w19, w0
|
|
bcc .L1081
|
|
.L1080:
|
|
mov w0, w26
|
|
bl FlashBchSel
|
|
ldr x0, [x29, 120]
|
|
ldr w0, [x0, #:lo12:.LANCHOR29]
|
|
cbz w0, .L1074
|
|
mov w0, 0
|
|
bl flash_exit_slc_mode
|
|
.L1074:
|
|
mov w0, w20
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 144
|
|
ret
|
|
.L1081:
|
|
mov x4, 0
|
|
adrp x25, .LANCHOR154
|
|
.L1078:
|
|
ldrb w5, [x4, x27]
|
|
add x21, x25, :lo12:.LANCHOR154
|
|
str w5, [x29, 116]
|
|
mov w0, w5
|
|
str x4, [x29, 104]
|
|
bl FlashBchSel
|
|
ldr w1, [x22]
|
|
mov x3, 0
|
|
ldr x2, [x25, #:lo12:.LANCHOR154]
|
|
mov w0, 0
|
|
mul w1, w19, w1
|
|
bl FlashReadRawPage
|
|
cmn w0, #1
|
|
ldr w5, [x29, 116]
|
|
bne .L1077
|
|
ldr x4, [x29, 104]
|
|
add x4, x4, 1
|
|
cmp x4, 4
|
|
bne .L1078
|
|
.L1079:
|
|
add w19, w19, 1
|
|
b .L1076
|
|
.L1084:
|
|
mov w20, 0
|
|
b .L1080
|
|
.L1077:
|
|
ldr x0, [x21]
|
|
ldr w1, [x0]
|
|
mov w0, 35899
|
|
movk w0, 0xfcdc, lsl 16
|
|
cmp w1, w0
|
|
bne .L1079
|
|
mov w1, w5
|
|
adrp x0, .LC15
|
|
add x0, x0, :lo12:.LC15
|
|
bl printf
|
|
ldr x1, [x21]
|
|
mov w2, 2048
|
|
mov x0, x23
|
|
bl ftl_memcpy
|
|
ldr x0, [x21]
|
|
ldr w0, [x0, 512]
|
|
strb w0, [x28]
|
|
adrp x0, .LANCHOR156
|
|
ldr w1, [x0, #:lo12:.LANCHOR156]
|
|
cmp w19, w1
|
|
bcs .L1084
|
|
str w19, [x0, #:lo12:.LANCHOR156]
|
|
mov w20, 0
|
|
bl FlashSavePhyInfo
|
|
b .L1079
|
|
.size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
|
|
.section .text.idb_write_data,"ax",@progbits
|
|
.align 2
|
|
.global idb_write_data
|
|
.type idb_write_data, %function
|
|
idb_write_data:
|
|
stp x29, x30, [sp, -240]!
|
|
add w0, w1, w3
|
|
mov w4, w1
|
|
cmp w0, 63
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
bls .L1094
|
|
cmp w1, 575
|
|
bhi .L1095
|
|
adrp x0, .LANCHOR159
|
|
mov x1, x2
|
|
mov w2, 1
|
|
cmp w4, 64
|
|
str w2, [x0, #:lo12:.LANCHOR159]
|
|
adrp x0, idb_buf
|
|
bhi .L1096
|
|
mov w2, 64
|
|
sub w4, w2, w4
|
|
sub w2, w3, w4
|
|
ubfiz x4, x4, 9, 25
|
|
lsl w2, w2, 9
|
|
add x1, x1, x4
|
|
add x0, x0, :lo12:idb_buf
|
|
.L1146:
|
|
bl ftl_memcpy
|
|
.L1129:
|
|
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], 240
|
|
ret
|
|
.L1096:
|
|
mov w2, 576
|
|
sub w2, w2, w4
|
|
cmp w3, w2
|
|
sub w4, w4, #64
|
|
csel w2, w3, w2, ls
|
|
ubfiz x4, x4, 9, 25
|
|
add x0, x0, :lo12:idb_buf
|
|
lsl w2, w2, 9
|
|
add x0, x0, x4
|
|
b .L1146
|
|
.L1094:
|
|
cmp w1, 575
|
|
bls .L1129
|
|
.L1095:
|
|
adrp x0, .LANCHOR159
|
|
str x0, [x29, 104]
|
|
ldr w1, [x0, #:lo12:.LANCHOR159]
|
|
cbz w1, .L1129
|
|
adrp x21, .LANCHOR7
|
|
adrp x1, idb_buf+262140
|
|
adrp x25, idb_buf
|
|
add x1, x1, :lo12:idb_buf+262140
|
|
ldr x0, [x21, #:lo12:.LANCHOR7]
|
|
add x5, x25, :lo12:idb_buf
|
|
mov w2, 65535
|
|
mov w3, 4097
|
|
ldrb w20, [x0, 9]
|
|
ldrh w0, [x0, 10]
|
|
mul w20, w20, w0
|
|
and w20, w20, 65535
|
|
add w0, w20, 511
|
|
udiv w0, w0, w20
|
|
str w0, [x29, 172]
|
|
mov w0, 0
|
|
.L1100:
|
|
ldr w4, [x1]
|
|
cbnz w4, .L1098
|
|
ldr w4, [x5, w0, uxtw 2]
|
|
add w0, w0, 1
|
|
str w4, [x1], -4
|
|
cmp w0, w3
|
|
sub w2, w2, #1
|
|
csel w0, w0, wzr, cc
|
|
cmp w2, 4096
|
|
bne .L1100
|
|
.L1098:
|
|
add x0, x25, :lo12:idb_buf
|
|
mov w3, 512
|
|
mov w23, 0
|
|
ldr w1, [x0, w2, uxtw 2]
|
|
adrp x0, .LC16
|
|
add x0, x0, :lo12:.LC16
|
|
bl printf
|
|
adrp x0, .LANCHOR156
|
|
ldr w24, [x0, #:lo12:.LANCHOR156]
|
|
ldr w0, [x29, 172]
|
|
mul w19, w20, w24
|
|
mul w0, w20, w0
|
|
str w0, [x29, 136]
|
|
adrp x0, .LANCHOR17
|
|
add x0, x0, :lo12:.LANCHOR17
|
|
str x0, [x29, 160]
|
|
.L1101:
|
|
cmp w24, 15
|
|
bls .L1119
|
|
cbnz w23, .L1121
|
|
adrp x0, .LC18
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC18
|
|
bl printf
|
|
.L1121:
|
|
ldr x0, [x29, 104]
|
|
str wzr, [x0, #:lo12:.LANCHOR159]
|
|
b .L1129
|
|
.L1119:
|
|
adrp x27, gp_flash_check_buf
|
|
mov x2, 512
|
|
mov w1, 0
|
|
add x0, x27, :lo12:gp_flash_check_buf
|
|
bl memset
|
|
ldr x0, [x21, #:lo12:.LANCHOR7]
|
|
ldrb w22, [x0, 9]
|
|
ldrh w26, [x0, 10]
|
|
mov w0, w19
|
|
bl FW_FlashBlockErase.constprop.42
|
|
str x27, [x29, 128]
|
|
mul w26, w22, w26
|
|
and w26, w26, 65535
|
|
cmp w26, 511
|
|
bhi .L1102
|
|
add w0, w26, w19
|
|
bl FW_FlashBlockErase.constprop.42
|
|
.L1102:
|
|
udiv w4, w19, w26
|
|
adrp x5, .LANCHOR16
|
|
add x5, x5, :lo12:.LANCHOR16
|
|
mov x28, 0
|
|
msub w4, w4, w26, w19
|
|
sub w26, w19, w4
|
|
.L1103:
|
|
add x2, x25, :lo12:idb_buf
|
|
cmp x28, 128
|
|
add x2, x2, x28, lsl 11
|
|
bne .L1107
|
|
ldr x0, [x21, #:lo12:.LANCHOR7]
|
|
mov w26, 0
|
|
ldr x1, [x29, 128]
|
|
add x27, x1, :lo12:gp_flash_check_buf
|
|
adrp x1, .LANCHOR16
|
|
ldrb w28, [x0, 9]
|
|
add x1, x1, :lo12:.LANCHOR16
|
|
ldrh w22, [x0, 10]
|
|
str x1, [x29, 96]
|
|
mul w22, w28, w22
|
|
and w0, w22, 65535
|
|
udiv w22, w19, w0
|
|
msub w22, w22, w0, w19
|
|
sub w0, w19, w22
|
|
str w0, [x29, 120]
|
|
mul w0, w22, w28
|
|
ubfx x0, x0, 2, 2
|
|
.L1108:
|
|
cmp w26, 511
|
|
bhi .L1115
|
|
ldr x3, [x29, 96]
|
|
mov w1, 4
|
|
sub w1, w1, w0
|
|
ldr x2, [x29, 160]
|
|
and w1, w1, 65535
|
|
str w1, [x29, 144]
|
|
add w1, w22, w26
|
|
ldrb w3, [x3]
|
|
lsr w1, w1, 2
|
|
ldrh w2, [x2, w1, sxtw 1]
|
|
cbz w3, .L1109
|
|
adrp x3, .LANCHOR122
|
|
mov w4, 12336
|
|
movk w4, 0x5638, lsl 16
|
|
ldr w3, [x3, #:lo12:.LANCHOR122]
|
|
cmp w3, w4
|
|
csel w2, w2, w1, ne
|
|
.L1109:
|
|
ldr w1, [x29, 120]
|
|
add w0, w0, w1
|
|
adrp x1, .LANCHOR4
|
|
ldr w1, [x1, #:lo12:.LANCHOR4]
|
|
madd w0, w28, w2, w0
|
|
str w0, [x29, 168]
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
str w0, [x29, 112]
|
|
ldr x0, [x21, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 9]
|
|
str w0, [x29, 140]
|
|
adrp x0, .LANCHOR15+26
|
|
ldrh w0, [x0, #:lo12:.LANCHOR15+26]
|
|
mul w0, w0, w1
|
|
ldr w1, [x29, 140]
|
|
mul w0, w0, w1
|
|
ldr w1, [x29, 168]
|
|
cmp w1, w0
|
|
bcs .L1110
|
|
adrp x0, .LANCHOR158
|
|
ldrb w0, [x0, #:lo12:.LANCHOR158]
|
|
bl FlashBchSel
|
|
.L1110:
|
|
mov w0, 0
|
|
bl flash_boot_enter_slc_mode
|
|
ldr w0, [x29, 168]
|
|
add x3, x29, 176
|
|
ldr w1, [x29, 140]
|
|
mov x2, x27
|
|
udiv w1, w0, w1
|
|
mov w0, 0
|
|
str w1, [x29, 168]
|
|
bl FlashReadPage
|
|
mov w1, w0
|
|
cmn w0, #1
|
|
bne .L1111
|
|
adrp x0, .LANCHOR158
|
|
ldrb w0, [x0, #:lo12:.LANCHOR158]
|
|
cmp w0, 40
|
|
beq .L1111
|
|
mov w0, 40
|
|
bl FlashBchSel
|
|
ldr w1, [x29, 168]
|
|
add x3, x29, 176
|
|
mov x2, x27
|
|
mov w0, 0
|
|
bl FlashReadPage
|
|
mov w1, w0
|
|
.L1111:
|
|
str w1, [x29, 168]
|
|
mov w0, 0
|
|
bl flash_boot_exit_slc_mode
|
|
ldrb w0, [x29, 112]
|
|
bl FlashBchSel
|
|
ldr w1, [x29, 168]
|
|
cmn w1, #1
|
|
bne .L1112
|
|
.L1115:
|
|
ldr x0, [x29, 128]
|
|
add x1, x25, :lo12:idb_buf
|
|
mov x22, 0
|
|
add x26, x0, :lo12:gp_flash_check_buf
|
|
.L1113:
|
|
lsl x0, x22, 2
|
|
mov w27, w22
|
|
add x28, x0, x1
|
|
ldr w2, [x0, x26]
|
|
ldr w0, [x0, x1]
|
|
cmp w2, w0
|
|
beq .L1116
|
|
mov x2, 512
|
|
mov w1, 0
|
|
mov x0, x26
|
|
bl memset
|
|
ldr w2, [x26, w27, uxtw 2]
|
|
mov w4, w22
|
|
ldr w3, [x28]
|
|
mov w1, w19
|
|
adrp x0, .LC17
|
|
add x0, x0, :lo12:.LC17
|
|
bl printf
|
|
mov w0, w19
|
|
bl FW_FlashBlockErase.constprop.42
|
|
ldr w0, [x29, 172]
|
|
cmp w0, 1
|
|
bls .L1117
|
|
add w0, w20, w19
|
|
bl FW_FlashBlockErase.constprop.42
|
|
.L1117:
|
|
ldr w0, [x29, 172]
|
|
add w24, w24, w0
|
|
ldr w0, [x29, 136]
|
|
add w19, w19, w0
|
|
b .L1101
|
|
.L1107:
|
|
add w1, w4, w28, lsl 2
|
|
lsr w1, w1, 2
|
|
cbz w1, .L1104
|
|
ldr x0, [x29, 160]
|
|
add w3, w1, 1
|
|
ldrb w6, [x5]
|
|
ldrh w0, [x0, w3, sxtw 1]
|
|
cbz w6, .L1105
|
|
adrp x6, .LANCHOR122
|
|
mov w7, 12336
|
|
movk w7, 0x5638, lsl 16
|
|
ldr w6, [x6, #:lo12:.LANCHOR122]
|
|
cmp w6, w7
|
|
csel w0, w0, w3, ne
|
|
.L1105:
|
|
lsl w0, w0, 2
|
|
sub w0, w0, #4
|
|
str w0, [x29, 176]
|
|
.L1104:
|
|
mov w0, 61424
|
|
str w0, [x29, 180]
|
|
ldr x0, [x29, 160]
|
|
ldrh w27, [x0, w1, sxtw 1]
|
|
ldrb w0, [x5]
|
|
cbz w0, .L1106
|
|
adrp x0, .LANCHOR122
|
|
mov w3, 12336
|
|
movk w3, 0x5638, lsl 16
|
|
ldr w0, [x0, #:lo12:.LANCHOR122]
|
|
cmp w0, w3
|
|
csel w27, w27, w1, ne
|
|
.L1106:
|
|
adrp x0, .LANCHOR33
|
|
madd w1, w22, w27, w26
|
|
stp x5, x2, [x29, 112]
|
|
add x28, x28, 1
|
|
ldrb w6, [x0, #:lo12:.LANCHOR33]
|
|
adrp x0, .LANCHOR158
|
|
stp w4, w6, [x29, 140]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR158]
|
|
str w1, [x29, 168]
|
|
bl FlashBchSel
|
|
mov w0, 0
|
|
bl flash_boot_enter_slc_mode
|
|
ldr x0, [x21, #:lo12:.LANCHOR7]
|
|
add x3, x29, 176
|
|
ldr w1, [x29, 168]
|
|
ldr x2, [x29, 120]
|
|
ldrb w0, [x0, 9]
|
|
udiv w1, w1, w0
|
|
mov w0, 0
|
|
bl FlashProgPage
|
|
mov w0, 0
|
|
bl flash_boot_exit_slc_mode
|
|
ldr w6, [x29, 144]
|
|
mov w0, w6
|
|
bl FlashBchSel
|
|
udiv w1, w26, w22
|
|
add w2, w27, 1
|
|
mov w0, 0
|
|
bl FlashPageProgMsbFFData
|
|
ldr w4, [x29, 140]
|
|
ldr x5, [x29, 112]
|
|
b .L1103
|
|
.L1112:
|
|
ldr x0, [x29, 144]
|
|
ubfiz x0, x0, 9, 16
|
|
add x27, x27, x0
|
|
ldr w0, [x29, 144]
|
|
add w26, w0, w26
|
|
mov w0, 0
|
|
and w26, w26, 65535
|
|
b .L1108
|
|
.L1116:
|
|
add x22, x22, 1
|
|
cmp x22, 65536
|
|
bne .L1113
|
|
add w23, w23, 1
|
|
cmp w23, 5
|
|
bls .L1117
|
|
b .L1121
|
|
.size idb_write_data, .-idb_write_data
|
|
.section .text.ftl_memcpy32,"ax",@progbits
|
|
.align 2
|
|
.global ftl_memcpy32
|
|
.type ftl_memcpy32, %function
|
|
ftl_memcpy32:
|
|
mov x3, 0
|
|
.L1148:
|
|
cmp w2, w3
|
|
bhi .L1149
|
|
ret
|
|
.L1149:
|
|
ldr w4, [x1, x3, lsl 2]
|
|
str w4, [x0, x3, lsl 2]
|
|
add x3, x3, 1
|
|
b .L1148
|
|
.size ftl_memcpy32, .-ftl_memcpy32
|
|
.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.rknand_get_clk_rate,"ax",@progbits
|
|
.align 2
|
|
.global rknand_get_clk_rate
|
|
.type rknand_get_clk_rate, %function
|
|
rknand_get_clk_rate:
|
|
mov w0, 19712
|
|
movk w0, 0x8d2, lsl 16
|
|
ret
|
|
.size rknand_get_clk_rate, .-rknand_get_clk_rate
|
|
.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.NandcInit,"ax",@progbits
|
|
.align 2
|
|
.global NandcInit
|
|
.type NandcInit, %function
|
|
NandcInit:
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x2, .LANCHOR0
|
|
add x1, x2, :lo12:.LANCHOR0
|
|
adrp x4, .LANCHOR122
|
|
add x29, sp, 0
|
|
str x0, [x2, #:lo12:.LANCHOR0]
|
|
mov w2, 1
|
|
str w2, [x1, 24]
|
|
mov w2, 2
|
|
str wzr, [x1, 8]
|
|
str w2, [x1, 40]
|
|
mov w2, 3
|
|
str x0, [x1, 16]
|
|
str w2, [x1, 56]
|
|
adrp x2, .LANCHOR160
|
|
str x0, [x1, 32]
|
|
str x0, [x1, 48]
|
|
adrp x1, .LANCHOR19
|
|
str x0, [x1, #:lo12:.LANCHOR19]
|
|
ldr w1, [x0]
|
|
ubfx x3, x1, 13, 1
|
|
str w3, [x2, #:lo12:.LANCHOR160]
|
|
ldr w2, [x0, 352]
|
|
adrp x3, .LANCHOR34
|
|
and w1, w1, 245760
|
|
orr w1, w1, 256
|
|
ubfx x2, x2, 16, 4
|
|
str w2, [x3, #:lo12:.LANCHOR34]
|
|
ldr w2, [x0, 352]
|
|
str w2, [x4, #:lo12:.LANCHOR122]
|
|
cmp w2, 2049
|
|
bne .L1154
|
|
mov w2, 8
|
|
str w2, [x3, #:lo12:.LANCHOR34]
|
|
.L1154:
|
|
str w1, [x0]
|
|
mov w1, 4225
|
|
str wzr, [x0, 336]
|
|
str w1, [x0, 4]
|
|
mov w1, 8322
|
|
str w1, [x0, 344]
|
|
mov w1, 6657
|
|
movk w1, 0x1a, lsl 16
|
|
str w1, [x0, 304]
|
|
mov w0, 36864
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR161
|
|
adrp x2, .LANCHOR35
|
|
str x0, [x1, #:lo12:.LANCHOR161]
|
|
add x1, x2, :lo12:.LANCHOR35
|
|
str x0, [x2, #:lo12:.LANCHOR35]
|
|
add x0, x0, 32768
|
|
str wzr, [x1, 40]
|
|
str x0, [x1, 8]
|
|
adrp x0, .LANCHOR36
|
|
ldp x29, x30, [sp], 16
|
|
str wzr, [x0, #:lo12:.LANCHOR36]
|
|
ret
|
|
.size NandcInit, .-NandcInit
|
|
.section .text.FtlMemInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlMemInit
|
|
.type FtlMemInit, %function
|
|
FtlMemInit:
|
|
stp x29, x30, [sp, -64]!
|
|
adrp x0, .LANCHOR142
|
|
mov w1, 65535
|
|
add x29, sp, 0
|
|
strh wzr, [x0, #:lo12:.LANCHOR142]
|
|
adrp x0, .LANCHOR162
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR185
|
|
str wzr, [x0, #:lo12:.LANCHOR162]
|
|
adrp x0, .LANCHOR163
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR38
|
|
str wzr, [x0, #:lo12:.LANCHOR163]
|
|
adrp x0, .LANCHOR164
|
|
stp x23, x24, [sp, 48]
|
|
str wzr, [x0, #:lo12:.LANCHOR164]
|
|
adrp x0, .LANCHOR165
|
|
str wzr, [x0, #:lo12:.LANCHOR165]
|
|
adrp x0, .LANCHOR166
|
|
str wzr, [x0, #:lo12:.LANCHOR166]
|
|
adrp x0, .LANCHOR167
|
|
str wzr, [x0, #:lo12:.LANCHOR167]
|
|
adrp x0, .LANCHOR168
|
|
str wzr, [x0, #:lo12:.LANCHOR168]
|
|
adrp x0, .LANCHOR169
|
|
str wzr, [x0, #:lo12:.LANCHOR169]
|
|
adrp x0, .LANCHOR170
|
|
str wzr, [x0, #:lo12:.LANCHOR170]
|
|
adrp x0, .LANCHOR171
|
|
str wzr, [x0, #:lo12:.LANCHOR171]
|
|
adrp x0, .LANCHOR172
|
|
str wzr, [x0, #:lo12:.LANCHOR172]
|
|
adrp x0, .LANCHOR173
|
|
str wzr, [x0, #:lo12:.LANCHOR173]
|
|
adrp x0, .LANCHOR81
|
|
str wzr, [x0, #:lo12:.LANCHOR81]
|
|
adrp x0, .LANCHOR174
|
|
str wzr, [x0, #:lo12:.LANCHOR174]
|
|
adrp x0, .LANCHOR175
|
|
str wzr, [x0, #:lo12:.LANCHOR175]
|
|
adrp x0, .LANCHOR176
|
|
str wzr, [x0, #:lo12:.LANCHOR176]
|
|
adrp x0, .LANCHOR177
|
|
str wzr, [x0, #:lo12:.LANCHOR177]
|
|
adrp x0, .LANCHOR178
|
|
str w1, [x0, #:lo12:.LANCHOR178]
|
|
adrp x0, .LANCHOR179
|
|
adrp x1, .LANCHOR115
|
|
str wzr, [x0, #:lo12:.LANCHOR179]
|
|
adrp x0, .LANCHOR180
|
|
str wzr, [x0, #:lo12:.LANCHOR180]
|
|
adrp x0, .LANCHOR75
|
|
str wzr, [x0, #:lo12:.LANCHOR75]
|
|
mov w0, -1
|
|
strh w0, [x1, #:lo12:.LANCHOR115]
|
|
adrp x1, .LANCHOR116
|
|
strh w0, [x1, #:lo12:.LANCHOR116]
|
|
adrp x1, .LANCHOR117
|
|
strh w0, [x1, #:lo12:.LANCHOR117]
|
|
adrp x1, .LANCHOR118
|
|
strh w0, [x1, #:lo12:.LANCHOR118]
|
|
adrp x0, .LANCHOR181
|
|
mov w1, 32
|
|
strh w1, [x0, #:lo12:.LANCHOR181]
|
|
adrp x0, .LANCHOR182
|
|
mov w1, 128
|
|
strh w1, [x0, #:lo12:.LANCHOR182]
|
|
adrp x0, .LANCHOR183
|
|
mov w1, 128
|
|
strh wzr, [x0, #:lo12:.LANCHOR183]
|
|
adrp x0, .LANCHOR119
|
|
strh wzr, [x0, #:lo12:.LANCHOR119]
|
|
adrp x0, .LANCHOR184
|
|
strh wzr, [x0, #:lo12:.LANCHOR184]
|
|
adrp x0, .LANCHOR121
|
|
strh wzr, [x0, #:lo12:.LANCHOR121]
|
|
adrp x0, .LANCHOR55
|
|
ldrh w0, [x0, #:lo12:.LANCHOR55]
|
|
sdiv w1, w1, w0
|
|
ldrh w0, [x21, #:lo12:.LANCHOR38]
|
|
lsl w0, w0, 2
|
|
str w1, [x19, #:lo12:.LANCHOR185]
|
|
cmp w1, w0
|
|
bls .L1157
|
|
str w0, [x19, #:lo12:.LANCHOR185]
|
|
.L1157:
|
|
adrp x20, .LANCHOR54
|
|
adrp x0, .LANCHOR72
|
|
mov w22, 56
|
|
adrp x24, .LANCHOR58
|
|
str wzr, [x0, #:lo12:.LANCHOR72]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR54]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR112
|
|
str x0, [x1, #:lo12:.LANCHOR112]
|
|
mov w0, 12
|
|
ldrh w1, [x20, #:lo12:.LANCHOR54]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
ldrh w20, [x21, #:lo12:.LANCHOR38]
|
|
adrp x1, .LANCHOR114
|
|
str x0, [x1, #:lo12:.LANCHOR114]
|
|
mul w20, w20, w22
|
|
lsl w23, w20, 2
|
|
mov w0, w23
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR186
|
|
str x0, [x1, #:lo12:.LANCHOR186]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR187
|
|
str x0, [x1, #:lo12:.LANCHOR187]
|
|
mov w0, w23
|
|
bl ftl_malloc
|
|
adrp x23, .LANCHOR57
|
|
adrp x1, .LANCHOR188
|
|
str x0, [x1, #:lo12:.LANCHOR188]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR79
|
|
str x0, [x1, #:lo12:.LANCHOR79]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR109
|
|
str x0, [x1, #:lo12:.LANCHOR109]
|
|
ldr w0, [x19, #:lo12:.LANCHOR185]
|
|
mul w0, w0, w22
|
|
adrp x22, .LANCHOR110
|
|
bl ftl_malloc
|
|
ldrh w20, [x23, #:lo12:.LANCHOR57]
|
|
adrp x1, .LANCHOR73
|
|
str x0, [x1, #:lo12:.LANCHOR73]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR38]
|
|
lsl w0, w0, 1
|
|
add w0, w0, 1
|
|
str w0, [x22, #:lo12:.LANCHOR110]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR189
|
|
str x0, [x1, #:lo12:.LANCHOR189]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR190
|
|
str x0, [x1, #:lo12:.LANCHOR190]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR191
|
|
str x0, [x1, #:lo12:.LANCHOR191]
|
|
ldr w0, [x22, #:lo12:.LANCHOR110]
|
|
mul w0, w20, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR107
|
|
str x0, [x1, #:lo12:.LANCHOR107]
|
|
ldr w0, [x19, #:lo12:.LANCHOR185]
|
|
mul w0, w20, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR192
|
|
str x0, [x1, #:lo12:.LANCHOR192]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR193
|
|
str x0, [x1, #:lo12:.LANCHOR193]
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR194
|
|
str x0, [x1, #:lo12:.LANCHOR194]
|
|
mov w0, 24
|
|
ldr w1, [x22, #:lo12:.LANCHOR110]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
ldrh w20, [x24, #:lo12:.LANCHOR58]
|
|
adrp x1, .LANCHOR106
|
|
str x0, [x1, #:lo12:.LANCHOR106]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR38]
|
|
adrp x21, .LANCHOR64
|
|
mul w20, w20, w0
|
|
mov w0, w20
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR195
|
|
str x0, [x1, #:lo12:.LANCHOR195]
|
|
lsl w0, w20, 2
|
|
bl ftl_malloc
|
|
adrp x20, .LANCHOR41
|
|
adrp x1, .LANCHOR196
|
|
str x0, [x1, #:lo12:.LANCHOR196]
|
|
ldrh w1, [x24, #:lo12:.LANCHOR58]
|
|
ldr w0, [x22, #:lo12:.LANCHOR110]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR108
|
|
str x0, [x1, #:lo12:.LANCHOR108]
|
|
ldrh w1, [x24, #:lo12:.LANCHOR58]
|
|
ldr w0, [x19, #:lo12:.LANCHOR185]
|
|
adrp x19, .LANCHOR198
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR197
|
|
str x0, [x1, #:lo12:.LANCHOR197]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR41]
|
|
ubfiz w0, w0, 1, 15
|
|
strh w0, [x19, #:lo12:.LANCHOR198]
|
|
and w0, w0, 65534
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR140
|
|
str x0, [x1, #:lo12:.LANCHOR140]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR198]
|
|
add x0, x0, 547
|
|
lsr x0, x0, 9
|
|
strh w0, [x19, #:lo12:.LANCHOR198]
|
|
lsl w0, w0, 9
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR199
|
|
str x0, [x1, #:lo12:.LANCHOR199]
|
|
adrp x1, .LANCHOR80
|
|
add x0, x0, 32
|
|
str x0, [x1, #:lo12:.LANCHOR80]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR41]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
ldr w19, [x21, #:lo12:.LANCHOR64]
|
|
adrp x1, .LANCHOR85
|
|
str x0, [x1, #:lo12:.LANCHOR85]
|
|
lsl w19, w19, 1
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR132
|
|
str x0, [x1, #:lo12:.LANCHOR132]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x19, .LANCHOR61
|
|
adrp x1, .LANCHOR128
|
|
str x0, [x1, #:lo12:.LANCHOR128]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR41]
|
|
lsr w0, w0, 3
|
|
add w0, w0, 4
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR1
|
|
str x0, [x1, #:lo12:.LANCHOR1]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR61]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR71
|
|
str x0, [x1, #:lo12:.LANCHOR71]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR61]
|
|
lsl w0, w0, 1
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR200
|
|
str x0, [x1, #:lo12:.LANCHOR200]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR61]
|
|
adrp x19, .LANCHOR62
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR201
|
|
str x0, [x1, #:lo12:.LANCHOR201]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR62]
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
ldrh w2, [x19, #:lo12:.LANCHOR62]
|
|
adrp x1, .LANCHOR202
|
|
str x0, [x1, #:lo12:.LANCHOR202]
|
|
mov w1, 0
|
|
lsl w2, w2, 2
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR66
|
|
ldrh w19, [x0, #:lo12:.LANCHOR66]
|
|
lsl w19, w19, 2
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR134
|
|
str x0, [x1, #:lo12:.LANCHOR134]
|
|
mov w0, w19
|
|
bl ftl_malloc
|
|
adrp x19, .LANCHOR67
|
|
adrp x1, .LANCHOR203
|
|
str x0, [x1, #:lo12:.LANCHOR203]
|
|
ldr w0, [x21, #:lo12:.LANCHOR64]
|
|
lsl w0, w0, 2
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR133
|
|
str x0, [x1, #:lo12:.LANCHOR133]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR67]
|
|
lsl w0, w0, 4
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR98
|
|
str x0, [x1, #:lo12:.LANCHOR98]
|
|
ldrh w1, [x19, #:lo12:.LANCHOR67]
|
|
adrp x19, .LANCHOR126
|
|
ldrh w0, [x23, #:lo12:.LANCHOR57]
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR129
|
|
str x0, [x1, #:lo12:.LANCHOR129]
|
|
mov w0, 6
|
|
ldrh w1, [x20, #:lo12:.LANCHOR41]
|
|
adrp x20, .LANCHOR45
|
|
mul w0, w1, w0
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR83
|
|
str x0, [x1, #:lo12:.LANCHOR83]
|
|
adrp x0, .LANCHOR51
|
|
ldrh w1, [x20, #:lo12:.LANCHOR45]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR51]
|
|
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, .LANCHOR76
|
|
ldrh w5, [x19, #:lo12:.LANCHOR126]
|
|
add x2, x1, :lo12:.LANCHOR76
|
|
ldrh w7, [x20, #:lo12:.LANCHOR45]
|
|
add x6, x2, 40
|
|
mov w3, w5
|
|
str x0, [x2, 32]
|
|
mov x0, 1
|
|
.L1158:
|
|
cmp w0, w7
|
|
bcc .L1159
|
|
mov w2, 8
|
|
sub w2, w2, w0
|
|
add x2, x2, 1
|
|
add x1, x1, :lo12:.LANCHOR76
|
|
mov x3, 0
|
|
.L1160:
|
|
add x3, x3, 1
|
|
cmp x2, x3
|
|
bne .L1161
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L1159:
|
|
ldr x4, [x2, 32]
|
|
add w0, w0, 1
|
|
add x4, x4, x3, uxtw 2
|
|
add w3, w3, w5
|
|
str x4, [x6], 8
|
|
b .L1158
|
|
.L1161:
|
|
add x4, x0, x3
|
|
add x4, x1, x4, lsl 3
|
|
str xzr, [x4, 24]
|
|
b .L1160
|
|
.size FtlMemInit, .-FtlMemInit
|
|
.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.FlashCs123Init,"ax",@progbits
|
|
.align 2
|
|
.global FlashCs123Init
|
|
.type FlashCs123Init, %function
|
|
FlashCs123Init:
|
|
ret
|
|
.size FlashCs123Init, .-FlashCs123Init
|
|
.section .text.rk_nand_de_init,"ax",@progbits
|
|
.align 2
|
|
.global rk_nand_de_init
|
|
.type rk_nand_de_init, %function
|
|
rk_nand_de_init:
|
|
b FlashDeInit
|
|
.size rk_nand_de_init, .-rk_nand_de_init
|
|
.section .text.rk_ftl_get_capacity,"ax",@progbits
|
|
.align 2
|
|
.global rk_ftl_get_capacity
|
|
.type rk_ftl_get_capacity, %function
|
|
rk_ftl_get_capacity:
|
|
adrp x0, .LANCHOR68
|
|
ldr w0, [x0, #:lo12:.LANCHOR68]
|
|
ret
|
|
.size rk_ftl_get_capacity, .-rk_ftl_get_capacity
|
|
.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]
|
|
adrp x21, .LC20
|
|
stp x23, x24, [sp, 48]
|
|
mov x22, x1
|
|
stp x25, x26, [sp, 64]
|
|
adrp x23, .LC19
|
|
mov x26, x0
|
|
mov w24, w2
|
|
uxtw x25, w3
|
|
add x23, x23, :lo12:.LC19
|
|
add x21, x21, :lo12:.LC20
|
|
stp x19, x20, [sp, 16]
|
|
str x27, [sp, 80]
|
|
mov x19, 0
|
|
mov w20, 0
|
|
adrp x27, .LC21
|
|
.L1168:
|
|
cmp x25, x19
|
|
bne .L1174
|
|
ldp x19, x20, [sp, 16]
|
|
adrp x1, .LC21
|
|
ldp x21, x22, [sp, 32]
|
|
add x1, x1, :lo12:.LC21
|
|
ldp x23, x24, [sp, 48]
|
|
adrp x0, .LC7
|
|
ldp x25, x26, [sp, 64]
|
|
add x0, x0, :lo12:.LC7
|
|
ldr x27, [sp, 80]
|
|
ldp x29, x30, [sp], 96
|
|
b printf
|
|
.L1174:
|
|
cbnz w20, .L1169
|
|
mov w2, w19
|
|
mov x1, x26
|
|
mov x0, x23
|
|
bl printf
|
|
.L1169:
|
|
cmp w24, 4
|
|
bne .L1170
|
|
ldr w1, [x22, x19, lsl 2]
|
|
.L1176:
|
|
mov x0, x21
|
|
add w20, w20, 1
|
|
bl printf
|
|
cmp w20, 15
|
|
bls .L1173
|
|
mov w20, 0
|
|
add x1, x27, :lo12:.LC21
|
|
adrp x0, .LC7
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1173:
|
|
add x19, x19, 1
|
|
b .L1168
|
|
.L1170:
|
|
cmp w24, 2
|
|
bne .L1172
|
|
ldrsh w1, [x22, x19, lsl 1]
|
|
b .L1176
|
|
.L1172:
|
|
ldrb w1, [x22, x19]
|
|
b .L1176
|
|
.size rknand_print_hex, .-rknand_print_hex
|
|
.section .text.HynixGetReadRetryDefault,"ax",@progbits
|
|
.align 2
|
|
.global HynixGetReadRetryDefault
|
|
.type HynixGetReadRetryDefault, %function
|
|
HynixGetReadRetryDefault:
|
|
stp x29, x30, [sp, -144]!
|
|
mov w1, -84
|
|
mov w4, -83
|
|
mov w3, -82
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR20
|
|
stp x25, x26, [sp, 64]
|
|
mov w26, w0
|
|
add x0, x20, :lo12:.LANCHOR20
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
cmp w26, 2
|
|
stp x27, x28, [sp, 80]
|
|
strb w1, [x0, 4]
|
|
mov w1, -81
|
|
strb w26, [x20, #:lo12:.LANCHOR20]
|
|
strb w4, [x0, 5]
|
|
strb w3, [x0, 6]
|
|
strb w1, [x0, 7]
|
|
bne .L1178
|
|
mov w1, -89
|
|
strb w1, [x0, 4]
|
|
adrp x0, .LANCHOR204+17
|
|
mov w1, -9
|
|
strb w1, [x0, #:lo12:.LANCHOR204+17]
|
|
.L1243:
|
|
mov w27, 7
|
|
b .L1287
|
|
.L1178:
|
|
cmp w26, 3
|
|
bne .L1180
|
|
mov w1, -80
|
|
strb w1, [x0, 4]
|
|
mov w1, -79
|
|
strb w1, [x0, 5]
|
|
mov w1, -78
|
|
strb w1, [x0, 6]
|
|
mov w1, -77
|
|
strb w1, [x0, 7]
|
|
mov w1, -76
|
|
strb w1, [x0, 8]
|
|
mov w1, -75
|
|
strb w1, [x0, 9]
|
|
mov w1, -74
|
|
strb w1, [x0, 10]
|
|
mov w1, -73
|
|
.L1286:
|
|
mov w27, 8
|
|
mov w28, w27
|
|
strb w1, [x0, 11]
|
|
.L1179:
|
|
sub w0, w26, #1
|
|
cmp w0, 1
|
|
bhi .L1185
|
|
adrp x26, .LANCHOR26
|
|
adrp x0, .LANCHOR27
|
|
adrp x25, .LANCHOR0
|
|
add x26, x26, :lo12:.LANCHOR26
|
|
add x4, x0, :lo12:.LANCHOR27
|
|
add x25, x25, :lo12:.LANCHOR0
|
|
mov w24, 0
|
|
.L1186:
|
|
ldrb w0, [x26]
|
|
cmp w0, w24
|
|
bhi .L1192
|
|
.L1193:
|
|
add x20, x20, :lo12:.LANCHOR20
|
|
ldp x21, x22, [sp, 32]
|
|
strb w28, [x20, 1]
|
|
strb w27, [x20, 2]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 144
|
|
ret
|
|
.L1180:
|
|
cmp w26, 4
|
|
bne .L1181
|
|
mov w5, -52
|
|
strb w5, [x0, 4]
|
|
mov w5, -65
|
|
strb w5, [x0, 5]
|
|
mov w5, -86
|
|
strb w5, [x0, 6]
|
|
mov w5, -85
|
|
strb w4, [x0, 9]
|
|
strb w5, [x0, 7]
|
|
mov w5, -51
|
|
strb w3, [x0, 10]
|
|
strb w5, [x0, 8]
|
|
b .L1286
|
|
.L1181:
|
|
cmp w26, 5
|
|
bne .L1182
|
|
mov w1, 56
|
|
strb w1, [x0, 4]
|
|
mov w1, 57
|
|
strb w1, [x0, 5]
|
|
mov w1, 58
|
|
mov w27, 8
|
|
strb w1, [x0, 6]
|
|
mov w1, 59
|
|
strb w1, [x0, 7]
|
|
.L1287:
|
|
mov w28, 4
|
|
b .L1179
|
|
.L1182:
|
|
cmp w26, 6
|
|
bne .L1183
|
|
mov w1, 14
|
|
strb w1, [x0, 4]
|
|
mov w1, 15
|
|
strb w1, [x0, 5]
|
|
mov w1, 16
|
|
mov w27, 12
|
|
strb w1, [x0, 6]
|
|
mov w1, 17
|
|
strb w1, [x0, 7]
|
|
b .L1287
|
|
.L1183:
|
|
cmp w26, 7
|
|
bne .L1184
|
|
mov w1, -80
|
|
strb w1, [x0, 4]
|
|
mov w1, -79
|
|
strb w1, [x0, 5]
|
|
mov w1, -78
|
|
strb w1, [x0, 6]
|
|
mov w1, -77
|
|
strb w1, [x0, 7]
|
|
mov w1, -76
|
|
strb w1, [x0, 8]
|
|
mov w1, -75
|
|
strb w1, [x0, 9]
|
|
mov w1, -74
|
|
strb w1, [x0, 10]
|
|
mov w1, -73
|
|
strb w1, [x0, 11]
|
|
mov w1, -44
|
|
mov w27, 12
|
|
strb w1, [x0, 12]
|
|
mov w28, 10
|
|
mov w1, -43
|
|
strb w1, [x0, 13]
|
|
b .L1179
|
|
.L1184:
|
|
cmp w26, 8
|
|
bne .L1243
|
|
mov w1, 6
|
|
strb w1, [x0, 4]
|
|
mov w1, 7
|
|
strb w1, [x0, 5]
|
|
mov w1, 9
|
|
strb w26, [x0, 6]
|
|
strb w1, [x0, 7]
|
|
mov w27, 50
|
|
mov w1, 10
|
|
mov w28, 5
|
|
strb w1, [x0, 8]
|
|
b .L1179
|
|
.L1192:
|
|
ldrb w1, [x4, w24, sxtw]
|
|
add x0, x20, :lo12:.LANCHOR20
|
|
mov x21, x0
|
|
mov x22, 0
|
|
ubfiz x19, x1, 6, 8
|
|
sbfiz x1, x1, 4, 32
|
|
add x2, x25, x1
|
|
add x19, x19, 20
|
|
add x19, x0, x19
|
|
ldr x1, [x25, x1]
|
|
ldrb w23, [x2, 8]
|
|
add x23, x1, x23, lsl 8
|
|
mov w1, 55
|
|
.L1187:
|
|
add x0, x21, x22
|
|
str w1, [x23, 2056]
|
|
str x4, [x29, 128]
|
|
str w1, [x29, 140]
|
|
ldrb w0, [x0, 4]
|
|
str w0, [x23, 2052]
|
|
mov x0, 80
|
|
bl udelay
|
|
ldr w0, [x23, 2048]
|
|
strb w0, [x19, x22]
|
|
add x22, x22, 1
|
|
cmp w28, w22, uxtb
|
|
ldr w1, [x29, 140]
|
|
ldr x4, [x29, 128]
|
|
bhi .L1187
|
|
adrp x2, .LANCHOR204
|
|
add x2, x2, :lo12:.LANCHOR204
|
|
mov x0, 0
|
|
.L1190:
|
|
add x7, x19, x0
|
|
add x6, x2, x0
|
|
mov x1, 1
|
|
.L1189:
|
|
lsl x3, x1, 2
|
|
lsl x8, x1, 3
|
|
ldrb w10, [x19, x0]
|
|
add x1, x1, 1
|
|
cmp x1, 7
|
|
ldrb w3, [x6, x3]
|
|
add w3, w3, w10
|
|
strb w3, [x7, x8]
|
|
bne .L1189
|
|
add x0, x0, 1
|
|
cmp x0, 4
|
|
bne .L1190
|
|
add w24, w24, 1
|
|
strb wzr, [x19, 16]
|
|
strb wzr, [x19, 24]
|
|
and w24, w24, 255
|
|
strb wzr, [x19, 32]
|
|
strb wzr, [x19, 40]
|
|
strb wzr, [x19, 48]
|
|
strb wzr, [x19, 41]
|
|
strb wzr, [x19, 49]
|
|
b .L1186
|
|
.L1185:
|
|
sub w0, w26, #3
|
|
cmp w0, 5
|
|
bhi .L1193
|
|
mul w24, w27, w28
|
|
adrp x25, .LANCHOR26
|
|
sub w22, w28, #1
|
|
mov w21, 0
|
|
and x22, x22, 255
|
|
lsl w0, w24, 4
|
|
asr w23, w24, 1
|
|
str w0, [x29, 128]
|
|
lsl w0, w23, 1
|
|
sbfiz x24, x23, 1, 32
|
|
str w0, [x29, 140]
|
|
add x0, x25, :lo12:.LANCHOR26
|
|
sub w25, w26, #5
|
|
str x0, [x29, 120]
|
|
add x0, x22, 1
|
|
str x0, [x29, 112]
|
|
.L1194:
|
|
ldr x0, [x29, 120]
|
|
ldrb w0, [x0]
|
|
cmp w0, w21
|
|
bls .L1193
|
|
adrp x0, .LANCHOR27
|
|
add x0, x0, :lo12:.LANCHOR27
|
|
ldrb w22, [x0, w21, sxtw]
|
|
adrp x0, .LANCHOR0
|
|
add x0, x0, :lo12:.LANCHOR0
|
|
sbfiz x1, x22, 4, 32
|
|
add x3, x0, x1
|
|
ldr x0, [x0, x1]
|
|
ldrb w19, [x3, 8]
|
|
add x19, x0, x19, lsl 8
|
|
mov w0, 255
|
|
str w0, [x19, 2056]
|
|
mov w0, w22
|
|
bl NandcWaitFlashReady
|
|
cmp w26, 7
|
|
bne .L1195
|
|
mov x1, 28
|
|
mov w0, 160
|
|
add x3, x20, :lo12:.LANCHOR20
|
|
umaddl x0, w0, w22, x1
|
|
.L1288:
|
|
add x3, x3, x0
|
|
mov w0, 54
|
|
str w0, [x19, 2056]
|
|
cmp w26, 4
|
|
bne .L1198
|
|
mov w0, 255
|
|
str w0, [x19, 2052]
|
|
mov w0, 64
|
|
str w0, [x19, 2048]
|
|
mov w0, 204
|
|
.L1289:
|
|
str w0, [x19, 2052]
|
|
mov w0, 77
|
|
b .L1290
|
|
.L1195:
|
|
cmp w26, 8
|
|
beq .L1197
|
|
ubfiz x0, x22, 6, 8
|
|
add x3, x20, :lo12:.LANCHOR20
|
|
add x0, x0, 20
|
|
b .L1288
|
|
.L1198:
|
|
cmp w25, 1
|
|
bhi .L1200
|
|
add x0, x20, :lo12:.LANCHOR20
|
|
ldrb w0, [x0, 4]
|
|
str w0, [x19, 2052]
|
|
mov w0, 82
|
|
.L1290:
|
|
str w0, [x19, 2048]
|
|
.L1199:
|
|
mov w0, 22
|
|
str w0, [x19, 2056]
|
|
mov w0, 23
|
|
str w0, [x19, 2056]
|
|
mov w0, 4
|
|
str w0, [x19, 2056]
|
|
mov w0, 25
|
|
str w0, [x19, 2056]
|
|
str wzr, [x19, 2056]
|
|
cmp w26, 6
|
|
str wzr, [x19, 2052]
|
|
str wzr, [x19, 2052]
|
|
bne .L1201
|
|
mov w0, 31
|
|
str w0, [x19, 2052]
|
|
.L1202:
|
|
mov w0, 2
|
|
str w0, [x19, 2052]
|
|
str wzr, [x19, 2052]
|
|
.L1242:
|
|
mov w0, 48
|
|
str w0, [x19, 2056]
|
|
str x3, [x29, 104]
|
|
mov w0, w22
|
|
bl NandcWaitFlashReady
|
|
cmp w25, 1
|
|
ldr x3, [x29, 104]
|
|
ccmp w26, 8, 4, hi
|
|
beq .L1244
|
|
cmp w26, 7
|
|
mov w0, 2
|
|
mov w1, 32
|
|
csel w1, w1, w0, eq
|
|
.L1203:
|
|
adrp x8, .LANCHOR154
|
|
mov x7, 0
|
|
ldr x0, [x8, #:lo12:.LANCHOR154]
|
|
.L1204:
|
|
ldr w10, [x19, 2048]
|
|
strb w10, [x0, x7]
|
|
add x7, x7, 1
|
|
cmp w1, w7, uxtb
|
|
bhi .L1204
|
|
cmp w26, 8
|
|
bne .L1205
|
|
mov w1, 0
|
|
.L1207:
|
|
ldrb w7, [x0]
|
|
cmp w7, 50
|
|
beq .L1206
|
|
ldrb w7, [x0, 1]
|
|
cmp w7, 5
|
|
beq .L1206
|
|
add w1, w1, 1
|
|
add x0, x0, 4
|
|
and w1, w1, 255
|
|
cmp w1, 8
|
|
bne .L1207
|
|
.L1208:
|
|
adrp x0, .LC22
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC22
|
|
bl printf
|
|
.L1210:
|
|
b .L1210
|
|
.L1200:
|
|
cmp w26, 7
|
|
bne .L1199
|
|
mov w0, 174
|
|
str w0, [x19, 2052]
|
|
str wzr, [x19, 2048]
|
|
mov w0, 176
|
|
b .L1289
|
|
.L1201:
|
|
str wzr, [x19, 2052]
|
|
b .L1202
|
|
.L1244:
|
|
mov w1, 16
|
|
b .L1203
|
|
.L1206:
|
|
cmp w1, 6
|
|
bhi .L1208
|
|
.L1209:
|
|
ldr x7, [x8, #:lo12:.LANCHOR154]
|
|
mov x0, 0
|
|
.L1219:
|
|
ldr w1, [x29, 128]
|
|
cmp w1, w0
|
|
bgt .L1220
|
|
ldr x1, [x8, #:lo12:.LANCHOR154]
|
|
mov w10, 8
|
|
add x8, x1, x24
|
|
.L1222:
|
|
mov x0, 0
|
|
.L1221:
|
|
ldrh w11, [x8, x0, lsl 1]
|
|
mvn w11, w11
|
|
strh w11, [x8, x0, lsl 1]
|
|
add x0, x0, 1
|
|
cmp w23, w0
|
|
bgt .L1221
|
|
ldr w0, [x29, 140]
|
|
subs w10, w10, #1
|
|
add x8, x8, x0, uxtw 1
|
|
bne .L1222
|
|
mov x10, x1
|
|
mov w11, 0
|
|
mov w16, 1
|
|
.L1228:
|
|
mov w0, 0
|
|
mov w8, 0
|
|
.L1227:
|
|
mov x14, x10
|
|
lsl w15, w16, w8
|
|
mov w13, 16
|
|
mov w12, 0
|
|
.L1225:
|
|
ldrh w17, [x14]
|
|
add x14, x14, x24
|
|
bics wzr, w15, w17
|
|
cinc w12, w12, eq
|
|
subs w13, w13, #1
|
|
bne .L1225
|
|
cmp w12, 8
|
|
bls .L1226
|
|
orr w0, w0, w15
|
|
and w0, w0, 65535
|
|
.L1226:
|
|
add w8, w8, 1
|
|
cmp w8, 16
|
|
bne .L1227
|
|
strh w0, [x10], 2
|
|
add w11, w11, 1
|
|
cmp w23, w11
|
|
bgt .L1228
|
|
mov x0, 0
|
|
mov w8, 0
|
|
.L1231:
|
|
ldr w10, [x1, x0]
|
|
add x0, x0, 4
|
|
cmp w10, 0
|
|
cinc w8, w8, eq
|
|
cmp x0, 32
|
|
bne .L1231
|
|
cmp w8, 7
|
|
ble .L1232
|
|
mov w3, 1024
|
|
mov w2, 1
|
|
adrp x0, .LC23
|
|
add x0, x0, :lo12:.LC23
|
|
bl rknand_print_hex
|
|
adrp x0, .LC22
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC22
|
|
bl printf
|
|
.L1233:
|
|
b .L1233
|
|
.L1205:
|
|
cmp w26, 7
|
|
bne .L1211
|
|
mov w1, 0
|
|
.L1213:
|
|
ldrb w7, [x0]
|
|
cmp w7, 12
|
|
beq .L1212
|
|
ldrb w7, [x0, 1]
|
|
cmp w7, 10
|
|
beq .L1212
|
|
add w1, w1, 1
|
|
add x0, x0, 4
|
|
and w1, w1, 255
|
|
cmp w1, 8
|
|
bne .L1213
|
|
.L1214:
|
|
adrp x0, .LC22
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC22
|
|
bl printf
|
|
.L1215:
|
|
b .L1215
|
|
.L1212:
|
|
cmp w1, 6
|
|
bls .L1209
|
|
b .L1214
|
|
.L1211:
|
|
cmp w26, 6
|
|
bne .L1209
|
|
mov x1, 0
|
|
.L1216:
|
|
ldrb w7, [x0, x1]
|
|
cmp w7, 12
|
|
beq .L1209
|
|
add x7, x0, x1
|
|
ldrb w7, [x7, 8]
|
|
cmp w7, 4
|
|
beq .L1209
|
|
add x1, x1, 1
|
|
cmp x1, 8
|
|
bne .L1216
|
|
adrp x0, .LC22
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC22
|
|
bl printf
|
|
.L1218:
|
|
b .L1218
|
|
.L1220:
|
|
ldr w1, [x19, 2048]
|
|
strb w1, [x7, x0]
|
|
add x0, x0, 1
|
|
b .L1219
|
|
.L1232:
|
|
cmp w26, 6
|
|
beq .L1246
|
|
cmp w26, 7
|
|
beq .L1247
|
|
cmp w26, 8
|
|
mov x1, 8
|
|
mov x0, 5
|
|
csel x0, x0, x1, eq
|
|
.L1234:
|
|
mov w8, 0
|
|
.L1235:
|
|
mov x1, 0
|
|
.L1236:
|
|
ldrb w10, [x7, x1]
|
|
strb w10, [x3, x1]
|
|
add x1, x1, 1
|
|
cmp w28, w1, uxtb
|
|
bhi .L1236
|
|
ldr x1, [x29, 112]
|
|
add w8, w8, 1
|
|
add x3, x3, x0
|
|
cmp w27, w8
|
|
add x7, x7, x1
|
|
bgt .L1235
|
|
mov w0, 255
|
|
str w0, [x19, 2056]
|
|
mov w0, w22
|
|
bl NandcWaitFlashReady
|
|
cmp w25, 1
|
|
bhi .L1238
|
|
mov w0, 54
|
|
str w0, [x19, 2056]
|
|
adrp x0, .LANCHOR20+4
|
|
mov w1, -1
|
|
ldrb w0, [x0, #:lo12:.LANCHOR20+4]
|
|
str w0, [x19, 2052]
|
|
str wzr, [x19, 2048]
|
|
mov w0, 22
|
|
str w0, [x19, 2056]
|
|
mov w0, w21
|
|
bl FlashReadCmd
|
|
.L1239:
|
|
add w21, w21, 1
|
|
mov w0, w22
|
|
and w21, w21, 255
|
|
bl NandcWaitFlashReady
|
|
b .L1194
|
|
.L1246:
|
|
mov x0, 4
|
|
b .L1234
|
|
.L1247:
|
|
mov x0, 10
|
|
b .L1234
|
|
.L1238:
|
|
cmp w26, 8
|
|
bne .L1240
|
|
mov w0, 190
|
|
.L1291:
|
|
str w0, [x19, 2056]
|
|
b .L1239
|
|
.L1240:
|
|
mov w0, 56
|
|
b .L1291
|
|
.L1197:
|
|
mov w0, 120
|
|
str w0, [x19, 2056]
|
|
str wzr, [x19, 2052]
|
|
mov w0, 23
|
|
str wzr, [x19, 2052]
|
|
mov w1, 25
|
|
str wzr, [x19, 2052]
|
|
add x3, x20, :lo12:.LANCHOR20
|
|
str w0, [x19, 2056]
|
|
mov w0, 4
|
|
str w0, [x19, 2056]
|
|
add x3, x3, 28
|
|
str w1, [x19, 2056]
|
|
mov w1, 218
|
|
str w1, [x19, 2056]
|
|
mov w1, 21
|
|
str wzr, [x19, 2056]
|
|
str wzr, [x19, 2052]
|
|
str wzr, [x19, 2052]
|
|
str w1, [x19, 2052]
|
|
str w0, [x19, 2052]
|
|
str wzr, [x19, 2052]
|
|
b .L1242
|
|
.size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
|
|
.section .text.FlashGetReadRetryDefault,"ax",@progbits
|
|
.align 2
|
|
.global FlashGetReadRetryDefault
|
|
.type FlashGetReadRetryDefault, %function
|
|
FlashGetReadRetryDefault:
|
|
mov w1, w0
|
|
cbz w0, .L1292
|
|
sub w2, w0, #1
|
|
cmp w2, 7
|
|
bhi .L1294
|
|
b HynixGetReadRetryDefault
|
|
.L1294:
|
|
cmp w0, 49
|
|
bne .L1295
|
|
adrp x2, .LANCHOR20
|
|
add x0, x2, :lo12:.LANCHOR20
|
|
strb w1, [x2, #:lo12:.LANCHOR20]
|
|
mov w1, 4
|
|
strb w1, [x0, 1]
|
|
mov w1, 15
|
|
strb w1, [x0, 2]
|
|
adrp x1, .LANCHOR14
|
|
add x1, x1, :lo12:.LANCHOR14
|
|
mov w2, 64
|
|
.L1304:
|
|
add x0, x0, 4
|
|
b ftl_memcpy
|
|
.L1295:
|
|
sub w0, w0, #65
|
|
cmp w1, 33
|
|
ccmp w0, 1, 0, ne
|
|
bhi .L1296
|
|
adrp x2, .LANCHOR20
|
|
add x0, x2, :lo12:.LANCHOR20
|
|
strb w1, [x2, #:lo12:.LANCHOR20]
|
|
mov w1, 4
|
|
.L1305:
|
|
strb w1, [x0, 1]
|
|
mov w1, 7
|
|
mov w2, 45
|
|
strb w1, [x0, 2]
|
|
adrp x1, .LANCHOR10
|
|
add x1, x1, :lo12:.LANCHOR10
|
|
b .L1304
|
|
.L1296:
|
|
cmp w1, 34
|
|
mov w0, 67
|
|
ccmp w1, w0, 4, ne
|
|
bne .L1297
|
|
adrp x2, .LANCHOR20
|
|
add x0, x2, :lo12:.LANCHOR20
|
|
strb w1, [x2, #:lo12:.LANCHOR20]
|
|
mov w1, 5
|
|
b .L1305
|
|
.L1297:
|
|
cmp w1, 35
|
|
mov w0, 68
|
|
ccmp w1, w0, 4, ne
|
|
bne .L1292
|
|
adrp x2, .LANCHOR20
|
|
add x0, x2, :lo12:.LANCHOR20
|
|
strb w1, [x2, #:lo12:.LANCHOR20]
|
|
mov w1, 5
|
|
strb w1, [x0, 1]
|
|
mov w1, 17
|
|
mov w2, 95
|
|
strb w1, [x0, 2]
|
|
adrp x1, .LANCHOR9
|
|
add x1, x1, :lo12:.LANCHOR9
|
|
b .L1304
|
|
.L1292:
|
|
ret
|
|
.size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
|
|
.section .text.FlashInit,"ax",@progbits
|
|
.align 2
|
|
.global FlashInit
|
|
.type FlashInit, %function
|
|
FlashInit:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
stp x21, x22, [sp, 32]
|
|
mov w0, 32768
|
|
stp x23, x24, [sp, 48]
|
|
adrp x20, .LANCHOR30
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR3
|
|
stp x27, x28, [sp, 80]
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR154
|
|
adrp x26, .LANCHOR208
|
|
adrp x21, .LANCHOR2
|
|
adrp x22, .LANCHOR158
|
|
str x0, [x1, #:lo12:.LANCHOR154]
|
|
mov w0, 32768
|
|
bl ftl_malloc
|
|
adrp x24, .LANCHOR0
|
|
adrp x1, .LANCHOR152
|
|
add x24, x24, :lo12:.LANCHOR0
|
|
mov w23, 0
|
|
str x0, [x1, #:lo12:.LANCHOR152]
|
|
mov w0, 4096
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR205
|
|
str x0, [x1, #:lo12:.LANCHOR205]
|
|
mov w0, 32768
|
|
bl ftl_malloc
|
|
adrp x1, .LANCHOR206
|
|
str x0, [x1, #:lo12:.LANCHOR206]
|
|
mov w0, 4096
|
|
bl ftl_malloc
|
|
strb wzr, [x26, #:lo12:.LANCHOR208]
|
|
adrp x1, .LANCHOR207
|
|
strb wzr, [x20, #:lo12:.LANCHOR30]
|
|
strb wzr, [x21, #:lo12:.LANCHOR2]
|
|
str x0, [x1, #:lo12:.LANCHOR207]
|
|
adrp x1, .LANCHOR157
|
|
mov w0, 50
|
|
strb w0, [x25, #:lo12:.LANCHOR3]
|
|
strb w0, [x1, #:lo12:.LANCHOR157]
|
|
adrp x0, .LANCHOR156
|
|
mov w1, 128
|
|
str wzr, [x0, #:lo12:.LANCHOR156]
|
|
adrp x0, .LANCHOR4
|
|
str w1, [x0, #:lo12:.LANCHOR4]
|
|
adrp x0, .LANCHOR147
|
|
str wzr, [x0, #:lo12:.LANCHOR147]
|
|
mov w0, 60
|
|
strb w0, [x22, #:lo12:.LANCHOR158]
|
|
mov x0, x19
|
|
adrp x19, .LANCHOR22
|
|
bl NandcInit
|
|
add x28, x19, :lo12:.LANCHOR22
|
|
str x26, [x29, 120]
|
|
adrp x26, .LC24
|
|
add x0, x26, :lo12:.LC24
|
|
str x0, [x29, 112]
|
|
.L1312:
|
|
ldrb w2, [x24, 8]
|
|
and w27, w23, 255
|
|
str w2, [x29, 108]
|
|
mov w0, w27
|
|
ldr x26, [x24]
|
|
bl FlashReset
|
|
mov w0, w27
|
|
bl NandcFlashCs
|
|
ldr w2, [x29, 108]
|
|
mov w0, 144
|
|
ubfiz x2, x2, 8, 8
|
|
add x26, x26, x2
|
|
str w0, [x26, 2056]
|
|
mov x0, 200
|
|
str wzr, [x26, 2052]
|
|
bl udelay
|
|
ldr w0, [x26, 2048]
|
|
and w0, w0, 255
|
|
strb w0, [x28]
|
|
cmp w0, 44
|
|
ldr w2, [x26, 2048]
|
|
strb w2, [x28, 1]
|
|
ldr w2, [x26, 2048]
|
|
strb w2, [x28, 2]
|
|
ldr w2, [x26, 2048]
|
|
strb w2, [x28, 3]
|
|
ldr w2, [x26, 2048]
|
|
strb w2, [x28, 4]
|
|
ldr w2, [x26, 2048]
|
|
strb w2, [x28, 5]
|
|
bne .L1307
|
|
mov w0, 239
|
|
str w0, [x26, 2056]
|
|
mov w0, 1
|
|
str w0, [x26, 2052]
|
|
mov x0, 200
|
|
bl udelay
|
|
mov w0, 4
|
|
str w0, [x26, 2048]
|
|
str wzr, [x26, 2048]
|
|
str wzr, [x26, 2048]
|
|
str wzr, [x26, 2048]
|
|
.L1307:
|
|
mov w0, w27
|
|
bl NandcFlashDeCs
|
|
ldrb w2, [x28]
|
|
sub w0, w2, #1
|
|
and w0, w0, 255
|
|
cmp w0, 253
|
|
bhi .L1308
|
|
ldrb w7, [x28, 5]
|
|
add w1, w23, 1
|
|
ldrb w6, [x28, 4]
|
|
ldrb w5, [x28, 3]
|
|
ldrb w4, [x28, 2]
|
|
ldrb w3, [x28, 1]
|
|
ldr x0, [x29, 112]
|
|
bl printf
|
|
.L1308:
|
|
cbnz w23, .L1309
|
|
ldrb w0, [x19, #:lo12:.LANCHOR22]
|
|
add x1, x19, :lo12:.LANCHOR22
|
|
sub w0, w0, #1
|
|
and w0, w0, 255
|
|
cmp w0, 253
|
|
bhi .L1357
|
|
ldrb w0, [x1, 1]
|
|
cmp w0, 255
|
|
beq .L1357
|
|
.L1309:
|
|
ldrb w0, [x28]
|
|
cmp w0, 181
|
|
bne .L1311
|
|
mov w0, 44
|
|
strb w0, [x28]
|
|
.L1311:
|
|
add w23, w23, 1
|
|
add x24, x24, 16
|
|
add x28, x28, 8
|
|
cmp w23, 4
|
|
bne .L1312
|
|
ldrb w0, [x19, #:lo12:.LANCHOR22]
|
|
cmp w0, 173
|
|
beq .L1313
|
|
adrp x0, .LANCHOR160
|
|
ldr w0, [x0, #:lo12:.LANCHOR160]
|
|
bl NandcSetDdrMode
|
|
.L1313:
|
|
adrp x24, .LANCHOR7
|
|
adrp x27, .LANCHOR6
|
|
adrp x26, .LANCHOR122
|
|
mov w1, 0
|
|
adrp x23, .LANCHOR20
|
|
mov w2, 852
|
|
add x0, x23, :lo12:.LANCHOR20
|
|
bl ftl_memset
|
|
adrp x3, .LANCHOR31
|
|
ldr w4, [x26, #:lo12:.LANCHOR122]
|
|
add x0, x3, :lo12:.LANCHOR31
|
|
strb wzr, [x27, #:lo12:.LANCHOR6]
|
|
str x0, [x24, #:lo12:.LANCHOR7]
|
|
mov w1, 12336
|
|
movk w1, 0x5638, lsl 16
|
|
cmp w4, w1
|
|
bne .L1314
|
|
ldrb w0, [x0, 19]
|
|
cmp w0, 50
|
|
beq .L1314
|
|
adrp x0, .LANCHOR29
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR29]
|
|
.L1314:
|
|
add x0, x19, :lo12:.LANCHOR22
|
|
ldrb w2, [x0, 1]
|
|
add w0, w2, 95
|
|
and w1, w0, 255
|
|
mov x0, 1
|
|
cmp w1, 57
|
|
bhi .L1315
|
|
movk x0, 0x205, lsl 48
|
|
lsr x0, x0, x1
|
|
mvn x0, x0
|
|
.L1315:
|
|
cmp w2, 241
|
|
and w0, w0, 1
|
|
cset w1, eq
|
|
eor w0, w0, 1
|
|
orr w0, w1, w0
|
|
cbnz w0, .L1316
|
|
cmp w2, 220
|
|
bne .L1317
|
|
add x0, x19, :lo12:.LANCHOR22
|
|
ldrb w0, [x0, 3]
|
|
cmp w0, 149
|
|
bne .L1317
|
|
.L1316:
|
|
adrp x28, .LANCHOR209
|
|
add x5, x28, :lo12:.LANCHOR209
|
|
mov w1, 16
|
|
strb w1, [x25, #:lo12:.LANCHOR3]
|
|
strb w1, [x22, #:lo12:.LANCHOR158]
|
|
mov w0, 1
|
|
ldrb w1, [x19, #:lo12:.LANCHOR22]
|
|
add x6, x19, :lo12:.LANCHOR22
|
|
strb w0, [x21, #:lo12:.LANCHOR2]
|
|
strb w1, [x5, 1]
|
|
cmp w1, 152
|
|
strb w2, [x5, 2]
|
|
bne .L1319
|
|
ldrsb w1, [x6, 4]
|
|
tbnz w1, #31, .L1320
|
|
mov w0, 24
|
|
strb w0, [x22, #:lo12:.LANCHOR158]
|
|
.L1319:
|
|
cmp w4, 2049
|
|
mov w0, 12336
|
|
movk w0, 0x5638, lsl 16
|
|
ccmp w4, w0, 4, ne
|
|
bne .L1322
|
|
mov w0, 16
|
|
strb w0, [x22, #:lo12:.LANCHOR158]
|
|
.L1322:
|
|
cmp w2, 218
|
|
bne .L1323
|
|
add x0, x28, :lo12:.LANCHOR209
|
|
mov w1, 2048
|
|
strh w1, [x0, 14]
|
|
mov w1, -38
|
|
.L1394:
|
|
strb w1, [x0, 2]
|
|
.L1324:
|
|
adrp x1, .LANCHOR146
|
|
add x1, x1, :lo12:.LANCHOR146
|
|
mov w2, 32
|
|
add x1, x1, 32
|
|
str x3, [x29, 120]
|
|
adrp x0, .LANCHOR8
|
|
add x0, x0, :lo12:.LANCHOR8
|
|
bl ftl_memcpy
|
|
ldr x3, [x29, 120]
|
|
mov w2, 32
|
|
add x1, x28, :lo12:.LANCHOR209
|
|
add x0, x3, :lo12:.LANCHOR31
|
|
bl ftl_memcpy
|
|
.L1317:
|
|
ldrb w0, [x21, #:lo12:.LANCHOR2]
|
|
adrp x22, .LANCHOR16
|
|
cbnz w0, .L1327
|
|
bl FlashLoadPhyInfoInRam
|
|
cbnz w0, .L1329
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
adrp x28, .LANCHOR25
|
|
ldrb w1, [x0, 17]
|
|
and w0, w1, 7
|
|
strb w0, [x28, #:lo12:.LANCHOR25]
|
|
tbnz x1, 0, .L1329
|
|
mov w1, 1
|
|
strb w1, [x20, #:lo12:.LANCHOR30]
|
|
bl FlashSetInterfaceMode
|
|
ldrb w0, [x28, #:lo12:.LANCHOR25]
|
|
bl NandcSetMode
|
|
.L1329:
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 26]
|
|
strb w0, [x22, #:lo12:.LANCHOR16]
|
|
bl FlashLoadPhyInfo
|
|
cbz w0, .L1327
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
ldrh w1, [x0, 14]
|
|
adrp x0, .LC25
|
|
add x0, x0, :lo12:.LC25
|
|
bl printf
|
|
bl FlashLoadPhyInfoInRam
|
|
cmn w0, #1
|
|
beq .L1306
|
|
bl FlashDieInfoInit
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 19]
|
|
bl FlashGetReadRetryDefault
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
adrp x1, .LANCHOR125
|
|
ldrh w1, [x1, #:lo12:.LANCHOR125]
|
|
ldrb w2, [x0, 9]
|
|
add w1, w1, 4095
|
|
cmp w2, w1, lsr 12
|
|
blt .L1332
|
|
ldrh w1, [x0, 14]
|
|
add w1, w1, 255
|
|
cmp w2, w1, lsr 8
|
|
bge .L1333
|
|
.L1332:
|
|
ldrh w1, [x0, 14]
|
|
and w1, w1, -256
|
|
strh w1, [x0, 14]
|
|
.L1333:
|
|
adrp x0, .LANCHOR25
|
|
ldrb w0, [x0, #:lo12:.LANCHOR25]
|
|
tst w0, 6
|
|
beq .L1334
|
|
bl FlashSavePhyInfo
|
|
mov w0, 0
|
|
bl flash_enter_slc_mode
|
|
adrp x0, .LANCHOR155
|
|
ldr w1, [x0, #:lo12:.LANCHOR155]
|
|
mov w0, 0
|
|
bl FlashDdrParaScan
|
|
mov w0, 0
|
|
bl flash_exit_slc_mode
|
|
.L1334:
|
|
bl FlashSavePhyInfo
|
|
.L1327:
|
|
ldr x2, [x24, #:lo12:.LANCHOR7]
|
|
adrp x28, .LANCHOR148
|
|
str xzr, [x28, #:lo12:.LANCHOR148]
|
|
ldrb w0, [x2, 26]
|
|
strb w0, [x22, #:lo12:.LANCHOR16]
|
|
ldrh w0, [x2, 16]
|
|
ubfx x1, x0, 7, 1
|
|
strb w1, [x27, #:lo12:.LANCHOR6]
|
|
adrp x1, .LANCHOR210
|
|
ubfx x3, x0, 3, 1
|
|
adrp x27, .LANCHOR25
|
|
strb w3, [x1, #:lo12:.LANCHOR210]
|
|
adrp x1, .LANCHOR28
|
|
ubfx x3, x0, 4, 1
|
|
ubfx x0, x0, 8, 3
|
|
strb w3, [x1, #:lo12:.LANCHOR28]
|
|
strb w0, [x27, #:lo12:.LANCHOR25]
|
|
ldrh w1, [x2, 10]
|
|
ldrb w0, [x2, 12]
|
|
sdiv w1, w1, w0
|
|
ldrb w0, [x2, 18]
|
|
bl BuildFlashLsbPageTable
|
|
bl FlashDieInfoInit
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
ldrh w1, [x0, 16]
|
|
tbz x1, 6, .L1336
|
|
add x3, x23, :lo12:.LANCHOR20
|
|
adrp x1, .LANCHOR11
|
|
ldrb w0, [x0, 19]
|
|
adrp x2, .LANCHOR13
|
|
strb w0, [x1, #:lo12:.LANCHOR11]
|
|
mov x4, x2
|
|
ldrb w1, [x3, 1]
|
|
strb w1, [x2, #:lo12:.LANCHOR13]
|
|
adrp x1, .LANCHOR149
|
|
ldrb w3, [x3, 2]
|
|
strb w3, [x1, #:lo12:.LANCHOR149]
|
|
sub w3, w0, #1
|
|
and w3, w3, 255
|
|
cmp w3, 7
|
|
bhi .L1337
|
|
adrp x1, HynixReadRetrial
|
|
add x1, x1, :lo12:HynixReadRetrial
|
|
str x1, [x28, #:lo12:.LANCHOR148]
|
|
sub w1, w0, #5
|
|
and w1, w1, 255
|
|
cmp w1, 1
|
|
ccmp w0, 8, 4, hi
|
|
bne .L1338
|
|
adrp x1, .LANCHOR36
|
|
mov w2, 1
|
|
str w2, [x1, #:lo12:.LANCHOR36]
|
|
.L1338:
|
|
add x23, x23, :lo12:.LANCHOR20
|
|
cmp w0, 7
|
|
beq .L1395
|
|
cmp w0, 8
|
|
bne .L1360
|
|
.L1395:
|
|
add x23, x23, 28
|
|
.L1339:
|
|
mov x1, 0
|
|
mov w2, 0
|
|
.L1341:
|
|
ldrsb w3, [x23, x1]
|
|
add x1, x1, 1
|
|
cmp w3, 0
|
|
cinc w2, w2, eq
|
|
cmp x1, 32
|
|
bne .L1341
|
|
cmp w2, 27
|
|
bls .L1336
|
|
bl FlashGetReadRetryDefault
|
|
bl FlashSavePhyInfo
|
|
.L1336:
|
|
ldr w1, [x26, #:lo12:.LANCHOR122]
|
|
mov w0, 12336
|
|
movk w0, 0x5638, lsl 16
|
|
cmp w1, w0
|
|
bne .L1351
|
|
ldrb w0, [x22, #:lo12:.LANCHOR16]
|
|
cbz w0, .L1351
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
strb wzr, [x0, 18]
|
|
.L1351:
|
|
ldrb w0, [x19, #:lo12:.LANCHOR22]
|
|
cmp w0, 44
|
|
bne .L1352
|
|
ldrb w0, [x20, #:lo12:.LANCHOR30]
|
|
cbz w0, .L1352
|
|
strb wzr, [x20, #:lo12:.LANCHOR30]
|
|
mov w0, 1
|
|
bl FlashSetInterfaceMode
|
|
mov w0, 1
|
|
bl NandcSetMode
|
|
.L1352:
|
|
ldrb w0, [x27, #:lo12:.LANCHOR25]
|
|
tst w0, 6
|
|
beq .L1353
|
|
ldrb w1, [x20, #:lo12:.LANCHOR30]
|
|
cbnz w1, .L1354
|
|
tbnz x0, 0, .L1353
|
|
.L1354:
|
|
mov w0, 0
|
|
bl flash_enter_slc_mode
|
|
adrp x0, .LANCHOR155
|
|
ldr w1, [x0, #:lo12:.LANCHOR155]
|
|
mov w0, 0
|
|
bl FlashDdrParaScan
|
|
mov w0, 0
|
|
bl flash_exit_slc_mode
|
|
.L1353:
|
|
ldr x0, [x24, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 20]
|
|
bl FlashBchSel
|
|
adrp x0, .LANCHOR144
|
|
add x0, x0, :lo12:.LANCHOR144
|
|
bl FlashReadIdbDataRaw
|
|
ldr x2, [x24, #:lo12:.LANCHOR7]
|
|
mov w0, 16
|
|
adrp x5, .LANCHOR15
|
|
strb w0, [x25, #:lo12:.LANCHOR3]
|
|
add x0, x5, :lo12:.LANCHOR15
|
|
ldrb w6, [x19, #:lo12:.LANCHOR22]
|
|
ldrb w3, [x2, 12]
|
|
strh w3, [x0, 8]
|
|
ldrb w1, [x2, 7]
|
|
str w1, [x0, 4]
|
|
add x1, x19, :lo12:.LANCHOR22
|
|
ldrb w4, [x1, 1]
|
|
ldrb w1, [x1, 3]
|
|
orr w1, w6, w1, lsl 24
|
|
lsl w6, w4, 16
|
|
orr w4, w6, w4, lsl 8
|
|
orr w1, w1, w4
|
|
str w1, [x5, #:lo12:.LANCHOR15]
|
|
adrp x1, .LANCHOR26
|
|
ldrh w4, [x2, 14]
|
|
ldrb w1, [x1, #:lo12:.LANCHOR26]
|
|
strh w1, [x0, 10]
|
|
ldrb w1, [x2, 13]
|
|
strh w1, [x0, 12]
|
|
ldrh w1, [x2, 10]
|
|
strh w1, [x0, 16]
|
|
strh w4, [x0, 14]
|
|
sdiv w3, w1, w3
|
|
strh w3, [x0, 18]
|
|
ldrb w5, [x2, 9]
|
|
strh w5, [x0, 20]
|
|
mov w3, w5
|
|
mul w1, w1, w5
|
|
mov w5, 512
|
|
strh w5, [x0, 24]
|
|
mov w5, 16
|
|
and w1, w1, 65535
|
|
strh w5, [x0, 26]
|
|
strh w1, [x0, 22]
|
|
ldrb w5, [x21, #:lo12:.LANCHOR2]
|
|
cmp w5, 1
|
|
bne .L1355
|
|
ubfiz w1, w1, 1, 15
|
|
lsr w4, w4, 1
|
|
ubfiz w3, w3, 1, 15
|
|
strh w1, [x0, 22]
|
|
strh w4, [x0, 14]
|
|
mov w1, 8
|
|
strh w3, [x0, 20]
|
|
strh w1, [x0, 26]
|
|
.L1355:
|
|
ldrb w0, [x2, 20]
|
|
bl FlashBchSel
|
|
mov w0, 0
|
|
.L1306:
|
|
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
|
|
.L1323:
|
|
cmp w2, 220
|
|
bne .L1325
|
|
add x0, x28, :lo12:.LANCHOR209
|
|
mov w1, 4096
|
|
strh w1, [x0, 14]
|
|
mov w1, -36
|
|
b .L1394
|
|
.L1325:
|
|
cmp w2, 211
|
|
bne .L1324
|
|
add x0, x28, :lo12:.LANCHOR209
|
|
mov w1, 4096
|
|
strh w1, [x0, 14]
|
|
mov w1, 2
|
|
strb w1, [x0, 13]
|
|
b .L1324
|
|
.L1360:
|
|
add x23, x23, 20
|
|
b .L1339
|
|
.L1337:
|
|
sub w3, w0, #17
|
|
and w3, w3, 255
|
|
cmp w3, 2
|
|
bhi .L1343
|
|
adrp x2, MicronReadRetrial
|
|
add x2, x2, :lo12:MicronReadRetrial
|
|
str x2, [x28, #:lo12:.LANCHOR148]
|
|
cmp w0, 19
|
|
beq .L1344
|
|
.L1399:
|
|
mov w0, 7
|
|
b .L1397
|
|
.L1344:
|
|
mov w0, 15
|
|
.L1397:
|
|
strb w0, [x1, #:lo12:.LANCHOR149]
|
|
b .L1336
|
|
.L1343:
|
|
sub w3, w0, #65
|
|
cmp w0, 33
|
|
and w3, w3, 255
|
|
ccmp w3, 1, 0, ne
|
|
bhi .L1345
|
|
adrp x0, ToshibaReadRetrial
|
|
add x0, x0, :lo12:ToshibaReadRetrial
|
|
str x0, [x28, #:lo12:.LANCHOR148]
|
|
mov w0, 4
|
|
strb w0, [x2, #:lo12:.LANCHOR13]
|
|
b .L1399
|
|
.L1345:
|
|
sub w3, w0, #34
|
|
sub w2, w0, #67
|
|
and w3, w3, 255
|
|
and w2, w2, 255
|
|
cmp w3, 1
|
|
ccmp w2, 1, 0, hi
|
|
bhi .L1346
|
|
adrp x3, ToshibaReadRetrial
|
|
add x3, x3, :lo12:ToshibaReadRetrial
|
|
str x3, [x28, #:lo12:.LANCHOR148]
|
|
cmp w0, 35
|
|
mov w3, 68
|
|
ccmp w0, w3, 4, ne
|
|
beq .L1347
|
|
mov w0, 7
|
|
.L1396:
|
|
strb w0, [x1, #:lo12:.LANCHOR149]
|
|
cmp w2, 1
|
|
bhi .L1349
|
|
mov w0, 4
|
|
.L1398:
|
|
strb w0, [x4, #:lo12:.LANCHOR13]
|
|
b .L1336
|
|
.L1347:
|
|
mov w0, 17
|
|
b .L1396
|
|
.L1349:
|
|
mov w0, 5
|
|
b .L1398
|
|
.L1346:
|
|
cmp w0, 49
|
|
bne .L1350
|
|
adrp x0, SamsungReadRetrial
|
|
add x0, x0, :lo12:SamsungReadRetrial
|
|
str x0, [x28, #:lo12:.LANCHOR148]
|
|
b .L1336
|
|
.L1350:
|
|
cmp w0, 50
|
|
bne .L1336
|
|
adrp x0, samsung_read_retrial
|
|
add x0, x0, :lo12:samsung_read_retrial
|
|
str x0, [x28, #:lo12:.LANCHOR148]
|
|
adrp x0, .LANCHOR29
|
|
str wzr, [x0, #:lo12:.LANCHOR29]
|
|
b .L1336
|
|
.L1357:
|
|
mov w0, -2
|
|
b .L1306
|
|
.L1320:
|
|
ldr x1, [x29, 120]
|
|
strb w0, [x1, #:lo12:.LANCHOR208]
|
|
b .L1319
|
|
.size FlashInit, .-FlashInit
|
|
.section .text.FlashReadSlc2KPages,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadSlc2KPages
|
|
.type FlashReadSlc2KPages, %function
|
|
FlashReadSlc2KPages:
|
|
stp x29, x30, [sp, -144]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, 56
|
|
stp x25, x26, [sp, 64]
|
|
and w21, w1, 255
|
|
str w2, [x29, 116]
|
|
adrp x2, .LANCHOR31+9
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrb w25, [x2, #:lo12:.LANCHOR31+9]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x0, w1, w22, x0
|
|
adrp x26, .LANCHOR208
|
|
str x0, [x29, 120]
|
|
stp x23, x24, [sp, 48]
|
|
add x0, x26, :lo12:.LANCHOR208
|
|
stp x27, x28, [sp, 80]
|
|
str x0, [x29, 104]
|
|
.L1401:
|
|
ldr x0, [x29, 120]
|
|
cmp x19, x0
|
|
bne .L1421
|
|
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], 144
|
|
ret
|
|
.L1421:
|
|
ldr w1, [x29, 116]
|
|
mov w4, w21
|
|
add x3, x29, 136
|
|
add x2, x29, 140
|
|
mov x0, x19
|
|
bl LogAddr2PhyAddr
|
|
adrp x0, .LANCHOR26
|
|
ldr w1, [x29, 136]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR26]
|
|
cmp w0, w1
|
|
bhi .L1402
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L1403:
|
|
sub w21, w21, #1
|
|
add x19, x19, 56
|
|
and w21, w21, 255
|
|
b .L1401
|
|
.L1402:
|
|
adrp x0, .LANCHOR27
|
|
add x0, x0, :lo12:.LANCHOR27
|
|
add x23, x26, :lo12:.LANCHOR208
|
|
mov w22, 0
|
|
mov w24, 256
|
|
ldrb w20, [x0, w1, uxtw]
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
mov w0, w20
|
|
bl NandcFlashCs
|
|
.L1404:
|
|
ldr w1, [x29, 140]
|
|
mov w0, w20
|
|
bl FlashReadCmd
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
ldp x3, x4, [x19, 8]
|
|
mov w2, w25
|
|
mov w1, 0
|
|
mov w0, w20
|
|
bl NandcXferData
|
|
mov w28, w0
|
|
ldrb w0, [x23]
|
|
cbz w0, .L1405
|
|
mov w0, w20
|
|
bl flash_read_ecc
|
|
cmp w0, 5
|
|
csel w28, w28, w24, ls
|
|
.L1405:
|
|
cmp w22, 9
|
|
ccmn w28, #1, 0, ls
|
|
bne .L1406
|
|
add w22, w22, 1
|
|
b .L1404
|
|
.L1406:
|
|
cmp w22, 0
|
|
mov w23, 256
|
|
adrp x24, .LANCHOR4
|
|
csel w28, w28, w23, eq
|
|
add x24, x24, :lo12:.LANCHOR4
|
|
mov w22, 0
|
|
.L1408:
|
|
ldr w0, [x24]
|
|
ldr w1, [x29, 140]
|
|
add w1, w1, w0
|
|
mov w0, w20
|
|
bl FlashReadCmd
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
ldr x0, [x19, 8]
|
|
mov w2, w25
|
|
mov w1, 0
|
|
cmp x0, 0
|
|
add x3, x0, 2048
|
|
ldr x0, [x19, 16]
|
|
csel x3, x3, xzr, ne
|
|
cmp x0, 0
|
|
add x4, x0, 8
|
|
csel x4, x4, xzr, ne
|
|
mov w0, w20
|
|
bl NandcXferData
|
|
mov w27, w0
|
|
ldr x0, [x29, 104]
|
|
ldrb w0, [x0]
|
|
cbz w0, .L1411
|
|
mov w0, w20
|
|
bl flash_read_ecc
|
|
cmp w0, 5
|
|
csel w27, w27, w23, ls
|
|
.L1411:
|
|
cmp w22, 9
|
|
ccmn w27, #1, 0, ls
|
|
bne .L1412
|
|
add w22, w22, 1
|
|
b .L1408
|
|
.L1412:
|
|
cmp w22, 0
|
|
mov w3, 256
|
|
mov w0, w20
|
|
csel w27, w27, w3, eq
|
|
bl NandcFlashDeCs
|
|
adrp x0, .LANCHOR33
|
|
cmp w28, w27
|
|
csel w5, w28, w27, cs
|
|
ldrb w2, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w2, w2, lsl 1
|
|
cmp w5, w0, lsr 2
|
|
bls .L1414
|
|
cmn w5, #1
|
|
csel w5, w5, w3, eq
|
|
.L1414:
|
|
cmp w5, 256
|
|
ldr x0, [x19, 16]
|
|
ccmn w5, #1, 4, ne
|
|
csel w5, w5, wzr, eq
|
|
str w5, [x19]
|
|
cbz x0, .L1417
|
|
ldr w1, [x0, 12]
|
|
cmn w1, #1
|
|
bne .L1417
|
|
ldr w1, [x0, 8]
|
|
cmn w1, #1
|
|
bne .L1417
|
|
ldr w0, [x0]
|
|
cmn w0, #1
|
|
beq .L1417
|
|
str w1, [x19]
|
|
.L1417:
|
|
ldr w3, [x19]
|
|
cmn w3, #1
|
|
bne .L1403
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC26
|
|
add x0, x0, :lo12:.LC26
|
|
bl printf
|
|
ldr x1, [x19, 8]
|
|
cbz x1, .L1419
|
|
adrp x0, .LC27
|
|
mov w3, 8
|
|
mov w2, 4
|
|
add x0, x0, :lo12:.LC27
|
|
bl rknand_print_hex
|
|
.L1419:
|
|
ldr x1, [x19, 16]
|
|
cbz x1, .L1403
|
|
mov w3, 4
|
|
adrp x0, .LC28
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC28
|
|
bl rknand_print_hex
|
|
b .L1403
|
|
.size FlashReadSlc2KPages, .-FlashReadSlc2KPages
|
|
.section .text.FlashReadPages,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadPages
|
|
.type FlashReadPages, %function
|
|
FlashReadPages:
|
|
stp x29, x30, [sp, -176]!
|
|
adrp x3, .LANCHOR2
|
|
add x29, sp, 0
|
|
ldrb w3, [x3, #:lo12:.LANCHOR2]
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
stp w2, w1, [x29, 148]
|
|
cbnz w3, .L1450
|
|
mov x25, x0
|
|
adrp x0, .LANCHOR31+9
|
|
adrp x27, .LANCHOR20
|
|
mov w23, 0
|
|
ldrb w0, [x0, #:lo12:.LANCHOR31+9]
|
|
mov w22, 0
|
|
str w0, [x29, 156]
|
|
adrp x0, .LANCHOR6
|
|
str x0, [x29, 128]
|
|
ldrb w1, [x0, #:lo12:.LANCHOR6]
|
|
add x0, x27, :lo12:.LANCHOR20
|
|
str w1, [x29, 144]
|
|
str x0, [x29, 104]
|
|
add x0, x0, 4
|
|
str x0, [x29, 96]
|
|
.L1451:
|
|
ldr w0, [x29, 152]
|
|
cmp w22, w0
|
|
bcc .L1485
|
|
mov w0, 0
|
|
b .L1449
|
|
.L1450:
|
|
bl FlashReadSlc2KPages
|
|
.L1449:
|
|
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
|
|
.L1485:
|
|
mov w26, 56
|
|
add x3, x29, 168
|
|
ldp w1, w0, [x29, 148]
|
|
umull x26, w22, w26
|
|
add x2, x29, 172
|
|
add x21, x25, x26
|
|
sub w4, w0, w22
|
|
mov x0, x21
|
|
ldr w24, [x21, 4]
|
|
bl LogAddr2PhyAddr
|
|
mov w20, w0
|
|
adrp x0, .LANCHOR26
|
|
ldr w1, [x29, 168]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR26]
|
|
cmp w0, w1
|
|
bhi .L1453
|
|
mov w0, -1
|
|
str w0, [x25, x26]
|
|
.L1454:
|
|
add w22, w22, 1
|
|
b .L1451
|
|
.L1453:
|
|
adrp x0, .LANCHOR27
|
|
add x0, x0, :lo12:.LANCHOR27
|
|
ldrb w19, [x0, w1, uxtw]
|
|
adrp x0, .LANCHOR210
|
|
ldrb w0, [x0, #:lo12:.LANCHOR210]
|
|
cmp w0, 0
|
|
mov w0, w19
|
|
csel w20, w20, wzr, ne
|
|
bl NandcWaitFlashReady
|
|
adrp x2, .LANCHOR7
|
|
str x2, [x29, 120]
|
|
ldr x0, [x2, #:lo12:.LANCHOR7]
|
|
ldrb w1, [x0, 19]
|
|
sub w0, w1, #1
|
|
and w0, w0, 255
|
|
cmp w0, 7
|
|
bhi .L1456
|
|
add x0, x27, :lo12:.LANCHOR20
|
|
sxtw x2, w19
|
|
add x0, x0, x2
|
|
sub w1, w1, #7
|
|
and w1, w1, 255
|
|
cmp w1, 1
|
|
ldrb w3, [x0, 12]
|
|
bhi .L1457
|
|
ldrb w3, [x0, 20]
|
|
.L1457:
|
|
adrp x0, .LANCHOR21
|
|
add x0, x0, :lo12:.LANCHOR21
|
|
ldrb w0, [x0, x2]
|
|
cmp w0, w3
|
|
beq .L1456
|
|
ldp x2, x0, [x29, 96]
|
|
ldrb w1, [x0, 1]
|
|
mov w0, w19
|
|
bl HynixSetRRPara
|
|
.L1456:
|
|
mov w0, w19
|
|
bl NandcFlashCs
|
|
ldr w0, [x29, 148]
|
|
cmp w0, 1
|
|
cset w0, eq
|
|
orr w24, w0, w24, lsr 31
|
|
cbz w24, .L1458
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L1458
|
|
mov w0, w19
|
|
bl flash_enter_slc_mode
|
|
.L1459:
|
|
adrp x0, .LANCHOR4
|
|
add x0, x0, :lo12:.LANCHOR4
|
|
str x0, [x29, 112]
|
|
ldr x0, [x29, 128]
|
|
add x0, x0, :lo12:.LANCHOR6
|
|
str x0, [x29, 136]
|
|
.L1465:
|
|
ldr w1, [x29, 172]
|
|
cmn w1, #1
|
|
bne .L1460
|
|
cmp w19, 255
|
|
beq .L1487
|
|
.L1460:
|
|
cbz w20, .L1462
|
|
ldr x0, [x29, 112]
|
|
ldr w2, [x0]
|
|
mov w0, w19
|
|
add w2, w1, w2
|
|
bl FlashReadDpCmd
|
|
.L1463:
|
|
mov w0, w19
|
|
bl NandcWaitFlashReady
|
|
cbz w20, .L1461
|
|
ldr w1, [x29, 172]
|
|
mov w0, w19
|
|
bl FlashReadDpDataOutCmd
|
|
.L1461:
|
|
ldrb w2, [x29, 156]
|
|
mov w1, 0
|
|
ldp x3, x4, [x21, 8]
|
|
mov w0, w19
|
|
bl NandcXferData
|
|
mov w28, w0
|
|
ldr x0, [x29, 136]
|
|
ldrb w0, [x0]
|
|
cbz w0, .L1464
|
|
cmn w28, #1
|
|
bne .L1464
|
|
ldr x0, [x29, 136]
|
|
mov w20, 0
|
|
strb wzr, [x0]
|
|
b .L1465
|
|
.L1458:
|
|
mov w0, w19
|
|
bl flash_exit_slc_mode
|
|
b .L1459
|
|
.L1462:
|
|
mov w0, w19
|
|
bl FlashReadCmd
|
|
b .L1463
|
|
.L1487:
|
|
mov w20, 0
|
|
b .L1461
|
|
.L1464:
|
|
cbz w20, .L1466
|
|
adrp x0, .LANCHOR4
|
|
ldr w1, [x29, 172]
|
|
ldr w0, [x0, #:lo12:.LANCHOR4]
|
|
add w1, w1, w0
|
|
mov w0, w19
|
|
bl FlashReadDpDataOutCmd
|
|
add w0, w22, 1
|
|
mov w1, 56
|
|
ldrb w2, [x29, 156]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x0, w0, w1, x25
|
|
mov w1, 0
|
|
ldp x3, x4, [x0, 8]
|
|
mov w0, w19
|
|
bl NandcXferData
|
|
cmn w0, #1
|
|
mov w23, w0
|
|
csel w20, w20, wzr, ne
|
|
.L1466:
|
|
mov w0, w19
|
|
bl NandcFlashDeCs
|
|
ldr x0, [x29, 128]
|
|
cmn w28, #1
|
|
ldrb w1, [x29, 144]
|
|
strb w1, [x0, #:lo12:.LANCHOR6]
|
|
bne .L1467
|
|
adrp x0, .LANCHOR30
|
|
ldrb w0, [x0, #:lo12:.LANCHOR30]
|
|
cbnz w0, .L1468
|
|
.L1472:
|
|
adrp x20, .LANCHOR148
|
|
ldr x4, [x20, #:lo12:.LANCHOR148]
|
|
cbnz x4, .L1469
|
|
ldr w1, [x29, 172]
|
|
mov w0, w19
|
|
ldp x2, x3, [x21, 8]
|
|
bl FlashReadRawPage
|
|
b .L1524
|
|
.L1468:
|
|
adrp x0, .LANCHOR19
|
|
ldr w1, [x29, 172]
|
|
ldp x2, x3, [x21, 8]
|
|
mov w4, 1
|
|
ldr x0, [x0, #:lo12:.LANCHOR19]
|
|
ldr w20, [x0, 304]
|
|
mov w0, w19
|
|
bl FlashDdrTunningRead
|
|
mov w28, w0
|
|
cmn w0, #1
|
|
beq .L1471
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
cmp w28, w0, lsr 1
|
|
bls .L1488
|
|
.L1471:
|
|
lsr w0, w20, 8
|
|
bl NandcSetDdrPara
|
|
cmn w28, #1
|
|
beq .L1472
|
|
.L1488:
|
|
mov w20, 0
|
|
.L1467:
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w28, w0, lsr 2
|
|
bls .L1473
|
|
adrp x0, .LANCHOR148
|
|
ldr x0, [x0, #:lo12:.LANCHOR148]
|
|
cmp x0, 0
|
|
mov w0, 256
|
|
csel w28, w28, w0, ne
|
|
.L1473:
|
|
cmp w28, 256
|
|
ccmn w28, #1, 4, ne
|
|
csel w3, w28, wzr, eq
|
|
str w3, [x25, x26]
|
|
cmn w3, #1
|
|
bne .L1480
|
|
adrp x0, .LANCHOR33
|
|
ldr w1, [x21, 4]
|
|
ldrb w2, [x0, #:lo12:.LANCHOR33]
|
|
adrp x0, .LC26
|
|
add x0, x0, :lo12:.LC26
|
|
bl printf
|
|
ldr x1, [x21, 16]
|
|
cbz x1, .L1480
|
|
mov w3, 4
|
|
adrp x0, .LC28
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC28
|
|
bl rknand_print_hex
|
|
.L1480:
|
|
cbz w20, .L1482
|
|
adrp x0, .LANCHOR33
|
|
ldrb w0, [x0, #:lo12:.LANCHOR33]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w23, w0, lsr 2
|
|
bls .L1483
|
|
adrp x0, .LANCHOR148
|
|
ldr x0, [x0, #:lo12:.LANCHOR148]
|
|
cmp x0, 0
|
|
mov w0, 256
|
|
csel w23, w23, w0, ne
|
|
.L1483:
|
|
add w0, w22, 1
|
|
mov w1, 56
|
|
cmp w23, 256
|
|
ccmn w23, #1, 4, ne
|
|
umull x0, w0, w1
|
|
csel w1, w23, wzr, eq
|
|
str w1, [x25, x0]
|
|
.L1482:
|
|
add w22, w22, w20
|
|
cbz w24, .L1454
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L1454
|
|
mov w0, w19
|
|
bl flash_exit_slc_mode
|
|
b .L1454
|
|
.L1469:
|
|
ldr w1, [x29, 172]
|
|
mov w0, w19
|
|
ldp x2, x3, [x21, 8]
|
|
blr x4
|
|
mov w28, w0
|
|
cmn w0, #1
|
|
bne .L1491
|
|
ldr x0, [x29, 120]
|
|
ldr x0, [x0, #:lo12:.LANCHOR7]
|
|
ldrb w0, [x0, 19]
|
|
sub w0, w0, #1
|
|
and w0, w0, 255
|
|
cmp w0, 7
|
|
bhi .L1474
|
|
add x0, x27, :lo12:.LANCHOR20
|
|
mov w3, 0
|
|
add x2, x0, 4
|
|
ldrb w1, [x0, 1]
|
|
mov w0, w19
|
|
bl HynixSetRRPara
|
|
.L1474:
|
|
ldp x2, x3, [x21, 8]
|
|
mov w0, w19
|
|
ldr w1, [x29, 172]
|
|
bl FlashReadRawPage
|
|
mov w28, w0
|
|
mov w3, w0
|
|
adrp x0, .LANCHOR33
|
|
ldr w1, [x21, 4]
|
|
ldrb w2, [x0, #:lo12:.LANCHOR33]
|
|
adrp x0, .LC29
|
|
add x0, x0, :lo12:.LC29
|
|
bl printf
|
|
cmn w28, #1
|
|
bne .L1491
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L1491
|
|
mov w0, w19
|
|
cbz w24, .L1475
|
|
bl flash_enter_slc_mode
|
|
.L1476:
|
|
ldr x4, [x20, #:lo12:.LANCHOR148]
|
|
mov w0, w19
|
|
ldr w1, [x29, 172]
|
|
ldp x2, x3, [x21, 8]
|
|
blr x4
|
|
.L1524:
|
|
mov w28, w0
|
|
.L1491:
|
|
mov w20, 0
|
|
b .L1473
|
|
.L1475:
|
|
bl flash_exit_slc_mode
|
|
b .L1476
|
|
.size FlashReadPages, .-FlashReadPages
|
|
.section .text.FlashProgSlc2KPages,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgSlc2KPages
|
|
.type FlashProgSlc2KPages, %function
|
|
FlashProgSlc2KPages:
|
|
stp x29, x30, [sp, -160]!
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
mov w24, 56
|
|
stp x25, x26, [sp, 64]
|
|
mov w25, w2
|
|
adrp x2, .LANCHOR31+9
|
|
stp x21, x22, [sp, 32]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x24, w1, w24, x0
|
|
and w22, w1, 255
|
|
ldrb w26, [x2, #:lo12:.LANCHOR31+9]
|
|
mov w23, w22
|
|
stp x27, x28, [sp, 80]
|
|
mov x21, x0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x27, .LANCHOR4
|
|
mov x19, x0
|
|
add x28, x27, :lo12:.LANCHOR4
|
|
.L1526:
|
|
cmp x21, x24
|
|
bne .L1532
|
|
adrp x23, .LANCHOR206
|
|
mov x24, x23
|
|
.L1533:
|
|
cmp x19, x21
|
|
bne .L1540
|
|
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
|
|
.L1532:
|
|
mov w1, w25
|
|
mov w4, w23
|
|
add x3, x29, 100
|
|
add x2, x29, 96
|
|
mov x0, x21
|
|
bl LogAddr2PhyAddr
|
|
adrp x0, .LANCHOR26
|
|
ldr w1, [x29, 100]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR26]
|
|
cmp w0, w1
|
|
bhi .L1527
|
|
mov w0, -1
|
|
str w0, [x21]
|
|
.L1528:
|
|
sub w23, w23, #1
|
|
add x21, x21, 56
|
|
and w23, w23, 255
|
|
b .L1526
|
|
.L1527:
|
|
adrp x0, .LANCHOR27
|
|
add x0, x0, :lo12:.LANCHOR27
|
|
ldrb w20, [x0, w1, uxtw]
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
mov w0, w20
|
|
bl NandcFlashCs
|
|
ldr w1, [x29, 96]
|
|
mov w0, w20
|
|
bl FlashProgFirstCmd
|
|
ldp x3, x4, [x21, 8]
|
|
mov w2, w26
|
|
mov w1, 1
|
|
mov w0, w20
|
|
bl NandcXferData
|
|
ldr w1, [x29, 96]
|
|
mov w0, w20
|
|
bl FlashProgSecondCmd
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
ldr w1, [x29, 96]
|
|
mov w0, w20
|
|
bl FlashReadStatus
|
|
sbfx x0, x0, 0, 1
|
|
str w0, [x21]
|
|
ldr w1, [x29, 96]
|
|
ldr w0, [x27, #:lo12:.LANCHOR4]
|
|
add w1, w1, w0
|
|
mov w0, w20
|
|
bl FlashProgFirstCmd
|
|
ldr x0, [x21, 8]
|
|
mov w2, w26
|
|
mov w1, 1
|
|
cmp x0, 0
|
|
add x3, x0, 2048
|
|
ldr x0, [x21, 16]
|
|
csel x3, x3, xzr, ne
|
|
cmp x0, 0
|
|
add x4, x0, 8
|
|
csel x4, x4, xzr, ne
|
|
mov w0, w20
|
|
bl NandcXferData
|
|
ldr w0, [x28]
|
|
ldr w1, [x29, 96]
|
|
add w1, w1, w0
|
|
mov w0, w20
|
|
bl FlashProgSecondCmd
|
|
mov w0, w20
|
|
bl NandcWaitFlashReady
|
|
ldr w1, [x29, 96]
|
|
mov w0, w20
|
|
bl FlashReadStatus
|
|
tbz x0, 0, .L1531
|
|
mov w0, -1
|
|
str w0, [x21]
|
|
.L1531:
|
|
mov w0, w20
|
|
bl NandcFlashDeCs
|
|
b .L1528
|
|
.L1540:
|
|
ldr w0, [x19]
|
|
cmn w0, #1
|
|
bne .L1534
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC30
|
|
add x0, x0, :lo12:.LC30
|
|
bl printf
|
|
.L1535:
|
|
sub w22, w22, #1
|
|
add x19, x19, 56
|
|
and w22, w22, 255
|
|
b .L1533
|
|
.L1534:
|
|
adrp x20, .LANCHOR207
|
|
mov w4, w22
|
|
add x3, x29, 100
|
|
add x2, x29, 96
|
|
mov w1, w25
|
|
mov x0, x19
|
|
bl LogAddr2PhyAddr
|
|
ldr x27, [x23, #:lo12:.LANCHOR206]
|
|
ldr x26, [x20, #:lo12:.LANCHOR207]
|
|
mov x2, 56
|
|
mov x1, x19
|
|
add x0, x29, 104
|
|
str wzr, [x27]
|
|
str wzr, [x26]
|
|
bl memcpy
|
|
stp x27, x26, [x29, 112]
|
|
mov w2, w25
|
|
mov w1, 1
|
|
add x0, x29, 104
|
|
bl FlashReadPages
|
|
ldr w26, [x29, 104]
|
|
cmn w26, #1
|
|
bne .L1536
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC31
|
|
add x0, x0, :lo12:.LC31
|
|
bl printf
|
|
str w26, [x19]
|
|
.L1536:
|
|
ldr w26, [x29, 104]
|
|
cmp w26, 256
|
|
bne .L1537
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC32
|
|
add x0, x0, :lo12:.LC32
|
|
bl printf
|
|
str w26, [x19]
|
|
.L1537:
|
|
ldr x0, [x19, 16]
|
|
cbz x0, .L1538
|
|
ldr w2, [x0]
|
|
ldr x0, [x20, #:lo12:.LANCHOR207]
|
|
ldr w3, [x0]
|
|
cmp w2, w3
|
|
beq .L1538
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC33
|
|
add x0, x0, :lo12:.LC33
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L1538:
|
|
ldr x0, [x19, 8]
|
|
cbz x0, .L1535
|
|
ldr w2, [x0]
|
|
ldr x0, [x24, #:lo12:.LANCHOR206]
|
|
ldr w3, [x0]
|
|
cmp w2, w3
|
|
beq .L1535
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC34
|
|
add x0, x0, :lo12:.LC34
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
b .L1535
|
|
.size FlashProgSlc2KPages, .-FlashProgSlc2KPages
|
|
.section .text.FlashProgPages,"ax",@progbits
|
|
.align 2
|
|
.global FlashProgPages
|
|
.type FlashProgPages, %function
|
|
FlashProgPages:
|
|
stp x29, x30, [sp, -176]!
|
|
adrp x4, .LANCHOR7
|
|
add x29, sp, 0
|
|
ldr x4, [x4, #:lo12:.LANCHOR7]
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
ldrb w4, [x4, 19]
|
|
stp w3, w4, [x29, 100]
|
|
adrp x4, .LANCHOR2
|
|
ldrb w4, [x4, #:lo12:.LANCHOR2]
|
|
cbnz w4, .L1554
|
|
mov x19, x0
|
|
adrp x0, .LANCHOR31+9
|
|
adrp x27, .LANCHOR23
|
|
mov w24, w1
|
|
ldrb w0, [x0, #:lo12:.LANCHOR31+9]
|
|
mov w22, w2
|
|
add x28, x27, :lo12:.LANCHOR23
|
|
mov w21, 0
|
|
str w0, [x29, 108]
|
|
.L1555:
|
|
cmp w21, w24
|
|
adrp x26, .LANCHOR26
|
|
bcc .L1568
|
|
adrp x21, .LANCHOR16
|
|
adrp x23, .LANCHOR23
|
|
add x25, x26, :lo12:.LANCHOR26
|
|
add x21, x21, :lo12:.LANCHOR16
|
|
add x23, x23, :lo12:.LANCHOR23
|
|
mov x20, 0
|
|
.L1569:
|
|
ldrb w0, [x25]
|
|
cmp w0, w20
|
|
bhi .L1571
|
|
ldr w0, [x29, 100]
|
|
cbnz w0, .L1572
|
|
.L1580:
|
|
mov w0, 0
|
|
b .L1553
|
|
.L1554:
|
|
bl FlashProgSlc2KPages
|
|
.L1553:
|
|
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
|
|
.L1568:
|
|
mov w12, 56
|
|
mov w1, w22
|
|
sub w4, w24, w21
|
|
add x3, x29, 116
|
|
umull x12, w21, w12
|
|
add x2, x29, 112
|
|
add x25, x19, x12
|
|
mov x0, x25
|
|
bl LogAddr2PhyAddr
|
|
mov w23, w0
|
|
ldrb w1, [x26, #:lo12:.LANCHOR26]
|
|
ldr w0, [x29, 116]
|
|
cmp w1, w0
|
|
bhi .L1557
|
|
mov w0, -1
|
|
str w0, [x19, x12]
|
|
.L1558:
|
|
add w21, w21, 1
|
|
b .L1555
|
|
.L1557:
|
|
adrp x1, .LANCHOR28
|
|
add x2, x27, :lo12:.LANCHOR23
|
|
mov x3, 24
|
|
ldrb w1, [x1, #:lo12:.LANCHOR28]
|
|
cmp w1, 0
|
|
uxtw x1, w0
|
|
csel w23, w23, wzr, ne
|
|
madd x1, x1, x3, x2
|
|
ldr x1, [x1, 8]
|
|
cbz x1, .L1560
|
|
bl FlashWaitCmdDone
|
|
.L1560:
|
|
ldp w2, w1, [x29, 112]
|
|
mov x0, 24
|
|
madd x0, x1, x0, x28
|
|
str w2, [x0, 4]
|
|
stp x25, xzr, [x0, 8]
|
|
cbz w23, .L1561
|
|
add w2, w21, 1
|
|
mov w3, 56
|
|
umaddl x2, w2, w3, x19
|
|
str x2, [x0, 16]
|
|
.L1561:
|
|
adrp x0, .LANCHOR27
|
|
add x0, x0, :lo12:.LANCHOR27
|
|
ldrb w20, [x0, x1]
|
|
mov x0, 24
|
|
mul x1, x1, x0
|
|
ldrb w0, [x26, #:lo12:.LANCHOR26]
|
|
cmp w0, 1
|
|
mov w0, w20
|
|
strb w20, [x28, x1]
|
|
bne .L1562
|
|
bl NandcWaitFlashReady
|
|
.L1563:
|
|
ldr w0, [x29, 104]
|
|
sub w0, w0, #1
|
|
cmp w0, 7
|
|
bhi .L1564
|
|
adrp x0, .LANCHOR21
|
|
add x0, x0, :lo12:.LANCHOR21
|
|
ldrb w0, [x0, w20, sxtw]
|
|
cbz w0, .L1564
|
|
adrp x0, .LANCHOR20
|
|
add x0, x0, :lo12:.LANCHOR20
|
|
add x2, x0, 4
|
|
mov w3, 0
|
|
ldrb w1, [x0, 1]
|
|
mov w0, w20
|
|
bl HynixSetRRPara
|
|
.L1564:
|
|
mov w0, w20
|
|
bl NandcFlashCs
|
|
cmp w22, 1
|
|
bne .L1565
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L1565
|
|
mov w0, w20
|
|
bl flash_enter_slc_mode
|
|
.L1566:
|
|
ldr w1, [x29, 112]
|
|
mov w0, w20
|
|
bl FlashProgFirstCmd
|
|
ldrb w2, [x29, 108]
|
|
mov w1, 1
|
|
ldp x3, x4, [x25, 8]
|
|
mov w0, w20
|
|
bl NandcXferData
|
|
cbz w23, .L1567
|
|
ldr w1, [x29, 112]
|
|
mov w0, w20
|
|
bl FlashProgDpFirstCmd
|
|
ldr w1, [x29, 116]
|
|
adrp x0, .LANCHOR18
|
|
add x0, x0, :lo12:.LANCHOR18
|
|
ldr w0, [x0, x1, lsl 2]
|
|
ldr w1, [x29, 112]
|
|
cmp w0, 0
|
|
mov w0, w20
|
|
cset w2, ne
|
|
bl FlashWaitReadyEN
|
|
adrp x0, .LANCHOR4
|
|
ldr w1, [x29, 112]
|
|
ldr w0, [x0, #:lo12:.LANCHOR4]
|
|
add w1, w1, w0
|
|
mov w0, w20
|
|
bl FlashProgDpSecondCmd
|
|
add w0, w21, 1
|
|
mov w1, 56
|
|
ldrb w2, [x29, 108]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x0, w0, w1, x19
|
|
mov w1, 1
|
|
ldp x3, x4, [x0, 8]
|
|
mov w0, w20
|
|
bl NandcXferData
|
|
.L1567:
|
|
ldr w1, [x29, 112]
|
|
mov w0, w20
|
|
add w21, w21, w23
|
|
bl FlashProgSecondCmd
|
|
mov w0, w20
|
|
bl NandcFlashDeCs
|
|
b .L1558
|
|
.L1562:
|
|
bl NandcFlashCs
|
|
ldr w1, [x29, 116]
|
|
adrp x0, .LANCHOR18
|
|
add x0, x0, :lo12:.LANCHOR18
|
|
ldr w0, [x0, x1, lsl 2]
|
|
ldr w1, [x29, 112]
|
|
cmp w0, 0
|
|
mov w0, w20
|
|
cset w2, ne
|
|
bl FlashWaitReadyEN
|
|
mov w0, w20
|
|
bl NandcFlashDeCs
|
|
b .L1563
|
|
.L1565:
|
|
mov w0, w20
|
|
bl flash_exit_slc_mode
|
|
b .L1566
|
|
.L1571:
|
|
mov w0, w20
|
|
bl FlashWaitCmdDone
|
|
cmp w22, 1
|
|
bne .L1570
|
|
ldrb w0, [x21]
|
|
cbz w0, .L1570
|
|
mov x0, 24
|
|
mul x0, x20, x0
|
|
ldrb w0, [x0, x23]
|
|
bl flash_exit_slc_mode
|
|
.L1570:
|
|
add x20, x20, 1
|
|
b .L1569
|
|
.L1572:
|
|
mov w0, 56
|
|
and w20, w24, 255
|
|
adrp x23, .LANCHOR206
|
|
mov x25, x23
|
|
umaddl x24, w24, w0, x19
|
|
.L1573:
|
|
cmp x24, x19
|
|
beq .L1580
|
|
ldr w0, [x19]
|
|
cmn w0, #1
|
|
bne .L1574
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC30
|
|
add x0, x0, :lo12:.LC30
|
|
bl printf
|
|
.L1575:
|
|
sub w20, w20, #1
|
|
add x19, x19, 56
|
|
and w20, w20, 255
|
|
b .L1573
|
|
.L1574:
|
|
adrp x21, .LANCHOR207
|
|
mov w4, w20
|
|
add x3, x29, 116
|
|
add x2, x29, 112
|
|
mov w1, w22
|
|
mov x0, x19
|
|
bl LogAddr2PhyAddr
|
|
ldr x27, [x23, #:lo12:.LANCHOR206]
|
|
ldr x26, [x21, #:lo12:.LANCHOR207]
|
|
mov x2, 56
|
|
mov x1, x19
|
|
add x0, x29, 120
|
|
str wzr, [x27]
|
|
str wzr, [x26]
|
|
bl memcpy
|
|
stp x27, x26, [x29, 128]
|
|
mov w2, w22
|
|
mov w1, 1
|
|
add x0, x29, 120
|
|
bl FlashReadPages
|
|
ldr w26, [x29, 120]
|
|
cmn w26, #1
|
|
bne .L1576
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC31
|
|
add x0, x0, :lo12:.LC31
|
|
bl printf
|
|
str w26, [x19]
|
|
.L1576:
|
|
ldr x0, [x19, 16]
|
|
cbz x0, .L1577
|
|
ldr w2, [x0]
|
|
ldr x0, [x21, #:lo12:.LANCHOR207]
|
|
ldr w3, [x0]
|
|
cmp w2, w3
|
|
beq .L1577
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC33
|
|
add x0, x0, :lo12:.LC33
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L1577:
|
|
ldr x0, [x19, 8]
|
|
cbz x0, .L1575
|
|
ldr w2, [x0]
|
|
ldr x0, [x25, #:lo12:.LANCHOR206]
|
|
ldr w3, [x0]
|
|
cmp w2, w3
|
|
beq .L1575
|
|
ldr w1, [x19, 4]
|
|
adrp x0, .LC34
|
|
add x0, x0, :lo12:.LC34
|
|
bl printf
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
b .L1575
|
|
.size FlashProgPages, .-FlashProgPages
|
|
.section .text.FlashTestBlk,"ax",@progbits
|
|
.align 2
|
|
.global FlashTestBlk
|
|
.type FlashTestBlk, %function
|
|
FlashTestBlk:
|
|
stp x29, x30, [sp, -160]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 65535
|
|
adrp x0, .LANCHOR156
|
|
ldr w0, [x0, #:lo12:.LANCHOR156]
|
|
cmp w19, w0
|
|
bcc .L1608
|
|
adrp x20, .LANCHOR152
|
|
mov w2, 32
|
|
mov w1, 165
|
|
lsl w19, w19, 10
|
|
ldr x0, [x20, #:lo12:.LANCHOR152]
|
|
str x0, [x29, 48]
|
|
add x0, x29, 96
|
|
str x0, [x29, 56]
|
|
bl ftl_memset
|
|
ldr x0, [x20, #:lo12:.LANCHOR152]
|
|
mov w2, 8
|
|
mov w1, 90
|
|
bl ftl_memset
|
|
str w19, [x29, 44]
|
|
mov w2, 1
|
|
add x0, x29, 40
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
mov w3, 1
|
|
add x0, x29, 40
|
|
mov w2, w3
|
|
mov w1, w3
|
|
bl FlashProgPages
|
|
ldr w0, [x29, 40]
|
|
mov w2, 1
|
|
mov w1, 0
|
|
cmp w0, 0
|
|
add x0, x29, 40
|
|
csetm w19, ne
|
|
bl FlashEraseBlocks
|
|
.L1606:
|
|
mov w0, w19
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 160
|
|
ret
|
|
.L1608:
|
|
mov w19, 0
|
|
b .L1606
|
|
.size FlashTestBlk, .-FlashTestBlk
|
|
.section .text.FtlLowFormatEraseBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlLowFormatEraseBlock
|
|
.type FtlLowFormatEraseBlock, %function
|
|
FtlLowFormatEraseBlock:
|
|
stp x29, x30, [sp, -144]!
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
and w26, w0, 65535
|
|
adrp x0, .LANCHOR78
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
stp x23, x24, [sp, 48]
|
|
stp x27, x28, [sp, 80]
|
|
cbnz w0, .L1633
|
|
adrp x23, .LANCHOR28
|
|
and w25, w1, 255
|
|
adrp x20, .LANCHOR16
|
|
adrp x1, .LANCHOR38
|
|
ldrb w0, [x23, #:lo12:.LANCHOR28]
|
|
adrp x21, .LANCHOR79
|
|
str w0, [x29, 136]
|
|
mov x8, 56
|
|
adrp x0, .LANCHOR75
|
|
ldrb w10, [x20, #:lo12:.LANCHOR16]
|
|
ldrh w11, [x1, #:lo12:.LANCHOR38]
|
|
adrp x7, .LANCHOR47
|
|
str w26, [x0, #:lo12:.LANCHOR75]
|
|
adrp x0, .LANCHOR196
|
|
ldr x6, [x21, #:lo12:.LANCHOR79]
|
|
add x7, x7, :lo12:.LANCHOR47
|
|
ldr x12, [x0, #:lo12:.LANCHOR196]
|
|
adrp x0, .LANCHOR58
|
|
mov w14, w8
|
|
mov x5, 0
|
|
ldrh w13, [x0, #:lo12:.LANCHOR58]
|
|
mov w24, 0
|
|
mov w19, 0
|
|
str x1, [x29, 128]
|
|
str x0, [x29, 120]
|
|
.L1612:
|
|
cmp w11, w5, uxth
|
|
bhi .L1616
|
|
cbz w24, .L1610
|
|
cmp w10, 0
|
|
mov w2, w24
|
|
cset w22, ne
|
|
strb wzr, [x23, #:lo12:.LANCHOR28]
|
|
mov w1, w22
|
|
mov x0, x6
|
|
bl FlashEraseBlocks
|
|
mov x27, 0
|
|
ldrb w0, [x29, 136]
|
|
strb w0, [x23, #:lo12:.LANCHOR28]
|
|
mov w0, 56
|
|
umull x24, w24, w0
|
|
.L1619:
|
|
ldr x0, [x21, #:lo12:.LANCHOR79]
|
|
add x1, x0, x27
|
|
ldr w0, [x0, x27]
|
|
cmn w0, #1
|
|
bne .L1618
|
|
ldr w0, [x1, 4]
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
.L1618:
|
|
add x27, x27, 56
|
|
cmp x27, x24
|
|
bne .L1619
|
|
cbnz w25, .L1620
|
|
and w22, w22, 65535
|
|
mov w28, 6
|
|
mov w27, 1
|
|
.L1621:
|
|
adrp x0, .LANCHOR47
|
|
mov w24, 0
|
|
add x0, x0, :lo12:.LANCHOR47
|
|
str x0, [x29, 112]
|
|
.L1629:
|
|
ldr x0, [x29, 128]
|
|
mov x5, 0
|
|
ldr x6, [x21, #:lo12:.LANCHOR79]
|
|
mov w20, 0
|
|
mov w12, 56
|
|
ldrh w7, [x0, #:lo12:.LANCHOR38]
|
|
adrp x0, .LANCHOR193
|
|
ldr x8, [x0, #:lo12:.LANCHOR193]
|
|
adrp x0, .LANCHOR194
|
|
ldr x10, [x0, #:lo12:.LANCHOR194]
|
|
ldr x0, [x29, 120]
|
|
ldrh w11, [x0, #:lo12:.LANCHOR58]
|
|
.L1622:
|
|
cmp w7, w5, uxth
|
|
bhi .L1625
|
|
cbz w20, .L1610
|
|
mov w2, w22
|
|
mov w1, w20
|
|
strb wzr, [x23, #:lo12:.LANCHOR28]
|
|
mov w3, 1
|
|
mov x0, x6
|
|
bl FlashProgPages
|
|
mov w1, 56
|
|
ldrb w0, [x29, 136]
|
|
strb w0, [x23, #:lo12:.LANCHOR28]
|
|
mov x2, 0
|
|
umull x1, w20, w1
|
|
.L1628:
|
|
ldr x0, [x21, #:lo12:.LANCHOR79]
|
|
add x3, x0, x2
|
|
ldr w0, [x0, x2]
|
|
cbz w0, .L1627
|
|
ldr w0, [x3, 4]
|
|
add w19, w19, 1
|
|
stp x2, x1, [x29, 96]
|
|
and w19, w19, 65535
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
ldp x2, x1, [x29, 96]
|
|
.L1627:
|
|
add x2, x2, 56
|
|
cmp x1, x2
|
|
bne .L1628
|
|
add w24, w24, w28
|
|
and w24, w24, 65535
|
|
cmp w27, w24
|
|
bhi .L1629
|
|
mov x23, 0
|
|
.L1631:
|
|
cbz w25, .L1630
|
|
ldr x0, [x21, #:lo12:.LANCHOR79]
|
|
add x1, x0, x23
|
|
ldr w0, [x0, x23]
|
|
cbnz w0, .L1630
|
|
ldr w0, [x1, 4]
|
|
mov w1, 1
|
|
str x2, [x29, 136]
|
|
lsr w0, w0, 10
|
|
bl FtlFreeSysBlkQueueIn
|
|
ldr x2, [x29, 136]
|
|
.L1630:
|
|
add x23, x23, 56
|
|
cmp x23, x2
|
|
bne .L1631
|
|
cmp w26, 63
|
|
ccmp w25, 0, 0, hi
|
|
beq .L1610
|
|
ldr x0, [x21, #:lo12:.LANCHOR79]
|
|
mov w2, w20
|
|
mov w1, w22
|
|
bl FlashEraseBlocks
|
|
.L1610:
|
|
mov w0, w19
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 144
|
|
ret
|
|
.L1616:
|
|
mul x0, x5, x8
|
|
mov w1, w26
|
|
str wzr, [x6, x0]
|
|
ldrb w0, [x7, x5]
|
|
bl V2P_block
|
|
and w15, w0, 65535
|
|
mov w22, w15
|
|
cbz w25, .L1613
|
|
bl IsBlkInVendorPart
|
|
cbnz w0, .L1614
|
|
.L1613:
|
|
mov w0, w22
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L1615
|
|
umaddl x1, w24, w14, x6
|
|
lsl w15, w15, 10
|
|
mul w0, w24, w13
|
|
add w24, w24, 1
|
|
and w24, w24, 65535
|
|
asr w0, w0, 2
|
|
str w15, [x1, 4]
|
|
add x0, x12, x0, sxtw 2
|
|
stp xzr, x0, [x1, 8]
|
|
.L1614:
|
|
add x5, x5, 1
|
|
b .L1612
|
|
.L1615:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L1614
|
|
.L1620:
|
|
adrp x0, .LANCHOR53
|
|
ldrh w27, [x0, #:lo12:.LANCHOR53]
|
|
ldrb w0, [x20, #:lo12:.LANCHOR16]
|
|
cbnz w0, .L1634
|
|
lsr w28, w27, 2
|
|
mov w22, 1
|
|
b .L1621
|
|
.L1634:
|
|
mov w22, 1
|
|
mov w28, w22
|
|
b .L1621
|
|
.L1625:
|
|
mov x0, 56
|
|
mov w1, w26
|
|
mul x0, x5, x0
|
|
str wzr, [x6, x0]
|
|
ldr x0, [x29, 112]
|
|
ldrb w0, [x0, x5]
|
|
bl V2P_block
|
|
and w13, w0, 65535
|
|
mov w14, w13
|
|
cbz w25, .L1623
|
|
bl IsBlkInVendorPart
|
|
cbnz w0, .L1624
|
|
.L1623:
|
|
mov w0, w14
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L1624
|
|
umaddl x1, w20, w12, x6
|
|
add w13, w24, w13, lsl 10
|
|
mul w0, w20, w11
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
asr w0, w0, 2
|
|
str w13, [x1, 4]
|
|
add x0, x10, x0, sxtw 2
|
|
stp x8, x0, [x1, 8]
|
|
.L1624:
|
|
add x5, x5, 1
|
|
b .L1622
|
|
.L1633:
|
|
mov w19, 0
|
|
b .L1610
|
|
.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
|
|
.section .text.FtlBbmTblFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlBbmTblFlush
|
|
.type FtlBbmTblFlush, %function
|
|
FtlBbmTblFlush:
|
|
stp x29, x30, [sp, -96]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR78
|
|
stp x19, x20, [sp, 16]
|
|
ldr w0, [x22, #:lo12:.LANCHOR78]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cbnz w0, .L1657
|
|
adrp x24, .LANCHOR195
|
|
adrp x23, .LANCHOR189
|
|
adrp x20, .LANCHOR211
|
|
add x19, x20, :lo12:.LANCHOR211
|
|
ldr x1, [x24, #:lo12:.LANCHOR195]
|
|
adrp x21, .LANCHOR76
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
add x26, x21, :lo12:.LANCHOR76
|
|
stp x0, x1, [x19, 8]
|
|
adrp x1, .LANCHOR57
|
|
adrp x27, .LANCHOR45
|
|
adrp x28, .LANCHOR126
|
|
ldrh w2, [x1, #:lo12:.LANCHOR57]
|
|
add x26, x26, 32
|
|
mov w25, 0
|
|
add x27, x27, :lo12:.LANCHOR45
|
|
add x28, x28, :lo12:.LANCHOR126
|
|
mov w1, 0
|
|
bl ftl_memset
|
|
.L1658:
|
|
ldrh w0, [x27]
|
|
cmp w25, w0
|
|
blt .L1659
|
|
add x20, x20, :lo12:.LANCHOR211
|
|
add x19, x21, :lo12:.LANCHOR76
|
|
mov w2, 16
|
|
mov w1, 255
|
|
adrp x26, .LC35
|
|
adrp x27, .LANCHOR53
|
|
ldr x28, [x20, 16]
|
|
add x26, x26, :lo12:.LC35
|
|
add x27, x27, :lo12:.LANCHOR53
|
|
mov w25, 0
|
|
mov x0, x28
|
|
bl ftl_memset
|
|
mov w0, -3887
|
|
strh w0, [x28]
|
|
ldr w0, [x19, 8]
|
|
str w0, [x28, 4]
|
|
ldrh w0, [x21, #:lo12:.LANCHOR76]
|
|
mov w21, 0
|
|
strh w0, [x28, 2]
|
|
ldrh w0, [x19, 4]
|
|
strh w0, [x28, 8]
|
|
ldrh w0, [x19, 6]
|
|
strh w0, [x28, 10]
|
|
adrp x0, .LANCHOR37
|
|
ldr w0, [x0, #:lo12:.LANCHOR37]
|
|
strh w0, [x28, 12]
|
|
.L1660:
|
|
ldrh w1, [x19]
|
|
ldrh w4, [x28, 10]
|
|
ldrh w2, [x19, 2]
|
|
ldrh w3, [x19, 4]
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
str x0, [x20, 8]
|
|
ldr x0, [x24, #:lo12:.LANCHOR195]
|
|
str x0, [x20, 16]
|
|
orr w0, w2, w1, lsl 10
|
|
str wzr, [x20]
|
|
str w0, [x20, 4]
|
|
mov x0, x26
|
|
bl printf
|
|
ldrh w0, [x27]
|
|
ldrh w1, [x19, 2]
|
|
sub w0, w0, #1
|
|
cmp w1, w0
|
|
blt .L1661
|
|
ldr w0, [x19, 8]
|
|
mov w2, 1
|
|
ldrh w1, [x19, 4]
|
|
add w0, w0, 1
|
|
str w0, [x19, 8]
|
|
str w0, [x28, 4]
|
|
ldrh w0, [x19]
|
|
strh w0, [x28, 8]
|
|
strh w0, [x19, 4]
|
|
adrp x0, .LANCHOR79
|
|
strh w1, [x19]
|
|
lsl w1, w1, 10
|
|
ldr x0, [x0, #:lo12:.LANCHOR79]
|
|
str w1, [x20, 4]
|
|
strh wzr, [x19, 2]
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashEraseBlocks
|
|
.L1661:
|
|
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 .L1662
|
|
ldr w1, [x20, 4]
|
|
add w21, w21, 1
|
|
adrp x0, .LC36
|
|
and w21, w21, 65535
|
|
add x0, x0, :lo12:.LC36
|
|
bl printf
|
|
cmp w21, 3
|
|
bls .L1660
|
|
ldr w1, [x20, 4]
|
|
mov w2, w21
|
|
adrp x0, .LC37
|
|
add x0, x0, :lo12:.LC37
|
|
bl printf
|
|
mov w0, 1
|
|
str w0, [x22, #:lo12:.LANCHOR78]
|
|
.L1657:
|
|
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
|
|
.L1659:
|
|
ldrh w2, [x28]
|
|
ldr x1, [x26], 8
|
|
ldr x0, [x19, 8]
|
|
mul w3, w2, w25
|
|
lsl w2, w2, 2
|
|
add w25, w25, 1
|
|
add x0, x0, x3, sxtw 2
|
|
bl ftl_memcpy
|
|
b .L1658
|
|
.L1662:
|
|
add w25, w25, 1
|
|
cmp w25, 1
|
|
beq .L1660
|
|
cmp w0, 256
|
|
beq .L1660
|
|
b .L1657
|
|
.size FtlBbmTblFlush, .-FtlBbmTblFlush
|
|
.section .text.allocate_data_superblock,"ax",@progbits
|
|
.align 2
|
|
.global allocate_data_superblock
|
|
.type allocate_data_superblock, %function
|
|
allocate_data_superblock:
|
|
adrp x1, .LANCHOR78
|
|
ldr w1, [x1, #:lo12:.LANCHOR78]
|
|
cbnz w1, .L1736
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
stp x27, x28, [sp, 80]
|
|
adrp x27, .LANCHOR87
|
|
add x0, x27, :lo12:.LANCHOR87
|
|
stp x23, x24, [sp, 48]
|
|
str x0, [x29, 120]
|
|
adrp x0, .LANCHOR90
|
|
add x23, x0, :lo12:.LANCHOR90
|
|
stp x21, x22, [sp, 32]
|
|
stp x25, x26, [sp, 64]
|
|
.L1727:
|
|
ldr x1, [x29, 120]
|
|
adrp x0, .LANCHOR90
|
|
adrp x24, .LANCHOR40
|
|
ldrh w0, [x0, #:lo12:.LANCHOR90]
|
|
ldrh w1, [x1]
|
|
add w0, w0, w1
|
|
ldrh w1, [x24, #:lo12:.LANCHOR40]
|
|
cmp w0, w1
|
|
ble .L1675
|
|
mov w2, 3507
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1675:
|
|
adrp x0, .LANCHOR95
|
|
add x0, x0, :lo12:.LANCHOR95
|
|
cmp x19, x0
|
|
bne .L1676
|
|
adrp x1, .LANCHOR177
|
|
ldrh w2, [x23]
|
|
ldr w3, [x1, #:lo12:.LANCHOR177]
|
|
lsr w0, w2, 1
|
|
add w4, w0, 1
|
|
mul w1, w2, w3
|
|
add w1, w4, w1, lsr 2
|
|
adrp x4, .LANCHOR104
|
|
and w1, w1, 65535
|
|
ldr w4, [x4, #:lo12:.LANCHOR104]
|
|
cbz w4, .L1677
|
|
adrp x4, .LANCHOR175
|
|
ldr w4, [x4, #:lo12:.LANCHOR175]
|
|
cmp w4, 39
|
|
bhi .L1677
|
|
cmp w4, 2
|
|
bls .L1711
|
|
tbz x2, 0, .L1707
|
|
cbz w3, .L1711
|
|
.L1707:
|
|
mov w1, w0
|
|
b .L1677
|
|
.L1676:
|
|
ldrb w0, [x19, 8]
|
|
cmp w0, 1
|
|
bne .L1711
|
|
adrp x0, .LANCHOR44
|
|
ldrh w0, [x0, #:lo12:.LANCHOR44]
|
|
cmp w0, 1
|
|
beq .L1711
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbnz w0, .L1711
|
|
adrp x2, .LANCHOR104
|
|
ldrh w0, [x23]
|
|
ldr w2, [x2, #:lo12:.LANCHOR104]
|
|
lsr w1, w0, 3
|
|
cbz w2, .L1677
|
|
adrp x2, .LANCHOR175
|
|
ldr w2, [x2, #:lo12:.LANCHOR175]
|
|
cmp w2, 1
|
|
bhi .L1677
|
|
mov w1, 7
|
|
mul w1, w0, w1
|
|
lsr w1, w1, 3
|
|
.L1677:
|
|
cbz w1, .L1678
|
|
sub w1, w1, #1
|
|
and w1, w1, 65535
|
|
.L1678:
|
|
ldrb w2, [x19, 8]
|
|
adrp x0, .LANCHOR89
|
|
add x0, x0, :lo12:.LANCHOR89
|
|
bl List_pop_index_node
|
|
and w22, w0, 65535
|
|
ldrh w0, [x23]
|
|
cbnz w0, .L1679
|
|
mov w2, 3532
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1679:
|
|
ldrh w0, [x23]
|
|
sub w0, w0, #1
|
|
strh w0, [x23]
|
|
ldrh w0, [x24, #:lo12:.LANCHOR40]
|
|
cmp w0, w22
|
|
bls .L1727
|
|
adrp x25, .LANCHOR85
|
|
ubfiz x21, x22, 1, 16
|
|
ldr x0, [x25, #:lo12:.LANCHOR85]
|
|
ldrh w20, [x0, x21]
|
|
cbnz w20, .L1727
|
|
strh w22, [x19]
|
|
mov x0, x19
|
|
bl make_superblock
|
|
ldrb w0, [x19, 7]
|
|
cbnz w0, .L1681
|
|
ldr x0, [x25, #:lo12:.LANCHOR85]
|
|
mov w1, -1
|
|
strh w1, [x0, x21]
|
|
ldrh w1, [x27, #:lo12:.LANCHOR87]
|
|
ldrh w0, [x23]
|
|
add w0, w0, w1
|
|
ldrh w1, [x24, #:lo12:.LANCHOR40]
|
|
cmp w0, w1
|
|
ble .L1727
|
|
mov w2, 3552
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
b .L1727
|
|
.L1711:
|
|
mov w1, 0
|
|
b .L1678
|
|
.L1681:
|
|
ldrh w1, [x27, #:lo12:.LANCHOR87]
|
|
ldrh w0, [x23]
|
|
add w0, w0, w1
|
|
ldrh w1, [x24, #:lo12:.LANCHOR40]
|
|
cmp w0, w1
|
|
ble .L1683
|
|
mov w2, 3556
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1683:
|
|
adrp x1, .LANCHOR38
|
|
adrp x25, .LANCHOR79
|
|
mov w2, 56
|
|
mov x3, 8
|
|
ldrh w1, [x1, #:lo12:.LANCHOR38]
|
|
add x26, x19, 16
|
|
ldr x4, [x25, #:lo12:.LANCHOR79]
|
|
mov x5, x26
|
|
mov w6, 65535
|
|
add x0, x4, 8
|
|
umaddl x1, w2, w1, x3
|
|
add x1, x4, x1
|
|
.L1684:
|
|
cmp x1, x0
|
|
bne .L1686
|
|
cbnz w20, .L1687
|
|
mov w2, 3571
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1687:
|
|
adrp x0, .LANCHOR104
|
|
adrp x28, .LANCHOR80
|
|
ldr w0, [x0, #:lo12:.LANCHOR104]
|
|
cbz w0, .L1688
|
|
adrp x0, .LANCHOR93
|
|
add x0, x0, :lo12:.LANCHOR93
|
|
cmp x19, x0
|
|
bne .L1688
|
|
ldr x0, [x28, #:lo12:.LANCHOR80]
|
|
ldrh w0, [x0, x21]
|
|
cmp w0, 40
|
|
bls .L1688
|
|
strb wzr, [x19, 8]
|
|
.L1688:
|
|
adrp x0, .LANCHOR213
|
|
ldrh w0, [x0, #:lo12:.LANCHOR213]
|
|
cmp w0, w22
|
|
bne .L1689
|
|
mov w2, 3578
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1689:
|
|
ldrb w0, [x19, 8]
|
|
adrp x6, .LANCHOR48
|
|
adrp x5, .LANCHOR172
|
|
adrp x4, .LANCHOR173
|
|
ldr x1, [x28, #:lo12:.LANCHOR80]
|
|
cbnz w0, .L1690
|
|
ldrh w0, [x1, x21]
|
|
cbz w0, .L1691
|
|
ldrh w2, [x6, #:lo12:.LANCHOR48]
|
|
add w0, w0, w2
|
|
.L1739:
|
|
strh w0, [x1, x21]
|
|
mov w1, 0
|
|
ldr w0, [x5, #:lo12:.LANCHOR172]
|
|
add w0, w0, 1
|
|
str w0, [x5, #:lo12:.LANCHOR172]
|
|
mov w0, w22
|
|
bl ftl_set_blk_mode
|
|
.L1693:
|
|
ldr x0, [x28, #:lo12:.LANCHOR80]
|
|
ldrh w1, [x0, x21]
|
|
adrp x0, .LANCHOR174
|
|
ldr w2, [x0, #:lo12:.LANCHOR174]
|
|
cmp w1, w2
|
|
bls .L1694
|
|
str w1, [x0, #:lo12:.LANCHOR174]
|
|
.L1694:
|
|
ldr w2, [x5, #:lo12:.LANCHOR172]
|
|
mov x3, 4
|
|
ldr w1, [x4, #:lo12:.LANCHOR173]
|
|
ldrh w0, [x6, #:lo12:.LANCHOR48]
|
|
madd w0, w0, w2, w1
|
|
ldrh w1, [x24, #:lo12:.LANCHOR40]
|
|
udiv w0, w0, w1
|
|
adrp x1, .LANCHOR214
|
|
str w0, [x1, #:lo12:.LANCHOR214]
|
|
adrp x0, .LANCHOR199
|
|
ldr x1, [x0, #:lo12:.LANCHOR199]
|
|
ldr w0, [x1, 16]
|
|
add w0, w0, 1
|
|
str w0, [x1, 16]
|
|
mov w1, 56
|
|
ldr x0, [x25, #:lo12:.LANCHOR79]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x1, w1, w20, x3
|
|
add x2, x0, 4
|
|
add x1, x0, x1
|
|
.L1695:
|
|
cmp x1, x2
|
|
bne .L1696
|
|
adrp x1, .LANCHOR16
|
|
ldrb w1, [x1, #:lo12:.LANCHOR16]
|
|
cbz w1, .L1697
|
|
ldrb w1, [x19, 8]
|
|
mov w2, w20
|
|
cmp w1, 1
|
|
bne .L1698
|
|
mov w1, 0
|
|
.L1740:
|
|
bl FlashEraseBlocks
|
|
.L1697:
|
|
ldrb w1, [x19, 8]
|
|
mov w2, w20
|
|
ldr x0, [x25, #:lo12:.LANCHOR79]
|
|
mov x24, 0
|
|
bl FlashEraseBlocks
|
|
mov w1, 0
|
|
mov x3, 56
|
|
.L1699:
|
|
cmp w20, w24, uxth
|
|
bhi .L1701
|
|
cbz w1, .L1702
|
|
mov w0, w22
|
|
bl update_multiplier_value
|
|
bl FtlBbmTblFlush
|
|
.L1702:
|
|
ldrb w0, [x19, 7]
|
|
cbnz w0, .L1703
|
|
adrp x0, .LANCHOR85
|
|
mov w1, -1
|
|
ldr x0, [x0, #:lo12:.LANCHOR85]
|
|
strh w1, [x0, x21]
|
|
b .L1727
|
|
.L1686:
|
|
ldrh w3, [x5]
|
|
stp xzr, xzr, [x0]
|
|
cmp w3, w6
|
|
beq .L1685
|
|
umaddl x7, w20, w2, x4
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
lsl w3, w3, 10
|
|
str w3, [x7, 4]
|
|
.L1685:
|
|
add x0, x0, 56
|
|
add x5, x5, 2
|
|
b .L1684
|
|
.L1691:
|
|
mov w0, 2
|
|
b .L1739
|
|
.L1690:
|
|
ldrh w0, [x1, x21]
|
|
add w0, w0, 1
|
|
strh w0, [x1, x21]
|
|
ldr w0, [x4, #:lo12:.LANCHOR173]
|
|
add w0, w0, 1
|
|
str w0, [x4, #:lo12:.LANCHOR173]
|
|
mov w0, w22
|
|
bl ftl_set_blk_mode.part.11
|
|
b .L1693
|
|
.L1696:
|
|
ldr w3, [x2]
|
|
and w3, w3, -1024
|
|
str w3, [x2], 56
|
|
b .L1695
|
|
.L1698:
|
|
mov w1, 1
|
|
b .L1740
|
|
.L1701:
|
|
mul x0, x24, x3
|
|
ldr x2, [x25, #:lo12:.LANCHOR79]
|
|
add x4, x2, x0
|
|
ldr w2, [x2, x0]
|
|
cmn w2, #1
|
|
bne .L1700
|
|
add w1, w1, 1
|
|
ldr w0, [x4, 4]
|
|
str x3, [x29, 104]
|
|
stp w2, w1, [x29, 112]
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
ldp w2, w1, [x29, 112]
|
|
strh w2, [x26]
|
|
ldr x3, [x29, 104]
|
|
ldrb w0, [x19, 7]
|
|
sub w0, w0, #1
|
|
strb w0, [x19, 7]
|
|
.L1700:
|
|
add x24, x24, 1
|
|
add x26, x26, 2
|
|
b .L1699
|
|
.L1703:
|
|
adrp x1, .LANCHOR52
|
|
adrp x2, .LANCHOR164
|
|
strh wzr, [x19, 2]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
strh w22, [x19]
|
|
strb wzr, [x19, 6]
|
|
mul w0, w0, w1
|
|
ldr w1, [x2, #:lo12:.LANCHOR164]
|
|
str w1, [x19, 12]
|
|
add w1, w1, 1
|
|
str w1, [x2, #:lo12:.LANCHOR164]
|
|
adrp x1, .LANCHOR85
|
|
and w0, w0, 65535
|
|
strh w0, [x19, 4]
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
strh w0, [x1, x21]
|
|
ldrh w0, [x19, 4]
|
|
cbz w0, .L1704
|
|
ldrb w0, [x19, 7]
|
|
cbnz w0, .L1674
|
|
.L1704:
|
|
mov w2, 3642
|
|
adrp x1, .LANCHOR212
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR212
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1674:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.L1736:
|
|
mov w0, 0
|
|
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, .LANCHOR119
|
|
stp x25, x26, [sp, 64]
|
|
and w25, w0, 65535
|
|
ldrh w0, [x21, #:lo12:.LANCHOR119]
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
str x27, [sp, 80]
|
|
cbz w0, .L1742
|
|
adrp x23, .LANCHOR120
|
|
add x24, x23, :lo12:.LANCHOR120
|
|
mov w19, 0
|
|
.L1743:
|
|
adrp x0, .LANCHOR38
|
|
ldrh w0, [x0, #:lo12:.LANCHOR38]
|
|
cmp w0, w19
|
|
bhi .L1749
|
|
bl FtlGcReFreshBadBlk
|
|
.L1742:
|
|
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
|
|
.L1749:
|
|
adrp x0, .LANCHOR47
|
|
add x0, x0, :lo12:.LANCHOR47
|
|
mov w1, w25
|
|
add x22, x21, :lo12:.LANCHOR119
|
|
mov w20, 0
|
|
ldrb w0, [x0, w19, sxtw]
|
|
bl V2P_block
|
|
and w26, w0, 65535
|
|
.L1744:
|
|
ldrh w0, [x22]
|
|
cmp w0, w20
|
|
bhi .L1748
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L1743
|
|
.L1748:
|
|
add x0, x23, :lo12:.LANCHOR120
|
|
add w27, w20, 1
|
|
ldrh w0, [x0, w20, sxtw 1]
|
|
cmp w0, w26
|
|
bne .L1745
|
|
mov w0, w26
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldrh w1, [x22]
|
|
sxtw x3, w27
|
|
and x4, x20, 65535
|
|
mov x0, 0
|
|
.L1746:
|
|
add w2, w20, w0
|
|
cmp w1, w2, uxth
|
|
bhi .L1747
|
|
sub w1, w1, #1
|
|
strh w1, [x22]
|
|
.L1745:
|
|
and w20, w27, 65535
|
|
b .L1744
|
|
.L1747:
|
|
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 .L1746
|
|
.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, .LANCHOR85
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
and w19, w0, 65535
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
ubfiz x0, x19, 1, 16
|
|
ldrh w0, [x1, x0]
|
|
cbnz w0, .L1755
|
|
adrp x0, .LANCHOR213
|
|
ldrh w1, [x0, #:lo12:.LANCHOR213]
|
|
cmp w1, w19
|
|
bne .L1756
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR213]
|
|
.L1757:
|
|
adrp x20, .LANCHOR87
|
|
mov w1, w19
|
|
adrp x0, .LANCHOR84
|
|
add x0, x0, :lo12:.LANCHOR84
|
|
bl List_remove_node
|
|
ldrh w0, [x20, #:lo12:.LANCHOR87]
|
|
cbnz w0, .L1759
|
|
mov w2, 3767
|
|
adrp x1, .LANCHOR215
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR215
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1759:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR87]
|
|
sub w0, w0, #1
|
|
strh w0, [x20, #:lo12:.LANCHOR87]
|
|
mov w0, w19
|
|
bl free_data_superblock
|
|
mov w0, w19
|
|
bl FtlGcFreeBadSuperBlk
|
|
adrp x0, .LANCHOR90
|
|
ldrh w1, [x20, #:lo12:.LANCHOR87]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR90]
|
|
add w0, w0, w1
|
|
adrp x1, .LANCHOR40
|
|
ldrh w1, [x1, #:lo12:.LANCHOR40]
|
|
cmp w0, w1
|
|
ble .L1763
|
|
mov w2, 3770
|
|
adrp x1, .LANCHOR215
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR215
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1763:
|
|
mov w0, 1
|
|
b .L1754
|
|
.L1756:
|
|
adrp x0, .LANCHOR93
|
|
ldrh w0, [x0, #:lo12:.LANCHOR93]
|
|
cmp w0, w19
|
|
beq .L1762
|
|
adrp x0, .LANCHOR94
|
|
ldrh w0, [x0, #:lo12:.LANCHOR94]
|
|
cmp w0, w19
|
|
beq .L1762
|
|
adrp x0, .LANCHOR95
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95]
|
|
cmp w0, w19
|
|
bne .L1757
|
|
.L1762:
|
|
mov w0, 0
|
|
.L1754:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L1755:
|
|
mov w0, w19
|
|
bl List_update_data_list
|
|
b .L1762
|
|
.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
|
|
stp x21, x22, [sp, 32]
|
|
mov w0, 65535
|
|
cmp w19, w0
|
|
beq .L1766
|
|
adrp x20, .LANCHOR85
|
|
ubfiz x21, x19, 1, 16
|
|
ldr x1, [x20, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x1, x21]
|
|
cbnz w0, .L1767
|
|
mov w2, 0
|
|
mov w1, w19
|
|
adrp x0, .LC38
|
|
add x0, x0, :lo12:.LC38
|
|
bl printf
|
|
ldr x0, [x20, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x0, x21]
|
|
cbnz w0, .L1768
|
|
mov w2, 3786
|
|
adrp x1, .LANCHOR216
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR216
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1768:
|
|
ldr x0, [x20, #:lo12:.LANCHOR85]
|
|
adrp x6, .LANCHOR89
|
|
add x6, x6, :lo12:.LANCHOR89
|
|
mov w1, 32
|
|
strh w1, [x0, x21]
|
|
mov w1, w19
|
|
mov x0, x6
|
|
bl test_node_in_list
|
|
cbz w0, .L1769
|
|
adrp x22, .LANCHOR90
|
|
mov w1, w19
|
|
mov x0, x6
|
|
bl List_remove_node
|
|
ldrh w0, [x22, #:lo12:.LANCHOR90]
|
|
cbnz w0, .L1770
|
|
mov w2, 3792
|
|
adrp x1, .LANCHOR216
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR216
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1770:
|
|
ldrh w0, [x22, #:lo12:.LANCHOR90]
|
|
sub w0, w0, #1
|
|
strh w0, [x22, #:lo12:.LANCHOR90]
|
|
mov w0, w19
|
|
bl INSERT_DATA_LIST
|
|
ldr x0, [x20, #:lo12:.LANCHOR85]
|
|
mov w1, w19
|
|
ldrh w2, [x0, x21]
|
|
adrp x0, .LC39
|
|
add x0, x0, :lo12:.LC39
|
|
bl printf
|
|
.L1769:
|
|
mov w0, w19
|
|
bl FtlGcRefreshBlock
|
|
.L1773:
|
|
mov w20, 0
|
|
b .L1765
|
|
.L1767:
|
|
sub w0, w0, #1
|
|
strh w0, [x1, x21]
|
|
.L1766:
|
|
adrp x21, .LANCHOR136
|
|
mov w1, 65535
|
|
ldrh w0, [x21, #:lo12:.LANCHOR136]
|
|
cmp w0, w1
|
|
bne .L1772
|
|
strh w19, [x21, #:lo12:.LANCHOR136]
|
|
b .L1773
|
|
.L1772:
|
|
cmp w19, w0
|
|
beq .L1773
|
|
bl update_vpc_list
|
|
cmp w0, 0
|
|
adrp x1, .LANCHOR83
|
|
adrp x0, .LANCHOR84
|
|
strh w19, [x21, #:lo12:.LANCHOR136]
|
|
cset w20, ne
|
|
ldr x1, [x1, #:lo12:.LANCHOR83]
|
|
ldr x0, [x0, #:lo12:.LANCHOR84]
|
|
sub x0, x0, x1
|
|
mov x1, -6148914691236517206
|
|
asr x0, x0, 1
|
|
movk x1, 0xaaab, lsl 0
|
|
mul x0, x0, x1
|
|
adrp x1, .LANCHOR85
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
and x2, x0, 65535
|
|
ldrh w1, [x1, x2, lsl 1]
|
|
cbnz w1, .L1765
|
|
cmp w19, w0, uxth
|
|
beq .L1765
|
|
mov w2, 3816
|
|
adrp x1, .LANCHOR216
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR216
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1765:
|
|
mov w0, w20
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.size decrement_vpc_count, .-decrement_vpc_count
|
|
.section .text.FtlSlcSuperblockCheck,"ax",@progbits
|
|
.align 2
|
|
.global FtlSlcSuperblockCheck
|
|
.type FtlSlcSuperblockCheck, %function
|
|
FtlSlcSuperblockCheck:
|
|
ldrh w1, [x0, 4]
|
|
cbz w1, .L1790
|
|
stp x29, x30, [sp, -64]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w20, 65535
|
|
ldrh w1, [x0]
|
|
stp x21, x22, [sp, 32]
|
|
str x23, [sp, 48]
|
|
cmp w1, w20
|
|
beq .L1778
|
|
mov x19, x0
|
|
ldrb w0, [x0, 6]
|
|
adrp x22, .LANCHOR16
|
|
adrp x21, .LANCHOR123
|
|
add x0, x0, 8
|
|
add x23, x22, :lo12:.LANCHOR16
|
|
add x21, x21, :lo12:.LANCHOR123
|
|
ldrh w0, [x19, x0, lsl 1]
|
|
.L1782:
|
|
cmp w0, w20
|
|
beq .L1784
|
|
ldrb w0, [x19, 8]
|
|
cmp w0, 1
|
|
bne .L1785
|
|
ldrb w1, [x23]
|
|
cbnz w1, .L1785
|
|
ldrh w1, [x19, 2]
|
|
ldrh w1, [x21, x1, lsl 1]
|
|
cmp w1, w20
|
|
bne .L1785
|
|
ldrh w0, [x19, 4]
|
|
sub w0, w0, #1
|
|
strh w0, [x19, 4]
|
|
ldrh w0, [x19]
|
|
bl decrement_vpc_count
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L1784
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
.L1793:
|
|
strh w0, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
.L1778:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldr x23, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L1784:
|
|
ldrb w0, [x19, 6]
|
|
adrp x1, .LANCHOR38
|
|
add w0, w0, 1
|
|
ldrh w1, [x1, #:lo12:.LANCHOR38]
|
|
and w0, w0, 255
|
|
strb w0, [x19, 6]
|
|
cmp w1, w0
|
|
bne .L1783
|
|
ldrh w0, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
.L1783:
|
|
ldrb w0, [x19, 6]
|
|
add x0, x0, 8
|
|
ldrh w0, [x19, x0, lsl 1]
|
|
b .L1782
|
|
.L1785:
|
|
ldrb w1, [x22, #:lo12:.LANCHOR16]
|
|
cbz w1, .L1778
|
|
cmp w0, 1
|
|
bne .L1778
|
|
adrp x0, .LANCHOR53
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR53]
|
|
cmp w1, w0
|
|
bcc .L1778
|
|
ldrh w0, [x19]
|
|
adrp x1, .LANCHOR85
|
|
ldrh w3, [x19, 4]
|
|
ldr x2, [x1, #:lo12:.LANCHOR85]
|
|
lsl x0, x0, 1
|
|
ldrh w1, [x2, x0]
|
|
sub w1, w1, w3
|
|
strh w1, [x2, x0]
|
|
adrp x0, .LANCHOR52
|
|
strh wzr, [x19, 4]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
b .L1793
|
|
.L1790:
|
|
ret
|
|
.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
|
|
.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, -80]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w1, [x0]
|
|
mov w0, 65535
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
cmp w1, w0
|
|
str x25, [sp, 64]
|
|
bne .L1795
|
|
mov w2, 3700
|
|
adrp x1, .LANCHOR217
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR217
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1795:
|
|
adrp x20, .LANCHOR52
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR52]
|
|
cmp w1, w0
|
|
bne .L1796
|
|
mov w2, 3701
|
|
adrp x1, .LANCHOR217
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR217
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1796:
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L1797
|
|
mov w2, 3702
|
|
adrp x1, .LANCHOR217
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR217
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1797:
|
|
ldrb w0, [x19, 6]
|
|
adrp x21, .LANCHOR38
|
|
strb wzr, [x19, 10]
|
|
adrp x23, .LANCHOR16
|
|
add x0, x0, 8
|
|
adrp x24, .LANCHOR123
|
|
add x23, x23, :lo12:.LANCHOR16
|
|
add x24, x24, :lo12:.LANCHOR123
|
|
add x25, x21, :lo12:.LANCHOR38
|
|
ldrh w22, [x19, x0, lsl 1]
|
|
.L1798:
|
|
mov w2, 65535
|
|
cmp w22, w2
|
|
beq .L1799
|
|
ldrb w0, [x19, 8]
|
|
ldrh w1, [x19, 4]
|
|
cmp w0, 1
|
|
ldrh w0, [x19, 2]
|
|
bne .L1801
|
|
ldrb w3, [x23]
|
|
cbnz w3, .L1801
|
|
ldrh w3, [x24, w0, sxtw 1]
|
|
cmp w3, w2
|
|
bne .L1801
|
|
ldrh w0, [x19]
|
|
sub w1, w1, #1
|
|
strh w1, [x19, 4]
|
|
bl decrement_vpc_count
|
|
.L1799:
|
|
ldrb w0, [x19, 6]
|
|
ldrh w1, [x25]
|
|
add w0, w0, 1
|
|
and w0, w0, 255
|
|
strb w0, [x19, 6]
|
|
cmp w1, w0
|
|
bne .L1800
|
|
ldrh w0, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
.L1800:
|
|
ldrb w0, [x19, 6]
|
|
add x0, x0, 8
|
|
ldrh w22, [x19, x0, lsl 1]
|
|
b .L1798
|
|
.L1801:
|
|
adrp x23, .LANCHOR16
|
|
adrp x24, .LANCHOR123
|
|
orr w22, w0, w22, lsl 10
|
|
add x23, x23, :lo12:.LANCHOR16
|
|
add x24, x24, :lo12:.LANCHOR123
|
|
sub w1, w1, #1
|
|
strh w1, [x19, 4]
|
|
.L1802:
|
|
ldrb w0, [x19, 6]
|
|
mov w1, 65535
|
|
ldrh w3, [x21, #:lo12:.LANCHOR38]
|
|
.L1804:
|
|
add w0, w0, 1
|
|
and w0, w0, 255
|
|
cmp w0, w3
|
|
bne .L1803
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
mov w0, 0
|
|
.L1803:
|
|
add x2, x19, x0, sxtw 1
|
|
ldrh w2, [x2, 16]
|
|
cmp w2, w1
|
|
beq .L1804
|
|
strb w0, [x19, 6]
|
|
ldrb w0, [x19, 8]
|
|
cmp w0, 1
|
|
bne .L1805
|
|
ldrb w2, [x23]
|
|
ldrh w0, [x19, 2]
|
|
cbnz w2, .L1806
|
|
ldrh w0, [x24, w0, sxtw 1]
|
|
cmp w0, w1
|
|
bne .L1805
|
|
ldrh w0, [x19, 4]
|
|
cbz w0, .L1805
|
|
sub w0, w0, #1
|
|
strh w0, [x19, 4]
|
|
ldrh w0, [x19]
|
|
bl decrement_vpc_count
|
|
b .L1802
|
|
.L1806:
|
|
adrp x1, .LANCHOR53
|
|
ldrh w1, [x1, #:lo12:.LANCHOR53]
|
|
cmp w0, w1
|
|
bcc .L1805
|
|
ldrh w0, [x19]
|
|
adrp x1, .LANCHOR85
|
|
ldrh w3, [x19, 4]
|
|
ldr x2, [x1, #:lo12:.LANCHOR85]
|
|
lsl x0, x0, 1
|
|
ldrh w1, [x2, x0]
|
|
sub w1, w1, w3
|
|
strh w1, [x2, x0]
|
|
strh wzr, [x19, 4]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR52]
|
|
strh w0, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
.L1805:
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR52]
|
|
cmp w1, w0
|
|
bne .L1794
|
|
ldrh w0, [x19, 4]
|
|
cbz w0, .L1794
|
|
mov w2, 3752
|
|
adrp x1, .LANCHOR217
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR217
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1794:
|
|
mov w0, w22
|
|
ldr x25, [sp, 64]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.size get_new_active_ppa, .-get_new_active_ppa
|
|
.section .text.FtlVpcTblFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlVpcTblFlush
|
|
.type FtlVpcTblFlush, %function
|
|
FtlVpcTblFlush:
|
|
stp x29, x30, [sp, -128]!
|
|
adrp x0, .LANCHOR78
|
|
add x29, sp, 0
|
|
ldr w1, [x0, #:lo12:.LANCHOR78]
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
str x0, [x29, 112]
|
|
cbnz w1, .L1819
|
|
adrp x25, .LANCHOR195
|
|
adrp x27, .LANCHOR218
|
|
adrp x23, .LANCHOR189
|
|
adrp x20, .LANCHOR211
|
|
ldr x19, [x25, #:lo12:.LANCHOR195]
|
|
add x22, x20, :lo12:.LANCHOR211
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
add x1, x27, :lo12:.LANCHOR218
|
|
ldrh w2, [x27, #:lo12:.LANCHOR218]
|
|
mov w3, 19539
|
|
stp x0, x19, [x22, 8]
|
|
movk w3, 0x4654, lsl 16
|
|
strh w2, [x19, 2]
|
|
mov w2, -3932
|
|
strh w2, [x19]
|
|
adrp x24, .LANCHOR164
|
|
ldr w2, [x1, 8]
|
|
adrp x26, .LANCHOR57
|
|
ldrh w1, [x1, 6]
|
|
stp w2, wzr, [x19, 4]
|
|
adrp x2, .LANCHOR82
|
|
add x21, x2, :lo12:.LANCHOR82
|
|
str wzr, [x19, 12]
|
|
str w3, [x2, #:lo12:.LANCHOR82]
|
|
mov w2, 99
|
|
movk w2, 0x5000, lsl 16
|
|
strh w1, [x21, 8]
|
|
adrp x1, .LANCHOR45
|
|
str w2, [x21, 4]
|
|
adrp x2, .LANCHOR93
|
|
ldrh w1, [x1, #:lo12:.LANCHOR45]
|
|
strb w1, [x21, 10]
|
|
add x1, x2, :lo12:.LANCHOR93
|
|
ldrh w2, [x2, #:lo12:.LANCHOR93]
|
|
strh w2, [x21, 14]
|
|
ldrb w3, [x1, 6]
|
|
ldrh w2, [x1, 2]
|
|
ldrb w1, [x1, 8]
|
|
strb w1, [x21, 11]
|
|
orr w2, w3, w2, lsl 6
|
|
strh w2, [x21, 16]
|
|
adrp x2, .LANCHOR94
|
|
add x1, x2, :lo12:.LANCHOR94
|
|
ldrh w2, [x2, #:lo12:.LANCHOR94]
|
|
ldrb w3, [x1, 6]
|
|
strh w2, [x21, 18]
|
|
ldrh w2, [x1, 2]
|
|
ldrb w1, [x1, 8]
|
|
strb w1, [x21, 12]
|
|
orr w2, w3, w2, lsl 6
|
|
strh w2, [x21, 20]
|
|
adrp x2, .LANCHOR95
|
|
add x1, x2, :lo12:.LANCHOR95
|
|
ldrh w2, [x2, #:lo12:.LANCHOR95]
|
|
strh w2, [x21, 22]
|
|
ldrb w3, [x1, 6]
|
|
ldrh w2, [x1, 2]
|
|
ldrb w1, [x1, 8]
|
|
strb w1, [x21, 13]
|
|
adrp x1, .LANCHOR172
|
|
orr w2, w3, w2, lsl 6
|
|
strh w2, [x21, 24]
|
|
ldr w1, [x1, #:lo12:.LANCHOR172]
|
|
str w1, [x21, 32]
|
|
ldr w1, [x24, #:lo12:.LANCHOR164]
|
|
str w1, [x21, 40]
|
|
adrp x1, .LANCHOR165
|
|
ldrh w2, [x26, #:lo12:.LANCHOR57]
|
|
ldr w1, [x1, #:lo12:.LANCHOR165]
|
|
str w1, [x21, 36]
|
|
adrp x1, .LANCHOR115
|
|
ldrh w1, [x1, #:lo12:.LANCHOR115]
|
|
strh w1, [x21, 44]
|
|
adrp x1, .LANCHOR116
|
|
ldrh w1, [x1, #:lo12:.LANCHOR116]
|
|
strh w1, [x21, 46]
|
|
mov w1, 255
|
|
bl ftl_memset
|
|
ldr x0, [x22, 8]
|
|
mov x1, x21
|
|
mov w2, 48
|
|
adrp x21, .LANCHOR40
|
|
bl ftl_memcpy
|
|
adrp x1, .LANCHOR85
|
|
ldrh w2, [x21, #:lo12:.LANCHOR40]
|
|
ldr x0, [x22, 8]
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
lsl w2, w2, 1
|
|
add x0, x0, 48
|
|
bl ftl_memcpy
|
|
ldrh w0, [x21, #:lo12:.LANCHOR40]
|
|
adrp x1, .LANCHOR1
|
|
ldr x3, [x22, 8]
|
|
ldr x1, [x1, #:lo12:.LANCHOR1]
|
|
lsr w2, w0, 3
|
|
ubfiz x0, x0, 1, 16
|
|
add x0, x0, 51
|
|
add w2, w2, 4
|
|
and x0, x0, -4
|
|
add x0, x3, x0
|
|
bl ftl_memcpy
|
|
adrp x0, .LANCHOR69
|
|
str x26, [x29, 104]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR69]
|
|
cbz w0, .L1820
|
|
ldrh w0, [x21, #:lo12:.LANCHOR40]
|
|
adrp x1, .LANCHOR66
|
|
ldr x3, [x22, 8]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR66]
|
|
lsr w1, w0, 3
|
|
add w0, w1, w0, lsl 1
|
|
adrp x1, .LANCHOR134
|
|
add w0, w0, 52
|
|
lsl w2, w2, 2
|
|
ldr x1, [x1, #:lo12:.LANCHOR134]
|
|
and x0, x0, 65532
|
|
add x0, x3, x0
|
|
bl ftl_memcpy
|
|
.L1820:
|
|
mov w0, 0
|
|
bl FtlUpdateVaildLpn
|
|
adrp x0, .LANCHOR2
|
|
add x22, x20, :lo12:.LANCHOR211
|
|
add x0, x0, :lo12:.LANCHOR2
|
|
add x28, x27, :lo12:.LANCHOR218
|
|
str x0, [x29, 120]
|
|
adrp x27, .LANCHOR53
|
|
mov w21, 0
|
|
add x0, x27, :lo12:.LANCHOR53
|
|
mov w26, 65535
|
|
str x0, [x29, 96]
|
|
.L1821:
|
|
ldrh w2, [x28, 2]
|
|
ldrh w1, [x28]
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
str x0, [x22, 8]
|
|
ldr x0, [x25, #:lo12:.LANCHOR195]
|
|
str x0, [x22, 16]
|
|
orr w0, w2, w1, lsl 10
|
|
str w0, [x22, 4]
|
|
ldrh w0, [x27, #:lo12:.LANCHOR53]
|
|
sub w0, w0, #1
|
|
cmp w2, w0
|
|
blt .L1822
|
|
ldrh w26, [x28, 4]
|
|
strh wzr, [x28, 2]
|
|
strh w1, [x28, 4]
|
|
bl FtlFreeSysBlkQueueOut
|
|
ldr w1, [x24, #:lo12:.LANCHOR164]
|
|
str w1, [x28, 8]
|
|
add w2, w1, 1
|
|
str w2, [x24, #:lo12:.LANCHOR164]
|
|
ubfiz w2, w0, 10, 16
|
|
str w2, [x22, 4]
|
|
strh w0, [x28]
|
|
strh w0, [x19, 2]
|
|
str w1, [x19, 4]
|
|
.L1822:
|
|
ldr x0, [x29, 120]
|
|
ldrb w0, [x0]
|
|
cbz w0, .L1823
|
|
ldr x0, [x29, 104]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR57]
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
bl js_hash
|
|
str w0, [x19, 12]
|
|
.L1823:
|
|
mov w3, 1
|
|
mov x0, x22
|
|
mov w1, w3
|
|
mov w2, w3
|
|
bl FlashProgPages
|
|
ldrh w0, [x28, 2]
|
|
ldr w1, [x22]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x28, 2]
|
|
cmn w1, #1
|
|
bne .L1824
|
|
cmp w0, 1
|
|
bne .L1825
|
|
mov w2, 1375
|
|
adrp x1, .LANCHOR219
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR219
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1825:
|
|
ldrh w0, [x28, 2]
|
|
cmp w0, 1
|
|
bne .L1826
|
|
ldr x0, [x29, 96]
|
|
ldrh w0, [x0]
|
|
sub w0, w0, #1
|
|
strh w0, [x28, 2]
|
|
.L1826:
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
cmp w21, 3
|
|
bls .L1821
|
|
add x20, x20, :lo12:.LANCHOR211
|
|
mov w2, w21
|
|
adrp x0, .LC40
|
|
add x0, x0, :lo12:.LC40
|
|
ldr w1, [x20, 4]
|
|
bl printf
|
|
ldr x1, [x29, 112]
|
|
mov w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR78]
|
|
.L1819:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.L1824:
|
|
cmp w0, 1
|
|
beq .L1821
|
|
cmp w1, 256
|
|
beq .L1821
|
|
mov w0, 65535
|
|
cmp w26, w0
|
|
beq .L1819
|
|
mov w1, 1
|
|
mov w0, w26
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L1819
|
|
.size FtlVpcTblFlush, .-FtlVpcTblFlush
|
|
.section .text.FtlSuperblockPowerLostFix,"ax",@progbits
|
|
.align 2
|
|
.global FtlSuperblockPowerLostFix
|
|
.type FtlSuperblockPowerLostFix, %function
|
|
FtlSuperblockPowerLostFix:
|
|
stp x29, x30, [sp, -128]!
|
|
adrp x1, .LANCHOR78
|
|
add x29, sp, 0
|
|
str x23, [sp, 48]
|
|
ldr w23, [x1, #:lo12:.LANCHOR78]
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
cbnz w23, .L1842
|
|
adrp x1, .LANCHOR16
|
|
ldrb w1, [x1, #:lo12:.LANCHOR16]
|
|
cbz w1, .L1853
|
|
ldrb w1, [x0, 8]
|
|
cmp w1, 1
|
|
bne .L1853
|
|
ldrh w21, [x0, 4]
|
|
mov w23, w1
|
|
.L1844:
|
|
adrp x1, .LANCHOR195
|
|
mov x19, x0
|
|
mov w0, -1
|
|
str w0, [x29, 96]
|
|
ldr x20, [x1, #:lo12:.LANCHOR195]
|
|
adrp x0, .LANCHOR189
|
|
str x20, [x29, 88]
|
|
mov w1, -3
|
|
ldr x0, [x0, #:lo12:.LANCHOR189]
|
|
adrp x22, .LANCHOR165
|
|
str x0, [x29, 80]
|
|
add x22, x22, :lo12:.LANCHOR165
|
|
str w1, [x20, 8]
|
|
mov w1, -2
|
|
str w1, [x20, 12]
|
|
ldrh w1, [x19]
|
|
strh w1, [x20, 2]
|
|
strh wzr, [x20]
|
|
mov w1, 61589
|
|
str w1, [x0]
|
|
mov w1, 22136
|
|
movk w1, 0x1234, lsl 16
|
|
str w1, [x0, 4]
|
|
.L1845:
|
|
sub w21, w21, #1
|
|
cmn w21, #1
|
|
beq .L1848
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L1846
|
|
.L1848:
|
|
ldrh w0, [x19]
|
|
adrp x1, .LANCHOR85
|
|
ldrh w3, [x19, 4]
|
|
ldr x2, [x1, #:lo12:.LANCHOR85]
|
|
lsl x0, x0, 1
|
|
ldrh w1, [x2, x0]
|
|
sub w1, w1, w3
|
|
strh w1, [x2, x0]
|
|
adrp x0, .LANCHOR52
|
|
strb wzr, [x19, 6]
|
|
strh wzr, [x19, 4]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
strh w0, [x19, 2]
|
|
.L1842:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldr x23, [sp, 48]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.L1853:
|
|
mov w21, 12
|
|
b .L1844
|
|
.L1846:
|
|
mov x0, x19
|
|
bl get_new_active_ppa
|
|
str w0, [x29, 76]
|
|
cmn w0, #1
|
|
beq .L1848
|
|
ldr w0, [x22]
|
|
mov w3, 0
|
|
str w0, [x20, 4]
|
|
mov w2, w23
|
|
add w0, w0, 1
|
|
mov w1, 1
|
|
cmn w0, #1
|
|
csel w0, w0, wzr, ne
|
|
str w0, [x22]
|
|
add x0, x29, 72
|
|
bl FlashProgPages
|
|
ldrh w0, [x19]
|
|
bl decrement_vpc_count
|
|
b .L1845
|
|
.size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
|
|
.section .text.FtlLoadFactoryBbt,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadFactoryBbt
|
|
.type FtlLoadFactoryBbt, %function
|
|
FtlLoadFactoryBbt:
|
|
stp x29, x30, [sp, -112]!
|
|
adrp x2, .LANCHOR189
|
|
adrp x0, .LANCHOR211
|
|
add x1, x0, :lo12:.LANCHOR211
|
|
add x29, sp, 0
|
|
ldr x2, [x2, #:lo12:.LANCHOR189]
|
|
stp x21, x22, [sp, 32]
|
|
mov x22, x0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x26, .LANCHOR51
|
|
stp x27, x28, [sp, 80]
|
|
add x28, x26, :lo12:.LANCHOR51
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR76
|
|
stp x23, x24, [sp, 48]
|
|
add x20, x20, :lo12:.LANCHOR76
|
|
str x2, [x1, 8]
|
|
adrp x2, .LANCHOR195
|
|
adrp x23, .LANCHOR45
|
|
add x20, x20, 12
|
|
ldr x25, [x2, #:lo12:.LANCHOR195]
|
|
add x23, x23, :lo12:.LANCHOR45
|
|
mov w21, 0
|
|
mov w27, -1
|
|
str x25, [x1, 16]
|
|
.L1859:
|
|
ldrh w0, [x23]
|
|
cmp w21, w0
|
|
bcc .L1864
|
|
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
|
|
.L1864:
|
|
ldrh w19, [x26, #:lo12:.LANCHOR51]
|
|
add x24, x22, :lo12:.LANCHOR211
|
|
strh w27, [x20]
|
|
mov w3, 61664
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
.L1860:
|
|
ldrh w0, [x28]
|
|
sub w1, w0, #15
|
|
cmp w1, w19
|
|
bgt .L1862
|
|
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 .L1861
|
|
ldrh w0, [x25]
|
|
cmp w0, w3
|
|
bne .L1861
|
|
strh w19, [x20]
|
|
.L1862:
|
|
add w21, w21, 1
|
|
add x20, x20, 2
|
|
b .L1859
|
|
.L1861:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L1860
|
|
.size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
|
|
.section .text.FtlGetLastWrittenPage,"ax",@progbits
|
|
.align 2
|
|
.global FtlGetLastWrittenPage
|
|
.type FtlGetLastWrittenPage, %function
|
|
FtlGetLastWrittenPage:
|
|
stp x29, x30, [sp, -192]!
|
|
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 .L1870
|
|
adrp x1, .LANCHOR53
|
|
ldrh w19, [x1, #:lo12:.LANCHOR53]
|
|
.L1871:
|
|
sub w19, w19, #1
|
|
lsl w21, w0, 10
|
|
sxth w19, w19
|
|
add x1, x29, 128
|
|
orr w0, w19, w21
|
|
stp xzr, x1, [x29, 80]
|
|
str w0, [x29, 76]
|
|
mov w2, w23
|
|
mov w1, 1
|
|
add x0, x29, 72
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 128]
|
|
cmn w0, #1
|
|
bne .L1872
|
|
mov w22, 0
|
|
mov w24, 2
|
|
.L1873:
|
|
cmp w22, w19
|
|
ble .L1876
|
|
.L1872:
|
|
mov w0, w19
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 192
|
|
ret
|
|
.L1870:
|
|
adrp x1, .LANCHOR52
|
|
ldrh w19, [x1, #:lo12:.LANCHOR52]
|
|
b .L1871
|
|
.L1876:
|
|
add w20, w22, w19
|
|
mov w2, w23
|
|
mov w1, 1
|
|
sdiv w20, w20, w24
|
|
sxth w0, w20
|
|
orr w0, w0, w21
|
|
str w0, [x29, 76]
|
|
add x0, x29, 72
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 128]
|
|
cmn w0, #1
|
|
bne .L1874
|
|
ldr w0, [x29, 132]
|
|
cmn w0, #1
|
|
bne .L1874
|
|
ldr w0, [x29, 72]
|
|
cmn w0, #1
|
|
beq .L1874
|
|
sub w19, w20, #1
|
|
sxth w19, w19
|
|
b .L1873
|
|
.L1874:
|
|
add w20, w20, 1
|
|
sxth w22, w20
|
|
b .L1873
|
|
.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
|
|
.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, .LANCHOR189
|
|
stp x19, x20, [sp, 16]
|
|
adrp x24, .LANCHOR51
|
|
stp x21, x22, [sp, 32]
|
|
adrp x22, .LANCHOR211
|
|
add x20, x22, :lo12:.LANCHOR211
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
str x25, [sp, 64]
|
|
mov w25, 61649
|
|
str x0, [x20, 8]
|
|
adrp x0, .LANCHOR195
|
|
ldr x21, [x0, #:lo12:.LANCHOR195]
|
|
str x21, [x20, 16]
|
|
bl FtlBbtMemInit
|
|
ldrh w19, [x24, #:lo12:.LANCHOR51]
|
|
add x24, x24, :lo12:.LANCHOR51
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
.L1882:
|
|
ldrh w0, [x24]
|
|
sub w0, w0, #47
|
|
cmp w0, w19
|
|
bgt .L1885
|
|
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 .L1883
|
|
ldr w0, [x20, 4]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
add w0, w0, 1
|
|
str w0, [x20, 4]
|
|
mov x0, x20
|
|
bl FlashReadPages
|
|
.L1883:
|
|
ldr w0, [x20]
|
|
cmn w0, #1
|
|
beq .L1884
|
|
ldrh w0, [x21]
|
|
cmp w0, w25
|
|
bne .L1884
|
|
adrp x1, .LANCHOR76
|
|
add x0, x1, :lo12:.LANCHOR76
|
|
strh w19, [x1, #:lo12:.LANCHOR76]
|
|
ldr w1, [x21, 4]
|
|
str w1, [x0, 8]
|
|
ldrh w1, [x21, 8]
|
|
strh w1, [x0, 4]
|
|
.L1885:
|
|
adrp x19, .LANCHOR76
|
|
mov w0, 65535
|
|
add x20, x19, :lo12:.LANCHOR76
|
|
ldrh w1, [x19, #:lo12:.LANCHOR76]
|
|
cmp w1, w0
|
|
beq .L1899
|
|
ldrh w1, [x20, 4]
|
|
cmp w1, w0
|
|
beq .L1889
|
|
add x0, x22, :lo12:.LANCHOR211
|
|
lsl w1, w1, 10
|
|
mov w2, 1
|
|
str w1, [x0, 4]
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
ldr w0, [x22, #:lo12:.LANCHOR211]
|
|
cmn w0, #1
|
|
beq .L1889
|
|
ldrh w1, [x21]
|
|
mov w0, 61649
|
|
cmp w1, w0
|
|
bne .L1889
|
|
ldr w1, [x20, 8]
|
|
ldr w0, [x21, 4]
|
|
cmp w0, w1
|
|
bls .L1889
|
|
ldrh w1, [x20, 4]
|
|
str w0, [x20, 8]
|
|
ldrh w0, [x21, 8]
|
|
strh w1, [x19, #:lo12:.LANCHOR76]
|
|
strh w0, [x20, 4]
|
|
.L1889:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR76]
|
|
add x24, x19, :lo12:.LANCHOR76
|
|
mov w1, 1
|
|
mov w25, 61649
|
|
bl FtlGetLastWrittenPage
|
|
sxth w20, w0
|
|
add w0, w0, 1
|
|
strh w0, [x24, 2]
|
|
add x24, x22, :lo12:.LANCHOR211
|
|
.L1891:
|
|
tbz w20, #31, .L1894
|
|
mov w2, 339
|
|
adrp x1, .LANCHOR220
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR220
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1893:
|
|
add x0, x19, :lo12:.LANCHOR76
|
|
ldrh w1, [x21, 10]
|
|
strh w1, [x0, 6]
|
|
mov w1, 65535
|
|
ldrh w0, [x21, 12]
|
|
cmp w0, w1
|
|
beq .L1896
|
|
adrp x1, .LANCHOR37
|
|
ldr w2, [x1, #:lo12:.LANCHOR37]
|
|
cmp w0, w2
|
|
beq .L1896
|
|
adrp x1, .LANCHOR41
|
|
ldrh w1, [x1, #:lo12:.LANCHOR41]
|
|
lsr w1, w1, 2
|
|
cmp w2, w1
|
|
bcs .L1896
|
|
cmp w0, w1
|
|
bcs .L1896
|
|
bl FtlSysBlkNumInit
|
|
.L1896:
|
|
add x19, x19, :lo12:.LANCHOR76
|
|
adrp x21, .LANCHOR45
|
|
adrp x23, .LANCHOR126
|
|
add x19, x19, 32
|
|
add x21, x21, :lo12:.LANCHOR45
|
|
add x23, x23, :lo12:.LANCHOR126
|
|
add x22, x22, :lo12:.LANCHOR211
|
|
mov w20, 0
|
|
.L1897:
|
|
ldrh w0, [x21]
|
|
cmp w20, w0
|
|
bcc .L1898
|
|
mov w0, 0
|
|
.L1881:
|
|
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
|
|
.L1884:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L1882
|
|
.L1894:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR76]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
orr w0, w20, w0, lsl 10
|
|
str w0, [x24, 4]
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
str x0, [x24, 8]
|
|
mov x0, x24
|
|
bl FlashReadPages
|
|
ldr w0, [x24]
|
|
cmn w0, #1
|
|
beq .L1892
|
|
ldrh w0, [x21]
|
|
cmp w0, w25
|
|
beq .L1893
|
|
.L1892:
|
|
sub w20, w20, #1
|
|
sxth w20, w20
|
|
b .L1891
|
|
.L1898:
|
|
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 .L1897
|
|
.L1899:
|
|
mov w0, -1
|
|
b .L1881
|
|
.size FtlLoadBbt, .-FtlLoadBbt
|
|
.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, -112]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR53
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
stp x27, x28, [sp, 80]
|
|
ldr x20, [x0, 16]
|
|
ldr x26, [x0, 40]
|
|
bl ftl_free_no_use_map_blk
|
|
ldrh w1, [x19, 10]
|
|
ldrh w2, [x19, 8]
|
|
sub w1, w1, #4
|
|
cmp w2, w1
|
|
blt .L1912
|
|
ubfiz x0, x0, 1, 16
|
|
ldrh w21, [x20, x0]
|
|
cbz w21, .L1912
|
|
ldr w1, [x19, 52]
|
|
cbnz w1, .L1912
|
|
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, [x25, #:lo12:.LANCHOR53]
|
|
cmp w1, w0
|
|
bcc .L1913
|
|
mov x0, x19
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L1913:
|
|
adrp x22, .LANCHOR211
|
|
adrp x24, .LANCHOR221
|
|
mov x23, x22
|
|
add x27, x22, :lo12:.LANCHOR211
|
|
add x24, x24, :lo12:.LANCHOR221
|
|
mov w20, 0
|
|
.L1914:
|
|
ldrh w0, [x19, 6]
|
|
cmp w0, w20
|
|
bhi .L1920
|
|
mov w1, 1
|
|
mov w0, w21
|
|
bl FtlFreeSysBlkQueueIn
|
|
str wzr, [x19, 52]
|
|
.L1912:
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x25, #:lo12:.LANCHOR53]
|
|
cmp w1, w0
|
|
bcc .L1918
|
|
mov x0, x19
|
|
bl ftl_map_blk_alloc_new_blk
|
|
b .L1918
|
|
.L1920:
|
|
ubfiz x0, x20, 2, 16
|
|
add x1, x26, x0
|
|
str x1, [x29, 104]
|
|
ldr w1, [x26, x0]
|
|
cmp w21, w1, lsr 10
|
|
bne .L1915
|
|
adrp x2, .LANCHOR190
|
|
add x0, x22, :lo12:.LANCHOR211
|
|
ldr x2, [x2, #:lo12:.LANCHOR190]
|
|
str x2, [x0, 8]
|
|
adrp x2, .LANCHOR195
|
|
str w1, [x0, 4]
|
|
ldr x28, [x2, #:lo12:.LANCHOR195]
|
|
mov w2, 1
|
|
str x28, [x0, 16]
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
ldrh w0, [x28, 8]
|
|
cmp w0, w20
|
|
beq .L1916
|
|
mov w2, 752
|
|
mov x1, x24
|
|
adrp x0, .LC5
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1916:
|
|
ldr w0, [x27]
|
|
ldrh w2, [x28, 8]
|
|
cmn w0, #1
|
|
bne .L1917
|
|
.L1919:
|
|
ldr x0, [x29, 104]
|
|
add x23, x23, :lo12:.LANCHOR211
|
|
str wzr, [x0]
|
|
adrp x0, .LC41
|
|
add x0, x0, :lo12:.LC41
|
|
ldr w1, [x23, 4]
|
|
bl printf
|
|
adrp x0, .LANCHOR78
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR78]
|
|
.L1918:
|
|
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
|
|
.L1917:
|
|
cmp w2, w20
|
|
bne .L1919
|
|
ldrh w1, [x28]
|
|
ldrh w0, [x19, 4]
|
|
cmp w1, w0
|
|
bne .L1919
|
|
ldr x2, [x27, 8]
|
|
mov w1, w20
|
|
mov x0, x19
|
|
bl FtlMapWritePage
|
|
.L1915:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L1914
|
|
.size ftl_map_blk_gc, .-ftl_map_blk_gc
|
|
.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:
|
|
adrp x1, .LANCHOR78
|
|
ldr w1, [x1, #:lo12:.LANCHOR78]
|
|
cbnz w1, .L1940
|
|
stp x29, x30, [sp, -64]!
|
|
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]
|
|
cmp w0, w1
|
|
ldr x20, [x19, 16]
|
|
bne .L1927
|
|
ldrh w0, [x19, 8]
|
|
cbz w0, .L1928
|
|
mov w2, 793
|
|
adrp x1, .LANCHOR222
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR222
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1928:
|
|
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]
|
|
.L1926:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L1927:
|
|
ubfiz x0, x0, 1, 16
|
|
adrp x2, .LANCHOR195
|
|
adrp x21, .LANCHOR211
|
|
add x1, x21, :lo12:.LANCHOR211
|
|
adrp x24, .LANCHOR189
|
|
ldr x23, [x19, 40]
|
|
ldrh w22, [x20, x0]
|
|
ldrh w0, [x19, 2]
|
|
ldr x20, [x2, #:lo12:.LANCHOR195]
|
|
str x20, [x1, 16]
|
|
orr w0, w0, w22, lsl 10
|
|
str w0, [x1, 4]
|
|
ldr x0, [x24, #:lo12:.LANCHOR189]
|
|
str x0, [x1, 8]
|
|
ldr w1, [x19, 48]
|
|
str w1, [x20, 4]
|
|
mov w1, -1291
|
|
strh w1, [x20, 8]
|
|
ldrh w1, [x19, 4]
|
|
strh w1, [x20]
|
|
adrp x1, .LANCHOR53
|
|
strh w22, [x20, 2]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR53]
|
|
mov w1, 255
|
|
lsl w2, w2, 3
|
|
bl ftl_memset
|
|
ldrh w4, [x19, 6]
|
|
mov x1, 0
|
|
ldr x3, [x24, #:lo12:.LANCHOR189]
|
|
mov w0, 0
|
|
.L1929:
|
|
cmp w4, w1, uxth
|
|
bhi .L1931
|
|
adrp x0, .LANCHOR2
|
|
ldrb w0, [x0, #:lo12:.LANCHOR2]
|
|
cbz w0, .L1932
|
|
add x0, x21, :lo12:.LANCHOR211
|
|
adrp x1, .LANCHOR57
|
|
ldrh w1, [x1, #:lo12:.LANCHOR57]
|
|
ldr x0, [x0, 8]
|
|
bl js_hash
|
|
str w0, [x20, 12]
|
|
.L1932:
|
|
mov w2, 1
|
|
mov w3, 0
|
|
mov w1, w2
|
|
add x0, x21, :lo12:.LANCHOR211
|
|
bl FlashProgPages
|
|
ldrh w0, [x19, 2]
|
|
add w0, w0, 1
|
|
strh w0, [x19, 2]
|
|
mov x0, x19
|
|
bl ftl_map_blk_gc
|
|
b .L1926
|
|
.L1931:
|
|
ldr w2, [x23, x1, lsl 2]
|
|
cmp w22, w2, lsr 10
|
|
bne .L1930
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
ubfiz x2, x0, 1, 16
|
|
str w1, [x3, x2, lsl 2]
|
|
add x2, x2, 1
|
|
ldr w5, [x23, x1, lsl 2]
|
|
str w5, [x3, x2, lsl 2]
|
|
.L1930:
|
|
add x1, x1, 1
|
|
b .L1929
|
|
.L1940:
|
|
mov w0, 0
|
|
ret
|
|
.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 x19, x20, [sp, 16]
|
|
mov w19, 0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x26, .LANCHOR53
|
|
stp x27, x28, [sp, 80]
|
|
mov w25, w1
|
|
stp x21, x22, [sp, 32]
|
|
mov x27, x0
|
|
adrp x22, .LANCHOR211
|
|
stp x23, x24, [sp, 48]
|
|
mov x20, x22
|
|
add x23, x22, :lo12:.LANCHOR211
|
|
add x28, x26, :lo12:.LANCHOR53
|
|
str x2, [x29, 104]
|
|
.L1944:
|
|
adrp x1, .LANCHOR170
|
|
ldr w0, [x1, #:lo12:.LANCHOR170]
|
|
add w0, w0, 1
|
|
str w0, [x1, #:lo12:.LANCHOR170]
|
|
ldrh w0, [x26, #:lo12:.LANCHOR53]
|
|
ldrh w1, [x27, 2]
|
|
sub w0, w0, #1
|
|
cmp w1, w0
|
|
bge .L1945
|
|
ldrh w1, [x27]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L1946
|
|
.L1945:
|
|
mov x0, x27
|
|
bl Ftl_write_map_blk_to_last_page
|
|
.L1946:
|
|
adrp x21, .LANCHOR78
|
|
ldr w0, [x21, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L1961
|
|
ldrh w1, [x27]
|
|
ldr x0, [x27, 16]
|
|
ldrh w0, [x0, x1, lsl 1]
|
|
cbnz w0, .L1948
|
|
mov w2, 865
|
|
adrp x1, .LANCHOR223
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR223
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1948:
|
|
ldrh w1, [x27]
|
|
ldrh w0, [x27, 10]
|
|
cmp w1, w0
|
|
bcc .L1949
|
|
mov w2, 866
|
|
adrp x1, .LANCHOR223
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR223
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L1949:
|
|
ldrh w1, [x27]
|
|
add x3, x22, :lo12:.LANCHOR211
|
|
ldr x0, [x27, 16]
|
|
mov w2, 16
|
|
str x3, [x29, 96]
|
|
ldrh w24, [x0, x1, lsl 1]
|
|
mov w1, 0
|
|
ldrh w0, [x27, 2]
|
|
orr w0, w0, w24, lsl 10
|
|
str w0, [x3, 4]
|
|
ldr x0, [x29, 104]
|
|
str x0, [x3, 8]
|
|
adrp x0, .LANCHOR195
|
|
ldr x0, [x0, #:lo12:.LANCHOR195]
|
|
str x0, [x3, 16]
|
|
bl ftl_memset
|
|
ldr x3, [x29, 96]
|
|
ldr w0, [x27, 48]
|
|
ldr x6, [x3, 16]
|
|
str w0, [x6, 4]
|
|
ldrh w0, [x27, 4]
|
|
strh w0, [x6]
|
|
adrp x0, .LANCHOR2
|
|
strh w25, [x6, 8]
|
|
strh w24, [x6, 2]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR2]
|
|
cbz w0, .L1950
|
|
adrp x0, .LANCHOR57
|
|
ldrh w1, [x0, #:lo12:.LANCHOR57]
|
|
ldr x0, [x3, 8]
|
|
bl js_hash
|
|
str w0, [x6, 12]
|
|
.L1950:
|
|
mov w3, 1
|
|
mov x0, x23
|
|
mov w1, w3
|
|
mov w2, w3
|
|
bl FlashProgPages
|
|
ldrh w0, [x27, 2]
|
|
ldr w1, [x23]
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
strh w0, [x27, 2]
|
|
cmn w1, #1
|
|
bne .L1951
|
|
ldr w1, [x23, 4]
|
|
adrp x0, .LC42
|
|
add x0, x0, :lo12:.LC42
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
bl printf
|
|
ldrh w0, [x27, 2]
|
|
cmp w0, 2
|
|
bhi .L1952
|
|
ldrh w0, [x28]
|
|
sub w0, w0, #1
|
|
strh w0, [x27, 2]
|
|
.L1952:
|
|
cmp w19, 3
|
|
bls .L1944
|
|
add x20, x20, :lo12:.LANCHOR211
|
|
mov w2, w19
|
|
adrp x0, .LC43
|
|
add x0, x0, :lo12:.LC43
|
|
ldr w1, [x20, 4]
|
|
bl printf
|
|
mov w0, 1
|
|
str w0, [x21, #:lo12:.LANCHOR78]
|
|
.L1961:
|
|
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
|
|
.L1951:
|
|
cbz w1, .L1954
|
|
strh w24, [x27, 60]
|
|
cmp w0, 1
|
|
bne .L1955
|
|
.L1956:
|
|
str wzr, [x27, 56]
|
|
b .L1944
|
|
.L1955:
|
|
cmp w1, 256
|
|
.L1969:
|
|
beq .L1956
|
|
ldr w0, [x27, 56]
|
|
cbnz w0, .L1956
|
|
add x20, x20, :lo12:.LANCHOR211
|
|
ldr x0, [x27, 40]
|
|
ldr w1, [x20, 4]
|
|
str w1, [x0, w25, uxtw 2]
|
|
b .L1961
|
|
.L1954:
|
|
cmp w0, 1
|
|
b .L1969
|
|
.size FtlMapWritePage, .-FtlMapWritePage
|
|
.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, .LANCHOR98
|
|
ubfiz x19, x0, 4, 16
|
|
ldr x0, [x20, #:lo12:.LANCHOR98]
|
|
add x1, x0, x19
|
|
ldr x2, [x1, 8]
|
|
ldrh w1, [x0, x19]
|
|
adrp x0, .LANCHOR130
|
|
add x0, x0, :lo12:.LANCHOR130
|
|
bl FtlMapWritePage
|
|
ldr x0, [x20, #:lo12:.LANCHOR98]
|
|
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, .LANCHOR67
|
|
add x20, x20, :lo12:.LANCHOR67
|
|
str x21, [sp, 32]
|
|
mov w19, 0
|
|
adrp x21, .LANCHOR98
|
|
.L1973:
|
|
ldrh w0, [x20]
|
|
cmp w0, w19
|
|
bhi .L1975
|
|
mov w0, 0
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L1975:
|
|
ldr x1, [x21, #:lo12:.LANCHOR98]
|
|
ubfiz x0, x19, 4, 16
|
|
add x0, x1, x0
|
|
ldr w0, [x0, 4]
|
|
tbz w0, #31, .L1974
|
|
mov w0, w19
|
|
bl flush_l2p_region
|
|
.L1974:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L1973
|
|
.size l2p_flush, .-l2p_flush
|
|
.section .text.FtlVendorPartWrite,"ax",@progbits
|
|
.align 2
|
|
.global FtlVendorPartWrite
|
|
.type FtlVendorPartWrite, %function
|
|
FtlVendorPartWrite:
|
|
stp x29, x30, [sp, -176]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w20, w1
|
|
stp x21, x22, [sp, 32]
|
|
add w1, w0, w1
|
|
mov w22, w0
|
|
adrp x0, .LANCHOR50
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR50]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cmp w1, w0
|
|
bhi .L1985
|
|
adrp x0, .LANCHOR56
|
|
adrp x26, .LANCHOR55
|
|
adrp x27, .LANCHOR57
|
|
mov x25, x2
|
|
ldrh w21, [x0, #:lo12:.LANCHOR56]
|
|
add x26, x26, :lo12:.LANCHOR55
|
|
add x27, x27, :lo12:.LANCHOR57
|
|
mov w24, 0
|
|
lsr w21, w22, w21
|
|
.L1979:
|
|
cbnz w20, .L1984
|
|
.L1977:
|
|
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], 176
|
|
ret
|
|
.L1984:
|
|
ldrh w1, [x26]
|
|
adrp x0, .LANCHOR202
|
|
adrp x28, .LANCHOR191
|
|
ldr x0, [x0, #:lo12:.LANCHOR202]
|
|
udiv w23, w22, w1
|
|
ldr w2, [x0, w21, uxtw 2]
|
|
and w0, w20, 65535
|
|
msub w23, w23, w1, w22
|
|
sub w19, w1, w23
|
|
and w19, w19, 65535
|
|
cmp w20, w19
|
|
csel w19, w0, w19, cc
|
|
cbz w2, .L1981
|
|
cmp w19, w1
|
|
beq .L1981
|
|
ldr x0, [x28, #:lo12:.LANCHOR191]
|
|
str w2, [x29, 124]
|
|
mov w2, 1
|
|
stp x0, xzr, [x29, 128]
|
|
mov w1, w2
|
|
add x0, x29, 120
|
|
bl FlashReadPages
|
|
.L1982:
|
|
lsl w3, w19, 9
|
|
ldr x0, [x28, #:lo12:.LANCHOR191]
|
|
lsl w23, w23, 7
|
|
mov w2, w3
|
|
mov x1, x25
|
|
str w3, [x29, 108]
|
|
add x0, x0, x23, sxtw 2
|
|
bl ftl_memcpy
|
|
ldr x2, [x28, #:lo12:.LANCHOR191]
|
|
mov w1, w21
|
|
adrp x0, .LANCHOR224
|
|
add x0, x0, :lo12:.LANCHOR224
|
|
sub w20, w20, w19
|
|
add w22, w22, w19
|
|
add w21, w21, 1
|
|
bl FtlMapWritePage
|
|
cmn w0, #1
|
|
ldr w3, [x29, 108]
|
|
csinv w24, w24, wzr, ne
|
|
add x25, x25, x3, sxtw
|
|
b .L1979
|
|
.L1981:
|
|
ldrh w2, [x27]
|
|
mov w1, 0
|
|
ldr x0, [x28, #:lo12:.LANCHOR191]
|
|
bl ftl_memset
|
|
b .L1982
|
|
.L1985:
|
|
mov w24, -1
|
|
b .L1977
|
|
.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, .LANCHOR141
|
|
add x2, x0, :lo12:.LANCHOR141
|
|
ldr w1, [x0, #:lo12:.LANCHOR141]
|
|
mov w0, 19539
|
|
movk w0, 0x4654, lsl 16
|
|
cmp w1, w0
|
|
bne .L1990
|
|
mov w0, 99
|
|
mov w1, 1
|
|
movk w0, 0x5000, lsl 16
|
|
str w0, [x2, 4]
|
|
adrp x0, .LANCHOR225
|
|
ldr w0, [x0, #:lo12:.LANCHOR225]
|
|
str w0, [x2, 88]
|
|
adrp x0, .LANCHOR226
|
|
ldr w0, [x0, #:lo12:.LANCHOR226]
|
|
str w0, [x2, 92]
|
|
adrp x0, .LANCHOR166
|
|
ldr w0, [x0, #:lo12:.LANCHOR166]
|
|
str w0, [x2, 8]
|
|
adrp x0, .LANCHOR167
|
|
ldr w0, [x0, #:lo12:.LANCHOR167]
|
|
str w0, [x2, 12]
|
|
adrp x0, .LANCHOR171
|
|
ldr w0, [x0, #:lo12:.LANCHOR171]
|
|
str w0, [x2, 16]
|
|
adrp x0, .LANCHOR170
|
|
ldr w0, [x0, #:lo12:.LANCHOR170]
|
|
str w0, [x2, 20]
|
|
adrp x0, .LANCHOR173
|
|
ldr w0, [x0, #:lo12:.LANCHOR173]
|
|
str w0, [x2, 28]
|
|
adrp x0, .LANCHOR81
|
|
ldr w0, [x0, #:lo12:.LANCHOR81]
|
|
str w0, [x2, 32]
|
|
adrp x0, .LANCHOR168
|
|
ldr w0, [x0, #:lo12:.LANCHOR168]
|
|
str w0, [x2, 36]
|
|
adrp x0, .LANCHOR169
|
|
ldr w0, [x0, #:lo12:.LANCHOR169]
|
|
str w0, [x2, 40]
|
|
adrp x0, .LANCHOR174
|
|
ldr w0, [x0, #:lo12:.LANCHOR174]
|
|
str w0, [x2, 44]
|
|
adrp x0, .LANCHOR175
|
|
ldr w0, [x0, #:lo12:.LANCHOR175]
|
|
str w0, [x2, 48]
|
|
adrp x0, .LANCHOR163
|
|
ldr w0, [x0, #:lo12:.LANCHOR163]
|
|
str w0, [x2, 60]
|
|
adrp x0, .LANCHOR162
|
|
ldr w0, [x0, #:lo12:.LANCHOR162]
|
|
str w0, [x2, 64]
|
|
mov w0, 0
|
|
b FtlVendorPartWrite
|
|
.L1990:
|
|
ret
|
|
.size Ftl_save_ext_data, .-Ftl_save_ext_data
|
|
.section .text.FtlEctTblFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlEctTblFlush
|
|
.type FtlEctTblFlush, %function
|
|
FtlEctTblFlush:
|
|
adrp x1, .LANCHOR104
|
|
ldr w1, [x1, #:lo12:.LANCHOR104]
|
|
cbz w1, .L1997
|
|
adrp x1, .LANCHOR175
|
|
mov w2, 4
|
|
ldr w1, [x1, #:lo12:.LANCHOR175]
|
|
cmp w1, 39
|
|
mov w1, 32
|
|
csel w1, w1, w2, hi
|
|
.L1993:
|
|
adrp x3, .LANCHOR227
|
|
ldrh w2, [x3, #:lo12:.LANCHOR227]
|
|
cmp w2, 31
|
|
bhi .L1994
|
|
add w2, w2, 1
|
|
mov w1, 1
|
|
strh w2, [x3, #:lo12:.LANCHOR227]
|
|
.L1994:
|
|
adrp x2, .LANCHOR199
|
|
cbnz w0, .L1995
|
|
ldr x0, [x2, #:lo12:.LANCHOR199]
|
|
ldr w3, [x0, 20]
|
|
ldr w0, [x0, 16]
|
|
add w1, w1, w3
|
|
cmp w0, w1
|
|
bcc .L2000
|
|
.L1995:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
ldr x2, [x2, #:lo12:.LANCHOR199]
|
|
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, .LANCHOR198
|
|
ldrh w1, [x0, #:lo12:.LANCHOR198]
|
|
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
|
|
.L1997:
|
|
mov w1, 32
|
|
b .L1993
|
|
.L2000:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlEctTblFlush, .-FtlEctTblFlush
|
|
.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]
|
|
mov x19, x0
|
|
ldrh w20, [x0]
|
|
adrp x0, .LANCHOR40
|
|
str x21, [sp, 32]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR40]
|
|
cmp w0, w20
|
|
bcs .L2003
|
|
mov w2, 3650
|
|
adrp x1, .LANCHOR228
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR228
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2003:
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L2004
|
|
mov w0, 65535
|
|
cmp w20, w0
|
|
beq .L2005
|
|
adrp x1, .LANCHOR85
|
|
ubfiz x0, x20, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x1, x0]
|
|
cbz w0, .L2006
|
|
mov w0, w20
|
|
bl INSERT_DATA_LIST
|
|
.L2005:
|
|
strb wzr, [x19, 8]
|
|
adrp x0, .LANCHOR94
|
|
add x0, x0, :lo12:.LANCHOR94
|
|
cmp x19, x0
|
|
beq .L2007
|
|
adrp x0, .LANCHOR44
|
|
ldrh w1, [x0, #:lo12:.LANCHOR44]
|
|
cmp w1, 1
|
|
beq .L2007
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2008
|
|
.L2007:
|
|
mov w0, 1
|
|
strb w0, [x19, 8]
|
|
.L2009:
|
|
adrp x1, .LANCHOR136
|
|
mov w2, 65535
|
|
mov x21, x1
|
|
ldrh w0, [x1, #:lo12:.LANCHOR136]
|
|
cmp w0, w2
|
|
beq .L2014
|
|
cmp w20, w0
|
|
bne .L2015
|
|
adrp x2, .LANCHOR85
|
|
ubfiz x1, x0, 1, 16
|
|
ldr x2, [x2, #:lo12:.LANCHOR85]
|
|
ldrh w1, [x2, x1]
|
|
cbz w1, .L2016
|
|
.L2015:
|
|
bl update_vpc_list
|
|
.L2016:
|
|
mov w0, -1
|
|
strh w0, [x21, #:lo12:.LANCHOR136]
|
|
.L2014:
|
|
mov x0, x19
|
|
bl allocate_data_superblock
|
|
bl l2p_flush
|
|
mov w0, 0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L2004:
|
|
mov w0, 0
|
|
ldr x21, [sp, 32]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L2006:
|
|
mov w0, w20
|
|
bl INSERT_FREE_LIST
|
|
b .L2005
|
|
.L2008:
|
|
adrp x0, .LANCHOR93
|
|
add x2, x0, :lo12:.LANCHOR93
|
|
cmp x19, x2
|
|
bne .L2009
|
|
cmp w1, 3
|
|
beq .L2011
|
|
adrp x1, .LANCHOR163
|
|
ldr w1, [x1, #:lo12:.LANCHOR163]
|
|
cmp w1, 1
|
|
bne .L2012
|
|
.L2011:
|
|
add x1, x0, :lo12:.LANCHOR93
|
|
mov w2, 1
|
|
strb w2, [x1, 8]
|
|
.L2012:
|
|
adrp x1, .LANCHOR104
|
|
ldr w1, [x1, #:lo12:.LANCHOR104]
|
|
cbz w1, .L2009
|
|
adrp x1, .LANCHOR175
|
|
ldr w1, [x1, #:lo12:.LANCHOR175]
|
|
cmp w1, 39
|
|
bhi .L2009
|
|
add x0, x0, :lo12:.LANCHOR93
|
|
mov w1, 1
|
|
strb w1, [x0, 8]
|
|
b .L2009
|
|
.size allocate_new_data_superblock, .-allocate_new_data_superblock
|
|
.section .text.FtlVendorPartRead,"ax",@progbits
|
|
.align 2
|
|
.global FtlVendorPartRead
|
|
.type FtlVendorPartRead, %function
|
|
FtlVendorPartRead:
|
|
stp x29, x30, [sp, -176]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, w0
|
|
mov w21, w1
|
|
add w1, w0, w1
|
|
adrp x0, .LANCHOR50
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR50]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cmp w1, w0
|
|
bhi .L2039
|
|
adrp x0, .LANCHOR56
|
|
adrp x26, .LANCHOR191
|
|
mov x25, x2
|
|
mov x28, x26
|
|
ldrh w20, [x0, #:lo12:.LANCHOR56]
|
|
mov w24, 0
|
|
adrp x0, .LANCHOR55
|
|
add x0, x0, :lo12:.LANCHOR55
|
|
str x0, [x29, 104]
|
|
lsr w20, w22, w20
|
|
.L2032:
|
|
cbnz w21, .L2038
|
|
.L2030:
|
|
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], 176
|
|
ret
|
|
.L2038:
|
|
adrp x0, .LANCHOR202
|
|
ldr x0, [x0, #:lo12:.LANCHOR202]
|
|
ldr w3, [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 w27, w19, 9
|
|
cbz w3, .L2034
|
|
ldr x0, [x26, #:lo12:.LANCHOR191]
|
|
mov w2, 1
|
|
str w3, [x29, 100]
|
|
mov w1, w2
|
|
str w3, [x29, 124]
|
|
stp x0, xzr, [x29, 128]
|
|
add x0, x29, 120
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 120]
|
|
ldr w3, [x29, 100]
|
|
cmn w0, #1
|
|
adrp x0, .LANCHOR211
|
|
csinv w24, w24, wzr, ne
|
|
ldr w0, [x0, #:lo12:.LANCHOR211]
|
|
cmp w0, 256
|
|
bne .L2036
|
|
mov w2, w3
|
|
mov w1, w20
|
|
adrp x0, .LC44
|
|
add x0, x0, :lo12:.LC44
|
|
bl printf
|
|
ldr x2, [x26, #:lo12:.LANCHOR191]
|
|
adrp x0, .LANCHOR224
|
|
mov w1, w20
|
|
add x0, x0, :lo12:.LANCHOR224
|
|
bl FtlMapWritePage
|
|
.L2036:
|
|
ldr x1, [x28, #:lo12:.LANCHOR191]
|
|
lsl w23, w23, 7
|
|
mov w2, w27
|
|
mov x0, x25
|
|
add x1, x1, x23, sxtw 2
|
|
bl ftl_memcpy
|
|
.L2037:
|
|
add w20, w20, 1
|
|
sub w21, w21, w19
|
|
add w22, w22, w19
|
|
add x25, x25, x27, sxtw
|
|
b .L2032
|
|
.L2034:
|
|
mov w2, w27
|
|
mov w1, 0
|
|
mov x0, x25
|
|
bl ftl_memset
|
|
b .L2037
|
|
.L2039:
|
|
mov w24, -1
|
|
b .L2030
|
|
.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, .LANCHOR199
|
|
adrp x20, .LANCHOR198
|
|
ldr x2, [x19, #:lo12:.LANCHOR199]
|
|
ldrh w1, [x20, #:lo12:.LANCHOR198]
|
|
bl FtlVendorPartRead
|
|
ldr x0, [x19, #:lo12:.LANCHOR199]
|
|
ldr w1, [x0]
|
|
mov w0, 17221
|
|
movk w0, 0x4254, lsl 16
|
|
cmp w1, w0
|
|
beq .L2042
|
|
adrp x1, .LC45
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC45
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
ldr x0, [x19, #:lo12:.LANCHOR199]
|
|
mov w1, 0
|
|
ldrh w2, [x20, #:lo12:.LANCHOR198]
|
|
lsl w2, w2, 9
|
|
bl ftl_memset
|
|
.L2042:
|
|
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, .LANCHOR141
|
|
str x21, [sp, 32]
|
|
add x21, x19, :lo12:.LANCHOR141
|
|
mov x2, x21
|
|
bl FtlVendorPartRead
|
|
ldr w0, [x19, #:lo12:.LANCHOR141]
|
|
mov w20, 19539
|
|
movk w20, 0x4654, lsl 16
|
|
cmp w0, w20
|
|
beq .L2045
|
|
mov w2, 512
|
|
mov w1, 0
|
|
mov x0, x21
|
|
bl ftl_memset
|
|
str w20, [x19, #:lo12:.LANCHOR141]
|
|
.L2045:
|
|
ldr w1, [x19, #:lo12:.LANCHOR141]
|
|
add x0, x19, :lo12:.LANCHOR141
|
|
cmp w1, w20
|
|
adrp x20, .LANCHOR173
|
|
bne .L2046
|
|
adrp x1, .LANCHOR225
|
|
ldr w2, [x0, 88]
|
|
str w2, [x1, #:lo12:.LANCHOR225]
|
|
adrp x1, .LANCHOR226
|
|
ldr w2, [x0, 92]
|
|
str w2, [x1, #:lo12:.LANCHOR226]
|
|
adrp x1, .LANCHOR166
|
|
ldr w2, [x0, 8]
|
|
str w2, [x1, #:lo12:.LANCHOR166]
|
|
adrp x1, .LANCHOR167
|
|
ldr w2, [x0, 12]
|
|
str w2, [x1, #:lo12:.LANCHOR167]
|
|
adrp x1, .LANCHOR171
|
|
ldr w2, [x0, 16]
|
|
str w2, [x1, #:lo12:.LANCHOR171]
|
|
adrp x1, .LANCHOR170
|
|
ldr w2, [x0, 20]
|
|
str w2, [x1, #:lo12:.LANCHOR170]
|
|
ldp w1, w2, [x0, 28]
|
|
str w1, [x20, #:lo12:.LANCHOR173]
|
|
adrp x1, .LANCHOR81
|
|
str w2, [x1, #:lo12:.LANCHOR81]
|
|
adrp x1, .LANCHOR168
|
|
ldr w2, [x0, 36]
|
|
str w2, [x1, #:lo12:.LANCHOR168]
|
|
adrp x1, .LANCHOR169
|
|
ldr w2, [x0, 40]
|
|
str w2, [x1, #:lo12:.LANCHOR169]
|
|
adrp x1, .LANCHOR174
|
|
ldr w2, [x0, 44]
|
|
str w2, [x1, #:lo12:.LANCHOR174]
|
|
adrp x1, .LANCHOR175
|
|
ldr w2, [x0, 48]
|
|
str w2, [x1, #:lo12:.LANCHOR175]
|
|
ldr w1, [x0, 60]
|
|
adrp x0, .LANCHOR163
|
|
str w1, [x0, #:lo12:.LANCHOR163]
|
|
.L2046:
|
|
add x19, x19, :lo12:.LANCHOR141
|
|
adrp x0, .LANCHOR162
|
|
str wzr, [x0, #:lo12:.LANCHOR162]
|
|
mov w0, 34661
|
|
ldr w1, [x19, 68]
|
|
movk w0, 0x1234, lsl 16
|
|
cmp w1, w0
|
|
bne .L2047
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2048
|
|
str wzr, [x19, 68]
|
|
bl Ftl_save_ext_data
|
|
.L2047:
|
|
adrp x1, .LANCHOR172
|
|
adrp x0, .LANCHOR48
|
|
ldr x21, [sp, 32]
|
|
ldr w2, [x1, #:lo12:.LANCHOR172]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR48]
|
|
ldr w1, [x20, #:lo12:.LANCHOR173]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
madd w0, w0, w2, w1
|
|
adrp x1, .LANCHOR40
|
|
ldrh w1, [x1, #:lo12:.LANCHOR40]
|
|
udiv w0, w0, w1
|
|
adrp x1, .LANCHOR214
|
|
str w0, [x1, #:lo12:.LANCHOR214]
|
|
ret
|
|
.L2048:
|
|
adrp x0, .LANCHOR104
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR104]
|
|
adrp x1, .LC46
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC46
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
b .L2047
|
|
.size Ftl_load_ext_data, .-Ftl_load_ext_data
|
|
.section .text.FtlMapBlkWriteDumpData,"ax",@progbits
|
|
.align 2
|
|
.global FtlMapBlkWriteDumpData
|
|
.type FtlMapBlkWriteDumpData, %function
|
|
FtlMapBlkWriteDumpData:
|
|
ldr w1, [x0, 56]
|
|
cbz w1, .L2064
|
|
stp x29, x30, [sp, -80]!
|
|
adrp x1, .LANCHOR78
|
|
add x29, sp, 0
|
|
ldr w1, [x1, #:lo12:.LANCHOR78]
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w20, [x0, 6]
|
|
str x25, [sp, 64]
|
|
str wzr, [x0, 56]
|
|
ldr x25, [x0, 40]
|
|
cbnz w1, .L2050
|
|
mov x19, x0
|
|
adrp x0, .LANCHOR190
|
|
adrp x23, .LANCHOR211
|
|
add x21, x23, :lo12:.LANCHOR211
|
|
ldr x0, [x0, #:lo12:.LANCHOR190]
|
|
mov x22, x23
|
|
str x0, [x21, 8]
|
|
adrp x0, .LANCHOR195
|
|
ldr x24, [x0, #:lo12:.LANCHOR195]
|
|
ldrh w0, [x19, 2]
|
|
str x24, [x21, 16]
|
|
cbz w0, .L2054
|
|
adrp x1, .LANCHOR53
|
|
ldrh w1, [x1, #:lo12:.LANCHOR53]
|
|
sub w1, w1, #1
|
|
cmp w0, w1
|
|
bge .L2054
|
|
ldrh w1, [x19]
|
|
mov w2, 65535
|
|
cmp w1, w2
|
|
beq .L2054
|
|
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:.LANCHOR211]
|
|
cmn w0, #1
|
|
beq .L2054
|
|
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 .L2054
|
|
ldr x2, [x21, 8]
|
|
.L2067:
|
|
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
|
|
.L2054:
|
|
sub w20, w20, #1
|
|
and w20, w20, 65535
|
|
ubfiz x0, x20, 2, 16
|
|
ldr w1, [x25, x0]
|
|
add x0, x22, :lo12:.LANCHOR211
|
|
str w1, [x0, 4]
|
|
cbz w1, .L2055
|
|
mov w2, 1
|
|
mov w1, w2
|
|
bl FlashReadPages
|
|
.L2056:
|
|
add x22, x22, :lo12:.LANCHOR211
|
|
mov w1, w20
|
|
ldr x2, [x22, 8]
|
|
b .L2067
|
|
.L2055:
|
|
adrp x1, .LANCHOR57
|
|
ldr x0, [x0, 8]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR57]
|
|
mov w1, 255
|
|
bl ftl_memset
|
|
b .L2056
|
|
.L2050:
|
|
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
|
|
.L2064:
|
|
ret
|
|
.size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
|
|
.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, .LANCHOR133
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR64
|
|
ldr x0, [x25, #:lo12:.LANCHOR133]
|
|
adrp x22, .LANCHOR201
|
|
ldr w2, [x21, #:lo12:.LANCHOR64]
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR131
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR70
|
|
stp x27, x28, [sp, 80]
|
|
adrp x27, .LANCHOR132
|
|
lsl w2, w2, 2
|
|
strh wzr, [x20, #:lo12:.LANCHOR131]
|
|
strh wzr, [x23, #:lo12:.LANCHOR70]
|
|
bl ftl_memset
|
|
ldr x0, [x27, #:lo12:.LANCHOR132]
|
|
mov w1, 0
|
|
ldr w2, [x21, #:lo12:.LANCHOR64]
|
|
adrp x19, .LANCHOR61
|
|
adrp x28, .LANCHOR71
|
|
adrp x24, .LANCHOR218
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldr x0, [x22, #:lo12:.LANCHOR201]
|
|
mov w1, 0
|
|
ldrh w2, [x19, #:lo12:.LANCHOR61]
|
|
lsl w2, w2, 2
|
|
bl ftl_memset
|
|
ldr x0, [x28, #:lo12:.LANCHOR71]
|
|
mov w1, 0
|
|
ldrh w2, [x19, #:lo12:.LANCHOR61]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
mov w2, 16
|
|
mov w1, 255
|
|
add x0, x24, :lo12:.LANCHOR218
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR40
|
|
stp x22, x25, [x29, 144]
|
|
str x27, [x29, 160]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR40]
|
|
str w0, [x29, 172]
|
|
adrp x0, .LANCHOR41
|
|
add x0, x0, :lo12:.LANCHOR41
|
|
str x0, [x29, 120]
|
|
adrp x0, .LANCHOR164
|
|
add x0, x0, :lo12:.LANCHOR164
|
|
str x0, [x29, 112]
|
|
.L2069:
|
|
ldr x0, [x29, 120]
|
|
ldr w1, [x29, 172]
|
|
ldrh w0, [x0]
|
|
cmp w0, w1
|
|
bls .L2110
|
|
adrp x0, .LANCHOR38
|
|
adrp x25, .LANCHOR186
|
|
adrp x6, .LANCHOR47
|
|
mov x5, 0
|
|
ldrh w13, [x0, #:lo12:.LANCHOR38]
|
|
adrp x0, .LANCHOR107
|
|
ldr x7, [x25, #:lo12:.LANCHOR186]
|
|
mov w22, 0
|
|
ldr x12, [x0, #:lo12:.LANCHOR107]
|
|
adrp x0, .LANCHOR108
|
|
add x6, x6, :lo12:.LANCHOR47
|
|
mov w8, 56
|
|
ldr x11, [x0, #:lo12:.LANCHOR108]
|
|
adrp x0, .LANCHOR58
|
|
ldrh w10, [x0, #:lo12:.LANCHOR58]
|
|
b .L2111
|
|
.L2071:
|
|
ldrh w1, [x29, 172]
|
|
ldrb w0, [x6, x5]
|
|
bl V2P_block
|
|
and w4, w0, 65535
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L2070
|
|
umaddl x1, w22, w8, x7
|
|
lsl w4, w4, 10
|
|
mul w0, w22, w10
|
|
add w22, w22, 1
|
|
and w22, w22, 65535
|
|
asr w0, w0, 2
|
|
str w4, [x1, 4]
|
|
add x0, x11, x0, sxtw 2
|
|
stp x12, x0, [x1, 8]
|
|
.L2070:
|
|
add x5, x5, 1
|
|
.L2111:
|
|
cmp w13, w5, uxth
|
|
bhi .L2071
|
|
cbnz w22, .L2072
|
|
.L2109:
|
|
ldr w0, [x29, 172]
|
|
add w26, w0, 1
|
|
and w0, w26, 65535
|
|
str w0, [x29, 172]
|
|
b .L2069
|
|
.L2072:
|
|
mov w1, w22
|
|
mov w2, 1
|
|
mov x0, x7
|
|
bl FlashReadPages
|
|
mov w0, 56
|
|
umull x0, w22, w0
|
|
mov x22, 0
|
|
str x0, [x29, 128]
|
|
adrp x0, .LANCHOR229
|
|
add x0, x0, :lo12:.LANCHOR229
|
|
str x0, [x29, 136]
|
|
.L2108:
|
|
ldr x0, [x25, #:lo12:.LANCHOR186]
|
|
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 .L2075
|
|
mov w5, 16
|
|
mov w7, 65535
|
|
.L2077:
|
|
ldr x0, [x25, #:lo12:.LANCHOR186]
|
|
add x6, x25, :lo12:.LANCHOR186
|
|
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 .L2074
|
|
ldr x0, [x6]
|
|
mov w1, -1
|
|
str w1, [x0, x22]
|
|
ldr x0, [x6]
|
|
ldr w0, [x0, x22]
|
|
cmp w0, w1
|
|
beq .L2147
|
|
.L2075:
|
|
adrp x0, .LANCHOR164
|
|
ldr w1, [x0, #:lo12:.LANCHOR164]
|
|
ldr w0, [x27, 4]
|
|
cmn w1, #1
|
|
beq .L2078
|
|
cmp w1, w0
|
|
bhi .L2079
|
|
.L2078:
|
|
cmn w0, #1
|
|
beq .L2079
|
|
ldr x2, [x29, 112]
|
|
add w1, w0, 1
|
|
str w1, [x2]
|
|
.L2079:
|
|
ldrh w1, [x27]
|
|
mov w2, 61604
|
|
cmp w1, w2
|
|
beq .L2081
|
|
bhi .L2082
|
|
mov w0, 61574
|
|
cmp w1, w0
|
|
beq .L2083
|
|
.L2080:
|
|
ldr x0, [x29, 128]
|
|
add x22, x22, 56
|
|
cmp x0, x22
|
|
bne .L2108
|
|
b .L2109
|
|
.L2074:
|
|
ldr x0, [x25, #:lo12:.LANCHOR186]
|
|
ldr w0, [x0, x22]
|
|
cmn w0, #1
|
|
bne .L2075
|
|
sub w5, w5, #1
|
|
ands w5, w5, 65535
|
|
bne .L2077
|
|
.L2147:
|
|
mov w1, 0
|
|
mov w0, w26
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L2080
|
|
.L2082:
|
|
mov w0, 61634
|
|
cmp w1, w0
|
|
beq .L2084
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
beq .L2147
|
|
b .L2080
|
|
.L2084:
|
|
ldrh w1, [x20, #:lo12:.LANCHOR131]
|
|
ldr w0, [x21, #:lo12:.LANCHOR64]
|
|
cmp w1, w0
|
|
bls .L2086
|
|
ldr x1, [x29, 136]
|
|
mov w2, 1469
|
|
adrp x0, .LC5
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2086:
|
|
ldr w6, [x21, #:lo12:.LANCHOR64]
|
|
ldr x3, [x29, 152]
|
|
ldrh w1, [x20, #:lo12:.LANCHOR131]
|
|
and w2, w6, 65535
|
|
sub w0, w2, #1
|
|
sub w2, w2, w1
|
|
sxth x0, w0
|
|
sub w2, w2, #1
|
|
ldr x5, [x3, #:lo12:.LANCHOR133]
|
|
sxth w2, w2
|
|
.L2087:
|
|
cmp w0, w2
|
|
bgt .L2093
|
|
tbz w0, #31, .L2128
|
|
b .L2080
|
|
.L2093:
|
|
sxtw x8, w0
|
|
ldr w11, [x27, 4]
|
|
lsl x7, x8, 2
|
|
add x10, x5, x7
|
|
ldr w7, [x5, x7]
|
|
cmp w11, w7
|
|
bls .L2088
|
|
ldr w2, [x5]
|
|
cbnz w2, .L2089
|
|
cmp w6, w1
|
|
beq .L2089
|
|
add w1, w1, 1
|
|
strh w1, [x20, #:lo12:.LANCHOR131]
|
|
.L2089:
|
|
ldr x1, [x29, 160]
|
|
ldr x6, [x1, #:lo12:.LANCHOR132]
|
|
mov w1, 0
|
|
.L2090:
|
|
cmp w1, w0
|
|
bne .L2091
|
|
ldr w1, [x27, 4]
|
|
str w1, [x10]
|
|
strh w26, [x6, x8, lsl 1]
|
|
tbnz w0, #31, .L2080
|
|
ldrh w1, [x20, #:lo12:.LANCHOR131]
|
|
ldr w2, [x21, #:lo12:.LANCHOR64]
|
|
sub w2, w2, w1
|
|
sub w2, w2, #1
|
|
cmp w0, w2, sxth
|
|
bgt .L2080
|
|
.L2128:
|
|
add w1, w1, 1
|
|
strh w1, [x20, #:lo12:.LANCHOR131]
|
|
ldr w1, [x27, 4]
|
|
str w1, [x5, x0, lsl 2]
|
|
ldr x1, [x29, 160]
|
|
ldr x1, [x1, #:lo12:.LANCHOR132]
|
|
.L2146:
|
|
strh w26, [x1, x0, lsl 1]
|
|
b .L2080
|
|
.L2091:
|
|
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 .L2090
|
|
.L2088:
|
|
sub w0, w0, #1
|
|
sxth x0, w0
|
|
b .L2087
|
|
.L2083:
|
|
ldrh w1, [x23, #:lo12:.LANCHOR70]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR61]
|
|
cmp w1, w0
|
|
bls .L2096
|
|
ldr x1, [x29, 136]
|
|
mov w2, 1513
|
|
adrp x0, .LC5
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2096:
|
|
ldrh w6, [x19, #:lo12:.LANCHOR61]
|
|
ldrh w2, [x23, #:lo12:.LANCHOR70]
|
|
sub w1, w6, #1
|
|
sxth x0, w1
|
|
sub w5, w1, w2
|
|
ldr x1, [x29, 144]
|
|
ldr x1, [x1, #:lo12:.LANCHOR201]
|
|
.L2097:
|
|
cmp w0, w5
|
|
ble .L2102
|
|
sxtw x7, w0
|
|
ldr w11, [x27, 4]
|
|
lsl x8, x7, 2
|
|
add x10, x1, x8
|
|
ldr w8, [x1, x8]
|
|
cmp w11, w8
|
|
bls .L2098
|
|
ldr w5, [x1]
|
|
cbnz w5, .L2099
|
|
cmp w6, w2
|
|
beq .L2099
|
|
add w2, w2, 1
|
|
strh w2, [x23, #:lo12:.LANCHOR70]
|
|
.L2099:
|
|
ldr x6, [x28, #:lo12:.LANCHOR71]
|
|
mov w2, 0
|
|
.L2100:
|
|
cmp w2, w0
|
|
bne .L2101
|
|
ldr w2, [x27, 4]
|
|
str w2, [x10]
|
|
strh w26, [x6, x7, lsl 1]
|
|
.L2102:
|
|
tbnz w0, #31, .L2080
|
|
ldrh w2, [x19, #:lo12:.LANCHOR61]
|
|
ldrh w5, [x23, #:lo12:.LANCHOR70]
|
|
sub w2, w2, #1
|
|
sub w2, w2, w5
|
|
cmp w0, w2, sxth
|
|
bgt .L2080
|
|
add w5, w5, 1
|
|
ldr w2, [x27, 4]
|
|
strh w5, [x23, #:lo12:.LANCHOR70]
|
|
str w2, [x1, x0, lsl 2]
|
|
ldr x1, [x28, #:lo12:.LANCHOR71]
|
|
b .L2146
|
|
.L2101:
|
|
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 .L2100
|
|
.L2098:
|
|
sub w0, w0, #1
|
|
sxth x0, w0
|
|
b .L2097
|
|
.L2081:
|
|
ldrh w5, [x24, #:lo12:.LANCHOR218]
|
|
mov w1, 65535
|
|
add x2, x24, :lo12:.LANCHOR218
|
|
cmp w5, w1
|
|
bne .L2104
|
|
strh w26, [x24, #:lo12:.LANCHOR218]
|
|
str w0, [x2, 8]
|
|
b .L2080
|
|
.L2104:
|
|
ldrh w0, [x2, 4]
|
|
cmp w0, w1
|
|
beq .L2105
|
|
mov w1, 1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L2105:
|
|
add x0, x24, :lo12:.LANCHOR218
|
|
ldr w1, [x27, 4]
|
|
ldr w2, [x0, 8]
|
|
cmp w2, w1
|
|
bcs .L2106
|
|
ldrh w2, [x24, #:lo12:.LANCHOR218]
|
|
strh w2, [x0, 4]
|
|
strh w26, [x24, #:lo12:.LANCHOR218]
|
|
str w1, [x0, 8]
|
|
b .L2080
|
|
.L2106:
|
|
strh w26, [x0, 4]
|
|
b .L2080
|
|
.L2110:
|
|
ldr x0, [x29, 160]
|
|
ldr x2, [x0, #:lo12:.LANCHOR132]
|
|
ldrh w0, [x2]
|
|
cbz w0, .L2112
|
|
.L2115:
|
|
ldr x1, [x28, #:lo12:.LANCHOR71]
|
|
ldrh w0, [x1]
|
|
cbz w0, .L2113
|
|
.L2114:
|
|
ldrh w1, [x20, #:lo12:.LANCHOR131]
|
|
ldr w0, [x21, #:lo12:.LANCHOR64]
|
|
cmp w1, w0
|
|
bls .L2144
|
|
mov w2, 1631
|
|
adrp x1, .LANCHOR229
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR229
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2144:
|
|
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
|
|
.L2112:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR131]
|
|
cbz w0, .L2115
|
|
ldr w1, [x21, #:lo12:.LANCHOR64]
|
|
mov w0, 0
|
|
.L2116:
|
|
cmp w0, w1
|
|
bcs .L2115
|
|
ldrh w3, [x2, w0, sxtw 1]
|
|
cbz w3, .L2117
|
|
ldr x1, [x29, 152]
|
|
add x7, x21, :lo12:.LANCHOR64
|
|
ldr x4, [x1, #:lo12:.LANCHOR133]
|
|
mov w1, w0
|
|
.L2118:
|
|
ldr w3, [x7]
|
|
cmp w1, w3
|
|
bcs .L2115
|
|
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 .L2118
|
|
.L2117:
|
|
add w0, w0, 1
|
|
sxth w0, w0
|
|
b .L2116
|
|
.L2113:
|
|
ldrh w0, [x23, #:lo12:.LANCHOR70]
|
|
cbz w0, .L2114
|
|
ldrh w2, [x19, #:lo12:.LANCHOR61]
|
|
mov w0, 0
|
|
.L2123:
|
|
mov w6, w0
|
|
cmp w0, w2
|
|
bge .L2114
|
|
ldrh w3, [x1, w0, sxtw 1]
|
|
cbz w3, .L2124
|
|
ldr x2, [x29, 144]
|
|
add x19, x19, :lo12:.LANCHOR61
|
|
ldr x3, [x2, #:lo12:.LANCHOR201]
|
|
.L2125:
|
|
ldrh w2, [x19]
|
|
cmp w0, w2
|
|
bge .L2114
|
|
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 .L2125
|
|
.L2124:
|
|
add w0, w0, 1
|
|
sxth w0, w0
|
|
b .L2123
|
|
.size FtlScanSysBlk, .-FtlScanSysBlk
|
|
.section .text.FtlLoadSysInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadSysInfo
|
|
.type FtlLoadSysInfo, %function
|
|
FtlLoadSysInfo:
|
|
sub sp, sp, #128
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x23, x24, [sp, 64]
|
|
adrp x23, .LANCHOR189
|
|
stp x19, x20, [sp, 32]
|
|
adrp x19, .LANCHOR211
|
|
add x0, x19, :lo12:.LANCHOR211
|
|
stp x25, x26, [sp, 80]
|
|
adrp x25, .LANCHOR195
|
|
stp x21, x22, [sp, 48]
|
|
stp x27, x28, [sp, 96]
|
|
adrp x24, .LANCHOR85
|
|
ldr x1, [x23, #:lo12:.LANCHOR189]
|
|
adrp x22, .LANCHOR40
|
|
str x1, [x0, 8]
|
|
adrp x21, .LANCHOR218
|
|
ldr x1, [x25, #:lo12:.LANCHOR195]
|
|
str x1, [x0, 16]
|
|
ldr x0, [x24, #:lo12:.LANCHOR85]
|
|
mov w1, 0
|
|
ldrh w2, [x22, #:lo12:.LANCHOR40]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
ldrh w0, [x21, #:lo12:.LANCHOR218]
|
|
mov w1, 65535
|
|
cmp w0, w1
|
|
bne .L2149
|
|
.L2161:
|
|
mov w0, -1
|
|
.L2148:
|
|
ldp x19, x20, [sp, 32]
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x23, x24, [sp, 64]
|
|
ldp x25, x26, [sp, 80]
|
|
ldp x27, x28, [sp, 96]
|
|
ldp x29, x30, [sp, 16]
|
|
add sp, sp, 128
|
|
ret
|
|
.L2149:
|
|
add x26, x21, :lo12:.LANCHOR218
|
|
mov w1, 1
|
|
bl FtlGetLastWrittenPage
|
|
ldrsh w28, [x21, #:lo12:.LANCHOR218]
|
|
sxth w20, w0
|
|
adrp x27, .LANCHOR57
|
|
add w0, w0, 1
|
|
add x27, x27, :lo12:.LANCHOR57
|
|
strh w0, [x26, 2]
|
|
adrp x26, .LANCHOR2
|
|
add x0, x26, :lo12:.LANCHOR2
|
|
str x0, [x29, 104]
|
|
.L2151:
|
|
tbz w20, #31, .L2157
|
|
mov w2, 1708
|
|
adrp x1, .LANCHOR230
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR230
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
b .L2156
|
|
.L2157:
|
|
add x26, x19, :lo12:.LANCHOR211
|
|
orr w0, w20, w28, lsl 10
|
|
mov w2, 1
|
|
mov w1, w2
|
|
str w0, [x26, 4]
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
str x0, [x26, 8]
|
|
mov x0, x26
|
|
bl FlashReadPages
|
|
ldr x0, [x29, 104]
|
|
ldrb w0, [x0]
|
|
cbz w0, .L2152
|
|
ldr x8, [x26, 16]
|
|
ldr w7, [x8, 12]
|
|
cbz w7, .L2152
|
|
ldr x6, [x26, 8]
|
|
ldrh w1, [x27]
|
|
mov x0, x6
|
|
bl js_hash
|
|
cmp w7, w0
|
|
beq .L2152
|
|
cbnz w20, .L2153
|
|
add x10, x21, :lo12:.LANCHOR218
|
|
str x10, [x29, 96]
|
|
ldrh w0, [x10, 4]
|
|
cmp w28, w0
|
|
beq .L2153
|
|
ldr w0, [x6]
|
|
str w0, [sp]
|
|
ldrh w1, [x21, #:lo12:.LANCHOR218]
|
|
adrp x0, .LC47
|
|
ldr w2, [x19, #:lo12:.LANCHOR211]
|
|
add x0, x0, :lo12:.LC47
|
|
ldp w4, w5, [x8]
|
|
ldr w6, [x8, 8]
|
|
ldr w3, [x26, 4]
|
|
bl printf
|
|
ldr x10, [x29, 96]
|
|
adrp x0, .LANCHOR53
|
|
ldrh w20, [x0, #:lo12:.LANCHOR53]
|
|
ldrsh w28, [x10, 4]
|
|
.L2155:
|
|
sub w20, w20, #1
|
|
sxth w20, w20
|
|
b .L2151
|
|
.L2153:
|
|
mov w0, -1
|
|
str w0, [x19, #:lo12:.LANCHOR211]
|
|
.L2152:
|
|
ldr w0, [x19, #:lo12:.LANCHOR211]
|
|
cmn w0, #1
|
|
beq .L2155
|
|
ldr x0, [x23, #:lo12:.LANCHOR189]
|
|
mov w1, 19539
|
|
movk w1, 0x4654, lsl 16
|
|
ldr w0, [x0]
|
|
cmp w0, w1
|
|
bne .L2155
|
|
ldr x0, [x25, #:lo12:.LANCHOR195]
|
|
ldrh w1, [x0]
|
|
mov w0, 61604
|
|
cmp w1, w0
|
|
bne .L2155
|
|
.L2156:
|
|
adrp x1, .LANCHOR57
|
|
ldrh w0, [x22, #:lo12:.LANCHOR40]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR57]
|
|
add x0, x0, 24
|
|
cmp x1, x0, lsl 1
|
|
bcs .L2159
|
|
mov w2, 1710
|
|
adrp x1, .LANCHOR230
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR230
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2159:
|
|
add x19, x19, :lo12:.LANCHOR211
|
|
mov w2, 48
|
|
adrp x20, .LANCHOR82
|
|
add x0, x20, :lo12:.LANCHOR82
|
|
ldr x1, [x19, 8]
|
|
bl ftl_memcpy
|
|
ldr x0, [x24, #:lo12:.LANCHOR85]
|
|
ldrh w2, [x22, #:lo12:.LANCHOR40]
|
|
ldr x1, [x19, 8]
|
|
lsl w2, w2, 1
|
|
add x1, x1, 48
|
|
bl ftl_memcpy
|
|
ldrh w1, [x22, #:lo12:.LANCHOR40]
|
|
ldr x0, [x19, 8]
|
|
lsr w2, w1, 3
|
|
ubfiz x1, x1, 1, 16
|
|
add x1, x1, 51
|
|
add w2, w2, 4
|
|
and x1, x1, -4
|
|
add x1, x0, x1
|
|
adrp x0, .LANCHOR1
|
|
ldr x0, [x0, #:lo12:.LANCHOR1]
|
|
bl ftl_memcpy
|
|
adrp x0, .LANCHOR69
|
|
ldrh w0, [x0, #:lo12:.LANCHOR69]
|
|
cbz w0, .L2160
|
|
ldrh w1, [x22, #:lo12:.LANCHOR40]
|
|
adrp x0, .LANCHOR66
|
|
ldrh w2, [x0, #:lo12:.LANCHOR66]
|
|
lsr w0, w1, 3
|
|
add w1, w0, w1, lsl 1
|
|
ldr x0, [x19, 8]
|
|
add w1, w1, 52
|
|
lsl w2, w2, 2
|
|
and x1, x1, 65532
|
|
add x1, x0, x1
|
|
adrp x0, .LANCHOR203
|
|
ldr x0, [x0, #:lo12:.LANCHOR203]
|
|
bl ftl_memcpy
|
|
.L2160:
|
|
ldr w2, [x20, #:lo12:.LANCHOR82]
|
|
mov w1, 19539
|
|
movk w1, 0x4654, lsl 16
|
|
add x0, x20, :lo12:.LANCHOR82
|
|
cmp w2, w1
|
|
bne .L2161
|
|
add x21, x21, :lo12:.LANCHOR218
|
|
ldrh w1, [x0, 8]
|
|
ldrb w2, [x0, 10]
|
|
adrp x0, .LANCHOR45
|
|
strh w1, [x21, 6]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR45]
|
|
cmp w2, w0
|
|
bne .L2161
|
|
adrp x0, .LANCHOR231
|
|
adrp x2, .LANCHOR74
|
|
adrp x3, .LANCHOR38
|
|
str w1, [x0, #:lo12:.LANCHOR231]
|
|
adrp x0, .LANCHOR52
|
|
ldrh w3, [x3, #:lo12:.LANCHOR38]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
mul w0, w0, w1
|
|
str w0, [x2, #:lo12:.LANCHOR74]
|
|
adrp x2, .LANCHOR55
|
|
ldrh w2, [x2, #:lo12:.LANCHOR55]
|
|
mul w0, w2, w0
|
|
adrp x2, .LANCHOR68
|
|
str w0, [x2, #:lo12:.LANCHOR68]
|
|
adrp x0, .LANCHOR42
|
|
ldr w2, [x0, #:lo12:.LANCHOR42]
|
|
adrp x0, .LANCHOR76+6
|
|
ldrh w0, [x0, #:lo12:.LANCHOR76+6]
|
|
cmp w1, w2
|
|
sub w0, w2, w0
|
|
sub w0, w0, w1
|
|
udiv w0, w0, w3
|
|
adrp x3, .LANCHOR232
|
|
strh w0, [x3, #:lo12:.LANCHOR232]
|
|
bls .L2162
|
|
mov w2, 1739
|
|
adrp x1, .LANCHOR230
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR230
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2162:
|
|
add x4, x20, :lo12:.LANCHOR82
|
|
adrp x0, .LANCHOR93
|
|
add x2, x0, :lo12:.LANCHOR93
|
|
adrp x5, .LANCHOR213
|
|
adrp x19, .LANCHOR94
|
|
mov x22, x5
|
|
ldrh w1, [x4, 16]
|
|
ldrh w6, [x4, 14]
|
|
strh w6, [x0, #:lo12:.LANCHOR93]
|
|
lsr w3, w1, 6
|
|
and w1, w1, 63
|
|
strb w1, [x2, 6]
|
|
ldrb w1, [x4, 11]
|
|
strb w1, [x2, 8]
|
|
add x1, x5, :lo12:.LANCHOR213
|
|
strh w3, [x2, 2]
|
|
mov w2, -1
|
|
strh w2, [x5, #:lo12:.LANCHOR213]
|
|
add x2, x19, :lo12:.LANCHOR94
|
|
strh wzr, [x1, 2]
|
|
strb wzr, [x1, 6]
|
|
strb wzr, [x1, 8]
|
|
ldrh w1, [x4, 18]
|
|
strh w1, [x19, #:lo12:.LANCHOR94]
|
|
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, .LANCHOR95
|
|
ldrh w1, [x4, 22]
|
|
add x3, x2, :lo12:.LANCHOR95
|
|
strh w1, [x2, #:lo12:.LANCHOR95]
|
|
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, .LANCHOR166
|
|
strh w7, [x3, 2]
|
|
ldr w3, [x4, 32]
|
|
str wzr, [x1, #:lo12:.LANCHOR166]
|
|
adrp x1, .LANCHOR167
|
|
str wzr, [x1, #:lo12:.LANCHOR167]
|
|
adrp x1, .LANCHOR171
|
|
str wzr, [x1, #:lo12:.LANCHOR171]
|
|
adrp x1, .LANCHOR170
|
|
str wzr, [x1, #:lo12:.LANCHOR170]
|
|
adrp x1, .LANCHOR172
|
|
str w3, [x1, #:lo12:.LANCHOR172]
|
|
adrp x1, .LANCHOR173
|
|
str wzr, [x1, #:lo12:.LANCHOR173]
|
|
adrp x1, .LANCHOR174
|
|
str wzr, [x1, #:lo12:.LANCHOR174]
|
|
adrp x1, .LANCHOR169
|
|
ldr w3, [x4, 40]
|
|
str wzr, [x1, #:lo12:.LANCHOR169]
|
|
adrp x1, .LANCHOR164
|
|
ldr w4, [x1, #:lo12:.LANCHOR164]
|
|
cmp w3, w4
|
|
bls .L2163
|
|
str w3, [x1, #:lo12:.LANCHOR164]
|
|
.L2163:
|
|
add x20, x20, :lo12:.LANCHOR82
|
|
adrp x1, .LANCHOR165
|
|
ldr w3, [x1, #:lo12:.LANCHOR165]
|
|
ldr w2, [x20, 36]
|
|
cmp w2, w3
|
|
bls .L2164
|
|
str w2, [x1, #:lo12:.LANCHOR165]
|
|
.L2164:
|
|
mov w1, 65535
|
|
cmp w6, w1
|
|
beq .L2165
|
|
add x0, x0, :lo12:.LANCHOR93
|
|
bl make_superblock
|
|
.L2165:
|
|
ldrh w2, [x19, #:lo12:.LANCHOR94]
|
|
mov w1, 65535
|
|
add x0, x19, :lo12:.LANCHOR94
|
|
cmp w2, w1
|
|
beq .L2166
|
|
bl make_superblock
|
|
.L2166:
|
|
ldrh w2, [x21, #:lo12:.LANCHOR95]
|
|
mov w1, 65535
|
|
add x0, x21, :lo12:.LANCHOR95
|
|
cmp w2, w1
|
|
beq .L2167
|
|
bl make_superblock
|
|
.L2167:
|
|
ldrh w2, [x22, #:lo12:.LANCHOR213]
|
|
mov w1, 65535
|
|
add x0, x22, :lo12:.LANCHOR213
|
|
cmp w2, w1
|
|
beq .L2168
|
|
bl make_superblock
|
|
.L2168:
|
|
mov w0, 0
|
|
b .L2148
|
|
.size FtlLoadSysInfo, .-FtlLoadSysInfo
|
|
.section .text.FtlDumpBlockInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlDumpBlockInfo
|
|
.type FtlDumpBlockInfo, %function
|
|
FtlDumpBlockInfo:
|
|
sub sp, sp, #160
|
|
lsr w0, w0, 10
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x19, x20, [sp, 32]
|
|
adrp x19, .LANCHOR52
|
|
stp x21, x22, [sp, 48]
|
|
and w22, w1, 255
|
|
stp x23, x24, [sp, 64]
|
|
add x23, x29, 144
|
|
stp x25, x26, [sp, 80]
|
|
str x27, [sp, 96]
|
|
bl P2V_block_in_plane
|
|
ldrh w25, [x19, #:lo12:.LANCHOR52]
|
|
and w21, w0, 65535
|
|
adrp x1, .LANCHOR233
|
|
adrp x0, .LC48
|
|
add x1, x1, :lo12:.LANCHOR233
|
|
add x0, x0, :lo12:.LC48
|
|
bl printf
|
|
adrp x1, .LANCHOR85
|
|
ubfiz x0, x21, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
ldrh w2, [x1, x0]
|
|
mov w1, w21
|
|
adrp x0, .LC49
|
|
add x0, x0, :lo12:.LC49
|
|
bl printf
|
|
strh w21, [x23, -48]!
|
|
mov x0, x23
|
|
bl make_superblock
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2193
|
|
cbnz w22, .L2193
|
|
mov w0, w21
|
|
bl ftl_get_blk_mode
|
|
mov w21, w0
|
|
cmp w0, 1
|
|
bne .L2184
|
|
adrp x0, .LANCHOR53
|
|
ldrh w25, [x0, #:lo12:.LANCHOR53]
|
|
.L2184:
|
|
ldrh w3, [x19, #:lo12:.LANCHOR52]
|
|
adrp x26, .LC51
|
|
add x26, x26, :lo12:.LC51
|
|
mov w20, 0
|
|
mov w27, 56
|
|
mov w2, w25
|
|
mov w1, w21
|
|
adrp x0, .LC50
|
|
add x0, x0, :lo12:.LC50
|
|
bl printf
|
|
.L2185:
|
|
adrp x1, .LANCHOR107
|
|
adrp x0, .LANCHOR38
|
|
adrp x24, .LANCHOR186
|
|
add x3, x23, 16
|
|
ldr x6, [x1, #:lo12:.LANCHOR107]
|
|
adrp x1, .LANCHOR57
|
|
ldrh w5, [x0, #:lo12:.LANCHOR38]
|
|
mov w19, 0
|
|
ldrh w7, [x1, #:lo12:.LANCHOR57]
|
|
adrp x1, .LANCHOR108
|
|
ldr x0, [x24, #:lo12:.LANCHOR186]
|
|
mov w11, 65535
|
|
ldr x8, [x1, #:lo12:.LANCHOR108]
|
|
adrp x1, .LANCHOR58
|
|
ldrh w10, [x1, #:lo12:.LANCHOR58]
|
|
mov w1, 0
|
|
.L2186:
|
|
cmp w1, w5
|
|
bne .L2188
|
|
mov w1, w19
|
|
umull x19, w19, w27
|
|
mov x22, 0
|
|
mov w2, w21
|
|
bl FlashReadPages
|
|
.L2189:
|
|
cmp x22, x19
|
|
bne .L2190
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
cmp w25, w20
|
|
bne .L2185
|
|
.L2191:
|
|
ldp x19, x20, [sp, 32]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x23, x24, [sp, 64]
|
|
ldp x25, x26, [sp, 80]
|
|
ldp x29, x30, [sp, 16]
|
|
ldr x27, [sp, 96]
|
|
add sp, sp, 160
|
|
ret
|
|
.L2193:
|
|
mov w21, 0
|
|
b .L2184
|
|
.L2188:
|
|
ldrh w2, [x3]
|
|
cmp w2, w11
|
|
beq .L2187
|
|
umaddl x4, w19, w27, x0
|
|
orr w2, w20, w2, lsl 10
|
|
str w2, [x4, 4]
|
|
mul w2, w19, w7
|
|
asr w2, w2, 2
|
|
add x2, x6, x2, sxtw 2
|
|
str x2, [x4, 8]
|
|
mul w2, w19, w10
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
asr w2, w2, 2
|
|
add x2, x8, x2, sxtw 2
|
|
str x2, [x4, 16]
|
|
.L2187:
|
|
add w1, w1, 1
|
|
add x3, x3, 2
|
|
and w1, w1, 65535
|
|
b .L2186
|
|
.L2190:
|
|
ldr x8, [x24, #:lo12:.LANCHOR186]
|
|
ldrh w1, [x29, 96]
|
|
add x2, x8, x22
|
|
ldp x3, x0, [x2, 8]
|
|
ldr w4, [x3, 4]
|
|
str w4, [sp, 8]
|
|
ldr w3, [x3]
|
|
str w3, [sp]
|
|
ldp w4, w5, [x0]
|
|
ldp w6, w7, [x0, 8]
|
|
mov x0, x26
|
|
ldr w3, [x2, 4]
|
|
ldr w2, [x8, x22]
|
|
add x22, x22, 56
|
|
bl printf
|
|
b .L2189
|
|
.size FtlDumpBlockInfo, .-FtlDumpBlockInfo
|
|
.section .text.FtlScanAllBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlScanAllBlock
|
|
.type FtlScanAllBlock, %function
|
|
FtlScanAllBlock:
|
|
sub sp, sp, #144
|
|
adrp x1, .LANCHOR234
|
|
adrp x0, .LC48
|
|
add x1, x1, :lo12:.LANCHOR234
|
|
add x0, x0, :lo12:.LC48
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x23, x24, [sp, 64]
|
|
adrp x23, .LANCHOR41
|
|
stp x19, x20, [sp, 32]
|
|
adrp x24, .LC53
|
|
stp x21, x22, [sp, 48]
|
|
mov w20, 0
|
|
add x23, x23, :lo12:.LANCHOR41
|
|
add x24, x24, :lo12:.LC53
|
|
str x25, [sp, 80]
|
|
bl printf
|
|
.L2197:
|
|
ldrh w0, [x23]
|
|
cmp w0, w20
|
|
bhi .L2205
|
|
ldp x19, x20, [sp, 32]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x23, x24, [sp, 64]
|
|
ldp x29, x30, [sp, 16]
|
|
ldr x25, [sp, 80]
|
|
add sp, sp, 144
|
|
ret
|
|
.L2205:
|
|
strh w20, [x29, 80]
|
|
mov w0, w20
|
|
bl ftl_get_blk_mode
|
|
mov w3, w0
|
|
adrp x2, .LANCHOR85
|
|
ubfiz x1, x20, 1, 16
|
|
adrp x0, .LC52
|
|
add x0, x0, :lo12:.LC52
|
|
ldr x2, [x2, #:lo12:.LANCHOR85]
|
|
adrp x22, .LANCHOR186
|
|
mov w19, 0
|
|
ldrh w2, [x2, x1]
|
|
mov w1, w20
|
|
bl printf
|
|
add x0, x29, 80
|
|
bl make_superblock
|
|
adrp x1, .LANCHOR107
|
|
adrp x0, .LANCHOR38
|
|
add x3, x29, 96
|
|
mov w11, 65535
|
|
ldr x6, [x1, #:lo12:.LANCHOR107]
|
|
adrp x1, .LANCHOR57
|
|
ldrh w5, [x0, #:lo12:.LANCHOR38]
|
|
mov w12, 56
|
|
ldrh w7, [x1, #:lo12:.LANCHOR57]
|
|
adrp x1, .LANCHOR108
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
ldr x8, [x1, #:lo12:.LANCHOR108]
|
|
adrp x1, .LANCHOR58
|
|
ldrh w10, [x1, #:lo12:.LANCHOR58]
|
|
mov w1, 0
|
|
.L2198:
|
|
cmp w1, w5
|
|
bne .L2200
|
|
mov w25, 56
|
|
mov x21, 0
|
|
mov w2, 0
|
|
mov w1, w19
|
|
umull x25, w19, w25
|
|
bl FlashReadPages
|
|
.L2201:
|
|
cmp x21, x25
|
|
bne .L2202
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
adrp x25, .LC54
|
|
add x25, x25, :lo12:.LC54
|
|
mov w1, w19
|
|
mov x19, 0
|
|
mov w2, 1
|
|
bl FlashReadPages
|
|
.L2203:
|
|
cmp x21, x19
|
|
bne .L2204
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L2197
|
|
.L2200:
|
|
ldrh w2, [x3]
|
|
cmp w2, w11
|
|
beq .L2199
|
|
umaddl x4, w19, w12, x0
|
|
lsl w2, w2, 10
|
|
str w2, [x4, 4]
|
|
mul w2, w19, w7
|
|
asr w2, w2, 2
|
|
add x2, x6, x2, sxtw 2
|
|
str x2, [x4, 8]
|
|
mul w2, w19, w10
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
asr w2, w2, 2
|
|
add x2, x8, x2, sxtw 2
|
|
str x2, [x4, 16]
|
|
.L2199:
|
|
add w1, w1, 1
|
|
add x3, x3, 2
|
|
and w1, w1, 65535
|
|
b .L2198
|
|
.L2202:
|
|
ldr x8, [x22, #:lo12:.LANCHOR186]
|
|
ldrh w1, [x29, 80]
|
|
add x2, x8, x21
|
|
ldp x3, x0, [x2, 8]
|
|
ldr w4, [x3, 4]
|
|
str w4, [sp, 8]
|
|
ldr w3, [x3]
|
|
str w3, [sp]
|
|
ldp w4, w5, [x0]
|
|
ldp w6, w7, [x0, 8]
|
|
mov x0, x24
|
|
ldr w3, [x2, 4]
|
|
ldr w2, [x8, x21]
|
|
add x21, x21, 56
|
|
bl printf
|
|
b .L2201
|
|
.L2204:
|
|
ldr x8, [x22, #:lo12:.LANCHOR186]
|
|
ldrh w1, [x29, 80]
|
|
add x2, x8, x19
|
|
ldp x3, x0, [x2, 8]
|
|
ldr w4, [x3, 4]
|
|
str w4, [sp, 8]
|
|
ldr w3, [x3]
|
|
str w3, [sp]
|
|
ldp w4, w5, [x0]
|
|
ldp w6, w7, [x0, 8]
|
|
mov x0, x25
|
|
ldr w3, [x2, 4]
|
|
ldr w2, [x8, x19]
|
|
add x19, x19, 56
|
|
bl printf
|
|
b .L2203
|
|
.size FtlScanAllBlock, .-FtlScanAllBlock
|
|
.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 x27, x28, [sp, 80]
|
|
mov x28, x0
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w24, [x0, 6]
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR189
|
|
ldr x22, [x0, 40]
|
|
ldr x23, [x0, 16]
|
|
lsl w2, w24, 2
|
|
ldr x0, [x0, 24]
|
|
str x0, [x29, 144]
|
|
ldrh w0, [x28, 8]
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, 0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR53
|
|
str w0, [x29, 156]
|
|
mov x0, x22
|
|
bl ftl_memset
|
|
stp wzr, wzr, [x28, 48]
|
|
adrp x0, .LANCHOR211
|
|
add x4, x0, :lo12:.LANCHOR211
|
|
ldr x1, [x21, #:lo12:.LANCHOR189]
|
|
mov x27, x4
|
|
str x0, [x29, 128]
|
|
str x1, [x4, 8]
|
|
adrp x1, .LANCHOR195
|
|
ldr w0, [x29, 156]
|
|
ldr x20, [x1, #:lo12:.LANCHOR195]
|
|
mov w1, -1
|
|
str x20, [x4, 16]
|
|
sub w0, w0, #1
|
|
strh w1, [x28]
|
|
strh w1, [x28, 2]
|
|
mov w1, 1
|
|
str w0, [x29, 116]
|
|
add x0, x25, :lo12:.LANCHOR53
|
|
str w1, [x28, 56]
|
|
str x0, [x29, 104]
|
|
.L2208:
|
|
ldr w0, [x29, 156]
|
|
cmp w19, w0
|
|
bge .L2227
|
|
ldr w0, [x29, 116]
|
|
sxtw x26, w19
|
|
cmp w19, w0
|
|
bne .L2209
|
|
lsl x0, x26, 1
|
|
mov w1, 1
|
|
add x21, x23, x0
|
|
adrp x27, .LANCHOR57
|
|
add x27, x27, :lo12:.LANCHOR57
|
|
mov w25, 0
|
|
ldrh w0, [x23, x0]
|
|
bl FtlGetLastWrittenPage
|
|
sxth w23, w0
|
|
add w0, w0, 1
|
|
strh w0, [x28, 2]
|
|
ldr x0, [x29, 144]
|
|
strh w19, [x28]
|
|
ldr w0, [x0, x26, lsl 2]
|
|
adrp x26, .LANCHOR2
|
|
str w0, [x28, 48]
|
|
add x26, x26, :lo12:.LANCHOR2
|
|
ldr x0, [x29, 128]
|
|
add x19, x0, :lo12:.LANCHOR211
|
|
.L2210:
|
|
cmp w25, w23
|
|
ble .L2213
|
|
.L2227:
|
|
mov x0, x28
|
|
bl ftl_free_no_use_map_blk
|
|
adrp x0, .LANCHOR53
|
|
ldrh w1, [x28, 2]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR53]
|
|
cmp w1, w0
|
|
bne .L2215
|
|
mov x0, x28
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L2215:
|
|
mov x0, x28
|
|
bl ftl_map_blk_gc
|
|
mov x0, x28
|
|
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
|
|
.L2213:
|
|
ldrh w0, [x21]
|
|
mov w2, 1
|
|
mov w1, w2
|
|
orr w0, w25, w0, lsl 10
|
|
str w0, [x19, 4]
|
|
mov x0, x19
|
|
bl FlashReadPages
|
|
ldrb w0, [x26]
|
|
cbz w0, .L2211
|
|
ldr x0, [x19, 16]
|
|
ldr w0, [x0, 12]
|
|
str w0, [x29, 156]
|
|
uxtw x0, w0
|
|
cbz w0, .L2211
|
|
ldrh w1, [x27]
|
|
ldr x0, [x19, 8]
|
|
bl js_hash
|
|
ldr w1, [x29, 156]
|
|
cmp w1, w0
|
|
beq .L2211
|
|
mov w0, -1
|
|
str w0, [x19]
|
|
.L2211:
|
|
ldr w0, [x19]
|
|
cmn w0, #1
|
|
beq .L2212
|
|
ldrh w0, [x20, 8]
|
|
cmp w24, w0
|
|
bls .L2212
|
|
ldrh w2, [x20]
|
|
ldrh w1, [x28, 4]
|
|
cmp w2, w1
|
|
bne .L2212
|
|
ubfiz x0, x0, 2, 16
|
|
ldr w1, [x19, 4]
|
|
str w1, [x22, x0]
|
|
.L2212:
|
|
add w25, w25, 1
|
|
sxth w25, w25
|
|
b .L2210
|
|
.L2209:
|
|
lsl x26, x26, 1
|
|
ldr x0, [x21, #:lo12:.LANCHOR189]
|
|
str x0, [x27, 8]
|
|
add x0, x23, x26
|
|
ldrh w1, [x25, #:lo12:.LANCHOR53]
|
|
mov w2, 1
|
|
str x0, [x29, 136]
|
|
ldrh w0, [x23, x26]
|
|
sub w1, w1, #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 .L2229
|
|
ldrh w1, [x20]
|
|
ldrh w0, [x28, 4]
|
|
cmp w1, w0
|
|
bne .L2229
|
|
ldrh w1, [x20, 8]
|
|
mov w0, 64245
|
|
cmp w1, w0
|
|
beq .L2217
|
|
.L2229:
|
|
adrp x26, .LANCHOR57
|
|
add x26, x26, :lo12:.LANCHOR57
|
|
adrp x0, .LANCHOR2
|
|
mov w5, 0
|
|
add x0, x0, :lo12:.LANCHOR2
|
|
str x0, [x29, 120]
|
|
.L2218:
|
|
ldr x0, [x29, 104]
|
|
ldrh w0, [x0]
|
|
cmp w5, w0
|
|
bge .L2225
|
|
ldr x0, [x29, 136]
|
|
mov w2, 1
|
|
str w5, [x29, 152]
|
|
mov w1, w2
|
|
ldrh w0, [x0]
|
|
orr w0, w5, w0, lsl 10
|
|
str w0, [x27, 4]
|
|
mov x0, x27
|
|
bl FlashReadPages
|
|
ldr x0, [x29, 120]
|
|
ldr w5, [x29, 152]
|
|
ldrb w0, [x0]
|
|
cbz w0, .L2222
|
|
ldr x0, [x27, 16]
|
|
ldr w0, [x0, 12]
|
|
str w0, [x29, 152]
|
|
uxtw x0, w0
|
|
cbz w0, .L2222
|
|
ldrh w1, [x26]
|
|
ldr x0, [x27, 8]
|
|
str w5, [x29, 112]
|
|
bl js_hash
|
|
ldr w1, [x29, 152]
|
|
ldr w5, [x29, 112]
|
|
cmp w1, w0
|
|
beq .L2222
|
|
mov w0, -1
|
|
str w0, [x27]
|
|
.L2222:
|
|
ldr w0, [x27]
|
|
cmn w0, #1
|
|
beq .L2223
|
|
ldrh w0, [x20, 8]
|
|
cmp w24, w0
|
|
bls .L2223
|
|
ldrh w2, [x20]
|
|
ldrh w1, [x28, 4]
|
|
cmp w2, w1
|
|
bne .L2223
|
|
ubfiz x0, x0, 2, 16
|
|
ldr w1, [x27, 4]
|
|
str w1, [x22, x0]
|
|
.L2223:
|
|
add w5, w5, 1
|
|
sxth w5, w5
|
|
b .L2218
|
|
.L2217:
|
|
ldrh w5, [x25, #:lo12:.LANCHOR53]
|
|
mov w0, 0
|
|
ldr x6, [x21, #:lo12:.LANCHOR189]
|
|
sub w5, w5, #1
|
|
.L2219:
|
|
cmp w0, w5
|
|
blt .L2221
|
|
.L2225:
|
|
add w19, w19, 1
|
|
sxth w19, w19
|
|
b .L2208
|
|
.L2221:
|
|
lsl w2, w0, 1
|
|
sxtw x2, w2
|
|
lsl x1, x2, 2
|
|
ldrh w1, [x6, x1]
|
|
cmp w24, w1
|
|
bls .L2220
|
|
add x2, x2, 1
|
|
ubfiz x1, x1, 2, 16
|
|
ldr w2, [x6, x2, lsl 2]
|
|
str w2, [x22, x1]
|
|
.L2220:
|
|
add w0, w0, 1
|
|
sxth w0, w0
|
|
b .L2219
|
|
.size FtlMapTblRecovery, .-FtlMapTblRecovery
|
|
.section .text.FtlLoadVonderInfo,"ax",@progbits
|
|
.align 2
|
|
.global FtlLoadVonderInfo
|
|
.type FtlLoadVonderInfo, %function
|
|
FtlLoadVonderInfo:
|
|
stp x29, x30, [sp, -16]!
|
|
adrp x1, .LANCHOR61
|
|
adrp x0, .LANCHOR224
|
|
add x0, x0, :lo12:.LANCHOR224
|
|
add x29, sp, 0
|
|
ldrh w1, [x1, #:lo12:.LANCHOR61]
|
|
strh w1, [x0, 10]
|
|
mov w1, -3962
|
|
strh w1, [x0, 4]
|
|
adrp x1, .LANCHOR70
|
|
ldrh w1, [x1, #:lo12:.LANCHOR70]
|
|
strh w1, [x0, 8]
|
|
adrp x1, .LANCHOR62
|
|
ldrh w1, [x1, #:lo12:.LANCHOR62]
|
|
strh w1, [x0, 6]
|
|
adrp x1, .LANCHOR71
|
|
ldr x1, [x1, #:lo12:.LANCHOR71]
|
|
str x1, [x0, 16]
|
|
adrp x1, .LANCHOR201
|
|
ldr x1, [x1, #:lo12:.LANCHOR201]
|
|
str x1, [x0, 24]
|
|
adrp x1, .LANCHOR200
|
|
ldr x1, [x1, #:lo12:.LANCHOR200]
|
|
str x1, [x0, 32]
|
|
adrp x1, .LANCHOR202
|
|
ldr x1, [x1, #:lo12:.LANCHOR202]
|
|
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, .LANCHOR130
|
|
add x0, x0, :lo12:.LANCHOR130
|
|
bl FtlMapTblRecovery
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.size FtlLoadMapInfo, .-FtlLoadMapInfo
|
|
.section .text.ftl_scan_all_ppa,"ax",@progbits
|
|
.align 2
|
|
.global ftl_scan_all_ppa
|
|
.type ftl_scan_all_ppa, %function
|
|
ftl_scan_all_ppa:
|
|
sub sp, sp, #112
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x21, x22, [sp, 48]
|
|
adrp x22, .LANCHOR51
|
|
stp x19, x20, [sp, 32]
|
|
adrp x20, .LANCHOR211
|
|
ldrh w19, [x22, #:lo12:.LANCHOR51]
|
|
add x20, x20, :lo12:.LANCHOR211
|
|
stp x25, x26, [sp, 80]
|
|
adrp x26, .LANCHOR16
|
|
sub w19, w19, #16
|
|
add x26, x26, :lo12:.LANCHOR16
|
|
lsl w25, w19, 10
|
|
stp x23, x24, [sp, 64]
|
|
str x27, [sp, 96]
|
|
.L2254:
|
|
ldrh w0, [x22, #:lo12:.LANCHOR51]
|
|
cmp w19, w0
|
|
blt .L2262
|
|
ldp x19, x20, [sp, 32]
|
|
adrp x1, .LANCHOR235
|
|
ldp x21, x22, [sp, 48]
|
|
add x1, x1, :lo12:.LANCHOR235
|
|
ldp x23, x24, [sp, 64]
|
|
adrp x0, .LC58
|
|
ldp x25, x26, [sp, 80]
|
|
add x0, x0, :lo12:.LC58
|
|
ldp x29, x30, [sp, 16]
|
|
ldr x27, [sp, 96]
|
|
add sp, sp, 112
|
|
b printf
|
|
.L2262:
|
|
and w24, w19, 65535
|
|
mov w0, w24
|
|
bl ftl_get_blk_mode
|
|
ldrb w1, [x26]
|
|
cbz w1, .L2255
|
|
adrp x1, .LANCHOR40
|
|
ldrh w1, [x1, #:lo12:.LANCHOR40]
|
|
cmp w19, w1
|
|
bge .L2256
|
|
adrp x1, .LANCHOR59
|
|
ldrh w1, [x1, #:lo12:.LANCHOR59]
|
|
cmp w19, w1
|
|
blt .L2256
|
|
.L2255:
|
|
cmp w0, 1
|
|
bne .L2257
|
|
.L2256:
|
|
adrp x0, .LANCHOR53
|
|
mov w21, -2147483648
|
|
ldrh w23, [x0, #:lo12:.LANCHOR53]
|
|
.L2258:
|
|
mov w3, w21
|
|
mov w2, w23
|
|
mov w1, w19
|
|
adrp x0, .LC55
|
|
add x0, x0, :lo12:.LC55
|
|
bl printf
|
|
mov w0, w24
|
|
bl FtlBbmIsBadBlock
|
|
cbz w0, .L2259
|
|
adrp x0, .LC56
|
|
mov w3, w21
|
|
mov w2, w23
|
|
mov w1, w19
|
|
add x0, x0, :lo12:.LC56
|
|
bl printf
|
|
.L2259:
|
|
adrp x27, .LC57
|
|
add w21, w21, w25
|
|
add x27, x27, :lo12:.LC57
|
|
mov w24, 0
|
|
.L2260:
|
|
cmp w24, w23
|
|
bne .L2261
|
|
add w19, w19, 1
|
|
add w25, w25, 1024
|
|
b .L2254
|
|
.L2257:
|
|
adrp x0, .LANCHOR52
|
|
mov w21, 0
|
|
ldrh w23, [x0, #:lo12:.LANCHOR52]
|
|
b .L2258
|
|
.L2261:
|
|
add w0, w21, w24
|
|
stp wzr, w0, [x20]
|
|
adrp x0, .LANCHOR189
|
|
mov w2, 0
|
|
mov w1, 1
|
|
add w24, w24, 1
|
|
ldr x0, [x0, #:lo12:.LANCHOR189]
|
|
str x0, [x20, 8]
|
|
adrp x0, .LANCHOR195
|
|
ldr x0, [x0, #:lo12:.LANCHOR195]
|
|
str x0, [x20, 16]
|
|
mov x0, x20
|
|
bl FlashReadPages
|
|
ldp x1, x0, [x20, 8]
|
|
ldr w2, [x1, 4]
|
|
str w2, [sp]
|
|
ldp w3, w4, [x0]
|
|
ldp w5, w6, [x0, 8]
|
|
mov x0, x27
|
|
ldr w7, [x1]
|
|
ldp w2, w1, [x20]
|
|
bl printf
|
|
b .L2260
|
|
.size ftl_scan_all_ppa, .-ftl_scan_all_ppa
|
|
.section .text.FlashReadFacBbtData,"ax",@progbits
|
|
.align 2
|
|
.global FlashReadFacBbtData
|
|
.type FlashReadFacBbtData, %function
|
|
FlashReadFacBbtData:
|
|
stp x29, x30, [sp, -160]!
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
mov w25, w1
|
|
adrp x1, .LANCHOR15
|
|
add x1, x1, :lo12:.LANCHOR15
|
|
stp x23, x24, [sp, 48]
|
|
mov x23, x0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR154
|
|
ldrh w0, [x1, 14]
|
|
mov w24, w2
|
|
ldrh w1, [x1, 12]
|
|
stp x19, x20, [sp, 16]
|
|
str x27, [sp, 80]
|
|
mov w27, 61664
|
|
mul w0, w0, w1
|
|
ldr x1, [x21, #:lo12:.LANCHOR154]
|
|
str x1, [x29, 112]
|
|
and w0, w0, 65535
|
|
adrp x1, .LANCHOR205
|
|
sub w20, w0, #1
|
|
sub w19, w0, #15
|
|
ldr x2, [x1, #:lo12:.LANCHOR205]
|
|
and w20, w20, 65535
|
|
mul w26, w0, w25
|
|
mov x22, x1
|
|
str x2, [x29, 120]
|
|
.L2271:
|
|
cmp w19, w20
|
|
ble .L2278
|
|
mov w0, -1
|
|
.L2270:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldr x27, [sp, 80]
|
|
ldp x29, x30, [sp], 160
|
|
ret
|
|
.L2278:
|
|
add w0, w20, w26
|
|
mov w2, 1
|
|
lsl w0, w0, 10
|
|
mov w1, w2
|
|
str w0, [x29, 108]
|
|
add x0, x29, 104
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 104]
|
|
cmn w0, #1
|
|
beq .L2272
|
|
ldr x0, [x22, #:lo12:.LANCHOR205]
|
|
ldrh w0, [x0]
|
|
cmp w0, w27
|
|
bne .L2272
|
|
cbz x23, .L2279
|
|
cbz w25, .L2274
|
|
.L2277:
|
|
ldr x1, [x21, #:lo12:.LANCHOR154]
|
|
mov w2, w24
|
|
mov x0, x23
|
|
bl ftl_memcpy
|
|
mov w3, 4
|
|
adrp x0, .LC59
|
|
mov w2, w3
|
|
mov x1, x23
|
|
add x0, x0, :lo12:.LC59
|
|
bl rknand_print_hex
|
|
.L2279:
|
|
mov w0, 0
|
|
b .L2270
|
|
.L2274:
|
|
ldr x5, [x21, #:lo12:.LANCHOR154]
|
|
adrp x2, .LANCHOR156
|
|
add x2, x2, :lo12:.LANCHOR156
|
|
mov w0, 0
|
|
mov w6, 1
|
|
.L2275:
|
|
ldr w1, [x2]
|
|
cmp w0, w1
|
|
bcs .L2277
|
|
ubfx x1, x0, 5, 11
|
|
and w3, w0, 31
|
|
lsl x1, x1, 2
|
|
add w0, w0, 1
|
|
lsl w4, w6, w3
|
|
and w0, w0, 65535
|
|
ldr w3, [x5, x1]
|
|
orr w3, w3, w4
|
|
str w3, [x5, x1]
|
|
b .L2275
|
|
.L2272:
|
|
sub w20, w20, #1
|
|
and w20, w20, 65535
|
|
b .L2271
|
|
.size FlashReadFacBbtData, .-FlashReadFacBbtData
|
|
.section .text.FlashGetBadBlockList,"ax",@progbits
|
|
.align 2
|
|
.global FlashGetBadBlockList
|
|
.type FlashGetBadBlockList, %function
|
|
FlashGetBadBlockList:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x20, x0
|
|
adrp x0, .LANCHOR7
|
|
ldr x0, [x0, #:lo12:.LANCHOR7]
|
|
ldrh w19, [x0, 14]
|
|
str x21, [sp, 32]
|
|
adrp x21, .LANCHOR152
|
|
ldrb w2, [x0, 13]
|
|
ldr x0, [x21, #:lo12:.LANCHOR152]
|
|
mul w19, w19, w2
|
|
and w19, w19, 65535
|
|
add w2, w19, 7
|
|
lsr w2, w2, 3
|
|
bl FlashReadFacBbtData
|
|
cmn w0, #1
|
|
bne .L2285
|
|
.L2289:
|
|
mov w0, 0
|
|
.L2286:
|
|
ubfiz x0, x0, 1, 16
|
|
mov w1, -1
|
|
ldr x21, [sp, 32]
|
|
strh w1, [x20, x0]
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 48
|
|
ret
|
|
.L2285:
|
|
ldr x4, [x21, #:lo12:.LANCHOR152]
|
|
lsr w5, w19, 4
|
|
sub w19, w19, #1
|
|
mov w1, 0
|
|
mov w0, 0
|
|
mov w6, 1
|
|
.L2287:
|
|
cmp w1, w19
|
|
bge .L2286
|
|
ubfx x3, x1, 5, 11
|
|
and w2, w1, 31
|
|
lsl w2, w6, w2
|
|
ldr w3, [x4, x3, lsl 2]
|
|
tst w2, w3
|
|
beq .L2288
|
|
add w2, w0, 1
|
|
ubfiz x0, x0, 1, 16
|
|
strh w1, [x20, x0]
|
|
and w0, w2, 65535
|
|
.L2288:
|
|
cmp w0, w5
|
|
bcs .L2289
|
|
add w1, w1, 1
|
|
and w1, w1, 65535
|
|
b .L2287
|
|
.size FlashGetBadBlockList, .-FlashGetBadBlockList
|
|
.section .text.FtlMakeBbt,"ax",@progbits
|
|
.align 2
|
|
.global FtlMakeBbt
|
|
.type FtlMakeBbt, %function
|
|
FtlMakeBbt:
|
|
stp x29, x30, [sp, -128]!
|
|
adrp x0, .LANCHOR78
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
ldr w21, [x0, #:lo12:.LANCHOR78]
|
|
stp x19, x20, [sp, 16]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cbnz w21, .L2296
|
|
adrp x20, .LANCHOR76
|
|
add x22, x20, :lo12:.LANCHOR76
|
|
bl FtlBbtMemInit
|
|
add x24, x22, 32
|
|
bl FtlLoadFactoryBbt
|
|
adrp x28, .LANCHOR211
|
|
add x22, x22, 12
|
|
add x25, x28, :lo12:.LANCHOR211
|
|
adrp x0, .LANCHOR45
|
|
add x0, x0, :lo12:.LANCHOR45
|
|
str x0, [x29, 120]
|
|
.L2297:
|
|
ldr x0, [x29, 120]
|
|
ldrh w0, [x0]
|
|
cmp w21, w0
|
|
bcc .L2303
|
|
adrp x21, .LANCHOR59
|
|
add x21, x21, :lo12:.LANCHOR59
|
|
mov w19, 0
|
|
.L2304:
|
|
ldrh w0, [x21]
|
|
cmp w0, w19
|
|
bhi .L2305
|
|
add x21, x20, :lo12:.LANCHOR76
|
|
mov w22, 65535
|
|
ldrh w19, [x21, 12]
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
.L2306:
|
|
ldrh w0, [x21, 12]
|
|
sub w0, w0, #47
|
|
cmp w0, w19
|
|
bgt .L2310
|
|
mov w0, w19
|
|
bl FtlBbmIsBadBlock
|
|
cmp w0, 1
|
|
beq .L2307
|
|
mov w0, w19
|
|
bl FlashTestBlk
|
|
cbz w0, .L2308
|
|
mov w0, w19
|
|
bl FtlBbmMapBadBlock
|
|
.L2307:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L2306
|
|
.L2303:
|
|
adrp x2, .LANCHOR195
|
|
adrp x0, .LANCHOR189
|
|
add x19, x28, :lo12:.LANCHOR211
|
|
ldrh w1, [x22]
|
|
ldr x0, [x0, #:lo12:.LANCHOR189]
|
|
mov w3, 65535
|
|
ldr x26, [x2, #:lo12:.LANCHOR195]
|
|
cmp w1, w3
|
|
stp x0, x26, [x19, 8]
|
|
adrp x23, .LANCHOR51
|
|
str x2, [x29, 112]
|
|
beq .L2298
|
|
ldrh w4, [x23, #:lo12:.LANCHOR51]
|
|
mov w2, 1
|
|
madd w27, w4, w21, 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:.LANCHOR51]
|
|
add w2, w2, 7
|
|
lsr w2, w2, 3
|
|
bl ftl_memcpy
|
|
.L2299:
|
|
mov w0, w27
|
|
add w21, w21, 1
|
|
bl FtlBbmMapBadBlock
|
|
add x24, x24, 8
|
|
add x22, x22, 2
|
|
b .L2297
|
|
.L2298:
|
|
mov w1, w21
|
|
bl FlashGetBadBlockList
|
|
ldr x0, [x19, 8]
|
|
adrp x27, .LANCHOR126
|
|
ldr x1, [x24]
|
|
bl FtlBbt2Bitmap
|
|
ldrh w19, [x23, #:lo12:.LANCHOR51]
|
|
add x23, x23, :lo12:.LANCHOR51
|
|
add x0, x27, :lo12:.LANCHOR126
|
|
sub w19, w19, #1
|
|
str x0, [x29, 104]
|
|
and w19, w19, 65535
|
|
.L2300:
|
|
ldrh w0, [x23]
|
|
madd w0, w21, w0, w19
|
|
bl FtlBbmIsBadBlock
|
|
cmp w0, 1
|
|
beq .L2301
|
|
ldr x0, [x29, 112]
|
|
mov w2, 16
|
|
strh w19, [x22]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR195]
|
|
bl ftl_memset
|
|
mov w0, -3872
|
|
strh w0, [x26]
|
|
ldrh w4, [x23]
|
|
ldrh w0, [x22]
|
|
strh w0, [x26, 2]
|
|
ldr x1, [x24]
|
|
str wzr, [x26, 4]
|
|
madd w27, w4, w21, 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 .L2299
|
|
mov w0, w27
|
|
bl FtlBbmMapBadBlock
|
|
b .L2300
|
|
.L2301:
|
|
sub w19, w19, #1
|
|
and w19, w19, 65535
|
|
b .L2300
|
|
.L2305:
|
|
mov w0, w19
|
|
add w19, w19, 1
|
|
bl FtlBbmMapBadBlock
|
|
and w19, w19, 65535
|
|
b .L2304
|
|
.L2308:
|
|
ldrh w0, [x21]
|
|
cmp w0, w22
|
|
bne .L2309
|
|
strh w19, [x21]
|
|
b .L2307
|
|
.L2309:
|
|
strh w19, [x21, 4]
|
|
.L2310:
|
|
adrp x0, .LANCHOR79
|
|
add x19, x20, :lo12:.LANCHOR76
|
|
ldrh w1, [x20, #:lo12:.LANCHOR76]
|
|
mov w2, 2
|
|
ldr x0, [x0, #:lo12:.LANCHOR79]
|
|
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, 60]
|
|
mov w1, 1
|
|
bl FlashEraseBlocks
|
|
ldrh w0, [x20, #:lo12:.LANCHOR76]
|
|
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:.LANCHOR76]
|
|
strh w0, [x19, 4]
|
|
strh w1, [x20, #:lo12:.LANCHOR76]
|
|
bl FtlBbmTblFlush
|
|
.L2296:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.size FtlMakeBbt, .-FtlMakeBbt
|
|
.section .text.log2phys,"ax",@progbits
|
|
.align 2
|
|
.global log2phys
|
|
.type log2phys, %function
|
|
log2phys:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
mov w25, w0
|
|
adrp x0, .LANCHOR56
|
|
stp x23, x24, [sp, 48]
|
|
stp x19, x20, [sp, 16]
|
|
mov x26, x1
|
|
ldrh w24, [x0, #:lo12:.LANCHOR56]
|
|
adrp x0, .LANCHOR74
|
|
stp x21, x22, [sp, 32]
|
|
mov x19, x0
|
|
ldr w1, [x0, #:lo12:.LANCHOR74]
|
|
stp x27, x28, [sp, 80]
|
|
str w2, [x29, 116]
|
|
cmp w25, w1
|
|
bcc .L2317
|
|
mov w2, 1004
|
|
adrp x1, .LANCHOR236
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR236
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2317:
|
|
ldr w0, [x19, #:lo12:.LANCHOR74]
|
|
cmp w25, w0
|
|
bcs .L2318
|
|
adrp x19, .LANCHOR98
|
|
add w24, w24, 7
|
|
adrp x0, .LANCHOR67
|
|
ldr x2, [x19, #:lo12:.LANCHOR98]
|
|
lsr w23, w25, w24
|
|
and w22, w23, 65535
|
|
ldrh w1, [x0, #:lo12:.LANCHOR67]
|
|
mov x0, 0
|
|
.L2319:
|
|
and x20, x0, 65535
|
|
cmp w20, w1
|
|
bcc .L2324
|
|
bl select_l2p_ram_region
|
|
and x20, x0, 65535
|
|
ldr x1, [x19, #:lo12:.LANCHOR98]
|
|
ubfiz x21, x20, 4, 16
|
|
add x2, x1, x21
|
|
ldrh w3, [x1, x21]
|
|
mov w1, 65535
|
|
cmp w3, w1
|
|
beq .L2325
|
|
ldr w1, [x2, 4]
|
|
tbz w1, #31, .L2325
|
|
bl flush_l2p_region
|
|
.L2325:
|
|
adrp x0, .LANCHOR66
|
|
str x0, [x29, 104]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR66]
|
|
cmp w1, w22
|
|
bcs .L2326
|
|
mov w2, 597
|
|
adrp x1, .LANCHOR237
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR237
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2326:
|
|
adrp x27, .LANCHOR134
|
|
ubfiz x0, x22, 2, 16
|
|
ldr x1, [x27, #:lo12:.LANCHOR134]
|
|
ldr w3, [x1, x0]
|
|
cbnz w3, .L2327
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
adrp x1, .LANCHOR57
|
|
add x0, x0, x21
|
|
ldrh w2, [x1, #:lo12:.LANCHOR57]
|
|
mov w1, 255
|
|
ldr x0, [x0, 8]
|
|
bl ftl_memset
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
add x1, x0, x21
|
|
strh w22, [x0, x21]
|
|
str wzr, [x1, 4]
|
|
b .L2321
|
|
.L2318:
|
|
ldr w1, [x29, 116]
|
|
mov w0, -1
|
|
cbnz w1, .L2316
|
|
str w0, [x26]
|
|
.L2316:
|
|
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
|
|
.L2324:
|
|
add x0, x0, 1
|
|
add x3, x2, x0, lsl 4
|
|
ldrh w3, [x3, -16]
|
|
cmp w3, w22
|
|
bne .L2319
|
|
.L2321:
|
|
mov x0, 1
|
|
lsl x24, x0, x24
|
|
ldr w0, [x29, 116]
|
|
sub w24, w24, #1
|
|
and w25, w24, w25
|
|
and x25, x25, 65535
|
|
cbnz w0, .L2322
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
add x0, x0, x20, lsl 4
|
|
ldr x0, [x0, 8]
|
|
ldr w0, [x0, x25, lsl 2]
|
|
str w0, [x26]
|
|
.L2323:
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
add x20, x0, x20, lsl 4
|
|
ldr w0, [x20, 4]
|
|
cmn w0, #1
|
|
beq .L2332
|
|
add w0, w0, 1
|
|
str w0, [x20, 4]
|
|
.L2332:
|
|
mov w0, 0
|
|
b .L2316
|
|
.L2322:
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
ldr w2, [x26]
|
|
add x0, x0, x20, lsl 4
|
|
ldr x1, [x0, 8]
|
|
str w2, [x1, x25, lsl 2]
|
|
ldr w1, [x0, 4]
|
|
orr w1, w1, -2147483648
|
|
str w1, [x0, 4]
|
|
adrp x0, .LANCHOR99
|
|
strh w22, [x0, #:lo12:.LANCHOR99]
|
|
b .L2323
|
|
.L2327:
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
adrp x5, .LANCHOR211
|
|
add x28, x5, :lo12:.LANCHOR211
|
|
mov w2, 1
|
|
add x0, x0, x21
|
|
str x5, [x29, 96]
|
|
str w3, [x29, 112]
|
|
mov w1, w2
|
|
str w3, [x28, 4]
|
|
ldr x0, [x0, 8]
|
|
str x0, [x28, 8]
|
|
adrp x0, .LANCHOR195
|
|
ldr x0, [x0, #:lo12:.LANCHOR195]
|
|
str x0, [x28, 16]
|
|
mov x0, x28
|
|
bl FlashReadPages
|
|
ldr x0, [x28, 16]
|
|
str x0, [x29, 120]
|
|
ldr w3, [x29, 112]
|
|
ldr x5, [x29, 96]
|
|
ldrh w0, [x0, 8]
|
|
cmp w0, w22
|
|
beq .L2328
|
|
mov w2, w3
|
|
and w1, w23, 65535
|
|
adrp x0, .LC60
|
|
add x0, x0, :lo12:.LC60
|
|
bl printf
|
|
ldr x1, [x28, 16]
|
|
mov w3, 4
|
|
adrp x0, .LC28
|
|
mov w2, w3
|
|
add x0, x0, :lo12:.LC28
|
|
bl rknand_print_hex
|
|
ldr x0, [x29, 104]
|
|
mov w2, 4
|
|
ldr x1, [x27, #:lo12:.LANCHOR134]
|
|
ldrh w3, [x0, #:lo12:.LANCHOR66]
|
|
adrp x0, .LC61
|
|
add x0, x0, :lo12:.LC61
|
|
bl rknand_print_hex
|
|
adrp x0, .LANCHOR78
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR78]
|
|
.L2329:
|
|
ldr x0, [x29, 120]
|
|
ldrh w0, [x0, 8]
|
|
cmp w0, w22
|
|
beq .L2330
|
|
mov w2, 624
|
|
adrp x1, .LANCHOR237
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR237
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2330:
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
add x1, x0, x21
|
|
str wzr, [x1, 4]
|
|
strh w22, [x0, x21]
|
|
b .L2321
|
|
.L2328:
|
|
ldr w0, [x5, #:lo12:.LANCHOR211]
|
|
cmp w0, 256
|
|
bne .L2329
|
|
and w23, w23, 65535
|
|
mov w2, w3
|
|
mov w1, w23
|
|
adrp x0, .LC62
|
|
add x0, x0, :lo12:.LC62
|
|
bl printf
|
|
ldr x0, [x19, #:lo12:.LANCHOR98]
|
|
mov w1, w23
|
|
add x0, x0, x21
|
|
ldr x2, [x0, 8]
|
|
adrp x0, .LANCHOR130
|
|
add x0, x0, :lo12:.LANCHOR130
|
|
bl FtlMapWritePage
|
|
b .L2329
|
|
.size log2phys, .-log2phys
|
|
.section .text.FtlCheckVpc,"ax",@progbits
|
|
.align 2
|
|
.global FtlCheckVpc
|
|
.type FtlCheckVpc, %function
|
|
FtlCheckVpc:
|
|
stp x29, x30, [sp, -112]!
|
|
adrp x0, .LC48
|
|
add x0, x0, :lo12:.LC48
|
|
add x29, sp, 0
|
|
stp x23, x24, [sp, 48]
|
|
adrp x23, .LANCHOR74
|
|
add x23, x23, :lo12:.LANCHOR74
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, 0
|
|
stp x19, x20, [sp, 16]
|
|
stp x25, x26, [sp, 64]
|
|
adrp x21, .LANCHOR238
|
|
stp x27, x28, [sp, 80]
|
|
add x1, x21, :lo12:.LANCHOR238
|
|
adrp x20, check_valid_page_count_table
|
|
bl printf
|
|
add x19, x20, :lo12:check_valid_page_count_table
|
|
mov x2, 8192
|
|
mov w1, 0
|
|
mov x0, x19
|
|
bl memset
|
|
.L2336:
|
|
ldr w0, [x23]
|
|
cmp w22, w0
|
|
bcc .L2338
|
|
adrp x23, .LANCHOR40
|
|
adrp x24, .LC63
|
|
add x23, x23, :lo12:.LANCHOR40
|
|
add x26, x20, :lo12:check_valid_page_count_table
|
|
add x24, x24, :lo12:.LC63
|
|
mov w22, 0
|
|
mov w19, 0
|
|
adrp x25, .LANCHOR85
|
|
.L2339:
|
|
ldrh w0, [x23]
|
|
cmp w0, w19
|
|
bhi .L2341
|
|
adrp x0, .LANCHOR89
|
|
ldr x19, [x0, #:lo12:.LANCHOR89]
|
|
cbz x19, .L2342
|
|
adrp x0, .LANCHOR90
|
|
adrp x25, .LC64
|
|
add x20, x20, :lo12:check_valid_page_count_table
|
|
add x25, x25, :lo12:.LC64
|
|
ldrh w26, [x0, #:lo12:.LANCHOR90]
|
|
adrp x0, .LANCHOR83
|
|
mov x24, x0
|
|
mov w23, 0
|
|
ldr x1, [x0, #:lo12:.LANCHOR83]
|
|
adrp x27, .LANCHOR85
|
|
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
|
|
.L2343:
|
|
cmp w23, w26
|
|
bne .L2345
|
|
.L2342:
|
|
adrp x0, .LC65
|
|
mov w1, w22
|
|
add x0, x0, :lo12:.LC65
|
|
bl printf
|
|
cbz w22, .L2335
|
|
mov w2, 1849
|
|
add x1, x21, :lo12:.LANCHOR238
|
|
adrp x0, .LC5
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2335:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 112
|
|
ret
|
|
.L2338:
|
|
mov w2, 0
|
|
add x1, x29, 108
|
|
mov w0, w22
|
|
bl log2phys
|
|
ldr w0, [x29, 108]
|
|
cmn w0, #1
|
|
beq .L2337
|
|
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]
|
|
.L2337:
|
|
add w22, w22, 1
|
|
b .L2336
|
|
.L2341:
|
|
ldr x0, [x25, #:lo12:.LANCHOR85]
|
|
ubfiz x28, x19, 1, 16
|
|
sxtw x27, w19
|
|
ldrh w2, [x0, x28]
|
|
ldrh w3, [x26, x27, lsl 1]
|
|
cmp w2, w3
|
|
beq .L2340
|
|
mov w1, w19
|
|
mov x0, x24
|
|
bl printf
|
|
ldr x0, [x25, #:lo12:.LANCHOR85]
|
|
mov w1, 65535
|
|
ldrh w0, [x0, x28]
|
|
cmp w0, w1
|
|
beq .L2340
|
|
ldrh w1, [x26, x27, lsl 1]
|
|
cmp w1, w0
|
|
csinc w22, w22, wzr, ls
|
|
.L2340:
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
b .L2339
|
|
.L2345:
|
|
ldr x1, [x27, #:lo12:.LANCHOR85]
|
|
ubfiz x0, x19, 1, 16
|
|
ldrh w2, [x1, x0]
|
|
cbz w2, .L2344
|
|
ldrh w3, [x20, w19, sxtw 1]
|
|
mov w22, 1
|
|
mov w1, w19
|
|
mov x0, x25
|
|
bl printf
|
|
.L2344:
|
|
ldr x0, [x24, #:lo12:.LANCHOR83]
|
|
umull x19, w19, w28
|
|
ldrh w19, [x0, x19]
|
|
mov w0, 65535
|
|
cmp w19, w0
|
|
beq .L2342
|
|
add w23, w23, 1
|
|
and w23, w23, 65535
|
|
b .L2343
|
|
.size FtlCheckVpc, .-FtlCheckVpc
|
|
.section .text.Ftlscanalldata,"ax",@progbits
|
|
.align 2
|
|
.global Ftlscanalldata
|
|
.type Ftlscanalldata, %function
|
|
Ftlscanalldata:
|
|
sub sp, sp, #96
|
|
adrp x0, .LC66
|
|
mov w1, 0
|
|
add x0, x0, :lo12:.LC66
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x19, x20, [sp, 32]
|
|
adrp x20, .LANCHOR211
|
|
stp x21, x22, [sp, 48]
|
|
mov w19, 0
|
|
adrp x21, .LANCHOR74
|
|
add x22, x20, :lo12:.LANCHOR211
|
|
add x21, x21, :lo12:.LANCHOR74
|
|
str x23, [sp, 64]
|
|
bl printf
|
|
.L2361:
|
|
ldr w0, [x21]
|
|
cmp w19, w0
|
|
bcc .L2367
|
|
ldp x19, x20, [sp, 32]
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x29, x30, [sp, 16]
|
|
ldr x23, [sp, 64]
|
|
add sp, sp, 96
|
|
ret
|
|
.L2367:
|
|
mov w2, 0
|
|
add x1, x29, 76
|
|
mov w0, w19
|
|
bl log2phys
|
|
tst x19, 2047
|
|
bne .L2362
|
|
ldr w2, [x29, 76]
|
|
adrp x0, .LC67
|
|
mov w1, w19
|
|
add x0, x0, :lo12:.LC67
|
|
bl printf
|
|
.L2362:
|
|
ldr w1, [x29, 76]
|
|
cmn w1, #1
|
|
beq .L2364
|
|
add x0, x20, :lo12:.LANCHOR211
|
|
str wzr, [x20, #:lo12:.LANCHOR211]
|
|
mov w2, 0
|
|
str w1, [x0, 4]
|
|
adrp x1, .LANCHOR189
|
|
str w19, [x0, 24]
|
|
ldr x1, [x1, #:lo12:.LANCHOR189]
|
|
str x1, [x0, 8]
|
|
adrp x1, .LANCHOR195
|
|
ldr x23, [x1, #:lo12:.LANCHOR195]
|
|
mov w1, 1
|
|
str x23, [x0, 16]
|
|
bl FlashReadPages
|
|
ldr w0, [x20, #:lo12:.LANCHOR211]
|
|
cmp w0, 256
|
|
ccmn w0, #1, 4, ne
|
|
beq .L2365
|
|
ldr w0, [x23, 8]
|
|
cmp w19, w0
|
|
beq .L2364
|
|
.L2365:
|
|
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, .LC68
|
|
ldr w7, [x1]
|
|
add x0, x0, :lo12:.LC68
|
|
mov w1, w19
|
|
bl printf
|
|
.L2364:
|
|
add w19, w19, 1
|
|
b .L2361
|
|
.size Ftlscanalldata, .-Ftlscanalldata
|
|
.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, .LANCHOR85
|
|
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:.LANCHOR85]
|
|
and w3, w0, 65535
|
|
ubfiz x20, x3, 1, 16
|
|
ldrh w1, [x2, x20]
|
|
cbnz w1, .L2370
|
|
adrp x0, .LANCHOR89
|
|
ldr x19, [x0, #:lo12:.LANCHOR89]
|
|
cbz x19, .L2371
|
|
adrp x2, .LANCHOR83
|
|
mov x5, -6148914691236517206
|
|
movk x5, 0xaaab, lsl 0
|
|
adrp x23, .LANCHOR90
|
|
ldr x2, [x2, #:lo12:.LANCHOR83]
|
|
mov w6, 65535
|
|
ldrh w4, [x23, #:lo12:.LANCHOR90]
|
|
sub x19, x19, x2
|
|
asr x19, x19, 1
|
|
mul x19, x19, x5
|
|
mov w5, 6
|
|
and w19, w19, 65535
|
|
.L2372:
|
|
cmp w1, w4
|
|
beq .L2371
|
|
cmp w19, w3
|
|
bne .L2373
|
|
mov w1, w19
|
|
add x0, x0, :lo12:.LANCHOR89
|
|
bl List_remove_node
|
|
ldrh w0, [x23, #:lo12:.LANCHOR90]
|
|
cbnz w0, .L2374
|
|
mov w2, 2271
|
|
adrp x1, .LANCHOR239
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR239
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2374:
|
|
ldrh w0, [x23, #:lo12:.LANCHOR90]
|
|
sub w0, w0, #1
|
|
strh w0, [x23, #:lo12:.LANCHOR90]
|
|
mov w0, w19
|
|
bl INSERT_DATA_LIST
|
|
ldr x1, [x22, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x1, x20]
|
|
add w0, w0, 1
|
|
strh w0, [x1, x20]
|
|
.L2371:
|
|
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
|
|
.L2373:
|
|
umull x19, w19, w5
|
|
ldrh w19, [x2, x19]
|
|
cmp w19, w6
|
|
beq .L2371
|
|
add w1, w1, 1
|
|
and w1, w1, 65535
|
|
b .L2372
|
|
.L2370:
|
|
add w1, w1, 1
|
|
strh w1, [x2, x20]
|
|
b .L2371
|
|
.size FtlReUsePrevPpa, .-FtlReUsePrevPpa
|
|
.section .text.FtlRecoverySuperblock,"ax",@progbits
|
|
.align 2
|
|
.global FtlRecoverySuperblock
|
|
.type FtlRecoverySuperblock, %function
|
|
FtlRecoverySuperblock:
|
|
stp x29, x30, [sp, -208]!
|
|
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 .L2542
|
|
ldrb w0, [x19, 6]
|
|
str w0, [x29, 180]
|
|
adrp x0, .LANCHOR52
|
|
ldrh w26, [x19, 2]
|
|
str x0, [x29, 144]
|
|
ldrh w2, [x0, #:lo12:.LANCHOR52]
|
|
cmp w2, w26
|
|
bne .L2383
|
|
strh wzr, [x19, 4]
|
|
.L2549:
|
|
strb wzr, [x19, 6]
|
|
.L2542:
|
|
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], 208
|
|
ret
|
|
.L2383:
|
|
ldrh w0, [x19, 16]
|
|
mov w21, 0
|
|
.L2384:
|
|
cmp w0, w1
|
|
beq .L2385
|
|
ldrb w1, [x19, 8]
|
|
cmp w1, 1
|
|
bne .L2386
|
|
bl FtlGetLastWrittenPage
|
|
mov w20, w0
|
|
cmn w0, #1
|
|
beq .L2387
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbnz w0, .L2464
|
|
adrp x0, .LANCHOR17
|
|
add x0, x0, :lo12:.LANCHOR17
|
|
ldrh w23, [x0, w20, sxtw 1]
|
|
.L2388:
|
|
adrp x1, .LANCHOR108
|
|
adrp x2, .LANCHOR38
|
|
adrp x22, .LANCHOR186
|
|
add x4, x19, 16
|
|
ldr x6, [x1, #:lo12:.LANCHOR108]
|
|
adrp x1, .LANCHOR58
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
mov w27, 0
|
|
ldrh w7, [x1, #:lo12:.LANCHOR58]
|
|
add x1, x19, 16
|
|
str x1, [x29, 184]
|
|
mov w8, 65535
|
|
ldrh w1, [x2, #:lo12:.LANCHOR38]
|
|
mov w10, 56
|
|
str x2, [x29, 160]
|
|
add x1, x1, 8
|
|
add x1, x19, x1, lsl 1
|
|
.L2389:
|
|
cmp x1, x4
|
|
bne .L2393
|
|
ldrb w1, [x19, 8]
|
|
cmp w1, 1
|
|
bne .L2465
|
|
adrp x1, .LANCHOR16
|
|
ldrb w1, [x1, #:lo12:.LANCHOR16]
|
|
cmp w1, 0
|
|
cset w1, ne
|
|
str w1, [x29, 176]
|
|
.L2394:
|
|
ldr w2, [x29, 176]
|
|
mov w1, w27
|
|
adrp x24, .LC69
|
|
adrp x25, .LANCHOR241
|
|
add x24, x24, :lo12:.LC69
|
|
add x25, x25, :lo12:.LANCHOR241
|
|
mov x28, 0
|
|
bl FlashReadPages
|
|
adrp x0, .LANCHOR165
|
|
mov w5, 65535
|
|
str x0, [x29, 168]
|
|
ldr w21, [x0, #:lo12:.LANCHOR165]
|
|
sub w21, w21, #1
|
|
.L2395:
|
|
and w0, w28, 65535
|
|
cmp w27, w0
|
|
bhi .L2400
|
|
bne .L2398
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
ldr w0, [x0, 4]
|
|
.L2544:
|
|
lsr w0, w0, 10
|
|
bl P2V_plane
|
|
ldrb w1, [x19, 8]
|
|
and w27, w0, 65535
|
|
cmp w1, 1
|
|
bne .L2402
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbnz w0, .L2402
|
|
adrp x0, .LANCHOR17
|
|
add x0, x0, :lo12:.LANCHOR17
|
|
ldrh w20, [x0, w20, sxtw 1]
|
|
.L2402:
|
|
ldr x0, [x29, 144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w20
|
|
bne .L2403
|
|
strh w20, [x19, 2]
|
|
strb wzr, [x19, 6]
|
|
strh wzr, [x19, 4]
|
|
.L2403:
|
|
ldr w0, [x29, 180]
|
|
cmp w20, w26
|
|
cset w2, eq
|
|
cmp w27, w0
|
|
cset w0, eq
|
|
tst w2, w0
|
|
beq .L2404
|
|
.L2550:
|
|
mov w2, w27
|
|
mov w1, w20
|
|
mov x0, x19
|
|
bl ftl_sb_update_avl_pages
|
|
b .L2542
|
|
.L2385:
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
add x0, x19, x21, sxtw 1
|
|
ldrh w0, [x0, 16]
|
|
b .L2384
|
|
.L2386:
|
|
mov w1, 0
|
|
bl FtlGetLastWrittenPage
|
|
mov w20, w0
|
|
cmn w0, #1
|
|
beq .L2387
|
|
.L2464:
|
|
mov w23, w20
|
|
b .L2388
|
|
.L2387:
|
|
cbz w26, .L2390
|
|
mov w2, 2350
|
|
adrp x1, .LANCHOR240
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR240
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2390:
|
|
ldr w0, [x29, 180]
|
|
cmp w0, 0
|
|
ccmp w21, w0, 4, ne
|
|
beq .L2391
|
|
mov w2, 2351
|
|
adrp x1, .LANCHOR240
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR240
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2391:
|
|
strh wzr, [x19, 2]
|
|
b .L2549
|
|
.L2393:
|
|
ldrh w2, [x4]
|
|
cmp w2, w8
|
|
beq .L2392
|
|
umaddl x5, w27, w10, x0
|
|
orr w2, w23, w2, lsl 10
|
|
add w3, w27, 1
|
|
str w2, [x5, 4]
|
|
mul w2, w27, w7
|
|
and w27, w3, 65535
|
|
str xzr, [x5, 8]
|
|
asr w2, w2, 2
|
|
add x2, x6, x2, sxtw 2
|
|
str x2, [x5, 16]
|
|
.L2392:
|
|
add x4, x4, 2
|
|
b .L2389
|
|
.L2465:
|
|
str wzr, [x29, 176]
|
|
b .L2394
|
|
.L2400:
|
|
mov x0, 56
|
|
ldr x2, [x22, #:lo12:.LANCHOR186]
|
|
mul x0, x28, x0
|
|
add x1, x2, x0
|
|
ldr w0, [x2, x0]
|
|
cbnz w0, .L2396
|
|
ldr x6, [x1, 16]
|
|
ldr w4, [x6, 4]
|
|
cmn w4, #1
|
|
beq .L2397
|
|
ldr x0, [x29, 168]
|
|
ldr w1, [x0, #:lo12:.LANCHOR165]
|
|
mov w0, w4
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L2397
|
|
ldr x0, [x29, 168]
|
|
add w4, w4, 1
|
|
str w4, [x0, #:lo12:.LANCHOR165]
|
|
.L2397:
|
|
ldr w0, [x6]
|
|
cmn w0, #1
|
|
bne .L2399
|
|
.L2398:
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
and x28, x28, 65535
|
|
mov x1, 56
|
|
and w20, w20, 65535
|
|
madd x28, x28, x1, x0
|
|
ldr w0, [x28, 4]
|
|
b .L2544
|
|
.L2396:
|
|
ldr w1, [x1, 4]
|
|
mov x0, x24
|
|
bl printf
|
|
ldrh w0, [x19]
|
|
and w5, w23, 65535
|
|
strh w0, [x25]
|
|
.L2399:
|
|
add x28, x28, 1
|
|
b .L2395
|
|
.L2404:
|
|
mov w0, 65535
|
|
cmp w5, w0
|
|
bne .L2405
|
|
cbnz w1, .L2406
|
|
.L2405:
|
|
adrp x24, .LANCHOR139
|
|
and w6, w23, 65535
|
|
ldr w0, [x24, #:lo12:.LANCHOR139]
|
|
cmn w0, #1
|
|
bne .L2407
|
|
str w21, [x24, #:lo12:.LANCHOR139]
|
|
.L2407:
|
|
add w0, w26, 7
|
|
ldr w7, [x24, #:lo12:.LANCHOR139]
|
|
cmp w0, w23, uxth
|
|
bge .L2466
|
|
sub w23, w6, #7
|
|
and w23, w23, 65535
|
|
.L2408:
|
|
mov w3, -1
|
|
adrp x5, .LANCHOR123
|
|
mov w28, w3
|
|
add x5, x5, :lo12:.LANCHOR123
|
|
mov w4, 65535
|
|
.L2409:
|
|
cmp w23, w6
|
|
bhi .L2424
|
|
ldr x1, [x29, 160]
|
|
mov w25, 0
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
mov w10, 56
|
|
ldr x2, [x29, 184]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR38]
|
|
add x1, x1, 8
|
|
add x1, x19, x1, lsl 1
|
|
b .L2425
|
|
.L2466:
|
|
mov w23, w26
|
|
b .L2408
|
|
.L2411:
|
|
ldrh w8, [x2]
|
|
cmp w8, w4
|
|
beq .L2410
|
|
umaddl x11, w25, w10, x0
|
|
add w25, w25, 1
|
|
and w25, w25, 65535
|
|
orr w8, w23, w8, lsl 10
|
|
str w8, [x11, 4]
|
|
.L2410:
|
|
add x2, x2, 2
|
|
.L2425:
|
|
cmp x2, x1
|
|
bne .L2411
|
|
ldr w2, [x29, 176]
|
|
mov w1, w25
|
|
str x5, [x29, 112]
|
|
str w4, [x29, 120]
|
|
str w7, [x29, 128]
|
|
str w6, [x29, 136]
|
|
str w3, [x29, 152]
|
|
bl FlashReadPages
|
|
adrp x1, .LANCHOR16
|
|
mov w2, 56
|
|
ldr w0, [x24, #:lo12:.LANCHOR139]
|
|
sxtw x12, w23
|
|
ldrb w10, [x1, #:lo12:.LANCHOR16]
|
|
mov w11, 1
|
|
ldr x1, [x22, #:lo12:.LANCHOR186]
|
|
ldr w4, [x29, 120]
|
|
ldr w7, [x29, 128]
|
|
ldr w6, [x29, 136]
|
|
ldr w3, [x29, 152]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x25, w25, w2, x1
|
|
ldr x5, [x29, 112]
|
|
mov w2, 0
|
|
.L2412:
|
|
cmp x25, x1
|
|
bne .L2422
|
|
cbz w2, .L2423
|
|
str w0, [x24, #:lo12:.LANCHOR139]
|
|
.L2423:
|
|
add w23, w23, 1
|
|
and w23, w23, 65535
|
|
b .L2409
|
|
.L2422:
|
|
ldr w8, [x1]
|
|
cbnz w8, .L2413
|
|
ldr x8, [x1, 16]
|
|
ldrh w13, [x8]
|
|
cmp w13, w4
|
|
beq .L2468
|
|
ldr w8, [x8, 4]
|
|
cmn w8, #1
|
|
beq .L2468
|
|
cmn w3, #1
|
|
bne .L2470
|
|
ldrh w2, [x5, x12, lsl 1]
|
|
cmp w2, w4
|
|
bne .L2415
|
|
cbz w10, .L2470
|
|
.L2415:
|
|
cmp w21, w0
|
|
mov w2, w11
|
|
csel w3, w3, w0, eq
|
|
.L2414:
|
|
mov w28, w0
|
|
add x1, x1, 56
|
|
mov w0, w8
|
|
b .L2412
|
|
.L2413:
|
|
cbz w2, .L2416
|
|
str w0, [x24, #:lo12:.LANCHOR139]
|
|
.L2416:
|
|
adrp x0, .LANCHOR241
|
|
ldrh w1, [x19]
|
|
strh w1, [x0, #:lo12:.LANCHOR241]
|
|
ldrb w0, [x19, 8]
|
|
cbnz w0, .L2406
|
|
adrp x0, .LANCHOR123
|
|
add x0, x0, :lo12:.LANCHOR123
|
|
ldrh w1, [x0, w23, sxtw 1]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L2418
|
|
cmn w3, #1
|
|
beq .L2419
|
|
str w3, [x24, #:lo12:.LANCHOR139]
|
|
.L2406:
|
|
adrp x0, .LANCHOR242
|
|
mov w23, w26
|
|
mov w1, 1
|
|
adrp x28, .LANCHOR139
|
|
strh w1, [x0, #:lo12:.LANCHOR242]
|
|
add x0, x28, :lo12:.LANCHOR139
|
|
str x0, [x29, 112]
|
|
.L2426:
|
|
ldr x2, [x29, 160]
|
|
adrp x1, .LANCHOR16
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
mov w24, 0
|
|
ldrb w5, [x1, #:lo12:.LANCHOR16]
|
|
mov w6, 65535
|
|
ldr x3, [x29, 184]
|
|
ldrh w2, [x2, #:lo12:.LANCHOR38]
|
|
str x1, [x29, 128]
|
|
add x2, x2, 8
|
|
add x2, x19, x2, lsl 1
|
|
.L2427:
|
|
cmp x2, x3
|
|
bne .L2430
|
|
ldr w2, [x29, 176]
|
|
mov w1, w24
|
|
mov x25, 0
|
|
bl FlashReadPages
|
|
mov w0, 56
|
|
umull x0, w24, w0
|
|
str x0, [x29, 136]
|
|
adrp x0, .LANCHOR241
|
|
add x0, x0, :lo12:.LANCHOR241
|
|
str x0, [x29, 120]
|
|
.L2431:
|
|
ldr x0, [x29, 136]
|
|
cmp x25, x0
|
|
bne .L2457
|
|
ldrb w0, [x19, 8]
|
|
add w23, w23, 1
|
|
and w23, w23, 65535
|
|
cmp w0, 1
|
|
bne .L2458
|
|
ldr x0, [x29, 128]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2458
|
|
adrp x0, .LANCHOR53
|
|
ldrh w0, [x0, #:lo12:.LANCHOR53]
|
|
cmp w0, w23
|
|
bne .L2458
|
|
cmp w20, w23
|
|
beq .L2433
|
|
.L2458:
|
|
ldr x0, [x29, 144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w23
|
|
bne .L2426
|
|
ldr x0, [x29, 160]
|
|
mov w2, 65535
|
|
strh w23, [x19, 2]
|
|
strh wzr, [x19, 4]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR38]
|
|
mov w0, 0
|
|
.L2459:
|
|
cmp w0, w1
|
|
beq .L2542
|
|
ldr x4, [x29, 184]
|
|
ldrh w3, [x4], 2
|
|
str x4, [x29, 184]
|
|
cmp w3, w2
|
|
beq .L2460
|
|
strb w0, [x19, 6]
|
|
b .L2542
|
|
.L2419:
|
|
cmp w21, w7
|
|
beq .L2420
|
|
str w7, [x24, #:lo12:.LANCHOR139]
|
|
b .L2406
|
|
.L2420:
|
|
ldr w0, [x24, #:lo12:.LANCHOR139]
|
|
.L2551:
|
|
sub w0, w0, #1
|
|
.L2545:
|
|
str w0, [x24, #:lo12:.LANCHOR139]
|
|
b .L2406
|
|
.L2418:
|
|
cmp w28, w21
|
|
beq .L2421
|
|
cmn w28, #1
|
|
beq .L2406
|
|
str w28, [x24, #:lo12:.LANCHOR139]
|
|
b .L2406
|
|
.L2421:
|
|
ldr w0, [x24, #:lo12:.LANCHOR139]
|
|
cmp w21, w0
|
|
bne .L2551
|
|
b .L2406
|
|
.L2468:
|
|
mov w8, w0
|
|
mov w0, w28
|
|
b .L2414
|
|
.L2470:
|
|
mov w2, 1
|
|
b .L2414
|
|
.L2424:
|
|
mov w0, -1
|
|
b .L2545
|
|
.L2430:
|
|
ldrh w1, [x3]
|
|
cmp w1, w6
|
|
beq .L2428
|
|
mov w4, 56
|
|
orr w1, w23, w1, lsl 10
|
|
umaddl x4, w24, w4, x0
|
|
str w1, [x4, 4]
|
|
ldrb w7, [x19, 8]
|
|
cmp w7, 1
|
|
bne .L2429
|
|
cbz w5, .L2429
|
|
orr w1, w1, -2147483648
|
|
str w1, [x4, 4]
|
|
.L2429:
|
|
add w24, w24, 1
|
|
and w24, w24, 65535
|
|
.L2428:
|
|
add x3, x3, 2
|
|
b .L2427
|
|
.L2457:
|
|
ldr x4, [x22, #:lo12:.LANCHOR186]
|
|
add x4, x4, x25
|
|
ldr w5, [x4, 4]
|
|
str w5, [x29, 204]
|
|
lsr w0, w5, 10
|
|
bl P2V_plane
|
|
and w0, w0, 65535
|
|
cmp w23, w26
|
|
bcc .L2432
|
|
ldr w1, [x29, 180]
|
|
ccmp w1, w0, 0, eq
|
|
bhi .L2432
|
|
cmp w23, w20
|
|
ccmp w27, w0, 0, eq
|
|
beq .L2433
|
|
ldr w0, [x4]
|
|
cmn w0, #1
|
|
beq .L2434
|
|
ldr x3, [x4, 16]
|
|
mov w0, 61589
|
|
ldrh w1, [x3]
|
|
cmp w1, w0
|
|
beq .L2435
|
|
ldrh w0, [x19]
|
|
.L2547:
|
|
bl decrement_vpc_count
|
|
b .L2432
|
|
.L2435:
|
|
ldr w21, [x3, 4]
|
|
cmn w21, #1
|
|
beq .L2436
|
|
ldr x0, [x29, 168]
|
|
ldr w1, [x0, #:lo12:.LANCHOR165]
|
|
mov w0, w21
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L2436
|
|
ldr x1, [x29, 168]
|
|
add w0, w21, 1
|
|
str w0, [x1, #:lo12:.LANCHOR165]
|
|
.L2436:
|
|
ldp w24, w0, [x3, 8]
|
|
add x1, x29, 200
|
|
str w0, [x29, 196]
|
|
mov w2, 0
|
|
mov w0, w24
|
|
bl log2phys
|
|
ldr w1, [x28, #:lo12:.LANCHOR139]
|
|
ldr w3, [x29, 196]
|
|
cmn w1, #1
|
|
beq .L2437
|
|
mov w0, w21
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L2437
|
|
cmn w3, #1
|
|
beq .L2438
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
mov w2, 0
|
|
mov w1, 1
|
|
add x0, x0, x25
|
|
ldr x4, [x0, 16]
|
|
str w3, [x0, 4]
|
|
str x4, [x29, 152]
|
|
bl FlashReadPages
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
ldr x4, [x29, 152]
|
|
add x3, x0, x25
|
|
ldr w0, [x0, x25]
|
|
cmn w0, #1
|
|
bne .L2439
|
|
.L2440:
|
|
mov w0, -1
|
|
str w0, [x29, 196]
|
|
.L2447:
|
|
ldr w3, [x29, 196]
|
|
cmn w3, #1
|
|
beq .L2432
|
|
.L2463:
|
|
lsr w0, w3, 10
|
|
bl P2V_block_in_plane
|
|
and w24, w0, 65535
|
|
adrp x0, .LANCHOR40
|
|
mov w3, w24
|
|
ldrh w0, [x0, #:lo12:.LANCHOR40]
|
|
cmp w0, w24
|
|
bhi .L2453
|
|
mov w2, 2683
|
|
adrp x1, .LANCHOR240
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR240
|
|
add x0, x0, :lo12:.LC5
|
|
str w24, [x29, 152]
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
ldr w3, [x29, 152]
|
|
.L2453:
|
|
adrp x1, .LANCHOR85
|
|
ubfiz x0, x24, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x1, x0]
|
|
cbz w0, .L2454
|
|
mov w0, w3
|
|
b .L2547
|
|
.L2438:
|
|
ldp w1, w0, [x29, 200]
|
|
cmp w1, w0
|
|
bne .L2432
|
|
mov w2, 1
|
|
add x1, x29, 196
|
|
mov w0, w24
|
|
bl log2phys
|
|
.L2432:
|
|
add x25, x25, 56
|
|
b .L2431
|
|
.L2439:
|
|
ldr w0, [x4, 8]
|
|
cmp w24, w0
|
|
bne .L2440
|
|
ldr w0, [x4, 4]
|
|
str w0, [x29, 152]
|
|
str x4, [x29, 104]
|
|
uxtw x1, w0
|
|
ldr w0, [x28, #:lo12:.LANCHOR139]
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L2440
|
|
ldp w0, w1, [x29, 200]
|
|
ldr x4, [x29, 104]
|
|
cmp w0, w1
|
|
ldr w1, [x29, 196]
|
|
bne .L2442
|
|
.L2546:
|
|
mov w0, w24
|
|
bl FtlReUsePrevPpa
|
|
b .L2440
|
|
.L2442:
|
|
cmp w0, w1
|
|
beq .L2440
|
|
cmn w0, #1
|
|
beq .L2443
|
|
ldr x4, [x3, 16]
|
|
mov w2, 0
|
|
str w0, [x3, 4]
|
|
mov w1, 1
|
|
str x4, [x29, 104]
|
|
mov x0, x3
|
|
bl FlashReadPages
|
|
ldr x4, [x29, 104]
|
|
.L2444:
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
ldr w0, [x0, x25]
|
|
cmn w0, #1
|
|
beq .L2445
|
|
ldr x0, [x29, 112]
|
|
ldr w3, [x4, 4]
|
|
mov w1, w3
|
|
ldr w0, [x0]
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L2445
|
|
ldr w0, [x29, 152]
|
|
mov w1, w3
|
|
bl ftl_cmp_data_ver
|
|
cbz w0, .L2440
|
|
.L2445:
|
|
ldr w1, [x29, 196]
|
|
b .L2546
|
|
.L2443:
|
|
str w0, [x3]
|
|
b .L2444
|
|
.L2437:
|
|
ldp w1, w0, [x29, 200]
|
|
cmp w1, w0
|
|
beq .L2447
|
|
cmn w3, #1
|
|
beq .L2449
|
|
adrp x0, .LANCHOR43
|
|
ubfx x3, x3, 10, 21
|
|
ldr w0, [x0, #:lo12:.LANCHOR43]
|
|
cmp w3, w0
|
|
bcs .L2432
|
|
.L2449:
|
|
mov w2, 1
|
|
add x1, x29, 204
|
|
mov w0, w24
|
|
bl log2phys
|
|
ldr w3, [x29, 200]
|
|
cmn w3, #1
|
|
beq .L2447
|
|
ldr w0, [x29, 196]
|
|
cmp w3, w0
|
|
beq .L2463
|
|
lsr w0, w3, 10
|
|
bl P2V_block_in_plane
|
|
adrp x1, .LANCHOR93
|
|
and w0, w0, 65535
|
|
ldrh w1, [x1, #:lo12:.LANCHOR93]
|
|
cmp w1, w0
|
|
beq .L2452
|
|
adrp x1, .LANCHOR94
|
|
ldrh w1, [x1, #:lo12:.LANCHOR94]
|
|
cmp w1, w0
|
|
beq .L2452
|
|
adrp x1, .LANCHOR95
|
|
ldrh w1, [x1, #:lo12:.LANCHOR95]
|
|
cmp w1, w0
|
|
bne .L2447
|
|
.L2452:
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
mov w2, 0
|
|
mov w1, 1
|
|
ldr x4, [x0, 16]
|
|
str w3, [x0, 4]
|
|
str x4, [x29, 152]
|
|
bl FlashReadPages
|
|
ldr x0, [x22, #:lo12:.LANCHOR186]
|
|
ldr w0, [x0]
|
|
cmn w0, #1
|
|
beq .L2447
|
|
ldr x4, [x29, 152]
|
|
mov w0, w21
|
|
ldr w1, [x4, 4]
|
|
bl ftl_cmp_data_ver
|
|
cbnz w0, .L2447
|
|
mov w2, 1
|
|
add x1, x29, 200
|
|
mov w0, w24
|
|
bl log2phys
|
|
b .L2447
|
|
.L2454:
|
|
mov w1, w24
|
|
adrp x0, .LC70
|
|
add x0, x0, :lo12:.LC70
|
|
bl printf
|
|
b .L2432
|
|
.L2434:
|
|
ldr x1, [x29, 120]
|
|
mov w2, w21
|
|
ldrh w0, [x19]
|
|
strh w0, [x1]
|
|
mov w1, w5
|
|
adrp x0, .LC71
|
|
add x0, x0, :lo12:.LC71
|
|
bl printf
|
|
adrp x2, .LANCHOR243
|
|
ldr w0, [x2, #:lo12:.LANCHOR243]
|
|
cmp w0, 31
|
|
bhi .L2455
|
|
adrp x1, .LANCHOR244
|
|
add x1, x1, :lo12:.LANCHOR244
|
|
ldr w3, [x29, 204]
|
|
str w3, [x1, w0, uxtw 2]
|
|
add w0, w0, 1
|
|
str w0, [x2, #:lo12:.LANCHOR243]
|
|
.L2455:
|
|
ldrh w0, [x19]
|
|
bl decrement_vpc_count
|
|
ldr w0, [x28, #:lo12:.LANCHOR139]
|
|
cmn w0, #1
|
|
bne .L2456
|
|
.L2548:
|
|
str w21, [x28, #:lo12:.LANCHOR139]
|
|
b .L2432
|
|
.L2456:
|
|
cmp w21, w0
|
|
bcs .L2432
|
|
b .L2548
|
|
.L2460:
|
|
add w0, w0, 1
|
|
and w0, w0, 65535
|
|
b .L2459
|
|
.L2433:
|
|
strb w27, [x19, 6]
|
|
strh w20, [x19, 2]
|
|
b .L2550
|
|
.size FtlRecoverySuperblock, .-FtlRecoverySuperblock
|
|
.section .text.FtlGcScanTempBlk,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcScanTempBlk
|
|
.type FtlGcScanTempBlk, %function
|
|
FtlGcScanTempBlk:
|
|
stp x29, x30, [sp, -176]!
|
|
mov w2, 65535
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x0
|
|
adrp x0, .LANCHOR245
|
|
stp x21, x22, [sp, 32]
|
|
stp x23, x24, [sp, 48]
|
|
ldrh w20, [x0, #:lo12:.LANCHOR245]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cmp w20, w2
|
|
str x0, [x29, 96]
|
|
beq .L2580
|
|
cbnz w20, .L2553
|
|
.L2554:
|
|
bl FtlGcPageVarInit
|
|
b .L2555
|
|
.L2580:
|
|
mov w20, 0
|
|
.L2553:
|
|
adrp x0, .LANCHOR52
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w1
|
|
beq .L2554
|
|
.L2555:
|
|
adrp x24, .LANCHOR74
|
|
add x24, x24, :lo12:.LANCHOR74
|
|
mov w27, -1
|
|
.L2556:
|
|
ldrh w1, [x19]
|
|
mov w0, 65535
|
|
strb wzr, [x19, 8]
|
|
cmp w1, w0
|
|
beq .L2581
|
|
mov w28, 56
|
|
.L2579:
|
|
adrp x1, .LANCHOR107
|
|
adrp x23, .LANCHOR186
|
|
add x3, x19, 16
|
|
mov w21, 0
|
|
ldr x5, [x1, #:lo12:.LANCHOR107]
|
|
adrp x1, .LANCHOR57
|
|
ldr x0, [x23, #:lo12:.LANCHOR186]
|
|
mov w10, 65535
|
|
ldrh w6, [x1, #:lo12:.LANCHOR57]
|
|
adrp x1, .LANCHOR108
|
|
ldr x7, [x1, #:lo12:.LANCHOR108]
|
|
adrp x1, .LANCHOR58
|
|
ldrh w8, [x1, #:lo12:.LANCHOR58]
|
|
adrp x1, .LANCHOR38
|
|
ldrh w1, [x1, #:lo12:.LANCHOR38]
|
|
add x1, x1, 8
|
|
add x1, x19, x1, lsl 1
|
|
.L2558:
|
|
cmp x3, x1
|
|
bne .L2560
|
|
mov w2, 0
|
|
mov w1, w21
|
|
bl FlashReadPages
|
|
adrp x25, .LANCHOR2
|
|
umull x0, w21, w28
|
|
add x25, x25, :lo12:.LANCHOR2
|
|
mov x22, 0
|
|
str x0, [x29, 104]
|
|
.L2561:
|
|
ldr x0, [x29, 104]
|
|
cmp x22, x0
|
|
bne .L2578
|
|
adrp x0, .LANCHOR52
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
ldrh w0, [x0, #:lo12:.LANCHOR52]
|
|
cmp w0, w20
|
|
bhi .L2579
|
|
.L2581:
|
|
mov w2, 0
|
|
b .L2557
|
|
.L2560:
|
|
ldrh w2, [x3]
|
|
cmp w2, w10
|
|
beq .L2559
|
|
umaddl x4, w21, w28, x0
|
|
orr w2, w20, w2, lsl 10
|
|
str w2, [x4, 4]
|
|
mul w2, w21, w6
|
|
asr w2, w2, 2
|
|
add x2, x5, x2, sxtw 2
|
|
str x2, [x4, 8]
|
|
mul w2, w21, w8
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
asr w2, w2, 2
|
|
add x2, x7, x2, sxtw 2
|
|
str x2, [x4, 16]
|
|
.L2559:
|
|
add x3, x3, 2
|
|
b .L2558
|
|
.L2578:
|
|
ldr x4, [x23, #:lo12:.LANCHOR186]
|
|
add x5, x4, x22
|
|
ldr w26, [x5, 4]
|
|
lsr w0, w26, 10
|
|
bl P2V_plane
|
|
and w2, w0, 65535
|
|
ldr w0, [x4, x22]
|
|
ldr x21, [x5, 16]
|
|
cbnz w0, .L2562
|
|
ldrh w1, [x21]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L2563
|
|
.L2566:
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2597
|
|
adrp x0, .LANCHOR138
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR138]
|
|
.L2557:
|
|
ldr x1, [x29, 96]
|
|
mov w0, -1
|
|
strb w2, [x19, 6]
|
|
strh w20, [x19, 2]
|
|
strh w0, [x1, #:lo12:.LANCHOR245]
|
|
mov w1, w20
|
|
mov x0, x19
|
|
bl ftl_sb_update_avl_pages
|
|
mov w0, w27
|
|
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
|
|
.L2563:
|
|
ldr w0, [x21, 8]
|
|
ldr w1, [x24]
|
|
cmp w0, w1
|
|
bhi .L2566
|
|
ldrb w1, [x25]
|
|
cbnz w1, .L2569
|
|
.L2570:
|
|
ldp w2, w0, [x21, 8]
|
|
mov w1, w26
|
|
add x22, x22, 56
|
|
bl FtlGcUpdatePage
|
|
b .L2561
|
|
.L2569:
|
|
add x1, x29, 116
|
|
mov w2, 0
|
|
bl log2phys
|
|
ldr w0, [x21, 12]
|
|
ldr w1, [x29, 116]
|
|
cmp w0, w1
|
|
bne .L2570
|
|
cmn w0, #1
|
|
beq .L2570
|
|
str w0, [x29, 124]
|
|
adrp x0, .LANCHOR194
|
|
mov w2, 0
|
|
mov w1, 1
|
|
ldr x0, [x0, #:lo12:.LANCHOR194]
|
|
str x0, [x29, 128]
|
|
adrp x0, .LANCHOR196
|
|
ldr x0, [x0, #:lo12:.LANCHOR196]
|
|
str x0, [x29, 136]
|
|
add x0, x29, 120
|
|
bl FlashReadPages
|
|
adrp x0, .LANCHOR55
|
|
ldr x2, [x23, #:lo12:.LANCHOR186]
|
|
ldr x4, [x29, 128]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR55]
|
|
add x2, x2, x22
|
|
mov x0, 0
|
|
ubfiz x1, x1, 9, 16
|
|
.L2571:
|
|
cmp x0, x1
|
|
beq .L2570
|
|
ldr x5, [x2, 8]
|
|
ldr w6, [x5, x0]
|
|
add x0, x0, 4
|
|
add x5, x4, x0
|
|
ldr w5, [x5, -4]
|
|
cmp w6, w5
|
|
beq .L2571
|
|
ldrh w1, [x19]
|
|
adrp x0, .LC72
|
|
ldr w2, [x29, 124]
|
|
add x0, x0, :lo12:.LC72
|
|
bl printf
|
|
.L2597:
|
|
adrp x0, .LANCHOR85
|
|
ldrh w1, [x19]
|
|
ldr x0, [x0, #:lo12:.LANCHOR85]
|
|
strh wzr, [x0, x1, lsl 1]
|
|
ldrh w0, [x19]
|
|
bl INSERT_FREE_LIST
|
|
adrp x1, .LANCHOR213
|
|
mov w0, -1
|
|
strh w0, [x19]
|
|
strh w0, [x1, #:lo12:.LANCHOR213]
|
|
.L2596:
|
|
bl FtlGcPageVarInit
|
|
mov w20, 0
|
|
b .L2556
|
|
.L2562:
|
|
ldrh w1, [x19]
|
|
mov w2, w26
|
|
adrp x0, .LC73
|
|
add x0, x0, :lo12:.LC73
|
|
bl printf
|
|
adrp x0, .LANCHOR104
|
|
ldr w1, [x0, #:lo12:.LANCHOR104]
|
|
ldrh w0, [x19]
|
|
cbnz w1, .L2574
|
|
adrp x1, .LANCHOR16
|
|
ldrb w1, [x1, #:lo12:.LANCHOR16]
|
|
cbz w1, .L2575
|
|
.L2574:
|
|
adrp x2, .LANCHOR80
|
|
ubfiz x1, x0, 1, 16
|
|
ldr x2, [x2, #:lo12:.LANCHOR80]
|
|
ldrh w1, [x2, x1]
|
|
cmp w1, 159
|
|
bls .L2576
|
|
.L2575:
|
|
ldr x1, [x23, #:lo12:.LANCHOR186]
|
|
ldr w1, [x1, x22]
|
|
cmn w1, #1
|
|
bne .L2577
|
|
.L2576:
|
|
ldr x1, [x23, #:lo12:.LANCHOR186]
|
|
add x22, x1, x22
|
|
ldr w27, [x22, 4]
|
|
.L2577:
|
|
adrp x1, .LANCHOR85
|
|
ubfiz x0, x0, 1, 16
|
|
ldr x1, [x1, #:lo12:.LANCHOR85]
|
|
strh wzr, [x1, x0]
|
|
ldrh w0, [x19]
|
|
bl INSERT_FREE_LIST
|
|
mov w0, -1
|
|
strh w0, [x19]
|
|
b .L2596
|
|
.size FtlGcScanTempBlk, .-FtlGcScanTempBlk
|
|
.section .text.FtlGcFreeTempBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlGcFreeTempBlock
|
|
.type FtlGcFreeTempBlock, %function
|
|
FtlGcFreeTempBlock:
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbz w0, .L2599
|
|
mov w0, 0
|
|
ret
|
|
.L2599:
|
|
stp x29, x30, [sp, -112]!
|
|
mov w1, 65535
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR95
|
|
stp x21, x22, [sp, 32]
|
|
add x0, x19, :lo12:.LANCHOR95
|
|
ldrh w20, [x19, #:lo12:.LANCHOR95]
|
|
adrp x21, .LANCHOR138
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
cmp w20, w1
|
|
stp x27, x28, [sp, 80]
|
|
beq .L2601
|
|
adrp x1, .LANCHOR52
|
|
ldrh w1, [x1, #:lo12:.LANCHOR52]
|
|
bl FtlGcScanTempBlk
|
|
str w0, [x29, 108]
|
|
cmn w0, #1
|
|
beq .L2601
|
|
adrp x0, .LANCHOR80
|
|
ubfiz x20, x20, 1, 16
|
|
ldr x1, [x0, #:lo12:.LANCHOR80]
|
|
ldrh w0, [x1, x20]
|
|
cmp w0, 4
|
|
bls .L2602
|
|
sub w0, w0, #5
|
|
strh w0, [x1, x20]
|
|
mov w0, 1
|
|
bl FtlEctTblFlush
|
|
.L2602:
|
|
ldr w0, [x21, #:lo12:.LANCHOR138]
|
|
cbnz w0, .L2603
|
|
adrp x0, .LANCHOR141
|
|
add x0, x0, :lo12:.LANCHOR141
|
|
ldr w1, [x0, 96]
|
|
add w1, w1, 1
|
|
str w1, [x0, 96]
|
|
ldr w0, [x29, 108]
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
.L2603:
|
|
str wzr, [x21, #:lo12:.LANCHOR138]
|
|
mov w0, 1
|
|
.L2598:
|
|
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
|
|
.L2601:
|
|
str wzr, [x21, #:lo12:.LANCHOR138]
|
|
mov w0, 65535
|
|
ldrh w1, [x19, #:lo12:.LANCHOR95]
|
|
add x21, x19, :lo12:.LANCHOR95
|
|
cmp w1, w0
|
|
beq .L2625
|
|
bl FtlCacheWriteBack
|
|
adrp x20, .LANCHOR113
|
|
adrp x0, .LANCHOR52
|
|
ldrb w1, [x21, 7]
|
|
ldrh w2, [x20, #:lo12:.LANCHOR113]
|
|
mov x21, x0
|
|
ldrh w3, [x0, #:lo12:.LANCHOR52]
|
|
mul w1, w1, w3
|
|
cmp w2, w1
|
|
beq .L2605
|
|
mov w2, 193
|
|
adrp x1, .LANCHOR246
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR246
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2605:
|
|
add x0, x19, :lo12:.LANCHOR95
|
|
adrp x22, .LANCHOR85
|
|
ldrh w3, [x21, #:lo12:.LANCHOR52]
|
|
adrp x25, .LANCHOR74
|
|
ldrh w2, [x19, #:lo12:.LANCHOR95]
|
|
add x26, x20, :lo12:.LANCHOR113
|
|
ldrb w0, [x0, 7]
|
|
add x25, x25, :lo12:.LANCHOR74
|
|
ldr x1, [x22, #:lo12:.LANCHOR85]
|
|
mov w21, 0
|
|
adrp x27, .LANCHOR114
|
|
mul w0, w0, w3
|
|
strh w0, [x1, x2, lsl 1]
|
|
adrp x1, .LANCHOR166
|
|
ldrh w0, [x20, #:lo12:.LANCHOR113]
|
|
ldr w2, [x1, #:lo12:.LANCHOR166]
|
|
add w0, w0, w2
|
|
str w0, [x1, #:lo12:.LANCHOR166]
|
|
.L2606:
|
|
ldrh w0, [x26]
|
|
cmp w0, w21
|
|
bhi .L2610
|
|
mov w0, -1
|
|
bl decrement_vpc_count
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2611
|
|
ldrh w1, [x19, #:lo12:.LANCHOR95]
|
|
adrp x0, .LC74
|
|
add x0, x0, :lo12:.LC74
|
|
bl printf
|
|
.L2611:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR95]
|
|
ldr x2, [x22, #:lo12:.LANCHOR85]
|
|
ubfiz x1, x0, 1, 16
|
|
ldrh w1, [x2, x1]
|
|
cbz w1, .L2612
|
|
bl INSERT_DATA_LIST
|
|
.L2613:
|
|
adrp x0, .LANCHOR111
|
|
mov w21, -1
|
|
strh wzr, [x20, #:lo12:.LANCHOR113]
|
|
strh w21, [x19, #:lo12:.LANCHOR95]
|
|
strh wzr, [x0, #:lo12:.LANCHOR111]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
adrp x0, .LANCHOR213
|
|
strh w21, [x0, #:lo12:.LANCHOR213]
|
|
adrp x0, .LANCHOR90
|
|
ldrh w1, [x0, #:lo12:.LANCHOR90]
|
|
adrp x0, .LANCHOR232
|
|
ldrh w0, [x0, #:lo12:.LANCHOR232]
|
|
add w0, w0, w0, lsl 1
|
|
cmp w1, w0, lsr 2
|
|
ble .L2625
|
|
adrp x0, .LANCHOR181
|
|
mov w1, 20
|
|
strh w1, [x0, #:lo12:.LANCHOR181]
|
|
.L2625:
|
|
mov w0, 0
|
|
b .L2598
|
|
.L2610:
|
|
mov w24, 12
|
|
ldr x28, [x27, #:lo12:.LANCHOR114]
|
|
ldr w1, [x25]
|
|
umull x24, w21, w24
|
|
add x23, x28, x24
|
|
ldr w0, [x23, 8]
|
|
cmp w0, w1
|
|
bcc .L2607
|
|
.L2623:
|
|
ldrh w0, [x19, #:lo12:.LANCHOR95]
|
|
b .L2624
|
|
.L2607:
|
|
add x1, x29, 108
|
|
mov w2, 0
|
|
bl log2phys
|
|
ldr w0, [x28, x24]
|
|
ldr w1, [x29, 108]
|
|
cmp w0, w1
|
|
bne .L2609
|
|
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
|
|
.L2624:
|
|
bl decrement_vpc_count
|
|
b .L2608
|
|
.L2609:
|
|
ldr w0, [x23, 4]
|
|
cmp w1, w0
|
|
bne .L2623
|
|
.L2608:
|
|
add w21, w21, 1
|
|
and w21, w21, 65535
|
|
b .L2606
|
|
.L2612:
|
|
bl INSERT_FREE_LIST
|
|
b .L2613
|
|
.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, .LANCHOR52
|
|
adrp x19, .LANCHOR95
|
|
add x19, x19, :lo12:.LANCHOR95
|
|
ldrh w1, [x20, #:lo12:.LANCHOR52]
|
|
mov x0, x19
|
|
bl FtlGcScanTempBlk
|
|
ldrh w1, [x19, 2]
|
|
ldrh w0, [x20, #:lo12:.LANCHOR52]
|
|
cmp w1, w0
|
|
bcc .L2626
|
|
adrp x0, .LANCHOR130
|
|
add x0, x0, :lo12:.LANCHOR130
|
|
bl FtlMapBlkWriteDumpData
|
|
mov w0, 0
|
|
bl FtlGcFreeTempBlock
|
|
adrp x0, .LANCHOR138
|
|
str wzr, [x0, #:lo12:.LANCHOR138]
|
|
.L2626:
|
|
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, .LANCHOR243
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
adrp x19, .LANCHOR93
|
|
add x19, x19, :lo12:.LANCHOR93
|
|
str wzr, [x0, #:lo12:.LANCHOR243]
|
|
mov x0, x19
|
|
bl FtlRecoverySuperblock
|
|
mov x0, x19
|
|
adrp x19, .LANCHOR94
|
|
bl FtlSlcSuperblockCheck
|
|
add x19, x19, :lo12:.LANCHOR94
|
|
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.FtlSysBlkInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlSysBlkInit
|
|
.type FtlSysBlkInit, %function
|
|
FtlSysBlkInit:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR241
|
|
mov w1, -1
|
|
add x29, sp, 0
|
|
strh w1, [x0, #:lo12:.LANCHOR241]
|
|
adrp x0, .LANCHOR39
|
|
stp x19, x20, [sp, 16]
|
|
adrp x20, .LANCHOR242
|
|
ldrh w0, [x0, #:lo12:.LANCHOR39]
|
|
strh wzr, [x20, #:lo12:.LANCHOR242]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlScanSysBlk
|
|
adrp x0, .LANCHOR218
|
|
ldrh w1, [x0, #:lo12:.LANCHOR218]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L2632
|
|
.L2634:
|
|
mov w19, -1
|
|
.L2631:
|
|
mov w0, w19
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L2632:
|
|
bl FtlLoadSysInfo
|
|
mov w19, w0
|
|
cbnz w0, .L2634
|
|
bl FtlLoadMapInfo
|
|
bl FtlLoadVonderInfo
|
|
bl Ftl_load_ext_data
|
|
bl FtlLoadEctTbl
|
|
bl FtlFreeSysBLkSort
|
|
bl SupperBlkListInit
|
|
bl FtlPowerLostRecovery
|
|
mov w0, 1
|
|
bl FtlUpdateVaildLpn
|
|
adrp x0, .LANCHOR67
|
|
ldrh w2, [x0, #:lo12:.LANCHOR67]
|
|
adrp x0, .LANCHOR98
|
|
ldr x1, [x0, #:lo12:.LANCHOR98]
|
|
mov w0, 0
|
|
add x1, x1, 4
|
|
.L2635:
|
|
cmp w0, w2
|
|
bge .L2640
|
|
ldr w3, [x1], 16
|
|
tbz w3, #31, .L2636
|
|
.L2640:
|
|
adrp x3, .LANCHOR165
|
|
cmp w0, w2
|
|
ldr w1, [x3, #:lo12:.LANCHOR165]
|
|
add w1, w1, 32
|
|
str w1, [x3, #:lo12:.LANCHOR165]
|
|
bge .L2642
|
|
.L2637:
|
|
adrp x0, .LANCHOR85
|
|
adrp x1, .LANCHOR93
|
|
ldr x2, [x0, #:lo12:.LANCHOR85]
|
|
add x0, x1, :lo12:.LANCHOR93
|
|
ldrh w1, [x1, #:lo12:.LANCHOR93]
|
|
ldrh w4, [x0, 4]
|
|
lsl x1, x1, 1
|
|
ldrh w3, [x2, x1]
|
|
sub w3, w3, w4
|
|
adrp x4, .LANCHOR52
|
|
strh w3, [x2, x1]
|
|
strh wzr, [x0, 4]
|
|
ldrh w1, [x4, #:lo12:.LANCHOR52]
|
|
strh w1, [x0, 2]
|
|
adrp x1, .LANCHOR94
|
|
strb wzr, [x0, 6]
|
|
add x0, x1, :lo12:.LANCHOR94
|
|
ldrh w1, [x1, #:lo12:.LANCHOR94]
|
|
ldrh w5, [x0, 4]
|
|
lsl x1, x1, 1
|
|
ldrh w3, [x2, x1]
|
|
sub w3, w3, w5
|
|
strh w3, [x2, x1]
|
|
strb wzr, [x0, 6]
|
|
ldrh w1, [x4, #:lo12:.LANCHOR52]
|
|
strh w1, [x0, 2]
|
|
strh wzr, [x0, 4]
|
|
adrp x0, .LANCHOR82
|
|
add x0, x0, :lo12:.LANCHOR82
|
|
ldrh w1, [x0, 30]
|
|
add w1, w1, 1
|
|
strh w1, [x0, 30]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L2644:
|
|
bl FtlVpcTblFlush
|
|
b .L2631
|
|
.L2636:
|
|
add w0, w0, 1
|
|
b .L2635
|
|
.L2642:
|
|
ldrh w0, [x20, #:lo12:.LANCHOR242]
|
|
cbnz w0, .L2637
|
|
bl l2p_flush
|
|
b .L2644
|
|
.size FtlSysBlkInit, .-FtlSysBlkInit
|
|
.section .text.FtlLowFormat,"ax",@progbits
|
|
.align 2
|
|
.global FtlLowFormat
|
|
.type FtlLowFormat, %function
|
|
FtlLowFormat:
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L2677
|
|
stp x29, x30, [sp, -96]!
|
|
adrp x0, .LANCHOR203
|
|
mov w1, 0
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR66
|
|
ldr x0, [x0, #:lo12:.LANCHOR203]
|
|
adrp x20, .LANCHOR164
|
|
ldrh w2, [x19, #:lo12:.LANCHOR66]
|
|
stp x23, x24, [sp, 48]
|
|
adrp x24, .LANCHOR39
|
|
stp x21, x22, [sp, 32]
|
|
stp x25, x26, [sp, 64]
|
|
lsl w2, w2, 2
|
|
str x27, [sp, 80]
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR134
|
|
ldrh w2, [x19, #:lo12:.LANCHOR66]
|
|
mov w1, 0
|
|
ldr x0, [x0, #:lo12:.LANCHOR134]
|
|
lsl w2, w2, 2
|
|
bl ftl_memset
|
|
str wzr, [x20, #:lo12:.LANCHOR164]
|
|
adrp x0, .LANCHOR165
|
|
str wzr, [x0, #:lo12:.LANCHOR165]
|
|
ldrh w0, [x24, #:lo12:.LANCHOR39]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cbz w0, .L2648
|
|
bl FtlMakeBbt
|
|
.L2648:
|
|
adrp x23, .LANCHOR55
|
|
adrp x0, .LANCHOR193
|
|
mov w6, 23752
|
|
ldrh w1, [x23, #:lo12:.LANCHOR55]
|
|
movk w6, 0xa0f, lsl 16
|
|
ldr x4, [x0, #:lo12:.LANCHOR193]
|
|
adrp x0, .LANCHOR194
|
|
lsl w1, w1, 7
|
|
ldr x5, [x0, #:lo12:.LANCHOR194]
|
|
mov w0, 0
|
|
.L2649:
|
|
cmp w0, w1
|
|
blt .L2650
|
|
adrp x21, .LANCHOR40
|
|
adrp x22, .LANCHOR41
|
|
add x26, x22, :lo12:.LANCHOR41
|
|
mov w19, 0
|
|
ldrh w25, [x21, #:lo12:.LANCHOR40]
|
|
.L2651:
|
|
ldrh w0, [x26]
|
|
cmp w0, w25
|
|
bhi .L2652
|
|
adrp x26, .LANCHOR38
|
|
sub w1, w19, #2
|
|
ldrh w0, [x26, #:lo12:.LANCHOR38]
|
|
cmp w1, w0, lsl 1
|
|
ble .L2653
|
|
adrp x1, .LANCHOR65
|
|
add x25, x22, :lo12:.LANCHOR41
|
|
udiv w0, w19, w0
|
|
ldr w19, [x1, #:lo12:.LANCHOR65]
|
|
add w0, w0, w19
|
|
bl FtlSysBlkNumInit
|
|
ldrh w0, [x24, #:lo12:.LANCHOR39]
|
|
mov w19, 0
|
|
bl FtlFreeSysBlkQueueInit
|
|
ldrh w24, [x21, #:lo12:.LANCHOR40]
|
|
.L2654:
|
|
ldrh w0, [x25]
|
|
cmp w0, w24
|
|
bhi .L2655
|
|
.L2653:
|
|
add x27, x21, :lo12:.LANCHOR40
|
|
mov w24, 0
|
|
mov w25, 0
|
|
.L2656:
|
|
ldrh w0, [x27]
|
|
cmp w0, w25
|
|
bhi .L2657
|
|
adrp x0, .LANCHOR75
|
|
ldrh w1, [x22, #:lo12:.LANCHOR41]
|
|
adrp x2, .LANCHOR232
|
|
str w1, [x0, #:lo12:.LANCHOR75]
|
|
adrp x0, .LANCHOR42
|
|
ldrh w1, [x26, #:lo12:.LANCHOR38]
|
|
ldr w3, [x0, #:lo12:.LANCHOR42]
|
|
adrp x0, .LANCHOR74
|
|
udiv w6, w3, w1
|
|
ubfx x5, x6, 5, 16
|
|
str w6, [x0, #:lo12:.LANCHOR74]
|
|
add w4, w5, 36
|
|
strh w4, [x2, #:lo12:.LANCHOR232]
|
|
mov w4, 24
|
|
mul w4, w1, w4
|
|
cmp w24, w4
|
|
ble .L2658
|
|
sub w3, w3, w24
|
|
udiv w3, w3, w1
|
|
str w3, [x0, #:lo12:.LANCHOR74]
|
|
lsr w3, w3, 5
|
|
add w3, w3, 24
|
|
strh w3, [x2, #:lo12:.LANCHOR232]
|
|
.L2658:
|
|
adrp x3, .LANCHOR104
|
|
ldr w3, [x3, #:lo12:.LANCHOR104]
|
|
cmp w3, 1
|
|
bne .L2659
|
|
udiv w4, w24, w1
|
|
ldrh w3, [x2, #:lo12:.LANCHOR232]
|
|
add w4, w4, w3
|
|
add w4, w3, w4, asr 2
|
|
strh w4, [x2, #:lo12:.LANCHOR232]
|
|
.L2659:
|
|
adrp x3, .LANCHOR16
|
|
ldrb w3, [x3, #:lo12:.LANCHOR16]
|
|
cbz w3, .L2660
|
|
udiv w4, w24, w1
|
|
ldrh w3, [x2, #:lo12:.LANCHOR232]
|
|
add w4, w4, w3
|
|
add w4, w3, w4, asr 2
|
|
strh w4, [x2, #:lo12:.LANCHOR232]
|
|
.L2660:
|
|
adrp x3, .LANCHOR49
|
|
ldrh w3, [x3, #:lo12:.LANCHOR49]
|
|
cbz w3, .L2662
|
|
ldrh w4, [x2, #:lo12:.LANCHOR232]
|
|
add w4, w4, w3, lsr 1
|
|
strh w4, [x2, #:lo12:.LANCHOR232]
|
|
mul w4, w3, w1
|
|
cmp w24, w4
|
|
bge .L2662
|
|
add w3, w3, 32
|
|
str w6, [x0, #:lo12:.LANCHOR74]
|
|
add w3, w5, w3
|
|
strh w3, [x2, #:lo12:.LANCHOR232]
|
|
.L2662:
|
|
ldrh w3, [x2, #:lo12:.LANCHOR232]
|
|
adrp x25, .LANCHOR231
|
|
ldr w2, [x0, #:lo12:.LANCHOR74]
|
|
sub w2, w2, w3
|
|
mul w1, w2, w1
|
|
adrp x2, .LANCHOR52
|
|
str w1, [x25, #:lo12:.LANCHOR231]
|
|
ldrh w2, [x2, #:lo12:.LANCHOR52]
|
|
mul w1, w2, w1
|
|
str w1, [x0, #:lo12:.LANCHOR74]
|
|
ldrh w0, [x23, #:lo12:.LANCHOR55]
|
|
mul w1, w0, w1
|
|
adrp x0, .LANCHOR68
|
|
str w1, [x0, #:lo12:.LANCHOR68]
|
|
bl FtlBbmTblFlush
|
|
adrp x0, .LANCHOR43
|
|
add w1, w19, w24
|
|
ldr w2, [x0, #:lo12:.LANCHOR43]
|
|
adrp x0, .LANCHOR59
|
|
ldrh w0, [x0, #:lo12:.LANCHOR59]
|
|
add w0, w0, w2, lsr 3
|
|
cmp w1, w0
|
|
bls .L2664
|
|
adrp x0, .LC75
|
|
lsr w2, w2, 5
|
|
add x0, x0, :lo12:.LC75
|
|
bl printf
|
|
.L2664:
|
|
adrp x24, .LANCHOR85
|
|
ldrh w2, [x22, #:lo12:.LANCHOR41]
|
|
mov w1, 0
|
|
mov w22, -1
|
|
ldr x0, [x24, #:lo12:.LANCHOR85]
|
|
lsl w2, w2, 1
|
|
bl ftl_memset
|
|
adrp x0, .LANCHOR102
|
|
adrp x1, .LANCHOR213
|
|
ldrh w2, [x21, #:lo12:.LANCHOR40]
|
|
str wzr, [x0, #:lo12:.LANCHOR102]
|
|
add x0, x1, :lo12:.LANCHOR213
|
|
strh w22, [x1, #:lo12:.LANCHOR213]
|
|
mov w1, 255
|
|
lsr w2, w2, 3
|
|
strh wzr, [x0, 2]
|
|
strb wzr, [x0, 6]
|
|
strb wzr, [x0, 8]
|
|
adrp x0, .LANCHOR93
|
|
add x19, x0, :lo12:.LANCHOR93
|
|
strh wzr, [x0, #:lo12:.LANCHOR93]
|
|
mov w0, 1
|
|
strb w0, [x19, 8]
|
|
adrp x0, .LANCHOR1
|
|
strh wzr, [x19, 2]
|
|
ldr x0, [x0, #:lo12:.LANCHOR1]
|
|
strb wzr, [x19, 6]
|
|
bl ftl_memset
|
|
.L2665:
|
|
mov x0, x19
|
|
bl make_superblock
|
|
ldrb w1, [x19, 7]
|
|
ldrh w0, [x19]
|
|
cbnz w1, .L2666
|
|
ldr x1, [x24, #:lo12:.LANCHOR85]
|
|
ubfiz x0, x0, 1, 16
|
|
strh w22, [x1, x0]
|
|
ldrh w0, [x19]
|
|
add w0, w0, 1
|
|
strh w0, [x19]
|
|
b .L2665
|
|
.L2650:
|
|
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 .L2649
|
|
.L2652:
|
|
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 .L2651
|
|
.L2655:
|
|
mov w0, w24
|
|
mov w1, 1
|
|
add w24, w24, 1
|
|
bl FtlLowFormatEraseBlock
|
|
add w19, w19, w0
|
|
and w24, w24, 65535
|
|
and w19, w19, 65535
|
|
b .L2654
|
|
.L2657:
|
|
mov w0, w25
|
|
mov w1, 0
|
|
add w25, w25, 1
|
|
bl FtlLowFormatEraseBlock
|
|
add w24, w24, w0
|
|
and w25, w25, 65535
|
|
and w24, w24, 65535
|
|
b .L2656
|
|
.L2666:
|
|
ldr w1, [x20, #:lo12:.LANCHOR164]
|
|
ubfiz x0, x0, 1, 16
|
|
str w1, [x19, 12]
|
|
mov w22, -1
|
|
add w1, w1, 1
|
|
str w1, [x20, #:lo12:.LANCHOR164]
|
|
ldr x1, [x24, #:lo12:.LANCHOR85]
|
|
ldrh w2, [x19, 4]
|
|
strh w2, [x1, x0]
|
|
adrp x2, .LANCHOR94
|
|
add x0, x2, :lo12:.LANCHOR94
|
|
ldrh w1, [x19]
|
|
mov x19, x0
|
|
add w1, w1, 1
|
|
strh wzr, [x0, 2]
|
|
strh w1, [x2, #:lo12:.LANCHOR94]
|
|
mov w1, 1
|
|
strb wzr, [x0, 6]
|
|
strb w1, [x0, 8]
|
|
.L2667:
|
|
mov x0, x19
|
|
bl make_superblock
|
|
ldrb w1, [x19, 7]
|
|
ldrh w0, [x19]
|
|
cbnz w1, .L2668
|
|
ldr x1, [x24, #:lo12:.LANCHOR85]
|
|
ubfiz x0, x0, 1, 16
|
|
strh w22, [x1, x0]
|
|
ldrh w0, [x19]
|
|
add w0, w0, 1
|
|
strh w0, [x19]
|
|
b .L2667
|
|
.L2668:
|
|
ldr w1, [x20, #:lo12:.LANCHOR164]
|
|
ubfiz x0, x0, 1, 16
|
|
str w1, [x19, 12]
|
|
add w1, w1, 1
|
|
str w1, [x20, #:lo12:.LANCHOR164]
|
|
ldr x1, [x24, #:lo12:.LANCHOR85]
|
|
ldrh w2, [x19, 4]
|
|
mov w19, -1
|
|
strh w2, [x1, x0]
|
|
adrp x0, .LANCHOR95
|
|
strh w19, [x0, #:lo12:.LANCHOR95]
|
|
bl FtlFreeSysBlkQueueOut
|
|
adrp x2, .LANCHOR218
|
|
add x1, x2, :lo12:.LANCHOR218
|
|
strh w0, [x2, #:lo12:.LANCHOR218]
|
|
ldr w0, [x25, #:lo12:.LANCHOR231]
|
|
strh w0, [x1, 6]
|
|
ldr w0, [x20, #:lo12:.LANCHOR164]
|
|
str w0, [x1, 8]
|
|
add w0, w0, 1
|
|
strh wzr, [x1, 2]
|
|
strh w19, [x1, 4]
|
|
str w0, [x20, #:lo12:.LANCHOR164]
|
|
bl FtlVpcTblFlush
|
|
bl FtlSysBlkInit
|
|
cbnz w0, .L2647
|
|
adrp x0, .LANCHOR247
|
|
mov w1, 1
|
|
str w1, [x0, #:lo12:.LANCHOR247]
|
|
.L2647:
|
|
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
|
|
.L2677:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlLowFormat, .-FtlLowFormat
|
|
.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:
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbz w0, .L2681
|
|
mov w0, 0
|
|
ret
|
|
.L2684:
|
|
mov w0, 0
|
|
.L2680:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L2681:
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR16
|
|
add x29, sp, 0
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR105
|
|
cbz w0, .L2683
|
|
ldr w0, [x19, #:lo12:.LANCHOR105]
|
|
tbz x0, 0, .L2683
|
|
adrp x0, .LANCHOR95+4
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95+4]
|
|
cbnz w0, .L2684
|
|
.L2683:
|
|
adrp x20, .LANCHOR187
|
|
ldr w1, [x19, #:lo12:.LANCHOR105]
|
|
mov w3, 0
|
|
mov w2, 0
|
|
ldr x0, [x20, #:lo12:.LANCHOR187]
|
|
add x19, x19, :lo12:.LANCHOR105
|
|
bl FlashProgPages
|
|
mov w11, 0
|
|
mov w12, 56
|
|
.L2685:
|
|
ldr w1, [x19]
|
|
cmp w11, w1
|
|
bcc .L2687
|
|
ldr x0, [x20, #:lo12:.LANCHOR187]
|
|
bl FtlGcBufFree
|
|
str wzr, [x19]
|
|
adrp x0, .LANCHOR95+4
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95+4]
|
|
cbnz w0, .L2684
|
|
mov w0, 1
|
|
bl FtlGcFreeTempBlock
|
|
b .L2697
|
|
.L2687:
|
|
umull x0, w11, w12
|
|
ldr x2, [x20, #:lo12:.LANCHOR187]
|
|
add x1, x2, x0
|
|
ldr w2, [x2, x0]
|
|
ldr x3, [x1, 16]
|
|
cmn w2, #1
|
|
bne .L2686
|
|
adrp x0, .LANCHOR95
|
|
adrp x3, .LANCHOR85
|
|
ldrh w4, [x0, #:lo12:.LANCHOR95]
|
|
ldr x3, [x3, #:lo12:.LANCHOR85]
|
|
strh wzr, [x3, x4, lsl 1]
|
|
strh w2, [x0, #:lo12:.LANCHOR95]
|
|
adrp x0, .LANCHOR141
|
|
add x0, x0, :lo12:.LANCHOR141
|
|
ldr w2, [x0, 96]
|
|
add w2, w2, 1
|
|
str w2, [x0, 96]
|
|
ldr w0, [x1, 4]
|
|
lsr w0, w0, 10
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
bl FtlGcPageVarInit
|
|
.L2697:
|
|
mov w0, 1
|
|
b .L2680
|
|
.L2686:
|
|
ldr w1, [x1, 4]
|
|
ldp w2, w0, [x3, 8]
|
|
bl FtlGcUpdatePage
|
|
add w11, w11, 1
|
|
and w11, w11, 65535
|
|
b .L2685
|
|
.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, .LANCHOR95
|
|
mov w2, 65535
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
mov x19, x0
|
|
ldrh w3, [x0, #:lo12:.LANCHOR95]
|
|
cmp w3, w2
|
|
beq .L2699
|
|
add x1, x0, :lo12:.LANCHOR95
|
|
ldrh w0, [x1, 4]
|
|
cbnz w0, .L2700
|
|
.L2699:
|
|
bl FtlCacheWriteBack
|
|
mov w0, 0
|
|
bl FtlGcFreeTempBlock
|
|
add x0, x19, :lo12:.LANCHOR95
|
|
strb wzr, [x0, 8]
|
|
bl allocate_data_superblock
|
|
adrp x0, .LANCHOR111
|
|
strh wzr, [x0, #:lo12:.LANCHOR111]
|
|
adrp x0, .LANCHOR113
|
|
strh wzr, [x0, #:lo12:.LANCHOR113]
|
|
bl l2p_flush
|
|
mov w0, 0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L2700:
|
|
add x0, x19, :lo12:.LANCHOR95
|
|
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.ftl_do_gc,"ax",@progbits
|
|
.align 2
|
|
.global ftl_do_gc
|
|
.type ftl_do_gc, %function
|
|
ftl_do_gc:
|
|
adrp x1, .LANCHOR78
|
|
ldr w1, [x1, #:lo12:.LANCHOR78]
|
|
cbnz w1, .L2762
|
|
adrp x1, .LANCHOR247
|
|
ldr w1, [x1, #:lo12:.LANCHOR247]
|
|
cmp w1, 1
|
|
bne .L2762
|
|
stp x29, x30, [sp, -176]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR176
|
|
stp x19, x20, [sp, 16]
|
|
ldr w1, [x21, #:lo12:.LANCHOR176]
|
|
stp x23, x24, [sp, 48]
|
|
stp x25, x26, [sp, 64]
|
|
stp x27, x28, [sp, 80]
|
|
cbnz w1, .L2764
|
|
adrp x1, .LANCHOR87
|
|
ldrh w1, [x1, #:lo12:.LANCHOR87]
|
|
cmp w1, 47
|
|
bls .L2764
|
|
adrp x5, .LANCHOR116
|
|
mov w2, 65535
|
|
ldrh w8, [x5, #:lo12:.LANCHOR116]
|
|
cmp w8, w2
|
|
beq .L2704
|
|
adrp x7, .LANCHOR115
|
|
ldrh w1, [x7, #:lo12:.LANCHOR115]
|
|
cmp w1, w2
|
|
bne .L2704
|
|
adrp x3, .LANCHOR117
|
|
ldrh w6, [x3, #:lo12:.LANCHOR117]
|
|
cmp w6, w1
|
|
beq .L2704
|
|
adrp x2, .LANCHOR118
|
|
ldrh w4, [x2, #:lo12:.LANCHOR118]
|
|
cmp w4, w1
|
|
beq .L2704
|
|
mov w1, -1
|
|
strh w8, [x7, #:lo12:.LANCHOR115]
|
|
strh w6, [x5, #:lo12:.LANCHOR116]
|
|
strh w4, [x3, #:lo12:.LANCHOR117]
|
|
strh w1, [x2, #:lo12:.LANCHOR118]
|
|
.L2704:
|
|
cbnz w0, .L2765
|
|
adrp x0, .LANCHOR90
|
|
ldrh w0, [x0, #:lo12:.LANCHOR90]
|
|
cmp w0, 24
|
|
bhi .L2766
|
|
adrp x1, .LANCHOR52
|
|
cmp w0, 16
|
|
ldrh w20, [x1, #:lo12:.LANCHOR52]
|
|
bls .L2707
|
|
lsr w20, w20, 5
|
|
.L2706:
|
|
adrp x2, .LANCHOR181
|
|
mov x3, x2
|
|
ldrh w1, [x2, #:lo12:.LANCHOR181]
|
|
cmp w1, w0
|
|
bcs .L2710
|
|
adrp x0, .LANCHOR95
|
|
mov w1, 65535
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95]
|
|
cmp w0, w1
|
|
bne .L2711
|
|
adrp x1, .LANCHOR115
|
|
ldrh w1, [x1, #:lo12:.LANCHOR115]
|
|
cmp w1, w0
|
|
bne .L2711
|
|
adrp x0, .LANCHOR248
|
|
ldrh w0, [x0, #:lo12:.LANCHOR248]
|
|
cbnz w0, .L2712
|
|
adrp x1, .LANCHOR74
|
|
adrp x4, .LANCHOR102
|
|
ldr w1, [x1, #:lo12:.LANCHOR74]
|
|
ldr w4, [x4, #:lo12:.LANCHOR102]
|
|
add w1, w1, w1, lsl 1
|
|
cmp w4, w1, lsr 2
|
|
bcs .L2713
|
|
.L2712:
|
|
adrp x1, .LANCHOR232
|
|
ldrh w1, [x1, #:lo12:.LANCHOR232]
|
|
add w1, w1, w1, lsl 1
|
|
asr w1, w1, 2
|
|
strh w1, [x3, #:lo12:.LANCHOR181]
|
|
.L2714:
|
|
adrp x1, .LANCHOR177
|
|
str wzr, [x1, #:lo12:.LANCHOR177]
|
|
.L2702:
|
|
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
|
|
.L2707:
|
|
cmp w0, 12
|
|
bls .L2708
|
|
lsr w20, w20, 4
|
|
b .L2706
|
|
.L2708:
|
|
cmp w0, 8
|
|
bls .L2706
|
|
lsr w20, w20, 2
|
|
b .L2706
|
|
.L2766:
|
|
mov w20, 1
|
|
b .L2706
|
|
.L2713:
|
|
mov w1, 18
|
|
strh w1, [x2, #:lo12:.LANCHOR181]
|
|
b .L2714
|
|
.L2711:
|
|
adrp x0, .LANCHOR232
|
|
ldrh w0, [x0, #:lo12:.LANCHOR232]
|
|
add w0, w0, w0, lsl 1
|
|
asr w0, w0, 2
|
|
strh w0, [x3, #:lo12:.LANCHOR181]
|
|
.L2710:
|
|
adrp x0, .LANCHOR119
|
|
ldrh w0, [x0, #:lo12:.LANCHOR119]
|
|
cbz w0, .L2705
|
|
add w20, w20, 32
|
|
and w20, w20, 65535
|
|
.L2705:
|
|
adrp x19, .LANCHOR213
|
|
mov w0, 65535
|
|
ldrh w2, [x19, #:lo12:.LANCHOR213]
|
|
cmp w2, w0
|
|
bne .L2717
|
|
adrp x0, .LANCHOR115
|
|
ldrh w1, [x0, #:lo12:.LANCHOR115]
|
|
cmp w1, w2
|
|
beq .L2718
|
|
adrp x2, .LANCHOR85
|
|
ubfiz x1, x1, 1, 16
|
|
ldr x2, [x2, #:lo12:.LANCHOR85]
|
|
ldrh w1, [x2, x1]
|
|
cbnz w1, .L2719
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR115]
|
|
.L2719:
|
|
ldrh w1, [x0, #:lo12:.LANCHOR115]
|
|
strh w1, [x19, #:lo12:.LANCHOR213]
|
|
mov w1, -1
|
|
strh w1, [x0, #:lo12:.LANCHOR115]
|
|
.L2718:
|
|
add x0, x19, :lo12:.LANCHOR213
|
|
mov w1, 65535
|
|
strb wzr, [x0, 8]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR213]
|
|
cmp w0, w1
|
|
beq .L2717
|
|
bl IsBlkInGcList
|
|
cbz w0, .L2721
|
|
mov w0, -1
|
|
strh w0, [x19, #:lo12:.LANCHOR213]
|
|
.L2721:
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2722
|
|
ldrh w0, [x19, #:lo12:.LANCHOR213]
|
|
add x3, x19, :lo12:.LANCHOR213
|
|
bl ftl_get_blk_mode
|
|
strb w0, [x3, 8]
|
|
.L2722:
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
mov w0, 65535
|
|
add x22, x19, :lo12:.LANCHOR213
|
|
cmp w1, w0
|
|
beq .L2717
|
|
mov x0, x22
|
|
bl make_superblock
|
|
adrp x0, .LANCHOR249
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
strh wzr, [x22, 2]
|
|
strh wzr, [x0, #:lo12:.LANCHOR249]
|
|
adrp x0, .LANCHOR85
|
|
strb wzr, [x22, 6]
|
|
ldr x0, [x0, #:lo12:.LANCHOR85]
|
|
ldrh w1, [x0, x1, lsl 1]
|
|
adrp x0, .LANCHOR250
|
|
strh w1, [x0, #:lo12:.LANCHOR250]
|
|
.L2717:
|
|
adrp x1, .LANCHOR93
|
|
ldrh w0, [x19, #:lo12:.LANCHOR213]
|
|
str x1, [x29, 128]
|
|
ldrh w2, [x1, #:lo12:.LANCHOR93]
|
|
cmp w2, w0
|
|
beq .L2723
|
|
adrp x1, .LANCHOR94
|
|
ldrh w1, [x1, #:lo12:.LANCHOR94]
|
|
cmp w1, w0
|
|
beq .L2723
|
|
adrp x1, .LANCHOR95
|
|
ldrh w1, [x1, #:lo12:.LANCHOR95]
|
|
cmp w1, w0
|
|
bne .L2724
|
|
.L2723:
|
|
mov w0, -1
|
|
strh w0, [x19, #:lo12:.LANCHOR213]
|
|
.L2724:
|
|
adrp x25, .LANCHOR183
|
|
add x26, x25, :lo12:.LANCHOR183
|
|
.L2760:
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L2725
|
|
adrp x0, .LANCHOR177
|
|
adrp x22, .LANCHOR52
|
|
add x22, x22, :lo12:.LANCHOR52
|
|
str wzr, [x0, #:lo12:.LANCHOR177]
|
|
.L2726:
|
|
ldrh w5, [x25, #:lo12:.LANCHOR183]
|
|
add x7, x25, :lo12:.LANCHOR183
|
|
mov w0, w5
|
|
bl List_get_gc_head_node
|
|
and w6, w0, 65535
|
|
strh w6, [x19, #:lo12:.LANCHOR213]
|
|
mov w0, 65535
|
|
cmp w6, w0
|
|
bne .L2727
|
|
strh wzr, [x7]
|
|
mov w0, 8
|
|
b .L2702
|
|
.L2765:
|
|
mov w20, 1
|
|
b .L2705
|
|
.L2727:
|
|
mov w0, w6
|
|
bl IsBlkInGcList
|
|
add w5, w5, 1
|
|
cbz w0, .L2728
|
|
strh w5, [x25, #:lo12:.LANCHOR183]
|
|
b .L2726
|
|
.L2728:
|
|
adrp x23, .LANCHOR85
|
|
adrp x4, .LANCHOR38
|
|
ldrh w0, [x22]
|
|
ubfiz x1, x6, 1, 16
|
|
ldr x2, [x23, #:lo12:.LANCHOR85]
|
|
and w5, w5, 65535
|
|
ldrh w4, [x4, #:lo12:.LANCHOR38]
|
|
strh w5, [x25, #:lo12:.LANCHOR183]
|
|
ldrh w3, [x2, x1]
|
|
mul w0, w0, w4
|
|
cmp w3, w0, asr 1
|
|
bgt .L2730
|
|
cmp w5, 48
|
|
bls .L2731
|
|
cmp w3, 8
|
|
bls .L2731
|
|
adrp x3, .LANCHOR111
|
|
ldrh w3, [x3, #:lo12:.LANCHOR111]
|
|
cmp w3, 35
|
|
bhi .L2731
|
|
.L2730:
|
|
strh wzr, [x26]
|
|
.L2731:
|
|
ldrh w1, [x2, x1]
|
|
cmp w0, w1
|
|
bgt .L2732
|
|
ldrh w0, [x26]
|
|
cmp w0, 3
|
|
bhi .L2732
|
|
mov w0, -1
|
|
strh wzr, [x26]
|
|
strh w0, [x19, #:lo12:.LANCHOR213]
|
|
.L2804:
|
|
adrp x0, .LANCHOR248
|
|
ldrh w0, [x0, #:lo12:.LANCHOR248]
|
|
b .L2702
|
|
.L2732:
|
|
cbnz w1, .L2733
|
|
mov w0, -1
|
|
bl decrement_vpc_count
|
|
ldrh w0, [x26]
|
|
add w0, w0, 1
|
|
strh w0, [x26]
|
|
b .L2726
|
|
.L2733:
|
|
adrp x0, .LANCHOR16
|
|
add x3, x19, :lo12:.LANCHOR213
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
strb wzr, [x3, 8]
|
|
cbz w0, .L2734
|
|
mov w0, w6
|
|
bl ftl_get_blk_mode
|
|
strb w0, [x3, 8]
|
|
.L2734:
|
|
ldr x0, [x29, 128]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR93]
|
|
cmp w0, w6
|
|
bne .L2735
|
|
mov w2, 1069
|
|
adrp x1, .LANCHOR251
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR251
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2735:
|
|
adrp x0, .LANCHOR94
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR94]
|
|
cmp w1, w0
|
|
bne .L2736
|
|
mov w2, 1070
|
|
adrp x1, .LANCHOR251
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR251
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2736:
|
|
adrp x0, .LANCHOR95
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR95]
|
|
cmp w1, w0
|
|
bne .L2737
|
|
mov w2, 1071
|
|
adrp x1, .LANCHOR251
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR251
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2737:
|
|
add x22, x19, :lo12:.LANCHOR213
|
|
mov x0, x22
|
|
bl make_superblock
|
|
adrp x0, .LANCHOR249
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
strh wzr, [x0, #:lo12:.LANCHOR249]
|
|
ldr x0, [x23, #:lo12:.LANCHOR85]
|
|
ldrh w1, [x0, x1, lsl 1]
|
|
adrp x0, .LANCHOR250
|
|
strh wzr, [x22, 2]
|
|
strh w1, [x0, #:lo12:.LANCHOR250]
|
|
strb wzr, [x22, 6]
|
|
.L2725:
|
|
adrp x1, .LANCHOR52
|
|
mov w0, 1
|
|
str w0, [x21, #:lo12:.LANCHOR176]
|
|
ldrh w0, [x1, #:lo12:.LANCHOR52]
|
|
str w0, [x29, 156]
|
|
adrp x0, .LANCHOR16
|
|
str x1, [x29, 120]
|
|
str x0, [x29, 112]
|
|
ldrb w2, [x0, #:lo12:.LANCHOR16]
|
|
cbz w2, .L2738
|
|
add x0, x19, :lo12:.LANCHOR213
|
|
ldrb w0, [x0, 8]
|
|
cmp w0, 1
|
|
bne .L2738
|
|
adrp x0, .LANCHOR53
|
|
ldrh w0, [x0, #:lo12:.LANCHOR53]
|
|
str w0, [x29, 156]
|
|
.L2738:
|
|
add x0, x19, :lo12:.LANCHOR213
|
|
ldr w2, [x29, 156]
|
|
ldrh w0, [x0, 2]
|
|
add w1, w0, w20
|
|
cmp w1, w2
|
|
ble .L2739
|
|
sub w20, w2, w0
|
|
and w20, w20, 65535
|
|
.L2739:
|
|
adrp x0, .LANCHOR249
|
|
mov w28, 0
|
|
add x0, x0, :lo12:.LANCHOR249
|
|
str x0, [x29, 144]
|
|
.L2740:
|
|
cmp w20, w28, uxth
|
|
bls .L2748
|
|
add x1, x19, :lo12:.LANCHOR213
|
|
adrp x0, .LANCHOR38
|
|
adrp x23, .LANCHOR109
|
|
add x1, x1, 16
|
|
ldrh w7, [x0, #:lo12:.LANCHOR38]
|
|
mov w22, 0
|
|
ldrh w4, [x1, -14]
|
|
mov w2, 0
|
|
ldr x0, [x23, #:lo12:.LANCHOR109]
|
|
mov w6, 65535
|
|
add w4, w4, w28
|
|
mov w5, 56
|
|
b .L2749
|
|
.L2742:
|
|
ldrh w3, [x1]
|
|
cmp w3, w6
|
|
beq .L2741
|
|
umaddl x8, w22, w5, x0
|
|
add w22, w22, 1
|
|
and w22, w22, 65535
|
|
orr w3, w4, w3, lsl 10
|
|
str w3, [x8, 4]
|
|
.L2741:
|
|
add w2, w2, 1
|
|
add x1, x1, 2
|
|
and w2, w2, 65535
|
|
.L2749:
|
|
cmp w2, w7
|
|
bne .L2742
|
|
add x1, x19, :lo12:.LANCHOR213
|
|
adrp x24, .LANCHOR105
|
|
add x24, x24, :lo12:.LANCHOR105
|
|
ldrb w2, [x1, 8]
|
|
mov w1, w22
|
|
bl FlashReadPages
|
|
mov w0, 56
|
|
umull x0, w22, w0
|
|
mov x22, 0
|
|
str x0, [x29, 136]
|
|
.L2743:
|
|
ldr x0, [x29, 136]
|
|
cmp x0, x22
|
|
bne .L2747
|
|
add w28, w28, 1
|
|
b .L2740
|
|
.L2747:
|
|
ldr x0, [x23, #:lo12:.LANCHOR109]
|
|
add x1, x0, x22
|
|
ldr w0, [x0, x22]
|
|
cmn w0, #1
|
|
beq .L2744
|
|
ldr x27, [x1, 16]
|
|
mov w0, 61589
|
|
ldrh w1, [x27]
|
|
cmp w1, w0
|
|
bne .L2744
|
|
ldr w4, [x27, 8]
|
|
cmn w4, #1
|
|
bne .L2745
|
|
mov w2, 1119
|
|
str w4, [x29, 104]
|
|
adrp x1, .LANCHOR251
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR251
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
ldr w4, [x29, 104]
|
|
.L2745:
|
|
mov w2, 0
|
|
add x1, x29, 168
|
|
mov w0, w4
|
|
bl log2phys
|
|
ldr x0, [x23, #:lo12:.LANCHOR109]
|
|
ldr w1, [x29, 168]
|
|
add x0, x0, x22
|
|
and w1, w1, 2147483647
|
|
ldr w2, [x0, 4]
|
|
cmp w1, w2
|
|
bne .L2744
|
|
ldr x1, [x29, 144]
|
|
adrp x4, .LANCHOR187
|
|
ldr x2, [x29, 144]
|
|
ldr x5, [x4, #:lo12:.LANCHOR187]
|
|
ldr w0, [x0, 24]
|
|
ldrh w1, [x1]
|
|
add w1, w1, 1
|
|
strh w1, [x2]
|
|
ldr w2, [x24]
|
|
mov w1, 56
|
|
str w1, [x29, 152]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x2, w2, w1, x5
|
|
stp x4, x2, [x29, 96]
|
|
str w0, [x2, 24]
|
|
bl Ftl_get_new_temp_ppa
|
|
ldp x4, x2, [x29, 96]
|
|
ldr w1, [x29, 152]
|
|
str w0, [x2, 4]
|
|
ldr x0, [x4, #:lo12:.LANCHOR187]
|
|
ldr w2, [x24]
|
|
umaddl x1, w2, w1, x0
|
|
ldr x0, [x23, #:lo12:.LANCHOR109]
|
|
add w2, w2, 1
|
|
add x0, x0, x22
|
|
ldr x4, [x0, 8]
|
|
str x4, [x1, 8]
|
|
ldr x4, [x0, 16]
|
|
str x4, [x1, 16]
|
|
ldr w1, [x29, 168]
|
|
str w1, [x27, 12]
|
|
adrp x1, .LANCHOR95
|
|
add x12, x1, :lo12:.LANCHOR95
|
|
ldrh w1, [x1, #:lo12:.LANCHOR95]
|
|
strh w1, [x27, 2]
|
|
adrp x1, .LANCHOR165
|
|
str w2, [x24]
|
|
ldr w1, [x1, #:lo12:.LANCHOR165]
|
|
str w1, [x27, 4]
|
|
mov w1, 1
|
|
bl FtlGcBufAlloc
|
|
ldr x0, [x29, 112]
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbnz w0, .L2746
|
|
ldrb w1, [x12, 7]
|
|
ldr w0, [x24]
|
|
cmp w1, w0
|
|
beq .L2746
|
|
ldrh w0, [x12, 4]
|
|
cbnz w0, .L2744
|
|
.L2746:
|
|
bl Ftl_gc_temp_data_write_back
|
|
cbz w0, .L2744
|
|
add x0, x19, :lo12:.LANCHOR213
|
|
mov w1, -1
|
|
str wzr, [x21, #:lo12:.LANCHOR176]
|
|
strh w1, [x19, #:lo12:.LANCHOR213]
|
|
strh wzr, [x0, 2]
|
|
b .L2804
|
|
.L2744:
|
|
add x22, x22, 56
|
|
b .L2743
|
|
.L2748:
|
|
add x1, x19, :lo12:.LANCHOR213
|
|
ldrh w0, [x1, 2]
|
|
add w20, w20, w0
|
|
ldr w0, [x29, 156]
|
|
and w20, w20, 65535
|
|
strh w20, [x1, 2]
|
|
cmp w0, w20
|
|
bhi .L2750
|
|
adrp x0, .LANCHOR105
|
|
ldr w0, [x0, #:lo12:.LANCHOR105]
|
|
cbz w0, .L2751
|
|
bl Ftl_gc_temp_data_write_back
|
|
cbz w0, .L2751
|
|
str wzr, [x21, #:lo12:.LANCHOR176]
|
|
b .L2804
|
|
.L2751:
|
|
adrp x0, .LANCHOR249
|
|
ldrh w0, [x0, #:lo12:.LANCHOR249]
|
|
cbnz w0, .L2752
|
|
adrp x22, .LANCHOR85
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
ldr x0, [x22, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x0, x1, lsl 1]
|
|
cbz w0, .L2752
|
|
adrp x23, .LANCHOR74
|
|
add x24, x23, :lo12:.LANCHOR74
|
|
mov w20, 0
|
|
.L2753:
|
|
ldr w0, [x24]
|
|
cmp w20, w0
|
|
bcs .L2758
|
|
mov w2, 0
|
|
add x1, x29, 172
|
|
mov w0, w20
|
|
bl log2phys
|
|
ldr w0, [x29, 172]
|
|
cmn w0, #1
|
|
beq .L2754
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
cmp w1, w0, uxth
|
|
bne .L2754
|
|
.L2758:
|
|
ldr w0, [x23, #:lo12:.LANCHOR74]
|
|
cmp w20, w0
|
|
bcc .L2752
|
|
ldrh w1, [x19, #:lo12:.LANCHOR213]
|
|
ldr x0, [x22, #:lo12:.LANCHOR85]
|
|
strh wzr, [x0, x1, lsl 1]
|
|
ldrh w0, [x19, #:lo12:.LANCHOR213]
|
|
bl update_vpc_list
|
|
bl FtlCacheWriteBack
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L2752:
|
|
mov w0, -1
|
|
strh w0, [x19, #:lo12:.LANCHOR213]
|
|
.L2750:
|
|
adrp x0, .LANCHOR90
|
|
ldrh w0, [x0, #:lo12:.LANCHOR90]
|
|
cmp w0, 2
|
|
bhi .L2759
|
|
ldr x0, [x29, 120]
|
|
ldrh w20, [x0, #:lo12:.LANCHOR52]
|
|
b .L2760
|
|
.L2754:
|
|
add w20, w20, 1
|
|
b .L2753
|
|
.L2759:
|
|
str wzr, [x21, #:lo12:.LANCHOR176]
|
|
add w0, w0, 1
|
|
b .L2702
|
|
.L2762:
|
|
mov w0, 0
|
|
ret
|
|
.L2764:
|
|
mov w0, 0
|
|
b .L2702
|
|
.size ftl_do_gc, .-ftl_do_gc
|
|
.section .text.FtlCacheWriteBack,"ax",@progbits
|
|
.align 2
|
|
.global FtlCacheWriteBack
|
|
.type FtlCacheWriteBack, %function
|
|
FtlCacheWriteBack:
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
stp x25, x26, [sp, 64]
|
|
adrp x25, .LANCHOR78
|
|
stp x23, x24, [sp, 48]
|
|
ldr w23, [x25, #:lo12:.LANCHOR78]
|
|
stp x19, x20, [sp, 16]
|
|
stp x21, x22, [sp, 32]
|
|
stp x27, x28, [sp, 80]
|
|
cbnz w23, .L2807
|
|
adrp x22, .LANCHOR72
|
|
ldr w1, [x22, #:lo12:.LANCHOR72]
|
|
cbz w1, .L2807
|
|
adrp x0, .LANCHOR252
|
|
ldr x19, [x0, #:lo12:.LANCHOR252]
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2832
|
|
ldrb w0, [x19, 8]
|
|
cmp w0, 1
|
|
cset w24, eq
|
|
.L2809:
|
|
adrp x20, .LANCHOR73
|
|
ldrb w3, [x19, 9]
|
|
adrp x26, .LC76
|
|
add x27, x22, :lo12:.LANCHOR72
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
add x26, x26, :lo12:.LC76
|
|
mov w21, 0
|
|
mov w28, 56
|
|
mov w2, w24
|
|
bl FlashProgPages
|
|
.L2810:
|
|
ldr w0, [x27]
|
|
cmp w21, w0
|
|
bcc .L2817
|
|
.L2829:
|
|
str wzr, [x22, #:lo12:.LANCHOR72]
|
|
.L2807:
|
|
ldp x19, x20, [sp, 16]
|
|
mov w0, 0
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x25, x26, [sp, 64]
|
|
ldp x27, x28, [sp, 80]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.L2832:
|
|
mov w24, 0
|
|
b .L2809
|
|
.L2817:
|
|
umull x3, w21, w28
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
add x4, x0, x3
|
|
ldr w0, [x0, x3]
|
|
cmn w0, #1
|
|
bne .L2811
|
|
adrp x27, .LANCHOR52
|
|
adrp x26, .LANCHOR141
|
|
add x27, x27, :lo12:.LANCHOR52
|
|
add x26, x26, :lo12:.LANCHOR141
|
|
.L2812:
|
|
ldr w0, [x22, #:lo12:.LANCHOR72]
|
|
cmp w23, w0
|
|
bcc .L2827
|
|
adrp x19, .LANCHOR119
|
|
add x19, x19, :lo12:.LANCHOR119
|
|
mov w20, 16386
|
|
.L2830:
|
|
ldrh w0, [x19]
|
|
cbz w0, .L2829
|
|
mov w1, 1
|
|
mov w0, w1
|
|
bl ftl_do_gc
|
|
subs w20, w20, #1
|
|
bne .L2830
|
|
b .L2829
|
|
.L2811:
|
|
ldr w0, [x4, 4]
|
|
cbnz w24, .L2813
|
|
.L2846:
|
|
str w0, [x29, 124]
|
|
mov w2, 1
|
|
ldr w0, [x4, 24]
|
|
add x1, x29, 124
|
|
str x3, [x29, 104]
|
|
bl log2phys
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
ldr x3, [x29, 104]
|
|
add x0, x0, x3
|
|
ldr x0, [x0, 16]
|
|
ldr w0, [x0, 12]
|
|
cmn w0, #1
|
|
beq .L2815
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
adrp x2, .LANCHOR85
|
|
and w1, w0, 65535
|
|
ubfiz x0, x1, 1, 16
|
|
mov w3, w1
|
|
ldr x2, [x2, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x2, x0]
|
|
cbnz w0, .L2816
|
|
mov w2, 0
|
|
mov x0, x26
|
|
str w1, [x29, 104]
|
|
bl printf
|
|
ldr w3, [x29, 104]
|
|
.L2816:
|
|
mov w0, w3
|
|
bl decrement_vpc_count
|
|
.L2815:
|
|
add w21, w21, 1
|
|
b .L2810
|
|
.L2813:
|
|
orr w0, w0, -2147483648
|
|
b .L2846
|
|
.L2827:
|
|
mov w21, 56
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
mov w1, -1
|
|
adrp x28, .LANCHOR85
|
|
umull x21, w23, w21
|
|
str w1, [x0, x21]
|
|
.L2818:
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
add x3, x0, x21
|
|
ldr w0, [x0, x21]
|
|
cmn w0, #1
|
|
ldr w0, [x3, 4]
|
|
beq .L2822
|
|
cbnz w24, .L2823
|
|
.L2847:
|
|
str w0, [x29, 124]
|
|
mov w2, 1
|
|
ldr w0, [x3, 24]
|
|
add x1, x29, 124
|
|
bl log2phys
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
add x21, x0, x21
|
|
ldr x0, [x21, 16]
|
|
ldr w0, [x0, 12]
|
|
cmn w0, #1
|
|
beq .L2825
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
adrp x2, .LANCHOR85
|
|
and w1, w0, 65535
|
|
ubfiz x0, x1, 1, 16
|
|
mov w21, w1
|
|
ldr x2, [x2, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x2, x0]
|
|
cbnz w0, .L2826
|
|
adrp x0, .LC76
|
|
mov w2, 0
|
|
add x0, x0, :lo12:.LC76
|
|
bl printf
|
|
.L2826:
|
|
mov w0, w21
|
|
bl decrement_vpc_count
|
|
.L2825:
|
|
add w23, w23, 1
|
|
b .L2812
|
|
.L2822:
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
ldrh w1, [x19]
|
|
cmp w1, w0, uxth
|
|
bne .L2819
|
|
ldr x2, [x28, #:lo12:.LANCHOR85]
|
|
ubfiz x1, x1, 1, 16
|
|
ldrh w3, [x19, 4]
|
|
ldrh w0, [x2, x1]
|
|
sub w0, w0, w3
|
|
strh w0, [x2, x1]
|
|
strb wzr, [x19, 6]
|
|
ldrh w0, [x27]
|
|
strh w0, [x19, 2]
|
|
strh wzr, [x19, 4]
|
|
.L2819:
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L2820
|
|
mov x0, x19
|
|
bl allocate_new_data_superblock
|
|
.L2820:
|
|
ldr w0, [x26, 96]
|
|
add w0, w0, 1
|
|
str w0, [x26, 96]
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
add x0, x0, x21
|
|
ldr w0, [x0, 4]
|
|
lsr w0, w0, 10
|
|
bl FtlGcMarkBadPhyBlk
|
|
mov x0, x19
|
|
bl get_new_active_ppa
|
|
ldr x1, [x20, #:lo12:.LANCHOR73]
|
|
mov w2, w0
|
|
str w2, [x29, 124]
|
|
add x0, x1, x21
|
|
mov w1, 1
|
|
str w2, [x0, 4]
|
|
mov w2, w24
|
|
ldrb w3, [x19, 9]
|
|
bl FlashProgPages
|
|
ldr x0, [x20, #:lo12:.LANCHOR73]
|
|
ldr w0, [x0, x21]
|
|
cmn w0, #1
|
|
bne .L2821
|
|
mov w0, 1
|
|
str w0, [x25, #:lo12:.LANCHOR78]
|
|
.L2821:
|
|
ldr w0, [x25, #:lo12:.LANCHOR78]
|
|
cbz w0, .L2818
|
|
b .L2807
|
|
.L2823:
|
|
orr w0, w0, -2147483648
|
|
b .L2847
|
|
.size FtlCacheWriteBack, .-FtlCacheWriteBack
|
|
.section .text.FtlSysFlush,"ax",@progbits
|
|
.align 2
|
|
.global FtlSysFlush
|
|
.type FtlSysFlush, %function
|
|
FtlSysFlush:
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L2851
|
|
stp x29, x30, [sp, -32]!
|
|
adrp x0, .LANCHOR247
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
ldr w19, [x0, #:lo12:.LANCHOR247]
|
|
cmp w19, 1
|
|
bne .L2849
|
|
bl FtlCacheWriteBack
|
|
bl l2p_flush
|
|
mov w0, w19
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L2849:
|
|
mov w0, 0
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.L2851:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlSysFlush, .-FtlSysFlush
|
|
.section .text.FtlDeInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlDeInit
|
|
.type FtlDeInit, %function
|
|
FtlDeInit:
|
|
adrp x0, .LANCHOR247
|
|
ldr w0, [x0, #:lo12:.LANCHOR247]
|
|
cmp w0, 1
|
|
bne .L2857
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl FtlSysFlush
|
|
mov w0, 0
|
|
ldp x29, x30, [sp], 16
|
|
ret
|
|
.L2857:
|
|
mov w0, 0
|
|
ret
|
|
.size FtlDeInit, .-FtlDeInit
|
|
.section .text.ftl_deinit,"ax",@progbits
|
|
.align 2
|
|
.global ftl_deinit
|
|
.type ftl_deinit, %function
|
|
ftl_deinit:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl ftl_flash_de_init
|
|
bl FtlDeInit
|
|
ldp x29, x30, [sp], 16
|
|
b ftl_flash_de_init
|
|
.size ftl_deinit, .-ftl_deinit
|
|
.section .text.rk_ftl_de_init,"ax",@progbits
|
|
.align 2
|
|
.global rk_ftl_de_init
|
|
.type rk_ftl_de_init, %function
|
|
rk_ftl_de_init:
|
|
stp x29, x30, [sp, -16]!
|
|
add x29, sp, 0
|
|
bl FlashDeInit
|
|
bl FtlDeInit
|
|
ldp x29, x30, [sp], 16
|
|
b FlashDeInit
|
|
.size rk_ftl_de_init, .-rk_ftl_de_init
|
|
.section .text.ftl_cache_flush,"ax",@progbits
|
|
.align 2
|
|
.global ftl_cache_flush
|
|
.type ftl_cache_flush, %function
|
|
ftl_cache_flush:
|
|
b FtlCacheWriteBack
|
|
.size ftl_cache_flush, .-ftl_cache_flush
|
|
.section .text.ftl_discard,"ax",@progbits
|
|
.align 2
|
|
.global ftl_discard
|
|
.type ftl_discard, %function
|
|
ftl_discard:
|
|
adrp x0, .LANCHOR68
|
|
ldr w0, [x0, #:lo12:.LANCHOR68]
|
|
cmp w0, w1
|
|
bls .L2873
|
|
stp x29, x30, [sp, -80]!
|
|
cmp w0, w2
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, w2
|
|
stp x21, x22, [sp, 32]
|
|
str x23, [sp, 48]
|
|
bcc .L2875
|
|
mov w20, w1
|
|
add w1, w1, w2
|
|
cmp w0, w1
|
|
bcc .L2875
|
|
cmp w2, 31
|
|
bhi .L2867
|
|
.L2886:
|
|
mov w0, 0
|
|
.L2865:
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldr x23, [sp, 48]
|
|
ldp x29, x30, [sp], 80
|
|
ret
|
|
.L2867:
|
|
adrp x0, .LANCHOR78
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L2886
|
|
adrp x22, .LANCHOR55
|
|
bl FtlCacheWriteBack
|
|
ldrh w0, [x22, #:lo12:.LANCHOR55]
|
|
udiv w21, w20, w0
|
|
msub w20, w0, w21, w20
|
|
ands w20, w20, 65535
|
|
beq .L2869
|
|
sub w20, w0, w20
|
|
add w21, w21, 1
|
|
cmp w20, w19
|
|
csel w20, w20, w19, ls
|
|
sub w19, w19, w20, uxth
|
|
.L2869:
|
|
adrp x20, .LANCHOR253
|
|
adrp x23, .LANCHOR168
|
|
add x20, x20, :lo12:.LANCHOR253
|
|
add x23, x23, :lo12:.LANCHOR168
|
|
mov w0, -1
|
|
str w0, [x29, 76]
|
|
.L2870:
|
|
ldrh w0, [x22, #:lo12:.LANCHOR55]
|
|
cmp w19, w0
|
|
bcs .L2872
|
|
adrp x0, .LANCHOR253
|
|
ldr w1, [x0, #:lo12:.LANCHOR253]
|
|
cmp w1, 32
|
|
bls .L2886
|
|
str wzr, [x0, #:lo12:.LANCHOR253]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
b .L2886
|
|
.L2872:
|
|
mov w2, 0
|
|
add x1, x29, 72
|
|
mov w0, w21
|
|
bl log2phys
|
|
ldr w0, [x29, 72]
|
|
cmn w0, #1
|
|
beq .L2871
|
|
ldr w0, [x20]
|
|
mov w2, 1
|
|
add x1, x29, 76
|
|
add w0, w0, 1
|
|
str w0, [x20]
|
|
ldr w0, [x23]
|
|
add w0, w0, 1
|
|
str w0, [x23]
|
|
mov w0, w21
|
|
bl log2phys
|
|
ldr w0, [x29, 72]
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
.L2871:
|
|
ldrh w0, [x22, #:lo12:.LANCHOR55]
|
|
add w21, w21, 1
|
|
sub w19, w19, w0
|
|
b .L2870
|
|
.L2873:
|
|
mov w0, -1
|
|
ret
|
|
.L2875:
|
|
mov w0, -1
|
|
b .L2865
|
|
.size ftl_discard, .-ftl_discard
|
|
.section .text.FtlRead,"ax",@progbits
|
|
.align 2
|
|
.global FtlRead
|
|
.type FtlRead, %function
|
|
FtlRead:
|
|
sub sp, sp, #208
|
|
adrp x4, .LANCHOR247
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
ldr w4, [x4, #:lo12:.LANCHOR247]
|
|
stp x19, x20, [sp, 32]
|
|
stp x21, x22, [sp, 48]
|
|
cmp w4, 1
|
|
stp x23, x24, [sp, 64]
|
|
stp x25, x26, [sp, 80]
|
|
stp x27, x28, [sp, 96]
|
|
bne .L2914
|
|
mov x21, x3
|
|
mov w23, w2
|
|
mov w19, w1
|
|
cmp w0, 16
|
|
bne .L2889
|
|
mov x2, x3
|
|
mov w1, w23
|
|
add w0, w19, 256
|
|
bl FtlVendorPartRead
|
|
mov w25, w0
|
|
.L2887:
|
|
mov w0, w25
|
|
ldp x19, x20, [sp, 32]
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x23, x24, [sp, 64]
|
|
ldp x25, x26, [sp, 80]
|
|
ldp x27, x28, [sp, 96]
|
|
ldp x29, x30, [sp, 16]
|
|
add sp, sp, 208
|
|
ret
|
|
.L2889:
|
|
adrp x0, .LANCHOR68
|
|
ldr w0, [x0, #:lo12:.LANCHOR68]
|
|
cmp w1, w0
|
|
bcs .L2914
|
|
cmp w2, w0
|
|
bhi .L2914
|
|
add w1, w1, w2
|
|
str w1, [x29, 148]
|
|
cmp w0, w1
|
|
bcc .L2914
|
|
adrp x22, .LANCHOR55
|
|
ldrh w0, [x22, #:lo12:.LANCHOR55]
|
|
udiv w1, w19, w0
|
|
str w1, [x29, 172]
|
|
add w1, w19, w2
|
|
sub w1, w1, #1
|
|
udiv w0, w1, w0
|
|
adrp x1, .LANCHOR226
|
|
str w0, [x29, 168]
|
|
ldr w0, [x29, 172]
|
|
sub w4, w4, w0
|
|
ldr w0, [x29, 168]
|
|
add w0, w4, w0
|
|
str w0, [x29, 164]
|
|
ldr w0, [x1, #:lo12:.LANCHOR226]
|
|
add w0, w0, w2
|
|
str w0, [x1, #:lo12:.LANCHOR226]
|
|
adrp x1, .LANCHOR171
|
|
ldr w2, [x29, 164]
|
|
ldr w0, [x1, #:lo12:.LANCHOR171]
|
|
add w0, w0, w2
|
|
str w0, [x1, #:lo12:.LANCHOR171]
|
|
ldp w1, w0, [x29, 168]
|
|
bl FtlCacheMetchLpa
|
|
cbz w0, .L2890
|
|
bl FtlCacheWriteBack
|
|
.L2890:
|
|
ldr w20, [x29, 172]
|
|
adrp x26, .LANCHOR141
|
|
add x26, x26, :lo12:.LANCHOR141
|
|
mov w24, 0
|
|
mov w25, 0
|
|
adrp x27, .LANCHOR186
|
|
stp wzr, wzr, [x29, 156]
|
|
.L2891:
|
|
ldr w0, [x29, 164]
|
|
cbnz w0, .L2910
|
|
adrp x0, .LANCHOR119
|
|
ldrh w0, [x0, #:lo12:.LANCHOR119]
|
|
cbz w0, .L2887
|
|
mov w1, 1
|
|
mov w0, 0
|
|
bl ftl_do_gc
|
|
b .L2887
|
|
.L2910:
|
|
add x1, x29, 188
|
|
mov w2, 0
|
|
mov w0, w20
|
|
bl log2phys
|
|
ldr w1, [x29, 188]
|
|
cmn w1, #1
|
|
bne .L2892
|
|
add x3, x22, :lo12:.LANCHOR55
|
|
mov w28, 0
|
|
.L2893:
|
|
ldrh w0, [x3]
|
|
cmp w28, w0
|
|
bcc .L2895
|
|
.L2896:
|
|
ldr w0, [x29, 164]
|
|
add w20, w20, 1
|
|
subs w0, w0, #1
|
|
str w0, [x29, 164]
|
|
beq .L2900
|
|
adrp x0, .LANCHOR38
|
|
ldrh w0, [x0, #:lo12:.LANCHOR38]
|
|
cmp w24, w0, lsl 2
|
|
bne .L2891
|
|
.L2900:
|
|
cbz w24, .L2891
|
|
ldr x0, [x27, #:lo12:.LANCHOR186]
|
|
mov w1, w24
|
|
mov w2, 0
|
|
adrp x28, .LANCHOR194
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 156]
|
|
lsl w0, w0, 9
|
|
str w0, [x29, 132]
|
|
ldr w0, [x29, 152]
|
|
lsl w0, w0, 9
|
|
str x0, [x29, 136]
|
|
ldr w0, [x29, 160]
|
|
lsl w0, w0, 9
|
|
str w0, [x29, 144]
|
|
mov w0, 56
|
|
umull x0, w24, w0
|
|
mov x24, 0
|
|
str x0, [x29, 120]
|
|
adrp x0, .LC68
|
|
add x0, x0, :lo12:.LC68
|
|
str x0, [x29, 112]
|
|
.L2909:
|
|
ldr x0, [x27, #:lo12:.LANCHOR186]
|
|
ldr w2, [x29, 172]
|
|
add x0, x0, x24
|
|
ldr w1, [x0, 24]
|
|
cmp w2, w1
|
|
bne .L2902
|
|
ldr x1, [x0, 8]
|
|
adrp x0, .LANCHOR193
|
|
ldr x0, [x0, #:lo12:.LANCHOR193]
|
|
cmp x1, x0
|
|
bne .L2903
|
|
ldr x0, [x29, 136]
|
|
ldr w2, [x29, 144]
|
|
add x1, x1, x0
|
|
mov x0, x21
|
|
.L2931:
|
|
bl ftl_memcpy
|
|
.L2903:
|
|
ldr x0, [x27, #:lo12:.LANCHOR186]
|
|
add x2, x0, x24
|
|
ldr w1, [x0, x24]
|
|
cmn w1, #1
|
|
bne .L2904
|
|
ldr w0, [x26, 72]
|
|
mov w25, w1
|
|
add w0, w0, 1
|
|
str w0, [x26, 72]
|
|
.L2904:
|
|
ldr x0, [x2, 16]
|
|
ldr w1, [x2, 24]
|
|
ldr w3, [x0, 8]
|
|
cmp w1, w3
|
|
beq .L2905
|
|
ldr w3, [x26, 72]
|
|
add w3, w3, 1
|
|
str w3, [x26, 72]
|
|
ldr x3, [x2, 8]
|
|
ldr w4, [x3, 4]
|
|
str w4, [sp]
|
|
ldp w4, w5, [x0, 4]
|
|
ldr w6, [x0, 12]
|
|
ldr w7, [x3]
|
|
ldr w2, [x2, 4]
|
|
ldr w3, [x0]
|
|
ldr x0, [x29, 112]
|
|
bl printf
|
|
.L2905:
|
|
ldr x0, [x27, #:lo12:.LANCHOR186]
|
|
add x1, x0, x24
|
|
ldr w0, [x0, x24]
|
|
cmp w0, 256
|
|
bne .L2906
|
|
ldr w0, [x1, 4]
|
|
lsr w0, w0, 10
|
|
bl P2V_block_in_plane
|
|
and w1, w0, 65535
|
|
str w1, [x29, 128]
|
|
bl FtlGcRefreshBlock
|
|
adrp x2, .LANCHOR78
|
|
add x2, x2, :lo12:.LANCHOR78
|
|
adrp x3, .LANCHOR213
|
|
.L2908:
|
|
mov w1, 1
|
|
stp x3, x2, [x29, 96]
|
|
mov w0, w1
|
|
bl ftl_do_gc
|
|
ldr x2, [x29, 104]
|
|
ldr w0, [x2]
|
|
cbnz w0, .L2907
|
|
ldr x3, [x29, 96]
|
|
ldr w1, [x29, 128]
|
|
ldrh w0, [x3, #:lo12:.LANCHOR213]
|
|
cmp w0, w1
|
|
beq .L2908
|
|
.L2907:
|
|
bl FtlSysFlush
|
|
.L2906:
|
|
ldr x0, [x29, 120]
|
|
add x24, x24, 56
|
|
cmp x0, x24
|
|
bne .L2909
|
|
mov w24, 0
|
|
b .L2891
|
|
.L2895:
|
|
madd w0, w20, w0, w28
|
|
cmp w19, w0
|
|
bhi .L2894
|
|
ldr w1, [x29, 148]
|
|
cmp w1, w0
|
|
bls .L2894
|
|
sub w0, w0, w19
|
|
str x3, [x29, 136]
|
|
lsl w0, w0, 9
|
|
mov w2, 512
|
|
mov w1, 0
|
|
add x0, x21, x0
|
|
bl ftl_memset
|
|
ldr x3, [x29, 136]
|
|
.L2894:
|
|
add w28, w28, 1
|
|
b .L2893
|
|
.L2892:
|
|
ldr x0, [x27, #:lo12:.LANCHOR186]
|
|
mov w2, 56
|
|
umaddl x0, w24, w2, x0
|
|
str w1, [x0, 4]
|
|
ldr w1, [x29, 172]
|
|
cmp w20, w1
|
|
bne .L2897
|
|
adrp x1, .LANCHOR193
|
|
ldr x1, [x1, #:lo12:.LANCHOR193]
|
|
str x1, [x0, 8]
|
|
ldrh w1, [x22, #:lo12:.LANCHOR55]
|
|
udiv w2, w19, w1
|
|
msub w2, w2, w1, w19
|
|
str w2, [x29, 152]
|
|
sub w2, w1, w2
|
|
cmp w23, w2
|
|
csel w2, w23, w2, ls
|
|
str w2, [x29, 160]
|
|
cmp w2, w1
|
|
bne .L2898
|
|
str x21, [x0, 8]
|
|
.L2898:
|
|
adrp x1, .LANCHOR58
|
|
adrp x2, .LANCHOR196
|
|
str w20, [x0, 24]
|
|
ldrh w1, [x1, #:lo12:.LANCHOR58]
|
|
ldr x2, [x2, #:lo12:.LANCHOR196]
|
|
mul w1, w1, w24
|
|
add w24, w24, 1
|
|
and x1, x1, 4294967292
|
|
add x1, x2, x1
|
|
str x1, [x0, 16]
|
|
b .L2896
|
|
.L2897:
|
|
ldr w1, [x29, 168]
|
|
cmp w20, w1
|
|
bne .L2899
|
|
ldrh w2, [x22, #:lo12:.LANCHOR55]
|
|
adrp x1, .LANCHOR194
|
|
ldr w3, [x29, 148]
|
|
ldr x1, [x1, #:lo12:.LANCHOR194]
|
|
str x1, [x0, 8]
|
|
mul w1, w20, w2
|
|
sub w3, w3, w1
|
|
str w3, [x29, 156]
|
|
cmp w2, w3
|
|
bne .L2898
|
|
.L2930:
|
|
sub w1, w1, w19
|
|
lsl w1, w1, 9
|
|
add x1, x21, x1
|
|
str x1, [x0, 8]
|
|
b .L2898
|
|
.L2899:
|
|
ldrh w1, [x22, #:lo12:.LANCHOR55]
|
|
mul w1, w1, w20
|
|
b .L2930
|
|
.L2902:
|
|
ldr w2, [x29, 168]
|
|
cmp w2, w1
|
|
bne .L2903
|
|
ldr x1, [x0, 8]
|
|
ldr x0, [x28, #:lo12:.LANCHOR194]
|
|
cmp x1, x0
|
|
bne .L2903
|
|
ldrh w0, [x22, #:lo12:.LANCHOR55]
|
|
mul w0, w0, w2
|
|
ldr w2, [x29, 132]
|
|
sub w0, w0, w19
|
|
lsl w0, w0, 9
|
|
add x0, x21, x0
|
|
b .L2931
|
|
.L2914:
|
|
mov w25, -1
|
|
b .L2887
|
|
.size FtlRead, .-FtlRead
|
|
.section .text.ftl_vendor_read,"ax",@progbits
|
|
.align 2
|
|
.global ftl_vendor_read
|
|
.type ftl_vendor_read, %function
|
|
ftl_vendor_read:
|
|
mov x3, x2
|
|
mov w2, w1
|
|
mov w1, w0
|
|
mov w0, 16
|
|
b FtlRead
|
|
.size ftl_vendor_read, .-ftl_vendor_read
|
|
.section .text.ftl_sys_read,"ax",@progbits
|
|
.align 2
|
|
.global ftl_sys_read
|
|
.type ftl_sys_read, %function
|
|
ftl_sys_read:
|
|
mov x3, x2
|
|
mov w2, w1
|
|
add w1, w0, 256
|
|
mov w0, 16
|
|
b FtlRead
|
|
.size ftl_sys_read, .-ftl_sys_read
|
|
.section .text.StorageSysDataLoad,"ax",@progbits
|
|
.align 2
|
|
.global StorageSysDataLoad
|
|
.type StorageSysDataLoad, %function
|
|
StorageSysDataLoad:
|
|
stp x29, x30, [sp, -32]!
|
|
mov x2, 512
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov x19, x1
|
|
mov w20, w0
|
|
mov w1, 0
|
|
mov x0, x19
|
|
bl memset
|
|
mov x3, x19
|
|
add w1, w20, 256
|
|
ldp x19, x20, [sp, 16]
|
|
mov w2, 1
|
|
ldp x29, x30, [sp], 32
|
|
mov w0, 16
|
|
b FtlRead
|
|
.size StorageSysDataLoad, .-StorageSysDataLoad
|
|
.section .text.FlashBootVendorRead,"ax",@progbits
|
|
.align 2
|
|
.global FlashBootVendorRead
|
|
.type FlashBootVendorRead, %function
|
|
FlashBootVendorRead:
|
|
mov x3, x2
|
|
mov w1, w0
|
|
mov w2, 1
|
|
mov w0, 16
|
|
b FtlRead
|
|
.size FlashBootVendorRead, .-FlashBootVendorRead
|
|
.section .text.ftl_read,"ax",@progbits
|
|
.align 2
|
|
.global ftl_read
|
|
.type ftl_read, %function
|
|
ftl_read:
|
|
and w0, w0, 255
|
|
b FtlRead
|
|
.size ftl_read, .-ftl_read
|
|
.section .text.FtlInit,"ax",@progbits
|
|
.align 2
|
|
.global FtlInit
|
|
.type FtlInit, %function
|
|
FtlInit:
|
|
stp x29, x30, [sp, -64]!
|
|
mov w0, -1
|
|
adrp x1, .LC77
|
|
add x1, x1, :lo12:.LC77
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
adrp x19, .LANCHOR247
|
|
stp x21, x22, [sp, 32]
|
|
str w0, [x19, #:lo12:.LANCHOR247]
|
|
adrp x0, .LANCHOR254
|
|
stp x23, x24, [sp, 48]
|
|
str wzr, [x0, #:lo12:.LANCHOR254]
|
|
adrp x0, .LANCHOR78
|
|
str wzr, [x0, #:lo12:.LANCHOR78]
|
|
adrp x0, .LC7
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
adrp x0, .LANCHOR15
|
|
add x0, x0, :lo12:.LANCHOR15
|
|
bl FtlConstantsInit
|
|
bl FtlMemInit
|
|
bl FtlVariablesInit
|
|
adrp x0, .LANCHOR39
|
|
ldrh w0, [x0, #:lo12:.LANCHOR39]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cbz w0, .L2939
|
|
adrp x1, .LANCHOR255
|
|
adrp x0, .LC78
|
|
add x1, x1, :lo12:.LANCHOR255
|
|
add x0, x0, :lo12:.LC78
|
|
.L2948:
|
|
bl printf
|
|
.L2940:
|
|
mov w0, 0
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldp x29, x30, [sp], 64
|
|
ret
|
|
.L2939:
|
|
bl FtlSysBlkInit
|
|
cbz w0, .L2941
|
|
adrp x1, .LANCHOR255
|
|
adrp x0, .LC79
|
|
add x1, x1, :lo12:.LANCHOR255
|
|
add x0, x0, :lo12:.LC79
|
|
b .L2948
|
|
.L2941:
|
|
mov w1, 1
|
|
str w1, [x19, #:lo12:.LANCHOR247]
|
|
bl ftl_do_gc
|
|
adrp x0, .LANCHOR90
|
|
mov x22, x0
|
|
ldrh w23, [x0, #:lo12:.LANCHOR90]
|
|
cmp w23, 15
|
|
bhi .L2940
|
|
adrp x20, .LANCHOR115
|
|
add x20, x20, :lo12:.LANCHOR115
|
|
mov w19, 0
|
|
adrp x24, .LANCHOR213
|
|
mov w21, 65535
|
|
.L2945:
|
|
ldrh w0, [x24, #:lo12:.LANCHOR213]
|
|
cmp w0, w21
|
|
bne .L2943
|
|
ldrh w0, [x20]
|
|
cmp w0, w21
|
|
bne .L2943
|
|
and w0, w19, 63
|
|
bl List_get_gc_head_node
|
|
bl FtlGcRefreshBlock
|
|
.L2943:
|
|
mov w1, 1
|
|
mov w0, w1
|
|
bl ftl_do_gc
|
|
mov w1, 1
|
|
mov w0, 0
|
|
bl ftl_do_gc
|
|
ldrh w1, [x22, #:lo12:.LANCHOR90]
|
|
add w0, w23, 2
|
|
cmp w1, w0
|
|
bhi .L2940
|
|
add w19, w19, 1
|
|
cmp w19, 4096
|
|
bne .L2945
|
|
b .L2940
|
|
.size FtlInit, .-FtlInit
|
|
.section .text.rk_ftl_init,"ax",@progbits
|
|
.align 2
|
|
.global rk_ftl_init
|
|
.type rk_ftl_init, %function
|
|
rk_ftl_init:
|
|
stp x29, x30, [sp, -32]!
|
|
add x29, sp, 0
|
|
str x19, [sp, 16]
|
|
bl FlashInit
|
|
mov w19, w0
|
|
cbnz w0, .L2950
|
|
bl FtlInit
|
|
.L2950:
|
|
bl idb_init
|
|
mov w1, w19
|
|
adrp x0, .LC80
|
|
add x0, x0, :lo12:.LC80
|
|
bl printf
|
|
mov w0, w19
|
|
ldr x19, [sp, 16]
|
|
ldp x29, x30, [sp], 32
|
|
ret
|
|
.size rk_ftl_init, .-rk_ftl_init
|
|
.section .text.ftl_fix_nand_power_lost_error,"ax",@progbits
|
|
.align 2
|
|
.global ftl_fix_nand_power_lost_error
|
|
.type ftl_fix_nand_power_lost_error, %function
|
|
ftl_fix_nand_power_lost_error:
|
|
adrp x0, .LANCHOR16
|
|
ldrb w0, [x0, #:lo12:.LANCHOR16]
|
|
cbz w0, .L2967
|
|
stp x29, x30, [sp, -128]!
|
|
add x29, sp, 0
|
|
str x25, [sp, 64]
|
|
adrp x25, .LANCHOR241
|
|
stp x23, x24, [sp, 48]
|
|
stp x21, x22, [sp, 32]
|
|
adrp x21, .LANCHOR85
|
|
ldrh w23, [x25, #:lo12:.LANCHOR241]
|
|
ldr x0, [x21, #:lo12:.LANCHOR85]
|
|
mov w1, w23
|
|
stp x19, x20, [sp, 16]
|
|
ubfiz x24, x23, 1, 16
|
|
adrp x19, .LC81
|
|
ldrh w2, [x0, x24]
|
|
add x0, x19, :lo12:.LC81
|
|
bl printf
|
|
adrp x0, .LANCHOR93
|
|
add x11, x0, :lo12:.LANCHOR93
|
|
ldrh w0, [x0, #:lo12:.LANCHOR93]
|
|
bl FtlGcRefreshOpenBlock
|
|
adrp x0, .LANCHOR94
|
|
add x20, x0, :lo12:.LANCHOR94
|
|
ldrh w0, [x0, #:lo12:.LANCHOR94]
|
|
bl FtlGcRefreshOpenBlock
|
|
mov x0, x11
|
|
bl allocate_new_data_superblock
|
|
mov x0, x20
|
|
mov w20, 4097
|
|
bl allocate_new_data_superblock
|
|
.L2954:
|
|
subs w20, w20, #1
|
|
beq .L2958
|
|
mov w1, 1
|
|
mov w0, w1
|
|
bl ftl_do_gc
|
|
ldr x0, [x21, #:lo12:.LANCHOR85]
|
|
ldrh w0, [x0, x24]
|
|
cbnz w0, .L2954
|
|
.L2958:
|
|
ldr x0, [x21, #:lo12:.LANCHOR85]
|
|
mov w1, w23
|
|
ldrh w2, [x0, x24]
|
|
add x0, x19, :lo12:.LC81
|
|
bl printf
|
|
ldr x0, [x21, #:lo12:.LANCHOR85]
|
|
ldrh w19, [x0, x24]
|
|
cbnz w19, .L2956
|
|
add x20, x29, 128
|
|
adrp x22, .LANCHOR79
|
|
strh w23, [x20, -48]!
|
|
mov x0, x20
|
|
bl make_superblock
|
|
adrp x0, .LANCHOR38
|
|
ldr x4, [x22, #:lo12:.LANCHOR79]
|
|
add x20, x20, 16
|
|
mov w5, 65535
|
|
ldrh w3, [x0, #:lo12:.LANCHOR38]
|
|
mov w6, 56
|
|
mov w0, 0
|
|
.L2959:
|
|
cmp w0, w3
|
|
bne .L2961
|
|
ldr x0, [x21, #:lo12:.LANCHOR85]
|
|
mov w1, w23
|
|
ldrh w2, [x0, x24]
|
|
adrp x0, .LC82
|
|
add x0, x0, :lo12:.LC82
|
|
bl printf
|
|
ldr x0, [x22, #:lo12:.LANCHOR79]
|
|
mov w2, w19
|
|
mov w1, 0
|
|
bl FlashEraseBlocks
|
|
ldr x0, [x22, #:lo12:.LANCHOR79]
|
|
mov w2, w19
|
|
mov w1, 1
|
|
bl FlashEraseBlocks
|
|
.L2956:
|
|
mov w0, -1
|
|
strh w0, [x25, #:lo12:.LANCHOR241]
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x23, x24, [sp, 48]
|
|
ldr x25, [sp, 64]
|
|
ldp x29, x30, [sp], 128
|
|
ret
|
|
.L2961:
|
|
ldrh w1, [x20]
|
|
cmp w1, w5
|
|
beq .L2960
|
|
umaddl x2, w19, w6, x4
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
lsl w1, w1, 10
|
|
stp xzr, xzr, [x2, 8]
|
|
str w1, [x2, 4]
|
|
.L2960:
|
|
add w0, w0, 1
|
|
add x20, x20, 2
|
|
and w0, w0, 65535
|
|
b .L2959
|
|
.L2967:
|
|
ret
|
|
.size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error
|
|
.section .text.FtlWrite,"ax",@progbits
|
|
.align 2
|
|
.global FtlWrite
|
|
.type FtlWrite, %function
|
|
FtlWrite:
|
|
stp x29, x30, [sp, -256]!
|
|
add x29, sp, 0
|
|
stp x21, x22, [sp, 32]
|
|
mov w22, w1
|
|
adrp x1, .LANCHOR78
|
|
stp x25, x26, [sp, 64]
|
|
mov w25, w2
|
|
stp x19, x20, [sp, 16]
|
|
ldr w2, [x1, #:lo12:.LANCHOR78]
|
|
stp x23, x24, [sp, 48]
|
|
stp x27, x28, [sp, 80]
|
|
str x1, [x29, 120]
|
|
cbnz w2, .L3013
|
|
adrp x1, .LANCHOR247
|
|
ldr w1, [x1, #:lo12:.LANCHOR247]
|
|
cmp w1, 1
|
|
bne .L3013
|
|
mov x23, x3
|
|
cmp w0, 16
|
|
bne .L2972
|
|
mov x2, x3
|
|
mov w1, w25
|
|
add w0, w22, 256
|
|
bl FtlVendorPartWrite
|
|
.L2970:
|
|
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], 256
|
|
ret
|
|
.L2972:
|
|
adrp x0, .LANCHOR68
|
|
ldr w1, [x0, #:lo12:.LANCHOR68]
|
|
cmp w22, w1
|
|
bcs .L3016
|
|
cmp w25, w1
|
|
bhi .L3016
|
|
add w0, w22, w25
|
|
cmp w1, w0
|
|
bcc .L3016
|
|
adrp x1, .LANCHOR256
|
|
adrp x3, .LANCHOR55
|
|
mov w2, 2048
|
|
sub w0, w0, #1
|
|
str w2, [x1, #:lo12:.LANCHOR256]
|
|
adrp x2, .LANCHOR167
|
|
ldrh w1, [x3, #:lo12:.LANCHOR55]
|
|
adrp x21, .LANCHOR72
|
|
str x3, [x29, 184]
|
|
cmp w25, w1, lsl 1
|
|
udiv w0, w0, w1
|
|
udiv w26, w22, w1
|
|
str w0, [x29, 172]
|
|
sub w27, w0, w26
|
|
ldr w0, [x2, #:lo12:.LANCHOR167]
|
|
add w24, w27, 1
|
|
add w0, w0, w24
|
|
str w0, [x2, #:lo12:.LANCHOR167]
|
|
adrp x2, .LANCHOR225
|
|
ldr w0, [x2, #:lo12:.LANCHOR225]
|
|
add w0, w0, w25
|
|
str w0, [x2, #:lo12:.LANCHOR225]
|
|
ldr w2, [x21, #:lo12:.LANCHOR72]
|
|
cset w0, cs
|
|
str w0, [x29, 176]
|
|
cbz w2, .L2974
|
|
adrp x0, .LANCHOR73
|
|
sub w2, w2, #1
|
|
mov w3, 56
|
|
adrp x20, .LANCHOR257
|
|
ldr x0, [x0, #:lo12:.LANCHOR73]
|
|
umaddl x2, w2, w3, x0
|
|
ldr w0, [x2, 24]
|
|
cmp w26, w0
|
|
bne .L2975
|
|
adrp x3, .LANCHOR169
|
|
ldr w0, [x3, #:lo12:.LANCHOR169]
|
|
add w0, w0, 1
|
|
str w0, [x3, #:lo12:.LANCHOR169]
|
|
ldr w0, [x20, #:lo12:.LANCHOR257]
|
|
ldr x3, [x2, 8]
|
|
add w0, w0, 1
|
|
str w0, [x20, #:lo12:.LANCHOR257]
|
|
msub w0, w26, w1, w22
|
|
sub w1, w1, w0
|
|
cmp w25, w1
|
|
lsl w0, w0, 9
|
|
csel w19, w25, w1, ls
|
|
add x0, x3, x0
|
|
lsl w24, w19, 9
|
|
mov x1, x23
|
|
mov w2, w24
|
|
bl ftl_memcpy
|
|
cbnz w27, .L2976
|
|
ldr w0, [x20, #:lo12:.LANCHOR257]
|
|
cmp w0, 2
|
|
bgt .L2976
|
|
.L3013:
|
|
mov w0, 0
|
|
b .L2970
|
|
.L2976:
|
|
add x23, x23, x24
|
|
sub w25, w25, w19
|
|
add w22, w22, w19
|
|
add w26, w26, 1
|
|
mov w24, w27
|
|
.L2975:
|
|
str wzr, [x20, #:lo12:.LANCHOR257]
|
|
.L2974:
|
|
ldr w1, [x29, 172]
|
|
mov w0, w26
|
|
bl FtlCacheMetchLpa
|
|
cbz w0, .L2977
|
|
bl FtlCacheWriteBack
|
|
.L2977:
|
|
adrp x0, .LANCHOR252
|
|
mov w20, w26
|
|
adrp x27, .LANCHOR93
|
|
str x0, [x29, 112]
|
|
add x1, x27, :lo12:.LANCHOR93
|
|
str x1, [x0, #:lo12:.LANCHOR252]
|
|
adrp x0, .LANCHOR57
|
|
add x0, x0, :lo12:.LANCHOR57
|
|
str x0, [x29, 136]
|
|
.L2978:
|
|
cbnz w24, .L3007
|
|
bl FtlCacheWriteBack
|
|
ldr w0, [x29, 172]
|
|
sub w1, w0, w26
|
|
mov w0, 0
|
|
bl ftl_do_gc
|
|
adrp x1, .LANCHOR90
|
|
mov x22, x1
|
|
ldrh w0, [x1, #:lo12:.LANCHOR90]
|
|
cmp w0, 5
|
|
bls .L3008
|
|
cmp w0, 31
|
|
bhi .L3013
|
|
adrp x0, .LANCHOR2
|
|
ldrb w0, [x0, #:lo12:.LANCHOR2]
|
|
cbnz w0, .L3013
|
|
.L3008:
|
|
adrp x20, .LANCHOR115
|
|
adrp x21, .LANCHOR116
|
|
adrp x19, .LANCHOR182
|
|
add x20, x20, :lo12:.LANCHOR115
|
|
add x21, x21, :lo12:.LANCHOR116
|
|
add x19, x19, :lo12:.LANCHOR182
|
|
.L3011:
|
|
adrp x0, .LANCHOR213
|
|
ldrh w1, [x0, #:lo12:.LANCHOR213]
|
|
mov w0, 65535
|
|
cmp w1, w0
|
|
bne .L3010
|
|
ldrh w0, [x20]
|
|
cmp w0, w1
|
|
bne .L3010
|
|
ldrh w1, [x21]
|
|
cmp w1, w0
|
|
bne .L3010
|
|
and w0, w24, 7
|
|
bl List_get_gc_head_node
|
|
bl FtlGcRefreshBlock
|
|
.L3010:
|
|
adrp x1, .LANCHOR181
|
|
mov w0, 128
|
|
strh w0, [x19]
|
|
strh w0, [x1, #:lo12:.LANCHOR181]
|
|
mov w1, 1
|
|
mov w0, w1
|
|
bl ftl_do_gc
|
|
mov w1, 1
|
|
mov w0, 0
|
|
bl ftl_do_gc
|
|
ldr x0, [x29, 120]
|
|
ldr w0, [x0, #:lo12:.LANCHOR78]
|
|
cbnz w0, .L3013
|
|
ldrh w0, [x22, #:lo12:.LANCHOR90]
|
|
cmp w0, 2
|
|
bhi .L3013
|
|
add w24, w24, 1
|
|
cmp w24, 256
|
|
bne .L3011
|
|
b .L3013
|
|
.L3007:
|
|
add x0, x27, :lo12:.LANCHOR93
|
|
adrp x1, .LANCHOR38
|
|
str x1, [x29, 144]
|
|
ldrb w2, [x0, 6]
|
|
ldrh w0, [x1, #:lo12:.LANCHOR38]
|
|
cmp w2, w0
|
|
bcc .L2979
|
|
mov w2, 1472
|
|
adrp x1, .LANCHOR258
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR258
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2979:
|
|
add x19, x27, :lo12:.LANCHOR93
|
|
ldrh w0, [x19, 4]
|
|
cbnz w0, .L2980
|
|
mov x0, x19
|
|
bl allocate_new_data_superblock
|
|
ldr x0, [x29, 112]
|
|
str x19, [x0, #:lo12:.LANCHOR252]
|
|
.L2980:
|
|
adrp x1, .LANCHOR185
|
|
ldr w2, [x21, #:lo12:.LANCHOR72]
|
|
str x1, [x29, 104]
|
|
ldr w0, [x1, #:lo12:.LANCHOR185]
|
|
sub w0, w0, w2
|
|
add x2, x27, :lo12:.LANCHOR93
|
|
ldrh w3, [x2, 4]
|
|
ldrb w2, [x2, 6]
|
|
cmp w0, w3
|
|
csel w0, w0, w3, ls
|
|
cmp w0, w24
|
|
csel w0, w0, w24, ls
|
|
str w0, [x29, 132]
|
|
ldr x0, [x29, 144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR38]
|
|
cmp w2, w0
|
|
bcc .L2981
|
|
mov w2, 1515
|
|
adrp x1, .LANCHOR258
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR258
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2981:
|
|
str wzr, [x29, 180]
|
|
.L2982:
|
|
ldr w1, [x29, 132]
|
|
ldr w0, [x29, 180]
|
|
cmp w0, w1
|
|
bne .L3002
|
|
.L2983:
|
|
ldr w0, [x29, 180]
|
|
cmp w24, w0
|
|
bcs .L3003
|
|
mov w2, 1609
|
|
adrp x1, .LANCHOR258
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR258
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L3003:
|
|
ldr w0, [x29, 180]
|
|
ldr w1, [x21, #:lo12:.LANCHOR72]
|
|
sub w24, w24, w0
|
|
ldr x0, [x29, 104]
|
|
ldr w0, [x0, #:lo12:.LANCHOR185]
|
|
cmp w1, w0
|
|
bcs .L3004
|
|
ldr w0, [x29, 176]
|
|
cbnz w0, .L3004
|
|
add x0, x27, :lo12:.LANCHOR93
|
|
ldrh w0, [x0, 4]
|
|
cbz w0, .L3004
|
|
.L3006:
|
|
str wzr, [x29, 176]
|
|
b .L2978
|
|
.L3002:
|
|
add x0, x27, :lo12:.LANCHOR93
|
|
ldrh w0, [x0, 4]
|
|
cbz w0, .L2983
|
|
ldr w0, [x29, 172]
|
|
cmp w0, w20
|
|
ldr w0, [x29, 176]
|
|
cset w3, eq
|
|
tst w3, w0
|
|
beq .L2984
|
|
ldr w0, [x29, 180]
|
|
cbz w0, .L2984
|
|
ldr x0, [x29, 184]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR55]
|
|
add w0, w22, w25
|
|
msub w0, w20, w1, w0
|
|
cmp w1, w0
|
|
bne .L2983
|
|
.L2984:
|
|
add x1, x29, 196
|
|
mov w2, 0
|
|
str w3, [x29, 96]
|
|
adrp x19, .LANCHOR73
|
|
mov w0, w20
|
|
bl log2phys
|
|
add x0, x27, :lo12:.LANCHOR93
|
|
bl get_new_active_ppa
|
|
ldr w5, [x21, #:lo12:.LANCHOR72]
|
|
mov w4, 56
|
|
ldr x1, [x19, #:lo12:.LANCHOR73]
|
|
str w4, [x29, 168]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x1, w5, w4, x1
|
|
str w0, [x1, 4]
|
|
adrp x0, .LANCHOR58
|
|
str w20, [x1, 24]
|
|
ldrh w2, [x0, #:lo12:.LANCHOR58]
|
|
mul w0, w5, w2
|
|
and x0, x0, 4294967292
|
|
str x0, [x29, 160]
|
|
adrp x0, .LANCHOR197
|
|
ldr x3, [x29, 160]
|
|
ldr x0, [x0, #:lo12:.LANCHOR197]
|
|
str x0, [x29, 152]
|
|
add x28, x0, x3
|
|
adrp x0, .LANCHOR57
|
|
str x28, [x1, 16]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR57]
|
|
mul w0, w0, w5
|
|
adrp x5, .LANCHOR192
|
|
ldr x5, [x5, #:lo12:.LANCHOR192]
|
|
and x0, x0, 4294967292
|
|
add x0, x5, x0
|
|
str x0, [x1, 8]
|
|
mov w1, 0
|
|
mov x0, x28
|
|
bl ftl_memset
|
|
ldr w3, [x29, 96]
|
|
cmp w26, w20
|
|
cset w0, eq
|
|
ldr w4, [x29, 168]
|
|
orr w0, w3, w0
|
|
mov x3, x19
|
|
cbz w0, .L2985
|
|
bne .L2986
|
|
ldr x0, [x29, 184]
|
|
ldrh w19, [x0, #:lo12:.LANCHOR55]
|
|
udiv w0, w22, w19
|
|
msub w0, w0, w19, w22
|
|
str w0, [x29, 168]
|
|
sub w19, w19, w0
|
|
cmp w19, w25
|
|
csel w19, w19, w25, ls
|
|
.L2987:
|
|
ldr x0, [x29, 184]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR55]
|
|
cmp w0, w19
|
|
bne .L2988
|
|
cmp w26, w20
|
|
beq .L3019
|
|
mul w1, w20, w19
|
|
sub w1, w1, w22
|
|
lsl w1, w1, 9
|
|
add x1, x23, x1
|
|
.L2989:
|
|
ldr w0, [x29, 176]
|
|
cbz w0, .L2990
|
|
ldr x2, [x3, #:lo12:.LANCHOR73]
|
|
mov w3, 56
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
umaddl x0, w0, w3, x2
|
|
str x1, [x0, 8]
|
|
.L2991:
|
|
add x0, x27, :lo12:.LANCHOR93
|
|
ldrb w1, [x0, 6]
|
|
ldr x0, [x29, 144]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR38]
|
|
cmp w1, w0
|
|
bcc .L2999
|
|
mov w2, 1599
|
|
adrp x1, .LANCHOR258
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR258
|
|
add x0, x0, :lo12:.LC5
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L2999:
|
|
ldp x1, x2, [x29, 152]
|
|
mov w0, -3947
|
|
strh w0, [x1, x2]
|
|
adrp x1, .LANCHOR165
|
|
ldr w0, [x1, #:lo12:.LANCHOR165]
|
|
stp w0, w20, [x28, 4]
|
|
add w20, w20, 1
|
|
add w0, w0, 1
|
|
cmn w0, #1
|
|
csel w0, w0, wzr, ne
|
|
str w0, [x1, #:lo12:.LANCHOR165]
|
|
ldr w0, [x29, 196]
|
|
str w0, [x28, 12]
|
|
ldrh w0, [x27, #:lo12:.LANCHOR93]
|
|
strh w0, [x28, 2]
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
add w0, w0, 1
|
|
str w0, [x21, #:lo12:.LANCHOR72]
|
|
ldr w0, [x29, 180]
|
|
add w0, w0, 1
|
|
str w0, [x29, 180]
|
|
b .L2982
|
|
.L2986:
|
|
ldr x0, [x29, 184]
|
|
add w19, w22, w25
|
|
str wzr, [x29, 168]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR55]
|
|
msub w19, w20, w0, w19
|
|
and w19, w19, 65535
|
|
b .L2987
|
|
.L3019:
|
|
mov x1, x23
|
|
b .L2989
|
|
.L2990:
|
|
ldr x2, [x3, #:lo12:.LANCHOR73]
|
|
mov w3, 56
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
umaddl x0, w0, w3, x2
|
|
ldr x2, [x29, 136]
|
|
ldrh w2, [x2]
|
|
.L3039:
|
|
ldr x0, [x0, 8]
|
|
b .L3038
|
|
.L2988:
|
|
ldr w0, [x29, 196]
|
|
cmn w0, #1
|
|
beq .L2992
|
|
ldr x1, [x3, #:lo12:.LANCHOR73]
|
|
mov w2, 56
|
|
str w0, [x29, 204]
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
str x3, [x29, 96]
|
|
str w20, [x29, 224]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x0, w0, w2, x1
|
|
mov w2, 0
|
|
ldp x1, x0, [x0, 8]
|
|
stp x1, x0, [x29, 208]
|
|
mov w1, 1
|
|
add x0, x29, 200
|
|
bl FlashReadPages
|
|
ldr w0, [x29, 200]
|
|
ldr x3, [x29, 96]
|
|
cmn w0, #1
|
|
bne .L2993
|
|
adrp x0, .LANCHOR141
|
|
add x0, x0, :lo12:.LANCHOR141
|
|
ldr w1, [x0, 72]
|
|
add w1, w1, 1
|
|
str w1, [x0, 72]
|
|
.L2996:
|
|
cmp w26, w20
|
|
lsl w2, w19, 9
|
|
bne .L2997
|
|
ldr x0, [x3, #:lo12:.LANCHOR73]
|
|
mov w3, 56
|
|
ldr w1, [x21, #:lo12:.LANCHOR72]
|
|
umaddl x1, w1, w3, x0
|
|
ldr w0, [x29, 168]
|
|
lsl w0, w0, 9
|
|
ldr x3, [x1, 8]
|
|
mov x1, x23
|
|
add x0, x3, x0
|
|
.L3038:
|
|
bl ftl_memcpy
|
|
b .L2991
|
|
.L2993:
|
|
ldr w1, [x28, 8]
|
|
cmp w20, w1
|
|
beq .L2995
|
|
adrp x0, .LANCHOR141
|
|
add x0, x0, :lo12:.LANCHOR141
|
|
str x3, [x29, 96]
|
|
ldr w2, [x0, 72]
|
|
add w2, w2, 1
|
|
str w2, [x0, 72]
|
|
mov w2, w20
|
|
adrp x0, .LC83
|
|
add x0, x0, :lo12:.LC83
|
|
bl printf
|
|
ldr x3, [x29, 96]
|
|
.L2995:
|
|
ldr w0, [x28, 8]
|
|
cmp w20, w0
|
|
beq .L2996
|
|
mov w2, 1581
|
|
adrp x1, .LANCHOR258
|
|
adrp x0, .LC5
|
|
add x1, x1, :lo12:.LANCHOR258
|
|
add x0, x0, :lo12:.LC5
|
|
str x3, [x29, 96]
|
|
bl printf
|
|
adrp x1, .LC6
|
|
adrp x0, .LC7
|
|
add x1, x1, :lo12:.LC6
|
|
add x0, x0, :lo12:.LC7
|
|
bl printf
|
|
.L3037:
|
|
ldr x3, [x29, 96]
|
|
b .L2996
|
|
.L2992:
|
|
ldr x1, [x3, #:lo12:.LANCHOR73]
|
|
mov w2, 56
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
str x3, [x29, 96]
|
|
nop // between mem op and mult-accumulate
|
|
umaddl x0, w0, w2, x1
|
|
ldr x1, [x29, 136]
|
|
ldr x0, [x0, 8]
|
|
ldrh w2, [x1]
|
|
mov w1, 0
|
|
bl ftl_memset
|
|
b .L3037
|
|
.L2997:
|
|
ldr x0, [x29, 184]
|
|
mov w4, 56
|
|
ldr x3, [x3, #:lo12:.LANCHOR73]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR55]
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
mul w1, w1, w20
|
|
umaddl x0, w0, w4, x3
|
|
sub w1, w1, w22
|
|
lsl w1, w1, 9
|
|
add x1, x23, x1
|
|
b .L3039
|
|
.L2985:
|
|
ldr w0, [x29, 176]
|
|
cbz w0, .L2998
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
ldr x1, [x19, #:lo12:.LANCHOR73]
|
|
umaddl x4, w0, w4, x1
|
|
ldr x0, [x29, 184]
|
|
ldrh w0, [x0, #:lo12:.LANCHOR55]
|
|
mul w0, w0, w20
|
|
sub w0, w0, w22
|
|
lsl w0, w0, 9
|
|
add x0, x23, x0
|
|
str x0, [x4, 8]
|
|
b .L2991
|
|
.L2998:
|
|
ldr x0, [x29, 184]
|
|
ldr x2, [x19, #:lo12:.LANCHOR73]
|
|
ldrh w1, [x0, #:lo12:.LANCHOR55]
|
|
ldr w0, [x21, #:lo12:.LANCHOR72]
|
|
mul w1, w1, w20
|
|
umaddl x4, w0, w4, x2
|
|
adrp x0, .LANCHOR57
|
|
sub w1, w1, w22
|
|
lsl w1, w1, 9
|
|
ldrh w2, [x0, #:lo12:.LANCHOR57]
|
|
add x1, x23, x1
|
|
ldr x0, [x4, 8]
|
|
b .L3038
|
|
.L3004:
|
|
bl FtlCacheWriteBack
|
|
str wzr, [x21, #:lo12:.LANCHOR72]
|
|
cmp w24, 1
|
|
bhi .L2978
|
|
b .L3006
|
|
.L3016:
|
|
mov w0, -1
|
|
b .L2970
|
|
.size FtlWrite, .-FtlWrite
|
|
.section .text.ftl_vendor_write,"ax",@progbits
|
|
.align 2
|
|
.global ftl_vendor_write
|
|
.type ftl_vendor_write, %function
|
|
ftl_vendor_write:
|
|
mov x3, x2
|
|
mov w2, w1
|
|
mov w1, w0
|
|
mov w0, 16
|
|
b FtlWrite
|
|
.size ftl_vendor_write, .-ftl_vendor_write
|
|
.section .text.ftl_sys_write,"ax",@progbits
|
|
.align 2
|
|
.global ftl_sys_write
|
|
.type ftl_sys_write, %function
|
|
ftl_sys_write:
|
|
mov x3, x2
|
|
mov w2, w1
|
|
add w1, w0, 256
|
|
mov w0, 16
|
|
b FtlWrite
|
|
.size ftl_sys_write, .-ftl_sys_write
|
|
.section .text.StorageSysDataStore,"ax",@progbits
|
|
.align 2
|
|
.global StorageSysDataStore
|
|
.type StorageSysDataStore, %function
|
|
StorageSysDataStore:
|
|
mov x3, x1
|
|
mov w2, 1
|
|
add w1, w0, 256
|
|
mov w0, 16
|
|
b FtlWrite
|
|
.size StorageSysDataStore, .-StorageSysDataStore
|
|
.section .text.FlashBootVendorWrite,"ax",@progbits
|
|
.align 2
|
|
.global FlashBootVendorWrite
|
|
.type FlashBootVendorWrite, %function
|
|
FlashBootVendorWrite:
|
|
mov x3, x2
|
|
mov w1, w0
|
|
mov w2, 1
|
|
mov w0, 16
|
|
b FtlWrite
|
|
.size FlashBootVendorWrite, .-FlashBootVendorWrite
|
|
.section .text.ftl_write,"ax",@progbits
|
|
.align 2
|
|
.global ftl_write
|
|
.type ftl_write, %function
|
|
ftl_write:
|
|
stp x29, x30, [sp, -48]!
|
|
add x29, sp, 0
|
|
stp x19, x20, [sp, 16]
|
|
mov w19, w2
|
|
stp x21, x22, [sp, 32]
|
|
mov x20, x3
|
|
mov w22, w1
|
|
ands w21, w0, 255
|
|
bne .L3045
|
|
mov w3, w2
|
|
mov w0, 0
|
|
mov x2, x20
|
|
bl idb_write_data
|
|
.L3045:
|
|
mov x3, x20
|
|
mov w2, w19
|
|
mov w1, w22
|
|
mov w0, w21
|
|
ldp x19, x20, [sp, 16]
|
|
ldp x21, x22, [sp, 32]
|
|
ldp x29, x30, [sp], 48
|
|
b FtlWrite
|
|
.size ftl_write, .-ftl_write
|
|
.section .text.FtlDumpSysBlock,"ax",@progbits
|
|
.align 2
|
|
.global FtlDumpSysBlock
|
|
.type FtlDumpSysBlock, %function
|
|
FtlDumpSysBlock:
|
|
sub sp, sp, #112
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x25, x26, [sp, 80]
|
|
and w25, w0, 65535
|
|
adrp x0, .LANCHOR189
|
|
stp x21, x22, [sp, 48]
|
|
adrp x21, .LANCHOR211
|
|
add x1, x21, :lo12:.LANCHOR211
|
|
ldr x2, [x0, #:lo12:.LANCHOR189]
|
|
adrp x22, .LANCHOR53
|
|
stp x23, x24, [sp, 64]
|
|
lsl w26, w25, 10
|
|
stp x19, x20, [sp, 32]
|
|
adrp x23, .LC84
|
|
str x27, [sp, 96]
|
|
adrp x24, .LC85
|
|
str x2, [x1, 8]
|
|
adrp x2, .LANCHOR195
|
|
add x22, x22, :lo12:.LANCHOR53
|
|
add x23, x23, :lo12:.LC84
|
|
ldr x2, [x2, #:lo12:.LANCHOR195]
|
|
add x24, x24, :lo12:.LC85
|
|
mov x27, x0
|
|
mov w19, 0
|
|
str x2, [x1, 16]
|
|
.L3048:
|
|
ldrh w0, [x22]
|
|
cmp w19, w0
|
|
blt .L3050
|
|
ldp x19, x20, [sp, 32]
|
|
ldp x21, x22, [sp, 48]
|
|
ldp x23, x24, [sp, 64]
|
|
ldp x25, x26, [sp, 80]
|
|
ldp x29, x30, [sp, 16]
|
|
ldr x27, [sp, 96]
|
|
add sp, sp, 112
|
|
ret
|
|
.L3050:
|
|
add x20, x21, :lo12:.LANCHOR211
|
|
orr w0, w19, w26
|
|
mov w2, 1
|
|
mov w1, w2
|
|
str w0, [x20, 4]
|
|
mov x0, x20
|
|
bl FlashReadPages
|
|
ldp x1, x0, [x20, 8]
|
|
ldr w2, [x21, #:lo12:.LANCHOR211]
|
|
ldr w3, [x20, 4]
|
|
ldr w1, [x1]
|
|
str w1, [sp]
|
|
mov w1, w25
|
|
ldp w4, w5, [x0]
|
|
ldp w6, w7, [x0, 8]
|
|
mov x0, x23
|
|
bl printf
|
|
ldr x0, [x20, 16]
|
|
ldr w0, [x0]
|
|
cmn w0, #1
|
|
beq .L3049
|
|
ldr x1, [x27, #:lo12:.LANCHOR189]
|
|
mov w3, 768
|
|
mov w2, 4
|
|
mov x0, x24
|
|
bl rknand_print_hex
|
|
.L3049:
|
|
add w19, w19, 1
|
|
sxth w19, w19
|
|
b .L3048
|
|
.size FtlDumpSysBlock, .-FtlDumpSysBlock
|
|
.section .text.dump_map_info,"ax",@progbits
|
|
.align 2
|
|
.global dump_map_info
|
|
.type dump_map_info, %function
|
|
dump_map_info:
|
|
sub sp, sp, #96
|
|
adrp x0, .LANCHOR40
|
|
stp x29, x30, [sp, 16]
|
|
add x29, sp, 16
|
|
stp x19, x20, [sp, 32]
|
|
ldrh w20, [x0, #:lo12:.LANCHOR40]
|
|
stp x23, x24, [sp, 64]
|
|
adrp x23, .LANCHOR47
|
|
stp x21, x22, [sp, 48]
|
|
add x23, x23, :lo12:.LANCHOR47
|
|
adrp x22, .LANCHOR41
|
|
add x22, x22, :lo12:.LANCHOR41
|
|
stp x25, x26, [sp, 80]
|
|
adrp x24, .LANCHOR38
|
|
.L3056:
|
|
ldrh w0, [x22]
|
|
cmp w0, w20
|
|
bhi .L3062
|
|
adrp x25, .LANCHOR131
|
|
adrp x19, .LANCHOR211
|
|
add x25, x25, :lo12:.LANCHOR131
|
|
add x19, x19, :lo12:.LANCHOR211
|
|
mov w26, 0
|
|
.L3063:
|
|
ldrh w0, [x25]
|
|
cmp w26, w0
|
|
bge .L3066
|
|
adrp x21, .LANCHOR53
|
|
adrp x0, .LC51
|
|
sbfiz x23, x26, 1, 32
|
|
mov w20, 0
|
|
add x21, x21, :lo12:.LANCHOR53
|
|
add x24, x0, :lo12:.LC51
|
|
b .L3067
|
|
.L3058:
|
|
ldrb w0, [x23, x5]
|
|
mov w1, w20
|
|
bl V2P_block
|
|
and w4, w0, 65535
|
|
bl FtlBbmIsBadBlock
|
|
cbnz w0, .L3057
|
|
umaddl x1, w19, w7, x6
|
|
lsl w4, w4, 10
|
|
mul w0, w19, w8
|
|
add w19, w19, 1
|
|
and w19, w19, 65535
|
|
asr w0, w0, 2
|
|
str w4, [x1, 4]
|
|
add x0, x10, x0, sxtw 2
|
|
stp x11, x0, [x1, 8]
|
|
.L3057:
|
|
add x5, x5, 1
|
|
.L3064:
|
|
cmp w12, w5, uxth
|
|
bhi .L3058
|
|
cbnz w19, .L3059
|
|
.L3061:
|
|
add w20, w20, 1
|
|
and w20, w20, 65535
|
|
b .L3056
|
|
.L3059:
|
|
mov w1, w19
|
|
mov w2, 1
|
|
mov x0, x6
|
|
bl FlashReadPages
|
|
mov w0, 56
|
|
adrp x26, .LC86
|
|
add x26, x26, :lo12:.LC86
|
|
mov x25, 0
|
|
umull x19, w19, w0
|
|
.L3060:
|
|
ldr x0, [x21, #:lo12:.LANCHOR186]
|
|
add x0, x0, x25
|
|
add x25, x25, 56
|
|
ldr x1, [x0, 16]
|
|
ldr w2, [x0, 4]
|
|
ldr x0, [x0, 8]
|
|
ldr w3, [x0, 4]
|
|
str w3, [sp]
|
|
ldr w7, [x0]
|
|
mov x0, x26
|
|
ldp w3, w4, [x1]
|
|
ldp w5, w6, [x1, 8]
|
|
ubfx x1, x2, 10, 16
|
|
bl printf
|
|
cmp x25, x19
|
|
bne .L3060
|
|
b .L3061
|
|
.L3062:
|
|
adrp x0, .LANCHOR107
|
|
adrp x21, .LANCHOR186
|
|
ldrh w12, [x24, #:lo12:.LANCHOR38]
|
|
mov x5, 0
|
|
ldr x11, [x0, #:lo12:.LANCHOR107]
|
|
adrp x0, .LANCHOR108
|
|
ldr x6, [x21, #:lo12:.LANCHOR186]
|
|
mov w19, 0
|
|
ldr x10, [x0, #:lo12:.LANCHOR108]
|
|
adrp x0, .LANCHOR58
|
|
mov w7, 56
|
|
ldrh w8, [x0, #:lo12:.LANCHOR58]
|
|
b .L3064
|
|
.L3065:
|
|
adrp x22, .LANCHOR132
|
|
mov w2, 1
|
|
mov w1, w2
|
|
ldr x0, [x22, #:lo12:.LANCHOR132]
|
|
ldrh w0, [x0, x23]
|
|
orr w0, w20, w0, lsl 10
|
|
str w0, [x19, 4]
|
|
mov x0, x19
|
|
bl FlashReadPages
|
|
ldp x2, x0, [x19, 8]
|
|
add w20, w20, 1
|
|
ldr x1, [x22, #:lo12:.LANCHOR132]
|
|
sxth w20, w20
|
|
ldr w3, [x2, 4]
|
|
ldrh w1, [x1, x23]
|
|
str w3, [sp, 8]
|
|
ldr w2, [x2]
|
|
str w2, [sp]
|
|
ldp w4, w5, [x0]
|
|
ldp w6, w7, [x0, 8]
|
|
mov x0, x24
|
|
ldp w2, w3, [x19]
|
|
bl printf
|
|
.L3067:
|
|
ldrh w0, [x21]
|
|
cmp w20, w0
|
|
blt .L3065
|
|
add w0, w26, 1
|
|
sxth w26, w0
|
|
b .L3063
|
|
.L3066:
|
|
adrp x0, .LANCHOR64
|
|
mov w2, 2
|
|
adrp x19, .LANCHOR66
|
|
ldr w3, [x0, #:lo12:.LANCHOR64]
|
|
adrp x0, .LANCHOR132
|
|
ldr x1, [x0, #:lo12:.LANCHOR132]
|
|
adrp x0, .LC87
|
|
add x0, x0, :lo12:.LC87
|
|
bl rknand_print_hex
|
|
adrp x0, .LANCHOR134
|
|
ldrh w3, [x19, #:lo12:.LANCHOR66]
|
|
mov w2, 4
|
|
ldr x1, [x0, #:lo12:.LANCHOR134]
|
|
adrp x0, .LC88
|
|
add x0, x0, :lo12:.LC88
|
|
bl rknand_print_hex
|
|
adrp x0, .LANCHOR203
|
|
ldrh w3, [x19, #:lo12:.LANCHOR66]
|
|
ldp x21, x22, [sp, 48]
|
|
mov w2, 4
|
|
ldr x1, [x0, #:lo12:.LANCHOR203]
|
|
adrp x0, .LC89
|
|
ldp x19, x20, [sp, 32]
|
|
add x0, x0, :lo12:.LC89
|
|
ldp x23, x24, [sp, 64]
|
|
ldp x25, x26, [sp, 80]
|
|
ldp x29, x30, [sp, 16]
|
|
add sp, sp, 96
|
|
b rknand_print_hex
|
|
.size dump_map_info, .-dump_map_info
|
|
.global FtlMallocOffset
|
|
.global FtlMallocBuffer
|
|
.global LastWritenPbaAddr
|
|
.global gc_ink_free_return_value
|
|
.global check_valid_page_count_table
|
|
.global FtlUpdateVaildLpnCount
|
|
.global g_ect_tbl_power_up_flush
|
|
.global last_cache_match_count
|
|
.global power_up_flag
|
|
.global g_LowFormat
|
|
.global gFtlInitStatus
|
|
.global DeviceCapacity
|
|
.global ToshibaRefValue
|
|
.global Toshiba15RefValue
|
|
.global ToshibaA19RefValue
|
|
.global SamsungRefValue
|
|
.global refValueDefault
|
|
.global random_seed
|
|
.global gSlcNandParaInfo
|
|
.global gNandParaInfo
|
|
.global g_page_map_check_enable
|
|
.global g_power_lost_ecc_error_blk
|
|
.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 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_all_blk_used_slc_mode
|
|
.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_refresh_block_temp_tbl
|
|
.global g_free_slc_blk_num
|
|
.global g_gc_refresh_block_temp_num
|
|
.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_3
|
|
.global g_gc_next_blk_2
|
|
.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_check_table
|
|
.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_blk_mode_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 g_wr_page_num
|
|
.global req_wr_io
|
|
.global c_wr_page_buf_num
|
|
.global p_wr_io_data_buf
|
|
.global p_wr_io_spare_buf
|
|
.global p_plane_order_table
|
|
.global g_req_cache
|
|
.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_flash_read_only_en
|
|
.global g_inkDie_check_enable
|
|
.global g_SlcPartLbaEndSector
|
|
.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
|
|
.global c_ftl_nand_planes_per_die
|
|
.global c_ftl_nand_die_num
|
|
.global c_ftl_nand_type
|
|
.global gMasterTempBuf
|
|
.global gMasterInfo
|
|
.global gNandcDumpWriteEn
|
|
.global gToggleModeClkDiv
|
|
.global gBootDdrMode
|
|
.global gNandcEccBits
|
|
.global gpNandc1
|
|
.global gpNandc
|
|
.global g_nandc_version_data
|
|
.global gNandcVer
|
|
.global gNandChipMap
|
|
.global gNandIDataBuf
|
|
.global idb_flash_slc_mode
|
|
.global FlashDdrTunningReadCount
|
|
.global FlashWaitBusyScheduleEn
|
|
.global gNandPhyInfo
|
|
.global gFlashProgCheckSpareBuffer
|
|
.global gFlashProgCheckBuffer
|
|
.global gFlashSpareBuffer
|
|
.global gFlashPageBuffer1
|
|
.global gFlashPageBuffer0
|
|
.global gpFlashSaveInfo
|
|
.global gReadRetryInfo
|
|
.global gpNandParaInfo
|
|
.global gNandOptPara
|
|
.global g_nand_ecc_en
|
|
.global g_slc2KBNand
|
|
.global g_maxRetryCount
|
|
.global g_maxRegNum
|
|
.global g_retryMode
|
|
.global gNandIDBResBlkNumSaveInFlash
|
|
.global gNandIDBResBlkNum
|
|
.global gNandFlashResEndPageAddr
|
|
.global gNandFlashInfoBlockAddr
|
|
.global gNandFlashIdbBlockAddr
|
|
.global gNandFlashInfoBlockEcc
|
|
.global gNandFlashIDBEccBits
|
|
.global gNandFlashEccBits
|
|
.global gNandRandomizer
|
|
.global gBlockPageAlignSize
|
|
.global gTotleBlock
|
|
.global gNandMaxChip
|
|
.global gNandMaxDie
|
|
.global gFlashInterfaceMode
|
|
.global gFlashCurMode
|
|
.global gFlashSlcMode
|
|
.global gFlashOnfiModeEn
|
|
.global gFlashToggleModeEn
|
|
.global gFlashSdrModeEn
|
|
.global gMultiPageProgEn
|
|
.global gMultiPageReadEn
|
|
.global gpReadRetrial
|
|
.global mlcPageToSlcPageTbl
|
|
.global slcPageToMlcPageTbl
|
|
.global DieAddrs
|
|
.global gDieOp
|
|
.global DieCsIndex
|
|
.global IDByte
|
|
.global read_retry_cur_offset
|
|
.section .bss.DeviceCapacity,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR60,. + 0
|
|
.type DeviceCapacity, %object
|
|
.size DeviceCapacity, 4
|
|
DeviceCapacity:
|
|
.zero 4
|
|
.section .bss.DieAddrs,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR18,. + 0
|
|
.type DieAddrs, %object
|
|
.size DieAddrs, 32
|
|
DieAddrs:
|
|
.zero 32
|
|
.section .bss.DieCsIndex,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR27,. + 0
|
|
.type DieCsIndex, %object
|
|
.size DieCsIndex, 8
|
|
DieCsIndex:
|
|
.zero 8
|
|
.section .bss.FlashDdrTunningReadCount,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR147,. + 0
|
|
.type FlashDdrTunningReadCount, %object
|
|
.size FlashDdrTunningReadCount, 4
|
|
FlashDdrTunningReadCount:
|
|
.zero 4
|
|
.section .bss.FlashWaitBusyScheduleEn,"aw",@nobits
|
|
.align 2
|
|
.type FlashWaitBusyScheduleEn, %object
|
|
.size FlashWaitBusyScheduleEn, 4
|
|
FlashWaitBusyScheduleEn:
|
|
.zero 4
|
|
.section .bss.FtlMallocBuffer,"aw",@nobits
|
|
.align 6
|
|
.type FtlMallocBuffer, %object
|
|
.size FtlMallocBuffer, 1310720
|
|
FtlMallocBuffer:
|
|
.zero 1310720
|
|
.section .bss.FtlUpdateVaildLpnCount,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR101,. + 0
|
|
.type FtlUpdateVaildLpnCount, %object
|
|
.size FtlUpdateVaildLpnCount, 2
|
|
FtlUpdateVaildLpnCount:
|
|
.zero 2
|
|
.section .bss.IDByte,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR22,. + 0
|
|
.type IDByte, %object
|
|
.size IDByte, 32
|
|
IDByte:
|
|
.zero 32
|
|
.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 .LANCHOR41,. + 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 .LANCHOR51,. + 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_byte_pre_oob,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR58,. + 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 .LANCHOR57,. + 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 .LANCHOR40,. + 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 .LANCHOR232,. + 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 .LANCHOR45,. + 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 .LANCHOR49,. + 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 .LANCHOR65,. + 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 .LANCHOR67,. + 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 .LANCHOR63,. + 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 .LANCHOR66,. + 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 .LANCHOR42,. + 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 .LANCHOR64,. + 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 .LANCHOR39,. + 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 .LANCHOR61,. + 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 .LANCHOR52,. + 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 .LANCHOR53,. + 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 .LANCHOR54,. + 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 .LANCHOR38,. + 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 .LANCHOR46,. + 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 .LANCHOR59,. + 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 .LANCHOR55,. + 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 .LANCHOR56,. + 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 .LANCHOR37,. + 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 .LANCHOR43,. + 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 .LANCHOR44,. + 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 .LANCHOR62,. + 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 .LANCHOR50,. + 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 .LANCHOR110,. + 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 .LANCHOR48,. + 0
|
|
.type c_mlc_erase_count_value, %object
|
|
.size c_mlc_erase_count_value, 2
|
|
c_mlc_erase_count_value:
|
|
.zero 2
|
|
.section .bss.c_wr_page_buf_num,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR185,. + 0
|
|
.type c_wr_page_buf_num, %object
|
|
.size c_wr_page_buf_num, 4
|
|
c_wr_page_buf_num:
|
|
.zero 4
|
|
.section .bss.check_valid_page_count_table,"aw",@nobits
|
|
.align 3
|
|
.type check_valid_page_count_table, %object
|
|
.size check_valid_page_count_table, 8192
|
|
check_valid_page_count_table:
|
|
.zero 8192
|
|
.section .bss.ftl_gc_temp_power_lost_recovery_flag,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR138,. + 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 .LANCHOR76,. + 0
|
|
.type gBbtInfo, %object
|
|
.size gBbtInfo, 96
|
|
gBbtInfo:
|
|
.zero 96
|
|
.section .bss.gBlockPageAlignSize,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR4,. + 0
|
|
.type gBlockPageAlignSize, %object
|
|
.size gBlockPageAlignSize, 4
|
|
gBlockPageAlignSize:
|
|
.zero 4
|
|
.section .bss.gBootDdrMode,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR160,. + 0
|
|
.type gBootDdrMode, %object
|
|
.size gBootDdrMode, 4
|
|
gBootDdrMode:
|
|
.zero 4
|
|
.section .bss.gDieOp,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR23,. + 0
|
|
.type gDieOp, %object
|
|
.size gDieOp, 192
|
|
gDieOp:
|
|
.zero 192
|
|
.section .bss.gFlashCurMode,"aw",@nobits
|
|
.set .LANCHOR24,. + 0
|
|
.type gFlashCurMode, %object
|
|
.size gFlashCurMode, 1
|
|
gFlashCurMode:
|
|
.zero 1
|
|
.section .bss.gFlashInterfaceMode,"aw",@nobits
|
|
.set .LANCHOR25,. + 0
|
|
.type gFlashInterfaceMode, %object
|
|
.size gFlashInterfaceMode, 1
|
|
gFlashInterfaceMode:
|
|
.zero 1
|
|
.section .bss.gFlashOnfiModeEn,"aw",@nobits
|
|
.type gFlashOnfiModeEn, %object
|
|
.size gFlashOnfiModeEn, 1
|
|
gFlashOnfiModeEn:
|
|
.zero 1
|
|
.section .bss.gFlashPageBuffer0,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR154,. + 0
|
|
.type gFlashPageBuffer0, %object
|
|
.size gFlashPageBuffer0, 8
|
|
gFlashPageBuffer0:
|
|
.zero 8
|
|
.section .bss.gFlashPageBuffer1,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR152,. + 0
|
|
.type gFlashPageBuffer1, %object
|
|
.size gFlashPageBuffer1, 8
|
|
gFlashPageBuffer1:
|
|
.zero 8
|
|
.section .bss.gFlashProgCheckBuffer,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR206,. + 0
|
|
.type gFlashProgCheckBuffer, %object
|
|
.size gFlashProgCheckBuffer, 8
|
|
gFlashProgCheckBuffer:
|
|
.zero 8
|
|
.section .bss.gFlashProgCheckSpareBuffer,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR207,. + 0
|
|
.type gFlashProgCheckSpareBuffer, %object
|
|
.size gFlashProgCheckSpareBuffer, 8
|
|
gFlashProgCheckSpareBuffer:
|
|
.zero 8
|
|
.section .bss.gFlashSdrModeEn,"aw",@nobits
|
|
.type gFlashSdrModeEn, %object
|
|
.size gFlashSdrModeEn, 1
|
|
gFlashSdrModeEn:
|
|
.zero 1
|
|
.section .bss.gFlashSlcMode,"aw",@nobits
|
|
.set .LANCHOR16,. + 0
|
|
.type gFlashSlcMode, %object
|
|
.size gFlashSlcMode, 1
|
|
gFlashSlcMode:
|
|
.zero 1
|
|
.section .bss.gFlashSpareBuffer,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR205,. + 0
|
|
.type gFlashSpareBuffer, %object
|
|
.size gFlashSpareBuffer, 8
|
|
gFlashSpareBuffer:
|
|
.zero 8
|
|
.section .bss.gFlashToggleModeEn,"aw",@nobits
|
|
.set .LANCHOR30,. + 0
|
|
.type gFlashToggleModeEn, %object
|
|
.size gFlashToggleModeEn, 1
|
|
gFlashToggleModeEn:
|
|
.zero 1
|
|
.section .bss.gL2pMapInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR130,. + 0
|
|
.type gL2pMapInfo, %object
|
|
.size gL2pMapInfo, 64
|
|
gL2pMapInfo:
|
|
.zero 64
|
|
.section .bss.gMasterInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR35,. + 0
|
|
.type gMasterInfo, %object
|
|
.size gMasterInfo, 48
|
|
gMasterInfo:
|
|
.zero 48
|
|
.section .bss.gMasterTempBuf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR161,. + 0
|
|
.type gMasterTempBuf, %object
|
|
.size gMasterTempBuf, 8
|
|
gMasterTempBuf:
|
|
.zero 8
|
|
.section .bss.gMultiPageProgEn,"aw",@nobits
|
|
.set .LANCHOR28,. + 0
|
|
.type gMultiPageProgEn, %object
|
|
.size gMultiPageProgEn, 1
|
|
gMultiPageProgEn:
|
|
.zero 1
|
|
.section .bss.gMultiPageReadEn,"aw",@nobits
|
|
.set .LANCHOR210,. + 0
|
|
.type gMultiPageReadEn, %object
|
|
.size gMultiPageReadEn, 1
|
|
gMultiPageReadEn:
|
|
.zero 1
|
|
.section .bss.gNandChipMap,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR0,. + 0
|
|
.type gNandChipMap, %object
|
|
.size gNandChipMap, 64
|
|
gNandChipMap:
|
|
.zero 64
|
|
.section .bss.gNandFlashEccBits,"aw",@nobits
|
|
.set .LANCHOR33,. + 0
|
|
.type gNandFlashEccBits, %object
|
|
.size gNandFlashEccBits, 1
|
|
gNandFlashEccBits:
|
|
.zero 1
|
|
.section .bss.gNandFlashIDBEccBits,"aw",@nobits
|
|
.set .LANCHOR158,. + 0
|
|
.type gNandFlashIDBEccBits, %object
|
|
.size gNandFlashIDBEccBits, 1
|
|
gNandFlashIDBEccBits:
|
|
.zero 1
|
|
.section .bss.gNandFlashIdbBlockAddr,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR156,. + 0
|
|
.type gNandFlashIdbBlockAddr, %object
|
|
.size gNandFlashIdbBlockAddr, 4
|
|
gNandFlashIdbBlockAddr:
|
|
.zero 4
|
|
.section .bss.gNandFlashInfoBlockAddr,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR155,. + 0
|
|
.type gNandFlashInfoBlockAddr, %object
|
|
.size gNandFlashInfoBlockAddr, 4
|
|
gNandFlashInfoBlockAddr:
|
|
.zero 4
|
|
.section .bss.gNandFlashInfoBlockEcc,"aw",@nobits
|
|
.type gNandFlashInfoBlockEcc, %object
|
|
.size gNandFlashInfoBlockEcc, 1
|
|
gNandFlashInfoBlockEcc:
|
|
.zero 1
|
|
.section .bss.gNandFlashResEndPageAddr,"aw",@nobits
|
|
.align 2
|
|
.type gNandFlashResEndPageAddr, %object
|
|
.size gNandFlashResEndPageAddr, 4
|
|
gNandFlashResEndPageAddr:
|
|
.zero 4
|
|
.section .bss.gNandIDBResBlkNum,"aw",@nobits
|
|
.set .LANCHOR3,. + 0
|
|
.type gNandIDBResBlkNum, %object
|
|
.size gNandIDBResBlkNum, 1
|
|
gNandIDBResBlkNum:
|
|
.zero 1
|
|
.section .bss.gNandIDBResBlkNumSaveInFlash,"aw",@nobits
|
|
.set .LANCHOR157,. + 0
|
|
.type gNandIDBResBlkNumSaveInFlash, %object
|
|
.size gNandIDBResBlkNumSaveInFlash, 1
|
|
gNandIDBResBlkNumSaveInFlash:
|
|
.zero 1
|
|
.section .bss.gNandIDataBuf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR144,. + 0
|
|
.type gNandIDataBuf, %object
|
|
.size gNandIDataBuf, 2048
|
|
gNandIDataBuf:
|
|
.zero 2048
|
|
.section .bss.gNandMaxChip,"aw",@nobits
|
|
.set .LANCHOR124,. + 0
|
|
.type gNandMaxChip, %object
|
|
.size gNandMaxChip, 1
|
|
gNandMaxChip:
|
|
.zero 1
|
|
.section .bss.gNandMaxDie,"aw",@nobits
|
|
.set .LANCHOR26,. + 0
|
|
.type gNandMaxDie, %object
|
|
.size gNandMaxDie, 1
|
|
gNandMaxDie:
|
|
.zero 1
|
|
.section .bss.gNandOptPara,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR8,. + 0
|
|
.type gNandOptPara, %object
|
|
.size gNandOptPara, 32
|
|
gNandOptPara:
|
|
.zero 32
|
|
.section .bss.gNandPhyInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR15,. + 0
|
|
.type gNandPhyInfo, %object
|
|
.size gNandPhyInfo, 28
|
|
gNandPhyInfo:
|
|
.zero 28
|
|
.section .bss.gNandRandomizer,"aw",@nobits
|
|
.set .LANCHOR6,. + 0
|
|
.type gNandRandomizer, %object
|
|
.size gNandRandomizer, 1
|
|
gNandRandomizer:
|
|
.zero 1
|
|
.section .bss.gNandcDumpWriteEn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR36,. + 0
|
|
.type gNandcDumpWriteEn, %object
|
|
.size gNandcDumpWriteEn, 4
|
|
gNandcDumpWriteEn:
|
|
.zero 4
|
|
.section .bss.gNandcEccBits,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR32,. + 0
|
|
.type gNandcEccBits, %object
|
|
.size gNandcEccBits, 4
|
|
gNandcEccBits:
|
|
.zero 4
|
|
.section .bss.gNandcVer,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR34,. + 0
|
|
.type gNandcVer, %object
|
|
.size gNandcVer, 4
|
|
gNandcVer:
|
|
.zero 4
|
|
.section .bss.gReadRetryInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR20,. + 0
|
|
.type gReadRetryInfo, %object
|
|
.size gReadRetryInfo, 852
|
|
gReadRetryInfo:
|
|
.zero 852
|
|
.section .bss.gSysFreeQueue,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR77,. + 0
|
|
.type gSysFreeQueue, %object
|
|
.size gSysFreeQueue, 2056
|
|
gSysFreeQueue:
|
|
.zero 2056
|
|
.section .bss.gSysInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR218,. + 0
|
|
.type gSysInfo, %object
|
|
.size gSysInfo, 16
|
|
gSysInfo:
|
|
.zero 16
|
|
.section .bss.gToggleModeClkDiv,"aw",@nobits
|
|
.align 2
|
|
.type gToggleModeClkDiv, %object
|
|
.size gToggleModeClkDiv, 4
|
|
gToggleModeClkDiv:
|
|
.zero 4
|
|
.section .bss.gTotleBlock,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR125,. + 0
|
|
.type gTotleBlock, %object
|
|
.size gTotleBlock, 2
|
|
gTotleBlock:
|
|
.zero 2
|
|
.section .bss.gVendorBlkInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR224,. + 0
|
|
.type gVendorBlkInfo, %object
|
|
.size gVendorBlkInfo, 64
|
|
gVendorBlkInfo:
|
|
.zero 64
|
|
.section .bss.g_GlobalDataVersion,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR165,. + 0
|
|
.type g_GlobalDataVersion, %object
|
|
.size g_GlobalDataVersion, 4
|
|
g_GlobalDataVersion:
|
|
.zero 4
|
|
.section .bss.g_GlobalSysVersion,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR164,. + 0
|
|
.type g_GlobalSysVersion, %object
|
|
.size g_GlobalSysVersion, 4
|
|
g_GlobalSysVersion:
|
|
.zero 4
|
|
.section .bss.g_LowFormat,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR254,. + 0
|
|
.type g_LowFormat, %object
|
|
.size g_LowFormat, 4
|
|
g_LowFormat:
|
|
.zero 4
|
|
.section .bss.g_MaxLbaSector,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR68,. + 0
|
|
.type g_MaxLbaSector, %object
|
|
.size g_MaxLbaSector, 4
|
|
g_MaxLbaSector:
|
|
.zero 4
|
|
.section .bss.g_MaxLbn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR231,. + 0
|
|
.type g_MaxLbn, %object
|
|
.size g_MaxLbn, 4
|
|
g_MaxLbn:
|
|
.zero 4
|
|
.section .bss.g_MaxLpn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR74,. + 0
|
|
.type g_MaxLpn, %object
|
|
.size g_MaxLpn, 4
|
|
g_MaxLpn:
|
|
.zero 4
|
|
.section .bss.g_SlcPartLbaEndSector,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR162,. + 0
|
|
.type g_SlcPartLbaEndSector, %object
|
|
.size g_SlcPartLbaEndSector, 4
|
|
g_SlcPartLbaEndSector:
|
|
.zero 4
|
|
.section .bss.g_VaildLpn,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR102,. + 0
|
|
.type g_VaildLpn, %object
|
|
.size g_VaildLpn, 4
|
|
g_VaildLpn:
|
|
.zero 4
|
|
.section .bss.g_active_superblock,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR93,. + 0
|
|
.type g_active_superblock, %object
|
|
.size g_active_superblock, 48
|
|
g_active_superblock:
|
|
.zero 48
|
|
.section .bss.g_all_blk_used_slc_mode,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR163,. + 0
|
|
.type g_all_blk_used_slc_mode, %object
|
|
.size g_all_blk_used_slc_mode, 4
|
|
g_all_blk_used_slc_mode:
|
|
.zero 4
|
|
.section .bss.g_buffer_superblock,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR94,. + 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 .LANCHOR75,. + 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 .LANCHOR198,. + 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 .LANCHOR227,. + 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_flash_read_only_en,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR78,. + 0
|
|
.type g_flash_read_only_en, %object
|
|
.size g_flash_read_only_en, 4
|
|
g_flash_read_only_en:
|
|
.zero 4
|
|
.section .bss.g_free_slc_blk_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR142,. + 0
|
|
.type g_free_slc_blk_num, %object
|
|
.size g_free_slc_blk_num, 2
|
|
g_free_slc_blk_num:
|
|
.zero 2
|
|
.section .bss.g_ftl_nand_free_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR256,. + 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 .LANCHOR121,. + 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 .LANCHOR119,. + 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 .LANCHOR120,. + 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 .LANCHOR183,. + 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 .LANCHOR111,. + 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 .LANCHOR250,. + 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 .LANCHOR249,. + 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 .LANCHOR181,. + 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 .LANCHOR178,. + 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 .LANCHOR179,. + 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 .LANCHOR182,. + 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 .LANCHOR115,. + 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 .LANCHOR116,. + 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_next_blk_2,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR117,. + 0
|
|
.type g_gc_next_blk_2, %object
|
|
.size g_gc_next_blk_2, 2
|
|
g_gc_next_blk_2:
|
|
.zero 2
|
|
.section .bss.g_gc_next_blk_3,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR118,. + 0
|
|
.type g_gc_next_blk_3, %object
|
|
.size g_gc_next_blk_3, 2
|
|
g_gc_next_blk_3:
|
|
.zero 2
|
|
.section .bss.g_gc_num_req,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR105,. + 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 .LANCHOR113,. + 0
|
|
.type g_gc_page_offset, %object
|
|
.size g_gc_page_offset, 2
|
|
g_gc_page_offset:
|
|
.zero 2
|
|
.section .bss.g_gc_refresh_block_temp_num,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR184,. + 0
|
|
.type g_gc_refresh_block_temp_num, %object
|
|
.size g_gc_refresh_block_temp_num, 2
|
|
g_gc_refresh_block_temp_num:
|
|
.zero 2
|
|
.section .bss.g_gc_refresh_block_temp_tbl,"aw",@nobits
|
|
.align 3
|
|
.type g_gc_refresh_block_temp_tbl, %object
|
|
.size g_gc_refresh_block_temp_tbl, 34
|
|
g_gc_refresh_block_temp_tbl:
|
|
.zero 34
|
|
.section .bss.g_gc_skip_write_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR180,. + 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 .LANCHOR213,. + 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 .LANCHOR95,. + 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 .LANCHOR176,. + 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 .LANCHOR177,. + 0
|
|
.type g_in_swl_replace, %object
|
|
.size g_in_swl_replace, 4
|
|
g_in_swl_replace:
|
|
.zero 4
|
|
.section .bss.g_inkDie_check_enable,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR104,. + 0
|
|
.type g_inkDie_check_enable, %object
|
|
.size g_inkDie_check_enable, 4
|
|
g_inkDie_check_enable:
|
|
.zero 4
|
|
.section .bss.g_l2p_last_update_region_id,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR99,. + 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_maxRegNum,"aw",@nobits
|
|
.set .LANCHOR13,. + 0
|
|
.type g_maxRegNum, %object
|
|
.size g_maxRegNum, 1
|
|
g_maxRegNum:
|
|
.zero 1
|
|
.section .bss.g_maxRetryCount,"aw",@nobits
|
|
.set .LANCHOR149,. + 0
|
|
.type g_maxRetryCount, %object
|
|
.size g_maxRetryCount, 1
|
|
g_maxRetryCount:
|
|
.zero 1
|
|
.section .bss.g_max_erase_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR174,. + 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 .LANCHOR175,. + 0
|
|
.type g_min_erase_count, %object
|
|
.size g_min_erase_count, 4
|
|
g_min_erase_count:
|
|
.zero 4
|
|
.section .bss.g_nand_ecc_en,"aw",@nobits
|
|
.set .LANCHOR208,. + 0
|
|
.type g_nand_ecc_en, %object
|
|
.size g_nand_ecc_en, 1
|
|
g_nand_ecc_en:
|
|
.zero 1
|
|
.section .bss.g_nandc_version_data,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR122,. + 0
|
|
.type g_nandc_version_data, %object
|
|
.size g_nandc_version_data, 4
|
|
g_nandc_version_data:
|
|
.zero 4
|
|
.section .bss.g_num_data_superblocks,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR87,. + 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 .LANCHOR90,. + 0
|
|
.type g_num_free_superblocks, %object
|
|
.size g_num_free_superblocks, 2
|
|
g_num_free_superblocks:
|
|
.zero 2
|
|
.section .bss.g_page_map_check_enable,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR69,. + 0
|
|
.type g_page_map_check_enable, %object
|
|
.size g_page_map_check_enable, 2
|
|
g_page_map_check_enable:
|
|
.zero 2
|
|
.section .bss.g_power_lost_ecc_error_blk,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR241,. + 0
|
|
.type g_power_lost_ecc_error_blk, %object
|
|
.size g_power_lost_ecc_error_blk, 2
|
|
g_power_lost_ecc_error_blk:
|
|
.zero 2
|
|
.section .bss.g_power_lost_recovery_flag,"aw",@nobits
|
|
.align 1
|
|
.set .LANCHOR242,. + 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 .LANCHOR139,. + 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 .LANCHOR243,. + 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 .LANCHOR244,. + 0
|
|
.type g_recovery_ppa_tbl, %object
|
|
.size g_recovery_ppa_tbl, 128
|
|
g_recovery_ppa_tbl:
|
|
.zero 128
|
|
.section .bss.g_req_cache,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR135,. + 0
|
|
.type g_req_cache, %object
|
|
.size g_req_cache, 8
|
|
g_req_cache:
|
|
.zero 8
|
|
.section .bss.g_retryMode,"aw",@nobits
|
|
.set .LANCHOR11,. + 0
|
|
.type g_retryMode, %object
|
|
.size g_retryMode, 1
|
|
g_retryMode:
|
|
.zero 1
|
|
.section .bss.g_slc2KBNand,"aw",@nobits
|
|
.set .LANCHOR2,. + 0
|
|
.type g_slc2KBNand, %object
|
|
.size g_slc2KBNand, 1
|
|
g_slc2KBNand:
|
|
.zero 1
|
|
.section .bss.g_sys_ext_data,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR141,. + 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 .LANCHOR82,. + 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 .LANCHOR136,. + 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 .LANCHOR214,. + 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 .LANCHOR169,. + 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 .LANCHOR168,. + 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 .LANCHOR166,. + 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 .LANCHOR170,. + 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 .LANCHOR131,. + 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 .LANCHOR172,. + 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 .LANCHOR171,. + 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 .LANCHOR226,. + 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 .LANCHOR173,. + 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 .LANCHOR137,. + 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 .LANCHOR81,. + 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 .LANCHOR70,. + 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 .LANCHOR167,. + 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 .LANCHOR225,. + 0
|
|
.type g_totle_write_sector, %object
|
|
.size g_totle_write_sector, 4
|
|
g_totle_write_sector:
|
|
.zero 4
|
|
.section .bss.g_wr_page_num,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR72,. + 0
|
|
.type g_wr_page_num, %object
|
|
.size g_wr_page_num, 4
|
|
g_wr_page_num:
|
|
.zero 4
|
|
.section .bss.gc_discard_updated,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR253,. + 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 .LANCHOR248,. + 0
|
|
.type gc_ink_free_return_value, %object
|
|
.size gc_ink_free_return_value, 2
|
|
gc_ink_free_return_value:
|
|
.zero 2
|
|
.section .bss.gpFlashSaveInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR153,. + 0
|
|
.type gpFlashSaveInfo, %object
|
|
.size gpFlashSaveInfo, 8
|
|
gpFlashSaveInfo:
|
|
.zero 8
|
|
.section .bss.gpNandParaInfo,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR7,. + 0
|
|
.type gpNandParaInfo, %object
|
|
.size gpNandParaInfo, 8
|
|
gpNandParaInfo:
|
|
.zero 8
|
|
.section .bss.gpNandc,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR19,. + 0
|
|
.type gpNandc, %object
|
|
.size gpNandc, 8
|
|
gpNandc:
|
|
.zero 8
|
|
.section .bss.gpNandc1,"aw",@nobits
|
|
.align 3
|
|
.type gpNandc1, %object
|
|
.size gpNandc1, 8
|
|
gpNandc1:
|
|
.zero 8
|
|
.section .bss.gpReadRetrial,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR148,. + 0
|
|
.type gpReadRetrial, %object
|
|
.size gpReadRetrial, 8
|
|
gpReadRetrial:
|
|
.zero 8
|
|
.section .bss.gp_ect_tbl_info,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR199,. + 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
|
|
.type gp_flash_check_buf, %object
|
|
.size gp_flash_check_buf, 262144
|
|
gp_flash_check_buf:
|
|
.zero 262144
|
|
.section .bss.gp_gc_page_buf_info,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR106,. + 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
|
|
.set .LANCHOR252,. + 0
|
|
.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
|
|
.type idb_buf, %object
|
|
.size idb_buf, 262144
|
|
idb_buf:
|
|
.zero 262144
|
|
.section .bss.idb_flash_slc_mode,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR29,. + 0
|
|
.type idb_flash_slc_mode, %object
|
|
.size idb_flash_slc_mode, 4
|
|
idb_flash_slc_mode:
|
|
.zero 4
|
|
.section .bss.idb_need_write_back,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR159,. + 0
|
|
.type idb_need_write_back, %object
|
|
.size idb_need_write_back, 4
|
|
idb_need_write_back:
|
|
.zero 4
|
|
.section .bss.last_cache_match_count,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR257,. + 0
|
|
.type last_cache_match_count, %object
|
|
.size last_cache_match_count, 4
|
|
last_cache_match_count:
|
|
.zero 4
|
|
.section .bss.mlcPageToSlcPageTbl,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR123,. + 0
|
|
.type mlcPageToSlcPageTbl, %object
|
|
.size mlcPageToSlcPageTbl, 2048
|
|
mlcPageToSlcPageTbl:
|
|
.zero 2048
|
|
.section .bss.p_blk_mode_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR1,. + 0
|
|
.type p_blk_mode_table, %object
|
|
.size p_blk_mode_table, 8
|
|
p_blk_mode_table:
|
|
.zero 8
|
|
.section .bss.p_data_block_list_head,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR84,. + 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 .LANCHOR83,. + 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 .LANCHOR86,. + 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 .LANCHOR80,. + 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 .LANCHOR89,. + 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 .LANCHOR112,. + 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 .LANCHOR107,. + 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 .LANCHOR114,. + 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 .LANCHOR108,. + 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 .LANCHOR193,. + 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 .LANCHOR194,. + 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 .LANCHOR196,. + 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 .LANCHOR129,. + 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 .LANCHOR98,. + 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 .LANCHOR132,. + 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 .LANCHOR128,. + 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 .LANCHOR133,. + 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_check_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR203,. + 0
|
|
.type p_map_region_ppn_check_table, %object
|
|
.size p_map_region_ppn_check_table, 8
|
|
p_map_region_ppn_check_table:
|
|
.zero 8
|
|
.section .bss.p_map_region_ppn_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR134,. + 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 .LANCHOR47,. + 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 .LANCHOR140,. + 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 .LANCHOR189,. + 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 .LANCHOR190,. + 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 .LANCHOR195,. + 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_table,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR85,. + 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 .LANCHOR71,. + 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 .LANCHOR200,. + 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 .LANCHOR201,. + 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 .LANCHOR191,. + 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 .LANCHOR202,. + 0
|
|
.type p_vendor_region_ppn_table, %object
|
|
.size p_vendor_region_ppn_table, 8
|
|
p_vendor_region_ppn_table:
|
|
.zero 8
|
|
.section .bss.p_wr_io_data_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR192,. + 0
|
|
.type p_wr_io_data_buf, %object
|
|
.size p_wr_io_data_buf, 8
|
|
p_wr_io_data_buf:
|
|
.zero 8
|
|
.section .bss.p_wr_io_spare_buf,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR197,. + 0
|
|
.type p_wr_io_spare_buf, %object
|
|
.size p_wr_io_spare_buf, 8
|
|
p_wr_io_spare_buf:
|
|
.zero 8
|
|
.section .bss.read_retry_cur_offset,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR21,. + 0
|
|
.type read_retry_cur_offset, %object
|
|
.size read_retry_cur_offset, 4
|
|
read_retry_cur_offset:
|
|
.zero 4
|
|
.section .bss.req_erase,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR79,. + 0
|
|
.type req_erase, %object
|
|
.size req_erase, 8
|
|
req_erase:
|
|
.zero 8
|
|
.section .bss.req_gc,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR109,. + 0
|
|
.type req_gc, %object
|
|
.size req_gc, 8
|
|
req_gc:
|
|
.zero 8
|
|
.section .bss.req_gc_dst,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR187,. + 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 .LANCHOR188,. + 0
|
|
.type req_prgm, %object
|
|
.size req_prgm, 8
|
|
req_prgm:
|
|
.zero 8
|
|
.section .bss.req_read,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR186,. + 0
|
|
.type req_read, %object
|
|
.size req_read, 8
|
|
req_read:
|
|
.zero 8
|
|
.section .bss.req_sys,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR211,. + 0
|
|
.type req_sys, %object
|
|
.size req_sys, 56
|
|
req_sys:
|
|
.zero 56
|
|
.section .bss.req_wr_io,"aw",@nobits
|
|
.align 3
|
|
.set .LANCHOR73,. + 0
|
|
.type req_wr_io, %object
|
|
.size req_wr_io, 8
|
|
req_wr_io:
|
|
.zero 8
|
|
.section .bss.slcPageToMlcPageTbl,"aw",@nobits
|
|
.align 2
|
|
.set .LANCHOR17,. + 0
|
|
.type slcPageToMlcPageTbl, %object
|
|
.size slcPageToMlcPageTbl, 1024
|
|
slcPageToMlcPageTbl:
|
|
.zero 1024
|
|
.section .data.FtlMallocOffset,"aw",@progbits
|
|
.align 2
|
|
.type FtlMallocOffset, %object
|
|
.size FtlMallocOffset, 4
|
|
FtlMallocOffset:
|
|
.word 64
|
|
.section .data.LastWritenPbaAddr,"aw",@progbits
|
|
.align 2
|
|
.type LastWritenPbaAddr, %object
|
|
.size LastWritenPbaAddr, 4
|
|
LastWritenPbaAddr:
|
|
.word -1
|
|
.section .data.NandFlashParaTbl,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR145,. + 0
|
|
.type NandFlashParaTbl, %object
|
|
.size NandFlashParaTbl, 2752
|
|
NandFlashParaTbl:
|
|
.byte 6
|
|
.byte 44
|
|
.byte 100
|
|
.byte 68
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 68
|
|
.byte 68
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1064
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 104
|
|
.byte 4
|
|
.byte 74
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -120
|
|
.byte 4
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -88
|
|
.byte 5
|
|
.byte -53
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 104
|
|
.byte 4
|
|
.byte 70
|
|
.byte -119
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 72
|
|
.byte 4
|
|
.byte 74
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -124
|
|
.byte 100
|
|
.byte 60
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 100
|
|
.byte 84
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 479
|
|
.byte 4
|
|
.byte 18
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -41
|
|
.byte -108
|
|
.byte 62
|
|
.byte -124
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 4096
|
|
.hword 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 72
|
|
.byte 4
|
|
.byte 70
|
|
.byte -123
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -120
|
|
.byte 5
|
|
.byte -58
|
|
.byte -119
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -120
|
|
.byte 36
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 104
|
|
.byte 0
|
|
.byte 39
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 1
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 287
|
|
.byte 0
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 100
|
|
.byte 86
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 24
|
|
.hword 512
|
|
.byte 2
|
|
.byte 2
|
|
.hword 700
|
|
.hword 479
|
|
.byte 4
|
|
.byte 18
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -124
|
|
.byte -59
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -43
|
|
.byte -47
|
|
.byte -90
|
|
.byte 104
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 8
|
|
.hword 64
|
|
.byte 1
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 0
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -36
|
|
.byte -112
|
|
.byte -90
|
|
.byte 84
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.hword 64
|
|
.byte 1
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 279
|
|
.byte 0
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 100
|
|
.byte 84
|
|
.byte -92
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1024
|
|
.hword 479
|
|
.byte 4
|
|
.byte 18
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 50
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2184
|
|
.hword 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 68
|
|
.byte 50
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1048
|
|
.hword 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 100
|
|
.byte 60
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1044
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 50
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2184
|
|
.hword 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 4
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 52
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2184
|
|
.hword 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 4
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte -60
|
|
.byte 52
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2184
|
|
.hword 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 52
|
|
.byte -92
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2184
|
|
.hword 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 100
|
|
.byte 60
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -92
|
|
.byte 100
|
|
.byte 50
|
|
.byte -86
|
|
.byte 4
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.hword 1024
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2192
|
|
.hword 1479
|
|
.byte 10
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 4
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -46
|
|
.byte 4
|
|
.byte 67
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 473
|
|
.byte 1
|
|
.byte 1
|
|
.byte 24
|
|
.byte 32
|
|
.byte 4
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte -108
|
|
.byte -38
|
|
.byte 116
|
|
.byte -61
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 473
|
|
.byte 1
|
|
.byte 2
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte -108
|
|
.byte -111
|
|
.byte 96
|
|
.byte 68
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1046
|
|
.hword 473
|
|
.byte 1
|
|
.byte 3
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -38
|
|
.byte 116
|
|
.byte -60
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2090
|
|
.hword 473
|
|
.byte 1
|
|
.byte 4
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -21
|
|
.byte 116
|
|
.byte 68
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1066
|
|
.hword 473
|
|
.byte 1
|
|
.byte 7
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -43
|
|
.byte -108
|
|
.byte -38
|
|
.byte 116
|
|
.byte -60
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 530
|
|
.hword 473
|
|
.byte 1
|
|
.byte 3
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte -108
|
|
.byte -102
|
|
.byte 116
|
|
.byte 66
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 281
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 4
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte 20
|
|
.byte -89
|
|
.byte 66
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1060
|
|
.hword 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte 20
|
|
.byte -98
|
|
.byte 52
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1056
|
|
.hword 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -89
|
|
.byte 66
|
|
.byte 72
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1060
|
|
.hword 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte 20
|
|
.byte -85
|
|
.byte 66
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1056
|
|
.hword 473
|
|
.byte 2
|
|
.byte 6
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte 58
|
|
.byte 20
|
|
.byte -85
|
|
.byte 66
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2092
|
|
.hword 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -43
|
|
.byte -108
|
|
.byte -102
|
|
.byte 116
|
|
.byte 66
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1024
|
|
.hword 273
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte 58
|
|
.byte 20
|
|
.byte 3
|
|
.byte 8
|
|
.byte 80
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.hword 388
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1362
|
|
.hword 473
|
|
.byte 9
|
|
.byte 8
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 100
|
|
.byte 68
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -120
|
|
.byte 36
|
|
.byte 75
|
|
.byte -87
|
|
.byte -124
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -120
|
|
.byte 36
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 104
|
|
.byte 36
|
|
.byte 74
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 104
|
|
.byte 4
|
|
.byte 74
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -41
|
|
.byte -108
|
|
.byte 62
|
|
.byte -124
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 104
|
|
.byte 4
|
|
.byte 70
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte -119
|
|
.byte 100
|
|
.byte 100
|
|
.byte 60
|
|
.byte -95
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1024
|
|
.hword 455
|
|
.byte 4
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte -119
|
|
.byte -124
|
|
.byte 100
|
|
.byte 60
|
|
.byte -91
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 32
|
|
.hword 512
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1024
|
|
.hword 455
|
|
.byte 4
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -120
|
|
.byte 36
|
|
.byte 59
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.hword 192
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 279
|
|
.byte 12
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1060
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2092
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte 58
|
|
.byte -123
|
|
.byte -109
|
|
.byte 118
|
|
.byte 87
|
|
.byte 1
|
|
.byte 2
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2092
|
|
.hword 1505
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -43
|
|
.byte -124
|
|
.byte 50
|
|
.byte 114
|
|
.byte 86
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2056
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -108
|
|
.byte 50
|
|
.byte 118
|
|
.byte 86
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2058
|
|
.hword 1489
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -126
|
|
.byte 118
|
|
.byte 86
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2062
|
|
.hword 1489
|
|
.byte 1
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 80
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1066
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 34
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte 58
|
|
.byte -107
|
|
.byte -109
|
|
.byte 122
|
|
.byte 80
|
|
.byte 1
|
|
.byte 2
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1066
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 34
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -108
|
|
.byte 50
|
|
.byte 118
|
|
.byte 85
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2050
|
|
.hword 401
|
|
.byte 2
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 87
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1058
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 80
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1060
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 34
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1074
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte 58
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2106
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 81
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1056
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte -47
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1074
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 87
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1058
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1060
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -92
|
|
.byte -126
|
|
.byte 118
|
|
.byte 86
|
|
.byte 8
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2082
|
|
.hword 473
|
|
.byte 1
|
|
.byte 65
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 80
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1066
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 67
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 80
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 1060
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 67
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -92
|
|
.byte -126
|
|
.byte 118
|
|
.byte -41
|
|
.byte 8
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2090
|
|
.hword 1241
|
|
.byte 1
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2092
|
|
.hword 1473
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte 58
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2106
|
|
.hword 473
|
|
.byte 2
|
|
.byte 68
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1074
|
|
.hword 473
|
|
.byte 2
|
|
.byte 68
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte 58
|
|
.byte -92
|
|
.byte -109
|
|
.byte 122
|
|
.byte 80
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2138
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 0
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -126
|
|
.byte 118
|
|
.byte 86
|
|
.byte 8
|
|
.byte 1
|
|
.byte 16
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2062
|
|
.hword 473
|
|
.byte 1
|
|
.byte 0
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte -41
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.hword 256
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1058
|
|
.hword 1497
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 5
|
|
.byte -20
|
|
.byte -41
|
|
.byte -108
|
|
.byte 126
|
|
.byte 100
|
|
.byte 68
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 473
|
|
.byte 2
|
|
.byte 49
|
|
.byte 60
|
|
.byte 36
|
|
.byte 3
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -34
|
|
.byte -43
|
|
.byte 126
|
|
.byte 104
|
|
.byte 68
|
|
.byte 0
|
|
.byte 2
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2048
|
|
.hword 505
|
|
.byte 2
|
|
.byte 49
|
|
.byte 60
|
|
.byte 36
|
|
.byte 3
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -41
|
|
.byte -108
|
|
.byte 122
|
|
.byte 84
|
|
.byte 67
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2076
|
|
.hword 409
|
|
.byte 2
|
|
.byte 0
|
|
.byte 40
|
|
.byte 36
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -34
|
|
.byte -43
|
|
.byte 122
|
|
.byte 88
|
|
.byte 67
|
|
.byte 0
|
|
.byte 2
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2076
|
|
.hword 441
|
|
.byte 2
|
|
.byte 0
|
|
.byte 40
|
|
.byte 36
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -43
|
|
.byte -108
|
|
.byte 118
|
|
.byte 84
|
|
.byte 67
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 1038
|
|
.hword 281
|
|
.byte 2
|
|
.byte 0
|
|
.byte 24
|
|
.byte 36
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -41
|
|
.byte 20
|
|
.byte 118
|
|
.byte 84
|
|
.byte -62
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.hword 128
|
|
.byte 2
|
|
.byte 2
|
|
.hword 2076
|
|
.hword 1169
|
|
.byte 2
|
|
.byte 0
|
|
.byte 24
|
|
.byte 40
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -34
|
|
.byte -108
|
|
.byte -61
|
|
.byte -92
|
|
.byte -54
|
|
.byte 0
|
|
.byte 1
|
|
.byte 32
|
|
.hword 792
|
|
.byte 2
|
|
.byte 1
|
|
.hword 688
|
|
.hword 1217
|
|
.byte 11
|
|
.byte 50
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.zero 4
|
|
.section .data.NandOptPara,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR146,. + 0
|
|
.type NandOptPara, %object
|
|
.size NandOptPara, 128
|
|
NandOptPara:
|
|
.byte 1
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 0
|
|
.byte 50
|
|
.byte 17
|
|
.byte -128
|
|
.byte 112
|
|
.byte 120
|
|
.byte 120
|
|
.byte 3
|
|
.byte 1
|
|
.byte 0
|
|
.zero 14
|
|
.byte 2
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 0
|
|
.byte 0
|
|
.byte 17
|
|
.byte -127
|
|
.byte 112
|
|
.byte -15
|
|
.byte -14
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 14
|
|
.byte 3
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 96
|
|
.byte 96
|
|
.byte 17
|
|
.byte -127
|
|
.byte 112
|
|
.byte -15
|
|
.byte -14
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 14
|
|
.byte 4
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 96
|
|
.byte 96
|
|
.byte 17
|
|
.byte -127
|
|
.byte 112
|
|
.byte 112
|
|
.byte 112
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 14
|
|
.section .data.SamsungRefValue,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR14,. + 0
|
|
.type SamsungRefValue, %object
|
|
.size SamsungRefValue, 64
|
|
SamsungRefValue:
|
|
.byte -89
|
|
.byte -92
|
|
.byte -91
|
|
.byte -90
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 5
|
|
.byte 10
|
|
.byte 0
|
|
.byte 0
|
|
.byte 40
|
|
.byte 0
|
|
.byte -20
|
|
.byte -40
|
|
.byte -19
|
|
.byte -11
|
|
.byte -19
|
|
.byte -26
|
|
.byte 10
|
|
.byte 15
|
|
.byte 5
|
|
.byte 0
|
|
.byte 15
|
|
.byte 10
|
|
.byte -5
|
|
.byte -20
|
|
.byte -24
|
|
.byte -17
|
|
.byte -24
|
|
.byte -36
|
|
.byte -15
|
|
.byte -5
|
|
.byte -2
|
|
.byte -16
|
|
.byte 10
|
|
.byte 0
|
|
.byte -5
|
|
.byte -20
|
|
.byte -48
|
|
.byte -30
|
|
.byte -48
|
|
.byte -62
|
|
.byte 20
|
|
.byte 15
|
|
.byte -5
|
|
.byte -20
|
|
.byte -24
|
|
.byte -5
|
|
.byte -24
|
|
.byte -36
|
|
.byte 30
|
|
.byte 20
|
|
.byte -5
|
|
.byte -20
|
|
.byte -5
|
|
.byte -1
|
|
.byte -5
|
|
.byte -8
|
|
.byte 7
|
|
.byte 12
|
|
.byte 2
|
|
.byte 0
|
|
.section .data.Toshiba15RefValue,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR9,. + 0
|
|
.type Toshiba15RefValue, %object
|
|
.size Toshiba15RefValue, 95
|
|
Toshiba15RefValue:
|
|
.byte 4
|
|
.byte 5
|
|
.byte 6
|
|
.byte 7
|
|
.byte 13
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 2
|
|
.byte 4
|
|
.byte 2
|
|
.byte 0
|
|
.byte 0
|
|
.byte 8
|
|
.byte 8
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 124
|
|
.byte 0
|
|
.byte 124
|
|
.byte 124
|
|
.byte 0
|
|
.byte 122
|
|
.byte 0
|
|
.byte 122
|
|
.byte 122
|
|
.byte 0
|
|
.byte 11
|
|
.byte 126
|
|
.byte 118
|
|
.byte 116
|
|
.byte 0
|
|
.byte 120
|
|
.byte 2
|
|
.byte 120
|
|
.byte 122
|
|
.byte 0
|
|
.byte 126
|
|
.byte 4
|
|
.byte 126
|
|
.byte 122
|
|
.byte 0
|
|
.byte 16
|
|
.byte 118
|
|
.byte 114
|
|
.byte 112
|
|
.byte 0
|
|
.byte 118
|
|
.byte 4
|
|
.byte 118
|
|
.byte 120
|
|
.byte 0
|
|
.byte 4
|
|
.byte 4
|
|
.byte 4
|
|
.byte 118
|
|
.byte 0
|
|
.byte 2
|
|
.byte 0
|
|
.byte 126
|
|
.byte 124
|
|
.byte 0
|
|
.byte 6
|
|
.byte 10
|
|
.byte 6
|
|
.byte 2
|
|
.byte 0
|
|
.byte 116
|
|
.byte 124
|
|
.byte 116
|
|
.byte 118
|
|
.byte 0
|
|
.byte 4
|
|
.byte 4
|
|
.byte 124
|
|
.byte 126
|
|
.byte 0
|
|
.byte 0
|
|
.byte 124
|
|
.byte 120
|
|
.byte 120
|
|
.byte 0
|
|
.byte 124
|
|
.byte 118
|
|
.byte 116
|
|
.byte 114
|
|
.byte 0
|
|
.section .data.ToshibaA19RefValue,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR10,. + 0
|
|
.type ToshibaA19RefValue, %object
|
|
.size ToshibaA19RefValue, 45
|
|
ToshibaA19RefValue:
|
|
.byte 4
|
|
.byte 5
|
|
.byte 6
|
|
.byte 7
|
|
.byte 13
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 4
|
|
.byte 4
|
|
.byte 124
|
|
.byte 126
|
|
.byte 0
|
|
.byte 0
|
|
.byte 124
|
|
.byte 120
|
|
.byte 120
|
|
.byte 0
|
|
.byte 124
|
|
.byte 118
|
|
.byte 116
|
|
.byte 114
|
|
.byte 0
|
|
.byte 8
|
|
.byte 8
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 11
|
|
.byte 126
|
|
.byte 118
|
|
.byte 116
|
|
.byte 0
|
|
.byte 16
|
|
.byte 118
|
|
.byte 114
|
|
.byte 112
|
|
.byte 0
|
|
.byte 2
|
|
.byte 0
|
|
.byte 126
|
|
.byte 124
|
|
.byte 0
|
|
.section .data.ToshibaRefValue,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR12,. + 0
|
|
.type ToshibaRefValue, %object
|
|
.size ToshibaRefValue, 8
|
|
ToshibaRefValue:
|
|
.byte 0
|
|
.byte 4
|
|
.byte 124
|
|
.byte 120
|
|
.byte 116
|
|
.byte 8
|
|
.byte 12
|
|
.byte 112
|
|
.section .data.ftl_gc_temp_block_bops_scan_page_addr,"aw",@progbits
|
|
.align 1
|
|
.set .LANCHOR245,. + 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 .LANCHOR247,. + 0
|
|
.type gFtlInitStatus, %object
|
|
.size gFtlInitStatus, 4
|
|
gFtlInitStatus:
|
|
.word -1
|
|
.section .data.gNandParaInfo,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR31,. + 0
|
|
.type gNandParaInfo, %object
|
|
.size gNandParaInfo, 32
|
|
gNandParaInfo:
|
|
.byte 0
|
|
.byte 0
|
|
.zero 5
|
|
.byte 0
|
|
.byte 1
|
|
.byte 8
|
|
.hword 128
|
|
.byte 2
|
|
.byte 1
|
|
.hword 2048
|
|
.hword 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.section .data.gSlcNandParaInfo,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR209,. + 0
|
|
.type gSlcNandParaInfo, %object
|
|
.size gSlcNandParaInfo, 32
|
|
gSlcNandParaInfo:
|
|
.byte 2
|
|
.byte -104
|
|
.byte -15
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 1
|
|
.byte 1
|
|
.byte 4
|
|
.hword 64
|
|
.byte 1
|
|
.byte 1
|
|
.hword 1024
|
|
.hword 256
|
|
.byte 0
|
|
.byte 0
|
|
.byte 16
|
|
.byte 40
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.zero 4
|
|
.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 .data.random_seed,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR5,. + 0
|
|
.type random_seed, %object
|
|
.size random_seed, 256
|
|
random_seed:
|
|
.hword 22378
|
|
.hword 1512
|
|
.hword 25245
|
|
.hword 17827
|
|
.hword 25756
|
|
.hword 19440
|
|
.hword 9026
|
|
.hword 10030
|
|
.hword 29528
|
|
.hword 20467
|
|
.hword 29676
|
|
.hword 24432
|
|
.hword 31328
|
|
.hword 6872
|
|
.hword 13426
|
|
.hword 13842
|
|
.hword 8783
|
|
.hword 1108
|
|
.hword 782
|
|
.hword 28837
|
|
.hword 30729
|
|
.hword 9505
|
|
.hword 18676
|
|
.hword 23085
|
|
.hword 18730
|
|
.hword 1085
|
|
.hword 32609
|
|
.hword 14697
|
|
.hword 20858
|
|
.hword 15170
|
|
.hword 30365
|
|
.hword 1607
|
|
.hword 32298
|
|
.hword 4995
|
|
.hword 18905
|
|
.hword 1976
|
|
.hword 9592
|
|
.hword 20204
|
|
.hword 17443
|
|
.hword 13615
|
|
.hword 23330
|
|
.hword 29369
|
|
.hword 13947
|
|
.hword 9398
|
|
.hword 32398
|
|
.hword 8984
|
|
.hword 27600
|
|
.hword 21785
|
|
.hword 6019
|
|
.hword 6311
|
|
.hword 31598
|
|
.hword 30210
|
|
.hword 19327
|
|
.hword 13896
|
|
.hword 11347
|
|
.hword 27545
|
|
.hword 3107
|
|
.hword 26575
|
|
.hword 32270
|
|
.hword 19852
|
|
.hword 20601
|
|
.hword 8349
|
|
.hword 9290
|
|
.hword 29819
|
|
.hword 13579
|
|
.hword 3661
|
|
.hword 28676
|
|
.hword 27331
|
|
.hword 32574
|
|
.hword 8693
|
|
.hword 31253
|
|
.hword 9081
|
|
.hword 5399
|
|
.hword 6842
|
|
.hword 20087
|
|
.hword 5537
|
|
.hword 1274
|
|
.hword 11617
|
|
.hword 9530
|
|
.hword 4866
|
|
.hword 8035
|
|
.hword 23219
|
|
.hword 1178
|
|
.hword 23272
|
|
.hword 7383
|
|
.hword 18944
|
|
.hword 12488
|
|
.hword 12871
|
|
.hword 29340
|
|
.hword 20532
|
|
.hword 11022
|
|
.hword 22514
|
|
.hword 228
|
|
.hword 22363
|
|
.hword 24978
|
|
.hword 14584
|
|
.hword 12138
|
|
.hword 3092
|
|
.hword 17916
|
|
.hword 16863
|
|
.hword 14554
|
|
.hword 31457
|
|
.hword 29474
|
|
.hword 25311
|
|
.hword 24121
|
|
.hword 3684
|
|
.hword 28037
|
|
.hword 22865
|
|
.hword 22839
|
|
.hword 25217
|
|
.hword 13217
|
|
.hword 27186
|
|
.hword 14938
|
|
.hword 11180
|
|
.hword 29754
|
|
.hword 24180
|
|
.hword 15150
|
|
.hword 32455
|
|
.hword 20434
|
|
.hword 23848
|
|
.hword 29983
|
|
.hword 16120
|
|
.hword 14769
|
|
.hword 20041
|
|
.hword 29803
|
|
.hword 28406
|
|
.hword 17598
|
|
.hword 28087
|
|
.section .data.refValueDefault,"aw",@progbits
|
|
.align 3
|
|
.set .LANCHOR204,. + 0
|
|
.type refValueDefault, %object
|
|
.size refValueDefault, 28
|
|
refValueDefault:
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 6
|
|
.byte 10
|
|
.byte 6
|
|
.byte 0
|
|
.byte -3
|
|
.byte -7
|
|
.byte -8
|
|
.byte 0
|
|
.byte -6
|
|
.byte -13
|
|
.byte -15
|
|
.byte 0
|
|
.byte -11
|
|
.byte -20
|
|
.byte -23
|
|
.byte 0
|
|
.byte 0
|
|
.byte -26
|
|
.byte -30
|
|
.byte 0
|
|
.byte 0
|
|
.byte -32
|
|
.byte -37
|
|
.section .rodata.FlashDdrTunningRead.str1.1,"aMS",@progbits,1
|
|
.LC9:
|
|
.string "sdr read ok %x ecc=%d\n"
|
|
.LC10:
|
|
.string "sync para %d\n"
|
|
.LC11:
|
|
.string "TOG mode Read error %x %x\n"
|
|
.section .rodata.FlashEraseSLc2KBlocks.str1.1,"aMS",@progbits,1
|
|
.LC1:
|
|
.string "FlashEraseBlocks pageAddr error %x\n"
|
|
.section .rodata.FlashInit.str1.1,"aMS",@progbits,1
|
|
.LC24:
|
|
.string "No.%d FLASH ID:%x %x %x %x %x %x\n"
|
|
.LC25:
|
|
.string "FlashLoadPhyInfo fail %x!!\n"
|
|
.section .rodata.FlashProgSlc2KPages.str1.1,"aMS",@progbits,1
|
|
.LC30:
|
|
.string "prog error: = %x\n"
|
|
.LC31:
|
|
.string "prog read error: = %x\n"
|
|
.LC32:
|
|
.string "prog read REFRESH: = %x\n"
|
|
.LC33:
|
|
.string "prog read s error: = %x %x %x\n"
|
|
.LC34:
|
|
.string "prog read d error: = %x %x %x\n"
|
|
.section .rodata.FlashReadFacBbtData.str1.1,"aMS",@progbits,1
|
|
.LC59:
|
|
.string "BBT:"
|
|
.section .rodata.FlashReadIdbDataRaw.str1.1,"aMS",@progbits,1
|
|
.LC15:
|
|
.string "ECC:%d\n"
|
|
.section .rodata.FlashReadPage.str1.1,"aMS",@progbits,1
|
|
.LC12:
|
|
.string "read retry status %x %x %x\n"
|
|
.section .rodata.FlashReadPages.str1.1,"aMS",@progbits,1
|
|
.LC29:
|
|
.string "ReadRetry pageadd=%x ecc=%x err=%x\n"
|
|
.section .rodata.FlashReadSlc2KPages.str1.1,"aMS",@progbits,1
|
|
.LC26:
|
|
.string "Read pageadd=%x ecc=%x err=%x\n"
|
|
.LC27:
|
|
.string "data:"
|
|
.LC28:
|
|
.string "spare:"
|
|
.section .rodata.FtlBbmMapBadBlock.str1.1,"aMS",@progbits,1
|
|
.LC2:
|
|
.string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
|
|
.section .rodata.FtlBbmTblFlush.str1.1,"aMS",@progbits,1
|
|
.LC35:
|
|
.string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
|
|
.LC36:
|
|
.string "FtlBbmTblFlush error:%x\n"
|
|
.LC37:
|
|
.string "FtlBbmTblFlush error = %x error count = %d\n"
|
|
.section .rodata.FtlCacheWriteBack.str1.1,"aMS",@progbits,1
|
|
.LC76:
|
|
.string "Ftlwrite decrement_vpc_count %x = %d\n"
|
|
.section .rodata.FtlCheckVpc.str1.1,"aMS",@progbits,1
|
|
.LC63:
|
|
.string "FtlCheckVpc2 %x = %x %x\n"
|
|
.LC64:
|
|
.string "free blk vpc error %x = %x %x\n"
|
|
.LC65:
|
|
.string "error_flag %x\n"
|
|
.section .rodata.FtlDumpBlockInfo.str1.1,"aMS",@progbits,1
|
|
.LC48:
|
|
.string "...%s enter...\n"
|
|
.LC49:
|
|
.string "superBlkID = %x vpc=%x\n"
|
|
.LC50:
|
|
.string "flashmode = %x pagenum = %x %x\n"
|
|
.LC51:
|
|
.string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n"
|
|
.section .rodata.FtlDumpSysBlock.str1.1,"aMS",@progbits,1
|
|
.LC84:
|
|
.string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n"
|
|
.LC85:
|
|
.string ":"
|
|
.section .rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",@progbits,1
|
|
.LC3:
|
|
.string "FtlFreeSysBlkQueueOut free count = %d\n"
|
|
.LC4:
|
|
.string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n"
|
|
.section .rodata.FtlGcFreeTempBlock.str1.1,"aMS",@progbits,1
|
|
.LC74:
|
|
.string "GC des block %x done\n"
|
|
.section .rodata.FtlGcScanTempBlk.str1.1,"aMS",@progbits,1
|
|
.LC72:
|
|
.string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n"
|
|
.LC73:
|
|
.string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n"
|
|
.section .rodata.FtlInit.str1.1,"aMS",@progbits,1
|
|
.LC77:
|
|
.string "FTL version: 5.0.63 20200923"
|
|
.LC78:
|
|
.string "...%s: no bad block mapping table, format device\n"
|
|
.LC79:
|
|
.string "...%s FtlSysBlkInit error ,format device!\n"
|
|
.section .rodata.FtlLoadEctTbl.str1.1,"aMS",@progbits,1
|
|
.LC45:
|
|
.string "no ect"
|
|
.section .rodata.FtlLoadSysInfo.str1.1,"aMS",@progbits,1
|
|
.LC47:
|
|
.string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n"
|
|
.section .rodata.FtlLowFormat.str1.1,"aMS",@progbits,1
|
|
.LC75:
|
|
.string "too many bad block = %d %d\n"
|
|
.section .rodata.FtlMapWritePage.str1.1,"aMS",@progbits,1
|
|
.LC42:
|
|
.string "FtlMapWritePage error = %x\n"
|
|
.LC43:
|
|
.string "FtlMapWritePage error = %x error count = %d\n"
|
|
.section .rodata.FtlRecoverySuperblock.str1.1,"aMS",@progbits,1
|
|
.LC69:
|
|
.string "RSB refresh addr %x\n"
|
|
.LC70:
|
|
.string "spuer block %x vpn is 0\n "
|
|
.LC71:
|
|
.string "g_recovery_ppa %x ver %x\n "
|
|
.section .rodata.FtlScanAllBlock.str1.1,"aMS",@progbits,1
|
|
.LC52:
|
|
.string "blk = %x vpc=%x mode = %x\n"
|
|
.LC53:
|
|
.string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n"
|
|
.LC54:
|
|
.string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n"
|
|
.section .rodata.FtlVendorPartRead.str1.1,"aMS",@progbits,1
|
|
.LC44:
|
|
.string "FtlVendorPartRead refresh = %x phyAddr = %x\n"
|
|
.section .rodata.FtlVpcTblFlush.str1.1,"aMS",@progbits,1
|
|
.LC40:
|
|
.string "FtlVpcTblFlush error = %x error count = %d\n"
|
|
.section .rodata.FtlWrite.str1.1,"aMS",@progbits,1
|
|
.LC83:
|
|
.string "FtlWrite: lpa error:%x %x\n"
|
|
.section .rodata.Ftl_load_ext_data.str1.1,"aMS",@progbits,1
|
|
.LC46:
|
|
.string "slc mode"
|
|
.section .rodata.Ftlscanalldata.str1.1,"aMS",@progbits,1
|
|
.LC66:
|
|
.string "Ftlscanalldata = %x\n"
|
|
.LC67:
|
|
.string "scan lpa = %x ppa= %x\n"
|
|
.LC68:
|
|
.string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
|
|
.section .rodata.HynixGetReadRetryDefault.str1.1,"aMS",@progbits,1
|
|
.LC22:
|
|
.string "otp error! %d"
|
|
.LC23:
|
|
.string "rr"
|
|
.section .rodata.INSERT_DATA_LIST.str1.1,"aMS",@progbits,1
|
|
.LC5:
|
|
.string "\n!!!!! error @ func:%s - line:%d\n"
|
|
.LC6:
|
|
.string "!!!!! FTL sys Error !!!!!"
|
|
.LC7:
|
|
.string "%s\n"
|
|
.section .rodata.MicronReadRetrial.str1.1,"aMS",@progbits,1
|
|
.LC13:
|
|
.string "micron RR %d row=%x,count %d,status=%d\n"
|
|
.section .rodata.__func__.10027,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR96,. + 0
|
|
.type __func__.10027, %object
|
|
.size __func__.10027, 22
|
|
__func__.10027:
|
|
.string "List_update_data_list"
|
|
.section .rodata.__func__.10034,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR237,. + 0
|
|
.type __func__.10034, %object
|
|
.size __func__.10034, 20
|
|
__func__.10034:
|
|
.string "ftl_load_l2p_region"
|
|
.section .rodata.__func__.10065,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR97,. + 0
|
|
.type __func__.10065, %object
|
|
.size __func__.10065, 26
|
|
__func__.10065:
|
|
.string "ftl_map_blk_alloc_new_blk"
|
|
.section .rodata.__func__.10075,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR221,. + 0
|
|
.type __func__.10075, %object
|
|
.size __func__.10075, 15
|
|
__func__.10075:
|
|
.string "ftl_map_blk_gc"
|
|
.section .rodata.__func__.10088,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR222,. + 0
|
|
.type __func__.10088, %object
|
|
.size __func__.10088, 31
|
|
__func__.10088:
|
|
.string "Ftl_write_map_blk_to_last_page"
|
|
.section .rodata.__func__.10101,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR223,. + 0
|
|
.type __func__.10101, %object
|
|
.size __func__.10101, 16
|
|
__func__.10101:
|
|
.string "FtlMapWritePage"
|
|
.section .rodata.__func__.10121,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR100,. + 0
|
|
.type __func__.10121, %object
|
|
.size __func__.10121, 22
|
|
__func__.10121:
|
|
.string "select_l2p_ram_region"
|
|
.section .rodata.__func__.10137,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR236,. + 0
|
|
.type __func__.10137, %object
|
|
.size __func__.10137, 9
|
|
__func__.10137:
|
|
.string "log2phys"
|
|
.section .rodata.__func__.10199,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR219,. + 0
|
|
.type __func__.10199, %object
|
|
.size __func__.10199, 15
|
|
__func__.10199:
|
|
.string "FtlVpcTblFlush"
|
|
.section .rodata.__func__.10218,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR229,. + 0
|
|
.type __func__.10218, %object
|
|
.size __func__.10218, 14
|
|
__func__.10218:
|
|
.string "FtlScanSysBlk"
|
|
.section .rodata.__func__.10273,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR230,. + 0
|
|
.type __func__.10273, %object
|
|
.size __func__.10273, 15
|
|
__func__.10273:
|
|
.string "FtlLoadSysInfo"
|
|
.section .rodata.__func__.10284,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR238,. + 0
|
|
.type __func__.10284, %object
|
|
.size __func__.10284, 12
|
|
__func__.10284:
|
|
.string "FtlCheckVpc"
|
|
.section .rodata.__func__.10316,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR233,. + 0
|
|
.type __func__.10316, %object
|
|
.size __func__.10316, 17
|
|
__func__.10316:
|
|
.string "FtlDumpBlockInfo"
|
|
.section .rodata.__func__.10335,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR234,. + 0
|
|
.type __func__.10335, %object
|
|
.size __func__.10335, 16
|
|
__func__.10335:
|
|
.string "FtlScanAllBlock"
|
|
.section .rodata.__func__.10440,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR239,. + 0
|
|
.type __func__.10440, %object
|
|
.size __func__.10440, 16
|
|
__func__.10440:
|
|
.string "FtlReUsePrevPpa"
|
|
.section .rodata.__func__.10473,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR240,. + 0
|
|
.type __func__.10473, %object
|
|
.size __func__.10473, 22
|
|
__func__.10473:
|
|
.string "FtlRecoverySuperblock"
|
|
.section .rodata.__func__.10527,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR103,. + 0
|
|
.type __func__.10527, %object
|
|
.size __func__.10527, 16
|
|
__func__.10527:
|
|
.string "make_superblock"
|
|
.section .rodata.__func__.10547,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR143,. + 0
|
|
.type __func__.10547, %object
|
|
.size __func__.10547, 18
|
|
__func__.10547:
|
|
.string "SupperBlkListInit"
|
|
.section .rodata.__func__.10593,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR235,. + 0
|
|
.type __func__.10593, %object
|
|
.size __func__.10593, 17
|
|
__func__.10593:
|
|
.string "ftl_scan_all_ppa"
|
|
.section .rodata.__func__.10638,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR212,. + 0
|
|
.type __func__.10638, %object
|
|
.size __func__.10638, 25
|
|
__func__.10638:
|
|
.string "allocate_data_superblock"
|
|
.section .rodata.__func__.10652,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR228,. + 0
|
|
.type __func__.10652, %object
|
|
.size __func__.10652, 29
|
|
__func__.10652:
|
|
.string "allocate_new_data_superblock"
|
|
.section .rodata.__func__.10658,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR217,. + 0
|
|
.type __func__.10658, %object
|
|
.size __func__.10658, 19
|
|
__func__.10658:
|
|
.string "get_new_active_ppa"
|
|
.section .rodata.__func__.10669,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR215,. + 0
|
|
.type __func__.10669, %object
|
|
.size __func__.10669, 16
|
|
__func__.10669:
|
|
.string "update_vpc_list"
|
|
.section .rodata.__func__.10674,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR216,. + 0
|
|
.type __func__.10674, %object
|
|
.size __func__.10674, 20
|
|
__func__.10674:
|
|
.string "decrement_vpc_count"
|
|
.section .rodata.__func__.10742,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR246,. + 0
|
|
.type __func__.10742, %object
|
|
.size __func__.10742, 19
|
|
__func__.10742:
|
|
.string "FtlGcFreeTempBlock"
|
|
.section .rodata.__func__.10843,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR251,. + 0
|
|
.type __func__.10843, %object
|
|
.size __func__.10843, 10
|
|
__func__.10843:
|
|
.string "ftl_do_gc"
|
|
.section .rodata.__func__.9622,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR255,. + 0
|
|
.type __func__.9622, %object
|
|
.size __func__.9622, 8
|
|
__func__.9622:
|
|
.string "FtlInit"
|
|
.section .rodata.__func__.9726,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR258,. + 0
|
|
.type __func__.9726, %object
|
|
.size __func__.9726, 9
|
|
__func__.9726:
|
|
.string "FtlWrite"
|
|
.section .rodata.__func__.9816,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR127,. + 0
|
|
.type __func__.9816, %object
|
|
.size __func__.9816, 14
|
|
__func__.9816:
|
|
.string "FtlBbt2Bitmap"
|
|
.section .rodata.__func__.9862,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR220,. + 0
|
|
.type __func__.9862, %object
|
|
.size __func__.9862, 11
|
|
__func__.9862:
|
|
.string "FtlLoadBbt"
|
|
.section .rodata.__func__.9955,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR91,. + 0
|
|
.type __func__.9955, %object
|
|
.size __func__.9955, 17
|
|
__func__.9955:
|
|
.string "INSERT_FREE_LIST"
|
|
.section .rodata.__func__.9959,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR88,. + 0
|
|
.type __func__.9959, %object
|
|
.size __func__.9959, 17
|
|
__func__.9959:
|
|
.string "INSERT_DATA_LIST"
|
|
.section .rodata.__func__.9997,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR92,. + 0
|
|
.type __func__.9997, %object
|
|
.size __func__.9997, 17
|
|
__func__.9997:
|
|
.string "List_remove_node"
|
|
.section .rodata.decrement_vpc_count.str1.1,"aMS",@progbits,1
|
|
.LC38:
|
|
.string "decrement_vpc_count %x = %d\n"
|
|
.LC39:
|
|
.string "decrement_vpc_count %x = %d in free list\n"
|
|
.section .rodata.dump_map_info.str1.1,"aMS",@progbits,1
|
|
.LC86:
|
|
.string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
|
|
.LC87:
|
|
.string "Mblk:"
|
|
.LC88:
|
|
.string "L2P:"
|
|
.LC89:
|
|
.string "L2PC:"
|
|
.section .rodata.ftl_fix_nand_power_lost_error.str1.1,"aMS",@progbits,1
|
|
.LC81:
|
|
.string "fix power lost blk = %x vpc=%x\n"
|
|
.LC82:
|
|
.string "erase power lost blk = %x vpc=%x\n"
|
|
.section .rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",@progbits,1
|
|
.LC8:
|
|
.string "FtlFreeSysBlkQueueOut = %x, free count = %d\n"
|
|
.section .rodata.ftl_map_blk_gc.str1.1,"aMS",@progbits,1
|
|
.LC41:
|
|
.string "page map lost: %x %x\n"
|
|
.section .rodata.ftl_scan_all_ppa.str1.1,"aMS",@progbits,1
|
|
.LC55:
|
|
.string "ftl_scan_all_ppa blk %x page %x flag: %x\n"
|
|
.LC56:
|
|
.string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n"
|
|
.LC57:
|
|
.string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n"
|
|
.LC58:
|
|
.string "%s finished\n"
|
|
.section .rodata.idb_write_data.str1.1,"aMS",@progbits,1
|
|
.LC16:
|
|
.string "1 write_idblock fix data %x %x %x\n"
|
|
.LC17:
|
|
.string "write_idblock fail! %x %x %x %x\n"
|
|
.LC18:
|
|
.string "write_idblock fail! %x\n"
|
|
.section .rodata.log2phys.str1.1,"aMS",@progbits,1
|
|
.LC60:
|
|
.string "region_id = %x phyAddr = %x\n"
|
|
.LC61:
|
|
.string "map_ppn:"
|
|
.LC62:
|
|
.string "load_l2p_region refresh = %x phyAddr = %x\n"
|
|
.section .rodata.rk_ftl_init.str1.1,"aMS",@progbits,1
|
|
.LC80:
|
|
.string "FtlInit %x\n"
|
|
.section .rodata.rknand_print_hex.str1.1,"aMS",@progbits,1
|
|
.LC19:
|
|
.string "%s 0x%x:"
|
|
.LC20:
|
|
.string "%x "
|
|
.LC21:
|
|
.string ""
|
|
.section .rodata.samsung_14nm_mlc_rr,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR151,. + 0
|
|
.type samsung_14nm_mlc_rr, %object
|
|
.size samsung_14nm_mlc_rr, 104
|
|
samsung_14nm_mlc_rr:
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte -4
|
|
.byte 3
|
|
.byte -4
|
|
.byte -6
|
|
.byte 6
|
|
.byte 0
|
|
.byte 6
|
|
.byte -10
|
|
.byte -10
|
|
.byte 4
|
|
.byte -10
|
|
.byte 16
|
|
.byte 12
|
|
.byte -4
|
|
.byte 12
|
|
.byte 8
|
|
.byte -16
|
|
.byte 10
|
|
.byte -16
|
|
.byte 24
|
|
.byte 18
|
|
.byte -14
|
|
.byte 18
|
|
.byte -4
|
|
.byte -22
|
|
.byte -16
|
|
.byte -22
|
|
.byte -8
|
|
.byte 24
|
|
.byte -9
|
|
.byte 24
|
|
.byte 8
|
|
.byte -28
|
|
.byte -4
|
|
.byte -28
|
|
.byte 16
|
|
.byte 30
|
|
.byte 10
|
|
.byte 30
|
|
.byte 10
|
|
.byte -34
|
|
.byte 6
|
|
.byte -34
|
|
.byte 0
|
|
.byte 36
|
|
.byte -8
|
|
.byte 36
|
|
.byte -8
|
|
.byte -40
|
|
.byte -2
|
|
.byte -40
|
|
.byte -20
|
|
.byte -46
|
|
.byte -4
|
|
.byte -46
|
|
.byte -30
|
|
.byte 3
|
|
.byte 0
|
|
.byte 3
|
|
.byte -3
|
|
.byte -2
|
|
.byte -4
|
|
.byte -2
|
|
.byte -6
|
|
.byte -4
|
|
.byte -4
|
|
.byte -4
|
|
.byte -10
|
|
.byte -6
|
|
.byte -8
|
|
.byte -6
|
|
.byte -14
|
|
.byte -9
|
|
.byte -8
|
|
.byte -9
|
|
.byte -18
|
|
.byte -52
|
|
.byte 22
|
|
.byte -52
|
|
.byte 10
|
|
.byte 42
|
|
.byte 4
|
|
.byte 42
|
|
.byte 4
|
|
.byte 48
|
|
.byte -9
|
|
.byte 48
|
|
.byte 4
|
|
.byte -58
|
|
.byte 12
|
|
.byte -58
|
|
.byte 0
|
|
.byte -64
|
|
.byte -24
|
|
.byte -64
|
|
.byte -6
|
|
.byte 9
|
|
.byte 18
|
|
.byte 9
|
|
.byte 8
|
|
.section .rodata.samsung_14nm_slc_rr,"a",@progbits
|
|
.align 3
|
|
.set .LANCHOR150,. + 0
|
|
.type samsung_14nm_slc_rr, %object
|
|
.size samsung_14nm_slc_rr, 26
|
|
samsung_14nm_slc_rr:
|
|
.byte 0
|
|
.byte 10
|
|
.byte -10
|
|
.byte 20
|
|
.byte -20
|
|
.byte 30
|
|
.byte -30
|
|
.byte 40
|
|
.byte -40
|
|
.byte 50
|
|
.byte -50
|
|
.byte 60
|
|
.byte -60
|
|
.byte -70
|
|
.byte -80
|
|
.byte -90
|
|
.byte -100
|
|
.byte -110
|
|
.byte -120
|
|
.byte -9
|
|
.byte 70
|
|
.byte 80
|
|
.byte 90
|
|
.byte -125
|
|
.byte -115
|
|
.byte 100
|
|
.section .rodata.samsung_read_retrial.str1.1,"aMS",@progbits,1
|
|
.LC14:
|
|
.string "samsung RR %d row=%x,count %d,status=%d\n"
|
|
.hidden free
|