Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
/*
* Copyright (c) 2016-2017, Fuzhou Rockchip Electronics Co., Ltd
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* date: 2021-07-16
*/
<------>.file "rk_ftl_arm_v8.S"
<------>.text
<------>.align 2
<------>.type flash_read_ecc, %function
flash_read_ecc:
<------>stp x29, x30, [sp, -32]!
<------>ubfiz x0, x0, 4, 8
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x2, x1, x0
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>ldr x0, [x1, x0]
<------>ldrb w19, [x2, 8]
<------>add x19, x0, x19, lsl 8
<------>mov w0, 122
<------>str w0, [x19, 2056]
<------>mov x0, 400
<------>bl __const_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
<------>.align 2
<------>.type ftl_set_blk_mode.part.9, %function
ftl_set_blk_mode.part.9:
<------>and w0, w0, 65535
<------>adrp x2, .LANCHOR0+64
<------>ubfx x1, x0, 5, 11
<------>ldr x3, [x2, #:lo12:.LANCHOR0+64]
<------>lsl x1, x1, 2
<------>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.9, .-ftl_set_blk_mode.part.9
<------>.align 2
<------>.global FlashMemCmp8
<------>.type FlashMemCmp8, %function
FlashMemCmp8:
<------>adrp x3, .LANCHOR0+72
<------>ldrb w3, [x3, #:lo12:.LANCHOR0+72]
<------>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
<------>.align 2
<------>.global FlashRsvdBlkChk
<------>.type FlashRsvdBlkChk, %function
FlashRsvdBlkChk:
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>and w0, w0, 255
<------>ldrb w3, [x2, 73]
<------>ldr w2, [x2, 76]
<------>mul w2, w3, w2
<------>cmp w2, w1
<------>bls .L14
<------>cmp w0, 0
<------>cset w0, ne
<------>ret
.L14:
<------>mov w0, 1
<------>ret
<------>.size FlashRsvdBlkChk, .-FlashRsvdBlkChk
<------>.align 2
<------>.global FlashGetRandomizer
<------>.type FlashGetRandomizer, %function
FlashGetRandomizer:
<------>and x3, x1, 127
<------>adrp x2, .LANCHOR1
<------>add x2, x2, :lo12:.LANCHOR1
<------>ldrh w4, [x2, x3, lsl 1]
<------>adrp x2, .LANCHOR0+80
<------>ldrb w2, [x2, #:lo12:.LANCHOR0+80]
<------>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
<------>.align 2
<------>.global FlashSetRandomizer
<------>.type FlashSetRandomizer, %function
FlashSetRandomizer:
<------>and x2, x1, 127
<------>and w6, w0, 255
<------>adrp x0, .LANCHOR1
<------>add x0, x0, :lo12:.LANCHOR1
<------>ldrh w5, [x0, x2, lsl 1]
<------>adrp x0, .LANCHOR0
<------>add x2, x0, :lo12:.LANCHOR0
<------>mov x4, x0
<------>ldrb w2, [x2, 80]
<------>cbz w2, .L34
<------>stp x29, x30, [sp, -16]!
<------>mov w0, w6
<------>add x29, sp, 0
<------>bl FlashRsvdBlkChk
<------>cmp w0, 0
<------>sbfiz x6, x6, 4, 32
<------>add x0, x4, :lo12:.LANCHOR0
<------>orr w1, w5, -1073741824
<------>csel w5, w1, w5, ne
<------>ldr x0, [x0, x6]
<------>str w5, [x0, 336]
<------>ldp x29, x30, [sp], 16
<------>ret
.L34:
<------>add x0, x0, :lo12:.LANCHOR0
<------>sbfiz x6, x6, 4, 32
<------>ldr x0, [x0, x6]
<------>str w5, [x0, 336]
<------>ret
<------>.size FlashSetRandomizer, .-FlashSetRandomizer
<------>.align 2
<------>.global FlashBlockAlignInit
<------>.type FlashBlockAlignInit, %function
FlashBlockAlignInit:
<------>and w0, w0, 65535
<------>adrp x1, .LANCHOR0
<------>cmp w0, 512
<------>add x1, x1, :lo12:.LANCHOR0
<------>bls .L38
<------>mov w0, 1024
.L42:
<------>str w0, [x1, 76]
<------>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
<------>.align 2
<------>.global FlashReadCmd
<------>.type FlashReadCmd, %function
FlashReadCmd:
<------>and w0, w0, 255
<------>adrp x3, .LANCHOR0
<------>sbfiz x2, x0, 4, 32
<------>add x3, x3, :lo12:.LANCHOR0
<------>stp x29, x30, [sp, -16]!
<------>add x4, x3, x2
<------>add x29, sp, 0
<------>ldr x2, [x3, x2]
<------>ldr x3, [x3, 88]
<------>ldrb w4, [x4, 8]
<------>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]
<------>bl FlashSetRandomizer
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FlashReadCmd, .-FlashReadCmd
<------>.align 2
<------>.global FlashReadDpDataOutCmd
<------>.type FlashReadDpDataOutCmd, %function
FlashReadDpDataOutCmd:
<------>and w0, w0, 255
<------>adrp x3, .LANCHOR0
<------>sbfiz x2, x0, 4, 32
<------>add x3, x3, :lo12:.LANCHOR0
<------>stp x29, x30, [sp, -16]!
<------>add x4, x3, x2
<------>and w5, w1, 255
<------>add x29, sp, 0
<------>ldr x6, [x3, x2]
<------>ldrb w2, [x3, 112]
<------>lsr w3, w1, 16
<------>cmp w2, 1
<------>ldrb w2, [x4, 8]
<------>lsr w4, w1, 8
<------>add x2, x6, x2, lsl 8
<------>bne .L47
<------>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]
.L50:
<------>mov w3, 224
<------>str w3, [x2, 2056]
<------>bl FlashSetRandomizer
<------>ldp x29, x30, [sp], 16
<------>ret
.L47:
<------>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 .L50
<------>.size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
<------>.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
<------>stp x29, x30, [sp, -16]!
<------>lsr w3, w1, 16
<------>add x29, sp, 0
<------>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]
<------>bl FlashSetRandomizer
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FlashProgFirstCmd, .-FlashProgFirstCmd
<------>.align 2
<------>.global FlashEraseCmd
<------>.type FlashEraseCmd, %function
FlashEraseCmd:
<------>ubfiz x0, x0, 4, 8
<------>adrp x3, .LANCHOR0
<------>add x3, x3, :lo12:.LANCHOR0
<------>add x5, x3, x0
<------>ldr x4, [x3, x0]
<------>ldrb w0, [x5, 8]
<------>cbz w2, .L54
<------>add x2, x4, x0, lsl 8
<------>mov w5, 96
<------>str w5, [x2, 2056]
<------>and w5, w1, 255
<------>str w5, [x2, 2052]
<------>lsr w5, w1, 8
<------>str w5, [x2, 2052]
<------>lsr w5, w1, 16
<------>str w5, [x2, 2052]
<------>ldr w2, [x3, 76]
<------>add w1, w1, w2
.L54:
<------>add x0, x4, 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
<------>.align 2
<------>.global FlashProgDpSecondCmd
<------>.type FlashProgDpSecondCmd, %function
FlashProgDpSecondCmd:
<------>and w0, w0, 255
<------>adrp x4, .LANCHOR0
<------>sbfiz x5, x0, 4, 32
<------>add x4, x4, :lo12:.LANCHOR0
<------>add x2, x4, x5
<------>stp x29, x30, [sp, -16]!
<------>lsr w3, w1, 16
<------>add x29, sp, 0
<------>ldrb w6, [x4, 107]
<------>ldrb w2, [x2, 8]
<------>ldr x4, [x4, x5]
<------>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]
<------>bl FlashSetRandomizer
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
<------>.align 2
<------>.global FlashProgSecondCmd
<------>.type FlashProgSecondCmd, %function
FlashProgSecondCmd:
<------>stp x29, x30, [sp, -32]!
<------>ubfiz x0, x0, 4, 8
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x29, sp, 0
<------>add x2, x1, x0
<------>stp x19, x20, [sp, 16]
<------>ldr x20, [x1, x0]
<------>mov x0, 36284
<------>ldrb w19, [x2, 8]
<------>movk x0, 0x6, lsl 16
<------>bl __const_udelay
<------>add x19, x19, 8
<------>mov w0, 16
<------>add x19, x20, x19, lsl 8
<------>str w0, [x19, 8]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FlashProgSecondCmd, .-FlashProgSecondCmd
<------>.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]
<------>ldrb w0, [x3, 8]
<------>ldrb w1, [x1, 106]
<------>add x0, x0, 8
<------>add x0, x2, x0, lsl 8
<------>str w1, [x0, 8]
<------>ret
<------>.size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
<------>.align 2
<------>.global FlashReadStatus
<------>.type FlashReadStatus, %function
FlashReadStatus:
<------>stp x29, x30, [sp, -32]!
<------>ubfiz x0, x0, 4, 8
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x29, sp, 0
<------>add x2, x1, x0
<------>str x19, [sp, 16]
<------>ldr x0, [x1, x0]
<------>ldrb w19, [x2, 8]
<------>add x19, x0, x19, lsl 8
<------>mov w0, 112
<------>str w0, [x19, 2056]
<------>mov x0, 400
<------>bl __const_udelay
<------>ldr w0, [x19, 2048]
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FlashReadStatus, .-FlashReadStatus
<------>.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
.L66:
<------>cmp w1, w3
<------>bhi .L67
<------>ret
.L67:
<------>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 .L66
<------>.size js_hash, .-js_hash
<------>.align 2
<------>.global FlashLoadIdbInfo
<------>.type FlashLoadIdbInfo, %function
FlashLoadIdbInfo:
<------>mov w0, 0
<------>ret
<------>.size FlashLoadIdbInfo, .-FlashLoadIdbInfo
<------>.align 2
<------>.global FlashPrintInfo
<------>.type FlashPrintInfo, %function
FlashPrintInfo:
<------>ret
<------>.size FlashPrintInfo, .-FlashPrintInfo
<------>.align 2
<------>.global ToshibaSetRRPara
<------>.type ToshibaSetRRPara, %function
ToshibaSetRRPara:
<------>stp x29, x30, [sp, -80]!
<------>and w1, w1, 255
<------>add w2, w1, 1
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>mov x21, x0
<------>mov w0, 5
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>adrp x22, .LANCHOR0
<------>umull x2, w2, w0
<------>adrp x0, .LANCHOR1
<------>add x0, x0, :lo12:.LANCHOR1
<------>stp x19, x20, [sp, 16]
<------>add x25, x0, 256
<------>add x24, x0, 352
<------>add x25, x25, x2
<------>add x24, x24, x2
<------>add x22, x22, :lo12:.LANCHOR0
<------>mov x19, x0
<------>add x23, x0, w1, sxtw
<------>mov x20, 0
<------>mov w26, 85
.L71:
<------>ldrb w0, [x22, 129]
<------>cmp w0, w20
<------>bhi .L75
<------>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
.L75:
<------>add x0, x19, 352
<------>str w26, [x21, 8]
<------>ldrsb w0, [x20, x0]
<------>str w0, [x21, 4]
<------>mov x0, 1000
<------>bl __const_udelay
<------>ldrb w0, [x22, 128]
<------>cmp w0, 34
<------>bne .L72
<------>ldrsb w0, [x24, x20]
.L77:
<------>add x20, x20, 1
<------>str w0, [x21]
<------>b .L71
.L72:
<------>cmp w0, 35
<------>bne .L74
<------>ldrsb w0, [x25, x20]
<------>b .L77
.L74:
<------>ldrsb w0, [x23, 400]
<------>b .L77
<------>.size ToshibaSetRRPara, .-ToshibaSetRRPara
<------>.align 2
<------>.global SamsungSetRRPara
<------>.type SamsungSetRRPara, %function
SamsungSetRRPara:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>mov x22, x0
<------>ubfiz x21, x1, 2, 8
<------>adrp x0, .LANCHOR1
<------>add x0, x0, :lo12:.LANCHOR1
<------>add x21, x21, 4
<------>add x0, x0, 408
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>add x21, x0, x21
<------>adrp x23, .LANCHOR0
<------>mov x19, x0
<------>add x23, x23, :lo12:.LANCHOR0
<------>mov x20, 0
<------>mov w24, 161
.L79:
<------>ldrb w0, [x23, 129]
<------>cmp w0, w20
<------>bhi .L80
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
.L80:
<------>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, 1500
<------>bl __const_udelay
<------>b .L79
<------>.size SamsungSetRRPara, .-SamsungSetRRPara
<------>.align 2
<------>.global ftl_flash_suspend
<------>.type ftl_flash_suspend, %function
ftl_flash_suspend:
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>ldr x1, [x0, 136]
<------>ldr w2, [x1]
<------>str w2, [x0, 144]
<------>ldr w2, [x1, 4]
<------>str w2, [x0, 148]
<------>ldr w2, [x1, 8]
<------>str w2, [x0, 152]
<------>ldr w2, [x1, 12]
<------>str w2, [x0, 156]
<------>ldr w2, [x1, 304]
<------>str w2, [x0, 160]
<------>ldr w2, [x1, 308]
<------>str w2, [x0, 164]
<------>ldr w2, [x1, 336]
<------>ldr w1, [x1, 344]
<------>stp w2, w1, [x0, 168]
<------>ret
<------>.size ftl_flash_suspend, .-ftl_flash_suspend
<------>.align 2
<------>.global LogAddr2PhyAddr
<------>.type LogAddr2PhyAddr, %function
LogAddr2PhyAddr:
<------>adrp x6, .LANCHOR0
<------>add x7, x6, :lo12:.LANCHOR0
<------>and w4, w4, 255
<------>ldrh w9, [x7, 188]
<------>ldrh w5, [x7, 190]
<------>ldrh w8, [x7, 76]
<------>ldrb w7, [x7, 72]
<------>cmp w7, 1
<------>ldr w7, [x0, 4]
<------>mul w5, w5, w9
<------>ubfx x11, x7, 10, 16
<------>and w9, w5, 65535
<------>ubfiz w5, w8, 1, 15
<------>and w7, w7, 1023
<------>csel w8, w5, w8, eq
<------>cmp w1, 1
<------>udiv w5, w11, w9
<------>and w10, w5, 65535
<------>msub w5, w5, w9, w11
<------>and w5, w5, 65535
<------>bne .L85
<------>add x1, x6, :lo12:.LANCHOR0
<------>ldrb w9, [x1, 204]
<------>cbnz w9, .L85
<------>add x1, x1, 208
<------>ldrh w7, [x1, w7, sxtw 1]
.L85:
<------>add x6, x6, :lo12:.LANCHOR0
<------>uxtw x1, w10
<------>add x6, x6, 1232
<------>cmp w4, 1
<------>ldr w1, [x6, x1, lsl 2]
<------>madd w5, w5, w8, w1
<------>add w5, w5, w7
<------>str w5, [x2]
<------>str w10, [x3]
<------>bls .L87
<------>ldr w1, [x0, 4]
<------>ldr w0, [x0, 60]
<------>add w1, w1, 1024
<------>cmp w1, w0
<------>cset w0, eq
<------>ret
.L87:
<------>mov w0, 0
<------>ret
<------>.size LogAddr2PhyAddr, .-LogAddr2PhyAddr
<------>.align 2
<------>.global FlashReadStatusEN
<------>.type FlashReadStatusEN, %function
FlashReadStatusEN:
<------>stp x29, x30, [sp, -32]!
<------>ubfiz x0, x0, 4, 8
<------>adrp x4, .LANCHOR0
<------>add x3, x4, :lo12:.LANCHOR0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>add x5, x3, x0
<------>ldr x20, [x3, x0]
<------>ldr x0, [x3, 88]
<------>ldrb w19, [x5, 8]
<------>ldrb w0, [x0, 8]
<------>cmp w0, 2
<------>bne .L89
<------>and w2, w2, 255
<------>add x3, x3, 96
<------>cbnz w2, .L90
<------>ldrb w2, [x3, 13]
.L100:
<------>add x0, x19, 8
<------>add x4, x4, :lo12:.LANCHOR0
<------>add x0, x20, x0, lsl 8
<------>str w2, [x0, 8]
<------>ldrb w4, [x4, 111]
<------>cbz w4, .L94
<------>add x3, x19, 8
<------>mov w2, 0
<------>add x3, x20, x3, lsl 8
.L93:
<------>cmp w2, w4
<------>bcc .L95
.L94:
<------>add x19, x19, 8
<------>mov x0, 400
<------>lsl x19, x19, 8
<------>bl __const_udelay
<------>ldr w0, [x20, x19]
<------>ldp x19, x20, [sp, 16]
<------>and w0, w0, 255
<------>ldp x29, x30, [sp], 32
<------>ret
.L90:
<------>ldrb w2, [x3, 14]
<------>b .L100
.L95:
<------>lsl w0, w2, 3
<------>add w2, w2, 1
<------>lsr w0, w1, w0
<------>and w0, w0, 255
<------>str w0, [x3, 4]
<------>b .L93
.L89:
<------>add x0, x19, 8
<------>mov w1, 112
<------>add x0, x20, x0, lsl 8
<------>str w1, [x0, 8]
<------>b .L94
<------>.size FlashReadStatusEN, .-FlashReadStatusEN
<------>.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
.L102:
<------>mov w1, w20
<------>mov w2, w21
<------>mov w0, w19
<------>bl FlashReadStatusEN
<------>mov w1, w0
<------>cmp w0, 255
<------>beq .L102
<------>tbnz x1, 6, .L101
<------>mov x1, 3
<------>mov x0, 1
<------>bl usleep_range
<------>b .L102
.L101:
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FlashWaitReadyEN, .-FlashWaitReadyEN
<------>.align 2
<------>.global FlashScheduleEnSet
<------>.type FlashScheduleEnSet, %function
FlashScheduleEnSet:
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>ldr w2, [x1, 1264]
<------>str w0, [x1, 1264]
<------>mov w0, w2
<------>ret
<------>.size FlashScheduleEnSet, .-FlashScheduleEnSet
<------>.align 2
<------>.global FlashGetPageSize
<------>.type FlashGetPageSize, %function
FlashGetPageSize:
<------>adrp x0, .LANCHOR0+88
<------>ldr x0, [x0, #:lo12:.LANCHOR0+88]
<------>ldrb w0, [x0, 9]
<------>ret
<------>.size FlashGetPageSize, .-FlashGetPageSize
<------>.align 2
<------>.global NandcReadDontCaseBusyEn
<------>.type NandcReadDontCaseBusyEn, %function
NandcReadDontCaseBusyEn:
<------>ret
<------>.size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
<------>.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
<------>.align 2
<------>.global NandcSetDdrPara
<------>.type NandcSetDdrPara, %function
NandcSetDdrPara:
<------>adrp x1, .LANCHOR0+136
<------>and w0, w0, 255
<------>lsl w2, w0, 8
<------>ldr x1, [x1, #:lo12:.LANCHOR0+136]
<------>orr w0, w2, w0, lsl 16
<------>orr w0, w0, 1
<------>str w0, [x1, 304]
<------>ret
<------>.size NandcSetDdrPara, .-NandcSetDdrPara
<------>.align 2
<------>.global NandcSetDdrDiv
<------>.type NandcSetDdrDiv, %function
NandcSetDdrDiv:
<------>adrp x1, .LANCHOR0+136
<------>and w0, w0, 255
<------>mov w2, 16640
<------>orr w0, w0, w2
<------>ldr x1, [x1, #:lo12:.LANCHOR0+136]
<------>str w0, [x1, 344]
<------>ret
<------>.size NandcSetDdrDiv, .-NandcSetDdrDiv
<------>.align 2
<------>.global NandcSetDdrMode
<------>.type NandcSetDdrMode, %function
NandcSetDdrMode:
<------>adrp x1, .LANCHOR0+136
<------>cmp w0, 0
<------>ldr x2, [x1, #:lo12:.LANCHOR0+136]
<------>ldr w1, [x2]
<------>and w3, w1, -8193
<------>orr w1, w1, 253952
<------>csel w1, w1, w3, ne
<------>str w1, [x2]
<------>ret
<------>.size NandcSetDdrMode, .-NandcSetDdrMode
<------>.align 2
<------>.global NandcSetMode
<------>.type NandcSetMode, %function
NandcSetMode:
<------>adrp x1, .LANCHOR0+136
<------>and w0, w0, 255
<------>tst w0, 6
<------>ldr x2, [x1, #:lo12:.LANCHOR0+136]
<------>ldr w1, [x2]
<------>beq .L118
<------>orr w1, w1, 24576
<------>tst x0, 4
<------>and w1, w1, -32769
<------>mov w0, 8322
<------>orr w1, w1, 196608
<------>str w0, [x2, 344]
<------>mov w0, 4099
<------>orr w3, w1, 32768
<------>movk w0, 0x10, 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]
.L120:
<------>mov w0, 0
<------>str w1, [x2]
<------>ret
.L118:
<------>and w1, w1, -8193
<------>b .L120
<------>.size NandcSetMode, .-NandcSetMode
<------>.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
<------>.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
<------>.align 2
<------>.global HynixSetRRPara
<------>.type HynixSetRRPara, %function
HynixSetRRPara:
<------>stp x29, x30, [sp, -96]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>and w23, w0, 255
<------>add x0, x20, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>str x27, [sp, 80]
<------>and w27, w1, 255
<------>stp x25, x26, [sp, 64]
<------>mov x21, x2
<------>and w22, w3, 255
<------>ldr x1, [x0, 88]
<------>ldrb w1, [x1, 19]
<------>cmp w1, 6
<------>bne .L126
<------>ubfiz x19, x23, 6, 8
<------>add x0, x0, 1272
<------>add x19, x19, 20
<------>add x19, x19, w22, uxtw 2
.L133:
<------>add x19, x0, x19
.L127:
<------>sxtw x26, w23
<------>add x0, x20, :lo12:.LANCHOR0
<------>lsl x1, x26, 4
<------>and x27, x27, 255
<------>add x2, x0, x1
<------>mov x25, 0
<------>ldr x24, [x0, x1]
<------>mov w0, w23
<------>ldrb w5, [x2, 8]
<------>bl NandcFlashCs
<------>ubfiz x5, x5, 8, 8
<------>add x24, x24, x5
<------>mov w0, 54
<------>str w0, [x24, 2056]
.L130:
<------>cmp x25, x27
<------>bne .L131
<------>add x20, x20, :lo12:.LANCHOR0
<------>mov w0, 22
<------>add x20, x20, x26
<------>str w0, [x24, 2056]
<------>mov w0, w23
<------>bl NandcFlashDeCs
<------>strb w22, [x20, 2128]
<------>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
.L126:
<------>cmp w1, 7
<------>bne .L128
<------>mov w19, 160
<------>mov x1, 28
<------>add x0, x0, 1272
<------>umaddl x1, w19, w23, x1
<------>mov w19, 10
<------>umaddl x19, w22, w19, x1
<------>b .L133
.L128:
<------>cmp w1, 8
<------>bne .L129
<------>add x0, x0, 1300
<------>add w19, w22, w22, lsl 2
<------>add x19, x0, w19, sxtw
<------>b .L127
.L129:
<------>and x19, x22, 255
<------>add x19, x19, 2
<------>add x19, x19, w23, uxtw 3
<------>add x19, x0, x19, lsl 3
<------>add x19, x19, 1276
<------>b .L127
.L131:
<------>ldrb w0, [x21, x25]
<------>str w0, [x24, 2052]
<------>mov x0, 1000
<------>bl __const_udelay
<------>ldrsb w0, [x19, x25]
<------>add x25, x25, 1
<------>str w0, [x24, 2048]
<------>b .L130
<------>.size HynixSetRRPara, .-HynixSetRRPara
<------>.align 2
<------>.global FlashSetReadRetryDefault
<------>.type FlashSetReadRetryDefault, %function
FlashSetReadRetryDefault:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>add x19, x19, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>ldr x0, [x19, 88]
<------>ldrb w0, [x0, 19]
<------>sub w0, w0, #1
<------>and w0, w0, 255
<------>cmp w0, 7
<------>bhi .L134
<------>add x21, x19, 2132
<------>add x22, x19, 1276
<------>mov x20, 0
.L137:
<------>lsl x1, x20, 3
<------>and w0, w20, 255
<------>ldrb w1, [x1, x21]
<------>cmp w1, 173
<------>bne .L136
<------>ldrb w1, [x19, 1273]
<------>mov w3, 0
<------>mov x2, x22
<------>bl HynixSetRRPara
.L136:
<------>add x20, x20, 1
<------>cmp x20, 4
<------>bne .L137
.L134:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
<------>.align 2
<------>.global FlashWaitCmdDone
<------>.type FlashWaitCmdDone, %function
FlashWaitCmdDone:
<------>and x5, x0, 255
<------>mov x0, 24
<------>stp x29, x30, [sp, -32]!
<------>adrp x4, .LANCHOR0
<------>add x4, x4, :lo12:.LANCHOR0
<------>mul x0, x5, x0
<------>add x29, sp, 0
<------>add x1, x4, 2164
<------>stp x19, x20, [sp, 16]
<------>add x19, x1, x0
<------>ldr x2, [x19, 8]
<------>cbz x2, .L143
<------>ldrb w20, [x1, x0]
<------>mov w0, w20
<------>bl NandcFlashCs
<------>add x4, x4, 1232
<------>ldr w1, [x19, 4]
<------>ldr w0, [x4, x5, 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]
<------>str xzr, [x19, 8]
<------>ldr x1, [x19, 16]
<------>cbz x1, .L143
<------>str w0, [x1]
<------>str xzr, [x19, 16]
.L143:
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FlashWaitCmdDone, .-FlashWaitCmdDone
<------>.align 2
<------>.global NandcDelayns
<------>.type NandcDelayns, %function
NandcDelayns:
<------>stp x29, x30, [sp, -16]!
<------>uxtw x0, w0
<------>add x29, sp, 0
<------>bl __ndelay
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size NandcDelayns, .-NandcDelayns
<------>.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
<------>movk w19, 0x1, lsl 16
<------>ldr x20, [x1, x0]
.L153:
<------>ldr w0, [x20]
<------>str w0, [x29, 40]
<------>ldr w0, [x29, 40]
<------>tbnz x0, 9, .L154
<------>mov x0, 50
<------>bl __const_udelay
<------>subs w19, w19, #1
<------>bne .L153
<------>mov w0, -1
.L151:
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L154:
<------>mov w0, 0
<------>b .L151
<------>.size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay
<------>.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, 650
<------>bl __const_udelay
.L159:
<------>ldr w0, [x20]
<------>str w0, [x29, 40]
<------>ldr w0, [x29, 40]
<------>tbnz x0, 9, .L160
<------>mov x1, 2
<------>mov x0, 1
<------>bl usleep_range
<------>subs w19, w19, #1
<------>bne .L159
<------>mov w0, -1
.L157:
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L160:
<------>mov w0, 0
<------>b .L157
<------>.size NandcWaitFlashReady, .-NandcWaitFlashReady
<------>.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
<------>bl NandcFlashDeCs
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FlashReset, .-FlashReset
<------>.align 2
<------>.global flash_enter_slc_mode
<------>.type flash_enter_slc_mode, %function
flash_enter_slc_mode:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>add x4, x21, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>str x23, [sp, 48]
<------>and w22, w0, 255
<------>ldrb w0, [x4, 204]
<------>cbz w0, .L165
<------>mov w0, w22
<------>bl NandcFlashCs
<------>sxtw x0, w22
<------>lsl x1, x0, 4
<------>add x0, x4, x0, lsl 3
<------>add x2, x4, x1
<------>ldrb w0, [x0, 2132]
<------>ldr x23, [x4, x1]
<------>ldrb w19, [x2, 8]
<------>cmp w0, 44
<------>bne .L167
<------>ubfiz x20, x19, 8, 8
<------>mov w0, 239
<------>add x20, x23, x20
<------>str w0, [x20, 2056]
<------>mov w0, 145
<------>str w0, [x20, 2052]
<------>mov x0, 250
<------>bl __const_udelay
<------>str wzr, [x20, 2048]
<------>mov w0, 1
<------>str w0, [x20, 2048]
<------>str wzr, [x20, 2048]
<------>mov x0, 500
<------>str wzr, [x20, 2048]
<------>bl __const_udelay
.L167:
<------>add x19, x19, 8
<------>mov w0, w22
<------>add x19, x23, x19, lsl 8
<------>bl NandcWaitFlashReadyNoDelay
<------>mov w0, 218
<------>add x21, x21, :lo12:.LANCHOR0
<------>str w0, [x19, 8]
<------>mov w0, w22
<------>bl NandcWaitFlashReady
<------>mov w0, 2
<------>strb w0, [x21, 2356]
.L165:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldr x23, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size flash_enter_slc_mode, .-flash_enter_slc_mode
<------>.align 2
<------>.global flash_exit_slc_mode
<------>.type flash_exit_slc_mode, %function
flash_exit_slc_mode:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>add x4, x21, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>str x23, [sp, 48]
<------>and w22, w0, 255
<------>ldrb w0, [x4, 204]
<------>cbz w0, .L172
<------>mov w0, w22
<------>bl NandcFlashCs
<------>sxtw x0, w22
<------>lsl x1, x0, 4
<------>add x0, x4, x0, lsl 3
<------>add x2, x4, x1
<------>ldrb w0, [x0, 2132]
<------>ldr x23, [x4, x1]
<------>ldrb w19, [x2, 8]
<------>cmp w0, 44
<------>bne .L174
<------>ubfiz x20, x19, 8, 8
<------>mov w0, 239
<------>add x20, x23, x20
<------>str w0, [x20, 2056]
<------>mov w0, 145
<------>str w0, [x20, 2052]
<------>mov x0, 250
<------>bl __const_udelay
<------>mov w0, 2
<------>str w0, [x20, 2048]
<------>mov w0, 1
<------>str w0, [x20, 2048]
<------>str wzr, [x20, 2048]
<------>mov x0, 500
<------>str wzr, [x20, 2048]
<------>bl __const_udelay
.L174:
<------>add x19, x19, 8
<------>mov w0, w22
<------>add x19, x23, x19, lsl 8
<------>bl NandcWaitFlashReadyNoDelay
<------>add x21, x21, :lo12:.LANCHOR0
<------>mov w0, 223
<------>str w0, [x19, 8]
<------>mov w0, w22
<------>bl NandcWaitFlashReady
<------>strb wzr, [x21, 2356]
.L172:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldr x23, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size flash_exit_slc_mode, .-flash_exit_slc_mode
<------>.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
<------>and w0, w2, 1
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FlashEraseBlock, .-FlashEraseBlock
<------>.align 2
<------>.global FlashSetInterfaceMode
<------>.type FlashSetInterfaceMode, %function
FlashSetInterfaceMode:
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>stp x29, x30, [sp, -16]!
<------>add x6, x1, 8
<------>add x3, x1, 2132
<------>mov x5, 0
<------>add x29, sp, 0
<------>ldrb w2, [x1, 2357]
<------>mov w12, 69
<------>mov w8, 239
<------>mov w9, 128
<------>and w11, w2, 4
<------>and w7, w2, 1
<------>mov w10, 1
<------>mov w13, 35
<------>mov w14, 32
<------>mov w15, 5
<------>mov w16, 44
.L191:
<------>ldrb w2, [x5, x3]
<------>ldrb w4, [x6]
<------>cmp w2, 152
<------>ccmp w2, w12, 4, ne
<------>beq .L182
<------>cmp w2, 173
<------>ccmp w2, w16, 4, ne
<------>bne .L183
.L182:
<------>cmp w0, 1
<------>ldr x1, [x6, -8]
<------>bne .L184
<------>cbz w7, .L183
<------>ubfiz x4, x4, 8, 8
<------>cmp w2, 173
<------>add x1, x1, x4
<------>str w8, [x1, 2056]
<------>bne .L185
<------>str w0, [x1, 2052]
.L203:
<------>str wzr, [x1, 2048]
<------>b .L189
.L185:
<------>cmp w2, 44
<------>bne .L187
<------>str w0, [x1, 2052]
<------>str w15, [x1, 2048]
.L189:
<------>str wzr, [x1, 2048]
<------>str wzr, [x1, 2048]
<------>str wzr, [x1, 2048]
.L183:
<------>add x5, x5, 8
<------>add x6, x6, 16
<------>cmp x5, 32
<------>bne .L191
<------>mov w0, 0
<------>bl NandcWaitFlashReady
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L187:
<------>str w9, [x1, 2052]
<------>str w0, [x1, 2048]
<------>b .L189
.L184:
<------>cbz w11, .L183
<------>ubfiz x4, x4, 8, 8
<------>cmp w2, 173
<------>add x1, x1, x4
<------>str w8, [x1, 2056]
<------>bne .L188
<------>str w10, [x1, 2052]
<------>str w14, [x1, 2048]
<------>b .L189
.L188:
<------>cmp w2, 44
<------>bne .L190
<------>str w10, [x1, 2052]
<------>str w13, [x1, 2048]
<------>b .L189
.L190:
<------>str w9, [x1, 2052]
<------>b .L203
<------>.size FlashSetInterfaceMode, .-FlashSetInterfaceMode
<------>.align 2
<------>.global FlashReadSpare
<------>.type FlashReadSpare, %function
FlashReadSpare:
<------>stp x29, x30, [sp, -32]!
<------>and w0, w0, 255
<------>sbfiz x5, x0, 4, 32
<------>adrp x4, .LANCHOR0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x20, x2
<------>adrp x2, .LANCHOR1+481
<------>add x4, x4, :lo12:.LANCHOR0
<------>ldrb w3, [x2, #:lo12:.LANCHOR1+481]
<------>add x2, x4, x5
<------>ldrb w19, [x2, 8]
<------>lsl w3, w3, 9
<------>ldr x2, [x4, x5]
<------>add x19, x2, x19, lsl 8
<------>and w2, w1, 255
<------>str wzr, [x19, 2056]
<------>str w3, [x19, 2052]
<------>lsr w3, w3, 8
<------>str w3, [x19, 2052]
<------>str w2, [x19, 2052]
<------>lsr w2, w1, 8
<------>str w2, [x19, 2052]
<------>lsr w1, w1, 16
<------>str w1, [x19, 2052]
<------>mov w1, 48
<------>str w1, [x19, 2056]
<------>bl NandcWaitFlashReady
<------>ldr w0, [x19, 2048]
<------>strb w0, [x20]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FlashReadSpare, .-FlashReadSpare
<------>.align 2
<------>.global SandiskProgTestBadBlock
<------>.type SandiskProgTestBadBlock, %function
SandiskProgTestBadBlock:
<------>stp x29, x30, [sp, -32]!
<------>and w0, w0, 255
<------>sbfiz x3, x0, 4, 32
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>add x29, sp, 0
<------>add x4, x2, x3
<------>str x19, [sp, 16]
<------>ldr x2, [x2, x3]
<------>ldrb w19, [x4, 8]
<------>add x19, x2, x19, lsl 8
<------>mov w2, 162
<------>str w2, [x19, 2056]
<------>mov w2, 128
<------>str w2, [x19, 2056]
<------>and w2, w1, 255
<------>str wzr, [x19, 2052]
<------>str wzr, [x19, 2052]
<------>str w2, [x19, 2052]
<------>lsr w2, w1, 8
<------>str w2, [x19, 2052]
<------>lsr w1, w1, 16
<------>str w1, [x19, 2052]
<------>mov w1, 16
<------>str w1, [x19, 2056]
<------>bl NandcWaitFlashReady
<------>mov w0, 112
<------>str w0, [x19, 2056]
<------>mov x0, 400
<------>bl __const_udelay
<------>ldr w0, [x19, 2048]
<------>ldr x19, [sp, 16]
<------>and w0, w0, 1
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
<------>.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, 1000
<------>bl __const_udelay
<------>add w1, w19, 1
<------>mov w0, 5
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>umull x1, w1, w0
<------>adrp x0, .LANCHOR1
<------>add x0, x0, :lo12:.LANCHOR1
<------>add x3, x0, 256
<------>add x0, x0, 352
<------>add x3, x3, x1
<------>add x0, x0, x1
<------>mov x1, 0
.L209:
<------>ldrb w4, [x2, 129]
<------>cmp w4, w1
<------>bhi .L212
<------>mov w0, 0
<------>bl NandcWaitFlashReady
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L212:
<------>ldrb w4, [x2, 128]
<------>cmp w4, 67
<------>bne .L210
<------>ldrsb w4, [x0, x1]
.L214:
<------>add x1, x1, 1
<------>str w4, [x20]
<------>b .L209
.L210:
<------>ldrsb w4, [x3, x1]
<------>b .L214
<------>.size SandiskSetRRPara, .-SandiskSetRRPara
<------>.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, 1000
<------>bl __const_udelay
<------>str w20, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config
<------>.align 2
<------>.global FlashEraseSLc2KBlocks
<------>.type FlashEraseSLc2KBlocks, %function
FlashEraseSLc2KBlocks:
<------>stp x29, x30, [sp, -80]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>mov w23, 56
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>umaddl x23, w1, w23, x0
<------>add x21, x21, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>and w22, w1, 255
<------>mov x20, x0
<------>add x24, x21, 2164
.L218:
<------>cmp x20, x23
<------>bne .L223
<------>ldp x19, x20, [sp, 16]
<------>mov w0, 0
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 80
<------>ret
.L223:
<------>mov w1, 0
<------>mov w4, w22
<------>add x3, x29, 76
<------>add x2, x29, 72
<------>mov x0, x20
<------>bl LogAddr2PhyAddr
<------>ldrb w1, [x21, 2358]
<------>ldr w0, [x29, 76]
<------>cmp w1, w0
<------>bhi .L219
<------>mov w0, -1
<------>str w0, [x20]
.L220:
<------>sub w22, w22, #1
<------>add x20, x20, 56
<------>and w22, w22, 255
<------>b .L218
.L219:
<------>uxtw x0, w0
<------>add x1, x21, x0
<------>ldrb w19, [x1, 2360]
<------>mov x1, 24
<------>mul x0, x0, x1
<------>strb w19, [x24, 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]
<------>mov w2, 0
<------>ldr w1, [x29, 72]
<------>ldr w0, [x21, 76]
<------>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, .L221
<------>mov w0, -1
<------>str w0, [x20]
.L221:
<------>ldr w0, [x20]
<------>cmn w0, #1
<------>bne .L222
<------>ldr w1, [x29, 72]
<------>adrp x0, .LC0
<------>add x0, x0, :lo12:.LC0
<------>bl printk
.L222:
<------>mov w0, w19
<------>bl NandcFlashDeCs
<------>b .L220
<------>.size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks
<------>.align 2
<------>.global FlashEraseBlocks
<------>.type FlashEraseBlocks, %function
FlashEraseBlocks:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>add x21, x19, :lo12:.LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>mov w24, w2
<------>stp x27, x28, [sp, 80]
<------>mov w27, w1
<------>stp x25, x26, [sp, 64]
<------>ldrb w1, [x21, 72]
<------>cbnz w1, .L229
<------>mov x20, x0
<------>add x26, x21, 2164
<------>mov w22, 0
<------>mov w28, 56
.L230:
<------>cmp w22, w24
<------>bcc .L239
<------>add x19, x19, :lo12:.LANCHOR0
<------>mov x21, 0
<------>add x22, x19, 2164
<------>mov x23, 24
.L240:
<------>ldrb w0, [x19, 2358]
<------>cmp w0, w21
<------>bhi .L242
<------>ldr w0, [x19, 2372]
<------>cbnz w0, .L243
.L244:
<------>mov w0, 0
<------>b .L228
.L229:
<------>mov w1, w2
<------>bl FlashEraseSLc2KBlocks
.L228:
<------>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
.L239:
<------>umull x12, w22, w28
<------>mov w1, 0
<------>sub w4, w24, w22
<------>add x3, x29, 108
<------>add x23, x20, x12
<------>add x2, x29, 104
<------>mov x0, x23
<------>bl LogAddr2PhyAddr
<------>mov w25, w0
<------>ldrb w1, [x21, 2358]
<------>ldr w0, [x29, 108]
<------>cmp w1, w0
<------>bhi .L232
<------>mov w0, -1
<------>str w0, [x20, x12]
.L233:
<------>add w22, w22, 1
<------>b .L230
.L232:
<------>ldrb w1, [x21, 2368]
<------>mov x2, 24
<------>cmp w1, 0
<------>uxtw x1, w0
<------>csel w25, w25, wzr, ne
<------>madd x1, x1, x2, x26
<------>ldr x1, [x1, 8]
<------>cbz x1, .L235
<------>bl FlashWaitCmdDone
.L235:
<------>ldp w2, w1, [x29, 104]
<------>mov x0, 24
<------>madd x0, x1, x0, x26
<------>str w2, [x0, 4]
<------>stp x23, xzr, [x0, 8]
<------>cbz w25, .L236
<------>add w2, w22, 1
<------>umaddl x2, w2, w28, x20
<------>str x2, [x0, 16]
.L236:
<------>add x0, x21, x1
<------>ldrb w23, [x0, 2360]
<------>mov x0, 24
<------>mul x1, x1, x0
<------>mov w0, w23
<------>strb w23, [x26, x1]
<------>bl NandcFlashCs
<------>cmp w27, 1
<------>bne .L237
<------>ldrb w0, [x21, 204]
<------>cbz w0, .L237
<------>mov w0, w23
<------>bl flash_enter_slc_mode
.L238:
<------>ldr w1, [x29, 108]
<------>add x0, x21, 1232
<------>add w22, w22, w25
<------>ldr w0, [x0, x1, lsl 2]
<------>ldr w1, [x29, 104]
<------>cmp w0, 0
<------>mov w0, w23
<------>cset w2, ne
<------>bl FlashWaitReadyEN
<------>ldr w1, [x29, 104]
<------>mov w2, w25
<------>mov w0, w23
<------>bl FlashEraseCmd
<------>mov w0, w23
<------>bl NandcFlashDeCs
<------>b .L233
.L237:
<------>mov w0, w23
<------>bl flash_exit_slc_mode
<------>b .L238
.L242:
<------>mov w0, w21
<------>bl FlashWaitCmdDone
<------>cmp w27, 1
<------>bne .L241
<------>ldrb w0, [x19, 204]
<------>cbz w0, .L241
<------>mul x0, x21, x23
<------>ldrb w0, [x0, x22]
<------>bl flash_exit_slc_mode
.L241:
<------>add x21, x21, 1
<------>b .L240
.L243:
<------>ldrb w0, [x19, 2132]
<------>cmp w0, 69
<------>bne .L244
<------>mov w1, 56
<------>mov x0, x20
<------>umaddl x24, w24, w1, x20
.L245:
<------>cmp x24, x0
<------>beq .L244
<------>str wzr, [x0], 56
<------>b .L245
<------>.size FlashEraseBlocks, .-FlashEraseBlocks
<------>.align 2
<------>.global FlashReadDpCmd
<------>.type FlashReadDpCmd, %function
FlashReadDpCmd:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>and w22, w0, 255
<------>adrp x0, .LANCHOR0
<------>add x4, x0, :lo12:.LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>mov w21, w1
<------>stp x19, x20, [sp, 16]
<------>sbfiz x1, x22, 4, 32
<------>and w24, w2, 255
<------>lsr w23, w2, 8
<------>lsr w20, w2, 16
<------>ldr x2, [x4, 88]
<------>add x3, x4, x1
<------>ldr x5, [x4, x1]
<------>ldrb w1, [x4, 112]
<------>and w7, w21, 255
<------>lsr w6, w21, 8
<------>cmp w1, 1
<------>ldrb w19, [x3, 8]
<------>lsr w1, w21, 16
<------>ldrb w2, [x2, 7]
<------>bne .L261
<------>cmp w2, 1
<------>bne .L262
<------>sxtw x3, w19
<------>mov w2, 38
<------>add x3, x3, 8
<------>add x3, x5, x3, lsl 8
<------>str w2, [x3, 8]
.L262:
<------>add x0, x0, :lo12:.LANCHOR0
<------>add x19, x5, x19, lsl 8
<------>add x0, x0, 96
<------>ldrb w2, [x0, 8]
<------>str w2, [x19, 2056]
<------>str wzr, [x19, 2052]
<------>str wzr, [x19, 2052]
<------>str w7, [x19, 2052]
<------>str w6, [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]
.L266:
<------>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
<------>bl FlashSetRandomizer
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
.L261:
<------>cmp w2, 1
<------>bne .L264
<------>sxtw x3, w19
<------>mov w2, 38
<------>add x3, x3, 8
<------>add x3, x5, x3, lsl 8
<------>str w2, [x3, 8]
.L264:
<------>add x0, x0, :lo12:.LANCHOR0
<------>add x19, x5, x19, lsl 8
<------>add x0, x0, 96
<------>ldrb w2, [x0, 8]
<------>str w2, [x19, 2056]
<------>str w7, [x19, 2052]
<------>str w6, [x19, 2052]
<------>ldrb w0, [x0, 9]
<------>str w1, [x19, 2052]
<------>str w0, [x19, 2056]
<------>b .L266
<------>.size FlashReadDpCmd, .-FlashReadDpCmd
<------>.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
<------>stp x19, x20, [sp, 16]
<------>bl NandcWaitFlashReady
<------>bl FlashSetReadRetryDefault
<------>adrp x19, .LANCHOR0
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldr w0, [x0, 2376]
<------>cbz w0, .L268
<------>mov w0, 0
<------>bl flash_enter_slc_mode
.L269:
<------>add x20, x19, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 2380]
<------>cbz w0, .L270
<------>ldrb w0, [x20, 2357]
<------>tbz x0, 0, .L270
<------>mov w0, 1
<------>bl FlashSetInterfaceMode
<------>mov w0, 1
<------>bl NandcSetMode
<------>strb wzr, [x20, 2380]
.L270:
<------>ldr x0, [x19, #:lo12:.LANCHOR0]
<------>str wzr, [x0, 336]
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L268:
<------>mov w0, 0
<------>bl flash_exit_slc_mode
<------>b .L269
<------>.size ftl_flash_de_init, .-ftl_flash_de_init
<------>.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
<------>.align 2
<------>.global NandcTimeCfg
<------>.type NandcTimeCfg, %function
NandcTimeCfg:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>mov w19, w0
<------>mov w0, 0
<------>bl rknand_get_clk_rate
<------>mov w1, 16960
<------>movk w1, 0xf, lsl 16
<------>sdiv w0, w0, w1
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>cmp w0, 250
<------>ble .L280
<------>ldr x0, [x1, 136]
<------>mov w1, 8354
.L288:
<------>str w1, [x0, 4]
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L280:
<------>cmp w0, 220
<------>ble .L282
<------>ldr x0, [x1, 136]
.L289:
<------>mov w1, 8322
<------>b .L288
.L282:
<------>cmp w0, 185
<------>ble .L283
<------>ldr x0, [x1, 136]
<------>mov w1, 4226
<------>b .L288
.L283:
<------>cmp w0, 160
<------>ldr x0, [x1, 136]
<------>ble .L284
<------>mov w1, 4194
<------>b .L288
.L284:
<------>cmp w19, 35
<------>bhi .L285
<------>mov w1, 4193
<------>b .L288
.L285:
<------>cmp w19, 99
<------>bhi .L289
<------>mov w1, 4225
<------>b .L288
<------>.size NandcTimeCfg, .-NandcTimeCfg
<------>.align 2
<------>.global FlashTimingCfg
<------>.type FlashTimingCfg, %function
FlashTimingCfg:
<------>stp x29, x30, [sp, -16]!
<------>mov w1, -4193
<------>add w2, w0, w1
<------>mov w3, -4225
<------>add x29, sp, 0
<------>add w1, w0, w3
<------>cmp w2, 1
<------>ccmp w1, 1, 0, hi
<------>bls .L291
<------>mov w1, 8322
<------>cmp w0, w1
<------>bne .L292
.L291:
<------>adrp x1, .LANCHOR0+136
<------>ldr x1, [x1, #:lo12:.LANCHOR0+136]
<------>str w0, [x1, 4]
.L292:
<------>adrp x0, .LANCHOR1+493
<------>ldrb w0, [x0, #:lo12:.LANCHOR1+493]
<------>bl NandcTimeCfg
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FlashTimingCfg, .-FlashTimingCfg
<------>.align 2
<------>.global NandcInit
<------>.type NandcInit, %function
NandcInit:
<------>stp x29, x30, [sp, -32]!
<------>mov w2, 1
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>add x1, x19, :lo12:.LANCHOR0
<------>str x0, [x19, #:lo12:.LANCHOR0]
<------>str w2, [x1, 24]
<------>mov w2, 2
<------>str wzr, [x1, 8]
<------>str w2, [x1, 40]
<------>mov w2, 3
<------>str x0, [x1, 16]
<------>str x0, [x1, 32]
<------>str x0, [x1, 48]
<------>str x0, [x1, 136]
<------>str w2, [x1, 56]
<------>ldr w2, [x0]
<------>ubfx x3, x2, 13, 1
<------>str w3, [x1, 2384]
<------>ldr w3, [x0, 352]
<------>and w2, w2, 245760
<------>orr w2, w2, 256
<------>ubfx x3, x3, 16, 4
<------>str w3, [x1, 2388]
<------>ldr w3, [x0, 352]
<------>str w3, [x1, 2392]
<------>cmp w3, 2049
<------>bne .L295
<------>mov w3, 8
<------>str w3, [x1, 2388]
.L295:
<------>add x19, x19, :lo12:.LANCHOR0
<------>str w2, [x0]
<------>ldr x0, [x19, 136]
<------>str wzr, [x0, 336]
<------>mov w0, 40
<------>bl NandcTimeCfg
<------>ldr x0, [x19, 136]
<------>mov w1, 8322
<------>str w1, [x0, 344]
<------>mov w1, 6145
<------>movk w1, 0x18, lsl 16
<------>str w1, [x0, 304]
<------>mov w0, 36864
<------>bl ftl_malloc
<------>str wzr, [x19, 2448]
<------>str x0, [x19, 2400]
<------>str x0, [x19, 2408]
<------>add x0, x0, 32768
<------>str wzr, [x19, 2456]
<------>str x0, [x19, 2416]
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size NandcInit, .-NandcInit
<------>.align 2
<------>.global NandcGetTimeCfg
<------>.type NandcGetTimeCfg, %function
NandcGetTimeCfg:
<------>adrp x4, .LANCHOR0
<------>add x4, x4, :lo12:.LANCHOR0
<------>ldr x5, [x4, 136]
<------>ldr w5, [x5, 4]
<------>str w5, [x0]
<------>ldr x0, [x4, 136]
<------>ldr w0, [x0]
<------>str w0, [x1]
<------>ldr x0, [x4, 136]
<------>ldr w0, [x0, 304]
<------>str w0, [x2]
<------>ldr x0, [x4, 136]
<------>ldr w1, [x0, 308]
<------>ldr w0, [x0, 344]
<------>and w1, w1, 255
<------>orr w0, w1, w0, lsl 16
<------>str w0, [x3]
<------>ret
<------>.size NandcGetTimeCfg, .-NandcGetTimeCfg
<------>.align 2
<------>.global NandcBchSel
<------>.type NandcBchSel, %function
NandcBchSel:
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>and w0, w0, 255
<------>mov w3, 1
<------>cmp w0, 16
<------>ldr x2, [x1, 136]
<------>str w0, [x1, 2460]
<------>mov w1, 4096
<------>str w3, [x2, 8]
<------>bne .L299
.L302:
<------>and w1, w1, -17
.L300:
<------>orr w1, w1, 1
<------>str w1, [x2, 12]
<------>ret
.L299:
<------>cmp w0, 24
<------>bne .L301
<------>orr w1, w1, 16
<------>b .L300
.L301:
<------>orr w1, w1, 262144
<------>cmp w0, 40
<------>orr w1, w1, 16
<------>bne .L300
<------>b .L302
<------>.size NandcBchSel, .-NandcBchSel
<------>.align 2
<------>.global FlashBchSel
<------>.type FlashBchSel, %function
FlashBchSel:
<------>stp x29, x30, [sp, -16]!
<------>adrp x1, .LANCHOR0+2464
<------>and w0, w0, 255
<------>add x29, sp, 0
<------>strb w0, [x1, #:lo12:.LANCHOR0+2464]
<------>bl NandcBchSel
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FlashBchSel, .-FlashBchSel
<------>.align 2
<------>.global ftl_flash_resume
<------>.type ftl_flash_resume, %function
ftl_flash_resume:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>add x0, x20, :lo12:.LANCHOR0
<------>str x21, [sp, 32]
<------>add x19, x0, 2132
<------>mov x21, 0
<------>ldr x1, [x0, 136]
<------>ldr w2, [x0, 144]
<------>str w2, [x1]
<------>ldr w2, [x0, 148]
<------>ldr x1, [x0, 136]
<------>str w2, [x1, 4]
<------>ldr w2, [x0, 152]
<------>ldr x1, [x0, 136]
<------>str w2, [x1, 8]
<------>ldr w2, [x0, 156]
<------>str w2, [x1, 12]
<------>ldr w2, [x0, 160]
<------>str w2, [x1, 304]
<------>ldr w2, [x0, 164]
<------>str w2, [x1, 308]
<------>ldr w2, [x0, 168]
<------>str w2, [x1, 336]
<------>ldr w2, [x0, 172]
<------>str w2, [x1, 344]
.L310:
<------>lsl x0, x21, 3
<------>ldrb w0, [x0, x19]
<------>sub w0, w0, #1
<------>and w0, w0, 255
<------>cmp w0, 253
<------>bhi .L309
<------>mov w0, w21
<------>bl FlashReset
.L309:
<------>add x21, x21, 1
<------>cmp x21, 4
<------>bne .L310
<------>add x19, x20, :lo12:.LANCHOR0
<------>ldrb w0, [x19, 2380]
<------>cbz w0, .L311
<------>mov w0, 1
<------>bl NandcSetMode
<------>ldrb w0, [x19, 2357]
<------>bl FlashSetInterfaceMode
<------>ldrb w0, [x19, 2357]
<------>bl NandcSetMode
<------>ldr w0, [x19, 160]
<------>lsr w0, w0, 8
<------>bl NandcSetDdrPara
.L311:
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldr x0, [x20, 88]
<------>ldrb w0, [x0, 20]
<------>bl FlashBchSel
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size ftl_flash_resume, .-ftl_flash_resume
<------>.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
<------>.align 2
<------>.global rk_nandc_flash_ready
<------>.type rk_nandc_flash_ready, %function
rk_nandc_flash_ready:
<------>ldr w1, [x0, 368]
<------>orr w1, w1, 2
<------>str w1, [x0, 368]
<------>ldr w1, [x0, 364]
<------>and w1, w1, -3
<------>str w1, [x0, 364]
<------>ret
<------>.size rk_nandc_flash_ready, .-rk_nandc_flash_ready
<------>.align 2
<------>.global NandcIqrWaitFlashReady
<------>.type NandcIqrWaitFlashReady, %function
NandcIqrWaitFlashReady:
<------>ret
<------>.size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
<------>.align 2
<------>.global rk_nandc_flash_xfer_completed
<------>.type rk_nandc_flash_xfer_completed, %function
rk_nandc_flash_xfer_completed:
<------>ldr w1, [x0, 368]
<------>orr w1, w1, 1
<------>str w1, [x0, 368]
<------>ldr w1, [x0, 364]
<------>and w1, w1, -2
<------>str w1, [x0, 364]
<------>ret
<------>.size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
<------>.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
<------>.align 2
<------>.global NandcSendDumpDataDone
<------>.type NandcSendDumpDataDone, %function
NandcSendDumpDataDone:
<------>sub sp, sp, #16
.L324:
<------>ldr w1, [x0, 8]
<------>str w1, [sp, 8]
<------>ldr w1, [sp, 8]
<------>tbz x1, 20, .L324
<------>add sp, sp, 16
<------>ret
<------>.size NandcSendDumpDataDone, .-NandcSendDumpDataDone
<------>.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 x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>and w24, w1, 255
<------>add x1, x19, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>str x25, [sp, 64]
<------>add x6, x1, x0
<------>ubfiz w20, w24, 1, 1
<------>ldr x21, [x1, x0]
<------>orr w20, w20, 8
<------>ldrb w0, [x6, 8]
<------>mov w6, 16
<------>ldr w23, [x21, 12]
<------>bfi w23, w6, 8, 8
<------>and w23, w23, -9
<------>bfi w23, w0, 5, 3
<------>mov w0, 1
<------>bfi w20, w0, 5, 2
<------>ldr w0, [x1, 2388]
<------>orr w20, w20, 536870912
<------>orr w20, w20, 1024
<------>cmp w0, 3
<------>bfi w20, w3, 4, 1
<------>bls .L329
<------>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 .L330
<------>and w2, w2, 255
<------>cbnz w24, .L331
.L339:
<------>add w2, w2, 1
<------>asr w2, w2, 1
<------>bfi w20, w2, 22, 6
<------>cbz x4, .L332
<------>mov x0, x4
.L333:
<------>add x19, x19, :lo12:.LANCHOR0
<------>ubfx x25, x20, 22, 5
<------>mov x22, x4
<------>mov w2, w24
<------>ldr x1, [x19, 2416]
<------>str x1, [x19, 2432]
<------>lsl w1, w25, 10
<------>str x0, [x19, 2424]
<------>bl rknand_dma_map_single
<------>str w0, [x19, 2440]
<------>lsl w1, w25, 7
<------>ldr x0, [x19, 2432]
<------>mov w2, w24
<------>bl rknand_dma_map_single
<------>str w0, [x19, 2444]
<------>mov w0, 1
<------>str w0, [x19, 2448]
<------>ldr w0, [x19, 2440]
<------>mov w1, 16
<------>str w0, [x21, 20]
<------>tst x22, 3
<------>ldr w0, [x19, 2444]
<------>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 .L340
<------>ldr w0, [x29, 88]
<------>mov w1, 2
<------>bfi w0, w1, 3, 3
<------>str w0, [x29, 88]
.L340:
<------>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]
.L330:
<------>ldr w0, [x29, 88]
<------>str w0, [x21, 16]
.L329:
<------>str w23, [x21, 12]
<------>str w20, [x21, 8]
<------>orr w20, w20, 4
<------>str w20, [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
.L331:
<------>ldr w0, [x1, 2460]
<------>mov w6, 64
<------>lsr w9, w2, 1
<------>mov x8, x5
<------>cmp w0, 25
<------>mov w0, 128
<------>csel w6, w6, w0, cc
<------>mov w7, 0
<------>mov w3, 0
<------>mov w10, -1
.L335:
<------>cmp w3, w9
<------>bcs .L339
<------>lsr w0, w7, 2
<------>cbz x5, .L336
<------>ldr x11, [x1, 2416]
<------>lsl w0, w0, 2
<------>ldr w12, [x8], 4
<------>str w12, [x11, x0]
.L337:
<------>add w3, w3, 1
<------>add w7, w7, w6
<------>b .L335
.L336:
<------>ldr x11, [x1, 2416]
<------>lsl w0, w0, 2
<------>str w10, [x11, x0]
<------>b .L337
.L332:
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldr x0, [x0, 2408]
<------>b .L333
<------>.size NandcXferStart, .-NandcXferStart
<------>.align 2
<------>.global Ftl_log2
<------>.type Ftl_log2, %function
Ftl_log2:
<------>mov w2, 1
<------>mov w1, 0
.L347:
<------>cmp w2, w0
<------>bls .L348
<------>sub w0, w1, #1
<------>ret
.L348:
<------>add w1, w1, 1
<------>lsl w2, w2, 1
<------>and w1, w1, 65535
<------>b .L347
<------>.size Ftl_log2, .-Ftl_log2
<------>.align 2
<------>.global FtlPrintInfo
<------>.type FtlPrintInfo, %function
FtlPrintInfo:
<------>ret
<------>.size FtlPrintInfo, .-FtlPrintInfo
<------>.align 2
<------>.global FtlSysBlkNumInit
<------>.type FtlSysBlkNumInit, %function
FtlSysBlkNumInit:
<------>and w0, w0, 65535
<------>mov w1, 24
<------>cmp w0, 24
<------>csel w0, w0, w1, cs
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>and w0, w0, 65535
<------>ldrh w2, [x1, 2472]
<------>ldrh w3, [x1, 2482]
<------>str w0, [x1, 2468]
<------>mul w2, w2, w0
<------>sub w0, w3, w0
<------>strh w0, [x1, 2480]
<------>ldr w0, [x1, 2488]
<------>str w2, [x1, 2476]
<------>sub w2, w0, w2
<------>mov w0, 0
<------>str w2, [x1, 2484]
<------>ret
<------>.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
<------>.align 2
<------>.global FtlConstantsInit
<------>.type FtlConstantsInit, %function
FtlConstantsInit:
<------>mov x7, x0
<------>stp x29, x30, [sp, -16]!
<------>adrp x5, .LANCHOR0
<------>add x1, x5, :lo12:.LANCHOR0
<------>add x29, sp, 0
<------>ldrh w9, [x0, 8]
<------>add x1, x1, 2504
<------>ldrh w2, [x0, 10]
<------>mov x3, 0
<------>ldrh w0, [x0, 12]
<------>ldrh w4, [x7, 14]
<------>strh w9, [x1, -12]
<------>strh w2, [x1, -10]
<------>strh w0, [x1, -8]
<------>strh w4, [x1, -22]
.L352:
<------>strb w3, [x3, x1]
<------>add x3, x3, 1
<------>cmp x3, 32
<------>bne .L352
<------>ldrh w3, [x7, 20]
<------>ldrb w1, [x7, 15]
<------>cmp w3, w1
<------>bcs .L353
<------>and w11, w0, 255
<------>add x8, x5, :lo12:.LANCHOR0
<------>mul w13, w0, w2
<------>ubfiz w12, w11, 1, 7
<------>add x8, x8, 2504
<------>mov w3, 0
.L354:
<------>cmp w3, w0
<------>bcs .L356
<------>and w1, w3, 255
<------>mov w6, w3
<------>mov w10, 0
<------>b .L357
.L355:
<------>add w14, w13, w6
<------>strb w1, [x8, w6, uxtw]
<------>add w15, w11, w1
<------>add w1, w12, w1
<------>add w10, w10, 1
<------>and w1, w1, 255
<------>add w6, w6, w0
<------>strb w15, [x8, x14]
.L357:
<------>cmp w10, w2
<------>bcc .L355
<------>add w3, w3, 1
<------>b .L354
.L356:
<------>add x1, x5, :lo12:.LANCHOR0
<------>ubfiz w2, w2, 1, 15
<------>lsr w4, w4, 1
<------>strh w2, [x1, 2494]
<------>strh w4, [x1, 2482]
.L353:
<------>add x1, x5, :lo12:.LANCHOR0
<------>mov w2, 5
<------>cmp w9, 1
<------>strh w2, [x1, 2536]
<------>strh wzr, [x1, 2538]
<------>bne .L358
<------>strh w9, [x1, 2536]
.L358:
<------>add x1, x5, :lo12:.LANCHOR0
<------>mov w2, 4352
<------>ldrb w11, [x1, 72]
<------>strh w2, [x1, 2540]
<------>cbz w11, .L359
<------>mov w2, 384
<------>strh w2, [x1, 2540]
.L359:
<------>add x4, x5, :lo12:.LANCHOR0
<------>ldrh w10, [x7, 16]
<------>ldrh w8, [x7, 20]
<------>ldrh w9, [x7, 18]
<------>ldrh w6, [x4, 2494]
<------>ldrh w3, [x4, 2482]
<------>strh w10, [x4, 2544]
<------>strh w9, [x4, 2546]
<------>mul w6, w0, w6
<------>strh w8, [x4, 2550]
<------>mul w0, w0, w3
<------>and w6, w6, 65535
<------>strh w0, [x4, 2542]
<------>strh w6, [x4, 2472]
<------>mul w0, w6, w10
<------>strh w0, [x4, 2548]
<------>mov w0, w8
<------>bl Ftl_log2
<------>and w2, w0, 65535
<------>strh w0, [x4, 2552]
<------>ubfiz w0, w8, 9, 7
<------>strh w0, [x4, 2554]
<------>ubfx w0, w0, 8, 8
<------>strh w0, [x4, 2556]
<------>cmp w3, 1024
<------>ldrh w0, [x7, 26]
<------>strh w0, [x4, 2558]
<------>mul w0, w6, w3
<------>str w0, [x4, 2488]
<------>bls .L360
<------>and w0, w3, 255
<------>strh w0, [x4, 2538]
.L360:
<------>add x1, x5, :lo12:.LANCHOR0
<------>ldrh w0, [x1, 2538]
<------>sub w0, w3, w0
<------>mul w0, w0, w6
<------>mul w0, w0, w8
<------>mul w8, w9, w8
<------>mul w0, w0, w10
<------>asr w0, w0, 11
<------>str w0, [x1, 2560]
<------>ldrh w0, [x1, 2540]
<------>lsl w0, w0, 3
<------>sdiv w0, w0, w8
<------>and w0, w0, 65535
<------>cmp w0, 4
<------>bls .L361
.L377:
<------>strh w0, [x1, 2564]
<------>cbz w11, .L363
<------>add x0, x5, :lo12:.LANCHOR0
<------>mov w1, 640
<------>strh w1, [x0, 2540]
.L363:
<------>add x1, x5, :lo12:.LANCHOR0
<------>lsl w3, w3, 6
<------>cmp w6, 1
<------>ldrh w0, [x1, 2540]
<------>asr w0, w0, w2
<------>add w2, w2, 9
<------>add w0, w0, 2
<------>strh w0, [x1, 2566]
<------>asr w3, w3, w2
<------>strh w3, [x1, 2568]
<------>and w3, w3, 65535
<------>mul w0, w6, w3
<------>add w3, w3, 8
<------>str w0, [x1, 2572]
<------>ldrh w0, [x1, 2564]
<------>udiv w0, w0, w6
<------>add w3, w0, w3
<------>beq .L364
.L378:
<------>add x4, x5, :lo12:.LANCHOR0
<------>str w3, [x1, 2468]
<------>ldrh w0, [x4, 2468]
<------>bl FtlSysBlkNumInit
<------>ldr w0, [x4, 2468]
<------>str w0, [x4, 2576]
<------>ldr w0, [x4, 2484]
<------>ldrh w1, [x4, 2544]
<------>ldrh w3, [x4, 2550]
<------>lsl w0, w0, 2
<------>ldrh w2, [x4, 2564]
<------>ldrb w7, [x4, 204]
<------>str wzr, [x4, 2584]
<------>mul w0, w0, w1
<------>ldrh w1, [x4, 2552]
<------>add w1, w1, 9
<------>lsr w0, w0, w1
<------>mov w1, 2048
<------>add w0, w0, 2
<------>sdiv w1, w1, w3
<------>and w0, w0, 65535
<------>strh w0, [x4, 2580]
<------>strh w1, [x4, 2582]
<------>add w1, w2, 3
<------>strh w1, [x4, 2564]
<------>ldr w1, [x4, 2572]
<------>add w6, w1, 3
<------>str w6, [x4, 2572]
<------>cbz w7, .L366
<------>add w1, w1, 5
<------>add w2, w2, 4
<------>strh w2, [x4, 2564]
.L379:
<------>str w1, [x4, 2572]
.L367:
<------>add x5, x5, :lo12:.LANCHOR0
<------>ldrh w1, [x5, 2480]
<------>strh wzr, [x5, 2588]
<------>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
<------>cmp w0, w3, lsl 9
<------>bcs .L368
<------>mov w0, 1
<------>strh w0, [x5, 2588]
.L368:
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L361:
<------>mov w0, 4
<------>b .L377
.L364:
<------>add w3, w3, 4
<------>b .L378
.L366:
<------>cmp w6, 7
<------>bhi .L367
<------>mov w1, 8
<------>b .L379
<------>.size FtlConstantsInit, .-FtlConstantsInit
<------>.align 2
<------>.global IsBlkInVendorPart
<------>.type IsBlkInVendorPart, %function
IsBlkInVendorPart:
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>and w0, w0, 65535
<------>ldrh w2, [x1, 2590]
<------>cbz w2, .L384
<------>ldrh w2, [x1, 2564]
<------>ldr x3, [x1, 2592]
<------>mov x1, 0
.L382:
<------>cmp w2, w1, uxth
<------>bhi .L383
.L384:
<------>mov w0, 0
<------>ret
.L383:
<------>add x1, x1, 1
<------>add x4, x3, x1, lsl 1
<------>ldrh w4, [x4, -2]
<------>cmp w4, w0
<------>bne .L382
<------>mov w0, 1
<------>ret
<------>.size IsBlkInVendorPart, .-IsBlkInVendorPart
<------>.align 2
<------>.global FtlCacheMetchLpa
<------>.type FtlCacheMetchLpa, %function
FtlCacheMetchLpa:
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>ldr w4, [x2, 2600]
<------>cbz w4, .L391
<------>mov x5, 24
<------>mov w6, 56
<------>ldr x2, [x2, 2608]
<------>nop // between mem op and mult-accumulate
<------>umaddl x4, w4, w6, x5
<------>add x3, x2, 24
<------>add x2, x2, x4
.L388:
<------>cmp x3, x2
<------>bne .L390
.L391:
<------>mov w0, 0
<------>ret
.L390:
<------>ldr w4, [x3]
<------>cmp w4, w0
<------>bcc .L389
<------>cmp w4, w1
<------>bls .L392
.L389:
<------>add x3, x3, 56
<------>b .L388
.L392:
<------>mov w0, 1
<------>ret
<------>.size FtlCacheMetchLpa, .-FtlCacheMetchLpa
<------>.align 2
<------>.global FtlGetCap
<------>.type FtlGetCap, %function
FtlGetCap:
<------>adrp x0, .LANCHOR0+2584
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2584]
<------>ret
<------>.size FtlGetCap, .-FtlGetCap
<------>.align 2
<------>.global FtlGetCapacity
<------>.type FtlGetCapacity, %function
FtlGetCapacity:
<------>adrp x0, .LANCHOR0+2584
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2584]
<------>ret
<------>.size FtlGetCapacity, .-FtlGetCapacity
<------>.align 2
<------>.global ftl_get_density
<------>.type ftl_get_density, %function
ftl_get_density:
<------>adrp x0, .LANCHOR0+2584
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2584]
<------>ret
<------>.size ftl_get_density, .-ftl_get_density
<------>.align 2
<------>.global FtlGetLpn
<------>.type FtlGetLpn, %function
FtlGetLpn:
<------>adrp x0, .LANCHOR0+2616
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2616]
<------>ret
<------>.size FtlGetLpn, .-FtlGetLpn
<------>.align 2
<------>.global FtlBbmMapBadBlock
<------>.type FtlBbmMapBadBlock, %function
FtlBbmMapBadBlock:
<------>stp x29, x30, [sp, -32]!
<------>and w1, w0, 65535
<------>mov w4, 1
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>add x19, x19, :lo12:.LANCHOR0
<------>add x19, x19, 2624
<------>ldrh w0, [x19, -82]
<------>udiv w3, w1, w0
<------>and w2, w3, 65535
<------>msub w3, w3, w0, w1
<------>add x0, x19, w2, uxth 3
<------>and w3, w3, 65535
<------>ldr x0, [x0, 32]
<------>ubfx x5, x3, 5, 11
<------>lsl x5, x5, 2
<------>lsl w4, w4, w3
<------>ldr w6, [x0, x5]
<------>orr w4, w4, w6
<------>str w4, [x0, x5]
<------>adrp x0, .LC1
<------>add x0, x0, :lo12:.LC1
<------>bl printk
<------>ldrh w0, [x19, 6]
<------>add w0, w0, 1
<------>strh w0, [x19, 6]
<------>mov w0, 0
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
<------>.align 2
<------>.global FtlBbmIsBadBlock
<------>.type FtlBbmIsBadBlock, %function
FtlBbmIsBadBlock:
<------>adrp x2, .LANCHOR0
<------>add x3, x2, :lo12:.LANCHOR0
<------>and w0, w0, 65535
<------>ldrh w1, [x3, 2542]
<------>udiv w2, w0, w1
<------>msub w0, w2, w1, w0
<------>add x2, x3, w2, uxth 3
<------>and w0, w0, 65535
<------>ldr x1, [x2, 2656]
<------>ubfx x3, x0, 5, 11
<------>ldr w1, [x1, x3, lsl 2]
<------>lsr w0, w1, w0
<------>and w0, w0, 1
<------>ret
<------>.size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
<------>.align 2
<------>.global FtlBbtInfoPrint
<------>.type FtlBbtInfoPrint, %function
FtlBbtInfoPrint:
<------>ret
<------>.size FtlBbtInfoPrint, .-FtlBbtInfoPrint
<------>.align 2
<------>.global FtlBbtCalcTotleCnt
<------>.type FtlBbtCalcTotleCnt, %function
FtlBbtCalcTotleCnt:
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w4, 0
<------>mov w5, 0
<------>ldrh w6, [x0, 2542]
<------>ldrh w0, [x0, 2494]
<------>mul w6, w6, w0
<------>cmp w4, w6
<------>blt .L411
<------>mov w0, w5
<------>ret
.L411:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
.L404:
<------>mov w0, w4
<------>bl FtlBbmIsBadBlock
<------>cbz w0, .L403
<------>add w5, w5, 1
<------>and w5, w5, 65535
.L403:
<------>add w4, w4, 1
<------>and w4, w4, 65535
<------>cmp w4, w6
<------>blt .L404
<------>mov w0, w5
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
<------>.align 2
<------>.global V2P_block
<------>.type V2P_block, %function
V2P_block:
<------>adrp x4, .LANCHOR0
<------>add x4, x4, :lo12:.LANCHOR0
<------>and w0, w0, 65535
<------>and w1, w1, 65535
<------>ldrh w2, [x4, 2496]
<------>ldrh w4, [x4, 2542]
<------>udiv w3, w0, w2
<------>msub w0, w3, w2, w0
<------>madd w2, w2, w1, w0
<------>madd w0, w3, w4, w2
<------>ret
<------>.size V2P_block, .-V2P_block
<------>.align 2
<------>.global P2V_plane
<------>.type P2V_plane, %function
P2V_plane:
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>and w3, w0, 65535
<------>ldrh w1, [x2, 2496]
<------>ldrh w2, [x2, 2542]
<------>udiv w0, w3, w1
<------>udiv w2, w3, w2
<------>msub w0, w0, w1, w3
<------>madd w0, w1, w2, w0
<------>ret
<------>.size P2V_plane, .-P2V_plane
<------>.align 2
<------>.global P2V_block_in_plane
<------>.type P2V_block_in_plane, %function
P2V_block_in_plane:
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>and w3, w0, 65535
<------>ldrh w2, [x1, 2542]
<------>ldrh w1, [x1, 2496]
<------>udiv w0, w3, w2
<------>msub w0, w0, w2, w3
<------>and w0, w0, 65535
<------>udiv w0, w0, w1
<------>ret
<------>.size P2V_block_in_plane, .-P2V_block_in_plane
<------>.align 2
<------>.global ftl_cmp_data_ver
<------>.type ftl_cmp_data_ver, %function
ftl_cmp_data_ver:
<------>cmp w0, w1
<------>mov w2, -2147483648
<------>bls .L416
<------>sub w1, w0, w1
<------>cmp w1, w2
<------>cset w0, ls
<------>ret
.L416:
<------>sub w1, w1, w0
<------>cmp w1, w2
<------>cset w0, hi
<------>ret
<------>.size ftl_cmp_data_ver, .-ftl_cmp_data_ver
<------>.align 2
<------>.global FtlFreeSysBlkQueueEmpty
<------>.type FtlFreeSysBlkQueueEmpty, %function
FtlFreeSysBlkQueueEmpty:
<------>adrp x0, .LANCHOR0+2726
<------>ldrh w0, [x0, #:lo12:.LANCHOR0+2726]
<------>cmp w0, 0
<------>cset w0, eq
<------>ret
<------>.size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
<------>.align 2
<------>.global FtlFreeSysBlkQueueFull
<------>.type FtlFreeSysBlkQueueFull, %function
FtlFreeSysBlkQueueFull:
<------>adrp x0, .LANCHOR0+2726
<------>ldrh w0, [x0, #:lo12:.LANCHOR0+2726]
<------>cmp w0, 1024
<------>cset w0, eq
<------>ret
<------>.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
<------>.align 2
<------>.global FtlFreeSysBlkQueueIn
<------>.type FtlFreeSysBlkQueueIn, %function
FtlFreeSysBlkQueueIn:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>and w21, w0, 65535
<------>stp x19, x20, [sp, 16]
<------>sub w2, w21, #1
<------>mov w0, 65533
<------>cmp w0, w2, uxth
<------>bcc .L420
<------>adrp x0, .LANCHOR0
<------>add x2, x0, :lo12:.LANCHOR0
<------>mov x19, x0
<------>ldrh w2, [x2, 2726]
<------>cmp w2, 1024
<------>beq .L420
<------>and w1, w1, 65535
<------>cbz w1, .L422
<------>adrp x20, .LANCHOR2
<------>add x20, x20, :lo12:.LANCHOR2
<------>ldr w0, [x20, 424]
<------>cbnz w0, .L422
<------>mov w0, w21
<------>bl P2V_block_in_plane
<------>and w22, w0, 65535
<------>ldr x0, [x20, 432]
<------>lsl w1, w21, 10
<------>mov w2, 1
<------>str w1, [x0, 4]
<------>mov w1, w2
<------>ldr x0, [x20, 432]
<------>bl FlashEraseBlocks
<------>ldr x2, [x20, 440]
<------>ubfiz x0, x22, 1, 16
<------>ldrh w1, [x2, x0]
<------>add w1, w1, 1
<------>strh w1, [x2, x0]
<------>ldr w0, [x20, 448]
<------>add w0, w0, 1
<------>str w0, [x20, 448]
.L422:
<------>add x0, x19, :lo12:.LANCHOR0
<------>add x0, x0, 2720
<------>ldrh w1, [x0, 6]
<------>add w1, w1, 1
<------>strh w1, [x0, 6]
<------>ldrh w1, [x0, 4]
<------>add x2, x0, w1, sxtw 1
<------>add w1, w1, 1
<------>and w1, w1, 1023
<------>strh w1, [x0, 4]
<------>strh w21, [x2, 8]
.L420:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
<------>.align 2
<------>.global FtlFreeSysBLkSort
<------>.type FtlFreeSysBLkSort, %function
FtlFreeSysBLkSort:
<------>adrp x0, .LANCHOR0
<------>add x1, x0, :lo12:.LANCHOR0
<------>add x1, x1, 2720
<------>ldrh w2, [x1, 6]
<------>cbz w2, .L430
<------>adrp x2, .LANCHOR2+484
<------>ldrh w3, [x1, 2]
<------>mov w6, 0
<------>mov w4, 0
<------>ldrh w5, [x2, #:lo12:.LANCHOR2+484]
<------>ldrh w2, [x1, 4]
<------>and w5, w5, 31
.L432:
<------>cmp w5, w4
<------>bgt .L433
<------>cbz w6, .L430
<------>add x0, x0, :lo12:.LANCHOR0
<------>strh w3, [x0, 2722]
<------>strh w2, [x0, 2724]
.L430:
<------>ret
.L433:
<------>add x6, x1, w3, 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, w2, sxtw 1
<------>strh w7, [x6, 8]
<------>mov w6, 1
<------>add w2, w2, w6
<------>and w2, w2, 1023
<------>b .L432
<------>.size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
<------>.align 2
<------>.global FtlFreeSysBlkQueueOut
<------>.type FtlFreeSysBlkQueueOut, %function
FtlFreeSysBlkQueueOut:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>add x21, x21, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>add x20, x21, 2720
<------>stp x23, x24, [sp, 48]
<------>mov x22, x20
.L440:
<------>ldrh w1, [x20, 6]
<------>cbz w1, .L441
<------>ldrh w0, [x20, 2]
<------>adrp x19, .LANCHOR2
<------>add x4, x19, :lo12:.LANCHOR2
<------>sub w1, w1, #1
<------>strh w1, [x20, 6]
<------>add x2, x20, w0, sxtw 1
<------>add w0, w0, 1
<------>and w0, w0, 1023
<------>strh w0, [x20, 2]
<------>ldr w0, [x4, 424]
<------>ldrh w23, [x2, 8]
<------>cbnz w0, .L442
<------>mov w0, w23
<------>bl P2V_block_in_plane
<------>and w24, w0, 65535
<------>ldr x0, [x4, 432]
<------>lsl w1, w23, 10
<------>str w1, [x0, 4]
<------>ldrb w0, [x21, 204]
<------>cbz w0, .L443
<------>ldr x0, [x4, 432]
<------>mov w2, 1
<------>mov w1, 0
<------>bl FlashEraseBlocks
.L443:
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w2, 1
<------>mov w1, w2
<------>ldr x0, [x19, 432]
<------>bl FlashEraseBlocks
<------>ldr x2, [x19, 440]
<------>ubfiz x0, x24, 1, 16
<------>ldrh w1, [x2, x0]
<------>add w1, w1, 1
<------>strh w1, [x2, x0]
<------>ldr w0, [x19, 448]
<------>add w0, w0, 1
<------>str w0, [x19, 448]
.L442:
<------>sub w0, w23, #1
<------>mov w1, 65533
<------>cmp w1, w0, uxth
<------>bcs .L445
<------>ldrh w2, [x22, 6]
<------>mov w1, w23
<------>adrp x0, .LC3
<------>add x0, x0, :lo12:.LC3
<------>bl printk
<------>b .L440
.L441:
<------>adrp x0, .LC2
<------>mov w1, 0
<------>add x0, x0, :lo12:.LC2
<------>bl printk
.L444:
<------>b .L444
.L445:
<------>mov w0, w23
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
<------>.align 2
<------>.global test_node_in_list
<------>.type test_node_in_list, %function
test_node_in_list:
<------>ldr x2, [x0]
<------>adrp x0, .LANCHOR2+504
<------>mov x4, -6148914691236517206
<------>and w1, w1, 65535
<------>ldr x3, [x0, #:lo12:.LANCHOR2+504]
<------>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
.L452:
<------>cmp w0, w1
<------>beq .L453
<------>ldrh w0, [x2]
<------>cmp w0, w5
<------>beq .L454
<------>umaddl x2, w0, w4, x3
<------>b .L452
.L453:
<------>mov w0, 1
<------>ret
.L454:
<------>mov w0, 0
<------>ret
<------>.size test_node_in_list, .-test_node_in_list
<------>.align 2
<------>.global insert_data_list
<------>.type insert_data_list, %function
insert_data_list:
<------>adrp x9, .LANCHOR0
<------>add x9, x9, :lo12:.LANCHOR0
<------>and w0, w0, 65535
<------>ldrh w1, [x9, 2480]
<------>cmp w1, w0
<------>bls .L471
<------>adrp x2, .LANCHOR2
<------>add x4, x2, :lo12:.LANCHOR2
<------>mov w5, 6
<------>mov w1, -1
<------>mov x3, x2
<------>ldr x12, [x4, 504]
<------>umull x11, w0, w5
<------>add x6, x12, x11
<------>strh w1, [x6, 2]
<------>strh w1, [x12, x11]
<------>ldr x1, [x4, 512]
<------>cbnz x1, .L458
<------>str x6, [x4, 512]
.L471:
<------>mov w0, 0
<------>ret
.L458:
<------>stp x29, x30, [sp, -16]!
<------>ubfiz x8, x0, 1, 16
<------>mov x15, -6148914691236517206
<------>mov w10, -1
<------>add x29, sp, 0
<------>ldr x14, [x4, 520]
<------>movk x15, 0xaaab, lsl 0
<------>ldrh w2, [x6, 4]
<------>mov w30, 65535
<------>ldr x13, [x4, 504]
<------>cmp w2, 0
<------>ldrh w18, [x9, 2480]
<------>ldrh w7, [x14, x8]
<------>mul w7, w7, w2
<------>sub x2, x1, x13
<------>asr x2, x2, 1
<------>csel w7, w7, w10, ne
<------>mul x2, x2, x15
<------>ldr x15, [x4, 440]
<------>mov w4, 0
<------>add x9, x15, x8
<------>and w2, w2, 65535
<------>mov w8, w5
.L466:
<------>add w4, w4, 1
<------>and w4, w4, 65535
<------>cmp w4, w18
<------>bhi .L457
<------>cmp w0, w2
<------>beq .L457
<------>ubfiz x16, x2, 1, 16
<------>ldrh w17, [x1, 4]
<------>cmp w17, 0
<------>ldrh w5, [x14, x16]
<------>mul w5, w5, w17
<------>csel w5, w5, w10, ne
<------>cmp w7, w5
<------>bne .L462
<------>ldrh w16, [x15, x16]
<------>ldrh w5, [x9]
<------>cmp w16, w5
<------>bcc .L464
.L463:
<------>strh w2, [x12, x11]
<------>ldrh w2, [x1, 2]
<------>strh w2, [x6, 2]
<------>add x2, x3, :lo12:.LANCHOR2
<------>ldr x3, [x2, 512]
<------>cmp x1, x3
<------>bne .L467
<------>strh w0, [x1, 2]
<------>str x6, [x2, 512]
<------>b .L457
.L462:
<------>bcc .L463
.L464:
<------>ldrh w5, [x1]
<------>cmp w5, w30
<------>bne .L465
<------>strh w2, [x6, 2]
<------>add x2, x3, :lo12:.LANCHOR2
<------>strh w0, [x1]
<------>str x6, [x2, 528]
.L457:
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L465:
<------>umaddl x1, w5, w8, x13
<------>mov w2, w5
<------>b .L466
.L467:
<------>ldrh w3, [x1, 2]
<------>mov w4, 6
<------>ldr x2, [x2, 504]
<------>umull x3, w3, w4
<------>strh w0, [x2, x3]
<------>strh w0, [x1, 2]
<------>b .L457
<------>.size insert_data_list, .-insert_data_list
<------>.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 x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldrh w1, [x0, 536]
<------>add w1, w1, 1
<------>strh w1, [x0, 536]
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size INSERT_DATA_LIST, .-INSERT_DATA_LIST
<------>.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 .L476
<------>adrp x2, .LANCHOR2
<------>add x5, x2, :lo12:.LANCHOR2
<------>mov w6, 6
<------>mov w1, -1
<------>mov x3, x2
<------>ldr x9, [x5, 504]
<------>umull x8, w0, w6
<------>add x4, x9, x8
<------>strh w1, [x4, 2]
<------>strh w1, [x9, x8]
<------>ldr x1, [x5, 544]
<------>cbnz x1, .L477
<------>str x4, [x5, 544]
.L476:
<------>mov w0, 0
<------>ret
.L477:
<------>ldr x11, [x5, 440]
<------>ubfiz x2, x0, 1, 16
<------>ldr x10, [x5, 504]
<------>mov x5, -6148914691236517206
<------>movk x5, 0xaaab, lsl 0
<------>ldrh w12, [x11, x2]
<------>sub x2, x1, x10
<------>asr x2, x2, 1
<------>mul x2, x2, x5
<------>and w2, w2, 65535
.L480:
<------>ubfiz x5, x2, 1, 16
<------>ldrh w5, [x11, x5]
<------>cmp w5, w12
<------>bcs .L478
<------>ldrh w5, [x1]
<------>cmp w5, w7
<------>bne .L479
<------>strh w2, [x4, 2]
<------>strh w0, [x1]
<------>b .L476
.L479:
<------>umaddl x1, w5, w6, x10
<------>mov w2, w5
<------>b .L480
.L478:
<------>ldrh w5, [x1, 2]
<------>strh w5, [x4, 2]
<------>strh w2, [x9, x8]
<------>add x2, x3, :lo12:.LANCHOR2
<------>ldr x3, [x2, 544]
<------>cmp x1, x3
<------>bne .L481
<------>strh w0, [x1, 2]
<------>str x4, [x2, 544]
<------>b .L476
.L481:
<------>ldrh w3, [x1, 2]
<------>mov w4, 6
<------>ldr x2, [x2, 504]
<------>umull x3, w3, w4
<------>strh w0, [x2, x3]
<------>strh w0, [x1, 2]
<------>b .L476
<------>.size insert_free_list, .-insert_free_list
<------>.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 x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldrh w1, [x0, 552]
<------>add w1, w1, 1
<------>strh w1, [x0, 552]
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size INSERT_FREE_LIST, .-INSERT_FREE_LIST
<------>.align 2
<------>.global List_remove_node
<------>.type List_remove_node, %function
List_remove_node:
<------>and w1, w1, 65535
<------>adrp x6, .LANCHOR2
<------>add x6, x6, :lo12:.LANCHOR2
<------>mov w4, 6
<------>ldr x2, [x0]
<------>mov w7, 65535
<------>umull x1, w1, w4
<------>ldr x3, [x6, 504]
<------>add x5, x3, x1
<------>cmp x5, x2
<------>ldrh w2, [x3, x1]
<------>bne .L485
<------>cmp w2, w7
<------>bne .L486
<------>str xzr, [x0]
.L487:
<------>mov w0, -1
<------>strh w0, [x3, x1]
<------>strh w0, [x5, 2]
<------>mov w0, 0
<------>ret
.L486:
<------>umaddl x2, w2, w4, x3
<------>str x2, [x0]
<------>mov w0, -1
<------>strh w0, [x2, 2]
<------>b .L487
.L485:
<------>cmp w2, w7
<------>ldrh w0, [x5, 2]
<------>bne .L488
<------>cmp w0, w2
<------>beq .L487
<------>umull x2, w0, w4
<------>mov w0, -1
<------>strh w0, [x3, x2]
<------>b .L487
.L488:
<------>umaddl x2, w2, w4, x3
<------>strh w0, [x2, 2]
<------>ldrh w2, [x5, 2]
<------>ldr x0, [x6, 504]
<------>ldrh w7, [x3, x1]
<------>umull x2, w2, w4
<------>strh w7, [x0, x2]
<------>b .L487
<------>.size List_remove_node, .-List_remove_node
<------>.align 2
<------>.global List_pop_index_node
<------>.type List_pop_index_node, %function
List_pop_index_node:
<------>ldr x2, [x0]
<------>cbz x2, .L495
<------>stp x29, x30, [sp, -16]!
<------>adrp x3, .LANCHOR2+504
<------>and w1, w1, 65535
<------>mov w4, 65535
<------>add x29, sp, 0
<------>ldr x8, [x3, #:lo12:.LANCHOR2+504]
<------>mov w5, 6
.L491:
<------>cbnz w1, .L492
.L494:
<------>sub x8, x2, x8
<------>mov x2, -6148914691236517206
<------>asr x8, x8, 1
<------>movk x2, 0xaaab, lsl 0
<------>mul x8, x8, x2
<------>and w8, w8, 65535
<------>mov w1, w8
<------>bl List_remove_node
<------>mov w0, w8
<------>ldp x29, x30, [sp], 16
<------>ret
.L492:
<------>ldrh w3, [x2]
<------>cmp w3, w4
<------>beq .L494
<------>sub w1, w1, #1
<------>umaddl x2, w3, w5, x8
<------>and w1, w1, 65535
<------>b .L491
.L495:
<------>mov w0, 65535
<------>ret
<------>.size List_pop_index_node, .-List_pop_index_node
<------>.align 2
<------>.global List_get_gc_head_node
<------>.type List_get_gc_head_node, %function
List_get_gc_head_node:
<------>and w2, w0, 65535
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldr x1, [x0, 512]
<------>cbz x1, .L505
<------>ldr x3, [x0, 504]
<------>mov w4, 6
<------>mov w0, 65535
.L502:
<------>cbz w2, .L503
<------>ldrh w1, [x1]
<------>cmp w1, w0
<------>bne .L504
<------>ret
.L504:
<------>sub w2, w2, #1
<------>umaddl x1, w1, w4, x3
<------>and w2, w2, 65535
<------>b .L502
.L505:
<------>mov w0, 65535
<------>ret
.L503:
<------>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
<------>.align 2
<------>.global List_update_data_list
<------>.type List_update_data_list, %function
List_update_data_list:
<------>adrp x8, .LANCHOR2
<------>add x1, x8, :lo12:.LANCHOR2
<------>and w9, w0, 65535
<------>ldrh w0, [x1, 560]
<------>cmp w0, w9
<------>beq .L514
<------>ldrh w0, [x1, 608]
<------>cmp w0, w9
<------>beq .L514
<------>ldrh w0, [x1, 656]
<------>cmp w0, w9
<------>beq .L514
<------>mov w4, 6
<------>ldp x3, x2, [x1, 504]
<------>umull x4, w9, w4
<------>add x0, x3, x4
<------>cmp x0, x2
<------>beq .L514
<------>ldr x5, [x1, 520]
<------>ubfiz x1, x9, 1, 16
<------>ldrh w2, [x5, x1]
<------>ldrh w1, [x0, 4]
<------>ldrh w0, [x0, 2]
<------>cmp w1, 0
<------>mul w2, w2, w1
<------>mov w1, 65535
<------>csinv w2, w2, wzr, ne
<------>cmp w0, w1
<------>bne .L509
<------>ldrh w1, [x3, x4]
<------>cmp w1, w0
<------>beq .L514
.L509:
<------>mov w1, 6
<------>mov x4, -6148914691236517206
<------>movk x4, 0xaaab, lsl 0
<------>umull x0, w0, w1
<------>asr x1, x0, 1
<------>add x0, x3, x0
<------>mul x1, x1, x4
<------>ldrh w3, [x0, 4]
<------>cmp w3, 0
<------>ldrh w1, [x5, x1, lsl 1]
<------>mul w0, w1, w3
<------>csinv w0, w0, wzr, ne
<------>cmp w2, w0
<------>bcs .L514
<------>add x8, x8, :lo12:.LANCHOR2
<------>stp x29, x30, [sp, -16]!
<------>mov w1, w9
<------>add x0, x8, 512
<------>add x29, sp, 0
<------>bl List_remove_node
<------>ldrh w0, [x8, 536]
<------>sub w0, w0, #1
<------>strh w0, [x8, 536]
<------>mov w0, w9
<------>bl INSERT_DATA_LIST
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L514:
<------>mov w0, 0
<------>ret
<------>.size List_update_data_list, .-List_update_data_list
<------>.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 w20, 0
<------>str x21, [sp, 32]
<------>ldrh w2, [x0, 10]
<------>ldr x1, [x0, 16]
.L518:
<------>cmp w20, w2
<------>beq .L522
<------>mov x21, x1
<------>ldrh w3, [x1], 2
<------>cbnz w3, .L519
<------>mov x19, x0
<------>bl FtlFreeSysBlkQueueOut
<------>and w1, w0, 65535
<------>strh w0, [x21]
<------>sub w2, w1, #1
<------>mov w0, 65533
<------>cmp w0, w2, uxth
<------>bcs .L520
<------>adrp x0, .LANCHOR0+2726
<------>ldrh w2, [x0, #:lo12:.LANCHOR0+2726]
<------>adrp x0, .LC4
<------>add x0, x0, :lo12:.LC4
<------>bl printk
.L521:
<------>b .L521
.L520:
<------>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]
.L522:
<------>mov w0, 0
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L519:
<------>add w20, w20, 1
<------>and w20, w20, 65535
<------>b .L518
<------>.size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
<------>.align 2
<------>.global select_l2p_ram_region
<------>.type select_l2p_ram_region, %function
select_l2p_ram_region:
<------>adrp x0, .LANCHOR0+2582
<------>mov x4, 0
<------>mov w5, 65535
<------>ldrh w2, [x0, #:lo12:.LANCHOR0+2582]
<------>adrp x0, .LANCHOR2
<------>add x1, x0, :lo12:.LANCHOR2
<------>mov x3, x0
<------>ldr x1, [x1, 704]
.L526:
<------>and w0, w4, 65535
<------>cmp w0, w2
<------>bcc .L528
<------>add x5, x1, 4
<------>mov w0, w2
<------>mov w7, -2147483648
<------>mov w4, 0
.L529:
<------>cmp w4, w2
<------>bne .L531
<------>cmp w0, w2
<------>bcc .L527
<------>add x0, x3, :lo12:.LANCHOR2
<------>mov w4, -1
<------>mov w3, 0
<------>ldrh w5, [x0, 712]
<------>mov w0, w2
.L532:
<------>cmp w3, w2
<------>beq .L527
<------>ldr w7, [x1, 4]
<------>cmp w4, w7
<------>bls .L533
<------>ldrh w6, [x1]
<------>cmp w6, w5
<------>csel w4, w4, w7, eq
<------>csel w0, w0, w3, eq
.L533:
<------>add w3, w3, 1
<------>add x1, x1, 16
<------>and w3, w3, 65535
<------>b .L532
.L528:
<------>add x4, x4, 1
<------>add x6, x1, x4, lsl 4
<------>ldrh w6, [x6, -16]
<------>cmp w6, w5
<------>bne .L526
.L527:
<------>ret
.L531:
<------>ldr w6, [x5]
<------>tbnz w6, #31, .L530
<------>cmp w7, w6
<------>bls .L530
<------>mov w7, w6
<------>mov w0, w4
.L530:
<------>add w4, w4, 1
<------>add x5, x5, 16
<------>and w4, w4, 65535
<------>b .L529
<------>.size select_l2p_ram_region, .-select_l2p_ram_region
<------>.align 2
<------>.global FtlUpdateVaildLpn
<------>.type FtlUpdateVaildLpn, %function
FtlUpdateVaildLpn:
<------>adrp x1, .LANCHOR2
<------>add x3, x1, :lo12:.LANCHOR2
<------>ldrh w2, [x3, 714]
<------>cmp w2, 4
<------>bhi .L536
<------>cbnz w0, .L536
<------>add w2, w2, 1
<------>strh w2, [x3, 714]
<------>ret
.L536:
<------>add x0, x1, :lo12:.LANCHOR2
<------>adrp x1, .LANCHOR0+2480
<------>mov w6, 65535
<------>ldrh w4, [x1, #:lo12:.LANCHOR0+2480]
<------>mov x1, 0
<------>ldr x5, [x0, 520]
<------>strh wzr, [x0, 714]
<------>str wzr, [x0, 716]
.L537:
<------>cmp w4, w1, uxth
<------>bhi .L539
<------>ret
.L539:
<------>ldrh w3, [x5, x1, lsl 1]
<------>cmp w3, w6
<------>beq .L538
<------>ldr w2, [x0, 716]
<------>add w2, w2, w3
<------>str w2, [x0, 716]
.L538:
<------>add x1, x1, 1
<------>b .L537
<------>.size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
<------>.align 2
<------>.global ftl_set_blk_mode
<------>.type ftl_set_blk_mode, %function
ftl_set_blk_mode:
<------>and w0, w0, 65535
<------>cbz w1, .L542
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_set_blk_mode.part.9
<------>ldp x29, x30, [sp], 16
<------>ret
.L542:
<------>adrp x1, .LANCHOR0+64
<------>ubfx x2, x0, 5, 11
<------>lsl x2, x2, 2
<------>ldr x3, [x1, #:lo12:.LANCHOR0+64]
<------>mov w1, 1
<------>lsl w0, w1, w0
<------>ldr w1, [x3, x2]
<------>bic w0, w1, w0
<------>str w0, [x3, x2]
<------>ret
<------>.size ftl_set_blk_mode, .-ftl_set_blk_mode
<------>.align 2
<------>.global ftl_get_blk_mode
<------>.type ftl_get_blk_mode, %function
ftl_get_blk_mode:
<------>and w1, w0, 65535
<------>adrp x0, .LANCHOR0+64
<------>ldr x0, [x0, #:lo12:.LANCHOR0+64]
<------>ubfx x2, x1, 5, 11
<------>ldr w0, [x0, x2, lsl 2]
<------>lsr w0, w0, w1
<------>and w0, w0, 1
<------>ret
<------>.size ftl_get_blk_mode, .-ftl_get_blk_mode
<------>.align 2
<------>.global ftl_sb_update_avl_pages
<------>.type ftl_sb_update_avl_pages, %function
ftl_sb_update_avl_pages:
<------>and w6, w1, 65535
<------>adrp x4, .LANCHOR0
<------>add x1, x4, :lo12:.LANCHOR0
<------>and w2, w2, 65535
<------>strh wzr, [x0, 4]
<------>ldrh w3, [x1, 2472]
<------>mov w1, 65535
.L550:
<------>cmp w3, w2, uxth
<------>bhi .L552
<------>add x4, x4, :lo12:.LANCHOR0
<------>ubfiz x3, x3, 1, 16
<------>add x3, x3, 16
<------>add x2, x0, 16
<------>add x3, x0, x3
<------>mov w5, 65535
<------>ldrh w1, [x4, 2544]
<------>sub w1, w1, #1
<------>and w1, w1, 65535
<------>sub w1, w1, w6
.L553:
<------>cmp x2, x3
<------>bne .L555
<------>ret
.L552:
<------>add x5, x0, w2, sxtw 1
<------>ldrh w5, [x5, 16]
<------>cmp w5, w1
<------>beq .L551
<------>ldrh w5, [x0, 4]
<------>add w5, w5, 1
<------>strh w5, [x0, 4]
.L551:
<------>add w2, w2, 1
<------>b .L550
.L555:
<------>ldrh w4, [x2]
<------>cmp w4, w5
<------>beq .L554
<------>ldrh w4, [x0, 4]
<------>add w4, w1, w4
<------>strh w4, [x0, 4]
.L554:
<------>add x2, x2, 2
<------>b .L553
<------>.size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
<------>.align 2
<------>.global make_superblock
<------>.type make_superblock, %function
make_superblock:
<------>mov x5, x0
<------>strh wzr, [x0, 4]
<------>strb wzr, [x0, 7]
<------>adrp x6, .LANCHOR0
<------>add x0, x6, :lo12:.LANCHOR0
<------>mov x7, 0
<------>add x8, x5, 16
<------>add x9, x0, 2504
<------>mov w11, -1
<------>ldrh w10, [x0, 2472]
<------>cmp w10, w7, uxth
<------>bhi .L576
<------>add x1, x6, :lo12:.LANCHOR0
<------>ldrb w0, [x5, 7]
<------>strb wzr, [x5, 9]
<------>ldrh w2, [x1, 2544]
<------>mul w0, w0, w2
<------>strh w0, [x5, 4]
<------>ldr w0, [x1, 2372]
<------>cbz w0, .L572
<------>adrp x0, .LANCHOR2+440
<------>ldrh w1, [x5]
<------>ldr x0, [x0, #:lo12:.LANCHOR2+440]
<------>ldrh w0, [x0, x1, lsl 1]
<------>cmp w0, 79
<------>bhi .L572
<------>mov w0, 1
<------>strb w0, [x5, 9]
.L572:
<------>add x6, x6, :lo12:.LANCHOR0
<------>ldrb w0, [x6, 72]
<------>cbz w0, .L575
<------>mov w0, 1
<------>strb w0, [x5, 9]
.L575:
<------>mov w0, 0
<------>ret
.L576:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
.L559:
<------>ldrh w1, [x5]
<------>ldrb w0, [x9, x7]
<------>bl V2P_block
<------>mov w4, w0
<------>strh w11, [x8]
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L558
<------>strh w4, [x8]
<------>ldrb w0, [x5, 7]
<------>add w0, w0, 1
<------>strb w0, [x5, 7]
.L558:
<------>add x7, x7, 1
<------>add x8, x8, 2
<------>cmp w10, w7, uxth
<------>bhi .L559
<------>add x1, x6, :lo12:.LANCHOR0
<------>ldrb w0, [x5, 7]
<------>strb wzr, [x5, 9]
<------>ldrh w2, [x1, 2544]
<------>mul w0, w0, w2
<------>strh w0, [x5, 4]
<------>ldr w0, [x1, 2372]
<------>cbz w0, .L560
<------>adrp x0, .LANCHOR2+440
<------>ldrh w1, [x5]
<------>ldr x0, [x0, #:lo12:.LANCHOR2+440]
<------>ldrh w0, [x0, x1, lsl 1]
<------>cmp w0, 79
<------>bhi .L560
<------>mov w0, 1
<------>strb w0, [x5, 9]
.L560:
<------>add x6, x6, :lo12:.LANCHOR0
<------>ldrb w0, [x6, 72]
<------>cbz w0, .L561
<------>mov w0, 1
<------>strb w0, [x5, 9]
.L561:
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size make_superblock, .-make_superblock
<------>.align 2
<------>.global update_multiplier_value
<------>.type update_multiplier_value, %function
update_multiplier_value:
<------>and w7, w0, 65535
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov x8, 0
<------>mov w6, 0
<------>add x5, x0, 2504
<------>ldrh w9, [x0, 2472]
<------>ldrh w10, [x0, 2544]
<------>cmp w9, w8, uxth
<------>bhi .L589
<------>cbz w6, .L587
<------>mov w0, 32768
<------>sdiv w6, w0, w6
.L588:
<------>adrp x0, .LANCHOR2+504
<------>mov w1, 6
<------>ldr x0, [x0, #:lo12:.LANCHOR2+504]
<------>umaddl x7, w7, w1, x0
<------>mov w0, 0
<------>strh w6, [x7, 4]
<------>ret
.L582:
<------>mov w6, 0
<------>b .L581
.L587:
<------>mov w6, 0
<------>b .L588
.L589:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
.L580:
<------>ldrb w0, [x5, x8]
<------>mov w1, w7
<------>bl V2P_block
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L579
<------>add w6, w6, w10
<------>and w6, w6, 65535
.L579:
<------>add x8, x8, 1
<------>cmp w9, w8, uxth
<------>bhi .L580
<------>cbz w6, .L582
<------>mov w0, 32768
<------>sdiv w6, w0, w6
.L581:
<------>adrp x0, .LANCHOR2+504
<------>mov w1, 6
<------>ldr x0, [x0, #:lo12:.LANCHOR2+504]
<------>umaddl x7, w7, w1, x0
<------>mov w0, 0
<------>strh w6, [x7, 4]
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size update_multiplier_value, .-update_multiplier_value
<------>.align 2
<------>.global GetFreeBlockMinEraseCount
<------>.type GetFreeBlockMinEraseCount, %function
GetFreeBlockMinEraseCount:
<------>adrp x1, .LANCHOR2
<------>add x1, x1, :lo12:.LANCHOR2
<------>ldr x0, [x1, 544]
<------>cbz x0, .L592
<------>ldr x2, [x1, 504]
<------>ldr x1, [x1, 440]
<------>sub x0, x0, x2
<------>mov x2, -6148914691236517206
<------>asr x0, x0, 1
<------>movk x2, 0xaaab, lsl 0
<------>mul x0, x0, x2
<------>and x0, x0, 65535
<------>ldrh w0, [x1, x0, lsl 1]
<------>ret
.L592:
<------>mov w0, 0
<------>ret
<------>.size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
<------>.align 2
<------>.global GetFreeBlockMaxEraseCount
<------>.type GetFreeBlockMaxEraseCount, %function
GetFreeBlockMaxEraseCount:
<------>adrp x2, .LANCHOR2
<------>add x4, x2, :lo12:.LANCHOR2
<------>and w0, w0, 65535
<------>ldr x1, [x4, 544]
<------>cbz x1, .L600
<------>ldrh w3, [x4, 552]
<------>mov w5, 7
<------>ldr x4, [x4, 504]
<------>mov w6, 6
<------>mov w7, 65535
<------>sub x1, x1, x4
<------>mul w3, w3, w5
<------>asr x1, x1, 1
<------>asr w3, w3, 3
<------>cmp w0, w3
<------>csel w0, w3, w0, gt
<------>mov x3, -6148914691236517206
<------>movk x3, 0xaaab, lsl 0
<------>mul x1, x1, x3
<------>mov w3, 0
<------>and w1, w1, 65535
.L596:
<------>cmp w0, w3
<------>beq .L599
<------>umull x5, w1, w6
<------>ldrh w5, [x4, x5]
<------>cmp w5, w7
<------>bne .L597
.L599:
<------>add x2, x2, :lo12:.LANCHOR2
<------>ubfiz x1, x1, 1, 16
<------>ldr x0, [x2, 440]
<------>ldrh w0, [x0, x1]
<------>ret
.L597:
<------>add w3, w3, 1
<------>mov w1, w5
<------>and w3, w3, 65535
<------>b .L596
.L600:
<------>mov w0, 0
<------>ret
<------>.size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
<------>.align 2
<------>.global FtlPrintInfo2buf
<------>.type FtlPrintInfo2buf, %function
FtlPrintInfo2buf:
<------>stp x29, x30, [sp, -112]!
<------>adrp x1, .LC5
<------>add x1, x1, :lo12:.LC5
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>adrp x24, .LANCHOR0
<------>add x24, x24, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>stp x21, x22, [sp, 32]
<------>add x20, x0, 12
<------>stp x25, x26, [sp, 64]
<------>mov x22, x0
<------>str x27, [sp, 80]
<------>bl strcpy
<------>ldr w2, [x24, 176]
<------>mov x0, x20
<------>adrp x1, .LC6
<------>add x1, x1, :lo12:.LC6
<------>bl sprintf
<------>add x20, x20, w0, sxtw
<------>ldr w2, [x24, 2560]
<------>mov x0, x20
<------>adrp x1, .LC7
<------>add x1, x1, :lo12:.LC7
<------>bl sprintf
<------>add x20, x20, w0, sxtw
<------>adrp x0, .LANCHOR1+504
<------>ldr w0, [x0, #:lo12:.LANCHOR1+504]
<------>cmp w0, 1
<------>beq .L602
<------>sub w0, w20, w22
.L601:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldr x27, [sp, 80]
<------>ldp x29, x30, [sp], 112
<------>ret
.L602:
<------>add x3, x29, 108
<------>add x2, x29, 104
<------>add x1, x29, 100
<------>add x0, x29, 96
<------>bl NandcGetTimeCfg
<------>adrp x25, .LANCHOR2
<------>ldp w4, w5, [x29, 104]
<------>adrp x1, .LC8
<------>ldp w2, w3, [x29, 96]
<------>add x1, x1, :lo12:.LC8
<------>mov x0, x20
<------>add x23, x25, :lo12:.LANCHOR2
<------>bl sprintf
<------>add x21, x20, w0, sxtw
<------>mov x0, x21
<------>adrp x1, .LC9
<------>add x1, x1, :lo12:.LC9
<------>bl strcpy
<------>ldr w2, [x24, 2616]
<------>add x21, x21, 10
<------>mov x0, x21
<------>adrp x1, .LC10
<------>add x1, x1, :lo12:.LC10
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 716]
<------>mov x0, x21
<------>adrp x1, .LC11
<------>add x1, x1, :lo12:.LC11
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 720]
<------>mov x0, x21
<------>adrp x1, .LC12
<------>add x1, x1, :lo12:.LC12
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 724]
<------>mov x0, x21
<------>adrp x1, .LC13
<------>add x1, x1, :lo12:.LC13
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 728]
<------>mov x0, x21
<------>adrp x1, .LC14
<------>add x1, x1, :lo12:.LC14
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 732]
<------>mov x0, x21
<------>adrp x1, .LC15
<------>add x1, x1, :lo12:.LC15
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 736]
<------>mov x0, x21
<------>adrp x1, .LC16
<------>add x1, x1, :lo12:.LC16
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 740]
<------>mov x0, x21
<------>adrp x1, .LC17
<------>add x1, x1, :lo12:.LC17
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 744]
<------>mov x0, x21
<------>adrp x1, .LC18
<------>add x1, x1, :lo12:.LC18
<------>lsr w2, w2, 11
<------>bl sprintf
<------>ldr w2, [x23, 748]
<------>add x21, x21, w0, sxtw
<------>mov x0, x21
<------>adrp x1, .LC19
<------>add x1, x1, :lo12:.LC19
<------>lsr w2, w2, 11
<------>bl sprintf
<------>ldr w2, [x23, 752]
<------>add x21, x21, w0, sxtw
<------>mov x0, x21
<------>adrp x1, .LC20
<------>add x1, x1, :lo12:.LC20
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 756]
<------>adrp x1, .LC21
<------>add x1, x1, :lo12:.LC21
<------>mov x0, x21
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>bl FtlBbtCalcTotleCnt
<------>and w3, w0, 65535
<------>ldrh w2, [x24, 2630]
<------>mov x0, x21
<------>adrp x1, .LC22
<------>add x1, x1, :lo12:.LC22
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 552]
<------>mov x0, x21
<------>adrp x1, .LC23
<------>add x1, x1, :lo12:.LC23
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 760]
<------>mov x0, x21
<------>adrp x1, .LC24
<------>add x1, x1, :lo12:.LC24
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 764]
<------>mov x0, x21
<------>adrp x1, .LC25
<------>add x1, x1, :lo12:.LC25
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 768]
<------>mov x0, x21
<------>adrp x1, .LC26
<------>add x1, x1, :lo12:.LC26
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 448]
<------>mov x0, x21
<------>adrp x1, .LC27
<------>add x1, x1, :lo12:.LC27
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 772]
<------>mov x0, x21
<------>adrp x1, .LC28
<------>add x1, x1, :lo12:.LC28
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x23, 776]
<------>mov x0, x21
<------>adrp x1, .LC29
<------>add x1, x1, :lo12:.LC29
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 486]
<------>mov x0, x21
<------>adrp x1, .LC30
<------>add x1, x1, :lo12:.LC30
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 484]
<------>mov x0, x21
<------>adrp x1, .LC31
<------>add x1, x1, :lo12:.LC31
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x24, 2584]
<------>mov x0, x21
<------>adrp x1, .LC32
<------>add x1, x1, :lo12:.LC32
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x24, 2576]
<------>mov x0, x21
<------>adrp x1, .LC33
<------>add x1, x1, :lo12:.LC33
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x24, 2468]
<------>mov x0, x21
<------>adrp x1, .LC34
<------>add x1, x1, :lo12:.LC34
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x24, 2726]
<------>mov x0, x21
<------>adrp x1, .LC35
<------>add x1, x1, :lo12:.LC35
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x24, 2480]
<------>mov x0, x21
<------>adrp x1, .LC36
<------>add x1, x1, :lo12:.LC36
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 780]
<------>mov x0, x21
<------>adrp x1, .LC37
<------>add x1, x1, :lo12:.LC37
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w2, [x24, 2484]
<------>mov x0, x21
<------>adrp x1, .LC38
<------>add x1, x1, :lo12:.LC38
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 784]
<------>mov x0, x21
<------>adrp x1, .LC39
<------>add x1, x1, :lo12:.LC39
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x24, 2624]
<------>mov x0, x21
<------>adrp x1, .LC40
<------>add x1, x1, :lo12:.LC40
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 562]
<------>mov x0, x21
<------>adrp x1, .LC41
<------>add x1, x1, :lo12:.LC41
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 566]
<------>mov x0, x21
<------>adrp x1, .LC42
<------>add x1, x1, :lo12:.LC42
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 560]
<------>mov x0, x21
<------>adrp x1, .LC43
<------>add x1, x1, :lo12:.LC43
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 568]
<------>mov x0, x21
<------>adrp x1, .LC44
<------>add x1, x1, :lo12:.LC44
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 564]
<------>mov x0, x21
<------>adrp x1, .LC45
<------>add x1, x1, :lo12:.LC45
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w1, [x23, 560]
<------>ldr x0, [x23, 520]
<------>ldrh w2, [x0, x1, lsl 1]
<------>mov x0, x21
<------>adrp x1, .LC46
<------>add x1, x1, :lo12:.LC46
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 610]
<------>mov x0, x21
<------>adrp x1, .LC47
<------>add x1, x1, :lo12:.LC47
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 614]
<------>mov x0, x21
<------>adrp x1, .LC48
<------>add x1, x1, :lo12:.LC48
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 608]
<------>mov x0, x21
<------>adrp x1, .LC49
<------>add x1, x1, :lo12:.LC49
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 616]
<------>mov x0, x21
<------>adrp x1, .LC50
<------>add x1, x1, :lo12:.LC50
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 612]
<------>mov x0, x21
<------>adrp x1, .LC51
<------>add x1, x1, :lo12:.LC51
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w1, [x23, 608]
<------>ldr x0, [x23, 520]
<------>ldrh w2, [x0, x1, lsl 1]
<------>mov x0, x21
<------>adrp x1, .LC52
<------>add x1, x1, :lo12:.LC52
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 658]
<------>mov x0, x21
<------>adrp x1, .LC53
<------>add x1, x1, :lo12:.LC53
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 662]
<------>mov x0, x21
<------>adrp x1, .LC54
<------>add x1, x1, :lo12:.LC54
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 656]
<------>mov x0, x21
<------>adrp x1, .LC55
<------>add x1, x1, :lo12:.LC55
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 664]
<------>mov x0, x21
<------>adrp x1, .LC56
<------>add x1, x1, :lo12:.LC56
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 660]
<------>mov x0, x21
<------>adrp x1, .LC57
<------>add x1, x1, :lo12:.LC57
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 802]
<------>mov x0, x21
<------>adrp x1, .LC58
<------>add x1, x1, :lo12:.LC58
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 806]
<------>mov x0, x21
<------>adrp x1, .LC59
<------>add x1, x1, :lo12:.LC59
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 800]
<------>mov x0, x21
<------>adrp x1, .LC60
<------>add x1, x1, :lo12:.LC60
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrb w2, [x23, 808]
<------>mov x0, x21
<------>adrp x1, .LC61
<------>add x1, x1, :lo12:.LC61
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldrh w2, [x23, 804]
<------>mov x0, x21
<------>adrp x1, .LC62
<------>add x1, x1, :lo12:.LC62
<------>bl sprintf
<------>add x21, x21, w0, sxtw
<------>ldr w5, [x23, 924]
<------>adrp x1, .LC63
<------>ldr w3, [x23, 928]
<------>add x1, x1, :lo12:.LC63
<------>ldr w4, [x23, 932]
<------>ldr w0, [x24, 2372]
<------>ldr w2, [x23, 1360]
<------>orr w2, w0, w2, lsl 8
<------>mov x0, x21
<------>bl sprintf
<------>add x19, x21, w0, sxtw
<------>ldr w2, [x23, 920]
<------>mov x0, x19
<------>adrp x1, .LC64
<------>add x1, x1, :lo12:.LC64
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldr w2, [x23, 944]
<------>mov x0, x19
<------>adrp x1, .LC65
<------>add x1, x1, :lo12:.LC65
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldrh w2, [x23, 1364]
<------>mov x0, x19
<------>adrp x1, .LC66
<------>add x1, x1, :lo12:.LC66
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldrh w2, [x23, 1366]
<------>mov x0, x19
<------>adrp x1, .LC67
<------>add x1, x1, :lo12:.LC67
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldr w2, [x23, 1368]
<------>mov x0, x19
<------>adrp x1, .LC68
<------>add x1, x1, :lo12:.LC68
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldrh w2, [x23, 1372]
<------>adrp x1, .LC69
<------>add x1, x1, :lo12:.LC69
<------>mov x0, x19
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>bl GetFreeBlockMinEraseCount
<------>and w2, w0, 65535
<------>adrp x1, .LC70
<------>mov x0, x19
<------>add x1, x1, :lo12:.LC70
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldrh w0, [x23, 552]
<------>bl GetFreeBlockMaxEraseCount
<------>and w2, w0, 65535
<------>adrp x1, .LC71
<------>mov x0, x19
<------>add x1, x1, :lo12:.LC71
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldrh w0, [x23, 800]
<------>mov w1, 65535
<------>cmp w0, w1
<------>beq .L604
<------>ldr x1, [x23, 520]
<------>ubfiz x0, x0, 1, 16
<------>ldrh w2, [x1, x0]
<------>mov x0, x19
<------>adrp x1, .LC72
<------>add x1, x1, :lo12:.LC72
<------>bl sprintf
<------>add x19, x19, w0, sxtw
.L604:
<------>mov w0, 0
<------>adrp x23, .LC73
<------>bl List_get_gc_head_node
<------>add x21, x25, :lo12:.LANCHOR2
<------>and w3, w0, 65535
<------>add x23, x23, :lo12:.LC73
<------>mov w20, 0
<------>mov w27, 65535
<------>mov w26, 6
.L606:
<------>cmp w3, w27
<------>beq .L605
<------>umull x24, w3, w26
<------>ldr x0, [x21, 504]
<------>ldr x4, [x21, 440]
<------>ubfiz x1, x3, 1, 16
<------>ldr x2, [x21, 520]
<------>add x0, x0, x24
<------>ldrh w6, [x4, x1]
<------>ldrh w5, [x0, 4]
<------>mov x0, x19
<------>ldrh w4, [x2, x1]
<------>mov w2, w20
<------>mov x1, x23
<------>add w20, w20, 1
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>ldr x0, [x21, 504]
<------>cmp w20, 16
<------>ldrh w3, [x0, x24]
<------>bne .L606
.L605:
<------>add x25, x25, :lo12:.LANCHOR2
<------>adrp x21, .LC74
<------>add x21, x21, :lo12:.LC74
<------>mov w20, 0
<------>mov w24, 65535
<------>mov w26, 6
<------>ldr x0, [x25, 504]
<------>ldr x3, [x25, 544]
<------>sub x3, x3, x0
<------>mov x0, -6148914691236517206
<------>asr x3, x3, 1
<------>movk x0, 0xaaab, lsl 0
<------>mul x3, x3, x0
<------>and w3, w3, 65535
.L608:
<------>cmp w3, w24
<------>beq .L607
<------>umull x23, w3, w26
<------>ldr x0, [x25, 504]
<------>ldr x2, [x25, 440]
<------>ubfiz x1, x3, 1, 16
<------>add x0, x0, x23
<------>ldrh w5, [x2, x1]
<------>mov w2, w20
<------>ldrh w4, [x0, 4]
<------>mov x1, x21
<------>mov x0, x19
<------>add w20, w20, 1
<------>bl sprintf
<------>add x19, x19, w0, sxtw
<------>cmp w20, 4
<------>beq .L607
<------>ldr x0, [x25, 504]
<------>ldrh w3, [x0, x23]
<------>b .L608
.L607:
<------>sub w0, w19, w22
<------>b .L601
<------>.size FtlPrintInfo2buf, .-FtlPrintInfo2buf
<------>.align 2
<------>.global ftl_proc_ftl_read
<------>.type ftl_proc_ftl_read, %function
ftl_proc_ftl_read:
<------>stp x29, x30, [sp, -32]!
<------>adrp x2, .LC75
<------>adrp x1, .LC76
<------>add x2, x2, :lo12:.LC75
<------>add x29, sp, 0
<------>add x1, x1, :lo12:.LC76
<------>stp x19, x20, [sp, 16]
<------>mov x20, x0
<------>bl sprintf
<------>add x19, x20, w0, sxtw
<------>mov x0, x19
<------>bl FtlPrintInfo2buf
<------>add x0, x19, w0, sxtw
<------>sub w0, w0, w20
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size ftl_proc_ftl_read, .-ftl_proc_ftl_read
<------>.align 2
<------>.global GetSwlReplaceBlock
<------>.type GetSwlReplaceBlock, %function
GetSwlReplaceBlock:
<------>stp x29, x30, [sp, -32]!
<------>adrp x8, .LANCHOR2
<------>add x0, x8, :lo12:.LANCHOR2
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>ldr w2, [x0, 768]
<------>ldr w1, [x0, 776]
<------>cmp w2, w1
<------>bcs .L617
<------>adrp x1, .LANCHOR0
<------>add x2, x1, :lo12:.LANCHOR0
<------>ldr x5, [x0, 440]
<------>str wzr, [x0, 760]
<------>ldrh w3, [x2, 2480]
<------>mov x2, 0
.L618:
<------>cmp w3, w2
<------>bhi .L619
<------>add x2, x8, :lo12:.LANCHOR2
<------>add x1, x1, :lo12:.LANCHOR0
<------>ldr w0, [x2, 760]
<------>ldrh w1, [x1, 2536]
<------>udiv w3, w0, w3
<------>str w3, [x2, 768]
<------>ldr w3, [x2, 764]
<------>sub w0, w0, w3
<------>udiv w0, w0, w1
<------>str w0, [x2, 760]
.L620:
<------>add x1, x8, :lo12:.LANCHOR2
<------>ldr w9, [x1, 776]
<------>ldr w10, [x1, 768]
<------>add w0, w9, 256
<------>cmp w0, w10
<------>bls .L625
<------>ldr w1, [x1, 772]
<------>add w0, w9, 768
<------>cmp w0, w1
<------>bls .L625
<------>adrp x0, .LANCHOR0+2372
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2372]
<------>cbnz w0, .L626
.L628:
<------>mov w20, 65535
.L627:
<------>mov w0, w20
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L619:
<------>ldrh w4, [x5, x2, lsl 1]
<------>add x2, x2, 1
<------>ldr w6, [x0, 760]
<------>add w4, w4, w6
<------>str w4, [x0, 760]
<------>b .L618
.L617:
<------>ldr w1, [x0, 772]
<------>cmp w2, w1
<------>bls .L620
<------>add w1, w1, 1
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>str w1, [x0, 772]
<------>mov w1, 0
.L622:
<------>ldrh w3, [x2, 2480]
<------>cmp w1, w3
<------>bcs .L620
<------>ldr x5, [x0, 440]
<------>ubfiz x4, x1, 1, 32
<------>add w1, w1, 1
<------>ldrh w3, [x5, x4]
<------>add w3, w3, 1
<------>strh w3, [x5, x4]
<------>b .L622
.L626:
<------>cmp w9, 40
<------>bhi .L628
.L625:
<------>add x0, x8, :lo12:.LANCHOR2
<------>ldrh w0, [x0, 552]
<------>add w0, w0, w0, lsl 1
<------>lsr w0, w0, 2
<------>bl GetFreeBlockMaxEraseCount
<------>and w6, w0, 65535
<------>add w0, w9, 64
<------>cmp w6, w0
<------>bcs .L629
<------>cmp w9, 40
<------>bhi .L628
.L629:
<------>add x1, x8, :lo12:.LANCHOR2
<------>ldr x0, [x1, 512]
<------>cbz x0, .L628
<------>adrp x2, .LANCHOR0+2480
<------>mov w4, 65535
<------>mov x13, -6148914691236517206
<------>mov w11, w4
<------>ldrh w12, [x2, #:lo12:.LANCHOR0+2480]
<------>mov w2, w4
<------>ldr x5, [x1, 440]
<------>movk x13, 0xaaab, lsl 0
<------>ldr x7, [x1, 504]
<------>mov w14, 6
<------>mov w1, 0
.L630:
<------>ldrh w3, [x0]
<------>cmp w3, w11
<------>bne .L633
<------>mov w20, w2
.L632:
<------>mov w0, 65535
<------>cmp w20, w0
<------>beq .L628
<------>ubfiz x7, x20, 1, 32
<------>ldrh w3, [x5, x7]
<------>cmp w9, w3
<------>bcs .L634
<------>bl GetFreeBlockMinEraseCount
<------>cmp w9, w0, uxth
<------>bcs .L634
<------>add x0, x8, :lo12:.LANCHOR2
<------>str w4, [x0, 776]
.L634:
<------>cmp w10, w3
<------>bls .L628
<------>add w0, w3, 128
<------>cmp w6, w0
<------>ble .L628
<------>add w0, w3, 256
<------>cmp w10, w0
<------>bhi .L635
<------>add x0, x8, :lo12:.LANCHOR2
<------>add w3, w3, 768
<------>ldr w0, [x0, 772]
<------>cmp w3, w0
<------>bcs .L628
.L635:
<------>add x19, x8, :lo12:.LANCHOR2
<------>ldrh w5, [x5, x7]
<------>mov w2, w10
<------>mov w1, w20
<------>ldr x0, [x19, 520]
<------>ldr w3, [x19, 772]
<------>ldrh w4, [x0, x7]
<------>adrp x0, .LC77
<------>add x0, x0, :lo12:.LC77
<------>bl printk
<------>mov w0, 1
<------>str w0, [x19, 1376]
<------>b .L627
.L633:
<------>add w1, w1, 1
<------>and w1, w1, 65535
<------>cmp w1, w12
<------>bhi .L628
<------>ldrh w15, [x0, 4]
<------>cbz w15, .L631
<------>sub x0, x0, x7
<------>asr x0, x0, 1
<------>mul x0, x0, x13
<------>and w20, w0, 65535
<------>and x0, x0, 65535
<------>ldrh w0, [x5, x0, lsl 1]
<------>cmp w9, w0
<------>bcs .L632
<------>cmp w4, w0
<------>bls .L631
<------>mov w4, w0
<------>mov w2, w20
.L631:
<------>umaddl x0, w3, w14, x7
<------>b .L630
<------>.size GetSwlReplaceBlock, .-GetSwlReplaceBlock
<------>.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 .L646
<------>stp x29, x30, [sp, -16]!
<------>adrp x2, .LANCHOR2+520
<------>ubfiz x1, x0, 1, 16
<------>add x29, sp, 0
<------>ldr x2, [x2, #:lo12:.LANCHOR2+520]
<------>strh wzr, [x2, x1]
<------>bl INSERT_FREE_LIST
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L646:
<------>mov w0, 0
<------>ret
<------>.size free_data_superblock, .-free_data_superblock
<------>.align 2
<------>.global FtlGcBufInit
<------>.type FtlGcBufInit, %function
FtlGcBufInit:
<------>adrp x0, .LANCHOR2
<------>add x1, x0, :lo12:.LANCHOR2
<------>adrp x3, .LANCHOR0
<------>mov x7, x0
<------>add x9, x3, :lo12:.LANCHOR0
<------>mov w8, 0
<------>mov w10, 24
<------>mov w11, 1
<------>mov w4, 4
<------>mov w12, 56
<------>str wzr, [x1, 1380]
.L650:
<------>ldrh w0, [x9, 2472]
<------>cmp w8, w0
<------>bcc .L651
<------>add x3, x3, :lo12:.LANCHOR0
<------>add x1, x7, :lo12:.LANCHOR2
<------>mov w6, 4
<------>mov w7, 24
.L652:
<------>ldr w2, [x1, 1416]
<------>cmp w0, w2
<------>bcc .L653
<------>ret
.L651:
<------>umull x2, w8, w10
<------>ldr x5, [x1, 1384]
<------>ldr x6, [x1, 1392]
<------>add x0, x5, x2
<------>str w11, [x0, 16]
<------>ldrh w0, [x9, 2554]
<------>mul w0, w0, w8
<------>sdiv w0, w0, w4
<------>add x0, x6, w0, sxtw 2
<------>str x0, [x5, x2]
<------>ldrh w0, [x9, 2556]
<------>ldr x6, [x1, 1384]
<------>ldr x13, [x1, 1400]
<------>add x5, x6, x2
<------>mul w0, w0, w8
<------>sdiv w0, w0, w4
<------>add x0, x13, w0, sxtw 2
<------>str x0, [x5, 8]
<------>ldr x0, [x1, 1408]
<------>ldr x2, [x6, x2]
<------>nop // between mem op and mult-accumulate
<------>umaddl x0, w8, w12, x0
<------>add w8, w8, 1
<------>and w8, w8, 65535
<------>str x2, [x0, 8]
<------>ldr x2, [x5, 8]
<------>str x2, [x0, 16]
<------>b .L650
.L653:
<------>umull x5, w0, w7
<------>ldr x4, [x1, 1384]
<------>ldr x8, [x1, 1392]
<------>add x2, x4, x5
<------>str wzr, [x2, 16]
<------>ldrh w2, [x3, 2554]
<------>mul w2, w2, w0
<------>sdiv w2, w2, w6
<------>add x2, x8, w2, sxtw 2
<------>str x2, [x4, x5]
<------>ldrh w2, [x3, 2556]
<------>ldr x4, [x1, 1384]
<------>add x4, x4, x5
<------>ldr x5, [x1, 1400]
<------>mul w2, w2, w0
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>sdiv w2, w2, w6
<------>add x2, x5, w2, sxtw 2
<------>str x2, [x4, 8]
<------>b .L652
<------>.size FtlGcBufInit, .-FtlGcBufInit
<------>.align 2
<------>.global FtlGcBufFree
<------>.type FtlGcBufFree, %function
FtlGcBufFree:
<------>adrp x2, .LANCHOR2
<------>add x2, x2, :lo12:.LANCHOR2
<------>mov w3, 0
<------>mov w7, 56
<------>mov w9, 24
<------>ldr w8, [x2, 1416]
<------>ldr x4, [x2, 1384]
.L655:
<------>cmp w3, w1
<------>bcs .L654
<------>umaddl x6, w3, w7, x0
<------>mov w2, 0
<------>b .L660
.L656:
<------>add w2, w2, 1
<------>and w2, w2, 65535
.L660:
<------>cmp w2, w8
<------>bcs .L657
<------>umull x5, w2, w9
<------>add x10, x4, x5
<------>ldr x11, [x4, x5]
<------>ldr x5, [x6, 8]
<------>cmp x11, x5
<------>bne .L656
<------>str wzr, [x10, 16]
.L657:
<------>add w3, w3, 1
<------>and w3, w3, 65535
<------>b .L655
.L654:
<------>ret
<------>.size FtlGcBufFree, .-FtlGcBufFree
<------>.align 2
<------>.global FtlGcBufAlloc
<------>.type FtlGcBufAlloc, %function
FtlGcBufAlloc:
<------>adrp x2, .LANCHOR2
<------>add x2, x2, :lo12:.LANCHOR2
<------>mov w3, 0
<------>mov w7, 24
<------>mov w8, 1
<------>mov w9, 56
<------>ldr w5, [x2, 1416]
<------>ldr x6, [x2, 1384]
.L662:
<------>cmp w3, w1
<------>bcs .L661
<------>mov w2, 0
<------>b .L667
.L663:
<------>add w2, w2, 1
<------>and w2, w2, 65535
.L667:
<------>cmp w2, w5
<------>bcs .L664
<------>umaddl x4, w2, w7, x6
<------>ldr w10, [x4, 16]
<------>cbnz w10, .L663
<------>umaddl x2, w3, w9, x0
<------>ldr x10, [x4]
<------>str w8, [x4, 16]
<------>str x10, [x2, 8]
<------>ldr x4, [x4, 8]
<------>str x4, [x2, 16]
.L664:
<------>add w3, w3, 1
<------>and w3, w3, 65535
<------>b .L662
.L661:
<------>ret
<------>.size FtlGcBufAlloc, .-FtlGcBufAlloc
<------>.align 2
<------>.global IsBlkInGcList
<------>.type IsBlkInGcList, %function
IsBlkInGcList:
<------>adrp x1, .LANCHOR2
<------>add x1, x1, :lo12:.LANCHOR2
<------>and w0, w0, 65535
<------>ldrh w2, [x1, 1420]
<------>ldr x3, [x1, 1424]
<------>mov x1, 0
.L669:
<------>cmp w2, w1, uxth
<------>bhi .L671
<------>mov w0, 0
<------>ret
.L671:
<------>add x1, x1, 1
<------>add x4, x3, x1, lsl 1
<------>ldrh w4, [x4, -2]
<------>cmp w4, w0
<------>bne .L669
<------>mov w0, 1
<------>ret
<------>.size IsBlkInGcList, .-IsBlkInGcList
<------>.align 2
<------>.global FtlGcUpdatePage
<------>.type FtlGcUpdatePage, %function
FtlGcUpdatePage:
<------>mov w5, w0
<------>mov w8, w1
<------>mov w7, w2
<------>stp x29, x30, [sp, -16]!
<------>lsr w0, w0, 10
<------>add x29, sp, 0
<------>bl P2V_block_in_plane
<------>and w9, w0, 65535
<------>adrp x3, .LANCHOR2
<------>add x4, x3, :lo12:.LANCHOR2
<------>ldrh w1, [x4, 1420]
<------>ldr x6, [x4, 1424]
<------>mov x4, 0
.L674:
<------>and w2, w4, 65535
<------>cmp w2, w1
<------>bcc .L676
<------>bne .L675
<------>and x4, x4, 65535
<------>strh w0, [x6, x4, lsl 1]
<------>add x4, x3, :lo12:.LANCHOR2
<------>ldrh w0, [x4, 1420]
<------>add w0, w0, 1
<------>strh w0, [x4, 1420]
<------>b .L675
.L676:
<------>add x4, x4, 1
<------>add x2, x6, x4, lsl 1
<------>ldrh w2, [x2, -2]
<------>cmp w2, w9
<------>bne .L674
.L675:
<------>add x0, x3, :lo12:.LANCHOR2
<------>mov w1, 12
<------>ldrh w3, [x0, 1432]
<------>ldr x4, [x0, 1440]
<------>umull x3, w3, w1
<------>add x4, x4, x3
<------>str w8, [x4, 4]
<------>ldr x1, [x0, 1440]
<------>add x4, x1, x3
<------>str w7, [x4, 8]
<------>str w5, [x1, x3]
<------>ldrh w1, [x0, 1432]
<------>add w1, w1, 1
<------>strh w1, [x0, 1432]
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlGcUpdatePage, .-FtlGcUpdatePage
<------>.align 2
<------>.global FtlGcRefreshOpenBlock
<------>.type FtlGcRefreshOpenBlock, %function
FtlGcRefreshOpenBlock:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>and w20, w0, 65535
<------>ldrh w0, [x19, 1448]
<------>cmp w0, w20
<------>beq .L680
<------>ldrh w0, [x19, 1450]
<------>cmp w0, w20
<------>beq .L680
<------>ldrh w0, [x19, 1452]
<------>cmp w0, w20
<------>beq .L680
<------>ldrh w0, [x19, 1454]
<------>cmp w0, w20
<------>beq .L680
<------>mov w1, w20
<------>adrp x0, .LC78
<------>add x0, x0, :lo12:.LC78
<------>bl printk
<------>ldrh w1, [x19, 1448]
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L682
<------>strh w20, [x19, 1448]
.L680:
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L682:
<------>ldrh w1, [x19, 1450]
<------>cmp w1, w0
<------>bne .L683
<------>strh w20, [x19, 1450]
<------>b .L680
.L683:
<------>ldrh w1, [x19, 1452]
<------>cmp w1, w0
<------>bne .L684
<------>strh w20, [x19, 1452]
<------>b .L680
.L684:
<------>ldrh w1, [x19, 1454]
<------>cmp w1, w0
<------>bne .L680
<------>strh w20, [x19, 1454]
<------>b .L680
<------>.size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock
<------>.align 2
<------>.global FtlGcRefreshBlock
<------>.type FtlGcRefreshBlock, %function
FtlGcRefreshBlock:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>and w20, w0, 65535
<------>str x21, [sp, 32]
<------>ldrh w0, [x19, 1448]
<------>cmp w0, w20
<------>beq .L693
<------>ldrh w0, [x19, 1450]
<------>cmp w0, w20
<------>beq .L693
<------>ldrh w0, [x19, 1452]
<------>cmp w0, w20
<------>beq .L693
<------>ldrh w0, [x19, 1454]
<------>mov w21, 0
<------>cmp w0, w20
<------>beq .L686
<------>mov w1, w20
<------>adrp x0, .LC78
<------>add x0, x0, :lo12:.LC78
<------>bl printk
<------>ldrh w1, [x19, 1448]
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L688
<------>strh w20, [x19, 1448]
.L686:
<------>mov w0, w21
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L688:
<------>ldrh w1, [x19, 1450]
<------>cmp w1, w0
<------>bne .L689
<------>strh w20, [x19, 1450]
<------>b .L686
.L689:
<------>ldrh w1, [x19, 1452]
<------>cmp w1, w0
<------>bne .L690
<------>strh w20, [x19, 1452]
<------>b .L686
.L690:
<------>ldrh w1, [x19, 1454]
<------>cmp w1, w0
<------>bne .L695
<------>strh w20, [x19, 1454]
<------>b .L686
.L693:
<------>mov w21, 0
<------>b .L686
.L695:
<------>mov w21, -1
<------>b .L686
<------>.size FtlGcRefreshBlock, .-FtlGcRefreshBlock
<------>.align 2
<------>.global FtlGcMarkBadPhyBlk
<------>.type FtlGcMarkBadPhyBlk, %function
FtlGcMarkBadPhyBlk:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>add x22, x19, :lo12:.LANCHOR2
<------>and w20, w0, 65535
<------>str x23, [sp, 48]
<------>mov w0, w20
<------>bl P2V_block_in_plane
<------>ldrh w1, [x22, 1456]
<------>mov w2, w20
<------>and w21, w0, 65535
<------>adrp x0, .LC79
<------>add x0, x0, :lo12:.LC79
<------>bl printk
<------>mov w0, w21
<------>bl FtlGcRefreshBlock
<------>adrp x0, .LANCHOR0+2372
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2372]
<------>cbz w0, .L698
<------>ldr x2, [x22, 440]
<------>ubfiz x0, x21, 1, 16
<------>ldrh w1, [x2, x0]
<------>cmp w1, 39
<------>bls .L698
<------>sub w1, w1, #40
<------>strh w1, [x2, x0]
.L698:
<------>add x2, x19, :lo12:.LANCHOR2
<------>mov x1, 0
<------>add x2, x2, 1464
<------>ldrh w0, [x2, -8]
.L699:
<------>cmp w0, w1, uxth
<------>bhi .L701
<------>cmp w0, 15
<------>bhi .L700
<------>add x19, x19, :lo12:.LANCHOR2
<------>add w1, w0, 1
<------>add x19, x19, 1464
<------>strh w1, [x19, -8]
<------>strh w20, [x19, w0, sxtw 1]
<------>b .L700
.L701:
<------>add x1, x1, 1
<------>add x3, x2, x1, lsl 1
<------>ldrh w3, [x3, -2]
<------>cmp w3, w20
<------>bne .L699
.L700:
<------>mov w0, 0
<------>ldr x23, [sp, 48]
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
<------>.align 2
<------>.global FtlGcReFreshBadBlk
<------>.type FtlGcReFreshBadBlk, %function
FtlGcReFreshBadBlk:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w1, [x0, 1456]
<------>cbz w1, .L707
<------>ldrh w3, [x0, 1448]
<------>mov w2, 65535
<------>cmp w3, w2
<------>bne .L707
<------>ldrh w2, [x0, 1498]
<------>cmp w2, w1
<------>bcc .L708
<------>strh wzr, [x0, 1498]
.L708:
<------>add x19, x19, :lo12:.LANCHOR2
<------>add x0, x19, 1464
<------>ldrh w1, [x19, 1498]
<------>ldrh w0, [x0, x1, lsl 1]
<------>bl P2V_block_in_plane
<------>bl FtlGcRefreshBlock
<------>ldrh w0, [x19, 1498]
<------>add w0, w0, 1
<------>strh w0, [x19, 1498]
.L707:
<------>mov w0, 0
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
<------>.align 2
<------>.global ftl_memset
<------>.type ftl_memset, %function
ftl_memset:
<------>stp x29, x30, [sp, -16]!
<------>uxtw x2, w2
<------>add x29, sp, 0
<------>bl memset
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_memset, .-ftl_memset
<------>.align 2
<------>.global BuildFlashLsbPageTable
<------>.type BuildFlashLsbPageTable, %function
BuildFlashLsbPageTable:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w20, w1
<------>cbnz w0, .L716
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x1, x1, 208
<------>mov x0, 0
.L717:
<------>strh w0, [x1, x0, lsl 1]
<------>add x0, x0, 1
<------>cmp x0, 512
<------>bne .L717
.L723:
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>add x19, x19, 1500
<------>mov w1, 255
<------>mov w2, 2048
<------>mov x0, x19
<------>bl ftl_memset
<------>and w20, w20, 65535
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>add x0, x0, 208
<------>mov x1, 0
.L718:
<------>cmp w20, w1, uxth
<------>bhi .L751
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L716:
<------>cmp w0, 1
<------>bne .L719
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>add x2, x2, 208
<------>mov x1, 0
.L722:
<------>and w0, w1, 65535
<------>cmp x1, 3
<------>bls .L720
<------>ubfiz w3, w0, 1, 15
<------>and w0, w0, 1
<------>add w0, w0, 2
<------>sub w0, w3, w0
<------>and w0, w0, 65535
.L720:
<------>strh w0, [x2, x1, lsl 1]
<------>add x1, x1, 1
<------>cmp x1, 512
<------>bne .L722
<------>b .L723
.L719:
<------>cmp w0, 2
<------>bne .L724
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>add x2, x2, 208
<------>mov w1, 65535
<------>mov x0, 0
.L726:
<------>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 .L726
<------>b .L723
.L724:
<------>cmp w0, 3
<------>bne .L727
<------>adrp x2, .LANCHOR0
<------>add x2, x2, :lo12:.LANCHOR0
<------>add x2, x2, 208
<------>mov x1, 0
.L730:
<------>and w0, w1, 65535
<------>cmp x1, 5
<------>bls .L728
<------>ubfiz w3, w0, 1, 15
<------>and w0, w0, 1
<------>add w0, w0, 4
<------>sub w0, w3, w0
<------>and w0, w0, 65535
.L728:
<------>strh w0, [x2, x1, lsl 1]
<------>add x1, x1, 1
<------>cmp x1, 512
<------>bne .L730
<------>b .L723
.L727:
<------>cmp w0, 4
<------>bne .L731
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>mov w3, 1
<------>add x1, x1, 224
<------>strh w0, [x1, -8]
<------>mov w0, 5
<------>strh w3, [x1, -14]
<------>mov w3, 2
<------>strh w0, [x1, -6]
<------>mov w0, 7
<------>strh w3, [x1, -12]
<------>mov w3, 3
<------>strh w0, [x1, -4]
<------>mov w0, 8
<------>strh wzr, [x1, -16]
<------>strh w0, [x1, -2]
<------>mov w0, 8
<------>strh w3, [x1, -10]
.L733:
<------>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 .L733
<------>b .L723
.L731:
<------>cmp w0, 5
<------>bne .L734
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x2, x1, 208
<------>mov x0, 0
.L735:
<------>strh w0, [x2, x0, lsl 1]
<------>add x0, x0, 1
<------>cmp x0, 16
<------>bne .L735
<------>add x1, x1, 240
.L736:
<------>strh w0, [x1], 2
<------>add w0, w0, 2
<------>and w0, w0, 65535
<------>cmp w0, 1008
<------>bne .L736
<------>b .L723
.L734:
<------>cmp w0, 6
<------>bne .L737
<------>adrp x3, .LANCHOR0
<------>add x3, x3, :lo12:.LANCHOR0
<------>add x3, x3, 208
<------>mov w1, 0
<------>mov x2, 0
<------>mov w4, 12
<------>mov w5, 10
.L740:
<------>and w0, w2, 65535
<------>cmp x2, 5
<------>bls .L738
<------>tst x0, 1
<------>csel w0, w4, w5, ne
<------>sub w0, w1, w0
<------>and w0, w0, 65535
.L738:
<------>strh w0, [x3, x2, lsl 1]
<------>add w1, w1, 3
<------>and w1, w1, 65535
<------>add x2, x2, 1
<------>cmp w1, 1536
<------>bne .L740
<------>b .L723
.L737:
<------>cmp w0, 9
<------>bne .L741
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w2, 1
<------>add x0, x0, 214
<------>mov w1, 3
<------>strh w2, [x0, -4]
<------>mov w2, 2
<------>strh wzr, [x0, -6]
<------>strh w2, [x0, -2]
.L742:
<------>strh w1, [x0], 2
<------>add w1, w1, 2
<------>and w1, w1, 65535
<------>cmp w1, 1021
<------>bne .L742
<------>b .L723
.L741:
<------>cmp w0, 10
<------>bne .L743
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x2, x1, 208
<------>mov x0, 0
.L744:
<------>strh w0, [x2, x0, lsl 1]
<------>add x0, x0, 1
<------>cmp x0, 63
<------>bne .L744
<------>add x1, x1, 334
.L745:
<------>strh w0, [x1], 2
<------>add w0, w0, 2
<------>and w0, w0, 65535
<------>cmp w0, 961
<------>bne .L745
<------>b .L723
.L743:
<------>cmp w0, 11
<------>bne .L746
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>add x2, x1, 208
<------>mov x0, 0
.L747:
<------>strh w0, [x2, x0, lsl 1]
<------>add x0, x0, 1
<------>cmp x0, 8
<------>bne .L747
<------>add x1, x1, 224
.L749:
<------>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 .L749
<------>b .L723
.L746:
<------>cmp w0, 12
<------>bne .L723
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w2, 1
<------>add x0, x0, 216
<------>mov w1, 4
<------>strh w2, [x0, -6]
<------>mov w2, 2
<------>strh wzr, [x0, -8]
<------>strh w2, [x0, -4]
<------>mov w2, 3
<------>strh w2, [x0, -2]
.L750:
<------>sub w2, w1, #1
<------>add w2, w2, w1, lsr 1
<------>add w1, w1, 1
<------>strh w2, [x0], 2
<------>and w1, w1, 65535
<------>cmp w1, 512
<------>bne .L750
<------>b .L723
.L751:
<------>ldrh w2, [x0, x1, lsl 1]
<------>add x1, x1, 1
<------>strh w2, [x19, w2, sxtw 1]
<------>b .L718
<------>.size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
<------>.align 2
<------>.global FlashDieInfoInit
<------>.type FlashDieInfoInit, %function
FlashDieInfoInit:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR2
<------>add x0, x21, :lo12:.LANCHOR2
<------>stp x19, x20, [sp, 16]
<------>adrp x22, .LANCHOR0
<------>add x19, x22, :lo12:.LANCHOR0
<------>add x20, x19, 1232
<------>strb wzr, [x0, 3548]
<------>adrp x0, .LANCHOR1+482
<------>strb wzr, [x19, 2358]
<------>ldrh w0, [x0, #:lo12:.LANCHOR1+482]
<------>bl FlashBlockAlignInit
<------>mov w2, 8
<------>mov w1, 0
<------>add x0, x19, 2360
<------>bl ftl_memset
<------>mov w2, 32
<------>mov w1, 0
<------>mov x0, x20
<------>bl ftl_memset
<------>mov w2, 192
<------>mov w1, 0
<------>add x0, x19, 2164
<------>bl ftl_memset
<------>ldr x7, [x19, 88]
<------>add x11, x19, 2132
<------>mov x8, 0
<------>add x12, x7, 1
.L775:
<------>ldrb w2, [x7]
<------>add x1, x11, x8, lsl 3
<------>mov x0, x12
<------>bl FlashMemCmp8
<------>cbnz w0, .L774
<------>ldrb w0, [x19, 2358]
<------>add w1, w0, 1
<------>strb w1, [x19, 2358]
<------>str wzr, [x20, x0, lsl 2]
<------>add x0, x19, x0
<------>strb w8, [x0, 2360]
.L774:
<------>add x8, x8, 1
<------>cmp x8, 4
<------>bne .L775
<------>add x8, x22, :lo12:.LANCHOR0
<------>add x0, x21, :lo12:.LANCHOR2
<------>ldrb w1, [x8, 2358]
<------>strb w1, [x0, 3548]
<------>ldrb w0, [x7, 8]
<------>cmp w0, 2
<------>beq .L776
.L780:
<------>add x9, x22, :lo12:.LANCHOR0
<------>ldrh w1, [x7, 14]
<------>add x10, x21, :lo12:.LANCHOR2
<------>ldp x19, x20, [sp, 16]
<------>ldrb w0, [x9, 2358]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>mul w0, w0, w1
<------>ldrb w1, [x7, 13]
<------>mul w0, w0, w1
<------>strh w0, [x10, 3550]
<------>ret
.L776:
<------>ldr w14, [x8, 76]
<------>add x15, x8, 2132
<------>add x13, x8, 1232
<------>mov x11, 0
.L779:
<------>ldrb w2, [x7]
<------>add x1, x15, x11, lsl 3
<------>mov x0, x12
<------>bl FlashMemCmp8
<------>cbnz w0, .L777
<------>ldrb w1, [x7, 13]
<------>ldrh w0, [x7, 14]
<------>ldrb w2, [x8, 2358]
<------>and w0, w0, 65280
<------>mul w1, w1, w14
<------>mul w0, w0, w1
<------>sxtw x1, w2
<------>str w0, [x13, x1, lsl 2]
<------>ldrb w3, [x7, 23]
<------>cbz w3, .L778
<------>lsl w0, w0, 1
<------>str w0, [x13, x1, lsl 2]
.L778:
<------>add x1, x8, x1
<------>add w2, w2, 1
<------>strb w2, [x8, 2358]
<------>strb w11, [x1, 2360]
.L777:
<------>add x11, x11, 1
<------>cmp x11, 4
<------>bne .L779
<------>b .L780
<------>.size FlashDieInfoInit, .-FlashDieInfoInit
<------>.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, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w4, 1
<------>ldr x1, [x0, 88]
<------>ldrb w2, [x1, 9]
<------>ldr w1, [x0, 76]
<------>mul w1, w1, w2
<------>mov x2, 0
<------>strh w1, [x19, 4]
<------>ldrb w1, [x0, 2464]
<------>strb w1, [x19, 7]
<------>ldr w1, [x0, 2584]
<------>str w1, [x19]
<------>ldr x1, [x0, 88]
<------>ldrb w3, [x0, 2358]
<------>ldrb w1, [x1, 9]
<------>strb w1, [x19, 6]
<------>mov w1, 32
<------>strb w1, [x19, 8]
<------>ldr x1, [x0, 88]
<------>add x0, x0, 2360
<------>ldrb w1, [x1, 7]
<------>strb w1, [x19, 9]
<------>strb wzr, [x19, 10]
.L789:
<------>cmp w3, w2, uxtb
<------>bhi .L790
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L790:
<------>ldrb w1, [x2, x0]
<------>add x2, x2, 1
<------>ldrb w5, [x19, 10]
<------>lsl w1, w4, w1
<------>orr w1, w1, w5
<------>strb w1, [x19, 10]
<------>b .L789
<------>.size ftl_read_flash_info, .-ftl_read_flash_info
<------>.align 2
<------>.global FtlMemInit
<------>.type FtlMemInit, %function
FtlMemInit:
<------>stp x29, x30, [sp, -80]!
<------>mov w1, 65535
<------>mov w2, 1024
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR2
<------>add x0, x21, :lo12:.LANCHOR2
<------>stp x19, x20, [sp, 16]
<------>add x3, x0, 512
<------>stp x23, x24, [sp, 48]
<------>str x25, [sp, 64]
<------>add x4, x0, 512
<------>strh wzr, [x0, 3552]
<------>add x5, x0, 3328
<------>str wzr, [x0, 448]
<------>adrp x22, .LANCHOR0
<------>stp wzr, wzr, [x3, 208]
<------>stp wzr, wzr, [x3, 216]
<------>str wzr, [x0, 736]
<------>str wzr, [x0, 740]
<------>stp wzr, wzr, [x4, 240]
<------>stp wzr, wzr, [x4, 248]
<------>str wzr, [x0, 772]
<------>str wzr, [x0, 776]
<------>str wzr, [x0, 1360]
<------>str wzr, [x0, 1368]
<------>str wzr, [x0, 1376]
<------>stp w1, wzr, [x5, 236]
<------>mov w1, -1
<------>stp wzr, wzr, [x5, 228]
<------>str wzr, [x0, 3572]
<------>strh w1, [x0, 1448]
<------>strh w1, [x0, 1450]
<------>strh w1, [x0, 1452]
<------>strh w1, [x0, 1454]
<------>mov w1, 32
<------>strh w1, [x0, 1364]
<------>mov w1, 128
<------>strh w1, [x0, 1366]
<------>add x1, x22, :lo12:.LANCHOR0
<------>strh wzr, [x0, 1372]
<------>strh wzr, [x0, 1456]
<------>ldrh w3, [x1, 2550]
<------>ldrh w1, [x1, 2472]
<------>strh wzr, [x0, 3576]
<------>strh wzr, [x0, 1498]
<------>sdiv w2, w2, w3
<------>lsl w1, w1, 2
<------>str w2, [x0, 3580]
<------>cmp w2, w1
<------>bls .L793
<------>str w1, [x0, 3580]
.L793:
<------>add x20, x22, :lo12:.LANCHOR0
<------>add x19, x21, :lo12:.LANCHOR2
<------>mov w24, 56
<------>ldrh w0, [x20, 2548]
<------>str wzr, [x20, 2600]
<------>lsl w0, w0, 1
<------>bl ftl_malloc
<------>ldrh w1, [x20, 2548]
<------>str x0, [x19, 1424]
<------>mov w0, 12
<------>mul w0, w1, w0
<------>bl ftl_malloc
<------>ldrh w23, [x20, 2472]
<------>str x0, [x19, 1440]
<------>mul w23, w23, w24
<------>lsl w25, w23, 3
<------>mov w0, w25
<------>bl ftl_malloc
<------>str x0, [x19, 3584]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3592]
<------>mov w0, w25
<------>bl ftl_malloc
<------>str x0, [x19, 3600]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 432]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 1408]
<------>ldr w0, [x19, 3580]
<------>mul w0, w0, w24
<------>bl ftl_malloc
<------>str x0, [x20, 2608]
<------>ldrh w0, [x20, 2472]
<------>ldrh w23, [x20, 2554]
<------>lsl w0, w0, 1
<------>add w0, w0, 1
<------>str w0, [x19, 1416]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3608]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3616]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3624]
<------>ldr w0, [x19, 1416]
<------>mul w0, w23, w0
<------>bl ftl_malloc
<------>str x0, [x19, 1392]
<------>ldr w0, [x19, 3580]
<------>mul w0, w23, w0
<------>bl ftl_malloc
<------>str x0, [x19, 3632]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3640]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3648]
<------>ldr w1, [x19, 1416]
<------>mov w0, 24
<------>mul w0, w1, w0
<------>bl ftl_malloc
<------>ldrh w23, [x20, 2556]
<------>str x0, [x19, 1384]
<------>ldrh w0, [x20, 2472]
<------>mul w23, w23, w0
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3656]
<------>lsl w0, w23, 3
<------>bl ftl_malloc
<------>str x0, [x19, 3664]
<------>ldrh w1, [x20, 2556]
<------>ldr w0, [x19, 1416]
<------>mul w0, w1, w0
<------>bl ftl_malloc
<------>str x0, [x19, 1400]
<------>ldrh w1, [x20, 2556]
<------>ldr w0, [x19, 3580]
<------>mul w0, w1, w0
<------>bl ftl_malloc
<------>str x0, [x19, 3672]
<------>ldrh w0, [x20, 2482]
<------>ubfiz w0, w0, 1, 15
<------>strh w0, [x19, 3680]
<------>and w0, w0, 65534
<------>bl ftl_malloc
<------>str x0, [x19, 3688]
<------>ldrh w0, [x19, 3680]
<------>add x0, x0, 547
<------>lsr x0, x0, 9
<------>strh w0, [x19, 3680]
<------>lsl w0, w0, 9
<------>bl ftl_malloc
<------>ldrh w23, [x20, 2482]
<------>str x0, [x19, 3696]
<------>add x0, x0, 32
<------>str x0, [x19, 440]
<------>lsl w23, w23, 1
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3704]
<------>mov w0, w23
<------>bl ftl_malloc
<------>ldr w23, [x20, 2572]
<------>str x0, [x19, 520]
<------>lsl w23, w23, 1
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3712]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3720]
<------>ldrh w0, [x20, 2482]
<------>lsr w0, w0, 3
<------>add w0, w0, 4
<------>bl ftl_malloc
<------>str x0, [x20, 64]
<------>ldrh w0, [x20, 2564]
<------>lsl w0, w0, 1
<------>bl ftl_malloc
<------>str x0, [x20, 2592]
<------>ldrh w0, [x20, 2564]
<------>lsl w0, w0, 1
<------>bl ftl_malloc
<------>str x0, [x19, 3728]
<------>ldrh w0, [x20, 2564]
<------>lsl w0, w0, 2
<------>bl ftl_malloc
<------>str x0, [x19, 3736]
<------>ldrh w0, [x20, 2566]
<------>lsl w0, w0, 2
<------>bl ftl_malloc
<------>ldrh w2, [x20, 2566]
<------>mov w1, 0
<------>str x0, [x19, 3744]
<------>lsl w2, w2, 2
<------>bl ftl_memset
<------>ldrh w23, [x20, 2580]
<------>lsl w23, w23, 2
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3752]
<------>mov w0, w23
<------>bl ftl_malloc
<------>str x0, [x19, 3760]
<------>ldr w0, [x20, 2572]
<------>lsl w0, w0, 2
<------>bl ftl_malloc
<------>str x0, [x19, 3768]
<------>ldrh w0, [x20, 2582]
<------>lsl w0, w0, 4
<------>bl ftl_malloc
<------>ldrh w1, [x20, 2582]
<------>str x0, [x19, 704]
<------>ldrh w0, [x20, 2554]
<------>mul w0, w1, w0
<------>bl ftl_malloc
<------>str x0, [x19, 3776]
<------>ldrh w1, [x20, 2482]
<------>mov w0, 6
<------>mul w0, w1, w0
<------>bl ftl_malloc
<------>str x0, [x19, 504]
<------>ldrh w0, [x20, 2542]
<------>ldrh w1, [x20, 2494]
<------>add w0, w0, 31
<------>asr w0, w0, 5
<------>strh w0, [x19, 3784]
<------>mul w0, w1, w0
<------>lsl w0, w0, 2
<------>bl ftl_malloc
<------>ldrh w3, [x19, 3784]
<------>add x4, x20, 2664
<------>ldrh w5, [x20, 2494]
<------>mov w1, w3
<------>str x0, [x20, 2656]
<------>mov x0, 1
.L794:
<------>cmp w0, w5
<------>bcc .L795
<------>mov w1, 8
<------>add x3, x22, :lo12:.LANCHOR0
<------>sub w1, w1, w0
<------>add x3, x3, 2624
<------>add x1, x1, 1
<------>mov x2, 0
.L796:
<------>add x2, x2, 1
<------>cmp x2, x1
<------>bne .L797
<------>add x0, x21, :lo12:.LANCHOR2
<------>ldr x1, [x0, 3712]
<------>cbnz x1, .L798
.L800:
<------>adrp x1, .LANCHOR3
<------>adrp x0, .LC80
<------>add x1, x1, :lo12:.LANCHOR3
<------>add x0, x0, :lo12:.LC80
<------>bl printk
<------>mov w0, -1
.L792:
<------>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
.L795:
<------>ldr x2, [x20, 2656]
<------>add w0, w0, 1
<------>add x2, x2, w1, uxtw 2
<------>add w1, w1, w3
<------>str x2, [x4], 8
<------>b .L794
.L797:
<------>add x4, x0, x2
<------>add x4, x3, x4, lsl 3
<------>str xzr, [x4, 24]
<------>b .L796
.L798:
<------>ldr x1, [x0, 3720]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3752]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3768]
<------>cbz x1, .L800
<------>ldr x1, [x0, 704]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3776]
<------>cbz x1, .L800
<------>ldr x1, [x0, 504]
<------>cbz x1, .L800
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldr x1, [x22, 2656]
<------>cbz x1, .L800
<------>ldr x0, [x0, 520]
<------>cbz x0, .L800
<------>add x0, x21, :lo12:.LANCHOR2
<------>ldr x1, [x0, 1424]
<------>cbz x1, .L800
<------>ldr x1, [x0, 1440]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3584]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3600]
<------>cbz x1, .L800
<------>ldr x1, [x0, 432]
<------>cbz x1, .L800
<------>ldr x1, [x0, 1408]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3592]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3608]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3616]
<------>cbz x1, .L800
<------>ldr x0, [x0, 3624]
<------>cbz x0, .L800
<------>add x0, x21, :lo12:.LANCHOR2
<------>ldr x1, [x0, 1392]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3640]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3648]
<------>cbz x1, .L800
<------>ldr x1, [x0, 1384]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3656]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3664]
<------>cbz x1, .L800
<------>ldr x1, [x0, 1400]
<------>cbz x1, .L800
<------>ldr x1, [x0, 440]
<------>cbz x1, .L800
<------>ldr x0, [x0, 3688]
<------>cbz x0, .L800
<------>adrp x0, .LANCHOR0+2592
<------>ldr x0, [x0, #:lo12:.LANCHOR0+2592]
<------>cbz x0, .L800
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldr x1, [x0, 3728]
<------>cbz x1, .L800
<------>ldr x1, [x0, 3736]
<------>cbz x1, .L800
<------>ldr x0, [x0, 3744]
<------>cbz x0, .L800
<------>mov w0, 0
<------>b .L792
<------>.size FtlMemInit, .-FtlMemInit
<------>.align 2
<------>.global FtlBbt2Bitmap
<------>.type FtlBbt2Bitmap, %function
FtlBbt2Bitmap:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x20, x0
<------>adrp x0, .LANCHOR2+3784
<------>mov x19, x1
<------>mov w1, 0
<------>ldrh w2, [x0, #:lo12:.LANCHOR2+3784]
<------>mov x0, x19
<------>lsl w2, w2, 2
<------>bl ftl_memset
<------>adrp x3, .LANCHOR0
<------>add x3, x3, :lo12:.LANCHOR0
<------>mov x1, 0
<------>mov w6, 65535
<------>mov w5, 1
.L897:
<------>ldrh w0, [x20, x1]
<------>cmp w0, w6
<------>beq .L895
<------>ubfx x2, x0, 5, 11
<------>lsl w0, w5, w0
<------>lsl x2, x2, 2
<------>add x1, x1, 2
<------>cmp x1, 1024
<------>ldr w4, [x19, x2]
<------>orr w0, w4, w0
<------>str w0, [x19, x2]
<------>ldrh w0, [x3, 2630]
<------>add w0, w0, 1
<------>strh w0, [x3, 2630]
<------>bne .L897
.L895:
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlBbt2Bitmap, .-FtlBbt2Bitmap
<------>.align 2
<------>.global FtlBbtMemInit
<------>.type FtlBbtMemInit, %function
FtlBbtMemInit:
<------>stp x29, x30, [sp, -16]!
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w1, -1
<------>add x29, sp, 0
<------>mov w2, 16
<------>add x0, x0, 2636
<------>strh w1, [x0, -12]
<------>mov w1, 255
<------>strh wzr, [x0, -6]
<------>bl ftl_memset
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlBbtMemInit, .-FtlBbtMemInit
<------>.align 2
<------>.global FtlFreeSysBlkQueueInit
<------>.type FtlFreeSysBlkQueueInit, %function
FtlFreeSysBlkQueueInit:
<------>stp x29, x30, [sp, -16]!
<------>adrp x3, .LANCHOR0
<------>add x3, x3, :lo12:.LANCHOR0
<------>mov w2, 2048
<------>add x29, sp, 0
<------>mov w1, 0
<------>strh w0, [x3, 2720]
<------>add x0, x3, 2728
<------>strh wzr, [x3, 2722]
<------>strh wzr, [x3, 2724]
<------>strh wzr, [x3, 2726]
<------>bl ftl_memset
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
<------>.align 2
<------>.global ftl_free_no_use_map_blk
<------>.type ftl_free_no_use_map_blk, %function
ftl_free_no_use_map_blk:
<------>stp x29, x30, [sp, -80]!
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x0
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>str x25, [sp, 64]
<------>ldrh w2, [x0, 10]
<------>ldp x21, x20, [x0, 32]
<------>ldr x22, [x0, 16]
<------>lsl w2, w2, 1
<------>mov x0, x21
<------>bl ftl_memset
<------>mov w0, 0
.L906:
<------>ldrh w1, [x19, 6]
<------>cmp w1, w0
<------>bhi .L910
<------>adrp x0, .LANCHOR0+2546
<------>mov w23, 0
<------>mov w20, 0
<------>ldrh w1, [x0, #:lo12:.LANCHOR0+2546]
<------>ldrh w0, [x19]
<------>strh w1, [x21, x0, lsl 1]
<------>ldrh w24, [x21]
.L911:
<------>ldrh w0, [x19, 10]
<------>cmp w0, w20
<------>bhi .L915
<------>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
.L910:
<------>ubfiz x1, x0, 2, 16
<------>ldr w2, [x20, x1]
<------>mov w1, 0
<------>ubfx x2, x2, 10, 16
.L907:
<------>ldrh w3, [x19, 10]
<------>cmp w3, w1
<------>bhi .L909
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>b .L906
.L909:
<------>ubfiz x3, x1, 1, 16
<------>ldrh w4, [x22, x3]
<------>cmp w4, w2
<------>bne .L908
<------>cbz w2, .L908
<------>ldrh w4, [x21, x3]
<------>add w4, w4, 1
<------>strh w4, [x21, x3]
.L908:
<------>add w1, w1, 1
<------>and w1, w1, 65535
<------>b .L907
.L915:
<------>ubfiz x0, x20, 1, 16
<------>ldrh w1, [x21, x0]
<------>cmp w24, w1
<------>bls .L912
<------>add x25, x22, x0
<------>ldrh w0, [x22, x0]
<------>cbnz w0, .L913
.L914:
<------>add w20, w20, 1
<------>and w20, w20, 65535
<------>b .L911
.L912:
<------>cbnz w1, .L914
<------>add x25, x22, x0
<------>ldrh w0, [x22, x0]
<------>cbz w0, .L914
.L916:
<------>mov w1, 1
<------>bl FtlFreeSysBlkQueueIn
<------>strh wzr, [x25]
<------>ldrh w0, [x19, 8]
<------>sub w0, w0, #1
<------>strh w0, [x19, 8]
<------>b .L914
.L917:
<------>mov w24, 0
<------>b .L916
.L913:
<------>mov w23, w20
<------>cbz w1, .L917
<------>mov w24, w1
<------>b .L914
<------>.size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
<------>.align 2
<------>.global FtlL2PDataInit
<------>.type FtlL2PDataInit, %function
FtlL2PDataInit:
<------>stp x29, x30, [sp, -48]!
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>str x21, [sp, 32]
<------>add x21, x19, :lo12:.LANCHOR2
<------>adrp x20, .LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldr x0, [x21, 3720]
<------>ldr w2, [x20, 2572]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>ldrh w0, [x20, 2582]
<------>mov w1, 255
<------>ldrh w2, [x20, 2554]
<------>mul w2, w2, w0
<------>ldr x0, [x21, 3776]
<------>bl ftl_memset
<------>mov x0, x21
<------>mov w1, 0
<------>mov w5, -1
.L927:
<------>ldrh w2, [x20, 2582]
<------>cmp w2, w1
<------>bhi .L928
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w2, -1
<------>add x1, x0, 3792
<------>strh w2, [x0, 3794]
<------>strh w2, [x0, 3792]
<------>ldr w2, [x20, 2572]
<------>strh w2, [x0, 3802]
<------>mov w2, -3902
<------>strh w2, [x0, 3796]
<------>ldrh w2, [x0, 3856]
<------>strh w2, [x0, 3800]
<------>ldrh w2, [x20, 2580]
<------>strh w2, [x0, 3798]
<------>ldr x2, [x0, 3712]
<------>str x2, [x0, 3808]
<------>ldr x2, [x0, 3768]
<------>str x2, [x0, 3816]
<------>ldr x2, [x0, 3720]
<------>str x2, [x0, 3824]
<------>ldr x0, [x0, 3752]
<------>str x0, [x1, 40]
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L928:
<------>ldr x3, [x0, 704]
<------>ubfiz x2, x1, 4, 16
<------>add x3, x3, x2
<------>str wzr, [x3, 4]
<------>ldr x3, [x0, 704]
<------>strh w5, [x3, x2]
<------>ldr x3, [x0, 704]
<------>ldr x4, [x0, 3776]
<------>add x3, x3, x2
<------>ldrh w2, [x20, 2554]
<------>mul w2, w2, w1
<------>add w1, w1, 1
<------>and w1, w1, 65535
<------>sxtw x2, w2
<------>and x2, x2, -4
<------>add x2, x4, x2
<------>str x2, [x3, 8]
<------>b .L927
<------>.size FtlL2PDataInit, .-FtlL2PDataInit
<------>.align 2
<------>.global FtlVariablesInit
<------>.type FtlVariablesInit, %function
FtlVariablesInit:
<------>stp x29, x30, [sp, -32]!
<------>mov w0, -1
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>adrp x20, .LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR0
<------>strh w0, [x19, 3872]
<------>mov w0, -1
<------>str w0, [x19, 3884]
<------>ldr x0, [x20, 2592]
<------>ldrh w2, [x20, 2564]
<------>strh wzr, [x20, 2590]
<------>str xzr, [x19, 3864]
<------>lsl w2, w2, 1
<------>str wzr, [x19, 3876]
<------>str wzr, [x19, 3880]
<------>str wzr, [x20, 2372]
<------>bl ftl_memset
<------>ldr x0, [x19, 440]
<------>mov w1, 0
<------>ldrh w2, [x20, 2482]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>ldr x0, [x19, 3688]
<------>mov w1, 0
<------>ldrh w2, [x20, 2482]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>mov w2, 48
<------>mov w1, 0
<------>add x0, x19, 456
<------>bl ftl_memset
<------>mov w2, 512
<------>mov w1, 0
<------>add x0, x19, 848
<------>bl ftl_memset
<------>bl FtlGcBufInit
<------>bl FtlL2PDataInit
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlVariablesInit, .-FtlVariablesInit
<------>.align 2
<------>.global SupperBlkListInit
<------>.type SupperBlkListInit, %function
SupperBlkListInit:
<------>stp x29, x30, [sp, -64]!
<------>mov w0, 6
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>add x21, x21, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR2
<------>add x19, x20, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>add x24, x21, 2504
<------>ldrh w2, [x21, 2482]
<------>mov w22, 0
<------>mov w23, 0
<------>mul w2, w2, w0
<------>ldr x0, [x19, 504]
<------>bl ftl_memset
<------>strh wzr, [x19, 536]
<------>strh wzr, [x19, 552]
<------>strh wzr, [x19, 3552]
<------>str xzr, [x19, 512]
<------>str xzr, [x19, 528]
<------>str xzr, [x19, 544]
<------>mov w19, 0
.L933:
<------>ldrh w0, [x21, 2480]
<------>cmp w19, w0
<------>bge .L940
<------>ldrh w8, [x21, 2472]
<------>mov w5, 0
<------>ldrh w7, [x21, 2544]
<------>mov w6, 0
<------>b .L941
.L935:
<------>ldrb w0, [x24, w6, sxtw]
<------>mov w1, w19
<------>bl V2P_block
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L934
<------>add w5, w7, w5
<------>sxth w5, w5
.L934:
<------>add w6, w6, 1
<------>sxth w6, w6
.L941:
<------>cmp w6, w8
<------>blt .L935
<------>cbz w5, .L936
<------>mov w0, 32768
<------>sdiv w5, w0, w5
<------>sxth w5, w5
.L937:
<------>add x0, x20, :lo12:.LANCHOR2
<------>mov w1, 6
<------>ldr x2, [x0, 504]
<------>smaddl x1, w19, w1, x2
<------>strh w5, [x1, 4]
<------>ldrh w1, [x0, 560]
<------>cmp w19, w1
<------>beq .L938
<------>ldrh w1, [x0, 608]
<------>cmp w19, w1
<------>beq .L938
<------>ldrh w1, [x0, 656]
<------>cmp w19, w1
<------>beq .L938
<------>ldr x0, [x0, 520]
<------>ldrh w0, [x0, w19, sxtw 1]
<------>cbnz w0, .L939
<------>add w22, w22, 1
<------>mov w0, w19
<------>and w22, w22, 65535
<------>bl INSERT_FREE_LIST
.L938:
<------>add w19, w19, 1
<------>sxth w19, w19
<------>b .L933
.L936:
<------>add x0, x20, :lo12:.LANCHOR2
<------>mov w1, -1
<------>ldr x0, [x0, 520]
<------>strh w1, [x0, w19, sxtw 1]
<------>b .L937
.L939:
<------>add w23, w23, 1
<------>mov w0, w19
<------>and w23, w23, 65535
<------>bl INSERT_DATA_LIST
<------>b .L938
.L940:
<------>add x20, x20, :lo12:.LANCHOR2
<------>mov w0, 0
<------>strh w23, [x20, 536]
<------>strh w22, [x20, 552]
<------>ldp x23, x24, [sp, 48]
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size SupperBlkListInit, .-SupperBlkListInit
<------>.align 2
<------>.global FtlGcPageVarInit
<------>.type FtlGcPageVarInit, %function
FtlGcPageVarInit:
<------>stp x29, x30, [sp, -32]!
<------>mov w1, 255
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>adrp x20, .LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldr x0, [x19, 1424]
<------>ldrh w2, [x20, 2548]
<------>strh wzr, [x19, 1420]
<------>strh wzr, [x19, 1432]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>ldrh w2, [x20, 2548]
<------>mov w0, 12
<------>mov w1, 255
<------>mul w2, w2, w0
<------>ldr x0, [x19, 1440]
<------>bl ftl_memset
<------>bl FtlGcBufInit
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlGcPageVarInit, .-FtlGcPageVarInit
<------>.align 2
<------>.global ftl_memcpy
<------>.type ftl_memcpy, %function
ftl_memcpy:
<------>stp x29, x30, [sp, -16]!
<------>uxtw x2, w2
<------>add x29, sp, 0
<------>bl memcpy
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_memcpy, .-ftl_memcpy
<------>.align 2
<------>.global FlashReadIdbData
<------>.type FlashReadIdbData, %function
FlashReadIdbData:
<------>stp x29, x30, [sp, -16]!
<------>adrp x1, .LANCHOR2
<------>add x1, x1, :lo12:.LANCHOR2
<------>mov w2, 2048
<------>add x29, sp, 0
<------>add x1, x1, 3888
<------>bl ftl_memcpy
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FlashReadIdbData, .-FlashReadIdbData
<------>.align 2
<------>.global FlashLoadPhyInfoInRam
<------>.type FlashLoadPhyInfoInRam, %function
FlashLoadPhyInfoInRam:
<------>stp x29, x30, [sp, -48]!
<------>adrp x0, .LANCHOR0
<------>add x10, x0, :lo12:.LANCHOR0
<------>mov x7, x0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR1
<------>add x8, x19, :lo12:.LANCHOR1
<------>add x10, x10, 2132
<------>add x8, x8, 513
<------>mov x9, 0
<------>str x21, [sp, 32]
.L952:
<------>ldrb w2, [x8, -1]
<------>mov w11, w9
<------>lsl x21, x9, 5
<------>mov x1, x10
<------>mov x0, x8
<------>bl FlashMemCmp8
<------>mov w20, w0
<------>cbnz w0, .L950
<------>add x2, x19, :lo12:.LANCHOR1
<------>ubfiz x11, x11, 5, 32
<------>add x0, x2, 512
<------>add x1, x2, 3264
<------>add x21, x0, x21
<------>add x0, x0, x11
<------>ldrb w3, [x0, 22]
<------>mov x0, 0
.L951:
<------>lsl x4, x0, 5
<------>mov w2, w0
<------>ldrb w4, [x4, x1]
<------>cmp w4, w3
<------>beq .L954
<------>add x0, x0, 1
<------>cmp x0, 4
<------>bne .L951
<------>mov w2, w0
.L954:
<------>add x19, x19, :lo12:.LANCHOR1
<------>add x0, x7, :lo12:.LANCHOR0
<------>add x3, x19, 3264
<------>ubfiz x1, x2, 5, 32
<------>add x19, x19, 472
<------>add x1, x3, x1
<------>mov w2, 32
<------>add x0, x0, 96
<------>bl ftl_memcpy
<------>mov w2, 32
<------>mov x1, x21
<------>mov x0, x19
<------>bl ftl_memcpy
<------>ldrh w0, [x19, 10]
<------>bl FlashBlockAlignInit
<------>b .L949
.L950:
<------>add x9, x9, 1
<------>add x8, x8, 32
<------>cmp x9, 86
<------>bne .L952
<------>mov w20, -1
.L949:
<------>mov w0, w20
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
<------>.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 .L959
<------>cbz x3, .L960
<------>mov w2, 1024
<------>mov x1, x3
<------>bl ftl_memcpy
.L960:
<------>cbz x20, .L958
<------>lsr w19, w19, 1
<------>mov w1, 48
<------>ldr w0, [x20]
<------>mul w19, w19, w1
<------>and x19, x19, 8176
<------>str w0, [x21, x19]
.L958:
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L959:
<------>cbz x3, .L963
<------>mov x1, x0
<------>mov w2, 1024
<------>mov x0, x3
<------>bl ftl_memcpy
.L963:
<------>cbz x20, .L958
<------>lsr w19, w19, 1
<------>mov w0, 48
<------>mul w19, w19, w0
<------>and x19, x19, 8176
<------>ldr w0, [x21, x19]
<------>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 .L958
<------>.size NandcCopy1KB, .-NandcCopy1KB
<------>.align 2
<------>.global ftl_memcpy32
<------>.type ftl_memcpy32, %function
ftl_memcpy32:
<------>mov x3, 0
.L976:
<------>cmp w2, w3
<------>bhi .L977
<------>ret
.L977:
<------>ldr w4, [x1, x3, lsl 2]
<------>str w4, [x0, x3, lsl 2]
<------>add x3, x3, 1
<------>b .L976
<------>.size ftl_memcpy32, .-ftl_memcpy32
<------>.align 2
<------>.global ftl_memcmp
<------>.type ftl_memcmp, %function
ftl_memcmp:
<------>stp x29, x30, [sp, -16]!
<------>uxtw x2, w2
<------>add x29, sp, 0
<------>bl memcmp
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_memcmp, .-ftl_memcmp
<------>.align 2
<------>.global timer_get_time
<------>.type timer_get_time, %function
timer_get_time:
<------>stp x29, x30, [sp, -16]!
<------>adrp x0, jiffies
<------>add x29, sp, 0
<------>ldr x0, [x0, #:lo12:jiffies]
<------>bl jiffies_to_msecs
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size timer_get_time, .-timer_get_time
<------>.align 2
<------>.global FlashSramLoadStore
<------>.type FlashSramLoadStore, %function
FlashSramLoadStore:
<------>stp x29, x30, [sp, -16]!
<------>adrp x4, .LANCHOR4+1584
<------>uxtw x5, w1
<------>add x29, sp, 0
<------>ldr x4, [x4, #:lo12:.LANCHOR4+1584]
<------>add x4, x4, 4096
<------>cbnz w2, .L983
<------>mov w2, w3
<------>add x1, x4, x5
.L986:
<------>bl ftl_memcpy
<------>ldp x29, x30, [sp], 16
<------>ret
.L983:
<------>mov x1, x0
<------>mov w2, w3
<------>add x0, x4, x5
<------>b .L986
<------>.size FlashSramLoadStore, .-FlashSramLoadStore
<------>.align 2
<------>.global FlashCs123Init
<------>.type FlashCs123Init, %function
FlashCs123Init:
<------>ret
<------>.size FlashCs123Init, .-FlashCs123Init
<------>.align 2
<------>.global ftl_dma32_malloc
<------>.type ftl_dma32_malloc, %function
ftl_dma32_malloc:
<------>stp x29, x30, [sp, -48]!
<------>cmp w0, 8192
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>str x21, [sp, 32]
<------>ble .L989
<------>bl ftl_malloc
.L988:
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L989:
<------>adrp x1, .LANCHOR4
<------>add x21, x1, :lo12:.LANCHOR4
<------>add w19, w0, 63
<------>mov x20, x1
<------>and w19, w19, -64
<------>ldr w0, [x21, 1592]
<------>cmp w19, w0
<------>ble .L991
<------>mov w0, 16384
<------>bl ftl_malloc
<------>str x0, [x21, 1600]
<------>mov w0, 16384
<------>str w0, [x21, 1592]
.L991:
<------>add x1, x20, :lo12:.LANCHOR4
<------>ldr w0, [x1, 1592]
<------>sub w0, w0, w19
<------>str w0, [x1, 1592]
<------>ldr x0, [x1, 1600]
<------>add x19, x0, w19, sxtw
<------>str x19, [x1, 1600]
<------>b .L988
<------>.size ftl_dma32_malloc, .-ftl_dma32_malloc
<------>.align 2
<------>.global rk_nand_suspend
<------>.type rk_nand_suspend, %function
rk_nand_suspend:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_flash_suspend
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size rk_nand_suspend, .-rk_nand_suspend
<------>.align 2
<------>.global rk_nand_resume
<------>.type rk_nand_resume, %function
rk_nand_resume:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_flash_resume
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size rk_nand_resume, .-rk_nand_resume
<------>.align 2
<------>.global rk_ftl_get_capacity
<------>.type rk_ftl_get_capacity, %function
rk_ftl_get_capacity:
<------>adrp x0, .LANCHOR0+2584
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2584]
<------>ret
<------>.size rk_ftl_get_capacity, .-rk_ftl_get_capacity
<------>.align 2
<------>.global rk_nandc_get_irq_status
<------>.type rk_nandc_get_irq_status, %function
rk_nandc_get_irq_status:
<------>ldr w0, [x0, 372]
<------>ret
<------>.size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
<------>.align 2
<------>.global rknand_proc_ftlread
<------>.type rknand_proc_ftlread, %function
rknand_proc_ftlread:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_proc_ftl_read
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size rknand_proc_ftlread, .-rknand_proc_ftlread
<------>.align 2
<------>.global ReadFlashInfo
<------>.type ReadFlashInfo, %function
ReadFlashInfo:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_read_flash_info
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ReadFlashInfo, .-ReadFlashInfo
<------>.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, .LC82
<------>stp x23, x24, [sp, 48]
<------>mov x22, x1
<------>stp x25, x26, [sp, 64]
<------>adrp x23, .LC81
<------>mov x26, x0
<------>mov w24, w2
<------>uxtw x25, w3
<------>add x23, x23, :lo12:.LC81
<------>add x21, x21, :lo12:.LC82
<------>stp x19, x20, [sp, 16]
<------>str x27, [sp, 80]
<------>mov x19, 0
<------>mov w20, 0
<------>adrp x27, .LC83
.L1004:
<------>cmp x25, x19
<------>bne .L1010
<------>adrp x1, .LC83
<------>adrp x0, .LC76
<------>add x1, x1, :lo12:.LC83
<------>add x0, x0, :lo12:.LC76
<------>bl printk
<------>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
.L1010:
<------>cbnz w20, .L1005
<------>mov w3, w19
<------>mov x2, x22
<------>mov x1, x26
<------>mov x0, x23
<------>bl printk
.L1005:
<------>cmp w24, 4
<------>bne .L1006
<------>ldr w1, [x22, x19, lsl 2]
.L1012:
<------>mov x0, x21
<------>add w20, w20, 1
<------>bl printk
<------>cmp w20, 15
<------>bls .L1009
<------>mov w20, 0
<------>add x1, x27, :lo12:.LC83
<------>adrp x0, .LC76
<------>add x0, x0, :lo12:.LC76
<------>bl printk
.L1009:
<------>add x19, x19, 1
<------>b .L1004
.L1006:
<------>cmp w24, 2
<------>bne .L1008
<------>ldrsh w1, [x22, x19, lsl 1]
<------>b .L1012
.L1008:
<------>ldrb w1, [x22, x19]
<------>b .L1012
<------>.size rknand_print_hex, .-rknand_print_hex
<------>.align 2
<------>.global HynixGetReadRetryDefault
<------>.type HynixGetReadRetryDefault, %function
HynixGetReadRetryDefault:
<------>stp x29, x30, [sp, -128]!
<------>mov w3, -83
<------>mov w2, -82
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>add x1, x21, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>mov w20, w0
<------>add x0, x1, 1272
<------>stp x23, x24, [sp, 48]
<------>cmp w20, 2
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>strb w20, [x1, 1272]
<------>mov w1, -84
<------>strb w3, [x0, 5]
<------>strb w1, [x0, 4]
<------>mov w1, -81
<------>strb w2, [x0, 6]
<------>strb w1, [x0, 7]
<------>bne .L1014
<------>mov w1, -89
<------>strb w1, [x0, 4]
<------>adrp x0, .LANCHOR1+3409
<------>mov w1, -9
<------>strb w1, [x0, #:lo12:.LANCHOR1+3409]
.L1079:
<------>mov w27, 7
<------>b .L1123
.L1014:
<------>cmp w20, 3
<------>bne .L1016
<------>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
.L1122:
<------>mov w27, 8
<------>mov w28, w27
<------>strb w1, [x0, 11]
.L1015:
<------>sub w0, w20, #1
<------>cmp w0, 1
<------>bhi .L1021
<------>add x25, x21, :lo12:.LANCHOR0
<------>adrp x24, .LANCHOR1
<------>add x24, x24, :lo12:.LANCHOR1
<------>add x26, x25, 1272
<------>add x24, x24, 3392
<------>mov w23, 0
.L1022:
<------>ldrb w0, [x25, 2358]
<------>cmp w0, w23
<------>bhi .L1028
.L1029:
<------>add x21, x21, :lo12:.LANCHOR0
<------>ldp x19, x20, [sp, 16]
<------>strb w28, [x21, 1273]
<------>strb w27, [x21, 1274]
<------>ldp x23, x24, [sp, 48]
<------>ldp x21, x22, [sp, 32]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 128
<------>ret
.L1016:
<------>cmp w20, 4
<------>bne .L1017
<------>mov w4, -52
<------>strb w4, [x0, 4]
<------>mov w4, -65
<------>strb w4, [x0, 5]
<------>mov w4, -86
<------>strb w4, [x0, 6]
<------>mov w4, -85
<------>strb w3, [x0, 9]
<------>strb w4, [x0, 7]
<------>mov w4, -51
<------>strb w2, [x0, 10]
<------>strb w4, [x0, 8]
<------>b .L1122
.L1017:
<------>cmp w20, 5
<------>bne .L1018
<------>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]
.L1123:
<------>mov w28, 4
<------>b .L1015
.L1018:
<------>cmp w20, 6
<------>bne .L1019
<------>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 .L1123
.L1019:
<------>cmp w20, 7
<------>bne .L1020
<------>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 .L1015
.L1020:
<------>cmp w20, 8
<------>bne .L1079
<------>mov w1, 6
<------>strb w1, [x0, 4]
<------>mov w1, 7
<------>strb w1, [x0, 5]
<------>mov w1, 9
<------>strb w20, [x0, 6]
<------>strb w1, [x0, 7]
<------>mov w27, 50
<------>mov w1, 10
<------>mov w28, 5
<------>strb w1, [x0, 8]
<------>b .L1015
.L1028:
<------>add x0, x25, w23, sxtw
<------>mov x20, 0
<------>ldrb w0, [x0, 2360]
<------>ubfiz x19, x0, 6, 8
<------>sbfiz x0, x0, 4, 32
<------>add x1, x25, x0
<------>add x19, x19, 20
<------>add x19, x26, x19
<------>ldr x0, [x25, x0]
<------>ldrb w22, [x1, 8]
<------>mov w1, 55
<------>add x22, x0, x22, lsl 8
.L1023:
<------>add x0, x26, x20
<------>str w1, [x22, 2056]
<------>str w1, [x29, 124]
<------>ldrb w0, [x0, 4]
<------>str w0, [x22, 2052]
<------>mov x0, 400
<------>bl __const_udelay
<------>ldr w0, [x22, 2048]
<------>strb w0, [x19, x20]
<------>add x20, x20, 1
<------>cmp w28, w20, uxtb
<------>ldr w1, [x29, 124]
<------>bhi .L1023
<------>mov x0, 0
.L1026:
<------>add x1, x0, 4
<------>add x4, x0, 28
<------>add w5, w0, 8
<------>add x1, x24, x1
<------>add x4, x24, x4
.L1025:
<------>ldrb w6, [x19, x0]
<------>ldrb w7, [x1], 4
<------>add w6, w6, w7
<------>strb w6, [x19, w5, sxtw]
<------>cmp x4, x1
<------>add w5, w5, 8
<------>bne .L1025
<------>add x0, x0, 1
<------>cmp x0, 4
<------>bne .L1026
<------>add w23, w23, 1
<------>strb wzr, [x19, 16]
<------>strb wzr, [x19, 24]
<------>and w23, w23, 255
<------>strb wzr, [x19, 32]
<------>strb wzr, [x19, 40]
<------>strb wzr, [x19, 48]
<------>strb wzr, [x19, 41]
<------>strb wzr, [x19, 49]
<------>b .L1022
.L1021:
<------>sub w0, w20, #3
<------>cmp w0, 5
<------>bhi .L1029
<------>mul w26, w28, w27
<------>sub w25, w28, #1
<------>and x25, x25, 255
<------>add x22, x21, :lo12:.LANCHOR0
<------>mov w23, 0
<------>lsl w0, w26, 4
<------>asr w24, w26, 1
<------>str w0, [x29, 120]
<------>sub w26, w20, #5
<------>lsl w0, w24, 1
<------>str w0, [x29, 124]
<------>add x0, x25, 1
<------>str x0, [x29, 112]
.L1030:
<------>ldrb w0, [x22, 2358]
<------>cmp w0, w23
<------>bls .L1029
<------>add x0, x22, w23, sxtw
<------>ldrb w25, [x0, 2360]
<------>sbfiz x0, x25, 4, 32
<------>add x1, x22, x0
<------>ldr x0, [x22, x0]
<------>ldrb w19, [x1, 8]
<------>add x19, x0, x19, lsl 8
<------>mov w0, 255
<------>str w0, [x19, 2056]
<------>mov w0, w25
<------>bl NandcWaitFlashReady
<------>cmp w20, 7
<------>bne .L1031
<------>mov x1, 28
<------>mov w0, 160
<------>add x4, x22, 1272
<------>umaddl x0, w0, w25, x1
<------>add x4, x4, x0
.L1032:
<------>mov w0, 54
<------>str w0, [x19, 2056]
<------>cmp w20, 4
<------>bne .L1034
<------>mov w0, 255
<------>str w0, [x19, 2052]
<------>mov w0, 64
<------>str w0, [x19, 2048]
<------>mov w0, 204
.L1124:
<------>str w0, [x19, 2052]
<------>mov w0, 77
<------>b .L1125
.L1031:
<------>cmp w20, 8
<------>beq .L1033
<------>ubfiz x4, x25, 6, 8
<------>add x4, x22, x4
<------>add x4, x4, 1292
<------>b .L1032
.L1034:
<------>cmp w26, 1
<------>bhi .L1036
<------>ldrb w0, [x22, 1276]
<------>str w0, [x19, 2052]
<------>mov w0, 82
.L1125:
<------>str w0, [x19, 2048]
.L1035:
<------>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 w20, 6
<------>str wzr, [x19, 2052]
<------>str wzr, [x19, 2052]
<------>bne .L1037
<------>mov w0, 31
<------>str w0, [x19, 2052]
.L1038:
<------>mov w0, 2
<------>str w0, [x19, 2052]
<------>str wzr, [x19, 2052]
.L1078:
<------>mov w0, 48
<------>str w0, [x19, 2056]
<------>str x4, [x29, 104]
<------>mov w0, w25
<------>bl NandcWaitFlashReady
<------>cmp w26, 1
<------>ldr x4, [x29, 104]
<------>ccmp w20, 8, 4, hi
<------>beq .L1080
<------>cmp w20, 7
<------>mov w0, 2
<------>mov w6, 32
<------>csel w6, w6, w0, eq
.L1039:
<------>adrp x1, .LANCHOR4
<------>add x0, x1, :lo12:.LANCHOR4
<------>mov x7, 0
<------>ldr x0, [x0, 1608]
.L1040:
<------>ldr w8, [x19, 2048]
<------>strb w8, [x0, x7]
<------>add x7, x7, 1
<------>cmp w6, w7, uxtb
<------>bhi .L1040
<------>cmp w20, 8
<------>bne .L1041
<------>mov w6, 0
.L1043:
<------>ldrb w7, [x0]
<------>cmp w7, 50
<------>beq .L1042
<------>ldrb w7, [x0, 1]
<------>cmp w7, 5
<------>beq .L1042
<------>add w6, w6, 1
<------>add x0, x0, 4
<------>and w6, w6, 255
<------>cmp w6, 8
<------>bne .L1043
.L1044:
<------>adrp x0, .LC84
<------>mov w1, 0
<------>add x0, x0, :lo12:.LC84
<------>bl printk
.L1046:
<------>b .L1046
.L1036:
<------>cmp w20, 7
<------>bne .L1035
<------>mov w0, 174
<------>str w0, [x19, 2052]
<------>str wzr, [x19, 2048]
<------>mov w0, 176
<------>b .L1124
.L1037:
<------>str wzr, [x19, 2052]
<------>b .L1038
.L1080:
<------>mov w6, 16
<------>b .L1039
.L1042:
<------>cmp w6, 6
<------>bhi .L1044
.L1045:
<------>add x0, x1, :lo12:.LANCHOR4
<------>ldr x8, [x0, 1608]
<------>mov x0, 0
.L1055:
<------>ldr w2, [x29, 120]
<------>cmp w2, w0
<------>bgt .L1056
<------>add x0, x1, :lo12:.LANCHOR4
<------>mov w9, w24
<------>mov w7, 8
<------>ldr x10, [x0, 1608]
.L1058:
<------>mov w0, 0
.L1057:
<------>add w6, w0, w9
<------>add w0, w0, 1
<------>sbfiz x6, x6, 1, 32
<------>cmp w24, w0
<------>ldrh w11, [x10, x6]
<------>mvn w11, w11
<------>strh w11, [x10, x6]
<------>bgt .L1057
<------>ldr w0, [x29, 124]
<------>subs w7, w7, #1
<------>add w9, w9, w0
<------>bne .L1058
<------>mov x7, 0
<------>mov w14, 1
.L1064:
<------>mov w6, 0
<------>mov w9, 0
.L1063:
<------>mov w12, w7
<------>lsl w13, w14, w9
<------>mov w0, 16
<------>mov w11, 0
.L1061:
<------>ldrh w15, [x10, w12, sxtw 1]
<------>add w12, w12, w24
<------>bics wzr, w13, w15
<------>cinc w11, w11, eq
<------>subs w0, w0, #1
<------>bne .L1061
<------>cmp w11, 8
<------>bls .L1062
<------>orr w6, w6, w13
<------>and w6, w6, 65535
.L1062:
<------>add w9, w9, 1
<------>cmp w9, 16
<------>bne .L1063
<------>strh w6, [x10, x7, lsl 1]
<------>add x7, x7, 1
<------>cmp w24, w7
<------>bgt .L1064
<------>add x1, x1, :lo12:.LANCHOR4
<------>mov x6, 0
<------>mov w7, 0
<------>ldr x1, [x1, 1608]
.L1067:
<------>ldr w9, [x1, x6]
<------>add x6, x6, 4
<------>cmp w9, 0
<------>cinc w7, w7, eq
<------>cmp x6, 32
<------>bne .L1067
<------>cmp w7, 7
<------>ble .L1068
<------>mov w3, 1024
<------>mov w2, 1
<------>adrp x0, .LC85
<------>add x0, x0, :lo12:.LC85
<------>bl rknand_print_hex
<------>adrp x0, .LC84
<------>mov w1, 0
<------>add x0, x0, :lo12:.LC84
<------>bl printk
.L1069:
<------>b .L1069
.L1041:
<------>cmp w20, 7
<------>bne .L1047
<------>mov w6, 0
.L1049:
<------>ldrb w7, [x0]
<------>cmp w7, 12
<------>beq .L1048
<------>ldrb w7, [x0, 1]
<------>cmp w7, 10
<------>beq .L1048
<------>add w6, w6, 1
<------>add x0, x0, 4
<------>and w6, w6, 255
<------>cmp w6, 8
<------>bne .L1049
.L1050:
<------>adrp x0, .LC84
<------>mov w1, 0
<------>add x0, x0, :lo12:.LC84
<------>bl printk
.L1051:
<------>b .L1051
.L1048:
<------>cmp w6, 6
<------>bls .L1045
<------>b .L1050
.L1047:
<------>cmp w20, 6
<------>bne .L1045
<------>mov x6, 0
.L1052:
<------>ldrb w7, [x0, x6]
<------>cmp w7, 12
<------>beq .L1045
<------>add x7, x0, x6
<------>ldrb w7, [x7, 8]
<------>cmp w7, 4
<------>beq .L1045
<------>add x6, x6, 1
<------>cmp x6, 8
<------>bne .L1052
<------>adrp x0, .LC84
<------>mov w1, 0
<------>add x0, x0, :lo12:.LC84
<------>bl printk
.L1054:
<------>b .L1054
.L1056:
<------>ldr w6, [x19, 2048]
<------>strb w6, [x8, x0]
<------>add x0, x0, 1
<------>b .L1055
.L1068:
<------>cmp w20, 6
<------>beq .L1082
<------>cmp w20, 7
<------>beq .L1083
<------>cmp w20, 8
<------>mov w1, 8
<------>mov w6, 5
<------>csel w6, w6, w1, eq
.L1070:
<------>mov w7, 0
.L1071:
<------>mov x1, 0
.L1072:
<------>add w9, w0, w1
<------>ldrb w10, [x8, x1]
<------>add x1, x1, 1
<------>cmp w28, w1, uxtb
<------>strb w10, [x4, w9, sxtw]
<------>bhi .L1072
<------>ldr x1, [x29, 112]
<------>add w7, w7, 1
<------>add w0, w0, w6
<------>cmp w27, w7
<------>add x8, x8, x1
<------>bgt .L1071
<------>mov w0, 255
<------>str w0, [x19, 2056]
<------>mov w0, w25
<------>bl NandcWaitFlashReady
<------>cmp w26, 1
<------>bhi .L1074
<------>mov w0, 54
<------>str w0, [x19, 2056]
<------>adrp x0, .LANCHOR0+1276
<------>mov w1, -1
<------>ldrb w0, [x0, #:lo12:.LANCHOR0+1276]
<------>str w0, [x19, 2052]
<------>str wzr, [x19, 2048]
<------>mov w0, 22
<------>str w0, [x19, 2056]
<------>mov w0, w23
<------>bl FlashReadCmd
.L1075:
<------>add w23, w23, 1
<------>mov w0, w25
<------>and w23, w23, 255
<------>bl NandcWaitFlashReady
<------>b .L1030
.L1082:
<------>mov w6, 4
<------>b .L1070
.L1083:
<------>mov w6, 10
<------>b .L1070
.L1074:
<------>cmp w20, 8
<------>bne .L1076
<------>mov w0, 190
.L1126:
<------>str w0, [x19, 2056]
<------>b .L1075
.L1076:
<------>mov w0, 56
<------>b .L1126
.L1033:
<------>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 x4, x22, 1300
<------>str w0, [x19, 2056]
<------>mov w0, 4
<------>str w0, [x19, 2056]
<------>str w1, [x19, 2056]
<------>mov w1, 218
<------>str w1, [x19, 2056]
<------>mov w1, 21
<------>str wzr, [x19, 2056]
<------>str wzr, [x19, 2052]
<------>str wzr, [x19, 2052]
<------>str w1, [x19, 2052]
<------>str w0, [x19, 2052]
<------>str wzr, [x19, 2052]
<------>b .L1078
<------>.size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
<------>.align 2
<------>.global FlashGetReadRetryDefault
<------>.type FlashGetReadRetryDefault, %function
FlashGetReadRetryDefault:
<------>cbz w0, .L1140
<------>stp x29, x30, [sp, -16]!
<------>sub w2, w0, #1
<------>mov w1, w0
<------>cmp w2, 7
<------>add x29, sp, 0
<------>bhi .L1129
<------>bl HynixGetReadRetryDefault
.L1127:
<------>ldp x29, x30, [sp], 16
<------>ret
.L1129:
<------>cmp w0, 49
<------>bne .L1130
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w2, 64
<------>strb w1, [x0, 1272]
<------>mov w1, 4
<------>strb w1, [x0, 1273]
<------>mov w1, 15
<------>strb w1, [x0, 1274]
<------>adrp x1, .LANCHOR1
<------>add x1, x1, :lo12:.LANCHOR1
<------>add x1, x1, 408
.L1143:
<------>add x0, x0, 1276
<------>bl ftl_memcpy
<------>b .L1127
.L1130:
<------>sub w0, w0, #65
<------>cmp w1, 33
<------>ccmp w0, 1, 0, ne
<------>bhi .L1131
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>strb w1, [x0, 1272]
<------>mov w1, 4
.L1144:
<------>strb w1, [x0, 1273]
<------>mov w1, 7
<------>strb w1, [x0, 1274]
<------>adrp x1, .LANCHOR1
<------>add x1, x1, :lo12:.LANCHOR1
<------>mov w2, 45
<------>add x1, x1, 352
<------>b .L1143
.L1131:
<------>cmp w1, 34
<------>mov w0, 67
<------>ccmp w1, w0, 4, ne
<------>bne .L1132
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>strb w1, [x0, 1272]
<------>mov w1, 5
<------>b .L1144
.L1132:
<------>cmp w1, 35
<------>mov w0, 68
<------>ccmp w1, w0, 4, ne
<------>bne .L1127
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w2, 95
<------>strb w1, [x0, 1272]
<------>mov w1, 5
<------>strb w1, [x0, 1273]
<------>mov w1, 17
<------>strb w1, [x0, 1274]
<------>adrp x1, .LANCHOR1
<------>add x1, x1, :lo12:.LANCHOR1
<------>add x1, x1, 256
<------>b .L1143
.L1140:
<------>ret
<------>.size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
<------>.align 2
<------>.global NandcXferComp
<------>.type NandcXferComp, %function
NandcXferComp:
<------>stp x29, x30, [sp, -80]!
<------>ubfiz x0, x0, 4, 8
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>add x1, x20, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>ldr x19, [x1, x0]
<------>ldr w0, [x1, 2388]
<------>cmp w0, 3
<------>bls .L1176
<------>ldr w0, [x19, 16]
<------>tbz x0, 2, .L1176
<------>ldr w0, [x19, 16]
<------>tbz x0, 1, .L1147
<------>adrp x22, .LC86
<------>adrp x23, .LC87
<------>ldr w0, [x19, 8]
<------>mov x24, x1
<------>add x22, x22, :lo12:.LC86
<------>add x23, x23, :lo12:.LC87
<------>mov w21, 0
<------>str w0, [x29, 64]
.L1148:
<------>ldr w1, [x19, 28]
<------>ldr w0, [x29, 64]
<------>ubfx x1, x1, 16, 5
<------>ubfx x0, x0, 22, 6
<------>cmp w1, w0
<------>bge .L1156
<------>ldr w0, [x24, 2388]
<------>cmp w0, 5
<------>bhi .L1149
.L1152:
<------>add w21, w21, 1
<------>tst x21, 16777215
<------>bne .L1151
<------>ldr w2, [x19, 28]
<------>mov w1, w21
<------>ldr w3, [x29, 64]
<------>mov x0, x22
<------>ubfx x2, x2, 16, 5
<------>ubfx x3, x3, 22, 6
<------>bl printk
<------>mov w3, 512
<------>mov w2, 4
<------>mov x1, x19
<------>mov x0, x23
<------>bl rknand_print_hex
.L1151:
<------>mov x1, 5
<------>mov x0, 1
<------>bl usleep_range
<------>b .L1148
.L1149:
<------>ldr w0, [x19]
<------>str w0, [x29, 72]
<------>ldr w0, [x29, 72]
<------>tbz x0, 13, .L1152
<------>ldr w0, [x29, 72]
<------>tbz x0, 17, .L1152
.L1156:
<------>add x19, x20, :lo12:.LANCHOR0
<------>add x19, x19, 2408
<------>ldr w0, [x19, 40]
<------>cbz w0, .L1157
<------>ldr w0, [x19, 32]
<------>mov w2, 0
<------>ldr w1, [x29, 64]
<------>ubfx x1, x1, 22, 5
<------>lsl w1, w1, 10
<------>bl rknand_dma_unmap_single
<------>ldr w1, [x29, 64]
<------>mov w2, 0
<------>ldr w0, [x19, 36]
<------>ubfx x1, x1, 22, 5
<------>lsl w1, w1, 7
<------>bl rknand_dma_unmap_single
.L1157:
<------>add x20, x20, :lo12:.LANCHOR0
<------>str wzr, [x20, 2448]
.L1145:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 80
<------>ret
.L1147:
<------>adrp x22, .LC88
<------>adrp x23, .LC87
<------>ldr w0, [x19, 8]
<------>add x22, x22, :lo12:.LC88
<------>add x23, x23, :lo12:.LC87
<------>mov w21, 0
<------>str w0, [x29, 64]
.L1158:
<------>ldr w0, [x29, 64]
<------>tbz x0, 20, .L1160
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr w0, [x0, 2456]
<------>cbz w0, .L1161
<------>mov x0, x19
<------>bl NandcSendDumpDataStart
.L1161:
<------>add x21, x20, :lo12:.LANCHOR0
<------>add x21, x21, 2408
<------>ldr w0, [x21, 40]
<------>cbz w0, .L1162
<------>ldr w0, [x21, 32]
<------>mov w2, 1
<------>ldr w1, [x29, 64]
<------>ubfx x1, x1, 22, 5
<------>lsl w1, w1, 10
<------>bl rknand_dma_unmap_single
<------>ldr w1, [x29, 64]
<------>mov w2, 1
<------>ldr w0, [x21, 36]
<------>ubfx x1, x1, 22, 5
<------>lsl w1, w1, 7
<------>bl rknand_dma_unmap_single
.L1162:
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr w0, [x0, 2456]
<------>cbz w0, .L1157
<------>mov x0, x19
<------>bl NandcSendDumpDataDone
<------>b .L1157
.L1160:
<------>ldr w0, [x19, 8]
<------>add w21, w21, 1
<------>str w0, [x29, 64]
<------>tst x21, 16777215
<------>bne .L1159
<------>ldr w2, [x29, 64]
<------>mov w1, w21
<------>ldr w3, [x19, 28]
<------>mov x0, x22
<------>ubfx x3, x3, 16, 5
<------>bl printk
<------>mov w3, 512
<------>mov w2, 4
<------>mov x1, x19
<------>mov x0, x23
<------>bl rknand_print_hex
.L1159:
<------>mov x1, 5
<------>mov x0, 1
<------>bl usleep_range
<------>b .L1158
.L1176:
<------>ldr w0, [x19, 8]
<------>str w0, [x29, 64]
<------>ldr w0, [x29, 64]
<------>tbz x0, 20, .L1176
<------>b .L1145
<------>.size NandcXferComp, .-NandcXferComp
<------>.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 x21, x22, [sp, 32]
<------>sbfiz x0, x25, 4, 32
<------>stp x19, x20, [sp, 16]
<------>and w21, w1, 255
<------>adrp x19, .LANCHOR0
<------>add x1, x19, :lo12:.LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>mov x26, x3
<------>stp x27, x28, [sp, 80]
<------>and w24, w2, 255
<------>mov x22, x4
<------>ldr x20, [x1, x0]
<------>bne .L1186
<------>cbnz x4, .L1187
<------>add x22, x29, 128
<------>mov w2, 64
<------>mov w1, 255
<------>add x0, x29, 128
<------>bl ftl_memset
.L1187:
<------>mov x5, x22
<------>mov x4, x26
<------>mov w2, w24
<------>mov w3, 0
<------>mov w1, w21
<------>mov w0, w25
<------>bl NandcXferStart
<------>mov w1, w21
<------>mov w0, w25
<------>bl NandcXferComp
<------>cbnz w21, .L1211
<------>add x1, x19, :lo12:.LANCHOR0
<------>ubfx x2, x24, 1, 7
<------>add x2, x22, x2, lsl 2
<------>mov w3, 64
<------>ldr w0, [x1, 2460]
<------>cmp w0, 25
<------>mov w0, 128
<------>csel w3, w3, w0, cc
<------>mov w0, 0
.L1190:
<------>add w4, w3, w0
<------>cmp x22, x2
<------>bne .L1191
<------>add x0, x19, :lo12:.LANCHOR0
<------>lsr w24, w24, 2
<------>mov w2, 0
<------>mov w23, 0
<------>ldr w3, [x0, 2388]
<------>ldr w4, [x0, 2460]
.L1192:
<------>cmp w2, w24
<------>bcs .L1188
<------>cbnz w4, .L1198
.L1188:
<------>str wzr, [x20, 16]
.L1199:
<------>add x19, x19, :lo12:.LANCHOR0
<------>ldr w0, [x19, 2388]
<------>cmp w0, 5
<------>bls .L1185
<------>cbnz w21, .L1185
<------>ldr w0, [x20]
<------>mov w1, 8192
<------>movk w1, 0x2, lsl 16
<------>and w1, w0, w1
<------>cmp w1, 139264
<------>bne .L1185
<------>orr w0, w0, 131072
<------>mov w23, -1
<------>str w0, [x20]
.L1185:
<------>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], 192
<------>ret
.L1191:
<------>ldr x5, [x1, 2416]
<------>and x0, x0, 4294967292
<------>add x22, x22, 4
<------>ldr w0, [x5, x0]
<------>strb w0, [x22, -4]
<------>lsr w5, w0, 8
<------>strb w5, [x22, -3]
<------>lsr w5, w0, 16
<------>strb w5, [x22, -2]
<------>lsr w0, w0, 24
<------>strb w0, [x22, -1]
<------>mov w0, w4
<------>b .L1190
.L1198:
<------>uxtw x0, w2
<------>add x0, x0, 8
<------>ldr w0, [x20, x0, lsl 2]
<------>str w0, [x29, 120]
<------>ldr w0, [x29, 120]
<------>tbnz x0, 2, .L1214
<------>ldr w0, [x29, 120]
<------>tbnz x0, 15, .L1214
<------>cmp w3, 5
<------>bls .L1194
<------>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 .L1195
<------>ubfx x1, x0, 3, 5
<------>ldr w0, [x29, 120]
<------>ubfx x0, x0, 27, 1
.L1220:
<------>orr w0, w1, w0, lsl 5
.L1196:
<------>cmp w23, w0
<------>csel w23, w23, w0, cs
.L1193:
<------>add w2, w2, 1
<------>b .L1192
.L1195:
<------>ubfx x1, x0, 16, 5
<------>ldr w0, [x29, 120]
<------>ubfx x0, x0, 29, 1
<------>b .L1220
.L1194:
<------>cmp w3, 3
<------>bls .L1215
<------>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 .L1197
<------>ubfx x1, x0, 3, 5
<------>ldr w0, [x29, 120]
<------>ubfx x0, x0, 28, 1
<------>b .L1220
.L1197:
<------>ubfx x1, x0, 16, 5
<------>ldr w0, [x29, 120]
<------>ubfx x0, x0, 30, 1
<------>b .L1220
.L1215:
<------>mov w0, 0
<------>b .L1196
.L1214:
<------>mov w23, -1
<------>b .L1193
.L1211:
<------>mov w23, 0
<------>b .L1188
.L1186:
<------>cmp w21, 1
<------>bne .L1200
<------>cmp x4, 0
<------>mov w27, 2
<------>csel w27, w27, wzr, ne
<------>mov w28, 0
<------>lsl w27, w27, 1
<------>mov w23, 0
.L1201:
<------>cmp w23, w24
<------>bcc .L1203
<------>mov w23, 0
<------>b .L1199
.L1203:
<------>and w6, w23, 3
<------>cbz x26, .L1216
<------>lsl w3, w23, 9
<------>add x3, x26, x3
.L1202:
<------>add x4, x22, w28, uxtw
<------>mov w2, w6
<------>mov x0, x20
<------>str w6, [x29, 108]
<------>mov w1, 1
<------>bl NandcCopy1KB
<------>ldr w6, [x29, 108]
<------>mov x5, 0
<------>mov x4, 0
<------>mov w2, 2
<------>mov w3, w6
<------>mov w0, w25
<------>mov w1, 1
<------>add w23, w23, 2
<------>bl NandcXferStart
<------>add w28, w28, w27
<------>mov w1, 1
<------>mov w0, w25
<------>bl NandcXferComp
<------>b .L1201
.L1216:
<------>mov x3, 0
<------>b .L1202
.L1200:
<------>mov w0, w25
<------>mov x5, 0
<------>mov x4, 0
<------>mov w3, 0
<------>mov w2, 2
<------>mov w1, 0
<------>bl NandcXferStart
<------>mov w27, 2
<------>cmp x22, 0
<------>mov w28, 0
<------>csel w27, w27, wzr, ne
<------>mov w23, 0
<------>lsl w0, w27, 1
<------>mov w27, 0
<------>str w0, [x29, 108]
.L1204:
<------>cmp w24, w27
<------>bls .L1199
<------>mov w0, w25
<------>mov w1, w21
<------>bl NandcXferComp
<------>ldr w0, [x20, 32]
<------>add w7, w27, 2
<------>str w0, [x29, 120]
<------>cmp w24, w7
<------>bls .L1205
<------>and w3, w7, 3
<------>str w7, [x29, 104]
<------>mov x5, 0
<------>mov x4, 0
<------>mov w2, 2
<------>mov w1, 0
<------>mov w0, w25
<------>bl NandcXferStart
<------>ldr w7, [x29, 104]
.L1205:
<------>ldr w0, [x29, 120]
<------>tbnz x0, 2, .L1217
<------>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 w23, w0
<------>csel w23, w23, w0, cs
.L1206:
<------>and w2, w27, 3
<------>cbz x26, .L1218
<------>lsl w3, w27, 9
<------>add x3, x26, x3
.L1207:
<------>add x4, x22, w28, uxtw
<------>mov x0, x20
<------>str w7, [x29, 104]
<------>mov w1, 0
<------>bl NandcCopy1KB
<------>ldp w7, w0, [x29, 104]
<------>add w28, w28, w0
<------>mov w27, w7
<------>b .L1204
.L1217:
<------>mov w23, -1
<------>b .L1206
.L1218:
<------>mov x3, 0
<------>b .L1207
<------>.size NandcXferData, .-NandcXferData
<------>.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, .LANCHOR1+481
<------>mov x22, x2
<------>mov x23, x3
<------>ldrb w20, [x1, #:lo12:.LANCHOR1+481]
<------>bne .L1222
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>ldrb w5, [x0, 73]
<------>ldr w0, [x0, 76]
<------>mul w0, w5, w0
<------>cmp w0, w21
<------>mov w0, 4
<------>csel w20, w20, w0, ls
.L1222:
<------>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
<------>mov w0, w2
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldr x23, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size FlashReadRawPage, .-FlashReadRawPage
<------>.align 2
<------>.global FlashDdrTunningRead
<------>.type FlashDdrTunningRead, %function
FlashDdrTunningRead:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>add x19, x19, :lo12:.LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>and w23, w0, 255
<------>stp x21, x22, [sp, 32]
<------>mov w25, w1
<------>stp x27, x28, [sp, 80]
<------>mov w22, 6
<------>mov x24, x2
<------>mov x28, x3
<------>ldr x0, [x19, 136]
<------>mov w26, w4
<------>ldr w0, [x0, 304]
<------>str w0, [x29, 108]
<------>ldr w0, [x19, 2388]
<------>cmp w0, 8
<------>mov w0, 12
<------>csel w22, w22, w0, cc
<------>cbz w4, .L1238
<------>mov w0, 1
<------>bl FlashSetInterfaceMode
<------>mov w0, 1
<------>bl NandcSetMode
<------>mov w0, w23
<------>bl FlashReset
<------>mov x3, x28
<------>mov x2, x24
<------>mov w1, w25
<------>mov w0, w23
<------>bl FlashReadRawPage
<------>mov w20, w0
<------>ldrb w0, [x19, 2357]
<------>bl FlashSetInterfaceMode
<------>ldrb w0, [x19, 2357]
<------>bl NandcSetMode
<------>cmn w20, #1
<------>bne .L1227
.L1236:
<------>mov w20, -1
.L1224:
<------>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
.L1227:
<------>mov w2, w20
<------>mov w1, w25
<------>adrp x0, .LC89
<------>add x0, x0, :lo12:.LC89
<------>bl printk
<------>cmp w20, 9
<------>bhi .L1229
<------>sbfiz x0, x23, 4, 32
<------>ldr x0, [x19, x0]
<------>ldr w1, [x0, 3840]
<------>ldr w1, [x0]
<------>orr w1, w1, 131072
<------>str w1, [x0]
.L1229:
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldr w1, [x0, 1616]
<------>add w1, w1, 1
<------>str w1, [x0, 1616]
<------>cmp w1, 2047
<------>bls .L1224
<------>mov x28, 0
<------>mov x24, 0
<------>str wzr, [x0, 1616]
.L1226:
<------>mov w5, 0
<------>mov w21, 0
<------>mov w6, 0
<------>mov w19, 0
<------>mov w27, -1
.L1234:
<------>stp w5, w6, [x29, 100]
<------>mov w0, w22
<------>bl NandcSetDdrPara
<------>mov w1, w25
<------>mov x3, x28
<------>mov x2, x24
<------>mov w0, w23
<------>bl FlashReadRawPage
<------>add w1, w20, 1
<------>cmp w0, w1
<------>ldp w5, w6, [x29, 100]
<------>bhi .L1230
<------>cmp w0, 2
<------>bhi .L1240
<------>add w19, w19, 1
<------>cmp w19, 9
<------>bls .L1240
<------>mov w1, w21
<------>mov w20, w0
<------>sub w21, w22, w19
<------>mov w27, 0
.L1232:
<------>cmp w19, w6
<------>csel w21, w21, w1, hi
.L1233:
<------>cbz w21, .L1235
<------>mov w1, w21
<------>adrp x0, .LC90
<------>add x0, x0, :lo12:.LC90
<------>bl printk
<------>mov w0, w21
<------>bl NandcSetDdrPara
.L1235:
<------>cbz w27, .L1224
<------>adrp x0, .LC91
<------>mov w2, w25
<------>mov w1, w23
<------>add x0, x0, :lo12:.LC91
<------>bl printk
<------>cbz w26, .L1236
<------>ldr w1, [x29, 108]
<------>lsr w0, w1, 8
<------>bl NandcSetDdrPara
<------>b .L1224
.L1238:
<------>mov w20, 1024
<------>b .L1226
.L1230:
<------>cmp w19, w6
<------>bls .L1241
<------>sub w21, w5, w19
<------>cmp w19, 7
<------>bhi .L1233
<------>mov w6, w19
.L1241:
<------>mov w19, 0
<------>b .L1231
.L1240:
<------>mov w5, w22
<------>mov w20, w0
<------>mov w27, 0
<------>mov x28, 0
<------>mov x24, 0
.L1231:
<------>add w22, w22, 2
<------>cmp w22, 69
<------>bls .L1234
<------>mov w1, w21
<------>mov w21, w5
<------>b .L1232
<------>.size FlashDdrTunningRead, .-FlashDdrTunningRead
<------>.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 x23, x24, [sp, 48]
<------>mov w0, w20
<------>stp x21, x22, [sp, 32]
<------>mov x23, x2
<------>stp x25, x26, [sp, 64]
<------>mov w22, w1
<------>mov x24, x3
<------>bl FlashReadRawPage
<------>mov w19, w0
<------>cmn w0, #1
<------>bne .L1251
<------>adrp x21, .LANCHOR0
<------>add x25, x21, :lo12:.LANCHOR0
<------>ldrb w26, [x25, 80]
<------>cbnz w26, .L1252
.L1254:
<------>add x21, x21, :lo12:.LANCHOR0
<------>ldrb w0, [x21, 2380]
<------>cbz w0, .L1251
<------>ldr x0, [x21, 136]
<------>mov w4, 1
<------>mov x3, x24
<------>mov x2, x23
<------>mov w1, w22
<------>ldr w25, [x0, 304]
<------>mov w0, w20
<------>bl FlashDdrTunningRead
<------>mov w19, w0
<------>cmn w0, #1
<------>beq .L1255
<------>ldrb w0, [x21, 2464]
<------>cmp w19, w0, lsr 1
<------>bls .L1251
.L1255:
<------>lsr w0, w25, 8
<------>bl NandcSetDdrPara
<------>b .L1251
.L1252:
<------>strb wzr, [x25, 80]
<------>mov x3, x24
<------>mov x2, x23
<------>mov w1, w22
<------>mov w0, w20
<------>bl FlashReadRawPage
<------>strb w26, [x25, 80]
<------>cmn w0, #1
<------>beq .L1254
<------>mov w19, w0
.L1251:
<------>adrp x21, .LANCHOR4
<------>add x21, x21, :lo12:.LANCHOR4
<------>ldr x4, [x21, 1624]
<------>cbz x4, .L1250
<------>cmn w19, #1
<------>bne .L1250
<------>mov x3, x24
<------>mov x2, x23
<------>mov w1, w22
<------>mov w0, w20
<------>blr x4
<------>mov w19, w0
<------>mov w1, w0
<------>mov w3, w22
<------>mov w2, w20
<------>adrp x0, .LC92
<------>add x0, x0, :lo12:.LC92
<------>bl printk
<------>cmn w19, #1
<------>bne .L1250
<------>adrp x0, .LANCHOR0+204
<------>ldrb w0, [x0, #:lo12:.LANCHOR0+204]
<------>cbz w0, .L1250
<------>mov w0, w20
<------>bl flash_enter_slc_mode
<------>ldr x4, [x21, 1624]
<------>mov x3, x24
<------>mov x2, x23
<------>mov w1, w22
<------>mov w0, w20
<------>blr x4
<------>mov w19, w0
<------>mov w0, w20
<------>bl flash_exit_slc_mode
.L1250:
<------>mov w0, w19
<------>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 FlashReadPage, .-FlashReadPage
<------>.align 2
<------>.global FlashDdrParaScan
<------>.type FlashDdrParaScan, %function
FlashDdrParaScan:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>add x22, x19, :lo12:.LANCHOR0
<------>and w20, w0, 255
<------>mov w21, w1
<------>ldrb w0, [x22, 2357]
<------>bl FlashSetInterfaceMode
<------>ldrb w0, [x22, 2357]
<------>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 w1, w21
<------>mov w0, w20
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>beq .L1271
<------>cmn w22, #1
<------>bne .L1272
.L1271:
<------>add x20, x19, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 2357]
<------>tbz x0, 0, .L1272
<------>mov w0, 1
<------>bl FlashSetInterfaceMode
<------>mov w0, 1
<------>bl NandcSetMode
<------>strb wzr, [x20, 2380]
.L1273:
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L1272:
<------>add x19, x19, :lo12:.LANCHOR0
<------>mov w0, 1
<------>strb w0, [x19, 2380]
<------>b .L1273
<------>.size FlashDdrParaScan, .-FlashDdrParaScan
<------>.align 2
<------>.global FlashLoadPhyInfo
<------>.type FlashLoadPhyInfo, %function
FlashLoadPhyInfo:
<------>stp x29, x30, [sp, -128]!
<------>mov w0, 60
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR4
<------>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]
<------>add x0, x20, :lo12:.LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>adrp x22, .LANCHOR1
<------>stp x27, x28, [sp, 80]
<------>add x22, x22, :lo12:.LANCHOR1
<------>stp x25, x26, [sp, 64]
<------>mov w27, 20036
<------>mov w19, 0
<------>mov w24, 4
<------>ldr w0, [x0, 76]
<------>mov w23, -1
<------>str w0, [x29, 108]
<------>add x0, x21, :lo12:.LANCHOR4
<------>movk w27, 0x4e41, lsl 16
<------>add x22, x22, 472
<------>ldr x1, [x0, 1608]
<------>str x1, [x0, 1632]
<------>str wzr, [x0, 1640]
<------>mov w0, 0
<------>bl flash_enter_slc_mode
.L1282:
<------>add w28, w19, 1
<------>add x25, x21, :lo12:.LANCHOR4
<------>mov x26, 0
.L1284:
<------>add x0, x29, 120
<------>ldrb w0, [x0, x26]
<------>bl FlashBchSel
<------>ldr x2, [x25, 1608]
<------>mov x3, 0
<------>mov w1, w19
<------>mov w0, 0
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>bne .L1283
<------>ldr x2, [x25, 1608]
<------>mov x3, 0
<------>mov w1, w28
<------>mov w0, 0
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>bne .L1283
<------>add x26, x26, 1
<------>cmp x26, 4
<------>bne .L1284
.L1285:
<------>ldr w0, [x29, 108]
<------>subs w24, w24, #1
<------>add w19, w19, w0
<------>bne .L1282
<------>b .L1290
.L1286:
<------>mov w1, 2036
<------>add x0, x6, 12
<------>bl js_hash
<------>ldr w1, [x6, 8]
<------>cmp w1, w0
<------>bne .L1292
<------>add x1, x6, 160
<------>mov w2, 32
<------>mov x0, x22
<------>bl ftl_memcpy
<------>ldr x1, [x25, 1632]
<------>add x23, x20, :lo12:.LANCHOR0
<------>mov w2, 32
<------>add x0, x23, 96
<------>add x1, x1, 192
<------>bl ftl_memcpy
<------>ldr x1, [x25, 1632]
<------>mov w2, 852
<------>add x0, x23, 1272
<------>add x1, x1, 224
<------>bl ftl_memcpy
<------>ldrh w0, [x22, 10]
<------>bl FlashBlockAlignInit
<------>str w19, [x25, 1640]
<------>ldr x1, [x25, 1632]
<------>ldr w0, [x1, 1076]
<------>strb w0, [x23, 2380]
<------>ldr w0, [x23, 76]
<------>udiv w0, w19, w0
<------>add w0, w0, 1
<------>cmp w0, 1
<------>bls .L1288
.L1295:
<------>str w0, [x25, 1644]
<------>add x0, x21, :lo12:.LANCHOR4
<------>ldrh w1, [x1, 14]
<------>mov w23, 0
<------>strb w1, [x0, 1648]
<------>b .L1285
.L1288:
<------>mov w0, 2
<------>b .L1295
.L1292:
<------>mov w23, -1
<------>b .L1285
.L1283:
<------>add x25, x21, :lo12:.LANCHOR4
<------>ldr x6, [x25, 1632]
<------>ldr w0, [x6]
<------>cmp w0, w27
<------>bne .L1285
<------>cbnz w23, .L1286
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldr w0, [x20, 76]
<------>udiv w19, w19, w0
<------>add w19, w19, 1
<------>str w19, [x25, 1644]
.L1290:
<------>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
<------>.align 2
<------>.global ToshibaReadRetrial
<------>.type ToshibaReadRetrial, %function
ToshibaReadRetrial:
<------>stp x29, x30, [sp, -128]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>and w22, w0, 255
<------>stp x19, x20, [sp, 16]
<------>mov w0, w22
<------>stp x27, x28, [sp, 80]
<------>mov x27, x3
<------>stp x23, x24, [sp, 48]
<------>adrp x19, .LANCHOR0
<------>str x2, [x29, 112]
<------>str w1, [x29, 120]
<------>stp x25, x26, [sp, 64]
<------>bl NandcWaitFlashReady
<------>add x1, x19, :lo12:.LANCHOR0
<------>sbfiz x0, x22, 4, 32
<------>add x2, x1, x0
<------>ldr x23, [x1, x0]
<------>ldrb w0, [x1, 128]
<------>ldrb w28, [x2, 8]
<------>sub w0, w0, #67
<------>str w28, [x29, 124]
<------>add x20, x28, 8
<------>and w0, w0, 255
<------>add x20, x23, x20, lsl 8
<------>cmp w0, 1
<------>bls .L1313
<------>ldrb w0, [x1, 2380]
<------>cbz w0, .L1314
<------>mov w24, 1
<------>mov w0, 0
<------>bl NandcSetDdrMode
.L1298:
<------>add x0, x23, x28, lsl 8
<------>mov w1, 92
<------>str w1, [x0, 2056]
<------>mov w1, 197
<------>str w1, [x0, 2056]
.L1297:
<------>ldrsw x0, [x29, 124]
<------>mov w21, 1
<------>mov w25, -1
<------>add x0, x0, 8
<------>add x0, x23, x0, lsl 8
<------>str x0, [x29, 104]
.L1299:
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldrb w0, [x0, 1649]
<------>add w0, w0, 1
<------>cmp w21, w0
<------>bcc .L1308
<------>mov w26, w25
.L1307:
<------>add x0, x19, :lo12:.LANCHOR0
<------>mov w1, 0
<------>ldrb w0, [x0, 128]
<------>sub w0, w0, #67
<------>and w0, w0, 255
<------>cmp w0, 1
<------>mov x0, x20
<------>bhi .L1309
<------>bl SandiskSetRRPara
.L1310:
<------>ldrsw x0, [x29, 124]
<------>add x19, x19, :lo12:.LANCHOR0
<------>add x0, x0, 8
<------>add x23, x23, x0, lsl 8
<------>mov w0, 255
<------>str w0, [x23, 8]
<------>ldrb w0, [x19, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w26, w0, lsr 2
<------>bcc .L1311
<------>cmn w26, #1
<------>mov w0, 256
<------>csel w26, w26, w0, eq
.L1311:
<------>mov w0, w22
<------>bl NandcWaitFlashReady
<------>cbz w24, .L1296
<------>mov w0, 4
<------>bl NandcSetDdrMode
.L1296:
<------>mov w0, w26
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 128
<------>ret
.L1314:
<------>mov w24, 0
<------>b .L1298
.L1313:
<------>mov w24, 0
<------>b .L1297
.L1308:
<------>add x0, x19, :lo12:.LANCHOR0
<------>mov w1, w21
<------>ldrb w0, [x0, 128]
<------>sub w0, w0, #67
<------>and w0, w0, 255
<------>cmp w0, 1
<------>mov x0, x20
<------>bhi .L1300
<------>bl SandiskSetRRPara
.L1301:
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 128]
<------>cmp w0, 34
<------>bne .L1302
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldrb w0, [x0, 1649]
<------>sub w0, w0, #3
<------>cmp w21, w0
<------>bne .L1302
<------>ldr x1, [x29, 104]
<------>mov w0, 179
<------>str w0, [x1, 8]
.L1302:
<------>add x0, x23, x28, lsl 8
<------>mov w1, 38
<------>str w1, [x0, 2056]
<------>mov w1, 93
<------>str w1, [x0, 2056]
<------>cbz w24, .L1303
<------>mov w0, 4
<------>bl NandcSetDdrMode
<------>ldr w1, [x29, 120]
<------>mov x3, x27
<------>ldr x2, [x29, 112]
<------>mov w0, w22
<------>bl FlashReadRawPage
<------>mov w26, w0
<------>mov w0, 0
<------>bl NandcSetDdrMode
.L1304:
<------>cmn w26, #1
<------>beq .L1305
<------>add x0, x19, :lo12:.LANCHOR0
<------>cmn w25, #1
<------>csel w25, w25, w26, ne
<------>ldrb w0, [x0, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w26, w0, lsr 2
<------>bcc .L1307
<------>mov x27, 0
<------>str xzr, [x29, 112]
.L1305:
<------>add w21, w21, 1
<------>b .L1299
.L1300:
<------>bl ToshibaSetRRPara
<------>b .L1301
.L1303:
<------>ldr w1, [x29, 120]
<------>mov x3, x27
<------>ldr x2, [x29, 112]
<------>mov w0, w22
<------>bl FlashReadRawPage
<------>mov w26, w0
<------>b .L1304
.L1309:
<------>bl ToshibaSetRRPara
<------>b .L1310
<------>.size ToshibaReadRetrial, .-ToshibaReadRetrial
<------>.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 x23, x2
<------>stp x25, x26, [sp, 64]
<------>mov x24, x3
<------>stp x27, x28, [sp, 80]
<------>mov w25, w1
<------>bl NandcWaitFlashReady
<------>adrp x20, .LANCHOR0
<------>sbfiz x1, x22, 4, 32
<------>add x0, x20, :lo12:.LANCHOR0
<------>add x2, x0, x1
<------>adrp x28, .LANCHOR4
<------>mov x26, x0
<------>add x28, x28, :lo12:.LANCHOR4
<------>ldr x1, [x0, x1]
<------>mov w27, 1
<------>ldrb w21, [x2, 8]
<------>mov w19, -1
<------>add x21, x21, 8
<------>add x21, x1, x21, lsl 8
.L1325:
<------>ldrb w0, [x28, 1649]
<------>add w0, w0, 1
<------>cmp w27, w0
<------>bcc .L1329
.L1328:
<------>add x20, x20, :lo12:.LANCHOR0
<------>mov x0, x21
<------>mov w1, 0
<------>bl SamsungSetRRPara
<------>ldrb w0, [x20, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w19, w0, lsr 2
<------>bcc .L1324
<------>cmn w19, #1
<------>mov w0, 256
<------>csel w19, w19, w0, eq
.L1324:
<------>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], 96
<------>ret
.L1329:
<------>mov w1, w27
<------>mov x0, x21
<------>bl SamsungSetRRPara
<------>mov x3, x24
<------>mov x2, x23
<------>mov w1, w25
<------>mov w0, w22
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>beq .L1326
<------>ldrb w1, [x26, 2464]
<------>cmn w19, #1
<------>csel w19, w19, w0, ne
<------>add w1, w1, w1, lsl 1
<------>cmp w0, w1, lsr 2
<------>bcc .L1331
<------>mov x24, 0
<------>mov x23, 0
.L1326:
<------>add w27, w27, 1
<------>b .L1325
.L1331:
<------>mov w19, w0
<------>b .L1328
<------>.size SamsungReadRetrial, .-SamsungReadRetrial
<------>.align 2
<------>.global MicronReadRetrial
<------>.type MicronReadRetrial, %function
MicronReadRetrial:
<------>stp x29, x30, [sp, -160]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>and w20, w0, 255
<------>adrp x0, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>str w1, [x29, 156]
<------>add x1, x0, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>mov x23, x2
<------>stp x25, x26, [sp, 64]
<------>mov x24, x3
<------>stp x27, x28, [sp, 80]
<------>ldrb w19, [x1, 2464]
<------>ldrb w1, [x1, 204]
<------>cbnz w1, .L1339
<------>add w19, w19, w19, lsl 1
<------>asr w19, w19, 2
.L1340:
<------>add x0, x0, :lo12:.LANCHOR0
<------>mov w22, 0
<------>str x0, [x29, 144]
<------>mov w27, 239
<------>add x0, x0, w20, sxtw 4
<------>mov w28, 137
<------>str x0, [x29, 136]
.L1350:
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>ldr x0, [x29, 136]
<------>adrp x7, .LANCHOR4
<------>add x7, x7, :lo12:.LANCHOR4
<------>mov w21, 0
<------>mov w25, -1
<------>ldrb w4, [x0, 8]
<------>ldr x8, [x0]
<------>add x26, x8, x4, lsl 8
.L1341:
<------>ldrb w0, [x7, 1649]
<------>cmp w21, w0
<------>bcc .L1345
.L1344:
<------>add x4, x8, x4, lsl 8
<------>mov x0, 1000
<------>str x4, [x29, 128]
<------>str w27, [x4, 2056]
<------>str w28, [x4, 2052]
<------>bl __const_udelay
<------>ldr x4, [x29, 128]
<------>cmp w25, w19
<------>str wzr, [x4, 2048]
<------>str wzr, [x4, 2048]
<------>str wzr, [x4, 2048]
<------>str wzr, [x4, 2048]
<------>bcc .L1346
<------>cmn w25, #1
<------>mov w0, 256
<------>csel w25, w25, w0, eq
.L1346:
<------>cmp w25, 256
<------>ccmn w25, #1, 4, ne
<------>bne .L1347
<------>ldr w2, [x29, 156]
<------>adrp x0, .LC93
<------>mov w4, w25
<------>mov w3, w21
<------>mov w1, w21
<------>add x0, x0, :lo12:.LC93
<------>bl printk
<------>cbnz w22, .L1348
<------>ldr x0, [x29, 144]
<------>ldrb w0, [x0, 204]
<------>cbz w0, .L1338
<------>cmn w25, #1
<------>bne .L1338
<------>mov w1, 3
<------>mov w0, w20
<------>mov w22, 1
<------>bl micron_auto_read_calibration_config
<------>b .L1350
.L1339:
<------>mov w1, 3
<------>sdiv w19, w19, w1
<------>b .L1340
.L1345:
<------>str w27, [x26, 2056]
<------>mov x0, 1000
<------>str w28, [x26, 2052]
<------>stp x4, x7, [x29, 104]
<------>str x8, [x29, 120]
<------>bl __const_udelay
<------>add w9, w21, 1
<------>str w9, [x26, 2048]
<------>str wzr, [x26, 2048]
<------>mov x3, x24
<------>ldr w1, [x29, 156]
<------>mov x2, x23
<------>str wzr, [x26, 2048]
<------>mov w0, w20
<------>str wzr, [x26, 2048]
<------>str w9, [x29, 128]
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>ldr w9, [x29, 128]
<------>ldp x4, x7, [x29, 104]
<------>ldr x8, [x29, 120]
<------>beq .L1342
<------>cmn w25, #1
<------>csel w25, w25, w0, ne
<------>cmp w0, w19
<------>bcc .L1352
<------>mov x24, 0
<------>mov x23, 0
.L1342:
<------>mov w21, w9
<------>b .L1341
.L1352:
<------>mov w25, w0
<------>mov x24, 0
<------>mov x23, 0
<------>b .L1344
.L1348:
<------>mov w0, w20
<------>mov w1, 0
<------>bl micron_auto_read_calibration_config
<------>cmn w25, #1
<------>mov w0, 256
<------>csel w25, w25, w0, eq
.L1338:
<------>mov w0, w25
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 160
<------>ret
.L1347:
<------>cbz w22, .L1338
<------>mov w1, 0
<------>mov w0, w20
<------>mov w25, 256
<------>bl micron_auto_read_calibration_config
<------>b .L1338
<------>.size MicronReadRetrial, .-MicronReadRetrial
<------>.align 2
<------>.global HynixReadRetrial
<------>.type HynixReadRetrial, %function
HynixReadRetrial:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>stp x27, x28, [sp, 80]
<------>and x27, x0, 255
<------>add x0, x21, :lo12:.LANCHOR0
<------>stp x25, x26, [sp, 64]
<------>stp x23, x24, [sp, 48]
<------>mov x24, x2
<------>stp x19, x20, [sp, 16]
<------>add x2, x0, 1272
<------>mov w26, w1
<------>add x1, x2, x27
<------>ldrb w23, [x0, 1274]
<------>mov x22, x27
<------>ldr x0, [x0, 88]
<------>mov x25, x3
<------>ldrb w19, [x1, 12]
<------>ldrb w0, [x0, 19]
<------>sub w0, w0, #7
<------>and w0, w0, 255
<------>cmp w0, 1
<------>bhi .L1364
<------>ldrb w19, [x1, 20]
.L1364:
<------>mov w0, w22
<------>bl NandcWaitFlashReady
<------>add x4, x21, :lo12:.LANCHOR0
<------>mov w28, 0
<------>add x5, x4, 1276
<------>mov w20, -1
.L1365:
<------>cmp w28, w23
<------>bcc .L1370
.L1369:
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldr x1, [x0, 88]
<------>add x0, x0, 1272
<------>add x0, x0, x27
<------>ldrb w1, [x1, 19]
<------>sub w1, w1, #7
<------>and w1, w1, 255
<------>cmp w1, 1
<------>bhi .L1371
<------>strb w19, [x0, 20]
.L1372:
<------>add x21, x21, :lo12:.LANCHOR0
<------>ldrb w0, [x21, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w20, w0, lsr 2
<------>bcc .L1363
<------>cmn w20, #1
<------>mov w0, 256
<------>csel w20, w20, w0, eq
.L1363:
<------>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
.L1370:
<------>add w19, w19, 1
<------>ldrb w1, [x4, 1273]
<------>and w19, w19, 255
<------>mov x2, x5
<------>cmp w23, w19
<------>stp x5, x4, [x29, 96]
<------>csel w19, w19, wzr, hi
<------>mov w0, w22
<------>mov w3, w19
<------>bl HynixSetRRPara
<------>mov x3, x25
<------>mov x2, x24
<------>mov w1, w26
<------>mov w0, w22
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>ldp x5, x4, [x29, 96]
<------>beq .L1367
<------>ldrb w1, [x4, 2464]
<------>cmn w20, #1
<------>csel w20, w20, w0, ne
<------>add w1, w1, w1, lsl 1
<------>cmp w0, w1, lsr 2
<------>bcc .L1374
<------>mov x25, 0
<------>mov x24, 0
.L1367:
<------>add w28, w28, 1
<------>b .L1365
.L1374:
<------>mov w20, w0
<------>b .L1369
.L1371:
<------>strb w19, [x0, 12]
<------>b .L1372
<------>.size HynixReadRetrial, .-HynixReadRetrial
<------>.align 2
<------>.type samsung_read_retrial, %function
samsung_read_retrial:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>and w23, w0, 255
<------>stp x21, x22, [sp, 32]
<------>mov x24, x2
<------>stp x25, x26, [sp, 64]
<------>mov w0, w23
<------>stp x19, x20, [sp, 16]
<------>mov w26, w1
<------>mov x25, x3
<------>stp x27, x28, [sp, 80]
<------>bl NandcWaitFlashReady
<------>adrp x22, .LANCHOR0
<------>add x0, x22, :lo12:.LANCHOR0
<------>sbfiz x1, x23, 4, 32
<------>add x3, x0, x1
<------>adrp x21, .LANCHOR3
<------>ldrb w2, [x0, 2356]
<------>ldr x1, [x0, x1]
<------>ldrb w19, [x3, 8]
<------>cbnz w2, .L1382
<------>add x21, x21, :lo12:.LANCHOR3
<------>add x19, x1, x19, lsl 8
<------>add x21, x21, 16
<------>mov x27, x0
<------>mov x4, 0
<------>mov w20, -1
<------>mov w6, 239
<------>mov w5, 141
.L1386:
<------>str w6, [x19, 2056]
<------>add x0, x21, x4
<------>str w5, [x19, 2052]
<------>add w28, w4, 1
<------>stp w6, w5, [x29, 96]
<------>mov x3, x25
<------>ldrsb w0, [x0, 1]
<------>mov x2, x24
<------>str w0, [x19, 2048]
<------>mov w1, w26
<------>str wzr, [x19, 2048]
<------>mov w0, w23
<------>str wzr, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>str x4, [x29, 104]
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>ldp w6, w5, [x29, 96]
<------>ldr x4, [x29, 104]
<------>beq .L1383
<------>ldrb w1, [x27, 2464]
<------>cmn w20, #1
<------>csel w20, w20, w0, ne
<------>add w1, w1, w1, lsl 1
<------>cmp w0, w1, lsr 2
<------>bcc .L1394
<------>mov x25, 0
<------>mov x24, 0
.L1383:
<------>add x4, x4, 1
<------>cmp x4, 25
<------>bne .L1386
<------>mov w28, 26
.L1385:
<------>mov w0, 239
<------>str w0, [x19, 2056]
<------>mov w0, 141
.L1410:
<------>str w0, [x19, 2052]
<------>add x22, x22, :lo12:.LANCHOR0
<------>str wzr, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>str wzr, [x19, 2048]
<------>ldrb w0, [x22, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w20, w0, lsr 2
<------>bcc .L1392
<------>cmn w20, #1
<------>mov w0, 256
<------>csel w20, w20, w0, eq
.L1392:
<------>cmp w20, 256
<------>ccmn w20, #1, 4, ne
<------>bne .L1393
<------>adrp x0, .LC94
<------>mov w4, w20
<------>mov w3, w28
<------>mov w2, w26
<------>mov w1, w28
<------>add x0, x0, :lo12:.LC94
<------>bl printk
.L1393:
<------>mov w0, w23
<------>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
.L1394:
<------>mov w20, w0
<------>b .L1385
.L1382:
<------>add x21, x21, :lo12:.LANCHOR3
<------>add x19, x1, x19, lsl 8
<------>add x21, x21, 52
<------>mov x27, x0
<------>mov w20, -1
<------>mov w28, 1
<------>mov w5, 239
<------>mov w4, 137
.L1391:
<------>str w5, [x19, 2056]
<------>mov x3, x25
<------>str w4, [x19, 2052]
<------>mov x2, x24
<------>stp w5, w4, [x29, 100]
<------>mov w1, w26
<------>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, w23
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>ldp w5, w4, [x29, 100]
<------>beq .L1388
<------>ldrb w1, [x27, 2464]
<------>cmn w20, #1
<------>csel w20, w20, w0, ne
<------>add w1, w1, w1, lsl 1
<------>cmp w0, w1, lsr 2
<------>bcc .L1395
<------>mov x25, 0
<------>mov x24, 0
.L1388:
<------>add w28, w28, 1
<------>add x21, x21, 4
<------>cmp w28, 26
<------>bne .L1391
.L1390:
<------>mov w0, 239
<------>str w0, [x19, 2056]
<------>mov w0, 137
<------>b .L1410
.L1395:
<------>mov w20, w0
<------>b .L1390
<------>.size samsung_read_retrial, .-samsung_read_retrial
<------>.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, .LANCHOR1+481
<------>str x23, [sp, 48]
<------>mov x22, x2
<------>ldrb w21, [x1, #:lo12:.LANCHOR1+481]
<------>ands w19, w0, 255
<------>mov x23, x3
<------>bne .L1412
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>ldrb w1, [x0, 73]
<------>ldr w2, [x0, 76]
<------>mul w1, w1, w2
<------>cmp w1, w20
<------>bls .L1412
<------>ldrb w0, [x0, 72]
<------>cmp w0, 0
<------>mov w0, 4
<------>csel w21, w21, w0, eq
.L1412:
<------>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
<------>and w0, w2, 1
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldr x23, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size FlashProgPage, .-FlashProgPage
<------>.align 2
<------>.global FlashSavePhyInfo
<------>.type FlashSavePhyInfo, %function
FlashSavePhyInfo:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR4
<------>add x20, x20, :lo12:.LANCHOR4
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>mov w23, 20036
<------>movk w23, 0x4e41, lsl 16
<------>adrp x19, .LANCHOR0
<------>ldr x0, [x20, 1608]
<------>add x19, x19, :lo12:.LANCHOR0
<------>str x0, [x20, 1632]
<------>mov w22, 0
<------>ldrb w0, [x20, 1650]
<------>mov w21, 0
<------>bl FlashBchSel
<------>ldr x0, [x20, 1608]
<------>mov w2, 2048
<------>mov w1, 0
<------>bl ftl_memset
<------>ldr x0, [x20, 1632]
<------>mov w2, 32
<------>str w23, [x0]
<------>ldr x0, [x20, 1632]
<------>ldrb w1, [x19, 2358]
<------>add x0, x0, 16
<------>strh w1, [x0, -4]
<------>ldrb w1, [x19, 73]
<------>strh w1, [x0, -2]
<------>ldrb w1, [x19, 2380]
<------>str w1, [x0, 1060]
<------>add x1, x19, 2132
<------>bl ftl_memcpy
<------>ldr x0, [x20, 1632]
<------>mov w2, 8
<------>add x1, x19, 2360
<------>add x0, x0, 80
<------>bl ftl_memcpy
<------>ldr x0, [x20, 1632]
<------>mov w2, 32
<------>add x1, x19, 1232
<------>add x0, x0, 96
<------>bl ftl_memcpy
<------>ldr x0, [x20, 1632]
<------>adrp x1, .LANCHOR1
<------>add x1, x1, :lo12:.LANCHOR1
<------>mov w2, 32
<------>add x1, x1, 472
<------>add x0, x0, 160
<------>bl ftl_memcpy
<------>ldr x0, [x20, 1632]
<------>mov w2, 32
<------>add x1, x19, 96
<------>add x0, x0, 192
<------>bl ftl_memcpy
<------>ldr x0, [x20, 1632]
<------>mov w2, 852
<------>add x1, x19, 1272
<------>add x0, x0, 224
<------>bl ftl_memcpy
<------>ldr x6, [x20, 1632]
<------>mov w1, 2036
<------>add x0, x6, 12
<------>bl js_hash
<------>str w0, [x6, 8]
<------>mov w0, 1592
<------>str w0, [x6, 4]
<------>ldr x0, [x20, 1656]
<------>str x0, [x20, 1632]
<------>mov w0, 0
<------>bl flash_enter_slc_mode
.L1421:
<------>ldr w1, [x19, 76]
<------>mov w2, 0
<------>mov w0, 0
<------>mul w1, w21, w1
<------>bl FlashEraseBlock
<------>ldrb w0, [x19, 204]
<------>cbz w0, .L1416
<------>mov w24, 0
.L1417:
<------>ldr w1, [x19, 76]
<------>mov x3, 0
<------>ldr x2, [x20, 1608]
<------>mov w0, 0
<------>madd w1, w21, w1, w24
<------>add w24, w24, 1
<------>bl FlashProgPage
<------>cmp w24, 10
<------>bne .L1417
.L1418:
<------>ldr w1, [x19, 76]
<------>mov x3, 0
<------>ldr x2, [x20, 1656]
<------>mov w0, 0
<------>mul w1, w21, w1
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>add w7, w21, 1
<------>beq .L1419
<------>ldr x6, [x20, 1632]
<------>ldr w0, [x6]
<------>cmp w0, w23
<------>bne .L1419
<------>mov w1, 2036
<------>add x0, x6, 12
<------>bl js_hash
<------>ldr w1, [x6, 8]
<------>cmp w1, w0
<------>bne .L1419
<------>ldr w0, [x19, 76]
<------>cmp w22, 1
<------>str w7, [x20, 1644]
<------>mul w21, w0, w21
<------>str w21, [x20, 1640]
<------>beq .L1422
<------>mov w22, 1
.L1419:
<------>mov w21, w7
<------>cmp w7, 4
<------>bne .L1421
.L1420:
<------>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 x29, x30, [sp], 64
<------>ret
.L1416:
<------>ldr w1, [x19, 76]
<------>mov x3, 0
<------>ldr x2, [x20, 1608]
<------>mov w0, 0
<------>mul w1, w21, w1
<------>bl FlashProgPage
<------>ldr w1, [x19, 76]
<------>mov x3, 0
<------>ldr x2, [x20, 1608]
<------>mov w0, 0
<------>mul w1, w21, w1
<------>add w1, w1, 1
<------>bl FlashProgPage
<------>b .L1418
.L1422:
<------>mov w22, 2
<------>b .L1420
<------>.size FlashSavePhyInfo, .-FlashSavePhyInfo
<------>.align 2
<------>.global FlashReadIdbDataRaw
<------>.type FlashReadIdbDataRaw, %function
FlashReadIdbDataRaw:
<------>stp x29, x30, [sp, -128]!
<------>add x29, sp, 0
<------>stp x25, x26, [sp, 64]
<------>mov x25, x0
<------>mov w0, 60
<------>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
<------>adrp x20, .LANCHOR0
<------>strb w0, [x29, 123]
<------>add x0, x20, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>stp x27, x28, [sp, 80]
<------>ldrb w26, [x0, 2464]
<------>ldr w0, [x0, 2376]
<------>cbz w0, .L1430
<------>mov w0, 0
<------>bl flash_enter_slc_mode
.L1430:
<------>adrp x19, .LANCHOR4
<------>mov w28, 35899
<------>add x24, x20, :lo12:.LANCHOR0
<------>add x27, x29, 120
<------>add x19, x19, :lo12:.LANCHOR4
<------>mov w23, -1
<------>mov w21, 2
<------>movk w28, 0xfcdc, lsl 16
<------>mov w2, 2048
<------>mov w1, 0
<------>mov x0, x25
<------>bl ftl_memset
.L1431:
<------>ldrb w0, [x24, 73]
<------>cmp w21, w0
<------>bcc .L1436
.L1435:
<------>add x20, x20, :lo12:.LANCHOR0
<------>mov w0, w26
<------>bl FlashBchSel
<------>ldr w0, [x20, 2376]
<------>cbz w0, .L1429
<------>mov w0, 0
<------>bl flash_exit_slc_mode
.L1429:
<------>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
.L1436:
<------>mov x22, 0
.L1433:
<------>ldrb w4, [x22, x27]
<------>str w4, [x29, 108]
<------>mov w0, w4
<------>bl FlashBchSel
<------>ldr w1, [x24, 76]
<------>mov x3, 0
<------>ldr x2, [x19, 1608]
<------>mov w0, 0
<------>mul w1, w21, w1
<------>bl FlashReadRawPage
<------>cmn w0, #1
<------>ldr w4, [x29, 108]
<------>bne .L1432
<------>add x22, x22, 1
<------>cmp x22, 4
<------>bne .L1433
.L1434:
<------>add w21, w21, 1
<------>b .L1431
.L1439:
<------>mov w23, 0
<------>b .L1435
.L1432:
<------>ldr x0, [x19, 1608]
<------>ldr w0, [x0]
<------>cmp w0, w28
<------>bne .L1434
<------>mov w1, w4
<------>adrp x0, .LC95
<------>add x0, x0, :lo12:.LC95
<------>bl printk
<------>ldr x1, [x19, 1608]
<------>mov w2, 2048
<------>mov x0, x25
<------>bl ftl_memcpy
<------>ldr x0, [x19, 1608]
<------>ldr w0, [x0, 512]
<------>strb w0, [x24, 73]
<------>ldr w0, [x19, 1644]
<------>cmp w21, w0
<------>bcs .L1439
<------>mov w23, 0
<------>str w21, [x19, 1644]
<------>bl FlashSavePhyInfo
<------>b .L1434
<------>.size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
<------>.align 2
<------>.global FlashInit
<------>.type FlashInit, %function
FlashInit:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>adrp x23, .LANCHOR4
<------>add x20, x23, :lo12:.LANCHOR4
<------>stp x21, x22, [sp, 32]
<------>stp x27, x28, [sp, 80]
<------>mov x21, x0
<------>stp x25, x26, [sp, 64]
<------>mov w0, 32768
<------>bl ftl_malloc
<------>str x0, [x20, 1608]
<------>mov w0, 32768
<------>bl ftl_malloc
<------>str x0, [x20, 1656]
<------>mov w0, 4096
<------>bl ftl_dma32_malloc
<------>add x22, x19, :lo12:.LANCHOR0
<------>str x0, [x20, 1664]
<------>mov w0, 32768
<------>bl ftl_malloc
<------>str x0, [x20, 1672]
<------>mov w0, 4096
<------>bl ftl_dma32_malloc
<------>str x0, [x20, 1680]
<------>mov w0, 50
<------>strb w0, [x20, 1648]
<------>adrp x25, .LC96
<------>strb w0, [x22, 73]
<------>mov w0, 128
<------>strb wzr, [x20, 1688]
<------>add x25, x25, :lo12:.LC96
<------>str wzr, [x20, 1616]
<------>mov w24, 0
<------>str wzr, [x20, 1644]
<------>mov w28, 144
<------>str w0, [x22, 76]
<------>mov w0, 60
<------>strb w0, [x20, 1650]
<------>add x20, x22, 2132
<------>mov x27, x20
<------>strb wzr, [x22, 2380]
<------>strb wzr, [x22, 72]
<------>mov x0, x21
<------>bl NandcInit
.L1454:
<------>ldrb w1, [x22, 8]
<------>and w26, w24, 255
<------>str w1, [x29, 108]
<------>mov w0, w26
<------>ldr x21, [x22]
<------>bl FlashReset
<------>mov w0, w26
<------>bl NandcFlashCs
<------>ldr w1, [x29, 108]
<------>mov x0, 1000
<------>ubfiz x1, x1, 8, 8
<------>add x21, x21, x1
<------>str w28, [x21, 2056]
<------>str wzr, [x21, 2052]
<------>bl __const_udelay
<------>ldr w0, [x21, 2048]
<------>and w0, w0, 255
<------>strb w0, [x20]
<------>cmp w0, 44
<------>ldr w1, [x21, 2048]
<------>strb w1, [x20, 1]
<------>ldr w1, [x21, 2048]
<------>strb w1, [x20, 2]
<------>ldr w1, [x21, 2048]
<------>strb w1, [x20, 3]
<------>ldr w1, [x21, 2048]
<------>strb w1, [x20, 4]
<------>ldr w1, [x21, 2048]
<------>strb w1, [x20, 5]
<------>bne .L1449
<------>mov w0, 239
<------>str w0, [x21, 2056]
<------>mov w0, 1
<------>str w0, [x21, 2052]
<------>mov x0, 1000
<------>bl __const_udelay
<------>mov w0, 4
<------>str w0, [x21, 2048]
<------>str wzr, [x21, 2048]
<------>str wzr, [x21, 2048]
<------>str wzr, [x21, 2048]
.L1449:
<------>mov w0, w26
<------>bl NandcFlashDeCs
<------>ldrb w2, [x20]
<------>sub w0, w2, #1
<------>and w0, w0, 255
<------>cmp w0, 253
<------>bhi .L1450
<------>ldrb w7, [x20, 5]
<------>add w1, w24, 1
<------>ldrb w6, [x20, 4]
<------>mov x0, x25
<------>ldrb w5, [x20, 3]
<------>ldrb w4, [x20, 2]
<------>ldrb w3, [x20, 1]
<------>bl printk
.L1450:
<------>cbnz w24, .L1451
<------>ldrb w0, [x27]
<------>sub w0, w0, #1
<------>and w0, w0, 255
<------>cmp w0, 253
<------>bhi .L1502
<------>ldrb w0, [x27, 1]
<------>cmp w0, 255
<------>beq .L1502
.L1451:
<------>ldrb w0, [x20]
<------>cmp w0, 181
<------>bne .L1453
<------>mov w0, 44
<------>strb w0, [x20]
.L1453:
<------>add w24, w24, 1
<------>add x22, x22, 16
<------>add x20, x20, 8
<------>cmp w24, 4
<------>bne .L1454
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldrb w1, [x0, 2132]
<------>cmp w1, 173
<------>beq .L1455
<------>ldr w0, [x0, 2384]
<------>bl NandcSetDdrMode
.L1455:
<------>add x20, x19, :lo12:.LANCHOR0
<------>mov w2, 852
<------>mov w1, 0
<------>add x0, x20, 1272
<------>bl ftl_memset
<------>adrp x0, .LANCHOR1
<------>add x1, x0, :lo12:.LANCHOR1
<------>add x1, x1, 472
<------>ldr w4, [x20, 2392]
<------>strb wzr, [x20, 80]
<------>mov w2, 12336
<------>str x1, [x20, 88]
<------>movk w2, 0x5638, lsl 16
<------>cmp w4, w2
<------>bne .L1456
<------>ldrb w1, [x1, 19]
<------>cmp w1, 50
<------>beq .L1456
<------>mov w1, 1
<------>str w1, [x20, 2376]
.L1456:
<------>add x1, x19, :lo12:.LANCHOR0
<------>ldrb w2, [x1, 2133]
<------>add w1, w2, 95
<------>and w3, w1, 255
<------>mov x1, 1
<------>cmp w3, 57
<------>bhi .L1457
<------>movk x1, 0x205, lsl 48
<------>lsr x1, x1, x3
<------>mvn x1, x1
.L1457:
<------>and w1, w1, 1
<------>cmp w2, 241
<------>eor w1, w1, 1
<------>cset w3, eq
<------>orr w1, w3, w1
<------>cbnz w1, .L1458
<------>cmp w2, 220
<------>bne .L1459
<------>add x1, x19, :lo12:.LANCHOR0
<------>ldrb w1, [x1, 2135]
<------>cmp w1, 149
<------>bne .L1459
.L1458:
<------>add x1, x19, :lo12:.LANCHOR0
<------>add x3, x23, :lo12:.LANCHOR4
<------>mov w6, 16
<------>mov w5, 1
<------>add x7, x1, 2132
<------>strb w6, [x1, 73]
<------>strb w5, [x1, 72]
<------>strb w6, [x3, 1650]
<------>ldrb w6, [x1, 2132]
<------>add x1, x0, :lo12:.LANCHOR1
<------>cmp w6, 152
<------>strb w6, [x1, 3425]
<------>strb w2, [x1, 3426]
<------>bne .L1461
<------>ldrsb w1, [x7, 4]
<------>tbnz w1, #31, .L1462
<------>mov w1, 24
<------>strb w1, [x3, 1650]
.L1461:
<------>cmp w4, 2049
<------>mov w1, 12336
<------>movk w1, 0x5638, lsl 16
<------>ccmp w4, w1, 4, ne
<------>bne .L1464
<------>add x1, x23, :lo12:.LANCHOR4
<------>mov w3, 16
<------>strb w3, [x1, 1650]
.L1464:
<------>cmp w2, 218
<------>bne .L1465
<------>add x1, x0, :lo12:.LANCHOR1
<------>mov w2, 2048
<------>strh w2, [x1, 3438]
<------>mov w2, -38
.L1548:
<------>strb w2, [x1, 3426]
.L1466:
<------>add x20, x0, :lo12:.LANCHOR1
<------>add x0, x19, :lo12:.LANCHOR0
<------>mov w2, 32
<------>add x1, x20, 3296
<------>add x0, x0, 96
<------>bl ftl_memcpy
<------>mov w2, 32
<------>add x1, x20, 3424
<------>add x0, x20, 472
<------>bl ftl_memcpy
.L1459:
<------>add x20, x19, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 72]
<------>cbnz w0, .L1469
<------>bl FlashLoadPhyInfoInRam
<------>cbnz w0, .L1471
<------>ldr x0, [x20, 88]
<------>ldrb w1, [x0, 17]
<------>and w0, w1, 7
<------>strb w0, [x20, 2357]
<------>tbnz x1, 0, .L1471
<------>mov w1, 1
<------>strb w1, [x20, 2380]
<------>bl FlashSetInterfaceMode
<------>ldrb w0, [x20, 2357]
<------>bl NandcSetMode
.L1471:
<------>add x20, x19, :lo12:.LANCHOR0
<------>ldr x0, [x20, 88]
<------>ldrb w0, [x0, 26]
<------>strb w0, [x20, 204]
<------>bl FlashLoadPhyInfo
<------>cbz w0, .L1469
<------>ldr w0, [x20, 2384]
<------>cbz w0, .L1474
<------>mov w0, 1
<------>bl FlashSetInterfaceMode
<------>mov w0, 1
.L1543:
<------>bl NandcSetMode
<------>bl FlashLoadPhyInfo
<------>cbz w0, .L1469
<------>add x20, x19, :lo12:.LANCHOR0
<------>mov w0, 1
<------>bl FlashSetInterfaceMode
<------>mov w0, 1
<------>bl NandcSetMode
<------>ldr x0, [x20, 88]
<------>ldrh w1, [x0, 14]
<------>adrp x0, .LC97
<------>add x0, x0, :lo12:.LC97
<------>bl printk
<------>bl FlashLoadPhyInfoInRam
<------>cmn w0, #1
<------>beq .L1448
<------>bl FlashDieInfoInit
<------>ldr x0, [x20, 88]
<------>ldrb w0, [x0, 19]
<------>bl FlashGetReadRetryDefault
<------>ldr x0, [x20, 88]
<------>adrp x1, .LANCHOR2+3550
<------>ldrh w1, [x1, #:lo12:.LANCHOR2+3550]
<------>ldrb w2, [x0, 9]
<------>add w1, w1, 4095
<------>cmp w2, w1, lsr 12
<------>blt .L1476
<------>ldrh w1, [x0, 14]
<------>add w1, w1, 255
<------>cmp w2, w1, lsr 8
<------>bge .L1477
.L1476:
<------>ldrh w1, [x0, 14]
<------>and w1, w1, -256
<------>strh w1, [x0, 14]
.L1477:
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 2357]
<------>tst w0, 6
<------>beq .L1478
<------>bl FlashSavePhyInfo
<------>mov w0, 0
<------>bl flash_enter_slc_mode
<------>add x0, x23, :lo12:.LANCHOR4
<------>ldr w1, [x0, 1640]
<------>mov w0, 0
<------>bl FlashDdrParaScan
<------>mov w0, 0
<------>bl flash_exit_slc_mode
.L1478:
<------>bl FlashSavePhyInfo
.L1469:
<------>add x21, x19, :lo12:.LANCHOR0
<------>add x20, x23, :lo12:.LANCHOR4
<------>ldr x2, [x21, 88]
<------>str xzr, [x20, 1624]
<------>ldrb w0, [x2, 26]
<------>strb w0, [x21, 204]
<------>ldrh w0, [x2, 16]
<------>ubfx x1, x0, 7, 1
<------>strb w1, [x21, 80]
<------>ubfx x1, x0, 3, 1
<------>strb w1, [x20, 1689]
<------>ubfx x1, x0, 4, 1
<------>ubfx x0, x0, 8, 3
<------>strb w1, [x21, 2368]
<------>strb w0, [x21, 2357]
<------>ldrh w1, [x2, 10]
<------>ldrb w0, [x2, 12]
<------>sdiv w1, w1, w0
<------>ldrb w0, [x2, 18]
<------>bl BuildFlashLsbPageTable
<------>bl FlashDieInfoInit
<------>ldr x0, [x21, 88]
<------>ldrh w1, [x0, 16]
<------>tbz x1, 6, .L1480
<------>ldrb w0, [x0, 19]
<------>ldrb w1, [x21, 1274]
<------>ldrb w2, [x21, 1273]
<------>strb w1, [x20, 1649]
<------>sub w1, w0, #1
<------>strb w0, [x21, 128]
<------>and w1, w1, 255
<------>strb w2, [x21, 129]
<------>cmp w1, 7
<------>bhi .L1481
<------>adrp x1, HynixReadRetrial
<------>add x1, x1, :lo12:HynixReadRetrial
<------>str x1, [x20, 1624]
<------>sub w1, w0, #5
<------>and w1, w1, 255
<------>cmp w1, 1
<------>ccmp w0, 8, 4, hi
<------>bne .L1482
<------>mov w1, 1
<------>str w1, [x21, 2456]
.L1482:
<------>add x1, x19, :lo12:.LANCHOR0
<------>cmp w0, 7
<------>beq .L1544
<------>cmp w0, 8
<------>bne .L1505
.L1544:
<------>add x1, x1, 1300
.L1483:
<------>mov x2, 0
<------>mov w3, 0
.L1485:
<------>ldrsb w4, [x1, x2]
<------>add x2, x2, 1
<------>cmp w4, 0
<------>cinc w3, w3, eq
<------>cmp x2, 32
<------>bne .L1485
<------>cmp w3, 27
<------>bls .L1480
<------>bl FlashGetReadRetryDefault
<------>bl FlashSavePhyInfo
.L1480:
<------>add x0, x19, :lo12:.LANCHOR0
<------>mov w2, 12336
<------>movk w2, 0x5638, lsl 16
<------>ldr w1, [x0, 2392]
<------>cmp w1, w2
<------>bne .L1495
<------>ldrb w2, [x0, 204]
<------>cbz w2, .L1495
<------>ldr x0, [x0, 88]
<------>strb wzr, [x0, 18]
.L1495:
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldrb w2, [x0, 2132]
<------>cmp w2, 44
<------>bne .L1496
<------>ldrb w2, [x0, 2380]
<------>cbz w2, .L1496
<------>mov w2, 12336
<------>movk w2, 0x5638, lsl 16
<------>cmp w1, w2
<------>bne .L1497
<------>ldrb w0, [x0, 204]
<------>cbnz w0, .L1496
.L1497:
<------>add x0, x19, :lo12:.LANCHOR0
<------>strb wzr, [x0, 2380]
<------>mov w0, 1
<------>bl FlashSetInterfaceMode
<------>mov w0, 1
<------>bl NandcSetMode
.L1496:
<------>add x1, x19, :lo12:.LANCHOR0
<------>ldrb w0, [x1, 2357]
<------>tst w0, 6
<------>beq .L1498
<------>ldrb w1, [x1, 2380]
<------>cbnz w1, .L1499
<------>tbnz x0, 0, .L1498
.L1499:
<------>add x23, x23, :lo12:.LANCHOR4
<------>mov w0, 0
<------>bl flash_enter_slc_mode
<------>mov w0, 0
<------>ldr w1, [x23, 1640]
<------>bl FlashDdrParaScan
<------>mov w0, 0
<------>bl flash_exit_slc_mode
.L1498:
<------>add x19, x19, :lo12:.LANCHOR0
<------>mov w20, 16
<------>ldr x0, [x19, 88]
<------>ldrb w0, [x0, 20]
<------>bl FlashBchSel
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>add x0, x0, 3888
<------>bl FlashReadIdbDataRaw
<------>mov w0, 18928
<------>strb w20, [x19, 73]
<------>movk w0, 0x2, lsl 16
<------>bl FlashTimingCfg
<------>ldr x1, [x19, 88]
<------>ldrb w3, [x19, 2133]
<------>ldrb w4, [x19, 2132]
<------>ldrb w2, [x1, 12]
<------>strh w2, [x19, 184]
<------>ldrb w2, [x1, 7]
<------>str w2, [x19, 180]
<------>ldrb w2, [x19, 2135]
<------>orr w2, w4, w2, lsl 24
<------>lsl w4, w3, w20
<------>orr w3, w4, w3, lsl 8
<------>ldrh w4, [x1, 14]
<------>orr w2, w2, w3
<------>str w2, [x19, 176]
<------>ldrb w2, [x19, 2358]
<------>strh w2, [x19, 186]
<------>ldrb w2, [x1, 13]
<------>strh w2, [x19, 188]
<------>strh w4, [x19, 190]
<------>ldrh w2, [x1, 10]
<------>strh w2, [x19, 192]
<------>ldrb w3, [x1, 12]
<------>ldrh w2, [x1, 10]
<------>sdiv w2, w2, w3
<------>strh w2, [x19, 194]
<------>ldrb w3, [x1, 9]
<------>strh w3, [x19, 196]
<------>ldrh w5, [x1, 10]
<------>ldrb w2, [x1, 9]
<------>mul w2, w2, w5
<------>mov w5, 512
<------>strh w5, [x19, 200]
<------>ldrb w5, [x19, 73]
<------>and w2, w2, 65535
<------>strh w5, [x19, 202]
<------>strh w2, [x19, 198]
<------>ldrb w5, [x19, 72]
<------>cmp w5, 1
<------>bne .L1500
<------>ubfiz w2, w2, 1, 15
<------>lsr w4, w4, 1
<------>ubfiz w3, w3, 1, 15
<------>strh w2, [x19, 198]
<------>strb w20, [x19, 73]
<------>mov w2, 8
<------>strh w4, [x19, 190]
<------>strh w3, [x19, 196]
<------>strh w2, [x19, 202]
.L1500:
<------>ldrb w0, [x1, 20]
<------>bl FlashBchSel
<------>bl ftl_flash_suspend
<------>mov w0, 0
.L1448:
<------>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
.L1465:
<------>cmp w2, 220
<------>bne .L1467
<------>add x1, x0, :lo12:.LANCHOR1
<------>mov w2, 4096
<------>strh w2, [x1, 3438]
<------>mov w2, -36
<------>b .L1548
.L1467:
<------>cmp w2, 211
<------>bne .L1466
<------>add x1, x0, :lo12:.LANCHOR1
<------>mov w2, 4096
<------>strh w2, [x1, 3438]
<------>mov w2, 2
<------>strb w2, [x1, 3437]
<------>b .L1466
.L1474:
<------>ldrb w0, [x20, 2357]
<------>bl FlashSetInterfaceMode
<------>ldrb w0, [x20, 2357]
<------>b .L1543
.L1505:
<------>add x1, x1, 1292
<------>b .L1483
.L1481:
<------>sub w1, w0, #17
<------>and w1, w1, 255
<------>cmp w1, 2
<------>bhi .L1487
<------>adrp x1, MicronReadRetrial
<------>add x1, x1, :lo12:MicronReadRetrial
<------>str x1, [x20, 1624]
<------>cmp w0, 19
<------>beq .L1488
.L1549:
<------>mov w0, 7
<------>b .L1546
.L1488:
<------>mov w0, 15
.L1546:
<------>strb w0, [x20, 1649]
<------>b .L1480
.L1487:
<------>sub w1, w0, #65
<------>cmp w0, 33
<------>and w1, w1, 255
<------>ccmp w1, 1, 0, ne
<------>bhi .L1489
<------>adrp x0, ToshibaReadRetrial
<------>add x0, x0, :lo12:ToshibaReadRetrial
<------>str x0, [x20, 1624]
<------>mov w0, 4
<------>strb w0, [x21, 129]
<------>b .L1549
.L1489:
<------>sub w2, w0, #34
<------>sub w1, w0, #67
<------>and w2, w2, 255
<------>and w1, w1, 255
<------>cmp w2, 1
<------>ccmp w1, 1, 0, hi
<------>bhi .L1490
<------>adrp x2, ToshibaReadRetrial
<------>add x2, x2, :lo12:ToshibaReadRetrial
<------>str x2, [x20, 1624]
<------>cmp w0, 35
<------>mov w2, 68
<------>ccmp w0, w2, 4, ne
<------>beq .L1491
<------>mov w0, 7
.L1545:
<------>strb w0, [x20, 1649]
<------>cmp w1, 1
<------>add x0, x19, :lo12:.LANCHOR0
<------>bhi .L1493
<------>mov w1, 4
.L1547:
<------>strb w1, [x0, 129]
<------>b .L1480
.L1491:
<------>mov w0, 17
<------>b .L1545
.L1493:
<------>mov w1, 5
<------>b .L1547
.L1490:
<------>cmp w0, 49
<------>bne .L1494
<------>adrp x0, SamsungReadRetrial
<------>add x0, x0, :lo12:SamsungReadRetrial
<------>str x0, [x20, 1624]
<------>b .L1480
.L1494:
<------>cmp w0, 50
<------>bne .L1480
<------>adrp x0, samsung_read_retrial
<------>str wzr, [x21, 2376]
<------>add x0, x0, :lo12:samsung_read_retrial
<------>str x0, [x20, 1624]
<------>b .L1480
.L1502:
<------>mov w0, -2
<------>b .L1448
.L1462:
<------>strb w5, [x3, 1688]
<------>b .L1461
<------>.size FlashInit, .-FlashInit
<------>.align 2
<------>.global FlashPageProgMsbFFData
<------>.type FlashPageProgMsbFFData, %function
FlashPageProgMsbFFData:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>and w23, w0, 255
<------>add x0, x20, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>and w19, w2, 65535
<------>ldrb w2, [x0, 204]
<------>cbz w2, .L1551
<------>ldr w0, [x0, 2376]
<------>cbnz w0, .L1550
.L1551:
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr x0, [x0, 88]
<------>ldrb w0, [x0, 19]
<------>sub w0, w0, #5
<------>and w3, w0, 255
<------>cmp w3, 63
<------>bhi .L1550
<------>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, .L1550
<------>adrp x21, .LANCHOR2
<------>add x21, x21, :lo12:.LANCHOR2
<------>adrp x22, .LANCHOR4
<------>mov w24, w1
<------>add x21, x21, 1500
<------>add x22, x22, :lo12:.LANCHOR4
.L1553:
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr x0, [x0, 88]
<------>ldrh w0, [x0, 10]
<------>cmp w0, w19
<------>bhi .L1554
.L1550:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
.L1554:
<------>ldrh w1, [x21, w19, sxtw 1]
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L1550
<------>ldr x0, [x22, 1656]
<------>mov w2, 32768
<------>mov w1, 255
<------>bl ftl_memset
<------>ldr x3, [x22, 1656]
<------>add w1, w19, w24
<------>add w19, w19, 1
<------>mov w0, w23
<------>and w19, w19, 65535
<------>mov x2, x3
<------>bl FlashProgPage
<------>b .L1553
<------>.size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
<------>.align 2
<------>.global FlashReadSlc2KPages
<------>.type FlashReadSlc2KPages, %function
FlashReadSlc2KPages:
<------>stp x29, x30, [sp, -128]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x0
<------>mov w0, 56
<------>stp x21, x22, [sp, 32]
<------>str w2, [x29, 104]
<------>adrp x2, .LANCHOR1+481
<------>stp x23, x24, [sp, 48]
<------>nop // between mem op and mult-accumulate
<------>umaddl x0, w1, w0, x19
<------>stp x25, x26, [sp, 64]
<------>and w22, w1, 255
<------>adrp x25, .LANCHOR0
<------>ldrb w2, [x2, #:lo12:.LANCHOR1+481]
<------>add x23, x25, :lo12:.LANCHOR0
<------>stp x27, x28, [sp, 80]
<------>str x0, [x29, 96]
<------>str w2, [x29, 108]
.L1560:
<------>ldr x0, [x29, 96]
<------>cmp x19, x0
<------>bne .L1580
<------>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
.L1580:
<------>ldr w1, [x29, 104]
<------>add x2, x29, 124
<------>mov w4, w22
<------>add x3, x29, 120
<------>mov x0, x19
<------>bl LogAddr2PhyAddr
<------>add x1, x25, :lo12:.LANCHOR0
<------>ldr w0, [x29, 120]
<------>ldrb w2, [x1, 2358]
<------>cmp w2, w0
<------>bhi .L1561
<------>mov w0, -1
<------>str w0, [x19]
.L1562:
<------>sub w22, w22, #1
<------>add x19, x19, 56
<------>and w22, w22, 255
<------>b .L1560
.L1561:
<------>add x0, x1, w0, uxtw
<------>adrp x21, .LANCHOR4
<------>add x27, x21, :lo12:.LANCHOR4
<------>mov w24, 0
<------>mov w28, 256
<------>ldrb w20, [x0, 2360]
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>mov w0, w20
<------>bl NandcFlashCs
.L1563:
<------>ldr w1, [x29, 124]
<------>mov w0, w20
<------>bl FlashReadCmd
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>ldrb w2, [x29, 108]
<------>mov w1, 0
<------>ldp x3, x4, [x19, 8]
<------>mov w0, w20
<------>bl NandcXferData
<------>mov w26, w0
<------>ldrb w0, [x27, 1688]
<------>cbz w0, .L1564
<------>mov w0, w20
<------>bl flash_read_ecc
<------>cmp w0, 5
<------>csel w26, w26, w28, ls
.L1564:
<------>cmp w24, 9
<------>ccmn w26, #1, 0, ls
<------>bne .L1565
<------>add w24, w24, 1
<------>b .L1563
.L1565:
<------>cmp w24, 0
<------>mov w27, 256
<------>add x21, x21, :lo12:.LANCHOR4
<------>csel w26, w26, w27, eq
<------>mov w24, 0
.L1567:
<------>ldr w0, [x23, 76]
<------>ldr w1, [x29, 124]
<------>add w1, w1, w0
<------>mov w0, w20
<------>bl FlashReadCmd
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>ldr x0, [x19, 8]
<------>mov w1, 0
<------>ldrb w2, [x29, 108]
<------>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 w28, w0
<------>ldrb w0, [x21, 1688]
<------>cbz w0, .L1570
<------>mov w0, w20
<------>bl flash_read_ecc
<------>cmp w0, 5
<------>csel w28, w28, w27, ls
.L1570:
<------>cmp w24, 9
<------>ccmn w28, #1, 0, ls
<------>bne .L1571
<------>add w24, w24, 1
<------>b .L1567
.L1571:
<------>cmp w24, 0
<------>mov w2, 256
<------>mov w0, w20
<------>csel w28, w28, w2, eq
<------>bl NandcFlashDeCs
<------>ldrb w0, [x23, 2464]
<------>cmp w26, w28
<------>csel w5, w26, w28, cs
<------>add w0, w0, w0, lsl 1
<------>cmp w5, w0, lsr 2
<------>bls .L1573
<------>cmn w5, #1
<------>csel w5, w5, w2, eq
.L1573:
<------>cmp w5, 256
<------>ldr x0, [x19, 16]
<------>ccmn w5, #1, 4, ne
<------>csel w5, w5, wzr, eq
<------>str w5, [x19]
<------>cbz x0, .L1576
<------>ldr w1, [x0, 12]
<------>cmn w1, #1
<------>bne .L1576
<------>ldr w1, [x0, 8]
<------>cmn w1, #1
<------>bne .L1576
<------>ldr w0, [x0]
<------>cmn w0, #1
<------>beq .L1576
<------>str w1, [x19]
.L1576:
<------>ldr w3, [x19]
<------>cmn w3, #1
<------>bne .L1562
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC98
<------>ldrb w2, [x23, 2464]
<------>add x0, x0, :lo12:.LC98
<------>bl printk
<------>ldr x1, [x19, 8]
<------>cbz x1, .L1578
<------>adrp x0, .LC99
<------>mov w3, 8
<------>mov w2, 4
<------>add x0, x0, :lo12:.LC99
<------>bl rknand_print_hex
.L1578:
<------>ldr x1, [x19, 16]
<------>cbz x1, .L1562
<------>mov w3, 4
<------>adrp x0, .LC100
<------>mov w2, w3
<------>add x0, x0, :lo12:.LC100
<------>bl rknand_print_hex
<------>b .L1562
<------>.size FlashReadSlc2KPages, .-FlashReadSlc2KPages
<------>.align 2
<------>.global FlashReadPages
<------>.type FlashReadPages, %function
FlashReadPages:
<------>stp x29, x30, [sp, -144]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR0
<------>add x3, x22, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>stp w2, w1, [x29, 104]
<------>ldrb w4, [x3, 72]
<------>cbnz w4, .L1609
<------>mov x25, x0
<------>adrp x0, .LANCHOR1+481
<------>mov w24, 0
<------>mov w23, 0
<------>ldrb w0, [x0, #:lo12:.LANCHOR1+481]
<------>str w0, [x29, 120]
<------>ldrb w0, [x3, 80]
<------>str w0, [x29, 100]
<------>adrp x0, .LANCHOR4
<------>add x27, x0, :lo12:.LANCHOR4
.L1610:
<------>ldr w0, [x29, 108]
<------>cmp w23, w0
<------>bcc .L1644
<------>mov w0, 0
<------>b .L1608
.L1609:
<------>bl FlashReadSlc2KPages
.L1608:
<------>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
.L1644:
<------>mov w26, 56
<------>ldr w1, [x29, 104]
<------>add x2, x29, 140
<------>add x3, x29, 136
<------>umull x0, w23, w26
<------>add x26, x22, :lo12:.LANCHOR0
<------>str x0, [x29, 112]
<------>add x21, x25, x0
<------>ldr w0, [x29, 108]
<------>sub w4, w0, w23
<------>mov x0, x21
<------>ldr w28, [x21, 4]
<------>bl LogAddr2PhyAddr
<------>ldrb w2, [x26, 2358]
<------>mov w20, w0
<------>ldr w0, [x29, 136]
<------>cmp w2, w0
<------>bhi .L1612
<------>ldr x1, [x29, 112]
<------>mov w0, -1
<------>str w0, [x25, x1]
.L1613:
<------>add w23, w23, 1
<------>b .L1610
.L1612:
<------>add x0, x26, w0, uxtw
<------>ldrb w19, [x0, 2360]
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldrb w0, [x0, 1689]
<------>cmp w0, 0
<------>mov w0, w19
<------>csel w20, w20, wzr, ne
<------>bl NandcWaitFlashReady
<------>ldr x0, [x26, 88]
<------>ldrb w0, [x0, 19]
<------>sub w2, w0, #1
<------>and w2, w2, 255
<------>cmp w2, 7
<------>bhi .L1615
<------>add x1, x26, 1272
<------>sxtw x2, w19
<------>add x1, x1, x2
<------>sub w0, w0, #7
<------>and w0, w0, 255
<------>cmp w0, 1
<------>ldrb w3, [x1, 12]
<------>bhi .L1616
<------>ldrb w3, [x1, 20]
.L1616:
<------>add x0, x22, :lo12:.LANCHOR0
<------>add x2, x0, x2
<------>ldrb w1, [x2, 2128]
<------>cmp w1, w3
<------>beq .L1615
<------>ldrb w1, [x0, 1273]
<------>add x2, x0, 1276
<------>mov w0, w19
<------>bl HynixSetRRPara
.L1615:
<------>mov w0, w19
<------>bl NandcFlashCs
<------>ldr w0, [x29, 104]
<------>cmp w0, 1
<------>cset w0, eq
<------>orr w0, w0, w28, lsr 31
<------>str w0, [x29, 124]
<------>cbz w0, .L1617
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 204]
<------>cbz w0, .L1617
<------>mov w0, w19
<------>bl flash_enter_slc_mode
.L1618:
<------>add x28, x22, :lo12:.LANCHOR0
.L1624:
<------>ldr w1, [x29, 140]
<------>cmn w1, #1
<------>bne .L1619
<------>cmp w19, 255
<------>beq .L1646
.L1619:
<------>cbz w20, .L1621
<------>ldr w2, [x28, 76]
<------>mov w0, w19
<------>add w2, w1, w2
<------>bl FlashReadDpCmd
.L1622:
<------>mov w0, w19
<------>bl NandcWaitFlashReady
<------>cbz w20, .L1620
<------>ldr w1, [x29, 140]
<------>mov w0, w19
<------>bl FlashReadDpDataOutCmd
.L1620:
<------>ldrb w2, [x29, 120]
<------>mov w1, 0
<------>ldp x3, x4, [x21, 8]
<------>mov w0, w19
<------>bl NandcXferData
<------>mov w26, w0
<------>ldrb w0, [x28, 80]
<------>cbz w0, .L1623
<------>cmn w26, #1
<------>bne .L1623
<------>strb wzr, [x28, 80]
<------>mov w20, 0
<------>b .L1624
.L1617:
<------>mov w0, w19
<------>bl flash_exit_slc_mode
<------>b .L1618
.L1621:
<------>mov w0, w19
<------>bl FlashReadCmd
<------>b .L1622
.L1646:
<------>mov w20, 0
<------>b .L1620
.L1623:
<------>cbz w20, .L1625
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldr w1, [x29, 140]
<------>ldr w0, [x0, 76]
<------>add w1, w1, w0
<------>mov w0, w19
<------>bl FlashReadDpDataOutCmd
<------>add w0, w23, 1
<------>mov w1, 56
<------>ldrb w2, [x29, 120]
<------>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 w24, w0
<------>csel w20, w20, wzr, ne
.L1625:
<------>add x28, x22, :lo12:.LANCHOR0
<------>mov w0, w19
<------>bl NandcFlashDeCs
<------>ldrb w0, [x29, 100]
<------>cmn w26, #1
<------>strb w0, [x28, 80]
<------>bne .L1626
<------>ldrb w0, [x28, 2380]
<------>cbnz w0, .L1627
.L1631:
<------>ldr x4, [x27, 1624]
<------>cbnz x4, .L1628
<------>ldr w1, [x29, 140]
<------>mov w0, w19
<------>ldp x2, x3, [x21, 8]
<------>bl FlashReadRawPage
<------>b .L1683
.L1627:
<------>ldr x0, [x28, 136]
<------>mov w4, 1
<------>ldr w1, [x29, 140]
<------>ldp x2, x3, [x21, 8]
<------>ldr w20, [x0, 304]
<------>mov w0, w19
<------>bl FlashDdrTunningRead
<------>mov w26, w0
<------>cmn w0, #1
<------>beq .L1630
<------>ldrb w0, [x28, 2464]
<------>cmp w26, w0, lsr 1
<------>bls .L1647
.L1630:
<------>lsr w0, w20, 8
<------>bl NandcSetDdrPara
<------>cmn w26, #1
<------>beq .L1631
.L1647:
<------>mov w20, 0
.L1626:
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w26, w0, lsr 2
<------>bls .L1632
<------>ldr x0, [x27, 1624]
<------>cmp x0, 0
<------>mov w0, 256
<------>csel w26, w26, w0, ne
.L1632:
<------>ldr x0, [x29, 112]
<------>cmp w26, 256
<------>ccmn w26, #1, 4, ne
<------>csel w3, w26, wzr, eq
<------>cmn w3, #1
<------>str w3, [x25, x0]
<------>bne .L1639
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldr w1, [x21, 4]
<------>ldrb w2, [x0, 2464]
<------>adrp x0, .LC98
<------>add x0, x0, :lo12:.LC98
<------>bl printk
<------>ldr x1, [x21, 16]
<------>cbz x1, .L1639
<------>mov w3, 4
<------>adrp x0, .LC100
<------>mov w2, w3
<------>add x0, x0, :lo12:.LC100
<------>bl rknand_print_hex
.L1639:
<------>cbz w20, .L1641
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 2464]
<------>add w0, w0, w0, lsl 1
<------>cmp w24, w0, lsr 2
<------>bls .L1642
<------>ldr x0, [x27, 1624]
<------>cmp x0, 0
<------>mov w0, 256
<------>csel w24, w24, w0, ne
.L1642:
<------>add w0, w23, 1
<------>mov w1, 56
<------>cmp w24, 256
<------>ccmn w24, #1, 4, ne
<------>umull x0, w0, w1
<------>csel w1, w24, wzr, eq
<------>str w1, [x25, x0]
.L1641:
<------>ldr w0, [x29, 124]
<------>add w23, w23, w20
<------>cbz w0, .L1613
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 204]
<------>cbz w0, .L1613
<------>mov w0, w19
<------>bl flash_exit_slc_mode
<------>b .L1613
.L1628:
<------>ldr w1, [x29, 140]
<------>mov w0, w19
<------>ldp x2, x3, [x21, 8]
<------>mov w20, 0
<------>blr x4
<------>mov w26, w0
<------>cmn w0, #1
<------>bne .L1632
<------>add x1, x22, :lo12:.LANCHOR0
<------>ldr x0, [x1, 88]
<------>ldrb w0, [x0, 19]
<------>sub w0, w0, #1
<------>and w0, w0, 255
<------>cmp w0, 7
<------>bhi .L1633
<------>add x2, x1, 1276
<------>ldrb w1, [x1, 1273]
<------>mov w3, 0
<------>mov w0, w19
<------>bl HynixSetRRPara
.L1633:
<------>ldp x2, x3, [x21, 8]
<------>add x20, x22, :lo12:.LANCHOR0
<------>ldr w1, [x29, 140]
<------>mov w0, w19
<------>bl FlashReadRawPage
<------>mov w26, w0
<------>ldrb w2, [x20, 2464]
<------>mov w3, w0
<------>ldr w1, [x21, 4]
<------>adrp x0, .LC101
<------>add x0, x0, :lo12:.LC101
<------>bl printk
<------>cmn w26, #1
<------>bne .L1650
<------>ldrb w0, [x20, 204]
<------>cbz w0, .L1650
<------>ldr w0, [x29, 124]
<------>cbz w0, .L1634
<------>mov w0, w19
<------>bl flash_enter_slc_mode
.L1635:
<------>ldr w1, [x29, 140]
<------>mov w0, w19
<------>ldp x2, x3, [x21, 8]
<------>ldr x4, [x27, 1624]
<------>blr x4
.L1683:
<------>mov w26, w0
.L1650:
<------>mov w20, 0
<------>b .L1632
.L1634:
<------>mov w0, w19
<------>bl flash_exit_slc_mode
<------>b .L1635
<------>.size FlashReadPages, .-FlashReadPages
<------>.align 2
<------>.global FlashLoadFactorBbt
<------>.type FlashLoadFactorBbt, %function
FlashLoadFactorBbt:
<------>stp x29, x30, [sp, -176]!
<------>mov w2, 16
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR0
<------>add x0, x22, :lo12:.LANCHOR0
<------>stp x25, x26, [sp, 64]
<------>stp x19, x20, [sp, 16]
<------>add x0, x0, 176
<------>stp x23, x24, [sp, 48]
<------>adrp x23, .LANCHOR4
<------>stp x27, x28, [sp, 80]
<------>add x19, x23, :lo12:.LANCHOR4
<------>mov w26, -1
<------>mov w27, 0
<------>ldrh w21, [x0, 14]
<------>ldrh w0, [x0, 12]
<------>mul w21, w21, w0
<------>add x0, x19, 1696
<------>bl ftl_memset
<------>and w21, w21, 65535
<------>ldr x0, [x19, 1664]
<------>add w25, w21, w26
<------>stp xzr, x0, [x29, 128]
<------>and w25, w25, 65535
<------>sub w0, w21, #12
<------>mov w19, 0
<------>str w0, [x29, 108]
.L1685:
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 2358]
<------>cmp w0, w19
<------>bhi .L1691
<------>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], 176
<------>ret
.L1691:
<------>mul w28, w21, w19
<------>mov w20, w25
<------>add x24, x23, :lo12:.LANCHOR4
<------>mov w3, 61664
.L1686:
<------>ldr w0, [x29, 108]
<------>cmp w20, w0
<------>ble .L1688
<------>add w0, w20, w28
<------>mov w2, 1
<------>lsl w0, w0, 10
<------>str w3, [x29, 104]
<------>str w0, [x29, 124]
<------>mov w1, w2
<------>add x0, x29, 120
<------>bl FlashReadPages
<------>ldr w0, [x29, 120]
<------>ldr w3, [x29, 104]
<------>cmn w0, #1
<------>beq .L1687
<------>ldr x0, [x24, 1664]
<------>ldrh w0, [x0]
<------>cmp w0, w3
<------>bne .L1687
<------>add x24, x24, 1696
<------>add w27, w27, 1
<------>and w27, w27, 65535
<------>mov w2, w20
<------>mov w1, w19
<------>adrp x0, .LC102
<------>add x0, x0, :lo12:.LC102
<------>bl printk
<------>strh w20, [x24, w19, sxtw 1]
.L1688:
<------>add x0, x22, :lo12:.LANCHOR0
<------>add w19, w19, 1
<------>and w19, w19, 255
<------>ldrb w0, [x0, 2358]
<------>cmp w0, w27
<------>csel w26, w26, wzr, ne
<------>b .L1685
.L1687:
<------>sub w20, w20, #1
<------>and w20, w20, 65535
<------>b .L1686
<------>.size FlashLoadFactorBbt, .-FlashLoadFactorBbt
<------>.align 2
<------>.global FlashProgSlc2KPages
<------>.type FlashProgSlc2KPages, %function
FlashProgSlc2KPages:
<------>stp x29, x30, [sp, -176]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>mov w24, 56
<------>stp x25, x26, [sp, 64]
<------>mov w25, w2
<------>adrp x2, .LANCHOR1+481
<------>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:.LANCHOR1+481]
<------>mov w23, w22
<------>stp x27, x28, [sp, 80]
<------>mov x21, x0
<------>stp x19, x20, [sp, 16]
<------>adrp x27, .LANCHOR0
<------>mov x19, x0
<------>add x28, x27, :lo12:.LANCHOR0
.L1697:
<------>cmp x21, x24
<------>bne .L1703
<------>adrp x23, .LANCHOR4
<------>add x24, x23, :lo12:.LANCHOR4
.L1704:
<------>cmp x19, x21
<------>bne .L1711
<------>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
.L1703:
<------>mov w1, w25
<------>mov w4, w23
<------>add x3, x29, 116
<------>add x2, x29, 112
<------>mov x0, x21
<------>bl LogAddr2PhyAddr
<------>add x5, x27, :lo12:.LANCHOR0
<------>ldr w0, [x29, 116]
<------>ldrb w1, [x5, 2358]
<------>cmp w1, w0
<------>bhi .L1698
<------>mov w0, -1
<------>str w0, [x21]
.L1699:
<------>sub w23, w23, #1
<------>add x21, x21, 56
<------>and w23, w23, 255
<------>b .L1697
.L1698:
<------>add x0, x5, w0, uxtw
<------>str x5, [x29, 104]
<------>ldrb w20, [x0, 2360]
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>mov w0, w20
<------>bl NandcFlashCs
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>bl FlashProgFirstCmd
<------>ldp x3, x4, [x21, 8]
<------>mov w2, w26
<------>mov w1, 1
<------>mov w0, w20
<------>bl NandcXferData
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>bl FlashProgSecondCmd
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>bl FlashReadStatus
<------>sbfx x0, x0, 0, 1
<------>ldr x5, [x29, 104]
<------>str w0, [x21]
<------>ldr w1, [x29, 112]
<------>ldr w0, [x5, 76]
<------>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, 76]
<------>ldr w1, [x29, 112]
<------>add w1, w1, w0
<------>mov w0, w20
<------>bl FlashProgSecondCmd
<------>mov w0, w20
<------>bl NandcWaitFlashReady
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>bl FlashReadStatus
<------>tbz x0, 0, .L1702
<------>mov w0, -1
<------>str w0, [x21]
.L1702:
<------>mov w0, w20
<------>bl NandcFlashDeCs
<------>b .L1699
.L1711:
<------>ldr w0, [x19]
<------>cmn w0, #1
<------>bne .L1705
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC103
<------>add x0, x0, :lo12:.LC103
<------>bl printk
.L1706:
<------>sub w22, w22, #1
<------>add x19, x19, 56
<------>and w22, w22, 255
<------>b .L1704
.L1705:
<------>add x20, x23, :lo12:.LANCHOR4
<------>mov w4, w22
<------>add x3, x29, 116
<------>add x2, x29, 112
<------>mov w1, w25
<------>mov x0, x19
<------>bl LogAddr2PhyAddr
<------>ldr x0, [x20, 1672]
<------>mov x2, 56
<------>mov x1, x19
<------>str wzr, [x0]
<------>ldr x0, [x20, 1680]
<------>str wzr, [x0]
<------>add x0, x29, 120
<------>bl memcpy
<------>ldr x0, [x20, 1672]
<------>mov w2, w25
<------>str x0, [x29, 128]
<------>mov w1, 1
<------>ldr x0, [x20, 1680]
<------>str x0, [x29, 136]
<------>add x0, x29, 120
<------>bl FlashReadPages
<------>ldr w20, [x29, 120]
<------>cmn w20, #1
<------>bne .L1707
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC104
<------>add x0, x0, :lo12:.LC104
<------>bl printk
<------>str w20, [x19]
.L1707:
<------>ldr w20, [x29, 120]
<------>cmp w20, 256
<------>bne .L1708
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC105
<------>add x0, x0, :lo12:.LC105
<------>bl printk
<------>str w20, [x19]
.L1708:
<------>ldr x0, [x19, 16]
<------>cbz x0, .L1709
<------>ldr w2, [x0]
<------>ldr x0, [x24, 1680]
<------>ldr w3, [x0]
<------>cmp w2, w3
<------>beq .L1709
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC106
<------>add x0, x0, :lo12:.LC106
<------>bl printk
<------>mov w0, -1
<------>str w0, [x19]
.L1709:
<------>ldr x0, [x19, 8]
<------>cbz x0, .L1706
<------>ldr w2, [x0]
<------>ldr x0, [x24, 1672]
<------>ldr w3, [x0]
<------>cmp w2, w3
<------>beq .L1706
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC107
<------>add x0, x0, :lo12:.LC107
<------>bl printk
<------>mov w0, -1
<------>str w0, [x19]
<------>b .L1706
<------>.size FlashProgSlc2KPages, .-FlashProgSlc2KPages
<------>.align 2
<------>.global FtlLoadFactoryBbt
<------>.type FtlLoadFactoryBbt, %function
FtlLoadFactoryBbt:
<------>stp x29, x30, [sp, -96]!
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>mov w23, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR4
<------>stp x21, x22, [sp, 32]
<------>add x20, x20, :lo12:.LANCHOR4
<------>stp x25, x26, [sp, 64]
<------>add x20, x20, 1712
<------>str x27, [sp, 80]
<------>mov x26, x20
<------>mov w27, 61664
<------>ldr x1, [x0, 3608]
<------>ldr x25, [x0, 3656]
<------>adrp x0, .LANCHOR0
<------>add x21, x0, :lo12:.LANCHOR0
<------>mov x24, x0
<------>add x21, x21, 2636
<------>stp x1, x25, [x20, 8]
.L1725:
<------>add x0, x24, :lo12:.LANCHOR0
<------>ldrh w1, [x0, 2494]
<------>cmp w23, w1
<------>bcc .L1730
<------>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
.L1730:
<------>ldrh w19, [x0, 2542]
<------>mov x22, x0
<------>mov w1, -1
<------>strh w1, [x21]
<------>sub w19, w19, #1
<------>and w19, w19, 65535
.L1726:
<------>ldrh w0, [x22, 2542]
<------>sub w1, w0, #16
<------>cmp w19, w1
<------>ble .L1728
<------>madd w0, w0, w23, w19
<------>mov w2, 1
<------>mov w1, w2
<------>lsl w0, w0, 10
<------>str w0, [x26, 4]
<------>mov x0, x20
<------>bl FlashReadPages
<------>ldr w0, [x26]
<------>cmn w0, #1
<------>beq .L1727
<------>ldrh w0, [x25]
<------>cmp w0, w27
<------>bne .L1727
<------>strh w19, [x21]
.L1728:
<------>add w23, w23, 1
<------>add x21, x21, 2
<------>b .L1725
.L1727:
<------>sub w19, w19, #1
<------>and w19, w19, 65535
<------>b .L1726
<------>.size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
<------>.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]
<------>adrp x1, .LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>add x1, x1, :lo12:.LANCHOR0
<------>bne .L1736
<------>ldrh w19, [x1, 2546]
.L1737:
<------>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 .L1738
<------>mov w22, 0
<------>mov w24, 2
.L1739:
<------>cmp w22, w19
<------>ble .L1742
.L1738:
<------>mov w0, w19
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 192
<------>ret
.L1736:
<------>ldrh w19, [x1, 2544]
<------>b .L1737
.L1742:
<------>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 .L1740
<------>ldr w0, [x29, 132]
<------>cmn w0, #1
<------>bne .L1740
<------>ldr w0, [x29, 72]
<------>cmn w0, #1
<------>beq .L1740
<------>sub w19, w20, #1
<------>sxth w19, w19
<------>b .L1739
.L1740:
<------>add w20, w20, 1
<------>sxth w22, w20
<------>b .L1739
<------>.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
<------>.align 2
<------>.global FtlLoadBbt
<------>.type FtlLoadBbt, %function
FtlLoadBbt:
<------>stp x29, x30, [sp, -80]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>adrp x24, .LANCHOR2
<------>add x0, x24, :lo12:.LANCHOR2
<------>stp x19, x20, [sp, 16]
<------>stp x25, x26, [sp, 64]
<------>adrp x23, .LANCHOR4
<------>stp x21, x22, [sp, 32]
<------>add x20, x23, :lo12:.LANCHOR4
<------>add x20, x20, 1712
<------>adrp x19, .LANCHOR0
<------>ldr x1, [x0, 3608]
<------>add x25, x19, :lo12:.LANCHOR0
<------>ldr x22, [x0, 3656]
<------>mov w26, 61649
<------>stp x1, x22, [x20, 8]
<------>bl FtlBbtMemInit
<------>ldrh w21, [x25, 2542]
<------>sub w21, w21, #1
<------>and w21, w21, 65535
.L1748:
<------>ldrh w0, [x25, 2542]
<------>sub w0, w0, #48
<------>cmp w21, w0
<------>ble .L1751
<------>lsl w0, w21, 10
<------>mov w2, 1
<------>str w0, [x20, 4]
<------>mov w1, w2
<------>mov x0, x20
<------>bl FlashReadPages
<------>ldr w0, [x20]
<------>cmn w0, #1
<------>bne .L1749
<------>ldr w0, [x20, 4]
<------>mov w2, 1
<------>mov w1, w2
<------>add w0, w0, 1
<------>str w0, [x20, 4]
<------>mov x0, x20
<------>bl FlashReadPages
.L1749:
<------>ldr w0, [x20]
<------>cmn w0, #1
<------>beq .L1750
<------>ldrh w0, [x22]
<------>cmp w0, w26
<------>bne .L1750
<------>add x1, x19, :lo12:.LANCHOR0
<------>add x0, x1, 2624
<------>strh w21, [x1, 2624]
<------>ldr w1, [x22, 4]
<------>str w1, [x0, 8]
<------>ldrh w1, [x22, 8]
<------>strh w1, [x0, 4]
.L1751:
<------>add x21, x19, :lo12:.LANCHOR0
<------>mov w0, 65535
<------>ldrh w1, [x21, 2624]
<------>cmp w1, w0
<------>beq .L1765
<------>ldrh w1, [x21, 2628]
<------>cmp w1, w0
<------>beq .L1755
<------>add x25, x23, :lo12:.LANCHOR4
<------>lsl w1, w1, 10
<------>add x0, x25, 1712
<------>mov w2, 1
<------>str w1, [x0, 4]
<------>mov w1, w2
<------>bl FlashReadPages
<------>ldr w0, [x25, 1712]
<------>cmn w0, #1
<------>beq .L1755
<------>ldrh w1, [x22]
<------>mov w0, 61649
<------>cmp w1, w0
<------>bne .L1755
<------>ldr w1, [x21, 2632]
<------>ldr w0, [x22, 4]
<------>cmp w0, w1
<------>bls .L1755
<------>str w0, [x21, 2632]
<------>ldrh w1, [x21, 2628]
<------>ldrh w0, [x22, 8]
<------>strh w1, [x21, 2624]
<------>strh w0, [x21, 2628]
.L1755:
<------>add x25, x19, :lo12:.LANCHOR0
<------>add x21, x23, :lo12:.LANCHOR4
<------>add x21, x21, 1712
<------>add x26, x24, :lo12:.LANCHOR2
<------>mov w1, 1
<------>ldrh w0, [x25, 2624]
<------>bl FtlGetLastWrittenPage
<------>sxth w20, w0
<------>add w0, w0, 1
<------>strh w0, [x25, 2626]
.L1757:
<------>tbnz w20, #31, .L1762
<------>ldrh w0, [x25, 2624]
<------>mov w2, 1
<------>mov w1, w2
<------>orr w0, w20, w0, lsl 10
<------>str w0, [x21, 4]
<------>ldr x0, [x26, 3608]
<------>str x0, [x21, 8]
<------>mov x0, x21
<------>bl FlashReadPages
<------>ldr w0, [x21]
<------>cmn w0, #1
<------>beq .L1758
<------>ldrh w1, [x22]
<------>mov w0, 61649
<------>cmp w1, w0
<------>bne .L1758
.L1762:
<------>add x1, x19, :lo12:.LANCHOR0
<------>ldrh w0, [x22, 10]
<------>mov w2, 65535
<------>strh w0, [x1, 2630]
<------>ldrh w0, [x22, 12]
<------>cmp w0, w2
<------>bne .L1759
.L1760:
<------>add x19, x19, :lo12:.LANCHOR0
<------>add x24, x24, :lo12:.LANCHOR2
<------>add x21, x19, 2656
<------>add x23, x23, :lo12:.LANCHOR4
<------>mov w20, 0
.L1763:
<------>ldrh w0, [x19, 2494]
<------>cmp w20, w0
<------>bcc .L1764
<------>mov w0, 0
.L1747:
<------>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
.L1750:
<------>sub w21, w21, #1
<------>and w21, w21, 65535
<------>b .L1748
.L1758:
<------>sub w20, w20, #1
<------>sxth w20, w20
<------>b .L1757
.L1759:
<------>ldr w2, [x1, 2468]
<------>cmp w0, w2
<------>beq .L1760
<------>ldrh w1, [x1, 2482]
<------>lsr w1, w1, 2
<------>cmp w2, w1
<------>bcs .L1760
<------>cmp w0, w1
<------>bcs .L1760
<------>bl FtlSysBlkNumInit
<------>b .L1760
.L1764:
<------>ldrh w2, [x24, 3784]
<------>ldr x0, [x23, 1720]
<------>mul w1, w2, w20
<------>lsl w2, w2, 2
<------>add w20, w20, 1
<------>add x1, x0, x1, lsl 2
<------>ldr x0, [x21], 8
<------>bl ftl_memcpy
<------>b .L1763
.L1765:
<------>mov w0, -1
<------>b .L1747
<------>.size FtlLoadBbt, .-FtlLoadBbt
<------>.align 2
<------>.global FtlScanSysBlk
<------>.type FtlScanSysBlk, %function
FtlScanSysBlk:
<------>stp x29, x30, [sp, -128]!
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR2
<------>add x19, x22, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>adrp x23, .LANCHOR0
<------>add x20, x23, :lo12:.LANCHOR0
<------>stp x25, x26, [sp, 64]
<------>mov w25, 56
<------>ldr x0, [x19, 3768]
<------>ldr w2, [x20, 2572]
<------>stp x27, x28, [sp, 80]
<------>strh wzr, [x19, 3856]
<------>lsl w2, w2, 2
<------>strh wzr, [x20, 2590]
<------>bl ftl_memset
<------>ldr x0, [x19, 3712]
<------>mov w1, 0
<------>ldr w2, [x20, 2572]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>ldr x0, [x19, 3736]
<------>mov w1, 0
<------>ldrh w2, [x20, 2564]
<------>lsl w2, w2, 2
<------>bl ftl_memset
<------>ldr x0, [x20, 2592]
<------>mov w1, 0
<------>ldrh w2, [x20, 2564]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>mov w2, 16
<------>mov w1, 255
<------>add x0, x19, 784
<------>bl ftl_memset
<------>ldrh w24, [x20, 2480]
<------>add x0, x20, 2504
<------>str x0, [x29, 112]
.L1777:
<------>ldrh w0, [x20, 2482]
<------>cmp w0, w24
<------>bls .L1816
<------>ldrh w9, [x20, 2472]
<------>mov x6, 0
<------>ldrh w8, [x20, 2556]
<------>mov w21, 0
<------>add x5, x22, :lo12:.LANCHOR2
<------>mov w7, 4
<------>b .L1817
.L1779:
<------>ldr x0, [x29, 112]
<------>mov w1, w24
<------>ldrb w0, [x0, x6]
<------>bl V2P_block
<------>and w4, w0, 65535
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L1778
<------>umull x2, w21, w25
<------>ldr x0, [x5, 3584]
<------>lsl w4, w4, 10
<------>add x0, x0, x2
<------>str w4, [x0, 4]
<------>ldr x1, [x5, 3584]
<------>ldr x0, [x5, 1392]
<------>add x1, x1, x2
<------>ldr x2, [x5, 1400]
<------>str x0, [x1, 8]
<------>mul w0, w21, w8
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>sdiv w0, w0, w7
<------>add x0, x2, w0, sxtw 2
<------>str x0, [x1, 16]
.L1778:
<------>add x6, x6, 1
.L1817:
<------>cmp w9, w6, uxth
<------>bhi .L1779
<------>cbnz w21, .L1780
.L1815:
<------>add w24, w24, 1
<------>and w24, w24, 65535
<------>b .L1777
.L1780:
<------>add x19, x22, :lo12:.LANCHOR2
<------>mov w2, 1
<------>mov w1, w21
<------>add x27, x19, 784
<------>mov x26, 0
<------>ldr x0, [x19, 3584]
<------>bl FlashReadPages
<------>umull x0, w21, w25
<------>str x0, [x29, 120]
.L1814:
<------>ldr x0, [x19, 3584]
<------>add x1, x0, x26
<------>ldr w0, [x0, x26]
<------>ldr w28, [x1, 4]
<------>cmn w0, #1
<------>ldr x21, [x1, 16]
<------>ubfx x28, x28, 10, 16
<------>bne .L1783
<------>mov w6, 16
<------>mov w7, 65535
.L1785:
<------>ldr x0, [x19, 3584]
<------>mov w2, 1
<------>stp w7, w6, [x29, 104]
<------>add x0, x0, x26
<------>ldr w1, [x0, 4]
<------>add w1, w1, 1
<------>str w1, [x0, 4]
<------>mov w1, w2
<------>ldr x0, [x19, 3584]
<------>add x0, x0, x26
<------>bl FlashReadPages
<------>ldp w7, w6, [x29, 104]
<------>ldrh w0, [x21]
<------>cmp w0, w7
<------>ldr x0, [x19, 3584]
<------>bne .L1782
<------>mov w1, -1
<------>str w1, [x0, x26]
<------>ldr x0, [x19, 3584]
<------>ldr w0, [x0, x26]
<------>cmp w0, w1
<------>beq .L1851
.L1783:
<------>ldr w0, [x19, 752]
<------>ldr w10, [x21, 4]
<------>cmn w0, #1
<------>beq .L1786
<------>cmp w0, w10
<------>bhi .L1787
.L1786:
<------>cmn w10, #1
<------>beq .L1787
<------>add w0, w10, 1
<------>str w0, [x19, 752]
.L1787:
<------>ldrh w0, [x21]
<------>mov w1, 61604
<------>cmp w0, w1
<------>beq .L1789
<------>bhi .L1790
<------>mov w1, 61574
<------>cmp w0, w1
<------>beq .L1791
.L1788:
<------>ldr x0, [x29, 120]
<------>add x26, x26, 56
<------>cmp x26, x0
<------>bne .L1814
<------>b .L1815
.L1782:
<------>ldr w0, [x0, x26]
<------>cmn w0, #1
<------>bne .L1783
<------>sub w6, w6, #1
<------>ands w6, w6, 65535
<------>bne .L1785
.L1851:
<------>mov w1, 0
<------>mov w0, w28
<------>bl FtlFreeSysBlkQueueIn
<------>b .L1788
.L1790:
<------>mov w1, 61634
<------>cmp w0, w1
<------>beq .L1792
<------>mov w1, 65535
<------>cmp w0, w1
<------>beq .L1851
<------>b .L1788
.L1792:
<------>ldr w6, [x20, 2572]
<------>ldrh w1, [x19, 3856]
<------>and w2, w6, 65535
<------>ldr x7, [x19, 3768]
<------>sub w0, w2, #1
<------>sub w2, w2, w1
<------>sub w2, w2, #1
<------>sxth x0, w0
<------>sxth w2, w2
.L1794:
<------>cmp w0, w2
<------>bgt .L1800
<------>tbz w0, #31, .L1832
<------>b .L1788
.L1800:
<------>sxtw x8, w0
<------>lsl x9, x8, 2
<------>ldr w11, [x7, x9]
<------>cmp w10, w11
<------>bls .L1795
<------>ldr w2, [x7]
<------>cbnz w2, .L1796
<------>cmp w6, w1
<------>beq .L1796
<------>add w1, w1, 1
<------>strh w1, [x19, 3856]
.L1796:
<------>mov w1, 0
.L1797:
<------>cmp w1, w0
<------>bne .L1798
<------>ldr x1, [x19, 3768]
<------>ldr w2, [x21, 4]
<------>str w2, [x1, x9]
<------>ldr x1, [x19, 3712]
<------>strh w28, [x1, x8, lsl 1]
<------>tbnz w0, #31, .L1788
<------>ldrh w1, [x19, 3856]
<------>ldr w2, [x20, 2572]
<------>sub w2, w2, w1
<------>sub w2, w2, #1
<------>cmp w0, w2, sxth
<------>bgt .L1788
.L1832:
<------>add w1, w1, 1
<------>strh w1, [x19, 3856]
<------>ldr x1, [x19, 3768]
<------>ldr w2, [x21, 4]
<------>str w2, [x1, x0, lsl 2]
<------>ldr x1, [x19, 3712]
.L1850:
<------>strh w28, [x1, x0, lsl 1]
<------>b .L1788
.L1798:
<------>ldr x7, [x19, 3768]
<------>sxtw x2, w1
<------>lsl x6, x2, 2
<------>lsl x2, x2, 1
<------>add x10, x7, x6
<------>add w1, w1, 1
<------>sxth w1, w1
<------>ldr w10, [x10, 4]
<------>str w10, [x7, x6]
<------>ldr x6, [x19, 3712]
<------>add x7, x6, x2
<------>ldrh w7, [x7, 2]
<------>strh w7, [x6, x2]
<------>b .L1797
.L1795:
<------>sub w0, w0, #1
<------>sxth x0, w0
<------>b .L1794
.L1791:
<------>ldrh w6, [x20, 2564]
<------>ldrh w1, [x20, 2590]
<------>sub w2, w6, #1
<------>ldr x7, [x19, 3736]
<------>sxth x0, w2
<------>sub w2, w2, w1
.L1803:
<------>cmp w0, w2
<------>ble .L1808
<------>sxtw x8, w0
<------>lsl x9, x8, 2
<------>ldr w11, [x7, x9]
<------>cmp w10, w11
<------>bls .L1804
<------>ldr w2, [x7]
<------>cbnz w2, .L1805
<------>cmp w6, w1
<------>beq .L1805
<------>add w1, w1, 1
<------>strh w1, [x20, 2590]
.L1805:
<------>mov w1, 0
.L1806:
<------>cmp w1, w0
<------>bne .L1807
<------>ldr x1, [x19, 3736]
<------>ldr w2, [x21, 4]
<------>str w2, [x1, x9]
<------>ldr x1, [x20, 2592]
<------>strh w28, [x1, x8, lsl 1]
.L1808:
<------>tbnz w0, #31, .L1788
<------>ldrh w1, [x20, 2564]
<------>ldrh w2, [x20, 2590]
<------>sub w1, w1, #1
<------>sub w1, w1, w2
<------>cmp w0, w1, sxth
<------>bgt .L1788
<------>ldr x1, [x19, 3736]
<------>add w2, w2, 1
<------>strh w2, [x20, 2590]
<------>ldr w2, [x21, 4]
<------>str w2, [x1, x0, lsl 2]
<------>ldr x1, [x20, 2592]
<------>b .L1850
.L1807:
<------>ldr x7, [x19, 3736]
<------>sxtw x2, w1
<------>lsl x6, x2, 2
<------>lsl x2, x2, 1
<------>add x10, x7, x6
<------>add w1, w1, 1
<------>sxth w1, w1
<------>ldr w10, [x10, 4]
<------>str w10, [x7, x6]
<------>ldr x6, [x20, 2592]
<------>add x7, x6, x2
<------>ldrh w7, [x7, 2]
<------>strh w7, [x6, x2]
<------>b .L1806
.L1804:
<------>sub w0, w0, #1
<------>sxth x0, w0
<------>b .L1803
.L1789:
<------>ldrh w0, [x27]
<------>mov w1, 65535
<------>cmp w0, w1
<------>bne .L1810
<------>strh w28, [x27]
<------>str w10, [x27, 8]
<------>b .L1788
.L1810:
<------>ldrh w0, [x27, 4]
<------>cmp w0, w1
<------>beq .L1811
<------>mov w1, 1
<------>bl FtlFreeSysBlkQueueIn
.L1811:
<------>ldr w0, [x21, 4]
<------>ldr w1, [x27, 8]
<------>cmp w1, w0
<------>bcs .L1812
<------>ldrh w0, [x27]
<------>strh w0, [x27, 4]
<------>strh w28, [x27]
<------>ldr w0, [x21, 4]
<------>str w0, [x27, 8]
<------>b .L1788
.L1812:
<------>strh w28, [x27, 4]
<------>b .L1788
.L1816:
<------>add x0, x22, :lo12:.LANCHOR2
<------>ldr x1, [x0, 3712]
<------>ldrh w2, [x1]
<------>cbz w2, .L1818
.L1821:
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldr x1, [x0, 2592]
<------>ldrh w2, [x1]
<------>cbz w2, .L1819
.L1837:
<------>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
.L1818:
<------>ldrh w0, [x0, 3856]
<------>cbz w0, .L1821
<------>ldr w2, [x20, 2572]
<------>mov w0, 0
.L1822:
<------>cmp w0, w2
<------>bcs .L1821
<------>ldrh w3, [x1, w0, sxtw 1]
<------>cbz w3, .L1823
<------>mov w1, w0
<------>add x7, x23, :lo12:.LANCHOR0
<------>add x3, x22, :lo12:.LANCHOR2
.L1824:
<------>ldr w2, [x7, 2572]
<------>cmp w1, w2
<------>bcs .L1821
<------>ldr x5, [x3, 3712]
<------>sxtw x6, w1
<------>lsl x4, x6, 1
<------>sub w2, w1, w0
<------>sxtw x2, w2
<------>add w1, w1, 1
<------>sxth w1, w1
<------>ldrh w8, [x5, x4]
<------>strh w8, [x5, x2, lsl 1]
<------>ldr x5, [x3, 3768]
<------>ldr w6, [x5, x6, lsl 2]
<------>str w6, [x5, x2, lsl 2]
<------>ldr x2, [x3, 3712]
<------>strh wzr, [x2, x4]
<------>b .L1824
.L1823:
<------>add w0, w0, 1
<------>sxth w0, w0
<------>b .L1822
.L1819:
<------>ldrh w2, [x0, 2590]
<------>cbz w2, .L1837
<------>ldrh w2, [x0, 2564]
<------>mov w0, 0
.L1827:
<------>mov w5, w0
<------>cmp w0, w2
<------>bge .L1837
<------>ldrh w3, [x1, w0, sxtw 1]
<------>cbz w3, .L1828
<------>add x23, x23, :lo12:.LANCHOR0
<------>add x22, x22, :lo12:.LANCHOR2
.L1829:
<------>ldrh w1, [x23, 2564]
<------>cmp w0, w1
<------>bge .L1837
<------>ldr x3, [x23, 2592]
<------>sxtw x4, w0
<------>lsl x2, x4, 1
<------>sub w1, w0, w5
<------>sxtw x1, w1
<------>add w0, w0, 1
<------>sxth w0, w0
<------>ldrh w6, [x3, x2]
<------>strh w6, [x3, x1, lsl 1]
<------>ldr x3, [x22, 3736]
<------>ldr w4, [x3, x4, lsl 2]
<------>str w4, [x3, x1, lsl 2]
<------>ldr x1, [x23, 2592]
<------>strh wzr, [x1, x2]
<------>b .L1829
.L1828:
<------>add w0, w0, 1
<------>sxth w0, w0
<------>b .L1827
<------>.size FtlScanSysBlk, .-FtlScanSysBlk
<------>.align 2
<------>.global FtlLoadSysInfo
<------>.type FtlLoadSysInfo, %function
FtlLoadSysInfo:
<------>sub sp, sp, #112
<------>mov w1, 0
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x19, x20, [sp, 32]
<------>adrp x20, .LANCHOR0
<------>stp x23, x24, [sp, 64]
<------>adrp x23, .LANCHOR4
<------>stp x21, x22, [sp, 48]
<------>add x19, x23, :lo12:.LANCHOR4
<------>adrp x21, .LANCHOR2
<------>add x24, x21, :lo12:.LANCHOR2
<------>add x19, x19, 1712
<------>stp x25, x26, [sp, 80]
<------>stp x27, x28, [sp, 96]
<------>ldr x0, [x24, 3608]
<------>str x0, [x19, 8]
<------>ldr x0, [x24, 3656]
<------>str x0, [x19, 16]
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldrh w2, [x0, 2480]
<------>ldr x0, [x24, 520]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>ldrh w0, [x24, 784]
<------>mov w1, 65535
<------>cmp w0, w1
<------>bne .L1853
.L1864:
<------>mov w0, -1
.L1852:
<------>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, 112
<------>ret
.L1853:
<------>add x25, x24, 784
<------>mov w1, 1
<------>bl FtlGetLastWrittenPage
<------>ldrsh w28, [x24, 784]
<------>mov w26, 19539
<------>sxth w22, w0
<------>movk w26, 0x4654, lsl 16
<------>add w0, w0, 1
<------>strh w0, [x25, 2]
.L1855:
<------>tbnz w22, #31, .L1863
<------>orr w0, w22, w28, lsl 10
<------>add x27, x20, :lo12:.LANCHOR0
<------>str w0, [x19, 4]
<------>mov w2, 1
<------>ldr x0, [x24, 3608]
<------>mov w1, w2
<------>str x0, [x19, 8]
<------>mov x0, x19
<------>bl FlashReadPages
<------>ldrb w0, [x27, 72]
<------>cbz w0, .L1856
<------>ldr x8, [x19, 16]
<------>ldr w7, [x8, 12]
<------>cbz w7, .L1856
<------>ldr x6, [x19, 8]
<------>ldrh w1, [x27, 2554]
<------>mov x0, x6
<------>bl js_hash
<------>cmp w7, w0
<------>beq .L1856
<------>cbnz w22, .L1857
<------>ldrh w0, [x25, 4]
<------>cmp w28, w0
<------>beq .L1857
<------>ldr w0, [x6]
<------>ldrh w1, [x25]
<------>str w0, [sp]
<------>adrp x0, .LC108
<------>add x0, x0, :lo12:.LC108
<------>ldp w4, w5, [x8]
<------>ldr w6, [x8, 8]
<------>ldp w2, w3, [x19]
<------>bl printk
<------>ldrsh w28, [x25, 4]
<------>ldrh w22, [x27, 2546]
.L1859:
<------>sub w22, w22, #1
<------>sxth w22, w22
<------>b .L1855
.L1857:
<------>mov w0, -1
<------>str w0, [x19]
.L1856:
<------>ldr w0, [x19]
<------>cmn w0, #1
<------>beq .L1859
<------>ldr x0, [x24, 3608]
<------>ldr w0, [x0]
<------>cmp w0, w26
<------>bne .L1859
<------>ldr x0, [x24, 3656]
<------>ldrh w1, [x0]
<------>mov w0, 61604
<------>cmp w1, w0
<------>bne .L1859
.L1863:
<------>add x19, x23, :lo12:.LANCHOR4
<------>add x24, x21, :lo12:.LANCHOR2
<------>add x19, x19, 1712
<------>add x22, x20, :lo12:.LANCHOR0
<------>mov w2, 48
<------>add x0, x24, 456
<------>ldr x1, [x19, 8]
<------>bl ftl_memcpy
<------>ldr x0, [x24, 520]
<------>ldrh w2, [x22, 2480]
<------>ldr x1, [x19, 8]
<------>lsl w2, w2, 1
<------>add x1, x1, 48
<------>bl ftl_memcpy
<------>ldrh w1, [x22, 2480]
<------>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
<------>ldr x0, [x22, 64]
<------>bl ftl_memcpy
<------>ldrh w0, [x22, 2588]
<------>cbz w0, .L1861
<------>ldrh w1, [x22, 2480]
<------>ldrh w2, [x22, 2580]
<------>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
<------>ldr x0, [x24, 3760]
<------>bl ftl_memcpy
.L1861:
<------>add x0, x21, :lo12:.LANCHOR2
<------>mov w1, 19539
<------>movk w1, 0x4654, lsl 16
<------>ldr w2, [x0, 456]
<------>cmp w2, w1
<------>bne .L1864
<------>add x1, x20, :lo12:.LANCHOR0
<------>ldrh w4, [x0, 464]
<------>ldrb w5, [x0, 466]
<------>strh w4, [x0, 790]
<------>ldrh w2, [x1, 2494]
<------>cmp w5, w2
<------>bne .L1864
<------>ldrh w2, [x1, 2544]
<------>add x23, x23, :lo12:.LANCHOR4
<------>ldrh w5, [x1, 2550]
<------>add x3, x0, 512
<------>strh wzr, [x0, 802]
<------>str w4, [x23, 1768]
<------>mul w2, w2, w4
<------>strb wzr, [x0, 806]
<------>str w2, [x1, 2616]
<------>strb wzr, [x0, 808]
<------>mul w2, w5, w2
<------>ldrh w5, [x1, 2630]
<------>str w2, [x1, 2584]
<------>ldr w2, [x1, 2484]
<------>ldrh w1, [x1, 2472]
<------>sub w2, w2, w5
<------>sub w2, w2, w4
<------>ldrh w4, [x0, 470]
<------>strh w4, [x0, 560]
<------>udiv w1, w2, w1
<------>ldrh w2, [x0, 472]
<------>lsr w5, w2, 6
<------>and w2, w2, 63
<------>strb w2, [x0, 566]
<------>ldrb w2, [x0, 467]
<------>strb w2, [x0, 568]
<------>mov w2, -1
<------>strh w2, [x0, 800]
<------>ldrh w2, [x0, 474]
<------>strh w2, [x0, 608]
<------>ldrh w2, [x0, 476]
<------>strh w5, [x0, 562]
<------>strh w1, [x0, 780]
<------>lsr w5, w2, 6
<------>and w2, w2, 63
<------>strb w2, [x0, 614]
<------>ldrb w2, [x0, 468]
<------>strb w2, [x0, 616]
<------>ldrh w2, [x0, 478]
<------>strh w2, [x0, 656]
<------>ldrh w2, [x0, 480]
<------>strh w5, [x0, 610]
<------>lsr w5, w2, 6
<------>and w2, w2, 63
<------>strh w5, [x0, 658]
<------>strb w2, [x0, 662]
<------>ldrb w2, [x0, 469]
<------>strb w2, [x0, 664]
<------>str wzr, [x0, 720]
<------>ldr w1, [x0, 488]
<------>ldr w2, [x0, 752]
<------>stp wzr, wzr, [x3, 216]
<------>stp wzr, wzr, [x3, 224]
<------>str w1, [x0, 760]
<------>str wzr, [x0, 764]
<------>ldr w1, [x0, 496]
<------>str wzr, [x0, 772]
<------>cmp w1, w2
<------>bls .L1865
<------>str w1, [x0, 752]
.L1865:
<------>add x0, x21, :lo12:.LANCHOR2
<------>ldr w1, [x0, 492]
<------>ldr w2, [x0, 756]
<------>cmp w1, w2
<------>bls .L1866
<------>str w1, [x0, 756]
.L1866:
<------>mov w0, 65535
<------>cmp w4, w0
<------>beq .L1867
<------>add x0, x21, :lo12:.LANCHOR2
<------>add x0, x0, 560
<------>bl make_superblock
.L1867:
<------>add x1, x21, :lo12:.LANCHOR2
<------>add x0, x1, 608
<------>ldrh w2, [x1, 608]
<------>mov w1, 65535
<------>cmp w2, w1
<------>beq .L1868
<------>bl make_superblock
.L1868:
<------>add x1, x21, :lo12:.LANCHOR2
<------>add x0, x1, 656
<------>ldrh w2, [x1, 656]
<------>mov w1, 65535
<------>cmp w2, w1
<------>beq .L1869
<------>bl make_superblock
.L1869:
<------>add x21, x21, :lo12:.LANCHOR2
<------>mov w1, 65535
<------>add x0, x21, 800
<------>ldrh w2, [x21, 800]
<------>cmp w2, w1
<------>beq .L1870
<------>bl make_superblock
.L1870:
<------>mov w0, 0
<------>b .L1852
<------>.size FtlLoadSysInfo, .-FtlLoadSysInfo
<------>.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, .LANCHOR2
<------>stp x23, x24, [sp, 64]
<------>adrp x23, .LANCHOR0
<------>add x20, x23, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 48]
<------>stp x25, x26, [sp, 80]
<------>and w24, w1, 255
<------>stp x27, x28, [sp, 96]
<------>bl P2V_block_in_plane
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>and w22, w0, 65535
<------>add x1, x1, 152
<------>ldrh w26, [x20, 2544]
<------>adrp x0, .LC109
<------>add x0, x0, :lo12:.LC109
<------>bl printk
<------>add x1, x19, :lo12:.LANCHOR2
<------>ubfiz x0, x22, 1, 16
<------>add x25, x29, 144
<------>ldr x1, [x1, 520]
<------>ldrh w2, [x1, x0]
<------>mov w1, w22
<------>adrp x0, .LC110
<------>add x0, x0, :lo12:.LC110
<------>bl printk
<------>strh w22, [x25, -48]!
<------>mov x0, x25
<------>bl make_superblock
<------>ldrb w0, [x20, 204]
<------>cbz w0, .L1891
<------>cbnz w24, .L1891
<------>mov w0, w22
<------>bl ftl_get_blk_mode
<------>mov w22, w0
<------>cmp w0, 1
<------>bne .L1882
<------>ldrh w26, [x20, 2546]
.L1882:
<------>add x0, x23, :lo12:.LANCHOR0
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w21, 0
<------>mov w27, 56
<------>mov w2, w26
<------>mov w1, w22
<------>ldrh w3, [x0, 2544]
<------>adrp x0, .LC111
<------>add x0, x0, :lo12:.LC111
<------>bl printk
.L1883:
<------>add x0, x23, :lo12:.LANCHOR0
<------>add x5, x25, 16
<------>mov w20, 0
<------>mov w10, 65535
<------>mov w6, 4
<------>ldrh w7, [x0, 2472]
<------>ldrh w8, [x0, 2554]
<------>ldrh w9, [x0, 2556]
<------>mov w0, 0
.L1884:
<------>cmp w0, w7
<------>bne .L1886
<------>ldr x0, [x19, 3584]
<------>mov w1, w20
<------>adrp x28, .LC112
<------>mov w2, w22
<------>umull x20, w20, w27
<------>mov x24, 0
<------>add x28, x28, :lo12:.LC112
<------>bl FlashReadPages
.L1887:
<------>cmp x24, x20
<------>bne .L1888
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>cmp w26, w21
<------>bne .L1883
.L1889:
<------>ldp x19, x20, [sp, 32]
<------>mov w0, 0
<------>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, 160
<------>ret
.L1891:
<------>mov w22, 0
<------>b .L1882
.L1886:
<------>ldrh w1, [x5]
<------>cmp w1, w10
<------>beq .L1885
<------>umull x4, w20, w27
<------>ldr x3, [x19, 3584]
<------>orr w1, w21, w1, lsl 10
<------>add x3, x3, x4
<------>str w1, [x3, 4]
<------>mul w1, w20, w8
<------>ldr x2, [x19, 3584]
<------>ldr x3, [x19, 1392]
<------>sdiv w1, w1, w6
<------>add x2, x2, x4
<------>add x1, x3, w1, sxtw 2
<------>str x1, [x2, 8]
<------>mul w1, w20, w9
<------>ldr x3, [x19, 1400]
<------>add w20, w20, 1
<------>and w20, w20, 65535
<------>sdiv w1, w1, w6
<------>add x1, x3, w1, sxtw 2
<------>str x1, [x2, 16]
.L1885:
<------>add w0, w0, 1
<------>add x5, x5, 2
<------>and w0, w0, 65535
<------>b .L1884
.L1888:
<------>ldr x8, [x19, 3584]
<------>ldrh w1, [x29, 96]
<------>add x2, x8, x24
<------>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, x28
<------>ldr w3, [x2, 4]
<------>ldr w2, [x8, x24]
<------>add x24, x24, 56
<------>bl printk
<------>b .L1887
<------>.size FtlDumpBlockInfo, .-FtlDumpBlockInfo
<------>.align 2
<------>.global FtlScanAllBlock
<------>.type FtlScanAllBlock, %function
FtlScanAllBlock:
<------>sub sp, sp, #144
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>adrp x0, .LC109
<------>add x1, x1, 176
<------>add x0, x0, :lo12:.LC109
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x21, x22, [sp, 48]
<------>adrp x22, .LANCHOR0
<------>stp x23, x24, [sp, 64]
<------>add x22, x22, :lo12:.LANCHOR0
<------>adrp x24, .LANCHOR2
<------>add x21, x24, :lo12:.LANCHOR2
<------>stp x19, x20, [sp, 32]
<------>mov w20, 0
<------>stp x25, x26, [sp, 80]
<------>bl printk
.L1895:
<------>ldrh w0, [x22, 2482]
<------>cmp w0, w20
<------>bhi .L1903
<------>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]
<------>add sp, sp, 144
<------>ret
.L1903:
<------>add x19, x29, 128
<------>mov w0, w20
<------>strh w20, [x19, -48]!
<------>bl ftl_get_blk_mode
<------>add x2, x24, :lo12:.LANCHOR2
<------>ubfiz x1, x20, 1, 16
<------>mov w3, w0
<------>adrp x0, .LC113
<------>add x0, x0, :lo12:.LC113
<------>ldr x2, [x2, 520]
<------>ldrh w2, [x2, x1]
<------>mov w1, w20
<------>bl printk
<------>mov x0, x19
<------>bl make_superblock
<------>ldrh w7, [x22, 2472]
<------>add x0, x19, 16
<------>ldrh w8, [x22, 2554]
<------>mov w19, 0
<------>ldrh w9, [x22, 2556]
<------>mov w1, 0
<------>mov w10, 65535
<------>mov w11, 56
<------>mov w5, 4
.L1896:
<------>cmp w1, w7
<------>bne .L1898
<------>ldr x0, [x21, 3584]
<------>mov w25, 56
<------>adrp x26, .LC114
<------>mov w2, 0
<------>mov w1, w19
<------>umull x25, w19, w25
<------>mov x23, 0
<------>add x26, x26, :lo12:.LC114
<------>bl FlashReadPages
.L1899:
<------>cmp x23, x25
<------>bne .L1900
<------>ldr x0, [x21, 3584]
<------>mov w1, w19
<------>adrp x25, .LC115
<------>mov w2, 1
<------>mov x19, 0
<------>add x25, x25, :lo12:.LC115
<------>bl FlashReadPages
.L1901:
<------>cmp x23, x19
<------>bne .L1902
<------>add w20, w20, 1
<------>and w20, w20, 65535
<------>b .L1895
.L1898:
<------>ldrh w2, [x0]
<------>cmp w2, w10
<------>beq .L1897
<------>umull x6, w19, w11
<------>ldr x4, [x21, 3584]
<------>lsl w2, w2, 10
<------>add x4, x4, x6
<------>str w2, [x4, 4]
<------>mul w2, w19, w8
<------>ldr x3, [x21, 3584]
<------>ldr x4, [x21, 1392]
<------>sdiv w2, w2, w5
<------>add x3, x3, x6
<------>add x2, x4, w2, sxtw 2
<------>str x2, [x3, 8]
<------>mul w2, w19, w9
<------>ldr x4, [x21, 1400]
<------>add w19, w19, 1
<------>and w19, w19, 65535
<------>sdiv w2, w2, w5
<------>add x2, x4, w2, sxtw 2
<------>str x2, [x3, 16]
.L1897:
<------>add w1, w1, 1
<------>add x0, x0, 2
<------>and w1, w1, 65535
<------>b .L1896
.L1900:
<------>ldr x8, [x21, 3584]
<------>ldrh w1, [x29, 80]
<------>add x2, x8, x23
<------>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, x23]
<------>add x23, x23, 56
<------>bl printk
<------>b .L1899
.L1902:
<------>ldr x8, [x21, 3584]
<------>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 printk
<------>b .L1901
<------>.size FtlScanAllBlock, .-FtlScanAllBlock
<------>.align 2
<------>.global ftl_scan_all_ppa
<------>.type ftl_scan_all_ppa, %function
ftl_scan_all_ppa:
<------>sub sp, sp, #96
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x19, x20, [sp, 32]
<------>adrp x20, .LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR0
<------>stp x25, x26, [sp, 80]
<------>adrp x19, .LANCHOR4
<------>add x19, x19, :lo12:.LANCHOR4
<------>add x19, x19, 1712
<------>stp x21, x22, [sp, 48]
<------>ldrh w26, [x20, 2542]
<------>stp x23, x24, [sp, 64]
<------>sub w26, w26, #16
<------>lsl w25, w26, 10
.L1906:
<------>ldrh w0, [x20, 2542]
<------>cmp w26, w0
<------>blt .L1914
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>add x1, x1, 192
<------>adrp x0, .LC119
<------>add x0, x0, :lo12:.LC119
<------>bl printk
<------>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]
<------>add sp, sp, 96
<------>ret
.L1914:
<------>and w21, w26, 65535
<------>mov w0, w21
<------>bl ftl_get_blk_mode
<------>ldrb w1, [x20, 204]
<------>cbz w1, .L1907
<------>ldrh w1, [x20, 2480]
<------>cmp w26, w1
<------>bge .L1908
<------>ldrh w1, [x20, 2558]
<------>cmp w26, w1
<------>blt .L1908
.L1907:
<------>cmp w0, 1
<------>bne .L1909
.L1908:
<------>ldrh w23, [x20, 2546]
<------>mov w24, -2147483648
.L1910:
<------>mov w3, w24
<------>mov w2, w23
<------>mov w1, w26
<------>adrp x0, .LC116
<------>add x0, x0, :lo12:.LC116
<------>bl printk
<------>mov w0, w21
<------>bl FtlBbmIsBadBlock
<------>cbz w0, .L1911
<------>adrp x0, .LC117
<------>mov w3, w24
<------>mov w2, w23
<------>mov w1, w26
<------>add x0, x0, :lo12:.LC117
<------>bl printk
.L1911:
<------>adrp x22, .LANCHOR2
<------>add x22, x22, :lo12:.LANCHOR2
<------>mov w21, 0
.L1912:
<------>cmp w21, w23
<------>bne .L1913
<------>add w26, w26, 1
<------>add w25, w25, 1024
<------>b .L1906
.L1909:
<------>ldrh w23, [x20, 2544]
<------>mov w24, 0
<------>b .L1910
.L1913:
<------>add w0, w24, w25
<------>mov w2, 0
<------>add w0, w0, w21
<------>stp wzr, w0, [x19]
<------>ldr x0, [x22, 3608]
<------>mov w1, 1
<------>str x0, [x19, 8]
<------>add w21, w21, 1
<------>ldr x0, [x22, 3656]
<------>str x0, [x19, 16]
<------>mov x0, x19
<------>bl FlashReadPages
<------>ldp x1, x0, [x19, 8]
<------>ldr w2, [x1, 4]
<------>str w2, [sp]
<------>ldp w3, w4, [x0]
<------>ldp w5, w6, [x0, 8]
<------>adrp x0, .LC118
<------>ldr w7, [x1]
<------>add x0, x0, :lo12:.LC118
<------>ldp w2, w1, [x19]
<------>bl printk
<------>b .L1912
<------>.size ftl_scan_all_ppa, .-ftl_scan_all_ppa
<------>.align 2
<------>.global FlashProgPages
<------>.type FlashProgPages, %function
FlashProgPages:
<------>stp x29, x30, [sp, -176]!
<------>adrp x4, .LANCHOR0
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>add x21, x4, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>str x4, [x29, 96]
<------>ldr x5, [x21, 88]
<------>ldrb w6, [x21, 72]
<------>str w3, [x29, 108]
<------>ldrb w5, [x5, 19]
<------>cbnz w6, .L1923
<------>mov x19, x0
<------>adrp x0, .LANCHOR1+481
<------>mov w25, w1
<------>mov w23, w2
<------>add x27, x21, 2164
<------>ldrb w28, [x0, #:lo12:.LANCHOR1+481]
<------>mov w22, 0
<------>sub w0, w5, #1
<------>str w0, [x29, 104]
.L1924:
<------>cmp w22, w25
<------>bcc .L1937
<------>ldr x0, [x29, 96]
<------>mov x20, 0
<------>mov x24, 24
<------>add x21, x0, :lo12:.LANCHOR0
<------>add x22, x21, 2164
.L1938:
<------>ldrb w0, [x21, 2358]
<------>cmp w0, w20
<------>bhi .L1940
<------>ldr w0, [x29, 108]
<------>cbnz w0, .L1941
.L1949:
<------>mov w0, 0
<------>b .L1922
.L1923:
<------>bl FlashProgSlc2KPages
.L1922:
<------>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
.L1937:
<------>mov w12, 56
<------>mov w1, w23
<------>sub w4, w25, w22
<------>add x3, x29, 116
<------>umull x12, w22, w12
<------>add x2, x29, 112
<------>add x26, x19, x12
<------>mov x0, x26
<------>bl LogAddr2PhyAddr
<------>mov w24, w0
<------>ldrb w1, [x21, 2358]
<------>ldr w0, [x29, 116]
<------>cmp w1, w0
<------>bhi .L1926
<------>mov w0, -1
<------>str w0, [x19, x12]
.L1927:
<------>add w22, w22, 1
<------>b .L1924
.L1926:
<------>ldrb w1, [x21, 2368]
<------>mov x2, 24
<------>cmp w1, 0
<------>uxtw x1, w0
<------>csel w24, w24, wzr, ne
<------>madd x1, x1, x2, x27
<------>ldr x1, [x1, 8]
<------>cbz x1, .L1929
<------>bl FlashWaitCmdDone
.L1929:
<------>ldp w2, w1, [x29, 112]
<------>mov x0, 24
<------>madd x0, x1, x0, x27
<------>str w2, [x0, 4]
<------>stp x26, xzr, [x0, 8]
<------>cbz w24, .L1930
<------>add w2, w22, 1
<------>mov w3, 56
<------>umaddl x2, w2, w3, x19
<------>str x2, [x0, 16]
.L1930:
<------>add x0, x21, x1
<------>ldrb w20, [x0, 2360]
<------>mov x0, 24
<------>mul x1, x1, x0
<------>ldrb w0, [x21, 2358]
<------>cmp w0, 1
<------>mov w0, w20
<------>strb w20, [x27, x1]
<------>bne .L1931
<------>bl NandcWaitFlashReady
.L1932:
<------>ldr w0, [x29, 104]
<------>cmp w0, 7
<------>bhi .L1933
<------>add x0, x21, w20, sxtw
<------>ldrb w0, [x0, 2128]
<------>cbz w0, .L1933
<------>ldrb w1, [x21, 1273]
<------>mov w3, 0
<------>add x2, x21, 1276
<------>mov w0, w20
<------>bl HynixSetRRPara
.L1933:
<------>mov w0, w20
<------>bl NandcFlashCs
<------>cmp w23, 1
<------>bne .L1934
<------>ldrb w0, [x21, 204]
<------>cbz w0, .L1934
<------>mov w0, w20
<------>bl flash_enter_slc_mode
.L1935:
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>bl FlashProgFirstCmd
<------>ldp x3, x4, [x26, 8]
<------>mov w2, w28
<------>mov w1, 1
<------>mov w0, w20
<------>bl NandcXferData
<------>cbz w24, .L1936
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>bl FlashProgDpFirstCmd
<------>ldr w1, [x29, 116]
<------>add x0, x21, 1232
<------>ldr w0, [x0, x1, lsl 2]
<------>ldr w1, [x29, 112]
<------>cmp w0, 0
<------>mov w0, w20
<------>cset w2, ne
<------>bl FlashWaitReadyEN
<------>ldr w0, [x21, 76]
<------>ldr w1, [x29, 112]
<------>add w1, w1, w0
<------>mov w0, w20
<------>bl FlashProgDpSecondCmd
<------>add w0, w22, 1
<------>mov w1, 56
<------>mov w2, w28
<------>umaddl x0, w0, w1, x19
<------>mov w1, 1
<------>ldp x3, x4, [x0, 8]
<------>mov w0, w20
<------>bl NandcXferData
.L1936:
<------>ldr w1, [x29, 112]
<------>mov w0, w20
<------>add w22, w22, w24
<------>bl FlashProgSecondCmd
<------>mov w0, w20
<------>bl NandcFlashDeCs
<------>b .L1927
.L1931:
<------>bl NandcFlashCs
<------>ldr w1, [x29, 116]
<------>add x0, x21, 1232
<------>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 .L1932
.L1934:
<------>mov w0, w20
<------>bl flash_exit_slc_mode
<------>b .L1935
.L1940:
<------>mov w0, w20
<------>bl FlashWaitCmdDone
<------>cmp w23, 1
<------>bne .L1939
<------>ldrb w0, [x21, 204]
<------>cbz w0, .L1939
<------>mul x0, x20, x24
<------>ldrb w0, [x0, x22]
<------>bl flash_exit_slc_mode
.L1939:
<------>add x20, x20, 1
<------>b .L1938
.L1941:
<------>mov w0, 56
<------>and w20, w25, 255
<------>adrp x22, .LANCHOR4
<------>add x24, x22, :lo12:.LANCHOR4
<------>umaddl x25, w25, w0, x19
.L1942:
<------>cmp x25, x19
<------>beq .L1949
<------>ldr w0, [x19]
<------>cmn w0, #1
<------>bne .L1943
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC103
<------>add x0, x0, :lo12:.LC103
<------>bl printk
.L1944:
<------>sub w20, w20, #1
<------>add x19, x19, 56
<------>and w20, w20, 255
<------>b .L1942
.L1943:
<------>add x21, x22, :lo12:.LANCHOR4
<------>mov w4, w20
<------>add x3, x29, 116
<------>add x2, x29, 112
<------>mov w1, w23
<------>mov x0, x19
<------>bl LogAddr2PhyAddr
<------>ldr x0, [x21, 1672]
<------>mov x2, 56
<------>mov x1, x19
<------>str wzr, [x0]
<------>ldr x0, [x21, 1680]
<------>str wzr, [x0]
<------>add x0, x29, 120
<------>bl memcpy
<------>ldr x0, [x21, 1672]
<------>mov w2, w23
<------>str x0, [x29, 128]
<------>mov w1, 1
<------>ldr x0, [x21, 1680]
<------>str x0, [x29, 136]
<------>add x0, x29, 120
<------>bl FlashReadPages
<------>ldr w21, [x29, 120]
<------>cmn w21, #1
<------>bne .L1945
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC104
<------>add x0, x0, :lo12:.LC104
<------>bl printk
<------>str w21, [x19]
.L1945:
<------>ldr x0, [x19, 16]
<------>cbz x0, .L1946
<------>ldr w2, [x0]
<------>ldr x0, [x24, 1680]
<------>ldr w3, [x0]
<------>cmp w2, w3
<------>beq .L1946
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC106
<------>add x0, x0, :lo12:.LC106
<------>bl printk
<------>mov w0, -1
<------>str w0, [x19]
.L1946:
<------>ldr x0, [x19, 8]
<------>cbz x0, .L1944
<------>ldr w2, [x0]
<------>ldr x0, [x24, 1672]
<------>ldr w3, [x0]
<------>cmp w2, w3
<------>beq .L1944
<------>ldr w1, [x19, 4]
<------>adrp x0, .LC107
<------>add x0, x0, :lo12:.LC107
<------>bl printk
<------>mov w0, -1
<------>str w0, [x19]
<------>b .L1944
<------>.size FlashProgPages, .-FlashProgPages
<------>.align 2
<------>.type FlashTestBlk.part.18, %function
FlashTestBlk.part.18:
<------>stp x29, x30, [sp, -160]!
<------>mov w2, 32
<------>mov w1, 165
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR4
<------>add x19, x19, :lo12:.LANCHOR4
<------>and w20, w0, 65535
<------>lsl w20, w20, 10
<------>ldr x0, [x19, 1656]
<------>str x0, [x29, 48]
<------>add x0, x29, 96
<------>str x0, [x29, 56]
<------>bl ftl_memset
<------>ldr x0, [x19, 1656]
<------>mov w2, 8
<------>mov w1, 90
<------>bl ftl_memset
<------>str w20, [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
<------>mov w0, w19
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 160
<------>ret
<------>.size FlashTestBlk.part.18, .-FlashTestBlk.part.18
<------>.align 2
<------>.global FlashTestBlk
<------>.type FlashTestBlk, %function
FlashTestBlk:
<------>adrp x1, .LANCHOR4+1644
<------>and w0, w0, 65535
<------>ldr w1, [x1, #:lo12:.LANCHOR4+1644]
<------>cmp w0, w1
<------>bcc .L1979
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl FlashTestBlk.part.18
<------>ldp x29, x30, [sp], 16
<------>ret
.L1979:
<------>mov w0, 0
<------>ret
<------>.size FlashTestBlk, .-FlashTestBlk
<------>.align 2
<------>.global FlashMakeFactorBbt
<------>.type FlashMakeFactorBbt, %function
FlashMakeFactorBbt:
<------>stp x29, x30, [sp, -240]!
<------>adrp x1, .LANCHOR0
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR4
<------>add x0, x21, :lo12:.LANCHOR4
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>mov w19, 0
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr x0, [x0, 1664]
<------>stp x0, x1, [x29, 152]
<------>add x0, x1, :lo12:.LANCHOR0
<------>ldrh w2, [x0, 188]
<------>ldrh w22, [x0, 190]
<------>mul w22, w22, w2
<------>ldr x2, [x0, 88]
<------>and w22, w22, 65535
<------>ldrb w2, [x2, 24]
<------>str w2, [x29, 128]
<------>ldrh w2, [x0, 76]
<------>ldrb w0, [x0, 72]
<------>uxtw x1, w2
<------>cmp w0, 1
<------>ubfiz w2, w2, 1, 15
<------>csel w0, w2, w1, eq
<------>mov w1, 1
<------>str w0, [x29, 168]
<------>adrp x0, .LC120
<------>add x0, x0, :lo12:.LC120
<------>bl printk
<------>add x0, x21, :lo12:.LANCHOR4
<------>mov w2, 4096
<------>mov w1, 0
<------>ldr x0, [x0, 1664]
<------>bl ftl_memset
<------>lsr w0, w22, 4
<------>str w0, [x29, 148]
<------>sub w0, w22, #1
<------>and w0, w0, 65535
<------>str w0, [x29, 144]
<------>adrp x0, .LC123
<------>add x0, x0, :lo12:.LC123
<------>str x0, [x29, 104]
.L1986:
<------>ldr x0, [x29, 160]
<------>add x20, x0, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 2358]
<------>cmp w0, w19
<------>bhi .L2013
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 240
<------>ret
.L2013:
<------>add x0, x21, :lo12:.LANCHOR4
<------>sxtw x24, w19
<------>add x1, x0, 1696
<------>ldrh w1, [x1, x24, lsl 1]
<------>str w1, [x29, 172]
<------>cbnz w1, .L1987
<------>ldr x0, [x0, 1608]
<------>add x28, x20, 1232
<------>ldrh w2, [x20, 196]
<------>mov w23, 0
<------>mov w25, 0
<------>mov w26, 0
<------>lsl w2, w2, 9
<------>bl ftl_memset
<------>add x0, x20, x24
<------>ldrb w27, [x0, 2360]
<------>ldr w0, [x29, 128]
<------>and w0, w0, 1
<------>str w0, [x29, 100]
.L1988:
<------>and w0, w26, 65535
<------>str w0, [x29, 112]
<------>cmp w0, w22
<------>bcc .L1999
.L1998:
<------>mov w2, w23
<------>mov w1, w19
<------>adrp x0, .LC122
<------>add x0, x0, :lo12:.LC122
<------>bl printk
<------>ldr x0, [x29, 160]
<------>ldr w2, [x29, 148]
<------>add x1, x0, :lo12:.LANCHOR0
<------>ldrb w0, [x1, 2358]
<------>mul w0, w0, w2
<------>cmp w23, w0
<------>blt .L2000
<------>add x0, x21, :lo12:.LANCHOR4
<------>ldrh w2, [x1, 196]
<------>mov w1, 0
<------>ldr x0, [x0, 1608]
<------>lsl w2, w2, 9
<------>bl ftl_memset
.L2000:
<------>cbnz w19, .L2002
<------>add x20, x21, :lo12:.LANCHOR4
<------>ldr x0, [x29, 160]
<------>mov w23, 1
<------>add x25, x0, :lo12:.LANCHOR0
<------>ldrh w26, [x20, 1644]
.L2003:
<------>ldrb w0, [x25, 73]
<------>cmp w0, w26
<------>bhi .L2005
<------>ldr w26, [x29, 144]
<------>sub w25, w22, #50
<------>add x20, x21, :lo12:.LANCHOR4
<------>mov w23, 1
.L2006:
<------>cmp w26, w25
<------>bgt .L2008
<------>ldr x0, [x29, 160]
<------>add x3, x21, :lo12:.LANCHOR4
<------>add x1, x0, :lo12:.LANCHOR0
<------>ldr w2, [x3, 1644]
<------>ldrb w0, [x1, 73]
<------>sub w0, w0, w2
<------>ldr w2, [x29, 172]
<------>cmp w2, w0
<------>bcc .L2002
<------>ldr x0, [x3, 1608]
<------>ldrh w2, [x1, 196]
<------>mov w1, 0
<------>lsl w2, w2, 9
<------>bl ftl_memset
.L2002:
<------>add x27, x21, :lo12:.LANCHOR4
<------>mul w25, w19, w22
<------>ldr w26, [x29, 144]
<------>adrp x23, .LC124
<------>add x20, x27, 1696
<------>add x23, x23, :lo12:.LC124
.L2010:
<------>mov w1, w19
<------>mov w2, w26
<------>mov x0, x23
<------>bl printk
<------>ldr x1, [x27, 1608]
.L2011:
<------>ubfx x0, x26, 5, 11
<------>ldr w0, [x1, x0, lsl 2]
<------>lsr w0, w0, w26
<------>tbnz x0, 0, .L2012
<------>ldr x1, [x29, 152]
<------>mov w0, -3872
<------>strh w26, [x20, x24, lsl 1]
<------>mov w2, 1
<------>strh w0, [x1]
<------>strh w26, [x1, 2]
<------>strh wzr, [x1, 8]
<------>mov w1, w2
<------>ldr x0, [x27, 1608]
<------>str x0, [x29, 192]
<------>ldr x0, [x27, 1664]
<------>str x0, [x29, 200]
<------>add w0, w26, w25
<------>lsl w0, w0, 10
<------>str w0, [x29, 188]
<------>add x0, x29, 184
<------>bl FlashEraseBlocks
<------>mov w3, 1
<------>add x0, x29, 184
<------>mov w2, w3
<------>mov w1, w3
<------>bl FlashProgPages
<------>ldr w0, [x29, 184]
<------>cbz w0, .L1987
<------>sub w26, w26, #1
<------>and w26, w26, 65535
<------>b .L2010
.L1999:
<------>mov w0, -1
<------>strb w0, [x29, 182]
<------>strb w0, [x29, 183]
<------>ldr w0, [x29, 100]
<------>cbz w0, .L1990
<------>ldr w3, [x28, x24, lsl 2]
<------>mov w0, w27
<------>add x2, x29, 182
<------>add w3, w25, w3
<------>str w3, [x29, 96]
<------>mov w1, w3
<------>bl FlashReadSpare
<------>ldrb w0, [x20, 72]
<------>ldr w3, [x29, 96]
<------>cmp w0, 1
<------>bne .L1990
<------>ldr w1, [x20, 76]
<------>mov w0, w27
<------>add x2, x29, 183
<------>add w1, w3, w1
<------>bl FlashReadSpare
<------>ldrb w0, [x29, 182]
<------>ldrb w1, [x29, 183]
<------>and w0, w0, w1
<------>strb w0, [x29, 182]
.L1990:
<------>ldr x0, [x29, 128]
<------>tbz x0, 1, .L1992
<------>ldr x0, [x20, 88]
<------>add x2, x29, 183
<------>ldrh w1, [x0, 10]
<------>ldr w0, [x28, x24, lsl 2]
<------>sub w1, w1, #1
<------>add w0, w25, w0
<------>add w1, w1, w0
<------>mov w0, w27
<------>bl FlashReadSpare
.L1992:
<------>ldr x1, [x20, 88]
<------>ldrb w0, [x1, 7]
<------>cmp w0, 1
<------>ccmp w0, 8, 4, ne
<------>ldrb w0, [x29, 182]
<------>beq .L1993
<------>ldrb w1, [x1, 18]
<------>cmp w1, 12
<------>bne .L1994
.L1993:
<------>cbz w0, .L2015
<------>ldrb w0, [x29, 183]
<------>cmp w0, 0
<------>cset w0, eq
.L1995:
<------>ldr x1, [x29, 128]
<------>tbz x1, 2, .L1996
<------>ldr w1, [x28, x24, lsl 2]
<------>mov w0, w27
<------>add w1, w25, w1
<------>bl SandiskProgTestBadBlock
.L1996:
<------>cbz w0, .L1997
<------>mov w2, w26
<------>mov w1, w19
<------>adrp x0, .LC121
<------>add x0, x0, :lo12:.LC121
<------>bl printk
<------>add w23, w23, 1
<------>add x1, x21, :lo12:.LANCHOR4
<------>ldr x0, [x29, 112]
<------>ldrb w2, [x29, 112]
<------>and w23, w23, 65535
<------>ldr x3, [x1, 1608]
<------>ubfx x0, x0, 5, 11
<------>lsl x0, x0, 2
<------>mov w1, 1
<------>lsl w2, w1, w2
<------>ldr w1, [x3, x0]
<------>orr w1, w1, w2
<------>str w1, [x3, x0]
<------>ldr w1, [x29, 148]
<------>ldrb w0, [x20, 2358]
<------>mul w0, w0, w1
<------>cmp w23, w0
<------>bgt .L1998
.L1997:
<------>ldr w0, [x29, 168]
<------>add w26, w26, 1
<------>add w25, w25, w0
<------>b .L1988
.L1994:
<------>cmp w0, 255
<------>bne .L2015
<------>ldrb w0, [x29, 183]
<------>cmp w0, 255
<------>cset w0, ne
<------>b .L1995
.L2015:
<------>mov w0, 1
<------>b .L1995
.L2005:
<------>mov w0, w26
<------>bl FlashTestBlk
<------>cbz w0, .L2004
<------>ldr x0, [x29, 104]
<------>mov w1, w26
<------>bl printk
<------>ldr x3, [x20, 1608]
<------>ubfx x0, x26, 5, 11
<------>lsl x0, x0, 2
<------>lsl w1, w23, w26
<------>ldr w2, [x3, x0]
<------>orr w1, w2, w1
<------>str w1, [x3, x0]
<------>ldr w0, [x29, 172]
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>str w0, [x29, 172]
.L2004:
<------>add w26, w26, 1
<------>and w26, w26, 65535
<------>b .L2003
.L2008:
<------>mov w0, w26
<------>bl FlashTestBlk
<------>cbz w0, .L2007
<------>ldr x0, [x29, 104]
<------>mov w1, w26
<------>bl printk
<------>ldr x3, [x20, 1608]
<------>ubfx x0, x26, 5, 11
<------>lsl x0, x0, 2
<------>lsl w1, w23, w26
<------>ldr w2, [x3, x0]
<------>orr w1, w2, w1
<------>str w1, [x3, x0]
.L2007:
<------>sub w26, w26, #1
<------>and w26, w26, 65535
<------>b .L2006
.L2012:
<------>sub w26, w26, #1
<------>and w26, w26, 65535
<------>b .L2011
.L1987:
<------>add w19, w19, 1
<------>and w19, w19, 255
<------>b .L1986
<------>.size FlashMakeFactorBbt, .-FlashMakeFactorBbt
<------>.align 2
<------>.global FtlLowFormatEraseBlock
<------>.type FtlLowFormatEraseBlock, %function
FtlLowFormatEraseBlock:
<------>stp x29, x30, [sp, -144]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR2
<------>add x5, x22, :lo12:.LANCHOR2
<------>stp x25, x26, [sp, 64]
<------>stp x19, x20, [sp, 16]
<------>and w26, w0, 65535
<------>stp x23, x24, [sp, 48]
<------>stp x27, x28, [sp, 80]
<------>ldr w0, [x5, 424]
<------>cbnz w0, .L2058
<------>adrp x20, .LANCHOR0
<------>add x24, x20, :lo12:.LANCHOR0
<------>and w25, w1, 255
<------>add x9, x24, 2504
<------>mov w6, 0
<------>mov w21, 0
<------>ldrb w8, [x24, 204]
<------>mov w19, 0
<------>ldrb w0, [x24, 2368]
<------>mov w7, 56
<------>mov w10, 4
<------>str w26, [x5, 3572]
<------>str w0, [x29, 132]
.L2037:
<------>ldrh w0, [x24, 2472]
<------>cmp w0, w6
<------>bhi .L2041
<------>cbz w21, .L2035
<------>add x27, x22, :lo12:.LANCHOR2
<------>cmp w8, 0
<------>cset w23, ne
<------>strb wzr, [x24, 2368]
<------>mov w2, w21
<------>mov w1, w23
<------>ldr x0, [x27, 432]
<------>bl FlashEraseBlocks
<------>ldrb w0, [x29, 132]
<------>strb w0, [x24, 2368]
<------>mov x24, 0
<------>mov w0, 56
<------>umull x21, w21, w0
.L2044:
<------>ldr x0, [x27, 432]
<------>add x1, x0, x24
<------>ldr w0, [x0, x24]
<------>cmn w0, #1
<------>bne .L2043
<------>ldr w0, [x1, 4]
<------>add w19, w19, 1
<------>and w19, w19, 65535
<------>lsr w0, w0, 10
<------>bl FtlBbmMapBadBlock
.L2043:
<------>add x24, x24, 56
<------>cmp x21, x24
<------>bne .L2044
<------>cbnz w25, .L2045
<------>and w23, w23, 65535
<------>mov w0, 1
<------>mov w28, 6
<------>str w0, [x29, 136]
.L2046:
<------>add x20, x20, :lo12:.LANCHOR0
<------>add x27, x22, :lo12:.LANCHOR2
<------>add x0, x20, 2504
<------>mov w24, 0
<------>str x0, [x29, 120]
.L2054:
<------>mov w5, 0
<------>mov w21, 0
<------>mov w6, 56
<------>mov w7, 4
.L2047:
<------>ldrh w0, [x20, 2472]
<------>cmp w0, w5
<------>bhi .L2050
<------>cbz w21, .L2035
<------>ldr x0, [x27, 432]
<------>mov w2, w23
<------>mov w1, w21
<------>strb wzr, [x20, 2368]
<------>mov w3, 1
<------>bl FlashProgPages
<------>mov w1, 56
<------>ldrb w0, [x29, 132]
<------>strb w0, [x20, 2368]
<------>mov x2, 0
<------>umull x1, w21, w1
.L2053:
<------>ldr x0, [x27, 432]
<------>add x3, x0, x2
<------>ldr w0, [x0, x2]
<------>cbz w0, .L2052
<------>ldr w0, [x3, 4]
<------>add w19, w19, 1
<------>stp x2, x1, [x29, 104]
<------>and w19, w19, 65535
<------>lsr w0, w0, 10
<------>bl FtlBbmMapBadBlock
<------>ldp x2, x1, [x29, 104]
.L2052:
<------>add x2, x2, 56
<------>cmp x1, x2
<------>bne .L2053
<------>add w24, w24, w28
<------>ldr w0, [x29, 136]
<------>and w24, w24, 65535
<------>cmp w0, w24
<------>bhi .L2054
<------>add x24, x22, :lo12:.LANCHOR2
<------>mov x20, 0
.L2056:
<------>cbz w25, .L2055
<------>ldr x0, [x24, 432]
<------>add x1, x0, x20
<------>ldr w0, [x0, x20]
<------>cbnz w0, .L2055
<------>ldr w0, [x1, 4]
<------>mov w1, 1
<------>str x2, [x29, 136]
<------>lsr w0, w0, 10
<------>bl FtlFreeSysBlkQueueIn
<------>ldr x2, [x29, 136]
.L2055:
<------>add x20, x20, 56
<------>cmp x20, x2
<------>bne .L2056
<------>cmp w26, 63
<------>ccmp w25, 0, 0, hi
<------>beq .L2035
<------>add x22, x22, :lo12:.LANCHOR2
<------>mov w2, w21
<------>mov w1, w23
<------>ldr x0, [x22, 432]
<------>bl FlashEraseBlocks
.L2035:
<------>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
.L2041:
<------>umull x0, w6, w7
<------>ldr x1, [x5, 432]
<------>str wzr, [x1, x0]
<------>mov w1, w26
<------>ldrb w0, [x9, w6, sxtw]
<------>bl V2P_block
<------>and w11, w0, 65535
<------>mov w12, w11
<------>cbz w25, .L2038
<------>bl IsBlkInVendorPart
<------>cbnz w0, .L2039
.L2038:
<------>mov w0, w12
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L2040
<------>umull x2, w21, w7
<------>ldr x0, [x5, 432]
<------>lsl w11, w11, 10
<------>add x0, x0, x2
<------>str w11, [x0, 4]
<------>ldrh w0, [x24, 2556]
<------>ldr x1, [x5, 432]
<------>add x1, x1, x2
<------>ldr x2, [x5, 3664]
<------>mul w0, w0, w21
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>sdiv w0, w0, w10
<------>add x0, x2, w0, sxtw 2
<------>stp xzr, x0, [x1, 8]
.L2039:
<------>add w6, w6, 1
<------>and w6, w6, 65535
<------>b .L2037
.L2040:
<------>add w19, w19, 1
<------>and w19, w19, 65535
<------>b .L2039
.L2045:
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldrh w1, [x0, 2546]
<------>ldrb w0, [x0, 204]
<------>str w1, [x29, 136]
<------>cbnz w0, .L2059
<------>uxtw x0, w1
<------>mov w23, 1
<------>lsr w28, w0, 2
<------>b .L2046
.L2059:
<------>mov w23, 1
<------>mov w28, w23
<------>b .L2046
.L2050:
<------>umull x0, w5, w6
<------>ldr x1, [x27, 432]
<------>str wzr, [x1, x0]
<------>mov w1, w26
<------>ldr x0, [x29, 120]
<------>ldrb w0, [x0, w5, sxtw]
<------>bl V2P_block
<------>and w8, w0, 65535
<------>mov w9, w8
<------>cbz w25, .L2048
<------>bl IsBlkInVendorPart
<------>cbnz w0, .L2049
.L2048:
<------>mov w0, w9
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L2049
<------>umull x2, w21, w6
<------>ldr x0, [x27, 432]
<------>add w8, w24, w8, lsl 10
<------>add x0, x0, x2
<------>str w8, [x0, 4]
<------>ldr x1, [x27, 432]
<------>ldr x0, [x27, 3640]
<------>add x1, x1, x2
<------>ldr x2, [x27, 3648]
<------>str x0, [x1, 8]
<------>ldrh w0, [x20, 2556]
<------>mul w0, w0, w21
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>sdiv w0, w0, w7
<------>add x0, x2, w0, sxtw 2
<------>str x0, [x1, 16]
.L2049:
<------>add w5, w5, 1
<------>and w5, w5, 65535
<------>b .L2047
.L2058:
<------>mov w19, 0
<------>b .L2035
<------>.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
<------>.align 2
<------>.global FtlBbmTblFlush
<------>.type FtlBbmTblFlush, %function
FtlBbmTblFlush:
<------>stp x29, x30, [sp, -96]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR2
<------>add x19, x22, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr w0, [x19, 424]
<------>cbnz w0, .L2082
<------>adrp x20, .LANCHOR4
<------>adrp x23, .LANCHOR0
<------>add x25, x20, :lo12:.LANCHOR4
<------>add x21, x23, :lo12:.LANCHOR0
<------>ldr x2, [x19, 3656]
<------>mov w1, 0
<------>ldr x0, [x19, 3608]
<------>add x26, x21, 2656
<------>str x2, [x25, 1728]
<------>mov w24, 0
<------>ldrh w2, [x21, 2554]
<------>str x0, [x25, 1720]
<------>bl ftl_memset
.L2083:
<------>ldrh w0, [x21, 2494]
<------>cmp w24, w0
<------>blt .L2084
<------>add x20, x20, :lo12:.LANCHOR4
<------>add x19, x21, 2624
<------>mov w2, 16
<------>mov w1, 255
<------>adrp x26, .LC125
<------>add x23, x23, :lo12:.LANCHOR0
<------>ldr x28, [x20, 1728]
<------>add x26, x26, :lo12:.LC125
<------>mov w24, 0
<------>mov x0, x28
<------>bl ftl_memset
<------>mov w0, -3887
<------>strh w0, [x28]
<------>ldr w0, [x19, 8]
<------>str w0, [x28, 4]
<------>ldrh w0, [x21, 2624]
<------>strh w0, [x28, 2]
<------>ldrh w0, [x19, 4]
<------>strh w0, [x28, 8]
<------>ldrh w0, [x19, 6]
<------>strh w0, [x28, 10]
<------>ldr w0, [x21, 2468]
<------>mov w21, 0
<------>strh w0, [x28, 12]
.L2085:
<------>add x25, x22, :lo12:.LANCHOR2
<------>ldrh w1, [x19]
<------>ldrh w2, [x19, 2]
<------>ldrh w3, [x19, 4]
<------>ldr x0, [x25, 3608]
<------>str x0, [x20, 1720]
<------>ldr x0, [x25, 3656]
<------>str x0, [x20, 1728]
<------>orr w0, w2, w1, lsl 10
<------>str wzr, [x20, 1712]
<------>ldrh w4, [x28, 10]
<------>str w0, [x20, 1716]
<------>mov x0, x26
<------>bl printk
<------>ldrh w0, [x23, 2546]
<------>ldrh w1, [x19, 2]
<------>sub w0, w0, #1
<------>cmp w1, w0
<------>blt .L2086
<------>ldr w0, [x19, 8]
<------>mov w2, 1
<------>ldrh w1, [x19]
<------>add w0, w0, 1
<------>str w0, [x19, 8]
<------>str w0, [x28, 4]
<------>strh w1, [x28, 8]
<------>ldrh w0, [x19, 4]
<------>strh w1, [x19, 4]
<------>ldr x1, [x25, 432]
<------>strh w0, [x19]
<------>lsl w0, w0, 10
<------>str w0, [x20, 1716]
<------>strh wzr, [x19, 2]
<------>str w0, [x1, 4]
<------>mov w1, w2
<------>ldr x0, [x25, 432]
<------>bl FlashEraseBlocks
.L2086:
<------>add x25, x20, 1712
<------>mov w3, 1
<------>mov x0, x25
<------>mov w2, w3
<------>mov w1, w3
<------>bl FlashProgPages
<------>ldrh w0, [x19, 2]
<------>add w0, w0, 1
<------>strh w0, [x19, 2]
<------>ldr w0, [x20, 1712]
<------>cmn w0, #1
<------>bne .L2087
<------>ldr w1, [x20, 1716]
<------>add w21, w21, 1
<------>adrp x0, .LC126
<------>and w21, w21, 65535
<------>add x0, x0, :lo12:.LC126
<------>bl printk
<------>cmp w21, 3
<------>bls .L2085
<------>ldr w1, [x20, 1716]
<------>add x22, x22, :lo12:.LANCHOR2
<------>mov w2, w21
<------>adrp x0, .LC127
<------>add x0, x0, :lo12:.LC127
<------>bl printk
<------>mov w0, 1
<------>str w0, [x22, 424]
.L2082:
<------>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
.L2084:
<------>ldrh w2, [x19, 3784]
<------>ldr x1, [x26], 8
<------>ldr x0, [x25, 1720]
<------>mul w3, w2, w24
<------>lsl w2, w2, 2
<------>add w24, w24, 1
<------>add x0, x0, w3, sxtw 2
<------>bl ftl_memcpy
<------>b .L2083
.L2090:
<------>mov w24, 1
<------>b .L2085
.L2087:
<------>add w24, w24, 1
<------>cmp w24, 1
<------>ble .L2090
<------>cmp w0, 256
<------>bne .L2082
<------>b .L2085
<------>.size FtlBbmTblFlush, .-FtlBbmTblFlush
<------>.align 2
<------>.global allocate_data_superblock
<------>.type allocate_data_superblock, %function
allocate_data_superblock:
<------>stp x29, x30, [sp, -128]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR2
<------>add x19, x22, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr w1, [x19, 424]
<------>cbnz w1, .L2096
<------>adrp x23, .LANCHOR0
<------>mov x20, x0
<------>add x24, x19, 656
<------>add x21, x23, :lo12:.LANCHOR0
.L2097:
<------>cmp x20, x24
<------>bne .L2098
<------>ldrh w2, [x19, 552]
<------>ldr w3, [x19, 1376]
<------>lsr w0, w2, 1
<------>add w4, w0, 1
<------>mul w1, w2, w3
<------>add w1, w4, w1, lsr 2
<------>ldr w4, [x21, 2372]
<------>and w1, w1, 65535
<------>cbz w4, .L2099
<------>ldr w4, [x19, 776]
<------>cmp w4, 39
<------>bhi .L2099
<------>cmp w4, 2
<------>bls .L2126
<------>tbz x2, 0, .L2122
<------>cbz w3, .L2126
.L2122:
<------>mov w1, w0
<------>b .L2099
.L2098:
<------>ldrb w0, [x20, 8]
<------>cmp w0, 1
<------>bne .L2126
<------>ldrh w0, [x21, 2492]
<------>cmp w0, 1
<------>beq .L2126
<------>ldrb w0, [x21, 204]
<------>cbnz w0, .L2126
<------>ldr w2, [x21, 2372]
<------>ldrh w0, [x19, 552]
<------>lsr w1, w0, 3
<------>cbz w2, .L2099
<------>ldr w2, [x19, 776]
<------>cmp w2, 1
<------>bhi .L2099
<------>mov w1, 7
<------>mul w1, w0, w1
<------>lsr w1, w1, 3
.L2099:
<------>cbz w1, .L2100
<------>sub w1, w1, #1
<------>and w1, w1, 65535
.L2100:
<------>ldrb w2, [x20, 8]
<------>add x0, x19, 544
<------>bl List_pop_index_node
<------>and w27, w0, 65535
<------>ldrh w0, [x19, 552]
<------>sub w0, w0, #1
<------>strh w0, [x19, 552]
<------>ldrh w0, [x21, 2480]
<------>cmp w0, w27
<------>bls .L2097
<------>ldr x0, [x19, 520]
<------>ubfiz x26, x27, 1, 16
<------>ldrh w25, [x0, x26]
<------>cbnz w25, .L2097
<------>strh w27, [x20]
<------>mov x0, x20
<------>bl make_superblock
<------>ldrb w0, [x20, 7]
<------>cbz w0, .L2143
<------>add x28, x20, 16
<------>ldrh w5, [x21, 2472]
<------>mov x3, x28
<------>mov x0, 0
<------>mov x4, 56
<------>mov w6, 65535
.L2103:
<------>cmp w5, w0, uxth
<------>bhi .L2105
<------>ldr w0, [x21, 2372]
<------>cbz w0, .L2106
<------>add x0, x19, 560
<------>cmp x20, x0
<------>bne .L2106
<------>ldr x0, [x19, 440]
<------>ldrh w0, [x0, x26]
<------>cmp w0, 40
<------>bls .L2106
<------>strb wzr, [x20, 8]
.L2106:
<------>ldrb w0, [x20, 8]
<------>ldr x1, [x19, 440]
<------>cbnz w0, .L2107
<------>ldrh w0, [x1, x26]
<------>cbz w0, .L2108
<------>ldrh w2, [x21, 2536]
<------>add w0, w0, w2
.L2144:
<------>strh w0, [x1, x26]
<------>mov w1, 0
<------>ldr w0, [x19, 760]
<------>add w0, w0, 1
<------>str w0, [x19, 760]
<------>mov w0, w27
<------>bl ftl_set_blk_mode
.L2110:
<------>ldr x0, [x19, 440]
<------>ldr w1, [x19, 772]
<------>ldrh w0, [x0, x26]
<------>cmp w0, w1
<------>bls .L2111
<------>str w0, [x19, 772]
.L2111:
<------>ldr w2, [x19, 760]
<------>ldr w1, [x19, 764]
<------>ldrh w0, [x21, 2536]
<------>madd w0, w0, w2, w1
<------>ldrh w1, [x21, 2480]
<------>mov w2, 56
<------>umull x2, w25, w2
<------>udiv w0, w0, w1
<------>ldr x1, [x19, 3696]
<------>str w0, [x19, 768]
<------>ldr w0, [x1, 16]
<------>add w0, w0, 1
<------>str w0, [x1, 16]
<------>mov x0, 0
.L2112:
<------>cmp x2, x0
<------>bne .L2113
<------>ldrb w0, [x21, 204]
<------>cbz w0, .L2114
<------>ldrb w0, [x20, 8]
<------>mov w2, w25
<------>cmp w0, 1
<------>bne .L2115
<------>mov w1, 0
.L2145:
<------>ldr x0, [x19, 432]
<------>bl FlashEraseBlocks
.L2114:
<------>ldrb w1, [x20, 8]
<------>mov w2, w25
<------>ldr x0, [x19, 432]
<------>bl FlashEraseBlocks
<------>mov x1, 0
<------>mov w2, 0
<------>mov x4, 56
.L2116:
<------>cmp w25, w1, uxth
<------>bhi .L2118
<------>cmp w2, 0
<------>ble .L2119
<------>mov w0, w27
<------>bl update_multiplier_value
<------>bl FtlBbmTblFlush
.L2119:
<------>ldrb w0, [x20, 7]
<------>cbnz w0, .L2120
.L2143:
<------>ldr x0, [x19, 520]
<------>mov w1, -1
<------>strh w1, [x0, x26]
<------>b .L2097
.L2126:
<------>mov w1, 0
<------>b .L2100
.L2105:
<------>ldr x1, [x19, 432]
<------>madd x2, x0, x4, x1
<------>stp xzr, xzr, [x2, 8]
<------>ldrh w2, [x3]
<------>cmp w2, w6
<------>beq .L2104
<------>umull x7, w25, w4
<------>add w25, w25, 1
<------>and w25, w25, 65535
<------>lsl w2, w2, 10
<------>add x1, x1, x7
<------>str w2, [x1, 4]
.L2104:
<------>add x0, x0, 1
<------>add x3, x3, 2
<------>b .L2103
.L2108:
<------>mov w0, 2
<------>b .L2144
.L2107:
<------>ldrh w0, [x1, x26]
<------>add w0, w0, 1
<------>strh w0, [x1, x26]
<------>ldr w0, [x19, 764]
<------>add w0, w0, 1
<------>str w0, [x19, 764]
<------>mov w0, w27
<------>bl ftl_set_blk_mode.part.9
<------>b .L2110
.L2113:
<------>ldr x1, [x19, 432]
<------>add x1, x1, x0
<------>add x0, x0, 56
<------>ldr w3, [x1, 4]
<------>and w3, w3, -1024
<------>str w3, [x1, 4]
<------>b .L2112
.L2115:
<------>mov w1, 1
<------>b .L2145
.L2118:
<------>mul x0, x1, x4
<------>ldr x3, [x19, 432]
<------>add x5, x3, x0
<------>ldr w3, [x3, x0]
<------>cmn w3, #1
<------>bne .L2117
<------>add w2, w2, 1
<------>ldr w0, [x5, 4]
<------>stp x4, x1, [x29, 104]
<------>stp w3, w2, [x29, 120]
<------>lsr w0, w0, 10
<------>bl FtlBbmMapBadBlock
<------>ldp w3, w2, [x29, 120]
<------>strh w3, [x28]
<------>ldp x4, x1, [x29, 104]
<------>ldrb w0, [x20, 7]
<------>sub w0, w0, #1
<------>strb w0, [x20, 7]
.L2117:
<------>add x1, x1, 1
<------>add x28, x28, 2
<------>b .L2116
.L2120:
<------>add x23, x23, :lo12:.LANCHOR0
<------>add x22, x22, :lo12:.LANCHOR2
<------>strh wzr, [x20, 2]
<------>strb wzr, [x20, 6]
<------>ldrh w1, [x23, 2544]
<------>strh w27, [x20]
<------>mul w0, w0, w1
<------>ldr w1, [x22, 752]
<------>str w1, [x20, 12]
<------>and w0, w0, 65535
<------>add w1, w1, 1
<------>strh w0, [x20, 4]
<------>str w1, [x22, 752]
<------>ldr x1, [x22, 520]
<------>ldrh w2, [x20]
<------>strh w0, [x1, x2, lsl 1]
.L2096:
<------>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 allocate_data_superblock, .-allocate_data_superblock
<------>.align 2
<------>.global FtlGcFreeBadSuperBlk
<------>.type FtlGcFreeBadSuperBlk, %function
FtlGcFreeBadSuperBlk:
<------>stp x29, x30, [sp, -96]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR2
<------>add x20, x20, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>and w23, w0, 65535
<------>stp x21, x22, [sp, 32]
<------>stp x25, x26, [sp, 64]
<------>ldrh w0, [x20, 1456]
<------>str x27, [sp, 80]
<------>cbz w0, .L2147
<------>adrp x22, .LANCHOR0
<------>add x24, x20, 1464
<------>add x22, x22, :lo12:.LANCHOR0
<------>mov w21, 0
.L2148:
<------>ldrh w0, [x22, 2472]
<------>cmp w0, w21
<------>bhi .L2154
<------>bl FtlGcReFreshBadBlk
.L2147:
<------>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
.L2154:
<------>add x0, x22, 2504
<------>mov w1, w23
<------>adrp x26, .LC128
<------>add x26, x26, :lo12:.LC128
<------>mov w19, 0
<------>ldrb w0, [x0, w21, sxtw]
<------>bl V2P_block
<------>and w25, w0, 65535
.L2149:
<------>ldrh w0, [x20, 1456]
<------>cmp w0, w19
<------>bhi .L2153
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>b .L2148
.L2153:
<------>ldrh w0, [x24, w19, sxtw 1]
<------>add w27, w19, 1
<------>cmp w0, w25
<------>bne .L2150
<------>mov w1, w25
<------>mov x0, x26
<------>bl printk
<------>mov w0, w25
<------>bl FtlBbmMapBadBlock
<------>bl FtlBbmTblFlush
<------>ldrh w0, [x20, 1456]
<------>mov w1, w27
.L2151:
<------>cmp w19, w0
<------>bcc .L2152
<------>sub w0, w0, #1
<------>strh w0, [x20, 1456]
.L2150:
<------>and w19, w27, 65535
<------>b .L2149
.L2152:
<------>sub w2, w1, #1
<------>ldrh w3, [x24, w1, sxtw 1]
<------>add w19, w19, 1
<------>add w1, w1, 1
<------>and w19, w19, 65535
<------>strh w3, [x24, w2, sxtw 1]
<------>b .L2151
<------>.size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
<------>.align 2
<------>.global update_vpc_list
<------>.type update_vpc_list, %function
update_vpc_list:
<------>and w13, w0, 65535
<------>adrp x8, .LANCHOR2
<------>add x0, x8, :lo12:.LANCHOR2
<------>stp x29, x30, [sp, -16]!
<------>ubfiz x1, x13, 1, 16
<------>add x29, sp, 0
<------>ldr x2, [x0, 520]
<------>ldrh w1, [x2, x1]
<------>cbnz w1, .L2160
<------>ldrh w1, [x0, 800]
<------>cmp w1, w13
<------>bne .L2161
<------>mov w1, -1
<------>strh w1, [x0, 800]
.L2162:
<------>add x8, x8, :lo12:.LANCHOR2
<------>mov w1, w13
<------>add x0, x8, 512
<------>bl List_remove_node
<------>ldrh w0, [x8, 536]
<------>sub w0, w0, #1
<------>strh w0, [x8, 536]
<------>mov w0, w13
<------>bl free_data_superblock
<------>mov w0, w13
<------>bl FtlGcFreeBadSuperBlk
<------>mov w0, 1
.L2159:
<------>ldp x29, x30, [sp], 16
<------>ret
.L2161:
<------>ldrh w1, [x0, 560]
<------>cmp w1, w13
<------>beq .L2166
<------>ldrh w1, [x0, 608]
<------>cmp w1, w13
<------>beq .L2166
<------>ldrh w0, [x0, 656]
<------>cmp w0, w13
<------>bne .L2162
.L2166:
<------>mov w0, 0
<------>b .L2159
.L2160:
<------>mov w0, w13
<------>bl List_update_data_list
<------>b .L2166
<------>.size update_vpc_list, .-update_vpc_list
<------>.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
<------>adrp x20, .LANCHOR2
<------>cmp w19, w0
<------>beq .L2169
<------>add x21, x20, :lo12:.LANCHOR2
<------>ubfiz x22, x19, 1, 16
<------>ldr x1, [x21, 520]
<------>ldrh w0, [x1, x22]
<------>cbnz w0, .L2170
<------>mov w1, w19
<------>mov w2, 0
<------>adrp x0, .LC129
<------>add x0, x0, :lo12:.LC129
<------>bl printk
<------>ldr x0, [x21, 520]
<------>add x6, x21, 544
<------>mov w1, 32
<------>strh w1, [x0, x22]
<------>mov w1, w19
<------>mov x0, x6
<------>bl test_node_in_list
<------>cbz w0, .L2171
<------>mov w1, w19
<------>mov x0, x6
<------>bl List_remove_node
<------>ldrh w0, [x21, 552]
<------>sub w0, w0, #1
<------>strh w0, [x21, 552]
<------>mov w0, w19
<------>bl INSERT_DATA_LIST
<------>ldr x0, [x21, 520]
<------>mov w1, w19
<------>ldrh w2, [x0, x22]
<------>adrp x0, .LC130
<------>add x0, x0, :lo12:.LC130
<------>bl printk
.L2171:
<------>mov w0, w19
<------>bl FtlGcRefreshBlock
.L2174:
<------>mov w0, 0
<------>b .L2168
.L2170:
<------>sub w0, w0, #1
<------>strh w0, [x1, x22]
.L2169:
<------>add x20, x20, :lo12:.LANCHOR2
<------>mov w1, 65535
<------>ldrh w0, [x20, 3872]
<------>cmp w0, w1
<------>bne .L2173
<------>strh w19, [x20, 3872]
<------>b .L2174
.L2173:
<------>cmp w19, w0
<------>beq .L2174
<------>bl update_vpc_list
<------>cmp w0, 0
<------>cset w0, ne
<------>strh w19, [x20, 3872]
.L2168:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size decrement_vpc_count, .-decrement_vpc_count
<------>.align 2
<------>.global FtlSlcSuperblockCheck
<------>.type FtlSlcSuperblockCheck, %function
FtlSlcSuperblockCheck:
<------>ldrh w1, [x0, 4]
<------>cbz w1, .L2191
<------>ldrh w2, [x0]
<------>mov w1, 65535
<------>cmp w2, w1
<------>beq .L2191
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR2
<------>add x21, x21, :lo12:.LANCHOR2
<------>adrp x20, .LANCHOR0
<------>ldrb w0, [x0, 6]
<------>add x22, x20, :lo12:.LANCHOR0
<------>add x21, x21, 1500
<------>add x0, x0, 8
<------>ldrh w1, [x19, x0, lsl 1]
.L2183:
<------>mov w0, 65535
<------>cmp w1, w0
<------>beq .L2185
<------>ldrb w1, [x19, 8]
<------>cmp w1, 1
<------>bne .L2186
<------>ldrb w2, [x22, 204]
<------>cbnz w2, .L2186
<------>ldrh w2, [x19, 2]
<------>ldrh w2, [x21, x2, lsl 1]
<------>cmp w2, w0
<------>bne .L2186
<------>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, .L2185
<------>ldrh w0, [x19, 2]
<------>add w0, w0, 1
.L2194:
<------>strh w0, [x19, 2]
<------>strb wzr, [x19, 6]
.L2179:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L2185:
<------>ldrb w0, [x19, 6]
<------>ldrh w1, [x22, 2472]
<------>add w0, w0, 1
<------>and w0, w0, 255
<------>strb w0, [x19, 6]
<------>cmp w1, w0
<------>bne .L2184
<------>ldrh w0, [x19, 2]
<------>strb wzr, [x19, 6]
<------>add w0, w0, 1
<------>strh w0, [x19, 2]
.L2184:
<------>ldrb w0, [x19, 6]
<------>add x0, x0, 8
<------>ldrh w1, [x19, x0, lsl 1]
<------>b .L2183
.L2186:
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldrb w2, [x0, 204]
<------>cbz w2, .L2179
<------>cmp w1, 1
<------>bne .L2179
<------>ldrh w2, [x19, 2]
<------>ldrh w1, [x0, 2546]
<------>cmp w2, w1
<------>bcc .L2179
<------>ldrh w1, [x19]
<------>adrp x2, .LANCHOR2+520
<------>ldrh w4, [x19, 4]
<------>ldr x3, [x2, #:lo12:.LANCHOR2+520]
<------>lsl x1, x1, 1
<------>ldrh w2, [x3, x1]
<------>sub w2, w2, w4
<------>strh w2, [x3, x1]
<------>strh wzr, [x19, 4]
<------>ldrh w0, [x0, 2544]
<------>b .L2194
.L2191:
<------>ret
<------>.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
<------>.align 2
<------>.global get_new_active_ppa
<------>.type get_new_active_ppa, %function
get_new_active_ppa:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR2
<------>str x23, [sp, 48]
<------>add x21, x21, :lo12:.LANCHOR2
<------>strb wzr, [x0, 10]
<------>adrp x20, .LANCHOR0
<------>ldrb w0, [x0, 6]
<------>add x21, x21, 1500
<------>add x23, x20, :lo12:.LANCHOR0
<------>add x0, x0, 8
<------>ldrh w0, [x19, x0, lsl 1]
.L2196:
<------>mov w2, 65535
<------>cmp w0, w2
<------>beq .L2197
<------>ldrb w1, [x19, 8]
<------>ldrh w22, [x19, 2]
<------>cmp w1, 1
<------>ldrh w1, [x19, 4]
<------>bne .L2199
<------>ldrb w3, [x23, 204]
<------>cbnz w3, .L2199
<------>ldrh w3, [x21, w22, sxtw 1]
<------>cmp w3, w2
<------>bne .L2199
<------>ldrh w0, [x19]
<------>sub w1, w1, #1
<------>strh w1, [x19, 4]
<------>bl decrement_vpc_count
.L2197:
<------>ldrb w0, [x19, 6]
<------>ldrh w1, [x23, 2472]
<------>add w0, w0, 1
<------>and w0, w0, 255
<------>strb w0, [x19, 6]
<------>cmp w1, w0
<------>bne .L2198
<------>ldrh w0, [x19, 2]
<------>strb wzr, [x19, 6]
<------>add w0, w0, 1
<------>strh w0, [x19, 2]
.L2198:
<------>ldrb w0, [x19, 6]
<------>add x0, x0, 8
<------>ldrh w0, [x19, x0, lsl 1]
<------>b .L2196
.L2199:
<------>adrp x21, .LANCHOR2
<------>add x21, x21, :lo12:.LANCHOR2
<------>orr w22, w22, w0, lsl 10
<------>add x20, x20, :lo12:.LANCHOR0
<------>add x21, x21, 1500
<------>sub w1, w1, #1
<------>strh w1, [x19, 4]
.L2200:
<------>ldrb w0, [x19, 6]
<------>mov w1, 65535
<------>ldrh w3, [x20, 2472]
.L2202:
<------>add w0, w0, 1
<------>and w0, w0, 255
<------>cmp w0, w3
<------>bne .L2201
<------>ldrh w0, [x19, 2]
<------>add w0, w0, 1
<------>strh w0, [x19, 2]
<------>mov w0, 0
.L2201:
<------>add x2, x19, w0, sxtw 1
<------>ldrh w2, [x2, 16]
<------>cmp w2, w1
<------>beq .L2202
<------>strb w0, [x19, 6]
<------>ldrb w0, [x19, 8]
<------>cmp w0, 1
<------>bne .L2195
<------>ldrb w2, [x20, 204]
<------>ldrh w0, [x19, 2]
<------>cbnz w2, .L2204
<------>ldrh w0, [x21, w0, sxtw 1]
<------>cmp w0, w1
<------>bne .L2195
<------>ldrh w0, [x19, 4]
<------>cbz w0, .L2195
<------>sub w0, w0, #1
<------>strh w0, [x19, 4]
<------>ldrh w0, [x19]
<------>bl decrement_vpc_count
<------>b .L2200
.L2204:
<------>ldrh w1, [x20, 2546]
<------>cmp w0, w1
<------>bcc .L2195
<------>ldrh w0, [x19]
<------>adrp x1, .LANCHOR2+520
<------>ldrh w3, [x19, 4]
<------>ldr x2, [x1, #:lo12:.LANCHOR2+520]
<------>lsl x0, x0, 1
<------>ldrh w1, [x2, x0]
<------>sub w1, w1, w3
<------>strh w1, [x2, x0]
<------>strh wzr, [x19, 4]
<------>ldrh w0, [x20, 2544]
<------>strh w0, [x19, 2]
<------>strb wzr, [x19, 6]
.L2195:
<------>mov w0, w22
<------>ldr x23, [sp, 48]
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size get_new_active_ppa, .-get_new_active_ppa
<------>.align 2
<------>.global FtlVpcTblFlush
<------>.type FtlVpcTblFlush, %function
FtlVpcTblFlush:
<------>stp x29, x30, [sp, -96]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>adrp x23, .LANCHOR2
<------>add x19, x23, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr w0, [x19, 424]
<------>cbnz w0, .L2213
<------>ldr x21, [x19, 3656]
<------>adrp x24, .LANCHOR4
<------>add x22, x24, :lo12:.LANCHOR4
<------>ldr x0, [x19, 3608]
<------>ldrh w1, [x19, 784]
<------>add x20, x19, 456
<------>adrp x26, .LANCHOR0
<------>add x25, x26, :lo12:.LANCHOR0
<------>str x0, [x22, 1720]
<------>add x22, x22, 1712
<------>str x21, [x22, 16]
<------>strh w1, [x21, 2]
<------>mov w1, -3932
<------>strh w1, [x21]
<------>str wzr, [x21, 12]
<------>ldr w1, [x19, 792]
<------>stp w1, wzr, [x21, 4]
<------>mov w1, 19539
<------>movk w1, 0x4654, lsl 16
<------>str w1, [x19, 456]
<------>mov w1, 99
<------>ldrb w2, [x19, 566]
<------>movk w1, 0x5000, lsl 16
<------>str w1, [x20, 4]
<------>ldrh w1, [x19, 560]
<------>strh w1, [x20, 14]
<------>ldrh w1, [x19, 562]
<------>ldrh w0, [x19, 790]
<------>strh w0, [x20, 8]
<------>orr w1, w2, w1, lsl 6
<------>strh w1, [x20, 16]
<------>ldrh w1, [x19, 608]
<------>strh w1, [x20, 18]
<------>ldrb w2, [x19, 614]
<------>ldrh w1, [x19, 610]
<------>ldrh w0, [x25, 2494]
<------>strb w0, [x20, 10]
<------>ldrb w0, [x19, 568]
<------>orr w1, w2, w1, lsl 6
<------>strb w0, [x20, 11]
<------>ldrb w0, [x19, 616]
<------>strb w0, [x20, 12]
<------>strh w1, [x20, 20]
<------>ldrh w1, [x19, 656]
<------>strh w1, [x20, 22]
<------>ldrb w0, [x19, 664]
<------>strb w0, [x20, 13]
<------>ldr w0, [x19, 760]
<------>str w0, [x20, 32]
<------>ldr w0, [x19, 752]
<------>ldrb w2, [x19, 662]
<------>str w0, [x20, 40]
<------>ldrh w1, [x19, 658]
<------>ldr w0, [x19, 756]
<------>str w0, [x20, 36]
<------>ldrh w0, [x19, 1448]
<------>orr w1, w2, w1, lsl 6
<------>strh w0, [x20, 44]
<------>ldrh w0, [x19, 1450]
<------>strh w0, [x20, 46]
<------>ldrh w2, [x25, 2554]
<------>ldr x0, [x22, 8]
<------>strh w1, [x20, 24]
<------>mov w1, 255
<------>bl ftl_memset
<------>ldr x0, [x22, 8]
<------>mov x1, x20
<------>mov w2, 48
<------>mov x20, x26
<------>bl ftl_memcpy
<------>ldr x1, [x19, 520]
<------>ldrh w2, [x25, 2480]
<------>ldr x0, [x22, 8]
<------>lsl w2, w2, 1
<------>add x0, x0, 48
<------>bl ftl_memcpy
<------>ldrh w0, [x25, 2480]
<------>ldr x3, [x22, 8]
<------>ldr x1, [x25, 64]
<------>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
<------>ldrh w0, [x25, 2588]
<------>cbz w0, .L2214
<------>ldrh w0, [x25, 2480]
<------>ldr x3, [x22, 8]
<------>ldrh w2, [x25, 2580]
<------>lsr w1, w0, 3
<------>add w0, w1, w0, lsl 1
<------>ldr x1, [x19, 3752]
<------>add w0, w0, 52
<------>lsl w2, w2, 2
<------>and x0, x0, 65532
<------>add x0, x3, x0
<------>bl ftl_memcpy
.L2214:
<------>add x27, x23, :lo12:.LANCHOR2
<------>add x26, x24, :lo12:.LANCHOR4
<------>add x19, x27, 784
<------>add x20, x20, :lo12:.LANCHOR0
<------>mov w22, 0
<------>mov w25, 65535
<------>mov w0, 0
<------>bl FtlUpdateVaildLpn
.L2215:
<------>ldrh w2, [x19, 2]
<------>ldrh w1, [x19]
<------>ldr x0, [x27, 3608]
<------>str x0, [x26, 1720]
<------>ldr x0, [x27, 3656]
<------>str x0, [x26, 1728]
<------>orr w0, w2, w1, lsl 10
<------>str w0, [x26, 1716]
<------>ldrh w0, [x20, 2546]
<------>sub w0, w0, #1
<------>cmp w2, w0
<------>blt .L2216
<------>ldrh w25, [x19, 4]
<------>strh wzr, [x19, 2]
<------>strh w1, [x19, 4]
<------>bl FtlFreeSysBlkQueueOut
<------>ldr w1, [x27, 752]
<------>str w1, [x19, 8]
<------>add w2, w1, 1
<------>str w2, [x27, 752]
<------>ubfiz w2, w0, 10, 16
<------>str w2, [x26, 1716]
<------>strh w0, [x19]
<------>strh w0, [x21, 2]
<------>str w1, [x21, 4]
.L2216:
<------>ldrb w0, [x20, 72]
<------>cbz w0, .L2217
<------>ldrh w1, [x20, 2554]
<------>ldr x0, [x27, 3608]
<------>bl js_hash
<------>str w0, [x21, 12]
.L2217:
<------>mov w3, 1
<------>add x0, x26, 1712
<------>mov w1, w3
<------>mov w2, w3
<------>bl FlashProgPages
<------>ldrh w0, [x19, 2]
<------>ldr w1, [x26, 1712]
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>strh w0, [x19, 2]
<------>cmn w1, #1
<------>bne .L2218
<------>cmp w0, 1
<------>bne .L2219
<------>ldrh w0, [x20, 2546]
<------>sub w0, w0, #1
<------>strh w0, [x19, 2]
.L2219:
<------>add w22, w22, 1
<------>and w22, w22, 65535
<------>cmp w22, 3
<------>bls .L2215
<------>add x24, x24, :lo12:.LANCHOR4
<------>add x23, x23, :lo12:.LANCHOR2
<------>mov w2, w22
<------>adrp x0, .LC131
<------>add x0, x0, :lo12:.LC131
<------>ldr w1, [x24, 1716]
<------>bl printk
<------>mov w0, 1
<------>str w0, [x23, 424]
.L2213:
<------>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
.L2218:
<------>cmp w0, 1
<------>beq .L2215
<------>cmp w1, 256
<------>beq .L2215
<------>mov w0, 65535
<------>cmp w25, w0
<------>beq .L2213
<------>mov w1, 1
<------>mov w0, w25
<------>bl FtlFreeSysBlkQueueIn
<------>b .L2213
<------>.size FtlVpcTblFlush, .-FtlVpcTblFlush
<------>.align 2
<------>.global FtlSuperblockPowerLostFix
<------>.type FtlSuperblockPowerLostFix, %function
FtlSuperblockPowerLostFix:
<------>stp x29, x30, [sp, -144]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR2
<------>add x1, x21, :lo12:.LANCHOR2
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>str x25, [sp, 64]
<------>ldr w25, [x1, 424]
<------>cbnz w25, .L2235
<------>adrp x22, .LANCHOR0
<------>add x1, x22, :lo12:.LANCHOR0
<------>ldrb w1, [x1, 204]
<------>cbz w1, .L2246
<------>ldrb w1, [x0, 8]
<------>cmp w1, 1
<------>bne .L2246
<------>ldrh w24, [x0, 4]
<------>mov w25, w1
.L2237:
<------>mov x19, x0
<------>mov w0, -1
<------>str w0, [x29, 112]
<------>add x0, x21, :lo12:.LANCHOR2
<------>mov w2, 61589
<------>mov x20, x0
<------>ldr x23, [x0, 3656]
<------>ldr x1, [x0, 3608]
<------>stp x1, x23, [x29, 96]
<------>mov w1, -3
<------>str w1, [x23, 8]
<------>mov w1, -2
<------>str w1, [x23, 12]
<------>ldrh w1, [x19]
<------>strh w1, [x23, 2]
<------>strh wzr, [x23]
<------>ldr x1, [x0, 3608]
<------>str w2, [x1]
<------>mov w2, 22136
<------>movk w2, 0x1234, lsl 16
<------>ldr x1, [x0, 3608]
<------>str w2, [x1, 4]
.L2238:
<------>sub w24, w24, #1
<------>cmn w24, #1
<------>beq .L2241
<------>ldrh w0, [x19, 4]
<------>cbnz w0, .L2239
.L2241:
<------>add x21, x21, :lo12:.LANCHOR2
<------>ldrh w0, [x19]
<------>ldrh w3, [x19, 4]
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldr x2, [x21, 520]
<------>lsl x0, x0, 1
<------>ldrh w1, [x2, x0]
<------>sub w1, w1, w3
<------>strh w1, [x2, x0]
<------>strb wzr, [x19, 6]
<------>ldrh w0, [x22, 2544]
<------>strh w0, [x19, 2]
<------>strh wzr, [x19, 4]
.L2235:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldr x25, [sp, 64]
<------>ldp x29, x30, [sp], 144
<------>ret
.L2246:
<------>mov w24, 12
<------>b .L2237
.L2239:
<------>mov x0, x19
<------>bl get_new_active_ppa
<------>str w0, [x29, 92]
<------>cmn w0, #1
<------>beq .L2241
<------>ldr w0, [x20, 756]
<------>mov w3, 0
<------>str w0, [x23, 4]
<------>mov w2, w25
<------>add w0, w0, 1
<------>mov w1, 1
<------>cmn w0, #1
<------>csel w0, w0, wzr, ne
<------>str w0, [x20, 756]
<------>add x0, x29, 88
<------>bl FlashProgPages
<------>ldrh w0, [x19]
<------>bl decrement_vpc_count
<------>b .L2238
<------>.size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
<------>.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 x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>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 .L2252
<------>ubfiz x0, x0, 1, 16
<------>ldrh w25, [x20, x0]
<------>cbz w25, .L2252
<------>ldr w1, [x19, 52]
<------>cbnz w1, .L2252
<------>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]
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2546]
<------>cmp w1, w0
<------>bcc .L2253
<------>mov x0, x19
<------>bl ftl_map_blk_alloc_new_blk
.L2253:
<------>adrp x23, .LANCHOR4
<------>add x21, x23, :lo12:.LANCHOR4
<------>adrp x24, .LANCHOR2
<------>add x21, x21, 1712
<------>add x28, x24, :lo12:.LANCHOR2
<------>mov w20, 0
.L2254:
<------>ldrh w0, [x19, 6]
<------>cmp w0, w20
<------>bhi .L2259
<------>mov w1, 1
<------>mov w0, w25
<------>bl FtlFreeSysBlkQueueIn
<------>str wzr, [x19, 52]
.L2252:
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldrh w1, [x19, 2]
<------>ldrh w0, [x22, 2546]
<------>cmp w1, w0
<------>bcc .L2257
<------>mov x0, x19
<------>bl ftl_map_blk_alloc_new_blk
<------>b .L2257
.L2259:
<------>ubfiz x0, x20, 2, 16
<------>add x3, x26, x0
<------>ldr w1, [x26, x0]
<------>cmp w25, w1, lsr 10
<------>bne .L2255
<------>ldr x1, [x28, 3616]
<------>mov w2, 1
<------>ldr x27, [x28, 3656]
<------>stp x1, x27, [x21, 8]
<------>mov w1, w2
<------>str x3, [x29, 104]
<------>ldr w0, [x26, x0]
<------>str w0, [x21, 4]
<------>mov x0, x21
<------>bl FlashReadPages
<------>ldr w0, [x21]
<------>ldr x3, [x29, 104]
<------>cmn w0, #1
<------>bne .L2256
.L2258:
<------>add x23, x23, :lo12:.LANCHOR4
<------>str wzr, [x3]
<------>add x24, x24, :lo12:.LANCHOR2
<------>adrp x0, .LC132
<------>ldrh w2, [x27, 8]
<------>add x0, x0, :lo12:.LC132
<------>ldr w1, [x23, 1716]
<------>bl printk
<------>mov w0, 1
<------>str w0, [x24, 424]
.L2257:
<------>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
.L2256:
<------>ldrh w0, [x27, 8]
<------>cmp w0, w20
<------>bne .L2258
<------>ldrh w1, [x27]
<------>ldrh w0, [x19, 4]
<------>cmp w1, w0
<------>bne .L2258
<------>ldr x2, [x21, 8]
<------>mov w1, w20
<------>mov x0, x19
<------>bl FtlMapWritePage
.L2255:
<------>add w20, w20, 1
<------>and w20, w20, 65535
<------>b .L2254
<------>.size ftl_map_blk_gc, .-ftl_map_blk_gc
<------>.align 2
<------>.global Ftl_write_map_blk_to_last_page
<------>.type Ftl_write_map_blk_to_last_page, %function
Ftl_write_map_blk_to_last_page:
<------>stp x29, x30, [sp, -80]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR2
<------>add x20, x20, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>str x25, [sp, 64]
<------>ldr w1, [x20, 424]
<------>cbnz w1, .L2265
<------>mov x19, x0
<------>ldrh w0, [x0]
<------>mov w1, 65535
<------>cmp w0, w1
<------>ldr x21, [x19, 16]
<------>bne .L2266
<------>ldrh w0, [x19, 8]
<------>add w0, w0, 1
<------>strh w0, [x19, 8]
<------>bl FtlFreeSysBlkQueueOut
<------>strh w0, [x21]
<------>strh wzr, [x19, 2]
<------>ldr w0, [x19, 48]
<------>strh wzr, [x19]
<------>add w0, w0, 1
<------>str w0, [x19, 48]
.L2265:
<------>mov w0, 0
<------>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
.L2266:
<------>ubfiz x0, x0, 1, 16
<------>ldrh w1, [x19, 2]
<------>ldr x23, [x20, 3656]
<------>adrp x22, .LANCHOR0
<------>ldr x25, [x19, 40]
<------>ldrh w24, [x21, x0]
<------>adrp x21, .LANCHOR4
<------>add x0, x21, :lo12:.LANCHOR4
<------>orr w1, w1, w24, lsl 10
<------>str w1, [x0, 1716]
<------>ldr x1, [x20, 3608]
<------>str x1, [x0, 1720]
<------>str x23, [x0, 1728]
<------>mov w1, 255
<------>ldr w0, [x19, 48]
<------>str w0, [x23, 4]
<------>mov w0, -1291
<------>strh w0, [x23, 8]
<------>ldrh w0, [x19, 4]
<------>strh w0, [x23]
<------>add x0, x22, :lo12:.LANCHOR0
<------>strh w24, [x23, 2]
<------>ldrh w2, [x0, 2546]
<------>ldr x0, [x20, 3608]
<------>lsl w2, w2, 3
<------>bl ftl_memset
<------>mov w1, 0
<------>mov w0, 0
.L2267:
<------>ldrh w2, [x19, 6]
<------>cmp w2, w0
<------>bhi .L2269
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x22, 72]
<------>cbz w0, .L2270
<------>add x0, x21, :lo12:.LANCHOR4
<------>ldrh w1, [x22, 2554]
<------>ldr x0, [x0, 1720]
<------>bl js_hash
<------>str w0, [x23, 12]
.L2270:
<------>add x21, x21, :lo12:.LANCHOR4
<------>mov w2, 1
<------>mov w3, 0
<------>mov w1, w2
<------>add x0, x21, 1712
<------>bl FlashProgPages
<------>ldrh w0, [x19, 2]
<------>add w0, w0, 1
<------>strh w0, [x19, 2]
<------>mov x0, x19
<------>bl ftl_map_blk_gc
<------>b .L2265
.L2269:
<------>ubfiz x2, x0, 2, 16
<------>ldr w3, [x25, x2]
<------>cmp w24, w3, lsr 10
<------>bne .L2268
<------>add w1, w1, 1
<------>ldr x4, [x20, 3608]
<------>and w1, w1, 65535
<------>ubfiz x3, x1, 3, 16
<------>str w0, [x4, x3]
<------>ldr w4, [x25, x2]
<------>ldr x2, [x20, 3608]
<------>add x2, x2, x3
<------>str w4, [x2, 4]
.L2268:
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>b .L2267
<------>.size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
<------>.align 2
<------>.global FtlMapWritePage
<------>.type FtlMapWritePage, %function
FtlMapWritePage:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>adrp x23, .LANCHOR2
<------>stp x25, x26, [sp, 64]
<------>adrp x25, .LANCHOR4
<------>add x24, x25, :lo12:.LANCHOR4
<------>stp x21, x22, [sp, 32]
<------>stp x27, x28, [sp, 80]
<------>mov x22, x25
<------>stp x19, x20, [sp, 16]
<------>mov w27, w1
<------>mov x19, x0
<------>mov x28, x2
<------>add x24, x24, 1712
<------>mov w21, 0
.L2276:
<------>add x1, x23, :lo12:.LANCHOR2
<------>adrp x20, .LANCHOR0
<------>ldr w0, [x1, 736]
<------>add w0, w0, 1
<------>str w0, [x1, 736]
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldrh w1, [x19, 2]
<------>ldrh w0, [x0, 2546]
<------>sub w0, w0, #1
<------>cmp w1, w0
<------>bge .L2277
<------>ldrh w1, [x19]
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L2278
.L2277:
<------>mov x0, x19
<------>bl Ftl_write_map_blk_to_last_page
.L2278:
<------>add x1, x23, :lo12:.LANCHOR2
<------>ldr w0, [x1, 424]
<------>cbnz w0, .L2291
<------>ldrh w2, [x19]
<------>add x3, x25, :lo12:.LANCHOR4
<------>ldr x0, [x19, 16]
<------>add x3, x3, 1712
<------>ldrh w26, [x0, x2, lsl 1]
<------>mov w2, 16
<------>ldrh w0, [x19, 2]
<------>str x28, [x3, 8]
<------>orr w0, w0, w26, lsl 10
<------>str w0, [x3, 4]
<------>ldr x0, [x1, 3656]
<------>mov w1, 0
<------>str x0, [x3, 16]
<------>str x3, [x29, 104]
<------>bl ftl_memset
<------>ldr x3, [x29, 104]
<------>ldr w0, [x19, 48]
<------>ldr x6, [x3, 16]
<------>strh w27, [x6, 8]
<------>str w0, [x6, 4]
<------>ldrh w0, [x19, 4]
<------>strh w0, [x6]
<------>add x0, x20, :lo12:.LANCHOR0
<------>strh w26, [x6, 2]
<------>ldrb w1, [x0, 72]
<------>cbz w1, .L2280
<------>ldrh w1, [x0, 2554]
<------>ldr x0, [x3, 8]
<------>bl js_hash
<------>str w0, [x6, 12]
.L2280:
<------>mov w3, 1
<------>mov x0, x24
<------>mov w1, w3
<------>mov w2, w3
<------>bl FlashProgPages
<------>ldrh w0, [x19, 2]
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>strh w0, [x19, 2]
<------>ldr w1, [x24]
<------>cmn w1, #1
<------>bne .L2281
<------>ldr w1, [x24, 4]
<------>adrp x0, .LC133
<------>add x0, x0, :lo12:.LC133
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>bl printk
<------>ldrh w0, [x19, 2]
<------>cmp w0, 2
<------>bhi .L2282
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldrh w0, [x20, 2546]
<------>sub w0, w0, #1
<------>strh w0, [x19, 2]
.L2282:
<------>cmp w21, 3
<------>bls .L2276
<------>add x22, x22, :lo12:.LANCHOR4
<------>add x23, x23, :lo12:.LANCHOR2
<------>mov w2, w21
<------>adrp x0, .LC134
<------>add x0, x0, :lo12:.LC134
<------>ldr w1, [x22, 1716]
<------>bl printk
<------>mov w0, 1
<------>str w0, [x23, 424]
.L2291:
<------>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
.L2281:
<------>cbz w1, .L2284
<------>strh w26, [x19, 60]
<------>cmp w0, 1
<------>bne .L2285
.L2286:
<------>str wzr, [x19, 56]
<------>b .L2276
.L2285:
<------>cmp w1, 256
.L2299:
<------>beq .L2286
<------>ldr w0, [x19, 56]
<------>cbnz w0, .L2286
<------>add x22, x22, :lo12:.LANCHOR4
<------>ldr x0, [x19, 40]
<------>ldr w1, [x22, 1716]
<------>str w1, [x0, w27, uxtw 2]
<------>b .L2291
.L2284:
<------>cmp w0, 1
<------>b .L2299
<------>.size FtlMapWritePage, .-FtlMapWritePage
<------>.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 x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>ubfiz x20, x0, 4, 16
<------>ldr x0, [x19, 704]
<------>add x1, x0, x20
<------>ldr x2, [x1, 8]
<------>ldrh w1, [x0, x20]
<------>add x0, x19, 3792
<------>bl FtlMapWritePage
<------>ldr x0, [x19, 704]
<------>add x0, x0, x20
<------>ldr w1, [x0, 4]
<------>and w1, w1, 2147483647
<------>str w1, [x0, 4]
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size flush_l2p_region, .-flush_l2p_region
<------>.align 2
<------>.global FtlMapTblRecovery
<------>.type FtlMapTblRecovery, %function
FtlMapTblRecovery:
<------>stp x29, x30, [sp, -144]!
<------>mov w1, 0
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w19, 0
<------>stp x25, x26, [sp, 64]
<------>stp x21, x22, [sp, 32]
<------>mov x22, x0
<------>stp x23, x24, [sp, 48]
<------>stp x27, x28, [sp, 80]
<------>ldrh w24, [x0, 6]
<------>ldr x21, [x0, 40]
<------>ldr x23, [x0, 16]
<------>ldr x0, [x0, 24]
<------>lsl w2, w24, 2
<------>str x0, [x29, 128]
<------>ldrh w0, [x22, 8]
<------>str w0, [x29, 140]
<------>mov x0, x21
<------>bl ftl_memset
<------>stp wzr, wzr, [x22, 48]
<------>adrp x0, .LANCHOR2
<------>add x2, x0, :lo12:.LANCHOR2
<------>adrp x1, .LANCHOR4
<------>add x4, x1, :lo12:.LANCHOR4
<------>stp x0, x1, [x29, 104]
<------>add x4, x4, 1712
<------>ldr w0, [x29, 140]
<------>ldr x5, [x2, 3608]
<------>ldr x20, [x2, 3656]
<------>sub w0, w0, #1
<------>str x5, [x4, 8]
<------>mov w2, -1
<------>str x20, [x4, 16]
<------>mov x25, x4
<------>str w0, [x29, 136]
<------>adrp x0, .LANCHOR0
<------>add x26, x0, :lo12:.LANCHOR0
<------>strh w2, [x22]
<------>strh w2, [x22, 2]
<------>mov w2, 1
<------>str w2, [x22, 56]
.L2303:
<------>ldr w0, [x29, 140]
<------>cmp w19, w0
<------>bge .L2322
<------>ldr w0, [x29, 136]
<------>sxtw x27, w19
<------>cmp w19, w0
<------>bne .L2304
<------>lsl x0, x27, 1
<------>mov w1, 1
<------>add x25, x23, x0
<------>mov w26, 0
<------>ldrh w0, [x23, x0]
<------>bl FtlGetLastWrittenPage
<------>sxth w23, w0
<------>add w0, w0, 1
<------>strh w0, [x22, 2]
<------>ldr x0, [x29, 128]
<------>add w23, w23, 1
<------>strh w19, [x22]
<------>ldr w0, [x0, x27, lsl 2]
<------>str w0, [x22, 48]
<------>ldr x0, [x29, 112]
<------>add x19, x0, :lo12:.LANCHOR4
<------>adrp x0, .LANCHOR0
<------>add x19, x19, 1712
<------>add x27, x0, :lo12:.LANCHOR0
.L2305:
<------>cmp w26, w23
<------>blt .L2308
.L2322:
<------>mov x0, x22
<------>bl ftl_free_no_use_map_blk
<------>adrp x0, .LANCHOR0
<------>add x21, x0, :lo12:.LANCHOR0
<------>ldrh w1, [x22, 2]
<------>ldrh w0, [x21, 2546]
<------>cmp w1, w0
<------>bne .L2310
<------>mov x0, x22
<------>bl ftl_map_blk_alloc_new_blk
.L2310:
<------>mov x0, x22
<------>bl ftl_map_blk_gc
<------>mov x0, x22
<------>bl ftl_map_blk_gc
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 144
<------>ret
.L2308:
<------>ldrh w0, [x25]
<------>mov w2, 1
<------>mov w1, w2
<------>orr w0, w26, w0, lsl 10
<------>str w0, [x19, 4]
<------>mov x0, x19
<------>bl FlashReadPages
<------>ldrb w0, [x27, 72]
<------>cbz w0, .L2306
<------>ldr x0, [x19, 16]
<------>ldr w6, [x0, 12]
<------>cbz w6, .L2306
<------>ldrh w1, [x27, 2554]
<------>ldr x0, [x19, 8]
<------>bl js_hash
<------>cmp w6, w0
<------>beq .L2306
<------>mov w0, -1
<------>str w0, [x19]
.L2306:
<------>ldr w0, [x19]
<------>cmn w0, #1
<------>beq .L2307
<------>ldrh w0, [x20, 8]
<------>cmp w24, w0
<------>bls .L2307
<------>ldrh w2, [x20]
<------>ldrh w1, [x22, 4]
<------>cmp w2, w1
<------>bne .L2307
<------>ubfiz x0, x0, 2, 16
<------>ldr w1, [x19, 4]
<------>str w1, [x21, x0]
.L2307:
<------>add w26, w26, 1
<------>sxth w26, w26
<------>b .L2305
.L2304:
<------>ldr x0, [x29, 104]
<------>mov w2, 1
<------>add x28, x0, :lo12:.LANCHOR2
<------>ldr x0, [x28, 3608]
<------>str x0, [x25, 8]
<------>lsl x0, x27, 1
<------>add x1, x23, x0
<------>str x1, [x29, 120]
<------>ldrh w1, [x26, 2546]
<------>ldrh w0, [x23, x0]
<------>sub w1, w1, #1
<------>orr w0, w1, w0, lsl 10
<------>mov w1, w2
<------>str w0, [x25, 4]
<------>mov x0, x25
<------>bl FlashReadPages
<------>ldr w0, [x25]
<------>cmn w0, #1
<------>beq .L2324
<------>ldrh w1, [x20]
<------>ldrh w0, [x22, 4]
<------>cmp w1, w0
<------>bne .L2324
<------>ldrh w1, [x20, 8]
<------>mov w0, 64245
<------>cmp w1, w0
<------>beq .L2312
.L2324:
<------>mov w27, 0
<------>mov w28, -1
.L2313:
<------>ldrh w0, [x26, 2546]
<------>cmp w27, w0
<------>bge .L2320
<------>ldr x0, [x29, 120]
<------>mov w2, 1
<------>mov w1, w2
<------>ldrh w0, [x0]
<------>orr w0, w27, w0, lsl 10
<------>str w0, [x25, 4]
<------>mov x0, x25
<------>bl FlashReadPages
<------>ldrb w0, [x26, 72]
<------>cbz w0, .L2317
<------>ldr x0, [x25, 16]
<------>ldr w7, [x0, 12]
<------>cbz w7, .L2317
<------>ldrh w1, [x26, 2554]
<------>ldr x0, [x25, 8]
<------>bl js_hash
<------>cmp w7, w0
<------>beq .L2317
<------>str w28, [x25]
.L2317:
<------>ldr w0, [x25]
<------>cmn w0, #1
<------>beq .L2318
<------>ldrh w0, [x20, 8]
<------>cmp w24, w0
<------>bls .L2318
<------>ldrh w2, [x20]
<------>ldrh w1, [x22, 4]
<------>cmp w2, w1
<------>bne .L2318
<------>ubfiz x0, x0, 2, 16
<------>ldr w1, [x25, 4]
<------>str w1, [x21, x0]
.L2318:
<------>add w5, w27, 1
<------>sxth w27, w5
<------>b .L2313
.L2312:
<------>mov w0, 0
.L2314:
<------>ldrh w1, [x26, 2546]
<------>sub w1, w1, #1
<------>cmp w0, w1
<------>blt .L2316
.L2320:
<------>add w19, w19, 1
<------>sxth w19, w19
<------>b .L2303
.L2316:
<------>ldr x2, [x28, 3608]
<------>sbfiz x5, x0, 3, 32
<------>ldrh w1, [x2, x5]
<------>cmp w24, w1
<------>bls .L2315
<------>add x2, x2, x5
<------>ubfiz x1, x1, 2, 16
<------>ldr w2, [x2, 4]
<------>str w2, [x21, x1]
.L2315:
<------>add w0, w0, 1
<------>sxth w0, w0
<------>b .L2314
<------>.size FtlMapTblRecovery, .-FtlMapTblRecovery
<------>.align 2
<------>.global FtlLoadVonderInfo
<------>.type FtlLoadVonderInfo, %function
FtlLoadVonderInfo:
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>stp x29, x30, [sp, -16]!
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>add x0, x0, 1776
<------>add x29, sp, 0
<------>ldrh w2, [x1, 2564]
<------>strh w2, [x0, 10]
<------>mov w2, -3962
<------>strh w2, [x0, 4]
<------>ldrh w2, [x1, 2590]
<------>strh w2, [x0, 8]
<------>ldrh w2, [x1, 2566]
<------>ldr x1, [x1, 2592]
<------>str x1, [x0, 16]
<------>adrp x1, .LANCHOR2
<------>add x1, x1, :lo12:.LANCHOR2
<------>strh w2, [x0, 6]
<------>ldr x2, [x1, 3736]
<------>str x2, [x0, 24]
<------>ldr x2, [x1, 3728]
<------>ldr x1, [x1, 3744]
<------>stp x2, x1, [x0, 32]
<------>bl FtlMapTblRecovery
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlLoadVonderInfo, .-FtlLoadVonderInfo
<------>.align 2
<------>.global FtlLoadMapInfo
<------>.type FtlLoadMapInfo, %function
FtlLoadMapInfo:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl FtlL2PDataInit
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>add x0, x0, 3792
<------>bl FtlMapTblRecovery
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlLoadMapInfo, .-FtlLoadMapInfo
<------>.align 2
<------>.global FtlVendorPartWrite
<------>.type FtlVendorPartWrite, %function
FtlVendorPartWrite:
<------>stp x29, x30, [sp, -176]!
<------>add x29, sp, 0
<------>stp x27, x28, [sp, 80]
<------>mov w28, w0
<------>stp x23, x24, [sp, 48]
<------>mov x27, x2
<------>adrp x23, .LANCHOR0
<------>add w2, w0, w1
<------>add x0, x23, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>stp x19, x20, [sp, 16]
<------>mov w21, w1
<------>stp x25, x26, [sp, 64]
<------>ldrh w1, [x0, 2540]
<------>cmp w2, w1
<------>bhi .L2356
<------>ldrh w22, [x0, 2552]
<------>adrp x25, .LANCHOR2
<------>add x25, x25, :lo12:.LANCHOR2
<------>mov w24, 0
<------>mov x26, x25
<------>lsr w22, w28, w22
.L2350:
<------>cbnz w21, .L2355
.L2348:
<------>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
.L2355:
<------>ldr x0, [x25, 3744]
<------>ldr w2, [x0, w22, uxtw 2]
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrh w1, [x0, 2550]
<------>and w0, w21, 65535
<------>udiv w20, w28, w1
<------>msub w20, w20, w1, w28
<------>sub w19, w1, w20
<------>and w19, w19, 65535
<------>cmp w21, w19
<------>csel w19, w0, w19, cc
<------>cbz w2, .L2352
<------>cmp w19, w1
<------>beq .L2352
<------>ldr x0, [x26, 3624]
<------>str w2, [x29, 124]
<------>mov w2, 1
<------>stp x0, xzr, [x29, 128]
<------>mov w1, w2
<------>add x0, x29, 120
<------>bl FlashReadPages
.L2353:
<------>lsl w3, w19, 9
<------>ldr x0, [x26, 3624]
<------>lsl w20, w20, 9
<------>mov w2, w3
<------>asr w20, w20, 2
<------>mov x1, x27
<------>str w3, [x29, 108]
<------>add x0, x0, w20, sxtw 2
<------>bl ftl_memcpy
<------>sub w21, w21, w19
<------>ldr x2, [x26, 3624]
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>mov w1, w22
<------>add x0, x0, 1776
<------>add w28, w28, w19
<------>add w22, w22, 1
<------>bl FtlMapWritePage
<------>cmn w0, #1
<------>ldr w3, [x29, 108]
<------>csinv w24, w24, wzr, ne
<------>add x27, x27, w3, sxtw
<------>b .L2350
.L2352:
<------>add x0, x23, :lo12:.LANCHOR0
<------>mov w1, 0
<------>ldrh w2, [x0, 2554]
<------>ldr x0, [x26, 3624]
<------>bl ftl_memset
<------>b .L2353
.L2356:
<------>mov w24, -1
<------>b .L2348
<------>.size FtlVendorPartWrite, .-FtlVendorPartWrite
<------>.align 2
<------>.global Ftl_save_ext_data
<------>.type Ftl_save_ext_data, %function
Ftl_save_ext_data:
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>mov w1, 19539
<------>movk w1, 0x4654, lsl 16
<------>ldr w3, [x0, 848]
<------>cmp w3, w1
<------>bne .L2364
<------>stp x29, x30, [sp, -16]!
<------>add x2, x0, 848
<------>mov w1, 99
<------>add x29, sp, 0
<------>movk w1, 0x5000, lsl 16
<------>str w1, [x2, 4]
<------>ldr w1, [x0, 744]
<------>str w1, [x2, 88]
<------>ldr w1, [x0, 748]
<------>str w1, [x2, 92]
<------>ldr w1, [x0, 740]
<------>str w1, [x2, 8]
<------>ldr w1, [x0, 728]
<------>str w1, [x2, 12]
<------>ldr w1, [x0, 720]
<------>str w1, [x2, 16]
<------>ldr w1, [x0, 736]
<------>str w1, [x2, 20]
<------>ldr w1, [x0, 764]
<------>str w1, [x2, 28]
<------>ldr w1, [x0, 448]
<------>str w1, [x2, 32]
<------>ldr w1, [x0, 724]
<------>str w1, [x2, 36]
<------>ldr w1, [x0, 732]
<------>str w1, [x2, 40]
<------>ldr w1, [x0, 772]
<------>str w1, [x2, 44]
<------>ldr w1, [x0, 776]
<------>str w1, [x2, 48]
<------>ldr w1, [x0, 1360]
<------>ldr w0, [x0, 3556]
<------>stp w1, w0, [x2, 60]
<------>mov w1, 1
<------>mov w0, 0
<------>bl FtlVendorPartWrite
<------>ldp x29, x30, [sp], 16
<------>ret
.L2364:
<------>ret
<------>.size Ftl_save_ext_data, .-Ftl_save_ext_data
<------>.align 2
<------>.global FtlEctTblFlush
<------>.type FtlEctTblFlush, %function
FtlEctTblFlush:
<------>adrp x1, .LANCHOR0+2372
<------>ldr w2, [x1, #:lo12:.LANCHOR0+2372]
<------>adrp x1, .LANCHOR2
<------>cbz w2, .L2372
<------>add x2, x1, :lo12:.LANCHOR2
<------>mov w3, 4
<------>ldr w2, [x2, 776]
<------>cmp w2, 39
<------>mov w2, 32
<------>csel w2, w2, w3, hi
.L2368:
<------>adrp x3, .LANCHOR4
<------>add x3, x3, :lo12:.LANCHOR4
<------>ldrh w4, [x3, 1840]
<------>cmp w4, 31
<------>bhi .L2369
<------>add w4, w4, 1
<------>mov w2, 1
<------>strh w4, [x3, 1840]
.L2369:
<------>cbnz w0, .L2370
<------>add x0, x1, :lo12:.LANCHOR2
<------>ldr x0, [x0, 3696]
<------>ldr w3, [x0, 20]
<------>ldr w0, [x0, 16]
<------>add w2, w2, w3
<------>cmp w0, w2
<------>bcc .L2375
.L2370:
<------>add x0, x1, :lo12:.LANCHOR2
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>ldr x1, [x0, 3696]
<------>ldr w2, [x1, 16]
<------>str w2, [x1, 20]
<------>mov w2, 17221
<------>movk w2, 0x4254, lsl 16
<------>str w2, [x1]
<------>ldr x2, [x0, 3696]
<------>ldrh w1, [x0, 3680]
<------>lsl w3, w1, 9
<------>str wzr, [x2, 4]
<------>str w3, [x2, 12]
<------>ldr w3, [x2, 8]
<------>add w3, w3, 1
<------>str w3, [x2, 8]
<------>ldr x2, [x0, 3696]
<------>mov w0, 64
<------>bl FtlVendorPartWrite
<------>bl Ftl_save_ext_data
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L2372:
<------>mov w2, 32
<------>b .L2368
.L2375:
<------>mov w0, 0
<------>ret
<------>.size FtlEctTblFlush, .-FtlEctTblFlush
<------>.align 2
<------>.global FtlVendorPartRead
<------>.type FtlVendorPartRead, %function
FtlVendorPartRead:
<------>stp x29, x30, [sp, -176]!
<------>add w3, w0, w1
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>mov w22, w1
<------>stp x23, x24, [sp, 48]
<------>adrp x1, .LANCHOR0
<------>mov w23, w0
<------>add x0, x1, :lo12:.LANCHOR0
<------>stp x25, x26, [sp, 64]
<------>mov x25, x2
<------>stp x19, x20, [sp, 16]
<------>stp x27, x28, [sp, 80]
<------>str x1, [x29, 104]
<------>ldrh w2, [x0, 2540]
<------>cmp w3, w2
<------>bhi .L2386
<------>ldrh w21, [x0, 2552]
<------>adrp x26, .LANCHOR2
<------>add x26, x26, :lo12:.LANCHOR2
<------>mov w24, 0
<------>mov x27, x26
<------>lsr w21, w23, w21
.L2379:
<------>cbnz w22, .L2385
.L2377:
<------>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
.L2385:
<------>ldr x0, [x26, 3744]
<------>ldr w4, [x0, w21, uxtw 2]
<------>ldr x0, [x29, 104]
<------>add x0, x0, :lo12:.LANCHOR0
<------>ldrh w19, [x0, 2550]
<------>and w0, w22, 65535
<------>udiv w20, w23, w19
<------>msub w20, w20, w19, w23
<------>sub w19, w19, w20
<------>and w19, w19, 65535
<------>cmp w22, w19
<------>csel w19, w0, w19, cc
<------>lsl w28, w19, 9
<------>cbz w4, .L2381
<------>ldr x0, [x27, 3624]
<------>mov w2, 1
<------>str w4, [x29, 96]
<------>mov w1, w2
<------>str w4, [x29, 124]
<------>stp x0, xzr, [x29, 128]
<------>add x0, x29, 120
<------>bl FlashReadPages
<------>adrp x3, .LANCHOR4
<------>add x3, x3, :lo12:.LANCHOR4
<------>ldr w0, [x29, 120]
<------>ldr w4, [x29, 96]
<------>cmn w0, #1
<------>ldr w0, [x3, 1712]
<------>csinv w24, w24, wzr, ne
<------>cmp w0, 256
<------>bne .L2383
<------>mov w2, w4
<------>mov w1, w21
<------>str x3, [x29, 96]
<------>adrp x0, .LC135
<------>add x0, x0, :lo12:.LC135
<------>bl printk
<------>ldr x3, [x29, 96]
<------>mov w1, w21
<------>ldr x2, [x27, 3624]
<------>add x0, x3, 1776
<------>bl FtlMapWritePage
.L2383:
<------>ldr x1, [x27, 3624]
<------>lsl w20, w20, 9
<------>asr w20, w20, 2
<------>mov w2, w28
<------>mov x0, x25
<------>add x1, x1, w20, sxtw 2
<------>bl ftl_memcpy
.L2384:
<------>add w21, w21, 1
<------>sub w22, w22, w19
<------>add w23, w23, w19
<------>add x25, x25, w28, sxtw
<------>b .L2379
.L2381:
<------>mov w2, w28
<------>mov w1, 0
<------>mov x0, x25
<------>bl ftl_memset
<------>b .L2384
.L2386:
<------>mov w24, -1
<------>b .L2377
<------>.size FtlVendorPartRead, .-FtlVendorPartRead
<------>.align 2
<------>.global FtlLoadEctTbl
<------>.type FtlLoadEctTbl, %function
FtlLoadEctTbl:
<------>stp x29, x30, [sp, -32]!
<------>mov w0, 64
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>ldrh w1, [x19, 3680]
<------>ldr x2, [x19, 3696]
<------>bl FtlVendorPartRead
<------>ldr x0, [x19, 3696]
<------>ldr w1, [x0]
<------>mov w0, 17221
<------>movk w0, 0x4254, lsl 16
<------>cmp w1, w0
<------>beq .L2389
<------>adrp x1, .LC136
<------>adrp x0, .LC76
<------>add x1, x1, :lo12:.LC136
<------>add x0, x0, :lo12:.LC76
<------>bl printk
<------>ldr x0, [x19, 3696]
<------>mov w1, 0
<------>ldrh w2, [x19, 3680]
<------>lsl w2, w2, 9
<------>bl ftl_memset
.L2389:
<------>mov w0, 0
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlLoadEctTbl, .-FtlLoadEctTbl
<------>.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, .LANCHOR2
<------>add x20, x19, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>add x22, x20, 848
<------>mov w21, 19539
<------>mov x2, x22
<------>bl FtlVendorPartRead
<------>ldr w0, [x20, 848]
<------>movk w21, 0x4654, lsl 16
<------>cmp w0, w21
<------>beq .L2392
<------>mov w2, 512
<------>mov w1, 0
<------>mov x0, x22
<------>bl ftl_memset
<------>str w21, [x20, 848]
.L2392:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w2, 19539
<------>movk w2, 0x4654, lsl 16
<------>ldr w3, [x0, 848]
<------>cmp w3, w2
<------>bne .L2393
<------>ldr w2, [x0, 936]
<------>str w2, [x0, 744]
<------>ldr w2, [x0, 940]
<------>str w2, [x0, 748]
<------>ldr w2, [x0, 856]
<------>str w2, [x0, 740]
<------>ldr w2, [x0, 860]
<------>str w2, [x0, 728]
<------>ldr w2, [x0, 864]
<------>str w2, [x0, 720]
<------>ldr w2, [x0, 868]
<------>str w2, [x0, 736]
<------>ldr w2, [x0, 876]
<------>str w2, [x0, 764]
<------>ldr w2, [x0, 880]
<------>str w2, [x0, 448]
<------>ldr w2, [x0, 884]
<------>str w2, [x0, 724]
<------>ldr w2, [x0, 888]
<------>str w2, [x0, 732]
<------>ldr w2, [x0, 892]
<------>ldr w1, [x0, 908]
<------>str w2, [x0, 772]
<------>ldr w2, [x0, 896]
<------>str w1, [x0, 1360]
<------>str w2, [x0, 776]
.L2393:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, 34661
<------>movk w1, 0x1234, lsl 16
<------>adrp x20, .LANCHOR0
<------>add x0, x0, 848
<------>ldr w2, [x0, 68]
<------>str wzr, [x0, 2708]
<------>cmp w2, w1
<------>bne .L2394
<------>add x1, x20, :lo12:.LANCHOR0
<------>ldrb w2, [x1, 204]
<------>cbz w2, .L2395
<------>str wzr, [x0, 68]
<------>bl Ftl_save_ext_data
.L2394:
<------>add x19, x19, :lo12:.LANCHOR2
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldp x21, x22, [sp, 32]
<------>ldr w1, [x19, 764]
<------>ldrh w0, [x20, 2536]
<------>ldr w2, [x19, 760]
<------>madd w0, w0, w2, w1
<------>ldrh w1, [x20, 2480]
<------>udiv w0, w0, w1
<------>str w0, [x19, 768]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L2395:
<------>mov w0, 1
<------>str w0, [x1, 2372]
<------>adrp x1, .LC137
<------>adrp x0, .LC76
<------>add x1, x1, :lo12:.LC137
<------>add x0, x0, :lo12:.LC76
<------>bl printk
<------>b .L2394
<------>.size Ftl_load_ext_data, .-Ftl_load_ext_data
<------>.align 2
<------>.global FtlMapBlkWriteDumpData
<------>.type FtlMapBlkWriteDumpData, %function
FtlMapBlkWriteDumpData:
<------>ldr w1, [x0, 56]
<------>cbz w1, .L2404
<------>stp x29, x30, [sp, -48]!
<------>adrp x2, .LANCHOR2
<------>add x2, x2, :lo12:.LANCHOR2
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>str x21, [sp, 32]
<------>str wzr, [x0, 56]
<------>ldr w1, [x2, 424]
<------>ldrh w19, [x0, 6]
<------>ldr x4, [x0, 40]
<------>cbnz w1, .L2397
<------>adrp x1, .LANCHOR4
<------>add x3, x1, :lo12:.LANCHOR4
<------>sub w19, w19, #1
<------>mov x21, x0
<------>and w19, w19, 65535
<------>ldr x0, [x2, 3616]
<------>ldr x2, [x2, 3656]
<------>mov x20, x1
<------>str x2, [x3, 1728]
<------>ubfiz x2, x19, 2, 16
<------>str x0, [x3, 1720]
<------>add x3, x3, 1712
<------>ldr w2, [x4, x2]
<------>str w2, [x3, 4]
<------>cbz w2, .L2401
<------>mov w2, 1
<------>mov x0, x3
<------>mov w1, w2
<------>bl FlashReadPages
.L2402:
<------>add x1, x20, :lo12:.LANCHOR4
<------>mov x0, x21
<------>ldr x2, [x1, 1720]
<------>mov w1, w19
<------>bl FtlMapWritePage
.L2397:
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L2401:
<------>adrp x1, .LANCHOR0+2554
<------>ldrh w2, [x1, #:lo12:.LANCHOR0+2554]
<------>mov w1, 255
<------>bl ftl_memset
<------>b .L2402
.L2404:
<------>ret
<------>.size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
<------>.align 2
<------>.type FlashReadFacBbtData.part.17, %function
FlashReadFacBbtData.part.17:
<------>stp x29, x30, [sp, -32]!
<------>adrp x3, .LANCHOR4
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>mov x19, x0
<------>cbnz w1, .L2408
<------>add x5, x3, :lo12:.LANCHOR4
<------>mov w0, 0
<------>mov w7, 1
.L2409:
<------>ldr w1, [x5, 1644]
<------>cmp w0, w1
<------>bcc .L2410
.L2408:
<------>add x3, x3, :lo12:.LANCHOR4
<------>mov x0, x19
<------>ldr x1, [x3, 1608]
<------>bl ftl_memcpy
<------>mov w3, 4
<------>mov x1, x19
<------>mov w2, w3
<------>adrp x0, .LC138
<------>add x0, x0, :lo12:.LC138
<------>bl rknand_print_hex
<------>mov w0, 0
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L2410:
<------>ubfx x1, x0, 5, 11
<------>ldr x6, [x5, 1608]
<------>lsl x1, x1, 2
<------>lsl w8, w7, w0
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>ldr w4, [x6, x1]
<------>orr w4, w4, w8
<------>str w4, [x6, x1]
<------>b .L2409
<------>.size FlashReadFacBbtData.part.17, .-FlashReadFacBbtData.part.17
<------>.align 2
<------>.global FlashReadFacBbtData
<------>.type FlashReadFacBbtData, %function
FlashReadFacBbtData:
<------>stp x29, x30, [sp, -144]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>mov w23, w1
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>add x1, x1, 176
<------>stp x21, x22, [sp, 32]
<------>mov x22, x0
<------>stp x25, x26, [sp, 64]
<------>mov w25, w2
<------>mov w26, 61664
<------>ldrh w0, [x1, 14]
<------>ldrh w1, [x1, 12]
<------>mul w0, w0, w1
<------>adrp x1, .LANCHOR4
<------>add x1, x1, :lo12:.LANCHOR4
<------>and w0, w0, 65535
<------>mov x21, x1
<------>sub w20, w0, #1
<------>sub w19, w0, #16
<------>ldr x2, [x1, 1608]
<------>and w20, w20, 65535
<------>mul w24, w0, w23
<------>str x2, [x29, 96]
<------>ldr x2, [x1, 1664]
<------>str x2, [x29, 104]
.L2414:
<------>cmp w20, w19
<------>bgt .L2417
<------>mov w0, -1
<------>b .L2413
.L2417:
<------>add w0, w20, w24
<------>mov w2, 1
<------>lsl w0, w0, 10
<------>mov w1, w2
<------>str w0, [x29, 92]
<------>add x0, x29, 88
<------>bl FlashReadPages
<------>ldr w0, [x29, 88]
<------>cmn w0, #1
<------>beq .L2415
<------>ldr x0, [x21, 1664]
<------>ldrh w0, [x0]
<------>cmp w0, w26
<------>bne .L2415
<------>cbz x22, .L2418
<------>mov w2, w25
<------>mov w1, w23
<------>mov x0, x22
<------>bl FlashReadFacBbtData.part.17
.L2413:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x29, x30, [sp], 144
<------>ret
.L2415:
<------>sub w20, w20, #1
<------>and w20, w20, 65535
<------>b .L2414
.L2418:
<------>mov w0, 0
<------>b .L2413
<------>.size FlashReadFacBbtData, .-FlashReadFacBbtData
<------>.align 2
<------>.global FlashGetBadBlockList
<------>.type FlashGetBadBlockList, %function
FlashGetBadBlockList:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>str x21, [sp, 32]
<------>mov x21, x0
<------>adrp x0, .LANCHOR0+88
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR4
<------>add x20, x20, :lo12:.LANCHOR4
<------>ldr x0, [x0, #:lo12:.LANCHOR0+88]
<------>ldrb w2, [x0, 13]
<------>ldrh w19, [x0, 14]
<------>ldr x0, [x20, 1656]
<------>mul w19, w19, w2
<------>and w19, w19, 65535
<------>add w2, w19, 7
<------>lsr w2, w2, 3
<------>bl FlashReadFacBbtData
<------>cmn w0, #1
<------>bne .L2424
.L2428:
<------>mov w0, 0
.L2425:
<------>ubfiz x0, x0, 1, 16
<------>mov w1, -1
<------>strh w1, [x21, x0]
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L2424:
<------>lsr w4, w19, 4
<------>sub w19, w19, #1
<------>mov w1, 0
<------>mov w0, 0
<------>mov w5, 1
.L2426:
<------>cmp w1, w19
<------>bge .L2425
<------>ldr x6, [x20, 1656]
<------>ubfx x3, x1, 5, 11
<------>lsl w2, w5, w1
<------>ldr w3, [x6, x3, lsl 2]
<------>tst w2, w3
<------>beq .L2427
<------>add w2, w0, 1
<------>ubfiz x0, x0, 1, 16
<------>strh w1, [x21, x0]
<------>and w0, w2, 65535
.L2427:
<------>cmp w0, w4
<------>bcs .L2428
<------>add w1, w1, 1
<------>and w1, w1, 65535
<------>b .L2426
<------>.size FlashGetBadBlockList, .-FlashGetBadBlockList
<------>.align 2
<------>.global FtlMakeBbt
<------>.type FtlMakeBbt, %function
FtlMakeBbt:
<------>stp x29, x30, [sp, -112]!
<------>adrp x0, .LANCHOR2
<------>add x1, x0, :lo12:.LANCHOR2
<------>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]
<------>str x0, [x29, 104]
<------>ldr w23, [x1, 424]
<------>cbnz w23, .L2435
<------>bl FtlBbtMemInit
<------>adrp x20, .LANCHOR0
<------>bl FtlLoadFactoryBbt
<------>add x22, x20, :lo12:.LANCHOR0
<------>adrp x0, .LANCHOR4
<------>add x24, x0, :lo12:.LANCHOR4
<------>add x26, x22, 2656
<------>add x24, x24, 1712
<------>add x22, x22, 2636
.L2436:
<------>add x19, x20, :lo12:.LANCHOR0
<------>ldrh w0, [x19, 2494]
<------>cmp w23, w0
<------>bcc .L2442
<------>mov w21, 0
.L2443:
<------>ldrh w0, [x19, 2558]
<------>cmp w0, w21
<------>bhi .L2444
<------>add x19, x19, 2624
<------>ldrh w21, [x19, 12]
<------>mov w22, 65535
<------>sub w21, w21, #1
<------>and w21, w21, 65535
.L2445:
<------>ldrh w0, [x19, 12]
<------>sub w0, w0, #48
<------>cmp w21, w0
<------>ble .L2449
<------>mov w0, w21
<------>bl FtlBbmIsBadBlock
<------>cmp w0, 1
<------>beq .L2446
<------>mov w0, w21
<------>bl FlashTestBlk
<------>cbz w0, .L2447
<------>mov w0, w21
<------>bl FtlBbmMapBadBlock
.L2446:
<------>sub w21, w21, #1
<------>and w21, w21, 65535
<------>b .L2445
.L2442:
<------>ldr x0, [x29, 104]
<------>adrp x1, .LANCHOR4
<------>add x21, x1, :lo12:.LANCHOR4
<------>ldrh w1, [x22]
<------>add x25, x0, :lo12:.LANCHOR2
<------>add x21, x21, 1712
<------>mov w2, 65535
<------>cmp w1, w2
<------>ldr x0, [x25, 3608]
<------>ldr x27, [x25, 3656]
<------>stp x0, x27, [x21, 8]
<------>beq .L2437
<------>ldrh w4, [x19, 2542]
<------>mov w2, 1
<------>madd w28, w4, w23, w1
<------>mov w1, w2
<------>lsl w0, w28, 10
<------>str w0, [x21, 4]
<------>mov x0, x21
<------>bl FlashReadPages
<------>ldr x1, [x21, 8]
<------>ldr x0, [x26]
<------>ldrh w2, [x19, 2542]
<------>add w2, w2, 7
<------>lsr w2, w2, 3
<------>bl ftl_memcpy
.L2438:
<------>mov w0, w28
<------>add w23, w23, 1
<------>bl FtlBbmMapBadBlock
<------>add x26, x26, 8
<------>add x22, x22, 2
<------>b .L2436
.L2437:
<------>mov w1, w23
<------>bl FlashGetBadBlockList
<------>ldr x0, [x21, 8]
<------>ldr x1, [x26]
<------>bl FtlBbt2Bitmap
<------>ldrh w21, [x19, 2542]
.L2440:
<------>sub w21, w21, #1
<------>and w21, w21, 65535
.L2439:
<------>ldrh w0, [x19, 2542]
<------>madd w0, w23, w0, w21
<------>bl FtlBbmIsBadBlock
<------>cmp w0, 1
<------>beq .L2440
<------>ldr x0, [x25, 3656]
<------>mov w2, 16
<------>strh w21, [x22]
<------>mov w1, 0
<------>bl ftl_memset
<------>str wzr, [x27, 4]
<------>mov w0, -3872
<------>strh w0, [x27]
<------>ldrh w0, [x22]
<------>strh w0, [x27, 2]
<------>ldrh w4, [x19, 2542]
<------>ldrh w0, [x22]
<------>ldr x1, [x26]
<------>ldrh w2, [x25, 3784]
<------>madd w28, w4, w23, w0
<------>lsl w2, w2, 2
<------>lsl w0, w28, 10
<------>str w0, [x24, 4]
<------>ldr x0, [x24, 8]
<------>bl ftl_memcpy
<------>mov w2, 1
<------>mov x0, x24
<------>mov w1, w2
<------>bl FlashEraseBlocks
<------>mov w3, 1
<------>mov x0, x24
<------>mov w2, w3
<------>mov w1, w3
<------>bl FlashProgPages
<------>ldr w0, [x24]
<------>cmn w0, #1
<------>bne .L2438
<------>mov w0, w28
<------>bl FtlBbmMapBadBlock
<------>b .L2439
.L2444:
<------>mov w0, w21
<------>add w21, w21, 1
<------>bl FtlBbmMapBadBlock
<------>and w21, w21, 65535
<------>b .L2443
.L2447:
<------>ldrh w0, [x19]
<------>cmp w0, w22
<------>bne .L2448
<------>strh w21, [x19]
<------>b .L2446
.L2448:
<------>strh w21, [x19, 4]
.L2449:
<------>ldr x0, [x29, 104]
<------>add x20, x20, :lo12:.LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldrh w1, [x20, 2624]
<------>str wzr, [x20, 2632]
<------>ldr x2, [x0, 432]
<------>lsl w1, w1, 10
<------>strh wzr, [x20, 2626]
<------>str w1, [x2, 4]
<------>mov w2, 2
<------>ldr x0, [x0, 432]
<------>ldrh w1, [x20, 2628]
<------>lsl w1, w1, 10
<------>str w1, [x0, 60]
<------>mov w1, 1
<------>bl FlashEraseBlocks
<------>ldrh w0, [x20, 2624]
<------>bl FtlBbmMapBadBlock
<------>ldrh w0, [x20, 2628]
<------>bl FtlBbmMapBadBlock
<------>bl FtlBbmTblFlush
<------>strh wzr, [x20, 2626]
<------>ldr w0, [x20, 2632]
<------>ldrh w1, [x20, 2628]
<------>add w0, w0, 1
<------>str w0, [x20, 2632]
<------>ldrh w0, [x20, 2624]
<------>strh w0, [x20, 2628]
<------>strh w1, [x20, 2624]
<------>bl FtlBbmTblFlush
.L2435:
<------>ldp x19, x20, [sp, 16]
<------>mov w0, 0
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 112
<------>ret
<------>.size FtlMakeBbt, .-FtlMakeBbt
<------>.align 2
<------>.global log2phys
<------>.type log2phys, %function
log2phys:
<------>stp x29, x30, [sp, -128]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x22, .LANCHOR0
<------>add x3, x22, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr w4, [x3, 2616]
<------>cmp w0, w4
<------>bcs .L2456
<------>ldrh w27, [x3, 2552]
<------>mov w25, w0
<------>adrp x20, .LANCHOR2
<------>str x1, [x29, 120]
<------>add w27, w27, 7
<------>ldrh w1, [x3, 2582]
<------>str w2, [x29, 116]
<------>lsr w24, w0, w27
<------>add x0, x20, :lo12:.LANCHOR2
<------>and w23, w24, 65535
<------>ldr x8, [x0, 704]
<------>mov x0, 0
.L2457:
<------>and x19, x0, 65535
<------>cmp w19, w1
<------>bcc .L2462
<------>bl select_l2p_ram_region
<------>and x19, x0, 65535
<------>ubfiz x21, x19, 4, 16
<------>mov w2, 65535
<------>add x1, x8, x21
<------>ldrh w3, [x8, x21]
<------>cmp w3, w2
<------>beq .L2463
<------>ldr w1, [x1, 4]
<------>tbz w1, #31, .L2463
<------>bl flush_l2p_region
.L2463:
<------>add x28, x20, :lo12:.LANCHOR2
<------>ubfiz x0, x23, 2, 16
<------>ldr x1, [x28, 3752]
<------>ldr w3, [x1, x0]
<------>cbnz w3, .L2464
<------>ldr x0, [x28, 704]
<------>add x22, x22, :lo12:.LANCHOR0
<------>mov w1, 255
<------>add x0, x0, x21
<------>ldrh w2, [x22, 2554]
<------>ldr x0, [x0, 8]
<------>bl ftl_memset
<------>ldr x0, [x28, 704]
<------>strh w23, [x0, x21]
<------>ldr x0, [x28, 704]
<------>add x21, x0, x21
<------>str wzr, [x21, 4]
<------>b .L2459
.L2456:
<------>mov w0, -1
<------>cbnz w2, .L2455
<------>str w0, [x1]
.L2455:
<------>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
.L2462:
<------>add x0, x0, 1
<------>add x2, x8, x0, lsl 4
<------>ldrh w2, [x2, -16]
<------>cmp w2, w23
<------>bne .L2457
.L2459:
<------>mov x0, 1
<------>lsl x27, x0, x27
<------>ldr w0, [x29, 116]
<------>sub w27, w27, #1
<------>and w25, w27, w25
<------>and x25, x25, 65535
<------>cbnz w0, .L2460
<------>add x0, x20, :lo12:.LANCHOR2
<------>ldr x1, [x29, 120]
<------>ldr x0, [x0, 704]
<------>add x0, x0, x19, lsl 4
<------>ldr x0, [x0, 8]
<------>ldr w0, [x0, x25, lsl 2]
<------>str w0, [x1]
.L2461:
<------>add x20, x20, :lo12:.LANCHOR2
<------>ldr x0, [x20, 704]
<------>add x19, x0, x19, lsl 4
<------>ldr w0, [x19, 4]
<------>cmn w0, #1
<------>beq .L2468
<------>add w0, w0, 1
<------>str w0, [x19, 4]
.L2468:
<------>mov w0, 0
<------>b .L2455
.L2460:
<------>add x2, x20, :lo12:.LANCHOR2
<------>ldr x1, [x29, 120]
<------>lsl x0, x19, 4
<------>ldr x3, [x2, 704]
<------>ldr w4, [x1]
<------>mov x1, x0
<------>add x0, x3, x0
<------>ldr x0, [x0, 8]
<------>str w4, [x0, x25, lsl 2]
<------>strh w23, [x2, 712]
<------>ldr x0, [x2, 704]
<------>add x0, x0, x1
<------>ldr w1, [x0, 4]
<------>orr w1, w1, -2147483648
<------>str w1, [x0, 4]
<------>b .L2461
.L2464:
<------>ldr x0, [x28, 704]
<------>adrp x6, .LANCHOR4
<------>add x6, x6, :lo12:.LANCHOR4
<------>mov w2, 1
<------>add x0, x0, x21
<------>add x26, x6, 1712
<------>str x6, [x29, 104]
<------>mov w1, w2
<------>str w3, [x6, 1716]
<------>ldr x0, [x0, 8]
<------>str x0, [x6, 1720]
<------>ldr x0, [x28, 3656]
<------>str x0, [x6, 1728]
<------>mov x0, x26
<------>str w3, [x29, 112]
<------>bl FlashReadPages
<------>ldr x0, [x26, 16]
<------>ldr w3, [x29, 112]
<------>ldr x6, [x29, 104]
<------>ldrh w0, [x0, 8]
<------>cmp w0, w23
<------>beq .L2465
<------>mov w2, w3
<------>and w1, w24, 65535
<------>adrp x0, .LC139
<------>add x0, x0, :lo12:.LC139
<------>bl printk
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldr x1, [x26, 16]
<------>mov w3, 4
<------>adrp x0, .LC100
<------>mov w2, w3
<------>add x0, x0, :lo12:.LC100
<------>bl rknand_print_hex
<------>ldrh w3, [x22, 2580]
<------>mov w2, 4
<------>ldr x1, [x28, 3752]
<------>adrp x0, .LC140
<------>add x0, x0, :lo12:.LC140
<------>bl rknand_print_hex
<------>mov w0, 1
<------>str w0, [x28, 424]
.L2466:
<------>add x1, x20, :lo12:.LANCHOR2
<------>ldr x0, [x1, 704]
<------>add x0, x0, x21
<------>str wzr, [x0, 4]
<------>ldr x0, [x1, 704]
<------>strh w23, [x0, x21]
<------>b .L2459
.L2465:
<------>ldr w0, [x6, 1712]
<------>cmp w0, 256
<------>bne .L2466
<------>and w24, w24, 65535
<------>mov w2, w3
<------>mov w1, w24
<------>adrp x0, .LC141
<------>add x0, x0, :lo12:.LC141
<------>bl printk
<------>ldr x0, [x28, 704]
<------>mov w1, w24
<------>add x0, x0, x21
<------>ldr x2, [x0, 8]
<------>add x0, x28, 3792
<------>bl FtlMapWritePage
<------>b .L2466
<------>.size log2phys, .-log2phys
<------>.align 2
<------>.global FtlWriteDumpData
<------>.type FtlWriteDumpData, %function
FtlWriteDumpData:
<------>stp x29, x30, [sp, -144]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>add x23, x19, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>str x25, [sp, 64]
<------>ldr w0, [x23, 424]
<------>cbnz w0, .L2471
<------>ldrh w2, [x23, 564]
<------>cbz w2, .L2473
<------>ldrb w1, [x23, 568]
<------>cbnz w1, .L2473
<------>adrp x21, .LANCHOR0
<------>add x21, x21, :lo12:.LANCHOR0
<------>ldrb w1, [x23, 567]
<------>ldrh w3, [x21, 2544]
<------>mul w1, w1, w3
<------>cmp w2, w1
<------>beq .L2473
<------>ldrb w0, [x23, 570]
<------>cbnz w0, .L2471
<------>ldr w22, [x21, 2616]
<------>add x1, x29, 84
<------>ldrh w24, [x21, 2472]
<------>mov w2, 0
<------>sub w22, w22, #1
<------>mov w0, w22
<------>bl log2phys
<------>ldr x20, [x23, 3656]
<------>ldr w0, [x29, 84]
<------>ldr x1, [x23, 3608]
<------>str w0, [x29, 92]
<------>cmn w0, #1
<------>stp x1, x20, [x29, 96]
<------>str w22, [x29, 112]
<------>str wzr, [x20, 4]
<------>beq .L2475
<------>mov w2, 0
<------>mov w1, 1
<------>add x0, x29, 88
<------>bl FlashReadPages
.L2476:
<------>add x25, x19, :lo12:.LANCHOR2
<------>lsl w24, w24, 2
<------>add x21, x25, 560
<------>mov w0, -3947
<------>mov w23, 0
<------>strh w0, [x20]
.L2477:
<------>cmp w24, w23
<------>bne .L2481
.L2478:
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w0, 1
<------>strb w0, [x19, 570]
.L2471:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldr x25, [sp, 64]
<------>ldp x29, x30, [sp], 144
<------>ret
.L2475:
<------>ldrh w2, [x21, 2554]
<------>mov w1, 255
<------>ldr x0, [x23, 3608]
<------>bl ftl_memset
<------>b .L2476
.L2481:
<------>ldrh w0, [x21, 4]
<------>cbz w0, .L2478
<------>ldr w0, [x29, 92]
<------>add w23, w23, 1
<------>stp w22, w0, [x20, 8]
<------>ldrh w0, [x21]
<------>strh w0, [x20, 2]
<------>mov x0, x21
<------>bl get_new_active_ppa
<------>str w0, [x29, 92]
<------>ldr w0, [x25, 756]
<------>mov w3, 0
<------>str w0, [x20, 4]
<------>mov w2, 0
<------>add w0, w0, 1
<------>mov w1, 1
<------>cmn w0, #1
<------>csel w0, w0, wzr, ne
<------>str w0, [x25, 756]
<------>add x0, x29, 88
<------>bl FlashProgPages
<------>ldrh w0, [x21]
<------>bl decrement_vpc_count
<------>b .L2477
.L2473:
<------>add x19, x19, :lo12:.LANCHOR2
<------>strb wzr, [x19, 570]
<------>b .L2471
<------>.size FtlWriteDumpData, .-FtlWriteDumpData
<------>.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, .LANCHOR0
<------>str x21, [sp, 32]
<------>add x20, x20, :lo12:.LANCHOR0
<------>adrp x21, .LANCHOR2
<------>add x21, x21, :lo12:.LANCHOR2
<------>mov w19, 0
<------>bl FtlWriteDumpData
.L2490:
<------>ldrh w0, [x20, 2582]
<------>cmp w0, w19
<------>bhi .L2492
<------>mov w0, 0
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L2492:
<------>ldr x1, [x21, 704]
<------>ubfiz x0, x19, 4, 16
<------>add x0, x1, x0
<------>ldr w0, [x0, 4]
<------>tbz w0, #31, .L2491
<------>mov w0, w19
<------>bl flush_l2p_region
.L2491:
<------>add w19, w19, 1
<------>and w19, w19, 65535
<------>b .L2490
<------>.size l2p_flush, .-l2p_flush
<------>.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]
<------>adrp x19, .LANCHOR2
<------>add x2, x19, :lo12:.LANCHOR2
<------>str x21, [sp, 32]
<------>ldr w1, [x2, 424]
<------>cbnz w1, .L2495
<------>ldrh w20, [x0]
<------>mov x21, x0
<------>mov w0, 65535
<------>cmp w20, w0
<------>beq .L2496
<------>ldr x0, [x2, 520]
<------>ubfiz x1, x20, 1, 16
<------>ldrh w0, [x0, x1]
<------>cbz w0, .L2497
<------>mov w0, w20
<------>bl INSERT_DATA_LIST
.L2496:
<------>add x2, x19, :lo12:.LANCHOR2
<------>strb wzr, [x21, 8]
<------>add x0, x2, 608
<------>cmp x21, x0
<------>beq .L2498
<------>adrp x1, .LANCHOR0
<------>add x4, x1, :lo12:.LANCHOR0
<------>ldrh w3, [x4, 2492]
<------>cmp w3, 1
<------>beq .L2498
<------>ldrb w0, [x4, 204]
<------>cbz w0, .L2499
.L2498:
<------>mov w0, 1
<------>strb w0, [x21, 8]
.L2500:
<------>add x2, x19, :lo12:.LANCHOR2
<------>mov w1, 65535
<------>ldrh w0, [x2, 3872]
<------>cmp w0, w1
<------>beq .L2505
<------>cmp w20, w0
<------>bne .L2506
<------>ldr x2, [x2, 520]
<------>ubfiz x1, x0, 1, 16
<------>ldrh w1, [x2, x1]
<------>cbz w1, .L2507
.L2506:
<------>bl update_vpc_list
.L2507:
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w0, -1
<------>strh w0, [x19, 3872]
.L2505:
<------>mov x0, x21
<------>bl allocate_data_superblock
<------>bl l2p_flush
<------>mov w0, 0
<------>bl FtlEctTblFlush
<------>bl FtlVpcTblFlush
.L2495:
<------>mov w0, 0
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L2497:
<------>mov w0, w20
<------>bl INSERT_FREE_LIST
<------>b .L2496
.L2499:
<------>add x0, x2, 560
<------>cmp x21, x0
<------>bne .L2500
<------>cmp w3, 3
<------>beq .L2502
<------>ldr w0, [x2, 1360]
<------>cmp w0, 1
<------>bne .L2503
.L2502:
<------>add x2, x19, :lo12:.LANCHOR2
<------>mov w0, 1
<------>strb w0, [x2, 568]
.L2503:
<------>add x1, x1, :lo12:.LANCHOR0
<------>ldr w0, [x1, 2372]
<------>cbz w0, .L2500
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldr w0, [x1, 776]
<------>cmp w0, 39
<------>bhi .L2500
<------>mov w0, 1
<------>strb w0, [x1, 568]
<------>b .L2500
<------>.size allocate_new_data_superblock, .-allocate_new_data_superblock
<------>.align 2
<------>.global FtlCheckVpc
<------>.type FtlCheckVpc, %function
FtlCheckVpc:
<------>stp x29, x30, [sp, -112]!
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>adrp x0, .LC109
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>add x23, x19, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>mov w22, 0
<------>add x1, x1, 216
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>add x0, x0, :lo12:.LC109
<------>adrp x21, check_valid_page_count_table
<------>bl printk
<------>add x20, x21, :lo12:check_valid_page_count_table
<------>mov x2, 8192
<------>mov w1, 0
<------>mov x0, x20
<------>bl memset
.L2522:
<------>ldr w0, [x23, 2616]
<------>cmp w22, w0
<------>bcc .L2524
<------>add x22, x19, :lo12:.LANCHOR0
<------>adrp x23, .LC142
<------>adrp x19, .LANCHOR2
<------>add x26, x21, :lo12:check_valid_page_count_table
<------>add x25, x19, :lo12:.LANCHOR2
<------>add x23, x23, :lo12:.LC142
<------>mov w24, 0
<------>mov w20, 0
.L2525:
<------>ldrh w0, [x22, 2480]
<------>cmp w0, w20
<------>bhi .L2527
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldr x19, [x0, 544]
<------>cbz x19, .L2528
<------>ldr x1, [x0, 504]
<------>adrp x23, .LC143
<------>ldrh w25, [x0, 552]
<------>mov x20, x0
<------>sub x19, x19, x1
<------>mov x1, -6148914691236517206
<------>asr x19, x19, 1
<------>movk x1, 0xaaab, lsl 0
<------>add x21, x21, :lo12:check_valid_page_count_table
<------>add x23, x23, :lo12:.LC143
<------>mov w22, 0
<------>mov w26, 6
<------>mul x19, x19, x1
<------>and w19, w19, 65535
.L2529:
<------>cmp w22, w25
<------>bne .L2531
.L2528:
<------>mov w1, w24
<------>adrp x0, .LC144
<------>add x0, x0, :lo12:.LC144
<------>bl printk
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 112
<------>ret
.L2524:
<------>mov w2, 0
<------>add x1, x29, 108
<------>mov w0, w22
<------>bl log2phys
<------>ldr w0, [x29, 108]
<------>cmn w0, #1
<------>beq .L2523
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>and x0, x0, 65535
<------>ldrh w1, [x20, x0, lsl 1]
<------>add w1, w1, 1
<------>strh w1, [x20, x0, lsl 1]
.L2523:
<------>add w22, w22, 1
<------>b .L2522
.L2527:
<------>ldr x0, [x25, 520]
<------>ubfiz x28, x20, 1, 16
<------>sxtw x27, w20
<------>ldrh w2, [x0, x28]
<------>ldrh w3, [x26, x27, lsl 1]
<------>cmp w2, w3
<------>beq .L2526
<------>mov w1, w20
<------>mov x0, x23
<------>bl printk
<------>ldr x0, [x25, 520]
<------>mov w1, 65535
<------>ldrh w0, [x0, x28]
<------>cmp w0, w1
<------>beq .L2526
<------>ldrh w1, [x26, x27, lsl 1]
<------>cmp w1, w0
<------>csinc w24, w24, wzr, ls
.L2526:
<------>add w20, w20, 1
<------>and w20, w20, 65535
<------>b .L2525
.L2531:
<------>ldr x1, [x20, 520]
<------>ubfiz x0, x19, 1, 16
<------>ldrh w2, [x1, x0]
<------>cbz w2, .L2530
<------>ldrh w3, [x21, w19, sxtw 1]
<------>mov w24, 1
<------>mov w1, w19
<------>mov x0, x23
<------>bl printk
.L2530:
<------>ldr x0, [x20, 504]
<------>umull x19, w19, w26
<------>ldrh w19, [x0, x19]
<------>mov w0, 65535
<------>cmp w19, w0
<------>beq .L2528
<------>add w22, w22, 1
<------>and w22, w22, 65535
<------>b .L2529
<------>.size FtlCheckVpc, .-FtlCheckVpc
<------>.align 2
<------>.global Ftlscanalldata
<------>.type Ftlscanalldata, %function
Ftlscanalldata:
<------>sub sp, sp, #96
<------>adrp x0, .LC145
<------>mov w1, 0
<------>add x0, x0, :lo12:.LC145
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x19, x20, [sp, 32]
<------>mov w19, 0
<------>stp x21, x22, [sp, 48]
<------>adrp x22, .LANCHOR4
<------>add x20, x22, :lo12:.LANCHOR4
<------>adrp x21, .LANCHOR0
<------>add x20, x20, 1712
<------>add x21, x21, :lo12:.LANCHOR0
<------>str x23, [sp, 64]
<------>bl printk
.L2543:
<------>ldr w0, [x21, 2616]
<------>cmp w19, w0
<------>bcc .L2549
<------>ldp x19, x20, [sp, 32]
<------>ldp x21, x22, [sp, 48]
<------>ldp x29, x30, [sp, 16]
<------>ldr x23, [sp, 64]
<------>add sp, sp, 96
<------>ret
.L2549:
<------>mov w2, 0
<------>add x1, x29, 76
<------>mov w0, w19
<------>bl log2phys
<------>tst x19, 2047
<------>bne .L2544
<------>ldr w2, [x29, 76]
<------>adrp x0, .LC146
<------>mov w1, w19
<------>add x0, x0, :lo12:.LC146
<------>bl printk
.L2544:
<------>ldr w0, [x29, 76]
<------>cmn w0, #1
<------>beq .L2546
<------>stp wzr, w0, [x20]
<------>adrp x0, .LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR2
<------>mov w2, 0
<------>str w19, [x20, 24]
<------>ldr x1, [x0, 3608]
<------>ldr x23, [x0, 3656]
<------>mov x0, x20
<------>stp x1, x23, [x20, 8]
<------>mov w1, 1
<------>bl FlashReadPages
<------>ldr w0, [x20]
<------>cmp w0, 256
<------>ccmn w0, #1, 4, ne
<------>beq .L2547
<------>ldr w0, [x23, 8]
<------>cmp w19, w0
<------>beq .L2546
.L2547:
<------>add x0, x22, :lo12:.LANCHOR4
<------>ldr x2, [x0, 1720]
<------>ldr x1, [x0, 1728]
<------>ldr w3, [x2, 4]
<------>str w3, [sp]
<------>ldp w3, w4, [x1]
<------>ldp w5, w6, [x1, 8]
<------>mov w1, w19
<------>ldr w7, [x2]
<------>ldr w2, [x0, 1716]
<------>adrp x0, .LC147
<------>add x0, x0, :lo12:.LC147
<------>bl printk
.L2546:
<------>add w19, w19, 1
<------>b .L2543
<------>.size Ftlscanalldata, .-Ftlscanalldata
<------>.align 2
<------>.global FtlReUsePrevPpa
<------>.type FtlReUsePrevPpa, %function
FtlReUsePrevPpa:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w19, w0
<------>str x21, [sp, 32]
<------>lsr w0, w1, 10
<------>str w1, [x29, 60]
<------>bl P2V_block_in_plane
<------>adrp x20, .LANCHOR2
<------>add x2, x20, :lo12:.LANCHOR2
<------>and w0, w0, 65535
<------>ubfiz x21, x0, 1, 16
<------>ldr x3, [x2, 520]
<------>ldrh w1, [x3, x21]
<------>cbnz w1, .L2552
<------>ldr x8, [x2, 544]
<------>cbz x8, .L2553
<------>ldrh w3, [x2, 552]
<------>mov x4, -6148914691236517206
<------>ldr x2, [x2, 504]
<------>movk x4, 0xaaab, lsl 0
<------>mov w5, 65535
<------>sub x8, x8, x2
<------>asr x8, x8, 1
<------>mul x8, x8, x4
<------>mov w4, 6
<------>and w8, w8, 65535
.L2554:
<------>cmp w1, w3
<------>beq .L2553
<------>cmp w8, w0
<------>bne .L2555
<------>add x20, x20, :lo12:.LANCHOR2
<------>mov w1, w8
<------>add x0, x20, 544
<------>bl List_remove_node
<------>ldrh w0, [x20, 552]
<------>sub w0, w0, #1
<------>strh w0, [x20, 552]
<------>mov w0, w8
<------>bl INSERT_DATA_LIST
<------>ldr x1, [x20, 520]
<------>ldrh w0, [x1, x21]
<------>add w0, w0, 1
<------>strh w0, [x1, x21]
.L2553:
<------>add x1, x29, 60
<------>mov w2, 1
<------>mov w0, w19
<------>bl log2phys
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 64
<------>ret
.L2555:
<------>umull x8, w8, w4
<------>ldrh w8, [x2, x8]
<------>cmp w8, w5
<------>beq .L2553
<------>add w1, w1, 1
<------>and w1, w1, 65535
<------>b .L2554
.L2552:
<------>add w1, w1, 1
<------>strh w1, [x3, x21]
<------>b .L2553
<------>.size FtlReUsePrevPpa, .-FtlReUsePrevPpa
<------>.align 2
<------>.global FtlRecoverySuperblock
<------>.type FtlRecoverySuperblock, %function
FtlRecoverySuperblock:
<------>stp x29, x30, [sp, -192]!
<------>mov w2, 65535
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x20, x0
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldrh w0, [x0]
<------>cmp w0, w2
<------>beq .L2707
<------>adrp x23, .LANCHOR0
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrh w28, [x20, 2]
<------>ldrh w0, [x0, 2544]
<------>cmp w0, w28
<------>bne .L2564
<------>strh wzr, [x20, 4]
.L2714:
<------>strb wzr, [x20, 6]
.L2707:
<------>ldp x19, x20, [sp, 16]
<------>mov w0, 0
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 192
<------>ret
.L2564:
<------>ldrh w0, [x20, 16]
<------>mov w1, 0
.L2565:
<------>cmp w0, w2
<------>beq .L2566
<------>ldrb w1, [x20, 6]
<------>str w1, [x29, 152]
<------>ldrb w1, [x20, 8]
<------>cmp w1, 1
<------>bne .L2567
<------>bl FtlGetLastWrittenPage
<------>mov w21, w0
<------>cmn w0, #1
<------>beq .L2568
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrb w1, [x0, 204]
<------>cbnz w1, .L2640
<------>add x0, x0, 208
<------>ldrh w24, [x0, w21, sxtw 1]
.L2569:
<------>add x0, x23, :lo12:.LANCHOR0
<------>add x1, x20, 16
<------>mov x4, x1
<------>str x1, [x29, 168]
<------>adrp x1, .LANCHOR2
<------>add x1, x1, :lo12:.LANCHOR2
<------>ldrh w8, [x0, 2556]
<------>mov w26, 0
<------>ldrh w0, [x0, 2472]
<------>mov w9, 65535
<------>mov w10, 56
<------>mov w11, 4
<------>add x0, x0, 8
<------>add x0, x20, x0, lsl 1
.L2570:
<------>cmp x4, x0
<------>bne .L2572
<------>ldrb w0, [x20, 8]
<------>cmp w0, 1
<------>bne .L2641
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 204]
<------>cmp w0, 0
<------>cset w0, ne
<------>str w0, [x29, 164]
.L2573:
<------>adrp x19, .LANCHOR2
<------>add x25, x19, :lo12:.LANCHOR2
<------>ldr w2, [x29, 164]
<------>mov w1, w26
<------>mov x27, 0
<------>ldr x0, [x25, 3584]
<------>bl FlashReadPages
<------>ldr w22, [x25, 756]
<------>adrp x0, .LC148
<------>add x0, x0, :lo12:.LC148
<------>sub w22, w22, #1
<------>str x0, [x29, 144]
<------>mov w5, 65535
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>str x0, [x29, 136]
.L2574:
<------>and w0, w27, 65535
<------>cmp w26, w0
<------>bhi .L2579
<------>bne .L2577
<------>add x0, x19, :lo12:.LANCHOR2
<------>add w21, w21, 1
<------>and w21, w21, 65535
<------>ldr x0, [x0, 3584]
<------>ldr w0, [x0, 4]
.L2709:
<------>lsr w0, w0, 10
<------>bl P2V_plane
<------>ldrb w1, [x20, 8]
<------>and w27, w0, 65535
<------>cmp w1, 1
<------>bne .L2581
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrb w2, [x0, 204]
<------>cbnz w2, .L2581
<------>add x0, x0, 208
<------>ldrh w21, [x0, w21, sxtw 1]
.L2581:
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2544]
<------>cmp w0, w21
<------>bne .L2582
<------>strh w21, [x20, 2]
<------>strb wzr, [x20, 6]
<------>strh wzr, [x20, 4]
.L2582:
<------>ldrh w0, [x29, 152]
<------>cmp w21, w28
<------>str w0, [x29, 144]
<------>ccmp w27, w0, 0, eq
<------>bne .L2583
.L2715:
<------>mov w2, w27
<------>mov w1, w21
<------>mov x0, x20
<------>bl ftl_sb_update_avl_pages
<------>b .L2707
.L2566:
<------>add w1, w1, 1
<------>and w1, w1, 65535
<------>add x0, x20, w1, sxtw 1
<------>ldrh w0, [x0, 16]
<------>b .L2565
.L2567:
<------>mov w1, 0
<------>bl FtlGetLastWrittenPage
<------>mov w21, w0
<------>cmn w0, #1
<------>beq .L2568
.L2640:
<------>mov w24, w21
<------>b .L2569
.L2568:
<------>strh wzr, [x20, 2]
<------>b .L2714
.L2572:
<------>ldrh w2, [x4]
<------>cmp w2, w9
<------>beq .L2571
<------>umull x7, w26, w10
<------>ldr x6, [x1, 3584]
<------>orr w2, w24, w2, lsl 10
<------>add w3, w26, 1
<------>add x6, x6, x7
<------>str w2, [x6, 4]
<------>mul w2, w26, w8
<------>and w26, w3, 65535
<------>ldr x5, [x1, 3584]
<------>ldr x6, [x1, 1400]
<------>sdiv w2, w2, w11
<------>add x5, x5, x7
<------>add x2, x6, w2, sxtw 2
<------>stp xzr, x2, [x5, 8]
.L2571:
<------>add x4, x4, 2
<------>b .L2570
.L2641:
<------>str wzr, [x29, 164]
<------>b .L2573
.L2579:
<------>mov x0, 56
<------>ldr x4, [x25, 3584]
<------>mul x0, x27, x0
<------>add x1, x4, x0
<------>ldr w0, [x4, x0]
<------>cbnz w0, .L2575
<------>ldr x6, [x1, 16]
<------>ldr w4, [x6, 4]
<------>cmn w4, #1
<------>beq .L2576
<------>ldr w1, [x25, 756]
<------>mov w0, w4
<------>bl ftl_cmp_data_ver
<------>cbz w0, .L2576
<------>add w4, w4, 1
<------>str w4, [x25, 756]
.L2576:
<------>ldr w0, [x6]
<------>cmn w0, #1
<------>bne .L2578
.L2577:
<------>add x0, x19, :lo12:.LANCHOR2
<------>and x27, x27, 65535
<------>mov x1, 56
<------>and w21, w21, 65535
<------>ldr x0, [x0, 3584]
<------>madd x27, x27, x1, x0
<------>ldr w0, [x27, 4]
<------>b .L2709
.L2575:
<------>ldr w1, [x1, 4]
<------>ldr x0, [x29, 144]
<------>bl printk
<------>ldr x1, [x29, 136]
<------>and w5, w24, 65535
<------>ldrh w0, [x20]
<------>strh w0, [x1, 1842]
.L2578:
<------>add x27, x27, 1
<------>b .L2574
.L2583:
<------>mov w0, 65535
<------>cmp w5, w0
<------>bne .L2584
<------>cbnz w1, .L2585
.L2584:
<------>add x0, x19, :lo12:.LANCHOR2
<------>and w6, w24, 65535
<------>ldr w1, [x0, 3884]
<------>cmn w1, #1
<------>bne .L2586
<------>str w22, [x0, 3884]
.L2586:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldr w7, [x0, 3884]
<------>add w0, w28, 7
<------>cmp w0, w24, uxth
<------>bge .L2642
<------>sub w24, w6, #7
<------>and w24, w24, 65535
.L2587:
<------>add x4, x19, :lo12:.LANCHOR2
<------>mov w3, -1
<------>add x8, x4, 1500
<------>mov w26, w3
<------>mov w5, 65535
.L2588:
<------>cmp w24, w6
<------>bhi .L2601
<------>add x0, x23, :lo12:.LANCHOR0
<------>mov w25, 0
<------>mov w10, 56
<------>ldr x1, [x29, 168]
<------>ldrh w0, [x0, 2472]
<------>add x0, x0, 8
<------>add x0, x20, x0, lsl 1
<------>b .L2602
.L2642:
<------>mov w24, w28
<------>b .L2587
.L2590:
<------>ldrh w2, [x1]
<------>cmp w2, w5
<------>beq .L2589
<------>ldr x9, [x4, 3584]
<------>orr w2, w24, w2, lsl 10
<------>umaddl x9, w25, w10, x9
<------>add w25, w25, 1
<------>and w25, w25, 65535
<------>str w2, [x9, 4]
.L2589:
<------>add x1, x1, 2
.L2602:
<------>cmp x0, x1
<------>bne .L2590
<------>ldr w2, [x29, 164]
<------>mov w1, w25
<------>ldr x0, [x4, 3584]
<------>str x8, [x29, 104]
<------>str w5, [x29, 112]
<------>str w7, [x29, 120]
<------>str w6, [x29, 128]
<------>str w3, [x29, 136]
<------>str x4, [x29, 152]
<------>bl FlashReadPages
<------>ldr x4, [x29, 152]
<------>add x0, x23, :lo12:.LANCHOR0
<------>mov w1, 56
<------>ldr w5, [x29, 112]
<------>ldr w7, [x29, 120]
<------>sxtw x9, w24
<------>ldrb w2, [x0, 204]
<------>ldr x0, [x4, 3584]
<------>ldr w6, [x29, 128]
<------>ldr w3, [x29, 136]
<------>ldr x8, [x29, 104]
<------>nop // between mem op and mult-accumulate
<------>umaddl x25, w25, w1, x0
.L2591:
<------>cmp x25, x0
<------>bne .L2600
<------>add w24, w24, 1
<------>and w24, w24, 65535
<------>b .L2588
.L2600:
<------>ldr w1, [x0]
<------>cbnz w1, .L2592
<------>ldr x1, [x0, 16]
<------>ldrh w10, [x1]
<------>cmp w10, w5
<------>beq .L2593
<------>ldr w1, [x1, 4]
<------>cmn w1, #1
<------>beq .L2593
<------>ldr w26, [x4, 3884]
<------>cmn w3, #1
<------>str w1, [x4, 3884]
<------>bne .L2593
<------>ldrh w1, [x8, x9, lsl 1]
<------>cmp w1, w5
<------>bne .L2594
<------>cbz w2, .L2593
.L2594:
<------>cmp w22, w26
<------>csel w3, w3, w26, eq
.L2593:
<------>add x0, x0, 56
<------>b .L2591
.L2592:
<------>adrp x0, .LANCHOR4+1842
<------>ldrh w1, [x20]
<------>strh w1, [x0, #:lo12:.LANCHOR4+1842]
<------>ldrb w0, [x20, 8]
<------>cbnz w0, .L2585
<------>add x0, x19, :lo12:.LANCHOR2
<------>add x1, x0, 1500
<------>ldrh w2, [x1, w24, sxtw 1]
<------>mov w1, 65535
<------>cmp w2, w1
<------>bne .L2596
<------>cmn w3, #1
<------>beq .L2597
<------>str w3, [x0, 3884]
.L2585:
<------>adrp x0, .LANCHOR4
<------>add x1, x0, :lo12:.LANCHOR4
<------>mov w24, w28
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w2, 1
<------>str x0, [x29, 120]
<------>strh w2, [x1, 1844]
.L2603:
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldr x1, [x29, 168]
<------>mov w25, 0
<------>mov w7, 65535
<------>ldrb w6, [x0, 204]
<------>ldrh w0, [x0, 2472]
<------>add x0, x0, 8
<------>add x0, x20, x0, lsl 1
.L2604:
<------>cmp x0, x1
<------>bne .L2607
<------>ldr w2, [x29, 164]
<------>mov w1, w25
<------>ldr x0, [x19, 3584]
<------>bl FlashReadPages
<------>mov w0, 56
<------>umull x0, w25, w0
<------>mov x25, 0
<------>str x0, [x29, 128]
<------>ldr x0, [x29, 120]
<------>add x0, x0, :lo12:.LANCHOR4
<------>str x0, [x29, 152]
<------>adrp x0, .LC150
<------>add x0, x0, :lo12:.LC150
<------>str x0, [x29, 112]
<------>ldr x0, [x29, 152]
<------>add x0, x0, 1856
<------>str x0, [x29, 104]
.L2608:
<------>ldr x0, [x29, 128]
<------>cmp x0, x25
<------>bne .L2633
<------>ldrb w0, [x20, 8]
<------>add w24, w24, 1
<------>and w24, w24, 65535
<------>cmp w0, 1
<------>bne .L2634
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrb w1, [x0, 204]
<------>cbz w1, .L2634
<------>ldrh w0, [x0, 2546]
<------>cmp w0, w24
<------>bne .L2634
<------>cmp w21, w24
<------>beq .L2610
.L2634:
<------>add x0, x23, :lo12:.LANCHOR0
<------>ldrh w1, [x0, 2544]
<------>cmp w1, w24
<------>bne .L2603
<------>ldrh w1, [x0, 2472]
<------>mov w2, 65535
<------>strh w24, [x20, 2]
<------>mov w0, 0
<------>strh wzr, [x20, 4]
.L2635:
<------>cmp w0, w1
<------>beq .L2707
<------>ldr x4, [x29, 168]
<------>ldrh w3, [x4], 2
<------>str x4, [x29, 168]
<------>cmp w3, w2
<------>beq .L2636
<------>strb w0, [x20, 6]
<------>b .L2707
.L2597:
<------>cmp w22, w7
<------>beq .L2598
<------>str w7, [x0, 3884]
<------>b .L2585
.L2598:
<------>ldr w1, [x0, 3884]
.L2716:
<------>sub w1, w1, #1
.L2710:
<------>str w1, [x0, 3884]
<------>b .L2585
.L2596:
<------>cmp w26, w22
<------>beq .L2599
<------>cmn w26, #1
<------>beq .L2585
<------>str w26, [x0, 3884]
<------>b .L2585
.L2599:
<------>ldr w1, [x0, 3884]
<------>cmp w22, w1
<------>bne .L2716
<------>b .L2585
.L2601:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, -1
<------>b .L2710
.L2607:
<------>ldrh w3, [x1]
<------>cmp w3, w7
<------>beq .L2605
<------>mov w2, 56
<------>ldr x4, [x19, 3584]
<------>orr w3, w24, w3, lsl 10
<------>umull x5, w25, w2
<------>add x4, x4, x5
<------>str w3, [x4, 4]
<------>ldrb w2, [x20, 8]
<------>cmp w2, 1
<------>bne .L2606
<------>cbz w6, .L2606
<------>ldr x2, [x19, 3584]
<------>add x2, x2, x5
<------>ldr w3, [x2, 4]
<------>orr w3, w3, -2147483648
<------>str w3, [x2, 4]
.L2606:
<------>add w25, w25, 1
<------>and w25, w25, 65535
.L2605:
<------>add x1, x1, 2
<------>b .L2604
.L2633:
<------>ldr x4, [x19, 3584]
<------>add x4, x4, x25
<------>ldr w5, [x4, 4]
<------>str w5, [x29, 188]
<------>lsr w0, w5, 10
<------>bl P2V_plane
<------>and w0, w0, 65535
<------>cmp w24, w28
<------>bcc .L2609
<------>ldr w1, [x29, 144]
<------>ccmp w1, w0, 0, eq
<------>bhi .L2609
<------>cmp w24, w21
<------>ccmp w27, w0, 0, eq
<------>beq .L2610
<------>ldr w0, [x4]
<------>cmn w0, #1
<------>beq .L2611
<------>ldr x3, [x4, 16]
<------>mov w0, 61589
<------>ldrh w1, [x3]
<------>cmp w1, w0
<------>beq .L2612
<------>ldrh w0, [x20]
.L2712:
<------>bl decrement_vpc_count
<------>b .L2609
.L2612:
<------>ldr w22, [x3, 4]
<------>cmn w22, #1
<------>beq .L2613
<------>ldr w1, [x19, 756]
<------>mov w0, w22
<------>bl ftl_cmp_data_ver
<------>cbz w0, .L2613
<------>add w0, w22, 1
<------>str w0, [x19, 756]
.L2613:
<------>ldp w26, w0, [x3, 8]
<------>add x1, x29, 184
<------>str w0, [x29, 180]
<------>mov w2, 0
<------>mov w0, w26
<------>bl log2phys
<------>ldr w1, [x19, 3884]
<------>ldr w3, [x29, 180]
<------>cmn w1, #1
<------>beq .L2614
<------>mov w0, w22
<------>bl ftl_cmp_data_ver
<------>cbz w0, .L2614
<------>cmn w3, #1
<------>beq .L2615
<------>ldr x0, [x19, 3584]
<------>mov w2, 0
<------>mov w1, 1
<------>add x0, x0, x25
<------>ldr x4, [x0, 16]
<------>str w3, [x0, 4]
<------>str x4, [x29, 136]
<------>ldr x0, [x19, 3584]
<------>add x0, x0, x25
<------>bl FlashReadPages
<------>ldr x0, [x19, 3584]
<------>ldr x4, [x29, 136]
<------>add x3, x0, x25
<------>ldr w0, [x0, x25]
<------>cmn w0, #1
<------>bne .L2616
.L2617:
<------>mov w0, -1
<------>str w0, [x29, 180]
.L2624:
<------>ldr w4, [x29, 180]
<------>cmn w4, #1
<------>beq .L2609
.L2639:
<------>lsr w0, w4, 10
<------>bl P2V_block_in_plane
<------>ldr x3, [x19, 520]
<------>and w1, w0, 65535
<------>ubfiz x2, x1, 1, 16
<------>ldrh w2, [x3, x2]
<------>cbnz w2, .L2712
<------>adrp x0, .LC149
<------>add x0, x0, :lo12:.LC149
<------>bl printk
<------>b .L2609
.L2615:
<------>ldp w1, w0, [x29, 184]
<------>cmp w1, w0
<------>bne .L2609
<------>mov w2, 1
<------>add x1, x29, 180
<------>mov w0, w26
<------>bl log2phys
.L2609:
<------>add x25, x25, 56
<------>b .L2608
.L2616:
<------>ldr w0, [x4, 8]
<------>cmp w26, w0
<------>bne .L2617
<------>ldr w0, [x4, 4]
<------>str w0, [x29, 136]
<------>str x4, [x29, 96]
<------>uxtw x1, w0
<------>ldr w0, [x19, 3884]
<------>bl ftl_cmp_data_ver
<------>cbz w0, .L2617
<------>ldp w0, w1, [x29, 184]
<------>ldr x4, [x29, 96]
<------>cmp w0, w1
<------>ldr w1, [x29, 180]
<------>bne .L2619
.L2711:
<------>mov w0, w26
<------>bl FtlReUsePrevPpa
<------>b .L2617
.L2619:
<------>cmp w0, w1
<------>beq .L2617
<------>cmn w0, #1
<------>beq .L2620
<------>ldr x4, [x3, 16]
<------>mov w2, 0
<------>str w0, [x3, 4]
<------>mov w1, 1
<------>str x4, [x29, 96]
<------>ldr x0, [x19, 3584]
<------>add x0, x0, x25
<------>bl FlashReadPages
<------>ldr x4, [x29, 96]
.L2621:
<------>ldr x0, [x19, 3584]
<------>ldr w0, [x0, x25]
<------>cmn w0, #1
<------>beq .L2622
<------>ldr w3, [x4, 4]
<------>ldr w0, [x19, 3884]
<------>mov w1, w3
<------>bl ftl_cmp_data_ver
<------>cbz w0, .L2622
<------>ldr w0, [x29, 136]
<------>mov w1, w3
<------>bl ftl_cmp_data_ver
<------>cbz w0, .L2617
.L2622:
<------>ldr w1, [x29, 180]
<------>b .L2711
.L2620:
<------>str w0, [x3]
<------>b .L2621
.L2614:
<------>ldp w1, w0, [x29, 184]
<------>cmp w1, w0
<------>beq .L2624
<------>cmn w3, #1
<------>beq .L2626
<------>add x0, x23, :lo12:.LANCHOR0
<------>ubfx x3, x3, 10, 21
<------>ldr w0, [x0, 2488]
<------>cmp w3, w0
<------>bcs .L2609
.L2626:
<------>mov w2, 1
<------>add x1, x29, 188
<------>mov w0, w26
<------>bl log2phys
<------>ldr w4, [x29, 184]
<------>cmn w4, #1
<------>beq .L2624
<------>ldr w0, [x29, 180]
<------>cmp w4, w0
<------>beq .L2639
<------>lsr w0, w4, 10
<------>bl P2V_block_in_plane
<------>ldrh w1, [x19, 560]
<------>and w0, w0, 65535
<------>cmp w1, w0
<------>beq .L2629
<------>ldrh w1, [x19, 608]
<------>cmp w1, w0
<------>beq .L2629
<------>ldrh w1, [x19, 656]
<------>cmp w1, w0
<------>bne .L2624
.L2629:
<------>ldr x0, [x19, 3584]
<------>mov w2, 0
<------>mov w1, 1
<------>str w4, [x0, 4]
<------>ldr x3, [x0, 16]
<------>ldr x0, [x19, 3584]
<------>str x3, [x29, 136]
<------>bl FlashReadPages
<------>ldr x0, [x19, 3584]
<------>ldr w0, [x0]
<------>cmn w0, #1
<------>beq .L2624
<------>ldr x3, [x29, 136]
<------>mov w0, w22
<------>ldr w1, [x3, 4]
<------>bl ftl_cmp_data_ver
<------>cbnz w0, .L2624
<------>mov w2, 1
<------>add x1, x29, 184
<------>mov w0, w26
<------>bl log2phys
<------>b .L2624
.L2611:
<------>ldr x1, [x29, 152]
<------>mov w2, w22
<------>ldrh w0, [x20]
<------>strh w0, [x1, 1842]
<------>mov w1, w5
<------>ldr x0, [x29, 112]
<------>bl printk
<------>ldr x0, [x29, 152]
<------>ldr w0, [x0, 1848]
<------>cmp w0, 31
<------>bhi .L2631
<------>ldr x2, [x29, 104]
<------>ldr w1, [x29, 188]
<------>str w1, [x2, w0, uxtw 2]
<------>add w0, w0, 1
<------>ldr x1, [x29, 152]
<------>str w0, [x1, 1848]
.L2631:
<------>ldrh w0, [x20]
<------>bl decrement_vpc_count
<------>ldr w0, [x19, 3884]
<------>cmn w0, #1
<------>bne .L2632
.L2713:
<------>str w22, [x19, 3884]
<------>b .L2609
.L2632:
<------>cmp w22, w0
<------>bcs .L2609
<------>b .L2713
.L2636:
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>b .L2635
.L2610:
<------>strb w27, [x20, 6]
<------>strh w21, [x20, 2]
<------>b .L2715
<------>.size FtlRecoverySuperblock, .-FtlRecoverySuperblock
<------>.align 2
<------>.global FtlVpcCheckAndModify
<------>.type FtlVpcCheckAndModify, %function
FtlVpcCheckAndModify:
<------>stp x29, x30, [sp, -80]!
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>adrp x0, .LC109
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>add x23, x20, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR0
<------>add x22, x21, :lo12:.LANCHOR0
<------>add x1, x1, 232
<------>add x0, x0, :lo12:.LC109
<------>bl printk
<------>ldr x0, [x23, 3704]
<------>mov w1, 0
<------>ldrh w2, [x22, 2482]
<------>mov w19, 0
<------>lsl w2, w2, 1
<------>bl ftl_memset
.L2718:
<------>ldr w0, [x22, 2616]
<------>cmp w19, w0
<------>bcc .L2720
<------>adrp x22, .LC151
<------>add x23, x21, :lo12:.LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR2
<------>add x22, x22, :lo12:.LC151
<------>mov w19, 0
<------>mov w24, 65535
.L2721:
<------>ldrh w0, [x23, 2480]
<------>cmp w0, w19
<------>bhi .L2724
<------>bl l2p_flush
<------>bl FtlVpcTblFlush
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 80
<------>ret
.L2720:
<------>mov w2, 0
<------>add x1, x29, 76
<------>mov w0, w19
<------>bl log2phys
<------>ldr w0, [x29, 76]
<------>cmn w0, #1
<------>beq .L2719
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>ldr x2, [x23, 3704]
<------>ubfiz x0, x0, 1, 16
<------>ldrh w1, [x2, x0]
<------>add w1, w1, 1
<------>strh w1, [x2, x0]
.L2719:
<------>add w19, w19, 1
<------>b .L2718
.L2724:
<------>ldr x0, [x20, 520]
<------>ubfiz x21, x19, 1, 16
<------>ldrh w2, [x0, x21]
<------>ldr x0, [x20, 3704]
<------>ldrh w3, [x0, x21]
<------>cmp w2, w3
<------>beq .L2722
<------>cmp w2, w24
<------>beq .L2722
<------>ldrh w0, [x20, 560]
<------>cmp w0, w19
<------>beq .L2722
<------>ldrh w0, [x20, 656]
<------>cmp w0, w19
<------>beq .L2722
<------>ldrh w0, [x20, 608]
<------>cmp w0, w19
<------>beq .L2722
<------>mov w1, w19
<------>mov x0, x22
<------>bl printk
<------>ldr x0, [x20, 520]
<------>ldrh w1, [x0, x21]
<------>cbnz w1, .L2723
<------>ldr x1, [x20, 3704]
<------>ldrh w1, [x1, x21]
<------>strh w1, [x0, x21]
.L2722:
<------>add w19, w19, 1
<------>and w19, w19, 65535
<------>b .L2721
.L2723:
<------>ldr x1, [x20, 3704]
<------>ldrh w1, [x1, x21]
<------>strh w1, [x0, x21]
<------>mov w0, w19
<------>bl update_vpc_list
<------>b .L2722
<------>.size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
<------>.align 2
<------>.global FtlGcScanTempBlk
<------>.type FtlGcScanTempBlk, %function
FtlGcScanTempBlk:
<------>stp x29, x30, [sp, -208]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x0
<------>adrp x0, .LANCHOR1
<------>stp x21, x22, [sp, 32]
<------>str w1, [x29, 132]
<------>add x1, x0, :lo12:.LANCHOR1
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>str x0, [x29, 120]
<------>ldrh w28, [x1, 3456]
<------>mov w1, 65535
<------>cmp w28, w1
<------>beq .L2760
<------>cbnz w28, .L2730
.L2731:
<------>bl FtlGcPageVarInit
<------>b .L2732
.L2760:
<------>mov w28, 0
.L2730:
<------>adrp x0, .LANCHOR0+2544
<------>ldr w1, [x29, 132]
<------>ldrh w0, [x0, #:lo12:.LANCHOR0+2544]
<------>cmp w0, w1
<------>beq .L2731
.L2732:
<------>adrp x25, .LANCHOR2
<------>mov x21, x25
<------>add x26, x25, :lo12:.LANCHOR2
<------>mov w0, -1
<------>mov w24, 0
<------>str w0, [x29, 136]
.L2733:
<------>ldrh w0, [x19]
<------>mov w23, 65535
<------>strb wzr, [x19, 8]
<------>cmp w0, w23
<------>beq .L2761
.L2757:
<------>adrp x20, .LANCHOR0
<------>add x0, x20, :lo12:.LANCHOR0
<------>add x2, x19, 16
<------>add x4, x25, :lo12:.LANCHOR2
<------>mov w22, 0
<------>mov w10, 56
<------>ldrh w8, [x0, 2554]
<------>mov w7, 4
<------>ldrh w9, [x0, 2556]
<------>ldrh w0, [x0, 2472]
<------>add x0, x0, 8
<------>add x0, x19, x0, lsl 1
.L2735:
<------>cmp x2, x0
<------>bne .L2737
<------>add x0, x25, :lo12:.LANCHOR2
<------>mov w1, w22
<------>mov w2, 0
<------>add x27, x20, :lo12:.LANCHOR0
<------>ldr x0, [x0, 3584]
<------>bl FlashReadPages
<------>mov w0, 56
<------>umull x0, w22, w0
<------>mov x22, 0
<------>str x0, [x29, 112]
.L2738:
<------>ldr x0, [x29, 112]
<------>cmp x0, x22
<------>bne .L2755
<------>ldr w0, [x29, 132]
<------>add w3, w28, 1
<------>add w24, w24, 1
<------>and w28, w3, 65535
<------>cmp w0, w24
<------>bls .L2756
.L2758:
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldrh w0, [x20, 2544]
<------>cmp w0, w28
<------>bhi .L2757
.L2761:
<------>mov w2, 0
<------>b .L2734
.L2737:
<------>ldrh w1, [x2]
<------>cmp w1, w23
<------>beq .L2736
<------>umull x11, w22, w10
<------>ldr x6, [x4, 3584]
<------>orr w1, w28, w1, lsl 10
<------>add x6, x6, x11
<------>str w1, [x6, 4]
<------>mul w1, w22, w8
<------>ldr x5, [x4, 3584]
<------>ldr x6, [x4, 1392]
<------>sdiv w1, w1, w7
<------>add x5, x5, x11
<------>add x1, x6, w1, sxtw 2
<------>str x1, [x5, 8]
<------>mul w1, w22, w9
<------>ldr x6, [x4, 1400]
<------>add w22, w22, 1
<------>and w22, w22, 65535
<------>sdiv w1, w1, w7
<------>add x1, x6, w1, sxtw 2
<------>str x1, [x5, 16]
.L2736:
<------>add x2, x2, 2
<------>b .L2735
.L2755:
<------>ldr x5, [x26, 3584]
<------>add x4, x5, x22
<------>ldr w0, [x4, 4]
<------>str w0, [x29, 140]
<------>uxtw x1, w0
<------>lsr w0, w1, 10
<------>bl P2V_plane
<------>and w2, w0, 65535
<------>ldr w0, [x5, x22]
<------>ldr x4, [x4, 16]
<------>cbnz w0, .L2739
<------>ldrh w0, [x4]
<------>cmp w0, w23
<------>bne .L2740
.L2743:
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 204]
<------>cbz w0, .L2777
<------>add x21, x21, :lo12:.LANCHOR2
<------>mov w0, 1
<------>str w0, [x21, 3880]
.L2734:
<------>ldr x0, [x29, 120]
<------>mov w1, -1
<------>strh w28, [x19, 2]
<------>add x0, x0, :lo12:.LANCHOR1
<------>strb w2, [x19, 6]
<------>strh w1, [x0, 3456]
<------>mov w1, w28
<------>mov x0, x19
<------>bl ftl_sb_update_avl_pages
<------>b .L2729
.L2740:
<------>ldr w0, [x4, 8]
<------>ldr w1, [x27, 2616]
<------>cmp w0, w1
<------>bhi .L2743
<------>ldrb w1, [x27, 72]
<------>cbnz w1, .L2746
.L2747:
<------>ldp w2, w0, [x4, 8]
<------>add x22, x22, 56
<------>ldr w1, [x29, 140]
<------>bl FtlGcUpdatePage
<------>b .L2738
.L2746:
<------>add x1, x29, 148
<------>str x4, [x29, 104]
<------>mov w2, 0
<------>bl log2phys
<------>ldr x4, [x29, 104]
<------>ldr w1, [x29, 148]
<------>ldr w0, [x4, 12]
<------>cmp w0, w1
<------>bne .L2747
<------>cmn w0, #1
<------>beq .L2747
<------>str w0, [x29, 156]
<------>mov w2, 0
<------>ldr x0, [x26, 3648]
<------>mov w1, 1
<------>str x0, [x29, 160]
<------>ldr x0, [x26, 3664]
<------>str x0, [x29, 168]
<------>add x0, x29, 152
<------>bl FlashReadPages
<------>ldrh w1, [x27, 2550]
<------>mov x0, 0
<------>ldr x2, [x26, 3584]
<------>ldr x4, [x29, 104]
<------>ldr x5, [x29, 160]
<------>ubfiz x1, x1, 9, 16
<------>add x2, x2, x22
.L2748:
<------>cmp x0, x1
<------>beq .L2747
<------>ldr x6, [x2, 8]
<------>ldr w7, [x6, x0]
<------>add x0, x0, 4
<------>add x6, x5, x0
<------>ldr w6, [x6, -4]
<------>cmp w7, w6
<------>beq .L2748
<------>ldrh w1, [x19]
<------>adrp x0, .LC152
<------>ldr w2, [x29, 156]
<------>add x0, x0, :lo12:.LC152
<------>bl printk
.L2777:
<------>add x13, x21, :lo12:.LANCHOR2
<------>ldrh w1, [x19]
<------>ldr x0, [x13, 520]
<------>strh wzr, [x0, x1, lsl 1]
<------>ldrh w0, [x19]
<------>bl INSERT_FREE_LIST
<------>mov w0, -1
<------>strh w0, [x19]
<------>strh w0, [x13, 800]
.L2776:
<------>bl FtlGcPageVarInit
<------>mov w28, 0
<------>b .L2733
.L2739:
<------>ldrh w1, [x19]
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldr w2, [x29, 140]
<------>adrp x0, .LC153
<------>add x0, x0, :lo12:.LC153
<------>bl printk
<------>ldr w1, [x20, 2372]
<------>ldrh w0, [x19]
<------>cbnz w1, .L2751
<------>ldrb w1, [x20, 204]
<------>cbz w1, .L2752
.L2751:
<------>add x2, x21, :lo12:.LANCHOR2
<------>ubfiz x1, x0, 1, 16
<------>ldr x2, [x2, 440]
<------>ldrh w1, [x2, x1]
<------>cmp w1, 159
<------>bls .L2753
.L2752:
<------>add x1, x21, :lo12:.LANCHOR2
<------>ldr x1, [x1, 3584]
<------>ldr w1, [x1, x22]
<------>cmn w1, #1
<------>bne .L2754
.L2753:
<------>add x1, x21, :lo12:.LANCHOR2
<------>ldr x1, [x1, 3584]
<------>add x22, x1, x22
<------>ldr w1, [x22, 4]
<------>str w1, [x29, 136]
.L2754:
<------>add x1, x21, :lo12:.LANCHOR2
<------>ubfiz x0, x0, 1, 16
<------>ldr x1, [x1, 520]
<------>strh wzr, [x1, x0]
<------>ldrh w0, [x19]
<------>bl INSERT_FREE_LIST
<------>mov w0, -1
<------>strh w0, [x19]
<------>b .L2776
.L2756:
<------>ldr x0, [x29, 120]
<------>add x1, x0, :lo12:.LANCHOR1
<------>ldrh w0, [x1, 3456]
<------>cmp w0, w23
<------>beq .L2758
<------>add w0, w0, w24
<------>strh w0, [x1, 3456]
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2544]
<------>cmp w0, w28
<------>bls .L2758
.L2729:
<------>ldr w0, [x29, 136]
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 208
<------>ret
<------>.size FtlGcScanTempBlk, .-FtlGcScanTempBlk
<------>.align 2
<------>.global FtlReadRefresh
<------>.type FtlReadRefresh, %function
FtlReadRefresh:
<------>adrp x1, .LANCHOR2
<------>add x0, x1, :lo12:.LANCHOR2
<------>add x2, x0, 848
<------>ldr w3, [x2, 80]
<------>cbz w3, .L2779
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>ldr w4, [x2, 84]
<------>ldr w3, [x1, 2616]
<------>cmp w4, w3
<------>bcs .L2780
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x0
<------>mov x20, x1
<------>stp x21, x22, [sp, 32]
<------>mov w21, 2048
.L2785:
<------>add x22, x19, 848
<------>ldr w1, [x20, 2616]
<------>ldr w0, [x22, 84]
<------>cmp w0, w1
<------>bcc .L2781
.L2784:
<------>ldp x19, x20, [sp, 16]
<------>mov w0, -1
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 112
<------>ret
.L2781:
<------>add x1, x29, 52
<------>mov w2, 0
<------>bl log2phys
<------>ldr w0, [x22, 84]
<------>ldr w1, [x29, 52]
<------>add w0, w0, 1
<------>str w0, [x22, 84]
<------>cmn w1, #1
<------>beq .L2783
<------>str w0, [x29, 80]
<------>add x0, x29, 112
<------>str w1, [x29, 60]
<------>mov w2, 0
<------>stp xzr, xzr, [x29, 64]
<------>mov w1, 1
<------>str wzr, [x0, -56]!
<------>bl FlashReadPages
<------>ldr w0, [x29, 56]
<------>cmp w0, 256
<------>bne .L2784
<------>ldr w0, [x29, 52]
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>bl FtlGcRefreshBlock
<------>b .L2784
.L2783:
<------>subs w21, w21, #1
<------>bne .L2785
<------>b .L2784
.L2780:
<------>ldr w0, [x0, 720]
<------>stp w0, wzr, [x2, 76]
<------>str wzr, [x2, 84]
.L2792:
<------>mov w0, 0
<------>ret
.L2779:
<------>ldr w4, [x0, 772]
<------>mov w3, 10000
<------>ldr w5, [x0, 720]
<------>mov w6, 31
<------>cmp w4, w3
<------>ldr w7, [x2, 76]
<------>mov w3, 63
<------>csel w6, w6, w3, hi
<------>add w3, w5, 1048576
<------>cmp w7, w3
<------>bhi .L2789
<------>adrp x3, .LANCHOR0+2616
<------>mov w8, 1000
<------>lsr w4, w4, 10
<------>ldr w3, [x3, #:lo12:.LANCHOR0+2616]
<------>add w4, w4, 1
<------>mul w3, w3, w8
<------>udiv w3, w3, w4
<------>add w3, w3, w7
<------>cmp w5, w3
<------>bhi .L2789
<------>ldrh w0, [x0, 484]
<------>tst w6, w0
<------>bne .L2792
<------>ldr w2, [x2, 100]
<------>cmp w0, w2
<------>beq .L2792
.L2789:
<------>add x0, x1, :lo12:.LANCHOR2
<------>add x1, x0, 848
<------>ldrh w0, [x0, 484]
<------>str w0, [x1, 100]
<------>str w5, [x1, 76]
<------>mov w0, 1
<------>str wzr, [x1, 84]
<------>str w0, [x1, 80]
<------>b .L2792
<------>.size FtlReadRefresh, .-FtlReadRefresh
<------>.align 2
<------>.global FtlGcFreeTempBlock
<------>.type FtlGcFreeTempBlock, %function
FtlGcFreeTempBlock:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x2, x19, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>adrp x21, .LANCHOR0
<------>stp x25, x26, [sp, 64]
<------>add x1, x21, :lo12:.LANCHOR0
<------>str x27, [sp, 80]
<------>ldr w3, [x2, 424]
<------>ldrh w1, [x1, 2544]
<------>cbz w3, .L2799
.L2836:
<------>mov w0, 0
.L2798:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldr x27, [sp, 80]
<------>ldp x29, x30, [sp], 112
<------>ret
.L2799:
<------>ldrh w20, [x2, 656]
<------>mov w3, 65535
<------>cmp w20, w3
<------>bne .L2801
.L2810:
<------>add x20, x19, :lo12:.LANCHOR2
<------>mov w0, 65535
<------>add x22, x20, 656
<------>ldrh w1, [x20, 656]
<------>str wzr, [x20, 3880]
<------>cmp w1, w0
<------>beq .L2836
<------>add x23, x21, :lo12:.LANCHOR0
<------>bl FtlCacheWriteBack
<------>ldrb w0, [x22, 7]
<------>mov w26, 12
<------>ldr x1, [x20, 520]
<------>mov w22, 0
<------>ldrh w3, [x23, 2544]
<------>ldrh w2, [x20, 656]
<------>mul w0, w0, w3
<------>strh w0, [x1, x2, lsl 1]
<------>ldr w1, [x20, 740]
<------>ldrh w0, [x20, 1432]
<------>add w0, w0, w1
<------>str w0, [x20, 740]
.L2811:
<------>ldrh w0, [x20, 1432]
<------>cmp w0, w22
<------>bhi .L2815
<------>mov w0, -1
<------>bl decrement_vpc_count
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 204]
<------>cbz w0, .L2816
<------>ldrh w1, [x20, 656]
<------>adrp x0, .LC154
<------>add x0, x0, :lo12:.LC154
<------>bl printk
.L2816:
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x1, 656]
<------>ldr x1, [x1, 520]
<------>ubfiz x2, x0, 1, 16
<------>ldrh w1, [x1, x2]
<------>cbz w1, .L2817
<------>bl INSERT_DATA_LIST
.L2818:
<------>add x20, x19, :lo12:.LANCHOR2
<------>mov w22, -1
<------>strh wzr, [x20, 1432]
<------>strh w22, [x20, 656]
<------>strh wzr, [x20, 1420]
<------>bl l2p_flush
<------>bl FtlVpcTblFlush
<------>strh w22, [x20, 800]
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldr w0, [x0, 2372]
<------>cbz w0, .L2819
<------>ldr w0, [x20, 776]
<------>cmp w0, 39
<------>bhi .L2819
<------>ldrh w0, [x20, 780]
<------>ldrh w1, [x20, 552]
<------>cmp w1, w0
<------>bcs .L2836
<------>ubfiz w0, w0, 1, 15
<------>strh w0, [x20, 1364]
<------>b .L2836
.L2801:
<------>cbz w0, .L2804
<------>adrp x0, .LANCHOR1
<------>add x0, x0, :lo12:.LANCHOR1
<------>ldrh w4, [x0, 3456]
<------>cmp w4, w3
<------>beq .L2805
.L2806:
<------>mov w1, 2
.L2804:
<------>add x22, x19, :lo12:.LANCHOR2
<------>add x0, x22, 656
<------>bl FtlGcScanTempBlk
<------>str w0, [x29, 108]
<------>cmn w0, #1
<------>beq .L2807
<------>ldr x1, [x22, 440]
<------>ubfiz x20, x20, 1, 16
<------>ldrh w0, [x1, x20]
<------>cmp w0, 4
<------>bls .L2808
<------>sub w0, w0, #5
<------>strh w0, [x1, x20]
<------>mov w0, 1
<------>bl FtlEctTblFlush
.L2808:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldr w1, [x0, 3880]
<------>cbnz w1, .L2809
<------>ldr w1, [x0, 944]
<------>add w1, w1, 1
<------>str w1, [x0, 944]
<------>ldr w0, [x29, 108]
<------>lsr w0, w0, 10
<------>bl FtlBbmMapBadBlock
<------>bl FtlBbmTblFlush
.L2809:
<------>add x19, x19, :lo12:.LANCHOR2
<------>str wzr, [x19, 3880]
.L2821:
<------>mov w0, 1
<------>b .L2798
.L2805:
<------>strh wzr, [x0, 3456]
<------>ldrh w0, [x2, 552]
<------>cmp w0, 17
<------>bhi .L2806
<------>b .L2804
.L2807:
<------>adrp x0, .LANCHOR1+3456
<------>ldrh w1, [x0, #:lo12:.LANCHOR1+3456]
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L2821
<------>b .L2810
.L2815:
<------>umull x25, w22, w26
<------>ldr x27, [x20, 1440]
<------>ldr w1, [x23, 2616]
<------>add x24, x27, x25
<------>ldr w0, [x24, 8]
<------>cmp w0, w1
<------>bcc .L2812
.L2833:
<------>ldrh w0, [x20, 656]
<------>b .L2834
.L2812:
<------>add x1, x29, 108
<------>mov w2, 0
<------>bl log2phys
<------>ldr w0, [x27, x25]
<------>ldr w1, [x29, 108]
<------>cmp w0, w1
<------>bne .L2814
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>mov w25, w0
<------>ldr w0, [x24, 8]
<------>mov w2, 1
<------>add x1, x24, 4
<------>bl log2phys
<------>mov w0, w25
.L2834:
<------>bl decrement_vpc_count
<------>b .L2813
.L2814:
<------>ldr w0, [x24, 4]
<------>cmp w1, w0
<------>bne .L2833
.L2813:
<------>add w22, w22, 1
<------>and w22, w22, 65535
<------>b .L2811
.L2817:
<------>bl INSERT_FREE_LIST
<------>b .L2818
.L2819:
<------>add x19, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x19, 780]
<------>ldrh w1, [x19, 552]
<------>add w2, w0, w0, lsl 1
<------>cmp w1, w2, lsr 2
<------>ble .L2836
<------>add x21, x21, :lo12:.LANCHOR0
<------>ldrb w1, [x21, 204]
<------>cbz w1, .L2820
<------>sub w0, w0, #2
.L2835:
<------>strh w0, [x19, 1364]
<------>b .L2836
.L2820:
<------>mov w0, 20
<------>b .L2835
<------>.size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
<------>.align 2
<------>.global FtlGcPageRecovery
<------>.type FtlGcPageRecovery, %function
FtlGcPageRecovery:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR0
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>str x21, [sp, 32]
<------>add x21, x19, 656
<------>ldrh w1, [x20, 2544]
<------>mov x0, x21
<------>bl FtlGcScanTempBlk
<------>ldrh w1, [x19, 658]
<------>ldrh w0, [x20, 2544]
<------>cmp w1, w0
<------>bcc .L2837
<------>add x0, x19, 3792
<------>bl FtlMapBlkWriteDumpData
<------>mov w0, 0
<------>bl FtlGcFreeTempBlock
<------>str wzr, [x19, 3880]
.L2837:
<------>ldp x19, x20, [sp, 16]
<------>ldr x21, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FtlGcPageRecovery, .-FtlGcPageRecovery
<------>.align 2
<------>.global FtlPowerLostRecovery
<------>.type FtlPowerLostRecovery, %function
FtlPowerLostRecovery:
<------>stp x29, x30, [sp, -32]!
<------>adrp x0, .LANCHOR4+1848
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>str wzr, [x0, #:lo12:.LANCHOR4+1848]
<------>add x20, x19, 560
<------>add x19, x19, 608
<------>mov x0, x20
<------>bl FtlRecoverySuperblock
<------>mov x0, x20
<------>bl FtlSlcSuperblockCheck
<------>mov x0, x19
<------>bl FtlRecoverySuperblock
<------>mov x0, x19
<------>bl FtlSlcSuperblockCheck
<------>bl FtlGcPageRecovery
<------>mov w0, -1
<------>bl decrement_vpc_count
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size FtlPowerLostRecovery, .-FtlPowerLostRecovery
<------>.align 2
<------>.global FtlSysBlkInit
<------>.type FtlSysBlkInit, %function
FtlSysBlkInit:
<------>stp x29, x30, [sp, -64]!
<------>mov w1, -1
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR0
<------>stp x23, x24, [sp, 48]
<------>add x24, x20, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR4
<------>add x0, x21, :lo12:.LANCHOR4
<------>adrp x19, .LANCHOR2
<------>add x23, x19, :lo12:.LANCHOR2
<------>strh w1, [x0, 1842]
<------>strh wzr, [x0, 1844]
<------>ldrh w0, [x24, 2476]
<------>bl FtlFreeSysBlkQueueInit
<------>bl FtlScanSysBlk
<------>ldrh w1, [x23, 784]
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L2843
.L2845:
<------>mov w22, -1
.L2842:
<------>mov w0, w22
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
.L2843:
<------>bl FtlLoadSysInfo
<------>mov w22, w0
<------>cbnz w0, .L2845
<------>bl FtlLoadMapInfo
<------>bl FtlLoadVonderInfo
<------>bl Ftl_load_ext_data
<------>bl FtlLoadEctTbl
<------>bl FtlFreeSysBLkSort
<------>bl SupperBlkListInit
<------>bl FtlPowerLostRecovery
<------>mov w0, 1
<------>bl FtlUpdateVaildLpn
<------>ldr x1, [x23, 704]
<------>mov w0, 0
<------>ldrh w3, [x24, 2582]
<------>add x1, x1, 4
.L2846:
<------>cmp w0, w3
<------>bge .L2851
<------>ldr w2, [x1], 16
<------>tbz w2, #31, .L2847
.L2851:
<------>add x1, x19, :lo12:.LANCHOR2
<------>cmp w0, w3
<------>ldrh w2, [x1, 484]
<------>add w2, w2, 1
<------>strh w2, [x1, 484]
<------>bge .L2858
.L2848:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w2, [x0, 560]
<------>ldr x4, [x0, 520]
<------>ldrh w5, [x0, 564]
<------>lsl x2, x2, 1
<------>ldrh w3, [x4, x2]
<------>sub w3, w3, w5
<------>strh w3, [x4, x2]
<------>add x4, x20, :lo12:.LANCHOR0
<------>strb wzr, [x0, 566]
<------>ldr x5, [x0, 520]
<------>strh wzr, [x0, 564]
<------>ldrh w2, [x4, 2544]
<------>strh w2, [x0, 562]
<------>ldrh w2, [x0, 608]
<------>ldrh w6, [x0, 612]
<------>lsl x2, x2, 1
<------>ldrh w3, [x5, x2]
<------>sub w3, w3, w6
<------>strh w3, [x5, x2]
<------>strb wzr, [x0, 614]
<------>ldrh w1, [x0, 486]
<------>ldrh w2, [x4, 2544]
<------>add w1, w1, 1
<------>strh w2, [x0, 610]
<------>strh w1, [x0, 486]
<------>strh wzr, [x0, 612]
<------>bl l2p_flush
<------>bl FtlVpcTblFlush
<------>bl FtlVpcTblFlush
<------>b .L2852
.L2847:
<------>add w0, w0, 1
<------>b .L2846
.L2858:
<------>add x21, x21, :lo12:.LANCHOR4
<------>ldrh w0, [x21, 1844]
<------>cbnz w0, .L2848
.L2852:
<------>add x21, x19, :lo12:.LANCHOR2
<------>mov w1, 65535
<------>add x24, x21, 560
<------>ldrh w0, [x21, 560]
<------>cmp w0, w1
<------>beq .L2853
<------>ldrh w1, [x21, 564]
<------>cbnz w1, .L2853
<------>ldrh w1, [x21, 612]
<------>add x23, x21, 608
<------>cbnz w1, .L2853
<------>bl FtlGcRefreshOpenBlock
<------>ldrh w0, [x21, 608]
<------>bl FtlGcRefreshOpenBlock
<------>bl FtlVpcTblFlush
<------>mov x0, x24
<------>bl allocate_new_data_superblock
<------>mov x0, x23
<------>bl allocate_new_data_superblock
.L2853:
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 72]
<------>cbnz w0, .L2854
<------>add x19, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x19, 484]
<------>tst x0, 31
<------>bne .L2842
.L2854:
<------>bl FtlVpcCheckAndModify
<------>b .L2842
<------>.size FtlSysBlkInit, .-FtlSysBlkInit
<------>.align 2
<------>.global FtlLowFormat
<------>.type FtlLowFormat, %function
FtlLowFormat:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>add x21, x19, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>ldr w0, [x21, 424]
<------>cbnz w0, .L2862
<------>adrp x20, .LANCHOR0
<------>add x22, x20, :lo12:.LANCHOR0
<------>ldr x0, [x21, 3760]
<------>mov w1, 0
<------>ldrh w2, [x22, 2580]
<------>lsl w2, w2, 2
<------>bl ftl_memset
<------>ldr x0, [x21, 3752]
<------>mov w1, 0
<------>ldrh w2, [x22, 2580]
<------>lsl w2, w2, 2
<------>bl ftl_memset
<------>ldrh w0, [x22, 2476]
<------>str wzr, [x21, 752]
<------>str wzr, [x21, 756]
<------>bl FtlFreeSysBlkQueueInit
<------>bl FtlLoadBbt
<------>cbz w0, .L2863
<------>bl FtlMakeBbt
.L2863:
<------>mov w5, 23752
<------>add x2, x20, :lo12:.LANCHOR0
<------>add x3, x19, :lo12:.LANCHOR2
<------>mov w0, 0
<------>movk w5, 0xa0f, lsl 16
.L2864:
<------>ldrh w1, [x2, 2550]
<------>cmp w0, w1, lsl 7
<------>blt .L2865
<------>ldrh w22, [x2, 2480]
<------>add x23, x20, :lo12:.LANCHOR0
<------>mov w21, 0
.L2866:
<------>ldrh w0, [x23, 2482]
<------>cmp w0, w22
<------>bhi .L2867
<------>ldrh w0, [x23, 2472]
<------>sub w1, w21, #3
<------>cmp w1, w0, lsl 1
<------>blt .L2868
<------>udiv w0, w21, w0
<------>ldr w21, [x23, 2576]
<------>add w0, w0, w21
<------>bl FtlSysBlkNumInit
<------>ldrh w0, [x23, 2476]
<------>mov w21, 0
<------>bl FtlFreeSysBlkQueueInit
<------>ldrh w22, [x23, 2480]
<------>add x23, x20, :lo12:.LANCHOR0
.L2869:
<------>ldrh w0, [x23, 2482]
<------>cmp w0, w22
<------>bhi .L2870
.L2868:
<------>add x23, x20, :lo12:.LANCHOR0
<------>mov w22, 0
<------>mov w24, 0
.L2871:
<------>ldrh w0, [x23, 2480]
<------>cmp w0, w24
<------>bhi .L2872
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x23, 2482]
<------>ldr w2, [x23, 2484]
<------>str w0, [x1, 3572]
<------>ldrh w0, [x23, 2472]
<------>udiv w4, w2, w0
<------>ubfx x3, x4, 5, 16
<------>str w4, [x23, 2616]
<------>add w5, w3, 36
<------>strh w5, [x1, 780]
<------>mov w5, 24
<------>mul w5, w0, w5
<------>cmp w22, w5
<------>ble .L2873
<------>sub w2, w2, w22
<------>udiv w2, w2, w0
<------>str w2, [x23, 2616]
<------>lsr w2, w2, 5
<------>add w2, w2, 24
<------>strh w2, [x1, 780]
.L2873:
<------>add x1, x20, :lo12:.LANCHOR0
<------>ldr w1, [x1, 2372]
<------>cmp w1, 1
<------>bne .L2874
<------>udiv w2, w22, w0
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w5, [x1, 780]
<------>add w2, w2, w5
<------>add w2, w5, w2, asr 2
<------>strh w2, [x1, 780]
.L2874:
<------>add x1, x20, :lo12:.LANCHOR0
<------>ldrb w1, [x1, 204]
<------>cbz w1, .L2875
<------>udiv w2, w22, w0
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w5, [x1, 780]
<------>add w2, w2, w5
<------>add w2, w5, w2, asr 2
<------>strh w2, [x1, 780]
.L2875:
<------>add x6, x20, :lo12:.LANCHOR0
<------>ldrh w1, [x6, 2538]
<------>cbz w1, .L2877
<------>add x2, x19, :lo12:.LANCHOR2
<------>ldrh w5, [x2, 780]
<------>add w5, w5, w1, lsr 1
<------>strh w5, [x2, 780]
<------>mul w5, w1, w0
<------>cmp w22, w5
<------>bge .L2877
<------>add w1, w1, 32
<------>str w4, [x6, 2616]
<------>add w1, w3, w1
<------>strh w1, [x2, 780]
.L2877:
<------>add x24, x20, :lo12:.LANCHOR0
<------>add x1, x19, :lo12:.LANCHOR2
<------>adrp x23, .LANCHOR4
<------>ldrh w2, [x1, 780]
<------>ldr w1, [x24, 2616]
<------>sub w1, w1, w2
<------>mul w0, w1, w0
<------>add x1, x23, :lo12:.LANCHOR4
<------>str w0, [x1, 1768]
<------>ldrh w1, [x24, 2544]
<------>mul w0, w1, w0
<------>ldrh w1, [x24, 2550]
<------>str w0, [x24, 2616]
<------>mul w0, w1, w0
<------>str w0, [x24, 2584]
<------>bl FtlBbmTblFlush
<------>ldrh w0, [x24, 2558]
<------>add w1, w21, w22
<------>ldr w2, [x24, 2488]
<------>add w0, w0, w2, lsr 3
<------>cmp w1, w0
<------>bls .L2879
<------>adrp x0, .LC155
<------>lsr w2, w2, 5
<------>add x0, x0, :lo12:.LC155
<------>bl printk
.L2879:
<------>add x22, x20, :lo12:.LANCHOR0
<------>add x20, x19, :lo12:.LANCHOR2
<------>add x21, x20, 560
<------>mov w1, 0
<------>mov w24, -1
<------>ldr x0, [x20, 520]
<------>ldrh w2, [x22, 2482]
<------>lsl w2, w2, 1
<------>bl ftl_memset
<------>mov w0, 1
<------>strb w0, [x21, 8]
<------>ldr x0, [x22, 64]
<------>mov w1, 255
<------>ldrh w2, [x22, 2480]
<------>strh w24, [x20, 800]
<------>strh wzr, [x20, 802]
<------>strb wzr, [x20, 806]
<------>lsr w2, w2, 3
<------>strb wzr, [x20, 808]
<------>strh wzr, [x21, 2]
<------>strb wzr, [x21, 6]
<------>strh wzr, [x20, 560]
<------>str wzr, [x20, 716]
<------>bl ftl_memset
.L2880:
<------>mov x0, x21
<------>bl make_superblock
<------>ldrb w1, [x21, 7]
<------>ldrh w0, [x21]
<------>cbnz w1, .L2881
<------>ldr x1, [x20, 520]
<------>ubfiz x0, x0, 1, 16
<------>strh w24, [x1, x0]
<------>ldrh w0, [x21]
<------>add w0, w0, 1
<------>strh w0, [x21]
<------>b .L2880
.L2865:
<------>ldr x6, [x3, 3640]
<------>ubfiz x4, x0, 2, 16
<------>mvn w1, w0
<------>orr w1, w0, w1, lsl 16
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>str w1, [x6, x4]
<------>ldr x1, [x3, 3648]
<------>str w5, [x1, x4]
<------>b .L2864
.L2867:
<------>mov w0, w22
<------>mov w1, 1
<------>add w22, w22, 1
<------>bl FtlLowFormatEraseBlock
<------>add w21, w21, w0
<------>and w22, w22, 65535
<------>and w21, w21, 65535
<------>b .L2866
.L2870:
<------>mov w0, w22
<------>mov w1, 1
<------>add w22, w22, 1
<------>bl FtlLowFormatEraseBlock
<------>add w21, w21, w0
<------>and w22, w22, 65535
<------>and w21, w21, 65535
<------>b .L2869
.L2872:
<------>mov w0, w24
<------>mov w1, 0
<------>add w24, w24, 1
<------>bl FtlLowFormatEraseBlock
<------>add w22, w22, w0
<------>and w24, w24, 65535
<------>and w22, w22, 65535
<------>b .L2871
.L2881:
<------>ldr w1, [x20, 752]
<------>ubfiz x0, x0, 1, 16
<------>str w1, [x21, 12]
<------>add x19, x19, :lo12:.LANCHOR2
<------>add w1, w1, 1
<------>str w1, [x20, 752]
<------>ldr x1, [x20, 520]
<------>mov w13, -1
<------>ldrh w2, [x21, 4]
<------>strh w2, [x1, x0]
<------>add x0, x20, 608
<------>mov x12, x0
<------>strh wzr, [x20, 610]
<------>ldrh w1, [x21]
<------>strb wzr, [x20, 614]
<------>add w1, w1, 1
<------>strh w1, [x20, 608]
<------>mov w1, 1
<------>strb w1, [x20, 616]
.L2882:
<------>mov x0, x12
<------>bl make_superblock
<------>ldrb w1, [x12, 7]
<------>ldrh w0, [x12]
<------>cbnz w1, .L2883
<------>ldr x1, [x19, 520]
<------>ubfiz x0, x0, 1, 16
<------>strh w13, [x1, x0]
<------>ldrh w0, [x12]
<------>add w0, w0, 1
<------>strh w0, [x12]
<------>b .L2882
.L2883:
<------>ldr w1, [x19, 752]
<------>ubfiz x0, x0, 1, 16
<------>str w1, [x12, 12]
<------>add x23, x23, :lo12:.LANCHOR4
<------>add w1, w1, 1
<------>str w1, [x19, 752]
<------>ldr x1, [x19, 520]
<------>mov w20, -1
<------>ldrh w2, [x12, 4]
<------>strh w2, [x1, x0]
<------>strh w20, [x19, 656]
<------>bl FtlFreeSysBlkQueueOut
<------>strh w0, [x19, 784]
<------>ldr w0, [x23, 1768]
<------>strh w0, [x19, 790]
<------>ldr w0, [x19, 752]
<------>str w0, [x19, 792]
<------>add w0, w0, 1
<------>strh wzr, [x19, 786]
<------>strh w20, [x19, 788]
<------>str w0, [x19, 752]
<------>bl FtlVpcTblFlush
<------>bl FtlSysBlkInit
<------>cbnz w0, .L2862
<------>adrp x0, .LANCHOR1+504
<------>mov w1, 1
<------>str w1, [x0, #:lo12:.LANCHOR1+504]
.L2862:
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 64
<------>ret
<------>.size FtlLowFormat, .-FtlLowFormat
<------>.align 2
<------>.global FtlReInitForSDUpdata
<------>.type FtlReInitForSDUpdata, %function
FtlReInitForSDUpdata:
<------>stp x29, x30, [sp, -64]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR0
<------>add x0, x19, :lo12:.LANCHOR0
<------>str x21, [sp, 32]
<------>ldrb w0, [x0, 204]
<------>cbz w0, .L2893
.L2895:
<------>mov w21, 0
.L2892:
<------>mov w0, w21
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 64
<------>ret
.L2893:
<------>adrp x20, .LANCHOR4
<------>add x0, x20, :lo12:.LANCHOR4
<------>ldr x0, [x0, 1584]
<------>bl FlashInit
<------>mov w21, w0
<------>cbnz w0, .L2895
<------>bl FlashLoadFactorBbt
<------>cbz w0, .L2896
<------>bl FlashMakeFactorBbt
.L2896:
<------>add x20, x20, :lo12:.LANCHOR4
<------>ldr x0, [x20, 1656]
<------>bl FlashReadIdbDataRaw
<------>cbz w0, .L2897
<------>mov w2, 16
<------>mov w1, 0
<------>add x0, x29, 48
<------>bl FlashReadFacBbtData
<------>ldr w2, [x29, 48]
<------>mov w0, 0
<------>mov w1, 0
<------>mov w4, 1
.L2899:
<------>lsl w3, w4, w1
<------>add w1, w1, 1
<------>tst w3, w2
<------>cinc w0, w0, ne
<------>cmp w1, 16
<------>bne .L2899
<------>cmp w0, 6
<------>bhi .L2900
<------>add x0, x19, :lo12:.LANCHOR0
.L2923:
<------>strb w1, [x0, 73]
<------>add x0, x19, :lo12:.LANCHOR0
<------>ldrb w1, [x0, 73]
<------>strh w1, [x0, 202]
.L2897:
<------>adrp x1, .LC75
<------>add x1, x1, :lo12:.LC75
<------>add x19, x19, :lo12:.LANCHOR0
<------>adrp x0, .LC76
<------>add x0, x0, :lo12:.LC76
<------>bl printk
<------>add x0, x19, 176
<------>bl FtlConstantsInit
<------>bl FtlVariablesInit
<------>ldrh w0, [x19, 2476]
<------>mov w19, 1
<------>bl FtlFreeSysBlkQueueInit
.L2905:
<------>bl FtlLoadBbt
<------>cbz w0, .L2906
.L2925:
<------>bl FtlLowFormat
<------>cmp w19, 3
<------>bls .L2907
<------>mov w21, -1
<------>b .L2892
.L2900:
<------>mov w1, 0
<------>mov w4, 1
.L2903:
<------>lsl w3, w4, w1
<------>add w1, w1, 1
<------>tst w3, w2
<------>cinc w0, w0, ne
<------>cmp w1, 24
<------>bne .L2903
<------>cmp w0, 17
<------>add x0, x19, :lo12:.LANCHOR0
<------>bls .L2923
<------>mov w1, 36
<------>b .L2923
.L2907:
<------>add w19, w19, 1
<------>b .L2905
.L2906:
<------>bl FtlSysBlkInit
<------>cbnz w0, .L2925
<------>adrp x0, .LANCHOR1+504
<------>mov w1, 1
<------>str w1, [x0, #:lo12:.LANCHOR1+504]
<------>b .L2892
<------>.size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
<------>.align 2
<------>.global Ftl_gc_temp_data_write_back
<------>.type Ftl_gc_temp_data_write_back, %function
Ftl_gc_temp_data_write_back:
<------>adrp x12, .LANCHOR2
<------>add x0, x12, :lo12:.LANCHOR2
<------>ldr w1, [x0, 424]
<------>cbz w1, .L2927
.L2941:
<------>mov w0, 0
<------>ret
.L2930:
<------>mov w0, 0
.L2926:
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L2927:
<------>adrp x1, .LANCHOR0+204
<------>ldrb w1, [x1, #:lo12:.LANCHOR0+204]
<------>cbz w1, .L2929
<------>ldr w1, [x0, 1380]
<------>tbz x1, 0, .L2929
<------>ldrh w0, [x0, 660]
<------>cbnz w0, .L2941
.L2929:
<------>stp x29, x30, [sp, -32]!
<------>mov w3, 0
<------>mov w2, 0
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>add x19, x12, :lo12:.LANCHOR2
<------>ldr w1, [x19, 1380]
<------>ldr x0, [x19, 3592]
<------>bl FlashProgPages
<------>mov w10, 0
<------>mov w11, 56
.L2931:
<------>ldr w1, [x19, 1380]
<------>cmp w10, w1
<------>bcc .L2933
<------>ldr x0, [x19, 3592]
<------>bl FtlGcBufFree
<------>str wzr, [x19, 1380]
<------>ldrh w0, [x19, 660]
<------>cbnz w0, .L2930
<------>mov w0, 1
<------>bl FtlGcFreeTempBlock
<------>b .L2943
.L2933:
<------>umull x1, w10, w11
<------>ldr x2, [x19, 3592]
<------>add x3, x2, x1
<------>ldr w2, [x2, x1]
<------>ldr x0, [x3, 16]
<------>cmn w2, #1
<------>bne .L2932
<------>ldrh w3, [x19, 656]
<------>ldr x0, [x19, 520]
<------>strh wzr, [x0, x3, lsl 1]
<------>strh w2, [x19, 656]
<------>ldr w0, [x19, 944]
<------>add w0, w0, 1
<------>str w0, [x19, 944]
<------>ldr x0, [x19, 3592]
<------>add x0, x0, x1
<------>ldr w0, [x0, 4]
<------>lsr w0, w0, 10
<------>bl FtlBbmMapBadBlock
<------>bl FtlBbmTblFlush
<------>bl FtlGcPageVarInit
.L2943:
<------>mov w0, 1
<------>b .L2926
.L2932:
<------>ldp w2, w0, [x0, 8]
<------>ldr w1, [x3, 4]
<------>bl FtlGcUpdatePage
<------>add w10, w10, 1
<------>and w10, w10, 65535
<------>b .L2931
<------>.size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
<------>.align 2
<------>.global Ftl_get_new_temp_ppa
<------>.type Ftl_get_new_temp_ppa, %function
Ftl_get_new_temp_ppa:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x0, x19, :lo12:.LANCHOR2
<------>add x1, x0, 656
<------>ldrh w2, [x0, 656]
<------>mov w0, 65535
<------>cmp w2, w0
<------>beq .L2945
<------>ldrh w0, [x1, 4]
<------>cbnz w0, .L2946
.L2945:
<------>bl FtlCacheWriteBack
<------>add x20, x19, :lo12:.LANCHOR2
<------>mov w0, 0
<------>bl FtlGcFreeTempBlock
<------>add x0, x20, 656
<------>strb wzr, [x0, 8]
<------>bl allocate_data_superblock
<------>strh wzr, [x20, 1420]
<------>strh wzr, [x20, 1432]
<------>bl l2p_flush
<------>mov w0, 0
<------>bl FtlEctTblFlush
<------>bl FtlVpcTblFlush
.L2946:
<------>add x0, x19, :lo12:.LANCHOR2
<------>add x0, x0, 656
<------>bl get_new_active_ppa
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
<------>.align 2
<------>.global ftl_do_gc
<------>.type ftl_do_gc, %function
ftl_do_gc:
<------>stp x29, x30, [sp, -160]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x2, x19, :lo12:.LANCHOR2
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr w3, [x2, 424]
<------>cbnz w3, .L3047
<------>adrp x3, .LANCHOR1
<------>add x3, x3, :lo12:.LANCHOR1
<------>ldr w20, [x3, 504]
<------>cmp w20, 1
<------>bne .L3047
<------>ldr w4, [x2, 3560]
<------>cbnz w4, .L3047
<------>ldrh w4, [x2, 536]
<------>cmp w4, 47
<------>bls .L3047
<------>mov w22, w1
<------>ldrh w1, [x3, 3456]
<------>mov w23, w0
<------>mov w0, 65535
<------>cmp w1, w0
<------>bne .L2950
.L2953:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w2, 65535
<------>ldrh w4, [x0, 1450]
<------>cmp w4, w2
<------>bne .L2951
.L2952:
<------>add x1, x19, :lo12:.LANCHOR2
<------>cmp w23, 1
<------>ldr w0, [x1, 1368]
<------>add w0, w0, 1
<------>add w0, w0, w23, lsl 7
<------>str w0, [x1, 1368]
<------>bne .L2954
<------>adrp x2, .LANCHOR0
<------>add x1, x2, :lo12:.LANCHOR0
<------>mov x25, x2
<------>ldr w3, [x1, 2372]
<------>cbnz w3, .L2955
<------>ldrb w1, [x1, 204]
<------>cbz w1, .L2954
.L2955:
<------>add x24, x19, :lo12:.LANCHOR2
<------>ldr w1, [x24, 776]
<------>cmp w1, 39
<------>bhi .L2954
<------>adrp x21, .LANCHOR4
<------>add x1, x21, :lo12:.LANCHOR4
<------>mov w20, 65535
<------>ldrh w1, [x1, 1984]
<------>add w0, w1, w0
<------>str w0, [x24, 1368]
<------>bl FtlGcReFreshBadBlk
<------>ldrh w0, [x24, 800]
<------>cmp w0, w20
<------>bne .L2956
<------>ldrh w1, [x24, 1448]
<------>cmp w1, w0
<------>bne .L3043
<------>ldr w0, [x24, 1368]
<------>cmp w0, 1024
<------>bhi .L2958
<------>ldrh w0, [x24, 552]
<------>cmp w0, 63
<------>bhi .L3043
.L2958:
<------>add x0, x19, :lo12:.LANCHOR2
<------>add x1, x21, :lo12:.LANCHOR4
<------>ldrh w2, [x0, 1366]
<------>ldrh w3, [x0, 552]
<------>strh wzr, [x1, 1984]
<------>add w2, w2, 64
<------>cmp w3, w2
<------>bgt .L3043
<------>str wzr, [x0, 1368]
<------>ldr w0, [x0, 776]
<------>cbnz w0, .L2959
<------>mov w0, 6
.L3096:
<------>strh w0, [x1, 1984]
.L2960:
<------>mov w0, 32
<------>bl List_get_gc_head_node
<------>and w5, w0, 65535
<------>mov w8, 65535
<------>cmp w5, w8
<------>beq .L2964
<------>add x24, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x24, 1372]
<------>cbz w0, .L2962
<------>add x2, x25, :lo12:.LANCHOR0
<------>ldr x7, [x24, 520]
<------>ubfiz x5, x5, 1, 16
<------>ldrh w1, [x2, 2546]
<------>ldrh w2, [x2, 2472]
<------>ldrh w3, [x7, x5]
<------>mul w1, w1, w2
<------>add w1, w1, 1
<------>cmp w3, w1
<------>bgt .L2964
<------>add w6, w0, 1
<------>str wzr, [x24, 1376]
<------>and w6, w6, 65535
<------>strh w6, [x24, 1372]
<------>bl List_get_gc_head_node
<------>and w20, w0, 65535
<------>cmp w20, w8
<------>beq .L2964
<------>ubfiz x25, x20, 1, 16
<------>ldrh w4, [x7, x5]
<------>mov w2, w20
<------>mov w1, w6
<------>adrp x0, .LC156
<------>add x0, x0, :lo12:.LC156
<------>ldrh w3, [x7, x25]
<------>bl printk
<------>ldrh w0, [x24, 1372]
<------>cmp w0, 40
<------>bls .L2963
<------>ldr x0, [x24, 520]
<------>ldrh w0, [x0, x25]
<------>cmp w0, 32
<------>bls .L2963
<------>strh wzr, [x24, 1372]
.L2963:
<------>add x21, x21, :lo12:.LANCHOR4
<------>mov w0, 6
<------>strh w0, [x21, 1984]
.L2956:
<------>cmp w23, 0
<------>mov w1, 65535
<------>add x0, x19, :lo12:.LANCHOR2
<------>ccmp w20, w1, 0, eq
<------>bne .L2978
<------>ldrh w2, [x0, 552]
<------>cmp w2, 24
<------>bhi .L3055
<------>adrp x0, .LANCHOR0
<------>add x0, x0, :lo12:.LANCHOR0
<------>cmp w2, 16
<------>ldrh w21, [x0, 2544]
<------>bls .L2980
<------>lsr w21, w21, 5
.L2979:
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x1, 1364]
<------>cmp w0, w2
<------>bcs .L2983
<------>ldrh w0, [x1, 656]
<------>mov w2, 65535
<------>cmp w0, w2
<------>bne .L2984
<------>ldrh w2, [x1, 1448]
<------>cmp w2, w0
<------>bne .L2984
<------>adrp x0, .LANCHOR4+1984
<------>ldrh w0, [x0, #:lo12:.LANCHOR4+1984]
<------>cbnz w0, .L2985
<------>adrp x2, .LANCHOR0+2616
<------>ldr w3, [x1, 716]
<------>ldr w2, [x2, #:lo12:.LANCHOR0+2616]
<------>add w2, w2, w2, lsl 1
<------>cmp w3, w2, lsr 2
<------>bcs .L2986
.L2985:
<------>add x2, x19, :lo12:.LANCHOR2
<------>ldrh w1, [x2, 780]
<------>add w1, w1, w1, lsl 1
<------>asr w1, w1, 2
<------>strh w1, [x2, 1364]
.L2987:
<------>add x19, x19, :lo12:.LANCHOR2
<------>str wzr, [x19, 1376]
.L2948:
<------>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
.L2950:
<------>ldrh w1, [x2, 656]
<------>cmp w1, w0
<------>beq .L2953
<------>mov w0, w20
<------>bl FtlGcFreeTempBlock
<------>cbz w0, .L2953
<------>mov w0, w20
<------>b .L2948
.L2951:
<------>ldrh w1, [x0, 1448]
<------>cmp w1, w2
<------>bne .L2952
<------>ldrh w3, [x0, 1452]
<------>cmp w3, w1
<------>beq .L2952
<------>ldrh w2, [x0, 1454]
<------>cmp w2, w1
<------>beq .L2952
<------>mov w1, -1
<------>strh w4, [x0, 1448]
<------>strh w3, [x0, 1450]
<------>strh w2, [x0, 1452]
<------>strh w1, [x0, 1454]
<------>b .L2952
.L2959:
<------>cmp w0, 5
<------>bhi .L2960
<------>mov w0, 18
<------>b .L3096
.L2962:
<------>mov w0, 1
<------>strh w0, [x24, 1372]
.L2964:
<------>bl GetSwlReplaceBlock
<------>and w20, w0, 65535
<------>mov w0, 65535
<------>cmp w20, w0
<------>bne .L2956
<------>add x21, x21, :lo12:.LANCHOR4
<------>strh wzr, [x21, 1984]
.L2954:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w20, 65535
<------>ldrh w0, [x0, 800]
<------>cmp w0, w20
<------>bne .L2956
.L3043:
<------>add x24, x19, :lo12:.LANCHOR2
<------>mov w0, 65535
<------>ldrh w20, [x24, 656]
<------>cmp w20, w0
<------>bne .L3050
<------>ldrh w25, [x24, 1448]
<------>cmp w25, w20
<------>bne .L2956
<------>ldrh w0, [x24, 552]
<------>mov w1, 1024
<------>cmp w0, 24
<------>mov w0, 5120
<------>csel w0, w0, w1, cc
<------>ldr w1, [x24, 1368]
<------>cmp w1, w0
<------>bls .L2956
<------>adrp x0, .LANCHOR4+1984
<------>str wzr, [x24, 1368]
<------>strh wzr, [x0, #:lo12:.LANCHOR4+1984]
<------>bl GetSwlReplaceBlock
<------>and w20, w0, 65535
<------>cmp w20, w25
<------>bne .L3053
<------>ldrh w1, [x24, 552]
<------>ldrh w0, [x24, 1366]
<------>cmp w1, w0
<------>bcs .L2967
<------>mov w0, 64
<------>bl List_get_gc_head_node
<------>and x0, x0, 65535
<------>cmp w0, w20
<------>beq .L2969
<------>ldr w1, [x24, 3556]
<------>adrp x5, .LANCHOR0
<------>cbnz w1, .L2970
<------>add x1, x5, :lo12:.LANCHOR0
<------>ldrh w2, [x1, 2492]
<------>cmp w2, 3
<------>beq .L2970
<------>ldr w2, [x24, 1360]
<------>cbnz w2, .L2970
<------>ldr w2, [x1, 2372]
<------>cbnz w2, .L2970
<------>ldrb w1, [x1, 204]
<------>cbz w1, .L2971
.L2970:
<------>add x1, x19, :lo12:.LANCHOR2
<------>add x2, x5, :lo12:.LANCHOR0
<------>ldr x1, [x1, 520]
<------>ldrh w3, [x1, x0, lsl 1]
<------>ldrh w0, [x2, 2546]
<------>ldrh w1, [x2, 2472]
<------>ldrh w2, [x2, 2492]
<------>cmp w2, 3
<------>mul w1, w1, w0
<------>lsr w0, w0, 1
<------>csel w0, w0, wzr, eq
<------>add w0, w0, w1
<------>cmp w3, w0
<------>bgt .L2973
<------>mov w0, 0
<------>bl List_get_gc_head_node
<------>add x5, x5, :lo12:.LANCHOR0
<------>add x1, x19, :lo12:.LANCHOR2
<------>and w21, w0, 65535
<------>ldr w0, [x5, 2616]
<------>ldr w2, [x1, 716]
<------>add w0, w0, w0, lsl 1
<------>cmp w2, w0, lsr 2
<------>bls .L2974
<------>mov w0, 128
.L3097:
<------>strh w0, [x1, 1366]
.L2975:
<------>mov w0, 65535
<------>cmp w21, w0
<------>beq .L2969
.L2966:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ubfiz x1, x21, 1, 32
<------>mov w20, w21
<------>ldr x3, [x0, 440]
<------>ldr x2, [x0, 520]
<------>ldrh w5, [x0, 1364]
<------>ldrh w4, [x3, x1]
<------>ldrh w3, [x2, x1]
<------>mov w1, w21
<------>ldrh w2, [x0, 552]
<------>adrp x0, .LC157
<------>add x0, x0, :lo12:.LC157
<------>bl printk
<------>b .L2969
.L2974:
<------>mov w0, 160
<------>b .L3097
.L2973:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, 128
.L3098:
<------>strh w1, [x0, 1366]
.L2969:
<------>bl FtlGcReFreshBadBlk
<------>b .L2956
.L2971:
<------>ldr x1, [x24, 520]
<------>ldrh w0, [x1, x0, lsl 1]
<------>cmp w0, 7
<------>bhi .L2976
<------>mov w0, 0
<------>bl List_get_gc_head_node
<------>and w21, w0, 65535
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, 128
<------>strh w1, [x0, 1366]
<------>b .L2975
.L2976:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, 64
<------>b .L3098
.L2967:
<------>mov w0, 80
<------>strh w0, [x24, 1366]
<------>b .L2969
.L3053:
<------>mov w21, w20
<------>b .L2966
.L3050:
<------>mov w20, w0
<------>b .L2956
.L2980:
<------>cmp w2, 12
<------>bls .L2981
<------>lsr w21, w21, 4
<------>b .L2979
.L2981:
<------>cmp w2, 8
<------>bls .L2979
<------>lsr w21, w21, 2
<------>b .L2979
.L3055:
<------>mov w21, 1
<------>b .L2979
.L2986:
<------>mov w2, 18
<------>strh w2, [x1, 1364]
<------>b .L2987
.L2984:
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x1, 780]
<------>add w0, w0, w0, lsl 1
<------>asr w0, w0, 2
<------>strh w0, [x1, 1364]
.L2983:
<------>adrp x0, .LANCHOR0+2372
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2372]
<------>cbz w0, .L3057
<------>cmp w22, 2
<------>bhi .L3057
<------>add w21, w21, 1
<------>and w21, w21, 65535
.L3057:
<------>mov w20, 65535
<------>b .L2989
.L2978:
<------>ldrh w2, [x0, 656]
<------>cmp w2, w1
<------>bne .L2990
<------>ldrh w1, [x0, 1448]
<------>cmp w1, w2
<------>bne .L2990
<------>cmp w20, w1
<------>bne .L2990
<------>ldrh w1, [x0, 800]
<------>cmp w1, w20
<------>bne .L2990
<------>ldrh w2, [x0, 552]
<------>adrp x21, .LANCHOR4
<------>ldrh w1, [x0, 1364]
<------>str wzr, [x0, 1376]
<------>cmp w2, w1
<------>bls .L2992
<------>add x1, x21, :lo12:.LANCHOR4
<------>ldrh w1, [x1, 1984]
<------>cbnz w1, .L2993
<------>adrp x1, .LANCHOR0+2616
<------>ldr w2, [x0, 716]
<------>ldr w1, [x1, #:lo12:.LANCHOR0+2616]
<------>add w1, w1, w1, lsl 1
<------>cmp w2, w1, lsr 2
<------>bcs .L2994
.L2993:
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x1, 780]
<------>add w0, w0, w0, lsl 1
<------>asr w0, w0, 2
<------>strh w0, [x1, 1364]
.L2995:
<------>bl FtlReadRefresh
<------>mov w0, 0
<------>bl List_get_gc_head_node
<------>add x1, x19, :lo12:.LANCHOR2
<------>ubfiz x0, x0, 1, 16
<------>ldr x1, [x1, 520]
<------>ldrh w0, [x1, x0]
<------>cmp w0, 4
<------>bls .L2992
.L3099:
<------>add x21, x21, :lo12:.LANCHOR4
<------>b .L3100
.L2994:
<------>mov w1, 18
<------>strh w1, [x0, 1364]
<------>b .L2995
.L2992:
<------>add x21, x21, :lo12:.LANCHOR4
<------>ldrh w0, [x21, 1984]
<------>cbnz w0, .L2990
<------>add x6, x19, :lo12:.LANCHOR2
<------>ldrh w5, [x6, 780]
<------>add w0, w5, w5, lsl 1
<------>asr w0, w0, 2
<------>strh w0, [x6, 1364]
<------>mov w0, 0
<------>bl List_get_gc_head_node
<------>ldr x1, [x6, 520]
<------>ubfiz x0, x0, 1, 16
<------>ldrh w2, [x1, x0]
<------>adrp x1, .LANCHOR0
<------>add x1, x1, :lo12:.LANCHOR0
<------>ldrh w0, [x1, 2546]
<------>ldrh w1, [x1, 2472]
<------>mul w0, w0, w1
<------>mov w1, 2
<------>sdiv w0, w0, w1
<------>cmp w2, w0
<------>ble .L2997
<------>ldrh w0, [x6, 552]
<------>sub w5, w5, #1
<------>cmp w0, w5
<------>blt .L2997
<------>bl FtlReadRefresh
.L3100:
<------>ldrh w0, [x21, 1984]
<------>b .L2948
.L2997:
<------>cbnz w2, .L2990
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w0, -1
<------>bl decrement_vpc_count
<------>ldrh w0, [x19, 552]
<------>add w0, w0, 1
<------>b .L2948
.L2990:
<------>adrp x0, .LANCHOR0+2372
<------>ldr w0, [x0, #:lo12:.LANCHOR0+2372]
<------>cmp w0, 0
<------>cset w21, ne
<------>add w21, w21, 1
.L2989:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w2, 65535
<------>ldrh w1, [x0, 800]
<------>cmp w1, w2
<------>bne .L2999
<------>cmp w20, w1
<------>beq .L3000
<------>strh w20, [x0, 800]
.L3001:
<------>add x5, x19, :lo12:.LANCHOR2
<------>mov w1, 65535
<------>ldrh w0, [x5, 800]
<------>strb wzr, [x5, 808]
<------>cmp w0, w1
<------>beq .L2999
<------>bl IsBlkInGcList
<------>cbz w0, .L3004
<------>mov w0, -1
<------>strh w0, [x5, 800]
.L3004:
<------>adrp x0, .LANCHOR0+204
<------>ldrb w0, [x0, #:lo12:.LANCHOR0+204]
<------>cbz w0, .L3005
<------>add x0, x19, :lo12:.LANCHOR2
<------>add x3, x0, 800
<------>ldrh w0, [x0, 800]
<------>bl ftl_get_blk_mode
<------>strb w0, [x3, 8]
.L3005:
<------>add x12, x19, :lo12:.LANCHOR2
<------>mov w0, 65535
<------>add x13, x12, 800
<------>ldrh w1, [x12, 800]
<------>cmp w1, w0
<------>beq .L2999
<------>mov x0, x13
<------>bl make_superblock
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldrh w2, [x12, 800]
<------>ldr x1, [x12, 520]
<------>strh wzr, [x12, 802]
<------>strb wzr, [x12, 806]
<------>strh wzr, [x0, 1986]
<------>ldrh w1, [x1, x2, lsl 1]
<------>strh w1, [x0, 1988]
.L2999:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w1, [x0, 800]
<------>ldrh w2, [x0, 560]
<------>cmp w2, w1
<------>beq .L3006
<------>ldrh w2, [x0, 608]
<------>cmp w2, w1
<------>beq .L3006
<------>ldrh w0, [x0, 656]
<------>cmp w0, w1
<------>bne .L3040
.L3006:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, -1
<------>strh w1, [x0, 800]
.L3040:
<------>add x22, x19, :lo12:.LANCHOR2
<------>mov w0, 65535
<------>ldrh w24, [x22, 800]
<------>cmp w24, w0
<------>bne .L3008
<------>adrp x25, .LANCHOR0
<------>add x26, x25, :lo12:.LANCHOR0
<------>mov w27, 2
<------>str wzr, [x22, 1376]
.L3009:
<------>ldrh w5, [x22, 1372]
<------>mov w0, w5
<------>bl List_get_gc_head_node
<------>and w6, w0, 65535
<------>strh w6, [x22, 800]
<------>cmp w6, w24
<------>bne .L3010
<------>strh wzr, [x22, 1372]
<------>mov w0, 8
<------>b .L2948
.L3000:
<------>ldrh w1, [x0, 1448]
<------>cmp w1, w20
<------>beq .L3001
<------>ldr x2, [x0, 520]
<------>ubfiz x1, x1, 1, 16
<------>ldrh w1, [x2, x1]
<------>cbnz w1, .L3002
<------>mov w1, -1
<------>strh w1, [x0, 1448]
.L3002:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w1, [x0, 1448]
<------>strh w1, [x0, 800]
<------>mov w1, -1
<------>strh w1, [x0, 1448]
<------>b .L3001
.L3010:
<------>mov w0, w6
<------>bl IsBlkInGcList
<------>add w5, w5, 1
<------>cbz w0, .L3011
<------>strh w5, [x22, 1372]
<------>b .L3009
.L3011:
<------>ldrh w4, [x26, 2472]
<------>ubfiz x1, x6, 1, 16
<------>ldrh w0, [x26, 2544]
<------>and w5, w5, 65535
<------>ldr x2, [x22, 520]
<------>strh w5, [x22, 1372]
<------>mul w0, w0, w4
<------>ldrh w3, [x2, x1]
<------>sdiv w4, w0, w27
<------>cmp w3, w4
<------>bgt .L3013
<------>cmp w5, 48
<------>bls .L3014
<------>cmp w3, 8
<------>bls .L3014
<------>ldrh w3, [x22, 1420]
<------>cmp w3, 35
<------>bhi .L3014
.L3013:
<------>strh wzr, [x22, 1372]
.L3014:
<------>ldrh w1, [x2, x1]
<------>cmp w0, w1
<------>bgt .L3015
<------>cmp w20, w24
<------>bne .L3015
<------>ldrh w0, [x22, 1372]
<------>cmp w0, 3
<------>bhi .L3015
<------>mov w0, -1
<------>strh w0, [x22, 800]
<------>adrp x0, .LANCHOR4+1984
<------>strh wzr, [x22, 1372]
<------>ldrh w0, [x0, #:lo12:.LANCHOR4+1984]
<------>b .L2948
.L3015:
<------>cbnz w1, .L3016
<------>mov w0, -1
<------>bl decrement_vpc_count
<------>ldrh w0, [x22, 1372]
<------>add w0, w0, 1
<------>strh w0, [x22, 1372]
<------>b .L3009
.L3016:
<------>add x25, x25, :lo12:.LANCHOR0
<------>add x3, x19, :lo12:.LANCHOR2
<------>add x3, x3, 800
<------>ldrb w0, [x25, 204]
<------>strb wzr, [x3, 8]
<------>cbz w0, .L3017
<------>mov w0, w6
<------>bl ftl_get_blk_mode
<------>strb w0, [x3, 8]
.L3017:
<------>add x13, x19, :lo12:.LANCHOR2
<------>add x12, x13, 800
<------>mov x0, x12
<------>bl make_superblock
<------>ldrh w2, [x13, 800]
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldr x1, [x13, 520]
<------>strh wzr, [x0, 1986]
<------>ldrh w1, [x1, x2, lsl 1]
<------>strh w1, [x0, 1988]
<------>strh wzr, [x13, 802]
<------>strb wzr, [x13, 806]
.L3008:
<------>cmp w23, 1
<------>bne .L3018
<------>bl FtlReadRefresh
.L3018:
<------>add x1, x19, :lo12:.LANCHOR2
<------>mov w0, 1
<------>adrp x22, .LANCHOR0
<------>str w0, [x1, 3560]
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w2, [x0, 204]
<------>ldrh w24, [x0, 2544]
<------>cbz w2, .L3019
<------>ldrb w1, [x1, 808]
<------>cmp w1, 1
<------>bne .L3019
<------>ldrh w24, [x0, 2546]
.L3019:
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x0, 802]
<------>add w1, w0, w21
<------>cmp w1, w24
<------>ble .L3020
<------>sub w21, w24, w0
<------>and w21, w21, 65535
.L3020:
<------>adrp x0, .LANCHOR4
<------>mov w25, 0
<------>add x0, x0, :lo12:.LANCHOR4
<------>str x0, [x29, 136]
.L3021:
<------>cmp w21, w25, uxth
<------>bls .L3028
<------>add x0, x22, :lo12:.LANCHOR0
<------>mov w6, 0
<------>mov w2, 0
<------>mov w8, 65535
<------>mov w7, 56
<------>ldrh w9, [x0, 2472]
<------>add x0, x19, :lo12:.LANCHOR2
<------>add x3, x0, 816
<------>ldrh w4, [x0, 802]
<------>add w4, w4, w25
<------>b .L3029
.L3023:
<------>ldrh w1, [x3]
<------>cmp w1, w8
<------>beq .L3022
<------>ldr x5, [x0, 1408]
<------>orr w1, w4, w1, lsl 10
<------>umaddl x5, w6, w7, x5
<------>add w6, w6, 1
<------>and w6, w6, 65535
<------>str w1, [x5, 4]
.L3022:
<------>add w2, w2, 1
<------>add x3, x3, 2
<------>and w2, w2, 65535
.L3029:
<------>cmp w2, w9
<------>bne .L3023
<------>add x26, x19, :lo12:.LANCHOR2
<------>mov w1, w6
<------>str w6, [x29, 128]
<------>add x27, x26, 656
<------>mov x28, 0
<------>ldrb w2, [x26, 808]
<------>ldr x0, [x26, 1408]
<------>bl FlashReadPages
<------>ldr w6, [x29, 128]
<------>mov w0, 56
<------>umull x0, w6, w0
<------>str x0, [x29, 128]
.L3024:
<------>ldr x0, [x29, 128]
<------>cmp x0, x28
<------>bne .L3027
<------>add w25, w25, 1
<------>b .L3021
.L3027:
<------>ldr x0, [x26, 1408]
<------>add x1, x0, x28
<------>ldr w0, [x0, x28]
<------>cmn w0, #1
<------>beq .L3025
<------>ldr x5, [x1, 16]
<------>mov w0, 61589
<------>ldrh w1, [x5]
<------>cmp w1, w0
<------>bne .L3025
<------>ldr w0, [x5, 8]
<------>mov w2, 0
<------>add x1, x29, 152
<------>str x5, [x29, 120]
<------>bl log2phys
<------>ldr x0, [x26, 1408]
<------>ldr w1, [x29, 152]
<------>add x0, x0, x28
<------>ldr x5, [x29, 120]
<------>and w1, w1, 2147483647
<------>ldr w2, [x0, 4]
<------>cmp w1, w2
<------>bne .L3025
<------>ldr x1, [x29, 136]
<------>ldr x2, [x29, 136]
<------>ldr x6, [x26, 3592]
<------>ldr w0, [x0, 24]
<------>ldrh w1, [x1, 1986]
<------>str x5, [x29, 104]
<------>add w1, w1, 1
<------>strh w1, [x2, 1986]
<------>ldr w1, [x26, 1380]
<------>mov w2, 56
<------>str w2, [x29, 116]
<------>nop // between mem op and mult-accumulate
<------>umaddl x1, w1, w2, x6
<------>str x1, [x29, 120]
<------>str w0, [x1, 24]
<------>bl Ftl_get_new_temp_ppa
<------>ldr x1, [x29, 120]
<------>ldr w2, [x29, 116]
<------>ldr x5, [x29, 104]
<------>str w0, [x1, 4]
<------>ldr w0, [x26, 1380]
<------>ldr x1, [x26, 3592]
<------>umaddl x0, w0, w2, x1
<------>ldr x1, [x26, 1408]
<------>add x1, x1, x28
<------>ldr x2, [x1, 8]
<------>str x2, [x0, 8]
<------>ldr x1, [x1, 16]
<------>str x1, [x0, 16]
<------>ldr w0, [x29, 152]
<------>mov w1, 1
<------>str w0, [x5, 12]
<------>ldrh w0, [x27]
<------>strh w0, [x5, 2]
<------>ldr w0, [x26, 756]
<------>str w0, [x5, 4]
<------>ldr w0, [x26, 1380]
<------>add w0, w0, 1
<------>str w0, [x26, 1380]
<------>ldr x0, [x26, 1408]
<------>add x0, x0, x28
<------>bl FtlGcBufAlloc
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldrb w0, [x0, 204]
<------>cbnz w0, .L3026
<------>ldrb w1, [x27, 7]
<------>ldr w0, [x26, 1380]
<------>cmp w1, w0
<------>beq .L3026
<------>ldrh w0, [x27, 4]
<------>cbnz w0, .L3025
.L3026:
<------>bl Ftl_gc_temp_data_write_back
<------>cbz w0, .L3025
<------>add x19, x19, :lo12:.LANCHOR2
<------>mov w0, -1
<------>strh w0, [x19, 800]
<------>adrp x0, .LANCHOR4
<------>add x26, x0, :lo12:.LANCHOR4
<------>strh wzr, [x19, 802]
<------>str wzr, [x19, 3560]
<------>ldrh w0, [x26, 1984]
<------>b .L2948
.L3025:
<------>add x28, x28, 56
<------>b .L3024
.L3028:
<------>add x25, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x25, 802]
<------>add w21, w21, w0
<------>and w21, w21, 65535
<------>strh w21, [x25, 802]
<------>cmp w24, w21
<------>bhi .L3030
<------>ldr w0, [x25, 1380]
<------>adrp x21, .LANCHOR4
<------>cbz w0, .L3031
<------>bl Ftl_gc_temp_data_write_back
<------>cbz w0, .L3031
<------>str wzr, [x25, 3560]
<------>b .L3099
.L3031:
<------>add x21, x21, :lo12:.LANCHOR4
<------>ldrh w0, [x21, 1986]
<------>cbnz w0, .L3032
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w2, [x0, 800]
<------>ldr x1, [x0, 520]
<------>ldrh w1, [x1, x2, lsl 1]
<------>cbz w1, .L3032
<------>add x25, x22, :lo12:.LANCHOR0
<------>mov x24, x0
<------>mov w21, 0
.L3033:
<------>ldr w0, [x25, 2616]
<------>cmp w21, w0
<------>bcs .L3038
<------>mov w2, 0
<------>add x1, x29, 156
<------>mov w0, w21
<------>bl log2phys
<------>ldr w0, [x29, 156]
<------>cmn w0, #1
<------>beq .L3034
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>ldrh w1, [x24, 800]
<------>cmp w1, w0, uxth
<------>bne .L3034
.L3038:
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldr w0, [x0, 2616]
<------>cmp w21, w0
<------>bcc .L3032
<------>add x0, x19, :lo12:.LANCHOR2
<------>ldrh w2, [x0, 800]
<------>ldr x1, [x0, 520]
<------>strh wzr, [x1, x2, lsl 1]
<------>ldrh w0, [x0, 800]
<------>bl update_vpc_list
<------>bl FtlCacheWriteBack
<------>bl l2p_flush
<------>bl FtlVpcTblFlush
.L3032:
<------>add x0, x19, :lo12:.LANCHOR2
<------>mov w1, -1
<------>strh w1, [x0, 800]
.L3030:
<------>add x1, x19, :lo12:.LANCHOR2
<------>ldrh w0, [x1, 552]
<------>cmp w0, 2
<------>bhi .L3039
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldrh w21, [x22, 2544]
<------>b .L3040
.L3034:
<------>add w21, w21, 1
<------>b .L3033
.L3039:
<------>str wzr, [x1, 3560]
<------>adrp x1, .LANCHOR4+1984
<------>ldrh w1, [x1, #:lo12:.LANCHOR4+1984]
<------>cmp w1, 0
<------>csinc w0, w1, w0, ne
<------>b .L2948
.L3047:
<------>mov w0, 0
<------>b .L2948
<------>.size ftl_do_gc, .-ftl_do_gc
<------>.align 2
<------>.global FtlCacheWriteBack
<------>.type FtlCacheWriteBack, %function
FtlCacheWriteBack:
<------>stp x29, x30, [sp, -112]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>adrp x23, .LANCHOR2
<------>add x0, x23, :lo12:.LANCHOR2
<------>stp x19, x20, [sp, 16]
<------>stp x21, x22, [sp, 32]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>ldr w24, [x0, 424]
<------>cbnz w24, .L3103
<------>adrp x22, .LANCHOR0
<------>add x0, x22, :lo12:.LANCHOR0
<------>ldr w1, [x0, 2600]
<------>cbz w1, .L3103
<------>ldrb w0, [x0, 204]
<------>adrp x2, .LANCHOR4+1992
<------>ldr x19, [x2, #:lo12:.LANCHOR4+1992]
<------>cbz w0, .L3128
<------>ldrb w0, [x19, 8]
<------>cmp w0, 1
<------>cset w25, eq
.L3105:
<------>add x20, x22, :lo12:.LANCHOR0
<------>ldrb w3, [x19, 9]
<------>adrp x26, .LC158
<------>mov w2, w25
<------>mov w21, 0
<------>mov w27, 56
<------>ldr x0, [x20, 2608]
<------>add x26, x26, :lo12:.LC158
<------>bl FlashProgPages
.L3106:
<------>ldr w0, [x20, 2600]
<------>cmp w21, w0
<------>bcc .L3113
.L3125:
<------>add x22, x22, :lo12:.LANCHOR0
<------>str wzr, [x22, 2600]
.L3103:
<------>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
.L3128:
<------>mov w25, 0
<------>b .L3105
.L3113:
<------>umull x28, w21, w27
<------>ldr x0, [x20, 2608]
<------>add x3, x0, x28
<------>ldr w0, [x0, x28]
<------>cmn w0, #1
<------>bne .L3107
<------>add x21, x22, :lo12:.LANCHOR0
<------>add x26, x23, :lo12:.LANCHOR2
.L3108:
<------>ldr w0, [x21, 2600]
<------>cmp w24, w0
<------>bcc .L3123
<------>add x23, x23, :lo12:.LANCHOR2
<------>mov w19, 16386
.L3126:
<------>ldrh w0, [x23, 1456]
<------>cbz w0, .L3125
<------>mov w1, 1
<------>mov w0, w1
<------>bl ftl_do_gc
<------>subs w19, w19, #1
<------>bne .L3126
<------>b .L3125
.L3107:
<------>ldr w0, [x3, 4]
<------>cbnz w25, .L3109
.L3142:
<------>str w0, [x29, 108]
<------>mov w2, 1
<------>ldr w0, [x3, 24]
<------>add x1, x29, 108
<------>bl log2phys
<------>ldr x0, [x20, 2608]
<------>add x0, x0, x28
<------>ldr x0, [x0, 16]
<------>ldr w0, [x0, 12]
<------>cmn w0, #1
<------>beq .L3111
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>and w1, w0, 65535
<------>add x0, x23, :lo12:.LANCHOR2
<------>ubfiz x2, x1, 1, 16
<------>mov w28, w1
<------>ldr x0, [x0, 520]
<------>ldrh w0, [x0, x2]
<------>cbnz w0, .L3112
<------>mov w2, 0
<------>mov x0, x26
<------>bl printk
.L3112:
<------>mov w0, w28
<------>bl decrement_vpc_count
.L3111:
<------>add w21, w21, 1
<------>b .L3106
.L3109:
<------>orr w0, w0, -2147483648
<------>b .L3142
.L3123:
<------>mov w20, 56
<------>ldr x0, [x21, 2608]
<------>mov w1, -1
<------>mov w27, 1
<------>umull x20, w24, w20
<------>str w1, [x0, x20]
.L3114:
<------>ldr x0, [x21, 2608]
<------>add x3, x0, x20
<------>ldr w0, [x0, x20]
<------>cmn w0, #1
<------>ldr w0, [x3, 4]
<------>beq .L3118
<------>cbnz w25, .L3119
.L3143:
<------>str w0, [x29, 108]
<------>mov w2, 1
<------>ldr w0, [x3, 24]
<------>add x1, x29, 108
<------>bl log2phys
<------>ldr x0, [x21, 2608]
<------>add x20, x0, x20
<------>ldr x0, [x20, 16]
<------>ldr w0, [x0, 12]
<------>cmn w0, #1
<------>beq .L3121
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>ldr x2, [x26, 520]
<------>and w1, w0, 65535
<------>ubfiz x0, x1, 1, 16
<------>mov w20, w1
<------>ldrh w0, [x2, x0]
<------>cbnz w0, .L3122
<------>adrp x0, .LC158
<------>mov w2, 0
<------>add x0, x0, :lo12:.LC158
<------>bl printk
.L3122:
<------>mov w0, w20
<------>bl decrement_vpc_count
.L3121:
<------>add w24, w24, 1
<------>b .L3108
.L3118:
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>ldrh w1, [x19]
<------>cmp w1, w0, uxth
<------>bne .L3115
<------>ldr x2, [x26, 520]
<------>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, [x21, 2544]
<------>strh w0, [x19, 2]
<------>strh wzr, [x19, 4]
.L3115:
<------>ldrh w0, [x19, 4]
<------>cbnz w0, .L3116
<------>mov x0, x19
<------>bl allocate_new_data_superblock
.L3116:
<------>ldr w0, [x26, 944]
<------>add w0, w0, 1
<------>str w0, [x26, 944]
<------>ldr x0, [x21, 2608]
<------>add x0, x0, x20
<------>ldr w0, [x0, 4]
<------>lsr w0, w0, 10
<------>bl FtlGcMarkBadPhyBlk
<------>mov x0, x19
<------>bl get_new_active_ppa
<------>ldr x1, [x21, 2608]
<------>mov w2, w25
<------>str w0, [x29, 108]
<------>add x1, x1, x20
<------>str w0, [x1, 4]
<------>mov w1, 1
<------>ldrb w3, [x19, 9]
<------>ldr x0, [x21, 2608]
<------>add x0, x0, x20
<------>bl FlashProgPages
<------>ldr x0, [x21, 2608]
<------>ldr w0, [x0, x20]
<------>cmn w0, #1
<------>bne .L3117
<------>str w27, [x26, 424]
.L3117:
<------>ldr w0, [x26, 424]
<------>cbz w0, .L3114
<------>b .L3103
.L3119:
<------>orr w0, w0, -2147483648
<------>b .L3143
<------>.size FtlCacheWriteBack, .-FtlCacheWriteBack
<------>.align 2
<------>.global FtlSysFlush
<------>.type FtlSysFlush, %function
FtlSysFlush:
<------>adrp x0, .LANCHOR2+424
<------>ldr w0, [x0, #:lo12:.LANCHOR2+424]
<------>cbnz w0, .L3147
<------>stp x29, x30, [sp, -32]!
<------>adrp x0, .LANCHOR1+504
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>ldr w19, [x0, #:lo12:.LANCHOR1+504]
<------>cmp w19, 1
<------>bne .L3145
<------>bl FtlCacheWriteBack
<------>bl l2p_flush
<------>mov w0, w19
<------>bl FtlEctTblFlush
<------>bl FtlVpcTblFlush
.L3145:
<------>mov w0, 0
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L3147:
<------>mov w0, 0
<------>ret
<------>.size FtlSysFlush, .-FtlSysFlush
<------>.align 2
<------>.global FtlDeInit
<------>.type FtlDeInit, %function
FtlDeInit:
<------>adrp x0, .LANCHOR1+504
<------>ldr w0, [x0, #:lo12:.LANCHOR1+504]
<------>cmp w0, 1
<------>bne .L3153
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl FtlSysFlush
<------>mov w0, 0
<------>ldp x29, x30, [sp], 16
<------>ret
.L3153:
<------>mov w0, 0
<------>ret
<------>.size FtlDeInit, .-FtlDeInit
<------>.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
<------>bl ftl_flash_de_init
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_deinit, .-ftl_deinit
<------>.align 2
<------>.global rk_ftl_de_init
<------>.type rk_ftl_de_init, %function
rk_ftl_de_init:
<------>stp x29, x30, [sp, -16]!
<------>mov w1, 0
<------>adrp x0, .LC159
<------>add x0, x0, :lo12:.LC159
<------>add x29, sp, 0
<------>bl printk
<------>bl ftl_deinit
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size rk_ftl_de_init, .-rk_ftl_de_init
<------>.align 2
<------>.global ftl_cache_flush
<------>.type ftl_cache_flush, %function
ftl_cache_flush:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl FtlCacheWriteBack
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_cache_flush, .-ftl_cache_flush
<------>.align 2
<------>.global rk_ftl_cache_write_back
<------>.type rk_ftl_cache_write_back, %function
rk_ftl_cache_write_back:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl FtlCacheWriteBack
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
<------>.align 2
<------>.global ftl_discard
<------>.type ftl_discard, %function
ftl_discard:
<------>stp x29, x30, [sp, -80]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w20, w0
<------>stp x21, x22, [sp, 32]
<------>adrp x0, .LANCHOR0
<------>add x21, x0, :lo12:.LANCHOR0
<------>str x23, [sp, 48]
<------>mov w19, w1
<------>ldr w1, [x21, 2584]
<------>cmp w1, w20
<------>bls .L3173
<------>cmp w1, w19
<------>bcc .L3173
<------>mov x23, x0
<------>add w0, w20, w19
<------>cmp w1, w0
<------>bcc .L3173
<------>cmp w19, 31
<------>bls .L3175
<------>adrp x22, .LANCHOR2
<------>add x0, x22, :lo12:.LANCHOR2
<------>ldr w0, [x0, 424]
<------>cbnz w0, .L3175
<------>bl FtlCacheWriteBack
<------>ldrh w0, [x21, 2550]
<------>udiv w21, w20, w0
<------>msub w20, w0, w21, w20
<------>ands w20, w20, 65535
<------>beq .L3166
<------>sub w20, w0, w20
<------>add w21, w21, 1
<------>cmp w20, w19
<------>csel w20, w20, w19, ls
<------>sub w19, w19, w20, uxth
.L3166:
<------>add x20, x23, :lo12:.LANCHOR0
<------>adrp x23, .LANCHOR4
<------>add x23, x23, :lo12:.LANCHOR4
<------>mov w0, -1
<------>str w0, [x29, 76]
.L3167:
<------>ldrh w0, [x20, 2550]
<------>cmp w19, w0
<------>bcs .L3169
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldr w1, [x0, 2000]
<------>cmp w1, 32
<------>bls .L3175
<------>str wzr, [x0, 2000]
<------>bl l2p_flush
<------>bl FtlVpcTblFlush
.L3175:
<------>mov w0, 0
<------>b .L3164
.L3169:
<------>mov w2, 0
<------>add x1, x29, 72
<------>mov w0, w21
<------>bl log2phys
<------>ldr w0, [x29, 72]
<------>cmn w0, #1
<------>beq .L3168
<------>add x1, x22, :lo12:.LANCHOR2
<------>ldr w0, [x23, 2000]
<------>mov w2, 1
<------>add w0, w0, 1
<------>str w0, [x23, 2000]
<------>ldr w0, [x1, 724]
<------>add w0, w0, 1
<------>str w0, [x1, 724]
<------>add x1, x29, 76
<------>mov w0, w21
<------>bl log2phys
<------>ldr w0, [x29, 72]
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>bl decrement_vpc_count
.L3168:
<------>ldrh w0, [x20, 2550]
<------>add w21, w21, 1
<------>sub w19, w19, w0
<------>b .L3167
.L3173:
<------>mov w0, -1
.L3164:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldr x23, [sp, 48]
<------>ldp x29, x30, [sp], 80
<------>ret
<------>.size ftl_discard, .-ftl_discard
<------>.align 2
<------>.global FtlDiscard
<------>.type FtlDiscard, %function
FtlDiscard:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_discard
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlDiscard, .-FtlDiscard
<------>.align 2
<------>.global ftl_read
<------>.type ftl_read, %function
ftl_read:
<------>sub sp, sp, #208
<------>adrp x4, .LANCHOR1+504
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x19, x20, [sp, 32]
<------>stp x21, x22, [sp, 48]
<------>ldr w20, [x4, #:lo12:.LANCHOR1+504]
<------>stp x23, x24, [sp, 64]
<------>stp x25, x26, [sp, 80]
<------>cmp w20, 1
<------>stp x27, x28, [sp, 96]
<------>bne .L3210
<------>mov x23, x3
<------>mov w24, w2
<------>mov w19, w1
<------>cmp w0, 16
<------>bne .L3187
<------>mov x2, x3
<------>mov w1, w24
<------>add w0, w19, 256
<------>bl FtlVendorPartRead
<------>mov w25, w0
.L3185:
<------>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
.L3187:
<------>adrp x21, .LANCHOR0
<------>add x1, x21, :lo12:.LANCHOR0
<------>ldr w0, [x1, 2584]
<------>cmp w19, w0
<------>bcs .L3210
<------>cmp w2, w0
<------>bhi .L3210
<------>add w2, w19, w2
<------>str w2, [x29, 148]
<------>cmp w0, w2
<------>bcc .L3210
<------>ldrh w0, [x1, 2550]
<------>sub w26, w2, #1
<------>adrp x7, .LANCHOR2
<------>udiv w27, w19, w0
<------>udiv w26, w26, w0
<------>sub w20, w20, w27
<------>add w0, w20, w26
<------>str w0, [x29, 172]
<------>add x0, x7, :lo12:.LANCHOR2
<------>ldr w2, [x29, 172]
<------>ldr w1, [x0, 748]
<------>add w1, w1, w24
<------>str w1, [x0, 748]
<------>ldr w1, [x0, 720]
<------>add w1, w1, w2
<------>str w1, [x0, 720]
<------>mov w1, w26
<------>mov w0, w27
<------>bl FtlCacheMetchLpa
<------>str x7, [x29, 160]
<------>cbz w0, .L3188
<------>bl FtlCacheWriteBack
.L3188:
<------>mov w22, w27
<------>adrp x0, .LC147
<------>mov w28, 0
<------>add x0, x0, :lo12:.LC147
<------>mov w25, 0
<------>str x0, [x29, 104]
<------>str wzr, [x29, 156]
<------>str wzr, [x29, 168]
.L3189:
<------>ldr w0, [x29, 172]
<------>cbnz w0, .L3206
<------>ldr x0, [x29, 160]
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldrh w0, [x0, 1456]
<------>cbz w0, .L3185
<------>mov w1, 1
<------>mov w0, 0
<------>bl ftl_do_gc
<------>b .L3185
.L3206:
<------>mov w2, 0
<------>add x1, x29, 188
<------>mov w0, w22
<------>bl log2phys
<------>ldr w4, [x29, 188]
<------>cmn w4, #1
<------>bne .L3190
<------>add x5, x21, :lo12:.LANCHOR0
<------>mov w20, 0
.L3191:
<------>ldrh w0, [x5, 2550]
<------>cmp w20, w0
<------>bcc .L3193
.L3194:
<------>ldr w0, [x29, 172]
<------>add w22, w22, 1
<------>subs w0, w0, #1
<------>str w0, [x29, 172]
<------>beq .L3198
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2472]
<------>cmp w28, w0, lsl 3
<------>bne .L3189
.L3198:
<------>cbz w28, .L3189
<------>ldr x0, [x29, 160]
<------>mov w1, w28
<------>mov w2, 0
<------>add x8, x0, :lo12:.LANCHOR2
<------>mov x20, x8
<------>ldr x0, [x8, 3584]
<------>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, 168]
<------>lsl w0, w0, 9
<------>str w0, [x29, 144]
<------>mov w0, 56
<------>umull x0, w28, w0
<------>mov x28, 0
<------>str x0, [x29, 120]
<------>add x0, x21, :lo12:.LANCHOR0
<------>str x0, [x29, 112]
.L3205:
<------>ldr x0, [x20, 3584]
<------>add x0, x0, x28
<------>ldr w1, [x0, 24]
<------>cmp w27, w1
<------>bne .L3200
<------>ldr x1, [x0, 8]
<------>ldr x0, [x20, 3640]
<------>cmp x1, x0
<------>bne .L3201
<------>ldr x0, [x29, 136]
<------>ldr w2, [x29, 144]
<------>add x1, x1, x0
<------>mov x0, x23
.L3226:
<------>bl ftl_memcpy
.L3201:
<------>ldr x1, [x20, 3584]
<------>add x0, x1, x28
<------>ldr w2, [x1, x28]
<------>cmn w2, #1
<------>bne .L3202
<------>ldr w1, [x20, 920]
<------>mov w25, w2
<------>add w1, w1, 1
<------>str w1, [x20, 920]
.L3202:
<------>ldr x1, [x0, 16]
<------>ldr w2, [x0, 24]
<------>ldr w1, [x1, 8]
<------>cmp w2, w1
<------>beq .L3203
<------>ldr w1, [x20, 920]
<------>add w1, w1, 1
<------>str w1, [x20, 920]
<------>ldp x2, x1, [x0, 8]
<------>ldr w3, [x2, 4]
<------>str w3, [sp]
<------>ldp w3, w4, [x1]
<------>ldp w5, w6, [x1, 8]
<------>ldr w7, [x2]
<------>ldr w1, [x0, 24]
<------>ldr w2, [x0, 4]
<------>ldr x0, [x29, 104]
<------>bl printk
.L3203:
<------>ldr x0, [x20, 3584]
<------>add x1, x0, x28
<------>ldr w0, [x0, x28]
<------>cmp w0, 256
<------>bne .L3204
<------>ldr w0, [x1, 4]
<------>lsr w0, w0, 10
<------>bl P2V_block_in_plane
<------>bl FtlGcRefreshBlock
.L3204:
<------>ldr x0, [x29, 120]
<------>add x28, x28, 56
<------>cmp x0, x28
<------>bne .L3205
<------>mov w28, 0
<------>b .L3189
.L3193:
<------>madd w0, w22, w0, w20
<------>cmp w19, w0
<------>bhi .L3192
<------>ldr w1, [x29, 148]
<------>cmp w1, w0
<------>bls .L3192
<------>sub w0, w0, w19
<------>str x5, [x29, 136]
<------>lsl w0, w0, 9
<------>mov w2, 512
<------>mov w1, 0
<------>add x0, x23, x0
<------>bl ftl_memset
<------>ldr x5, [x29, 136]
.L3192:
<------>add w20, w20, 1
<------>b .L3191
.L3190:
<------>mov w0, 56
<------>cmp w22, w27
<------>umull x1, w28, w0
<------>ldr x0, [x29, 160]
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldr x2, [x0, 3584]
<------>add x2, x2, x1
<------>str w4, [x2, 4]
<------>ldr x2, [x0, 3584]
<------>add x2, x2, x1
<------>bne .L3195
<------>ldr x0, [x0, 3640]
<------>str x0, [x2, 8]
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2550]
<------>udiv w4, w19, w0
<------>msub w3, w4, w0, w19
<------>str w3, [x29, 152]
<------>sub w4, w0, w3
<------>cmp w24, w4
<------>csel w3, w24, w4, ls
<------>str w3, [x29, 168]
<------>cmp w3, w0
<------>bne .L3196
<------>str x23, [x2, 8]
.L3196:
<------>ldr x0, [x29, 160]
<------>add x2, x0, :lo12:.LANCHOR2
<------>ldr x0, [x2, 3584]
<------>ldr x2, [x2, 3664]
<------>add x1, x0, x1
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2556]
<------>str w22, [x1, 24]
<------>mul w0, w0, w28
<------>add w28, w28, 1
<------>and x0, x0, 4294967292
<------>add x0, x2, x0
<------>str x0, [x1, 16]
<------>b .L3194
.L3195:
<------>cmp w22, w26
<------>bne .L3197
<------>ldr x0, [x0, 3648]
<------>str x0, [x2, 8]
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldr w3, [x29, 148]
<------>ldrh w4, [x0, 2550]
<------>mul w0, w22, w4
<------>sub w3, w3, w0
<------>str w3, [x29, 156]
<------>cmp w4, w3
<------>bne .L3196
.L3225:
<------>sub w0, w0, w19
<------>lsl w0, w0, 9
<------>add x0, x23, x0
<------>str x0, [x2, 8]
<------>b .L3196
.L3197:
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2550]
<------>mul w0, w0, w22
<------>b .L3225
.L3200:
<------>cmp w26, w1
<------>bne .L3201
<------>ldr x1, [x0, 8]
<------>ldr x0, [x20, 3648]
<------>cmp x1, x0
<------>bne .L3201
<------>ldr x0, [x29, 112]
<------>ldr w2, [x29, 132]
<------>ldrh w0, [x0, 2550]
<------>mul w0, w0, w26
<------>sub w0, w0, w19
<------>lsl w0, w0, 9
<------>add x0, x23, x0
<------>b .L3226
.L3210:
<------>mov w25, -1
<------>b .L3185
<------>.size ftl_read, .-ftl_read
<------>.align 2
<------>.global ftl_vendor_read
<------>.type ftl_vendor_read, %function
ftl_vendor_read:
<------>stp x29, x30, [sp, -16]!
<------>mov x3, x2
<------>mov w2, w1
<------>mov w1, w0
<------>add x29, sp, 0
<------>mov w0, 16
<------>bl ftl_read
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_vendor_read, .-ftl_vendor_read
<------>.align 2
<------>.global FlashBootVendorRead
<------>.type FlashBootVendorRead, %function
FlashBootVendorRead:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w19, w0
<------>str x21, [sp, 32]
<------>mov w20, w1
<------>mov x21, x2
<------>bl rknand_device_lock
<------>adrp x0, .LANCHOR1+504
<------>ldr w0, [x0, #:lo12:.LANCHOR1+504]
<------>cmp w0, 1
<------>bne .L3231
<------>mov w0, w19
<------>mov x2, x21
<------>mov w1, w20
<------>bl ftl_vendor_read
<------>mov w19, w0
.L3230:
<------>bl rknand_device_unlock
<------>ldr x21, [sp, 32]
<------>mov w0, w19
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L3231:
<------>mov w19, -1
<------>b .L3230
<------>.size FlashBootVendorRead, .-FlashBootVendorRead
<------>.align 2
<------>.global ftl_sys_read
<------>.type ftl_sys_read, %function
ftl_sys_read:
<------>stp x29, x30, [sp, -16]!
<------>mov x3, x2
<------>mov w2, w1
<------>add w1, w0, 256
<------>add x29, sp, 0
<------>mov w0, 16
<------>bl ftl_read
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_sys_read, .-ftl_sys_read
<------>.align 2
<------>.global StorageSysDataLoad
<------>.type StorageSysDataLoad, %function
StorageSysDataLoad:
<------>stp x29, x30, [sp, -32]!
<------>mov w2, 512
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x19, x1
<------>mov w1, 0
<------>mov w20, w0
<------>mov x0, x19
<------>bl ftl_memset
<------>bl rknand_device_lock
<------>mov x2, x19
<------>mov w1, 1
<------>mov w0, w20
<------>bl ftl_sys_read
<------>mov w19, w0
<------>bl rknand_device_unlock
<------>mov w0, w19
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size StorageSysDataLoad, .-StorageSysDataLoad
<------>.align 2
<------>.global FtlRead
<------>.type FtlRead, %function
FtlRead:
<------>stp x29, x30, [sp, -16]!
<------>and w0, w0, 255
<------>add x29, sp, 0
<------>bl ftl_read
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size FtlRead, .-FtlRead
<------>.align 2
<------>.global FtlInit
<------>.type FtlInit, %function
FtlInit:
<------>stp x29, x30, [sp, -48]!
<------>mov w0, -1
<------>adrp x1, .LC75
<------>add x1, x1, :lo12:.LC75
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>adrp x21, .LANCHOR1
<------>add x21, x21, :lo12:.LANCHOR1
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR2
<------>add x19, x19, :lo12:.LANCHOR2
<------>adrp x20, .LANCHOR0
<------>add x20, x20, :lo12:.LANCHOR0
<------>str w0, [x21, 504]
<------>adrp x0, .LANCHOR4+2004
<------>str wzr, [x19, 424]
<------>str wzr, [x0, #:lo12:.LANCHOR4+2004]
<------>adrp x0, .LC76
<------>add x0, x0, :lo12:.LC76
<------>bl printk
<------>add x0, x20, 176
<------>bl FtlConstantsInit
<------>bl FtlMemInit
<------>bl FtlVariablesInit
<------>ldrh w0, [x20, 2476]
<------>bl FtlFreeSysBlkQueueInit
<------>bl FtlLoadBbt
<------>cbz w0, .L3240
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>adrp x0, .LC160
<------>add x1, x1, 256
<------>add x0, x0, :lo12:.LC160
.L3255:
<------>bl printk
.L3241:
<------>mov w0, 0
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
.L3240:
<------>bl FtlSysBlkInit
<------>cbz w0, .L3242
<------>adrp x1, .LANCHOR3
<------>add x1, x1, :lo12:.LANCHOR3
<------>adrp x0, .LC161
<------>add x1, x1, 256
<------>add x0, x0, :lo12:.LC161
<------>b .L3255
.L3242:
<------>mov w1, 1
<------>str w1, [x21, 504]
<------>bl ftl_do_gc
<------>ldrh w0, [x19, 552]
<------>cmp w0, 15
<------>bhi .L3243
<------>add w21, w0, 2
<------>mov w20, 0
<------>mov w22, 65535
.L3246:
<------>ldrh w0, [x19, 800]
<------>cmp w0, w22
<------>bne .L3244
<------>ldrh w0, [x19, 1448]
<------>cmp w0, w22
<------>bne .L3244
<------>and w0, w20, 63
<------>bl List_get_gc_head_node
<------>bl FtlGcRefreshBlock
.L3244:
<------>mov w1, 1
<------>mov w0, w1
<------>bl ftl_do_gc
<------>mov w1, 1
<------>mov w0, 0
<------>bl ftl_do_gc
<------>ldrh w0, [x19, 552]
<------>cmp w0, w21
<------>bhi .L3241
<------>add w20, w20, 1
<------>cmp w20, 4096
<------>bne .L3246
<------>b .L3241
.L3243:
<------>ldrb w0, [x20, 204]
<------>cbz w0, .L3241
<------>mov w19, 128
.L3248:
<------>mov w1, 1
<------>mov w0, w1
<------>bl ftl_do_gc
<------>subs w19, w19, #1
<------>bne .L3248
<------>b .L3241
<------>.size FtlInit, .-FtlInit
<------>.align 2
<------>.global rk_ftl_init
<------>.type rk_ftl_init, %function
rk_ftl_init:
<------>stp x29, x30, [sp, -32]!
<------>mov w0, 2048
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR4
<------>add x19, x19, :lo12:.LANCHOR4
<------>bl ftl_dma32_malloc
<------>add x1, x19, 2016
<------>str x0, [x19, 2008]
<------>add x0, x19, 1584
<------>str xzr, [x19, 1584]
<------>str wzr, [x19, 1592]
<------>str xzr, [x19, 2016]
<------>bl rknand_get_reg_addr
<------>ldr x0, [x19, 1584]
<------>cbz x0, .L3261
<------>bl rk_nandc_irq_init
<------>ldr x0, [x19, 2008]
<------>mov w3, 2048
<------>mov w2, 0
<------>mov w1, 0
<------>bl FlashSramLoadStore
<------>bl rknand_flash_cs_init
<------>ldr x0, [x19, 1584]
<------>bl FlashInit
<------>mov w20, w0
<------>cbnz w0, .L3258
<------>bl FtlInit
.L3258:
<------>adrp x0, .LC162
<------>mov w1, w20
<------>add x0, x0, :lo12:.LC162
<------>bl printk
.L3256:
<------>mov w0, w20
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L3261:
<------>mov w20, -1
<------>b .L3256
<------>.size rk_ftl_init, .-rk_ftl_init
<------>.align 2
<------>.global ftl_fix_nand_power_lost_error
<------>.type ftl_fix_nand_power_lost_error, %function
ftl_fix_nand_power_lost_error:
<------>stp x29, x30, [sp, -144]!
<------>add x29, sp, 0
<------>stp x25, x26, [sp, 64]
<------>adrp x25, .LANCHOR0
<------>add x0, x25, :lo12:.LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>str x27, [sp, 80]
<------>ldrb w0, [x0, 204]
<------>cbz w0, .L3263
<------>adrp x21, .LANCHOR4
<------>add x0, x21, :lo12:.LANCHOR4
<------>adrp x20, .LANCHOR2
<------>add x19, x20, :lo12:.LANCHOR2
<------>adrp x24, .LC163
<------>add x27, x19, 560
<------>ldrh w22, [x0, 1842]
<------>add x26, x19, 608
<------>ldr x0, [x19, 520]
<------>mov w1, w22
<------>ubfiz x23, x22, 1, 16
<------>ldrh w2, [x0, x23]
<------>add x0, x24, :lo12:.LC163
<------>bl printk
<------>ldrh w0, [x19, 560]
<------>bl FtlGcRefreshOpenBlock
<------>ldrh w0, [x19, 608]
<------>bl FtlGcRefreshOpenBlock
<------>mov x0, x27
<------>bl allocate_new_data_superblock
<------>mov x0, x26
<------>mov x26, x24
<------>mov w27, 4097
<------>bl allocate_new_data_superblock
.L3265:
<------>subs w27, w27, #1
<------>beq .L3269
<------>mov w1, 1
<------>mov w0, w1
<------>bl ftl_do_gc
<------>ldr x0, [x19, 520]
<------>ldrh w0, [x0, x23]
<------>cbnz w0, .L3265
.L3269:
<------>add x24, x20, :lo12:.LANCHOR2
<------>mov w1, w22
<------>ldr x0, [x24, 520]
<------>ldrh w2, [x0, x23]
<------>add x0, x26, :lo12:.LC163
<------>bl printk
<------>ldr x0, [x24, 520]
<------>ldrh w19, [x0, x23]
<------>cbnz w19, .L3267
<------>add x12, x29, 144
<------>add x25, x25, :lo12:.LANCHOR0
<------>strh w22, [x12, -48]!
<------>mov x0, x12
<------>bl make_superblock
<------>ldrh w5, [x25, 2472]
<------>add x12, x12, 16
<------>mov w0, 0
<------>mov w6, 65535
<------>mov w7, 56
.L3270:
<------>cmp w0, w5
<------>bne .L3272
<------>add x20, x20, :lo12:.LANCHOR2
<------>mov w1, w22
<------>ldr x0, [x20, 520]
<------>ldrh w2, [x0, x23]
<------>adrp x0, .LC164
<------>add x0, x0, :lo12:.LC164
<------>bl printk
<------>ldr x0, [x20, 432]
<------>mov w2, w19
<------>mov w1, 0
<------>bl FlashEraseBlocks
<------>ldr x0, [x20, 432]
<------>mov w2, w19
<------>mov w1, 1
<------>bl FlashEraseBlocks
.L3267:
<------>add x21, x21, :lo12:.LANCHOR4
<------>mov w0, -1
<------>strh w0, [x21, 1842]
.L3263:
<------>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], 144
<------>ret
.L3272:
<------>ldrh w2, [x12]
<------>cmp w2, w6
<------>beq .L3271
<------>umull x4, w19, w7
<------>ldr x3, [x24, 432]
<------>lsl w2, w2, 10
<------>add w19, w19, 1
<------>add x3, x3, x4
<------>and w19, w19, 65535
<------>str w2, [x3, 4]
<------>ldr x1, [x24, 432]
<------>add x1, x1, x4
<------>stp xzr, xzr, [x1, 8]
.L3271:
<------>add w0, w0, 1
<------>add x12, x12, 2
<------>and w0, w0, 65535
<------>b .L3270
<------>.size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error
<------>.align 2
<------>.global rk_ftl_garbage_collect
<------>.type rk_ftl_garbage_collect, %function
rk_ftl_garbage_collect:
<------>stp x29, x30, [sp, -16]!
<------>add x29, sp, 0
<------>bl ftl_do_gc
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
<------>.align 2
<------>.global ftl_write
<------>.type ftl_write, %function
ftl_write:
<------>stp x29, x30, [sp, -272]!
<------>add x29, sp, 0
<------>stp x21, x22, [sp, 32]
<------>mov w22, w1
<------>adrp x1, .LANCHOR2
<------>add x4, x1, :lo12:.LANCHOR2
<------>stp x23, x24, [sp, 48]
<------>mov w24, w2
<------>stp x19, x20, [sp, 16]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>str x1, [x29, 168]
<------>ldr w2, [x4, 424]
<------>cbnz w2, .L3322
<------>adrp x1, .LANCHOR1
<------>add x2, x1, :lo12:.LANCHOR1
<------>str x1, [x29, 160]
<------>ldr w2, [x2, 504]
<------>cmp w2, 1
<------>bne .L3322
<------>mov x23, x3
<------>cmp w0, 16
<------>bne .L3282
<------>mov x2, x3
<------>mov w1, w24
<------>add w0, w22, 256
<------>bl FtlVendorPartWrite
.L3280:
<------>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], 272
<------>ret
.L3282:
<------>adrp x20, .LANCHOR0
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr w1, [x0, 2584]
<------>cmp w22, w1
<------>bcs .L3325
<------>cmp w24, w1
<------>bhi .L3325
<------>add w2, w22, w24
<------>cmp w1, w2
<------>bcc .L3325
<------>adrp x3, .LANCHOR4
<------>add x25, x3, :lo12:.LANCHOR4
<------>mov w1, 2048
<------>sub w2, w2, #1
<------>str x3, [x29, 152]
<------>str w1, [x25, 2024]
<------>ldrh w1, [x0, 2550]
<------>cmp w24, w1, lsl 1
<------>udiv w2, w2, w1
<------>udiv w27, w22, w1
<------>str w2, [x29, 196]
<------>sub w28, w2, w27
<------>ldr w2, [x4, 728]
<------>add w26, w28, 1
<------>add w2, w2, w26
<------>str w2, [x4, 728]
<------>ldr w2, [x4, 744]
<------>add w2, w2, w24
<------>str w2, [x4, 744]
<------>cset w2, cs
<------>str w2, [x29, 204]
<------>ldr w2, [x0, 2600]
<------>cbz w2, .L3284
<------>ldr x0, [x0, 2608]
<------>sub w2, w2, #1
<------>mov w3, 56
<------>umaddl x2, w2, w3, x0
<------>ldr w0, [x2, 24]
<------>cmp w27, w0
<------>bne .L3285
<------>ldr w0, [x4, 732]
<------>ldr x3, [x2, 8]
<------>add w0, w0, 1
<------>str w0, [x4, 732]
<------>ldr w0, [x25, 2028]
<------>add w0, w0, 1
<------>str w0, [x25, 2028]
<------>msub w0, w27, w1, w22
<------>sub w1, w1, w0
<------>cmp w24, w1
<------>lsl w0, w0, 9
<------>csel w19, w24, w1, ls
<------>add x0, x3, x0
<------>lsl w21, w19, 9
<------>mov x1, x23
<------>mov w2, w21
<------>bl ftl_memcpy
<------>cbnz w28, .L3286
<------>ldr w0, [x25, 2028]
<------>cmp w0, 2
<------>bgt .L3286
.L3322:
<------>mov w0, 0
<------>b .L3280
.L3286:
<------>sub w24, w24, w19
<------>add w22, w22, w19
<------>add x23, x23, x21
<------>add w27, w27, 1
<------>mov w26, w28
.L3285:
<------>ldr x0, [x29, 152]
<------>add x0, x0, :lo12:.LANCHOR4
<------>str wzr, [x0, 2028]
.L3284:
<------>ldr w1, [x29, 196]
<------>mov w0, w27
<------>bl FtlCacheMetchLpa
<------>cbz w0, .L3287
<------>bl FtlCacheWriteBack
.L3287:
<------>ldr x1, [x29, 168]
<------>mov w19, w27
<------>ldr x0, [x29, 152]
<------>add x25, x1, :lo12:.LANCHOR2
<------>add x0, x0, :lo12:.LANCHOR4
<------>add x1, x25, 560
<------>mov x21, x1
<------>str x1, [x29, 128]
<------>str x1, [x29, 176]
<------>str x1, [x0, 1992]
.L3288:
<------>cbnz w26, .L3316
<------>ldr w0, [x29, 196]
<------>sub w1, w0, w27
<------>mov w0, 0
<------>bl ftl_do_gc
<------>ldr x0, [x29, 168]
<------>add x0, x0, :lo12:.LANCHOR2
<------>ldrh w0, [x0, 552]
<------>cmp w0, 5
<------>bls .L3317
<------>cmp w0, 31
<------>bhi .L3322
<------>add x20, x20, :lo12:.LANCHOR0
<------>ldrb w0, [x20, 72]
<------>cbnz w0, .L3322
.L3317:
<------>ldr x0, [x29, 168]
<------>mov w20, 65535
<------>mov w21, 128
<------>add x19, x0, :lo12:.LANCHOR2
.L3320:
<------>ldrh w0, [x19, 800]
<------>cmp w0, w20
<------>bne .L3319
<------>ldrh w0, [x19, 1448]
<------>cmp w0, w20
<------>bne .L3319
<------>ldrh w0, [x19, 1450]
<------>cmp w0, w20
<------>bne .L3319
<------>and w0, w26, 7
<------>bl List_get_gc_head_node
<------>bl FtlGcRefreshBlock
.L3319:
<------>mov w1, 1
<------>strh w21, [x19, 1366]
<------>mov w0, w1
<------>strh w21, [x19, 1364]
<------>bl ftl_do_gc
<------>mov w1, 1
<------>mov w0, 0
<------>bl ftl_do_gc
<------>ldr w0, [x19, 424]
<------>cbnz w0, .L3322
<------>ldrh w0, [x19, 552]
<------>cmp w0, 2
<------>bhi .L3322
<------>add w26, w26, 1
<------>cmp w26, 256
<------>bne .L3320
<------>b .L3322
.L3316:
<------>ldrh w0, [x21, 4]
<------>cbnz w0, .L3289
<------>ldr x0, [x29, 128]
<------>cmp x21, x0
<------>bne .L3290
<------>add x0, x25, 608
<------>ldrh w1, [x0, 4]
<------>cbnz w1, .L3291
<------>bl allocate_new_data_superblock
<------>ldr x0, [x29, 160]
<------>add x0, x0, :lo12:.LANCHOR1
<------>str wzr, [x0, 3460]
.L3291:
<------>ldr x0, [x29, 176]
<------>add x21, x25, 608
<------>bl allocate_new_data_superblock
<------>ldr x0, [x29, 160]
<------>add x0, x0, :lo12:.LANCHOR1
<------>ldr w0, [x0, 3460]
<------>cmp w0, 0
<------>ldr x0, [x29, 176]
<------>csel x21, x21, x0, ne
.L3292:
<------>ldrh w0, [x21, 4]
<------>cbnz w0, .L3293
<------>mov x0, x21
<------>bl allocate_new_data_superblock
.L3293:
<------>ldr x0, [x29, 152]
<------>add x0, x0, :lo12:.LANCHOR4
<------>str x21, [x0, 1992]
.L3289:
<------>add x1, x20, :lo12:.LANCHOR0
<------>ldr w0, [x25, 3580]
<------>str wzr, [x29, 200]
<------>ldr w1, [x1, 2600]
<------>sub w0, w0, w1
<------>ldrh w1, [x21, 4]
<------>cmp w0, w26
<------>csel w0, w0, w26, ls
<------>cmp w1, w0
<------>csel w0, w1, w0, ls
<------>str w0, [x29, 124]
<------>ldr w0, [x29, 204]
<------>and w0, w0, 1
<------>str w0, [x29, 120]
<------>adrp x0, .LC165
<------>add x0, x0, :lo12:.LC165
<------>str x0, [x29, 112]
.L3294:
<------>ldr w1, [x29, 124]
<------>ldr w0, [x29, 200]
<------>cmp w0, w1
<------>bne .L3312
.L3295:
<------>ldr w0, [x29, 200]
<------>sub w26, w26, w0
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr w1, [x0, 2600]
<------>ldr w0, [x25, 3580]
<------>cmp w1, w0
<------>bcs .L3313
<------>ldr w0, [x29, 204]
<------>cbnz w0, .L3313
<------>ldrh w0, [x21, 4]
<------>cbz w0, .L3313
.L3315:
<------>str wzr, [x29, 204]
<------>b .L3288
.L3290:
<------>ldr x0, [x29, 160]
<------>add x0, x0, :lo12:.LANCHOR1
<------>str wzr, [x0, 3460]
<------>ldr x0, [x29, 128]
<------>ldrh w0, [x0, 4]
<------>cbnz w0, .L3329
<------>mov x0, x21
<------>bl allocate_new_data_superblock
<------>b .L3292
.L3329:
<------>ldr x21, [x29, 176]
<------>b .L3293
.L3312:
<------>ldrh w0, [x21, 4]
<------>cbz w0, .L3295
<------>ldr w0, [x29, 196]
<------>cmp w0, w19
<------>ldr w0, [x29, 120]
<------>cset w4, eq
<------>tst w4, w0
<------>beq .L3296
<------>ldr w0, [x29, 200]
<------>cbz w0, .L3296
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldrh w1, [x0, 2550]
<------>add w0, w22, w24
<------>msub w0, w19, w1, w0
<------>cmp w1, w0
<------>bne .L3295
.L3296:
<------>add x1, x29, 212
<------>mov w2, 0
<------>str w4, [x29, 108]
<------>mov w0, w19
<------>bl log2phys
<------>mov x0, x21
<------>bl get_new_active_ppa
<------>add x3, x20, :lo12:.LANCHOR0
<------>mov w5, 56
<------>str x3, [x29, 184]
<------>str w5, [x29, 192]
<------>ldr w6, [x3, 2600]
<------>ldr x1, [x3, 2608]
<------>umull x2, w6, w5
<------>add x1, x1, x2
<------>str w0, [x1, 4]
<------>ldr x0, [x3, 2608]
<------>add x0, x0, x2
<------>ldrh w2, [x3, 2556]
<------>str w19, [x0, 24]
<------>mul w1, w6, w2
<------>and x1, x1, 4294967292
<------>str x1, [x29, 144]
<------>ldr x1, [x25, 3672]
<------>ldr x4, [x29, 144]
<------>str x1, [x29, 136]
<------>add x28, x1, x4
<------>ldrh w1, [x3, 2554]
<------>str x28, [x0, 16]
<------>mul w1, w1, w6
<------>ldr x6, [x25, 3632]
<------>and x1, x1, 4294967292
<------>add x1, x6, x1
<------>str x1, [x0, 8]
<------>mov w1, 0
<------>mov x0, x28
<------>bl ftl_memset
<------>cmp w27, w19
<------>ldr w4, [x29, 108]
<------>cset w0, eq
<------>ldr w5, [x29, 192]
<------>orr w4, w4, w0
<------>ldr x3, [x29, 184]
<------>cbz w4, .L3297
<------>bne .L3298
<------>ldrh w2, [x3, 2550]
<------>udiv w0, w22, w2
<------>msub w0, w0, w2, w22
<------>str w0, [x29, 192]
<------>sub w2, w2, w0
<------>cmp w2, w24
<------>csel w0, w2, w24, ls
<------>str w0, [x29, 184]
.L3299:
<------>add x0, x20, :lo12:.LANCHOR0
<------>ldr w2, [x29, 184]
<------>ldrh w1, [x0, 2550]
<------>cmp w1, w2
<------>bne .L3300
<------>cmp w27, w19
<------>beq .L3330
<------>mul w1, w19, w2
<------>sub w1, w1, w22
<------>lsl w1, w1, 9
<------>add x1, x23, x1
.L3301:
<------>ldr w0, [x29, 204]
<------>add x2, x20, :lo12:.LANCHOR0
<------>cbz w0, .L3302
<------>ldr w0, [x2, 2600]
<------>mov w3, 56
<------>ldr x2, [x2, 2608]
<------>umaddl x0, w0, w3, x2
.L3348:
<------>str x1, [x0, 8]
.L3303:
<------>ldp x1, x2, [x29, 136]
<------>mov w0, -3947
<------>strh w0, [x1, x2]
<------>add x1, x20, :lo12:.LANCHOR0
<------>ldr w0, [x25, 756]
<------>stp w0, w19, [x28, 4]
<------>add w19, w19, 1
<------>add w0, w0, 1
<------>cmn w0, #1
<------>csel w0, w0, wzr, ne
<------>str w0, [x25, 756]
<------>ldr w0, [x29, 212]
<------>str w0, [x28, 12]
<------>ldrh w0, [x21]
<------>strh w0, [x28, 2]
<------>ldr w0, [x1, 2600]
<------>add w0, w0, 1
<------>str w0, [x1, 2600]
<------>ldr w0, [x29, 200]
<------>add w0, w0, 1
<------>str w0, [x29, 200]
<------>b .L3294
.L3298:
<------>ldrh w0, [x3, 2550]
<------>add w2, w22, w24
<------>str wzr, [x29, 192]
<------>msub w2, w19, w0, w2
<------>and w0, w2, 65535
<------>str w0, [x29, 184]
<------>b .L3299
.L3330:
<------>mov x1, x23
<------>b .L3301
.L3302:
<------>ldr w0, [x2, 2600]
<------>mov w4, 56
<------>ldr x3, [x2, 2608]
<------>ldrh w2, [x2, 2554]
<------>nop // between mem op and mult-accumulate
<------>umaddl x0, w0, w4, x3
.L3349:
<------>ldr x0, [x0, 8]
<------>b .L3351
.L3300:
<------>ldr w1, [x29, 212]
<------>mov w2, 56
<------>cmn w1, #1
<------>beq .L3304
<------>str w1, [x29, 220]
<------>ldr w1, [x0, 2600]
<------>ldr x0, [x0, 2608]
<------>str w19, [x29, 240]
<------>nop // between mem op and mult-accumulate
<------>umaddl x0, w1, w2, x0
<------>mov w2, 0
<------>ldp x1, x0, [x0, 8]
<------>stp x1, x0, [x29, 224]
<------>mov w1, 1
<------>add x0, x29, 216
<------>bl FlashReadPages
<------>ldr w0, [x29, 216]
<------>cmn w0, #1
<------>bne .L3305
<------>ldr w0, [x25, 920]
<------>add w0, w0, 1
<------>str w0, [x25, 920]
.L3307:
<------>ldr w0, [x29, 184]
<------>cmp w27, w19
<------>lsl w2, w0, 9
<------>bne .L3308
<------>add x0, x20, :lo12:.LANCHOR0
<------>mov w3, 56
<------>ldr w1, [x0, 2600]
<------>ldr x0, [x0, 2608]
<------>umaddl x1, w1, w3, x0
<------>ldr w0, [x29, 192]
<------>lsl w0, w0, 9
<------>ldr x3, [x1, 8]
<------>mov x1, x23
<------>add x0, x3, x0
.L3351:
<------>bl ftl_memcpy
<------>b .L3303
.L3305:
<------>ldr w0, [x28, 8]
<------>cmp w19, w0
<------>beq .L3307
<------>ldr w0, [x25, 920]
<------>mov w2, w19
<------>add w0, w0, 1
<------>str w0, [x25, 920]
<------>ldr x0, [x29, 112]
<------>ldr w1, [x28, 8]
<------>bl printk
<------>b .L3307
.L3304:
<------>ldr x1, [x0, 2608]
<------>ldr w3, [x0, 2600]
<------>umaddl x3, w3, w2, x1
<------>ldrh w2, [x0, 2554]
<------>mov w1, 0
<------>ldr x0, [x3, 8]
<------>bl ftl_memset
<------>b .L3307
.L3308:
<------>add x3, x20, :lo12:.LANCHOR0
<------>mov w4, 56
<------>ldrh w1, [x3, 2550]
<------>ldr w0, [x3, 2600]
<------>ldr x3, [x3, 2608]
<------>mul w1, w1, w19
<------>umaddl x0, w0, w4, x3
<------>sub w1, w1, w22
<------>lsl w1, w1, 9
.L3350:
<------>add x1, x23, x1
<------>b .L3349
.L3297:
<------>ldr w0, [x29, 204]
<------>ldrh w1, [x3, 2550]
<------>cbz w0, .L3309
<------>mul w1, w1, w19
<------>ldr w0, [x3, 2600]
<------>ldr x2, [x3, 2608]
<------>sub w1, w1, w22
<------>lsl w1, w1, 9
<------>add x1, x23, x1
<------>umaddl x0, w0, w5, x2
<------>b .L3348
.L3309:
<------>ldr x2, [x3, 2608]
<------>mul w1, w1, w19
<------>ldr w0, [x3, 2600]
<------>sub w1, w1, w22
<------>lsl w1, w1, 9
<------>umaddl x0, w0, w5, x2
<------>ldrh w2, [x3, 2554]
<------>b .L3350
.L3313:
<------>bl FtlCacheWriteBack
<------>add x0, x20, :lo12:.LANCHOR0
<------>cmp w26, 1
<------>str wzr, [x0, 2600]
<------>bhi .L3288
<------>b .L3315
.L3325:
<------>mov w0, -1
<------>b .L3280
<------>.size ftl_write, .-ftl_write
<------>.align 2
<------>.global ftl_vendor_write
<------>.type ftl_vendor_write, %function
ftl_vendor_write:
<------>stp x29, x30, [sp, -16]!
<------>mov x3, x2
<------>mov w2, w1
<------>mov w1, w0
<------>add x29, sp, 0
<------>mov w0, 16
<------>bl ftl_write
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_vendor_write, .-ftl_vendor_write
<------>.align 2
<------>.global FlashBootVendorWrite
<------>.type FlashBootVendorWrite, %function
FlashBootVendorWrite:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w19, w0
<------>str x21, [sp, 32]
<------>mov w20, w1
<------>mov x21, x2
<------>bl rknand_device_lock
<------>adrp x0, .LANCHOR1+504
<------>ldr w0, [x0, #:lo12:.LANCHOR1+504]
<------>cmp w0, 1
<------>bne .L3356
<------>mov w0, w19
<------>mov x2, x21
<------>mov w1, w20
<------>bl ftl_vendor_write
<------>mov w19, w0
.L3355:
<------>bl rknand_device_unlock
<------>ldr x21, [sp, 32]
<------>mov w0, w19
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L3356:
<------>mov w19, -1
<------>b .L3355
<------>.size FlashBootVendorWrite, .-FlashBootVendorWrite
<------>.align 2
<------>.global ftl_sys_write
<------>.type ftl_sys_write, %function
ftl_sys_write:
<------>stp x29, x30, [sp, -16]!
<------>mov x3, x2
<------>mov w2, w1
<------>add w1, w0, 256
<------>add x29, sp, 0
<------>mov w0, 16
<------>bl ftl_write
<------>ldp x29, x30, [sp], 16
<------>ret
<------>.size ftl_sys_write, .-ftl_sys_write
<------>.align 2
<------>.global StorageSysDataStore
<------>.type StorageSysDataStore, %function
StorageSysDataStore:
<------>stp x29, x30, [sp, -32]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x20, x1
<------>mov w19, w0
<------>bl rknand_device_lock
<------>mov x2, x20
<------>mov w1, 1
<------>mov w0, w19
<------>bl ftl_sys_write
<------>mov w19, w0
<------>bl rknand_device_unlock
<------>mov w0, w19
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size StorageSysDataStore, .-StorageSysDataStore
<------>.align 2
<------>.global FtlDumpSysBlock
<------>.type FtlDumpSysBlock, %function
FtlDumpSysBlock:
<------>sub sp, sp, #96
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x19, x20, [sp, 32]
<------>adrp x19, .LANCHOR4
<------>stp x21, x22, [sp, 48]
<------>add x19, x19, :lo12:.LANCHOR4
<------>stp x23, x24, [sp, 64]
<------>adrp x21, .LANCHOR2
<------>and w24, w0, 65535
<------>add x0, x21, :lo12:.LANCHOR2
<------>str x25, [sp, 80]
<------>add x19, x19, 1712
<------>adrp x22, .LANCHOR0
<------>adrp x23, .LC166
<------>ldr x1, [x0, 3608]
<------>add x22, x22, :lo12:.LANCHOR0
<------>ldr x0, [x0, 3656]
<------>add x23, x23, :lo12:.LC166
<------>lsl w25, w24, 10
<------>mov w20, 0
<------>stp x1, x0, [x19, 8]
.L3363:
<------>ldrh w0, [x22, 2546]
<------>cmp w20, w0
<------>blt .L3365
<------>ldp x19, x20, [sp, 32]
<------>ldp x21, x22, [sp, 48]
<------>ldp x23, x24, [sp, 64]
<------>ldp x29, x30, [sp, 16]
<------>ldr x25, [sp, 80]
<------>add sp, sp, 96
<------>ret
.L3365:
<------>orr w0, w20, w25
<------>mov w2, 1
<------>str w0, [x19, 4]
<------>mov w1, w2
<------>mov x0, x19
<------>bl FlashReadPages
<------>ldp x1, x0, [x19, 8]
<------>ldr w1, [x1]
<------>str w1, [sp]
<------>mov w1, w24
<------>ldp w4, w5, [x0]
<------>ldp w6, w7, [x0, 8]
<------>mov x0, x23
<------>ldp w2, w3, [x19]
<------>bl printk
<------>ldr x0, [x19, 16]
<------>ldr w0, [x0]
<------>cmn w0, #1
<------>beq .L3364
<------>add x0, x21, :lo12:.LANCHOR2
<------>mov w3, 768
<------>mov w2, 4
<------>ldr x1, [x0, 3608]
<------>adrp x0, .LC167
<------>add x0, x0, :lo12:.LC167
<------>bl rknand_print_hex
.L3364:
<------>add w20, w20, 1
<------>sxth w20, w20
<------>b .L3363
<------>.size FtlDumpSysBlock, .-FtlDumpSysBlock
<------>.align 2
<------>.global dump_map_info
<------>.type dump_map_info, %function
dump_map_info:
<------>sub sp, sp, #112
<------>stp x29, x30, [sp, 16]
<------>add x29, sp, 16
<------>stp x19, x20, [sp, 32]
<------>adrp x19, .LANCHOR0
<------>add x20, x19, :lo12:.LANCHOR0
<------>stp x23, x24, [sp, 64]
<------>stp x21, x22, [sp, 48]
<------>adrp x23, .LANCHOR2
<------>stp x25, x26, [sp, 80]
<------>mov x21, x19
<------>stp x27, x28, [sp, 96]
<------>add x24, x20, 2504
<------>add x26, x23, :lo12:.LANCHOR2
<------>ldrh w22, [x20, 2480]
.L3371:
<------>ldrh w0, [x20, 2482]
<------>cmp w0, w22
<------>bhi .L3377
<------>adrp x19, .LANCHOR4
<------>add x19, x19, :lo12:.LANCHOR4
<------>add x19, x19, 1712
<------>mov w22, 0
<------>adrp x26, .LANCHOR2
.L3378:
<------>add x20, x26, :lo12:.LANCHOR2
<------>ldrh w0, [x20, 3856]
<------>cmp w22, w0
<------>bge .L3381
<------>adrp x23, .LC112
<------>sbfiz x24, x22, 1, 32
<------>mov w20, 0
<------>add x23, x23, :lo12:.LC112
<------>b .L3382
.L3373:
<------>ldrb w0, [x24, x5]
<------>mov w1, w22
<------>bl V2P_block
<------>and w4, w0, 65535
<------>bl FtlBbmIsBadBlock
<------>cbnz w0, .L3372
<------>umull x2, w19, w7
<------>ldr x0, [x26, 3584]
<------>lsl w4, w4, 10
<------>add x0, x0, x2
<------>str w4, [x0, 4]
<------>ldr x1, [x26, 3584]
<------>ldr x0, [x26, 1392]
<------>add x1, x1, x2
<------>ldr x2, [x26, 1400]
<------>str x0, [x1, 8]
<------>mul w0, w19, w8
<------>add w19, w19, 1
<------>and w19, w19, 65535
<------>sdiv w0, w0, w6
<------>add x0, x2, w0, sxtw 2
<------>str x0, [x1, 16]
.L3372:
<------>add x5, x5, 1
.L3379:
<------>cmp w9, w5, uxth
<------>bhi .L3373
<------>cbnz w19, .L3374
.L3376:
<------>add w22, w22, 1
<------>and w22, w22, 65535
<------>b .L3371
.L3374:
<------>ldr x0, [x26, 3584]
<------>mov w1, w19
<------>mov w2, 1
<------>adrp x27, .LC168
<------>add x28, x23, :lo12:.LANCHOR2
<------>add x27, x27, :lo12:.LC168
<------>mov x25, 0
<------>bl FlashReadPages
<------>mov w0, 56
<------>umull x19, w19, w0
.L3375:
<------>ldr x0, [x28, 3584]
<------>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, x27
<------>ldp w3, w4, [x1]
<------>ldp w5, w6, [x1, 8]
<------>ubfx x1, x2, 10, 16
<------>bl printk
<------>cmp x25, x19
<------>beq .L3376
<------>b .L3375
.L3377:
<------>ldrh w9, [x20, 2472]
<------>mov x5, 0
<------>ldrh w8, [x20, 2556]
<------>mov w19, 0
<------>mov w7, 56
<------>mov w6, 4
<------>b .L3379
.L3380:
<------>add x25, x26, :lo12:.LANCHOR2
<------>mov w2, 1
<------>mov w1, w2
<------>ldr x0, [x25, 3712]
<------>ldrh w0, [x0, x24]
<------>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, [x25, 3712]
<------>sxth w20, w20
<------>ldr w3, [x2, 4]
<------>ldrh w1, [x1, x24]
<------>str w3, [sp, 8]
<------>ldr w2, [x2]
<------>str w2, [sp]
<------>ldp w4, w5, [x0]
<------>ldp w6, w7, [x0, 8]
<------>mov x0, x23
<------>ldp w2, w3, [x19]
<------>bl printk
.L3382:
<------>add x0, x21, :lo12:.LANCHOR0
<------>ldrh w0, [x0, 2546]
<------>cmp w20, w0
<------>blt .L3380
<------>add w22, w22, 1
<------>sxth w22, w22
<------>b .L3378
.L3381:
<------>add x21, x21, :lo12:.LANCHOR0
<------>ldr x1, [x20, 3712]
<------>mov w2, 2
<------>adrp x0, .LC169
<------>add x0, x0, :lo12:.LC169
<------>ldr w3, [x21, 2572]
<------>bl rknand_print_hex
<------>ldrh w3, [x21, 2580]
<------>mov w2, 4
<------>ldr x1, [x20, 3752]
<------>adrp x0, .LC170
<------>add x0, x0, :lo12:.LC170
<------>bl rknand_print_hex
<------>ldrh w3, [x21, 2580]
<------>mov w2, 4
<------>ldr x1, [x20, 3760]
<------>adrp x0, .LC171
<------>add x0, x0, :lo12:.LC171
<------>bl rknand_print_hex
<------>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, 112
<------>ret
<------>.size dump_map_info, .-dump_map_info
<------>.align 2
<------>.global flash_boot_enter_slc_mode
<------>.type flash_boot_enter_slc_mode, %function
flash_boot_enter_slc_mode:
<------>adrp x1, .LANCHOR0+2392
<------>ldr w2, [x1, #:lo12:.LANCHOR0+2392]
<------>mov w1, 12336
<------>movk w1, 0x5638, lsl 16
<------>cmp w2, w1
<------>bne .L3388
<------>stp x29, x30, [sp, -16]!
<------>and w0, w0, 255
<------>add x29, sp, 0
<------>bl flash_enter_slc_mode
<------>ldp x29, x30, [sp], 16
<------>ret
.L3388:
<------>ret
<------>.size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode
<------>.align 2
<------>.global flash_boot_exit_slc_mode
<------>.type flash_boot_exit_slc_mode, %function
flash_boot_exit_slc_mode:
<------>adrp x1, .LANCHOR0+2392
<------>ldr w2, [x1, #:lo12:.LANCHOR0+2392]
<------>mov w1, 12336
<------>movk w1, 0x5638, lsl 16
<------>cmp w2, w1
<------>bne .L3394
<------>stp x29, x30, [sp, -16]!
<------>and w0, w0, 255
<------>add x29, sp, 0
<------>bl flash_exit_slc_mode
<------>ldp x29, x30, [sp], 16
<------>ret
.L3394:
<------>ret
<------>.size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode
<------>.align 2
<------>.global write_idblock
<------>.type write_idblock, %function
write_idblock:
<------>stp x29, x30, [sp, -240]!
<------>add x29, sp, 0
<------>stp x23, x24, [sp, 48]
<------>adrp x24, .LANCHOR0
<------>stp x19, x20, [sp, 16]
<------>mov w19, w0
<------>add x0, x24, :lo12:.LANCHOR0
<------>stp x21, x22, [sp, 32]
<------>stp x25, x26, [sp, 64]
<------>mov x22, x1
<------>stp x27, x28, [sp, 80]
<------>mov x23, x2
<------>ldr x1, [x0, 88]
<------>ldr w20, [x0, 76]
<------>mov w0, 59392
<------>movk w0, 0x3, lsl 16
<------>ldrb w21, [x1, 9]
<------>bl ftl_malloc
<------>cbz x0, .L3421
<------>add w19, w19, 511
<------>mov x26, x0
<------>lsr w19, w19, 9
<------>cmp w19, 8
<------>bls .L3422
<------>mov w0, -1
<------>cmp w19, 500
<------>bhi .L3397
.L3399:
<------>ldr w2, [x22]
<------>mov w1, 35899
<------>movk w1, 0xfcdc, lsl 16
<------>mov w0, -1
<------>cmp w2, w1
<------>bne .L3397
<------>mul w21, w21, w20
<------>add x3, x22, 253952
<------>add x3, x3, 1532
<------>mov w2, 63871
<------>and w21, w21, 65535
<------>mov w4, 4097
<------>add w0, w21, w0
<------>add w0, w0, w19
<------>udiv w0, w0, w21
<------>str w0, [x29, 168]
<------>mov w0, 0
.L3403:
<------>ldr w1, [x3]
<------>cbnz w1, .L3400
<------>ldr w1, [x22, w0, uxtw 2]
<------>add w0, w0, 1
<------>str w1, [x3, 512]
<------>cmp w0, w4
<------>sub w2, w2, #1
<------>csel w0, w0, wzr, cc
<------>sub x3, x3, #4
<------>cmp w2, 4096
<------>bne .L3403
.L3402:
<------>add x20, x24, :lo12:.LANCHOR0
<------>mov w3, 5
<------>mov w2, 4
<------>mov x1, x23
<------>adrp x0, .LC173
<------>add x0, x0, :lo12:.LC173
<------>bl rknand_print_hex
<------>adrp x25, .LANCHOR4
<------>ldrb w2, [x20, 73]
<------>adrp x0, .LC174
<------>ldr w1, [x22, 512]
<------>add x0, x0, :lo12:.LC174
<------>bl printk
<------>add x0, x25, :lo12:.LANCHOR4
<------>ldrh w3, [x20, 202]
<------>mov w1, w19
<------>mov w2, w19
<------>ldr w4, [x0, 1644]
<------>adrp x0, .LC175
<------>add x0, x0, :lo12:.LC175
<------>bl printk
<------>str x25, [x29, 160]
<------>ldrb w0, [x20, 73]
<------>ldr w1, [x22, 512]
<------>cmp w1, w0
<------>bls .L3404
<------>str w0, [x22, 512]
.L3404:
<------>lsl w0, w19, 7
<------>add x28, x24, :lo12:.LANCHOR0
<------>str w0, [x29, 140]
<------>mov x20, 0
<------>add x0, x28, 208
<------>str wzr, [x29, 172]
<------>str x0, [x29, 152]
.L3420:
<------>ldr w1, [x23, x20, lsl 2]
<------>ldrb w0, [x28, 73]
<------>str w20, [x29, 136]
<------>cmp w1, w0
<------>bcs .L3405
<------>ldr x0, [x29, 160]
<------>add x0, x0, :lo12:.LANCHOR4
<------>ldr w0, [x0, 1644]
<------>cmp w1, w0
<------>bcc .L3405
<------>ldr w0, [x29, 168]
<------>cmp w20, 0
<------>ccmp w0, 1, 0, ne
<------>bls .L3406
<------>sub w0, w20, #1
<------>ldr w0, [x23, x0, lsl 2]
<------>add w0, w0, 1
<------>cmp w1, w0
<------>beq .L3405
.L3406:
<------>mov x2, 512
<------>mov w1, 0
<------>mov x0, x26
<------>bl memset
<------>ldr w24, [x23, x20, lsl 2]
<------>mov w2, w19
<------>ldr x0, [x28, 88]
<------>ldr w25, [x28, 76]
<------>mul w24, w21, w24
<------>ldrb w27, [x0, 9]
<------>adrp x0, .LC176
<------>mov w1, w24
<------>add x0, x0, :lo12:.LC176
<------>bl printk
<------>mov w0, 0
<------>bl flash_boot_enter_slc_mode
<------>mul w25, w25, w27
<------>udiv w1, w24, w27
<------>mov w2, 0
<------>and w25, w25, 65535
<------>mov w0, 0
<------>bl FlashEraseBlock
<------>cmp w25, w19
<------>bcs .L3425
<------>add w1, w24, w25
<------>mov w2, 0
<------>mov w0, 0
<------>bl FlashEraseBlock
<------>mov w1, 2
.L3407:
<------>mov w0, 0
<------>str w1, [x29, 144]
<------>bl flash_boot_exit_slc_mode
<------>ldr x0, [x28, 88]
<------>mov w5, 0
<------>ldr w1, [x29, 144]
<------>mov w10, 1073741823
<------>udiv w8, w24, w25
<------>ldrh w4, [x0, 10]
<------>ldrb w0, [x0, 12]
<------>msub w8, w8, w25, w24
<------>mov x25, x22
<------>lsl w4, w4, 2
<------>mul w4, w4, w1
<------>sdiv w4, w4, w0
<------>sub w0, w24, w8
<------>str w0, [x29, 144]
.L3408:
<------>cmp w4, w5
<------>bhi .L3412
<------>mov w1, w24
<------>mov w3, 0
<------>mov w2, w19
<------>adrp x0, .LC177
<------>add x0, x0, :lo12:.LC177
<------>bl printk
<------>ldr x0, [x28, 88]
<------>mov w2, w19
<------>ldr w25, [x28, 76]
<------>ldr w24, [x23, x20, lsl 2]
<------>ldrb w5, [x0, 9]
<------>adrp x0, .LC178
<------>str w5, [x29, 144]
<------>add x0, x0, :lo12:.LC178
<------>mul w24, w21, w24
<------>mul w25, w25, w5
<------>mov w1, w24
<------>bl printk
<------>and w25, w25, 65535
<------>ldr w5, [x29, 144]
<------>ldr x1, [x29, 160]
<------>mov x7, x26
<------>mov w4, 0
<------>mov w9, 4
<------>udiv w27, w24, w25
<------>add x10, x1, :lo12:.LANCHOR4
<------>msub w27, w27, w25, w24
<------>sub w8, w24, w27
<------>mul w0, w27, w5
<------>ubfx x0, x0, 2, 2
.L3413:
<------>cmp w4, w19
<------>bcc .L3415
<------>mov w1, w24
<------>mov w3, 0
<------>mov w2, w19
<------>adrp x0, .LC179
<------>add x0, x0, :lo12:.LC179
<------>bl printk
<------>mov x1, x26
<------>mov x0, x22
<------>mov x24, 0
.L3416:
<------>ldr w2, [x29, 140]
<------>cmp w24, w2
<------>bcc .L3418
<------>ldr w0, [x29, 172]
<------>add w0, w0, 1
<------>str w0, [x29, 172]
<------>b .L3405
.L3422:
<------>mov w19, 8
<------>b .L3399
.L3400:
<------>adrp x0, .LC172
<------>add x0, x0, :lo12:.LC172
<------>bl printk
<------>b .L3402
.L3425:
<------>mov w1, 1
<------>b .L3407
.L3412:
<------>add w1, w8, w5
<------>lsr w1, w1, 2
<------>cbz w1, .L3409
<------>ldr x0, [x29, 152]
<------>add w2, w1, 1
<------>ldrb w3, [x28, 204]
<------>ldrh w0, [x0, w2, sxtw 1]
<------>cbz w3, .L3410
<------>ldr w3, [x28, 2392]
<------>mov w6, 12336
<------>movk w6, 0x5638, lsl 16
<------>cmp w3, w6
<------>csel w0, w0, w2, ne
.L3410:
<------>add w0, w0, w10
<------>lsl w0, w0, 2
<------>str w0, [x29, 176]
.L3409:
<------>mov w0, 61424
<------>str w0, [x29, 180]
<------>ldr x0, [x29, 152]
<------>ldrh w7, [x0, w1, sxtw 1]
<------>ldrb w0, [x28, 204]
<------>cbz w0, .L3411
<------>ldr w0, [x28, 2392]
<------>mov w2, 12336
<------>movk w2, 0x5638, lsl 16
<------>cmp w0, w2
<------>csel w7, w7, w1, ne
.L3411:
<------>ldr w0, [x29, 144]
<------>ldrb w11, [x28, 2464]
<------>stp w10, w5, [x29, 104]
<------>stp w8, w4, [x29, 112]
<------>madd w1, w27, w7, w0
<------>ldr x0, [x29, 160]
<------>stp w7, w1, [x29, 120]
<------>add x0, x0, :lo12:.LANCHOR4
<------>str w11, [x29, 128]
<------>ldrb w0, [x0, 1650]
<------>bl FlashBchSel
<------>mov w0, 0
<------>bl flash_boot_enter_slc_mode
<------>ldr x0, [x28, 88]
<------>mov x2, x25
<------>ldr w1, [x29, 124]
<------>add x3, x29, 176
<------>add x25, x25, 2048
<------>ldrb w0, [x0, 9]
<------>udiv w1, w1, w0
<------>mov w0, 0
<------>bl FlashProgPage
<------>mov w0, 0
<------>bl flash_boot_exit_slc_mode
<------>ldr w11, [x29, 128]
<------>mov w0, w11
<------>bl FlashBchSel
<------>ldr w0, [x29, 144]
<------>ldr w7, [x29, 120]
<------>add w2, w7, 1
<------>udiv w1, w0, w27
<------>mov w0, 0
<------>bl FlashPageProgMsbFFData
<------>ldp w10, w5, [x29, 104]
<------>ldp w8, w4, [x29, 112]
<------>add w5, w5, 4
<------>and w5, w5, 65535
<------>b .L3408
.L3415:
<------>add w2, w27, w4
<------>ldr x1, [x29, 152]
<------>ldrb w3, [x28, 204]
<------>lsr w2, w2, 2
<------>sub w25, w9, w0
<------>and w25, w25, 65535
<------>ldrh w1, [x1, w2, sxtw 1]
<------>cbz w3, .L3414
<------>ldr w3, [x28, 2392]
<------>mov w6, 12336
<------>movk w6, 0x5638, lsl 16
<------>cmp w3, w6
<------>csel w1, w1, w2, ne
.L3414:
<------>add w0, w0, w8
<------>ldrb w11, [x28, 2464]
<------>stp w9, w4, [x29, 100]
<------>stp w8, w5, [x29, 108]
<------>madd w1, w5, w1, w0
<------>ldr x0, [x28, 88]
<------>str x10, [x29, 128]
<------>str w11, [x29, 124]
<------>str x7, [x29, 144]
<------>ldrb w12, [x0, 9]
<------>ldrb w0, [x10, 1650]
<------>stp w1, w12, [x29, 116]
<------>bl FlashBchSel
<------>mov w0, 0
<------>bl flash_boot_enter_slc_mode
<------>ldp w1, w12, [x29, 116]
<------>mov x3, 0
<------>ldr x7, [x29, 144]
<------>mov w0, 0
<------>udiv w1, w1, w12
<------>mov x2, x7
<------>bl FlashReadPage
<------>mov w0, 0
<------>bl flash_boot_exit_slc_mode
<------>ldr w11, [x29, 124]
<------>mov w0, w11
<------>bl FlashBchSel
<------>ldp w9, w4, [x29, 100]
<------>ubfiz x0, x25, 9, 16
<------>ldr x7, [x29, 144]
<------>add w4, w25, w4
<------>ldr x10, [x29, 128]
<------>add x7, x7, x0
<------>and w4, w4, 65535
<------>ldp w8, w5, [x29, 108]
<------>mov w0, 0
<------>b .L3413
.L3418:
<------>mov x25, x1
<------>mov x27, x0
<------>add x2, x24, 1
<------>add x1, x1, 4
<------>add x0, x0, 4
<------>ldr w4, [x25]
<------>ldr w3, [x27]
<------>cmp w4, w3
<------>beq .L3426
<------>mov x2, 512
<------>mov w1, 0
<------>mov x0, x26
<------>bl memset
<------>ldr w4, [x25]
<------>mov w3, w24
<------>ldr w5, [x27]
<------>and x24, x24, -256
<------>ldr w2, [x23, x20, lsl 2]
<------>lsl x24, x24, 2
<------>ldr w1, [x29, 136]
<------>adrp x0, .LC180
<------>add x0, x0, :lo12:.LC180
<------>bl printk
<------>mov w3, 256
<------>mov w2, 4
<------>add x1, x22, x24
<------>adrp x0, .LC181
<------>add x0, x0, :lo12:.LC181
<------>bl rknand_print_hex
<------>add x1, x26, x24
<------>mov w3, 256
<------>mov w2, 4
<------>adrp x0, .LC182
<------>add x0, x0, :lo12:.LC182
<------>bl rknand_print_hex
<------>mov w0, 0
<------>bl flash_boot_enter_slc_mode
<------>ldr w1, [x23, x20, lsl 2]
<------>mov w2, 0
<------>mov w0, 0
<------>mul w1, w21, w1
<------>bl FlashEraseBlock
<------>ldr w0, [x29, 168]
<------>cmp w0, 1
<------>bls .L3417
<------>ldr w1, [x23, x20, lsl 2]
<------>mov w2, 0
<------>mov w0, 0
<------>madd w1, w1, w21, w21
<------>bl FlashEraseBlock
.L3417:
<------>mov w0, 0
<------>bl flash_boot_exit_slc_mode
<------>ldr w1, [x23, x20, lsl 2]
<------>adrp x0, .LC183
<------>add x0, x0, :lo12:.LC183
<------>bl printk
.L3405:
<------>add x20, x20, 1
<------>cmp x20, 5
<------>bne .L3420
<------>mov x0, x26
<------>bl ftl_free
<------>ldr w0, [x29, 172]
<------>cmp w0, 0
<------>csetm w0, eq
.L3397:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x25, x26, [sp, 64]
<------>ldp x27, x28, [sp, 80]
<------>ldp x29, x30, [sp], 240
<------>ret
.L3426:
<------>mov x24, x2
<------>b .L3416
.L3421:
<------>mov w0, -1
<------>b .L3397
<------>.size write_idblock, .-write_idblock
<------>.align 2
<------>.global write_loader_lba
<------>.type write_loader_lba, %function
write_loader_lba:
<------>stp x29, x30, [sp, -112]!
<------>cmp w0, 64
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w19, w0
<------>stp x21, x22, [sp, 32]
<------>adrp x20, .LANCHOR4
<------>stp x23, x24, [sp, 48]
<------>mov w21, w1
<------>mov x24, x2
<------>bne .L3447
<------>ldr w1, [x2]
<------>mov w0, 35899
<------>movk w0, 0xfcdc, lsl 16
<------>cmp w1, w0
<------>bne .L3447
<------>add x22, x20, :lo12:.LANCHOR4
<------>mov w0, 1
<------>strb w0, [x22, 2032]
<------>mov w0, 59392
<------>movk w0, 0x3, lsl 16
<------>bl ftl_malloc
<------>mov w2, 59392
<------>mov w1, 0
<------>movk w2, 0x3, lsl 16
<------>str x0, [x22, 2040]
<------>bl ftl_memset
<------>str w19, [x22, 2048]
.L3447:
<------>add x23, x20, :lo12:.LANCHOR4
<------>ldr w2, [x24]
<------>mov w4, w21
<------>mov w3, w19
<------>adrp x0, .LC184
<------>add x0, x0, :lo12:.LC184
<------>ldr x1, [x23, 2040]
<------>bl printk
<------>ldrb w0, [x23, 2032]
<------>cbz w0, .L3446
<------>sub w0, w19, #64
<------>ldr x22, [x23, 2040]
<------>cmp w0, 499
<------>bhi .L3449
<------>mov w2, 564
<------>sub w2, w2, w19
<------>cmp w21, w2
<------>ubfiz x0, x0, 9, 25
<------>csel w2, w21, w2, ls
<------>mov x1, x24
<------>lsl w2, w2, 9
<------>add x0, x22, x0
<------>bl ftl_memcpy
.L3450:
<------>add x0, x20, :lo12:.LANCHOR4
<------>ldr w1, [x0, 2048]
<------>cmp w19, w1
<------>beq .L3459
<------>strb wzr, [x0, 2032]
<------>cbz x22, .L3460
<------>mov x0, x22
<------>bl ftl_free
.L3460:
<------>add x0, x20, :lo12:.LANCHOR4
<------>str xzr, [x0, 2040]
<------>b .L3459
.L3449:
<------>cmp w19, 563
<------>bls .L3450
<------>ldr w0, [x23, 2048]
<------>mov w1, 500
<------>sub w0, w0, #64
<------>cmp w0, 500
<------>csel w0, w0, w1, ls
<------>adrp x1, .LANCHOR0+88
<------>ldr x1, [x1, #:lo12:.LANCHOR0+88]
<------>ldrb w1, [x1, 9]
<------>cmp w1, 4
<------>beq .L3451
<------>mov w1, 2
<------>str w1, [x29, 72]
<------>mov w1, 3
<------>str w1, [x29, 76]
<------>mov w1, 4
<------>str w1, [x29, 80]
<------>mov w1, 5
<------>str w1, [x29, 84]
<------>mov w1, 6
<------>str w1, [x29, 88]
.L3452:
<------>add x2, x22, 253952
<------>mov w1, 63872
<------>add x2, x2, 1536
.L3458:
<------>ldr w3, [x2]
<------>cbz w3, .L3456
<------>add w0, w1, 128
<------>lsl w0, w0, 2
.L3457:
<------>mov x1, x22
<------>add x22, x20, :lo12:.LANCHOR4
<------>add x2, x29, 72
<------>bl write_idblock
<------>ldr x0, [x22, 2040]
<------>strb wzr, [x22, 2032]
<------>bl ftl_free
<------>str xzr, [x22, 2040]
.L3459:
<------>add x20, x20, :lo12:.LANCHOR4
<------>add w19, w19, w21
<------>str w19, [x20, 2048]
.L3446:
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x23, x24, [sp, 48]
<------>ldp x29, x30, [sp], 112
<------>ret
.L3451:
<------>add x2, x29, 72
<------>mov x1, 0
.L3455:
<------>cmp w0, 256
<------>bls .L3453
<------>lsl w3, w1, 1
<------>str w3, [x2, x1, lsl 2]
.L3454:
<------>add x1, x1, 1
<------>cmp x1, 5
<------>bne .L3455
<------>b .L3452
.L3453:
<------>str w1, [x2, x1, lsl 2]
<------>b .L3454
.L3456:
<------>sub w1, w1, #1
<------>sub x2, x2, #4
<------>cmp w1, 4096
<------>bne .L3458
<------>lsl w0, w0, 9
<------>b .L3457
<------>.size write_loader_lba, .-write_loader_lba
<------>.align 2
<------>.global FtlWrite
<------>.type FtlWrite, %function
FtlWrite:
<------>stp x29, x30, [sp, -48]!
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>and w20, w0, 255
<------>stp x21, x22, [sp, 32]
<------>sub w0, w1, #64
<------>mov w19, w1
<------>mov w21, w2
<------>mov x22, x3
<------>cmp w0, 1983
<------>bhi .L3471
<------>cbnz w20, .L3471
<------>mov x2, x3
<------>mov w1, w21
<------>mov w0, w19
<------>bl write_loader_lba
.L3471:
<------>mov x3, x22
<------>mov w2, w21
<------>mov w1, w19
<------>mov w0, w20
<------>bl ftl_write
<------>ldp x19, x20, [sp, 16]
<------>ldp x21, x22, [sp, 32]
<------>ldp x29, x30, [sp], 48
<------>ret
<------>.size FtlWrite, .-FtlWrite
<------>.align 2
<------>.global rknand_sys_storage_ioctl
<------>.type rknand_sys_storage_ioctl, %function
rknand_sys_storage_ioctl:
<------>sub sp, sp, #560
<------>mov w0, 27688
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>stp x29, x30, [sp]
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov w19, w1
<------>mov x20, x2
<------>beq .L3475
<------>bhi .L3476
<------>mov w0, 25602
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>beq .L3477
<------>bhi .L3478
<------>mov w0, 25364
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>beq .L3479
<------>add w0, w0, 237
<------>cmp w1, w0
<------>beq .L3480
.L3510:
<------>mov x19, -22
<------>b .L3473
.L3478:
<------>mov w0, 25726
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>beq .L3481
<------>add w0, w0, 1
<------>cmp w1, w0
<------>beq .L3482
<------>mov w0, 25603
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>bne .L3510
<------>adrp x0, .LC190
<------>add x0, x0, :lo12:.LC190
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 20051
<------>movk w0, 0x4144, lsl 16
<------>cmp w1, w0
<------>bne .L3490
<------>ldr w2, [x29, 44]
<------>cmp w2, 512
<------>bhi .L3490
<------>adrp x1, .LANCHOR4
<------>add x1, x1, :lo12:.LANCHOR4
<------>uxtw x2, w2
<------>add x1, x1, 2080
<------>add x0, x29, 48
.L3531:
<------>bl memcpy
<------>b .L3525
.L3476:
<------>mov w0, 30224
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>beq .L3484
<------>bhi .L3485
<------>mov w0, 27698
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>beq .L3475
<------>add w0, w0, 10
<------>cmp w1, w0
<------>bne .L3510
.L3475:
<------>mov w0, 27698
<------>movk w0, 0x4004, lsl 16
<------>cmp w19, w0
<------>bne .L3500
<------>adrp x0, .LC191
<------>add x0, x0, :lo12:.LC191
.L3527:
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 17227
<------>movk w0, 0x4c4f, lsl 16
<------>cmp w1, w0
<------>bne .L3530
<------>mov w0, 27708
<------>movk w0, 0x4004, lsl 16
<------>cmp w19, w0
<------>adrp x0, .LANCHOR4
<------>bne .L3503
<------>add x0, x0, :lo12:.LANCHOR4
<------>mov x2, 16
<------>add x1, x29, 40
<------>ldr x0, [x0, 2056]
<------>ldr w0, [x0, 20]
<------>strb w0, [x29, 48]
<------>str w0, [x29, 44]
<------>mov x0, x20
<------>bl rk_copy_to_user
<------>cbnz x0, .L3530
.L3494:
<------>mov x19, 0
.L3473:
<------>mov x0, x19
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp]
<------>add sp, sp, 560
<------>ret
.L3485:
<------>mov w0, 30226
<------>movk w0, 0x4004, lsl 16
<------>cmp w1, w0
<------>beq .L3484
<------>bcc .L3486
<------>add w0, w0, 1
<------>cmp w1, w0
<------>bne .L3510
.L3486:
<------>adrp x0, .LC196
<------>add x0, x0, :lo12:.LC196
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 17750
<------>movk w0, 0x444e, lsl 16
<------>cmp w1, w0
<------>bne .L3490
<------>ldr w2, [x29, 44]
<------>cmp w2, 504
<------>bhi .L3490
<------>mov w0, 30225
<------>add w2, w2, 8
<------>movk w0, 0x4004, lsl 16
<------>add x1, x29, 40
<------>cmp w19, w0
<------>adrp x19, .LANCHOR4
<------>add x19, x19, :lo12:.LANCHOR4
<------>bne .L3509
<------>ldr x0, [x19, 2600]
<------>bl memcpy
<------>mov w0, 2
<------>ldr x1, [x19, 2600]
<------>b .L3529
.L3480:
<------>adrp x0, .LC185
<------>add x0, x0, :lo12:.LC185
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbz x0, .L3487
.L3493:
<------>adrp x0, .LC186
<------>add x0, x0, :lo12:.LC186
<------>bl printk
.L3530:
<------>mov x19, -14
<------>b .L3473
.L3487:
<------>ldr w1, [x29, 40]
<------>mov w0, 21060
<------>movk w0, 0x4b4d, lsl 16
<------>cmp w1, w0
<------>beq .L3488
.L3490:
<------>mov x19, -1
.L3489:
<------>mov x1, x19
<------>adrp x0, .LC197
<------>add x0, x0, :lo12:.LC197
<------>bl printk
<------>b .L3473
.L3488:
<------>ldr w0, [x29, 44]
<------>cmp w0, 512
<------>bhi .L3490
<------>adrp x19, .LANCHOR4
<------>add x19, x19, :lo12:.LANCHOR4
<------>mov x2, 512
<------>add x0, x29, 40
<------>ldr x1, [x19, 2056]
<------>bl memcpy
<------>ldr w1, [x19, 2064]
<------>mov w0, 5161
<------>movk w0, 0xc059, lsl 16
<------>cmp w1, w0
<------>beq .L3491
<------>mov x2, 128
<------>mov w1, 0
<------>add x0, x29, 104
<------>stp wzr, wzr, [x29, 48]
<------>bl memset
.L3491:
<------>add x0, x29, 40
<------>mov x2, 256
<------>mov w1, 0
<------>add x0, x0, x2
<------>str wzr, [x29, 56]
<------>bl memset
.L3525:
<------>mov x2, 520
<------>add x1, x29, 40
<------>mov x0, x20
<------>bl rk_copy_to_user
<------>cbnz x0, .L3530
.L3528:
<------>mov x19, 0
<------>b .L3489
.L3477:
<------>adrp x0, .LC187
<------>add x0, x0, :lo12:.LC187
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 21060
<------>movk w0, 0x4b4d, lsl 16
<------>cmp w1, w0
<------>bne .L3490
<------>ldr w0, [x29, 44]
<------>cmp w0, 512
<------>bhi .L3490
<------>adrp x0, .LANCHOR4
<------>add x0, x0, :lo12:.LANCHOR4
<------>mov w1, 5161
<------>movk w1, 0xc059, lsl 16
<------>ldr w2, [x0, 2064]
<------>cmp w2, w1
<------>bne .L3511
<------>ldr w1, [x29, 52]
<------>mov x19, -3
<------>sub w2, w1, #1
<------>cmp w2, 127
<------>bhi .L3473
<------>ldr x19, [x0, 2056]
<------>add x0, x19, 64
<------>str w1, [x19, 12]
<------>add x1, x29, 104
<------>ldr w2, [x29, 52]
<------>bl memcpy
<------>mov x1, x19
<------>mov w0, 1
.L3529:
<------>bl StorageSysDataStore
<------>uxtw x19, w0
<------>b .L3489
.L3482:
<------>adrp x0, .LC188
<------>add x0, x0, :lo12:.LC188
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 17476
<------>movk w0, 0x4253, lsl 16
<------>cmp w1, w0
<------>bne .L3490
<------>ldr w0, [x29, 44]
<------>cmp w0, 512
<------>bhi .L3490
<------>adrp x19, .LANCHOR4
<------>add x0, x19, :lo12:.LANCHOR4
<------>ldr w0, [x0, 2068]
<------>cbz w0, .L3494
<------>add x0, x19, :lo12:.LANCHOR4
<------>mov w2, 22867
<------>movk w2, 0x4453, lsl 16
<------>ldr x1, [x0, 2072]
<------>ldr w3, [x1]
<------>cmp w3, w2
<------>beq .L3495
<------>str w2, [x1]
<------>mov w2, 504
<------>ldr x1, [x0, 2072]
<------>str w2, [x1, 4]
<------>ldr x0, [x0, 2072]
<------>stp wzr, wzr, [x0, 8]
.L3495:
<------>add x20, x19, :lo12:.LANCHOR4
<------>mov w0, 0
<------>ldr x1, [x20, 2072]
<------>str wzr, [x1, 16]
<------>bl StorageSysDataStore
<------>ldr x0, [x20, 2056]
<------>mov w1, 21060
<------>movk w1, 0x4b4d, lsl 16
<------>ldr w2, [x0]
<------>cmp w2, w1
<------>beq .L3496
<------>str w1, [x0]
<------>mov w1, 504
<------>ldr x0, [x20, 2056]
<------>str w1, [x0, 4]
<------>ldr x0, [x20, 2056]
<------>str wzr, [x0, 8]
.L3496:
<------>add x19, x19, :lo12:.LANCHOR4
<------>mov x2, 128
<------>mov w1, 0
<------>ldr x20, [x19, 2056]
<------>add x0, x20, 64
<------>str wzr, [x20, 12]
<------>bl memset
<------>mov x1, x20
<------>mov w0, 1
<------>bl StorageSysDataStore
<------>str wzr, [x19, 2064]
<------>str wzr, [x19, 2068]
<------>b .L3528
.L3481:
<------>adrp x0, .LC189
<------>add x0, x0, :lo12:.LC189
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 20037
<------>movk w0, 0x4253, lsl 16
<------>cmp w1, w0
<------>bne .L3490
<------>ldr w0, [x29, 44]
<------>cmp w0, 512
<------>bhi .L3490
<------>adrp x19, .LANCHOR4
<------>add x0, x19, :lo12:.LANCHOR4
<------>ldr w1, [x0, 2068]
<------>cmp w1, 1
<------>beq .L3494
<------>ldr x1, [x0, 2072]
<------>mov w0, 22867
<------>movk w0, 0x4453, lsl 16
<------>ldr w2, [x1]
<------>cmp w2, w0
<------>beq .L3497
<------>str w0, [x1]
<------>add x0, x19, :lo12:.LANCHOR4
<------>mov w2, 504
<------>ldr x1, [x0, 2072]
<------>str w2, [x1, 4]
<------>ldr x0, [x0, 2072]
<------>stp wzr, wzr, [x0, 8]
.L3497:
<------>add x20, x19, :lo12:.LANCHOR4
<------>mov w0, 1
<------>ldr x1, [x20, 2072]
<------>str w0, [x1, 16]
<------>mov w0, 0
<------>bl StorageSysDataStore
<------>ldr x0, [x20, 2056]
<------>mov w1, 21060
<------>movk w1, 0x4b4d, lsl 16
<------>ldr w2, [x0]
<------>cmp w2, w1
<------>beq .L3498
<------>str w1, [x0]
<------>mov w1, 504
<------>ldr x0, [x20, 2056]
<------>str w1, [x0, 4]
<------>ldr x0, [x20, 2056]
<------>str wzr, [x0, 8]
.L3498:
<------>add x19, x19, :lo12:.LANCHOR4
<------>mov x2, 128
<------>mov w1, 0
<------>ldr x20, [x19, 2056]
<------>add x0, x20, 64
<------>str wzr, [x20, 12]
<------>bl memset
<------>mov x1, x20
<------>mov w0, 1
<------>bl StorageSysDataStore
<------>mov w0, 1
<------>str w0, [x19, 2068]
<------>b .L3528
.L3500:
<------>mov w0, 27708
<------>movk w0, 0x4004, lsl 16
<------>cmp w19, w0
<------>bne .L3502
<------>adrp x0, .LC192
<------>add x0, x0, :lo12:.LC192
<------>b .L3527
.L3502:
<------>adrp x0, .LC193
<------>add x0, x0, :lo12:.LC193
<------>b .L3527
.L3503:
<------>add x20, x0, :lo12:.LANCHOR4
<------>ldr w1, [x20, 2592]
<------>cmp w1, 10
<------>bhi .L3530
<------>ldr x1, [x20, 2056]
<------>ldr w2, [x29, 44]
<------>ldr w3, [x1, 24]
<------>cmp w3, w2
<------>beq .L3504
<------>cbz w3, .L3504
<------>mov w1, w2
<------>adrp x0, .LC194
<------>add x0, x0, :lo12:.LC194
<------>bl printk
<------>ldr w0, [x20, 2592]
<------>add w0, w0, 1
<------>str w0, [x20, 2592]
<------>b .L3530
.L3504:
<------>add x0, x0, :lo12:.LANCHOR4
<------>str wzr, [x0, 2592]
<------>mov w0, 27698
<------>movk w0, 0x4004, lsl 16
<------>cmp w19, w0
<------>bne .L3505
<------>stp wzr, wzr, [x1, 20]
.L3506:
<------>mov w0, 1
<------>bl StorageSysDataStore
<------>cmn w0, #1
<------>bne .L3528
<------>mov x19, -2
<------>b .L3489
.L3505:
<------>mov w0, 1
<------>stp w0, w2, [x1, 20]
<------>b .L3506
.L3484:
<------>adrp x0, .LC195
<------>add x0, x0, :lo12:.LC195
<------>bl printk
<------>mov x2, 520
<------>mov x1, x20
<------>add x0, x29, 40
<------>bl rk_copy_from_user
<------>cbnz x0, .L3493
<------>ldr w1, [x29, 40]
<------>mov w0, 17750
<------>movk w0, 0x444e, lsl 16
<------>cmp w1, w0
<------>bne .L3490
<------>ldr w2, [x29, 44]
<------>cmp w2, 504
<------>bhi .L3490
<------>mov w0, 30224
<------>adrp x1, .LANCHOR4
<------>movk w0, 0x4004, lsl 16
<------>uxtw x2, w2
<------>cmp w19, w0
<------>add x1, x1, :lo12:.LANCHOR4
<------>add x0, x29, 48
<------>bne .L3507
<------>ldr x1, [x1, 2600]
.L3532:
<------>add x1, x1, 8
<------>b .L3531
.L3507:
<------>ldr x1, [x1, 2608]
<------>b .L3532
.L3509:
<------>ldr x0, [x19, 2608]
<------>bl memcpy
<------>mov w0, 3
<------>ldr x1, [x19, 2608]
<------>b .L3529
.L3479:
<------>bl rknand_dev_flush
<------>b .L3528
.L3511:
<------>mov x19, -2
<------>b .L3473
<------>.size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
<------>.align 2
<------>.global rk_ftl_storage_sys_init
<------>.type rk_ftl_storage_sys_init, %function
rk_ftl_storage_sys_init:
<------>stp x29, x30, [sp, -32]!
<------>mov w0, -1
<------>mov w2, 512
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x20, .LANCHOR4
<------>add x19, x20, :lo12:.LANCHOR4
<------>ldr x1, [x19, 2008]
<------>str w0, [x19, 2048]
<------>add x0, x1, 512
<------>str x0, [x19, 2056]
<------>add x0, x1, 1024
<------>str x1, [x19, 2072]
<------>str x0, [x19, 2600]
<------>add x1, x1, 1536
<------>strb wzr, [x19, 2032]
<------>add x0, x19, 2080
<------>str xzr, [x19, 2040]
<------>str xzr, [x19, 2616]
<------>str x1, [x19, 2608]
<------>bl ftl_memcpy
<------>ldr x6, [x19, 2072]
<------>str wzr, [x19, 2064]
<------>str wzr, [x19, 2592]
<------>ldr w7, [x6, 508]
<------>ldr w0, [x6, 16]
<------>str w0, [x19, 2068]
<------>cbz w7, .L3534
<------>mov w1, 508
<------>mov x0, x6
<------>bl js_hash
<------>cmp w7, w0
<------>beq .L3534
<------>str wzr, [x6, 16]
<------>adrp x0, .LC198
<------>str wzr, [x19, 2068]
<------>add x0, x0, :lo12:.LC198
<------>bl printk
.L3534:
<------>add x0, x20, :lo12:.LANCHOR4
<------>ldr w1, [x0, 2068]
<------>cbz w1, .L3535
<------>mov w1, 5161
<------>movk w1, 0xc059, lsl 16
<------>str w1, [x0, 2064]
.L3535:
<------>add x20, x20, :lo12:.LANCHOR4
<------>mov w0, 2
<------>ldr x1, [x20, 2600]
<------>bl StorageSysDataLoad
<------>ldr x1, [x20, 2608]
<------>mov w0, 3
<------>bl StorageSysDataLoad
<------>bl rknand_sys_storage_init
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
<------>.size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
<------>.align 2
<------>.global StorageSysDataDeInit
<------>.type StorageSysDataDeInit, %function
StorageSysDataDeInit:
<------>mov w0, 0
<------>ret
<------>.size StorageSysDataDeInit, .-StorageSysDataDeInit
<------>.align 2
<------>.global rk_ftl_vendor_storage_init
<------>.type rk_ftl_vendor_storage_init, %function
rk_ftl_vendor_storage_init:
<------>stp x29, x30, [sp, -80]!
<------>mov w0, 65536
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>adrp x19, .LANCHOR4
<------>add x20, x19, :lo12:.LANCHOR4
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>bl ftl_malloc
<------>str x0, [x20, 2624]
<------>cbz x0, .L3550
<------>adrp x24, .LC199
<------>mov w26, 22084
<------>mov x22, x19
<------>add x24, x24, :lo12:.LC199
<------>mov w25, 0
<------>mov w23, 0
<------>mov w21, 0
<------>movk w26, 0x524b, lsl 16
.L3548:
<------>ldr x2, [x20, 2624]
<------>mov w1, 128
<------>lsl w0, w21, 7
<------>bl FlashBootVendorRead
<------>cbnz w0, .L3546
<------>ldr x0, [x20, 2624]
<------>add x1, x0, 61440
<------>ldr w3, [x0, 4]
<------>ldr w2, [x1, 4092]
<------>ldr w1, [x0]
<------>mov x0, x24
<------>bl printk
<------>ldr x19, [x20, 2624]
<------>ldr w0, [x19]
<------>cmp w0, w26
<------>bne .L3547
<------>add x0, x19, 61440
<------>ldr w1, [x19, 4]
<------>ldr w0, [x0, 4092]
<------>cmp w0, w1
<------>bne .L3547
<------>cmp w0, w23
<------>bls .L3547
<------>mov w25, w21
<------>mov w23, w0
.L3547:
<------>add w21, w21, 1
<------>cmp w21, 2
<------>bne .L3548
<------>cbz w23, .L3549
<------>mov x2, x19
<------>mov w1, 128
<------>lsl w0, w25, 7
<------>bl FlashBootVendorRead
<------>cbnz w0, .L3546
.L3544:
<------>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
.L3549:
<------>mov w1, 0
<------>mov x2, 65536
<------>mov x0, x19
<------>bl memset
<------>mov w1, 22084
<------>mov w0, 1
<------>movk w1, 0x524b, lsl 16
<------>stp w1, w0, [x19]
<------>add x1, x19, 61440
<------>str w0, [x1, 4092]
<------>mov w0, -1032
<------>strh w0, [x19, 14]
<------>mov w0, 0
<------>b .L3544
.L3546:
<------>add x22, x22, :lo12:.LANCHOR4
<------>ldr x0, [x22, 2624]
<------>bl kfree
<------>str xzr, [x22, 2624]
<------>mov w0, -1
<------>b .L3544
.L3550:
<------>mov w0, -12
<------>b .L3544
<------>.size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init
<------>.align 2
<------>.global rk_ftl_vendor_read
<------>.type rk_ftl_vendor_read, %function
rk_ftl_vendor_read:
<------>adrp x3, .LANCHOR4+2624
<------>ldr x4, [x3, #:lo12:.LANCHOR4+2624]
<------>cbz x4, .L3558
<------>ldrh w6, [x4, 10]
<------>add x5, x4, 16
<------>mov w3, 0
.L3555:
<------>cmp w3, w6
<------>bcc .L3557
.L3558:
<------>mov w0, -1
<------>ret
.L3557:
<------>ldrh w7, [x5], 8
<------>cmp w7, w0
<------>bne .L3556
<------>stp x29, x30, [sp, -32]!
<------>add x3, x4, w3, uxtw 3
<------>mov x0, x1
<------>add x29, sp, 0
<------>str x19, [sp, 16]
<------>ldrh w19, [x3, 20]
<------>ldrh w1, [x3, 18]
<------>cmp w19, w2
<------>csel w19, w19, w2, ls
<------>add x1, x1, 1024
<------>uxtw x2, w19
<------>add x1, x4, x1
<------>bl memcpy
<------>mov w0, w19
<------>ldr x19, [sp, 16]
<------>ldp x29, x30, [sp], 32
<------>ret
.L3556:
<------>add w3, w3, 1
<------>b .L3555
<------>.size rk_ftl_vendor_read, .-rk_ftl_vendor_read
<------>.align 2
<------>.global rk_ftl_vendor_write
<------>.type rk_ftl_vendor_write, %function
rk_ftl_vendor_write:
<------>stp x29, x30, [sp, -112]!
<------>adrp x3, .LANCHOR4+2624
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>ldr x19, [x3, #:lo12:.LANCHOR4+2624]
<------>stp x21, x22, [sp, 32]
<------>stp x23, x24, [sp, 48]
<------>stp x25, x26, [sp, 64]
<------>stp x27, x28, [sp, 80]
<------>cbz x19, .L3578
<------>add w4, w2, 63
<------>ldrh w3, [x19, 10]
<------>ldrh w24, [x19, 8]
<------>mov x28, x1
<------>mov w26, w2
<------>and w22, w4, -64
<------>add x1, x19, 16
<------>mov w20, 0
.L3565:
<------>cmp w20, w3
<------>bcc .L3573
<------>ldrh w1, [x19, 14]
<------>cmp w22, w1
<------>bhi .L3578
<------>add x3, x19, w3, uxth 3
<------>strh w0, [x3, 16]
<------>and w0, w22, 65535
<------>ldrh w2, [x19, 12]
<------>strh w2, [x3, 18]
<------>strh w26, [x3, 20]
<------>add w2, w2, w0
<------>sub w0, w1, w0
<------>strh w2, [x19, 12]
<------>strh w0, [x19, 14]
<------>uxtw x2, w26
<------>mov x1, x28
<------>ldrh w0, [x3, 18]
<------>add x0, x0, 1024
<------>add x0, x19, x0
<------>bl memcpy
<------>ldrh w0, [x19, 10]
<------>add w0, w0, 1
<------>strh w0, [x19, 10]
<------>b .L3580
.L3573:
<------>ldrh w6, [x1], 8
<------>cmp w6, w0
<------>bne .L3566
<------>uxtw x23, w20
<------>add x5, x19, 1024
<------>add x21, x19, x23, lsl 3
<------>ldrh w25, [x21, 20]
<------>add w25, w25, 63
<------>and w25, w25, -64
<------>cmp w26, w25
<------>bls .L3567
<------>ldrh w0, [x19, 14]
<------>cmp w22, w0
<------>bhi .L3578
<------>add x23, x23, 2
<------>ldrh w21, [x21, 18]
<------>add x23, x19, x23, lsl 3
<------>sub w3, w3, #1
.L3568:
<------>cmp w20, w3
<------>bcc .L3569
<------>add x20, x19, w20, uxtw 3
<------>and w21, w21, 65535
<------>add x0, x5, w21, uxth
<------>uxtw x2, w26
<------>mov x1, x28
<------>strh w21, [x20, 18]
<------>strh w6, [x20, 16]
<------>strh w26, [x20, 20]
<------>bl memcpy
<------>ldrh w0, [x19, 14]
<------>and w4, w22, 65535
<------>add w21, w21, w4
<------>strh w21, [x19, 12]
<------>sub w0, w0, w4
<------>add w25, w0, w25
<------>strh w25, [x19, 14]
.L3580:
<------>ldr w0, [x19, 4]
<------>add x1, x19, 61440
<------>mov x2, x19
<------>add w0, w0, 1
<------>str w0, [x19, 4]
<------>str w0, [x1, 4092]
<------>mov w1, 128
<------>ldrh w0, [x19, 8]
<------>add w0, w0, 1
<------>and w0, w0, 65535
<------>cmp w0, 1
<------>csel w0, w0, wzr, ls
<------>strh w0, [x19, 8]
<------>lsl w0, w24, 7
<------>bl FlashBootVendorWrite
<------>mov w0, 0
.L3563:
<------>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
.L3569:
<------>add w20, w20, 1
<------>stp w3, w6, [x29, 96]
<------>add x0, x19, w20, uxtw 3
<------>str x5, [x29, 104]
<------>add x23, x23, 8
<------>ldrh w1, [x0, 16]
<------>strh w1, [x23, -8]
<------>ldrh w1, [x0, 20]
<------>strh w1, [x23, -4]
<------>strh w21, [x23, -6]
<------>ldrh w27, [x0, 20]
<------>ldrh w1, [x0, 18]
<------>add x0, x5, w21, uxtw
<------>add w27, w27, 63
<------>and w27, w27, -64
<------>add x1, x5, x1
<------>and x2, x27, 131008
<------>bl memcpy
<------>add w21, w21, w27
<------>ldr x5, [x29, 104]
<------>ldp w3, w6, [x29, 96]
<------>b .L3568
.L3567:
<------>ldrh w0, [x21, 18]
<------>uxtw x2, w26
<------>mov x1, x28
<------>add x0, x5, x0
<------>bl memcpy
<------>strh w26, [x21, 20]
<------>b .L3580
.L3566:
<------>add w20, w20, 1
<------>b .L3565
.L3578:
<------>mov w0, -1
<------>b .L3563
<------>.size rk_ftl_vendor_write, .-rk_ftl_vendor_write
<------>.align 2
<------>.global rk_ftl_vendor_storage_ioctl
<------>.type rk_ftl_vendor_storage_ioctl, %function
rk_ftl_vendor_storage_ioctl:
<------>stp x29, x30, [sp, -48]!
<------>mov w0, 4096
<------>add x29, sp, 0
<------>stp x19, x20, [sp, 16]
<------>mov x20, x2
<------>str x21, [sp, 32]
<------>mov w21, w1
<------>bl ftl_malloc
<------>cbz x0, .L3589
<------>mov w1, 30209
<------>mov x19, x0
<------>movk w1, 0x4004, lsl 16
<------>cmp w21, w1
<------>beq .L3584
<------>add w1, w1, 1
<------>cmp w21, w1
<------>beq .L3585
.L3595:
<------>mov x20, -14
<------>b .L3583
.L3584:
<------>mov x2, 8
<------>mov x1, x20
<------>bl rk_copy_from_user
<------>cbnz x0, .L3595
<------>ldr w1, [x19]
<------>mov w0, 17745
<------>movk w0, 0x5652, lsl 16
<------>cmp w1, w0
<------>beq .L3587
.L3588:
<------>mov x20, -1
.L3583:
<------>mov x0, x19
<------>bl kfree
.L3581:
<------>mov x0, x20
<------>ldr x21, [sp, 32]
<------>ldp x19, x20, [sp, 16]
<------>ldp x29, x30, [sp], 48
<------>ret
.L3587:
<------>ldrh w2, [x19, 6]
<------>add x1, x19, 8
<------>ldrh w0, [x19, 4]
<------>bl rk_ftl_vendor_read
<------>cmn w0, #1
<------>beq .L3588
<------>strh w0, [x19, 6]
<------>and x0, x0, 65535
<------>add x2, x0, 8
<------>mov x1, x19
<------>mov x0, x20
<------>bl rk_copy_to_user
<------>cbnz x0, .L3595
<------>mov x20, 0
<------>b .L3583
.L3585:
<------>mov x2, 8
<------>mov x1, x20
<------>bl rk_copy_from_user
<------>cbnz x0, .L3595
<------>ldr w1, [x19]
<------>mov w0, 17745
<------>movk w0, 0x5652, lsl 16
<------>cmp w1, w0
<------>bne .L3588
<------>ldrh w2, [x19, 6]
<------>cmp w2, 4087
<------>bhi .L3588
<------>add w2, w2, 8
<------>mov x1, x20
<------>sxtw x2, w2
<------>mov x0, x19
<------>bl rk_copy_from_user
<------>cbnz x0, .L3595
<------>ldrh w2, [x19, 6]
<------>add x1, x19, 8
<------>ldrh w0, [x19, 4]
<------>bl rk_ftl_vendor_write
<------>sxtw x20, w0
<------>b .L3583
.L3589:
<------>mov x20, -1
<------>b .L3581
<------>.size rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl
<------>.global SecureBootUnlockTryCount
<------>.global SecureBootCheckOK
<------>.global SecureBootEn
<------>.global gpVendor1Info
<------>.global gpVendor0Info
<------>.global g_idb_buffer
<------>.global gSnSectorData
<------>.global gpDrmKeyInfo
<------>.global gpBootConfig
<------>.global ftl_dma32_buffer_size
<------>.global ftl_dma32_buffer
<------>.global gLoaderBootInfo
<------>.global RK29_NANDC1_REG_BASE
<------>.global RK29_NANDC_REG_BASE
<------>.global 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 FbbtBlk
<------>.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_check_table
<------>.global p_valid_page_count_table
<------>.global g_totle_swl_count
<------>.global p_swl_mul_table
<------>.global p_erase_count_table
<------>.global g_ect_tbl_info_size
<------>.global gp_ect_tbl_info
<------>.global g_gc_num_req
<------>.global c_gc_page_buf_num
<------>.global gp_gc_page_buf_info
<------>.global p_gc_data_buf
<------>.global p_gc_spare_buf
<------>.global p_io_spare_buf
<------>.global p_io_data_buf_1
<------>.global p_io_data_buf_0
<------>.global p_sys_spare_buf
<------>.global p_vendor_data_buf
<------>.global p_sys_data_buf_1
<------>.global p_sys_data_buf
<------>.global 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 .rodata
<------>.align 3
<------>.set .LANCHOR3,. + 0
<------>.type __func__.27063, %object
<------>.size __func__.27063, 11
__func__.27063:
<------>.string "FtlMemInit"
<------>.zero 5
<------>.type samsung_14nm_slc_rr, %object
<------>.size samsung_14nm_slc_rr, 26
samsung_14nm_slc_rr:
<------>.byte 0
<------>.byte 10
<------>.byte -10
<------>.byte 20
<------>.byte -20
<------>.byte 30
<------>.byte -30
<------>.byte 40
<------>.byte -40
<------>.byte 50
<------>.byte -50
<------>.byte 60
<------>.byte -60
<------>.byte -70
<------>.byte -80
<------>.byte -90
<------>.byte -100
<------>.byte -110
<------>.byte -120
<------>.byte -9
<------>.byte 70
<------>.byte 80
<------>.byte 90
<------>.byte -125
<------>.byte -115
<------>.byte 100
<------>.zero 6
<------>.type samsung_14nm_mlc_rr, %object
<------>.size samsung_14nm_mlc_rr, 104
samsung_14nm_mlc_rr:
<------>.byte 0
<------>.byte 0
<------>.byte 0
<------>.byte 0
<------>.byte -4
<------>.byte 3
<------>.byte -4
<------>.byte -6
<------>.byte 6
<------>.byte 0
<------>.byte 6
<------>.byte -10
<------>.byte -10
<------>.byte 4
<------>.byte -10
<------>.byte 16
<------>.byte 12
<------>.byte -4
<------>.byte 12
<------>.byte 8
<------>.byte -16
<------>.byte 10
<------>.byte -16
<------>.byte 24
<------>.byte 18
<------>.byte -14
<------>.byte 18
<------>.byte -4
<------>.byte -22
<------>.byte -16
<------>.byte -22
<------>.byte -8
<------>.byte 24
<------>.byte -9
<------>.byte 24
<------>.byte 8
<------>.byte -28
<------>.byte -4
<------>.byte -28
<------>.byte 16
<------>.byte 30
<------>.byte 10
<------>.byte 30
<------>.byte 10
<------>.byte -34
<------>.byte 6
<------>.byte -34
<------>.byte 0
<------>.byte 36
<------>.byte -8
<------>.byte 36
<------>.byte -8
<------>.byte -40
<------>.byte -2
<------>.byte -40
<------>.byte -20
<------>.byte -46
<------>.byte -4
<------>.byte -46
<------>.byte -30
<------>.byte 3
<------>.byte 0
<------>.byte 3
<------>.byte -3
<------>.byte -2
<------>.byte -4
<------>.byte -2
<------>.byte -6
<------>.byte -4
<------>.byte -4
<------>.byte -4
<------>.byte -10
<------>.byte -6
<------>.byte -8
<------>.byte -6
<------>.byte -14
<------>.byte -9
<------>.byte -8
<------>.byte -9
<------>.byte -18
<------>.byte -52
<------>.byte 22
<------>.byte -52
<------>.byte 10
<------>.byte 42
<------>.byte 4
<------>.byte 42
<------>.byte 4
<------>.byte 48
<------>.byte -9
<------>.byte 48
<------>.byte 4
<------>.byte -58
<------>.byte 12
<------>.byte -58
<------>.byte 0
<------>.byte -64
<------>.byte -24
<------>.byte -64
<------>.byte -6
<------>.byte 9
<------>.byte 18
<------>.byte 9
<------>.byte 8
<------>.type __func__.27842, %object
<------>.size __func__.27842, 17
__func__.27842:
<------>.string "FtlDumpBlockInfo"
<------>.zero 7
<------>.type __func__.27861, %object
<------>.size __func__.27861, 16
__func__.27861:
<------>.string "FtlScanAllBlock"
<------>.type __func__.28129, %object
<------>.size __func__.28129, 17
__func__.28129:
<------>.string "ftl_scan_all_ppa"
<------>.zero 7
<------>.type __func__.27810, %object
<------>.size __func__.27810, 12
__func__.27810:
<------>.string "FtlCheckVpc"
<------>.zero 4
<------>.type __func__.28109, %object
<------>.size __func__.28109, 21
__func__.28109:
<------>.string "FtlVpcCheckAndModify"
<------>.zero 3
<------>.type __func__.27136, %object
<------>.size __func__.27136, 8
__func__.27136:
<------>.string "FtlInit"
<------>.data
<------>.align 3
<------>.set .LANCHOR1,. + 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
<------>.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
<------>.zero 1
<------>.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
<------>.zero 3
<------>.type ToshibaRefValue, %object
<------>.size ToshibaRefValue, 8
ToshibaRefValue:
<------>.byte 0
<------>.byte 4
<------>.byte 124
<------>.byte 120
<------>.byte 116
<------>.byte 8
<------>.byte 12
<------>.byte 112
<------>.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
<------>.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
<------>.type gFtlInitStatus, %object
<------>.size gFtlInitStatus, 4
gFtlInitStatus:
<------>.word -1
<------>.zero 4
<------>.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
<------>.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
<------>.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
<------>.zero 4
<------>.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
<------>.type ftl_gc_temp_block_bops_scan_page_addr, %object
<------>.size ftl_gc_temp_block_bops_scan_page_addr, 2
ftl_gc_temp_block_bops_scan_page_addr:
<------>.hword -1
<------>.zero 2
<------>.type power_up_flag, %object
<------>.size power_up_flag, 4
power_up_flag:
<------>.word 1
<------>.bss
<------>.align 3
<------>.set .LANCHOR0,. + 0
<------>.set .LANCHOR2,. + 4352
<------>.set .LANCHOR4,. + 8704
<------>.type gNandChipMap, %object
<------>.size gNandChipMap, 64
gNandChipMap:
<------>.zero 64
<------>.type p_blk_mode_table, %object
<------>.size p_blk_mode_table, 8
p_blk_mode_table:
<------>.zero 8
<------>.type g_slc2KBNand, %object
<------>.size g_slc2KBNand, 1
g_slc2KBNand:
<------>.zero 1
<------>.type gNandIDBResBlkNum, %object
<------>.size gNandIDBResBlkNum, 1
gNandIDBResBlkNum:
<------>.zero 1
<------>.zero 2
<------>.type gBlockPageAlignSize, %object
<------>.size gBlockPageAlignSize, 4
gBlockPageAlignSize:
<------>.zero 4
<------>.type gNandRandomizer, %object
<------>.size gNandRandomizer, 1
gNandRandomizer:
<------>.zero 1
<------>.zero 7
<------>.type gpNandParaInfo, %object
<------>.size gpNandParaInfo, 8
gpNandParaInfo:
<------>.zero 8
<------>.type gNandOptPara, %object
<------>.size gNandOptPara, 32
gNandOptPara:
<------>.zero 32
<------>.type g_retryMode, %object
<------>.size g_retryMode, 1
g_retryMode:
<------>.zero 1
<------>.type g_maxRegNum, %object
<------>.size g_maxRegNum, 1
g_maxRegNum:
<------>.zero 1
<------>.zero 6
<------>.type gpNandc, %object
<------>.size gpNandc, 8
gpNandc:
<------>.zero 8
<------>.type NANDC_FMCTL, %object
<------>.size NANDC_FMCTL, 4
NANDC_FMCTL:
<------>.zero 4
<------>.type NANDC_FMWAIT, %object
<------>.size NANDC_FMWAIT, 4
NANDC_FMWAIT:
<------>.zero 4
<------>.type NANDC_FLCTL, %object
<------>.size NANDC_FLCTL, 4
NANDC_FLCTL:
<------>.zero 4
<------>.type NANDC_BCHCTL, %object
<------>.size NANDC_BCHCTL, 4
NANDC_BCHCTL:
<------>.zero 4
<------>.type NANDC_DLL_CTL_REG0, %object
<------>.size NANDC_DLL_CTL_REG0, 4
NANDC_DLL_CTL_REG0:
<------>.zero 4
<------>.type NANDC_DLL_CTL_REG1, %object
<------>.size NANDC_DLL_CTL_REG1, 4
NANDC_DLL_CTL_REG1:
<------>.zero 4
<------>.type NANDC_RANDMZ_CFG, %object
<------>.size NANDC_RANDMZ_CFG, 4
NANDC_RANDMZ_CFG:
<------>.zero 4
<------>.type NANDC_FMWAIT_SYN, %object
<------>.size NANDC_FMWAIT_SYN, 4
NANDC_FMWAIT_SYN:
<------>.zero 4
<------>.type gNandPhyInfo, %object
<------>.size gNandPhyInfo, 28
gNandPhyInfo:
<------>.zero 28
<------>.type gFlashSlcMode, %object
<------>.size gFlashSlcMode, 1
gFlashSlcMode:
<------>.zero 1
<------>.zero 3
<------>.type slcPageToMlcPageTbl, %object
<------>.size slcPageToMlcPageTbl, 1024
slcPageToMlcPageTbl:
<------>.zero 1024
<------>.type DieAddrs, %object
<------>.size DieAddrs, 32
DieAddrs:
<------>.zero 32
<------>.type FlashWaitBusyScheduleEn, %object
<------>.size FlashWaitBusyScheduleEn, 4
FlashWaitBusyScheduleEn:
<------>.zero 4
<------>.zero 4
<------>.type gReadRetryInfo, %object
<------>.size gReadRetryInfo, 852
gReadRetryInfo:
<------>.zero 852
<------>.zero 4
<------>.type read_retry_cur_offset, %object
<------>.size read_retry_cur_offset, 4
read_retry_cur_offset:
<------>.zero 4
<------>.type IDByte, %object
<------>.size IDByte, 32
IDByte:
<------>.zero 32
<------>.type gDieOp, %object
<------>.size gDieOp, 192
gDieOp:
<------>.zero 192
<------>.type gFlashCurMode, %object
<------>.size gFlashCurMode, 1
gFlashCurMode:
<------>.zero 1
<------>.type gFlashInterfaceMode, %object
<------>.size gFlashInterfaceMode, 1
gFlashInterfaceMode:
<------>.zero 1
<------>.type gNandMaxDie, %object
<------>.size gNandMaxDie, 1
gNandMaxDie:
<------>.zero 1
<------>.zero 1
<------>.type DieCsIndex, %object
<------>.size DieCsIndex, 8
DieCsIndex:
<------>.zero 8
<------>.type gMultiPageProgEn, %object
<------>.size gMultiPageProgEn, 1
gMultiPageProgEn:
<------>.zero 1
<------>.zero 3
<------>.type g_inkDie_check_enable, %object
<------>.size g_inkDie_check_enable, 4
g_inkDie_check_enable:
<------>.zero 4
<------>.type idb_flash_slc_mode, %object
<------>.size idb_flash_slc_mode, 4
idb_flash_slc_mode:
<------>.zero 4
<------>.type gFlashToggleModeEn, %object
<------>.size gFlashToggleModeEn, 1
gFlashToggleModeEn:
<------>.zero 1
<------>.zero 3
<------>.type gBootDdrMode, %object
<------>.size gBootDdrMode, 4
gBootDdrMode:
<------>.zero 4
<------>.type gNandcVer, %object
<------>.size gNandcVer, 4
gNandcVer:
<------>.zero 4
<------>.type g_nandc_version_data, %object
<------>.size g_nandc_version_data, 4
g_nandc_version_data:
<------>.zero 4
<------>.zero 4
<------>.type gMasterTempBuf, %object
<------>.size gMasterTempBuf, 8
gMasterTempBuf:
<------>.zero 8
<------>.type gMasterInfo, %object
<------>.size gMasterInfo, 48
gMasterInfo:
<------>.zero 48
<------>.type gNandcDumpWriteEn, %object
<------>.size gNandcDumpWriteEn, 4
gNandcDumpWriteEn:
<------>.zero 4
<------>.type gNandcEccBits, %object
<------>.size gNandcEccBits, 4
gNandcEccBits:
<------>.zero 4
<------>.type gNandFlashEccBits, %object
<------>.size gNandFlashEccBits, 1
gNandFlashEccBits:
<------>.zero 1
<------>.zero 3
<------>.type c_ftl_nand_sys_blks_per_plane, %object
<------>.size c_ftl_nand_sys_blks_per_plane, 4
c_ftl_nand_sys_blks_per_plane:
<------>.zero 4
<------>.type c_ftl_nand_planes_num, %object
<------>.size c_ftl_nand_planes_num, 2
c_ftl_nand_planes_num:
<------>.zero 2
<------>.zero 2
<------>.type c_ftl_nand_max_sys_blks, %object
<------>.size c_ftl_nand_max_sys_blks, 4
c_ftl_nand_max_sys_blks:
<------>.zero 4
<------>.type c_ftl_nand_data_blks_per_plane, %object
<------>.size c_ftl_nand_data_blks_per_plane, 2
c_ftl_nand_data_blks_per_plane:
<------>.zero 2
<------>.type c_ftl_nand_blk_pre_plane, %object
<------>.size c_ftl_nand_blk_pre_plane, 2
c_ftl_nand_blk_pre_plane:
<------>.zero 2
<------>.type c_ftl_nand_max_data_blks, %object
<------>.size c_ftl_nand_max_data_blks, 4
c_ftl_nand_max_data_blks:
<------>.zero 4
<------>.type c_ftl_nand_totle_phy_blks, %object
<------>.size c_ftl_nand_totle_phy_blks, 4
c_ftl_nand_totle_phy_blks:
<------>.zero 4
<------>.type c_ftl_nand_type, %object
<------>.size c_ftl_nand_type, 2
c_ftl_nand_type:
<------>.zero 2
<------>.type c_ftl_nand_die_num, %object
<------>.size c_ftl_nand_die_num, 2
c_ftl_nand_die_num:
<------>.zero 2
<------>.type c_ftl_nand_planes_per_die, %object
<------>.size c_ftl_nand_planes_per_die, 2
c_ftl_nand_planes_per_die:
<------>.zero 2
<------>.zero 6
<------>.type p_plane_order_table, %object
<------>.size p_plane_order_table, 32
p_plane_order_table:
<------>.zero 32
<------>.type c_mlc_erase_count_value, %object
<------>.size c_mlc_erase_count_value, 2
c_mlc_erase_count_value:
<------>.zero 2
<------>.type c_ftl_nand_ext_blk_pre_plane, %object
<------>.size c_ftl_nand_ext_blk_pre_plane, 2
c_ftl_nand_ext_blk_pre_plane:
<------>.zero 2
<------>.type c_ftl_vendor_part_size, %object
<------>.size c_ftl_vendor_part_size, 2
c_ftl_vendor_part_size:
<------>.zero 2
<------>.type c_ftl_nand_blks_per_die, %object
<------>.size c_ftl_nand_blks_per_die, 2
c_ftl_nand_blks_per_die:
<------>.zero 2
<------>.type c_ftl_nand_page_pre_blk, %object
<------>.size c_ftl_nand_page_pre_blk, 2
c_ftl_nand_page_pre_blk:
<------>.zero 2
<------>.type c_ftl_nand_page_pre_slc_blk, %object
<------>.size c_ftl_nand_page_pre_slc_blk, 2
c_ftl_nand_page_pre_slc_blk:
<------>.zero 2
<------>.type c_ftl_nand_page_pre_super_blk, %object
<------>.size c_ftl_nand_page_pre_super_blk, 2
c_ftl_nand_page_pre_super_blk:
<------>.zero 2
<------>.type c_ftl_nand_sec_pre_page, %object
<------>.size c_ftl_nand_sec_pre_page, 2
c_ftl_nand_sec_pre_page:
<------>.zero 2
<------>.type c_ftl_nand_sec_pre_page_shift, %object
<------>.size c_ftl_nand_sec_pre_page_shift, 2
c_ftl_nand_sec_pre_page_shift:
<------>.zero 2
<------>.type c_ftl_nand_byte_pre_page, %object
<------>.size c_ftl_nand_byte_pre_page, 2
c_ftl_nand_byte_pre_page:
<------>.zero 2
<------>.type c_ftl_nand_byte_pre_oob, %object
<------>.size c_ftl_nand_byte_pre_oob, 2
c_ftl_nand_byte_pre_oob:
<------>.zero 2
<------>.type c_ftl_nand_reserved_blks, %object
<------>.size c_ftl_nand_reserved_blks, 2
c_ftl_nand_reserved_blks:
<------>.zero 2
<------>.type DeviceCapacity, %object
<------>.size DeviceCapacity, 4
DeviceCapacity:
<------>.zero 4
<------>.type c_ftl_nand_max_vendor_blks, %object
<------>.size c_ftl_nand_max_vendor_blks, 2
c_ftl_nand_max_vendor_blks:
<------>.zero 2
<------>.type c_ftl_nand_vendor_region_num, %object
<------>.size c_ftl_nand_vendor_region_num, 2
c_ftl_nand_vendor_region_num:
<------>.zero 2
<------>.type c_ftl_nand_map_blks_per_plane, %object
<------>.size c_ftl_nand_map_blks_per_plane, 2
c_ftl_nand_map_blks_per_plane:
<------>.zero 2
<------>.zero 2
<------>.type c_ftl_nand_max_map_blks, %object
<------>.size c_ftl_nand_max_map_blks, 4
c_ftl_nand_max_map_blks:
<------>.zero 4
<------>.type c_ftl_nand_init_sys_blks_per_plane, %object
<------>.size c_ftl_nand_init_sys_blks_per_plane, 4
c_ftl_nand_init_sys_blks_per_plane:
<------>.zero 4
<------>.type c_ftl_nand_map_region_num, %object
<------>.size c_ftl_nand_map_region_num, 2
c_ftl_nand_map_region_num:
<------>.zero 2
<------>.type c_ftl_nand_l2pmap_ram_region_num, %object
<------>.size c_ftl_nand_l2pmap_ram_region_num, 2
c_ftl_nand_l2pmap_ram_region_num:
<------>.zero 2
<------>.type g_MaxLbaSector, %object
<------>.size g_MaxLbaSector, 4
g_MaxLbaSector:
<------>.zero 4
<------>.type g_page_map_check_enable, %object
<------>.size g_page_map_check_enable, 2
g_page_map_check_enable:
<------>.zero 2
<------>.type g_totle_vendor_block, %object
<------>.size g_totle_vendor_block, 2
g_totle_vendor_block:
<------>.zero 2
<------>.type p_vendor_block_table, %object
<------>.size p_vendor_block_table, 8
p_vendor_block_table:
<------>.zero 8
<------>.type g_wr_page_num, %object
<------>.size g_wr_page_num, 4
g_wr_page_num:
<------>.zero 4
<------>.zero 4
<------>.type req_wr_io, %object
<------>.size req_wr_io, 8
req_wr_io:
<------>.zero 8
<------>.type g_MaxLpn, %object
<------>.size g_MaxLpn, 4
g_MaxLpn:
<------>.zero 4
<------>.zero 4
<------>.type gBbtInfo, %object
<------>.size gBbtInfo, 96
gBbtInfo:
<------>.zero 96
<------>.type gSysFreeQueue, %object
<------>.size gSysFreeQueue, 2056
gSysFreeQueue:
<------>.zero 2056
<------>.type g_flash_read_only_en, %object
<------>.size g_flash_read_only_en, 4
g_flash_read_only_en:
<------>.zero 4
<------>.zero 4
<------>.type req_erase, %object
<------>.size req_erase, 8
req_erase:
<------>.zero 8
<------>.type p_erase_count_table, %object
<------>.size p_erase_count_table, 8
p_erase_count_table:
<------>.zero 8
<------>.type g_totle_sys_slc_erase_count, %object
<------>.size g_totle_sys_slc_erase_count, 4
g_totle_sys_slc_erase_count:
<------>.zero 4
<------>.zero 4
<------>.type g_sys_save_data, %object
<------>.size g_sys_save_data, 48
g_sys_save_data:
<------>.zero 48
<------>.type p_data_block_list_table, %object
<------>.size p_data_block_list_table, 8
p_data_block_list_table:
<------>.zero 8
<------>.type p_data_block_list_head, %object
<------>.size p_data_block_list_head, 8
p_data_block_list_head:
<------>.zero 8
<------>.type p_valid_page_count_table, %object
<------>.size p_valid_page_count_table, 8
p_valid_page_count_table:
<------>.zero 8
<------>.type p_data_block_list_tail, %object
<------>.size p_data_block_list_tail, 8
p_data_block_list_tail:
<------>.zero 8
<------>.type g_num_data_superblocks, %object
<------>.size g_num_data_superblocks, 2
g_num_data_superblocks:
<------>.zero 2
<------>.zero 6
<------>.type p_free_data_block_list_head, %object
<------>.size p_free_data_block_list_head, 8
p_free_data_block_list_head:
<------>.zero 8
<------>.type g_num_free_superblocks, %object
<------>.size g_num_free_superblocks, 2
g_num_free_superblocks:
<------>.zero 2
<------>.zero 6
<------>.type g_active_superblock, %object
<------>.size g_active_superblock, 48
g_active_superblock:
<------>.zero 48
<------>.type g_buffer_superblock, %object
<------>.size g_buffer_superblock, 48
g_buffer_superblock:
<------>.zero 48
<------>.type g_gc_temp_superblock, %object
<------>.size g_gc_temp_superblock, 48
g_gc_temp_superblock:
<------>.zero 48
<------>.type p_l2p_ram_map, %object
<------>.size p_l2p_ram_map, 8
p_l2p_ram_map:
<------>.zero 8
<------>.type g_l2p_last_update_region_id, %object
<------>.size g_l2p_last_update_region_id, 2
g_l2p_last_update_region_id:
<------>.zero 2
<------>.type FtlUpdateVaildLpnCount, %object
<------>.size FtlUpdateVaildLpnCount, 2
FtlUpdateVaildLpnCount:
<------>.zero 2
<------>.type g_VaildLpn, %object
<------>.size g_VaildLpn, 4
g_VaildLpn:
<------>.zero 4
<------>.type g_totle_read_page_count, %object
<------>.size g_totle_read_page_count, 4
g_totle_read_page_count:
<------>.zero 4
<------>.type g_totle_discard_page_count, %object
<------>.size g_totle_discard_page_count, 4
g_totle_discard_page_count:
<------>.zero 4
<------>.type g_totle_write_page_count, %object
<------>.size g_totle_write_page_count, 4
g_totle_write_page_count:
<------>.zero 4
<------>.type g_totle_cache_write_count, %object
<------>.size g_totle_cache_write_count, 4
g_totle_cache_write_count:
<------>.zero 4
<------>.type g_totle_l2p_write_count, %object
<------>.size g_totle_l2p_write_count, 4
g_totle_l2p_write_count:
<------>.zero 4
<------>.type g_totle_gc_page_count, %object
<------>.size g_totle_gc_page_count, 4
g_totle_gc_page_count:
<------>.zero 4
<------>.type g_totle_write_sector, %object
<------>.size g_totle_write_sector, 4
g_totle_write_sector:
<------>.zero 4
<------>.type g_totle_read_sector, %object
<------>.size g_totle_read_sector, 4
g_totle_read_sector:
<------>.zero 4
<------>.type g_GlobalSysVersion, %object
<------>.size g_GlobalSysVersion, 4
g_GlobalSysVersion:
<------>.zero 4
<------>.type g_GlobalDataVersion, %object
<------>.size g_GlobalDataVersion, 4
g_GlobalDataVersion:
<------>.zero 4
<------>.type g_totle_mlc_erase_count, %object
<------>.size g_totle_mlc_erase_count, 4
g_totle_mlc_erase_count:
<------>.zero 4
<------>.type g_totle_slc_erase_count, %object
<------>.size g_totle_slc_erase_count, 4
g_totle_slc_erase_count:
<------>.zero 4
<------>.type g_totle_avg_erase_count, %object
<------>.size g_totle_avg_erase_count, 4
g_totle_avg_erase_count:
<------>.zero 4
<------>.type g_max_erase_count, %object
<------>.size g_max_erase_count, 4
g_max_erase_count:
<------>.zero 4
<------>.type g_min_erase_count, %object
<------>.size g_min_erase_count, 4
g_min_erase_count:
<------>.zero 4
<------>.type c_ftl_nand_data_op_blks_per_plane, %object
<------>.size c_ftl_nand_data_op_blks_per_plane, 2
c_ftl_nand_data_op_blks_per_plane:
<------>.zero 2
<------>.zero 2
<------>.type gSysInfo, %object
<------>.size gSysInfo, 16
gSysInfo:
<------>.zero 16
<------>.type g_gc_superblock, %object
<------>.size g_gc_superblock, 48
g_gc_superblock:
<------>.zero 48
<------>.type g_sys_ext_data, %object
<------>.size g_sys_ext_data, 512
g_sys_ext_data:
<------>.zero 512
<------>.type g_all_blk_used_slc_mode, %object
<------>.size g_all_blk_used_slc_mode, 4
g_all_blk_used_slc_mode:
<------>.zero 4
<------>.type g_gc_free_blk_threshold, %object
<------>.size g_gc_free_blk_threshold, 2
g_gc_free_blk_threshold:
<------>.zero 2
<------>.type g_gc_merge_free_blk_threshold, %object
<------>.size g_gc_merge_free_blk_threshold, 2
g_gc_merge_free_blk_threshold:
<------>.zero 2
<------>.type g_gc_skip_write_count, %object
<------>.size g_gc_skip_write_count, 4
g_gc_skip_write_count:
<------>.zero 4
<------>.type g_gc_blk_index, %object
<------>.size g_gc_blk_index, 2
g_gc_blk_index:
<------>.zero 2
<------>.zero 2
<------>.type g_in_swl_replace, %object
<------>.size g_in_swl_replace, 4
g_in_swl_replace:
<------>.zero 4
<------>.type g_gc_num_req, %object
<------>.size g_gc_num_req, 4
g_gc_num_req:
<------>.zero 4
<------>.type gp_gc_page_buf_info, %object
<------>.size gp_gc_page_buf_info, 8
gp_gc_page_buf_info:
<------>.zero 8
<------>.type p_gc_data_buf, %object
<------>.size p_gc_data_buf, 8
p_gc_data_buf:
<------>.zero 8
<------>.type p_gc_spare_buf, %object
<------>.size p_gc_spare_buf, 8
p_gc_spare_buf:
<------>.zero 8
<------>.type req_gc, %object
<------>.size req_gc, 8
req_gc:
<------>.zero 8
<------>.type c_gc_page_buf_num, %object
<------>.size c_gc_page_buf_num, 4
c_gc_page_buf_num:
<------>.zero 4
<------>.type g_gc_blk_num, %object
<------>.size g_gc_blk_num, 2
g_gc_blk_num:
<------>.zero 2
<------>.zero 2
<------>.type p_gc_blk_tbl, %object
<------>.size p_gc_blk_tbl, 8
p_gc_blk_tbl:
<------>.zero 8
<------>.type g_gc_page_offset, %object
<------>.size g_gc_page_offset, 2
g_gc_page_offset:
<------>.zero 2
<------>.zero 6
<------>.type p_gc_page_info, %object
<------>.size p_gc_page_info, 8
p_gc_page_info:
<------>.zero 8
<------>.type g_gc_next_blk, %object
<------>.size g_gc_next_blk, 2
g_gc_next_blk:
<------>.zero 2
<------>.type g_gc_next_blk_1, %object
<------>.size g_gc_next_blk_1, 2
g_gc_next_blk_1:
<------>.zero 2
<------>.type g_gc_next_blk_2, %object
<------>.size g_gc_next_blk_2, 2
g_gc_next_blk_2:
<------>.zero 2
<------>.type g_gc_next_blk_3, %object
<------>.size g_gc_next_blk_3, 2
g_gc_next_blk_3:
<------>.zero 2
<------>.type g_gc_bad_block_temp_num, %object
<------>.size g_gc_bad_block_temp_num, 2
g_gc_bad_block_temp_num:
<------>.zero 2
<------>.zero 6
<------>.type g_gc_bad_block_temp_tbl, %object
<------>.size g_gc_bad_block_temp_tbl, 34
g_gc_bad_block_temp_tbl:
<------>.zero 34
<------>.type g_gc_bad_block_gc_index, %object
<------>.size g_gc_bad_block_gc_index, 2
g_gc_bad_block_gc_index:
<------>.zero 2
<------>.type mlcPageToSlcPageTbl, %object
<------>.size mlcPageToSlcPageTbl, 2048
mlcPageToSlcPageTbl:
<------>.zero 2048
<------>.type gNandMaxChip, %object
<------>.size gNandMaxChip, 1
gNandMaxChip:
<------>.zero 1
<------>.zero 1
<------>.type gTotleBlock, %object
<------>.size gTotleBlock, 2
gTotleBlock:
<------>.zero 2
<------>.type g_free_slc_blk_num, %object
<------>.size g_free_slc_blk_num, 2
g_free_slc_blk_num:
<------>.zero 2
<------>.zero 2
<------>.type g_SlcPartLbaEndSector, %object
<------>.size g_SlcPartLbaEndSector, 4
g_SlcPartLbaEndSector:
<------>.zero 4
<------>.type g_in_gc_progress, %object
<------>.size g_in_gc_progress, 4
g_in_gc_progress:
<------>.zero 4
<------>.type g_gc_head_data_block, %object
<------>.size g_gc_head_data_block, 4
g_gc_head_data_block:
<------>.zero 4
<------>.type g_gc_head_data_block_count, %object
<------>.size g_gc_head_data_block_count, 4
g_gc_head_data_block_count:
<------>.zero 4
<------>.type g_cur_erase_blk, %object
<------>.size g_cur_erase_blk, 4
g_cur_erase_blk:
<------>.zero 4
<------>.type g_gc_refresh_block_temp_num, %object
<------>.size g_gc_refresh_block_temp_num, 2
g_gc_refresh_block_temp_num:
<------>.zero 2
<------>.zero 2
<------>.type c_wr_page_buf_num, %object
<------>.size c_wr_page_buf_num, 4
c_wr_page_buf_num:
<------>.zero 4
<------>.type req_read, %object
<------>.size req_read, 8
req_read:
<------>.zero 8
<------>.type req_gc_dst, %object
<------>.size req_gc_dst, 8
req_gc_dst:
<------>.zero 8
<------>.type req_prgm, %object
<------>.size req_prgm, 8
req_prgm:
<------>.zero 8
<------>.type p_sys_data_buf, %object
<------>.size p_sys_data_buf, 8
p_sys_data_buf:
<------>.zero 8
<------>.type p_sys_data_buf_1, %object
<------>.size p_sys_data_buf_1, 8
p_sys_data_buf_1:
<------>.zero 8
<------>.type p_vendor_data_buf, %object
<------>.size p_vendor_data_buf, 8
p_vendor_data_buf:
<------>.zero 8
<------>.type p_wr_io_data_buf, %object
<------>.size p_wr_io_data_buf, 8
p_wr_io_data_buf:
<------>.zero 8
<------>.type p_io_data_buf_0, %object
<------>.size p_io_data_buf_0, 8
p_io_data_buf_0:
<------>.zero 8
<------>.type p_io_data_buf_1, %object
<------>.size p_io_data_buf_1, 8
p_io_data_buf_1:
<------>.zero 8
<------>.type p_sys_spare_buf, %object
<------>.size p_sys_spare_buf, 8
p_sys_spare_buf:
<------>.zero 8
<------>.type p_io_spare_buf, %object
<------>.size p_io_spare_buf, 8
p_io_spare_buf:
<------>.zero 8
<------>.type p_wr_io_spare_buf, %object
<------>.size p_wr_io_spare_buf, 8
p_wr_io_spare_buf:
<------>.zero 8
<------>.type g_ect_tbl_info_size, %object
<------>.size g_ect_tbl_info_size, 2
g_ect_tbl_info_size:
<------>.zero 2
<------>.zero 6
<------>.type p_swl_mul_table, %object
<------>.size p_swl_mul_table, 8
p_swl_mul_table:
<------>.zero 8
<------>.type gp_ect_tbl_info, %object
<------>.size gp_ect_tbl_info, 8
gp_ect_tbl_info:
<------>.zero 8
<------>.type p_valid_page_count_check_table, %object
<------>.size p_valid_page_count_check_table, 8
p_valid_page_count_check_table:
<------>.zero 8
<------>.type p_map_block_table, %object
<------>.size p_map_block_table, 8
p_map_block_table:
<------>.zero 8
<------>.type p_map_block_valid_page_count, %object
<------>.size p_map_block_valid_page_count, 8
p_map_block_valid_page_count:
<------>.zero 8
<------>.type p_vendor_block_valid_page_count, %object
<------>.size p_vendor_block_valid_page_count, 8
p_vendor_block_valid_page_count:
<------>.zero 8
<------>.type p_vendor_block_ver_table, %object
<------>.size p_vendor_block_ver_table, 8
p_vendor_block_ver_table:
<------>.zero 8
<------>.type p_vendor_region_ppn_table, %object
<------>.size p_vendor_region_ppn_table, 8
p_vendor_region_ppn_table:
<------>.zero 8
<------>.type p_map_region_ppn_table, %object
<------>.size p_map_region_ppn_table, 8
p_map_region_ppn_table:
<------>.zero 8
<------>.type p_map_region_ppn_check_table, %object
<------>.size p_map_region_ppn_check_table, 8
p_map_region_ppn_check_table:
<------>.zero 8
<------>.type p_map_block_ver_table, %object
<------>.size p_map_block_ver_table, 8
p_map_block_ver_table:
<------>.zero 8
<------>.type p_l2p_map_buf, %object
<------>.size p_l2p_map_buf, 8
p_l2p_map_buf:
<------>.zero 8
<------>.type c_ftl_nand_bbm_buf_size, %object
<------>.size c_ftl_nand_bbm_buf_size, 2
c_ftl_nand_bbm_buf_size:
<------>.zero 2
<------>.zero 6
<------>.type gL2pMapInfo, %object
<------>.size gL2pMapInfo, 64
gL2pMapInfo:
<------>.zero 64
<------>.type g_totle_map_block, %object
<------>.size g_totle_map_block, 2
g_totle_map_block:
<------>.zero 2
<------>.zero 6
<------>.type g_req_cache, %object
<------>.size g_req_cache, 8
g_req_cache:
<------>.zero 8
<------>.type g_tmp_data_superblock_id, %object
<------>.size g_tmp_data_superblock_id, 2
g_tmp_data_superblock_id:
<------>.zero 2
<------>.zero 2
<------>.type g_totle_swl_count, %object
<------>.size g_totle_swl_count, 4
g_totle_swl_count:
<------>.zero 4
<------>.type ftl_gc_temp_power_lost_recovery_flag, %object
<------>.size ftl_gc_temp_power_lost_recovery_flag, 4
ftl_gc_temp_power_lost_recovery_flag:
<------>.zero 4
<------>.type g_recovery_page_min_ver, %object
<------>.size g_recovery_page_min_ver, 4
g_recovery_page_min_ver:
<------>.zero 4
<------>.type gNandIDataBuf, %object
<------>.size gNandIDataBuf, 2048
gNandIDataBuf:
<------>.zero 2048
<------>.type RK29_NANDC_REG_BASE, %object
<------>.size RK29_NANDC_REG_BASE, 8
RK29_NANDC_REG_BASE:
<------>.zero 8
<------>.type ftl_dma32_buffer_size, %object
<------>.size ftl_dma32_buffer_size, 4
ftl_dma32_buffer_size:
<------>.zero 4
<------>.zero 4
<------>.type ftl_dma32_buffer, %object
<------>.size ftl_dma32_buffer, 8
ftl_dma32_buffer:
<------>.zero 8
<------>.type gFlashPageBuffer0, %object
<------>.size gFlashPageBuffer0, 8
gFlashPageBuffer0:
<------>.zero 8
<------>.type FlashDdrTunningReadCount, %object
<------>.size FlashDdrTunningReadCount, 4
FlashDdrTunningReadCount:
<------>.zero 4
<------>.zero 4
<------>.type gpReadRetrial, %object
<------>.size gpReadRetrial, 8
gpReadRetrial:
<------>.zero 8
<------>.type gpFlashSaveInfo, %object
<------>.size gpFlashSaveInfo, 8
gpFlashSaveInfo:
<------>.zero 8
<------>.type gNandFlashInfoBlockAddr, %object
<------>.size gNandFlashInfoBlockAddr, 4
gNandFlashInfoBlockAddr:
<------>.zero 4
<------>.type gNandFlashIdbBlockAddr, %object
<------>.size gNandFlashIdbBlockAddr, 4
gNandFlashIdbBlockAddr:
<------>.zero 4
<------>.type gNandIDBResBlkNumSaveInFlash, %object
<------>.size gNandIDBResBlkNumSaveInFlash, 1
gNandIDBResBlkNumSaveInFlash:
<------>.zero 1
<------>.type g_maxRetryCount, %object
<------>.size g_maxRetryCount, 1
g_maxRetryCount:
<------>.zero 1
<------>.type gNandFlashIDBEccBits, %object
<------>.size gNandFlashIDBEccBits, 1
gNandFlashIDBEccBits:
<------>.zero 1
<------>.zero 5
<------>.type gFlashPageBuffer1, %object
<------>.size gFlashPageBuffer1, 8
gFlashPageBuffer1:
<------>.zero 8
<------>.type gFlashSpareBuffer, %object
<------>.size gFlashSpareBuffer, 8
gFlashSpareBuffer:
<------>.zero 8
<------>.type gFlashProgCheckBuffer, %object
<------>.size gFlashProgCheckBuffer, 8
gFlashProgCheckBuffer:
<------>.zero 8
<------>.type gFlashProgCheckSpareBuffer, %object
<------>.size gFlashProgCheckSpareBuffer, 8
gFlashProgCheckSpareBuffer:
<------>.zero 8
<------>.type g_nand_ecc_en, %object
<------>.size g_nand_ecc_en, 1
g_nand_ecc_en:
<------>.zero 1
<------>.type gMultiPageReadEn, %object
<------>.size gMultiPageReadEn, 1
gMultiPageReadEn:
<------>.zero 1
<------>.zero 6
<------>.type FbbtBlk, %object
<------>.size FbbtBlk, 16
FbbtBlk:
<------>.zero 16
<------>.type req_sys, %object
<------>.size req_sys, 56
req_sys:
<------>.zero 56
<------>.type g_MaxLbn, %object
<------>.size g_MaxLbn, 4
g_MaxLbn:
<------>.zero 4
<------>.zero 4
<------>.type gVendorBlkInfo, %object
<------>.size gVendorBlkInfo, 64
gVendorBlkInfo:
<------>.zero 64
<------>.type g_ect_tbl_power_up_flush, %object
<------>.size g_ect_tbl_power_up_flush, 2
g_ect_tbl_power_up_flush:
<------>.zero 2
<------>.type g_power_lost_ecc_error_blk, %object
<------>.size g_power_lost_ecc_error_blk, 2
g_power_lost_ecc_error_blk:
<------>.zero 2
<------>.type g_power_lost_recovery_flag, %object
<------>.size g_power_lost_recovery_flag, 2
g_power_lost_recovery_flag:
<------>.zero 2
<------>.zero 2
<------>.type g_recovery_page_num, %object
<------>.size g_recovery_page_num, 4
g_recovery_page_num:
<------>.zero 4
<------>.zero 4
<------>.type g_recovery_ppa_tbl, %object
<------>.size g_recovery_ppa_tbl, 128
g_recovery_ppa_tbl:
<------>.zero 128
<------>.type gc_ink_free_return_value, %object
<------>.size gc_ink_free_return_value, 2
gc_ink_free_return_value:
<------>.zero 2
<------>.type g_gc_cur_blk_valid_pages, %object
<------>.size g_gc_cur_blk_valid_pages, 2
g_gc_cur_blk_valid_pages:
<------>.zero 2
<------>.type g_gc_cur_blk_max_valid_pages, %object
<------>.size g_gc_cur_blk_max_valid_pages, 2
g_gc_cur_blk_max_valid_pages:
<------>.zero 2
<------>.zero 2
<------>.type gp_last_act_superblock, %object
<------>.size gp_last_act_superblock, 8
gp_last_act_superblock:
<------>.zero 8
<------>.type gc_discard_updated, %object
<------>.size gc_discard_updated, 4
gc_discard_updated:
<------>.zero 4
<------>.type g_LowFormat, %object
<------>.size g_LowFormat, 4
g_LowFormat:
<------>.zero 4
<------>.type gLoaderBootInfo, %object
<------>.size gLoaderBootInfo, 8
gLoaderBootInfo:
<------>.zero 8
<------>.type RK29_NANDC1_REG_BASE, %object
<------>.size RK29_NANDC1_REG_BASE, 8
RK29_NANDC1_REG_BASE:
<------>.zero 8
<------>.type g_ftl_nand_free_count, %object
<------>.size g_ftl_nand_free_count, 4
g_ftl_nand_free_count:
<------>.zero 4
<------>.type last_cache_match_count, %object
<------>.size last_cache_match_count, 4
last_cache_match_count:
<------>.zero 4
<------>.type idb_write_enable, %object
<------>.size idb_write_enable, 1
idb_write_enable:
<------>.zero 1
<------>.zero 7
<------>.type idb_buf, %object
<------>.size idb_buf, 8
idb_buf:
<------>.zero 8
<------>.type idb_last_lba, %object
<------>.size idb_last_lba, 4
idb_last_lba:
<------>.zero 4
<------>.zero 4
<------>.type gpDrmKeyInfo, %object
<------>.size gpDrmKeyInfo, 8
gpDrmKeyInfo:
<------>.zero 8
<------>.type SecureBootCheckOK, %object
<------>.size SecureBootCheckOK, 4
SecureBootCheckOK:
<------>.zero 4
<------>.type SecureBootEn, %object
<------>.size SecureBootEn, 4
SecureBootEn:
<------>.zero 4
<------>.type gpBootConfig, %object
<------>.size gpBootConfig, 8
gpBootConfig:
<------>.zero 8
<------>.type gSnSectorData, %object
<------>.size gSnSectorData, 512
gSnSectorData:
<------>.zero 512
<------>.type SecureBootUnlockTryCount, %object
<------>.size SecureBootUnlockTryCount, 4
SecureBootUnlockTryCount:
<------>.zero 4
<------>.zero 4
<------>.type gpVendor0Info, %object
<------>.size gpVendor0Info, 8
gpVendor0Info:
<------>.zero 8
<------>.type gpVendor1Info, %object
<------>.size gpVendor1Info, 8
gpVendor1Info:
<------>.zero 8
<------>.type g_idb_buffer, %object
<------>.size g_idb_buffer, 8
g_idb_buffer:
<------>.zero 8
<------>.type g_vendor, %object
<------>.size g_vendor, 8
g_vendor:
<------>.zero 8
<------>.type check_valid_page_count_table, %object
<------>.size check_valid_page_count_table, 8192
check_valid_page_count_table:
<------>.zero 8192
<------>.type g_gc_refresh_block_temp_tbl, %object
<------>.size g_gc_refresh_block_temp_tbl, 34
g_gc_refresh_block_temp_tbl:
<------>.zero 34
<------>.zero 2
<------>.type gToggleModeClkDiv, %object
<------>.size gToggleModeClkDiv, 4
gToggleModeClkDiv:
<------>.zero 4
<------>.type gpNandc1, %object
<------>.size gpNandc1, 8
gpNandc1:
<------>.zero 8
<------>.type gNandFlashResEndPageAddr, %object
<------>.size gNandFlashResEndPageAddr, 4
gNandFlashResEndPageAddr:
<------>.zero 4
<------>.type gNandFlashInfoBlockEcc, %object
<------>.size gNandFlashInfoBlockEcc, 1
gNandFlashInfoBlockEcc:
<------>.zero 1
<------>.type gFlashOnfiModeEn, %object
<------>.size gFlashOnfiModeEn, 1
gFlashOnfiModeEn:
<------>.zero 1
<------>.type gFlashSdrModeEn, %object
<------>.size gFlashSdrModeEn, 1
gFlashSdrModeEn:
<------>.zero 1
<------>.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
<------>.string "FlashEraseBlocks pageAddr error %x\n"
.LC1:
<------>.string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
.LC2:
<------>.string "FtlFreeSysBlkQueueOut free count = %d\n"
.LC3:
<------>.string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n"
.LC4:
<------>.string "FtlFreeSysBlkQueueOut = %x, free count = %d\n"
.LC5:
<------>.string "FLASH INFO:\n"
.LC6:
<------>.string "FLASH ID: %x\n"
.LC7:
<------>.string "Device Capacity: %d MB\n"
.LC8:
<------>.string "FMWAIT: %x %x %x %x\n"
.LC9:
<------>.string "FTL INFO:\n"
.LC10:
<------>.string "g_MaxLpn = 0x%x\n"
.LC11:
<------>.string "g_VaildLpn = 0x%x\n"
.LC12:
<------>.string "read_page_count = 0x%x\n"
.LC13:
<------>.string "discard_page_count = 0x%x\n"
.LC14:
<------>.string "write_page_count = 0x%x\n"
.LC15:
<------>.string "cache_write_count = 0x%x\n"
.LC16:
<------>.string "l2p_write_count = 0x%x\n"
.LC17:
<------>.string "gc_page_count = 0x%x\n"
.LC18:
<------>.string "totle_write = %d MB\n"
.LC19:
<------>.string "totle_read = %d MB\n"
.LC20:
<------>.string "GSV = 0x%x\n"
.LC21:
<------>.string "GDV = 0x%x\n"
.LC22:
<------>.string "bad blk num = %d %d\n"
.LC23:
<------>.string "free_superblocks = 0x%x\n"
.LC24:
<------>.string "mlc_EC = 0x%x\n"
.LC25:
<------>.string "slc_EC = 0x%x\n"
.LC26:
<------>.string "avg_EC = 0x%x\n"
.LC27:
<------>.string "sys_EC = 0x%x\n"
.LC28:
<------>.string "max_EC = 0x%x\n"
.LC29:
<------>.string "min_EC = 0x%x\n"
.LC30:
<------>.string "PLT = 0x%x\n"
.LC31:
<------>.string "POT = 0x%x\n"
.LC32:
<------>.string "MaxSector = 0x%x\n"
.LC33:
<------>.string "init_sys_blks_pp = 0x%x\n"
.LC34:
<------>.string "sys_blks_pp = 0x%x\n"
.LC35:
<------>.string "free sysblock = 0x%x\n"
.LC36:
<------>.string "data_blks_pp = 0x%x\n"
.LC37:
<------>.string "data_op_blks_pp = 0x%x\n"
.LC38:
<------>.string "max_data_blks = 0x%x\n"
.LC39:
<------>.string "Sys.id = 0x%x\n"
.LC40:
<------>.string "Bbt.id = 0x%x\n"
.LC41:
<------>.string "ACT.page = 0x%x\n"
.LC42:
<------>.string "ACT.plane = 0x%x\n"
.LC43:
<------>.string "ACT.id = 0x%x\n"
.LC44:
<------>.string "ACT.mode = 0x%x\n"
.LC45:
<------>.string "ACT.a_pages = 0x%x\n"
.LC46:
<------>.string "ACT VPC = 0x%x\n"
.LC47:
<------>.string "BUF.page = 0x%x\n"
.LC48:
<------>.string "BUF.plane = 0x%x\n"
.LC49:
<------>.string "BUF.id = 0x%x\n"
.LC50:
<------>.string "BUF.mode = 0x%x\n"
.LC51:
<------>.string "BUF.a_pages = 0x%x\n"
.LC52:
<------>.string "BUF VPC = 0x%x\n"
.LC53:
<------>.string "TMP.page = 0x%x\n"
.LC54:
<------>.string "TMP.plane = 0x%x\n"
.LC55:
<------>.string "TMP.id = 0x%x\n"
.LC56:
<------>.string "TMP.mode = 0x%x\n"
.LC57:
<------>.string "TMP.a_pages = 0x%x\n"
.LC58:
<------>.string "GC.page = 0x%x\n"
.LC59:
<------>.string "GC.plane = 0x%x\n"
.LC60:
<------>.string "GC.id = 0x%x\n"
.LC61:
<------>.string "GC.mode = 0x%x\n"
.LC62:
<------>.string "GC.a_pages = 0x%x\n"
.LC63:
<------>.string "WR_CHK = 0x%x %x %x %x\n"
.LC64:
<------>.string "Read Err = 0x%x\n"
.LC65:
<------>.string "Prog Err = 0x%x\n"
.LC66:
<------>.string "gc_free_blk_th= 0x%x\n"
.LC67:
<------>.string "gc_merge_free_blk_th= 0x%x\n"
.LC68:
<------>.string "gc_skip_write_count= 0x%x\n"
.LC69:
<------>.string "gc_blk_index= 0x%x\n"
.LC70:
<------>.string "free min EC= 0x%x\n"
.LC71:
<------>.string "free max EC= 0x%x\n"
.LC72:
<------>.string "GC__SB VPC = 0x%x\n"
.LC73:
<------>.string "%d. [0x%x]=0x%x 0x%x 0x%x\n"
.LC74:
<------>.string "free %d. [0x%x] 0x%x 0x%x\n"
.LC75:
<------>.string "FTL version: 5.0.63 20210616"
.LC76:
<------>.string "%s\n"
.LC77:
<------>.string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
.LC78:
<------>.string "FtlGcRefreshBlock 0x%x\n"
.LC79:
<------>.string "FtlGcMarkBadPhyBlk %d 0x%x\n"
.LC80:
<------>.string "%s error allocating memory. return -1\n"
.LC81:
<------>.string "%s %p:0x%x:"
.LC82:
<------>.string "%x "
.LC83:
<------>.string ""
.LC84:
<------>.string "otp error! %d"
.LC85:
<------>.string "rr"
.LC86:
<------>.string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n"
.LC87:
<------>.string "nandc:"
.LC88:
<------>.string "%d flReg.d32=%x %x\n"
.LC89:
<------>.string "sdr read ok %x ecc=%d\n"
.LC90:
<------>.string "sync para %d\n"
.LC91:
<------>.string "TOG mode Read error %x %x\n"
.LC92:
<------>.string "read retry status %x %x %x\n"
.LC93:
<------>.string "micron RR %d row=%x,count %d,status=%d\n"
.LC94:
<------>.string "samsung RR %d row=%x,count %d,status=%d\n"
.LC95:
<------>.string "ECC:%d\n"
.LC96:
<------>.string "No.%d FLASH ID:%x %x %x %x %x %x\n"
.LC97:
<------>.string "FlashLoadPhyInfo fail %x!!\n"
.LC98:
<------>.string "Read pageadd=%x ecc=%x err=%x\n"
.LC99:
<------>.string "data:"
.LC100:
<------>.string "spare:"
.LC101:
<------>.string "ReadRetry pageadd=%x ecc=%x err=%x\n"
.LC102:
<------>.string "FLFB:%d %d\n"
.LC103:
<------>.string "prog error: = %x\n"
.LC104:
<------>.string "prog read error: = %x\n"
.LC105:
<------>.string "prog read REFRESH: = %x\n"
.LC106:
<------>.string "prog read s error: = %x %x %x\n"
.LC107:
<------>.string "prog read d error: = %x %x %x\n"
.LC108:
<------>.string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n"
.LC109:
<------>.string "...%s enter...\n"
.LC110:
<------>.string "superBlkID = %x vpc=%x\n"
.LC111:
<------>.string "flashmode = %x pagenum = %x %x\n"
.LC112:
<------>.string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n"
.LC113:
<------>.string "blk = %x vpc=%x mode = %x\n"
.LC114:
<------>.string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n"
.LC115:
<------>.string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n"
.LC116:
<------>.string "ftl_scan_all_ppa blk %x page %x flag: %x\n"
.LC117:
<------>.string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n"
.LC118:
<------>.string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n"
.LC119:
<------>.string "%s finished\n"
.LC120:
<------>.string "FlashMakeFactorBbt %d\n"
.LC121:
<------>.string "bad block:%d %d\n"
.LC122:
<------>.string "FMFB:%d %d\n"
.LC123:
<------>.string "E:bad block:%d\n"
.LC124:
<------>.string "FMFB:Save %d %d\n"
.LC125:
<------>.string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
.LC126:
<------>.string "FtlBbmTblFlush error:%x\n"
.LC127:
<------>.string "FtlBbmTblFlush error = %x error count = %d\n"
.LC128:
<------>.string "FtlGcFreeBadSuperBlk 0x%x\n"
.LC129:
<------>.string "decrement_vpc_count %x = %d\n"
.LC130:
<------>.string "decrement_vpc_count %x = %d in free list\n"
.LC131:
<------>.string "FtlVpcTblFlush error = %x error count = %d\n"
.LC132:
<------>.string "page map lost: %x %x\n"
.LC133:
<------>.string "FtlMapWritePage error = %x\n"
.LC134:
<------>.string "FtlMapWritePage error = %x error count = %d\n"
.LC135:
<------>.string "FtlVendorPartRead refresh = %x phyAddr = %x\n"
.LC136:
<------>.string "no ect"
.LC137:
<------>.string "slc mode"
.LC138:
<------>.string "BBT:"
.LC139:
<------>.string "region_id = %x phyAddr = %x\n"
.LC140:
<------>.string "map_ppn:"
.LC141:
<------>.string "load_l2p_region refresh = %x phyAddr = %x\n"
.LC142:
<------>.string "FtlCheckVpc2 %x = %x %x\n"
.LC143:
<------>.string "free blk vpc error %x = %x %x\n"
.LC144:
<------>.string "error_flag %x\n"
.LC145:
<------>.string "Ftlscanalldata = %x\n"
.LC146:
<------>.string "scan lpa = %x ppa= %x\n"
.LC147:
<------>.string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
.LC148:
<------>.string "RSB refresh addr %x\n"
.LC149:
<------>.string "spuer block %x vpn is 0\n "
.LC150:
<------>.string "g_recovery_ppa %x ver %x\n "
.LC151:
<------>.string "FtlCheckVpc %x = %x %x\n"
.LC152:
<------>.string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n"
.LC153:
<------>.string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n"
.LC154:
<------>.string "GC des block %x done\n"
.LC155:
<------>.string "too many bad block = %d %d\n"
.LC156:
<------>.string "%d GC datablk = %x vpc %x %x\n"
.LC157:
<------>.string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
.LC158:
<------>.string "Ftlwrite decrement_vpc_count %x = %d\n"
.LC159:
<------>.string "rk_ftl_de_init %x\n"
.LC160:
<------>.string "...%s: no bad block mapping table, format device\n"
.LC161:
<------>.string "...%s FtlSysBlkInit error ,format device!\n"
.LC162:
<------>.string "FtlInit %x\n"
.LC163:
<------>.string "fix power lost blk = %x vpc=%x\n"
.LC164:
<------>.string "erase power lost blk = %x vpc=%x\n"
.LC165:
<------>.string "FtlWrite: lpa error:%x %x\n"
.LC166:
<------>.string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n"
.LC167:
<------>.string ":"
.LC168:
<------>.string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
.LC169:
<------>.string "Mblk:"
.LC170:
<------>.string "L2P:"
.LC171:
<------>.string "L2PC:"
.LC172:
<------>.string "write_idblock fix data %x %x\n"
.LC173:
<------>.string "idblk:"
.LC174:
<------>.string "idb reverse %x %x\n"
.LC175:
<------>.string "write_idblock totle_sec %x %x %x %x\n"
.LC176:
<------>.string "IDBlockWriteData %x %x\n"
.LC177:
<------>.string "IDBlockWriteData %x %x ret= %x\n"
.LC178:
<------>.string "IdBlockReadData %x %x\n"
.LC179:
<------>.string "IdBlockReadData %x %x ret= %x\n"
.LC180:
<------>.string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x\n"
.LC181:
<------>.string "write"
.LC182:
<------>.string "read"
.LC183:
<------>.string "write_idblock error %d\n"
.LC184:
<------>.string "wl_lba %p %x %x %x\n"
.LC185:
<------>.string "RKNAND_GET_DRM_KEY\n"
.LC186:
<------>.string "rk_copy_from_user error\n"
.LC187:
<------>.string "RKNAND_STORE_DRM_KEY\n"
.LC188:
<------>.string "RKNAND_DIASBLE_SECURE_BOOT\n"
.LC189:
<------>.string "RKNAND_ENASBLE_SECURE_BOOT\n"
.LC190:
<------>.string "RKNAND_GET_SN_SECTOR\n"
.LC191:
<------>.string "RKNAND_LOADER_UNLOCK\n"
.LC192:
<------>.string "RKNAND_LOADER_STATUS\n"
.LC193:
<------>.string "RKNAND_LOADER_LOCK\n"
.LC194:
<------>.string "LockKey not match %d\n"
.LC195:
<------>.string "RKNAND_GET_VENDOR_SECTOR\n"
.LC196:
<------>.string "RKNAND_STORE_VENDOR_SECTOR\n"
.LC197:
<------>.string "return ret = %lx\n"
.LC198:
<------>.string "secureBootEn check error\n"
.LC199:
<------>.string "\0013vendor storage %x,%x,%x\n"