/* * 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"