/* * Copyright (c) 2016-2017, Fuzhou Rockchip Electronics Co., Ltd * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * date: 2020-09-23 */ .arch armv8-a .file "rk_ftl_arm_v8.S" .section .text.flash_read_ecc,"ax",@progbits .align 2 .type flash_read_ecc, %function flash_read_ecc: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 stp x29, x30, [sp, -32]! add x2, x1, x0 add x29, sp, 0 ldr x0, [x1, x0] str x19, [sp, 16] ldrb w19, [x2, 8] add x19, x0, x19, lsl 8 mov w0, 122 str w0, [x19, 2056] mov x0, 80 bl udelay ldr w1, [x19, 2048] ldr w0, [x19, 2048] and w1, w1, 15 and w0, w0, 15 cmp w1, w0 csel w1, w1, w0, cs ldr w0, [x19, 2048] ldr w2, [x19, 2048] and w0, w0, 15 ldr x19, [sp, 16] and w2, w2, 15 cmp w0, w2 csel w0, w0, w2, cs cmp w0, w1 csel w0, w0, w1, cs ldp x29, x30, [sp], 32 ret .size flash_read_ecc, .-flash_read_ecc .section .text.ftl_set_blk_mode.part.11,"ax",@progbits .align 2 .type ftl_set_blk_mode.part.11, %function ftl_set_blk_mode.part.11: and w0, w0, 65535 adrp x2, .LANCHOR1 ubfx x1, x0, 5, 11 ldr x3, [x2, #:lo12:.LANCHOR1] lsl x1, x1, 2 and w0, w0, 31 mov w2, 1 lsl w2, w2, w0 ldr w0, [x3, x1] orr w0, w0, w2 str w0, [x3, x1] ret .size ftl_set_blk_mode.part.11, .-ftl_set_blk_mode.part.11 .section .text.FlashMemCmp8,"ax",@progbits .align 2 .global FlashMemCmp8 .type FlashMemCmp8, %function FlashMemCmp8: adrp x3, .LANCHOR2 ldrb w3, [x3, #:lo12:.LANCHOR2] cbz w3, .L9 ldrb w4, [x0, 1] ldrb w3, [x1, 1] cmp w4, w3 beq .L10 .L9: mov x3, 0 .L7: mov w4, w3 cmp w3, w2 bcc .L8 .L10: mov w0, 0 ret .L8: ldrb w5, [x0, x3] add x3, x3, 1 add x6, x1, x3 ldrb w6, [x6, -1] cmp w6, w5 beq .L7 add w0, w4, 1 ret .size FlashMemCmp8, .-FlashMemCmp8 .section .text.FlashRsvdBlkChk,"ax",@progbits .align 2 .global FlashRsvdBlkChk .type FlashRsvdBlkChk, %function FlashRsvdBlkChk: adrp x2, .LANCHOR3 adrp x3, .LANCHOR4 and w0, w0, 255 ldrb w2, [x2, #:lo12:.LANCHOR3] ldr w3, [x3, #:lo12:.LANCHOR4] mul w2, w2, w3 cmp w2, w1 bls .L14 cmp w0, 0 cset w0, ne ret .L14: mov w0, 1 ret .size FlashRsvdBlkChk, .-FlashRsvdBlkChk .section .text.FlashGetRandomizer,"ax",@progbits .align 2 .global FlashGetRandomizer .type FlashGetRandomizer, %function FlashGetRandomizer: and x3, x1, 127 adrp x2, .LANCHOR5 add x2, x2, :lo12:.LANCHOR5 ldrh w4, [x2, x3, lsl 1] adrp x2, .LANCHOR6 ldrb w2, [x2, #:lo12:.LANCHOR6] cbz w2, .L23 stp x29, x30, [sp, -16]! and w0, w0, 255 add x29, sp, 0 bl FlashRsvdBlkChk cmp w0, 0 orr w1, w4, -1073741824 csel w4, w1, w4, ne mov w0, w4 ldp x29, x30, [sp], 16 ret .L23: mov w0, w4 ret .size FlashGetRandomizer, .-FlashGetRandomizer .section .text.FlashSetRandomizer,"ax",@progbits .align 2 .global FlashSetRandomizer .type FlashSetRandomizer, %function FlashSetRandomizer: and w5, w0, 255 and x2, x1, 127 adrp x0, .LANCHOR5 add x0, x0, :lo12:.LANCHOR5 ldrh w4, [x0, x2, lsl 1] adrp x0, .LANCHOR6 ldrb w0, [x0, #:lo12:.LANCHOR6] cbz w0, .L34 stp x29, x30, [sp, -16]! mov w0, w5 add x29, sp, 0 bl FlashRsvdBlkChk cmp w0, 0 sbfiz x5, x5, 4, 32 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 orr w1, w4, -1073741824 csel w4, w1, w4, ne ldr x0, [x0, x5] str w4, [x0, 336] ldp x29, x30, [sp], 16 ret .L34: sbfiz x5, x5, 4, 32 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 ldr x0, [x0, x5] str w4, [x0, 336] ret .size FlashSetRandomizer, .-FlashSetRandomizer .section .text.FlashBlockAlignInit,"ax",@progbits .align 2 .global FlashBlockAlignInit .type FlashBlockAlignInit, %function FlashBlockAlignInit: and w0, w0, 65535 adrp x1, .LANCHOR4 cmp w0, 512 bls .L38 mov w0, 1024 .L42: str w0, [x1, #:lo12:.LANCHOR4] ret .L38: cmp w0, 256 bls .L40 mov w0, 512 b .L42 .L40: cmp w0, 128 bls .L42 mov w0, 256 b .L42 .size FlashBlockAlignInit, .-FlashBlockAlignInit .section .text.FlashReadCmd,"ax",@progbits .align 2 .global FlashReadCmd .type FlashReadCmd, %function FlashReadCmd: and w0, w0, 255 adrp x2, .LANCHOR0 sbfiz x3, x0, 4, 32 add x2, x2, :lo12:.LANCHOR0 add x4, x2, x3 ldr x2, [x2, x3] adrp x3, .LANCHOR7 ldrb w4, [x4, 8] ldr x3, [x3, #:lo12:.LANCHOR7] ldrb w3, [x3, 7] cmp w3, 1 bne .L44 sxtw x3, w4 mov w5, 38 add x3, x3, 8 add x3, x2, x3, lsl 8 str w5, [x3, 8] .L44: ubfiz x4, x4, 8, 8 and w3, w1, 255 add x2, x2, x4 str wzr, [x2, 2056] str wzr, [x2, 2052] str wzr, [x2, 2052] str w3, [x2, 2052] lsr w3, w1, 8 str w3, [x2, 2052] lsr w3, w1, 16 str w3, [x2, 2052] mov w3, 48 str w3, [x2, 2056] b FlashSetRandomizer .size FlashReadCmd, .-FlashReadCmd .section .text.FlashReadDpDataOutCmd,"ax",@progbits .align 2 .global FlashReadDpDataOutCmd .type FlashReadDpDataOutCmd, %function FlashReadDpDataOutCmd: and w0, w0, 255 adrp x2, .LANCHOR0 sbfiz x3, x0, 4, 32 add x2, x2, :lo12:.LANCHOR0 add x4, x2, x3 and w5, w1, 255 ldr x6, [x2, x3] adrp x2, .LANCHOR8+16 lsr w3, w1, 16 ldrb w2, [x2, #:lo12:.LANCHOR8+16] cmp w2, 1 ldrb w2, [x4, 8] lsr w4, w1, 8 add x2, x6, x2, lsl 8 bne .L46 mov w6, 6 str w6, [x2, 2056] str wzr, [x2, 2052] str wzr, [x2, 2052] str w5, [x2, 2052] str w4, [x2, 2052] str w3, [x2, 2052] .L48: mov w3, 224 str w3, [x2, 2056] b FlashSetRandomizer .L46: str wzr, [x2, 2056] str wzr, [x2, 2052] str wzr, [x2, 2052] str w5, [x2, 2052] str w4, [x2, 2052] str w3, [x2, 2052] mov w3, 5 str w3, [x2, 2056] str wzr, [x2, 2052] str wzr, [x2, 2052] b .L48 .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd .section .text.FlashProgFirstCmd,"ax",@progbits .align 2 .global FlashProgFirstCmd .type FlashProgFirstCmd, %function FlashProgFirstCmd: and w0, w0, 255 adrp x4, .LANCHOR0 sbfiz x5, x0, 4, 32 add x4, x4, :lo12:.LANCHOR0 add x2, x4, x5 lsr w3, w1, 16 ldr x4, [x4, x5] ldrb w2, [x2, 8] add x2, x4, x2, lsl 8 mov w4, 128 str w4, [x2, 2056] and w4, w1, 255 str wzr, [x2, 2052] str wzr, [x2, 2052] str w4, [x2, 2052] lsr w4, w1, 8 str w4, [x2, 2052] str w3, [x2, 2052] b FlashSetRandomizer .size FlashProgFirstCmd, .-FlashProgFirstCmd .section .text.FlashEraseCmd,"ax",@progbits .align 2 .global FlashEraseCmd .type FlashEraseCmd, %function FlashEraseCmd: ubfiz x0, x0, 4, 8 adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 add x4, x3, x0 ldr x3, [x3, x0] ldrb w0, [x4, 8] cbz w2, .L51 add x2, x3, x0, lsl 8 mov w4, 96 str w4, [x2, 2056] and w4, w1, 255 str w4, [x2, 2052] lsr w4, w1, 8 str w4, [x2, 2052] lsr w4, w1, 16 str w4, [x2, 2052] adrp x2, .LANCHOR4 ldr w2, [x2, #:lo12:.LANCHOR4] add w1, w1, w2 .L51: add x0, x3, x0, lsl 8 mov w2, 96 str w2, [x0, 2056] and w2, w1, 255 str w2, [x0, 2052] lsr w2, w1, 8 str w2, [x0, 2052] lsr w1, w1, 16 str w1, [x0, 2052] mov w1, 208 str w1, [x0, 2056] ret .size FlashEraseCmd, .-FlashEraseCmd .section .text.FlashProgDpSecondCmd,"ax",@progbits .align 2 .global FlashProgDpSecondCmd .type FlashProgDpSecondCmd, %function FlashProgDpSecondCmd: and w0, w0, 255 adrp x2, .LANCHOR8+11 sbfiz x5, x0, 4, 32 adrp x4, .LANCHOR0 add x4, x4, :lo12:.LANCHOR0 ldrb w6, [x2, #:lo12:.LANCHOR8+11] add x2, x4, x5 lsr w3, w1, 16 ldr x4, [x4, x5] ldrb w2, [x2, 8] add x2, x4, x2, lsl 8 and w4, w1, 255 str w6, [x2, 2056] str wzr, [x2, 2052] str wzr, [x2, 2052] str w4, [x2, 2052] lsr w4, w1, 8 str w4, [x2, 2052] str w3, [x2, 2052] b FlashSetRandomizer .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd .section .text.FlashProgSecondCmd,"ax",@progbits .align 2 .global FlashProgSecondCmd .type FlashProgSecondCmd, %function FlashProgSecondCmd: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x2, x1, x0 ldr x1, [x1, x0] ldrb w0, [x2, 8] add x0, x0, 8 add x0, x1, x0, lsl 8 mov w1, 16 str w1, [x0, 8] ret .size FlashProgSecondCmd, .-FlashProgSecondCmd .section .text.FlashProgDpFirstCmd,"ax",@progbits .align 2 .global FlashProgDpFirstCmd .type FlashProgDpFirstCmd, %function FlashProgDpFirstCmd: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x3, x1, x0 ldr x2, [x1, x0] adrp x0, .LANCHOR8+10 ldrb w1, [x0, #:lo12:.LANCHOR8+10] ldrb w0, [x3, 8] add x0, x0, 8 add x0, x2, x0, lsl 8 str w1, [x0, 8] ret .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd .section .text.FlashReadStatus,"ax",@progbits .align 2 .global FlashReadStatus .type FlashReadStatus, %function FlashReadStatus: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 stp x29, x30, [sp, -32]! add x2, x1, x0 add x29, sp, 0 ldr x0, [x1, x0] str x19, [sp, 16] ldrb w19, [x2, 8] add x19, x0, x19, lsl 8 mov w0, 112 str w0, [x19, 2056] mov x0, 80 bl udelay ldr w0, [x19, 2048] ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FlashReadStatus, .-FlashReadStatus .section .text.js_hash,"ax",@progbits .align 2 .global js_hash .type js_hash, %function js_hash: mov x4, x0 mov w0, 42982 mov x3, 0 movk w0, 0x47c6, lsl 16 .L61: cmp w1, w3 bhi .L62 ret .L62: lsr w2, w0, 2 ldrb w5, [x4, x3] add w2, w2, w0, lsl 5 add x3, x3, 1 add w2, w2, w5 eor w0, w0, w2 b .L61 .size js_hash, .-js_hash .section .text.FlashLoadIdbInfo,"ax",@progbits .align 2 .global FlashLoadIdbInfo .type FlashLoadIdbInfo, %function FlashLoadIdbInfo: mov w0, 0 ret .size FlashLoadIdbInfo, .-FlashLoadIdbInfo .section .text.FlashPrintInfo,"ax",@progbits .align 2 .global FlashPrintInfo .type FlashPrintInfo, %function FlashPrintInfo: ret .size FlashPrintInfo, .-FlashPrintInfo .section .text.ToshibaSetRRPara,"ax",@progbits .align 2 .global ToshibaSetRRPara .type ToshibaSetRRPara, %function ToshibaSetRRPara: stp x29, x30, [sp, -96]! add x29, sp, 0 str x27, [sp, 80] and w27, w1, 255 add w2, w27, 1 stp x21, x22, [sp, 32] mov x21, x0 mov w0, 5 stp x19, x20, [sp, 16] adrp x20, .LANCHOR9 umull x2, w2, w0 stp x23, x24, [sp, 48] adrp x0, .LANCHOR10 add x20, x20, :lo12:.LANCHOR9 add x24, x0, :lo12:.LANCHOR10 stp x25, x26, [sp, 64] adrp x23, .LANCHOR13 adrp x25, .LANCHOR11 adrp x26, .LANCHOR12 add x23, x23, :lo12:.LANCHOR13 add x25, x25, :lo12:.LANCHOR11 add x26, x26, :lo12:.LANCHOR12 add x20, x20, x2 add x24, x24, x2 mov x22, x0 mov x19, 0 .L66: ldrb w0, [x23] cmp w0, w19 bhi .L70 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldr x27, [sp, 80] ldp x29, x30, [sp], 96 ret .L70: mov w0, 85 str w0, [x21, 8] add x0, x22, :lo12:.LANCHOR10 ldrsb w0, [x19, x0] str w0, [x21, 4] mov x0, 200 bl udelay ldrb w0, [x25] cmp w0, 34 bne .L67 ldrsb w0, [x24, x19] .L72: add x19, x19, 1 str w0, [x21] b .L66 .L67: cmp w0, 35 bne .L69 ldrsb w0, [x20, x19] b .L72 .L69: ldrsb w0, [x26, w27, sxtw] b .L72 .size ToshibaSetRRPara, .-ToshibaSetRRPara .section .text.SamsungSetRRPara,"ax",@progbits .align 2 .global SamsungSetRRPara .type SamsungSetRRPara, %function SamsungSetRRPara: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x21, x22, [sp, 32] ubfiz x21, x1, 2, 8 mov x22, x0 add x21, x21, 4 adrp x0, .LANCHOR14 add x0, x0, :lo12:.LANCHOR14 stp x19, x20, [sp, 16] add x21, x0, x21 stp x23, x24, [sp, 48] mov x19, x0 adrp x23, .LANCHOR13 add x23, x23, :lo12:.LANCHOR13 mov x20, 0 mov w24, 161 .L74: ldrb w0, [x23] cmp w0, w20 bhi .L75 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .L75: str w24, [x22, 8] str wzr, [x22] ldrsb w0, [x20, x19] str w0, [x22] ldrsb w0, [x21, x20] add x20, x20, 1 str w0, [x22] mov x0, 300 bl udelay b .L74 .size SamsungSetRRPara, .-SamsungSetRRPara .section .text.LogAddr2PhyAddr,"ax",@progbits .align 2 .global LogAddr2PhyAddr .type LogAddr2PhyAddr, %function LogAddr2PhyAddr: adrp x6, .LANCHOR15 add x6, x6, :lo12:.LANCHOR15 and w4, w4, 255 ldrh w8, [x6, 12] ldrh w5, [x6, 14] mul w5, w5, w8 and w8, w5, 65535 adrp x5, .LANCHOR4 ldrh w7, [x5, #:lo12:.LANCHOR4] adrp x5, .LANCHOR2 ldrb w6, [x5, #:lo12:.LANCHOR2] ubfiz w5, w7, 1, 15 cmp w6, 1 ldr w6, [x0, 4] csel w7, w5, w7, eq cmp w1, 1 ubfx x11, x6, 10, 16 and w6, w6, 1023 udiv w5, w11, w8 and w10, w5, 65535 msub w5, w5, w8, w11 and w5, w5, 65535 bne .L79 adrp x1, .LANCHOR16 ldrb w1, [x1, #:lo12:.LANCHOR16] cbnz w1, .L79 adrp x1, .LANCHOR17 add x1, x1, :lo12:.LANCHOR17 ldrh w6, [x1, w6, sxtw 1] .L79: uxtw x8, w10 adrp x1, .LANCHOR18 add x1, x1, :lo12:.LANCHOR18 cmp w4, 1 ldr w1, [x1, x8, lsl 2] madd w5, w5, w7, w1 add w5, w5, w6 str w5, [x2] str w10, [x3] bls .L81 ldr w1, [x0, 4] ldr w0, [x0, 60] add w1, w1, 1024 cmp w1, w0 cset w0, eq ret .L81: mov w0, 0 ret .size LogAddr2PhyAddr, .-LogAddr2PhyAddr .section .text.FlashReadStatusEN,"ax",@progbits .align 2 .global FlashReadStatusEN .type FlashReadStatusEN, %function FlashReadStatusEN: stp x29, x30, [sp, -32]! ubfiz x0, x0, 4, 8 adrp x3, .LANCHOR0 add x3, x3, :lo12:.LANCHOR0 add x29, sp, 0 stp x19, x20, [sp, 16] add x4, x3, x0 ldr x20, [x3, x0] adrp x0, .LANCHOR7 ldr x0, [x0, #:lo12:.LANCHOR7] ldrb w19, [x4, 8] ldrb w0, [x0, 8] cmp w0, 2 bne .L83 and w2, w2, 255 adrp x0, .LANCHOR8 cbnz w2, .L84 add x2, x0, :lo12:.LANCHOR8 ldrb w3, [x2, 13] .L94: add x2, x19, 8 add x0, x0, :lo12:.LANCHOR8 add x2, x20, x2, lsl 8 str w3, [x2, 8] ldrb w4, [x0, 15] cbz w4, .L88 add x3, x19, 8 mov w2, 0 add x3, x20, x3, lsl 8 .L87: cmp w2, w4 bcc .L89 .L88: add x19, x19, 8 mov x0, 80 lsl x19, x19, 8 bl udelay ldr w0, [x20, x19] ldp x19, x20, [sp, 16] and w0, w0, 255 ldp x29, x30, [sp], 32 ret .L84: add x2, x0, :lo12:.LANCHOR8 ldrb w3, [x2, 14] b .L94 .L89: lsl w0, w2, 3 add w2, w2, 1 lsr w0, w1, w0 and w0, w0, 255 str w0, [x3, 4] b .L87 .L83: add x0, x19, 8 mov w1, 112 add x0, x20, x0, lsl 8 str w1, [x0, 8] b .L88 .size FlashReadStatusEN, .-FlashReadStatusEN .section .text.FlashWaitReadyEN,"ax",@progbits .align 2 .global FlashWaitReadyEN .type FlashWaitReadyEN, %function FlashWaitReadyEN: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 255 str x21, [sp, 32] mov w20, w1 and w21, w2, 255 .L99: mov w1, w20 mov w2, w21 mov w0, w19 bl FlashReadStatusEN mov w1, w0 cmp w0, 255 beq .L99 tbz x1, 6, .L99 ldp x19, x20, [sp, 16] ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FlashWaitReadyEN, .-FlashWaitReadyEN .section .text.NandcReadDontCaseBusyEn,"ax",@progbits .align 2 .global NandcReadDontCaseBusyEn .type NandcReadDontCaseBusyEn, %function NandcReadDontCaseBusyEn: ret .size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn .section .text.NandcGetChipIf,"ax",@progbits .align 2 .global NandcGetChipIf .type NandcGetChipIf, %function NandcGetChipIf: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x2, x1, x0 ldr x0, [x1, x0] ldrb w2, [x2, 8] add x2, x2, 8 add x0, x0, x2, lsl 8 ret .size NandcGetChipIf, .-NandcGetChipIf .section .text.NandcSetDdrPara,"ax",@progbits .align 2 .global NandcSetDdrPara .type NandcSetDdrPara, %function NandcSetDdrPara: adrp x1, .LANCHOR19 and w0, w0, 255 lsl w2, w0, 8 ldr x1, [x1, #:lo12:.LANCHOR19] orr w0, w2, w0, lsl 16 orr w0, w0, 1 str w0, [x1, 304] ret .size NandcSetDdrPara, .-NandcSetDdrPara .section .text.NandcSetDdrDiv,"ax",@progbits .align 2 .global NandcSetDdrDiv .type NandcSetDdrDiv, %function NandcSetDdrDiv: adrp x1, .LANCHOR19 and w0, w0, 255 mov w2, 16640 orr w0, w0, w2 ldr x1, [x1, #:lo12:.LANCHOR19] str w0, [x1, 344] ret .size NandcSetDdrDiv, .-NandcSetDdrDiv .section .text.NandcSetDdrMode,"ax",@progbits .align 2 .global NandcSetDdrMode .type NandcSetDdrMode, %function NandcSetDdrMode: adrp x1, .LANCHOR19 cmp w0, 0 ldr x2, [x1, #:lo12:.LANCHOR19] ldr w1, [x2] and w3, w1, -8193 orr w1, w1, 253952 csel w1, w1, w3, ne str w1, [x2] ret .size NandcSetDdrMode, .-NandcSetDdrMode .section .text.NandcSetMode,"ax",@progbits .align 2 .global NandcSetMode .type NandcSetMode, %function NandcSetMode: adrp x1, .LANCHOR19 and w0, w0, 255 tst w0, 6 ldr x2, [x1, #:lo12:.LANCHOR19] ldr w1, [x2] beq .L111 orr w1, w1, 24576 tst x0, 4 and w1, w1, -32769 mov w0, 16641 orr w1, w1, 196608 str w0, [x2, 344] mov w0, 6659 orr w3, w1, 32768 movk w0, 0x1a, lsl 16 str w0, [x2, 304] csel w1, w3, w1, ne mov w0, 38 str w0, [x2, 308] mov w0, 39 str w0, [x2, 308] .L113: mov w0, 0 str w1, [x2] ret .L111: and w1, w1, -8193 b .L113 .size NandcSetMode, .-NandcSetMode .section .text.NandcFlashCs,"ax",@progbits .align 2 .global NandcFlashCs .type NandcFlashCs, %function NandcFlashCs: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x3, x1, x0 ldr x2, [x1, x0] mov w1, 1 ldrb w3, [x3, 8] ldr w0, [x2] lsl w1, w1, w3 bfi w0, w1, 0, 8 str w0, [x2] ret .size NandcFlashCs, .-NandcFlashCs .section .text.NandcFlashDeCs,"ax",@progbits .align 2 .global NandcFlashDeCs .type NandcFlashDeCs, %function NandcFlashDeCs: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 ldr x1, [x1, x0] ldr w0, [x1] and w0, w0, -256 and w0, w0, -131073 str w0, [x1] ret .size NandcFlashDeCs, .-NandcFlashDeCs .section .text.HynixSetRRPara,"ax",@progbits .align 2 .global HynixSetRRPara .type HynixSetRRPara, %function HynixSetRRPara: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x21, x22, [sp, 32] and w22, w0, 255 adrp x0, .LANCHOR7 stp x19, x20, [sp, 16] stp x25, x26, [sp, 64] mov x20, x2 ldr x0, [x0, #:lo12:.LANCHOR7] and w26, w1, 255 stp x23, x24, [sp, 48] and w21, w3, 255 adrp x19, .LANCHOR20 ldrb w0, [x0, 19] cmp w0, 6 bne .L119 add x0, x19, :lo12:.LANCHOR20 ubfiz x19, x22, 6, 8 add x19, x19, 20 add x19, x19, x21, uxtw 2 .L126: add x19, x0, x19 .L120: sxtw x25, w22 adrp x0, .LANCHOR0 lsl x1, x25, 4 add x0, x0, :lo12:.LANCHOR0 add x2, x0, x1 and x26, x26, 255 mov x24, 0 ldr x23, [x0, x1] mov w0, w22 ldrb w5, [x2, 8] bl NandcFlashCs ubfiz x5, x5, 8, 8 add x23, x23, x5 mov w0, 54 str w0, [x23, 2056] .L123: cmp x24, x26 bne .L124 mov w0, 22 str w0, [x23, 2056] mov w0, w22 bl NandcFlashDeCs adrp x0, .LANCHOR21 add x0, x0, :lo12:.LANCHOR21 strb w21, [x0, x25] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 80 ret .L119: cmp w0, 7 bne .L121 add x0, x19, :lo12:.LANCHOR20 mov x1, 28 mov w19, 160 umaddl x1, w19, w22, x1 mov w19, 10 umaddl x19, w21, w19, x1 b .L126 .L121: cmp w0, 8 bne .L122 add x19, x19, :lo12:.LANCHOR20 add x0, x19, 28 add w19, w21, w21, lsl 2 add x19, x0, x19, sxtw b .L120 .L122: add x0, x19, :lo12:.LANCHOR20 and x19, x21, 255 add x19, x19, 2 add x19, x19, x22, uxtw 3 add x19, x0, x19, lsl 3 add x19, x19, 4 b .L120 .L124: ldrb w0, [x20, x24] str w0, [x23, 2052] mov x0, 200 bl udelay ldrsb w0, [x19, x24] add x24, x24, 1 str w0, [x23, 2048] b .L123 .size HynixSetRRPara, .-HynixSetRRPara .section .text.FlashSetReadRetryDefault,"ax",@progbits .align 2 .global FlashSetReadRetryDefault .type FlashSetReadRetryDefault, %function FlashSetReadRetryDefault: adrp x0, .LANCHOR7 ldr x0, [x0, #:lo12:.LANCHOR7] ldrb w0, [x0, 19] sub w0, w0, #1 and w0, w0, 255 cmp w0, 7 bhi .L134 stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR20 add x20, x20, :lo12:.LANCHOR20 stp x21, x22, [sp, 32] adrp x21, .LANCHOR22 add x22, x20, 4 add x21, x21, :lo12:.LANCHOR22 mov x19, 0 .L130: lsl x1, x19, 3 and w0, w19, 255 ldrb w1, [x1, x21] cmp w1, 173 bne .L129 ldrb w1, [x20, 1] mov w3, 0 mov x2, x22 bl HynixSetRRPara .L129: add x19, x19, 1 cmp x19, 4 bne .L130 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .L134: ret .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault .section .text.FlashWaitCmdDone,"ax",@progbits .align 2 .global FlashWaitCmdDone .type FlashWaitCmdDone, %function FlashWaitCmdDone: and x4, x0, 255 mov x0, 24 stp x29, x30, [sp, -32]! adrp x1, .LANCHOR23 add x1, x1, :lo12:.LANCHOR23 mul x0, x4, x0 add x29, sp, 0 stp x19, x20, [sp, 16] add x19, x1, x0 ldr x2, [x19, 8] cbz x2, .L139 ldrb w20, [x1, x0] mov w0, w20 bl NandcFlashCs adrp x0, .LANCHOR18 add x0, x0, :lo12:.LANCHOR18 ldr w1, [x19, 4] ldr w0, [x0, x4, lsl 2] cmp w0, 0 mov w0, w20 cset w2, ne bl FlashWaitReadyEN mov w2, w0 mov w0, w20 bl NandcFlashDeCs sbfx x0, x2, 0, 1 ldr x1, [x19, 8] str w0, [x1] ldr x1, [x19, 16] str xzr, [x19, 8] cbz x1, .L139 str w0, [x1] str xzr, [x19, 16] .L139: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FlashWaitCmdDone, .-FlashWaitCmdDone .section .text.NandcDelayns,"ax",@progbits .align 2 .global NandcDelayns .type NandcDelayns, %function NandcDelayns: stp x29, x30, [sp, -16]! uxtw x0, w0 add x29, sp, 0 bl udelay mov w0, 0 ldp x29, x30, [sp], 16 ret .size NandcDelayns, .-NandcDelayns .section .text.NandcWaitFlashReadyNoDelay,"ax",@progbits .align 2 .global NandcWaitFlashReadyNoDelay .type NandcWaitFlashReadyNoDelay, %function NandcWaitFlashReadyNoDelay: stp x29, x30, [sp, -48]! ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 stp x19, x20, [sp, 16] mov w19, 34464 ldr x20, [x1, x0] movk w19, 0x1, lsl 16 .L149: ldr w0, [x20] str w0, [x29, 40] ldr w0, [x29, 40] tbnz x0, 9, .L150 mov x0, 10 bl udelay subs w19, w19, #1 bne .L149 mov w0, -1 .L147: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .L150: mov w0, 0 b .L147 .size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay .section .text.NandcWaitFlashReady,"ax",@progbits .align 2 .global NandcWaitFlashReady .type NandcWaitFlashReady, %function NandcWaitFlashReady: stp x29, x30, [sp, -48]! ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x29, sp, 0 stp x19, x20, [sp, 16] mov w19, 34464 movk w19, 0x1, lsl 16 ldr x20, [x1, x0] mov x0, 130 bl udelay .L155: ldr w0, [x20] str w0, [x29, 40] ldr w0, [x29, 40] tbnz x0, 9, .L156 mov x0, 10 bl udelay subs w19, w19, #1 bne .L155 mov w0, -1 .L153: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .L156: mov w0, 0 b .L153 .size NandcWaitFlashReady, .-NandcWaitFlashReady .section .text.FlashReset,"ax",@progbits .align 2 .global FlashReset .type FlashReset, %function FlashReset: stp x29, x30, [sp, -32]! add x29, sp, 0 str x19, [sp, 16] and w19, w0, 255 sbfiz x1, x19, 4, 32 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x2, x0, x1 ldr x5, [x0, x1] mov w0, w19 ldrb w4, [x2, 8] bl NandcFlashCs add x4, x4, 8 add x4, x5, x4, lsl 8 mov w0, 255 str w0, [x4, 8] mov w0, w19 bl NandcWaitFlashReady mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 b NandcFlashDeCs .size FlashReset, .-FlashReset .section .text.flash_enter_slc_mode,"ax",@progbits .align 2 .global flash_enter_slc_mode .type flash_enter_slc_mode, %function flash_enter_slc_mode: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x21, x22, [sp, 32] and w21, w0, 255 adrp x0, .LANCHOR16 stp x19, x20, [sp, 16] ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L161 mov w0, w21 bl NandcFlashCs sxtw x0, w21 adrp x1, .LANCHOR0 lsl x2, x0, 4 add x1, x1, :lo12:.LANCHOR0 add x3, x1, x2 lsl x0, x0, 3 ldr x22, [x1, x2] adrp x1, .LANCHOR22 add x1, x1, :lo12:.LANCHOR22 ldrb w19, [x3, 8] ldrb w0, [x1, x0] cmp w0, 44 bne .L163 ubfiz x20, x19, 8, 8 mov w0, 239 add x20, x22, x20 str w0, [x20, 2056] mov w0, 145 str w0, [x20, 2052] mov x0, 50 bl udelay str wzr, [x20, 2048] mov w0, 1 str w0, [x20, 2048] str wzr, [x20, 2048] mov x0, 100 str wzr, [x20, 2048] bl udelay .L163: add x19, x19, 8 mov w0, w21 add x19, x22, x19, lsl 8 bl NandcWaitFlashReadyNoDelay mov w0, 218 str w0, [x19, 8] mov w0, w21 bl NandcWaitFlashReady adrp x0, .LANCHOR24 mov w1, 2 strb w1, [x0, #:lo12:.LANCHOR24] .L161: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size flash_enter_slc_mode, .-flash_enter_slc_mode .section .text.flash_exit_slc_mode,"ax",@progbits .align 2 .global flash_exit_slc_mode .type flash_exit_slc_mode, %function flash_exit_slc_mode: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x21, x22, [sp, 32] and w21, w0, 255 adrp x0, .LANCHOR16 stp x19, x20, [sp, 16] ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L168 mov w0, w21 bl NandcFlashCs sxtw x0, w21 adrp x1, .LANCHOR0 lsl x2, x0, 4 add x1, x1, :lo12:.LANCHOR0 add x3, x1, x2 lsl x0, x0, 3 ldr x22, [x1, x2] adrp x1, .LANCHOR22 add x1, x1, :lo12:.LANCHOR22 ldrb w19, [x3, 8] ldrb w0, [x1, x0] cmp w0, 44 bne .L170 ubfiz x20, x19, 8, 8 mov w0, 239 add x20, x22, x20 str w0, [x20, 2056] mov w0, 145 str w0, [x20, 2052] mov x0, 50 bl udelay mov w0, 2 str w0, [x20, 2048] mov w0, 1 str w0, [x20, 2048] str wzr, [x20, 2048] mov x0, 100 str wzr, [x20, 2048] bl udelay .L170: add x19, x19, 8 mov w0, w21 add x19, x22, x19, lsl 8 bl NandcWaitFlashReadyNoDelay mov w0, 223 str w0, [x19, 8] mov w0, w21 bl NandcWaitFlashReady adrp x0, .LANCHOR24 strb wzr, [x0, #:lo12:.LANCHOR24] .L168: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size flash_exit_slc_mode, .-flash_exit_slc_mode .section .text.FlashEraseBlock,"ax",@progbits .align 2 .global FlashEraseBlock .type FlashEraseBlock, %function FlashEraseBlock: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 255 mov w20, w1 str x21, [sp, 32] mov w0, w19 mov w21, w2 bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs mov w2, w21 mov w1, w20 mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady mov w1, w20 mov w0, w19 bl FlashReadStatus mov w2, w0 mov w0, w19 bl NandcFlashDeCs ldr x21, [sp, 32] and w0, w2, 1 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size FlashEraseBlock, .-FlashEraseBlock .section .text.FlashSetInterfaceMode,"ax",@progbits .align 2 .global FlashSetInterfaceMode .type FlashSetInterfaceMode, %function FlashSetInterfaceMode: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR25 adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 add x29, sp, 0 ldrb w1, [x1, #:lo12:.LANCHOR25] adrp x7, .LANCHOR22 add x2, x2, 8 add x7, x7, :lo12:.LANCHOR22 and w12, w1, 4 and w6, w1, 1 mov x5, 0 mov w13, 69 mov w8, 239 mov w10, 128 mov w11, 1 mov w14, 35 mov w15, 32 mov w16, 5 mov w17, 44 .L187: ldrb w3, [x5, x7] ldrb w4, [x2] cmp w3, 152 ccmp w3, w13, 4, ne beq .L178 cmp w3, 173 ccmp w3, w17, 4, ne bne .L179 .L178: cmp w0, 1 ldr x1, [x2, -8] bne .L180 cbz w6, .L179 ubfiz x4, x4, 8, 8 cmp w3, 173 add x1, x1, x4 str w8, [x1, 2056] bne .L181 str w0, [x1, 2052] .L199: str wzr, [x1, 2048] b .L185 .L181: cmp w3, 44 bne .L183 str w0, [x1, 2052] str w16, [x1, 2048] .L185: str wzr, [x1, 2048] str wzr, [x1, 2048] str wzr, [x1, 2048] .L179: add x5, x5, 8 add x2, x2, 16 cmp x5, 32 bne .L187 mov w0, 0 bl NandcWaitFlashReady mov w0, 0 ldp x29, x30, [sp], 16 ret .L183: str w10, [x1, 2052] str w0, [x1, 2048] b .L185 .L180: cbz w12, .L179 ubfiz x4, x4, 8, 8 cmp w3, 173 add x1, x1, x4 str w8, [x1, 2056] bne .L184 str w11, [x1, 2052] str w15, [x1, 2048] b .L185 .L184: cmp w3, 44 bne .L186 str w11, [x1, 2052] str w14, [x1, 2048] b .L185 .L186: str w10, [x1, 2052] b .L199 .size FlashSetInterfaceMode, .-FlashSetInterfaceMode .section .text.SandiskSetRRPara,"ax",@progbits .align 2 .global SandiskSetRRPara .type SandiskSetRRPara, %function SandiskSetRRPara: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x20, x0 mov w0, 239 and w19, w1, 255 str w0, [x20, 8] mov w0, 17 str w0, [x20, 4] mov x0, 200 bl udelay adrp x0, .LANCHOR13 add w1, w19, 1 adrp x2, .LANCHOR9 add x2, x2, :lo12:.LANCHOR9 ldrb w3, [x0, #:lo12:.LANCHOR13] adrp x0, .LANCHOR11 ldrb w4, [x0, #:lo12:.LANCHOR11] mov w0, 5 umull x1, w1, w0 adrp x0, .LANCHOR10 add x0, x0, :lo12:.LANCHOR10 add x2, x2, x1 add x1, x0, x1 mov x0, 0 .L201: cmp w3, w0 bhi .L204 ldp x19, x20, [sp, 16] mov w0, 0 ldp x29, x30, [sp], 32 b NandcWaitFlashReady .L204: cmp w4, 67 bne .L202 ldrsb w5, [x1, x0] .L206: add x0, x0, 1 str w5, [x20] b .L201 .L202: ldrsb w5, [x2, x0] b .L206 .size SandiskSetRRPara, .-SandiskSetRRPara .section .text.micron_auto_read_calibration_config,"ax",@progbits .align 2 .global micron_auto_read_calibration_config .type micron_auto_read_calibration_config, %function micron_auto_read_calibration_config: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 255 mov w20, w1 mov w0, w19 bl NandcWaitFlashReady sbfiz x0, x19, 4, 32 adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 add x1, x2, x0 ldr x0, [x2, x0] ldrb w19, [x1, 8] add x19, x0, x19, lsl 8 mov w0, 239 str w0, [x19, 2056] mov w0, 150 str w0, [x19, 2052] mov x0, 200 bl udelay str w20, [x19, 2048] str wzr, [x19, 2048] str wzr, [x19, 2048] str wzr, [x19, 2048] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config .section .text.FlashEraseSLc2KBlocks,"ax",@progbits .align 2 .global FlashEraseSLc2KBlocks .type FlashEraseSLc2KBlocks, %function FlashEraseSLc2KBlocks: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x21, x22, [sp, 32] mov w22, 56 stp x23, x24, [sp, 48] and w21, w1, 255 umaddl x22, w1, w22, x0 stp x19, x20, [sp, 16] adrp x23, .LANCHOR26 mov x20, x0 add x23, x23, :lo12:.LANCHOR26 adrp x24, .LANCHOR27 .L210: cmp x20, x22 bne .L215 ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret .L215: mov w1, 0 mov w4, w21 add x3, x29, 76 add x2, x29, 72 mov x0, x20 bl LogAddr2PhyAddr ldrb w1, [x23] ldr w0, [x29, 76] cmp w1, w0 bhi .L211 mov w0, -1 str w0, [x20] .L212: sub w21, w21, #1 add x20, x20, 56 and w21, w21, 255 b .L210 .L211: uxtw x0, w0 add x1, x24, :lo12:.LANCHOR27 ldrb w19, [x1, x0] mov x1, 24 mul x0, x0, x1 adrp x1, .LANCHOR23 add x1, x1, :lo12:.LANCHOR23 strb w19, [x1, x0] mov w0, w19 bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs ldr w1, [x29, 72] mov w2, 0 mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady ldr w1, [x29, 72] mov w0, w19 bl FlashReadStatus sbfx x0, x0, 0, 1 str w0, [x20] adrp x0, .LANCHOR4 ldr w1, [x29, 72] mov w2, 0 ldr w0, [x0, #:lo12:.LANCHOR4] add w1, w1, w0 mov w0, w19 bl FlashEraseCmd mov w0, w19 bl NandcWaitFlashReady ldr w1, [x29, 72] mov w0, w19 bl FlashReadStatus tbz x0, 0, .L213 mov w0, -1 str w0, [x20] .L213: ldr w0, [x20] cmn w0, #1 bne .L214 ldr w1, [x29, 72] adrp x0, .LC1 add x0, x0, :lo12:.LC1 bl printf .L214: mov w0, w19 bl NandcFlashDeCs b .L212 .size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks .section .text.FlashEraseBlocks,"ax",@progbits .align 2 .global FlashEraseBlocks .type FlashEraseBlocks, %function FlashEraseBlocks: stp x29, x30, [sp, -96]! add x29, sp, 0 stp x23, x24, [sp, 48] mov w24, w1 adrp x1, .LANCHOR2 stp x21, x22, [sp, 32] stp x19, x20, [sp, 16] mov w22, w2 ldrb w1, [x1, #:lo12:.LANCHOR2] stp x25, x26, [sp, 64] cbnz w1, .L221 adrp x25, .LANCHOR23 mov x23, x0 add x26, x25, :lo12:.LANCHOR23 mov w19, 0 .L222: cmp w19, w22 adrp x13, .LANCHOR26 bcc .L231 adrp x20, .LANCHOR16 adrp x21, .LANCHOR23 add x22, x13, :lo12:.LANCHOR26 add x20, x20, :lo12:.LANCHOR16 add x21, x21, :lo12:.LANCHOR23 mov x19, 0 .L232: ldrb w0, [x22] cmp w0, w19 bhi .L234 mov w0, 0 b .L220 .L221: mov w1, w2 bl FlashEraseSLc2KBlocks .L220: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret .L231: mov w12, 56 mov w1, 0 sub w4, w22, w19 add x3, x29, 92 umull x12, w19, w12 add x2, x29, 88 add x20, x23, x12 mov x0, x20 bl LogAddr2PhyAddr mov w21, w0 ldrb w1, [x13, #:lo12:.LANCHOR26] ldr w0, [x29, 92] cmp w1, w0 bhi .L224 mov w0, -1 str w0, [x23, x12] .L225: add w19, w19, 1 b .L222 .L224: adrp x1, .LANCHOR28 add x2, x25, :lo12:.LANCHOR23 mov x3, 24 ldrb w1, [x1, #:lo12:.LANCHOR28] cmp w1, 0 uxtw x1, w0 csel w21, w21, wzr, ne madd x1, x1, x3, x2 ldr x1, [x1, 8] cbz x1, .L227 bl FlashWaitCmdDone .L227: ldp w2, w1, [x29, 88] mov x0, 24 madd x0, x1, x0, x26 str w2, [x0, 4] stp x20, xzr, [x0, 8] cbz w21, .L228 add w2, w19, 1 mov w3, 56 umaddl x2, w2, w3, x23 str x2, [x0, 16] .L228: adrp x0, .LANCHOR27 add x0, x0, :lo12:.LANCHOR27 ldrb w20, [x0, x1] mov x0, 24 mul x1, x1, x0 mov w0, w20 strb w20, [x26, x1] bl NandcFlashCs cmp w24, 1 bne .L229 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L229 mov w0, w20 bl flash_enter_slc_mode .L230: ldr w1, [x29, 92] adrp x0, .LANCHOR18 add x0, x0, :lo12:.LANCHOR18 add w19, w19, w21 ldr w0, [x0, x1, lsl 2] ldr w1, [x29, 88] cmp w0, 0 mov w0, w20 cset w2, ne bl FlashWaitReadyEN ldr w1, [x29, 88] mov w2, w21 mov w0, w20 bl FlashEraseCmd mov w0, w20 bl NandcFlashDeCs b .L225 .L229: mov w0, w20 bl flash_exit_slc_mode b .L230 .L234: mov w0, w19 bl FlashWaitCmdDone cmp w24, 1 bne .L233 ldrb w0, [x20] cbz w0, .L233 mov x0, 24 mul x0, x19, x0 ldrb w0, [x0, x21] bl flash_exit_slc_mode .L233: add x19, x19, 1 b .L232 .size FlashEraseBlocks, .-FlashEraseBlocks .section .text.FlashReadDpCmd,"ax",@progbits .align 2 .global FlashReadDpCmd .type FlashReadDpCmd, %function FlashReadDpCmd: stp x29, x30, [sp, -64]! adrp x7, .LANCHOR7 add x29, sp, 0 stp x21, x22, [sp, 32] and w22, w0, 255 mov w21, w1 adrp x0, .LANCHOR0 sbfiz x1, x22, 4, 32 add x0, x0, :lo12:.LANCHOR0 add x3, x0, x1 stp x19, x20, [sp, 16] stp x23, x24, [sp, 48] lsr w20, w2, 16 ldr x4, [x0, x1] and w24, w2, 255 ldrb w19, [x3, 8] adrp x3, .LANCHOR8 add x1, x3, :lo12:.LANCHOR8 lsr w23, w2, 8 ldr x2, [x7, #:lo12:.LANCHOR7] and w6, w21, 255 lsr w5, w21, 8 ldrb w1, [x1, 16] ldrb w2, [x2, 7] cmp w1, 1 lsr w1, w21, 16 bne .L249 cmp w2, 1 bne .L250 sxtw x0, w19 mov w2, 38 add x0, x0, 8 add x0, x4, x0, lsl 8 str w2, [x0, 8] .L250: add x0, x3, :lo12:.LANCHOR8 add x19, x4, x19, lsl 8 ldrb w2, [x0, 8] str w2, [x19, 2056] str wzr, [x19, 2052] str wzr, [x19, 2052] str w6, [x19, 2052] str w5, [x19, 2052] ldrb w0, [x0, 9] str w1, [x19, 2052] str w0, [x19, 2056] mov w0, w22 bl NandcWaitFlashReady str wzr, [x19, 2056] str wzr, [x19, 2052] str wzr, [x19, 2052] .L254: str w24, [x19, 2052] mov w0, 48 str w23, [x19, 2052] mov w1, w21 str w20, [x19, 2052] str w0, [x19, 2056] mov w0, w22 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 b FlashSetRandomizer .L249: cmp w2, 1 bne .L252 sxtw x0, w19 mov w2, 38 add x0, x0, 8 add x0, x4, x0, lsl 8 str w2, [x0, 8] .L252: add x0, x3, :lo12:.LANCHOR8 add x19, x4, x19, lsl 8 ldrb w2, [x0, 8] str w2, [x19, 2056] str w6, [x19, 2052] str w5, [x19, 2052] ldrb w0, [x0, 9] str w1, [x19, 2052] str w0, [x19, 2056] b .L254 .size FlashReadDpCmd, .-FlashReadDpCmd .section .text.ftl_flash_de_init,"ax",@progbits .align 2 .global ftl_flash_de_init .type ftl_flash_de_init, %function ftl_flash_de_init: stp x29, x30, [sp, -32]! mov w0, 0 add x29, sp, 0 str x19, [sp, 16] bl NandcWaitFlashReady bl FlashSetReadRetryDefault adrp x0, .LANCHOR29 ldr w0, [x0, #:lo12:.LANCHOR29] cbz w0, .L256 mov w0, 0 bl flash_enter_slc_mode .L257: adrp x19, .LANCHOR30 ldrb w0, [x19, #:lo12:.LANCHOR30] cbz w0, .L258 adrp x0, .LANCHOR25 ldrb w0, [x0, #:lo12:.LANCHOR25] tbz x0, 0, .L258 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode strb wzr, [x19, #:lo12:.LANCHOR30] .L258: adrp x0, .LANCHOR0 ldr x0, [x0, #:lo12:.LANCHOR0] str wzr, [x0, 336] mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L256: mov w0, 0 bl flash_exit_slc_mode b .L257 .size ftl_flash_de_init, .-ftl_flash_de_init .section .text.NandcRandmzSel,"ax",@progbits .align 2 .global NandcRandmzSel .type NandcRandmzSel, %function NandcRandmzSel: ubfiz x0, x0, 4, 8 adrp x2, .LANCHOR0 add x2, x2, :lo12:.LANCHOR0 ldr x0, [x2, x0] str w1, [x0, 336] ret .size NandcRandmzSel, .-NandcRandmzSel .section .text.NandcTimeCfg,"ax",@progbits .align 2 .global NandcTimeCfg .type NandcTimeCfg, %function NandcTimeCfg: cmp w0, 35 adrp x1, .LANCHOR19 bhi .L268 ldr x0, [x1, #:lo12:.LANCHOR19] mov w1, 4193 .L271: str w1, [x0, 4] ret .L268: cmp w0, 99 ldr x0, [x1, #:lo12:.LANCHOR19] bls .L270 mov w1, 8322 b .L271 .L270: mov w1, 4225 b .L271 .size NandcTimeCfg, .-NandcTimeCfg .section .text.FlashTimingCfg,"ax",@progbits .align 2 .global FlashTimingCfg .type FlashTimingCfg, %function FlashTimingCfg: adrp x0, .LANCHOR31+21 ldrb w0, [x0, #:lo12:.LANCHOR31+21] b NandcTimeCfg .size FlashTimingCfg, .-FlashTimingCfg .section .text.NandcBchSel,"ax",@progbits .align 2 .global NandcBchSel .type NandcBchSel, %function NandcBchSel: adrp x1, .LANCHOR19 and w0, w0, 255 cmp w0, 16 ldr x2, [x1, #:lo12:.LANCHOR19] mov w1, 1 str w1, [x2, 8] adrp x1, .LANCHOR32 str w0, [x1, #:lo12:.LANCHOR32] mov w1, 4096 bne .L274 .L277: and w1, w1, -17 .L275: orr w1, w1, 1 str w1, [x2, 12] ret .L274: cmp w0, 24 bne .L276 orr w1, w1, 16 b .L275 .L276: orr w1, w1, 262144 cmp w0, 40 orr w1, w1, 16 bne .L275 b .L277 .size NandcBchSel, .-NandcBchSel .section .text.FlashBchSel,"ax",@progbits .align 2 .global FlashBchSel .type FlashBchSel, %function FlashBchSel: adrp x1, .LANCHOR33 and w0, w0, 255 strb w0, [x1, #:lo12:.LANCHOR33] b NandcBchSel .size FlashBchSel, .-FlashBchSel .section .text.ftl_nandc_get_irq_status,"ax",@progbits .align 2 .global ftl_nandc_get_irq_status .type ftl_nandc_get_irq_status, %function ftl_nandc_get_irq_status: ldr w0, [x0, 372] ret .size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status .section .text.rk_nandc_flash_ready,"ax",@progbits .align 2 .global rk_nandc_flash_ready .type rk_nandc_flash_ready, %function rk_nandc_flash_ready: ret .size rk_nandc_flash_ready, .-rk_nandc_flash_ready .section .text.NandcIqrWaitFlashReady,"ax",@progbits .align 2 .global NandcIqrWaitFlashReady .type NandcIqrWaitFlashReady, %function NandcIqrWaitFlashReady: ret .size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady .section .text.rk_nandc_flash_xfer_completed,"ax",@progbits .align 2 .global rk_nandc_flash_xfer_completed .type rk_nandc_flash_xfer_completed, %function rk_nandc_flash_xfer_completed: ret .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed .section .text.NandcSendDumpDataStart,"ax",@progbits .align 2 .global NandcSendDumpDataStart .type NandcSendDumpDataStart, %function NandcSendDumpDataStart: sub sp, sp, #16 ldr w2, [x0, 16] mov w1, 1066 movk w1, 0x2020, lsl 16 str w2, [sp, 8] ldr w2, [sp, 8] and w2, w2, -5 str w2, [sp, 8] ldr w2, [sp, 8] str w2, [x0, 16] str w1, [x0, 8] orr w1, w1, 4 str w1, [x0, 8] add sp, sp, 16 ret .size NandcSendDumpDataStart, .-NandcSendDumpDataStart .section .text.NandcSendDumpDataDone,"ax",@progbits .align 2 .global NandcSendDumpDataDone .type NandcSendDumpDataDone, %function NandcSendDumpDataDone: sub sp, sp, #16 .L289: ldr w1, [x0, 8] str w1, [sp, 8] ldr w1, [sp, 8] tbz x1, 20, .L289 add sp, sp, 16 ret .size NandcSendDumpDataDone, .-NandcSendDumpDataDone .section .text.NandcXferStart,"ax",@progbits .align 2 .global NandcXferStart .type NandcXferStart, %function NandcXferStart: stp x29, x30, [sp, -96]! ubfiz x0, x0, 4, 8 ubfx x3, x3, 1, 7 add x29, sp, 0 stp x23, x24, [sp, 48] and w24, w1, 255 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 add x6, x1, x0 stp x21, x22, [sp, 32] stp x19, x20, [sp, 16] ubfiz w19, w24, 1, 1 ldr x21, [x1, x0] mov w1, 16 ldrb w0, [x6, 8] orr w19, w19, 8 str x25, [sp, 64] ldr w22, [x21, 12] bfi w22, w1, 8, 8 and w22, w22, -9 bfi w22, w0, 5, 3 mov w0, 1 bfi w19, w0, 5, 2 adrp x0, .LANCHOR34 orr w19, w19, 536870912 orr w19, w19, 1024 ldr w0, [x0, #:lo12:.LANCHOR34] bfi w19, w3, 4, 1 cmp w0, 3 bls .L294 ldr w0, [x21, 16] cmp x5, 0 str w0, [x29, 88] ccmp x4, 0, 0, eq ldr w0, [x29, 88] and w0, w0, -5 str w0, [x29, 88] beq .L295 and w2, w2, 255 adrp x20, .LANCHOR35 cbnz w24, .L296 .L304: ldr x0, [x20, #:lo12:.LANCHOR35] add w2, w2, 1 cmp x4, 0 asr w2, w2, 1 csel x0, x4, x0, ne add x20, x20, :lo12:.LANCHOR35 bfi w19, w2, 22, 6 and x2, x0, 4294967295 add x2, x2, 63 mov x25, x4 and x2, x2, -64 ldr x1, [x20, 8] ubfx x23, x19, 22, 5 stp x0, x1, [x20, 16] stp w0, w1, [x20, 32] ubfiz x1, x23, 10, 5 add x1, x2, x1 and x0, x0, 4294967232 bl flush_dcache_range ubfiz x23, x23, 7, 5 ldr w0, [x20, 36] add x1, x0, 63 and x0, x0, 4294967232 and x1, x1, -64 add x1, x1, x23 bl flush_dcache_range mov w0, 1 str w0, [x20, 40] ldr w0, [x20, 32] mov w1, 16 str w0, [x21, 20] tst x25, 3 ldr w0, [x20, 36] str w0, [x21, 24] str wzr, [x29, 88] ldr w0, [x29, 88] bfi w0, w1, 9, 5 str w0, [x29, 88] ldr w0, [x29, 88] orr w0, w0, 448 str w0, [x29, 88] bne .L305 ldr w0, [x29, 88] mov w1, 2 bfi w0, w1, 3, 3 str w0, [x29, 88] .L305: ldr w0, [x29, 88] cmp w24, 0 cset w1, eq orr w0, w0, 4 str w0, [x29, 88] ldr w0, [x29, 88] bfi w0, w1, 1, 1 str w0, [x29, 88] ldr w0, [x29, 88] orr w0, w0, 1 str w0, [x29, 88] .L295: ldr w0, [x29, 88] str w0, [x21, 16] .L294: str w22, [x21, 12] str w19, [x21, 8] orr w19, w19, 4 str w19, [x21, 8] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldr x25, [sp, 64] ldp x29, x30, [sp], 96 ret .L296: adrp x0, .LANCHOR32 mov w6, 64 lsr w11, w2, 1 mov x1, x5 ldr w0, [x0, #:lo12:.LANCHOR32] mov w7, 0 mov w3, 0 mov w12, -1 cmp w0, 25 mov w0, 128 csel w6, w6, w0, cc add x0, x20, :lo12:.LANCHOR35 ldr x10, [x0, 8] .L300: cmp w3, w11 bcs .L304 lsr w0, w7, 2 lsl w0, w0, 2 cbz x5, .L301 ldrh w13, [x1] add x1, x1, 4 ldrh w8, [x1, -2] orr x8, x13, x8, lsl 16 str w8, [x10, x0] .L302: add w3, w3, 1 add w7, w7, w6 b .L300 .L301: str w12, [x10, x0] b .L302 .size NandcXferStart, .-NandcXferStart .section .text.NandcXferComp,"ax",@progbits .align 2 .global NandcXferComp .type NandcXferComp, %function NandcXferComp: ubfiz x0, x0, 4, 8 adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 stp x29, x30, [sp, -32]! add x29, sp, 0 ldr x3, [x1, x0] adrp x0, .LANCHOR34 ldr w2, [x0, #:lo12:.LANCHOR34] cmp w2, 3 bls .L333 ldr w0, [x3, 16] tbz x0, 2, .L333 ldr w0, [x3, 16] tbz x0, 1, .L321 ldr w0, [x3, 8] str w0, [x29, 16] .L316: ldr w1, [x3, 28] ldr w0, [x29, 16] ubfx x1, x1, 16, 5 ubfx x0, x0, 22, 6 cmp w1, w0 bge .L317 cmp w2, 5 bls .L316 ldr w0, [x3] str w0, [x29, 24] ldr w0, [x29, 24] tbz x0, 13, .L316 ldr w0, [x29, 24] tbz x0, 17, .L316 .L317: adrp x0, .LANCHOR35+40 str wzr, [x0, #:lo12:.LANCHOR35+40] .L312: ldp x29, x30, [sp], 32 ret .L321: ldr w0, [x3, 8] str w0, [x29, 16] ldr w0, [x29, 16] tbz x0, 20, .L321 adrp x0, .LANCHOR36 mov x4, x0 ldr w1, [x0, #:lo12:.LANCHOR36] cbz w1, .L322 mov x0, x3 bl NandcSendDumpDataStart .L322: ldr w0, [x4, #:lo12:.LANCHOR36] cbz w0, .L317 mov x0, x3 bl NandcSendDumpDataDone b .L317 .L333: ldr w0, [x3, 8] str w0, [x29, 16] ldr w0, [x29, 16] tbz x0, 20, .L333 b .L312 .size NandcXferComp, .-NandcXferComp .section .text.Ftl_log2,"ax",@progbits .align 2 .global Ftl_log2 .type Ftl_log2, %function Ftl_log2: mov w2, 1 mov w1, 0 .L342: cmp w2, w0 bls .L343 sub w0, w1, #1 ret .L343: add w1, w1, 1 lsl w2, w2, 1 and w1, w1, 65535 b .L342 .size Ftl_log2, .-Ftl_log2 .section .text.FtlPrintInfo,"ax",@progbits .align 2 .global FtlPrintInfo .type FtlPrintInfo, %function FtlPrintInfo: ret .size FtlPrintInfo, .-FtlPrintInfo .section .text.FtlSysBlkNumInit,"ax",@progbits .align 2 .global FtlSysBlkNumInit .type FtlSysBlkNumInit, %function FtlSysBlkNumInit: and w0, w0, 65535 mov w1, 24 cmp w0, 24 adrp x2, .LANCHOR39 csel w0, w0, w1, cs adrp x1, .LANCHOR37 and w0, w0, 65535 str w0, [x1, #:lo12:.LANCHOR37] adrp x1, .LANCHOR38 ldrh w1, [x1, #:lo12:.LANCHOR38] mul w1, w1, w0 str w1, [x2, #:lo12:.LANCHOR39] adrp x2, .LANCHOR41 ldrh w2, [x2, #:lo12:.LANCHOR41] sub w0, w2, w0 adrp x2, .LANCHOR40 strh w0, [x2, #:lo12:.LANCHOR40] adrp x0, .LANCHOR43 ldr w0, [x0, #:lo12:.LANCHOR43] sub w1, w0, w1 adrp x0, .LANCHOR42 str w1, [x0, #:lo12:.LANCHOR42] mov w0, 0 ret .size FtlSysBlkNumInit, .-FtlSysBlkNumInit .section .text.FtlConstantsInit,"ax",@progbits .align 2 .global FtlConstantsInit .type FtlConstantsInit, %function FtlConstantsInit: stp x29, x30, [sp, -32]! mov x5, x0 adrp x1, .LANCHOR46 adrp x4, .LANCHOR45 add x29, sp, 0 ldrh w11, [x0, 8] adrp x0, .LANCHOR44 adrp x6, .LANCHOR41 ldrh w2, [x5, 10] strh w11, [x0, #:lo12:.LANCHOR44] mov x3, 0 ldrh w0, [x5, 12] ldrh w8, [x5, 14] strh w0, [x1, #:lo12:.LANCHOR46] adrp x1, .LANCHOR47 add x7, x1, :lo12:.LANCHOR47 strh w2, [x4, #:lo12:.LANCHOR45] strh w8, [x6, #:lo12:.LANCHOR41] str x19, [sp, 16] .L347: strb w3, [x3, x7] add x3, x3, 1 cmp x3, 32 bne .L347 ldrh w7, [x5, 20] ldrb w3, [x5, 15] cmp w7, w3 bcs .L348 and w13, w0, 255 mul w15, w0, w2 ubfiz w14, w13, 1, 7 add x1, x1, :lo12:.LANCHOR47 mov w7, 0 .L349: cmp w7, w0 bcs .L351 and w3, w7, 255 mov w10, w7 mov w12, 0 b .L352 .L350: add w16, w15, w10 strb w3, [x1, w10, uxtw] add w17, w13, w3 add w3, w14, w3 add w12, w12, 1 and w3, w3, 255 add w10, w10, w0 strb w17, [x1, x16] .L352: cmp w12, w2 bcc .L350 add w7, w7, 1 b .L349 .L351: ubfiz w2, w2, 1, 15 lsr w8, w8, 1 strh w2, [x4, #:lo12:.LANCHOR45] strh w8, [x6, #:lo12:.LANCHOR41] .L348: adrp x1, .LANCHOR48 adrp x13, .LANCHOR49 mov w2, 5 cmp w11, 1 strh w2, [x1, #:lo12:.LANCHOR48] strh wzr, [x13, #:lo12:.LANCHOR49] bne .L353 strh w11, [x1, #:lo12:.LANCHOR48] .L353: adrp x8, .LANCHOR50 mov w1, 4352 strh w1, [x8, #:lo12:.LANCHOR50] adrp x1, .LANCHOR2 ldrb w11, [x1, #:lo12:.LANCHOR2] cbz w11, .L354 mov w1, 384 strh w1, [x8, #:lo12:.LANCHOR50] .L354: ldrh w4, [x4, #:lo12:.LANCHOR45] adrp x1, .LANCHOR38 ldrh w3, [x6, #:lo12:.LANCHOR41] adrp x7, .LANCHOR52 ldrh w19, [x5, 16] adrp x15, .LANCHOR55 ldrh w10, [x5, 20] mul w4, w0, w4 ldrh w14, [x5, 18] mul w0, w0, w3 strh w19, [x7, #:lo12:.LANCHOR52] and w4, w4, 65535 strh w4, [x1, #:lo12:.LANCHOR38] adrp x1, .LANCHOR51 strh w10, [x15, #:lo12:.LANCHOR55] strh w0, [x1, #:lo12:.LANCHOR51] mul w1, w4, w19 adrp x0, .LANCHOR53 strh w14, [x0, #:lo12:.LANCHOR53] adrp x0, .LANCHOR54 strh w1, [x0, #:lo12:.LANCHOR54] mov w0, w10 bl Ftl_log2 and w12, w0, 65535 adrp x6, .LANCHOR56 ubfiz w2, w10, 9, 7 ldrh w1, [x5, 26] cmp w3, 1024 strh w0, [x6, #:lo12:.LANCHOR56] adrp x0, .LANCHOR57 strh w2, [x0, #:lo12:.LANCHOR57] adrp x0, .LANCHOR58 ubfx w2, w2, 8, 8 strh w2, [x0, #:lo12:.LANCHOR58] adrp x0, .LANCHOR59 strh w1, [x0, #:lo12:.LANCHOR59] adrp x0, .LANCHOR43 mul w1, w4, w3 str w1, [x0, #:lo12:.LANCHOR43] bls .L355 and w0, w3, 255 strh w0, [x13, #:lo12:.LANCHOR49] .L355: ldrh w0, [x13, #:lo12:.LANCHOR49] adrp x1, .LANCHOR60 sub w0, w3, w0 mul w0, w0, w4 mul w0, w0, w10 mul w0, w0, w19 asr w0, w0, 11 str w0, [x1, #:lo12:.LANCHOR60] ldrh w0, [x8, #:lo12:.LANCHOR50] mul w1, w14, w10 adrp x10, .LANCHOR61 lsl w0, w0, 3 sdiv w0, w0, w1 and w0, w0, 65535 cmp w0, 4 bls .L356 .L372: strh w0, [x10, #:lo12:.LANCHOR61] cbz w11, .L358 mov w0, 640 strh w0, [x8, #:lo12:.LANCHOR50] .L358: ldrh w0, [x8, #:lo12:.LANCHOR50] adrp x1, .LANCHOR62 lsl w3, w3, 6 cmp w4, 1 adrp x8, .LANCHOR37 asr w0, w0, w12 add w0, w0, 2 strh w0, [x1, #:lo12:.LANCHOR62] add w0, w12, 9 adrp x1, .LANCHOR64 asr w3, w3, w0 adrp x0, .LANCHOR63 strh w3, [x0, #:lo12:.LANCHOR63] and w3, w3, 65535 mul w0, w4, w3 add w3, w3, 8 str w0, [x1, #:lo12:.LANCHOR64] ldrh w0, [x10, #:lo12:.LANCHOR61] udiv w0, w0, w4 mov x4, x1 add w3, w0, w3 beq .L359 .L373: str w3, [x8, #:lo12:.LANCHOR37] ldrh w0, [x8, #:lo12:.LANCHOR37] bl FtlSysBlkNumInit ldr w1, [x8, #:lo12:.LANCHOR37] adrp x0, .LANCHOR65 mov w2, 24 str w1, [x0, #:lo12:.LANCHOR65] adrp x0, .LANCHOR42 ldrh w1, [x7, #:lo12:.LANCHOR52] ldr w0, [x0, #:lo12:.LANCHOR42] lsl w0, w0, 2 mul w0, w0, w1 ldrh w1, [x6, #:lo12:.LANCHOR56] adrp x6, .LANCHOR16 add w1, w1, 9 ldrb w6, [x6, #:lo12:.LANCHOR16] lsr w0, w0, w1 adrp x1, .LANCHOR66 add w0, w0, 2 and w0, w0, 65535 strh w0, [x1, #:lo12:.LANCHOR66] adrp x1, .LANCHOR67 strh w2, [x1, #:lo12:.LANCHOR67] adrp x1, .LANCHOR68 ldrh w2, [x10, #:lo12:.LANCHOR61] str wzr, [x1, #:lo12:.LANCHOR68] add w1, w2, 3 strh w1, [x10, #:lo12:.LANCHOR61] ldr w1, [x4, #:lo12:.LANCHOR64] add w3, w1, 3 str w3, [x4, #:lo12:.LANCHOR64] cbz w6, .L361 add w1, w1, 5 add w2, w2, 4 strh w2, [x10, #:lo12:.LANCHOR61] .L374: str w1, [x4, #:lo12:.LANCHOR64] .L362: adrp x1, .LANCHOR40 adrp x3, .LANCHOR69 ldrh w1, [x1, #:lo12:.LANCHOR40] strh wzr, [x3, #:lo12:.LANCHOR69] lsl w2, w1, 1 lsr w1, w1, 3 add w2, w2, 48 add w1, w1, 4 add w0, w2, w0, lsl 2 add w0, w0, w1 ldrh w1, [x15, #:lo12:.LANCHOR55] cmp w0, w1, lsl 9 bcs .L363 mov w0, 1 strh w0, [x3, #:lo12:.LANCHOR69] .L363: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L356: mov w0, 4 b .L372 .L359: add w3, w3, 4 b .L373 .L361: cmp w3, 7 bhi .L362 mov w1, 8 b .L374 .size FtlConstantsInit, .-FtlConstantsInit .section .text.IsBlkInVendorPart,"ax",@progbits .align 2 .global IsBlkInVendorPart .type IsBlkInVendorPart, %function IsBlkInVendorPart: adrp x1, .LANCHOR70 and w0, w0, 65535 ldrh w1, [x1, #:lo12:.LANCHOR70] cbz w1, .L379 adrp x1, .LANCHOR61 ldrh w2, [x1, #:lo12:.LANCHOR61] adrp x1, .LANCHOR71 ldr x3, [x1, #:lo12:.LANCHOR71] mov x1, 0 .L377: cmp w2, w1, uxth bhi .L378 .L379: mov w0, 0 ret .L378: add x1, x1, 1 add x4, x3, x1, lsl 1 ldrh w4, [x4, -2] cmp w4, w0 bne .L377 mov w0, 1 ret .size IsBlkInVendorPart, .-IsBlkInVendorPart .section .text.FtlCacheMetchLpa,"ax",@progbits .align 2 .global FtlCacheMetchLpa .type FtlCacheMetchLpa, %function FtlCacheMetchLpa: adrp x2, .LANCHOR72 ldr w4, [x2, #:lo12:.LANCHOR72] cbz w4, .L386 adrp x2, .LANCHOR73 mov x5, 24 mov w6, 56 ldr x2, [x2, #:lo12:.LANCHOR73] nop // between mem op and mult-accumulate umaddl x4, w4, w6, x5 add x3, x2, 24 add x2, x2, x4 .L383: cmp x3, x2 bne .L385 .L386: mov w0, 0 ret .L385: ldr w4, [x3] cmp w4, w0 bcc .L384 cmp w4, w1 bls .L387 .L384: add x3, x3, 56 b .L383 .L387: mov w0, 1 ret .size FtlCacheMetchLpa, .-FtlCacheMetchLpa .section .text.FtlGetCap,"ax",@progbits .align 2 .global FtlGetCap .type FtlGetCap, %function FtlGetCap: adrp x0, .LANCHOR68 ldr w0, [x0, #:lo12:.LANCHOR68] ret .size FtlGetCap, .-FtlGetCap .section .text.FtlGetCapacity,"ax",@progbits .align 2 .global FtlGetCapacity .type FtlGetCapacity, %function FtlGetCapacity: adrp x0, .LANCHOR68 ldr w0, [x0, #:lo12:.LANCHOR68] ret .size FtlGetCapacity, .-FtlGetCapacity .section .text.ftl_get_density,"ax",@progbits .align 2 .global ftl_get_density .type ftl_get_density, %function ftl_get_density: adrp x0, .LANCHOR68 ldr w0, [x0, #:lo12:.LANCHOR68] ret .size ftl_get_density, .-ftl_get_density .section .text.FtlGetLpn,"ax",@progbits .align 2 .global FtlGetLpn .type FtlGetLpn, %function FtlGetLpn: adrp x0, .LANCHOR74 ldr w0, [x0, #:lo12:.LANCHOR74] ret .size FtlGetLpn, .-FtlGetLpn .section .text.FtlGetCurEraseBlock,"ax",@progbits .align 2 .global FtlGetCurEraseBlock .type FtlGetCurEraseBlock, %function FtlGetCurEraseBlock: adrp x0, .LANCHOR38 ldrh w1, [x0, #:lo12:.LANCHOR38] adrp x0, .LANCHOR75 ldr w0, [x0, #:lo12:.LANCHOR75] mul w0, w1, w0 ret .size FtlGetCurEraseBlock, .-FtlGetCurEraseBlock .section .text.FtlGetAllBlockNum,"ax",@progbits .align 2 .global FtlGetAllBlockNum .type FtlGetAllBlockNum, %function FtlGetAllBlockNum: adrp x0, .LANCHOR41 ldrh w1, [x0, #:lo12:.LANCHOR41] adrp x0, .LANCHOR38 ldrh w0, [x0, #:lo12:.LANCHOR38] mul w0, w1, w0 ret .size FtlGetAllBlockNum, .-FtlGetAllBlockNum .section .text.FtlBbmMapBadBlock,"ax",@progbits .align 2 .global FtlBbmMapBadBlock .type FtlBbmMapBadBlock, %function FtlBbmMapBadBlock: stp x29, x30, [sp, -32]! and w1, w0, 65535 adrp x0, .LANCHOR51 mov w4, 1 add x29, sp, 0 ldrh w0, [x0, #:lo12:.LANCHOR51] str x19, [sp, 16] adrp x19, .LANCHOR76 add x19, x19, :lo12:.LANCHOR76 udiv w3, w1, w0 and w2, w3, 65535 msub w3, w3, w0, w1 add x0, x19, x2, uxth 3 and w3, w3, 65535 and w6, w3, 31 ldr x0, [x0, 32] ubfx x5, x3, 5, 11 lsl x5, x5, 2 lsl w4, w4, w6 ldr w6, [x0, x5] orr w4, w4, w6 str w4, [x0, x5] adrp x0, .LC2 add x0, x0, :lo12:.LC2 bl printf ldrh w0, [x19, 6] add w0, w0, 1 strh w0, [x19, 6] mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock .section .text.FtlBbmIsBadBlock,"ax",@progbits .align 2 .global FtlBbmIsBadBlock .type FtlBbmIsBadBlock, %function FtlBbmIsBadBlock: adrp x1, .LANCHOR51 and w0, w0, 65535 ldrh w1, [x1, #:lo12:.LANCHOR51] udiv w2, w0, w1 msub w0, w2, w1, w0 adrp x1, .LANCHOR76 add x1, x1, :lo12:.LANCHOR76 add x2, x1, x2, uxth 3 and w0, w0, 65535 ubfx x3, x0, 5, 11 and w0, w0, 31 ldr x1, [x2, 32] ldr w1, [x1, x3, lsl 2] lsr w0, w1, w0 and w0, w0, 1 ret .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock .section .text.FtlBbtInfoPrint,"ax",@progbits .align 2 .global FtlBbtInfoPrint .type FtlBbtInfoPrint, %function FtlBbtInfoPrint: ret .size FtlBbtInfoPrint, .-FtlBbtInfoPrint .section .text.V2P_block,"ax",@progbits .align 2 .global V2P_block .type V2P_block, %function V2P_block: adrp x2, .LANCHOR46 and w0, w0, 65535 adrp x4, .LANCHOR51 and w1, w1, 65535 ldrh w2, [x2, #:lo12:.LANCHOR46] ldrh w4, [x4, #:lo12:.LANCHOR51] udiv w3, w0, w2 msub w0, w3, w2, w0 madd w2, w2, w1, w0 madd w0, w3, w4, w2 ret .size V2P_block, .-V2P_block .section .text.P2V_plane,"ax",@progbits .align 2 .global P2V_plane .type P2V_plane, %function P2V_plane: and w3, w0, 65535 adrp x0, .LANCHOR46 ldrh w1, [x0, #:lo12:.LANCHOR46] adrp x0, .LANCHOR51 ldrh w2, [x0, #:lo12:.LANCHOR51] udiv w0, w3, w1 udiv w2, w3, w2 msub w0, w0, w1, w3 madd w0, w1, w2, w0 ret .size P2V_plane, .-P2V_plane .section .text.P2V_block_in_plane,"ax",@progbits .align 2 .global P2V_block_in_plane .type P2V_block_in_plane, %function P2V_block_in_plane: and w2, w0, 65535 adrp x0, .LANCHOR51 ldrh w1, [x0, #:lo12:.LANCHOR51] udiv w0, w2, w1 msub w0, w0, w1, w2 adrp x1, .LANCHOR46 ldrh w1, [x1, #:lo12:.LANCHOR46] and w0, w0, 65535 udiv w0, w0, w1 ret .size P2V_block_in_plane, .-P2V_block_in_plane .section .text.ftl_cmp_data_ver,"ax",@progbits .align 2 .global ftl_cmp_data_ver .type ftl_cmp_data_ver, %function ftl_cmp_data_ver: cmp w0, w1 mov w2, -2147483648 bls .L402 sub w1, w0, w1 cmp w1, w2 cset w0, ls ret .L402: sub w1, w1, w0 cmp w1, w2 cset w0, hi ret .size ftl_cmp_data_ver, .-ftl_cmp_data_ver .section .text.FtlFreeSysBlkQueueEmpty,"ax",@progbits .align 2 .global FtlFreeSysBlkQueueEmpty .type FtlFreeSysBlkQueueEmpty, %function FtlFreeSysBlkQueueEmpty: adrp x0, .LANCHOR77+6 ldrh w0, [x0, #:lo12:.LANCHOR77+6] cmp w0, 0 cset w0, eq ret .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty .section .text.FtlFreeSysBlkQueueFull,"ax",@progbits .align 2 .global FtlFreeSysBlkQueueFull .type FtlFreeSysBlkQueueFull, %function FtlFreeSysBlkQueueFull: adrp x0, .LANCHOR77+6 ldrh w0, [x0, #:lo12:.LANCHOR77+6] cmp w0, 1024 cset w0, eq ret .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull .section .text.FtlFreeSysBlkQueueIn,"ax",@progbits .align 2 .global FtlFreeSysBlkQueueIn .type FtlFreeSysBlkQueueIn, %function FtlFreeSysBlkQueueIn: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] and w20, w0, 65535 str x21, [sp, 32] sub w2, w20, #1 mov w0, 65533 cmp w0, w2, uxth bcc .L406 adrp x0, .LANCHOR77 add x2, x0, :lo12:.LANCHOR77 mov x19, x0 ldrh w2, [x2, 6] cmp w2, 1024 beq .L406 and w1, w1, 65535 cbz w1, .L408 adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbnz w0, .L408 mov w0, w20 bl P2V_block_in_plane and w21, w0, 65535 adrp x0, .LANCHOR79 lsl w1, w20, 10 mov w2, 1 ldr x0, [x0, #:lo12:.LANCHOR79] str w1, [x0, 4] mov w1, w2 bl FlashEraseBlocks adrp x1, .LANCHOR80 ubfiz x0, x21, 1, 16 ldr x2, [x1, #:lo12:.LANCHOR80] ldrh w1, [x2, x0] add w1, w1, 1 strh w1, [x2, x0] adrp x1, .LANCHOR81 ldr w0, [x1, #:lo12:.LANCHOR81] add w0, w0, 1 str w0, [x1, #:lo12:.LANCHOR81] .L408: add x0, x19, :lo12:.LANCHOR77 ldrh w1, [x0, 6] add w1, w1, 1 strh w1, [x0, 6] ldrh w1, [x0, 4] add x2, x0, x1, sxtw 1 add w1, w1, 1 and w1, w1, 1023 strh w1, [x0, 4] strh w20, [x2, 8] .L406: ldp x19, x20, [sp, 16] ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .section .text.FtlFreeSysBLkSort,"ax",@progbits .align 2 .global FtlFreeSysBLkSort .type FtlFreeSysBLkSort, %function FtlFreeSysBLkSort: adrp x0, .LANCHOR77 add x1, x0, :lo12:.LANCHOR77 ldrh w2, [x1, 6] cbz w2, .L416 adrp x2, .LANCHOR82+28 ldrh w3, [x1, 2] mov w6, 0 mov w4, 0 ldrh w5, [x2, #:lo12:.LANCHOR82+28] ldrh w2, [x1, 4] and w5, w5, 31 .L418: cmp w5, w4 bgt .L419 cbz w6, .L416 add x0, x0, :lo12:.LANCHOR77 strh w3, [x0, 2] strh w2, [x0, 4] .L416: ret .L419: add x6, x1, x3, sxtw 1 add w4, w4, 1 add w3, w3, 1 and w4, w4, 65535 and w3, w3, 1023 ldrh w7, [x6, 8] add x6, x1, x2, sxtw 1 strh w7, [x6, 8] mov w6, 1 add w2, w2, w6 and w2, w2, 1023 b .L418 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort .section .text.FtlFreeSysBlkQueueOut,"ax",@progbits .align 2 .global FtlFreeSysBlkQueueOut .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR77 add x19, x19, :lo12:.LANCHOR77 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] adrp x22, .LANCHOR78 mov x23, x19 add x22, x22, :lo12:.LANCHOR78 .L426: ldrh w1, [x19, 6] cbz w1, .L427 ldrh w0, [x19, 2] sub w1, w1, #1 strh w1, [x19, 6] add x2, x19, x0, sxtw 1 add w0, w0, 1 and w0, w0, 1023 strh w0, [x19, 2] ldr w0, [x22] ldrh w20, [x2, 8] cbnz w0, .L428 mov w0, w20 bl P2V_block_in_plane adrp x1, .LANCHOR79 and w21, w0, 65535 lsl w2, w20, 10 mov x24, x1 ldr x0, [x1, #:lo12:.LANCHOR79] str w2, [x0, 4] adrp x2, .LANCHOR16 ldrb w2, [x2, #:lo12:.LANCHOR16] cbz w2, .L429 mov w2, 1 mov w1, 0 bl FlashEraseBlocks .L429: ldr x0, [x24, #:lo12:.LANCHOR79] mov w2, 1 mov w1, w2 bl FlashEraseBlocks adrp x1, .LANCHOR80 ubfiz x0, x21, 1, 16 ldr x2, [x1, #:lo12:.LANCHOR80] ldrh w1, [x2, x0] add w1, w1, 1 strh w1, [x2, x0] adrp x1, .LANCHOR81 ldr w0, [x1, #:lo12:.LANCHOR81] add w0, w0, 1 str w0, [x1, #:lo12:.LANCHOR81] .L428: sub w0, w20, #1 mov w1, 65533 cmp w1, w0, uxth bcs .L431 ldrh w2, [x23, 6] mov w1, w20 adrp x0, .LC4 add x0, x0, :lo12:.LC4 bl printf b .L426 .L427: adrp x0, .LC3 mov w1, 0 add x0, x0, :lo12:.LC3 bl printf .L430: b .L430 .L431: mov w0, w20 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .section .text.test_node_in_list,"ax",@progbits .align 2 .global test_node_in_list .type test_node_in_list, %function test_node_in_list: ldr x2, [x0] adrp x0, .LANCHOR83 mov x4, -6148914691236517206 and w1, w1, 65535 ldr x3, [x0, #:lo12:.LANCHOR83] movk x4, 0xaaab, lsl 0 mov w5, 65535 sub x0, x2, x3 asr x0, x0, 1 mul x0, x0, x4 mov w4, 6 and w0, w0, 65535 .L438: cmp w0, w1 beq .L439 ldrh w0, [x2] cmp w0, w5 beq .L440 umaddl x2, w0, w4, x3 b .L438 .L439: mov w0, 1 ret .L440: mov w0, 0 ret .size test_node_in_list, .-test_node_in_list .section .text.insert_data_list,"ax",@progbits .align 2 .global insert_data_list .type insert_data_list, %function insert_data_list: adrp x1, .LANCHOR40 and w0, w0, 65535 ldrh w14, [x1, #:lo12:.LANCHOR40] cmp w14, w0 bls .L457 adrp x1, .LANCHOR83 mov w3, 6 ldr x6, [x1, #:lo12:.LANCHOR83] umull x13, w0, w3 mov w1, -1 add x5, x6, x13 strh w1, [x5, 2] strh w1, [x6, x13] adrp x1, .LANCHOR84 mov x15, x1 ldr x12, [x1, #:lo12:.LANCHOR84] cbnz x12, .L444 str x5, [x1, #:lo12:.LANCHOR84] .L457: mov w0, 0 ret .L444: stp x29, x30, [sp, -32]! adrp x1, .LANCHOR85 ubfiz x2, x0, 1, 16 mov x4, -6148914691236517206 add x29, sp, 0 ldr x16, [x1, #:lo12:.LANCHOR85] movk x4, 0xaaab, lsl 0 ldrh w1, [x5, 4] mov w8, -1 mov w11, w8 stp x19, x20, [sp, 16] cmp w1, 0 mov w20, 65535 ldrh w7, [x16, x2] mul w7, w7, w1 sub x1, x12, x6 asr x1, x1, 1 csel w7, w7, w8, ne mov w8, w3 mul x1, x1, x4 adrp x4, .LANCHOR80 ldr x17, [x4, #:lo12:.LANCHOR80] and w1, w1, 65535 mov x4, x12 add x10, x17, x2 mov w2, 0 .L452: add w2, w2, 1 and w2, w2, 65535 cmp w14, w2 bcc .L443 cmp w1, w0 beq .L443 ubfiz x30, x1, 1, 16 ldrh w19, [x4, 4] cmp w19, 0 ldrh w3, [x16, x30] mul w3, w3, w19 csel w3, w3, w11, ne cmp w7, w3 bne .L448 ldrh w19, [x17, x30] ldrh w3, [x10] cmp w19, w3 bcc .L450 .L449: strh w1, [x6, x13] cmp x4, x12 ldrh w1, [x4, 2] strh w1, [x5, 2] bne .L453 strh w0, [x4, 2] str x5, [x15, #:lo12:.LANCHOR84] b .L443 .L448: bcc .L449 .L450: ldrh w3, [x4] cmp w3, w20 bne .L451 strh w1, [x5, 2] strh w0, [x4] adrp x0, .LANCHOR86 str x5, [x0, #:lo12:.LANCHOR86] .L443: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .L451: umaddl x4, w3, w8, x6 mov w1, w3 b .L452 .L453: ldrh w1, [x4, 2] mov w2, 6 umull x1, w1, w2 strh w0, [x6, x1] strh w0, [x4, 2] b .L443 .size insert_data_list, .-insert_data_list .section .text.INSERT_DATA_LIST,"ax",@progbits .align 2 .global INSERT_DATA_LIST .type INSERT_DATA_LIST, %function INSERT_DATA_LIST: stp x29, x30, [sp, -16]! add x29, sp, 0 bl insert_data_list adrp x1, .LANCHOR87 ldrh w0, [x1, #:lo12:.LANCHOR87] add w0, w0, 1 and w0, w0, 65535 strh w0, [x1, #:lo12:.LANCHOR87] adrp x1, .LANCHOR40 ldrh w1, [x1, #:lo12:.LANCHOR40] cmp w1, w0 bcs .L459 mov w2, 245 adrp x1, .LANCHOR88 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR88 add x0, x0, :lo12:.LC5 bl printf ldp x29, x30, [sp], 16 adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 b printf .L459: ldp x29, x30, [sp], 16 ret .size INSERT_DATA_LIST, .-INSERT_DATA_LIST .section .text.insert_free_list,"ax",@progbits .align 2 .global insert_free_list .type insert_free_list, %function insert_free_list: and w0, w0, 65535 mov w7, 65535 cmp w0, w7 beq .L463 adrp x1, .LANCHOR83 mov w6, 6 ldr x3, [x1, #:lo12:.LANCHOR83] umull x8, w0, w6 mov w1, -1 add x4, x3, x8 strh w1, [x4, 2] strh w1, [x3, x8] adrp x1, .LANCHOR89 mov x12, x1 ldr x5, [x1, #:lo12:.LANCHOR89] cbnz x5, .L464 str x4, [x1, #:lo12:.LANCHOR89] .L463: mov w0, 0 ret .L464: adrp x1, .LANCHOR80 mov x2, -6148914691236517206 movk x2, 0xaaab, lsl 0 ldr x11, [x1, #:lo12:.LANCHOR80] ubfiz x1, x0, 1, 16 ldrh w13, [x11, x1] sub x1, x5, x3 asr x1, x1, 1 mul x1, x1, x2 mov x2, x5 and w1, w1, 65535 .L467: ubfiz x10, x1, 1, 16 ldrh w10, [x11, x10] cmp w10, w13 bcs .L465 ldrh w10, [x2] cmp w10, w7 bne .L466 strh w1, [x4, 2] strh w0, [x2] b .L463 .L466: umaddl x2, w10, w6, x3 mov w1, w10 b .L467 .L465: ldrh w6, [x2, 2] cmp x2, x5 strh w6, [x4, 2] strh w1, [x3, x8] bne .L468 strh w0, [x2, 2] str x4, [x12, #:lo12:.LANCHOR89] b .L463 .L468: ldrh w1, [x2, 2] mov w4, 6 umull x1, w1, w4 strh w0, [x3, x1] strh w0, [x2, 2] b .L463 .size insert_free_list, .-insert_free_list .section .text.INSERT_FREE_LIST,"ax",@progbits .align 2 .global INSERT_FREE_LIST .type INSERT_FREE_LIST, %function INSERT_FREE_LIST: stp x29, x30, [sp, -16]! add x29, sp, 0 bl insert_free_list adrp x1, .LANCHOR90 ldrh w0, [x1, #:lo12:.LANCHOR90] add w0, w0, 1 and w0, w0, 65535 strh w0, [x1, #:lo12:.LANCHOR90] adrp x1, .LANCHOR40 ldrh w1, [x1, #:lo12:.LANCHOR40] cmp w1, w0 bcs .L469 mov w2, 238 adrp x1, .LANCHOR91 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR91 add x0, x0, :lo12:.LC5 bl printf ldp x29, x30, [sp], 16 adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 b printf .L469: ldp x29, x30, [sp], 16 ret .size INSERT_FREE_LIST, .-INSERT_FREE_LIST .section .text.List_remove_node,"ax",@progbits .align 2 .global List_remove_node .type List_remove_node, %function List_remove_node: stp x29, x30, [sp, -64]! and w1, w1, 65535 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR83 stp x21, x22, [sp, 32] mov x22, x0 mov w0, 6 str x23, [sp, 48] ldr x23, [x20, #:lo12:.LANCHOR83] umull x21, w1, w0 mov w0, 65535 add x19, x23, x21 ldrh w1, [x19, 2] cmp w1, w0 bne .L473 ldr x0, [x22] cmp x19, x0 beq .L473 mov w2, 435 adrp x1, .LANCHOR92 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR92 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L473: ldr x0, [x22] mov w1, 65535 cmp x19, x0 ldrh w0, [x23, x21] bne .L474 cmp w0, w1 bne .L475 str xzr, [x22] .L476: mov w0, -1 strh w0, [x23, x21] strh w0, [x19, 2] mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .L475: ldr x1, [x20, #:lo12:.LANCHOR83] mov w2, 6 umaddl x0, w0, w2, x1 mov w1, -1 str x0, [x22] strh w1, [x0, 2] b .L476 .L474: cmp w0, w1 ldrh w1, [x19, 2] bne .L477 cmp w1, w0 beq .L476 mov w0, 6 mov w2, -1 umull x1, w1, w0 ldr x0, [x20, #:lo12:.LANCHOR83] strh w2, [x0, x1] b .L476 .L477: ldr x2, [x20, #:lo12:.LANCHOR83] mov w3, 6 umaddl x4, w0, w3, x2 strh w1, [x4, 2] ldrh w1, [x19, 2] umull x1, w1, w3 strh w0, [x2, x1] b .L476 .size List_remove_node, .-List_remove_node .section .text.List_pop_index_node,"ax",@progbits .align 2 .global List_pop_index_node .type List_pop_index_node, %function List_pop_index_node: ldr x2, [x0] cbz x2, .L485 stp x29, x30, [sp, -32]! adrp x3, .LANCHOR83 and w1, w1, 65535 mov w4, 65535 add x29, sp, 0 str x19, [sp, 16] mov w5, 6 ldr x19, [x3, #:lo12:.LANCHOR83] .L481: cbnz w1, .L482 .L484: sub x19, x2, x19 mov x2, -6148914691236517206 asr x19, x19, 1 movk x2, 0xaaab, lsl 0 mul x19, x19, x2 and w19, w19, 65535 mov w1, w19 bl List_remove_node mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L482: ldrh w3, [x2] cmp w3, w4 beq .L484 sub w1, w1, #1 umaddl x2, w3, w5, x19 and w1, w1, 65535 b .L481 .L485: mov w0, 65535 ret .size List_pop_index_node, .-List_pop_index_node .section .text.List_get_gc_head_node,"ax",@progbits .align 2 .global List_get_gc_head_node .type List_get_gc_head_node, %function List_get_gc_head_node: and w2, w0, 65535 adrp x0, .LANCHOR84 ldr x1, [x0, #:lo12:.LANCHOR84] cbz x1, .L495 adrp x0, .LANCHOR83 mov w4, 6 ldr x3, [x0, #:lo12:.LANCHOR83] mov w0, 65535 .L492: cbz w2, .L493 ldrh w1, [x1] cmp w1, w0 bne .L494 ret .L494: sub w2, w2, #1 umaddl x1, w1, w4, x3 and w2, w2, 65535 b .L492 .L495: mov w0, 65535 ret .L493: sub x0, x1, x3 mov x1, -6148914691236517206 asr x0, x0, 1 movk x1, 0xaaab, lsl 0 mul x0, x0, x1 and w0, w0, 65535 ret .size List_get_gc_head_node, .-List_get_gc_head_node .section .text.List_update_data_list,"ax",@progbits .align 2 .global List_update_data_list .type List_update_data_list, %function List_update_data_list: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 65535 adrp x0, .LANCHOR93 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] ldrh w0, [x0, #:lo12:.LANCHOR93] stp x25, x26, [sp, 64] cmp w0, w19 beq .L498 adrp x0, .LANCHOR94 ldrh w0, [x0, #:lo12:.LANCHOR94] cmp w0, w19 beq .L498 adrp x0, .LANCHOR95 ldrh w0, [x0, #:lo12:.LANCHOR95] cmp w0, w19 beq .L498 adrp x0, .LANCHOR83 mov w21, 6 adrp x24, .LANCHOR84 mov x26, x0 umull x21, w19, w21 ldr x23, [x0, #:lo12:.LANCHOR83] ldr x1, [x24, #:lo12:.LANCHOR84] add x22, x23, x21 cmp x22, x1 beq .L498 adrp x1, .LANCHOR85 ubfiz x0, x19, 1, 16 mov x25, x1 ldr x2, [x1, #:lo12:.LANCHOR85] mov w1, 65535 ldrh w20, [x2, x0] ldrh w0, [x22, 4] cmp w0, 0 mul w20, w20, w0 ldrh w0, [x22, 2] csinv w20, w20, wzr, ne cmp w0, w1 bne .L501 ldrh w1, [x23, x21] cmp w1, w0 bne .L501 mov w2, 571 adrp x1, .LANCHOR96 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR96 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L501: ldrh w0, [x22, 2] mov w1, 65535 cmp w0, w1 bne .L502 ldrh w1, [x23, x21] cmp w1, w0 beq .L498 .L502: mov w1, 6 mov x2, -6148914691236517206 movk x2, 0xaaab, lsl 0 umull x0, w0, w1 asr x1, x0, 1 mul x1, x1, x2 ldr x2, [x25, #:lo12:.LANCHOR85] ldrh w1, [x2, x1, lsl 1] ldr x2, [x26, #:lo12:.LANCHOR83] add x0, x2, x0 ldrh w2, [x0, 4] cmp w2, 0 mul w0, w1, w2 csinv w0, w0, wzr, ne cmp w20, w0 bcs .L498 adrp x20, .LANCHOR87 mov w1, w19 add x0, x24, :lo12:.LANCHOR84 bl List_remove_node ldrh w0, [x20, #:lo12:.LANCHOR87] cbnz w0, .L504 mov w2, 585 adrp x1, .LANCHOR96 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR96 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L504: ldrh w0, [x20, #:lo12:.LANCHOR87] sub w0, w0, #1 strh w0, [x20, #:lo12:.LANCHOR87] mov w0, w19 bl INSERT_DATA_LIST .L498: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 80 ret .size List_update_data_list, .-List_update_data_list .section .text.ftl_map_blk_alloc_new_blk,"ax",@progbits .align 2 .global ftl_map_blk_alloc_new_blk .type ftl_map_blk_alloc_new_blk, %function ftl_map_blk_alloc_new_blk: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 ldrh w1, [x0, 10] mov w20, 0 ldr x0, [x0, 16] str x21, [sp, 32] .L509: cmp w20, w1 beq .L513 mov x21, x0 ldrh w2, [x0], 2 cbnz w2, .L510 bl FtlFreeSysBlkQueueOut and w1, w0, 65535 strh w0, [x21] sub w2, w1, #1 mov w0, 65533 cmp w0, w2, uxth bcs .L511 adrp x0, .LANCHOR77+6 ldrh w2, [x0, #:lo12:.LANCHOR77+6] adrp x0, .LC8 add x0, x0, :lo12:.LC8 bl printf .L512: b .L512 .L511: ldr w0, [x19, 48] strh wzr, [x19, 2] add w0, w0, 1 str w0, [x19, 48] ldrh w0, [x19, 8] strh w20, [x19] add w0, w0, 1 strh w0, [x19, 8] .L513: ldrh w0, [x19, 10] cmp w0, w20 bhi .L515 mov w2, 715 adrp x1, .LANCHOR97 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR97 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L515: mov w0, 0 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .L510: add w20, w20, 1 and w20, w20, 65535 b .L509 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .section .text.select_l2p_ram_region,"ax",@progbits .align 2 .global select_l2p_ram_region .type select_l2p_ram_region, %function select_l2p_ram_region: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR67 mov x1, 0 mov w3, 65535 add x29, sp, 0 ldrh w2, [x0, #:lo12:.LANCHOR67] adrp x0, .LANCHOR98 str x19, [sp, 16] ldr x0, [x0, #:lo12:.LANCHOR98] .L518: and w19, w1, 65535 cmp w19, w2 bcc .L520 add x3, x0, 4 mov w19, w2 mov w5, -2147483648 mov w1, 0 .L521: cmp w1, w2 bne .L523 cmp w19, w2 bcc .L519 adrp x1, .LANCHOR99 mov w19, w2 mov w3, -1 ldrh w4, [x1, #:lo12:.LANCHOR99] mov w1, 0 .L524: cmp w1, w2 bne .L526 cmp w19, w1 bcc .L519 mov w2, 977 adrp x1, .LANCHOR100 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR100 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf b .L519 .L520: add x1, x1, 1 add x4, x0, x1, lsl 4 ldrh w4, [x4, -16] cmp w4, w3 bne .L518 .L519: mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L523: ldr w4, [x3] tbnz w4, #31, .L522 cmp w5, w4 bls .L522 mov w5, w4 mov w19, w1 .L522: add w1, w1, 1 add x3, x3, 16 and w1, w1, 65535 b .L521 .L526: ldr w6, [x0, 4] cmp w3, w6 bls .L525 ldrh w5, [x0] cmp w5, w4 csel w3, w3, w6, eq csel w19, w19, w1, eq .L525: add w1, w1, 1 add x0, x0, 16 and w1, w1, 65535 b .L524 .size select_l2p_ram_region, .-select_l2p_ram_region .section .text.FtlUpdateVaildLpn,"ax",@progbits .align 2 .global FtlUpdateVaildLpn .type FtlUpdateVaildLpn, %function FtlUpdateVaildLpn: adrp x2, .LANCHOR101 mov x3, x2 ldrh w1, [x2, #:lo12:.LANCHOR101] cmp w1, 4 bhi .L529 cbnz w0, .L529 add w1, w1, 1 strh w1, [x2, #:lo12:.LANCHOR101] ret .L529: adrp x1, .LANCHOR40 adrp x0, .LANCHOR102 strh wzr, [x3, #:lo12:.LANCHOR101] mov w2, 0 ldrh w5, [x1, #:lo12:.LANCHOR40] adrp x1, .LANCHOR85 str wzr, [x0, #:lo12:.LANCHOR102] mov w3, 0 ldr x6, [x1, #:lo12:.LANCHOR85] mov w7, 65535 mov x1, 0 .L530: cmp w5, w1, uxth bhi .L532 cbz w3, .L528 str w2, [x0, #:lo12:.LANCHOR102] .L528: ret .L532: ldrh w4, [x6, x1, lsl 1] cmp w4, w7 beq .L531 add w2, w2, w4 mov w3, 1 .L531: add x1, x1, 1 b .L530 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .section .text.ftl_set_blk_mode,"ax",@progbits .align 2 .global ftl_set_blk_mode .type ftl_set_blk_mode, %function ftl_set_blk_mode: and w0, w0, 65535 cbz w1, .L539 b ftl_set_blk_mode.part.11 .L539: adrp x1, .LANCHOR1 ubfx x2, x0, 5, 11 lsl x2, x2, 2 ldr x3, [x1, #:lo12:.LANCHOR1] and w1, w0, 31 mov w0, 1 lsl w0, w0, w1 ldr w1, [x3, x2] bic w0, w1, w0 str w0, [x3, x2] ret .size ftl_set_blk_mode, .-ftl_set_blk_mode .section .text.ftl_get_blk_mode,"ax",@progbits .align 2 .global ftl_get_blk_mode .type ftl_get_blk_mode, %function ftl_get_blk_mode: adrp x1, .LANCHOR1 and w0, w0, 65535 ldr x1, [x1, #:lo12:.LANCHOR1] ubfx x2, x0, 5, 11 and w0, w0, 31 ldr w1, [x1, x2, lsl 2] lsr w0, w1, w0 and w0, w0, 1 ret .size ftl_get_blk_mode, .-ftl_get_blk_mode .section .text.ftl_sb_update_avl_pages,"ax",@progbits .align 2 .global ftl_sb_update_avl_pages .type ftl_sb_update_avl_pages, %function ftl_sb_update_avl_pages: and w2, w2, 65535 and w6, w1, 65535 ubfiz x4, x2, 1, 16 adrp x1, .LANCHOR38 add x4, x4, 16 strh wzr, [x0, 4] add x4, x0, x4 ldrh w3, [x1, #:lo12:.LANCHOR38] mov w1, 65535 .L542: cmp w2, w3 bcc .L544 adrp x1, .LANCHOR52 ubfiz x3, x3, 1, 16 add x3, x3, 16 add x2, x0, 16 ldrh w1, [x1, #:lo12:.LANCHOR52] add x3, x0, x3 mov w5, 65535 sub w1, w1, #1 and w1, w1, 65535 sub w1, w1, w6 .L545: cmp x2, x3 bne .L547 ret .L544: ldrh w5, [x4] cmp w5, w1 beq .L543 ldrh w5, [x0, 4] add w5, w5, 1 strh w5, [x0, 4] .L543: add w2, w2, 1 add x4, x4, 2 and w2, w2, 65535 b .L542 .L547: ldrh w4, [x2] cmp w4, w5 beq .L546 ldrh w4, [x0, 4] add w4, w1, w4 strh w4, [x0, 4] .L546: add x2, x2, 2 b .L545 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .section .text.make_superblock,"ax",@progbits .align 2 .global make_superblock .type make_superblock, %function make_superblock: stp x29, x30, [sp, -32]! add x29, sp, 0 ldrh w1, [x0] str x19, [sp, 16] mov x19, x0 adrp x0, .LANCHOR40 ldrh w0, [x0, #:lo12:.LANCHOR40] cmp w1, w0 bcc .L549 mov w2, 2819 adrp x1, .LANCHOR103 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR103 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L549: adrp x0, .LANCHOR38 adrp x7, .LANCHOR47 add x6, x19, 16 add x7, x7, :lo12:.LANCHOR47 ldrh w8, [x0, #:lo12:.LANCHOR38] mov x5, 0 strh wzr, [x19, 4] mov w10, -1 strb wzr, [x19, 7] .L550: cmp w8, w5, uxth bhi .L552 adrp x1, .LANCHOR52 ldrb w0, [x19, 7] strb wzr, [x19, 9] ldrh w1, [x1, #:lo12:.LANCHOR52] mul w0, w0, w1 strh w0, [x19, 4] adrp x0, .LANCHOR104 ldr w0, [x0, #:lo12:.LANCHOR104] cbz w0, .L553 adrp x0, .LANCHOR80 ldrh w1, [x19] ldr x0, [x0, #:lo12:.LANCHOR80] ldrh w0, [x0, x1, lsl 1] cmp w0, 79 bhi .L553 mov w0, 1 strb w0, [x19, 9] .L553: adrp x0, .LANCHOR2 ldrb w0, [x0, #:lo12:.LANCHOR2] cbz w0, .L554 mov w0, 1 strb w0, [x19, 9] .L554: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L552: ldrh w1, [x19] ldrb w0, [x7, x5] bl V2P_block mov w4, w0 strh w10, [x6] bl FtlBbmIsBadBlock cbnz w0, .L551 strh w4, [x6] ldrb w0, [x19, 7] add w0, w0, 1 strb w0, [x19, 7] .L551: add x5, x5, 1 add x6, x6, 2 b .L550 .size make_superblock, .-make_superblock .section .text.update_multiplier_value,"ax",@progbits .align 2 .global update_multiplier_value .type update_multiplier_value, %function update_multiplier_value: and w6, w0, 65535 adrp x0, .LANCHOR38 mov x7, 0 adrp x8, .LANCHOR47 ldrh w10, [x0, #:lo12:.LANCHOR38] adrp x0, .LANCHOR52 mov w5, 0 add x8, x8, :lo12:.LANCHOR47 ldrh w11, [x0, #:lo12:.LANCHOR52] cmp w10, w7, uxth bhi .L574 cbz w5, .L572 mov w0, 32768 sdiv w5, w0, w5 .L573: adrp x0, .LANCHOR83 mov w1, 6 ldr x0, [x0, #:lo12:.LANCHOR83] umaddl x6, w6, w1, x0 mov w0, 0 strh w5, [x6, 4] ret .L567: mov w5, 0 b .L566 .L572: mov w5, 0 b .L573 .L574: stp x29, x30, [sp, -16]! add x29, sp, 0 .L565: ldrb w0, [x8, x7] mov w1, w6 bl V2P_block bl FtlBbmIsBadBlock cbnz w0, .L564 add w5, w5, w11 and w5, w5, 65535 .L564: add x7, x7, 1 cmp w10, w7, uxth bhi .L565 cbz w5, .L567 mov w0, 32768 sdiv w5, w0, w5 .L566: adrp x0, .LANCHOR83 mov w1, 6 ldr x0, [x0, #:lo12:.LANCHOR83] umaddl x6, w6, w1, x0 mov w0, 0 strh w5, [x6, 4] ldp x29, x30, [sp], 16 ret .size update_multiplier_value, .-update_multiplier_value .section .text.GetFreeBlockMinEraseCount,"ax",@progbits .align 2 .global GetFreeBlockMinEraseCount .type GetFreeBlockMinEraseCount, %function GetFreeBlockMinEraseCount: adrp x0, .LANCHOR89 ldr x0, [x0, #:lo12:.LANCHOR89] cbz x0, .L577 adrp x1, .LANCHOR83 ldr x1, [x1, #:lo12:.LANCHOR83] sub x0, x0, x1 mov x1, -6148914691236517206 asr x0, x0, 1 movk x1, 0xaaab, lsl 0 mul x0, x0, x1 adrp x1, .LANCHOR80 ldr x1, [x1, #:lo12:.LANCHOR80] and x0, x0, 65535 ldrh w0, [x1, x0, lsl 1] ret .L577: mov w0, 0 ret .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .section .text.GetFreeBlockMaxEraseCount,"ax",@progbits .align 2 .global GetFreeBlockMaxEraseCount .type GetFreeBlockMaxEraseCount, %function GetFreeBlockMaxEraseCount: adrp x1, .LANCHOR89 and w0, w0, 65535 ldr x1, [x1, #:lo12:.LANCHOR89] cbz x1, .L585 adrp x2, .LANCHOR90 mov w3, 7 mov w5, 6 mov w6, 65535 ldrh w2, [x2, #:lo12:.LANCHOR90] mul w2, w2, w3 asr w2, w2, 3 cmp w0, w2 csel w0, w2, w0, gt adrp x2, .LANCHOR83 ldr x3, [x2, #:lo12:.LANCHOR83] mov x2, -6148914691236517206 movk x2, 0xaaab, lsl 0 sub x1, x1, x3 asr x1, x1, 1 mul x1, x1, x2 mov w2, 0 and w1, w1, 65535 .L581: cmp w0, w2 beq .L584 umull x4, w1, w5 ldrh w4, [x3, x4] cmp w4, w6 bne .L582 .L584: adrp x0, .LANCHOR80 ubfiz x1, x1, 1, 16 ldr x0, [x0, #:lo12:.LANCHOR80] ldrh w0, [x0, x1] ret .L582: add w2, w2, 1 mov w1, w4 and w2, w2, 65535 b .L581 .L585: mov w0, 0 ret .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .section .text.free_data_superblock,"ax",@progbits .align 2 .global free_data_superblock .type free_data_superblock, %function free_data_superblock: and w0, w0, 65535 mov w1, 65535 cmp w0, w1 beq .L589 stp x29, x30, [sp, -16]! adrp x2, .LANCHOR85 ubfiz x1, x0, 1, 16 add x29, sp, 0 ldr x2, [x2, #:lo12:.LANCHOR85] strh wzr, [x2, x1] bl INSERT_FREE_LIST mov w0, 0 ldp x29, x30, [sp], 16 ret .L589: mov w0, 0 ret .size free_data_superblock, .-free_data_superblock .section .text.FtlGcBufInit,"ax",@progbits .align 2 .global FtlGcBufInit .type FtlGcBufInit, %function FtlGcBufInit: adrp x1, .LANCHOR106 adrp x0, .LANCHOR105 adrp x7, .LANCHOR107 adrp x6, .LANCHOR108 ldr x5, [x1, #:lo12:.LANCHOR106] adrp x1, .LANCHOR57 str wzr, [x0, #:lo12:.LANCHOR105] adrp x0, .LANCHOR38 ldrh w10, [x1, #:lo12:.LANCHOR57] adrp x1, .LANCHOR58 ldrh w0, [x0, #:lo12:.LANCHOR38] mov w8, 24 ldrh w11, [x1, #:lo12:.LANCHOR58] adrp x1, .LANCHOR109 ldr x14, [x7, #:lo12:.LANCHOR107] mov x3, x5 ldr x4, [x1, #:lo12:.LANCHOR109] mov w2, 0 ldr x15, [x6, #:lo12:.LANCHOR108] nop // between mem op and mult-accumulate umaddl x8, w0, w8, x5 add x4, x4, 8 mov w1, 0 mov w16, 1 .L593: add w13, w2, w10 add w12, w1, w11 cmp x3, x8 bne .L594 adrp x1, .LANCHOR110 ldr x7, [x7, #:lo12:.LANCHOR107] ldr x6, [x6, #:lo12:.LANCHOR108] mov w8, 24 ldr w4, [x1, #:lo12:.LANCHOR110] .L595: cmp w0, w4 bcc .L596 ret .L594: asr w2, w2, 2 asr w1, w1, 2 add x2, x14, x2, sxtw 2 add x1, x15, x1, sxtw 2 str w16, [x3, 16] stp x2, x1, [x3] add x3, x3, 24 stp x2, x1, [x4] add x4, x4, 56 mov w1, w12 mov w2, w13 b .L593 .L596: umull x3, w0, w8 mul w1, w10, w0 add x2, x5, x3 asr w1, w1, 2 add x1, x7, x1, sxtw 2 str wzr, [x2, 16] str x1, [x5, x3] mul w1, w11, w0 add w0, w0, 1 and w0, w0, 65535 asr w1, w1, 2 add x1, x6, x1, sxtw 2 str x1, [x2, 8] b .L595 .size FtlGcBufInit, .-FtlGcBufInit .section .text.FtlGcBufFree,"ax",@progbits .align 2 .global FtlGcBufFree .type FtlGcBufFree, %function FtlGcBufFree: adrp x2, .LANCHOR110 mov w3, 0 mov w7, 56 mov w10, 24 ldr w8, [x2, #:lo12:.LANCHOR110] adrp x2, .LANCHOR106 ldr x4, [x2, #:lo12:.LANCHOR106] .L598: cmp w3, w1 bcs .L597 umaddl x6, w3, w7, x0 mov w2, 0 b .L603 .L599: add w2, w2, 1 and w2, w2, 65535 .L603: cmp w2, w8 bcs .L600 umull x5, w2, w10 add x11, x4, x5 ldr x12, [x4, x5] ldr x5, [x6, 8] cmp x12, x5 bne .L599 str wzr, [x11, 16] .L600: add w3, w3, 1 and w3, w3, 65535 b .L598 .L597: ret .size FtlGcBufFree, .-FtlGcBufFree .section .text.FtlGcBufAlloc,"ax",@progbits .align 2 .global FtlGcBufAlloc .type FtlGcBufAlloc, %function FtlGcBufAlloc: adrp x2, .LANCHOR110 mov w3, 0 mov w7, 24 mov w8, 1 ldr w5, [x2, #:lo12:.LANCHOR110] adrp x2, .LANCHOR106 mov w10, 56 ldr x6, [x2, #:lo12:.LANCHOR106] .L605: cmp w3, w1 bcs .L604 mov w2, 0 b .L610 .L606: add w2, w2, 1 and w2, w2, 65535 .L610: cmp w2, w5 bcs .L607 umaddl x4, w2, w7, x6 ldr w11, [x4, 16] cbnz w11, .L606 umaddl x2, w3, w10, x0 ldr x11, [x4] str w8, [x4, 16] ldr x4, [x4, 8] stp x11, x4, [x2, 8] .L607: add w3, w3, 1 and w3, w3, 65535 b .L605 .L604: ret .size FtlGcBufAlloc, .-FtlGcBufAlloc .section .text.IsBlkInGcList,"ax",@progbits .align 2 .global IsBlkInGcList .type IsBlkInGcList, %function IsBlkInGcList: adrp x1, .LANCHOR111 and w0, w0, 65535 ldrh w2, [x1, #:lo12:.LANCHOR111] adrp x1, .LANCHOR112 ldr x3, [x1, #:lo12:.LANCHOR112] mov x1, 0 .L612: cmp w2, w1, uxth bhi .L614 mov w0, 0 ret .L614: add x1, x1, 1 add x4, x3, x1, lsl 1 ldrh w4, [x4, -2] cmp w4, w0 bne .L612 mov w0, 1 ret .size IsBlkInGcList, .-IsBlkInGcList .section .text.FtlGcUpdatePage,"ax",@progbits .align 2 .global FtlGcUpdatePage .type FtlGcUpdatePage, %function FtlGcUpdatePage: mov w6, w0 mov w10, w1 mov w8, w2 stp x29, x30, [sp, -16]! lsr w0, w0, 10 add x29, sp, 0 bl P2V_block_in_plane and w7, w0, 65535 adrp x4, .LANCHOR111 adrp x2, .LANCHOR112 mov x3, 0 ldrh w1, [x4, #:lo12:.LANCHOR111] ldr x5, [x2, #:lo12:.LANCHOR112] .L617: and w2, w3, 65535 cmp w2, w1 bcc .L619 bne .L618 and x3, x3, 65535 strh w0, [x5, x3, lsl 1] ldrh w0, [x4, #:lo12:.LANCHOR111] add w0, w0, 1 strh w0, [x4, #:lo12:.LANCHOR111] b .L618 .L619: add x3, x3, 1 add x2, x5, x3, lsl 1 ldrh w2, [x2, -2] cmp w2, w7 bne .L617 .L618: adrp x4, .LANCHOR113 adrp x1, .LANCHOR114 mov w3, 12 ldrh w0, [x4, #:lo12:.LANCHOR113] ldr x5, [x1, #:lo12:.LANCHOR114] umull x3, w0, w3 add w0, w0, 1 add x7, x5, x3 stp w10, w8, [x7, 4] str w6, [x5, x3] strh w0, [x4, #:lo12:.LANCHOR113] ldp x29, x30, [sp], 16 ret .size FtlGcUpdatePage, .-FtlGcUpdatePage .section .text.FtlGcRefreshOpenBlock,"ax",@progbits .align 2 .global FtlGcRefreshOpenBlock .type FtlGcRefreshOpenBlock, %function FtlGcRefreshOpenBlock: adrp x8, .LANCHOR115 and w0, w0, 65535 ldrh w10, [x8, #:lo12:.LANCHOR115] cmp w10, w0 beq .L622 adrp x6, .LANCHOR116 ldrh w7, [x6, #:lo12:.LANCHOR116] cmp w0, w7 beq .L622 adrp x4, .LANCHOR117 ldrh w5, [x4, #:lo12:.LANCHOR117] cmp w0, w5 beq .L622 adrp x2, .LANCHOR118 ldrh w3, [x2, #:lo12:.LANCHOR118] cmp w0, w3 beq .L622 mov w1, 65535 cmp w10, w1 bne .L623 strh w0, [x8, #:lo12:.LANCHOR115] .L622: mov w0, 0 ret .L623: cmp w7, w1 bne .L624 strh w0, [x6, #:lo12:.LANCHOR116] b .L622 .L624: cmp w5, w1 bne .L625 strh w0, [x4, #:lo12:.LANCHOR117] b .L622 .L625: cmp w3, w1 bne .L622 strh w0, [x2, #:lo12:.LANCHOR118] b .L622 .size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock .section .text.FtlGcRefreshBlock,"ax",@progbits .align 2 .global FtlGcRefreshBlock .type FtlGcRefreshBlock, %function FtlGcRefreshBlock: adrp x8, .LANCHOR115 and w0, w0, 65535 ldrh w10, [x8, #:lo12:.LANCHOR115] cmp w10, w0 beq .L634 adrp x6, .LANCHOR116 ldrh w7, [x6, #:lo12:.LANCHOR116] cmp w0, w7 beq .L634 adrp x4, .LANCHOR117 ldrh w5, [x4, #:lo12:.LANCHOR117] cmp w0, w5 beq .L634 adrp x2, .LANCHOR118 ldrh w3, [x2, #:lo12:.LANCHOR118] cmp w0, w3 beq .L634 mov w1, 65535 cmp w10, w1 bne .L628 strh w0, [x8, #:lo12:.LANCHOR115] .L634: mov w0, 0 ret .L628: cmp w7, w1 bne .L629 strh w0, [x6, #:lo12:.LANCHOR116] b .L634 .L629: cmp w5, w1 bne .L630 strh w0, [x4, #:lo12:.LANCHOR117] b .L634 .L630: cmp w3, w1 bne .L635 strh w0, [x2, #:lo12:.LANCHOR118] b .L634 .L635: mov w0, -1 ret .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .section .text.FtlGcMarkBadPhyBlk,"ax",@progbits .align 2 .global FtlGcMarkBadPhyBlk .type FtlGcMarkBadPhyBlk, %function FtlGcMarkBadPhyBlk: and w12, w0, 65535 stp x29, x30, [sp, -16]! mov w0, w12 add x29, sp, 0 bl P2V_block_in_plane and w11, w0, 65535 bl FtlGcRefreshBlock adrp x0, .LANCHOR104 ldr w0, [x0, #:lo12:.LANCHOR104] cbz w0, .L637 adrp x1, .LANCHOR80 ubfiz x0, x11, 1, 16 ldr x2, [x1, #:lo12:.LANCHOR80] ldrh w1, [x2, x0] cmp w1, 39 bls .L637 sub w1, w1, #40 strh w1, [x2, x0] .L637: adrp x1, .LANCHOR119 adrp x3, .LANCHOR120 add x3, x3, :lo12:.LANCHOR120 mov x2, 0 ldrh w0, [x1, #:lo12:.LANCHOR119] .L638: cmp w0, w2, uxth bhi .L640 cmp w0, 15 bhi .L639 add w2, w0, 1 strh w2, [x1, #:lo12:.LANCHOR119] adrp x1, .LANCHOR120 add x1, x1, :lo12:.LANCHOR120 strh w12, [x1, w0, sxtw 1] b .L639 .L640: add x2, x2, 1 add x4, x3, x2, lsl 1 ldrh w4, [x4, -2] cmp w4, w12 bne .L638 .L639: mov w0, 0 ldp x29, x30, [sp], 16 ret .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .section .text.FtlGcReFreshBadBlk,"ax",@progbits .align 2 .global FtlGcReFreshBadBlk .type FtlGcReFreshBadBlk, %function FtlGcReFreshBadBlk: adrp x0, .LANCHOR119 ldrh w0, [x0, #:lo12:.LANCHOR119] cbz w0, .L652 adrp x1, .LANCHOR115 ldrh w2, [x1, #:lo12:.LANCHOR115] mov w1, 65535 cmp w2, w1 bne .L652 stp x29, x30, [sp, -16]! adrp x11, .LANCHOR121 add x29, sp, 0 ldrh w1, [x11, #:lo12:.LANCHOR121] cmp w1, w0 bcc .L647 strh wzr, [x11, #:lo12:.LANCHOR121] .L647: ldrh w1, [x11, #:lo12:.LANCHOR121] adrp x0, .LANCHOR120 add x0, x0, :lo12:.LANCHOR120 ldrh w0, [x0, x1, lsl 1] bl P2V_block_in_plane bl FtlGcRefreshBlock ldrh w0, [x11, #:lo12:.LANCHOR121] ldp x29, x30, [sp], 16 add w0, w0, 1 strh w0, [x11, #:lo12:.LANCHOR121] mov w0, 0 ret .L652: mov w0, 0 ret .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .section .text.flash_boot_enter_slc_mode,"ax",@progbits .align 2 .global flash_boot_enter_slc_mode .type flash_boot_enter_slc_mode, %function flash_boot_enter_slc_mode: adrp x1, .LANCHOR122 and w0, w0, 255 ldr w2, [x1, #:lo12:.LANCHOR122] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 bne .L655 b flash_enter_slc_mode .L655: ret .size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode .section .text.flash_boot_exit_slc_mode,"ax",@progbits .align 2 .global flash_boot_exit_slc_mode .type flash_boot_exit_slc_mode, %function flash_boot_exit_slc_mode: adrp x1, .LANCHOR122 and w0, w0, 255 ldr w2, [x1, #:lo12:.LANCHOR122] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w2, w1 bne .L657 b flash_exit_slc_mode .L657: ret .size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode .section .text.FW_FlashBlockErase.constprop.42,"ax",@progbits .align 2 .type FW_FlashBlockErase.constprop.42, %function FW_FlashBlockErase.constprop.42: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w20, w0 adrp x0, .LANCHOR7 ldr x0, [x0, #:lo12:.LANCHOR7] ldrb w19, [x0, 9] mov w0, 0 bl flash_boot_enter_slc_mode mov w2, 0 mov w0, 0 udiv w1, w20, w19 bl FlashEraseBlock mov w19, w0 mov w0, 0 bl flash_boot_exit_slc_mode and w0, w19, 255 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FW_FlashBlockErase.constprop.42, .-FW_FlashBlockErase.constprop.42 .section .text.ftl_memset,"ax",@progbits .align 2 .global ftl_memset .type ftl_memset, %function ftl_memset: uxtw x2, w2 b memset .size ftl_memset, .-ftl_memset .section .text.BuildFlashLsbPageTable,"ax",@progbits .align 2 .global BuildFlashLsbPageTable .type BuildFlashLsbPageTable, %function BuildFlashLsbPageTable: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w19, w1 cbnz w0, .L663 adrp x1, .LANCHOR17 add x1, x1, :lo12:.LANCHOR17 mov x0, 0 .L664: strh w0, [x1, x0, lsl 1] add x0, x0, 1 cmp x0, 512 bne .L664 .L670: adrp x20, .LANCHOR123 add x20, x20, :lo12:.LANCHOR123 mov w1, 255 mov w2, 2048 mov x0, x20 bl ftl_memset adrp x1, .LANCHOR17 and w19, w19, 65535 add x1, x1, :lo12:.LANCHOR17 mov x0, 0 .L665: cmp w19, w0, uxth bhi .L698 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .L663: cmp w0, 1 bne .L666 adrp x2, .LANCHOR17 add x2, x2, :lo12:.LANCHOR17 mov x1, 0 .L669: and w0, w1, 65535 cmp x1, 3 bls .L667 ubfiz w3, w0, 1, 15 and w0, w0, 1 add w0, w0, 2 sub w0, w3, w0 and w0, w0, 65535 .L667: strh w0, [x2, x1, lsl 1] add x1, x1, 1 cmp x1, 512 bne .L669 b .L670 .L666: cmp w0, 2 bne .L671 adrp x2, .LANCHOR17 add x2, x2, :lo12:.LANCHOR17 mov w1, 65535 mov x0, 0 .L673: cmp x0, 2 and w3, w0, 65535 csel w3, w3, w1, cc strh w3, [x2, x0, lsl 1] add w1, w1, 2 add x0, x0, 1 and w1, w1, 65535 cmp x0, 512 bne .L673 b .L670 .L671: cmp w0, 3 bne .L674 adrp x2, .LANCHOR17 add x2, x2, :lo12:.LANCHOR17 mov x1, 0 .L677: and w0, w1, 65535 cmp x1, 5 bls .L675 ubfiz w3, w0, 1, 15 and w0, w0, 1 add w0, w0, 4 sub w0, w3, w0 and w0, w0, 65535 .L675: strh w0, [x2, x1, lsl 1] add x1, x1, 1 cmp x1, 512 bne .L677 b .L670 .L674: cmp w0, 4 bne .L678 adrp x2, .LANCHOR17 add x1, x2, :lo12:.LANCHOR17 add x1, x1, 16 strh wzr, [x2, #:lo12:.LANCHOR17] mov w2, 1 strh w0, [x1, -8] mov w0, 5 strh w2, [x1, -14] mov w2, 2 strh w0, [x1, -6] mov w0, 7 strh w2, [x1, -12] mov w2, 3 strh w0, [x1, -4] mov w0, 8 strh w2, [x1, -10] strh w0, [x1, -2] mov w0, 8 .L680: and w3, w0, 1 ubfiz w2, w0, 1, 15 add w3, w3, 6 add w0, w0, 1 sub w2, w2, w3 strh w2, [x1], 2 and w0, w0, 65535 cmp w0, 512 bne .L680 b .L670 .L678: cmp w0, 5 bne .L681 adrp x1, .LANCHOR17 add x1, x1, :lo12:.LANCHOR17 mov x0, 0 .L682: strh w0, [x1, x0, lsl 1] add x0, x0, 1 cmp x0, 16 bne .L682 add x1, x1, 32 .L683: strh w0, [x1], 2 add w0, w0, 2 and w0, w0, 65535 cmp w0, 1008 bne .L683 b .L670 .L681: cmp w0, 6 bne .L684 adrp x3, .LANCHOR17 add x3, x3, :lo12:.LANCHOR17 mov w1, 0 mov x2, 0 mov w4, 12 mov w5, 10 .L687: and w0, w2, 65535 cmp x2, 5 bls .L685 tst x0, 1 csel w0, w4, w5, ne sub w0, w1, w0 and w0, w0, 65535 .L685: strh w0, [x3, x2, lsl 1] add w1, w1, 3 and w1, w1, 65535 add x2, x2, 1 cmp w1, 1536 bne .L687 b .L670 .L684: cmp w0, 9 bne .L688 adrp x1, .LANCHOR17 add x0, x1, :lo12:.LANCHOR17 strh wzr, [x1, #:lo12:.LANCHOR17] mov w1, 1 strh w1, [x0, 2] mov w1, 2 strh w1, [x0, 4] add x1, x0, 6 mov w0, 3 .L689: strh w0, [x1], 2 add w0, w0, 2 and w0, w0, 65535 cmp w0, 1021 bne .L689 b .L670 .L688: cmp w0, 10 bne .L690 adrp x1, .LANCHOR17 add x1, x1, :lo12:.LANCHOR17 mov x0, 0 .L691: strh w0, [x1, x0, lsl 1] add x0, x0, 1 cmp x0, 63 bne .L691 add x1, x1, 126 .L692: strh w0, [x1], 2 add w0, w0, 2 and w0, w0, 65535 cmp w0, 961 bne .L692 b .L670 .L690: cmp w0, 11 bne .L693 adrp x1, .LANCHOR17 add x1, x1, :lo12:.LANCHOR17 mov x0, 0 .L694: strh w0, [x1, x0, lsl 1] add x0, x0, 1 cmp x0, 8 bne .L694 add x1, x1, 16 .L696: and w3, w0, 1 ubfiz w2, w0, 1, 15 add w3, w3, 6 add w0, w0, 1 sub w2, w2, w3 strh w2, [x1], 2 and w0, w0, 65535 cmp w0, 512 bne .L696 b .L670 .L693: cmp w0, 12 bne .L670 adrp x1, .LANCHOR17 add x0, x1, :lo12:.LANCHOR17 strh wzr, [x1, #:lo12:.LANCHOR17] mov w1, 1 strh w1, [x0, 2] mov w1, 2 strh w1, [x0, 4] mov w1, 3 strh w1, [x0, 6] add x1, x0, 8 mov w0, 4 .L697: sub w2, w0, #1 add w2, w2, w0, lsr 1 add w0, w0, 1 strh w2, [x1], 2 and w0, w0, 65535 cmp w0, 512 bne .L697 b .L670 .L698: ldrh w2, [x1, x0, lsl 1] add x0, x0, 1 strh w2, [x20, w2, sxtw 1] b .L665 .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable .section .text.FlashDieInfoInit,"ax",@progbits .align 2 .global FlashDieInfoInit .type FlashDieInfoInit, %function FlashDieInfoInit: stp x29, x30, [sp, -80]! adrp x0, .LANCHOR31+10 add x29, sp, 0 ldrh w0, [x0, #:lo12:.LANCHOR31+10] stp x19, x20, [sp, 16] adrp x19, .LANCHOR124 str x25, [sp, 64] adrp x25, .LANCHOR26 stp x21, x22, [sp, 32] mov x22, 0 stp x23, x24, [sp, 48] adrp x24, .LANCHOR27 strb wzr, [x19, #:lo12:.LANCHOR124] add x21, x24, :lo12:.LANCHOR27 strb wzr, [x25, #:lo12:.LANCHOR26] bl FlashBlockAlignInit mov w2, 8 mov w1, 0 adrp x23, .LANCHOR18 mov x0, x21 add x20, x23, :lo12:.LANCHOR18 bl ftl_memset mov w2, 32 mov w1, 0 mov x0, x20 bl ftl_memset mov w2, 192 mov w1, 0 adrp x0, .LANCHOR23 add x0, x0, :lo12:.LANCHOR23 bl ftl_memset adrp x0, .LANCHOR7 adrp x13, .LANCHOR22 add x15, x25, :lo12:.LANCHOR26 add x10, x13, :lo12:.LANCHOR22 ldr x7, [x0, #:lo12:.LANCHOR7] add x11, x7, 1 ldrb w12, [x7] .L722: mov w2, w12 add x1, x10, x22, lsl 3 mov x0, x11 bl FlashMemCmp8 cbnz w0, .L721 ldrb w1, [x15] add w0, w1, 1 strb w0, [x15] str wzr, [x20, x1, lsl 2] strb w22, [x21, x1] .L721: add x22, x22, 1 cmp x22, 4 bne .L722 ldrb w0, [x25, #:lo12:.LANCHOR26] strb w0, [x19, #:lo12:.LANCHOR124] ldrb w0, [x7, 8] cmp w0, 2 beq .L723 .L727: ldrb w0, [x25, #:lo12:.LANCHOR26] ldrh w1, [x7, 14] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] mul w0, w0, w1 ldrb w1, [x7, 13] ldp x23, x24, [sp, 48] ldr x25, [sp, 64] mul w0, w0, w1 adrp x1, .LANCHOR125 ldp x29, x30, [sp], 80 strh w0, [x1, #:lo12:.LANCHOR125] ret .L723: adrp x0, .LANCHOR4 add x13, x13, :lo12:.LANCHOR22 add x15, x25, :lo12:.LANCHOR26 add x23, x23, :lo12:.LANCHOR18 ldr w20, [x0, #:lo12:.LANCHOR4] add x14, x24, :lo12:.LANCHOR27 mov x19, 0 .L726: mov w2, w12 add x1, x13, x19, lsl 3 mov x0, x11 bl FlashMemCmp8 cbnz w0, .L724 ldrb w2, [x7, 13] ldrh w0, [x7, 14] ldrb w1, [x15] and w0, w0, 65280 mul w2, w2, w20 mul w0, w0, w2 sxtw x2, w1 str w0, [x23, x2, lsl 2] ldrb w3, [x7, 23] cbz w3, .L725 lsl w0, w0, 1 str w0, [x23, x2, lsl 2] .L725: add w1, w1, 1 strb w19, [x14, x2] strb w1, [x15] .L724: add x19, x19, 1 cmp x19, 4 bne .L726 b .L727 .size FlashDieInfoInit, .-FlashDieInfoInit .section .text.ftl_read_flash_info,"ax",@progbits .align 2 .global ftl_read_flash_info .type ftl_read_flash_info, %function ftl_read_flash_info: stp x29, x30, [sp, -32]! mov w2, 11 mov w1, 0 add x29, sp, 0 str x19, [sp, 16] mov x19, x0 bl ftl_memset adrp x0, .LANCHOR7 mov w4, 1 ldr x2, [x0, #:lo12:.LANCHOR7] adrp x0, .LANCHOR4 ldr w0, [x0, #:lo12:.LANCHOR4] ldrb w3, [x2, 9] mul w0, w0, w3 and w1, w0, 65535 strb w1, [x19, 4] ubfx x0, x1, 8, 8 strb w0, [x19, 5] adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] strb w0, [x19, 7] ldrb w0, [x2, 13] mul w0, w0, w1 ldrh w1, [x2, 14] mul w0, w0, w1 ldrb w1, [x2, 8] strb w3, [x19, 6] mul w0, w0, w1 strb w0, [x19] ubfx x1, x0, 8, 8 strb w1, [x19, 1] ubfx x1, x0, 16, 8 lsr w0, w0, 24 strb w1, [x19, 2] mov x1, 0 strb w0, [x19, 3] mov w0, 32 strb w0, [x19, 8] ldrb w0, [x2, 7] adrp x2, .LANCHOR27 strb w0, [x19, 9] add x2, x2, :lo12:.LANCHOR27 adrp x0, .LANCHOR26 strb wzr, [x19, 10] ldrb w3, [x0, #:lo12:.LANCHOR26] .L736: cmp w3, w1, uxtb bhi .L737 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L737: ldrb w0, [x1, x2] add x1, x1, 1 ldrb w5, [x19, 10] lsl w0, w4, w0 orr w0, w0, w5 strb w0, [x19, 10] b .L736 .size ftl_read_flash_info, .-ftl_read_flash_info .section .text.FtlBbt2Bitmap,"ax",@progbits .align 2 .global FtlBbt2Bitmap .type FtlBbt2Bitmap, %function FtlBbt2Bitmap: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x20, x0 adrp x0, .LANCHOR126 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] adrp x22, .LANCHOR51 ldrh w2, [x0, #:lo12:.LANCHOR126] adrp x23, .LANCHOR127 add x22, x22, :lo12:.LANCHOR51 add x23, x23, :lo12:.LANCHOR127 mov x19, 0 mov w24, 65535 mov x21, x1 lsl w2, w2, 2 mov w1, 0 mov x0, x21 bl ftl_memset .L742: ldrh w0, [x20, x19] cmp w0, w24 beq .L739 ldrh w1, [x22] cmp w1, w0 bhi .L741 mov w2, 92 mov x1, x23 adrp x0, .LC5 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L741: ldrh w1, [x20, x19] mov w2, 1 add x19, x19, 2 cmp x19, 1024 ubfx x0, x1, 5, 11 and w1, w1, 31 lsl x0, x0, 2 lsl w2, w2, w1 ldr w1, [x21, x0] orr w1, w1, w2 str w1, [x21, x0] adrp x0, .LANCHOR76 add x0, x0, :lo12:.LANCHOR76 ldrh w1, [x0, 6] add w1, w1, 1 strh w1, [x0, 6] bne .L742 .L739: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .section .text.FtlBbtMemInit,"ax",@progbits .align 2 .global FtlBbtMemInit .type FtlBbtMemInit, %function FtlBbtMemInit: adrp x1, .LANCHOR76 add x0, x1, :lo12:.LANCHOR76 mov w2, -1 add x0, x0, 12 strh w2, [x1, #:lo12:.LANCHOR76] mov w2, 16 strh wzr, [x0, -6] mov w1, 255 b ftl_memset .size FtlBbtMemInit, .-FtlBbtMemInit .section .text.FtlFreeSysBlkQueueInit,"ax",@progbits .align 2 .global FtlFreeSysBlkQueueInit .type FtlFreeSysBlkQueueInit, %function FtlFreeSysBlkQueueInit: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR77 add x3, x1, :lo12:.LANCHOR77 mov w2, 2048 add x29, sp, 0 strh w0, [x1, #:lo12:.LANCHOR77] mov w1, 0 strh wzr, [x3, 2] add x0, x3, 8 strh wzr, [x3, 4] strh wzr, [x3, 6] bl ftl_memset mov w0, 0 ldp x29, x30, [sp], 16 ret .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit .section .text.ftl_free_no_use_map_blk,"ax",@progbits .align 2 .global ftl_free_no_use_map_blk .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: stp x29, x30, [sp, -80]! mov w1, 0 add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 ldrh w2, [x0, 10] stp x21, x22, [sp, 32] ldp x21, x20, [x0, 32] stp x23, x24, [sp, 48] ldr x22, [x0, 16] lsl w2, w2, 1 mov x0, x21 str x25, [sp, 64] bl ftl_memset mov w0, 0 .L750: ldrh w1, [x19, 6] cmp w1, w0 bhi .L754 adrp x0, .LANCHOR53 mov w23, 0 mov w20, 0 ldrh w1, [x0, #:lo12:.LANCHOR53] ldrh w0, [x19] strh w1, [x21, x0, lsl 1] ldrh w24, [x21] .L755: ldrh w0, [x19, 10] cmp w0, w20 bhi .L759 mov w0, w23 ldr x25, [sp, 64] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret .L754: ubfiz x1, x0, 2, 16 ldr w2, [x20, x1] mov w1, 0 ubfx x2, x2, 10, 16 .L751: ldrh w3, [x19, 10] cmp w3, w1 bhi .L753 add w0, w0, 1 and w0, w0, 65535 b .L750 .L753: ubfiz x3, x1, 1, 16 ldrh w4, [x22, x3] cmp w4, w2 bne .L752 cbz w2, .L752 ldrh w4, [x21, x3] add w4, w4, 1 strh w4, [x21, x3] .L752: add w1, w1, 1 and w1, w1, 65535 b .L751 .L759: ubfiz x0, x20, 1, 16 ldrh w1, [x21, x0] cmp w24, w1 bls .L756 add x25, x22, x0 ldrh w0, [x22, x0] cbnz w0, .L757 .L758: add w20, w20, 1 and w20, w20, 65535 b .L755 .L756: cbnz w1, .L758 add x25, x22, x0 ldrh w0, [x22, x0] cbz w0, .L758 .L760: mov w1, 1 bl FtlFreeSysBlkQueueIn strh wzr, [x25] ldrh w0, [x19, 8] sub w0, w0, #1 strh w0, [x19, 8] b .L758 .L761: mov w24, 0 b .L760 .L757: mov w23, w20 cbz w1, .L761 mov w24, w1 b .L758 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .section .text.FtlL2PDataInit,"ax",@progbits .align 2 .global FtlL2PDataInit .type FtlL2PDataInit, %function FtlL2PDataInit: stp x29, x30, [sp, -64]! mov w1, 0 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR128 adrp x20, .LANCHOR64 stp x21, x22, [sp, 32] ldr x0, [x19, #:lo12:.LANCHOR128] adrp x22, .LANCHOR57 ldr w2, [x20, #:lo12:.LANCHOR64] adrp x21, .LANCHOR67 str x23, [sp, 48] adrp x23, .LANCHOR129 lsl w2, w2, 1 bl ftl_memset ldrh w0, [x21, #:lo12:.LANCHOR67] mov w1, 255 ldrh w2, [x22, #:lo12:.LANCHOR57] mul w2, w2, w0 ldr x0, [x23, #:lo12:.LANCHOR129] bl ftl_memset adrp x0, .LANCHOR98 ldrh w3, [x21, #:lo12:.LANCHOR67] ldr x6, [x23, #:lo12:.LANCHOR129] mov x1, 0 ldr x0, [x0, #:lo12:.LANCHOR98] mov w2, -1 ldrh w5, [x22, #:lo12:.LANCHOR57] add x3, x0, x3, lsl 4 .L771: add x4, x1, x5 cmp x0, x3 bne .L772 adrp x1, .LANCHOR130 add x0, x1, :lo12:.LANCHOR130 ldp x21, x22, [sp, 32] strh w2, [x1, #:lo12:.LANCHOR130] ldr w1, [x20, #:lo12:.LANCHOR64] strh w1, [x0, 10] mov w1, -3902 strh w1, [x0, 4] adrp x1, .LANCHOR131 ldr x23, [sp, 48] strh w2, [x0, 2] ldrh w1, [x1, #:lo12:.LANCHOR131] strh w1, [x0, 8] adrp x1, .LANCHOR66 ldrh w1, [x1, #:lo12:.LANCHOR66] strh w1, [x0, 6] adrp x1, .LANCHOR132 ldr x1, [x1, #:lo12:.LANCHOR132] str x1, [x0, 16] adrp x1, .LANCHOR133 ldr x1, [x1, #:lo12:.LANCHOR133] str x1, [x0, 24] ldr x1, [x19, #:lo12:.LANCHOR128] ldp x19, x20, [sp, 16] str x1, [x0, 32] adrp x1, .LANCHOR134 ldr x1, [x1, #:lo12:.LANCHOR134] str x1, [x0, 40] ldp x29, x30, [sp], 64 ret .L772: and x1, x1, -4 strh w2, [x0] add x1, x6, x1 str wzr, [x0, 4] str x1, [x0, 8] add x0, x0, 16 mov x1, x4 b .L771 .size FtlL2PDataInit, .-FtlL2PDataInit .section .text.FtlVariablesInit,"ax",@progbits .align 2 .global FtlVariablesInit .type FtlVariablesInit, %function FtlVariablesInit: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR135 mov w1, -1 add x29, sp, 0 str xzr, [x0, #:lo12:.LANCHOR135] adrp x0, .LANCHOR136 str x19, [sp, 16] adrp x19, .LANCHOR41 strh w1, [x0, #:lo12:.LANCHOR136] adrp x0, .LANCHOR137 mov w1, -1 str wzr, [x0, #:lo12:.LANCHOR137] adrp x0, .LANCHOR138 str wzr, [x0, #:lo12:.LANCHOR138] adrp x0, .LANCHOR139 str w1, [x0, #:lo12:.LANCHOR139] adrp x0, .LANCHOR104 mov w1, 0 str wzr, [x0, #:lo12:.LANCHOR104] adrp x0, .LANCHOR70 strh wzr, [x0, #:lo12:.LANCHOR70] adrp x0, .LANCHOR61 ldrh w2, [x0, #:lo12:.LANCHOR61] adrp x0, .LANCHOR71 ldr x0, [x0, #:lo12:.LANCHOR71] lsl w2, w2, 1 bl ftl_memset adrp x0, .LANCHOR80 ldrh w2, [x19, #:lo12:.LANCHOR41] mov w1, 0 ldr x0, [x0, #:lo12:.LANCHOR80] lsl w2, w2, 1 bl ftl_memset adrp x0, .LANCHOR140 ldrh w2, [x19, #:lo12:.LANCHOR41] mov w1, 0 ldr x0, [x0, #:lo12:.LANCHOR140] lsl w2, w2, 1 bl ftl_memset mov w2, 48 mov w1, 0 adrp x0, .LANCHOR82 add x0, x0, :lo12:.LANCHOR82 bl ftl_memset mov w2, 512 mov w1, 0 adrp x0, .LANCHOR141 add x0, x0, :lo12:.LANCHOR141 bl ftl_memset bl FtlGcBufInit bl FtlL2PDataInit ldr x19, [sp, 16] mov w0, 0 ldp x29, x30, [sp], 32 ret .size FtlVariablesInit, .-FtlVariablesInit .section .text.SupperBlkListInit,"ax",@progbits .align 2 .global SupperBlkListInit .type SupperBlkListInit, %function SupperBlkListInit: stp x29, x30, [sp, -96]! adrp x0, .LANCHOR41 mov w1, 0 add x29, sp, 0 ldrh w2, [x0, #:lo12:.LANCHOR41] mov w0, 6 stp x23, x24, [sp, 48] adrp x24, .LANCHOR83 stp x19, x20, [sp, 16] adrp x23, .LANCHOR87 stp x21, x22, [sp, 32] adrp x22, .LANCHOR90 mul w2, w2, w0 ldr x0, [x24, #:lo12:.LANCHOR83] stp x25, x26, [sp, 64] adrp x25, .LANCHOR40 str x27, [sp, 80] adrp x26, .LANCHOR47 add x25, x25, :lo12:.LANCHOR40 add x26, x26, :lo12:.LANCHOR47 bl ftl_memset mov w21, 0 adrp x0, .LANCHOR89 mov w20, 0 mov w19, 0 strh wzr, [x23, #:lo12:.LANCHOR87] str xzr, [x0, #:lo12:.LANCHOR89] adrp x0, .LANCHOR84 strh wzr, [x22, #:lo12:.LANCHOR90] adrp x27, .LANCHOR38 str xzr, [x0, #:lo12:.LANCHOR84] adrp x0, .LANCHOR86 str xzr, [x0, #:lo12:.LANCHOR86] adrp x0, .LANCHOR142 strh wzr, [x0, #:lo12:.LANCHOR142] .L777: ldrh w0, [x25] cmp w19, w0 bge .L784 adrp x0, .LANCHOR52 ldrh w8, [x27, #:lo12:.LANCHOR38] mov w5, 0 mov w6, 0 ldrh w7, [x0, #:lo12:.LANCHOR52] b .L785 .L779: ldrb w0, [x26, w6, sxtw] mov w1, w19 bl V2P_block bl FtlBbmIsBadBlock cbnz w0, .L778 add w5, w7, w5 sxth w5, w5 .L778: add w6, w6, 1 sxth w6, w6 .L785: cmp w6, w8 blt .L779 cbz w5, .L780 mov w0, 32768 sdiv w5, w0, w5 sxth w5, w5 .L781: ldr x1, [x24, #:lo12:.LANCHOR83] mov w0, 6 smaddl x0, w19, w0, x1 strh w5, [x0, 4] adrp x0, .LANCHOR93 ldrh w0, [x0, #:lo12:.LANCHOR93] cmp w19, w0 beq .L782 adrp x0, .LANCHOR94 ldrh w0, [x0, #:lo12:.LANCHOR94] cmp w19, w0 beq .L782 adrp x0, .LANCHOR95 ldrh w0, [x0, #:lo12:.LANCHOR95] cmp w19, w0 beq .L782 adrp x0, .LANCHOR85 ldr x0, [x0, #:lo12:.LANCHOR85] ldrh w0, [x0, w19, sxtw 1] cbnz w0, .L783 add w21, w21, 1 mov w0, w19 and w21, w21, 65535 bl INSERT_FREE_LIST .L782: add w19, w19, 1 sxth w19, w19 b .L777 .L780: adrp x0, .LANCHOR85 mov w1, -1 ldr x0, [x0, #:lo12:.LANCHOR85] strh w1, [x0, w19, sxtw 1] b .L781 .L783: add w20, w20, 1 mov w0, w19 and w20, w20, 65535 bl INSERT_DATA_LIST b .L782 .L784: strh w20, [x23, #:lo12:.LANCHOR87] add w20, w20, w21 strh w21, [x22, #:lo12:.LANCHOR90] cmp w0, w20 bge .L786 mov w2, 2899 adrp x1, .LANCHOR143 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR143 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L786: mov w0, 0 ldr x27, [sp, 80] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret .size SupperBlkListInit, .-SupperBlkListInit .section .text.FtlGcPageVarInit,"ax",@progbits .align 2 .global FtlGcPageVarInit .type FtlGcPageVarInit, %function FtlGcPageVarInit: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR111 mov w1, 255 add x29, sp, 0 strh wzr, [x0, #:lo12:.LANCHOR111] adrp x0, .LANCHOR113 str x19, [sp, 16] adrp x19, .LANCHOR54 strh wzr, [x0, #:lo12:.LANCHOR113] adrp x0, .LANCHOR112 ldrh w2, [x19, #:lo12:.LANCHOR54] ldr x0, [x0, #:lo12:.LANCHOR112] lsl w2, w2, 1 bl ftl_memset ldrh w2, [x19, #:lo12:.LANCHOR54] mov w0, 12 mov w1, 255 mul w2, w2, w0 adrp x0, .LANCHOR114 ldr x0, [x0, #:lo12:.LANCHOR114] bl ftl_memset ldr x19, [sp, 16] ldp x29, x30, [sp], 32 b FtlGcBufInit .size FtlGcPageVarInit, .-FtlGcPageVarInit .section .text.idb_init,"ax",@progbits .align 2 .global idb_init .type idb_init, %function idb_init: stp x29, x30, [sp, -16]! mov w2, 262144 mov w1, 0 adrp x0, idb_buf add x29, sp, 0 add x0, x0, :lo12:idb_buf bl ftl_memset mov w0, 0 ldp x29, x30, [sp], 16 ret .size idb_init, .-idb_init .section .text.ftl_memcpy,"ax",@progbits .align 2 .global ftl_memcpy .type ftl_memcpy, %function ftl_memcpy: uxtw x2, w2 b memcpy .size ftl_memcpy, .-ftl_memcpy .section .text.FlashReadIdbData,"ax",@progbits .align 2 .global FlashReadIdbData .type FlashReadIdbData, %function FlashReadIdbData: stp x29, x30, [sp, -16]! mov w2, 2048 adrp x1, .LANCHOR144 add x1, x1, :lo12:.LANCHOR144 add x29, sp, 0 bl ftl_memcpy mov w0, 0 ldp x29, x30, [sp], 16 ret .size FlashReadIdbData, .-FlashReadIdbData .section .text.FlashLoadPhyInfoInRam,"ax",@progbits .align 2 .global FlashLoadPhyInfoInRam .type FlashLoadPhyInfoInRam, %function FlashLoadPhyInfoInRam: stp x29, x30, [sp, -48]! adrp x0, .LANCHOR145 add x8, x0, :lo12:.LANCHOR145 adrp x11, .LANCHOR22 add x29, sp, 0 add x8, x8, 1 mov x7, x0 add x11, x11, :lo12:.LANCHOR22 stp x19, x20, [sp, 16] mov x10, 0 str x21, [sp, 32] .L798: ldrb w2, [x8, -1] mov w12, w10 lsl x21, x10, 5 mov x1, x11 mov x0, x8 bl FlashMemCmp8 mov w20, w0 cbnz w0, .L796 add x0, x7, :lo12:.LANCHOR145 ubfiz x12, x12, 5, 32 add x21, x0, x21 add x0, x0, x12 adrp x1, .LANCHOR146 add x4, x1, :lo12:.LANCHOR146 ldrb w3, [x0, 22] mov x0, 0 .L797: lsl x5, x0, 5 mov w2, w0 ldrb w5, [x5, x4] cmp w5, w3 beq .L800 add x0, x0, 1 cmp x0, 4 bne .L797 mov w2, w0 .L800: ubfiz x0, x2, 5, 32 add x1, x1, :lo12:.LANCHOR146 adrp x19, .LANCHOR31 add x19, x19, :lo12:.LANCHOR31 add x1, x1, x0 mov w2, 32 adrp x0, .LANCHOR8 add x0, x0, :lo12:.LANCHOR8 bl ftl_memcpy mov w2, 32 mov x1, x21 mov x0, x19 bl ftl_memcpy ldrh w0, [x19, 10] bl FlashBlockAlignInit b .L795 .L796: add x10, x10, 1 add x8, x8, 32 cmp x10, 86 bne .L798 mov w20, -1 .L795: mov w0, w20 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam .section .text.NandcCopy1KB,"ax",@progbits .align 2 .global NandcCopy1KB .type NandcCopy1KB, %function NandcCopy1KB: stp x29, x30, [sp, -48]! and w1, w1, 255 cmp w1, 1 add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w2, 255 str x21, [sp, 32] add x2, x0, 4096 add x21, x0, 512 ubfiz x0, x19, 9, 8 mov x20, x4 add x0, x2, x0 bne .L805 cbz x3, .L806 mov w2, 1024 mov x1, x3 bl ftl_memcpy .L806: cbz x20, .L804 ldrb w0, [x20] lsr w19, w19, 1 ldrb w1, [x20, 1] orr x1, x0, x1, lsl 8 ldrb w0, [x20, 2] orr x1, x1, x0, lsl 16 ldrb w0, [x20, 3] orr x0, x1, x0, lsl 24 mov w1, 12 mul w19, w19, w1 str w0, [x21, w19, sxtw 2] .L804: ldp x19, x20, [sp, 16] ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret .L805: cbz x3, .L809 mov x1, x0 mov w2, 1024 mov x0, x3 bl ftl_memcpy .L809: cbz x20, .L804 lsr w19, w19, 1 mov w0, 12 mul w19, w19, w0 ldr w0, [x21, w19, sxtw 2] strb w0, [x20] lsr w1, w0, 8 strb w1, [x20, 1] lsr w1, w0, 16 lsr w0, w0, 24 strb w1, [x20, 2] strb w0, [x20, 3] b .L804 .size NandcCopy1KB, .-NandcCopy1KB .section .text.NandcXferData,"ax",@progbits .align 2 .global NandcXferData .type NandcXferData, %function NandcXferData: stp x29, x30, [sp, -192]! tst x3, 63 add x29, sp, 0 stp x25, x26, [sp, 64] and w25, w0, 255 stp x19, x20, [sp, 16] adrp x0, .LANCHOR0 and w20, w1, 255 add x0, x0, :lo12:.LANCHOR0 sbfiz x1, x25, 4, 32 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] mov x26, x3 stp x27, x28, [sp, 80] and w24, w2, 255 mov x21, x4 ldr x19, [x0, x1] bne .L822 cbnz x4, .L823 add x21, x29, 128 mov w2, 64 mov w1, 255 add x0, x29, 128 bl ftl_memset .L823: mov x5, x21 mov x4, x26 mov w2, w24 mov w3, 0 mov w1, w20 mov w0, w25 bl NandcXferStart mov w1, w20 mov w0, w25 bl NandcXferComp cbnz w20, .L847 adrp x0, .LANCHOR32 adrp x4, .LANCHOR35 mov x1, x0 add x4, x4, :lo12:.LANCHOR35 ldr w2, [x0, #:lo12:.LANCHOR32] mov w0, 128 mov w3, 64 cmp w2, 25 ubfx x2, x24, 1, 7 add x2, x21, x2, lsl 2 csel w3, w3, w0, cc mov w0, 0 .L826: add w5, w3, w0 cmp x21, x2 bne .L827 adrp x0, .LANCHOR34 ldr w4, [x1, #:lo12:.LANCHOR32] lsr w24, w24, 2 mov w2, 0 ldr w3, [x0, #:lo12:.LANCHOR34] mov w22, 0 .L828: cmp w2, w24 bcs .L824 cbnz w4, .L834 .L824: str wzr, [x19, 16] .L835: adrp x0, .LANCHOR34 ldr w0, [x0, #:lo12:.LANCHOR34] cmp w0, 5 bls .L821 cbnz w20, .L821 ldr w0, [x19] mov w1, 8192 movk w1, 0x2, lsl 16 and w1, w0, w1 cmp w1, 139264 bne .L821 orr w0, w0, 131072 mov w22, -1 str w0, [x19] .L821: mov w0, w22 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 192 ret .L827: ldr x6, [x4, 8] and x0, x0, 4294967292 add x21, x21, 4 ldr w0, [x6, x0] strb w0, [x21, -4] lsr w6, w0, 8 strb w6, [x21, -3] lsr w6, w0, 16 strb w6, [x21, -2] lsr w0, w0, 24 strb w0, [x21, -1] mov w0, w5 b .L826 .L834: uxtw x0, w2 add x0, x0, 8 ldr w0, [x19, x0, lsl 2] str w0, [x29, 120] ldr w0, [x29, 120] tbnz x0, 2, .L850 ldr w0, [x29, 120] tbnz x0, 15, .L850 cmp w3, 5 bls .L830 ldr w1, [x29, 120] ubfx x6, x1, 3, 5 ldr w1, [x29, 120] ldr w0, [x29, 120] ubfx x1, x1, 27, 1 ubfx x5, x0, 16, 5 ldr w0, [x29, 120] orr w1, w6, w1, lsl 5 ubfx x0, x0, 29, 1 orr w0, w5, w0, lsl 5 cmp w1, w0 ldr w0, [x29, 120] bls .L831 ubfx x1, x0, 3, 5 ldr w0, [x29, 120] ubfx x0, x0, 27, 1 .L856: orr w0, w1, w0, lsl 5 .L832: cmp w22, w0 csel w22, w22, w0, cs .L829: add w2, w2, 1 b .L828 .L831: ubfx x1, x0, 16, 5 ldr w0, [x29, 120] ubfx x0, x0, 29, 1 b .L856 .L830: cmp w3, 3 bls .L851 ldr w1, [x29, 120] ubfx x6, x1, 3, 5 ldr w1, [x29, 120] ldr w0, [x29, 120] ubfx x1, x1, 28, 1 ubfx x5, x0, 16, 5 ldr w0, [x29, 120] orr w1, w6, w1, lsl 5 ubfx x0, x0, 30, 1 orr w0, w5, w0, lsl 5 cmp w1, w0 ldr w0, [x29, 120] bls .L833 ubfx x1, x0, 3, 5 ldr w0, [x29, 120] ubfx x0, x0, 28, 1 b .L856 .L833: ubfx x1, x0, 16, 5 ldr w0, [x29, 120] ubfx x0, x0, 30, 1 b .L856 .L851: mov w0, 0 b .L832 .L850: mov w22, -1 b .L829 .L847: mov w22, 0 b .L824 .L822: cmp w20, 1 bne .L836 cmp x4, 0 mov w23, 2 csel w23, w23, wzr, ne mov w27, 0 lsl w23, w23, 1 mov w22, 0 .L837: cmp w22, w24 bcc .L839 mov w22, 0 b .L835 .L839: and w28, w22, 3 cbz x26, .L852 lsl w3, w22, 9 add x3, x26, x3 .L838: add x4, x21, x27, uxtw mov w2, w28 mov w1, 1 mov x0, x19 bl NandcCopy1KB add w22, w22, 2 mov w3, w28 mov x5, 0 mov x4, 0 mov w2, 2 mov w1, 1 mov w0, w25 bl NandcXferStart add w27, w27, w23 mov w1, 1 mov w0, w25 bl NandcXferComp b .L837 .L852: mov x3, 0 b .L838 .L836: mov w0, w25 mov x5, 0 mov x4, 0 mov w3, 0 mov w2, 2 mov w1, 0 bl NandcXferStart mov w27, 2 cmp x21, 0 mov w28, 0 csel w27, w27, wzr, ne mov w23, 0 lsl w0, w27, 1 mov w22, 0 str w0, [x29, 108] .L840: cmp w24, w23 bls .L835 mov w0, w25 mov w1, w20 bl NandcXferComp add w27, w23, 2 ldr w0, [x19, 32] cmp w24, w27 str w0, [x29, 120] bls .L841 mov x5, 0 mov x4, 0 and w3, w27, 3 mov w2, 2 mov w1, 0 mov w0, w25 bl NandcXferStart .L841: ldr w0, [x29, 120] tbnz x0, 2, .L853 ldr w0, [x29, 120] ubfx x1, x0, 3, 5 ldr w0, [x29, 120] ubfx x0, x0, 27, 1 orr w0, w1, w0, lsl 5 cmp w22, w0 csel w22, w22, w0, cs .L842: and w2, w23, 3 cbz x26, .L854 lsl w3, w23, 9 add x3, x26, x3 .L843: add x4, x21, x28, uxtw mov x0, x19 mov w1, 0 bl NandcCopy1KB ldr w0, [x29, 108] mov w23, w27 add w28, w28, w0 b .L840 .L853: mov w22, -1 b .L842 .L854: mov x3, 0 b .L843 .size NandcXferData, .-NandcXferData .section .text.FlashReadRawPage,"ax",@progbits .align 2 .global FlashReadRawPage .type FlashReadRawPage, %function FlashReadRawPage: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp, 16] ands w19, w0, 255 stp x21, x22, [sp, 32] mov w21, w1 str x23, [sp, 48] adrp x1, .LANCHOR31+9 mov x22, x2 mov x23, x3 ldrb w20, [x1, #:lo12:.LANCHOR31+9] bne .L858 adrp x0, .LANCHOR3 adrp x1, .LANCHOR4 ldrb w0, [x0, #:lo12:.LANCHOR3] ldr w1, [x1, #:lo12:.LANCHOR4] mul w0, w0, w1 cmp w0, w21 mov w0, 4 csel w20, w20, w0, ls .L858: mov w0, w19 bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs mov w1, w21 mov w0, w19 bl FlashReadCmd mov w0, w19 bl NandcWaitFlashReady mov w2, w20 mov x4, x23 mov x3, x22 mov w1, 0 mov w0, w19 bl NandcXferData mov w2, w0 mov w0, w19 bl NandcFlashDeCs ldr x23, [sp, 48] mov w0, w2 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size FlashReadRawPage, .-FlashReadRawPage .section .text.FlashDdrTunningRead,"ax",@progbits .align 2 .global FlashDdrTunningRead .type FlashDdrTunningRead, %function FlashDdrTunningRead: stp x29, x30, [sp, -112]! add x29, sp, 0 stp x23, x24, [sp, 48] and w24, w0, 255 adrp x0, .LANCHOR19 stp x25, x26, [sp, 64] stp x21, x22, [sp, 32] mov w25, w1 ldr x0, [x0, #:lo12:.LANCHOR19] mov w22, 6 stp x27, x28, [sp, 80] mov x23, x2 stp x19, x20, [sp, 16] mov x28, x3 mov w26, w4 ldr w0, [x0, 304] str w0, [x29, 108] adrp x0, .LANCHOR34 ldr w0, [x0, #:lo12:.LANCHOR34] cmp w0, 8 mov w0, 12 csel w22, w22, w0, cc cbz w4, .L874 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode mov w0, w24 adrp x19, .LANCHOR25 bl FlashReset mov x3, x28 mov x2, x23 mov w1, w25 mov w0, w24 bl FlashReadRawPage mov w21, w0 ldrb w0, [x19, #:lo12:.LANCHOR25] bl FlashSetInterfaceMode ldrb w0, [x19, #:lo12:.LANCHOR25] bl NandcSetMode cmn w21, #1 bne .L863 .L872: mov w21, -1 .L860: mov w0, w21 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L863: mov w1, w25 mov w2, w21 adrp x0, .LC9 add x0, x0, :lo12:.LC9 bl printf adrp x1, .LANCHOR147 ldr w0, [x1, #:lo12:.LANCHOR147] add w0, w0, 1 cmp w0, 2047 bhi .L865 str w0, [x1, #:lo12:.LANCHOR147] b .L860 .L865: str wzr, [x1, #:lo12:.LANCHOR147] mov x28, 0 mov x23, 0 .L862: mov w5, 0 mov w20, 0 mov w6, 0 mov w19, 0 mov w27, -1 .L870: stp w5, w6, [x29, 100] mov w0, w22 bl NandcSetDdrPara mov w1, w25 mov x3, x28 mov x2, x23 mov w0, w24 bl FlashReadRawPage add w1, w21, 1 cmp w0, w1 ldp w5, w6, [x29, 100] bhi .L866 cmp w0, 2 bhi .L876 add w19, w19, 1 cmp w19, 9 bls .L876 mov w1, w20 mov w21, w0 sub w20, w22, w19 mov w27, 0 .L868: cmp w19, w6 csel w20, w20, w1, hi .L869: cbz w20, .L871 mov w1, w20 adrp x0, .LC10 add x0, x0, :lo12:.LC10 bl printf mov w0, w20 bl NandcSetDdrPara .L871: cbz w27, .L860 adrp x0, .LC11 mov w2, w25 mov w1, w24 add x0, x0, :lo12:.LC11 bl printf cbz w26, .L872 ldr w1, [x29, 108] lsr w0, w1, 8 bl NandcSetDdrPara b .L860 .L874: mov w21, 1024 b .L862 .L866: cmp w19, w6 bls .L877 sub w20, w5, w19 cmp w19, 7 bhi .L869 mov w6, w19 .L877: mov w19, 0 b .L867 .L876: mov w5, w22 mov w21, w0 mov w27, 0 mov x28, 0 mov x23, 0 .L867: add w22, w22, 2 cmp w22, 69 bls .L870 mov w1, w20 mov w20, w5 b .L868 .size FlashDdrTunningRead, .-FlashDdrTunningRead .section .text.FlashReadPage,"ax",@progbits .align 2 .global FlashReadPage .type FlashReadPage, %function FlashReadPage: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x19, x20, [sp, 16] and w20, w0, 255 stp x21, x22, [sp, 32] mov w0, w20 stp x23, x24, [sp, 48] mov w21, w1 mov x22, x2 mov x23, x3 str x25, [sp, 64] bl FlashReadRawPage mov w19, w0 cmn w0, #1 bne .L887 adrp x24, .LANCHOR6 ldrb w25, [x24, #:lo12:.LANCHOR6] cbnz w25, .L888 .L890: adrp x0, .LANCHOR30 ldrb w0, [x0, #:lo12:.LANCHOR30] cbz w0, .L887 adrp x0, .LANCHOR19 mov w4, 1 mov x3, x23 mov x2, x22 ldr x0, [x0, #:lo12:.LANCHOR19] mov w1, w21 ldr w24, [x0, 304] mov w0, w20 bl FlashDdrTunningRead mov w19, w0 cmn w0, #1 beq .L891 adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] cmp w19, w0, lsr 1 bls .L887 .L891: lsr w0, w24, 8 bl NandcSetDdrPara b .L887 .L888: strb wzr, [x24, #:lo12:.LANCHOR6] mov x3, x23 mov x2, x22 mov w1, w21 mov w0, w20 bl FlashReadRawPage strb w25, [x24, #:lo12:.LANCHOR6] cmn w0, #1 beq .L890 mov w19, w0 .L887: adrp x24, .LANCHOR148 ldr x4, [x24, #:lo12:.LANCHOR148] cbz x4, .L886 cmn w19, #1 bne .L886 mov x3, x23 mov x2, x22 mov w1, w21 mov w0, w20 blr x4 mov w19, w0 mov w1, w0 mov w3, w21 mov w2, w20 adrp x0, .LC12 add x0, x0, :lo12:.LC12 bl printf cmn w19, #1 bne .L886 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L886 mov w0, w20 bl flash_enter_slc_mode ldr x4, [x24, #:lo12:.LANCHOR148] mov x3, x23 mov x2, x22 mov w1, w21 mov w0, w20 blr x4 mov w19, w0 mov w0, w20 bl flash_exit_slc_mode .L886: mov w0, w19 ldr x25, [sp, 64] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret .size FlashReadPage, .-FlashReadPage .section .text.FlashDdrParaScan,"ax",@progbits .align 2 .global FlashDdrParaScan .type FlashDdrParaScan, %function FlashDdrParaScan: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR25 and w20, w0, 255 stp x21, x22, [sp, 32] ldrb w0, [x19, #:lo12:.LANCHOR25] mov w21, w1 bl FlashSetInterfaceMode ldrb w0, [x19, #:lo12:.LANCHOR25] bl NandcSetMode mov w4, 0 mov x3, 0 mov x2, 0 mov w1, w21 mov w0, w20 bl FlashDdrTunningRead mov x3, 0 mov w22, w0 mov x2, 0 mov w0, w20 mov w1, w21 adrp x20, .LANCHOR30 bl FlashReadRawPage cmn w0, #1 beq .L907 cmn w22, #1 bne .L908 .L907: ldrb w0, [x19, #:lo12:.LANCHOR25] tbz x0, 0, .L908 mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode strb wzr, [x20, #:lo12:.LANCHOR30] .L909: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .L908: mov w0, 1 strb w0, [x20, #:lo12:.LANCHOR30] b .L909 .size FlashDdrParaScan, .-FlashDdrParaScan .section .text.ToshibaReadRetrial,"ax",@progbits .align 2 .global ToshibaReadRetrial .type ToshibaReadRetrial, %function ToshibaReadRetrial: stp x29, x30, [sp, -128]! add x29, sp, 0 stp x21, x22, [sp, 32] and w21, w0, 255 stp x25, x26, [sp, 64] mov w0, w21 stp x19, x20, [sp, 16] mov x25, x2 stp x27, x28, [sp, 80] mov x26, x3 str w1, [x29, 120] stp x23, x24, [sp, 48] bl NandcWaitFlashReady sbfiz x1, x21, 4, 32 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x2, x0, x1 ldr x22, [x0, x1] adrp x1, .LANCHOR11 ldrb w27, [x2, 8] ldrb w0, [x1, #:lo12:.LANCHOR11] str x1, [x29, 112] add x19, x27, 8 sub w0, w0, #67 str w27, [x29, 124] and w0, w0, 255 add x19, x22, x19, lsl 8 cmp w0, 1 bls .L934 adrp x0, .LANCHOR30 ldrb w0, [x0, #:lo12:.LANCHOR30] cbz w0, .L935 mov w23, 1 mov w0, 0 bl NandcSetDdrMode .L919: add x0, x22, x27, lsl 8 mov w1, 92 str w1, [x0, 2056] mov w1, 197 str w1, [x0, 2056] .L918: ldrsw x0, [x29, 124] mov w20, 1 mov w24, -1 add x0, x0, 8 add x0, x22, x0, lsl 8 str x0, [x29, 104] .L920: adrp x0, .LANCHOR149 ldrb w0, [x0, #:lo12:.LANCHOR149] add w0, w0, 1 cmp w20, w0 bcc .L929 mov w28, w24 .L928: ldr x0, [x29, 112] mov w1, 0 ldrb w0, [x0, #:lo12:.LANCHOR11] sub w0, w0, #67 and w0, w0, 255 cmp w0, 1 mov x0, x19 bhi .L930 bl SandiskSetRRPara .L931: ldrsw x0, [x29, 124] add x0, x0, 8 add x22, x22, x0, lsl 8 mov w0, 255 str w0, [x22, 8] adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 bcc .L932 cmn w28, #1 mov w0, 256 csel w28, w28, w0, eq .L932: mov w0, w21 bl NandcWaitFlashReady cbz w23, .L917 mov w0, 4 bl NandcSetDdrMode .L917: mov w0, w28 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L935: mov w23, 0 b .L919 .L934: mov w23, 0 b .L918 .L929: ldr x0, [x29, 112] mov w1, w20 ldrb w0, [x0, #:lo12:.LANCHOR11] sub w0, w0, #67 and w0, w0, 255 cmp w0, 1 mov x0, x19 bhi .L921 bl SandiskSetRRPara .L922: ldr x0, [x29, 112] ldrb w0, [x0, #:lo12:.LANCHOR11] cmp w0, 34 bne .L923 adrp x0, .LANCHOR149 ldrb w0, [x0, #:lo12:.LANCHOR149] sub w0, w0, #3 cmp w20, w0 bne .L923 ldr x1, [x29, 104] mov w0, 179 str w0, [x1, 8] .L923: add x0, x22, x27, lsl 8 mov w1, 38 str w1, [x0, 2056] mov w1, 93 str w1, [x0, 2056] cbz w23, .L924 mov w0, 4 bl NandcSetDdrMode ldr w1, [x29, 120] mov x3, x26 mov x2, x25 mov w0, w21 bl FlashReadRawPage mov w28, w0 mov w0, 0 bl NandcSetDdrMode .L925: cmn w28, #1 beq .L926 adrp x0, .LANCHOR33 cmn w24, #1 csel w24, w24, w28, ne ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 bcc .L928 mov x26, 0 mov x25, 0 .L926: add w20, w20, 1 b .L920 .L921: bl ToshibaSetRRPara b .L922 .L924: ldr w1, [x29, 120] mov x3, x26 mov x2, x25 mov w0, w21 bl FlashReadRawPage mov w28, w0 b .L925 .L930: bl ToshibaSetRRPara b .L931 .size ToshibaReadRetrial, .-ToshibaReadRetrial .section .text.SamsungReadRetrial,"ax",@progbits .align 2 .global SamsungReadRetrial .type SamsungReadRetrial, %function SamsungReadRetrial: stp x29, x30, [sp, -96]! add x29, sp, 0 stp x21, x22, [sp, 32] and w22, w0, 255 stp x19, x20, [sp, 16] mov w0, w22 stp x23, x24, [sp, 48] mov w23, w1 stp x25, x26, [sp, 64] mov x24, x2 str x27, [sp, 80] mov x25, x3 bl NandcWaitFlashReady adrp x26, .LANCHOR149 sbfiz x1, x22, 4, 32 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 adrp x27, .LANCHOR33 add x2, x0, x1 add x26, x26, :lo12:.LANCHOR149 add x27, x27, :lo12:.LANCHOR33 mov w21, 1 ldr x0, [x0, x1] mov w19, -1 ldrb w20, [x2, 8] add x20, x20, 8 add x20, x0, x20, lsl 8 .L946: ldrb w0, [x26] add w0, w0, 1 cmp w21, w0 bcc .L950 .L949: mov x0, x20 mov w1, 0 bl SamsungSetRRPara adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w19, w0, lsr 2 bcc .L945 cmn w19, #1 mov w0, 256 csel w19, w19, w0, eq .L945: mov w0, w19 ldr x27, [sp, 80] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret .L950: mov w1, w21 mov x0, x20 bl SamsungSetRRPara mov x3, x25 mov x2, x24 mov w1, w23 mov w0, w22 bl FlashReadRawPage cmn w0, #1 beq .L947 ldrb w1, [x27] cmn w19, #1 csel w19, w19, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 bcc .L952 mov x25, 0 mov x24, 0 .L947: add w21, w21, 1 b .L946 .L952: mov w19, w0 b .L949 .size SamsungReadRetrial, .-SamsungReadRetrial .section .text.MicronReadRetrial,"ax",@progbits .align 2 .global MicronReadRetrial .type MicronReadRetrial, %function MicronReadRetrial: stp x29, x30, [sp, -144]! add x29, sp, 0 stp x19, x20, [sp, 16] and w20, w0, 255 adrp x0, .LANCHOR33 stp x23, x24, [sp, 48] str w1, [x29, 140] mov x24, x2 ldrb w19, [x0, #:lo12:.LANCHOR33] adrp x0, .LANCHOR16 stp x25, x26, [sp, 64] mov x25, x3 ldrb w1, [x0, #:lo12:.LANCHOR16] stp x21, x22, [sp, 32] stp x27, x28, [sp, 80] str x0, [x29, 128] cbnz w1, .L960 add w19, w19, w19, lsl 1 asr w19, w19, 2 .L961: adrp x21, .LANCHOR0 add x21, x21, :lo12:.LANCHOR0 add x21, x21, x20, sxtw 4 mov w23, 0 mov w28, 137 .L971: mov w0, w20 bl NandcWaitFlashReady ldrb w4, [x21, 8] adrp x7, .LANCHOR149 ldr x8, [x21] add x7, x7, :lo12:.LANCHOR149 mov w22, 0 mov w26, -1 add x27, x8, x4, lsl 8 .L962: ldrb w0, [x7] cmp w22, w0 bcc .L966 .L965: add x4, x8, x4, lsl 8 mov w0, 239 str x4, [x29, 120] str w0, [x4, 2056] mov x0, 200 str w28, [x4, 2052] bl udelay ldr x4, [x29, 120] cmp w26, w19 str wzr, [x4, 2048] str wzr, [x4, 2048] str wzr, [x4, 2048] str wzr, [x4, 2048] bcc .L967 cmn w26, #1 mov w0, 256 csel w26, w26, w0, eq .L967: cmp w26, 256 ccmn w26, #1, 4, ne bne .L968 ldr w2, [x29, 140] adrp x0, .LC13 mov w4, w26 mov w3, w22 mov w1, w22 add x0, x0, :lo12:.LC13 bl printf cbnz w23, .L969 ldr x0, [x29, 128] ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L959 cmn w26, #1 bne .L959 mov w1, 3 mov w0, w20 mov w23, 1 bl micron_auto_read_calibration_config b .L971 .L960: mov w0, 3 sdiv w19, w19, w0 b .L961 .L966: mov w0, 239 str w0, [x27, 2056] str w28, [x27, 2052] mov x0, 200 stp x4, x7, [x29, 96] str x8, [x29, 112] bl udelay add w10, w22, 1 str w10, [x27, 2048] str wzr, [x27, 2048] mov x3, x25 ldr w1, [x29, 140] mov x2, x24 str wzr, [x27, 2048] mov w0, w20 str wzr, [x27, 2048] str w10, [x29, 120] bl FlashReadRawPage cmn w0, #1 ldr w10, [x29, 120] ldp x4, x7, [x29, 96] ldr x8, [x29, 112] beq .L963 cmn w26, #1 csel w26, w26, w0, ne cmp w0, w19 bcc .L973 mov x25, 0 mov x24, 0 .L963: mov w22, w10 b .L962 .L973: mov w26, w0 mov x25, 0 mov x24, 0 b .L965 .L969: mov w0, w20 mov w1, 0 bl micron_auto_read_calibration_config cmn w26, #1 mov w0, 256 csel w26, w26, w0, eq .L959: mov w0, w26 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 ret .L968: cbz w23, .L959 mov w1, 0 mov w0, w20 mov w26, 256 bl micron_auto_read_calibration_config b .L959 .size MicronReadRetrial, .-MicronReadRetrial .section .text.HynixReadRetrial,"ax",@progbits .align 2 .global HynixReadRetrial .type HynixReadRetrial, %function HynixReadRetrial: stp x29, x30, [sp, -128]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR20 stp x27, x28, [sp, 80] and x28, x0, 255 add x0, x19, :lo12:.LANCHOR20 stp x23, x24, [sp, 48] stp x21, x22, [sp, 32] mov w22, w1 stp x25, x26, [sp, 64] adrp x25, .LANCHOR7 add x1, x0, x28 mov x20, x28 ldrb w21, [x0, 2] mov x23, x2 ldr x0, [x25, #:lo12:.LANCHOR7] mov x24, x3 ldrb w26, [x1, 12] ldrb w0, [x0, 19] sub w0, w0, #7 and w0, w0, 255 cmp w0, 1 bhi .L985 ldrb w26, [x1, 20] .L985: mov w0, w20 bl NandcWaitFlashReady add x6, x19, :lo12:.LANCHOR20 adrp x5, .LANCHOR33 add x7, x6, 4 add x5, x5, :lo12:.LANCHOR33 mov w4, 0 mov w27, -1 .L986: cmp w4, w21 bcc .L991 .L990: ldr x0, [x25, #:lo12:.LANCHOR7] add x19, x19, :lo12:.LANCHOR20 add x19, x19, x28 ldrb w0, [x0, 19] sub w0, w0, #7 and w0, w0, 255 cmp w0, 1 bhi .L992 strb w26, [x19, 20] .L993: adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w27, w0, lsr 2 bcc .L984 cmn w27, #1 mov w0, 256 csel w27, w27, w0, eq .L984: mov w0, w27 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L991: add w26, w26, 1 ldrb w1, [x6, 1] and w26, w26, 255 mov x2, x7 cmp w21, w26 str x5, [x29, 96] csel w26, w26, wzr, hi str w4, [x29, 108] stp x7, x6, [x29, 112] mov w3, w26 mov w0, w20 bl HynixSetRRPara mov x3, x24 mov x2, x23 mov w1, w22 mov w0, w20 bl FlashReadRawPage cmn w0, #1 ldr w4, [x29, 108] ldr x5, [x29, 96] ldp x7, x6, [x29, 112] beq .L988 ldrb w1, [x5] cmn w27, #1 csel w27, w27, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 bcc .L995 mov x24, 0 mov x23, 0 .L988: add w4, w4, 1 b .L986 .L995: mov w27, w0 b .L990 .L992: strb w26, [x19, 12] b .L993 .size HynixReadRetrial, .-HynixReadRetrial .section .text.samsung_read_retrial,"ax",@progbits .align 2 .type samsung_read_retrial, %function samsung_read_retrial: stp x29, x30, [sp, -112]! add x29, sp, 0 stp x21, x22, [sp, 32] and w22, w0, 255 stp x23, x24, [sp, 48] mov w0, w22 stp x19, x20, [sp, 16] mov x23, x2 stp x25, x26, [sp, 64] mov x24, x3 mov w25, w1 stp x27, x28, [sp, 80] bl NandcWaitFlashReady sbfiz x1, x22, 4, 32 adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 add x2, x0, x1 ldr x0, [x0, x1] adrp x1, .LANCHOR24 ldrb w19, [x2, 8] ldrb w1, [x1, #:lo12:.LANCHOR24] cbnz w1, .L1003 adrp x27, .LANCHOR150 adrp x28, .LANCHOR33 add x19, x0, x19, lsl 8 add x27, x27, :lo12:.LANCHOR150 add x28, x28, :lo12:.LANCHOR33 mov x21, 0 mov w20, -1 mov w4, 239 .L1007: str w4, [x19, 2056] mov w0, 141 str w0, [x19, 2052] add x0, x27, x21 str w4, [x29, 108] mov x3, x24 mov x2, x23 mov w1, w25 ldrsb w0, [x0, 1] add w26, w21, 1 str w0, [x19, 2048] mov w0, w22 str wzr, [x19, 2048] str wzr, [x19, 2048] str wzr, [x19, 2048] bl FlashReadRawPage cmn w0, #1 ldr w4, [x29, 108] beq .L1004 ldrb w1, [x28] cmn w20, #1 csel w20, w20, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 bcc .L1015 mov x24, 0 mov x23, 0 .L1004: add x21, x21, 1 cmp x21, 25 bne .L1007 mov w26, 26 .L1006: mov w0, 239 str w0, [x19, 2056] mov w0, 141 .L1031: str w0, [x19, 2052] adrp x0, .LANCHOR33 str wzr, [x19, 2048] str wzr, [x19, 2048] str wzr, [x19, 2048] str wzr, [x19, 2048] ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w20, w0, lsr 2 bcc .L1013 cmn w20, #1 mov w0, 256 csel w20, w20, w0, eq .L1013: cmp w20, 256 ccmn w20, #1, 4, ne bne .L1014 adrp x0, .LC14 mov w4, w20 mov w3, w26 mov w2, w25 mov w1, w26 add x0, x0, :lo12:.LC14 bl printf .L1014: mov w0, w22 bl NandcWaitFlashReady mov w0, w20 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L1015: mov w20, w0 b .L1006 .L1003: adrp x21, .LANCHOR151 add x21, x21, :lo12:.LANCHOR151 adrp x27, .LANCHOR33 add x21, x21, 4 add x19, x0, x19, lsl 8 add x27, x27, :lo12:.LANCHOR33 mov w20, -1 mov w26, 1 mov w4, 239 mov w28, 137 .L1012: str w4, [x19, 2056] mov x3, x24 str w28, [x19, 2052] mov x2, x23 str w4, [x29, 108] mov w1, w25 ldrb w0, [x21] str w0, [x19, 2048] ldrb w0, [x21, 1] str w0, [x19, 2048] ldrb w0, [x21, 2] str w0, [x19, 2048] ldrb w0, [x21, 3] str w0, [x19, 2048] mov w0, w22 bl FlashReadRawPage cmn w0, #1 ldr w4, [x29, 108] beq .L1009 ldrb w1, [x27] cmn w20, #1 csel w20, w20, w0, ne add w1, w1, w1, lsl 1 cmp w0, w1, lsr 2 bcc .L1016 mov x24, 0 mov x23, 0 .L1009: add w26, w26, 1 add x21, x21, 4 cmp w26, 26 bne .L1012 .L1011: mov w0, 239 str w0, [x19, 2056] mov w0, 137 b .L1031 .L1016: mov w20, w0 b .L1011 .size samsung_read_retrial, .-samsung_read_retrial .section .text.FlashProgPage,"ax",@progbits .align 2 .global FlashProgPage .type FlashProgPage, %function FlashProgPage: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w20, w1 stp x21, x22, [sp, 32] adrp x1, .LANCHOR31+9 str x23, [sp, 48] mov x22, x2 ldrb w21, [x1, #:lo12:.LANCHOR31+9] ands w19, w0, 255 mov x23, x3 bne .L1033 adrp x0, .LANCHOR3 adrp x1, .LANCHOR4 ldrb w0, [x0, #:lo12:.LANCHOR3] ldr w1, [x1, #:lo12:.LANCHOR4] mul w0, w0, w1 cmp w0, w20 bls .L1033 adrp x0, .LANCHOR2 ldrb w0, [x0, #:lo12:.LANCHOR2] cmp w0, 0 mov w0, 4 csel w21, w21, w0, eq .L1033: mov w0, w19 bl NandcWaitFlashReady mov w0, w19 bl NandcFlashCs mov w1, w20 mov w0, w19 bl FlashProgFirstCmd mov x4, x23 mov x3, x22 mov w2, w21 mov w1, 1 mov w0, w19 bl NandcXferData mov w1, w20 mov w0, w19 bl FlashProgSecondCmd mov w0, w19 bl NandcWaitFlashReady mov w1, w20 mov w0, w19 bl FlashReadStatus mov w2, w0 mov w0, w19 bl NandcFlashDeCs ldr x23, [sp, 48] and w0, w2, 1 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret .size FlashProgPage, .-FlashProgPage .section .text.FlashPageProgMsbFFData,"ax",@progbits .align 2 .global FlashPageProgMsbFFData .type FlashPageProgMsbFFData, %function FlashPageProgMsbFFData: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x23, x24, [sp, 48] and w23, w0, 255 adrp x0, .LANCHOR16 stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] and w19, w2, 65535 ldrb w0, [x0, #:lo12:.LANCHOR16] str x25, [sp, 64] cbz w0, .L1037 adrp x0, .LANCHOR29 ldr w0, [x0, #:lo12:.LANCHOR29] cbnz w0, .L1036 .L1037: adrp x2, .LANCHOR7 mov x20, x2 ldr x0, [x2, #:lo12:.LANCHOR7] ldrb w0, [x0, 19] sub w0, w0, #5 and w3, w0, 255 cmp w3, 63 bhi .L1036 mov x2, 16391 movk x2, 0x4000, lsl 16 movk x2, 0x2000, lsl 32 movk x2, 0x8000, lsl 48 lsr x0, x2, x3 tbz x0, 0, .L1036 adrp x21, .LANCHOR123 mov w22, w1 add x21, x21, :lo12:.LANCHOR123 mov w25, 65535 adrp x24, .LANCHOR152 .L1039: ldr x0, [x20, #:lo12:.LANCHOR7] ldrh w0, [x0, 10] cmp w0, w19 bhi .L1040 .L1036: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldr x25, [sp, 64] ldp x29, x30, [sp], 80 ret .L1040: ldrh w0, [x21, w19, sxtw 1] cmp w0, w25 bne .L1036 ldr x0, [x24, #:lo12:.LANCHOR152] mov w2, 32768 mov w1, 255 bl ftl_memset ldr x3, [x24, #:lo12:.LANCHOR152] add w1, w19, w22 add w19, w19, 1 mov w0, w23 mov x2, x3 and w19, w19, 65535 bl FlashProgPage b .L1039 .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData .section .text.FlashLoadPhyInfo,"ax",@progbits .align 2 .global FlashLoadPhyInfo .type FlashLoadPhyInfo, %function FlashLoadPhyInfo: stp x29, x30, [sp, -128]! mov w0, 60 add x29, sp, 0 stp x21, x22, [sp, 32] adrp x21, .LANCHOR4 adrp x22, .LANCHOR154 stp x19, x20, [sp, 16] strb w0, [x29, 120] mov w0, 40 strb w0, [x29, 121] mov w0, 24 strb w0, [x29, 122] mov w0, 16 strb w0, [x29, 123] adrp x20, .LANCHOR153 ldr w0, [x21, #:lo12:.LANCHOR4] mov w19, 0 stp x23, x24, [sp, 48] adrp x24, .LANCHOR155 str w0, [x29, 108] mov w23, -1 ldr x0, [x22, #:lo12:.LANCHOR154] stp x25, x26, [sp, 64] adrp x25, .LANCHOR31 str x0, [x20, #:lo12:.LANCHOR153] mov w26, 4 stp x27, x28, [sp, 80] add x25, x25, :lo12:.LANCHOR31 str wzr, [x24, #:lo12:.LANCHOR155] mov w0, 0 bl flash_enter_slc_mode .L1046: add w28, w19, 1 mov x27, 0 .L1048: add x0, x29, 120 ldrb w0, [x0, x27] bl FlashBchSel ldr x2, [x22, #:lo12:.LANCHOR154] mov x3, 0 mov w1, w19 mov w0, 0 bl FlashReadRawPage cmn w0, #1 bne .L1047 ldr x2, [x22, #:lo12:.LANCHOR154] mov x3, 0 mov w1, w28 mov w0, 0 bl FlashReadRawPage cmn w0, #1 bne .L1047 add x27, x27, 1 cmp x27, 4 bne .L1048 .L1049: ldr w0, [x29, 108] subs w26, w26, #1 add w19, w19, w0 bne .L1046 b .L1054 .L1050: mov w1, 2036 add x0, x6, 12 bl js_hash ldr w1, [x6, 8] cmp w1, w0 bne .L1056 add x1, x6, 160 mov w2, 32 mov x0, x25 bl ftl_memcpy ldr x1, [x20, #:lo12:.LANCHOR153] mov w2, 32 adrp x0, .LANCHOR8 add x0, x0, :lo12:.LANCHOR8 add x1, x1, 192 bl ftl_memcpy ldr x1, [x20, #:lo12:.LANCHOR153] mov w2, 852 adrp x0, .LANCHOR20 add x0, x0, :lo12:.LANCHOR20 add x1, x1, 224 bl ftl_memcpy ldrh w0, [x25, 10] bl FlashBlockAlignInit str w19, [x24, #:lo12:.LANCHOR155] ldr x1, [x20, #:lo12:.LANCHOR153] adrp x0, .LANCHOR30 ldr w2, [x1, 1076] strb w2, [x0, #:lo12:.LANCHOR30] ldr w0, [x21, #:lo12:.LANCHOR4] adrp x2, .LANCHOR156 udiv w0, w19, w0 add w0, w0, 1 cmp w0, 1 bls .L1052 .L1059: str w0, [x2, #:lo12:.LANCHOR156] adrp x0, .LANCHOR157 ldrh w1, [x1, 14] mov w23, 0 strb w1, [x0, #:lo12:.LANCHOR157] b .L1049 .L1052: mov w0, 2 b .L1059 .L1056: mov w23, -1 b .L1049 .L1047: ldr x6, [x20, #:lo12:.LANCHOR153] mov w1, 20036 movk w1, 0x4e41, lsl 16 ldr w0, [x6] cmp w0, w1 bne .L1049 cbnz w23, .L1050 ldr w0, [x21, #:lo12:.LANCHOR4] udiv w19, w19, w0 adrp x0, .LANCHOR156 add w19, w19, 1 str w19, [x0, #:lo12:.LANCHOR156] .L1054: mov w0, 0 bl flash_exit_slc_mode mov w0, w23 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .size FlashLoadPhyInfo, .-FlashLoadPhyInfo .section .text.FlashSavePhyInfo,"ax",@progbits .align 2 .global FlashSavePhyInfo .type FlashSavePhyInfo, %function FlashSavePhyInfo: stp x29, x30, [sp, -96]! add x29, sp, 0 stp x21, x22, [sp, 32] adrp x21, .LANCHOR154 stp x19, x20, [sp, 16] adrp x19, .LANCHOR153 ldr x0, [x21, #:lo12:.LANCHOR154] mov w22, 0 str x0, [x19, #:lo12:.LANCHOR153] mov w20, 0 adrp x0, .LANCHOR158 stp x23, x24, [sp, 48] stp x27, x28, [sp, 80] adrp x24, .LANCHOR152 ldrb w0, [x0, #:lo12:.LANCHOR158] adrp x23, .LANCHOR4 stp x25, x26, [sp, 64] mov w25, 20036 movk w25, 0x4e41, lsl 16 adrp x27, .LANCHOR16 add x28, x23, :lo12:.LANCHOR4 add x27, x27, :lo12:.LANCHOR16 bl FlashBchSel ldr x0, [x21, #:lo12:.LANCHOR154] mov w2, 2048 mov w1, 0 bl ftl_memset ldr x0, [x19, #:lo12:.LANCHOR153] adrp x1, .LANCHOR26 mov w2, 32 add x0, x0, 16 str w25, [x0, -16] ldrb w1, [x1, #:lo12:.LANCHOR26] strh w1, [x0, -4] adrp x1, .LANCHOR3 ldrb w1, [x1, #:lo12:.LANCHOR3] strh w1, [x0, -2] adrp x1, .LANCHOR30 ldrb w1, [x1, #:lo12:.LANCHOR30] str w1, [x0, 1060] adrp x1, .LANCHOR22 add x1, x1, :lo12:.LANCHOR22 bl ftl_memcpy ldr x0, [x19, #:lo12:.LANCHOR153] mov w2, 8 adrp x1, .LANCHOR27 add x1, x1, :lo12:.LANCHOR27 add x0, x0, 80 bl ftl_memcpy ldr x0, [x19, #:lo12:.LANCHOR153] mov w2, 32 adrp x1, .LANCHOR18 add x1, x1, :lo12:.LANCHOR18 add x0, x0, 96 bl ftl_memcpy ldr x0, [x19, #:lo12:.LANCHOR153] mov w2, 32 adrp x1, .LANCHOR31 add x1, x1, :lo12:.LANCHOR31 add x0, x0, 160 bl ftl_memcpy ldr x0, [x19, #:lo12:.LANCHOR153] mov w2, 32 adrp x1, .LANCHOR8 add x1, x1, :lo12:.LANCHOR8 add x0, x0, 192 bl ftl_memcpy ldr x0, [x19, #:lo12:.LANCHOR153] mov w2, 852 adrp x1, .LANCHOR20 add x1, x1, :lo12:.LANCHOR20 add x0, x0, 224 bl ftl_memcpy ldr x6, [x19, #:lo12:.LANCHOR153] mov w1, 2036 add x0, x6, 12 bl js_hash str w0, [x6, 8] mov w0, 1592 str w0, [x6, 4] ldr x0, [x24, #:lo12:.LANCHOR152] str x0, [x19, #:lo12:.LANCHOR153] mov w0, 0 bl flash_enter_slc_mode .L1066: ldr w1, [x23, #:lo12:.LANCHOR4] mov w2, 0 mov w0, 0 mul w1, w20, w1 bl FlashEraseBlock ldrb w0, [x27] cbz w0, .L1061 mov w26, 0 .L1062: ldr w1, [x28] mov x3, 0 ldr x2, [x21, #:lo12:.LANCHOR154] mov w0, 0 madd w1, w20, w1, w26 add w26, w26, 1 bl FlashProgPage cmp w26, 10 bne .L1062 .L1063: ldr w1, [x28] mov x3, 0 ldr x2, [x24, #:lo12:.LANCHOR152] mov w0, 0 mul w1, w20, w1 bl FlashReadRawPage cmn w0, #1 add w7, w20, 1 beq .L1064 ldr x6, [x19, #:lo12:.LANCHOR153] ldr w0, [x6] cmp w0, w25 bne .L1064 mov w1, 2036 add x0, x6, 12 bl js_hash ldr w1, [x6, 8] cmp w1, w0 bne .L1064 adrp x0, .LANCHOR156 cmp w22, 1 str w7, [x0, #:lo12:.LANCHOR156] ldr w0, [x28] mul w20, w0, w20 adrp x0, .LANCHOR155 str w20, [x0, #:lo12:.LANCHOR155] beq .L1067 mov w22, 1 .L1064: mov w20, w7 cmp w7, 4 bne .L1066 .L1065: mov w0, 0 bl flash_exit_slc_mode cmp w22, 0 csetm w0, eq ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 ret .L1061: ldr w1, [x23, #:lo12:.LANCHOR4] mov x3, 0 ldr x2, [x21, #:lo12:.LANCHOR154] mov w0, 0 mul w1, w20, w1 bl FlashProgPage ldr w1, [x23, #:lo12:.LANCHOR4] mov x3, 0 ldr x2, [x21, #:lo12:.LANCHOR154] mov w0, 0 mul w1, w20, w1 add w1, w1, 1 bl FlashProgPage b .L1063 .L1067: mov w22, 2 b .L1065 .size FlashSavePhyInfo, .-FlashSavePhyInfo .section .text.FlashReadIdbDataRaw,"ax",@progbits .align 2 .global FlashReadIdbDataRaw .type FlashReadIdbDataRaw, %function FlashReadIdbDataRaw: stp x29, x30, [sp, -144]! add x29, sp, 0 stp x23, x24, [sp, 48] mov x23, x0 mov w0, 60 stp x25, x26, [sp, 64] strb w0, [x29, 136] mov w0, 40 strb w0, [x29, 137] mov w0, 24 strb w0, [x29, 138] mov w0, 16 strb w0, [x29, 139] adrp x0, .LANCHOR33 stp x19, x20, [sp, 16] ldrb w26, [x0, #:lo12:.LANCHOR33] adrp x0, .LANCHOR29 stp x21, x22, [sp, 32] ldr w1, [x0, #:lo12:.LANCHOR29] stp x27, x28, [sp, 80] str x0, [x29, 120] cbz w1, .L1075 mov w0, 0 bl flash_enter_slc_mode .L1075: adrp x24, .LANCHOR3 adrp x22, .LANCHOR4 add x27, x29, 136 add x22, x22, :lo12:.LANCHOR4 add x28, x24, :lo12:.LANCHOR3 mov w20, -1 mov w19, 2 mov w2, 2048 mov w1, 0 mov x0, x23 bl ftl_memset .L1076: ldrb w0, [x24, #:lo12:.LANCHOR3] cmp w19, w0 bcc .L1081 .L1080: mov w0, w26 bl FlashBchSel ldr x0, [x29, 120] ldr w0, [x0, #:lo12:.LANCHOR29] cbz w0, .L1074 mov w0, 0 bl flash_exit_slc_mode .L1074: mov w0, w20 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 ret .L1081: mov x4, 0 adrp x25, .LANCHOR154 .L1078: ldrb w5, [x4, x27] add x21, x25, :lo12:.LANCHOR154 str w5, [x29, 116] mov w0, w5 str x4, [x29, 104] bl FlashBchSel ldr w1, [x22] mov x3, 0 ldr x2, [x25, #:lo12:.LANCHOR154] mov w0, 0 mul w1, w19, w1 bl FlashReadRawPage cmn w0, #1 ldr w5, [x29, 116] bne .L1077 ldr x4, [x29, 104] add x4, x4, 1 cmp x4, 4 bne .L1078 .L1079: add w19, w19, 1 b .L1076 .L1084: mov w20, 0 b .L1080 .L1077: ldr x0, [x21] ldr w1, [x0] mov w0, 35899 movk w0, 0xfcdc, lsl 16 cmp w1, w0 bne .L1079 mov w1, w5 adrp x0, .LC15 add x0, x0, :lo12:.LC15 bl printf ldr x1, [x21] mov w2, 2048 mov x0, x23 bl ftl_memcpy ldr x0, [x21] ldr w0, [x0, 512] strb w0, [x28] adrp x0, .LANCHOR156 ldr w1, [x0, #:lo12:.LANCHOR156] cmp w19, w1 bcs .L1084 str w19, [x0, #:lo12:.LANCHOR156] mov w20, 0 bl FlashSavePhyInfo b .L1079 .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw .section .text.idb_write_data,"ax",@progbits .align 2 .global idb_write_data .type idb_write_data, %function idb_write_data: stp x29, x30, [sp, -240]! add w0, w1, w3 mov w4, w1 cmp w0, 63 add x29, sp, 0 stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] bls .L1094 cmp w1, 575 bhi .L1095 adrp x0, .LANCHOR159 mov x1, x2 mov w2, 1 cmp w4, 64 str w2, [x0, #:lo12:.LANCHOR159] adrp x0, idb_buf bhi .L1096 mov w2, 64 sub w4, w2, w4 sub w2, w3, w4 ubfiz x4, x4, 9, 25 lsl w2, w2, 9 add x1, x1, x4 add x0, x0, :lo12:idb_buf .L1146: bl ftl_memcpy .L1129: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 240 ret .L1096: mov w2, 576 sub w2, w2, w4 cmp w3, w2 sub w4, w4, #64 csel w2, w3, w2, ls ubfiz x4, x4, 9, 25 add x0, x0, :lo12:idb_buf lsl w2, w2, 9 add x0, x0, x4 b .L1146 .L1094: cmp w1, 575 bls .L1129 .L1095: adrp x0, .LANCHOR159 str x0, [x29, 104] ldr w1, [x0, #:lo12:.LANCHOR159] cbz w1, .L1129 adrp x21, .LANCHOR7 adrp x1, idb_buf+262140 adrp x25, idb_buf add x1, x1, :lo12:idb_buf+262140 ldr x0, [x21, #:lo12:.LANCHOR7] add x5, x25, :lo12:idb_buf mov w2, 65535 mov w3, 4097 ldrb w20, [x0, 9] ldrh w0, [x0, 10] mul w20, w20, w0 and w20, w20, 65535 add w0, w20, 511 udiv w0, w0, w20 str w0, [x29, 172] mov w0, 0 .L1100: ldr w4, [x1] cbnz w4, .L1098 ldr w4, [x5, w0, uxtw 2] add w0, w0, 1 str w4, [x1], -4 cmp w0, w3 sub w2, w2, #1 csel w0, w0, wzr, cc cmp w2, 4096 bne .L1100 .L1098: add x0, x25, :lo12:idb_buf mov w3, 512 mov w23, 0 ldr w1, [x0, w2, uxtw 2] adrp x0, .LC16 add x0, x0, :lo12:.LC16 bl printf adrp x0, .LANCHOR156 ldr w24, [x0, #:lo12:.LANCHOR156] ldr w0, [x29, 172] mul w19, w20, w24 mul w0, w20, w0 str w0, [x29, 136] adrp x0, .LANCHOR17 add x0, x0, :lo12:.LANCHOR17 str x0, [x29, 160] .L1101: cmp w24, 15 bls .L1119 cbnz w23, .L1121 adrp x0, .LC18 mov w1, 0 add x0, x0, :lo12:.LC18 bl printf .L1121: ldr x0, [x29, 104] str wzr, [x0, #:lo12:.LANCHOR159] b .L1129 .L1119: adrp x27, gp_flash_check_buf mov x2, 512 mov w1, 0 add x0, x27, :lo12:gp_flash_check_buf bl memset ldr x0, [x21, #:lo12:.LANCHOR7] ldrb w22, [x0, 9] ldrh w26, [x0, 10] mov w0, w19 bl FW_FlashBlockErase.constprop.42 str x27, [x29, 128] mul w26, w22, w26 and w26, w26, 65535 cmp w26, 511 bhi .L1102 add w0, w26, w19 bl FW_FlashBlockErase.constprop.42 .L1102: udiv w4, w19, w26 adrp x5, .LANCHOR16 add x5, x5, :lo12:.LANCHOR16 mov x28, 0 msub w4, w4, w26, w19 sub w26, w19, w4 .L1103: add x2, x25, :lo12:idb_buf cmp x28, 128 add x2, x2, x28, lsl 11 bne .L1107 ldr x0, [x21, #:lo12:.LANCHOR7] mov w26, 0 ldr x1, [x29, 128] add x27, x1, :lo12:gp_flash_check_buf adrp x1, .LANCHOR16 ldrb w28, [x0, 9] add x1, x1, :lo12:.LANCHOR16 ldrh w22, [x0, 10] str x1, [x29, 96] mul w22, w28, w22 and w0, w22, 65535 udiv w22, w19, w0 msub w22, w22, w0, w19 sub w0, w19, w22 str w0, [x29, 120] mul w0, w22, w28 ubfx x0, x0, 2, 2 .L1108: cmp w26, 511 bhi .L1115 ldr x3, [x29, 96] mov w1, 4 sub w1, w1, w0 ldr x2, [x29, 160] and w1, w1, 65535 str w1, [x29, 144] add w1, w22, w26 ldrb w3, [x3] lsr w1, w1, 2 ldrh w2, [x2, w1, sxtw 1] cbz w3, .L1109 adrp x3, .LANCHOR122 mov w4, 12336 movk w4, 0x5638, lsl 16 ldr w3, [x3, #:lo12:.LANCHOR122] cmp w3, w4 csel w2, w2, w1, ne .L1109: ldr w1, [x29, 120] add w0, w0, w1 adrp x1, .LANCHOR4 ldr w1, [x1, #:lo12:.LANCHOR4] madd w0, w28, w2, w0 str w0, [x29, 168] adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] str w0, [x29, 112] ldr x0, [x21, #:lo12:.LANCHOR7] ldrb w0, [x0, 9] str w0, [x29, 140] adrp x0, .LANCHOR15+26 ldrh w0, [x0, #:lo12:.LANCHOR15+26] mul w0, w0, w1 ldr w1, [x29, 140] mul w0, w0, w1 ldr w1, [x29, 168] cmp w1, w0 bcs .L1110 adrp x0, .LANCHOR158 ldrb w0, [x0, #:lo12:.LANCHOR158] bl FlashBchSel .L1110: mov w0, 0 bl flash_boot_enter_slc_mode ldr w0, [x29, 168] add x3, x29, 176 ldr w1, [x29, 140] mov x2, x27 udiv w1, w0, w1 mov w0, 0 str w1, [x29, 168] bl FlashReadPage mov w1, w0 cmn w0, #1 bne .L1111 adrp x0, .LANCHOR158 ldrb w0, [x0, #:lo12:.LANCHOR158] cmp w0, 40 beq .L1111 mov w0, 40 bl FlashBchSel ldr w1, [x29, 168] add x3, x29, 176 mov x2, x27 mov w0, 0 bl FlashReadPage mov w1, w0 .L1111: str w1, [x29, 168] mov w0, 0 bl flash_boot_exit_slc_mode ldrb w0, [x29, 112] bl FlashBchSel ldr w1, [x29, 168] cmn w1, #1 bne .L1112 .L1115: ldr x0, [x29, 128] add x1, x25, :lo12:idb_buf mov x22, 0 add x26, x0, :lo12:gp_flash_check_buf .L1113: lsl x0, x22, 2 mov w27, w22 add x28, x0, x1 ldr w2, [x0, x26] ldr w0, [x0, x1] cmp w2, w0 beq .L1116 mov x2, 512 mov w1, 0 mov x0, x26 bl memset ldr w2, [x26, w27, uxtw 2] mov w4, w22 ldr w3, [x28] mov w1, w19 adrp x0, .LC17 add x0, x0, :lo12:.LC17 bl printf mov w0, w19 bl FW_FlashBlockErase.constprop.42 ldr w0, [x29, 172] cmp w0, 1 bls .L1117 add w0, w20, w19 bl FW_FlashBlockErase.constprop.42 .L1117: ldr w0, [x29, 172] add w24, w24, w0 ldr w0, [x29, 136] add w19, w19, w0 b .L1101 .L1107: add w1, w4, w28, lsl 2 lsr w1, w1, 2 cbz w1, .L1104 ldr x0, [x29, 160] add w3, w1, 1 ldrb w6, [x5] ldrh w0, [x0, w3, sxtw 1] cbz w6, .L1105 adrp x6, .LANCHOR122 mov w7, 12336 movk w7, 0x5638, lsl 16 ldr w6, [x6, #:lo12:.LANCHOR122] cmp w6, w7 csel w0, w0, w3, ne .L1105: lsl w0, w0, 2 sub w0, w0, #4 str w0, [x29, 176] .L1104: mov w0, 61424 str w0, [x29, 180] ldr x0, [x29, 160] ldrh w27, [x0, w1, sxtw 1] ldrb w0, [x5] cbz w0, .L1106 adrp x0, .LANCHOR122 mov w3, 12336 movk w3, 0x5638, lsl 16 ldr w0, [x0, #:lo12:.LANCHOR122] cmp w0, w3 csel w27, w27, w1, ne .L1106: adrp x0, .LANCHOR33 madd w1, w22, w27, w26 stp x5, x2, [x29, 112] add x28, x28, 1 ldrb w6, [x0, #:lo12:.LANCHOR33] adrp x0, .LANCHOR158 stp w4, w6, [x29, 140] ldrb w0, [x0, #:lo12:.LANCHOR158] str w1, [x29, 168] bl FlashBchSel mov w0, 0 bl flash_boot_enter_slc_mode ldr x0, [x21, #:lo12:.LANCHOR7] add x3, x29, 176 ldr w1, [x29, 168] ldr x2, [x29, 120] ldrb w0, [x0, 9] udiv w1, w1, w0 mov w0, 0 bl FlashProgPage mov w0, 0 bl flash_boot_exit_slc_mode ldr w6, [x29, 144] mov w0, w6 bl FlashBchSel udiv w1, w26, w22 add w2, w27, 1 mov w0, 0 bl FlashPageProgMsbFFData ldr w4, [x29, 140] ldr x5, [x29, 112] b .L1103 .L1112: ldr x0, [x29, 144] ubfiz x0, x0, 9, 16 add x27, x27, x0 ldr w0, [x29, 144] add w26, w0, w26 mov w0, 0 and w26, w26, 65535 b .L1108 .L1116: add x22, x22, 1 cmp x22, 65536 bne .L1113 add w23, w23, 1 cmp w23, 5 bls .L1117 b .L1121 .size idb_write_data, .-idb_write_data .section .text.ftl_memcpy32,"ax",@progbits .align 2 .global ftl_memcpy32 .type ftl_memcpy32, %function ftl_memcpy32: mov x3, 0 .L1148: cmp w2, w3 bhi .L1149 ret .L1149: ldr w4, [x1, x3, lsl 2] str w4, [x0, x3, lsl 2] add x3, x3, 1 b .L1148 .size ftl_memcpy32, .-ftl_memcpy32 .section .text.ftl_memcmp,"ax",@progbits .align 2 .global ftl_memcmp .type ftl_memcmp, %function ftl_memcmp: uxtw x2, w2 b memcmp .size ftl_memcmp, .-ftl_memcmp .section .text.rknand_get_clk_rate,"ax",@progbits .align 2 .global rknand_get_clk_rate .type rknand_get_clk_rate, %function rknand_get_clk_rate: mov w0, 19712 movk w0, 0x8d2, lsl 16 ret .size rknand_get_clk_rate, .-rknand_get_clk_rate .section .text.ftl_malloc,"ax",@progbits .align 2 .global ftl_malloc .type ftl_malloc, %function ftl_malloc: mov w1, 0 sxtw x0, w0 b kmalloc .size ftl_malloc, .-ftl_malloc .section .text.NandcInit,"ax",@progbits .align 2 .global NandcInit .type NandcInit, %function NandcInit: stp x29, x30, [sp, -16]! adrp x2, .LANCHOR0 add x1, x2, :lo12:.LANCHOR0 adrp x4, .LANCHOR122 add x29, sp, 0 str x0, [x2, #:lo12:.LANCHOR0] mov w2, 1 str w2, [x1, 24] mov w2, 2 str wzr, [x1, 8] str w2, [x1, 40] mov w2, 3 str x0, [x1, 16] str w2, [x1, 56] adrp x2, .LANCHOR160 str x0, [x1, 32] str x0, [x1, 48] adrp x1, .LANCHOR19 str x0, [x1, #:lo12:.LANCHOR19] ldr w1, [x0] ubfx x3, x1, 13, 1 str w3, [x2, #:lo12:.LANCHOR160] ldr w2, [x0, 352] adrp x3, .LANCHOR34 and w1, w1, 245760 orr w1, w1, 256 ubfx x2, x2, 16, 4 str w2, [x3, #:lo12:.LANCHOR34] ldr w2, [x0, 352] str w2, [x4, #:lo12:.LANCHOR122] cmp w2, 2049 bne .L1154 mov w2, 8 str w2, [x3, #:lo12:.LANCHOR34] .L1154: str w1, [x0] mov w1, 4225 str wzr, [x0, 336] str w1, [x0, 4] mov w1, 8322 str w1, [x0, 344] mov w1, 6657 movk w1, 0x1a, lsl 16 str w1, [x0, 304] mov w0, 36864 bl ftl_malloc adrp x1, .LANCHOR161 adrp x2, .LANCHOR35 str x0, [x1, #:lo12:.LANCHOR161] add x1, x2, :lo12:.LANCHOR35 str x0, [x2, #:lo12:.LANCHOR35] add x0, x0, 32768 str wzr, [x1, 40] str x0, [x1, 8] adrp x0, .LANCHOR36 ldp x29, x30, [sp], 16 str wzr, [x0, #:lo12:.LANCHOR36] ret .size NandcInit, .-NandcInit .section .text.FtlMemInit,"ax",@progbits .align 2 .global FtlMemInit .type FtlMemInit, %function FtlMemInit: stp x29, x30, [sp, -64]! adrp x0, .LANCHOR142 mov w1, 65535 add x29, sp, 0 strh wzr, [x0, #:lo12:.LANCHOR142] adrp x0, .LANCHOR162 stp x19, x20, [sp, 16] adrp x19, .LANCHOR185 str wzr, [x0, #:lo12:.LANCHOR162] adrp x0, .LANCHOR163 stp x21, x22, [sp, 32] adrp x21, .LANCHOR38 str wzr, [x0, #:lo12:.LANCHOR163] adrp x0, .LANCHOR164 stp x23, x24, [sp, 48] str wzr, [x0, #:lo12:.LANCHOR164] adrp x0, .LANCHOR165 str wzr, [x0, #:lo12:.LANCHOR165] adrp x0, .LANCHOR166 str wzr, [x0, #:lo12:.LANCHOR166] adrp x0, .LANCHOR167 str wzr, [x0, #:lo12:.LANCHOR167] adrp x0, .LANCHOR168 str wzr, [x0, #:lo12:.LANCHOR168] adrp x0, .LANCHOR169 str wzr, [x0, #:lo12:.LANCHOR169] adrp x0, .LANCHOR170 str wzr, [x0, #:lo12:.LANCHOR170] adrp x0, .LANCHOR171 str wzr, [x0, #:lo12:.LANCHOR171] adrp x0, .LANCHOR172 str wzr, [x0, #:lo12:.LANCHOR172] adrp x0, .LANCHOR173 str wzr, [x0, #:lo12:.LANCHOR173] adrp x0, .LANCHOR81 str wzr, [x0, #:lo12:.LANCHOR81] adrp x0, .LANCHOR174 str wzr, [x0, #:lo12:.LANCHOR174] adrp x0, .LANCHOR175 str wzr, [x0, #:lo12:.LANCHOR175] adrp x0, .LANCHOR176 str wzr, [x0, #:lo12:.LANCHOR176] adrp x0, .LANCHOR177 str wzr, [x0, #:lo12:.LANCHOR177] adrp x0, .LANCHOR178 str w1, [x0, #:lo12:.LANCHOR178] adrp x0, .LANCHOR179 adrp x1, .LANCHOR115 str wzr, [x0, #:lo12:.LANCHOR179] adrp x0, .LANCHOR180 str wzr, [x0, #:lo12:.LANCHOR180] adrp x0, .LANCHOR75 str wzr, [x0, #:lo12:.LANCHOR75] mov w0, -1 strh w0, [x1, #:lo12:.LANCHOR115] adrp x1, .LANCHOR116 strh w0, [x1, #:lo12:.LANCHOR116] adrp x1, .LANCHOR117 strh w0, [x1, #:lo12:.LANCHOR117] adrp x1, .LANCHOR118 strh w0, [x1, #:lo12:.LANCHOR118] adrp x0, .LANCHOR181 mov w1, 32 strh w1, [x0, #:lo12:.LANCHOR181] adrp x0, .LANCHOR182 mov w1, 128 strh w1, [x0, #:lo12:.LANCHOR182] adrp x0, .LANCHOR183 mov w1, 128 strh wzr, [x0, #:lo12:.LANCHOR183] adrp x0, .LANCHOR119 strh wzr, [x0, #:lo12:.LANCHOR119] adrp x0, .LANCHOR184 strh wzr, [x0, #:lo12:.LANCHOR184] adrp x0, .LANCHOR121 strh wzr, [x0, #:lo12:.LANCHOR121] adrp x0, .LANCHOR55 ldrh w0, [x0, #:lo12:.LANCHOR55] sdiv w1, w1, w0 ldrh w0, [x21, #:lo12:.LANCHOR38] lsl w0, w0, 2 str w1, [x19, #:lo12:.LANCHOR185] cmp w1, w0 bls .L1157 str w0, [x19, #:lo12:.LANCHOR185] .L1157: adrp x20, .LANCHOR54 adrp x0, .LANCHOR72 mov w22, 56 adrp x24, .LANCHOR58 str wzr, [x0, #:lo12:.LANCHOR72] ldrh w0, [x20, #:lo12:.LANCHOR54] lsl w0, w0, 1 bl ftl_malloc adrp x1, .LANCHOR112 str x0, [x1, #:lo12:.LANCHOR112] mov w0, 12 ldrh w1, [x20, #:lo12:.LANCHOR54] mul w0, w1, w0 bl ftl_malloc ldrh w20, [x21, #:lo12:.LANCHOR38] adrp x1, .LANCHOR114 str x0, [x1, #:lo12:.LANCHOR114] mul w20, w20, w22 lsl w23, w20, 2 mov w0, w23 bl ftl_malloc adrp x1, .LANCHOR186 str x0, [x1, #:lo12:.LANCHOR186] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR187 str x0, [x1, #:lo12:.LANCHOR187] mov w0, w23 bl ftl_malloc adrp x23, .LANCHOR57 adrp x1, .LANCHOR188 str x0, [x1, #:lo12:.LANCHOR188] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR79 str x0, [x1, #:lo12:.LANCHOR79] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR109 str x0, [x1, #:lo12:.LANCHOR109] ldr w0, [x19, #:lo12:.LANCHOR185] mul w0, w0, w22 adrp x22, .LANCHOR110 bl ftl_malloc ldrh w20, [x23, #:lo12:.LANCHOR57] adrp x1, .LANCHOR73 str x0, [x1, #:lo12:.LANCHOR73] ldrh w0, [x21, #:lo12:.LANCHOR38] lsl w0, w0, 1 add w0, w0, 1 str w0, [x22, #:lo12:.LANCHOR110] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR189 str x0, [x1, #:lo12:.LANCHOR189] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR190 str x0, [x1, #:lo12:.LANCHOR190] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR191 str x0, [x1, #:lo12:.LANCHOR191] ldr w0, [x22, #:lo12:.LANCHOR110] mul w0, w20, w0 bl ftl_malloc adrp x1, .LANCHOR107 str x0, [x1, #:lo12:.LANCHOR107] ldr w0, [x19, #:lo12:.LANCHOR185] mul w0, w20, w0 bl ftl_malloc adrp x1, .LANCHOR192 str x0, [x1, #:lo12:.LANCHOR192] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR193 str x0, [x1, #:lo12:.LANCHOR193] mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR194 str x0, [x1, #:lo12:.LANCHOR194] mov w0, 24 ldr w1, [x22, #:lo12:.LANCHOR110] mul w0, w1, w0 bl ftl_malloc ldrh w20, [x24, #:lo12:.LANCHOR58] adrp x1, .LANCHOR106 str x0, [x1, #:lo12:.LANCHOR106] ldrh w0, [x21, #:lo12:.LANCHOR38] adrp x21, .LANCHOR64 mul w20, w20, w0 mov w0, w20 bl ftl_malloc adrp x1, .LANCHOR195 str x0, [x1, #:lo12:.LANCHOR195] lsl w0, w20, 2 bl ftl_malloc adrp x20, .LANCHOR41 adrp x1, .LANCHOR196 str x0, [x1, #:lo12:.LANCHOR196] ldrh w1, [x24, #:lo12:.LANCHOR58] ldr w0, [x22, #:lo12:.LANCHOR110] mul w0, w1, w0 bl ftl_malloc adrp x1, .LANCHOR108 str x0, [x1, #:lo12:.LANCHOR108] ldrh w1, [x24, #:lo12:.LANCHOR58] ldr w0, [x19, #:lo12:.LANCHOR185] adrp x19, .LANCHOR198 mul w0, w1, w0 bl ftl_malloc adrp x1, .LANCHOR197 str x0, [x1, #:lo12:.LANCHOR197] ldrh w0, [x20, #:lo12:.LANCHOR41] ubfiz w0, w0, 1, 15 strh w0, [x19, #:lo12:.LANCHOR198] and w0, w0, 65534 bl ftl_malloc adrp x1, .LANCHOR140 str x0, [x1, #:lo12:.LANCHOR140] ldrh w0, [x19, #:lo12:.LANCHOR198] add x0, x0, 547 lsr x0, x0, 9 strh w0, [x19, #:lo12:.LANCHOR198] lsl w0, w0, 9 bl ftl_malloc adrp x1, .LANCHOR199 str x0, [x1, #:lo12:.LANCHOR199] adrp x1, .LANCHOR80 add x0, x0, 32 str x0, [x1, #:lo12:.LANCHOR80] ldrh w0, [x20, #:lo12:.LANCHOR41] lsl w0, w0, 1 bl ftl_malloc ldr w19, [x21, #:lo12:.LANCHOR64] adrp x1, .LANCHOR85 str x0, [x1, #:lo12:.LANCHOR85] lsl w19, w19, 1 mov w0, w19 bl ftl_malloc adrp x1, .LANCHOR132 str x0, [x1, #:lo12:.LANCHOR132] mov w0, w19 bl ftl_malloc adrp x19, .LANCHOR61 adrp x1, .LANCHOR128 str x0, [x1, #:lo12:.LANCHOR128] ldrh w0, [x20, #:lo12:.LANCHOR41] lsr w0, w0, 3 add w0, w0, 4 bl ftl_malloc adrp x1, .LANCHOR1 str x0, [x1, #:lo12:.LANCHOR1] ldrh w0, [x19, #:lo12:.LANCHOR61] lsl w0, w0, 1 bl ftl_malloc adrp x1, .LANCHOR71 str x0, [x1, #:lo12:.LANCHOR71] ldrh w0, [x19, #:lo12:.LANCHOR61] lsl w0, w0, 1 bl ftl_malloc adrp x1, .LANCHOR200 str x0, [x1, #:lo12:.LANCHOR200] ldrh w0, [x19, #:lo12:.LANCHOR61] adrp x19, .LANCHOR62 lsl w0, w0, 2 bl ftl_malloc adrp x1, .LANCHOR201 str x0, [x1, #:lo12:.LANCHOR201] ldrh w0, [x19, #:lo12:.LANCHOR62] lsl w0, w0, 2 bl ftl_malloc ldrh w2, [x19, #:lo12:.LANCHOR62] adrp x1, .LANCHOR202 str x0, [x1, #:lo12:.LANCHOR202] mov w1, 0 lsl w2, w2, 2 bl ftl_memset adrp x0, .LANCHOR66 ldrh w19, [x0, #:lo12:.LANCHOR66] lsl w19, w19, 2 mov w0, w19 bl ftl_malloc adrp x1, .LANCHOR134 str x0, [x1, #:lo12:.LANCHOR134] mov w0, w19 bl ftl_malloc adrp x19, .LANCHOR67 adrp x1, .LANCHOR203 str x0, [x1, #:lo12:.LANCHOR203] ldr w0, [x21, #:lo12:.LANCHOR64] lsl w0, w0, 2 bl ftl_malloc adrp x1, .LANCHOR133 str x0, [x1, #:lo12:.LANCHOR133] ldrh w0, [x19, #:lo12:.LANCHOR67] lsl w0, w0, 4 bl ftl_malloc adrp x1, .LANCHOR98 str x0, [x1, #:lo12:.LANCHOR98] ldrh w1, [x19, #:lo12:.LANCHOR67] adrp x19, .LANCHOR126 ldrh w0, [x23, #:lo12:.LANCHOR57] mul w0, w1, w0 bl ftl_malloc adrp x1, .LANCHOR129 str x0, [x1, #:lo12:.LANCHOR129] mov w0, 6 ldrh w1, [x20, #:lo12:.LANCHOR41] adrp x20, .LANCHOR45 mul w0, w1, w0 bl ftl_malloc adrp x1, .LANCHOR83 str x0, [x1, #:lo12:.LANCHOR83] adrp x0, .LANCHOR51 ldrh w1, [x20, #:lo12:.LANCHOR45] ldrh w0, [x0, #:lo12:.LANCHOR51] add w0, w0, 31 asr w0, w0, 5 strh w0, [x19, #:lo12:.LANCHOR126] mul w0, w1, w0 lsl w0, w0, 2 bl ftl_malloc adrp x1, .LANCHOR76 ldrh w5, [x19, #:lo12:.LANCHOR126] add x2, x1, :lo12:.LANCHOR76 ldrh w7, [x20, #:lo12:.LANCHOR45] add x6, x2, 40 mov w3, w5 str x0, [x2, 32] mov x0, 1 .L1158: cmp w0, w7 bcc .L1159 mov w2, 8 sub w2, w2, w0 add x2, x2, 1 add x1, x1, :lo12:.LANCHOR76 mov x3, 0 .L1160: add x3, x3, 1 cmp x2, x3 bne .L1161 mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .L1159: ldr x4, [x2, 32] add w0, w0, 1 add x4, x4, x3, uxtw 2 add w3, w3, w5 str x4, [x6], 8 b .L1158 .L1161: add x4, x0, x3 add x4, x1, x4, lsl 3 str xzr, [x4, 24] b .L1160 .size FtlMemInit, .-FtlMemInit .section .text.ftl_free,"ax",@progbits .align 2 .global ftl_free .type ftl_free, %function ftl_free: b free .size ftl_free, .-ftl_free .section .text.FlashCs123Init,"ax",@progbits .align 2 .global FlashCs123Init .type FlashCs123Init, %function FlashCs123Init: ret .size FlashCs123Init, .-FlashCs123Init .section .text.rk_nand_de_init,"ax",@progbits .align 2 .global rk_nand_de_init .type rk_nand_de_init, %function rk_nand_de_init: b FlashDeInit .size rk_nand_de_init, .-rk_nand_de_init .section .text.rk_ftl_get_capacity,"ax",@progbits .align 2 .global rk_ftl_get_capacity .type rk_ftl_get_capacity, %function rk_ftl_get_capacity: adrp x0, .LANCHOR68 ldr w0, [x0, #:lo12:.LANCHOR68] ret .size rk_ftl_get_capacity, .-rk_ftl_get_capacity .section .text.rknand_print_hex,"ax",@progbits .align 2 .global rknand_print_hex .type rknand_print_hex, %function rknand_print_hex: stp x29, x30, [sp, -96]! add x29, sp, 0 stp x21, x22, [sp, 32] adrp x21, .LC20 stp x23, x24, [sp, 48] mov x22, x1 stp x25, x26, [sp, 64] adrp x23, .LC19 mov x26, x0 mov w24, w2 uxtw x25, w3 add x23, x23, :lo12:.LC19 add x21, x21, :lo12:.LC20 stp x19, x20, [sp, 16] str x27, [sp, 80] mov x19, 0 mov w20, 0 adrp x27, .LC21 .L1168: cmp x25, x19 bne .L1174 ldp x19, x20, [sp, 16] adrp x1, .LC21 ldp x21, x22, [sp, 32] add x1, x1, :lo12:.LC21 ldp x23, x24, [sp, 48] adrp x0, .LC7 ldp x25, x26, [sp, 64] add x0, x0, :lo12:.LC7 ldr x27, [sp, 80] ldp x29, x30, [sp], 96 b printf .L1174: cbnz w20, .L1169 mov w2, w19 mov x1, x26 mov x0, x23 bl printf .L1169: cmp w24, 4 bne .L1170 ldr w1, [x22, x19, lsl 2] .L1176: mov x0, x21 add w20, w20, 1 bl printf cmp w20, 15 bls .L1173 mov w20, 0 add x1, x27, :lo12:.LC21 adrp x0, .LC7 add x0, x0, :lo12:.LC7 bl printf .L1173: add x19, x19, 1 b .L1168 .L1170: cmp w24, 2 bne .L1172 ldrsh w1, [x22, x19, lsl 1] b .L1176 .L1172: ldrb w1, [x22, x19] b .L1176 .size rknand_print_hex, .-rknand_print_hex .section .text.HynixGetReadRetryDefault,"ax",@progbits .align 2 .global HynixGetReadRetryDefault .type HynixGetReadRetryDefault, %function HynixGetReadRetryDefault: stp x29, x30, [sp, -144]! mov w1, -84 mov w4, -83 mov w3, -82 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR20 stp x25, x26, [sp, 64] mov w26, w0 add x0, x20, :lo12:.LANCHOR20 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] cmp w26, 2 stp x27, x28, [sp, 80] strb w1, [x0, 4] mov w1, -81 strb w26, [x20, #:lo12:.LANCHOR20] strb w4, [x0, 5] strb w3, [x0, 6] strb w1, [x0, 7] bne .L1178 mov w1, -89 strb w1, [x0, 4] adrp x0, .LANCHOR204+17 mov w1, -9 strb w1, [x0, #:lo12:.LANCHOR204+17] .L1243: mov w27, 7 b .L1287 .L1178: cmp w26, 3 bne .L1180 mov w1, -80 strb w1, [x0, 4] mov w1, -79 strb w1, [x0, 5] mov w1, -78 strb w1, [x0, 6] mov w1, -77 strb w1, [x0, 7] mov w1, -76 strb w1, [x0, 8] mov w1, -75 strb w1, [x0, 9] mov w1, -74 strb w1, [x0, 10] mov w1, -73 .L1286: mov w27, 8 mov w28, w27 strb w1, [x0, 11] .L1179: sub w0, w26, #1 cmp w0, 1 bhi .L1185 adrp x26, .LANCHOR26 adrp x0, .LANCHOR27 adrp x25, .LANCHOR0 add x26, x26, :lo12:.LANCHOR26 add x4, x0, :lo12:.LANCHOR27 add x25, x25, :lo12:.LANCHOR0 mov w24, 0 .L1186: ldrb w0, [x26] cmp w0, w24 bhi .L1192 .L1193: add x20, x20, :lo12:.LANCHOR20 ldp x21, x22, [sp, 32] strb w28, [x20, 1] strb w27, [x20, 2] ldp x23, x24, [sp, 48] ldp x19, x20, [sp, 16] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 ret .L1180: cmp w26, 4 bne .L1181 mov w5, -52 strb w5, [x0, 4] mov w5, -65 strb w5, [x0, 5] mov w5, -86 strb w5, [x0, 6] mov w5, -85 strb w4, [x0, 9] strb w5, [x0, 7] mov w5, -51 strb w3, [x0, 10] strb w5, [x0, 8] b .L1286 .L1181: cmp w26, 5 bne .L1182 mov w1, 56 strb w1, [x0, 4] mov w1, 57 strb w1, [x0, 5] mov w1, 58 mov w27, 8 strb w1, [x0, 6] mov w1, 59 strb w1, [x0, 7] .L1287: mov w28, 4 b .L1179 .L1182: cmp w26, 6 bne .L1183 mov w1, 14 strb w1, [x0, 4] mov w1, 15 strb w1, [x0, 5] mov w1, 16 mov w27, 12 strb w1, [x0, 6] mov w1, 17 strb w1, [x0, 7] b .L1287 .L1183: cmp w26, 7 bne .L1184 mov w1, -80 strb w1, [x0, 4] mov w1, -79 strb w1, [x0, 5] mov w1, -78 strb w1, [x0, 6] mov w1, -77 strb w1, [x0, 7] mov w1, -76 strb w1, [x0, 8] mov w1, -75 strb w1, [x0, 9] mov w1, -74 strb w1, [x0, 10] mov w1, -73 strb w1, [x0, 11] mov w1, -44 mov w27, 12 strb w1, [x0, 12] mov w28, 10 mov w1, -43 strb w1, [x0, 13] b .L1179 .L1184: cmp w26, 8 bne .L1243 mov w1, 6 strb w1, [x0, 4] mov w1, 7 strb w1, [x0, 5] mov w1, 9 strb w26, [x0, 6] strb w1, [x0, 7] mov w27, 50 mov w1, 10 mov w28, 5 strb w1, [x0, 8] b .L1179 .L1192: ldrb w1, [x4, w24, sxtw] add x0, x20, :lo12:.LANCHOR20 mov x21, x0 mov x22, 0 ubfiz x19, x1, 6, 8 sbfiz x1, x1, 4, 32 add x2, x25, x1 add x19, x19, 20 add x19, x0, x19 ldr x1, [x25, x1] ldrb w23, [x2, 8] add x23, x1, x23, lsl 8 mov w1, 55 .L1187: add x0, x21, x22 str w1, [x23, 2056] str x4, [x29, 128] str w1, [x29, 140] ldrb w0, [x0, 4] str w0, [x23, 2052] mov x0, 80 bl udelay ldr w0, [x23, 2048] strb w0, [x19, x22] add x22, x22, 1 cmp w28, w22, uxtb ldr w1, [x29, 140] ldr x4, [x29, 128] bhi .L1187 adrp x2, .LANCHOR204 add x2, x2, :lo12:.LANCHOR204 mov x0, 0 .L1190: add x7, x19, x0 add x6, x2, x0 mov x1, 1 .L1189: lsl x3, x1, 2 lsl x8, x1, 3 ldrb w10, [x19, x0] add x1, x1, 1 cmp x1, 7 ldrb w3, [x6, x3] add w3, w3, w10 strb w3, [x7, x8] bne .L1189 add x0, x0, 1 cmp x0, 4 bne .L1190 add w24, w24, 1 strb wzr, [x19, 16] strb wzr, [x19, 24] and w24, w24, 255 strb wzr, [x19, 32] strb wzr, [x19, 40] strb wzr, [x19, 48] strb wzr, [x19, 41] strb wzr, [x19, 49] b .L1186 .L1185: sub w0, w26, #3 cmp w0, 5 bhi .L1193 mul w24, w27, w28 adrp x25, .LANCHOR26 sub w22, w28, #1 mov w21, 0 and x22, x22, 255 lsl w0, w24, 4 asr w23, w24, 1 str w0, [x29, 128] lsl w0, w23, 1 sbfiz x24, x23, 1, 32 str w0, [x29, 140] add x0, x25, :lo12:.LANCHOR26 sub w25, w26, #5 str x0, [x29, 120] add x0, x22, 1 str x0, [x29, 112] .L1194: ldr x0, [x29, 120] ldrb w0, [x0] cmp w0, w21 bls .L1193 adrp x0, .LANCHOR27 add x0, x0, :lo12:.LANCHOR27 ldrb w22, [x0, w21, sxtw] adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 sbfiz x1, x22, 4, 32 add x3, x0, x1 ldr x0, [x0, x1] ldrb w19, [x3, 8] add x19, x0, x19, lsl 8 mov w0, 255 str w0, [x19, 2056] mov w0, w22 bl NandcWaitFlashReady cmp w26, 7 bne .L1195 mov x1, 28 mov w0, 160 add x3, x20, :lo12:.LANCHOR20 umaddl x0, w0, w22, x1 .L1288: add x3, x3, x0 mov w0, 54 str w0, [x19, 2056] cmp w26, 4 bne .L1198 mov w0, 255 str w0, [x19, 2052] mov w0, 64 str w0, [x19, 2048] mov w0, 204 .L1289: str w0, [x19, 2052] mov w0, 77 b .L1290 .L1195: cmp w26, 8 beq .L1197 ubfiz x0, x22, 6, 8 add x3, x20, :lo12:.LANCHOR20 add x0, x0, 20 b .L1288 .L1198: cmp w25, 1 bhi .L1200 add x0, x20, :lo12:.LANCHOR20 ldrb w0, [x0, 4] str w0, [x19, 2052] mov w0, 82 .L1290: str w0, [x19, 2048] .L1199: mov w0, 22 str w0, [x19, 2056] mov w0, 23 str w0, [x19, 2056] mov w0, 4 str w0, [x19, 2056] mov w0, 25 str w0, [x19, 2056] str wzr, [x19, 2056] cmp w26, 6 str wzr, [x19, 2052] str wzr, [x19, 2052] bne .L1201 mov w0, 31 str w0, [x19, 2052] .L1202: mov w0, 2 str w0, [x19, 2052] str wzr, [x19, 2052] .L1242: mov w0, 48 str w0, [x19, 2056] str x3, [x29, 104] mov w0, w22 bl NandcWaitFlashReady cmp w25, 1 ldr x3, [x29, 104] ccmp w26, 8, 4, hi beq .L1244 cmp w26, 7 mov w0, 2 mov w1, 32 csel w1, w1, w0, eq .L1203: adrp x8, .LANCHOR154 mov x7, 0 ldr x0, [x8, #:lo12:.LANCHOR154] .L1204: ldr w10, [x19, 2048] strb w10, [x0, x7] add x7, x7, 1 cmp w1, w7, uxtb bhi .L1204 cmp w26, 8 bne .L1205 mov w1, 0 .L1207: ldrb w7, [x0] cmp w7, 50 beq .L1206 ldrb w7, [x0, 1] cmp w7, 5 beq .L1206 add w1, w1, 1 add x0, x0, 4 and w1, w1, 255 cmp w1, 8 bne .L1207 .L1208: adrp x0, .LC22 mov w1, 0 add x0, x0, :lo12:.LC22 bl printf .L1210: b .L1210 .L1200: cmp w26, 7 bne .L1199 mov w0, 174 str w0, [x19, 2052] str wzr, [x19, 2048] mov w0, 176 b .L1289 .L1201: str wzr, [x19, 2052] b .L1202 .L1244: mov w1, 16 b .L1203 .L1206: cmp w1, 6 bhi .L1208 .L1209: ldr x7, [x8, #:lo12:.LANCHOR154] mov x0, 0 .L1219: ldr w1, [x29, 128] cmp w1, w0 bgt .L1220 ldr x1, [x8, #:lo12:.LANCHOR154] mov w10, 8 add x8, x1, x24 .L1222: mov x0, 0 .L1221: ldrh w11, [x8, x0, lsl 1] mvn w11, w11 strh w11, [x8, x0, lsl 1] add x0, x0, 1 cmp w23, w0 bgt .L1221 ldr w0, [x29, 140] subs w10, w10, #1 add x8, x8, x0, uxtw 1 bne .L1222 mov x10, x1 mov w11, 0 mov w16, 1 .L1228: mov w0, 0 mov w8, 0 .L1227: mov x14, x10 lsl w15, w16, w8 mov w13, 16 mov w12, 0 .L1225: ldrh w17, [x14] add x14, x14, x24 bics wzr, w15, w17 cinc w12, w12, eq subs w13, w13, #1 bne .L1225 cmp w12, 8 bls .L1226 orr w0, w0, w15 and w0, w0, 65535 .L1226: add w8, w8, 1 cmp w8, 16 bne .L1227 strh w0, [x10], 2 add w11, w11, 1 cmp w23, w11 bgt .L1228 mov x0, 0 mov w8, 0 .L1231: ldr w10, [x1, x0] add x0, x0, 4 cmp w10, 0 cinc w8, w8, eq cmp x0, 32 bne .L1231 cmp w8, 7 ble .L1232 mov w3, 1024 mov w2, 1 adrp x0, .LC23 add x0, x0, :lo12:.LC23 bl rknand_print_hex adrp x0, .LC22 mov w1, 0 add x0, x0, :lo12:.LC22 bl printf .L1233: b .L1233 .L1205: cmp w26, 7 bne .L1211 mov w1, 0 .L1213: ldrb w7, [x0] cmp w7, 12 beq .L1212 ldrb w7, [x0, 1] cmp w7, 10 beq .L1212 add w1, w1, 1 add x0, x0, 4 and w1, w1, 255 cmp w1, 8 bne .L1213 .L1214: adrp x0, .LC22 mov w1, 0 add x0, x0, :lo12:.LC22 bl printf .L1215: b .L1215 .L1212: cmp w1, 6 bls .L1209 b .L1214 .L1211: cmp w26, 6 bne .L1209 mov x1, 0 .L1216: ldrb w7, [x0, x1] cmp w7, 12 beq .L1209 add x7, x0, x1 ldrb w7, [x7, 8] cmp w7, 4 beq .L1209 add x1, x1, 1 cmp x1, 8 bne .L1216 adrp x0, .LC22 mov w1, 0 add x0, x0, :lo12:.LC22 bl printf .L1218: b .L1218 .L1220: ldr w1, [x19, 2048] strb w1, [x7, x0] add x0, x0, 1 b .L1219 .L1232: cmp w26, 6 beq .L1246 cmp w26, 7 beq .L1247 cmp w26, 8 mov x1, 8 mov x0, 5 csel x0, x0, x1, eq .L1234: mov w8, 0 .L1235: mov x1, 0 .L1236: ldrb w10, [x7, x1] strb w10, [x3, x1] add x1, x1, 1 cmp w28, w1, uxtb bhi .L1236 ldr x1, [x29, 112] add w8, w8, 1 add x3, x3, x0 cmp w27, w8 add x7, x7, x1 bgt .L1235 mov w0, 255 str w0, [x19, 2056] mov w0, w22 bl NandcWaitFlashReady cmp w25, 1 bhi .L1238 mov w0, 54 str w0, [x19, 2056] adrp x0, .LANCHOR20+4 mov w1, -1 ldrb w0, [x0, #:lo12:.LANCHOR20+4] str w0, [x19, 2052] str wzr, [x19, 2048] mov w0, 22 str w0, [x19, 2056] mov w0, w21 bl FlashReadCmd .L1239: add w21, w21, 1 mov w0, w22 and w21, w21, 255 bl NandcWaitFlashReady b .L1194 .L1246: mov x0, 4 b .L1234 .L1247: mov x0, 10 b .L1234 .L1238: cmp w26, 8 bne .L1240 mov w0, 190 .L1291: str w0, [x19, 2056] b .L1239 .L1240: mov w0, 56 b .L1291 .L1197: mov w0, 120 str w0, [x19, 2056] str wzr, [x19, 2052] mov w0, 23 str wzr, [x19, 2052] mov w1, 25 str wzr, [x19, 2052] add x3, x20, :lo12:.LANCHOR20 str w0, [x19, 2056] mov w0, 4 str w0, [x19, 2056] add x3, x3, 28 str w1, [x19, 2056] mov w1, 218 str w1, [x19, 2056] mov w1, 21 str wzr, [x19, 2056] str wzr, [x19, 2052] str wzr, [x19, 2052] str w1, [x19, 2052] str w0, [x19, 2052] str wzr, [x19, 2052] b .L1242 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault .section .text.FlashGetReadRetryDefault,"ax",@progbits .align 2 .global FlashGetReadRetryDefault .type FlashGetReadRetryDefault, %function FlashGetReadRetryDefault: mov w1, w0 cbz w0, .L1292 sub w2, w0, #1 cmp w2, 7 bhi .L1294 b HynixGetReadRetryDefault .L1294: cmp w0, 49 bne .L1295 adrp x2, .LANCHOR20 add x0, x2, :lo12:.LANCHOR20 strb w1, [x2, #:lo12:.LANCHOR20] mov w1, 4 strb w1, [x0, 1] mov w1, 15 strb w1, [x0, 2] adrp x1, .LANCHOR14 add x1, x1, :lo12:.LANCHOR14 mov w2, 64 .L1304: add x0, x0, 4 b ftl_memcpy .L1295: sub w0, w0, #65 cmp w1, 33 ccmp w0, 1, 0, ne bhi .L1296 adrp x2, .LANCHOR20 add x0, x2, :lo12:.LANCHOR20 strb w1, [x2, #:lo12:.LANCHOR20] mov w1, 4 .L1305: strb w1, [x0, 1] mov w1, 7 mov w2, 45 strb w1, [x0, 2] adrp x1, .LANCHOR10 add x1, x1, :lo12:.LANCHOR10 b .L1304 .L1296: cmp w1, 34 mov w0, 67 ccmp w1, w0, 4, ne bne .L1297 adrp x2, .LANCHOR20 add x0, x2, :lo12:.LANCHOR20 strb w1, [x2, #:lo12:.LANCHOR20] mov w1, 5 b .L1305 .L1297: cmp w1, 35 mov w0, 68 ccmp w1, w0, 4, ne bne .L1292 adrp x2, .LANCHOR20 add x0, x2, :lo12:.LANCHOR20 strb w1, [x2, #:lo12:.LANCHOR20] mov w1, 5 strb w1, [x0, 1] mov w1, 17 mov w2, 95 strb w1, [x0, 2] adrp x1, .LANCHOR9 add x1, x1, :lo12:.LANCHOR9 b .L1304 .L1292: ret .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault .section .text.FlashInit,"ax",@progbits .align 2 .global FlashInit .type FlashInit, %function FlashInit: stp x29, x30, [sp, -128]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 stp x21, x22, [sp, 32] mov w0, 32768 stp x23, x24, [sp, 48] adrp x20, .LANCHOR30 stp x25, x26, [sp, 64] adrp x25, .LANCHOR3 stp x27, x28, [sp, 80] bl ftl_malloc adrp x1, .LANCHOR154 adrp x26, .LANCHOR208 adrp x21, .LANCHOR2 adrp x22, .LANCHOR158 str x0, [x1, #:lo12:.LANCHOR154] mov w0, 32768 bl ftl_malloc adrp x24, .LANCHOR0 adrp x1, .LANCHOR152 add x24, x24, :lo12:.LANCHOR0 mov w23, 0 str x0, [x1, #:lo12:.LANCHOR152] mov w0, 4096 bl ftl_malloc adrp x1, .LANCHOR205 str x0, [x1, #:lo12:.LANCHOR205] mov w0, 32768 bl ftl_malloc adrp x1, .LANCHOR206 str x0, [x1, #:lo12:.LANCHOR206] mov w0, 4096 bl ftl_malloc strb wzr, [x26, #:lo12:.LANCHOR208] adrp x1, .LANCHOR207 strb wzr, [x20, #:lo12:.LANCHOR30] strb wzr, [x21, #:lo12:.LANCHOR2] str x0, [x1, #:lo12:.LANCHOR207] adrp x1, .LANCHOR157 mov w0, 50 strb w0, [x25, #:lo12:.LANCHOR3] strb w0, [x1, #:lo12:.LANCHOR157] adrp x0, .LANCHOR156 mov w1, 128 str wzr, [x0, #:lo12:.LANCHOR156] adrp x0, .LANCHOR4 str w1, [x0, #:lo12:.LANCHOR4] adrp x0, .LANCHOR147 str wzr, [x0, #:lo12:.LANCHOR147] mov w0, 60 strb w0, [x22, #:lo12:.LANCHOR158] mov x0, x19 adrp x19, .LANCHOR22 bl NandcInit add x28, x19, :lo12:.LANCHOR22 str x26, [x29, 120] adrp x26, .LC24 add x0, x26, :lo12:.LC24 str x0, [x29, 112] .L1312: ldrb w2, [x24, 8] and w27, w23, 255 str w2, [x29, 108] mov w0, w27 ldr x26, [x24] bl FlashReset mov w0, w27 bl NandcFlashCs ldr w2, [x29, 108] mov w0, 144 ubfiz x2, x2, 8, 8 add x26, x26, x2 str w0, [x26, 2056] mov x0, 200 str wzr, [x26, 2052] bl udelay ldr w0, [x26, 2048] and w0, w0, 255 strb w0, [x28] cmp w0, 44 ldr w2, [x26, 2048] strb w2, [x28, 1] ldr w2, [x26, 2048] strb w2, [x28, 2] ldr w2, [x26, 2048] strb w2, [x28, 3] ldr w2, [x26, 2048] strb w2, [x28, 4] ldr w2, [x26, 2048] strb w2, [x28, 5] bne .L1307 mov w0, 239 str w0, [x26, 2056] mov w0, 1 str w0, [x26, 2052] mov x0, 200 bl udelay mov w0, 4 str w0, [x26, 2048] str wzr, [x26, 2048] str wzr, [x26, 2048] str wzr, [x26, 2048] .L1307: mov w0, w27 bl NandcFlashDeCs ldrb w2, [x28] sub w0, w2, #1 and w0, w0, 255 cmp w0, 253 bhi .L1308 ldrb w7, [x28, 5] add w1, w23, 1 ldrb w6, [x28, 4] ldrb w5, [x28, 3] ldrb w4, [x28, 2] ldrb w3, [x28, 1] ldr x0, [x29, 112] bl printf .L1308: cbnz w23, .L1309 ldrb w0, [x19, #:lo12:.LANCHOR22] add x1, x19, :lo12:.LANCHOR22 sub w0, w0, #1 and w0, w0, 255 cmp w0, 253 bhi .L1357 ldrb w0, [x1, 1] cmp w0, 255 beq .L1357 .L1309: ldrb w0, [x28] cmp w0, 181 bne .L1311 mov w0, 44 strb w0, [x28] .L1311: add w23, w23, 1 add x24, x24, 16 add x28, x28, 8 cmp w23, 4 bne .L1312 ldrb w0, [x19, #:lo12:.LANCHOR22] cmp w0, 173 beq .L1313 adrp x0, .LANCHOR160 ldr w0, [x0, #:lo12:.LANCHOR160] bl NandcSetDdrMode .L1313: adrp x24, .LANCHOR7 adrp x27, .LANCHOR6 adrp x26, .LANCHOR122 mov w1, 0 adrp x23, .LANCHOR20 mov w2, 852 add x0, x23, :lo12:.LANCHOR20 bl ftl_memset adrp x3, .LANCHOR31 ldr w4, [x26, #:lo12:.LANCHOR122] add x0, x3, :lo12:.LANCHOR31 strb wzr, [x27, #:lo12:.LANCHOR6] str x0, [x24, #:lo12:.LANCHOR7] mov w1, 12336 movk w1, 0x5638, lsl 16 cmp w4, w1 bne .L1314 ldrb w0, [x0, 19] cmp w0, 50 beq .L1314 adrp x0, .LANCHOR29 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR29] .L1314: add x0, x19, :lo12:.LANCHOR22 ldrb w2, [x0, 1] add w0, w2, 95 and w1, w0, 255 mov x0, 1 cmp w1, 57 bhi .L1315 movk x0, 0x205, lsl 48 lsr x0, x0, x1 mvn x0, x0 .L1315: cmp w2, 241 and w0, w0, 1 cset w1, eq eor w0, w0, 1 orr w0, w1, w0 cbnz w0, .L1316 cmp w2, 220 bne .L1317 add x0, x19, :lo12:.LANCHOR22 ldrb w0, [x0, 3] cmp w0, 149 bne .L1317 .L1316: adrp x28, .LANCHOR209 add x5, x28, :lo12:.LANCHOR209 mov w1, 16 strb w1, [x25, #:lo12:.LANCHOR3] strb w1, [x22, #:lo12:.LANCHOR158] mov w0, 1 ldrb w1, [x19, #:lo12:.LANCHOR22] add x6, x19, :lo12:.LANCHOR22 strb w0, [x21, #:lo12:.LANCHOR2] strb w1, [x5, 1] cmp w1, 152 strb w2, [x5, 2] bne .L1319 ldrsb w1, [x6, 4] tbnz w1, #31, .L1320 mov w0, 24 strb w0, [x22, #:lo12:.LANCHOR158] .L1319: cmp w4, 2049 mov w0, 12336 movk w0, 0x5638, lsl 16 ccmp w4, w0, 4, ne bne .L1322 mov w0, 16 strb w0, [x22, #:lo12:.LANCHOR158] .L1322: cmp w2, 218 bne .L1323 add x0, x28, :lo12:.LANCHOR209 mov w1, 2048 strh w1, [x0, 14] mov w1, -38 .L1394: strb w1, [x0, 2] .L1324: adrp x1, .LANCHOR146 add x1, x1, :lo12:.LANCHOR146 mov w2, 32 add x1, x1, 32 str x3, [x29, 120] adrp x0, .LANCHOR8 add x0, x0, :lo12:.LANCHOR8 bl ftl_memcpy ldr x3, [x29, 120] mov w2, 32 add x1, x28, :lo12:.LANCHOR209 add x0, x3, :lo12:.LANCHOR31 bl ftl_memcpy .L1317: ldrb w0, [x21, #:lo12:.LANCHOR2] adrp x22, .LANCHOR16 cbnz w0, .L1327 bl FlashLoadPhyInfoInRam cbnz w0, .L1329 ldr x0, [x24, #:lo12:.LANCHOR7] adrp x28, .LANCHOR25 ldrb w1, [x0, 17] and w0, w1, 7 strb w0, [x28, #:lo12:.LANCHOR25] tbnz x1, 0, .L1329 mov w1, 1 strb w1, [x20, #:lo12:.LANCHOR30] bl FlashSetInterfaceMode ldrb w0, [x28, #:lo12:.LANCHOR25] bl NandcSetMode .L1329: ldr x0, [x24, #:lo12:.LANCHOR7] ldrb w0, [x0, 26] strb w0, [x22, #:lo12:.LANCHOR16] bl FlashLoadPhyInfo cbz w0, .L1327 ldr x0, [x24, #:lo12:.LANCHOR7] ldrh w1, [x0, 14] adrp x0, .LC25 add x0, x0, :lo12:.LC25 bl printf bl FlashLoadPhyInfoInRam cmn w0, #1 beq .L1306 bl FlashDieInfoInit ldr x0, [x24, #:lo12:.LANCHOR7] ldrb w0, [x0, 19] bl FlashGetReadRetryDefault ldr x0, [x24, #:lo12:.LANCHOR7] adrp x1, .LANCHOR125 ldrh w1, [x1, #:lo12:.LANCHOR125] ldrb w2, [x0, 9] add w1, w1, 4095 cmp w2, w1, lsr 12 blt .L1332 ldrh w1, [x0, 14] add w1, w1, 255 cmp w2, w1, lsr 8 bge .L1333 .L1332: ldrh w1, [x0, 14] and w1, w1, -256 strh w1, [x0, 14] .L1333: adrp x0, .LANCHOR25 ldrb w0, [x0, #:lo12:.LANCHOR25] tst w0, 6 beq .L1334 bl FlashSavePhyInfo mov w0, 0 bl flash_enter_slc_mode adrp x0, .LANCHOR155 ldr w1, [x0, #:lo12:.LANCHOR155] mov w0, 0 bl FlashDdrParaScan mov w0, 0 bl flash_exit_slc_mode .L1334: bl FlashSavePhyInfo .L1327: ldr x2, [x24, #:lo12:.LANCHOR7] adrp x28, .LANCHOR148 str xzr, [x28, #:lo12:.LANCHOR148] ldrb w0, [x2, 26] strb w0, [x22, #:lo12:.LANCHOR16] ldrh w0, [x2, 16] ubfx x1, x0, 7, 1 strb w1, [x27, #:lo12:.LANCHOR6] adrp x1, .LANCHOR210 ubfx x3, x0, 3, 1 adrp x27, .LANCHOR25 strb w3, [x1, #:lo12:.LANCHOR210] adrp x1, .LANCHOR28 ubfx x3, x0, 4, 1 ubfx x0, x0, 8, 3 strb w3, [x1, #:lo12:.LANCHOR28] strb w0, [x27, #:lo12:.LANCHOR25] ldrh w1, [x2, 10] ldrb w0, [x2, 12] sdiv w1, w1, w0 ldrb w0, [x2, 18] bl BuildFlashLsbPageTable bl FlashDieInfoInit ldr x0, [x24, #:lo12:.LANCHOR7] ldrh w1, [x0, 16] tbz x1, 6, .L1336 add x3, x23, :lo12:.LANCHOR20 adrp x1, .LANCHOR11 ldrb w0, [x0, 19] adrp x2, .LANCHOR13 strb w0, [x1, #:lo12:.LANCHOR11] mov x4, x2 ldrb w1, [x3, 1] strb w1, [x2, #:lo12:.LANCHOR13] adrp x1, .LANCHOR149 ldrb w3, [x3, 2] strb w3, [x1, #:lo12:.LANCHOR149] sub w3, w0, #1 and w3, w3, 255 cmp w3, 7 bhi .L1337 adrp x1, HynixReadRetrial add x1, x1, :lo12:HynixReadRetrial str x1, [x28, #:lo12:.LANCHOR148] sub w1, w0, #5 and w1, w1, 255 cmp w1, 1 ccmp w0, 8, 4, hi bne .L1338 adrp x1, .LANCHOR36 mov w2, 1 str w2, [x1, #:lo12:.LANCHOR36] .L1338: add x23, x23, :lo12:.LANCHOR20 cmp w0, 7 beq .L1395 cmp w0, 8 bne .L1360 .L1395: add x23, x23, 28 .L1339: mov x1, 0 mov w2, 0 .L1341: ldrsb w3, [x23, x1] add x1, x1, 1 cmp w3, 0 cinc w2, w2, eq cmp x1, 32 bne .L1341 cmp w2, 27 bls .L1336 bl FlashGetReadRetryDefault bl FlashSavePhyInfo .L1336: ldr w1, [x26, #:lo12:.LANCHOR122] mov w0, 12336 movk w0, 0x5638, lsl 16 cmp w1, w0 bne .L1351 ldrb w0, [x22, #:lo12:.LANCHOR16] cbz w0, .L1351 ldr x0, [x24, #:lo12:.LANCHOR7] strb wzr, [x0, 18] .L1351: ldrb w0, [x19, #:lo12:.LANCHOR22] cmp w0, 44 bne .L1352 ldrb w0, [x20, #:lo12:.LANCHOR30] cbz w0, .L1352 strb wzr, [x20, #:lo12:.LANCHOR30] mov w0, 1 bl FlashSetInterfaceMode mov w0, 1 bl NandcSetMode .L1352: ldrb w0, [x27, #:lo12:.LANCHOR25] tst w0, 6 beq .L1353 ldrb w1, [x20, #:lo12:.LANCHOR30] cbnz w1, .L1354 tbnz x0, 0, .L1353 .L1354: mov w0, 0 bl flash_enter_slc_mode adrp x0, .LANCHOR155 ldr w1, [x0, #:lo12:.LANCHOR155] mov w0, 0 bl FlashDdrParaScan mov w0, 0 bl flash_exit_slc_mode .L1353: ldr x0, [x24, #:lo12:.LANCHOR7] ldrb w0, [x0, 20] bl FlashBchSel adrp x0, .LANCHOR144 add x0, x0, :lo12:.LANCHOR144 bl FlashReadIdbDataRaw ldr x2, [x24, #:lo12:.LANCHOR7] mov w0, 16 adrp x5, .LANCHOR15 strb w0, [x25, #:lo12:.LANCHOR3] add x0, x5, :lo12:.LANCHOR15 ldrb w6, [x19, #:lo12:.LANCHOR22] ldrb w3, [x2, 12] strh w3, [x0, 8] ldrb w1, [x2, 7] str w1, [x0, 4] add x1, x19, :lo12:.LANCHOR22 ldrb w4, [x1, 1] ldrb w1, [x1, 3] orr w1, w6, w1, lsl 24 lsl w6, w4, 16 orr w4, w6, w4, lsl 8 orr w1, w1, w4 str w1, [x5, #:lo12:.LANCHOR15] adrp x1, .LANCHOR26 ldrh w4, [x2, 14] ldrb w1, [x1, #:lo12:.LANCHOR26] strh w1, [x0, 10] ldrb w1, [x2, 13] strh w1, [x0, 12] ldrh w1, [x2, 10] strh w1, [x0, 16] strh w4, [x0, 14] sdiv w3, w1, w3 strh w3, [x0, 18] ldrb w5, [x2, 9] strh w5, [x0, 20] mov w3, w5 mul w1, w1, w5 mov w5, 512 strh w5, [x0, 24] mov w5, 16 and w1, w1, 65535 strh w5, [x0, 26] strh w1, [x0, 22] ldrb w5, [x21, #:lo12:.LANCHOR2] cmp w5, 1 bne .L1355 ubfiz w1, w1, 1, 15 lsr w4, w4, 1 ubfiz w3, w3, 1, 15 strh w1, [x0, 22] strh w4, [x0, 14] mov w1, 8 strh w3, [x0, 20] strh w1, [x0, 26] .L1355: ldrb w0, [x2, 20] bl FlashBchSel mov w0, 0 .L1306: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L1323: cmp w2, 220 bne .L1325 add x0, x28, :lo12:.LANCHOR209 mov w1, 4096 strh w1, [x0, 14] mov w1, -36 b .L1394 .L1325: cmp w2, 211 bne .L1324 add x0, x28, :lo12:.LANCHOR209 mov w1, 4096 strh w1, [x0, 14] mov w1, 2 strb w1, [x0, 13] b .L1324 .L1360: add x23, x23, 20 b .L1339 .L1337: sub w3, w0, #17 and w3, w3, 255 cmp w3, 2 bhi .L1343 adrp x2, MicronReadRetrial add x2, x2, :lo12:MicronReadRetrial str x2, [x28, #:lo12:.LANCHOR148] cmp w0, 19 beq .L1344 .L1399: mov w0, 7 b .L1397 .L1344: mov w0, 15 .L1397: strb w0, [x1, #:lo12:.LANCHOR149] b .L1336 .L1343: sub w3, w0, #65 cmp w0, 33 and w3, w3, 255 ccmp w3, 1, 0, ne bhi .L1345 adrp x0, ToshibaReadRetrial add x0, x0, :lo12:ToshibaReadRetrial str x0, [x28, #:lo12:.LANCHOR148] mov w0, 4 strb w0, [x2, #:lo12:.LANCHOR13] b .L1399 .L1345: sub w3, w0, #34 sub w2, w0, #67 and w3, w3, 255 and w2, w2, 255 cmp w3, 1 ccmp w2, 1, 0, hi bhi .L1346 adrp x3, ToshibaReadRetrial add x3, x3, :lo12:ToshibaReadRetrial str x3, [x28, #:lo12:.LANCHOR148] cmp w0, 35 mov w3, 68 ccmp w0, w3, 4, ne beq .L1347 mov w0, 7 .L1396: strb w0, [x1, #:lo12:.LANCHOR149] cmp w2, 1 bhi .L1349 mov w0, 4 .L1398: strb w0, [x4, #:lo12:.LANCHOR13] b .L1336 .L1347: mov w0, 17 b .L1396 .L1349: mov w0, 5 b .L1398 .L1346: cmp w0, 49 bne .L1350 adrp x0, SamsungReadRetrial add x0, x0, :lo12:SamsungReadRetrial str x0, [x28, #:lo12:.LANCHOR148] b .L1336 .L1350: cmp w0, 50 bne .L1336 adrp x0, samsung_read_retrial add x0, x0, :lo12:samsung_read_retrial str x0, [x28, #:lo12:.LANCHOR148] adrp x0, .LANCHOR29 str wzr, [x0, #:lo12:.LANCHOR29] b .L1336 .L1357: mov w0, -2 b .L1306 .L1320: ldr x1, [x29, 120] strb w0, [x1, #:lo12:.LANCHOR208] b .L1319 .size FlashInit, .-FlashInit .section .text.FlashReadSlc2KPages,"ax",@progbits .align 2 .global FlashReadSlc2KPages .type FlashReadSlc2KPages, %function FlashReadSlc2KPages: stp x29, x30, [sp, -144]! add x29, sp, 0 stp x21, x22, [sp, 32] mov w22, 56 stp x25, x26, [sp, 64] and w21, w1, 255 str w2, [x29, 116] adrp x2, .LANCHOR31+9 stp x19, x20, [sp, 16] mov x19, x0 ldrb w25, [x2, #:lo12:.LANCHOR31+9] nop // between mem op and mult-accumulate umaddl x0, w1, w22, x0 adrp x26, .LANCHOR208 str x0, [x29, 120] stp x23, x24, [sp, 48] add x0, x26, :lo12:.LANCHOR208 stp x27, x28, [sp, 80] str x0, [x29, 104] .L1401: ldr x0, [x29, 120] cmp x19, x0 bne .L1421 ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 ret .L1421: ldr w1, [x29, 116] mov w4, w21 add x3, x29, 136 add x2, x29, 140 mov x0, x19 bl LogAddr2PhyAddr adrp x0, .LANCHOR26 ldr w1, [x29, 136] ldrb w0, [x0, #:lo12:.LANCHOR26] cmp w0, w1 bhi .L1402 mov w0, -1 str w0, [x19] .L1403: sub w21, w21, #1 add x19, x19, 56 and w21, w21, 255 b .L1401 .L1402: adrp x0, .LANCHOR27 add x0, x0, :lo12:.LANCHOR27 add x23, x26, :lo12:.LANCHOR208 mov w22, 0 mov w24, 256 ldrb w20, [x0, w1, uxtw] mov w0, w20 bl NandcWaitFlashReady mov w0, w20 bl NandcFlashCs .L1404: ldr w1, [x29, 140] mov w0, w20 bl FlashReadCmd mov w0, w20 bl NandcWaitFlashReady ldp x3, x4, [x19, 8] mov w2, w25 mov w1, 0 mov w0, w20 bl NandcXferData mov w28, w0 ldrb w0, [x23] cbz w0, .L1405 mov w0, w20 bl flash_read_ecc cmp w0, 5 csel w28, w28, w24, ls .L1405: cmp w22, 9 ccmn w28, #1, 0, ls bne .L1406 add w22, w22, 1 b .L1404 .L1406: cmp w22, 0 mov w23, 256 adrp x24, .LANCHOR4 csel w28, w28, w23, eq add x24, x24, :lo12:.LANCHOR4 mov w22, 0 .L1408: ldr w0, [x24] ldr w1, [x29, 140] add w1, w1, w0 mov w0, w20 bl FlashReadCmd mov w0, w20 bl NandcWaitFlashReady ldr x0, [x19, 8] mov w2, w25 mov w1, 0 cmp x0, 0 add x3, x0, 2048 ldr x0, [x19, 16] csel x3, x3, xzr, ne cmp x0, 0 add x4, x0, 8 csel x4, x4, xzr, ne mov w0, w20 bl NandcXferData mov w27, w0 ldr x0, [x29, 104] ldrb w0, [x0] cbz w0, .L1411 mov w0, w20 bl flash_read_ecc cmp w0, 5 csel w27, w27, w23, ls .L1411: cmp w22, 9 ccmn w27, #1, 0, ls bne .L1412 add w22, w22, 1 b .L1408 .L1412: cmp w22, 0 mov w3, 256 mov w0, w20 csel w27, w27, w3, eq bl NandcFlashDeCs adrp x0, .LANCHOR33 cmp w28, w27 csel w5, w28, w27, cs ldrb w2, [x0, #:lo12:.LANCHOR33] add w0, w2, w2, lsl 1 cmp w5, w0, lsr 2 bls .L1414 cmn w5, #1 csel w5, w5, w3, eq .L1414: cmp w5, 256 ldr x0, [x19, 16] ccmn w5, #1, 4, ne csel w5, w5, wzr, eq str w5, [x19] cbz x0, .L1417 ldr w1, [x0, 12] cmn w1, #1 bne .L1417 ldr w1, [x0, 8] cmn w1, #1 bne .L1417 ldr w0, [x0] cmn w0, #1 beq .L1417 str w1, [x19] .L1417: ldr w3, [x19] cmn w3, #1 bne .L1403 ldr w1, [x19, 4] adrp x0, .LC26 add x0, x0, :lo12:.LC26 bl printf ldr x1, [x19, 8] cbz x1, .L1419 adrp x0, .LC27 mov w3, 8 mov w2, 4 add x0, x0, :lo12:.LC27 bl rknand_print_hex .L1419: ldr x1, [x19, 16] cbz x1, .L1403 mov w3, 4 adrp x0, .LC28 mov w2, w3 add x0, x0, :lo12:.LC28 bl rknand_print_hex b .L1403 .size FlashReadSlc2KPages, .-FlashReadSlc2KPages .section .text.FlashReadPages,"ax",@progbits .align 2 .global FlashReadPages .type FlashReadPages, %function FlashReadPages: stp x29, x30, [sp, -176]! adrp x3, .LANCHOR2 add x29, sp, 0 ldrb w3, [x3, #:lo12:.LANCHOR2] stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] stp w2, w1, [x29, 148] cbnz w3, .L1450 mov x25, x0 adrp x0, .LANCHOR31+9 adrp x27, .LANCHOR20 mov w23, 0 ldrb w0, [x0, #:lo12:.LANCHOR31+9] mov w22, 0 str w0, [x29, 156] adrp x0, .LANCHOR6 str x0, [x29, 128] ldrb w1, [x0, #:lo12:.LANCHOR6] add x0, x27, :lo12:.LANCHOR20 str w1, [x29, 144] str x0, [x29, 104] add x0, x0, 4 str x0, [x29, 96] .L1451: ldr w0, [x29, 152] cmp w22, w0 bcc .L1485 mov w0, 0 b .L1449 .L1450: bl FlashReadSlc2KPages .L1449: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L1485: mov w26, 56 add x3, x29, 168 ldp w1, w0, [x29, 148] umull x26, w22, w26 add x2, x29, 172 add x21, x25, x26 sub w4, w0, w22 mov x0, x21 ldr w24, [x21, 4] bl LogAddr2PhyAddr mov w20, w0 adrp x0, .LANCHOR26 ldr w1, [x29, 168] ldrb w0, [x0, #:lo12:.LANCHOR26] cmp w0, w1 bhi .L1453 mov w0, -1 str w0, [x25, x26] .L1454: add w22, w22, 1 b .L1451 .L1453: adrp x0, .LANCHOR27 add x0, x0, :lo12:.LANCHOR27 ldrb w19, [x0, w1, uxtw] adrp x0, .LANCHOR210 ldrb w0, [x0, #:lo12:.LANCHOR210] cmp w0, 0 mov w0, w19 csel w20, w20, wzr, ne bl NandcWaitFlashReady adrp x2, .LANCHOR7 str x2, [x29, 120] ldr x0, [x2, #:lo12:.LANCHOR7] ldrb w1, [x0, 19] sub w0, w1, #1 and w0, w0, 255 cmp w0, 7 bhi .L1456 add x0, x27, :lo12:.LANCHOR20 sxtw x2, w19 add x0, x0, x2 sub w1, w1, #7 and w1, w1, 255 cmp w1, 1 ldrb w3, [x0, 12] bhi .L1457 ldrb w3, [x0, 20] .L1457: adrp x0, .LANCHOR21 add x0, x0, :lo12:.LANCHOR21 ldrb w0, [x0, x2] cmp w0, w3 beq .L1456 ldp x2, x0, [x29, 96] ldrb w1, [x0, 1] mov w0, w19 bl HynixSetRRPara .L1456: mov w0, w19 bl NandcFlashCs ldr w0, [x29, 148] cmp w0, 1 cset w0, eq orr w24, w0, w24, lsr 31 cbz w24, .L1458 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L1458 mov w0, w19 bl flash_enter_slc_mode .L1459: adrp x0, .LANCHOR4 add x0, x0, :lo12:.LANCHOR4 str x0, [x29, 112] ldr x0, [x29, 128] add x0, x0, :lo12:.LANCHOR6 str x0, [x29, 136] .L1465: ldr w1, [x29, 172] cmn w1, #1 bne .L1460 cmp w19, 255 beq .L1487 .L1460: cbz w20, .L1462 ldr x0, [x29, 112] ldr w2, [x0] mov w0, w19 add w2, w1, w2 bl FlashReadDpCmd .L1463: mov w0, w19 bl NandcWaitFlashReady cbz w20, .L1461 ldr w1, [x29, 172] mov w0, w19 bl FlashReadDpDataOutCmd .L1461: ldrb w2, [x29, 156] mov w1, 0 ldp x3, x4, [x21, 8] mov w0, w19 bl NandcXferData mov w28, w0 ldr x0, [x29, 136] ldrb w0, [x0] cbz w0, .L1464 cmn w28, #1 bne .L1464 ldr x0, [x29, 136] mov w20, 0 strb wzr, [x0] b .L1465 .L1458: mov w0, w19 bl flash_exit_slc_mode b .L1459 .L1462: mov w0, w19 bl FlashReadCmd b .L1463 .L1487: mov w20, 0 b .L1461 .L1464: cbz w20, .L1466 adrp x0, .LANCHOR4 ldr w1, [x29, 172] ldr w0, [x0, #:lo12:.LANCHOR4] add w1, w1, w0 mov w0, w19 bl FlashReadDpDataOutCmd add w0, w22, 1 mov w1, 56 ldrb w2, [x29, 156] nop // between mem op and mult-accumulate umaddl x0, w0, w1, x25 mov w1, 0 ldp x3, x4, [x0, 8] mov w0, w19 bl NandcXferData cmn w0, #1 mov w23, w0 csel w20, w20, wzr, ne .L1466: mov w0, w19 bl NandcFlashDeCs ldr x0, [x29, 128] cmn w28, #1 ldrb w1, [x29, 144] strb w1, [x0, #:lo12:.LANCHOR6] bne .L1467 adrp x0, .LANCHOR30 ldrb w0, [x0, #:lo12:.LANCHOR30] cbnz w0, .L1468 .L1472: adrp x20, .LANCHOR148 ldr x4, [x20, #:lo12:.LANCHOR148] cbnz x4, .L1469 ldr w1, [x29, 172] mov w0, w19 ldp x2, x3, [x21, 8] bl FlashReadRawPage b .L1524 .L1468: adrp x0, .LANCHOR19 ldr w1, [x29, 172] ldp x2, x3, [x21, 8] mov w4, 1 ldr x0, [x0, #:lo12:.LANCHOR19] ldr w20, [x0, 304] mov w0, w19 bl FlashDdrTunningRead mov w28, w0 cmn w0, #1 beq .L1471 adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] cmp w28, w0, lsr 1 bls .L1488 .L1471: lsr w0, w20, 8 bl NandcSetDdrPara cmn w28, #1 beq .L1472 .L1488: mov w20, 0 .L1467: adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w28, w0, lsr 2 bls .L1473 adrp x0, .LANCHOR148 ldr x0, [x0, #:lo12:.LANCHOR148] cmp x0, 0 mov w0, 256 csel w28, w28, w0, ne .L1473: cmp w28, 256 ccmn w28, #1, 4, ne csel w3, w28, wzr, eq str w3, [x25, x26] cmn w3, #1 bne .L1480 adrp x0, .LANCHOR33 ldr w1, [x21, 4] ldrb w2, [x0, #:lo12:.LANCHOR33] adrp x0, .LC26 add x0, x0, :lo12:.LC26 bl printf ldr x1, [x21, 16] cbz x1, .L1480 mov w3, 4 adrp x0, .LC28 mov w2, w3 add x0, x0, :lo12:.LC28 bl rknand_print_hex .L1480: cbz w20, .L1482 adrp x0, .LANCHOR33 ldrb w0, [x0, #:lo12:.LANCHOR33] add w0, w0, w0, lsl 1 cmp w23, w0, lsr 2 bls .L1483 adrp x0, .LANCHOR148 ldr x0, [x0, #:lo12:.LANCHOR148] cmp x0, 0 mov w0, 256 csel w23, w23, w0, ne .L1483: add w0, w22, 1 mov w1, 56 cmp w23, 256 ccmn w23, #1, 4, ne umull x0, w0, w1 csel w1, w23, wzr, eq str w1, [x25, x0] .L1482: add w22, w22, w20 cbz w24, .L1454 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L1454 mov w0, w19 bl flash_exit_slc_mode b .L1454 .L1469: ldr w1, [x29, 172] mov w0, w19 ldp x2, x3, [x21, 8] blr x4 mov w28, w0 cmn w0, #1 bne .L1491 ldr x0, [x29, 120] ldr x0, [x0, #:lo12:.LANCHOR7] ldrb w0, [x0, 19] sub w0, w0, #1 and w0, w0, 255 cmp w0, 7 bhi .L1474 add x0, x27, :lo12:.LANCHOR20 mov w3, 0 add x2, x0, 4 ldrb w1, [x0, 1] mov w0, w19 bl HynixSetRRPara .L1474: ldp x2, x3, [x21, 8] mov w0, w19 ldr w1, [x29, 172] bl FlashReadRawPage mov w28, w0 mov w3, w0 adrp x0, .LANCHOR33 ldr w1, [x21, 4] ldrb w2, [x0, #:lo12:.LANCHOR33] adrp x0, .LC29 add x0, x0, :lo12:.LC29 bl printf cmn w28, #1 bne .L1491 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L1491 mov w0, w19 cbz w24, .L1475 bl flash_enter_slc_mode .L1476: ldr x4, [x20, #:lo12:.LANCHOR148] mov w0, w19 ldr w1, [x29, 172] ldp x2, x3, [x21, 8] blr x4 .L1524: mov w28, w0 .L1491: mov w20, 0 b .L1473 .L1475: bl flash_exit_slc_mode b .L1476 .size FlashReadPages, .-FlashReadPages .section .text.FlashProgSlc2KPages,"ax",@progbits .align 2 .global FlashProgSlc2KPages .type FlashProgSlc2KPages, %function FlashProgSlc2KPages: stp x29, x30, [sp, -160]! add x29, sp, 0 stp x23, x24, [sp, 48] mov w24, 56 stp x25, x26, [sp, 64] mov w25, w2 adrp x2, .LANCHOR31+9 stp x21, x22, [sp, 32] nop // between mem op and mult-accumulate umaddl x24, w1, w24, x0 and w22, w1, 255 ldrb w26, [x2, #:lo12:.LANCHOR31+9] mov w23, w22 stp x27, x28, [sp, 80] mov x21, x0 stp x19, x20, [sp, 16] adrp x27, .LANCHOR4 mov x19, x0 add x28, x27, :lo12:.LANCHOR4 .L1526: cmp x21, x24 bne .L1532 adrp x23, .LANCHOR206 mov x24, x23 .L1533: cmp x19, x21 bne .L1540 ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 160 ret .L1532: mov w1, w25 mov w4, w23 add x3, x29, 100 add x2, x29, 96 mov x0, x21 bl LogAddr2PhyAddr adrp x0, .LANCHOR26 ldr w1, [x29, 100] ldrb w0, [x0, #:lo12:.LANCHOR26] cmp w0, w1 bhi .L1527 mov w0, -1 str w0, [x21] .L1528: sub w23, w23, #1 add x21, x21, 56 and w23, w23, 255 b .L1526 .L1527: adrp x0, .LANCHOR27 add x0, x0, :lo12:.LANCHOR27 ldrb w20, [x0, w1, uxtw] mov w0, w20 bl NandcWaitFlashReady mov w0, w20 bl NandcFlashCs ldr w1, [x29, 96] mov w0, w20 bl FlashProgFirstCmd ldp x3, x4, [x21, 8] mov w2, w26 mov w1, 1 mov w0, w20 bl NandcXferData ldr w1, [x29, 96] mov w0, w20 bl FlashProgSecondCmd mov w0, w20 bl NandcWaitFlashReady ldr w1, [x29, 96] mov w0, w20 bl FlashReadStatus sbfx x0, x0, 0, 1 str w0, [x21] ldr w1, [x29, 96] ldr w0, [x27, #:lo12:.LANCHOR4] add w1, w1, w0 mov w0, w20 bl FlashProgFirstCmd ldr x0, [x21, 8] mov w2, w26 mov w1, 1 cmp x0, 0 add x3, x0, 2048 ldr x0, [x21, 16] csel x3, x3, xzr, ne cmp x0, 0 add x4, x0, 8 csel x4, x4, xzr, ne mov w0, w20 bl NandcXferData ldr w0, [x28] ldr w1, [x29, 96] add w1, w1, w0 mov w0, w20 bl FlashProgSecondCmd mov w0, w20 bl NandcWaitFlashReady ldr w1, [x29, 96] mov w0, w20 bl FlashReadStatus tbz x0, 0, .L1531 mov w0, -1 str w0, [x21] .L1531: mov w0, w20 bl NandcFlashDeCs b .L1528 .L1540: ldr w0, [x19] cmn w0, #1 bne .L1534 ldr w1, [x19, 4] adrp x0, .LC30 add x0, x0, :lo12:.LC30 bl printf .L1535: sub w22, w22, #1 add x19, x19, 56 and w22, w22, 255 b .L1533 .L1534: adrp x20, .LANCHOR207 mov w4, w22 add x3, x29, 100 add x2, x29, 96 mov w1, w25 mov x0, x19 bl LogAddr2PhyAddr ldr x27, [x23, #:lo12:.LANCHOR206] ldr x26, [x20, #:lo12:.LANCHOR207] mov x2, 56 mov x1, x19 add x0, x29, 104 str wzr, [x27] str wzr, [x26] bl memcpy stp x27, x26, [x29, 112] mov w2, w25 mov w1, 1 add x0, x29, 104 bl FlashReadPages ldr w26, [x29, 104] cmn w26, #1 bne .L1536 ldr w1, [x19, 4] adrp x0, .LC31 add x0, x0, :lo12:.LC31 bl printf str w26, [x19] .L1536: ldr w26, [x29, 104] cmp w26, 256 bne .L1537 ldr w1, [x19, 4] adrp x0, .LC32 add x0, x0, :lo12:.LC32 bl printf str w26, [x19] .L1537: ldr x0, [x19, 16] cbz x0, .L1538 ldr w2, [x0] ldr x0, [x20, #:lo12:.LANCHOR207] ldr w3, [x0] cmp w2, w3 beq .L1538 ldr w1, [x19, 4] adrp x0, .LC33 add x0, x0, :lo12:.LC33 bl printf mov w0, -1 str w0, [x19] .L1538: ldr x0, [x19, 8] cbz x0, .L1535 ldr w2, [x0] ldr x0, [x24, #:lo12:.LANCHOR206] ldr w3, [x0] cmp w2, w3 beq .L1535 ldr w1, [x19, 4] adrp x0, .LC34 add x0, x0, :lo12:.LC34 bl printf mov w0, -1 str w0, [x19] b .L1535 .size FlashProgSlc2KPages, .-FlashProgSlc2KPages .section .text.FlashProgPages,"ax",@progbits .align 2 .global FlashProgPages .type FlashProgPages, %function FlashProgPages: stp x29, x30, [sp, -176]! adrp x4, .LANCHOR7 add x29, sp, 0 ldr x4, [x4, #:lo12:.LANCHOR7] stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] ldrb w4, [x4, 19] stp w3, w4, [x29, 100] adrp x4, .LANCHOR2 ldrb w4, [x4, #:lo12:.LANCHOR2] cbnz w4, .L1554 mov x19, x0 adrp x0, .LANCHOR31+9 adrp x27, .LANCHOR23 mov w24, w1 ldrb w0, [x0, #:lo12:.LANCHOR31+9] mov w22, w2 add x28, x27, :lo12:.LANCHOR23 mov w21, 0 str w0, [x29, 108] .L1555: cmp w21, w24 adrp x26, .LANCHOR26 bcc .L1568 adrp x21, .LANCHOR16 adrp x23, .LANCHOR23 add x25, x26, :lo12:.LANCHOR26 add x21, x21, :lo12:.LANCHOR16 add x23, x23, :lo12:.LANCHOR23 mov x20, 0 .L1569: ldrb w0, [x25] cmp w0, w20 bhi .L1571 ldr w0, [x29, 100] cbnz w0, .L1572 .L1580: mov w0, 0 b .L1553 .L1554: bl FlashProgSlc2KPages .L1553: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L1568: mov w12, 56 mov w1, w22 sub w4, w24, w21 add x3, x29, 116 umull x12, w21, w12 add x2, x29, 112 add x25, x19, x12 mov x0, x25 bl LogAddr2PhyAddr mov w23, w0 ldrb w1, [x26, #:lo12:.LANCHOR26] ldr w0, [x29, 116] cmp w1, w0 bhi .L1557 mov w0, -1 str w0, [x19, x12] .L1558: add w21, w21, 1 b .L1555 .L1557: adrp x1, .LANCHOR28 add x2, x27, :lo12:.LANCHOR23 mov x3, 24 ldrb w1, [x1, #:lo12:.LANCHOR28] cmp w1, 0 uxtw x1, w0 csel w23, w23, wzr, ne madd x1, x1, x3, x2 ldr x1, [x1, 8] cbz x1, .L1560 bl FlashWaitCmdDone .L1560: ldp w2, w1, [x29, 112] mov x0, 24 madd x0, x1, x0, x28 str w2, [x0, 4] stp x25, xzr, [x0, 8] cbz w23, .L1561 add w2, w21, 1 mov w3, 56 umaddl x2, w2, w3, x19 str x2, [x0, 16] .L1561: adrp x0, .LANCHOR27 add x0, x0, :lo12:.LANCHOR27 ldrb w20, [x0, x1] mov x0, 24 mul x1, x1, x0 ldrb w0, [x26, #:lo12:.LANCHOR26] cmp w0, 1 mov w0, w20 strb w20, [x28, x1] bne .L1562 bl NandcWaitFlashReady .L1563: ldr w0, [x29, 104] sub w0, w0, #1 cmp w0, 7 bhi .L1564 adrp x0, .LANCHOR21 add x0, x0, :lo12:.LANCHOR21 ldrb w0, [x0, w20, sxtw] cbz w0, .L1564 adrp x0, .LANCHOR20 add x0, x0, :lo12:.LANCHOR20 add x2, x0, 4 mov w3, 0 ldrb w1, [x0, 1] mov w0, w20 bl HynixSetRRPara .L1564: mov w0, w20 bl NandcFlashCs cmp w22, 1 bne .L1565 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L1565 mov w0, w20 bl flash_enter_slc_mode .L1566: ldr w1, [x29, 112] mov w0, w20 bl FlashProgFirstCmd ldrb w2, [x29, 108] mov w1, 1 ldp x3, x4, [x25, 8] mov w0, w20 bl NandcXferData cbz w23, .L1567 ldr w1, [x29, 112] mov w0, w20 bl FlashProgDpFirstCmd ldr w1, [x29, 116] adrp x0, .LANCHOR18 add x0, x0, :lo12:.LANCHOR18 ldr w0, [x0, x1, lsl 2] ldr w1, [x29, 112] cmp w0, 0 mov w0, w20 cset w2, ne bl FlashWaitReadyEN adrp x0, .LANCHOR4 ldr w1, [x29, 112] ldr w0, [x0, #:lo12:.LANCHOR4] add w1, w1, w0 mov w0, w20 bl FlashProgDpSecondCmd add w0, w21, 1 mov w1, 56 ldrb w2, [x29, 108] nop // between mem op and mult-accumulate umaddl x0, w0, w1, x19 mov w1, 1 ldp x3, x4, [x0, 8] mov w0, w20 bl NandcXferData .L1567: ldr w1, [x29, 112] mov w0, w20 add w21, w21, w23 bl FlashProgSecondCmd mov w0, w20 bl NandcFlashDeCs b .L1558 .L1562: bl NandcFlashCs ldr w1, [x29, 116] adrp x0, .LANCHOR18 add x0, x0, :lo12:.LANCHOR18 ldr w0, [x0, x1, lsl 2] ldr w1, [x29, 112] cmp w0, 0 mov w0, w20 cset w2, ne bl FlashWaitReadyEN mov w0, w20 bl NandcFlashDeCs b .L1563 .L1565: mov w0, w20 bl flash_exit_slc_mode b .L1566 .L1571: mov w0, w20 bl FlashWaitCmdDone cmp w22, 1 bne .L1570 ldrb w0, [x21] cbz w0, .L1570 mov x0, 24 mul x0, x20, x0 ldrb w0, [x0, x23] bl flash_exit_slc_mode .L1570: add x20, x20, 1 b .L1569 .L1572: mov w0, 56 and w20, w24, 255 adrp x23, .LANCHOR206 mov x25, x23 umaddl x24, w24, w0, x19 .L1573: cmp x24, x19 beq .L1580 ldr w0, [x19] cmn w0, #1 bne .L1574 ldr w1, [x19, 4] adrp x0, .LC30 add x0, x0, :lo12:.LC30 bl printf .L1575: sub w20, w20, #1 add x19, x19, 56 and w20, w20, 255 b .L1573 .L1574: adrp x21, .LANCHOR207 mov w4, w20 add x3, x29, 116 add x2, x29, 112 mov w1, w22 mov x0, x19 bl LogAddr2PhyAddr ldr x27, [x23, #:lo12:.LANCHOR206] ldr x26, [x21, #:lo12:.LANCHOR207] mov x2, 56 mov x1, x19 add x0, x29, 120 str wzr, [x27] str wzr, [x26] bl memcpy stp x27, x26, [x29, 128] mov w2, w22 mov w1, 1 add x0, x29, 120 bl FlashReadPages ldr w26, [x29, 120] cmn w26, #1 bne .L1576 ldr w1, [x19, 4] adrp x0, .LC31 add x0, x0, :lo12:.LC31 bl printf str w26, [x19] .L1576: ldr x0, [x19, 16] cbz x0, .L1577 ldr w2, [x0] ldr x0, [x21, #:lo12:.LANCHOR207] ldr w3, [x0] cmp w2, w3 beq .L1577 ldr w1, [x19, 4] adrp x0, .LC33 add x0, x0, :lo12:.LC33 bl printf mov w0, -1 str w0, [x19] .L1577: ldr x0, [x19, 8] cbz x0, .L1575 ldr w2, [x0] ldr x0, [x25, #:lo12:.LANCHOR206] ldr w3, [x0] cmp w2, w3 beq .L1575 ldr w1, [x19, 4] adrp x0, .LC34 add x0, x0, :lo12:.LC34 bl printf mov w0, -1 str w0, [x19] b .L1575 .size FlashProgPages, .-FlashProgPages .section .text.FlashTestBlk,"ax",@progbits .align 2 .global FlashTestBlk .type FlashTestBlk, %function FlashTestBlk: stp x29, x30, [sp, -160]! add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 65535 adrp x0, .LANCHOR156 ldr w0, [x0, #:lo12:.LANCHOR156] cmp w19, w0 bcc .L1608 adrp x20, .LANCHOR152 mov w2, 32 mov w1, 165 lsl w19, w19, 10 ldr x0, [x20, #:lo12:.LANCHOR152] str x0, [x29, 48] add x0, x29, 96 str x0, [x29, 56] bl ftl_memset ldr x0, [x20, #:lo12:.LANCHOR152] mov w2, 8 mov w1, 90 bl ftl_memset str w19, [x29, 44] mov w2, 1 add x0, x29, 40 mov w1, w2 bl FlashEraseBlocks mov w3, 1 add x0, x29, 40 mov w2, w3 mov w1, w3 bl FlashProgPages ldr w0, [x29, 40] mov w2, 1 mov w1, 0 cmp w0, 0 add x0, x29, 40 csetm w19, ne bl FlashEraseBlocks .L1606: mov w0, w19 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 160 ret .L1608: mov w19, 0 b .L1606 .size FlashTestBlk, .-FlashTestBlk .section .text.FtlLowFormatEraseBlock,"ax",@progbits .align 2 .global FtlLowFormatEraseBlock .type FtlLowFormatEraseBlock, %function FtlLowFormatEraseBlock: stp x29, x30, [sp, -144]! add x29, sp, 0 stp x25, x26, [sp, 64] and w26, w0, 65535 adrp x0, .LANCHOR78 stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] ldr w0, [x0, #:lo12:.LANCHOR78] stp x23, x24, [sp, 48] stp x27, x28, [sp, 80] cbnz w0, .L1633 adrp x23, .LANCHOR28 and w25, w1, 255 adrp x20, .LANCHOR16 adrp x1, .LANCHOR38 ldrb w0, [x23, #:lo12:.LANCHOR28] adrp x21, .LANCHOR79 str w0, [x29, 136] mov x8, 56 adrp x0, .LANCHOR75 ldrb w10, [x20, #:lo12:.LANCHOR16] ldrh w11, [x1, #:lo12:.LANCHOR38] adrp x7, .LANCHOR47 str w26, [x0, #:lo12:.LANCHOR75] adrp x0, .LANCHOR196 ldr x6, [x21, #:lo12:.LANCHOR79] add x7, x7, :lo12:.LANCHOR47 ldr x12, [x0, #:lo12:.LANCHOR196] adrp x0, .LANCHOR58 mov w14, w8 mov x5, 0 ldrh w13, [x0, #:lo12:.LANCHOR58] mov w24, 0 mov w19, 0 str x1, [x29, 128] str x0, [x29, 120] .L1612: cmp w11, w5, uxth bhi .L1616 cbz w24, .L1610 cmp w10, 0 mov w2, w24 cset w22, ne strb wzr, [x23, #:lo12:.LANCHOR28] mov w1, w22 mov x0, x6 bl FlashEraseBlocks mov x27, 0 ldrb w0, [x29, 136] strb w0, [x23, #:lo12:.LANCHOR28] mov w0, 56 umull x24, w24, w0 .L1619: ldr x0, [x21, #:lo12:.LANCHOR79] add x1, x0, x27 ldr w0, [x0, x27] cmn w0, #1 bne .L1618 ldr w0, [x1, 4] add w19, w19, 1 and w19, w19, 65535 lsr w0, w0, 10 bl FtlBbmMapBadBlock .L1618: add x27, x27, 56 cmp x27, x24 bne .L1619 cbnz w25, .L1620 and w22, w22, 65535 mov w28, 6 mov w27, 1 .L1621: adrp x0, .LANCHOR47 mov w24, 0 add x0, x0, :lo12:.LANCHOR47 str x0, [x29, 112] .L1629: ldr x0, [x29, 128] mov x5, 0 ldr x6, [x21, #:lo12:.LANCHOR79] mov w20, 0 mov w12, 56 ldrh w7, [x0, #:lo12:.LANCHOR38] adrp x0, .LANCHOR193 ldr x8, [x0, #:lo12:.LANCHOR193] adrp x0, .LANCHOR194 ldr x10, [x0, #:lo12:.LANCHOR194] ldr x0, [x29, 120] ldrh w11, [x0, #:lo12:.LANCHOR58] .L1622: cmp w7, w5, uxth bhi .L1625 cbz w20, .L1610 mov w2, w22 mov w1, w20 strb wzr, [x23, #:lo12:.LANCHOR28] mov w3, 1 mov x0, x6 bl FlashProgPages mov w1, 56 ldrb w0, [x29, 136] strb w0, [x23, #:lo12:.LANCHOR28] mov x2, 0 umull x1, w20, w1 .L1628: ldr x0, [x21, #:lo12:.LANCHOR79] add x3, x0, x2 ldr w0, [x0, x2] cbz w0, .L1627 ldr w0, [x3, 4] add w19, w19, 1 stp x2, x1, [x29, 96] and w19, w19, 65535 lsr w0, w0, 10 bl FtlBbmMapBadBlock ldp x2, x1, [x29, 96] .L1627: add x2, x2, 56 cmp x1, x2 bne .L1628 add w24, w24, w28 and w24, w24, 65535 cmp w27, w24 bhi .L1629 mov x23, 0 .L1631: cbz w25, .L1630 ldr x0, [x21, #:lo12:.LANCHOR79] add x1, x0, x23 ldr w0, [x0, x23] cbnz w0, .L1630 ldr w0, [x1, 4] mov w1, 1 str x2, [x29, 136] lsr w0, w0, 10 bl FtlFreeSysBlkQueueIn ldr x2, [x29, 136] .L1630: add x23, x23, 56 cmp x23, x2 bne .L1631 cmp w26, 63 ccmp w25, 0, 0, hi beq .L1610 ldr x0, [x21, #:lo12:.LANCHOR79] mov w2, w20 mov w1, w22 bl FlashEraseBlocks .L1610: mov w0, w19 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 144 ret .L1616: mul x0, x5, x8 mov w1, w26 str wzr, [x6, x0] ldrb w0, [x7, x5] bl V2P_block and w15, w0, 65535 mov w22, w15 cbz w25, .L1613 bl IsBlkInVendorPart cbnz w0, .L1614 .L1613: mov w0, w22 bl FtlBbmIsBadBlock cbnz w0, .L1615 umaddl x1, w24, w14, x6 lsl w15, w15, 10 mul w0, w24, w13 add w24, w24, 1 and w24, w24, 65535 asr w0, w0, 2 str w15, [x1, 4] add x0, x12, x0, sxtw 2 stp xzr, x0, [x1, 8] .L1614: add x5, x5, 1 b .L1612 .L1615: add w19, w19, 1 and w19, w19, 65535 b .L1614 .L1620: adrp x0, .LANCHOR53 ldrh w27, [x0, #:lo12:.LANCHOR53] ldrb w0, [x20, #:lo12:.LANCHOR16] cbnz w0, .L1634 lsr w28, w27, 2 mov w22, 1 b .L1621 .L1634: mov w22, 1 mov w28, w22 b .L1621 .L1625: mov x0, 56 mov w1, w26 mul x0, x5, x0 str wzr, [x6, x0] ldr x0, [x29, 112] ldrb w0, [x0, x5] bl V2P_block and w13, w0, 65535 mov w14, w13 cbz w25, .L1623 bl IsBlkInVendorPart cbnz w0, .L1624 .L1623: mov w0, w14 bl FtlBbmIsBadBlock cbnz w0, .L1624 umaddl x1, w20, w12, x6 add w13, w24, w13, lsl 10 mul w0, w20, w11 add w20, w20, 1 and w20, w20, 65535 asr w0, w0, 2 str w13, [x1, 4] add x0, x10, x0, sxtw 2 stp x8, x0, [x1, 8] .L1624: add x5, x5, 1 b .L1622 .L1633: mov w19, 0 b .L1610 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock .section .text.FtlBbmTblFlush,"ax",@progbits .align 2 .global FtlBbmTblFlush .type FtlBbmTblFlush, %function FtlBbmTblFlush: stp x29, x30, [sp, -96]! add x29, sp, 0 stp x21, x22, [sp, 32] adrp x22, .LANCHOR78 stp x19, x20, [sp, 16] ldr w0, [x22, #:lo12:.LANCHOR78] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] cbnz w0, .L1657 adrp x24, .LANCHOR195 adrp x23, .LANCHOR189 adrp x20, .LANCHOR211 add x19, x20, :lo12:.LANCHOR211 ldr x1, [x24, #:lo12:.LANCHOR195] adrp x21, .LANCHOR76 ldr x0, [x23, #:lo12:.LANCHOR189] add x26, x21, :lo12:.LANCHOR76 stp x0, x1, [x19, 8] adrp x1, .LANCHOR57 adrp x27, .LANCHOR45 adrp x28, .LANCHOR126 ldrh w2, [x1, #:lo12:.LANCHOR57] add x26, x26, 32 mov w25, 0 add x27, x27, :lo12:.LANCHOR45 add x28, x28, :lo12:.LANCHOR126 mov w1, 0 bl ftl_memset .L1658: ldrh w0, [x27] cmp w25, w0 blt .L1659 add x20, x20, :lo12:.LANCHOR211 add x19, x21, :lo12:.LANCHOR76 mov w2, 16 mov w1, 255 adrp x26, .LC35 adrp x27, .LANCHOR53 ldr x28, [x20, 16] add x26, x26, :lo12:.LC35 add x27, x27, :lo12:.LANCHOR53 mov w25, 0 mov x0, x28 bl ftl_memset mov w0, -3887 strh w0, [x28] ldr w0, [x19, 8] str w0, [x28, 4] ldrh w0, [x21, #:lo12:.LANCHOR76] mov w21, 0 strh w0, [x28, 2] ldrh w0, [x19, 4] strh w0, [x28, 8] ldrh w0, [x19, 6] strh w0, [x28, 10] adrp x0, .LANCHOR37 ldr w0, [x0, #:lo12:.LANCHOR37] strh w0, [x28, 12] .L1660: ldrh w1, [x19] ldrh w4, [x28, 10] ldrh w2, [x19, 2] ldrh w3, [x19, 4] ldr x0, [x23, #:lo12:.LANCHOR189] str x0, [x20, 8] ldr x0, [x24, #:lo12:.LANCHOR195] str x0, [x20, 16] orr w0, w2, w1, lsl 10 str wzr, [x20] str w0, [x20, 4] mov x0, x26 bl printf ldrh w0, [x27] ldrh w1, [x19, 2] sub w0, w0, #1 cmp w1, w0 blt .L1661 ldr w0, [x19, 8] mov w2, 1 ldrh w1, [x19, 4] add w0, w0, 1 str w0, [x19, 8] str w0, [x28, 4] ldrh w0, [x19] strh w0, [x28, 8] strh w0, [x19, 4] adrp x0, .LANCHOR79 strh w1, [x19] lsl w1, w1, 10 ldr x0, [x0, #:lo12:.LANCHOR79] str w1, [x20, 4] strh wzr, [x19, 2] str w1, [x0, 4] mov w1, w2 bl FlashEraseBlocks .L1661: mov w3, 1 mov x0, x20 mov w2, w3 mov w1, w3 bl FlashProgPages ldrh w0, [x19, 2] add w0, w0, 1 strh w0, [x19, 2] ldr w0, [x20] cmn w0, #1 bne .L1662 ldr w1, [x20, 4] add w21, w21, 1 adrp x0, .LC36 and w21, w21, 65535 add x0, x0, :lo12:.LC36 bl printf cmp w21, 3 bls .L1660 ldr w1, [x20, 4] mov w2, w21 adrp x0, .LC37 add x0, x0, :lo12:.LC37 bl printf mov w0, 1 str w0, [x22, #:lo12:.LANCHOR78] .L1657: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 ret .L1659: ldrh w2, [x28] ldr x1, [x26], 8 ldr x0, [x19, 8] mul w3, w2, w25 lsl w2, w2, 2 add w25, w25, 1 add x0, x0, x3, sxtw 2 bl ftl_memcpy b .L1658 .L1662: add w25, w25, 1 cmp w25, 1 beq .L1660 cmp w0, 256 beq .L1660 b .L1657 .size FtlBbmTblFlush, .-FtlBbmTblFlush .section .text.allocate_data_superblock,"ax",@progbits .align 2 .global allocate_data_superblock .type allocate_data_superblock, %function allocate_data_superblock: adrp x1, .LANCHOR78 ldr w1, [x1, #:lo12:.LANCHOR78] cbnz w1, .L1736 stp x29, x30, [sp, -128]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 stp x27, x28, [sp, 80] adrp x27, .LANCHOR87 add x0, x27, :lo12:.LANCHOR87 stp x23, x24, [sp, 48] str x0, [x29, 120] adrp x0, .LANCHOR90 add x23, x0, :lo12:.LANCHOR90 stp x21, x22, [sp, 32] stp x25, x26, [sp, 64] .L1727: ldr x1, [x29, 120] adrp x0, .LANCHOR90 adrp x24, .LANCHOR40 ldrh w0, [x0, #:lo12:.LANCHOR90] ldrh w1, [x1] add w0, w0, w1 ldrh w1, [x24, #:lo12:.LANCHOR40] cmp w0, w1 ble .L1675 mov w2, 3507 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1675: adrp x0, .LANCHOR95 add x0, x0, :lo12:.LANCHOR95 cmp x19, x0 bne .L1676 adrp x1, .LANCHOR177 ldrh w2, [x23] ldr w3, [x1, #:lo12:.LANCHOR177] lsr w0, w2, 1 add w4, w0, 1 mul w1, w2, w3 add w1, w4, w1, lsr 2 adrp x4, .LANCHOR104 and w1, w1, 65535 ldr w4, [x4, #:lo12:.LANCHOR104] cbz w4, .L1677 adrp x4, .LANCHOR175 ldr w4, [x4, #:lo12:.LANCHOR175] cmp w4, 39 bhi .L1677 cmp w4, 2 bls .L1711 tbz x2, 0, .L1707 cbz w3, .L1711 .L1707: mov w1, w0 b .L1677 .L1676: ldrb w0, [x19, 8] cmp w0, 1 bne .L1711 adrp x0, .LANCHOR44 ldrh w0, [x0, #:lo12:.LANCHOR44] cmp w0, 1 beq .L1711 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbnz w0, .L1711 adrp x2, .LANCHOR104 ldrh w0, [x23] ldr w2, [x2, #:lo12:.LANCHOR104] lsr w1, w0, 3 cbz w2, .L1677 adrp x2, .LANCHOR175 ldr w2, [x2, #:lo12:.LANCHOR175] cmp w2, 1 bhi .L1677 mov w1, 7 mul w1, w0, w1 lsr w1, w1, 3 .L1677: cbz w1, .L1678 sub w1, w1, #1 and w1, w1, 65535 .L1678: ldrb w2, [x19, 8] adrp x0, .LANCHOR89 add x0, x0, :lo12:.LANCHOR89 bl List_pop_index_node and w22, w0, 65535 ldrh w0, [x23] cbnz w0, .L1679 mov w2, 3532 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1679: ldrh w0, [x23] sub w0, w0, #1 strh w0, [x23] ldrh w0, [x24, #:lo12:.LANCHOR40] cmp w0, w22 bls .L1727 adrp x25, .LANCHOR85 ubfiz x21, x22, 1, 16 ldr x0, [x25, #:lo12:.LANCHOR85] ldrh w20, [x0, x21] cbnz w20, .L1727 strh w22, [x19] mov x0, x19 bl make_superblock ldrb w0, [x19, 7] cbnz w0, .L1681 ldr x0, [x25, #:lo12:.LANCHOR85] mov w1, -1 strh w1, [x0, x21] ldrh w1, [x27, #:lo12:.LANCHOR87] ldrh w0, [x23] add w0, w0, w1 ldrh w1, [x24, #:lo12:.LANCHOR40] cmp w0, w1 ble .L1727 mov w2, 3552 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf b .L1727 .L1711: mov w1, 0 b .L1678 .L1681: ldrh w1, [x27, #:lo12:.LANCHOR87] ldrh w0, [x23] add w0, w0, w1 ldrh w1, [x24, #:lo12:.LANCHOR40] cmp w0, w1 ble .L1683 mov w2, 3556 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1683: adrp x1, .LANCHOR38 adrp x25, .LANCHOR79 mov w2, 56 mov x3, 8 ldrh w1, [x1, #:lo12:.LANCHOR38] add x26, x19, 16 ldr x4, [x25, #:lo12:.LANCHOR79] mov x5, x26 mov w6, 65535 add x0, x4, 8 umaddl x1, w2, w1, x3 add x1, x4, x1 .L1684: cmp x1, x0 bne .L1686 cbnz w20, .L1687 mov w2, 3571 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1687: adrp x0, .LANCHOR104 adrp x28, .LANCHOR80 ldr w0, [x0, #:lo12:.LANCHOR104] cbz w0, .L1688 adrp x0, .LANCHOR93 add x0, x0, :lo12:.LANCHOR93 cmp x19, x0 bne .L1688 ldr x0, [x28, #:lo12:.LANCHOR80] ldrh w0, [x0, x21] cmp w0, 40 bls .L1688 strb wzr, [x19, 8] .L1688: adrp x0, .LANCHOR213 ldrh w0, [x0, #:lo12:.LANCHOR213] cmp w0, w22 bne .L1689 mov w2, 3578 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1689: ldrb w0, [x19, 8] adrp x6, .LANCHOR48 adrp x5, .LANCHOR172 adrp x4, .LANCHOR173 ldr x1, [x28, #:lo12:.LANCHOR80] cbnz w0, .L1690 ldrh w0, [x1, x21] cbz w0, .L1691 ldrh w2, [x6, #:lo12:.LANCHOR48] add w0, w0, w2 .L1739: strh w0, [x1, x21] mov w1, 0 ldr w0, [x5, #:lo12:.LANCHOR172] add w0, w0, 1 str w0, [x5, #:lo12:.LANCHOR172] mov w0, w22 bl ftl_set_blk_mode .L1693: ldr x0, [x28, #:lo12:.LANCHOR80] ldrh w1, [x0, x21] adrp x0, .LANCHOR174 ldr w2, [x0, #:lo12:.LANCHOR174] cmp w1, w2 bls .L1694 str w1, [x0, #:lo12:.LANCHOR174] .L1694: ldr w2, [x5, #:lo12:.LANCHOR172] mov x3, 4 ldr w1, [x4, #:lo12:.LANCHOR173] ldrh w0, [x6, #:lo12:.LANCHOR48] madd w0, w0, w2, w1 ldrh w1, [x24, #:lo12:.LANCHOR40] udiv w0, w0, w1 adrp x1, .LANCHOR214 str w0, [x1, #:lo12:.LANCHOR214] adrp x0, .LANCHOR199 ldr x1, [x0, #:lo12:.LANCHOR199] ldr w0, [x1, 16] add w0, w0, 1 str w0, [x1, 16] mov w1, 56 ldr x0, [x25, #:lo12:.LANCHOR79] nop // between mem op and mult-accumulate umaddl x1, w1, w20, x3 add x2, x0, 4 add x1, x0, x1 .L1695: cmp x1, x2 bne .L1696 adrp x1, .LANCHOR16 ldrb w1, [x1, #:lo12:.LANCHOR16] cbz w1, .L1697 ldrb w1, [x19, 8] mov w2, w20 cmp w1, 1 bne .L1698 mov w1, 0 .L1740: bl FlashEraseBlocks .L1697: ldrb w1, [x19, 8] mov w2, w20 ldr x0, [x25, #:lo12:.LANCHOR79] mov x24, 0 bl FlashEraseBlocks mov w1, 0 mov x3, 56 .L1699: cmp w20, w24, uxth bhi .L1701 cbz w1, .L1702 mov w0, w22 bl update_multiplier_value bl FtlBbmTblFlush .L1702: ldrb w0, [x19, 7] cbnz w0, .L1703 adrp x0, .LANCHOR85 mov w1, -1 ldr x0, [x0, #:lo12:.LANCHOR85] strh w1, [x0, x21] b .L1727 .L1686: ldrh w3, [x5] stp xzr, xzr, [x0] cmp w3, w6 beq .L1685 umaddl x7, w20, w2, x4 add w20, w20, 1 and w20, w20, 65535 lsl w3, w3, 10 str w3, [x7, 4] .L1685: add x0, x0, 56 add x5, x5, 2 b .L1684 .L1691: mov w0, 2 b .L1739 .L1690: ldrh w0, [x1, x21] add w0, w0, 1 strh w0, [x1, x21] ldr w0, [x4, #:lo12:.LANCHOR173] add w0, w0, 1 str w0, [x4, #:lo12:.LANCHOR173] mov w0, w22 bl ftl_set_blk_mode.part.11 b .L1693 .L1696: ldr w3, [x2] and w3, w3, -1024 str w3, [x2], 56 b .L1695 .L1698: mov w1, 1 b .L1740 .L1701: mul x0, x24, x3 ldr x2, [x25, #:lo12:.LANCHOR79] add x4, x2, x0 ldr w2, [x2, x0] cmn w2, #1 bne .L1700 add w1, w1, 1 ldr w0, [x4, 4] str x3, [x29, 104] stp w2, w1, [x29, 112] lsr w0, w0, 10 bl FtlBbmMapBadBlock ldp w2, w1, [x29, 112] strh w2, [x26] ldr x3, [x29, 104] ldrb w0, [x19, 7] sub w0, w0, #1 strb w0, [x19, 7] .L1700: add x24, x24, 1 add x26, x26, 2 b .L1699 .L1703: adrp x1, .LANCHOR52 adrp x2, .LANCHOR164 strh wzr, [x19, 2] ldrh w1, [x1, #:lo12:.LANCHOR52] strh w22, [x19] strb wzr, [x19, 6] mul w0, w0, w1 ldr w1, [x2, #:lo12:.LANCHOR164] str w1, [x19, 12] add w1, w1, 1 str w1, [x2, #:lo12:.LANCHOR164] adrp x1, .LANCHOR85 and w0, w0, 65535 strh w0, [x19, 4] ldr x1, [x1, #:lo12:.LANCHOR85] strh w0, [x1, x21] ldrh w0, [x19, 4] cbz w0, .L1704 ldrb w0, [x19, 7] cbnz w0, .L1674 .L1704: mov w2, 3642 adrp x1, .LANCHOR212 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR212 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1674: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L1736: mov w0, 0 ret .size allocate_data_superblock, .-allocate_data_superblock .section .text.FtlGcFreeBadSuperBlk,"ax",@progbits .align 2 .global FtlGcFreeBadSuperBlk .type FtlGcFreeBadSuperBlk, %function FtlGcFreeBadSuperBlk: stp x29, x30, [sp, -96]! add x29, sp, 0 stp x21, x22, [sp, 32] adrp x21, .LANCHOR119 stp x25, x26, [sp, 64] and w25, w0, 65535 ldrh w0, [x21, #:lo12:.LANCHOR119] stp x19, x20, [sp, 16] stp x23, x24, [sp, 48] str x27, [sp, 80] cbz w0, .L1742 adrp x23, .LANCHOR120 add x24, x23, :lo12:.LANCHOR120 mov w19, 0 .L1743: adrp x0, .LANCHOR38 ldrh w0, [x0, #:lo12:.LANCHOR38] cmp w0, w19 bhi .L1749 bl FtlGcReFreshBadBlk .L1742: mov w0, 0 ldr x27, [sp, 80] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret .L1749: adrp x0, .LANCHOR47 add x0, x0, :lo12:.LANCHOR47 mov w1, w25 add x22, x21, :lo12:.LANCHOR119 mov w20, 0 ldrb w0, [x0, w19, sxtw] bl V2P_block and w26, w0, 65535 .L1744: ldrh w0, [x22] cmp w0, w20 bhi .L1748 add w19, w19, 1 and w19, w19, 65535 b .L1743 .L1748: add x0, x23, :lo12:.LANCHOR120 add w27, w20, 1 ldrh w0, [x0, w20, sxtw 1] cmp w0, w26 bne .L1745 mov w0, w26 bl FtlBbmMapBadBlock bl FtlBbmTblFlush ldrh w1, [x22] sxtw x3, w27 and x4, x20, 65535 mov x0, 0 .L1746: add w2, w20, w0 cmp w1, w2, uxth bhi .L1747 sub w1, w1, #1 strh w1, [x22] .L1745: and w20, w27, 65535 b .L1744 .L1747: add x2, x3, x0 ldrh w5, [x24, x2, lsl 1] add x2, x4, x0 add x0, x0, 1 strh w5, [x24, x2, lsl 1] b .L1746 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk .section .text.update_vpc_list,"ax",@progbits .align 2 .global update_vpc_list .type update_vpc_list, %function update_vpc_list: stp x29, x30, [sp, -32]! adrp x1, .LANCHOR85 add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 65535 ldr x1, [x1, #:lo12:.LANCHOR85] ubfiz x0, x19, 1, 16 ldrh w0, [x1, x0] cbnz w0, .L1755 adrp x0, .LANCHOR213 ldrh w1, [x0, #:lo12:.LANCHOR213] cmp w1, w19 bne .L1756 mov w1, -1 strh w1, [x0, #:lo12:.LANCHOR213] .L1757: adrp x20, .LANCHOR87 mov w1, w19 adrp x0, .LANCHOR84 add x0, x0, :lo12:.LANCHOR84 bl List_remove_node ldrh w0, [x20, #:lo12:.LANCHOR87] cbnz w0, .L1759 mov w2, 3767 adrp x1, .LANCHOR215 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR215 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1759: ldrh w0, [x20, #:lo12:.LANCHOR87] sub w0, w0, #1 strh w0, [x20, #:lo12:.LANCHOR87] mov w0, w19 bl free_data_superblock mov w0, w19 bl FtlGcFreeBadSuperBlk adrp x0, .LANCHOR90 ldrh w1, [x20, #:lo12:.LANCHOR87] ldrh w0, [x0, #:lo12:.LANCHOR90] add w0, w0, w1 adrp x1, .LANCHOR40 ldrh w1, [x1, #:lo12:.LANCHOR40] cmp w0, w1 ble .L1763 mov w2, 3770 adrp x1, .LANCHOR215 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR215 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1763: mov w0, 1 b .L1754 .L1756: adrp x0, .LANCHOR93 ldrh w0, [x0, #:lo12:.LANCHOR93] cmp w0, w19 beq .L1762 adrp x0, .LANCHOR94 ldrh w0, [x0, #:lo12:.LANCHOR94] cmp w0, w19 beq .L1762 adrp x0, .LANCHOR95 ldrh w0, [x0, #:lo12:.LANCHOR95] cmp w0, w19 bne .L1757 .L1762: mov w0, 0 .L1754: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .L1755: mov w0, w19 bl List_update_data_list b .L1762 .size update_vpc_list, .-update_vpc_list .section .text.decrement_vpc_count,"ax",@progbits .align 2 .global decrement_vpc_count .type decrement_vpc_count, %function decrement_vpc_count: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] and w19, w0, 65535 stp x21, x22, [sp, 32] mov w0, 65535 cmp w19, w0 beq .L1766 adrp x20, .LANCHOR85 ubfiz x21, x19, 1, 16 ldr x1, [x20, #:lo12:.LANCHOR85] ldrh w0, [x1, x21] cbnz w0, .L1767 mov w2, 0 mov w1, w19 adrp x0, .LC38 add x0, x0, :lo12:.LC38 bl printf ldr x0, [x20, #:lo12:.LANCHOR85] ldrh w0, [x0, x21] cbnz w0, .L1768 mov w2, 3786 adrp x1, .LANCHOR216 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR216 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1768: ldr x0, [x20, #:lo12:.LANCHOR85] adrp x6, .LANCHOR89 add x6, x6, :lo12:.LANCHOR89 mov w1, 32 strh w1, [x0, x21] mov w1, w19 mov x0, x6 bl test_node_in_list cbz w0, .L1769 adrp x22, .LANCHOR90 mov w1, w19 mov x0, x6 bl List_remove_node ldrh w0, [x22, #:lo12:.LANCHOR90] cbnz w0, .L1770 mov w2, 3792 adrp x1, .LANCHOR216 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR216 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1770: ldrh w0, [x22, #:lo12:.LANCHOR90] sub w0, w0, #1 strh w0, [x22, #:lo12:.LANCHOR90] mov w0, w19 bl INSERT_DATA_LIST ldr x0, [x20, #:lo12:.LANCHOR85] mov w1, w19 ldrh w2, [x0, x21] adrp x0, .LC39 add x0, x0, :lo12:.LC39 bl printf .L1769: mov w0, w19 bl FtlGcRefreshBlock .L1773: mov w20, 0 b .L1765 .L1767: sub w0, w0, #1 strh w0, [x1, x21] .L1766: adrp x21, .LANCHOR136 mov w1, 65535 ldrh w0, [x21, #:lo12:.LANCHOR136] cmp w0, w1 bne .L1772 strh w19, [x21, #:lo12:.LANCHOR136] b .L1773 .L1772: cmp w19, w0 beq .L1773 bl update_vpc_list cmp w0, 0 adrp x1, .LANCHOR83 adrp x0, .LANCHOR84 strh w19, [x21, #:lo12:.LANCHOR136] cset w20, ne ldr x1, [x1, #:lo12:.LANCHOR83] ldr x0, [x0, #:lo12:.LANCHOR84] sub x0, x0, x1 mov x1, -6148914691236517206 asr x0, x0, 1 movk x1, 0xaaab, lsl 0 mul x0, x0, x1 adrp x1, .LANCHOR85 ldr x1, [x1, #:lo12:.LANCHOR85] and x2, x0, 65535 ldrh w1, [x1, x2, lsl 1] cbnz w1, .L1765 cmp w19, w0, uxth beq .L1765 mov w2, 3816 adrp x1, .LANCHOR216 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR216 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1765: mov w0, w20 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size decrement_vpc_count, .-decrement_vpc_count .section .text.FtlSlcSuperblockCheck,"ax",@progbits .align 2 .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: ldrh w1, [x0, 4] cbz w1, .L1790 stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w20, 65535 ldrh w1, [x0] stp x21, x22, [sp, 32] str x23, [sp, 48] cmp w1, w20 beq .L1778 mov x19, x0 ldrb w0, [x0, 6] adrp x22, .LANCHOR16 adrp x21, .LANCHOR123 add x0, x0, 8 add x23, x22, :lo12:.LANCHOR16 add x21, x21, :lo12:.LANCHOR123 ldrh w0, [x19, x0, lsl 1] .L1782: cmp w0, w20 beq .L1784 ldrb w0, [x19, 8] cmp w0, 1 bne .L1785 ldrb w1, [x23] cbnz w1, .L1785 ldrh w1, [x19, 2] ldrh w1, [x21, x1, lsl 1] cmp w1, w20 bne .L1785 ldrh w0, [x19, 4] sub w0, w0, #1 strh w0, [x19, 4] ldrh w0, [x19] bl decrement_vpc_count ldrh w0, [x19, 4] cbnz w0, .L1784 ldrh w0, [x19, 2] add w0, w0, 1 .L1793: strh w0, [x19, 2] strb wzr, [x19, 6] .L1778: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret .L1784: ldrb w0, [x19, 6] adrp x1, .LANCHOR38 add w0, w0, 1 ldrh w1, [x1, #:lo12:.LANCHOR38] and w0, w0, 255 strb w0, [x19, 6] cmp w1, w0 bne .L1783 ldrh w0, [x19, 2] strb wzr, [x19, 6] add w0, w0, 1 strh w0, [x19, 2] .L1783: ldrb w0, [x19, 6] add x0, x0, 8 ldrh w0, [x19, x0, lsl 1] b .L1782 .L1785: ldrb w1, [x22, #:lo12:.LANCHOR16] cbz w1, .L1778 cmp w0, 1 bne .L1778 adrp x0, .LANCHOR53 ldrh w1, [x19, 2] ldrh w0, [x0, #:lo12:.LANCHOR53] cmp w1, w0 bcc .L1778 ldrh w0, [x19] adrp x1, .LANCHOR85 ldrh w3, [x19, 4] ldr x2, [x1, #:lo12:.LANCHOR85] lsl x0, x0, 1 ldrh w1, [x2, x0] sub w1, w1, w3 strh w1, [x2, x0] adrp x0, .LANCHOR52 strh wzr, [x19, 4] ldrh w0, [x0, #:lo12:.LANCHOR52] b .L1793 .L1790: ret .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .section .text.get_new_active_ppa,"ax",@progbits .align 2 .global get_new_active_ppa .type get_new_active_ppa, %function get_new_active_ppa: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 ldrh w1, [x0] mov w0, 65535 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] cmp w1, w0 str x25, [sp, 64] bne .L1795 mov w2, 3700 adrp x1, .LANCHOR217 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR217 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1795: adrp x20, .LANCHOR52 ldrh w1, [x19, 2] ldrh w0, [x20, #:lo12:.LANCHOR52] cmp w1, w0 bne .L1796 mov w2, 3701 adrp x1, .LANCHOR217 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR217 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1796: ldrh w0, [x19, 4] cbnz w0, .L1797 mov w2, 3702 adrp x1, .LANCHOR217 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR217 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1797: ldrb w0, [x19, 6] adrp x21, .LANCHOR38 strb wzr, [x19, 10] adrp x23, .LANCHOR16 add x0, x0, 8 adrp x24, .LANCHOR123 add x23, x23, :lo12:.LANCHOR16 add x24, x24, :lo12:.LANCHOR123 add x25, x21, :lo12:.LANCHOR38 ldrh w22, [x19, x0, lsl 1] .L1798: mov w2, 65535 cmp w22, w2 beq .L1799 ldrb w0, [x19, 8] ldrh w1, [x19, 4] cmp w0, 1 ldrh w0, [x19, 2] bne .L1801 ldrb w3, [x23] cbnz w3, .L1801 ldrh w3, [x24, w0, sxtw 1] cmp w3, w2 bne .L1801 ldrh w0, [x19] sub w1, w1, #1 strh w1, [x19, 4] bl decrement_vpc_count .L1799: ldrb w0, [x19, 6] ldrh w1, [x25] add w0, w0, 1 and w0, w0, 255 strb w0, [x19, 6] cmp w1, w0 bne .L1800 ldrh w0, [x19, 2] strb wzr, [x19, 6] add w0, w0, 1 strh w0, [x19, 2] .L1800: ldrb w0, [x19, 6] add x0, x0, 8 ldrh w22, [x19, x0, lsl 1] b .L1798 .L1801: adrp x23, .LANCHOR16 adrp x24, .LANCHOR123 orr w22, w0, w22, lsl 10 add x23, x23, :lo12:.LANCHOR16 add x24, x24, :lo12:.LANCHOR123 sub w1, w1, #1 strh w1, [x19, 4] .L1802: ldrb w0, [x19, 6] mov w1, 65535 ldrh w3, [x21, #:lo12:.LANCHOR38] .L1804: add w0, w0, 1 and w0, w0, 255 cmp w0, w3 bne .L1803 ldrh w0, [x19, 2] add w0, w0, 1 strh w0, [x19, 2] mov w0, 0 .L1803: add x2, x19, x0, sxtw 1 ldrh w2, [x2, 16] cmp w2, w1 beq .L1804 strb w0, [x19, 6] ldrb w0, [x19, 8] cmp w0, 1 bne .L1805 ldrb w2, [x23] ldrh w0, [x19, 2] cbnz w2, .L1806 ldrh w0, [x24, w0, sxtw 1] cmp w0, w1 bne .L1805 ldrh w0, [x19, 4] cbz w0, .L1805 sub w0, w0, #1 strh w0, [x19, 4] ldrh w0, [x19] bl decrement_vpc_count b .L1802 .L1806: adrp x1, .LANCHOR53 ldrh w1, [x1, #:lo12:.LANCHOR53] cmp w0, w1 bcc .L1805 ldrh w0, [x19] adrp x1, .LANCHOR85 ldrh w3, [x19, 4] ldr x2, [x1, #:lo12:.LANCHOR85] lsl x0, x0, 1 ldrh w1, [x2, x0] sub w1, w1, w3 strh w1, [x2, x0] strh wzr, [x19, 4] ldrh w0, [x20, #:lo12:.LANCHOR52] strh w0, [x19, 2] strb wzr, [x19, 6] .L1805: ldrh w1, [x19, 2] ldrh w0, [x20, #:lo12:.LANCHOR52] cmp w1, w0 bne .L1794 ldrh w0, [x19, 4] cbz w0, .L1794 mov w2, 3752 adrp x1, .LANCHOR217 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR217 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1794: mov w0, w22 ldr x25, [sp, 64] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret .size get_new_active_ppa, .-get_new_active_ppa .section .text.FtlVpcTblFlush,"ax",@progbits .align 2 .global FtlVpcTblFlush .type FtlVpcTblFlush, %function FtlVpcTblFlush: stp x29, x30, [sp, -128]! adrp x0, .LANCHOR78 add x29, sp, 0 ldr w1, [x0, #:lo12:.LANCHOR78] stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] str x0, [x29, 112] cbnz w1, .L1819 adrp x25, .LANCHOR195 adrp x27, .LANCHOR218 adrp x23, .LANCHOR189 adrp x20, .LANCHOR211 ldr x19, [x25, #:lo12:.LANCHOR195] add x22, x20, :lo12:.LANCHOR211 ldr x0, [x23, #:lo12:.LANCHOR189] add x1, x27, :lo12:.LANCHOR218 ldrh w2, [x27, #:lo12:.LANCHOR218] mov w3, 19539 stp x0, x19, [x22, 8] movk w3, 0x4654, lsl 16 strh w2, [x19, 2] mov w2, -3932 strh w2, [x19] adrp x24, .LANCHOR164 ldr w2, [x1, 8] adrp x26, .LANCHOR57 ldrh w1, [x1, 6] stp w2, wzr, [x19, 4] adrp x2, .LANCHOR82 add x21, x2, :lo12:.LANCHOR82 str wzr, [x19, 12] str w3, [x2, #:lo12:.LANCHOR82] mov w2, 99 movk w2, 0x5000, lsl 16 strh w1, [x21, 8] adrp x1, .LANCHOR45 str w2, [x21, 4] adrp x2, .LANCHOR93 ldrh w1, [x1, #:lo12:.LANCHOR45] strb w1, [x21, 10] add x1, x2, :lo12:.LANCHOR93 ldrh w2, [x2, #:lo12:.LANCHOR93] strh w2, [x21, 14] ldrb w3, [x1, 6] ldrh w2, [x1, 2] ldrb w1, [x1, 8] strb w1, [x21, 11] orr w2, w3, w2, lsl 6 strh w2, [x21, 16] adrp x2, .LANCHOR94 add x1, x2, :lo12:.LANCHOR94 ldrh w2, [x2, #:lo12:.LANCHOR94] ldrb w3, [x1, 6] strh w2, [x21, 18] ldrh w2, [x1, 2] ldrb w1, [x1, 8] strb w1, [x21, 12] orr w2, w3, w2, lsl 6 strh w2, [x21, 20] adrp x2, .LANCHOR95 add x1, x2, :lo12:.LANCHOR95 ldrh w2, [x2, #:lo12:.LANCHOR95] strh w2, [x21, 22] ldrb w3, [x1, 6] ldrh w2, [x1, 2] ldrb w1, [x1, 8] strb w1, [x21, 13] adrp x1, .LANCHOR172 orr w2, w3, w2, lsl 6 strh w2, [x21, 24] ldr w1, [x1, #:lo12:.LANCHOR172] str w1, [x21, 32] ldr w1, [x24, #:lo12:.LANCHOR164] str w1, [x21, 40] adrp x1, .LANCHOR165 ldrh w2, [x26, #:lo12:.LANCHOR57] ldr w1, [x1, #:lo12:.LANCHOR165] str w1, [x21, 36] adrp x1, .LANCHOR115 ldrh w1, [x1, #:lo12:.LANCHOR115] strh w1, [x21, 44] adrp x1, .LANCHOR116 ldrh w1, [x1, #:lo12:.LANCHOR116] strh w1, [x21, 46] mov w1, 255 bl ftl_memset ldr x0, [x22, 8] mov x1, x21 mov w2, 48 adrp x21, .LANCHOR40 bl ftl_memcpy adrp x1, .LANCHOR85 ldrh w2, [x21, #:lo12:.LANCHOR40] ldr x0, [x22, 8] ldr x1, [x1, #:lo12:.LANCHOR85] lsl w2, w2, 1 add x0, x0, 48 bl ftl_memcpy ldrh w0, [x21, #:lo12:.LANCHOR40] adrp x1, .LANCHOR1 ldr x3, [x22, 8] ldr x1, [x1, #:lo12:.LANCHOR1] lsr w2, w0, 3 ubfiz x0, x0, 1, 16 add x0, x0, 51 add w2, w2, 4 and x0, x0, -4 add x0, x3, x0 bl ftl_memcpy adrp x0, .LANCHOR69 str x26, [x29, 104] ldrh w0, [x0, #:lo12:.LANCHOR69] cbz w0, .L1820 ldrh w0, [x21, #:lo12:.LANCHOR40] adrp x1, .LANCHOR66 ldr x3, [x22, 8] ldrh w2, [x1, #:lo12:.LANCHOR66] lsr w1, w0, 3 add w0, w1, w0, lsl 1 adrp x1, .LANCHOR134 add w0, w0, 52 lsl w2, w2, 2 ldr x1, [x1, #:lo12:.LANCHOR134] and x0, x0, 65532 add x0, x3, x0 bl ftl_memcpy .L1820: mov w0, 0 bl FtlUpdateVaildLpn adrp x0, .LANCHOR2 add x22, x20, :lo12:.LANCHOR211 add x0, x0, :lo12:.LANCHOR2 add x28, x27, :lo12:.LANCHOR218 str x0, [x29, 120] adrp x27, .LANCHOR53 mov w21, 0 add x0, x27, :lo12:.LANCHOR53 mov w26, 65535 str x0, [x29, 96] .L1821: ldrh w2, [x28, 2] ldrh w1, [x28] ldr x0, [x23, #:lo12:.LANCHOR189] str x0, [x22, 8] ldr x0, [x25, #:lo12:.LANCHOR195] str x0, [x22, 16] orr w0, w2, w1, lsl 10 str w0, [x22, 4] ldrh w0, [x27, #:lo12:.LANCHOR53] sub w0, w0, #1 cmp w2, w0 blt .L1822 ldrh w26, [x28, 4] strh wzr, [x28, 2] strh w1, [x28, 4] bl FtlFreeSysBlkQueueOut ldr w1, [x24, #:lo12:.LANCHOR164] str w1, [x28, 8] add w2, w1, 1 str w2, [x24, #:lo12:.LANCHOR164] ubfiz w2, w0, 10, 16 str w2, [x22, 4] strh w0, [x28] strh w0, [x19, 2] str w1, [x19, 4] .L1822: ldr x0, [x29, 120] ldrb w0, [x0] cbz w0, .L1823 ldr x0, [x29, 104] ldrh w1, [x0, #:lo12:.LANCHOR57] ldr x0, [x23, #:lo12:.LANCHOR189] bl js_hash str w0, [x19, 12] .L1823: mov w3, 1 mov x0, x22 mov w1, w3 mov w2, w3 bl FlashProgPages ldrh w0, [x28, 2] ldr w1, [x22] add w0, w0, 1 and w0, w0, 65535 strh w0, [x28, 2] cmn w1, #1 bne .L1824 cmp w0, 1 bne .L1825 mov w2, 1375 adrp x1, .LANCHOR219 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR219 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1825: ldrh w0, [x28, 2] cmp w0, 1 bne .L1826 ldr x0, [x29, 96] ldrh w0, [x0] sub w0, w0, #1 strh w0, [x28, 2] .L1826: add w21, w21, 1 and w21, w21, 65535 cmp w21, 3 bls .L1821 add x20, x20, :lo12:.LANCHOR211 mov w2, w21 adrp x0, .LC40 add x0, x0, :lo12:.LC40 ldr w1, [x20, 4] bl printf ldr x1, [x29, 112] mov w0, 1 str w0, [x1, #:lo12:.LANCHOR78] .L1819: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L1824: cmp w0, 1 beq .L1821 cmp w1, 256 beq .L1821 mov w0, 65535 cmp w26, w0 beq .L1819 mov w1, 1 mov w0, w26 bl FtlFreeSysBlkQueueIn b .L1819 .size FtlVpcTblFlush, .-FtlVpcTblFlush .section .text.FtlSuperblockPowerLostFix,"ax",@progbits .align 2 .global FtlSuperblockPowerLostFix .type FtlSuperblockPowerLostFix, %function FtlSuperblockPowerLostFix: stp x29, x30, [sp, -128]! adrp x1, .LANCHOR78 add x29, sp, 0 str x23, [sp, 48] ldr w23, [x1, #:lo12:.LANCHOR78] stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] cbnz w23, .L1842 adrp x1, .LANCHOR16 ldrb w1, [x1, #:lo12:.LANCHOR16] cbz w1, .L1853 ldrb w1, [x0, 8] cmp w1, 1 bne .L1853 ldrh w21, [x0, 4] mov w23, w1 .L1844: adrp x1, .LANCHOR195 mov x19, x0 mov w0, -1 str w0, [x29, 96] ldr x20, [x1, #:lo12:.LANCHOR195] adrp x0, .LANCHOR189 str x20, [x29, 88] mov w1, -3 ldr x0, [x0, #:lo12:.LANCHOR189] adrp x22, .LANCHOR165 str x0, [x29, 80] add x22, x22, :lo12:.LANCHOR165 str w1, [x20, 8] mov w1, -2 str w1, [x20, 12] ldrh w1, [x19] strh w1, [x20, 2] strh wzr, [x20] mov w1, 61589 str w1, [x0] mov w1, 22136 movk w1, 0x1234, lsl 16 str w1, [x0, 4] .L1845: sub w21, w21, #1 cmn w21, #1 beq .L1848 ldrh w0, [x19, 4] cbnz w0, .L1846 .L1848: ldrh w0, [x19] adrp x1, .LANCHOR85 ldrh w3, [x19, 4] ldr x2, [x1, #:lo12:.LANCHOR85] lsl x0, x0, 1 ldrh w1, [x2, x0] sub w1, w1, w3 strh w1, [x2, x0] adrp x0, .LANCHOR52 strb wzr, [x19, 6] strh wzr, [x19, 4] ldrh w0, [x0, #:lo12:.LANCHOR52] strh w0, [x19, 2] .L1842: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldr x23, [sp, 48] ldp x29, x30, [sp], 128 ret .L1853: mov w21, 12 b .L1844 .L1846: mov x0, x19 bl get_new_active_ppa str w0, [x29, 76] cmn w0, #1 beq .L1848 ldr w0, [x22] mov w3, 0 str w0, [x20, 4] mov w2, w23 add w0, w0, 1 mov w1, 1 cmn w0, #1 csel w0, w0, wzr, ne str w0, [x22] add x0, x29, 72 bl FlashProgPages ldrh w0, [x19] bl decrement_vpc_count b .L1845 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix .section .text.FtlLoadFactoryBbt,"ax",@progbits .align 2 .global FtlLoadFactoryBbt .type FtlLoadFactoryBbt, %function FtlLoadFactoryBbt: stp x29, x30, [sp, -112]! adrp x2, .LANCHOR189 adrp x0, .LANCHOR211 add x1, x0, :lo12:.LANCHOR211 add x29, sp, 0 ldr x2, [x2, #:lo12:.LANCHOR189] stp x21, x22, [sp, 32] mov x22, x0 stp x25, x26, [sp, 64] adrp x26, .LANCHOR51 stp x27, x28, [sp, 80] add x28, x26, :lo12:.LANCHOR51 stp x19, x20, [sp, 16] adrp x20, .LANCHOR76 stp x23, x24, [sp, 48] add x20, x20, :lo12:.LANCHOR76 str x2, [x1, 8] adrp x2, .LANCHOR195 adrp x23, .LANCHOR45 add x20, x20, 12 ldr x25, [x2, #:lo12:.LANCHOR195] add x23, x23, :lo12:.LANCHOR45 mov w21, 0 mov w27, -1 str x25, [x1, 16] .L1859: ldrh w0, [x23] cmp w21, w0 bcc .L1864 ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L1864: ldrh w19, [x26, #:lo12:.LANCHOR51] add x24, x22, :lo12:.LANCHOR211 strh w27, [x20] mov w3, 61664 sub w19, w19, #1 and w19, w19, 65535 .L1860: ldrh w0, [x28] sub w1, w0, #15 cmp w1, w19 bgt .L1862 madd w0, w0, w21, w19 mov w2, 1 str w3, [x29, 108] mov w1, w2 lsl w0, w0, 10 str w0, [x24, 4] mov x0, x24 bl FlashReadPages ldr w0, [x24] ldr w3, [x29, 108] cmn w0, #1 beq .L1861 ldrh w0, [x25] cmp w0, w3 bne .L1861 strh w19, [x20] .L1862: add w21, w21, 1 add x20, x20, 2 b .L1859 .L1861: sub w19, w19, #1 and w19, w19, 65535 b .L1860 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .section .text.FtlGetLastWrittenPage,"ax",@progbits .align 2 .global FtlGetLastWrittenPage .type FtlGetLastWrittenPage, %function FtlGetLastWrittenPage: stp x29, x30, [sp, -192]! cmp w1, 1 add x29, sp, 0 stp x23, x24, [sp, 48] mov w23, w1 stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] bne .L1870 adrp x1, .LANCHOR53 ldrh w19, [x1, #:lo12:.LANCHOR53] .L1871: sub w19, w19, #1 lsl w21, w0, 10 sxth w19, w19 add x1, x29, 128 orr w0, w19, w21 stp xzr, x1, [x29, 80] str w0, [x29, 76] mov w2, w23 mov w1, 1 add x0, x29, 72 bl FlashReadPages ldr w0, [x29, 128] cmn w0, #1 bne .L1872 mov w22, 0 mov w24, 2 .L1873: cmp w22, w19 ble .L1876 .L1872: mov w0, w19 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 192 ret .L1870: adrp x1, .LANCHOR52 ldrh w19, [x1, #:lo12:.LANCHOR52] b .L1871 .L1876: add w20, w22, w19 mov w2, w23 mov w1, 1 sdiv w20, w20, w24 sxth w0, w20 orr w0, w0, w21 str w0, [x29, 76] add x0, x29, 72 bl FlashReadPages ldr w0, [x29, 128] cmn w0, #1 bne .L1874 ldr w0, [x29, 132] cmn w0, #1 bne .L1874 ldr w0, [x29, 72] cmn w0, #1 beq .L1874 sub w19, w20, #1 sxth w19, w19 b .L1873 .L1874: add w20, w20, 1 sxth w22, w20 b .L1873 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage .section .text.FtlLoadBbt,"ax",@progbits .align 2 .global FtlLoadBbt .type FtlLoadBbt, %function FtlLoadBbt: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x23, x24, [sp, 48] adrp x23, .LANCHOR189 stp x19, x20, [sp, 16] adrp x24, .LANCHOR51 stp x21, x22, [sp, 32] adrp x22, .LANCHOR211 add x20, x22, :lo12:.LANCHOR211 ldr x0, [x23, #:lo12:.LANCHOR189] str x25, [sp, 64] mov w25, 61649 str x0, [x20, 8] adrp x0, .LANCHOR195 ldr x21, [x0, #:lo12:.LANCHOR195] str x21, [x20, 16] bl FtlBbtMemInit ldrh w19, [x24, #:lo12:.LANCHOR51] add x24, x24, :lo12:.LANCHOR51 sub w19, w19, #1 and w19, w19, 65535 .L1882: ldrh w0, [x24] sub w0, w0, #47 cmp w0, w19 bgt .L1885 lsl w0, w19, 10 mov w2, 1 str w0, [x20, 4] mov w1, w2 mov x0, x20 bl FlashReadPages ldr w0, [x20] cmn w0, #1 bne .L1883 ldr w0, [x20, 4] mov w2, 1 mov w1, w2 add w0, w0, 1 str w0, [x20, 4] mov x0, x20 bl FlashReadPages .L1883: ldr w0, [x20] cmn w0, #1 beq .L1884 ldrh w0, [x21] cmp w0, w25 bne .L1884 adrp x1, .LANCHOR76 add x0, x1, :lo12:.LANCHOR76 strh w19, [x1, #:lo12:.LANCHOR76] ldr w1, [x21, 4] str w1, [x0, 8] ldrh w1, [x21, 8] strh w1, [x0, 4] .L1885: adrp x19, .LANCHOR76 mov w0, 65535 add x20, x19, :lo12:.LANCHOR76 ldrh w1, [x19, #:lo12:.LANCHOR76] cmp w1, w0 beq .L1899 ldrh w1, [x20, 4] cmp w1, w0 beq .L1889 add x0, x22, :lo12:.LANCHOR211 lsl w1, w1, 10 mov w2, 1 str w1, [x0, 4] mov w1, w2 bl FlashReadPages ldr w0, [x22, #:lo12:.LANCHOR211] cmn w0, #1 beq .L1889 ldrh w1, [x21] mov w0, 61649 cmp w1, w0 bne .L1889 ldr w1, [x20, 8] ldr w0, [x21, 4] cmp w0, w1 bls .L1889 ldrh w1, [x20, 4] str w0, [x20, 8] ldrh w0, [x21, 8] strh w1, [x19, #:lo12:.LANCHOR76] strh w0, [x20, 4] .L1889: ldrh w0, [x19, #:lo12:.LANCHOR76] add x24, x19, :lo12:.LANCHOR76 mov w1, 1 mov w25, 61649 bl FtlGetLastWrittenPage sxth w20, w0 add w0, w0, 1 strh w0, [x24, 2] add x24, x22, :lo12:.LANCHOR211 .L1891: tbz w20, #31, .L1894 mov w2, 339 adrp x1, .LANCHOR220 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR220 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1893: add x0, x19, :lo12:.LANCHOR76 ldrh w1, [x21, 10] strh w1, [x0, 6] mov w1, 65535 ldrh w0, [x21, 12] cmp w0, w1 beq .L1896 adrp x1, .LANCHOR37 ldr w2, [x1, #:lo12:.LANCHOR37] cmp w0, w2 beq .L1896 adrp x1, .LANCHOR41 ldrh w1, [x1, #:lo12:.LANCHOR41] lsr w1, w1, 2 cmp w2, w1 bcs .L1896 cmp w0, w1 bcs .L1896 bl FtlSysBlkNumInit .L1896: add x19, x19, :lo12:.LANCHOR76 adrp x21, .LANCHOR45 adrp x23, .LANCHOR126 add x19, x19, 32 add x21, x21, :lo12:.LANCHOR45 add x23, x23, :lo12:.LANCHOR126 add x22, x22, :lo12:.LANCHOR211 mov w20, 0 .L1897: ldrh w0, [x21] cmp w20, w0 bcc .L1898 mov w0, 0 .L1881: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldr x25, [sp, 64] ldp x29, x30, [sp], 80 ret .L1884: sub w19, w19, #1 and w19, w19, 65535 b .L1882 .L1894: ldrh w0, [x19, #:lo12:.LANCHOR76] mov w2, 1 mov w1, w2 orr w0, w20, w0, lsl 10 str w0, [x24, 4] ldr x0, [x23, #:lo12:.LANCHOR189] str x0, [x24, 8] mov x0, x24 bl FlashReadPages ldr w0, [x24] cmn w0, #1 beq .L1892 ldrh w0, [x21] cmp w0, w25 beq .L1893 .L1892: sub w20, w20, #1 sxth w20, w20 b .L1891 .L1898: ldrh w2, [x23] ldr x0, [x22, 8] mul w1, w2, w20 lsl w2, w2, 2 add w20, w20, 1 add x1, x0, x1, lsl 2 ldr x0, [x19], 8 bl ftl_memcpy b .L1897 .L1899: mov w0, -1 b .L1881 .size FtlLoadBbt, .-FtlLoadBbt .section .text.ftl_map_blk_gc,"ax",@progbits .align 2 .global ftl_map_blk_gc .type ftl_map_blk_gc, %function ftl_map_blk_gc: stp x29, x30, [sp, -112]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 stp x25, x26, [sp, 64] adrp x25, .LANCHOR53 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] stp x27, x28, [sp, 80] ldr x20, [x0, 16] ldr x26, [x0, 40] bl ftl_free_no_use_map_blk ldrh w1, [x19, 10] ldrh w2, [x19, 8] sub w1, w1, #4 cmp w2, w1 blt .L1912 ubfiz x0, x0, 1, 16 ldrh w21, [x20, x0] cbz w21, .L1912 ldr w1, [x19, 52] cbnz w1, .L1912 mov w1, 1 str w1, [x19, 52] strh wzr, [x20, x0] ldrh w0, [x19, 8] ldrh w1, [x19, 2] sub w0, w0, #1 strh w0, [x19, 8] ldrh w0, [x25, #:lo12:.LANCHOR53] cmp w1, w0 bcc .L1913 mov x0, x19 bl ftl_map_blk_alloc_new_blk .L1913: adrp x22, .LANCHOR211 adrp x24, .LANCHOR221 mov x23, x22 add x27, x22, :lo12:.LANCHOR211 add x24, x24, :lo12:.LANCHOR221 mov w20, 0 .L1914: ldrh w0, [x19, 6] cmp w0, w20 bhi .L1920 mov w1, 1 mov w0, w21 bl FtlFreeSysBlkQueueIn str wzr, [x19, 52] .L1912: ldrh w1, [x19, 2] ldrh w0, [x25, #:lo12:.LANCHOR53] cmp w1, w0 bcc .L1918 mov x0, x19 bl ftl_map_blk_alloc_new_blk b .L1918 .L1920: ubfiz x0, x20, 2, 16 add x1, x26, x0 str x1, [x29, 104] ldr w1, [x26, x0] cmp w21, w1, lsr 10 bne .L1915 adrp x2, .LANCHOR190 add x0, x22, :lo12:.LANCHOR211 ldr x2, [x2, #:lo12:.LANCHOR190] str x2, [x0, 8] adrp x2, .LANCHOR195 str w1, [x0, 4] ldr x28, [x2, #:lo12:.LANCHOR195] mov w2, 1 str x28, [x0, 16] mov w1, w2 bl FlashReadPages ldrh w0, [x28, 8] cmp w0, w20 beq .L1916 mov w2, 752 mov x1, x24 adrp x0, .LC5 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1916: ldr w0, [x27] ldrh w2, [x28, 8] cmn w0, #1 bne .L1917 .L1919: ldr x0, [x29, 104] add x23, x23, :lo12:.LANCHOR211 str wzr, [x0] adrp x0, .LC41 add x0, x0, :lo12:.LC41 ldr w1, [x23, 4] bl printf adrp x0, .LANCHOR78 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR78] .L1918: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L1917: cmp w2, w20 bne .L1919 ldrh w1, [x28] ldrh w0, [x19, 4] cmp w1, w0 bne .L1919 ldr x2, [x27, 8] mov w1, w20 mov x0, x19 bl FtlMapWritePage .L1915: add w20, w20, 1 and w20, w20, 65535 b .L1914 .size ftl_map_blk_gc, .-ftl_map_blk_gc .section .text.Ftl_write_map_blk_to_last_page,"ax",@progbits .align 2 .global Ftl_write_map_blk_to_last_page .type Ftl_write_map_blk_to_last_page, %function Ftl_write_map_blk_to_last_page: adrp x1, .LANCHOR78 ldr w1, [x1, #:lo12:.LANCHOR78] cbnz w1, .L1940 stp x29, x30, [sp, -64]! mov w1, 65535 add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 stp x21, x22, [sp, 32] ldrh w0, [x0] stp x23, x24, [sp, 48] cmp w0, w1 ldr x20, [x19, 16] bne .L1927 ldrh w0, [x19, 8] cbz w0, .L1928 mov w2, 793 adrp x1, .LANCHOR222 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR222 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1928: ldrh w0, [x19, 8] add w0, w0, 1 strh w0, [x19, 8] bl FtlFreeSysBlkQueueOut strh w0, [x20] ldr w0, [x19, 48] strh wzr, [x19, 2] add w0, w0, 1 strh wzr, [x19] str w0, [x19, 48] .L1926: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .L1927: ubfiz x0, x0, 1, 16 adrp x2, .LANCHOR195 adrp x21, .LANCHOR211 add x1, x21, :lo12:.LANCHOR211 adrp x24, .LANCHOR189 ldr x23, [x19, 40] ldrh w22, [x20, x0] ldrh w0, [x19, 2] ldr x20, [x2, #:lo12:.LANCHOR195] str x20, [x1, 16] orr w0, w0, w22, lsl 10 str w0, [x1, 4] ldr x0, [x24, #:lo12:.LANCHOR189] str x0, [x1, 8] ldr w1, [x19, 48] str w1, [x20, 4] mov w1, -1291 strh w1, [x20, 8] ldrh w1, [x19, 4] strh w1, [x20] adrp x1, .LANCHOR53 strh w22, [x20, 2] ldrh w2, [x1, #:lo12:.LANCHOR53] mov w1, 255 lsl w2, w2, 3 bl ftl_memset ldrh w4, [x19, 6] mov x1, 0 ldr x3, [x24, #:lo12:.LANCHOR189] mov w0, 0 .L1929: cmp w4, w1, uxth bhi .L1931 adrp x0, .LANCHOR2 ldrb w0, [x0, #:lo12:.LANCHOR2] cbz w0, .L1932 add x0, x21, :lo12:.LANCHOR211 adrp x1, .LANCHOR57 ldrh w1, [x1, #:lo12:.LANCHOR57] ldr x0, [x0, 8] bl js_hash str w0, [x20, 12] .L1932: mov w2, 1 mov w3, 0 mov w1, w2 add x0, x21, :lo12:.LANCHOR211 bl FlashProgPages ldrh w0, [x19, 2] add w0, w0, 1 strh w0, [x19, 2] mov x0, x19 bl ftl_map_blk_gc b .L1926 .L1931: ldr w2, [x23, x1, lsl 2] cmp w22, w2, lsr 10 bne .L1930 add w0, w0, 1 and w0, w0, 65535 ubfiz x2, x0, 1, 16 str w1, [x3, x2, lsl 2] add x2, x2, 1 ldr w5, [x23, x1, lsl 2] str w5, [x3, x2, lsl 2] .L1930: add x1, x1, 1 b .L1929 .L1940: mov w0, 0 ret .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page .section .text.FtlMapWritePage,"ax",@progbits .align 2 .global FtlMapWritePage .type FtlMapWritePage, %function FtlMapWritePage: stp x29, x30, [sp, -112]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w19, 0 stp x25, x26, [sp, 64] adrp x26, .LANCHOR53 stp x27, x28, [sp, 80] mov w25, w1 stp x21, x22, [sp, 32] mov x27, x0 adrp x22, .LANCHOR211 stp x23, x24, [sp, 48] mov x20, x22 add x23, x22, :lo12:.LANCHOR211 add x28, x26, :lo12:.LANCHOR53 str x2, [x29, 104] .L1944: adrp x1, .LANCHOR170 ldr w0, [x1, #:lo12:.LANCHOR170] add w0, w0, 1 str w0, [x1, #:lo12:.LANCHOR170] ldrh w0, [x26, #:lo12:.LANCHOR53] ldrh w1, [x27, 2] sub w0, w0, #1 cmp w1, w0 bge .L1945 ldrh w1, [x27] mov w0, 65535 cmp w1, w0 bne .L1946 .L1945: mov x0, x27 bl Ftl_write_map_blk_to_last_page .L1946: adrp x21, .LANCHOR78 ldr w0, [x21, #:lo12:.LANCHOR78] cbnz w0, .L1961 ldrh w1, [x27] ldr x0, [x27, 16] ldrh w0, [x0, x1, lsl 1] cbnz w0, .L1948 mov w2, 865 adrp x1, .LANCHOR223 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR223 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1948: ldrh w1, [x27] ldrh w0, [x27, 10] cmp w1, w0 bcc .L1949 mov w2, 866 adrp x1, .LANCHOR223 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR223 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L1949: ldrh w1, [x27] add x3, x22, :lo12:.LANCHOR211 ldr x0, [x27, 16] mov w2, 16 str x3, [x29, 96] ldrh w24, [x0, x1, lsl 1] mov w1, 0 ldrh w0, [x27, 2] orr w0, w0, w24, lsl 10 str w0, [x3, 4] ldr x0, [x29, 104] str x0, [x3, 8] adrp x0, .LANCHOR195 ldr x0, [x0, #:lo12:.LANCHOR195] str x0, [x3, 16] bl ftl_memset ldr x3, [x29, 96] ldr w0, [x27, 48] ldr x6, [x3, 16] str w0, [x6, 4] ldrh w0, [x27, 4] strh w0, [x6] adrp x0, .LANCHOR2 strh w25, [x6, 8] strh w24, [x6, 2] ldrb w0, [x0, #:lo12:.LANCHOR2] cbz w0, .L1950 adrp x0, .LANCHOR57 ldrh w1, [x0, #:lo12:.LANCHOR57] ldr x0, [x3, 8] bl js_hash str w0, [x6, 12] .L1950: mov w3, 1 mov x0, x23 mov w1, w3 mov w2, w3 bl FlashProgPages ldrh w0, [x27, 2] ldr w1, [x23] add w0, w0, 1 and w0, w0, 65535 strh w0, [x27, 2] cmn w1, #1 bne .L1951 ldr w1, [x23, 4] adrp x0, .LC42 add x0, x0, :lo12:.LC42 add w19, w19, 1 and w19, w19, 65535 bl printf ldrh w0, [x27, 2] cmp w0, 2 bhi .L1952 ldrh w0, [x28] sub w0, w0, #1 strh w0, [x27, 2] .L1952: cmp w19, 3 bls .L1944 add x20, x20, :lo12:.LANCHOR211 mov w2, w19 adrp x0, .LC43 add x0, x0, :lo12:.LC43 ldr w1, [x20, 4] bl printf mov w0, 1 str w0, [x21, #:lo12:.LANCHOR78] .L1961: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L1951: cbz w1, .L1954 strh w24, [x27, 60] cmp w0, 1 bne .L1955 .L1956: str wzr, [x27, 56] b .L1944 .L1955: cmp w1, 256 .L1969: beq .L1956 ldr w0, [x27, 56] cbnz w0, .L1956 add x20, x20, :lo12:.LANCHOR211 ldr x0, [x27, 40] ldr w1, [x20, 4] str w1, [x0, w25, uxtw 2] b .L1961 .L1954: cmp w0, 1 b .L1969 .size FtlMapWritePage, .-FtlMapWritePage .section .text.flush_l2p_region,"ax",@progbits .align 2 .global flush_l2p_region .type flush_l2p_region, %function flush_l2p_region: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR98 ubfiz x19, x0, 4, 16 ldr x0, [x20, #:lo12:.LANCHOR98] add x1, x0, x19 ldr x2, [x1, 8] ldrh w1, [x0, x19] adrp x0, .LANCHOR130 add x0, x0, :lo12:.LANCHOR130 bl FtlMapWritePage ldr x0, [x20, #:lo12:.LANCHOR98] add x0, x0, x19 ldp x19, x20, [sp, 16] ldr w1, [x0, 4] and w1, w1, 2147483647 str w1, [x0, 4] mov w0, 0 ldp x29, x30, [sp], 32 ret .size flush_l2p_region, .-flush_l2p_region .section .text.l2p_flush,"ax",@progbits .align 2 .global l2p_flush .type l2p_flush, %function l2p_flush: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR67 add x20, x20, :lo12:.LANCHOR67 str x21, [sp, 32] mov w19, 0 adrp x21, .LANCHOR98 .L1973: ldrh w0, [x20] cmp w0, w19 bhi .L1975 mov w0, 0 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .L1975: ldr x1, [x21, #:lo12:.LANCHOR98] ubfiz x0, x19, 4, 16 add x0, x1, x0 ldr w0, [x0, 4] tbz w0, #31, .L1974 mov w0, w19 bl flush_l2p_region .L1974: add w19, w19, 1 and w19, w19, 65535 b .L1973 .size l2p_flush, .-l2p_flush .section .text.FtlVendorPartWrite,"ax",@progbits .align 2 .global FtlVendorPartWrite .type FtlVendorPartWrite, %function FtlVendorPartWrite: stp x29, x30, [sp, -176]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w20, w1 stp x21, x22, [sp, 32] add w1, w0, w1 mov w22, w0 adrp x0, .LANCHOR50 stp x23, x24, [sp, 48] ldrh w0, [x0, #:lo12:.LANCHOR50] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] cmp w1, w0 bhi .L1985 adrp x0, .LANCHOR56 adrp x26, .LANCHOR55 adrp x27, .LANCHOR57 mov x25, x2 ldrh w21, [x0, #:lo12:.LANCHOR56] add x26, x26, :lo12:.LANCHOR55 add x27, x27, :lo12:.LANCHOR57 mov w24, 0 lsr w21, w22, w21 .L1979: cbnz w20, .L1984 .L1977: mov w0, w24 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L1984: ldrh w1, [x26] adrp x0, .LANCHOR202 adrp x28, .LANCHOR191 ldr x0, [x0, #:lo12:.LANCHOR202] udiv w23, w22, w1 ldr w2, [x0, w21, uxtw 2] and w0, w20, 65535 msub w23, w23, w1, w22 sub w19, w1, w23 and w19, w19, 65535 cmp w20, w19 csel w19, w0, w19, cc cbz w2, .L1981 cmp w19, w1 beq .L1981 ldr x0, [x28, #:lo12:.LANCHOR191] str w2, [x29, 124] mov w2, 1 stp x0, xzr, [x29, 128] mov w1, w2 add x0, x29, 120 bl FlashReadPages .L1982: lsl w3, w19, 9 ldr x0, [x28, #:lo12:.LANCHOR191] lsl w23, w23, 7 mov w2, w3 mov x1, x25 str w3, [x29, 108] add x0, x0, x23, sxtw 2 bl ftl_memcpy ldr x2, [x28, #:lo12:.LANCHOR191] mov w1, w21 adrp x0, .LANCHOR224 add x0, x0, :lo12:.LANCHOR224 sub w20, w20, w19 add w22, w22, w19 add w21, w21, 1 bl FtlMapWritePage cmn w0, #1 ldr w3, [x29, 108] csinv w24, w24, wzr, ne add x25, x25, x3, sxtw b .L1979 .L1981: ldrh w2, [x27] mov w1, 0 ldr x0, [x28, #:lo12:.LANCHOR191] bl ftl_memset b .L1982 .L1985: mov w24, -1 b .L1977 .size FtlVendorPartWrite, .-FtlVendorPartWrite .section .text.Ftl_save_ext_data,"ax",@progbits .align 2 .global Ftl_save_ext_data .type Ftl_save_ext_data, %function Ftl_save_ext_data: adrp x0, .LANCHOR141 add x2, x0, :lo12:.LANCHOR141 ldr w1, [x0, #:lo12:.LANCHOR141] mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 bne .L1990 mov w0, 99 mov w1, 1 movk w0, 0x5000, lsl 16 str w0, [x2, 4] adrp x0, .LANCHOR225 ldr w0, [x0, #:lo12:.LANCHOR225] str w0, [x2, 88] adrp x0, .LANCHOR226 ldr w0, [x0, #:lo12:.LANCHOR226] str w0, [x2, 92] adrp x0, .LANCHOR166 ldr w0, [x0, #:lo12:.LANCHOR166] str w0, [x2, 8] adrp x0, .LANCHOR167 ldr w0, [x0, #:lo12:.LANCHOR167] str w0, [x2, 12] adrp x0, .LANCHOR171 ldr w0, [x0, #:lo12:.LANCHOR171] str w0, [x2, 16] adrp x0, .LANCHOR170 ldr w0, [x0, #:lo12:.LANCHOR170] str w0, [x2, 20] adrp x0, .LANCHOR173 ldr w0, [x0, #:lo12:.LANCHOR173] str w0, [x2, 28] adrp x0, .LANCHOR81 ldr w0, [x0, #:lo12:.LANCHOR81] str w0, [x2, 32] adrp x0, .LANCHOR168 ldr w0, [x0, #:lo12:.LANCHOR168] str w0, [x2, 36] adrp x0, .LANCHOR169 ldr w0, [x0, #:lo12:.LANCHOR169] str w0, [x2, 40] adrp x0, .LANCHOR174 ldr w0, [x0, #:lo12:.LANCHOR174] str w0, [x2, 44] adrp x0, .LANCHOR175 ldr w0, [x0, #:lo12:.LANCHOR175] str w0, [x2, 48] adrp x0, .LANCHOR163 ldr w0, [x0, #:lo12:.LANCHOR163] str w0, [x2, 60] adrp x0, .LANCHOR162 ldr w0, [x0, #:lo12:.LANCHOR162] str w0, [x2, 64] mov w0, 0 b FtlVendorPartWrite .L1990: ret .size Ftl_save_ext_data, .-Ftl_save_ext_data .section .text.FtlEctTblFlush,"ax",@progbits .align 2 .global FtlEctTblFlush .type FtlEctTblFlush, %function FtlEctTblFlush: adrp x1, .LANCHOR104 ldr w1, [x1, #:lo12:.LANCHOR104] cbz w1, .L1997 adrp x1, .LANCHOR175 mov w2, 4 ldr w1, [x1, #:lo12:.LANCHOR175] cmp w1, 39 mov w1, 32 csel w1, w1, w2, hi .L1993: adrp x3, .LANCHOR227 ldrh w2, [x3, #:lo12:.LANCHOR227] cmp w2, 31 bhi .L1994 add w2, w2, 1 mov w1, 1 strh w2, [x3, #:lo12:.LANCHOR227] .L1994: adrp x2, .LANCHOR199 cbnz w0, .L1995 ldr x0, [x2, #:lo12:.LANCHOR199] ldr w3, [x0, 20] ldr w0, [x0, 16] add w1, w1, w3 cmp w0, w1 bcc .L2000 .L1995: stp x29, x30, [sp, -16]! add x29, sp, 0 ldr x2, [x2, #:lo12:.LANCHOR199] ldr w0, [x2, 16] str w0, [x2, 20] mov w0, 17221 str wzr, [x2, 4] movk w0, 0x4254, lsl 16 str w0, [x2] adrp x0, .LANCHOR198 ldrh w1, [x0, #:lo12:.LANCHOR198] lsl w0, w1, 9 str w0, [x2, 12] ldr w0, [x2, 8] add w0, w0, 1 str w0, [x2, 8] mov w0, 64 bl FtlVendorPartWrite bl Ftl_save_ext_data mov w0, 0 ldp x29, x30, [sp], 16 ret .L1997: mov w1, 32 b .L1993 .L2000: mov w0, 0 ret .size FtlEctTblFlush, .-FtlEctTblFlush .section .text.allocate_new_data_superblock,"ax",@progbits .align 2 .global allocate_new_data_superblock .type allocate_new_data_superblock, %function allocate_new_data_superblock: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 ldrh w20, [x0] adrp x0, .LANCHOR40 str x21, [sp, 32] ldrh w0, [x0, #:lo12:.LANCHOR40] cmp w0, w20 bcs .L2003 mov w2, 3650 adrp x1, .LANCHOR228 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR228 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2003: adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbnz w0, .L2004 mov w0, 65535 cmp w20, w0 beq .L2005 adrp x1, .LANCHOR85 ubfiz x0, x20, 1, 16 ldr x1, [x1, #:lo12:.LANCHOR85] ldrh w0, [x1, x0] cbz w0, .L2006 mov w0, w20 bl INSERT_DATA_LIST .L2005: strb wzr, [x19, 8] adrp x0, .LANCHOR94 add x0, x0, :lo12:.LANCHOR94 cmp x19, x0 beq .L2007 adrp x0, .LANCHOR44 ldrh w1, [x0, #:lo12:.LANCHOR44] cmp w1, 1 beq .L2007 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2008 .L2007: mov w0, 1 strb w0, [x19, 8] .L2009: adrp x1, .LANCHOR136 mov w2, 65535 mov x21, x1 ldrh w0, [x1, #:lo12:.LANCHOR136] cmp w0, w2 beq .L2014 cmp w20, w0 bne .L2015 adrp x2, .LANCHOR85 ubfiz x1, x0, 1, 16 ldr x2, [x2, #:lo12:.LANCHOR85] ldrh w1, [x2, x1] cbz w1, .L2016 .L2015: bl update_vpc_list .L2016: mov w0, -1 strh w0, [x21, #:lo12:.LANCHOR136] .L2014: mov x0, x19 bl allocate_data_superblock bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush .L2004: mov w0, 0 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .L2006: mov w0, w20 bl INSERT_FREE_LIST b .L2005 .L2008: adrp x0, .LANCHOR93 add x2, x0, :lo12:.LANCHOR93 cmp x19, x2 bne .L2009 cmp w1, 3 beq .L2011 adrp x1, .LANCHOR163 ldr w1, [x1, #:lo12:.LANCHOR163] cmp w1, 1 bne .L2012 .L2011: add x1, x0, :lo12:.LANCHOR93 mov w2, 1 strb w2, [x1, 8] .L2012: adrp x1, .LANCHOR104 ldr w1, [x1, #:lo12:.LANCHOR104] cbz w1, .L2009 adrp x1, .LANCHOR175 ldr w1, [x1, #:lo12:.LANCHOR175] cmp w1, 39 bhi .L2009 add x0, x0, :lo12:.LANCHOR93 mov w1, 1 strb w1, [x0, 8] b .L2009 .size allocate_new_data_superblock, .-allocate_new_data_superblock .section .text.FtlVendorPartRead,"ax",@progbits .align 2 .global FtlVendorPartRead .type FtlVendorPartRead, %function FtlVendorPartRead: stp x29, x30, [sp, -176]! add x29, sp, 0 stp x21, x22, [sp, 32] mov w22, w0 mov w21, w1 add w1, w0, w1 adrp x0, .LANCHOR50 stp x19, x20, [sp, 16] stp x23, x24, [sp, 48] ldrh w0, [x0, #:lo12:.LANCHOR50] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] cmp w1, w0 bhi .L2039 adrp x0, .LANCHOR56 adrp x26, .LANCHOR191 mov x25, x2 mov x28, x26 ldrh w20, [x0, #:lo12:.LANCHOR56] mov w24, 0 adrp x0, .LANCHOR55 add x0, x0, :lo12:.LANCHOR55 str x0, [x29, 104] lsr w20, w22, w20 .L2032: cbnz w21, .L2038 .L2030: mov w0, w24 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L2038: adrp x0, .LANCHOR202 ldr x0, [x0, #:lo12:.LANCHOR202] ldr w3, [x0, w20, uxtw 2] ldr x0, [x29, 104] ldrh w19, [x0] and w0, w21, 65535 udiv w23, w22, w19 msub w23, w23, w19, w22 sub w19, w19, w23 and w19, w19, 65535 cmp w21, w19 csel w19, w0, w19, cc lsl w27, w19, 9 cbz w3, .L2034 ldr x0, [x26, #:lo12:.LANCHOR191] mov w2, 1 str w3, [x29, 100] mov w1, w2 str w3, [x29, 124] stp x0, xzr, [x29, 128] add x0, x29, 120 bl FlashReadPages ldr w0, [x29, 120] ldr w3, [x29, 100] cmn w0, #1 adrp x0, .LANCHOR211 csinv w24, w24, wzr, ne ldr w0, [x0, #:lo12:.LANCHOR211] cmp w0, 256 bne .L2036 mov w2, w3 mov w1, w20 adrp x0, .LC44 add x0, x0, :lo12:.LC44 bl printf ldr x2, [x26, #:lo12:.LANCHOR191] adrp x0, .LANCHOR224 mov w1, w20 add x0, x0, :lo12:.LANCHOR224 bl FtlMapWritePage .L2036: ldr x1, [x28, #:lo12:.LANCHOR191] lsl w23, w23, 7 mov w2, w27 mov x0, x25 add x1, x1, x23, sxtw 2 bl ftl_memcpy .L2037: add w20, w20, 1 sub w21, w21, w19 add w22, w22, w19 add x25, x25, x27, sxtw b .L2032 .L2034: mov w2, w27 mov w1, 0 mov x0, x25 bl ftl_memset b .L2037 .L2039: mov w24, -1 b .L2030 .size FtlVendorPartRead, .-FtlVendorPartRead .section .text.FtlLoadEctTbl,"ax",@progbits .align 2 .global FtlLoadEctTbl .type FtlLoadEctTbl, %function FtlLoadEctTbl: stp x29, x30, [sp, -32]! mov w0, 64 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR199 adrp x20, .LANCHOR198 ldr x2, [x19, #:lo12:.LANCHOR199] ldrh w1, [x20, #:lo12:.LANCHOR198] bl FtlVendorPartRead ldr x0, [x19, #:lo12:.LANCHOR199] ldr w1, [x0] mov w0, 17221 movk w0, 0x4254, lsl 16 cmp w1, w0 beq .L2042 adrp x1, .LC45 adrp x0, .LC7 add x1, x1, :lo12:.LC45 add x0, x0, :lo12:.LC7 bl printf ldr x0, [x19, #:lo12:.LANCHOR199] mov w1, 0 ldrh w2, [x20, #:lo12:.LANCHOR198] lsl w2, w2, 9 bl ftl_memset .L2042: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlLoadEctTbl, .-FtlLoadEctTbl .section .text.Ftl_load_ext_data,"ax",@progbits .align 2 .global Ftl_load_ext_data .type Ftl_load_ext_data, %function Ftl_load_ext_data: stp x29, x30, [sp, -48]! mov w1, 1 mov w0, 0 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR141 str x21, [sp, 32] add x21, x19, :lo12:.LANCHOR141 mov x2, x21 bl FtlVendorPartRead ldr w0, [x19, #:lo12:.LANCHOR141] mov w20, 19539 movk w20, 0x4654, lsl 16 cmp w0, w20 beq .L2045 mov w2, 512 mov w1, 0 mov x0, x21 bl ftl_memset str w20, [x19, #:lo12:.LANCHOR141] .L2045: ldr w1, [x19, #:lo12:.LANCHOR141] add x0, x19, :lo12:.LANCHOR141 cmp w1, w20 adrp x20, .LANCHOR173 bne .L2046 adrp x1, .LANCHOR225 ldr w2, [x0, 88] str w2, [x1, #:lo12:.LANCHOR225] adrp x1, .LANCHOR226 ldr w2, [x0, 92] str w2, [x1, #:lo12:.LANCHOR226] adrp x1, .LANCHOR166 ldr w2, [x0, 8] str w2, [x1, #:lo12:.LANCHOR166] adrp x1, .LANCHOR167 ldr w2, [x0, 12] str w2, [x1, #:lo12:.LANCHOR167] adrp x1, .LANCHOR171 ldr w2, [x0, 16] str w2, [x1, #:lo12:.LANCHOR171] adrp x1, .LANCHOR170 ldr w2, [x0, 20] str w2, [x1, #:lo12:.LANCHOR170] ldp w1, w2, [x0, 28] str w1, [x20, #:lo12:.LANCHOR173] adrp x1, .LANCHOR81 str w2, [x1, #:lo12:.LANCHOR81] adrp x1, .LANCHOR168 ldr w2, [x0, 36] str w2, [x1, #:lo12:.LANCHOR168] adrp x1, .LANCHOR169 ldr w2, [x0, 40] str w2, [x1, #:lo12:.LANCHOR169] adrp x1, .LANCHOR174 ldr w2, [x0, 44] str w2, [x1, #:lo12:.LANCHOR174] adrp x1, .LANCHOR175 ldr w2, [x0, 48] str w2, [x1, #:lo12:.LANCHOR175] ldr w1, [x0, 60] adrp x0, .LANCHOR163 str w1, [x0, #:lo12:.LANCHOR163] .L2046: add x19, x19, :lo12:.LANCHOR141 adrp x0, .LANCHOR162 str wzr, [x0, #:lo12:.LANCHOR162] mov w0, 34661 ldr w1, [x19, 68] movk w0, 0x1234, lsl 16 cmp w1, w0 bne .L2047 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2048 str wzr, [x19, 68] bl Ftl_save_ext_data .L2047: adrp x1, .LANCHOR172 adrp x0, .LANCHOR48 ldr x21, [sp, 32] ldr w2, [x1, #:lo12:.LANCHOR172] ldrh w0, [x0, #:lo12:.LANCHOR48] ldr w1, [x20, #:lo12:.LANCHOR173] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 madd w0, w0, w2, w1 adrp x1, .LANCHOR40 ldrh w1, [x1, #:lo12:.LANCHOR40] udiv w0, w0, w1 adrp x1, .LANCHOR214 str w0, [x1, #:lo12:.LANCHOR214] ret .L2048: adrp x0, .LANCHOR104 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR104] adrp x1, .LC46 adrp x0, .LC7 add x1, x1, :lo12:.LC46 add x0, x0, :lo12:.LC7 bl printf b .L2047 .size Ftl_load_ext_data, .-Ftl_load_ext_data .section .text.FtlMapBlkWriteDumpData,"ax",@progbits .align 2 .global FtlMapBlkWriteDumpData .type FtlMapBlkWriteDumpData, %function FtlMapBlkWriteDumpData: ldr w1, [x0, 56] cbz w1, .L2064 stp x29, x30, [sp, -80]! adrp x1, .LANCHOR78 add x29, sp, 0 ldr w1, [x1, #:lo12:.LANCHOR78] stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] ldrh w20, [x0, 6] str x25, [sp, 64] str wzr, [x0, 56] ldr x25, [x0, 40] cbnz w1, .L2050 mov x19, x0 adrp x0, .LANCHOR190 adrp x23, .LANCHOR211 add x21, x23, :lo12:.LANCHOR211 ldr x0, [x0, #:lo12:.LANCHOR190] mov x22, x23 str x0, [x21, 8] adrp x0, .LANCHOR195 ldr x24, [x0, #:lo12:.LANCHOR195] ldrh w0, [x19, 2] str x24, [x21, 16] cbz w0, .L2054 adrp x1, .LANCHOR53 ldrh w1, [x1, #:lo12:.LANCHOR53] sub w1, w1, #1 cmp w0, w1 bge .L2054 ldrh w1, [x19] mov w2, 65535 cmp w1, w2 beq .L2054 ldr x2, [x19, 16] ubfiz x1, x1, 1, 16 sub w0, w0, #1 ldrh w1, [x2, x1] mov w2, 1 orr w0, w0, w1, lsl 10 mov w1, w2 str w0, [x21, 4] mov x0, x21 bl FlashReadPages ldr w0, [x23, #:lo12:.LANCHOR211] cmn w0, #1 beq .L2054 ldrh w1, [x24, 8] ldr x2, [x19, 40] ubfiz x0, x1, 2, 16 ldr w2, [x2, x0] ldr w0, [x21, 4] cmp w2, w0 bne .L2054 ldr x2, [x21, 8] .L2067: mov x0, x19 ldr x25, [sp, 64] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 b FtlMapWritePage .L2054: sub w20, w20, #1 and w20, w20, 65535 ubfiz x0, x20, 2, 16 ldr w1, [x25, x0] add x0, x22, :lo12:.LANCHOR211 str w1, [x0, 4] cbz w1, .L2055 mov w2, 1 mov w1, w2 bl FlashReadPages .L2056: add x22, x22, :lo12:.LANCHOR211 mov w1, w20 ldr x2, [x22, 8] b .L2067 .L2055: adrp x1, .LANCHOR57 ldr x0, [x0, 8] ldrh w2, [x1, #:lo12:.LANCHOR57] mov w1, 255 bl ftl_memset b .L2056 .L2050: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldr x25, [sp, 64] ldp x29, x30, [sp], 80 ret .L2064: ret .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData .section .text.FtlScanSysBlk,"ax",@progbits .align 2 .global FtlScanSysBlk .type FtlScanSysBlk, %function FtlScanSysBlk: stp x29, x30, [sp, -176]! mov w1, 0 add x29, sp, 0 stp x25, x26, [sp, 64] adrp x25, .LANCHOR133 stp x21, x22, [sp, 32] adrp x21, .LANCHOR64 ldr x0, [x25, #:lo12:.LANCHOR133] adrp x22, .LANCHOR201 ldr w2, [x21, #:lo12:.LANCHOR64] stp x19, x20, [sp, 16] adrp x20, .LANCHOR131 stp x23, x24, [sp, 48] adrp x23, .LANCHOR70 stp x27, x28, [sp, 80] adrp x27, .LANCHOR132 lsl w2, w2, 2 strh wzr, [x20, #:lo12:.LANCHOR131] strh wzr, [x23, #:lo12:.LANCHOR70] bl ftl_memset ldr x0, [x27, #:lo12:.LANCHOR132] mov w1, 0 ldr w2, [x21, #:lo12:.LANCHOR64] adrp x19, .LANCHOR61 adrp x28, .LANCHOR71 adrp x24, .LANCHOR218 lsl w2, w2, 1 bl ftl_memset ldr x0, [x22, #:lo12:.LANCHOR201] mov w1, 0 ldrh w2, [x19, #:lo12:.LANCHOR61] lsl w2, w2, 2 bl ftl_memset ldr x0, [x28, #:lo12:.LANCHOR71] mov w1, 0 ldrh w2, [x19, #:lo12:.LANCHOR61] lsl w2, w2, 1 bl ftl_memset mov w2, 16 mov w1, 255 add x0, x24, :lo12:.LANCHOR218 bl ftl_memset adrp x0, .LANCHOR40 stp x22, x25, [x29, 144] str x27, [x29, 160] ldrh w0, [x0, #:lo12:.LANCHOR40] str w0, [x29, 172] adrp x0, .LANCHOR41 add x0, x0, :lo12:.LANCHOR41 str x0, [x29, 120] adrp x0, .LANCHOR164 add x0, x0, :lo12:.LANCHOR164 str x0, [x29, 112] .L2069: ldr x0, [x29, 120] ldr w1, [x29, 172] ldrh w0, [x0] cmp w0, w1 bls .L2110 adrp x0, .LANCHOR38 adrp x25, .LANCHOR186 adrp x6, .LANCHOR47 mov x5, 0 ldrh w13, [x0, #:lo12:.LANCHOR38] adrp x0, .LANCHOR107 ldr x7, [x25, #:lo12:.LANCHOR186] mov w22, 0 ldr x12, [x0, #:lo12:.LANCHOR107] adrp x0, .LANCHOR108 add x6, x6, :lo12:.LANCHOR47 mov w8, 56 ldr x11, [x0, #:lo12:.LANCHOR108] adrp x0, .LANCHOR58 ldrh w10, [x0, #:lo12:.LANCHOR58] b .L2111 .L2071: ldrh w1, [x29, 172] ldrb w0, [x6, x5] bl V2P_block and w4, w0, 65535 bl FtlBbmIsBadBlock cbnz w0, .L2070 umaddl x1, w22, w8, x7 lsl w4, w4, 10 mul w0, w22, w10 add w22, w22, 1 and w22, w22, 65535 asr w0, w0, 2 str w4, [x1, 4] add x0, x11, x0, sxtw 2 stp x12, x0, [x1, 8] .L2070: add x5, x5, 1 .L2111: cmp w13, w5, uxth bhi .L2071 cbnz w22, .L2072 .L2109: ldr w0, [x29, 172] add w26, w0, 1 and w0, w26, 65535 str w0, [x29, 172] b .L2069 .L2072: mov w1, w22 mov w2, 1 mov x0, x7 bl FlashReadPages mov w0, 56 umull x0, w22, w0 mov x22, 0 str x0, [x29, 128] adrp x0, .LANCHOR229 add x0, x0, :lo12:.LANCHOR229 str x0, [x29, 136] .L2108: ldr x0, [x25, #:lo12:.LANCHOR186] add x1, x0, x22 ldr w0, [x0, x22] ldr w3, [x1, 4] cmn w0, #1 ldr x27, [x1, 16] ubfx x26, x3, 10, 16 bne .L2075 mov w5, 16 mov w7, 65535 .L2077: ldr x0, [x25, #:lo12:.LANCHOR186] add x6, x25, :lo12:.LANCHOR186 mov w2, 1 str w7, [x29, 100] add x0, x0, x22 str x6, [x29, 104] str w5, [x29, 168] ldr w1, [x0, 4] add w1, w1, 1 str w1, [x0, 4] mov w1, w2 bl FlashReadPages ldrh w0, [x27] ldr w7, [x29, 100] ldr w5, [x29, 168] cmp w0, w7 ldr x6, [x29, 104] bne .L2074 ldr x0, [x6] mov w1, -1 str w1, [x0, x22] ldr x0, [x6] ldr w0, [x0, x22] cmp w0, w1 beq .L2147 .L2075: adrp x0, .LANCHOR164 ldr w1, [x0, #:lo12:.LANCHOR164] ldr w0, [x27, 4] cmn w1, #1 beq .L2078 cmp w1, w0 bhi .L2079 .L2078: cmn w0, #1 beq .L2079 ldr x2, [x29, 112] add w1, w0, 1 str w1, [x2] .L2079: ldrh w1, [x27] mov w2, 61604 cmp w1, w2 beq .L2081 bhi .L2082 mov w0, 61574 cmp w1, w0 beq .L2083 .L2080: ldr x0, [x29, 128] add x22, x22, 56 cmp x0, x22 bne .L2108 b .L2109 .L2074: ldr x0, [x25, #:lo12:.LANCHOR186] ldr w0, [x0, x22] cmn w0, #1 bne .L2075 sub w5, w5, #1 ands w5, w5, 65535 bne .L2077 .L2147: mov w1, 0 mov w0, w26 bl FtlFreeSysBlkQueueIn b .L2080 .L2082: mov w0, 61634 cmp w1, w0 beq .L2084 mov w0, 65535 cmp w1, w0 beq .L2147 b .L2080 .L2084: ldrh w1, [x20, #:lo12:.LANCHOR131] ldr w0, [x21, #:lo12:.LANCHOR64] cmp w1, w0 bls .L2086 ldr x1, [x29, 136] mov w2, 1469 adrp x0, .LC5 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2086: ldr w6, [x21, #:lo12:.LANCHOR64] ldr x3, [x29, 152] ldrh w1, [x20, #:lo12:.LANCHOR131] and w2, w6, 65535 sub w0, w2, #1 sub w2, w2, w1 sxth x0, w0 sub w2, w2, #1 ldr x5, [x3, #:lo12:.LANCHOR133] sxth w2, w2 .L2087: cmp w0, w2 bgt .L2093 tbz w0, #31, .L2128 b .L2080 .L2093: sxtw x8, w0 ldr w11, [x27, 4] lsl x7, x8, 2 add x10, x5, x7 ldr w7, [x5, x7] cmp w11, w7 bls .L2088 ldr w2, [x5] cbnz w2, .L2089 cmp w6, w1 beq .L2089 add w1, w1, 1 strh w1, [x20, #:lo12:.LANCHOR131] .L2089: ldr x1, [x29, 160] ldr x6, [x1, #:lo12:.LANCHOR132] mov w1, 0 .L2090: cmp w1, w0 bne .L2091 ldr w1, [x27, 4] str w1, [x10] strh w26, [x6, x8, lsl 1] tbnz w0, #31, .L2080 ldrh w1, [x20, #:lo12:.LANCHOR131] ldr w2, [x21, #:lo12:.LANCHOR64] sub w2, w2, w1 sub w2, w2, #1 cmp w0, w2, sxth bgt .L2080 .L2128: add w1, w1, 1 strh w1, [x20, #:lo12:.LANCHOR131] ldr w1, [x27, 4] str w1, [x5, x0, lsl 2] ldr x1, [x29, 160] ldr x1, [x1, #:lo12:.LANCHOR132] .L2146: strh w26, [x1, x0, lsl 1] b .L2080 .L2091: sxtw x2, w1 add w1, w1, 1 lsl x7, x2, 2 lsl x2, x2, 1 add x11, x5, x7 sxth w1, w1 ldr w11, [x11, 4] str w11, [x5, x7] add x7, x6, x2 ldrh w7, [x7, 2] strh w7, [x6, x2] b .L2090 .L2088: sub w0, w0, #1 sxth x0, w0 b .L2087 .L2083: ldrh w1, [x23, #:lo12:.LANCHOR70] ldrh w0, [x19, #:lo12:.LANCHOR61] cmp w1, w0 bls .L2096 ldr x1, [x29, 136] mov w2, 1513 adrp x0, .LC5 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2096: ldrh w6, [x19, #:lo12:.LANCHOR61] ldrh w2, [x23, #:lo12:.LANCHOR70] sub w1, w6, #1 sxth x0, w1 sub w5, w1, w2 ldr x1, [x29, 144] ldr x1, [x1, #:lo12:.LANCHOR201] .L2097: cmp w0, w5 ble .L2102 sxtw x7, w0 ldr w11, [x27, 4] lsl x8, x7, 2 add x10, x1, x8 ldr w8, [x1, x8] cmp w11, w8 bls .L2098 ldr w5, [x1] cbnz w5, .L2099 cmp w6, w2 beq .L2099 add w2, w2, 1 strh w2, [x23, #:lo12:.LANCHOR70] .L2099: ldr x6, [x28, #:lo12:.LANCHOR71] mov w2, 0 .L2100: cmp w2, w0 bne .L2101 ldr w2, [x27, 4] str w2, [x10] strh w26, [x6, x7, lsl 1] .L2102: tbnz w0, #31, .L2080 ldrh w2, [x19, #:lo12:.LANCHOR61] ldrh w5, [x23, #:lo12:.LANCHOR70] sub w2, w2, #1 sub w2, w2, w5 cmp w0, w2, sxth bgt .L2080 add w5, w5, 1 ldr w2, [x27, 4] strh w5, [x23, #:lo12:.LANCHOR70] str w2, [x1, x0, lsl 2] ldr x1, [x28, #:lo12:.LANCHOR71] b .L2146 .L2101: sxtw x5, w2 add w2, w2, 1 lsl x8, x5, 2 lsl x5, x5, 1 add x11, x1, x8 sxth w2, w2 ldr w11, [x11, 4] str w11, [x1, x8] add x8, x6, x5 ldrh w8, [x8, 2] strh w8, [x6, x5] b .L2100 .L2098: sub w0, w0, #1 sxth x0, w0 b .L2097 .L2081: ldrh w5, [x24, #:lo12:.LANCHOR218] mov w1, 65535 add x2, x24, :lo12:.LANCHOR218 cmp w5, w1 bne .L2104 strh w26, [x24, #:lo12:.LANCHOR218] str w0, [x2, 8] b .L2080 .L2104: ldrh w0, [x2, 4] cmp w0, w1 beq .L2105 mov w1, 1 bl FtlFreeSysBlkQueueIn .L2105: add x0, x24, :lo12:.LANCHOR218 ldr w1, [x27, 4] ldr w2, [x0, 8] cmp w2, w1 bcs .L2106 ldrh w2, [x24, #:lo12:.LANCHOR218] strh w2, [x0, 4] strh w26, [x24, #:lo12:.LANCHOR218] str w1, [x0, 8] b .L2080 .L2106: strh w26, [x0, 4] b .L2080 .L2110: ldr x0, [x29, 160] ldr x2, [x0, #:lo12:.LANCHOR132] ldrh w0, [x2] cbz w0, .L2112 .L2115: ldr x1, [x28, #:lo12:.LANCHOR71] ldrh w0, [x1] cbz w0, .L2113 .L2114: ldrh w1, [x20, #:lo12:.LANCHOR131] ldr w0, [x21, #:lo12:.LANCHOR64] cmp w1, w0 bls .L2144 mov w2, 1631 adrp x1, .LANCHOR229 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR229 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2144: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L2112: ldrh w0, [x20, #:lo12:.LANCHOR131] cbz w0, .L2115 ldr w1, [x21, #:lo12:.LANCHOR64] mov w0, 0 .L2116: cmp w0, w1 bcs .L2115 ldrh w3, [x2, w0, sxtw 1] cbz w3, .L2117 ldr x1, [x29, 152] add x7, x21, :lo12:.LANCHOR64 ldr x4, [x1, #:lo12:.LANCHOR133] mov w1, w0 .L2118: ldr w3, [x7] cmp w1, w3 bcs .L2115 sxtw x6, w1 sub w3, w1, w0 lsl x5, x6, 1 sxtw x3, w3 add w1, w1, 1 ldr w6, [x4, x6, lsl 2] sxth w1, w1 ldrh w8, [x2, x5] strh w8, [x2, x3, lsl 1] str w6, [x4, x3, lsl 2] strh wzr, [x2, x5] b .L2118 .L2117: add w0, w0, 1 sxth w0, w0 b .L2116 .L2113: ldrh w0, [x23, #:lo12:.LANCHOR70] cbz w0, .L2114 ldrh w2, [x19, #:lo12:.LANCHOR61] mov w0, 0 .L2123: mov w6, w0 cmp w0, w2 bge .L2114 ldrh w3, [x1, w0, sxtw 1] cbz w3, .L2124 ldr x2, [x29, 144] add x19, x19, :lo12:.LANCHOR61 ldr x3, [x2, #:lo12:.LANCHOR201] .L2125: ldrh w2, [x19] cmp w0, w2 bge .L2114 sxtw x5, w0 sub w2, w0, w6 lsl x4, x5, 1 sxtw x2, w2 add w0, w0, 1 ldr w5, [x3, x5, lsl 2] sxth w0, w0 ldrh w7, [x1, x4] strh w7, [x1, x2, lsl 1] str w5, [x3, x2, lsl 2] strh wzr, [x1, x4] b .L2125 .L2124: add w0, w0, 1 sxth w0, w0 b .L2123 .size FtlScanSysBlk, .-FtlScanSysBlk .section .text.FtlLoadSysInfo,"ax",@progbits .align 2 .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: sub sp, sp, #128 stp x29, x30, [sp, 16] add x29, sp, 16 stp x23, x24, [sp, 64] adrp x23, .LANCHOR189 stp x19, x20, [sp, 32] adrp x19, .LANCHOR211 add x0, x19, :lo12:.LANCHOR211 stp x25, x26, [sp, 80] adrp x25, .LANCHOR195 stp x21, x22, [sp, 48] stp x27, x28, [sp, 96] adrp x24, .LANCHOR85 ldr x1, [x23, #:lo12:.LANCHOR189] adrp x22, .LANCHOR40 str x1, [x0, 8] adrp x21, .LANCHOR218 ldr x1, [x25, #:lo12:.LANCHOR195] str x1, [x0, 16] ldr x0, [x24, #:lo12:.LANCHOR85] mov w1, 0 ldrh w2, [x22, #:lo12:.LANCHOR40] lsl w2, w2, 1 bl ftl_memset ldrh w0, [x21, #:lo12:.LANCHOR218] mov w1, 65535 cmp w0, w1 bne .L2149 .L2161: mov w0, -1 .L2148: ldp x19, x20, [sp, 32] ldp x21, x22, [sp, 48] ldp x23, x24, [sp, 64] ldp x25, x26, [sp, 80] ldp x27, x28, [sp, 96] ldp x29, x30, [sp, 16] add sp, sp, 128 ret .L2149: add x26, x21, :lo12:.LANCHOR218 mov w1, 1 bl FtlGetLastWrittenPage ldrsh w28, [x21, #:lo12:.LANCHOR218] sxth w20, w0 adrp x27, .LANCHOR57 add w0, w0, 1 add x27, x27, :lo12:.LANCHOR57 strh w0, [x26, 2] adrp x26, .LANCHOR2 add x0, x26, :lo12:.LANCHOR2 str x0, [x29, 104] .L2151: tbz w20, #31, .L2157 mov w2, 1708 adrp x1, .LANCHOR230 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR230 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf b .L2156 .L2157: add x26, x19, :lo12:.LANCHOR211 orr w0, w20, w28, lsl 10 mov w2, 1 mov w1, w2 str w0, [x26, 4] ldr x0, [x23, #:lo12:.LANCHOR189] str x0, [x26, 8] mov x0, x26 bl FlashReadPages ldr x0, [x29, 104] ldrb w0, [x0] cbz w0, .L2152 ldr x8, [x26, 16] ldr w7, [x8, 12] cbz w7, .L2152 ldr x6, [x26, 8] ldrh w1, [x27] mov x0, x6 bl js_hash cmp w7, w0 beq .L2152 cbnz w20, .L2153 add x10, x21, :lo12:.LANCHOR218 str x10, [x29, 96] ldrh w0, [x10, 4] cmp w28, w0 beq .L2153 ldr w0, [x6] str w0, [sp] ldrh w1, [x21, #:lo12:.LANCHOR218] adrp x0, .LC47 ldr w2, [x19, #:lo12:.LANCHOR211] add x0, x0, :lo12:.LC47 ldp w4, w5, [x8] ldr w6, [x8, 8] ldr w3, [x26, 4] bl printf ldr x10, [x29, 96] adrp x0, .LANCHOR53 ldrh w20, [x0, #:lo12:.LANCHOR53] ldrsh w28, [x10, 4] .L2155: sub w20, w20, #1 sxth w20, w20 b .L2151 .L2153: mov w0, -1 str w0, [x19, #:lo12:.LANCHOR211] .L2152: ldr w0, [x19, #:lo12:.LANCHOR211] cmn w0, #1 beq .L2155 ldr x0, [x23, #:lo12:.LANCHOR189] mov w1, 19539 movk w1, 0x4654, lsl 16 ldr w0, [x0] cmp w0, w1 bne .L2155 ldr x0, [x25, #:lo12:.LANCHOR195] ldrh w1, [x0] mov w0, 61604 cmp w1, w0 bne .L2155 .L2156: adrp x1, .LANCHOR57 ldrh w0, [x22, #:lo12:.LANCHOR40] ldrh w1, [x1, #:lo12:.LANCHOR57] add x0, x0, 24 cmp x1, x0, lsl 1 bcs .L2159 mov w2, 1710 adrp x1, .LANCHOR230 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR230 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2159: add x19, x19, :lo12:.LANCHOR211 mov w2, 48 adrp x20, .LANCHOR82 add x0, x20, :lo12:.LANCHOR82 ldr x1, [x19, 8] bl ftl_memcpy ldr x0, [x24, #:lo12:.LANCHOR85] ldrh w2, [x22, #:lo12:.LANCHOR40] ldr x1, [x19, 8] lsl w2, w2, 1 add x1, x1, 48 bl ftl_memcpy ldrh w1, [x22, #:lo12:.LANCHOR40] ldr x0, [x19, 8] lsr w2, w1, 3 ubfiz x1, x1, 1, 16 add x1, x1, 51 add w2, w2, 4 and x1, x1, -4 add x1, x0, x1 adrp x0, .LANCHOR1 ldr x0, [x0, #:lo12:.LANCHOR1] bl ftl_memcpy adrp x0, .LANCHOR69 ldrh w0, [x0, #:lo12:.LANCHOR69] cbz w0, .L2160 ldrh w1, [x22, #:lo12:.LANCHOR40] adrp x0, .LANCHOR66 ldrh w2, [x0, #:lo12:.LANCHOR66] lsr w0, w1, 3 add w1, w0, w1, lsl 1 ldr x0, [x19, 8] add w1, w1, 52 lsl w2, w2, 2 and x1, x1, 65532 add x1, x0, x1 adrp x0, .LANCHOR203 ldr x0, [x0, #:lo12:.LANCHOR203] bl ftl_memcpy .L2160: ldr w2, [x20, #:lo12:.LANCHOR82] mov w1, 19539 movk w1, 0x4654, lsl 16 add x0, x20, :lo12:.LANCHOR82 cmp w2, w1 bne .L2161 add x21, x21, :lo12:.LANCHOR218 ldrh w1, [x0, 8] ldrb w2, [x0, 10] adrp x0, .LANCHOR45 strh w1, [x21, 6] ldrh w0, [x0, #:lo12:.LANCHOR45] cmp w2, w0 bne .L2161 adrp x0, .LANCHOR231 adrp x2, .LANCHOR74 adrp x3, .LANCHOR38 str w1, [x0, #:lo12:.LANCHOR231] adrp x0, .LANCHOR52 ldrh w3, [x3, #:lo12:.LANCHOR38] ldrh w0, [x0, #:lo12:.LANCHOR52] mul w0, w0, w1 str w0, [x2, #:lo12:.LANCHOR74] adrp x2, .LANCHOR55 ldrh w2, [x2, #:lo12:.LANCHOR55] mul w0, w2, w0 adrp x2, .LANCHOR68 str w0, [x2, #:lo12:.LANCHOR68] adrp x0, .LANCHOR42 ldr w2, [x0, #:lo12:.LANCHOR42] adrp x0, .LANCHOR76+6 ldrh w0, [x0, #:lo12:.LANCHOR76+6] cmp w1, w2 sub w0, w2, w0 sub w0, w0, w1 udiv w0, w0, w3 adrp x3, .LANCHOR232 strh w0, [x3, #:lo12:.LANCHOR232] bls .L2162 mov w2, 1739 adrp x1, .LANCHOR230 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR230 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2162: add x4, x20, :lo12:.LANCHOR82 adrp x0, .LANCHOR93 add x2, x0, :lo12:.LANCHOR93 adrp x5, .LANCHOR213 adrp x19, .LANCHOR94 mov x22, x5 ldrh w1, [x4, 16] ldrh w6, [x4, 14] strh w6, [x0, #:lo12:.LANCHOR93] lsr w3, w1, 6 and w1, w1, 63 strb w1, [x2, 6] ldrb w1, [x4, 11] strb w1, [x2, 8] add x1, x5, :lo12:.LANCHOR213 strh w3, [x2, 2] mov w2, -1 strh w2, [x5, #:lo12:.LANCHOR213] add x2, x19, :lo12:.LANCHOR94 strh wzr, [x1, 2] strb wzr, [x1, 6] strb wzr, [x1, 8] ldrh w1, [x4, 18] strh w1, [x19, #:lo12:.LANCHOR94] ldrh w1, [x4, 20] lsr w3, w1, 6 and w1, w1, 63 strb w1, [x2, 6] ldrb w1, [x4, 12] strh w3, [x2, 2] strb w1, [x2, 8] adrp x2, .LANCHOR95 ldrh w1, [x4, 22] add x3, x2, :lo12:.LANCHOR95 strh w1, [x2, #:lo12:.LANCHOR95] mov x21, x2 ldrh w1, [x4, 24] lsr w7, w1, 6 and w1, w1, 63 strb w1, [x3, 6] ldrb w1, [x4, 13] strb w1, [x3, 8] adrp x1, .LANCHOR166 strh w7, [x3, 2] ldr w3, [x4, 32] str wzr, [x1, #:lo12:.LANCHOR166] adrp x1, .LANCHOR167 str wzr, [x1, #:lo12:.LANCHOR167] adrp x1, .LANCHOR171 str wzr, [x1, #:lo12:.LANCHOR171] adrp x1, .LANCHOR170 str wzr, [x1, #:lo12:.LANCHOR170] adrp x1, .LANCHOR172 str w3, [x1, #:lo12:.LANCHOR172] adrp x1, .LANCHOR173 str wzr, [x1, #:lo12:.LANCHOR173] adrp x1, .LANCHOR174 str wzr, [x1, #:lo12:.LANCHOR174] adrp x1, .LANCHOR169 ldr w3, [x4, 40] str wzr, [x1, #:lo12:.LANCHOR169] adrp x1, .LANCHOR164 ldr w4, [x1, #:lo12:.LANCHOR164] cmp w3, w4 bls .L2163 str w3, [x1, #:lo12:.LANCHOR164] .L2163: add x20, x20, :lo12:.LANCHOR82 adrp x1, .LANCHOR165 ldr w3, [x1, #:lo12:.LANCHOR165] ldr w2, [x20, 36] cmp w2, w3 bls .L2164 str w2, [x1, #:lo12:.LANCHOR165] .L2164: mov w1, 65535 cmp w6, w1 beq .L2165 add x0, x0, :lo12:.LANCHOR93 bl make_superblock .L2165: ldrh w2, [x19, #:lo12:.LANCHOR94] mov w1, 65535 add x0, x19, :lo12:.LANCHOR94 cmp w2, w1 beq .L2166 bl make_superblock .L2166: ldrh w2, [x21, #:lo12:.LANCHOR95] mov w1, 65535 add x0, x21, :lo12:.LANCHOR95 cmp w2, w1 beq .L2167 bl make_superblock .L2167: ldrh w2, [x22, #:lo12:.LANCHOR213] mov w1, 65535 add x0, x22, :lo12:.LANCHOR213 cmp w2, w1 beq .L2168 bl make_superblock .L2168: mov w0, 0 b .L2148 .size FtlLoadSysInfo, .-FtlLoadSysInfo .section .text.FtlDumpBlockInfo,"ax",@progbits .align 2 .global FtlDumpBlockInfo .type FtlDumpBlockInfo, %function FtlDumpBlockInfo: sub sp, sp, #160 lsr w0, w0, 10 stp x29, x30, [sp, 16] add x29, sp, 16 stp x19, x20, [sp, 32] adrp x19, .LANCHOR52 stp x21, x22, [sp, 48] and w22, w1, 255 stp x23, x24, [sp, 64] add x23, x29, 144 stp x25, x26, [sp, 80] str x27, [sp, 96] bl P2V_block_in_plane ldrh w25, [x19, #:lo12:.LANCHOR52] and w21, w0, 65535 adrp x1, .LANCHOR233 adrp x0, .LC48 add x1, x1, :lo12:.LANCHOR233 add x0, x0, :lo12:.LC48 bl printf adrp x1, .LANCHOR85 ubfiz x0, x21, 1, 16 ldr x1, [x1, #:lo12:.LANCHOR85] ldrh w2, [x1, x0] mov w1, w21 adrp x0, .LC49 add x0, x0, :lo12:.LC49 bl printf strh w21, [x23, -48]! mov x0, x23 bl make_superblock adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2193 cbnz w22, .L2193 mov w0, w21 bl ftl_get_blk_mode mov w21, w0 cmp w0, 1 bne .L2184 adrp x0, .LANCHOR53 ldrh w25, [x0, #:lo12:.LANCHOR53] .L2184: ldrh w3, [x19, #:lo12:.LANCHOR52] adrp x26, .LC51 add x26, x26, :lo12:.LC51 mov w20, 0 mov w27, 56 mov w2, w25 mov w1, w21 adrp x0, .LC50 add x0, x0, :lo12:.LC50 bl printf .L2185: adrp x1, .LANCHOR107 adrp x0, .LANCHOR38 adrp x24, .LANCHOR186 add x3, x23, 16 ldr x6, [x1, #:lo12:.LANCHOR107] adrp x1, .LANCHOR57 ldrh w5, [x0, #:lo12:.LANCHOR38] mov w19, 0 ldrh w7, [x1, #:lo12:.LANCHOR57] adrp x1, .LANCHOR108 ldr x0, [x24, #:lo12:.LANCHOR186] mov w11, 65535 ldr x8, [x1, #:lo12:.LANCHOR108] adrp x1, .LANCHOR58 ldrh w10, [x1, #:lo12:.LANCHOR58] mov w1, 0 .L2186: cmp w1, w5 bne .L2188 mov w1, w19 umull x19, w19, w27 mov x22, 0 mov w2, w21 bl FlashReadPages .L2189: cmp x22, x19 bne .L2190 add w20, w20, 1 and w20, w20, 65535 cmp w25, w20 bne .L2185 .L2191: ldp x19, x20, [sp, 32] mov w0, 0 ldp x21, x22, [sp, 48] ldp x23, x24, [sp, 64] ldp x25, x26, [sp, 80] ldp x29, x30, [sp, 16] ldr x27, [sp, 96] add sp, sp, 160 ret .L2193: mov w21, 0 b .L2184 .L2188: ldrh w2, [x3] cmp w2, w11 beq .L2187 umaddl x4, w19, w27, x0 orr w2, w20, w2, lsl 10 str w2, [x4, 4] mul w2, w19, w7 asr w2, w2, 2 add x2, x6, x2, sxtw 2 str x2, [x4, 8] mul w2, w19, w10 add w19, w19, 1 and w19, w19, 65535 asr w2, w2, 2 add x2, x8, x2, sxtw 2 str x2, [x4, 16] .L2187: add w1, w1, 1 add x3, x3, 2 and w1, w1, 65535 b .L2186 .L2190: ldr x8, [x24, #:lo12:.LANCHOR186] ldrh w1, [x29, 96] add x2, x8, x22 ldp x3, x0, [x2, 8] ldr w4, [x3, 4] str w4, [sp, 8] ldr w3, [x3] str w3, [sp] ldp w4, w5, [x0] ldp w6, w7, [x0, 8] mov x0, x26 ldr w3, [x2, 4] ldr w2, [x8, x22] add x22, x22, 56 bl printf b .L2189 .size FtlDumpBlockInfo, .-FtlDumpBlockInfo .section .text.FtlScanAllBlock,"ax",@progbits .align 2 .global FtlScanAllBlock .type FtlScanAllBlock, %function FtlScanAllBlock: sub sp, sp, #144 adrp x1, .LANCHOR234 adrp x0, .LC48 add x1, x1, :lo12:.LANCHOR234 add x0, x0, :lo12:.LC48 stp x29, x30, [sp, 16] add x29, sp, 16 stp x23, x24, [sp, 64] adrp x23, .LANCHOR41 stp x19, x20, [sp, 32] adrp x24, .LC53 stp x21, x22, [sp, 48] mov w20, 0 add x23, x23, :lo12:.LANCHOR41 add x24, x24, :lo12:.LC53 str x25, [sp, 80] bl printf .L2197: ldrh w0, [x23] cmp w0, w20 bhi .L2205 ldp x19, x20, [sp, 32] mov w0, 0 ldp x21, x22, [sp, 48] ldp x23, x24, [sp, 64] ldp x29, x30, [sp, 16] ldr x25, [sp, 80] add sp, sp, 144 ret .L2205: strh w20, [x29, 80] mov w0, w20 bl ftl_get_blk_mode mov w3, w0 adrp x2, .LANCHOR85 ubfiz x1, x20, 1, 16 adrp x0, .LC52 add x0, x0, :lo12:.LC52 ldr x2, [x2, #:lo12:.LANCHOR85] adrp x22, .LANCHOR186 mov w19, 0 ldrh w2, [x2, x1] mov w1, w20 bl printf add x0, x29, 80 bl make_superblock adrp x1, .LANCHOR107 adrp x0, .LANCHOR38 add x3, x29, 96 mov w11, 65535 ldr x6, [x1, #:lo12:.LANCHOR107] adrp x1, .LANCHOR57 ldrh w5, [x0, #:lo12:.LANCHOR38] mov w12, 56 ldrh w7, [x1, #:lo12:.LANCHOR57] adrp x1, .LANCHOR108 ldr x0, [x22, #:lo12:.LANCHOR186] ldr x8, [x1, #:lo12:.LANCHOR108] adrp x1, .LANCHOR58 ldrh w10, [x1, #:lo12:.LANCHOR58] mov w1, 0 .L2198: cmp w1, w5 bne .L2200 mov w25, 56 mov x21, 0 mov w2, 0 mov w1, w19 umull x25, w19, w25 bl FlashReadPages .L2201: cmp x21, x25 bne .L2202 ldr x0, [x22, #:lo12:.LANCHOR186] adrp x25, .LC54 add x25, x25, :lo12:.LC54 mov w1, w19 mov x19, 0 mov w2, 1 bl FlashReadPages .L2203: cmp x21, x19 bne .L2204 add w20, w20, 1 and w20, w20, 65535 b .L2197 .L2200: ldrh w2, [x3] cmp w2, w11 beq .L2199 umaddl x4, w19, w12, x0 lsl w2, w2, 10 str w2, [x4, 4] mul w2, w19, w7 asr w2, w2, 2 add x2, x6, x2, sxtw 2 str x2, [x4, 8] mul w2, w19, w10 add w19, w19, 1 and w19, w19, 65535 asr w2, w2, 2 add x2, x8, x2, sxtw 2 str x2, [x4, 16] .L2199: add w1, w1, 1 add x3, x3, 2 and w1, w1, 65535 b .L2198 .L2202: ldr x8, [x22, #:lo12:.LANCHOR186] ldrh w1, [x29, 80] add x2, x8, x21 ldp x3, x0, [x2, 8] ldr w4, [x3, 4] str w4, [sp, 8] ldr w3, [x3] str w3, [sp] ldp w4, w5, [x0] ldp w6, w7, [x0, 8] mov x0, x24 ldr w3, [x2, 4] ldr w2, [x8, x21] add x21, x21, 56 bl printf b .L2201 .L2204: ldr x8, [x22, #:lo12:.LANCHOR186] ldrh w1, [x29, 80] add x2, x8, x19 ldp x3, x0, [x2, 8] ldr w4, [x3, 4] str w4, [sp, 8] ldr w3, [x3] str w3, [sp] ldp w4, w5, [x0] ldp w6, w7, [x0, 8] mov x0, x25 ldr w3, [x2, 4] ldr w2, [x8, x19] add x19, x19, 56 bl printf b .L2203 .size FtlScanAllBlock, .-FtlScanAllBlock .section .text.FtlMapTblRecovery,"ax",@progbits .align 2 .global FtlMapTblRecovery .type FtlMapTblRecovery, %function FtlMapTblRecovery: stp x29, x30, [sp, -160]! mov w1, 0 add x29, sp, 0 stp x27, x28, [sp, 80] mov x28, x0 stp x23, x24, [sp, 48] ldrh w24, [x0, 6] stp x21, x22, [sp, 32] adrp x21, .LANCHOR189 ldr x22, [x0, 40] ldr x23, [x0, 16] lsl w2, w24, 2 ldr x0, [x0, 24] str x0, [x29, 144] ldrh w0, [x28, 8] stp x19, x20, [sp, 16] mov w19, 0 stp x25, x26, [sp, 64] adrp x25, .LANCHOR53 str w0, [x29, 156] mov x0, x22 bl ftl_memset stp wzr, wzr, [x28, 48] adrp x0, .LANCHOR211 add x4, x0, :lo12:.LANCHOR211 ldr x1, [x21, #:lo12:.LANCHOR189] mov x27, x4 str x0, [x29, 128] str x1, [x4, 8] adrp x1, .LANCHOR195 ldr w0, [x29, 156] ldr x20, [x1, #:lo12:.LANCHOR195] mov w1, -1 str x20, [x4, 16] sub w0, w0, #1 strh w1, [x28] strh w1, [x28, 2] mov w1, 1 str w0, [x29, 116] add x0, x25, :lo12:.LANCHOR53 str w1, [x28, 56] str x0, [x29, 104] .L2208: ldr w0, [x29, 156] cmp w19, w0 bge .L2227 ldr w0, [x29, 116] sxtw x26, w19 cmp w19, w0 bne .L2209 lsl x0, x26, 1 mov w1, 1 add x21, x23, x0 adrp x27, .LANCHOR57 add x27, x27, :lo12:.LANCHOR57 mov w25, 0 ldrh w0, [x23, x0] bl FtlGetLastWrittenPage sxth w23, w0 add w0, w0, 1 strh w0, [x28, 2] ldr x0, [x29, 144] strh w19, [x28] ldr w0, [x0, x26, lsl 2] adrp x26, .LANCHOR2 str w0, [x28, 48] add x26, x26, :lo12:.LANCHOR2 ldr x0, [x29, 128] add x19, x0, :lo12:.LANCHOR211 .L2210: cmp w25, w23 ble .L2213 .L2227: mov x0, x28 bl ftl_free_no_use_map_blk adrp x0, .LANCHOR53 ldrh w1, [x28, 2] ldrh w0, [x0, #:lo12:.LANCHOR53] cmp w1, w0 bne .L2215 mov x0, x28 bl ftl_map_blk_alloc_new_blk .L2215: mov x0, x28 bl ftl_map_blk_gc mov x0, x28 bl ftl_map_blk_gc mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 160 ret .L2213: ldrh w0, [x21] mov w2, 1 mov w1, w2 orr w0, w25, w0, lsl 10 str w0, [x19, 4] mov x0, x19 bl FlashReadPages ldrb w0, [x26] cbz w0, .L2211 ldr x0, [x19, 16] ldr w0, [x0, 12] str w0, [x29, 156] uxtw x0, w0 cbz w0, .L2211 ldrh w1, [x27] ldr x0, [x19, 8] bl js_hash ldr w1, [x29, 156] cmp w1, w0 beq .L2211 mov w0, -1 str w0, [x19] .L2211: ldr w0, [x19] cmn w0, #1 beq .L2212 ldrh w0, [x20, 8] cmp w24, w0 bls .L2212 ldrh w2, [x20] ldrh w1, [x28, 4] cmp w2, w1 bne .L2212 ubfiz x0, x0, 2, 16 ldr w1, [x19, 4] str w1, [x22, x0] .L2212: add w25, w25, 1 sxth w25, w25 b .L2210 .L2209: lsl x26, x26, 1 ldr x0, [x21, #:lo12:.LANCHOR189] str x0, [x27, 8] add x0, x23, x26 ldrh w1, [x25, #:lo12:.LANCHOR53] mov w2, 1 str x0, [x29, 136] ldrh w0, [x23, x26] sub w1, w1, #1 orr w0, w1, w0, lsl 10 mov w1, w2 str w0, [x27, 4] mov x0, x27 bl FlashReadPages ldr w0, [x27] cmn w0, #1 beq .L2229 ldrh w1, [x20] ldrh w0, [x28, 4] cmp w1, w0 bne .L2229 ldrh w1, [x20, 8] mov w0, 64245 cmp w1, w0 beq .L2217 .L2229: adrp x26, .LANCHOR57 add x26, x26, :lo12:.LANCHOR57 adrp x0, .LANCHOR2 mov w5, 0 add x0, x0, :lo12:.LANCHOR2 str x0, [x29, 120] .L2218: ldr x0, [x29, 104] ldrh w0, [x0] cmp w5, w0 bge .L2225 ldr x0, [x29, 136] mov w2, 1 str w5, [x29, 152] mov w1, w2 ldrh w0, [x0] orr w0, w5, w0, lsl 10 str w0, [x27, 4] mov x0, x27 bl FlashReadPages ldr x0, [x29, 120] ldr w5, [x29, 152] ldrb w0, [x0] cbz w0, .L2222 ldr x0, [x27, 16] ldr w0, [x0, 12] str w0, [x29, 152] uxtw x0, w0 cbz w0, .L2222 ldrh w1, [x26] ldr x0, [x27, 8] str w5, [x29, 112] bl js_hash ldr w1, [x29, 152] ldr w5, [x29, 112] cmp w1, w0 beq .L2222 mov w0, -1 str w0, [x27] .L2222: ldr w0, [x27] cmn w0, #1 beq .L2223 ldrh w0, [x20, 8] cmp w24, w0 bls .L2223 ldrh w2, [x20] ldrh w1, [x28, 4] cmp w2, w1 bne .L2223 ubfiz x0, x0, 2, 16 ldr w1, [x27, 4] str w1, [x22, x0] .L2223: add w5, w5, 1 sxth w5, w5 b .L2218 .L2217: ldrh w5, [x25, #:lo12:.LANCHOR53] mov w0, 0 ldr x6, [x21, #:lo12:.LANCHOR189] sub w5, w5, #1 .L2219: cmp w0, w5 blt .L2221 .L2225: add w19, w19, 1 sxth w19, w19 b .L2208 .L2221: lsl w2, w0, 1 sxtw x2, w2 lsl x1, x2, 2 ldrh w1, [x6, x1] cmp w24, w1 bls .L2220 add x2, x2, 1 ubfiz x1, x1, 2, 16 ldr w2, [x6, x2, lsl 2] str w2, [x22, x1] .L2220: add w0, w0, 1 sxth w0, w0 b .L2219 .size FtlMapTblRecovery, .-FtlMapTblRecovery .section .text.FtlLoadVonderInfo,"ax",@progbits .align 2 .global FtlLoadVonderInfo .type FtlLoadVonderInfo, %function FtlLoadVonderInfo: stp x29, x30, [sp, -16]! adrp x1, .LANCHOR61 adrp x0, .LANCHOR224 add x0, x0, :lo12:.LANCHOR224 add x29, sp, 0 ldrh w1, [x1, #:lo12:.LANCHOR61] strh w1, [x0, 10] mov w1, -3962 strh w1, [x0, 4] adrp x1, .LANCHOR70 ldrh w1, [x1, #:lo12:.LANCHOR70] strh w1, [x0, 8] adrp x1, .LANCHOR62 ldrh w1, [x1, #:lo12:.LANCHOR62] strh w1, [x0, 6] adrp x1, .LANCHOR71 ldr x1, [x1, #:lo12:.LANCHOR71] str x1, [x0, 16] adrp x1, .LANCHOR201 ldr x1, [x1, #:lo12:.LANCHOR201] str x1, [x0, 24] adrp x1, .LANCHOR200 ldr x1, [x1, #:lo12:.LANCHOR200] str x1, [x0, 32] adrp x1, .LANCHOR202 ldr x1, [x1, #:lo12:.LANCHOR202] str x1, [x0, 40] bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 ret .size FtlLoadVonderInfo, .-FtlLoadVonderInfo .section .text.FtlLoadMapInfo,"ax",@progbits .align 2 .global FtlLoadMapInfo .type FtlLoadMapInfo, %function FtlLoadMapInfo: stp x29, x30, [sp, -16]! add x29, sp, 0 bl FtlL2PDataInit adrp x0, .LANCHOR130 add x0, x0, :lo12:.LANCHOR130 bl FtlMapTblRecovery mov w0, 0 ldp x29, x30, [sp], 16 ret .size FtlLoadMapInfo, .-FtlLoadMapInfo .section .text.ftl_scan_all_ppa,"ax",@progbits .align 2 .global ftl_scan_all_ppa .type ftl_scan_all_ppa, %function ftl_scan_all_ppa: sub sp, sp, #112 stp x29, x30, [sp, 16] add x29, sp, 16 stp x21, x22, [sp, 48] adrp x22, .LANCHOR51 stp x19, x20, [sp, 32] adrp x20, .LANCHOR211 ldrh w19, [x22, #:lo12:.LANCHOR51] add x20, x20, :lo12:.LANCHOR211 stp x25, x26, [sp, 80] adrp x26, .LANCHOR16 sub w19, w19, #16 add x26, x26, :lo12:.LANCHOR16 lsl w25, w19, 10 stp x23, x24, [sp, 64] str x27, [sp, 96] .L2254: ldrh w0, [x22, #:lo12:.LANCHOR51] cmp w19, w0 blt .L2262 ldp x19, x20, [sp, 32] adrp x1, .LANCHOR235 ldp x21, x22, [sp, 48] add x1, x1, :lo12:.LANCHOR235 ldp x23, x24, [sp, 64] adrp x0, .LC58 ldp x25, x26, [sp, 80] add x0, x0, :lo12:.LC58 ldp x29, x30, [sp, 16] ldr x27, [sp, 96] add sp, sp, 112 b printf .L2262: and w24, w19, 65535 mov w0, w24 bl ftl_get_blk_mode ldrb w1, [x26] cbz w1, .L2255 adrp x1, .LANCHOR40 ldrh w1, [x1, #:lo12:.LANCHOR40] cmp w19, w1 bge .L2256 adrp x1, .LANCHOR59 ldrh w1, [x1, #:lo12:.LANCHOR59] cmp w19, w1 blt .L2256 .L2255: cmp w0, 1 bne .L2257 .L2256: adrp x0, .LANCHOR53 mov w21, -2147483648 ldrh w23, [x0, #:lo12:.LANCHOR53] .L2258: mov w3, w21 mov w2, w23 mov w1, w19 adrp x0, .LC55 add x0, x0, :lo12:.LC55 bl printf mov w0, w24 bl FtlBbmIsBadBlock cbz w0, .L2259 adrp x0, .LC56 mov w3, w21 mov w2, w23 mov w1, w19 add x0, x0, :lo12:.LC56 bl printf .L2259: adrp x27, .LC57 add w21, w21, w25 add x27, x27, :lo12:.LC57 mov w24, 0 .L2260: cmp w24, w23 bne .L2261 add w19, w19, 1 add w25, w25, 1024 b .L2254 .L2257: adrp x0, .LANCHOR52 mov w21, 0 ldrh w23, [x0, #:lo12:.LANCHOR52] b .L2258 .L2261: add w0, w21, w24 stp wzr, w0, [x20] adrp x0, .LANCHOR189 mov w2, 0 mov w1, 1 add w24, w24, 1 ldr x0, [x0, #:lo12:.LANCHOR189] str x0, [x20, 8] adrp x0, .LANCHOR195 ldr x0, [x0, #:lo12:.LANCHOR195] str x0, [x20, 16] mov x0, x20 bl FlashReadPages ldp x1, x0, [x20, 8] ldr w2, [x1, 4] str w2, [sp] ldp w3, w4, [x0] ldp w5, w6, [x0, 8] mov x0, x27 ldr w7, [x1] ldp w2, w1, [x20] bl printf b .L2260 .size ftl_scan_all_ppa, .-ftl_scan_all_ppa .section .text.FlashReadFacBbtData,"ax",@progbits .align 2 .global FlashReadFacBbtData .type FlashReadFacBbtData, %function FlashReadFacBbtData: stp x29, x30, [sp, -160]! add x29, sp, 0 stp x25, x26, [sp, 64] mov w25, w1 adrp x1, .LANCHOR15 add x1, x1, :lo12:.LANCHOR15 stp x23, x24, [sp, 48] mov x23, x0 stp x21, x22, [sp, 32] adrp x21, .LANCHOR154 ldrh w0, [x1, 14] mov w24, w2 ldrh w1, [x1, 12] stp x19, x20, [sp, 16] str x27, [sp, 80] mov w27, 61664 mul w0, w0, w1 ldr x1, [x21, #:lo12:.LANCHOR154] str x1, [x29, 112] and w0, w0, 65535 adrp x1, .LANCHOR205 sub w20, w0, #1 sub w19, w0, #15 ldr x2, [x1, #:lo12:.LANCHOR205] and w20, w20, 65535 mul w26, w0, w25 mov x22, x1 str x2, [x29, 120] .L2271: cmp w19, w20 ble .L2278 mov w0, -1 .L2270: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldr x27, [sp, 80] ldp x29, x30, [sp], 160 ret .L2278: add w0, w20, w26 mov w2, 1 lsl w0, w0, 10 mov w1, w2 str w0, [x29, 108] add x0, x29, 104 bl FlashReadPages ldr w0, [x29, 104] cmn w0, #1 beq .L2272 ldr x0, [x22, #:lo12:.LANCHOR205] ldrh w0, [x0] cmp w0, w27 bne .L2272 cbz x23, .L2279 cbz w25, .L2274 .L2277: ldr x1, [x21, #:lo12:.LANCHOR154] mov w2, w24 mov x0, x23 bl ftl_memcpy mov w3, 4 adrp x0, .LC59 mov w2, w3 mov x1, x23 add x0, x0, :lo12:.LC59 bl rknand_print_hex .L2279: mov w0, 0 b .L2270 .L2274: ldr x5, [x21, #:lo12:.LANCHOR154] adrp x2, .LANCHOR156 add x2, x2, :lo12:.LANCHOR156 mov w0, 0 mov w6, 1 .L2275: ldr w1, [x2] cmp w0, w1 bcs .L2277 ubfx x1, x0, 5, 11 and w3, w0, 31 lsl x1, x1, 2 add w0, w0, 1 lsl w4, w6, w3 and w0, w0, 65535 ldr w3, [x5, x1] orr w3, w3, w4 str w3, [x5, x1] b .L2275 .L2272: sub w20, w20, #1 and w20, w20, 65535 b .L2271 .size FlashReadFacBbtData, .-FlashReadFacBbtData .section .text.FlashGetBadBlockList,"ax",@progbits .align 2 .global FlashGetBadBlockList .type FlashGetBadBlockList, %function FlashGetBadBlockList: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] mov x20, x0 adrp x0, .LANCHOR7 ldr x0, [x0, #:lo12:.LANCHOR7] ldrh w19, [x0, 14] str x21, [sp, 32] adrp x21, .LANCHOR152 ldrb w2, [x0, 13] ldr x0, [x21, #:lo12:.LANCHOR152] mul w19, w19, w2 and w19, w19, 65535 add w2, w19, 7 lsr w2, w2, 3 bl FlashReadFacBbtData cmn w0, #1 bne .L2285 .L2289: mov w0, 0 .L2286: ubfiz x0, x0, 1, 16 mov w1, -1 ldr x21, [sp, 32] strh w1, [x20, x0] mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret .L2285: ldr x4, [x21, #:lo12:.LANCHOR152] lsr w5, w19, 4 sub w19, w19, #1 mov w1, 0 mov w0, 0 mov w6, 1 .L2287: cmp w1, w19 bge .L2286 ubfx x3, x1, 5, 11 and w2, w1, 31 lsl w2, w6, w2 ldr w3, [x4, x3, lsl 2] tst w2, w3 beq .L2288 add w2, w0, 1 ubfiz x0, x0, 1, 16 strh w1, [x20, x0] and w0, w2, 65535 .L2288: cmp w0, w5 bcs .L2289 add w1, w1, 1 and w1, w1, 65535 b .L2287 .size FlashGetBadBlockList, .-FlashGetBadBlockList .section .text.FtlMakeBbt,"ax",@progbits .align 2 .global FtlMakeBbt .type FtlMakeBbt, %function FtlMakeBbt: stp x29, x30, [sp, -128]! adrp x0, .LANCHOR78 add x29, sp, 0 stp x21, x22, [sp, 32] ldr w21, [x0, #:lo12:.LANCHOR78] stp x19, x20, [sp, 16] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] cbnz w21, .L2296 adrp x20, .LANCHOR76 add x22, x20, :lo12:.LANCHOR76 bl FtlBbtMemInit add x24, x22, 32 bl FtlLoadFactoryBbt adrp x28, .LANCHOR211 add x22, x22, 12 add x25, x28, :lo12:.LANCHOR211 adrp x0, .LANCHOR45 add x0, x0, :lo12:.LANCHOR45 str x0, [x29, 120] .L2297: ldr x0, [x29, 120] ldrh w0, [x0] cmp w21, w0 bcc .L2303 adrp x21, .LANCHOR59 add x21, x21, :lo12:.LANCHOR59 mov w19, 0 .L2304: ldrh w0, [x21] cmp w0, w19 bhi .L2305 add x21, x20, :lo12:.LANCHOR76 mov w22, 65535 ldrh w19, [x21, 12] sub w19, w19, #1 and w19, w19, 65535 .L2306: ldrh w0, [x21, 12] sub w0, w0, #47 cmp w0, w19 bgt .L2310 mov w0, w19 bl FtlBbmIsBadBlock cmp w0, 1 beq .L2307 mov w0, w19 bl FlashTestBlk cbz w0, .L2308 mov w0, w19 bl FtlBbmMapBadBlock .L2307: sub w19, w19, #1 and w19, w19, 65535 b .L2306 .L2303: adrp x2, .LANCHOR195 adrp x0, .LANCHOR189 add x19, x28, :lo12:.LANCHOR211 ldrh w1, [x22] ldr x0, [x0, #:lo12:.LANCHOR189] mov w3, 65535 ldr x26, [x2, #:lo12:.LANCHOR195] cmp w1, w3 stp x0, x26, [x19, 8] adrp x23, .LANCHOR51 str x2, [x29, 112] beq .L2298 ldrh w4, [x23, #:lo12:.LANCHOR51] mov w2, 1 madd w27, w4, w21, w1 mov w1, w2 lsl w0, w27, 10 str w0, [x19, 4] mov x0, x19 bl FlashReadPages ldr x1, [x19, 8] ldr x0, [x24] ldrh w2, [x23, #:lo12:.LANCHOR51] add w2, w2, 7 lsr w2, w2, 3 bl ftl_memcpy .L2299: mov w0, w27 add w21, w21, 1 bl FtlBbmMapBadBlock add x24, x24, 8 add x22, x22, 2 b .L2297 .L2298: mov w1, w21 bl FlashGetBadBlockList ldr x0, [x19, 8] adrp x27, .LANCHOR126 ldr x1, [x24] bl FtlBbt2Bitmap ldrh w19, [x23, #:lo12:.LANCHOR51] add x23, x23, :lo12:.LANCHOR51 add x0, x27, :lo12:.LANCHOR126 sub w19, w19, #1 str x0, [x29, 104] and w19, w19, 65535 .L2300: ldrh w0, [x23] madd w0, w21, w0, w19 bl FtlBbmIsBadBlock cmp w0, 1 beq .L2301 ldr x0, [x29, 112] mov w2, 16 strh w19, [x22] mov w1, 0 ldr x0, [x0, #:lo12:.LANCHOR195] bl ftl_memset mov w0, -3872 strh w0, [x26] ldrh w4, [x23] ldrh w0, [x22] strh w0, [x26, 2] ldr x1, [x24] str wzr, [x26, 4] madd w27, w4, w21, w0 lsl w0, w27, 10 str w0, [x25, 4] ldr x0, [x29, 104] ldrh w2, [x0] ldr x0, [x25, 8] lsl w2, w2, 2 bl ftl_memcpy mov w2, 1 mov x0, x25 mov w1, w2 bl FlashEraseBlocks mov w3, 1 mov x0, x25 mov w2, w3 mov w1, w3 bl FlashProgPages ldr w0, [x25] cmn w0, #1 bne .L2299 mov w0, w27 bl FtlBbmMapBadBlock b .L2300 .L2301: sub w19, w19, #1 and w19, w19, 65535 b .L2300 .L2305: mov w0, w19 add w19, w19, 1 bl FtlBbmMapBadBlock and w19, w19, 65535 b .L2304 .L2308: ldrh w0, [x21] cmp w0, w22 bne .L2309 strh w19, [x21] b .L2307 .L2309: strh w19, [x21, 4] .L2310: adrp x0, .LANCHOR79 add x19, x20, :lo12:.LANCHOR76 ldrh w1, [x20, #:lo12:.LANCHOR76] mov w2, 2 ldr x0, [x0, #:lo12:.LANCHOR79] str wzr, [x19, 8] lsl w1, w1, 10 strh wzr, [x19, 2] str w1, [x0, 4] ldrh w1, [x19, 4] lsl w1, w1, 10 str w1, [x0, 60] mov w1, 1 bl FlashEraseBlocks ldrh w0, [x20, #:lo12:.LANCHOR76] bl FtlBbmMapBadBlock ldrh w0, [x19, 4] bl FtlBbmMapBadBlock bl FtlBbmTblFlush strh wzr, [x19, 2] ldr w0, [x19, 8] ldrh w1, [x19, 4] add w0, w0, 1 str w0, [x19, 8] ldrh w0, [x20, #:lo12:.LANCHOR76] strh w0, [x19, 4] strh w1, [x20, #:lo12:.LANCHOR76] bl FtlBbmTblFlush .L2296: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .size FtlMakeBbt, .-FtlMakeBbt .section .text.log2phys,"ax",@progbits .align 2 .global log2phys .type log2phys, %function log2phys: stp x29, x30, [sp, -128]! add x29, sp, 0 stp x25, x26, [sp, 64] mov w25, w0 adrp x0, .LANCHOR56 stp x23, x24, [sp, 48] stp x19, x20, [sp, 16] mov x26, x1 ldrh w24, [x0, #:lo12:.LANCHOR56] adrp x0, .LANCHOR74 stp x21, x22, [sp, 32] mov x19, x0 ldr w1, [x0, #:lo12:.LANCHOR74] stp x27, x28, [sp, 80] str w2, [x29, 116] cmp w25, w1 bcc .L2317 mov w2, 1004 adrp x1, .LANCHOR236 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR236 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2317: ldr w0, [x19, #:lo12:.LANCHOR74] cmp w25, w0 bcs .L2318 adrp x19, .LANCHOR98 add w24, w24, 7 adrp x0, .LANCHOR67 ldr x2, [x19, #:lo12:.LANCHOR98] lsr w23, w25, w24 and w22, w23, 65535 ldrh w1, [x0, #:lo12:.LANCHOR67] mov x0, 0 .L2319: and x20, x0, 65535 cmp w20, w1 bcc .L2324 bl select_l2p_ram_region and x20, x0, 65535 ldr x1, [x19, #:lo12:.LANCHOR98] ubfiz x21, x20, 4, 16 add x2, x1, x21 ldrh w3, [x1, x21] mov w1, 65535 cmp w3, w1 beq .L2325 ldr w1, [x2, 4] tbz w1, #31, .L2325 bl flush_l2p_region .L2325: adrp x0, .LANCHOR66 str x0, [x29, 104] ldrh w1, [x0, #:lo12:.LANCHOR66] cmp w1, w22 bcs .L2326 mov w2, 597 adrp x1, .LANCHOR237 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR237 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2326: adrp x27, .LANCHOR134 ubfiz x0, x22, 2, 16 ldr x1, [x27, #:lo12:.LANCHOR134] ldr w3, [x1, x0] cbnz w3, .L2327 ldr x0, [x19, #:lo12:.LANCHOR98] adrp x1, .LANCHOR57 add x0, x0, x21 ldrh w2, [x1, #:lo12:.LANCHOR57] mov w1, 255 ldr x0, [x0, 8] bl ftl_memset ldr x0, [x19, #:lo12:.LANCHOR98] add x1, x0, x21 strh w22, [x0, x21] str wzr, [x1, 4] b .L2321 .L2318: ldr w1, [x29, 116] mov w0, -1 cbnz w1, .L2316 str w0, [x26] .L2316: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L2324: add x0, x0, 1 add x3, x2, x0, lsl 4 ldrh w3, [x3, -16] cmp w3, w22 bne .L2319 .L2321: mov x0, 1 lsl x24, x0, x24 ldr w0, [x29, 116] sub w24, w24, #1 and w25, w24, w25 and x25, x25, 65535 cbnz w0, .L2322 ldr x0, [x19, #:lo12:.LANCHOR98] add x0, x0, x20, lsl 4 ldr x0, [x0, 8] ldr w0, [x0, x25, lsl 2] str w0, [x26] .L2323: ldr x0, [x19, #:lo12:.LANCHOR98] add x20, x0, x20, lsl 4 ldr w0, [x20, 4] cmn w0, #1 beq .L2332 add w0, w0, 1 str w0, [x20, 4] .L2332: mov w0, 0 b .L2316 .L2322: ldr x0, [x19, #:lo12:.LANCHOR98] ldr w2, [x26] add x0, x0, x20, lsl 4 ldr x1, [x0, 8] str w2, [x1, x25, lsl 2] ldr w1, [x0, 4] orr w1, w1, -2147483648 str w1, [x0, 4] adrp x0, .LANCHOR99 strh w22, [x0, #:lo12:.LANCHOR99] b .L2323 .L2327: ldr x0, [x19, #:lo12:.LANCHOR98] adrp x5, .LANCHOR211 add x28, x5, :lo12:.LANCHOR211 mov w2, 1 add x0, x0, x21 str x5, [x29, 96] str w3, [x29, 112] mov w1, w2 str w3, [x28, 4] ldr x0, [x0, 8] str x0, [x28, 8] adrp x0, .LANCHOR195 ldr x0, [x0, #:lo12:.LANCHOR195] str x0, [x28, 16] mov x0, x28 bl FlashReadPages ldr x0, [x28, 16] str x0, [x29, 120] ldr w3, [x29, 112] ldr x5, [x29, 96] ldrh w0, [x0, 8] cmp w0, w22 beq .L2328 mov w2, w3 and w1, w23, 65535 adrp x0, .LC60 add x0, x0, :lo12:.LC60 bl printf ldr x1, [x28, 16] mov w3, 4 adrp x0, .LC28 mov w2, w3 add x0, x0, :lo12:.LC28 bl rknand_print_hex ldr x0, [x29, 104] mov w2, 4 ldr x1, [x27, #:lo12:.LANCHOR134] ldrh w3, [x0, #:lo12:.LANCHOR66] adrp x0, .LC61 add x0, x0, :lo12:.LC61 bl rknand_print_hex adrp x0, .LANCHOR78 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR78] .L2329: ldr x0, [x29, 120] ldrh w0, [x0, 8] cmp w0, w22 beq .L2330 mov w2, 624 adrp x1, .LANCHOR237 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR237 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2330: ldr x0, [x19, #:lo12:.LANCHOR98] add x1, x0, x21 str wzr, [x1, 4] strh w22, [x0, x21] b .L2321 .L2328: ldr w0, [x5, #:lo12:.LANCHOR211] cmp w0, 256 bne .L2329 and w23, w23, 65535 mov w2, w3 mov w1, w23 adrp x0, .LC62 add x0, x0, :lo12:.LC62 bl printf ldr x0, [x19, #:lo12:.LANCHOR98] mov w1, w23 add x0, x0, x21 ldr x2, [x0, 8] adrp x0, .LANCHOR130 add x0, x0, :lo12:.LANCHOR130 bl FtlMapWritePage b .L2329 .size log2phys, .-log2phys .section .text.FtlCheckVpc,"ax",@progbits .align 2 .global FtlCheckVpc .type FtlCheckVpc, %function FtlCheckVpc: stp x29, x30, [sp, -112]! adrp x0, .LC48 add x0, x0, :lo12:.LC48 add x29, sp, 0 stp x23, x24, [sp, 48] adrp x23, .LANCHOR74 add x23, x23, :lo12:.LANCHOR74 stp x21, x22, [sp, 32] mov w22, 0 stp x19, x20, [sp, 16] stp x25, x26, [sp, 64] adrp x21, .LANCHOR238 stp x27, x28, [sp, 80] add x1, x21, :lo12:.LANCHOR238 adrp x20, check_valid_page_count_table bl printf add x19, x20, :lo12:check_valid_page_count_table mov x2, 8192 mov w1, 0 mov x0, x19 bl memset .L2336: ldr w0, [x23] cmp w22, w0 bcc .L2338 adrp x23, .LANCHOR40 adrp x24, .LC63 add x23, x23, :lo12:.LANCHOR40 add x26, x20, :lo12:check_valid_page_count_table add x24, x24, :lo12:.LC63 mov w22, 0 mov w19, 0 adrp x25, .LANCHOR85 .L2339: ldrh w0, [x23] cmp w0, w19 bhi .L2341 adrp x0, .LANCHOR89 ldr x19, [x0, #:lo12:.LANCHOR89] cbz x19, .L2342 adrp x0, .LANCHOR90 adrp x25, .LC64 add x20, x20, :lo12:check_valid_page_count_table add x25, x25, :lo12:.LC64 ldrh w26, [x0, #:lo12:.LANCHOR90] adrp x0, .LANCHOR83 mov x24, x0 mov w23, 0 ldr x1, [x0, #:lo12:.LANCHOR83] adrp x27, .LANCHOR85 mov w28, 6 sub x19, x19, x1 mov x1, -6148914691236517206 asr x19, x19, 1 movk x1, 0xaaab, lsl 0 mul x19, x19, x1 and w19, w19, 65535 .L2343: cmp w23, w26 bne .L2345 .L2342: adrp x0, .LC65 mov w1, w22 add x0, x0, :lo12:.LC65 bl printf cbz w22, .L2335 mov w2, 1849 add x1, x21, :lo12:.LANCHOR238 adrp x0, .LC5 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2335: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L2338: mov w2, 0 add x1, x29, 108 mov w0, w22 bl log2phys ldr w0, [x29, 108] cmn w0, #1 beq .L2337 lsr w0, w0, 10 bl P2V_block_in_plane and x0, x0, 65535 ldrh w1, [x19, x0, lsl 1] add w1, w1, 1 strh w1, [x19, x0, lsl 1] .L2337: add w22, w22, 1 b .L2336 .L2341: ldr x0, [x25, #:lo12:.LANCHOR85] ubfiz x28, x19, 1, 16 sxtw x27, w19 ldrh w2, [x0, x28] ldrh w3, [x26, x27, lsl 1] cmp w2, w3 beq .L2340 mov w1, w19 mov x0, x24 bl printf ldr x0, [x25, #:lo12:.LANCHOR85] mov w1, 65535 ldrh w0, [x0, x28] cmp w0, w1 beq .L2340 ldrh w1, [x26, x27, lsl 1] cmp w1, w0 csinc w22, w22, wzr, ls .L2340: add w19, w19, 1 and w19, w19, 65535 b .L2339 .L2345: ldr x1, [x27, #:lo12:.LANCHOR85] ubfiz x0, x19, 1, 16 ldrh w2, [x1, x0] cbz w2, .L2344 ldrh w3, [x20, w19, sxtw 1] mov w22, 1 mov w1, w19 mov x0, x25 bl printf .L2344: ldr x0, [x24, #:lo12:.LANCHOR83] umull x19, w19, w28 ldrh w19, [x0, x19] mov w0, 65535 cmp w19, w0 beq .L2342 add w23, w23, 1 and w23, w23, 65535 b .L2343 .size FtlCheckVpc, .-FtlCheckVpc .section .text.Ftlscanalldata,"ax",@progbits .align 2 .global Ftlscanalldata .type Ftlscanalldata, %function Ftlscanalldata: sub sp, sp, #96 adrp x0, .LC66 mov w1, 0 add x0, x0, :lo12:.LC66 stp x29, x30, [sp, 16] add x29, sp, 16 stp x19, x20, [sp, 32] adrp x20, .LANCHOR211 stp x21, x22, [sp, 48] mov w19, 0 adrp x21, .LANCHOR74 add x22, x20, :lo12:.LANCHOR211 add x21, x21, :lo12:.LANCHOR74 str x23, [sp, 64] bl printf .L2361: ldr w0, [x21] cmp w19, w0 bcc .L2367 ldp x19, x20, [sp, 32] ldp x21, x22, [sp, 48] ldp x29, x30, [sp, 16] ldr x23, [sp, 64] add sp, sp, 96 ret .L2367: mov w2, 0 add x1, x29, 76 mov w0, w19 bl log2phys tst x19, 2047 bne .L2362 ldr w2, [x29, 76] adrp x0, .LC67 mov w1, w19 add x0, x0, :lo12:.LC67 bl printf .L2362: ldr w1, [x29, 76] cmn w1, #1 beq .L2364 add x0, x20, :lo12:.LANCHOR211 str wzr, [x20, #:lo12:.LANCHOR211] mov w2, 0 str w1, [x0, 4] adrp x1, .LANCHOR189 str w19, [x0, 24] ldr x1, [x1, #:lo12:.LANCHOR189] str x1, [x0, 8] adrp x1, .LANCHOR195 ldr x23, [x1, #:lo12:.LANCHOR195] mov w1, 1 str x23, [x0, 16] bl FlashReadPages ldr w0, [x20, #:lo12:.LANCHOR211] cmp w0, 256 ccmn w0, #1, 4, ne beq .L2365 ldr w0, [x23, 8] cmp w19, w0 beq .L2364 .L2365: ldp x1, x0, [x22, 8] ldr w2, [x1, 4] str w2, [sp] ldr w2, [x22, 4] ldp w3, w4, [x0] ldp w5, w6, [x0, 8] adrp x0, .LC68 ldr w7, [x1] add x0, x0, :lo12:.LC68 mov w1, w19 bl printf .L2364: add w19, w19, 1 b .L2361 .size Ftlscanalldata, .-Ftlscanalldata .section .text.FtlReUsePrevPpa,"ax",@progbits .align 2 .global FtlReUsePrevPpa .type FtlReUsePrevPpa, %function FtlReUsePrevPpa: stp x29, x30, [sp, -80]! add x29, sp, 0 stp x21, x22, [sp, 32] adrp x22, .LANCHOR85 stp x19, x20, [sp, 16] mov w21, w0 str w1, [x29, 76] lsr w0, w1, 10 str x23, [sp, 48] bl P2V_block_in_plane ldr x2, [x22, #:lo12:.LANCHOR85] and w3, w0, 65535 ubfiz x20, x3, 1, 16 ldrh w1, [x2, x20] cbnz w1, .L2370 adrp x0, .LANCHOR89 ldr x19, [x0, #:lo12:.LANCHOR89] cbz x19, .L2371 adrp x2, .LANCHOR83 mov x5, -6148914691236517206 movk x5, 0xaaab, lsl 0 adrp x23, .LANCHOR90 ldr x2, [x2, #:lo12:.LANCHOR83] mov w6, 65535 ldrh w4, [x23, #:lo12:.LANCHOR90] sub x19, x19, x2 asr x19, x19, 1 mul x19, x19, x5 mov w5, 6 and w19, w19, 65535 .L2372: cmp w1, w4 beq .L2371 cmp w19, w3 bne .L2373 mov w1, w19 add x0, x0, :lo12:.LANCHOR89 bl List_remove_node ldrh w0, [x23, #:lo12:.LANCHOR90] cbnz w0, .L2374 mov w2, 2271 adrp x1, .LANCHOR239 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR239 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2374: ldrh w0, [x23, #:lo12:.LANCHOR90] sub w0, w0, #1 strh w0, [x23, #:lo12:.LANCHOR90] mov w0, w19 bl INSERT_DATA_LIST ldr x1, [x22, #:lo12:.LANCHOR85] ldrh w0, [x1, x20] add w0, w0, 1 strh w0, [x1, x20] .L2371: add x1, x29, 76 mov w2, 1 mov w0, w21 bl log2phys ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldr x23, [sp, 48] ldp x29, x30, [sp], 80 ret .L2373: umull x19, w19, w5 ldrh w19, [x2, x19] cmp w19, w6 beq .L2371 add w1, w1, 1 and w1, w1, 65535 b .L2372 .L2370: add w1, w1, 1 strh w1, [x2, x20] b .L2371 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa .section .text.FtlRecoverySuperblock,"ax",@progbits .align 2 .global FtlRecoverySuperblock .type FtlRecoverySuperblock, %function FtlRecoverySuperblock: stp x29, x30, [sp, -208]! mov w1, 65535 add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 stp x21, x22, [sp, 32] ldrh w0, [x0] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] cmp w0, w1 stp x27, x28, [sp, 80] beq .L2542 ldrb w0, [x19, 6] str w0, [x29, 180] adrp x0, .LANCHOR52 ldrh w26, [x19, 2] str x0, [x29, 144] ldrh w2, [x0, #:lo12:.LANCHOR52] cmp w2, w26 bne .L2383 strh wzr, [x19, 4] .L2549: strb wzr, [x19, 6] .L2542: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 208 ret .L2383: ldrh w0, [x19, 16] mov w21, 0 .L2384: cmp w0, w1 beq .L2385 ldrb w1, [x19, 8] cmp w1, 1 bne .L2386 bl FtlGetLastWrittenPage mov w20, w0 cmn w0, #1 beq .L2387 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbnz w0, .L2464 adrp x0, .LANCHOR17 add x0, x0, :lo12:.LANCHOR17 ldrh w23, [x0, w20, sxtw 1] .L2388: adrp x1, .LANCHOR108 adrp x2, .LANCHOR38 adrp x22, .LANCHOR186 add x4, x19, 16 ldr x6, [x1, #:lo12:.LANCHOR108] adrp x1, .LANCHOR58 ldr x0, [x22, #:lo12:.LANCHOR186] mov w27, 0 ldrh w7, [x1, #:lo12:.LANCHOR58] add x1, x19, 16 str x1, [x29, 184] mov w8, 65535 ldrh w1, [x2, #:lo12:.LANCHOR38] mov w10, 56 str x2, [x29, 160] add x1, x1, 8 add x1, x19, x1, lsl 1 .L2389: cmp x1, x4 bne .L2393 ldrb w1, [x19, 8] cmp w1, 1 bne .L2465 adrp x1, .LANCHOR16 ldrb w1, [x1, #:lo12:.LANCHOR16] cmp w1, 0 cset w1, ne str w1, [x29, 176] .L2394: ldr w2, [x29, 176] mov w1, w27 adrp x24, .LC69 adrp x25, .LANCHOR241 add x24, x24, :lo12:.LC69 add x25, x25, :lo12:.LANCHOR241 mov x28, 0 bl FlashReadPages adrp x0, .LANCHOR165 mov w5, 65535 str x0, [x29, 168] ldr w21, [x0, #:lo12:.LANCHOR165] sub w21, w21, #1 .L2395: and w0, w28, 65535 cmp w27, w0 bhi .L2400 bne .L2398 ldr x0, [x22, #:lo12:.LANCHOR186] add w20, w20, 1 and w20, w20, 65535 ldr w0, [x0, 4] .L2544: lsr w0, w0, 10 bl P2V_plane ldrb w1, [x19, 8] and w27, w0, 65535 cmp w1, 1 bne .L2402 adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbnz w0, .L2402 adrp x0, .LANCHOR17 add x0, x0, :lo12:.LANCHOR17 ldrh w20, [x0, w20, sxtw 1] .L2402: ldr x0, [x29, 144] ldrh w0, [x0, #:lo12:.LANCHOR52] cmp w0, w20 bne .L2403 strh w20, [x19, 2] strb wzr, [x19, 6] strh wzr, [x19, 4] .L2403: ldr w0, [x29, 180] cmp w20, w26 cset w2, eq cmp w27, w0 cset w0, eq tst w2, w0 beq .L2404 .L2550: mov w2, w27 mov w1, w20 mov x0, x19 bl ftl_sb_update_avl_pages b .L2542 .L2385: add w21, w21, 1 and w21, w21, 65535 add x0, x19, x21, sxtw 1 ldrh w0, [x0, 16] b .L2384 .L2386: mov w1, 0 bl FtlGetLastWrittenPage mov w20, w0 cmn w0, #1 beq .L2387 .L2464: mov w23, w20 b .L2388 .L2387: cbz w26, .L2390 mov w2, 2350 adrp x1, .LANCHOR240 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR240 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2390: ldr w0, [x29, 180] cmp w0, 0 ccmp w21, w0, 4, ne beq .L2391 mov w2, 2351 adrp x1, .LANCHOR240 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR240 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2391: strh wzr, [x19, 2] b .L2549 .L2393: ldrh w2, [x4] cmp w2, w8 beq .L2392 umaddl x5, w27, w10, x0 orr w2, w23, w2, lsl 10 add w3, w27, 1 str w2, [x5, 4] mul w2, w27, w7 and w27, w3, 65535 str xzr, [x5, 8] asr w2, w2, 2 add x2, x6, x2, sxtw 2 str x2, [x5, 16] .L2392: add x4, x4, 2 b .L2389 .L2465: str wzr, [x29, 176] b .L2394 .L2400: mov x0, 56 ldr x2, [x22, #:lo12:.LANCHOR186] mul x0, x28, x0 add x1, x2, x0 ldr w0, [x2, x0] cbnz w0, .L2396 ldr x6, [x1, 16] ldr w4, [x6, 4] cmn w4, #1 beq .L2397 ldr x0, [x29, 168] ldr w1, [x0, #:lo12:.LANCHOR165] mov w0, w4 bl ftl_cmp_data_ver cbz w0, .L2397 ldr x0, [x29, 168] add w4, w4, 1 str w4, [x0, #:lo12:.LANCHOR165] .L2397: ldr w0, [x6] cmn w0, #1 bne .L2399 .L2398: ldr x0, [x22, #:lo12:.LANCHOR186] and x28, x28, 65535 mov x1, 56 and w20, w20, 65535 madd x28, x28, x1, x0 ldr w0, [x28, 4] b .L2544 .L2396: ldr w1, [x1, 4] mov x0, x24 bl printf ldrh w0, [x19] and w5, w23, 65535 strh w0, [x25] .L2399: add x28, x28, 1 b .L2395 .L2404: mov w0, 65535 cmp w5, w0 bne .L2405 cbnz w1, .L2406 .L2405: adrp x24, .LANCHOR139 and w6, w23, 65535 ldr w0, [x24, #:lo12:.LANCHOR139] cmn w0, #1 bne .L2407 str w21, [x24, #:lo12:.LANCHOR139] .L2407: add w0, w26, 7 ldr w7, [x24, #:lo12:.LANCHOR139] cmp w0, w23, uxth bge .L2466 sub w23, w6, #7 and w23, w23, 65535 .L2408: mov w3, -1 adrp x5, .LANCHOR123 mov w28, w3 add x5, x5, :lo12:.LANCHOR123 mov w4, 65535 .L2409: cmp w23, w6 bhi .L2424 ldr x1, [x29, 160] mov w25, 0 ldr x0, [x22, #:lo12:.LANCHOR186] mov w10, 56 ldr x2, [x29, 184] ldrh w1, [x1, #:lo12:.LANCHOR38] add x1, x1, 8 add x1, x19, x1, lsl 1 b .L2425 .L2466: mov w23, w26 b .L2408 .L2411: ldrh w8, [x2] cmp w8, w4 beq .L2410 umaddl x11, w25, w10, x0 add w25, w25, 1 and w25, w25, 65535 orr w8, w23, w8, lsl 10 str w8, [x11, 4] .L2410: add x2, x2, 2 .L2425: cmp x2, x1 bne .L2411 ldr w2, [x29, 176] mov w1, w25 str x5, [x29, 112] str w4, [x29, 120] str w7, [x29, 128] str w6, [x29, 136] str w3, [x29, 152] bl FlashReadPages adrp x1, .LANCHOR16 mov w2, 56 ldr w0, [x24, #:lo12:.LANCHOR139] sxtw x12, w23 ldrb w10, [x1, #:lo12:.LANCHOR16] mov w11, 1 ldr x1, [x22, #:lo12:.LANCHOR186] ldr w4, [x29, 120] ldr w7, [x29, 128] ldr w6, [x29, 136] ldr w3, [x29, 152] nop // between mem op and mult-accumulate umaddl x25, w25, w2, x1 ldr x5, [x29, 112] mov w2, 0 .L2412: cmp x25, x1 bne .L2422 cbz w2, .L2423 str w0, [x24, #:lo12:.LANCHOR139] .L2423: add w23, w23, 1 and w23, w23, 65535 b .L2409 .L2422: ldr w8, [x1] cbnz w8, .L2413 ldr x8, [x1, 16] ldrh w13, [x8] cmp w13, w4 beq .L2468 ldr w8, [x8, 4] cmn w8, #1 beq .L2468 cmn w3, #1 bne .L2470 ldrh w2, [x5, x12, lsl 1] cmp w2, w4 bne .L2415 cbz w10, .L2470 .L2415: cmp w21, w0 mov w2, w11 csel w3, w3, w0, eq .L2414: mov w28, w0 add x1, x1, 56 mov w0, w8 b .L2412 .L2413: cbz w2, .L2416 str w0, [x24, #:lo12:.LANCHOR139] .L2416: adrp x0, .LANCHOR241 ldrh w1, [x19] strh w1, [x0, #:lo12:.LANCHOR241] ldrb w0, [x19, 8] cbnz w0, .L2406 adrp x0, .LANCHOR123 add x0, x0, :lo12:.LANCHOR123 ldrh w1, [x0, w23, sxtw 1] mov w0, 65535 cmp w1, w0 bne .L2418 cmn w3, #1 beq .L2419 str w3, [x24, #:lo12:.LANCHOR139] .L2406: adrp x0, .LANCHOR242 mov w23, w26 mov w1, 1 adrp x28, .LANCHOR139 strh w1, [x0, #:lo12:.LANCHOR242] add x0, x28, :lo12:.LANCHOR139 str x0, [x29, 112] .L2426: ldr x2, [x29, 160] adrp x1, .LANCHOR16 ldr x0, [x22, #:lo12:.LANCHOR186] mov w24, 0 ldrb w5, [x1, #:lo12:.LANCHOR16] mov w6, 65535 ldr x3, [x29, 184] ldrh w2, [x2, #:lo12:.LANCHOR38] str x1, [x29, 128] add x2, x2, 8 add x2, x19, x2, lsl 1 .L2427: cmp x2, x3 bne .L2430 ldr w2, [x29, 176] mov w1, w24 mov x25, 0 bl FlashReadPages mov w0, 56 umull x0, w24, w0 str x0, [x29, 136] adrp x0, .LANCHOR241 add x0, x0, :lo12:.LANCHOR241 str x0, [x29, 120] .L2431: ldr x0, [x29, 136] cmp x25, x0 bne .L2457 ldrb w0, [x19, 8] add w23, w23, 1 and w23, w23, 65535 cmp w0, 1 bne .L2458 ldr x0, [x29, 128] ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2458 adrp x0, .LANCHOR53 ldrh w0, [x0, #:lo12:.LANCHOR53] cmp w0, w23 bne .L2458 cmp w20, w23 beq .L2433 .L2458: ldr x0, [x29, 144] ldrh w0, [x0, #:lo12:.LANCHOR52] cmp w0, w23 bne .L2426 ldr x0, [x29, 160] mov w2, 65535 strh w23, [x19, 2] strh wzr, [x19, 4] ldrh w1, [x0, #:lo12:.LANCHOR38] mov w0, 0 .L2459: cmp w0, w1 beq .L2542 ldr x4, [x29, 184] ldrh w3, [x4], 2 str x4, [x29, 184] cmp w3, w2 beq .L2460 strb w0, [x19, 6] b .L2542 .L2419: cmp w21, w7 beq .L2420 str w7, [x24, #:lo12:.LANCHOR139] b .L2406 .L2420: ldr w0, [x24, #:lo12:.LANCHOR139] .L2551: sub w0, w0, #1 .L2545: str w0, [x24, #:lo12:.LANCHOR139] b .L2406 .L2418: cmp w28, w21 beq .L2421 cmn w28, #1 beq .L2406 str w28, [x24, #:lo12:.LANCHOR139] b .L2406 .L2421: ldr w0, [x24, #:lo12:.LANCHOR139] cmp w21, w0 bne .L2551 b .L2406 .L2468: mov w8, w0 mov w0, w28 b .L2414 .L2470: mov w2, 1 b .L2414 .L2424: mov w0, -1 b .L2545 .L2430: ldrh w1, [x3] cmp w1, w6 beq .L2428 mov w4, 56 orr w1, w23, w1, lsl 10 umaddl x4, w24, w4, x0 str w1, [x4, 4] ldrb w7, [x19, 8] cmp w7, 1 bne .L2429 cbz w5, .L2429 orr w1, w1, -2147483648 str w1, [x4, 4] .L2429: add w24, w24, 1 and w24, w24, 65535 .L2428: add x3, x3, 2 b .L2427 .L2457: ldr x4, [x22, #:lo12:.LANCHOR186] add x4, x4, x25 ldr w5, [x4, 4] str w5, [x29, 204] lsr w0, w5, 10 bl P2V_plane and w0, w0, 65535 cmp w23, w26 bcc .L2432 ldr w1, [x29, 180] ccmp w1, w0, 0, eq bhi .L2432 cmp w23, w20 ccmp w27, w0, 0, eq beq .L2433 ldr w0, [x4] cmn w0, #1 beq .L2434 ldr x3, [x4, 16] mov w0, 61589 ldrh w1, [x3] cmp w1, w0 beq .L2435 ldrh w0, [x19] .L2547: bl decrement_vpc_count b .L2432 .L2435: ldr w21, [x3, 4] cmn w21, #1 beq .L2436 ldr x0, [x29, 168] ldr w1, [x0, #:lo12:.LANCHOR165] mov w0, w21 bl ftl_cmp_data_ver cbz w0, .L2436 ldr x1, [x29, 168] add w0, w21, 1 str w0, [x1, #:lo12:.LANCHOR165] .L2436: ldp w24, w0, [x3, 8] add x1, x29, 200 str w0, [x29, 196] mov w2, 0 mov w0, w24 bl log2phys ldr w1, [x28, #:lo12:.LANCHOR139] ldr w3, [x29, 196] cmn w1, #1 beq .L2437 mov w0, w21 bl ftl_cmp_data_ver cbz w0, .L2437 cmn w3, #1 beq .L2438 ldr x0, [x22, #:lo12:.LANCHOR186] mov w2, 0 mov w1, 1 add x0, x0, x25 ldr x4, [x0, 16] str w3, [x0, 4] str x4, [x29, 152] bl FlashReadPages ldr x0, [x22, #:lo12:.LANCHOR186] ldr x4, [x29, 152] add x3, x0, x25 ldr w0, [x0, x25] cmn w0, #1 bne .L2439 .L2440: mov w0, -1 str w0, [x29, 196] .L2447: ldr w3, [x29, 196] cmn w3, #1 beq .L2432 .L2463: lsr w0, w3, 10 bl P2V_block_in_plane and w24, w0, 65535 adrp x0, .LANCHOR40 mov w3, w24 ldrh w0, [x0, #:lo12:.LANCHOR40] cmp w0, w24 bhi .L2453 mov w2, 2683 adrp x1, .LANCHOR240 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR240 add x0, x0, :lo12:.LC5 str w24, [x29, 152] bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf ldr w3, [x29, 152] .L2453: adrp x1, .LANCHOR85 ubfiz x0, x24, 1, 16 ldr x1, [x1, #:lo12:.LANCHOR85] ldrh w0, [x1, x0] cbz w0, .L2454 mov w0, w3 b .L2547 .L2438: ldp w1, w0, [x29, 200] cmp w1, w0 bne .L2432 mov w2, 1 add x1, x29, 196 mov w0, w24 bl log2phys .L2432: add x25, x25, 56 b .L2431 .L2439: ldr w0, [x4, 8] cmp w24, w0 bne .L2440 ldr w0, [x4, 4] str w0, [x29, 152] str x4, [x29, 104] uxtw x1, w0 ldr w0, [x28, #:lo12:.LANCHOR139] bl ftl_cmp_data_ver cbz w0, .L2440 ldp w0, w1, [x29, 200] ldr x4, [x29, 104] cmp w0, w1 ldr w1, [x29, 196] bne .L2442 .L2546: mov w0, w24 bl FtlReUsePrevPpa b .L2440 .L2442: cmp w0, w1 beq .L2440 cmn w0, #1 beq .L2443 ldr x4, [x3, 16] mov w2, 0 str w0, [x3, 4] mov w1, 1 str x4, [x29, 104] mov x0, x3 bl FlashReadPages ldr x4, [x29, 104] .L2444: ldr x0, [x22, #:lo12:.LANCHOR186] ldr w0, [x0, x25] cmn w0, #1 beq .L2445 ldr x0, [x29, 112] ldr w3, [x4, 4] mov w1, w3 ldr w0, [x0] bl ftl_cmp_data_ver cbz w0, .L2445 ldr w0, [x29, 152] mov w1, w3 bl ftl_cmp_data_ver cbz w0, .L2440 .L2445: ldr w1, [x29, 196] b .L2546 .L2443: str w0, [x3] b .L2444 .L2437: ldp w1, w0, [x29, 200] cmp w1, w0 beq .L2447 cmn w3, #1 beq .L2449 adrp x0, .LANCHOR43 ubfx x3, x3, 10, 21 ldr w0, [x0, #:lo12:.LANCHOR43] cmp w3, w0 bcs .L2432 .L2449: mov w2, 1 add x1, x29, 204 mov w0, w24 bl log2phys ldr w3, [x29, 200] cmn w3, #1 beq .L2447 ldr w0, [x29, 196] cmp w3, w0 beq .L2463 lsr w0, w3, 10 bl P2V_block_in_plane adrp x1, .LANCHOR93 and w0, w0, 65535 ldrh w1, [x1, #:lo12:.LANCHOR93] cmp w1, w0 beq .L2452 adrp x1, .LANCHOR94 ldrh w1, [x1, #:lo12:.LANCHOR94] cmp w1, w0 beq .L2452 adrp x1, .LANCHOR95 ldrh w1, [x1, #:lo12:.LANCHOR95] cmp w1, w0 bne .L2447 .L2452: ldr x0, [x22, #:lo12:.LANCHOR186] mov w2, 0 mov w1, 1 ldr x4, [x0, 16] str w3, [x0, 4] str x4, [x29, 152] bl FlashReadPages ldr x0, [x22, #:lo12:.LANCHOR186] ldr w0, [x0] cmn w0, #1 beq .L2447 ldr x4, [x29, 152] mov w0, w21 ldr w1, [x4, 4] bl ftl_cmp_data_ver cbnz w0, .L2447 mov w2, 1 add x1, x29, 200 mov w0, w24 bl log2phys b .L2447 .L2454: mov w1, w24 adrp x0, .LC70 add x0, x0, :lo12:.LC70 bl printf b .L2432 .L2434: ldr x1, [x29, 120] mov w2, w21 ldrh w0, [x19] strh w0, [x1] mov w1, w5 adrp x0, .LC71 add x0, x0, :lo12:.LC71 bl printf adrp x2, .LANCHOR243 ldr w0, [x2, #:lo12:.LANCHOR243] cmp w0, 31 bhi .L2455 adrp x1, .LANCHOR244 add x1, x1, :lo12:.LANCHOR244 ldr w3, [x29, 204] str w3, [x1, w0, uxtw 2] add w0, w0, 1 str w0, [x2, #:lo12:.LANCHOR243] .L2455: ldrh w0, [x19] bl decrement_vpc_count ldr w0, [x28, #:lo12:.LANCHOR139] cmn w0, #1 bne .L2456 .L2548: str w21, [x28, #:lo12:.LANCHOR139] b .L2432 .L2456: cmp w21, w0 bcs .L2432 b .L2548 .L2460: add w0, w0, 1 and w0, w0, 65535 b .L2459 .L2433: strb w27, [x19, 6] strh w20, [x19, 2] b .L2550 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock .section .text.FtlGcScanTempBlk,"ax",@progbits .align 2 .global FtlGcScanTempBlk .type FtlGcScanTempBlk, %function FtlGcScanTempBlk: stp x29, x30, [sp, -176]! mov w2, 65535 add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x0 adrp x0, .LANCHOR245 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] ldrh w20, [x0, #:lo12:.LANCHOR245] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] cmp w20, w2 str x0, [x29, 96] beq .L2580 cbnz w20, .L2553 .L2554: bl FtlGcPageVarInit b .L2555 .L2580: mov w20, 0 .L2553: adrp x0, .LANCHOR52 ldrh w0, [x0, #:lo12:.LANCHOR52] cmp w0, w1 beq .L2554 .L2555: adrp x24, .LANCHOR74 add x24, x24, :lo12:.LANCHOR74 mov w27, -1 .L2556: ldrh w1, [x19] mov w0, 65535 strb wzr, [x19, 8] cmp w1, w0 beq .L2581 mov w28, 56 .L2579: adrp x1, .LANCHOR107 adrp x23, .LANCHOR186 add x3, x19, 16 mov w21, 0 ldr x5, [x1, #:lo12:.LANCHOR107] adrp x1, .LANCHOR57 ldr x0, [x23, #:lo12:.LANCHOR186] mov w10, 65535 ldrh w6, [x1, #:lo12:.LANCHOR57] adrp x1, .LANCHOR108 ldr x7, [x1, #:lo12:.LANCHOR108] adrp x1, .LANCHOR58 ldrh w8, [x1, #:lo12:.LANCHOR58] adrp x1, .LANCHOR38 ldrh w1, [x1, #:lo12:.LANCHOR38] add x1, x1, 8 add x1, x19, x1, lsl 1 .L2558: cmp x3, x1 bne .L2560 mov w2, 0 mov w1, w21 bl FlashReadPages adrp x25, .LANCHOR2 umull x0, w21, w28 add x25, x25, :lo12:.LANCHOR2 mov x22, 0 str x0, [x29, 104] .L2561: ldr x0, [x29, 104] cmp x22, x0 bne .L2578 adrp x0, .LANCHOR52 add w20, w20, 1 and w20, w20, 65535 ldrh w0, [x0, #:lo12:.LANCHOR52] cmp w0, w20 bhi .L2579 .L2581: mov w2, 0 b .L2557 .L2560: ldrh w2, [x3] cmp w2, w10 beq .L2559 umaddl x4, w21, w28, x0 orr w2, w20, w2, lsl 10 str w2, [x4, 4] mul w2, w21, w6 asr w2, w2, 2 add x2, x5, x2, sxtw 2 str x2, [x4, 8] mul w2, w21, w8 add w21, w21, 1 and w21, w21, 65535 asr w2, w2, 2 add x2, x7, x2, sxtw 2 str x2, [x4, 16] .L2559: add x3, x3, 2 b .L2558 .L2578: ldr x4, [x23, #:lo12:.LANCHOR186] add x5, x4, x22 ldr w26, [x5, 4] lsr w0, w26, 10 bl P2V_plane and w2, w0, 65535 ldr w0, [x4, x22] ldr x21, [x5, 16] cbnz w0, .L2562 ldrh w1, [x21] mov w0, 65535 cmp w1, w0 bne .L2563 .L2566: adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2597 adrp x0, .LANCHOR138 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR138] .L2557: ldr x1, [x29, 96] mov w0, -1 strb w2, [x19, 6] strh w20, [x19, 2] strh w0, [x1, #:lo12:.LANCHOR245] mov w1, w20 mov x0, x19 bl ftl_sb_update_avl_pages mov w0, w27 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L2563: ldr w0, [x21, 8] ldr w1, [x24] cmp w0, w1 bhi .L2566 ldrb w1, [x25] cbnz w1, .L2569 .L2570: ldp w2, w0, [x21, 8] mov w1, w26 add x22, x22, 56 bl FtlGcUpdatePage b .L2561 .L2569: add x1, x29, 116 mov w2, 0 bl log2phys ldr w0, [x21, 12] ldr w1, [x29, 116] cmp w0, w1 bne .L2570 cmn w0, #1 beq .L2570 str w0, [x29, 124] adrp x0, .LANCHOR194 mov w2, 0 mov w1, 1 ldr x0, [x0, #:lo12:.LANCHOR194] str x0, [x29, 128] adrp x0, .LANCHOR196 ldr x0, [x0, #:lo12:.LANCHOR196] str x0, [x29, 136] add x0, x29, 120 bl FlashReadPages adrp x0, .LANCHOR55 ldr x2, [x23, #:lo12:.LANCHOR186] ldr x4, [x29, 128] ldrh w1, [x0, #:lo12:.LANCHOR55] add x2, x2, x22 mov x0, 0 ubfiz x1, x1, 9, 16 .L2571: cmp x0, x1 beq .L2570 ldr x5, [x2, 8] ldr w6, [x5, x0] add x0, x0, 4 add x5, x4, x0 ldr w5, [x5, -4] cmp w6, w5 beq .L2571 ldrh w1, [x19] adrp x0, .LC72 ldr w2, [x29, 124] add x0, x0, :lo12:.LC72 bl printf .L2597: adrp x0, .LANCHOR85 ldrh w1, [x19] ldr x0, [x0, #:lo12:.LANCHOR85] strh wzr, [x0, x1, lsl 1] ldrh w0, [x19] bl INSERT_FREE_LIST adrp x1, .LANCHOR213 mov w0, -1 strh w0, [x19] strh w0, [x1, #:lo12:.LANCHOR213] .L2596: bl FtlGcPageVarInit mov w20, 0 b .L2556 .L2562: ldrh w1, [x19] mov w2, w26 adrp x0, .LC73 add x0, x0, :lo12:.LC73 bl printf adrp x0, .LANCHOR104 ldr w1, [x0, #:lo12:.LANCHOR104] ldrh w0, [x19] cbnz w1, .L2574 adrp x1, .LANCHOR16 ldrb w1, [x1, #:lo12:.LANCHOR16] cbz w1, .L2575 .L2574: adrp x2, .LANCHOR80 ubfiz x1, x0, 1, 16 ldr x2, [x2, #:lo12:.LANCHOR80] ldrh w1, [x2, x1] cmp w1, 159 bls .L2576 .L2575: ldr x1, [x23, #:lo12:.LANCHOR186] ldr w1, [x1, x22] cmn w1, #1 bne .L2577 .L2576: ldr x1, [x23, #:lo12:.LANCHOR186] add x22, x1, x22 ldr w27, [x22, 4] .L2577: adrp x1, .LANCHOR85 ubfiz x0, x0, 1, 16 ldr x1, [x1, #:lo12:.LANCHOR85] strh wzr, [x1, x0] ldrh w0, [x19] bl INSERT_FREE_LIST mov w0, -1 strh w0, [x19] b .L2596 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk .section .text.FtlGcFreeTempBlock,"ax",@progbits .align 2 .global FtlGcFreeTempBlock .type FtlGcFreeTempBlock, %function FtlGcFreeTempBlock: adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbz w0, .L2599 mov w0, 0 ret .L2599: stp x29, x30, [sp, -112]! mov w1, 65535 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR95 stp x21, x22, [sp, 32] add x0, x19, :lo12:.LANCHOR95 ldrh w20, [x19, #:lo12:.LANCHOR95] adrp x21, .LANCHOR138 stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] cmp w20, w1 stp x27, x28, [sp, 80] beq .L2601 adrp x1, .LANCHOR52 ldrh w1, [x1, #:lo12:.LANCHOR52] bl FtlGcScanTempBlk str w0, [x29, 108] cmn w0, #1 beq .L2601 adrp x0, .LANCHOR80 ubfiz x20, x20, 1, 16 ldr x1, [x0, #:lo12:.LANCHOR80] ldrh w0, [x1, x20] cmp w0, 4 bls .L2602 sub w0, w0, #5 strh w0, [x1, x20] mov w0, 1 bl FtlEctTblFlush .L2602: ldr w0, [x21, #:lo12:.LANCHOR138] cbnz w0, .L2603 adrp x0, .LANCHOR141 add x0, x0, :lo12:.LANCHOR141 ldr w1, [x0, 96] add w1, w1, 1 str w1, [x0, 96] ldr w0, [x29, 108] lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush .L2603: str wzr, [x21, #:lo12:.LANCHOR138] mov w0, 1 .L2598: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret .L2601: str wzr, [x21, #:lo12:.LANCHOR138] mov w0, 65535 ldrh w1, [x19, #:lo12:.LANCHOR95] add x21, x19, :lo12:.LANCHOR95 cmp w1, w0 beq .L2625 bl FtlCacheWriteBack adrp x20, .LANCHOR113 adrp x0, .LANCHOR52 ldrb w1, [x21, 7] ldrh w2, [x20, #:lo12:.LANCHOR113] mov x21, x0 ldrh w3, [x0, #:lo12:.LANCHOR52] mul w1, w1, w3 cmp w2, w1 beq .L2605 mov w2, 193 adrp x1, .LANCHOR246 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR246 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2605: add x0, x19, :lo12:.LANCHOR95 adrp x22, .LANCHOR85 ldrh w3, [x21, #:lo12:.LANCHOR52] adrp x25, .LANCHOR74 ldrh w2, [x19, #:lo12:.LANCHOR95] add x26, x20, :lo12:.LANCHOR113 ldrb w0, [x0, 7] add x25, x25, :lo12:.LANCHOR74 ldr x1, [x22, #:lo12:.LANCHOR85] mov w21, 0 adrp x27, .LANCHOR114 mul w0, w0, w3 strh w0, [x1, x2, lsl 1] adrp x1, .LANCHOR166 ldrh w0, [x20, #:lo12:.LANCHOR113] ldr w2, [x1, #:lo12:.LANCHOR166] add w0, w0, w2 str w0, [x1, #:lo12:.LANCHOR166] .L2606: ldrh w0, [x26] cmp w0, w21 bhi .L2610 mov w0, -1 bl decrement_vpc_count adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2611 ldrh w1, [x19, #:lo12:.LANCHOR95] adrp x0, .LC74 add x0, x0, :lo12:.LC74 bl printf .L2611: ldrh w0, [x19, #:lo12:.LANCHOR95] ldr x2, [x22, #:lo12:.LANCHOR85] ubfiz x1, x0, 1, 16 ldrh w1, [x2, x1] cbz w1, .L2612 bl INSERT_DATA_LIST .L2613: adrp x0, .LANCHOR111 mov w21, -1 strh wzr, [x20, #:lo12:.LANCHOR113] strh w21, [x19, #:lo12:.LANCHOR95] strh wzr, [x0, #:lo12:.LANCHOR111] bl l2p_flush bl FtlVpcTblFlush adrp x0, .LANCHOR213 strh w21, [x0, #:lo12:.LANCHOR213] adrp x0, .LANCHOR90 ldrh w1, [x0, #:lo12:.LANCHOR90] adrp x0, .LANCHOR232 ldrh w0, [x0, #:lo12:.LANCHOR232] add w0, w0, w0, lsl 1 cmp w1, w0, lsr 2 ble .L2625 adrp x0, .LANCHOR181 mov w1, 20 strh w1, [x0, #:lo12:.LANCHOR181] .L2625: mov w0, 0 b .L2598 .L2610: mov w24, 12 ldr x28, [x27, #:lo12:.LANCHOR114] ldr w1, [x25] umull x24, w21, w24 add x23, x28, x24 ldr w0, [x23, 8] cmp w0, w1 bcc .L2607 .L2623: ldrh w0, [x19, #:lo12:.LANCHOR95] b .L2624 .L2607: add x1, x29, 108 mov w2, 0 bl log2phys ldr w0, [x28, x24] ldr w1, [x29, 108] cmp w0, w1 bne .L2609 lsr w0, w0, 10 bl P2V_block_in_plane mov w24, w0 ldr w0, [x23, 8] mov w2, 1 add x1, x23, 4 bl log2phys mov w0, w24 .L2624: bl decrement_vpc_count b .L2608 .L2609: ldr w0, [x23, 4] cmp w1, w0 bne .L2623 .L2608: add w21, w21, 1 and w21, w21, 65535 b .L2606 .L2612: bl INSERT_FREE_LIST b .L2613 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock .section .text.FtlGcPageRecovery,"ax",@progbits .align 2 .global FtlGcPageRecovery .type FtlGcPageRecovery, %function FtlGcPageRecovery: stp x29, x30, [sp, -32]! add x29, sp, 0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR52 adrp x19, .LANCHOR95 add x19, x19, :lo12:.LANCHOR95 ldrh w1, [x20, #:lo12:.LANCHOR52] mov x0, x19 bl FtlGcScanTempBlk ldrh w1, [x19, 2] ldrh w0, [x20, #:lo12:.LANCHOR52] cmp w1, w0 bcc .L2626 adrp x0, .LANCHOR130 add x0, x0, :lo12:.LANCHOR130 bl FtlMapBlkWriteDumpData mov w0, 0 bl FtlGcFreeTempBlock adrp x0, .LANCHOR138 str wzr, [x0, #:lo12:.LANCHOR138] .L2626: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlGcPageRecovery, .-FtlGcPageRecovery .section .text.FtlPowerLostRecovery,"ax",@progbits .align 2 .global FtlPowerLostRecovery .type FtlPowerLostRecovery, %function FtlPowerLostRecovery: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR243 add x29, sp, 0 str x19, [sp, 16] adrp x19, .LANCHOR93 add x19, x19, :lo12:.LANCHOR93 str wzr, [x0, #:lo12:.LANCHOR243] mov x0, x19 bl FtlRecoverySuperblock mov x0, x19 adrp x19, .LANCHOR94 bl FtlSlcSuperblockCheck add x19, x19, :lo12:.LANCHOR94 mov x0, x19 bl FtlRecoverySuperblock mov x0, x19 bl FtlSlcSuperblockCheck bl FtlGcPageRecovery mov w0, -1 bl decrement_vpc_count mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size FtlPowerLostRecovery, .-FtlPowerLostRecovery .section .text.FtlSysBlkInit,"ax",@progbits .align 2 .global FtlSysBlkInit .type FtlSysBlkInit, %function FtlSysBlkInit: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR241 mov w1, -1 add x29, sp, 0 strh w1, [x0, #:lo12:.LANCHOR241] adrp x0, .LANCHOR39 stp x19, x20, [sp, 16] adrp x20, .LANCHOR242 ldrh w0, [x0, #:lo12:.LANCHOR39] strh wzr, [x20, #:lo12:.LANCHOR242] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk adrp x0, .LANCHOR218 ldrh w1, [x0, #:lo12:.LANCHOR218] mov w0, 65535 cmp w1, w0 bne .L2632 .L2634: mov w19, -1 .L2631: mov w0, w19 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .L2632: bl FtlLoadSysInfo mov w19, w0 cbnz w0, .L2634 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data bl FtlLoadEctTbl bl FtlFreeSysBLkSort bl SupperBlkListInit bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn adrp x0, .LANCHOR67 ldrh w2, [x0, #:lo12:.LANCHOR67] adrp x0, .LANCHOR98 ldr x1, [x0, #:lo12:.LANCHOR98] mov w0, 0 add x1, x1, 4 .L2635: cmp w0, w2 bge .L2640 ldr w3, [x1], 16 tbz w3, #31, .L2636 .L2640: adrp x3, .LANCHOR165 cmp w0, w2 ldr w1, [x3, #:lo12:.LANCHOR165] add w1, w1, 32 str w1, [x3, #:lo12:.LANCHOR165] bge .L2642 .L2637: adrp x0, .LANCHOR85 adrp x1, .LANCHOR93 ldr x2, [x0, #:lo12:.LANCHOR85] add x0, x1, :lo12:.LANCHOR93 ldrh w1, [x1, #:lo12:.LANCHOR93] ldrh w4, [x0, 4] lsl x1, x1, 1 ldrh w3, [x2, x1] sub w3, w3, w4 adrp x4, .LANCHOR52 strh w3, [x2, x1] strh wzr, [x0, 4] ldrh w1, [x4, #:lo12:.LANCHOR52] strh w1, [x0, 2] adrp x1, .LANCHOR94 strb wzr, [x0, 6] add x0, x1, :lo12:.LANCHOR94 ldrh w1, [x1, #:lo12:.LANCHOR94] ldrh w5, [x0, 4] lsl x1, x1, 1 ldrh w3, [x2, x1] sub w3, w3, w5 strh w3, [x2, x1] strb wzr, [x0, 6] ldrh w1, [x4, #:lo12:.LANCHOR52] strh w1, [x0, 2] strh wzr, [x0, 4] adrp x0, .LANCHOR82 add x0, x0, :lo12:.LANCHOR82 ldrh w1, [x0, 30] add w1, w1, 1 strh w1, [x0, 30] bl l2p_flush bl FtlVpcTblFlush .L2644: bl FtlVpcTblFlush b .L2631 .L2636: add w0, w0, 1 b .L2635 .L2642: ldrh w0, [x20, #:lo12:.LANCHOR242] cbnz w0, .L2637 bl l2p_flush b .L2644 .size FtlSysBlkInit, .-FtlSysBlkInit .section .text.FtlLowFormat,"ax",@progbits .align 2 .global FtlLowFormat .type FtlLowFormat, %function FtlLowFormat: adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbnz w0, .L2677 stp x29, x30, [sp, -96]! adrp x0, .LANCHOR203 mov w1, 0 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR66 ldr x0, [x0, #:lo12:.LANCHOR203] adrp x20, .LANCHOR164 ldrh w2, [x19, #:lo12:.LANCHOR66] stp x23, x24, [sp, 48] adrp x24, .LANCHOR39 stp x21, x22, [sp, 32] stp x25, x26, [sp, 64] lsl w2, w2, 2 str x27, [sp, 80] bl ftl_memset adrp x0, .LANCHOR134 ldrh w2, [x19, #:lo12:.LANCHOR66] mov w1, 0 ldr x0, [x0, #:lo12:.LANCHOR134] lsl w2, w2, 2 bl ftl_memset str wzr, [x20, #:lo12:.LANCHOR164] adrp x0, .LANCHOR165 str wzr, [x0, #:lo12:.LANCHOR165] ldrh w0, [x24, #:lo12:.LANCHOR39] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cbz w0, .L2648 bl FtlMakeBbt .L2648: adrp x23, .LANCHOR55 adrp x0, .LANCHOR193 mov w6, 23752 ldrh w1, [x23, #:lo12:.LANCHOR55] movk w6, 0xa0f, lsl 16 ldr x4, [x0, #:lo12:.LANCHOR193] adrp x0, .LANCHOR194 lsl w1, w1, 7 ldr x5, [x0, #:lo12:.LANCHOR194] mov w0, 0 .L2649: cmp w0, w1 blt .L2650 adrp x21, .LANCHOR40 adrp x22, .LANCHOR41 add x26, x22, :lo12:.LANCHOR41 mov w19, 0 ldrh w25, [x21, #:lo12:.LANCHOR40] .L2651: ldrh w0, [x26] cmp w0, w25 bhi .L2652 adrp x26, .LANCHOR38 sub w1, w19, #2 ldrh w0, [x26, #:lo12:.LANCHOR38] cmp w1, w0, lsl 1 ble .L2653 adrp x1, .LANCHOR65 add x25, x22, :lo12:.LANCHOR41 udiv w0, w19, w0 ldr w19, [x1, #:lo12:.LANCHOR65] add w0, w0, w19 bl FtlSysBlkNumInit ldrh w0, [x24, #:lo12:.LANCHOR39] mov w19, 0 bl FtlFreeSysBlkQueueInit ldrh w24, [x21, #:lo12:.LANCHOR40] .L2654: ldrh w0, [x25] cmp w0, w24 bhi .L2655 .L2653: add x27, x21, :lo12:.LANCHOR40 mov w24, 0 mov w25, 0 .L2656: ldrh w0, [x27] cmp w0, w25 bhi .L2657 adrp x0, .LANCHOR75 ldrh w1, [x22, #:lo12:.LANCHOR41] adrp x2, .LANCHOR232 str w1, [x0, #:lo12:.LANCHOR75] adrp x0, .LANCHOR42 ldrh w1, [x26, #:lo12:.LANCHOR38] ldr w3, [x0, #:lo12:.LANCHOR42] adrp x0, .LANCHOR74 udiv w6, w3, w1 ubfx x5, x6, 5, 16 str w6, [x0, #:lo12:.LANCHOR74] add w4, w5, 36 strh w4, [x2, #:lo12:.LANCHOR232] mov w4, 24 mul w4, w1, w4 cmp w24, w4 ble .L2658 sub w3, w3, w24 udiv w3, w3, w1 str w3, [x0, #:lo12:.LANCHOR74] lsr w3, w3, 5 add w3, w3, 24 strh w3, [x2, #:lo12:.LANCHOR232] .L2658: adrp x3, .LANCHOR104 ldr w3, [x3, #:lo12:.LANCHOR104] cmp w3, 1 bne .L2659 udiv w4, w24, w1 ldrh w3, [x2, #:lo12:.LANCHOR232] add w4, w4, w3 add w4, w3, w4, asr 2 strh w4, [x2, #:lo12:.LANCHOR232] .L2659: adrp x3, .LANCHOR16 ldrb w3, [x3, #:lo12:.LANCHOR16] cbz w3, .L2660 udiv w4, w24, w1 ldrh w3, [x2, #:lo12:.LANCHOR232] add w4, w4, w3 add w4, w3, w4, asr 2 strh w4, [x2, #:lo12:.LANCHOR232] .L2660: adrp x3, .LANCHOR49 ldrh w3, [x3, #:lo12:.LANCHOR49] cbz w3, .L2662 ldrh w4, [x2, #:lo12:.LANCHOR232] add w4, w4, w3, lsr 1 strh w4, [x2, #:lo12:.LANCHOR232] mul w4, w3, w1 cmp w24, w4 bge .L2662 add w3, w3, 32 str w6, [x0, #:lo12:.LANCHOR74] add w3, w5, w3 strh w3, [x2, #:lo12:.LANCHOR232] .L2662: ldrh w3, [x2, #:lo12:.LANCHOR232] adrp x25, .LANCHOR231 ldr w2, [x0, #:lo12:.LANCHOR74] sub w2, w2, w3 mul w1, w2, w1 adrp x2, .LANCHOR52 str w1, [x25, #:lo12:.LANCHOR231] ldrh w2, [x2, #:lo12:.LANCHOR52] mul w1, w2, w1 str w1, [x0, #:lo12:.LANCHOR74] ldrh w0, [x23, #:lo12:.LANCHOR55] mul w1, w0, w1 adrp x0, .LANCHOR68 str w1, [x0, #:lo12:.LANCHOR68] bl FtlBbmTblFlush adrp x0, .LANCHOR43 add w1, w19, w24 ldr w2, [x0, #:lo12:.LANCHOR43] adrp x0, .LANCHOR59 ldrh w0, [x0, #:lo12:.LANCHOR59] add w0, w0, w2, lsr 3 cmp w1, w0 bls .L2664 adrp x0, .LC75 lsr w2, w2, 5 add x0, x0, :lo12:.LC75 bl printf .L2664: adrp x24, .LANCHOR85 ldrh w2, [x22, #:lo12:.LANCHOR41] mov w1, 0 mov w22, -1 ldr x0, [x24, #:lo12:.LANCHOR85] lsl w2, w2, 1 bl ftl_memset adrp x0, .LANCHOR102 adrp x1, .LANCHOR213 ldrh w2, [x21, #:lo12:.LANCHOR40] str wzr, [x0, #:lo12:.LANCHOR102] add x0, x1, :lo12:.LANCHOR213 strh w22, [x1, #:lo12:.LANCHOR213] mov w1, 255 lsr w2, w2, 3 strh wzr, [x0, 2] strb wzr, [x0, 6] strb wzr, [x0, 8] adrp x0, .LANCHOR93 add x19, x0, :lo12:.LANCHOR93 strh wzr, [x0, #:lo12:.LANCHOR93] mov w0, 1 strb w0, [x19, 8] adrp x0, .LANCHOR1 strh wzr, [x19, 2] ldr x0, [x0, #:lo12:.LANCHOR1] strb wzr, [x19, 6] bl ftl_memset .L2665: mov x0, x19 bl make_superblock ldrb w1, [x19, 7] ldrh w0, [x19] cbnz w1, .L2666 ldr x1, [x24, #:lo12:.LANCHOR85] ubfiz x0, x0, 1, 16 strh w22, [x1, x0] ldrh w0, [x19] add w0, w0, 1 strh w0, [x19] b .L2665 .L2650: ubfiz x3, x0, 2, 16 mvn w2, w0 orr w2, w0, w2, lsl 16 add w0, w0, 1 and w0, w0, 65535 str w2, [x4, x3] str w6, [x5, x3] b .L2649 .L2652: mov w0, w25 mov w1, 1 add w25, w25, 1 bl FtlLowFormatEraseBlock add w19, w19, w0 and w25, w25, 65535 and w19, w19, 65535 b .L2651 .L2655: mov w0, w24 mov w1, 1 add w24, w24, 1 bl FtlLowFormatEraseBlock add w19, w19, w0 and w24, w24, 65535 and w19, w19, 65535 b .L2654 .L2657: mov w0, w25 mov w1, 0 add w25, w25, 1 bl FtlLowFormatEraseBlock add w24, w24, w0 and w25, w25, 65535 and w24, w24, 65535 b .L2656 .L2666: ldr w1, [x20, #:lo12:.LANCHOR164] ubfiz x0, x0, 1, 16 str w1, [x19, 12] mov w22, -1 add w1, w1, 1 str w1, [x20, #:lo12:.LANCHOR164] ldr x1, [x24, #:lo12:.LANCHOR85] ldrh w2, [x19, 4] strh w2, [x1, x0] adrp x2, .LANCHOR94 add x0, x2, :lo12:.LANCHOR94 ldrh w1, [x19] mov x19, x0 add w1, w1, 1 strh wzr, [x0, 2] strh w1, [x2, #:lo12:.LANCHOR94] mov w1, 1 strb wzr, [x0, 6] strb w1, [x0, 8] .L2667: mov x0, x19 bl make_superblock ldrb w1, [x19, 7] ldrh w0, [x19] cbnz w1, .L2668 ldr x1, [x24, #:lo12:.LANCHOR85] ubfiz x0, x0, 1, 16 strh w22, [x1, x0] ldrh w0, [x19] add w0, w0, 1 strh w0, [x19] b .L2667 .L2668: ldr w1, [x20, #:lo12:.LANCHOR164] ubfiz x0, x0, 1, 16 str w1, [x19, 12] add w1, w1, 1 str w1, [x20, #:lo12:.LANCHOR164] ldr x1, [x24, #:lo12:.LANCHOR85] ldrh w2, [x19, 4] mov w19, -1 strh w2, [x1, x0] adrp x0, .LANCHOR95 strh w19, [x0, #:lo12:.LANCHOR95] bl FtlFreeSysBlkQueueOut adrp x2, .LANCHOR218 add x1, x2, :lo12:.LANCHOR218 strh w0, [x2, #:lo12:.LANCHOR218] ldr w0, [x25, #:lo12:.LANCHOR231] strh w0, [x1, 6] ldr w0, [x20, #:lo12:.LANCHOR164] str w0, [x1, 8] add w0, w0, 1 strh wzr, [x1, 2] strh w19, [x1, 4] str w0, [x20, #:lo12:.LANCHOR164] bl FtlVpcTblFlush bl FtlSysBlkInit cbnz w0, .L2647 adrp x0, .LANCHOR247 mov w1, 1 str w1, [x0, #:lo12:.LANCHOR247] .L2647: mov w0, 0 ldr x27, [sp, 80] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret .L2677: mov w0, 0 ret .size FtlLowFormat, .-FtlLowFormat .section .text.Ftl_gc_temp_data_write_back,"ax",@progbits .align 2 .global Ftl_gc_temp_data_write_back .type Ftl_gc_temp_data_write_back, %function Ftl_gc_temp_data_write_back: adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbz w0, .L2681 mov w0, 0 ret .L2684: mov w0, 0 .L2680: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .L2681: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR16 add x29, sp, 0 ldrb w0, [x0, #:lo12:.LANCHOR16] stp x19, x20, [sp, 16] adrp x19, .LANCHOR105 cbz w0, .L2683 ldr w0, [x19, #:lo12:.LANCHOR105] tbz x0, 0, .L2683 adrp x0, .LANCHOR95+4 ldrh w0, [x0, #:lo12:.LANCHOR95+4] cbnz w0, .L2684 .L2683: adrp x20, .LANCHOR187 ldr w1, [x19, #:lo12:.LANCHOR105] mov w3, 0 mov w2, 0 ldr x0, [x20, #:lo12:.LANCHOR187] add x19, x19, :lo12:.LANCHOR105 bl FlashProgPages mov w11, 0 mov w12, 56 .L2685: ldr w1, [x19] cmp w11, w1 bcc .L2687 ldr x0, [x20, #:lo12:.LANCHOR187] bl FtlGcBufFree str wzr, [x19] adrp x0, .LANCHOR95+4 ldrh w0, [x0, #:lo12:.LANCHOR95+4] cbnz w0, .L2684 mov w0, 1 bl FtlGcFreeTempBlock b .L2697 .L2687: umull x0, w11, w12 ldr x2, [x20, #:lo12:.LANCHOR187] add x1, x2, x0 ldr w2, [x2, x0] ldr x3, [x1, 16] cmn w2, #1 bne .L2686 adrp x0, .LANCHOR95 adrp x3, .LANCHOR85 ldrh w4, [x0, #:lo12:.LANCHOR95] ldr x3, [x3, #:lo12:.LANCHOR85] strh wzr, [x3, x4, lsl 1] strh w2, [x0, #:lo12:.LANCHOR95] adrp x0, .LANCHOR141 add x0, x0, :lo12:.LANCHOR141 ldr w2, [x0, 96] add w2, w2, 1 str w2, [x0, 96] ldr w0, [x1, 4] lsr w0, w0, 10 bl FtlBbmMapBadBlock bl FtlBbmTblFlush bl FtlGcPageVarInit .L2697: mov w0, 1 b .L2680 .L2686: ldr w1, [x1, 4] ldp w2, w0, [x3, 8] bl FtlGcUpdatePage add w11, w11, 1 and w11, w11, 65535 b .L2685 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back .section .text.Ftl_get_new_temp_ppa,"ax",@progbits .align 2 .global Ftl_get_new_temp_ppa .type Ftl_get_new_temp_ppa, %function Ftl_get_new_temp_ppa: stp x29, x30, [sp, -32]! adrp x0, .LANCHOR95 mov w2, 65535 add x29, sp, 0 str x19, [sp, 16] mov x19, x0 ldrh w3, [x0, #:lo12:.LANCHOR95] cmp w3, w2 beq .L2699 add x1, x0, :lo12:.LANCHOR95 ldrh w0, [x1, 4] cbnz w0, .L2700 .L2699: bl FtlCacheWriteBack mov w0, 0 bl FtlGcFreeTempBlock add x0, x19, :lo12:.LANCHOR95 strb wzr, [x0, 8] bl allocate_data_superblock adrp x0, .LANCHOR111 strh wzr, [x0, #:lo12:.LANCHOR111] adrp x0, .LANCHOR113 strh wzr, [x0, #:lo12:.LANCHOR113] bl l2p_flush mov w0, 0 bl FtlEctTblFlush bl FtlVpcTblFlush .L2700: add x0, x19, :lo12:.LANCHOR95 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 b get_new_active_ppa .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa .section .text.ftl_do_gc,"ax",@progbits .align 2 .global ftl_do_gc .type ftl_do_gc, %function ftl_do_gc: adrp x1, .LANCHOR78 ldr w1, [x1, #:lo12:.LANCHOR78] cbnz w1, .L2762 adrp x1, .LANCHOR247 ldr w1, [x1, #:lo12:.LANCHOR247] cmp w1, 1 bne .L2762 stp x29, x30, [sp, -176]! add x29, sp, 0 stp x21, x22, [sp, 32] adrp x21, .LANCHOR176 stp x19, x20, [sp, 16] ldr w1, [x21, #:lo12:.LANCHOR176] stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] cbnz w1, .L2764 adrp x1, .LANCHOR87 ldrh w1, [x1, #:lo12:.LANCHOR87] cmp w1, 47 bls .L2764 adrp x5, .LANCHOR116 mov w2, 65535 ldrh w8, [x5, #:lo12:.LANCHOR116] cmp w8, w2 beq .L2704 adrp x7, .LANCHOR115 ldrh w1, [x7, #:lo12:.LANCHOR115] cmp w1, w2 bne .L2704 adrp x3, .LANCHOR117 ldrh w6, [x3, #:lo12:.LANCHOR117] cmp w6, w1 beq .L2704 adrp x2, .LANCHOR118 ldrh w4, [x2, #:lo12:.LANCHOR118] cmp w4, w1 beq .L2704 mov w1, -1 strh w8, [x7, #:lo12:.LANCHOR115] strh w6, [x5, #:lo12:.LANCHOR116] strh w4, [x3, #:lo12:.LANCHOR117] strh w1, [x2, #:lo12:.LANCHOR118] .L2704: cbnz w0, .L2765 adrp x0, .LANCHOR90 ldrh w0, [x0, #:lo12:.LANCHOR90] cmp w0, 24 bhi .L2766 adrp x1, .LANCHOR52 cmp w0, 16 ldrh w20, [x1, #:lo12:.LANCHOR52] bls .L2707 lsr w20, w20, 5 .L2706: adrp x2, .LANCHOR181 mov x3, x2 ldrh w1, [x2, #:lo12:.LANCHOR181] cmp w1, w0 bcs .L2710 adrp x0, .LANCHOR95 mov w1, 65535 ldrh w0, [x0, #:lo12:.LANCHOR95] cmp w0, w1 bne .L2711 adrp x1, .LANCHOR115 ldrh w1, [x1, #:lo12:.LANCHOR115] cmp w1, w0 bne .L2711 adrp x0, .LANCHOR248 ldrh w0, [x0, #:lo12:.LANCHOR248] cbnz w0, .L2712 adrp x1, .LANCHOR74 adrp x4, .LANCHOR102 ldr w1, [x1, #:lo12:.LANCHOR74] ldr w4, [x4, #:lo12:.LANCHOR102] add w1, w1, w1, lsl 1 cmp w4, w1, lsr 2 bcs .L2713 .L2712: adrp x1, .LANCHOR232 ldrh w1, [x1, #:lo12:.LANCHOR232] add w1, w1, w1, lsl 1 asr w1, w1, 2 strh w1, [x3, #:lo12:.LANCHOR181] .L2714: adrp x1, .LANCHOR177 str wzr, [x1, #:lo12:.LANCHOR177] .L2702: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 176 ret .L2707: cmp w0, 12 bls .L2708 lsr w20, w20, 4 b .L2706 .L2708: cmp w0, 8 bls .L2706 lsr w20, w20, 2 b .L2706 .L2766: mov w20, 1 b .L2706 .L2713: mov w1, 18 strh w1, [x2, #:lo12:.LANCHOR181] b .L2714 .L2711: adrp x0, .LANCHOR232 ldrh w0, [x0, #:lo12:.LANCHOR232] add w0, w0, w0, lsl 1 asr w0, w0, 2 strh w0, [x3, #:lo12:.LANCHOR181] .L2710: adrp x0, .LANCHOR119 ldrh w0, [x0, #:lo12:.LANCHOR119] cbz w0, .L2705 add w20, w20, 32 and w20, w20, 65535 .L2705: adrp x19, .LANCHOR213 mov w0, 65535 ldrh w2, [x19, #:lo12:.LANCHOR213] cmp w2, w0 bne .L2717 adrp x0, .LANCHOR115 ldrh w1, [x0, #:lo12:.LANCHOR115] cmp w1, w2 beq .L2718 adrp x2, .LANCHOR85 ubfiz x1, x1, 1, 16 ldr x2, [x2, #:lo12:.LANCHOR85] ldrh w1, [x2, x1] cbnz w1, .L2719 mov w1, -1 strh w1, [x0, #:lo12:.LANCHOR115] .L2719: ldrh w1, [x0, #:lo12:.LANCHOR115] strh w1, [x19, #:lo12:.LANCHOR213] mov w1, -1 strh w1, [x0, #:lo12:.LANCHOR115] .L2718: add x0, x19, :lo12:.LANCHOR213 mov w1, 65535 strb wzr, [x0, 8] ldrh w0, [x19, #:lo12:.LANCHOR213] cmp w0, w1 beq .L2717 bl IsBlkInGcList cbz w0, .L2721 mov w0, -1 strh w0, [x19, #:lo12:.LANCHOR213] .L2721: adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2722 ldrh w0, [x19, #:lo12:.LANCHOR213] add x3, x19, :lo12:.LANCHOR213 bl ftl_get_blk_mode strb w0, [x3, 8] .L2722: ldrh w1, [x19, #:lo12:.LANCHOR213] mov w0, 65535 add x22, x19, :lo12:.LANCHOR213 cmp w1, w0 beq .L2717 mov x0, x22 bl make_superblock adrp x0, .LANCHOR249 ldrh w1, [x19, #:lo12:.LANCHOR213] strh wzr, [x22, 2] strh wzr, [x0, #:lo12:.LANCHOR249] adrp x0, .LANCHOR85 strb wzr, [x22, 6] ldr x0, [x0, #:lo12:.LANCHOR85] ldrh w1, [x0, x1, lsl 1] adrp x0, .LANCHOR250 strh w1, [x0, #:lo12:.LANCHOR250] .L2717: adrp x1, .LANCHOR93 ldrh w0, [x19, #:lo12:.LANCHOR213] str x1, [x29, 128] ldrh w2, [x1, #:lo12:.LANCHOR93] cmp w2, w0 beq .L2723 adrp x1, .LANCHOR94 ldrh w1, [x1, #:lo12:.LANCHOR94] cmp w1, w0 beq .L2723 adrp x1, .LANCHOR95 ldrh w1, [x1, #:lo12:.LANCHOR95] cmp w1, w0 bne .L2724 .L2723: mov w0, -1 strh w0, [x19, #:lo12:.LANCHOR213] .L2724: adrp x25, .LANCHOR183 add x26, x25, :lo12:.LANCHOR183 .L2760: ldrh w1, [x19, #:lo12:.LANCHOR213] mov w0, 65535 cmp w1, w0 bne .L2725 adrp x0, .LANCHOR177 adrp x22, .LANCHOR52 add x22, x22, :lo12:.LANCHOR52 str wzr, [x0, #:lo12:.LANCHOR177] .L2726: ldrh w5, [x25, #:lo12:.LANCHOR183] add x7, x25, :lo12:.LANCHOR183 mov w0, w5 bl List_get_gc_head_node and w6, w0, 65535 strh w6, [x19, #:lo12:.LANCHOR213] mov w0, 65535 cmp w6, w0 bne .L2727 strh wzr, [x7] mov w0, 8 b .L2702 .L2765: mov w20, 1 b .L2705 .L2727: mov w0, w6 bl IsBlkInGcList add w5, w5, 1 cbz w0, .L2728 strh w5, [x25, #:lo12:.LANCHOR183] b .L2726 .L2728: adrp x23, .LANCHOR85 adrp x4, .LANCHOR38 ldrh w0, [x22] ubfiz x1, x6, 1, 16 ldr x2, [x23, #:lo12:.LANCHOR85] and w5, w5, 65535 ldrh w4, [x4, #:lo12:.LANCHOR38] strh w5, [x25, #:lo12:.LANCHOR183] ldrh w3, [x2, x1] mul w0, w0, w4 cmp w3, w0, asr 1 bgt .L2730 cmp w5, 48 bls .L2731 cmp w3, 8 bls .L2731 adrp x3, .LANCHOR111 ldrh w3, [x3, #:lo12:.LANCHOR111] cmp w3, 35 bhi .L2731 .L2730: strh wzr, [x26] .L2731: ldrh w1, [x2, x1] cmp w0, w1 bgt .L2732 ldrh w0, [x26] cmp w0, 3 bhi .L2732 mov w0, -1 strh wzr, [x26] strh w0, [x19, #:lo12:.LANCHOR213] .L2804: adrp x0, .LANCHOR248 ldrh w0, [x0, #:lo12:.LANCHOR248] b .L2702 .L2732: cbnz w1, .L2733 mov w0, -1 bl decrement_vpc_count ldrh w0, [x26] add w0, w0, 1 strh w0, [x26] b .L2726 .L2733: adrp x0, .LANCHOR16 add x3, x19, :lo12:.LANCHOR213 ldrb w0, [x0, #:lo12:.LANCHOR16] strb wzr, [x3, 8] cbz w0, .L2734 mov w0, w6 bl ftl_get_blk_mode strb w0, [x3, 8] .L2734: ldr x0, [x29, 128] ldrh w0, [x0, #:lo12:.LANCHOR93] cmp w0, w6 bne .L2735 mov w2, 1069 adrp x1, .LANCHOR251 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR251 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2735: adrp x0, .LANCHOR94 ldrh w1, [x19, #:lo12:.LANCHOR213] ldrh w0, [x0, #:lo12:.LANCHOR94] cmp w1, w0 bne .L2736 mov w2, 1070 adrp x1, .LANCHOR251 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR251 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2736: adrp x0, .LANCHOR95 ldrh w1, [x19, #:lo12:.LANCHOR213] ldrh w0, [x0, #:lo12:.LANCHOR95] cmp w1, w0 bne .L2737 mov w2, 1071 adrp x1, .LANCHOR251 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR251 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2737: add x22, x19, :lo12:.LANCHOR213 mov x0, x22 bl make_superblock adrp x0, .LANCHOR249 ldrh w1, [x19, #:lo12:.LANCHOR213] strh wzr, [x0, #:lo12:.LANCHOR249] ldr x0, [x23, #:lo12:.LANCHOR85] ldrh w1, [x0, x1, lsl 1] adrp x0, .LANCHOR250 strh wzr, [x22, 2] strh w1, [x0, #:lo12:.LANCHOR250] strb wzr, [x22, 6] .L2725: adrp x1, .LANCHOR52 mov w0, 1 str w0, [x21, #:lo12:.LANCHOR176] ldrh w0, [x1, #:lo12:.LANCHOR52] str w0, [x29, 156] adrp x0, .LANCHOR16 str x1, [x29, 120] str x0, [x29, 112] ldrb w2, [x0, #:lo12:.LANCHOR16] cbz w2, .L2738 add x0, x19, :lo12:.LANCHOR213 ldrb w0, [x0, 8] cmp w0, 1 bne .L2738 adrp x0, .LANCHOR53 ldrh w0, [x0, #:lo12:.LANCHOR53] str w0, [x29, 156] .L2738: add x0, x19, :lo12:.LANCHOR213 ldr w2, [x29, 156] ldrh w0, [x0, 2] add w1, w0, w20 cmp w1, w2 ble .L2739 sub w20, w2, w0 and w20, w20, 65535 .L2739: adrp x0, .LANCHOR249 mov w28, 0 add x0, x0, :lo12:.LANCHOR249 str x0, [x29, 144] .L2740: cmp w20, w28, uxth bls .L2748 add x1, x19, :lo12:.LANCHOR213 adrp x0, .LANCHOR38 adrp x23, .LANCHOR109 add x1, x1, 16 ldrh w7, [x0, #:lo12:.LANCHOR38] mov w22, 0 ldrh w4, [x1, -14] mov w2, 0 ldr x0, [x23, #:lo12:.LANCHOR109] mov w6, 65535 add w4, w4, w28 mov w5, 56 b .L2749 .L2742: ldrh w3, [x1] cmp w3, w6 beq .L2741 umaddl x8, w22, w5, x0 add w22, w22, 1 and w22, w22, 65535 orr w3, w4, w3, lsl 10 str w3, [x8, 4] .L2741: add w2, w2, 1 add x1, x1, 2 and w2, w2, 65535 .L2749: cmp w2, w7 bne .L2742 add x1, x19, :lo12:.LANCHOR213 adrp x24, .LANCHOR105 add x24, x24, :lo12:.LANCHOR105 ldrb w2, [x1, 8] mov w1, w22 bl FlashReadPages mov w0, 56 umull x0, w22, w0 mov x22, 0 str x0, [x29, 136] .L2743: ldr x0, [x29, 136] cmp x0, x22 bne .L2747 add w28, w28, 1 b .L2740 .L2747: ldr x0, [x23, #:lo12:.LANCHOR109] add x1, x0, x22 ldr w0, [x0, x22] cmn w0, #1 beq .L2744 ldr x27, [x1, 16] mov w0, 61589 ldrh w1, [x27] cmp w1, w0 bne .L2744 ldr w4, [x27, 8] cmn w4, #1 bne .L2745 mov w2, 1119 str w4, [x29, 104] adrp x1, .LANCHOR251 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR251 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf ldr w4, [x29, 104] .L2745: mov w2, 0 add x1, x29, 168 mov w0, w4 bl log2phys ldr x0, [x23, #:lo12:.LANCHOR109] ldr w1, [x29, 168] add x0, x0, x22 and w1, w1, 2147483647 ldr w2, [x0, 4] cmp w1, w2 bne .L2744 ldr x1, [x29, 144] adrp x4, .LANCHOR187 ldr x2, [x29, 144] ldr x5, [x4, #:lo12:.LANCHOR187] ldr w0, [x0, 24] ldrh w1, [x1] add w1, w1, 1 strh w1, [x2] ldr w2, [x24] mov w1, 56 str w1, [x29, 152] nop // between mem op and mult-accumulate umaddl x2, w2, w1, x5 stp x4, x2, [x29, 96] str w0, [x2, 24] bl Ftl_get_new_temp_ppa ldp x4, x2, [x29, 96] ldr w1, [x29, 152] str w0, [x2, 4] ldr x0, [x4, #:lo12:.LANCHOR187] ldr w2, [x24] umaddl x1, w2, w1, x0 ldr x0, [x23, #:lo12:.LANCHOR109] add w2, w2, 1 add x0, x0, x22 ldr x4, [x0, 8] str x4, [x1, 8] ldr x4, [x0, 16] str x4, [x1, 16] ldr w1, [x29, 168] str w1, [x27, 12] adrp x1, .LANCHOR95 add x12, x1, :lo12:.LANCHOR95 ldrh w1, [x1, #:lo12:.LANCHOR95] strh w1, [x27, 2] adrp x1, .LANCHOR165 str w2, [x24] ldr w1, [x1, #:lo12:.LANCHOR165] str w1, [x27, 4] mov w1, 1 bl FtlGcBufAlloc ldr x0, [x29, 112] ldrb w0, [x0, #:lo12:.LANCHOR16] cbnz w0, .L2746 ldrb w1, [x12, 7] ldr w0, [x24] cmp w1, w0 beq .L2746 ldrh w0, [x12, 4] cbnz w0, .L2744 .L2746: bl Ftl_gc_temp_data_write_back cbz w0, .L2744 add x0, x19, :lo12:.LANCHOR213 mov w1, -1 str wzr, [x21, #:lo12:.LANCHOR176] strh w1, [x19, #:lo12:.LANCHOR213] strh wzr, [x0, 2] b .L2804 .L2744: add x22, x22, 56 b .L2743 .L2748: add x1, x19, :lo12:.LANCHOR213 ldrh w0, [x1, 2] add w20, w20, w0 ldr w0, [x29, 156] and w20, w20, 65535 strh w20, [x1, 2] cmp w0, w20 bhi .L2750 adrp x0, .LANCHOR105 ldr w0, [x0, #:lo12:.LANCHOR105] cbz w0, .L2751 bl Ftl_gc_temp_data_write_back cbz w0, .L2751 str wzr, [x21, #:lo12:.LANCHOR176] b .L2804 .L2751: adrp x0, .LANCHOR249 ldrh w0, [x0, #:lo12:.LANCHOR249] cbnz w0, .L2752 adrp x22, .LANCHOR85 ldrh w1, [x19, #:lo12:.LANCHOR213] ldr x0, [x22, #:lo12:.LANCHOR85] ldrh w0, [x0, x1, lsl 1] cbz w0, .L2752 adrp x23, .LANCHOR74 add x24, x23, :lo12:.LANCHOR74 mov w20, 0 .L2753: ldr w0, [x24] cmp w20, w0 bcs .L2758 mov w2, 0 add x1, x29, 172 mov w0, w20 bl log2phys ldr w0, [x29, 172] cmn w0, #1 beq .L2754 lsr w0, w0, 10 bl P2V_block_in_plane ldrh w1, [x19, #:lo12:.LANCHOR213] cmp w1, w0, uxth bne .L2754 .L2758: ldr w0, [x23, #:lo12:.LANCHOR74] cmp w20, w0 bcc .L2752 ldrh w1, [x19, #:lo12:.LANCHOR213] ldr x0, [x22, #:lo12:.LANCHOR85] strh wzr, [x0, x1, lsl 1] ldrh w0, [x19, #:lo12:.LANCHOR213] bl update_vpc_list bl FtlCacheWriteBack bl l2p_flush bl FtlVpcTblFlush .L2752: mov w0, -1 strh w0, [x19, #:lo12:.LANCHOR213] .L2750: adrp x0, .LANCHOR90 ldrh w0, [x0, #:lo12:.LANCHOR90] cmp w0, 2 bhi .L2759 ldr x0, [x29, 120] ldrh w20, [x0, #:lo12:.LANCHOR52] b .L2760 .L2754: add w20, w20, 1 b .L2753 .L2759: str wzr, [x21, #:lo12:.LANCHOR176] add w0, w0, 1 b .L2702 .L2762: mov w0, 0 ret .L2764: mov w0, 0 b .L2702 .size ftl_do_gc, .-ftl_do_gc .section .text.FtlCacheWriteBack,"ax",@progbits .align 2 .global FtlCacheWriteBack .type FtlCacheWriteBack, %function FtlCacheWriteBack: stp x29, x30, [sp, -128]! add x29, sp, 0 stp x25, x26, [sp, 64] adrp x25, .LANCHOR78 stp x23, x24, [sp, 48] ldr w23, [x25, #:lo12:.LANCHOR78] stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x27, x28, [sp, 80] cbnz w23, .L2807 adrp x22, .LANCHOR72 ldr w1, [x22, #:lo12:.LANCHOR72] cbz w1, .L2807 adrp x0, .LANCHOR252 ldr x19, [x0, #:lo12:.LANCHOR252] adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2832 ldrb w0, [x19, 8] cmp w0, 1 cset w24, eq .L2809: adrp x20, .LANCHOR73 ldrb w3, [x19, 9] adrp x26, .LC76 add x27, x22, :lo12:.LANCHOR72 ldr x0, [x20, #:lo12:.LANCHOR73] add x26, x26, :lo12:.LC76 mov w21, 0 mov w28, 56 mov w2, w24 bl FlashProgPages .L2810: ldr w0, [x27] cmp w21, w0 bcc .L2817 .L2829: str wzr, [x22, #:lo12:.LANCHOR72] .L2807: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret .L2832: mov w24, 0 b .L2809 .L2817: umull x3, w21, w28 ldr x0, [x20, #:lo12:.LANCHOR73] add x4, x0, x3 ldr w0, [x0, x3] cmn w0, #1 bne .L2811 adrp x27, .LANCHOR52 adrp x26, .LANCHOR141 add x27, x27, :lo12:.LANCHOR52 add x26, x26, :lo12:.LANCHOR141 .L2812: ldr w0, [x22, #:lo12:.LANCHOR72] cmp w23, w0 bcc .L2827 adrp x19, .LANCHOR119 add x19, x19, :lo12:.LANCHOR119 mov w20, 16386 .L2830: ldrh w0, [x19] cbz w0, .L2829 mov w1, 1 mov w0, w1 bl ftl_do_gc subs w20, w20, #1 bne .L2830 b .L2829 .L2811: ldr w0, [x4, 4] cbnz w24, .L2813 .L2846: str w0, [x29, 124] mov w2, 1 ldr w0, [x4, 24] add x1, x29, 124 str x3, [x29, 104] bl log2phys ldr x0, [x20, #:lo12:.LANCHOR73] ldr x3, [x29, 104] add x0, x0, x3 ldr x0, [x0, 16] ldr w0, [x0, 12] cmn w0, #1 beq .L2815 lsr w0, w0, 10 bl P2V_block_in_plane adrp x2, .LANCHOR85 and w1, w0, 65535 ubfiz x0, x1, 1, 16 mov w3, w1 ldr x2, [x2, #:lo12:.LANCHOR85] ldrh w0, [x2, x0] cbnz w0, .L2816 mov w2, 0 mov x0, x26 str w1, [x29, 104] bl printf ldr w3, [x29, 104] .L2816: mov w0, w3 bl decrement_vpc_count .L2815: add w21, w21, 1 b .L2810 .L2813: orr w0, w0, -2147483648 b .L2846 .L2827: mov w21, 56 ldr x0, [x20, #:lo12:.LANCHOR73] mov w1, -1 adrp x28, .LANCHOR85 umull x21, w23, w21 str w1, [x0, x21] .L2818: ldr x0, [x20, #:lo12:.LANCHOR73] add x3, x0, x21 ldr w0, [x0, x21] cmn w0, #1 ldr w0, [x3, 4] beq .L2822 cbnz w24, .L2823 .L2847: str w0, [x29, 124] mov w2, 1 ldr w0, [x3, 24] add x1, x29, 124 bl log2phys ldr x0, [x20, #:lo12:.LANCHOR73] add x21, x0, x21 ldr x0, [x21, 16] ldr w0, [x0, 12] cmn w0, #1 beq .L2825 lsr w0, w0, 10 bl P2V_block_in_plane adrp x2, .LANCHOR85 and w1, w0, 65535 ubfiz x0, x1, 1, 16 mov w21, w1 ldr x2, [x2, #:lo12:.LANCHOR85] ldrh w0, [x2, x0] cbnz w0, .L2826 adrp x0, .LC76 mov w2, 0 add x0, x0, :lo12:.LC76 bl printf .L2826: mov w0, w21 bl decrement_vpc_count .L2825: add w23, w23, 1 b .L2812 .L2822: lsr w0, w0, 10 bl P2V_block_in_plane ldrh w1, [x19] cmp w1, w0, uxth bne .L2819 ldr x2, [x28, #:lo12:.LANCHOR85] ubfiz x1, x1, 1, 16 ldrh w3, [x19, 4] ldrh w0, [x2, x1] sub w0, w0, w3 strh w0, [x2, x1] strb wzr, [x19, 6] ldrh w0, [x27] strh w0, [x19, 2] strh wzr, [x19, 4] .L2819: ldrh w0, [x19, 4] cbnz w0, .L2820 mov x0, x19 bl allocate_new_data_superblock .L2820: ldr w0, [x26, 96] add w0, w0, 1 str w0, [x26, 96] ldr x0, [x20, #:lo12:.LANCHOR73] add x0, x0, x21 ldr w0, [x0, 4] lsr w0, w0, 10 bl FtlGcMarkBadPhyBlk mov x0, x19 bl get_new_active_ppa ldr x1, [x20, #:lo12:.LANCHOR73] mov w2, w0 str w2, [x29, 124] add x0, x1, x21 mov w1, 1 str w2, [x0, 4] mov w2, w24 ldrb w3, [x19, 9] bl FlashProgPages ldr x0, [x20, #:lo12:.LANCHOR73] ldr w0, [x0, x21] cmn w0, #1 bne .L2821 mov w0, 1 str w0, [x25, #:lo12:.LANCHOR78] .L2821: ldr w0, [x25, #:lo12:.LANCHOR78] cbz w0, .L2818 b .L2807 .L2823: orr w0, w0, -2147483648 b .L2847 .size FtlCacheWriteBack, .-FtlCacheWriteBack .section .text.FtlSysFlush,"ax",@progbits .align 2 .global FtlSysFlush .type FtlSysFlush, %function FtlSysFlush: adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbnz w0, .L2851 stp x29, x30, [sp, -32]! adrp x0, .LANCHOR247 add x29, sp, 0 str x19, [sp, 16] ldr w19, [x0, #:lo12:.LANCHOR247] cmp w19, 1 bne .L2849 bl FtlCacheWriteBack bl l2p_flush mov w0, w19 bl FtlEctTblFlush bl FtlVpcTblFlush .L2849: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .L2851: mov w0, 0 ret .size FtlSysFlush, .-FtlSysFlush .section .text.FtlDeInit,"ax",@progbits .align 2 .global FtlDeInit .type FtlDeInit, %function FtlDeInit: adrp x0, .LANCHOR247 ldr w0, [x0, #:lo12:.LANCHOR247] cmp w0, 1 bne .L2857 stp x29, x30, [sp, -16]! add x29, sp, 0 bl FtlSysFlush mov w0, 0 ldp x29, x30, [sp], 16 ret .L2857: mov w0, 0 ret .size FtlDeInit, .-FtlDeInit .section .text.ftl_deinit,"ax",@progbits .align 2 .global ftl_deinit .type ftl_deinit, %function ftl_deinit: stp x29, x30, [sp, -16]! add x29, sp, 0 bl ftl_flash_de_init bl FtlDeInit ldp x29, x30, [sp], 16 b ftl_flash_de_init .size ftl_deinit, .-ftl_deinit .section .text.rk_ftl_de_init,"ax",@progbits .align 2 .global rk_ftl_de_init .type rk_ftl_de_init, %function rk_ftl_de_init: stp x29, x30, [sp, -16]! add x29, sp, 0 bl FlashDeInit bl FtlDeInit ldp x29, x30, [sp], 16 b FlashDeInit .size rk_ftl_de_init, .-rk_ftl_de_init .section .text.ftl_cache_flush,"ax",@progbits .align 2 .global ftl_cache_flush .type ftl_cache_flush, %function ftl_cache_flush: b FtlCacheWriteBack .size ftl_cache_flush, .-ftl_cache_flush .section .text.ftl_discard,"ax",@progbits .align 2 .global ftl_discard .type ftl_discard, %function ftl_discard: adrp x0, .LANCHOR68 ldr w0, [x0, #:lo12:.LANCHOR68] cmp w0, w1 bls .L2873 stp x29, x30, [sp, -80]! cmp w0, w2 add x29, sp, 0 stp x19, x20, [sp, 16] mov w19, w2 stp x21, x22, [sp, 32] str x23, [sp, 48] bcc .L2875 mov w20, w1 add w1, w1, w2 cmp w0, w1 bcc .L2875 cmp w2, 31 bhi .L2867 .L2886: mov w0, 0 .L2865: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldr x23, [sp, 48] ldp x29, x30, [sp], 80 ret .L2867: adrp x0, .LANCHOR78 ldr w0, [x0, #:lo12:.LANCHOR78] cbnz w0, .L2886 adrp x22, .LANCHOR55 bl FtlCacheWriteBack ldrh w0, [x22, #:lo12:.LANCHOR55] udiv w21, w20, w0 msub w20, w0, w21, w20 ands w20, w20, 65535 beq .L2869 sub w20, w0, w20 add w21, w21, 1 cmp w20, w19 csel w20, w20, w19, ls sub w19, w19, w20, uxth .L2869: adrp x20, .LANCHOR253 adrp x23, .LANCHOR168 add x20, x20, :lo12:.LANCHOR253 add x23, x23, :lo12:.LANCHOR168 mov w0, -1 str w0, [x29, 76] .L2870: ldrh w0, [x22, #:lo12:.LANCHOR55] cmp w19, w0 bcs .L2872 adrp x0, .LANCHOR253 ldr w1, [x0, #:lo12:.LANCHOR253] cmp w1, 32 bls .L2886 str wzr, [x0, #:lo12:.LANCHOR253] bl l2p_flush bl FtlVpcTblFlush b .L2886 .L2872: mov w2, 0 add x1, x29, 72 mov w0, w21 bl log2phys ldr w0, [x29, 72] cmn w0, #1 beq .L2871 ldr w0, [x20] mov w2, 1 add x1, x29, 76 add w0, w0, 1 str w0, [x20] ldr w0, [x23] add w0, w0, 1 str w0, [x23] mov w0, w21 bl log2phys ldr w0, [x29, 72] lsr w0, w0, 10 bl P2V_block_in_plane bl decrement_vpc_count .L2871: ldrh w0, [x22, #:lo12:.LANCHOR55] add w21, w21, 1 sub w19, w19, w0 b .L2870 .L2873: mov w0, -1 ret .L2875: mov w0, -1 b .L2865 .size ftl_discard, .-ftl_discard .section .text.FtlRead,"ax",@progbits .align 2 .global FtlRead .type FtlRead, %function FtlRead: sub sp, sp, #208 adrp x4, .LANCHOR247 stp x29, x30, [sp, 16] add x29, sp, 16 ldr w4, [x4, #:lo12:.LANCHOR247] stp x19, x20, [sp, 32] stp x21, x22, [sp, 48] cmp w4, 1 stp x23, x24, [sp, 64] stp x25, x26, [sp, 80] stp x27, x28, [sp, 96] bne .L2914 mov x21, x3 mov w23, w2 mov w19, w1 cmp w0, 16 bne .L2889 mov x2, x3 mov w1, w23 add w0, w19, 256 bl FtlVendorPartRead mov w25, w0 .L2887: mov w0, w25 ldp x19, x20, [sp, 32] ldp x21, x22, [sp, 48] ldp x23, x24, [sp, 64] ldp x25, x26, [sp, 80] ldp x27, x28, [sp, 96] ldp x29, x30, [sp, 16] add sp, sp, 208 ret .L2889: adrp x0, .LANCHOR68 ldr w0, [x0, #:lo12:.LANCHOR68] cmp w1, w0 bcs .L2914 cmp w2, w0 bhi .L2914 add w1, w1, w2 str w1, [x29, 148] cmp w0, w1 bcc .L2914 adrp x22, .LANCHOR55 ldrh w0, [x22, #:lo12:.LANCHOR55] udiv w1, w19, w0 str w1, [x29, 172] add w1, w19, w2 sub w1, w1, #1 udiv w0, w1, w0 adrp x1, .LANCHOR226 str w0, [x29, 168] ldr w0, [x29, 172] sub w4, w4, w0 ldr w0, [x29, 168] add w0, w4, w0 str w0, [x29, 164] ldr w0, [x1, #:lo12:.LANCHOR226] add w0, w0, w2 str w0, [x1, #:lo12:.LANCHOR226] adrp x1, .LANCHOR171 ldr w2, [x29, 164] ldr w0, [x1, #:lo12:.LANCHOR171] add w0, w0, w2 str w0, [x1, #:lo12:.LANCHOR171] ldp w1, w0, [x29, 168] bl FtlCacheMetchLpa cbz w0, .L2890 bl FtlCacheWriteBack .L2890: ldr w20, [x29, 172] adrp x26, .LANCHOR141 add x26, x26, :lo12:.LANCHOR141 mov w24, 0 mov w25, 0 adrp x27, .LANCHOR186 stp wzr, wzr, [x29, 156] .L2891: ldr w0, [x29, 164] cbnz w0, .L2910 adrp x0, .LANCHOR119 ldrh w0, [x0, #:lo12:.LANCHOR119] cbz w0, .L2887 mov w1, 1 mov w0, 0 bl ftl_do_gc b .L2887 .L2910: add x1, x29, 188 mov w2, 0 mov w0, w20 bl log2phys ldr w1, [x29, 188] cmn w1, #1 bne .L2892 add x3, x22, :lo12:.LANCHOR55 mov w28, 0 .L2893: ldrh w0, [x3] cmp w28, w0 bcc .L2895 .L2896: ldr w0, [x29, 164] add w20, w20, 1 subs w0, w0, #1 str w0, [x29, 164] beq .L2900 adrp x0, .LANCHOR38 ldrh w0, [x0, #:lo12:.LANCHOR38] cmp w24, w0, lsl 2 bne .L2891 .L2900: cbz w24, .L2891 ldr x0, [x27, #:lo12:.LANCHOR186] mov w1, w24 mov w2, 0 adrp x28, .LANCHOR194 bl FlashReadPages ldr w0, [x29, 156] lsl w0, w0, 9 str w0, [x29, 132] ldr w0, [x29, 152] lsl w0, w0, 9 str x0, [x29, 136] ldr w0, [x29, 160] lsl w0, w0, 9 str w0, [x29, 144] mov w0, 56 umull x0, w24, w0 mov x24, 0 str x0, [x29, 120] adrp x0, .LC68 add x0, x0, :lo12:.LC68 str x0, [x29, 112] .L2909: ldr x0, [x27, #:lo12:.LANCHOR186] ldr w2, [x29, 172] add x0, x0, x24 ldr w1, [x0, 24] cmp w2, w1 bne .L2902 ldr x1, [x0, 8] adrp x0, .LANCHOR193 ldr x0, [x0, #:lo12:.LANCHOR193] cmp x1, x0 bne .L2903 ldr x0, [x29, 136] ldr w2, [x29, 144] add x1, x1, x0 mov x0, x21 .L2931: bl ftl_memcpy .L2903: ldr x0, [x27, #:lo12:.LANCHOR186] add x2, x0, x24 ldr w1, [x0, x24] cmn w1, #1 bne .L2904 ldr w0, [x26, 72] mov w25, w1 add w0, w0, 1 str w0, [x26, 72] .L2904: ldr x0, [x2, 16] ldr w1, [x2, 24] ldr w3, [x0, 8] cmp w1, w3 beq .L2905 ldr w3, [x26, 72] add w3, w3, 1 str w3, [x26, 72] ldr x3, [x2, 8] ldr w4, [x3, 4] str w4, [sp] ldp w4, w5, [x0, 4] ldr w6, [x0, 12] ldr w7, [x3] ldr w2, [x2, 4] ldr w3, [x0] ldr x0, [x29, 112] bl printf .L2905: ldr x0, [x27, #:lo12:.LANCHOR186] add x1, x0, x24 ldr w0, [x0, x24] cmp w0, 256 bne .L2906 ldr w0, [x1, 4] lsr w0, w0, 10 bl P2V_block_in_plane and w1, w0, 65535 str w1, [x29, 128] bl FtlGcRefreshBlock adrp x2, .LANCHOR78 add x2, x2, :lo12:.LANCHOR78 adrp x3, .LANCHOR213 .L2908: mov w1, 1 stp x3, x2, [x29, 96] mov w0, w1 bl ftl_do_gc ldr x2, [x29, 104] ldr w0, [x2] cbnz w0, .L2907 ldr x3, [x29, 96] ldr w1, [x29, 128] ldrh w0, [x3, #:lo12:.LANCHOR213] cmp w0, w1 beq .L2908 .L2907: bl FtlSysFlush .L2906: ldr x0, [x29, 120] add x24, x24, 56 cmp x0, x24 bne .L2909 mov w24, 0 b .L2891 .L2895: madd w0, w20, w0, w28 cmp w19, w0 bhi .L2894 ldr w1, [x29, 148] cmp w1, w0 bls .L2894 sub w0, w0, w19 str x3, [x29, 136] lsl w0, w0, 9 mov w2, 512 mov w1, 0 add x0, x21, x0 bl ftl_memset ldr x3, [x29, 136] .L2894: add w28, w28, 1 b .L2893 .L2892: ldr x0, [x27, #:lo12:.LANCHOR186] mov w2, 56 umaddl x0, w24, w2, x0 str w1, [x0, 4] ldr w1, [x29, 172] cmp w20, w1 bne .L2897 adrp x1, .LANCHOR193 ldr x1, [x1, #:lo12:.LANCHOR193] str x1, [x0, 8] ldrh w1, [x22, #:lo12:.LANCHOR55] udiv w2, w19, w1 msub w2, w2, w1, w19 str w2, [x29, 152] sub w2, w1, w2 cmp w23, w2 csel w2, w23, w2, ls str w2, [x29, 160] cmp w2, w1 bne .L2898 str x21, [x0, 8] .L2898: adrp x1, .LANCHOR58 adrp x2, .LANCHOR196 str w20, [x0, 24] ldrh w1, [x1, #:lo12:.LANCHOR58] ldr x2, [x2, #:lo12:.LANCHOR196] mul w1, w1, w24 add w24, w24, 1 and x1, x1, 4294967292 add x1, x2, x1 str x1, [x0, 16] b .L2896 .L2897: ldr w1, [x29, 168] cmp w20, w1 bne .L2899 ldrh w2, [x22, #:lo12:.LANCHOR55] adrp x1, .LANCHOR194 ldr w3, [x29, 148] ldr x1, [x1, #:lo12:.LANCHOR194] str x1, [x0, 8] mul w1, w20, w2 sub w3, w3, w1 str w3, [x29, 156] cmp w2, w3 bne .L2898 .L2930: sub w1, w1, w19 lsl w1, w1, 9 add x1, x21, x1 str x1, [x0, 8] b .L2898 .L2899: ldrh w1, [x22, #:lo12:.LANCHOR55] mul w1, w1, w20 b .L2930 .L2902: ldr w2, [x29, 168] cmp w2, w1 bne .L2903 ldr x1, [x0, 8] ldr x0, [x28, #:lo12:.LANCHOR194] cmp x1, x0 bne .L2903 ldrh w0, [x22, #:lo12:.LANCHOR55] mul w0, w0, w2 ldr w2, [x29, 132] sub w0, w0, w19 lsl w0, w0, 9 add x0, x21, x0 b .L2931 .L2914: mov w25, -1 b .L2887 .size FtlRead, .-FtlRead .section .text.ftl_vendor_read,"ax",@progbits .align 2 .global ftl_vendor_read .type ftl_vendor_read, %function ftl_vendor_read: mov x3, x2 mov w2, w1 mov w1, w0 mov w0, 16 b FtlRead .size ftl_vendor_read, .-ftl_vendor_read .section .text.ftl_sys_read,"ax",@progbits .align 2 .global ftl_sys_read .type ftl_sys_read, %function ftl_sys_read: mov x3, x2 mov w2, w1 add w1, w0, 256 mov w0, 16 b FtlRead .size ftl_sys_read, .-ftl_sys_read .section .text.StorageSysDataLoad,"ax",@progbits .align 2 .global StorageSysDataLoad .type StorageSysDataLoad, %function StorageSysDataLoad: stp x29, x30, [sp, -32]! mov x2, 512 add x29, sp, 0 stp x19, x20, [sp, 16] mov x19, x1 mov w20, w0 mov w1, 0 mov x0, x19 bl memset mov x3, x19 add w1, w20, 256 ldp x19, x20, [sp, 16] mov w2, 1 ldp x29, x30, [sp], 32 mov w0, 16 b FtlRead .size StorageSysDataLoad, .-StorageSysDataLoad .section .text.FlashBootVendorRead,"ax",@progbits .align 2 .global FlashBootVendorRead .type FlashBootVendorRead, %function FlashBootVendorRead: mov x3, x2 mov w1, w0 mov w2, 1 mov w0, 16 b FtlRead .size FlashBootVendorRead, .-FlashBootVendorRead .section .text.ftl_read,"ax",@progbits .align 2 .global ftl_read .type ftl_read, %function ftl_read: and w0, w0, 255 b FtlRead .size ftl_read, .-ftl_read .section .text.FtlInit,"ax",@progbits .align 2 .global FtlInit .type FtlInit, %function FtlInit: stp x29, x30, [sp, -64]! mov w0, -1 adrp x1, .LC77 add x1, x1, :lo12:.LC77 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR247 stp x21, x22, [sp, 32] str w0, [x19, #:lo12:.LANCHOR247] adrp x0, .LANCHOR254 stp x23, x24, [sp, 48] str wzr, [x0, #:lo12:.LANCHOR254] adrp x0, .LANCHOR78 str wzr, [x0, #:lo12:.LANCHOR78] adrp x0, .LC7 add x0, x0, :lo12:.LC7 bl printf adrp x0, .LANCHOR15 add x0, x0, :lo12:.LANCHOR15 bl FtlConstantsInit bl FtlMemInit bl FtlVariablesInit adrp x0, .LANCHOR39 ldrh w0, [x0, #:lo12:.LANCHOR39] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cbz w0, .L2939 adrp x1, .LANCHOR255 adrp x0, .LC78 add x1, x1, :lo12:.LANCHOR255 add x0, x0, :lo12:.LC78 .L2948: bl printf .L2940: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .L2939: bl FtlSysBlkInit cbz w0, .L2941 adrp x1, .LANCHOR255 adrp x0, .LC79 add x1, x1, :lo12:.LANCHOR255 add x0, x0, :lo12:.LC79 b .L2948 .L2941: mov w1, 1 str w1, [x19, #:lo12:.LANCHOR247] bl ftl_do_gc adrp x0, .LANCHOR90 mov x22, x0 ldrh w23, [x0, #:lo12:.LANCHOR90] cmp w23, 15 bhi .L2940 adrp x20, .LANCHOR115 add x20, x20, :lo12:.LANCHOR115 mov w19, 0 adrp x24, .LANCHOR213 mov w21, 65535 .L2945: ldrh w0, [x24, #:lo12:.LANCHOR213] cmp w0, w21 bne .L2943 ldrh w0, [x20] cmp w0, w21 bne .L2943 and w0, w19, 63 bl List_get_gc_head_node bl FtlGcRefreshBlock .L2943: mov w1, 1 mov w0, w1 bl ftl_do_gc mov w1, 1 mov w0, 0 bl ftl_do_gc ldrh w1, [x22, #:lo12:.LANCHOR90] add w0, w23, 2 cmp w1, w0 bhi .L2940 add w19, w19, 1 cmp w19, 4096 bne .L2945 b .L2940 .size FtlInit, .-FtlInit .section .text.rk_ftl_init,"ax",@progbits .align 2 .global rk_ftl_init .type rk_ftl_init, %function rk_ftl_init: stp x29, x30, [sp, -32]! add x29, sp, 0 str x19, [sp, 16] bl FlashInit mov w19, w0 cbnz w0, .L2950 bl FtlInit .L2950: bl idb_init mov w1, w19 adrp x0, .LC80 add x0, x0, :lo12:.LC80 bl printf mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret .size rk_ftl_init, .-rk_ftl_init .section .text.ftl_fix_nand_power_lost_error,"ax",@progbits .align 2 .global ftl_fix_nand_power_lost_error .type ftl_fix_nand_power_lost_error, %function ftl_fix_nand_power_lost_error: adrp x0, .LANCHOR16 ldrb w0, [x0, #:lo12:.LANCHOR16] cbz w0, .L2967 stp x29, x30, [sp, -128]! add x29, sp, 0 str x25, [sp, 64] adrp x25, .LANCHOR241 stp x23, x24, [sp, 48] stp x21, x22, [sp, 32] adrp x21, .LANCHOR85 ldrh w23, [x25, #:lo12:.LANCHOR241] ldr x0, [x21, #:lo12:.LANCHOR85] mov w1, w23 stp x19, x20, [sp, 16] ubfiz x24, x23, 1, 16 adrp x19, .LC81 ldrh w2, [x0, x24] add x0, x19, :lo12:.LC81 bl printf adrp x0, .LANCHOR93 add x11, x0, :lo12:.LANCHOR93 ldrh w0, [x0, #:lo12:.LANCHOR93] bl FtlGcRefreshOpenBlock adrp x0, .LANCHOR94 add x20, x0, :lo12:.LANCHOR94 ldrh w0, [x0, #:lo12:.LANCHOR94] bl FtlGcRefreshOpenBlock mov x0, x11 bl allocate_new_data_superblock mov x0, x20 mov w20, 4097 bl allocate_new_data_superblock .L2954: subs w20, w20, #1 beq .L2958 mov w1, 1 mov w0, w1 bl ftl_do_gc ldr x0, [x21, #:lo12:.LANCHOR85] ldrh w0, [x0, x24] cbnz w0, .L2954 .L2958: ldr x0, [x21, #:lo12:.LANCHOR85] mov w1, w23 ldrh w2, [x0, x24] add x0, x19, :lo12:.LC81 bl printf ldr x0, [x21, #:lo12:.LANCHOR85] ldrh w19, [x0, x24] cbnz w19, .L2956 add x20, x29, 128 adrp x22, .LANCHOR79 strh w23, [x20, -48]! mov x0, x20 bl make_superblock adrp x0, .LANCHOR38 ldr x4, [x22, #:lo12:.LANCHOR79] add x20, x20, 16 mov w5, 65535 ldrh w3, [x0, #:lo12:.LANCHOR38] mov w6, 56 mov w0, 0 .L2959: cmp w0, w3 bne .L2961 ldr x0, [x21, #:lo12:.LANCHOR85] mov w1, w23 ldrh w2, [x0, x24] adrp x0, .LC82 add x0, x0, :lo12:.LC82 bl printf ldr x0, [x22, #:lo12:.LANCHOR79] mov w2, w19 mov w1, 0 bl FlashEraseBlocks ldr x0, [x22, #:lo12:.LANCHOR79] mov w2, w19 mov w1, 1 bl FlashEraseBlocks .L2956: mov w0, -1 strh w0, [x25, #:lo12:.LANCHOR241] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldr x25, [sp, 64] ldp x29, x30, [sp], 128 ret .L2961: ldrh w1, [x20] cmp w1, w5 beq .L2960 umaddl x2, w19, w6, x4 add w19, w19, 1 and w19, w19, 65535 lsl w1, w1, 10 stp xzr, xzr, [x2, 8] str w1, [x2, 4] .L2960: add w0, w0, 1 add x20, x20, 2 and w0, w0, 65535 b .L2959 .L2967: ret .size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error .section .text.FtlWrite,"ax",@progbits .align 2 .global FtlWrite .type FtlWrite, %function FtlWrite: stp x29, x30, [sp, -256]! add x29, sp, 0 stp x21, x22, [sp, 32] mov w22, w1 adrp x1, .LANCHOR78 stp x25, x26, [sp, 64] mov w25, w2 stp x19, x20, [sp, 16] ldr w2, [x1, #:lo12:.LANCHOR78] stp x23, x24, [sp, 48] stp x27, x28, [sp, 80] str x1, [x29, 120] cbnz w2, .L3013 adrp x1, .LANCHOR247 ldr w1, [x1, #:lo12:.LANCHOR247] cmp w1, 1 bne .L3013 mov x23, x3 cmp w0, 16 bne .L2972 mov x2, x3 mov w1, w25 add w0, w22, 256 bl FtlVendorPartWrite .L2970: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 256 ret .L2972: adrp x0, .LANCHOR68 ldr w1, [x0, #:lo12:.LANCHOR68] cmp w22, w1 bcs .L3016 cmp w25, w1 bhi .L3016 add w0, w22, w25 cmp w1, w0 bcc .L3016 adrp x1, .LANCHOR256 adrp x3, .LANCHOR55 mov w2, 2048 sub w0, w0, #1 str w2, [x1, #:lo12:.LANCHOR256] adrp x2, .LANCHOR167 ldrh w1, [x3, #:lo12:.LANCHOR55] adrp x21, .LANCHOR72 str x3, [x29, 184] cmp w25, w1, lsl 1 udiv w0, w0, w1 udiv w26, w22, w1 str w0, [x29, 172] sub w27, w0, w26 ldr w0, [x2, #:lo12:.LANCHOR167] add w24, w27, 1 add w0, w0, w24 str w0, [x2, #:lo12:.LANCHOR167] adrp x2, .LANCHOR225 ldr w0, [x2, #:lo12:.LANCHOR225] add w0, w0, w25 str w0, [x2, #:lo12:.LANCHOR225] ldr w2, [x21, #:lo12:.LANCHOR72] cset w0, cs str w0, [x29, 176] cbz w2, .L2974 adrp x0, .LANCHOR73 sub w2, w2, #1 mov w3, 56 adrp x20, .LANCHOR257 ldr x0, [x0, #:lo12:.LANCHOR73] umaddl x2, w2, w3, x0 ldr w0, [x2, 24] cmp w26, w0 bne .L2975 adrp x3, .LANCHOR169 ldr w0, [x3, #:lo12:.LANCHOR169] add w0, w0, 1 str w0, [x3, #:lo12:.LANCHOR169] ldr w0, [x20, #:lo12:.LANCHOR257] ldr x3, [x2, 8] add w0, w0, 1 str w0, [x20, #:lo12:.LANCHOR257] msub w0, w26, w1, w22 sub w1, w1, w0 cmp w25, w1 lsl w0, w0, 9 csel w19, w25, w1, ls add x0, x3, x0 lsl w24, w19, 9 mov x1, x23 mov w2, w24 bl ftl_memcpy cbnz w27, .L2976 ldr w0, [x20, #:lo12:.LANCHOR257] cmp w0, 2 bgt .L2976 .L3013: mov w0, 0 b .L2970 .L2976: add x23, x23, x24 sub w25, w25, w19 add w22, w22, w19 add w26, w26, 1 mov w24, w27 .L2975: str wzr, [x20, #:lo12:.LANCHOR257] .L2974: ldr w1, [x29, 172] mov w0, w26 bl FtlCacheMetchLpa cbz w0, .L2977 bl FtlCacheWriteBack .L2977: adrp x0, .LANCHOR252 mov w20, w26 adrp x27, .LANCHOR93 str x0, [x29, 112] add x1, x27, :lo12:.LANCHOR93 str x1, [x0, #:lo12:.LANCHOR252] adrp x0, .LANCHOR57 add x0, x0, :lo12:.LANCHOR57 str x0, [x29, 136] .L2978: cbnz w24, .L3007 bl FtlCacheWriteBack ldr w0, [x29, 172] sub w1, w0, w26 mov w0, 0 bl ftl_do_gc adrp x1, .LANCHOR90 mov x22, x1 ldrh w0, [x1, #:lo12:.LANCHOR90] cmp w0, 5 bls .L3008 cmp w0, 31 bhi .L3013 adrp x0, .LANCHOR2 ldrb w0, [x0, #:lo12:.LANCHOR2] cbnz w0, .L3013 .L3008: adrp x20, .LANCHOR115 adrp x21, .LANCHOR116 adrp x19, .LANCHOR182 add x20, x20, :lo12:.LANCHOR115 add x21, x21, :lo12:.LANCHOR116 add x19, x19, :lo12:.LANCHOR182 .L3011: adrp x0, .LANCHOR213 ldrh w1, [x0, #:lo12:.LANCHOR213] mov w0, 65535 cmp w1, w0 bne .L3010 ldrh w0, [x20] cmp w0, w1 bne .L3010 ldrh w1, [x21] cmp w1, w0 bne .L3010 and w0, w24, 7 bl List_get_gc_head_node bl FtlGcRefreshBlock .L3010: adrp x1, .LANCHOR181 mov w0, 128 strh w0, [x19] strh w0, [x1, #:lo12:.LANCHOR181] mov w1, 1 mov w0, w1 bl ftl_do_gc mov w1, 1 mov w0, 0 bl ftl_do_gc ldr x0, [x29, 120] ldr w0, [x0, #:lo12:.LANCHOR78] cbnz w0, .L3013 ldrh w0, [x22, #:lo12:.LANCHOR90] cmp w0, 2 bhi .L3013 add w24, w24, 1 cmp w24, 256 bne .L3011 b .L3013 .L3007: add x0, x27, :lo12:.LANCHOR93 adrp x1, .LANCHOR38 str x1, [x29, 144] ldrb w2, [x0, 6] ldrh w0, [x1, #:lo12:.LANCHOR38] cmp w2, w0 bcc .L2979 mov w2, 1472 adrp x1, .LANCHOR258 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR258 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2979: add x19, x27, :lo12:.LANCHOR93 ldrh w0, [x19, 4] cbnz w0, .L2980 mov x0, x19 bl allocate_new_data_superblock ldr x0, [x29, 112] str x19, [x0, #:lo12:.LANCHOR252] .L2980: adrp x1, .LANCHOR185 ldr w2, [x21, #:lo12:.LANCHOR72] str x1, [x29, 104] ldr w0, [x1, #:lo12:.LANCHOR185] sub w0, w0, w2 add x2, x27, :lo12:.LANCHOR93 ldrh w3, [x2, 4] ldrb w2, [x2, 6] cmp w0, w3 csel w0, w0, w3, ls cmp w0, w24 csel w0, w0, w24, ls str w0, [x29, 132] ldr x0, [x29, 144] ldrh w0, [x0, #:lo12:.LANCHOR38] cmp w2, w0 bcc .L2981 mov w2, 1515 adrp x1, .LANCHOR258 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR258 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2981: str wzr, [x29, 180] .L2982: ldr w1, [x29, 132] ldr w0, [x29, 180] cmp w0, w1 bne .L3002 .L2983: ldr w0, [x29, 180] cmp w24, w0 bcs .L3003 mov w2, 1609 adrp x1, .LANCHOR258 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR258 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L3003: ldr w0, [x29, 180] ldr w1, [x21, #:lo12:.LANCHOR72] sub w24, w24, w0 ldr x0, [x29, 104] ldr w0, [x0, #:lo12:.LANCHOR185] cmp w1, w0 bcs .L3004 ldr w0, [x29, 176] cbnz w0, .L3004 add x0, x27, :lo12:.LANCHOR93 ldrh w0, [x0, 4] cbz w0, .L3004 .L3006: str wzr, [x29, 176] b .L2978 .L3002: add x0, x27, :lo12:.LANCHOR93 ldrh w0, [x0, 4] cbz w0, .L2983 ldr w0, [x29, 172] cmp w0, w20 ldr w0, [x29, 176] cset w3, eq tst w3, w0 beq .L2984 ldr w0, [x29, 180] cbz w0, .L2984 ldr x0, [x29, 184] ldrh w1, [x0, #:lo12:.LANCHOR55] add w0, w22, w25 msub w0, w20, w1, w0 cmp w1, w0 bne .L2983 .L2984: add x1, x29, 196 mov w2, 0 str w3, [x29, 96] adrp x19, .LANCHOR73 mov w0, w20 bl log2phys add x0, x27, :lo12:.LANCHOR93 bl get_new_active_ppa ldr w5, [x21, #:lo12:.LANCHOR72] mov w4, 56 ldr x1, [x19, #:lo12:.LANCHOR73] str w4, [x29, 168] nop // between mem op and mult-accumulate umaddl x1, w5, w4, x1 str w0, [x1, 4] adrp x0, .LANCHOR58 str w20, [x1, 24] ldrh w2, [x0, #:lo12:.LANCHOR58] mul w0, w5, w2 and x0, x0, 4294967292 str x0, [x29, 160] adrp x0, .LANCHOR197 ldr x3, [x29, 160] ldr x0, [x0, #:lo12:.LANCHOR197] str x0, [x29, 152] add x28, x0, x3 adrp x0, .LANCHOR57 str x28, [x1, 16] ldrh w0, [x0, #:lo12:.LANCHOR57] mul w0, w0, w5 adrp x5, .LANCHOR192 ldr x5, [x5, #:lo12:.LANCHOR192] and x0, x0, 4294967292 add x0, x5, x0 str x0, [x1, 8] mov w1, 0 mov x0, x28 bl ftl_memset ldr w3, [x29, 96] cmp w26, w20 cset w0, eq ldr w4, [x29, 168] orr w0, w3, w0 mov x3, x19 cbz w0, .L2985 bne .L2986 ldr x0, [x29, 184] ldrh w19, [x0, #:lo12:.LANCHOR55] udiv w0, w22, w19 msub w0, w0, w19, w22 str w0, [x29, 168] sub w19, w19, w0 cmp w19, w25 csel w19, w19, w25, ls .L2987: ldr x0, [x29, 184] ldrh w0, [x0, #:lo12:.LANCHOR55] cmp w0, w19 bne .L2988 cmp w26, w20 beq .L3019 mul w1, w20, w19 sub w1, w1, w22 lsl w1, w1, 9 add x1, x23, x1 .L2989: ldr w0, [x29, 176] cbz w0, .L2990 ldr x2, [x3, #:lo12:.LANCHOR73] mov w3, 56 ldr w0, [x21, #:lo12:.LANCHOR72] umaddl x0, w0, w3, x2 str x1, [x0, 8] .L2991: add x0, x27, :lo12:.LANCHOR93 ldrb w1, [x0, 6] ldr x0, [x29, 144] ldrh w0, [x0, #:lo12:.LANCHOR38] cmp w1, w0 bcc .L2999 mov w2, 1599 adrp x1, .LANCHOR258 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR258 add x0, x0, :lo12:.LC5 bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L2999: ldp x1, x2, [x29, 152] mov w0, -3947 strh w0, [x1, x2] adrp x1, .LANCHOR165 ldr w0, [x1, #:lo12:.LANCHOR165] stp w0, w20, [x28, 4] add w20, w20, 1 add w0, w0, 1 cmn w0, #1 csel w0, w0, wzr, ne str w0, [x1, #:lo12:.LANCHOR165] ldr w0, [x29, 196] str w0, [x28, 12] ldrh w0, [x27, #:lo12:.LANCHOR93] strh w0, [x28, 2] ldr w0, [x21, #:lo12:.LANCHOR72] add w0, w0, 1 str w0, [x21, #:lo12:.LANCHOR72] ldr w0, [x29, 180] add w0, w0, 1 str w0, [x29, 180] b .L2982 .L2986: ldr x0, [x29, 184] add w19, w22, w25 str wzr, [x29, 168] ldrh w0, [x0, #:lo12:.LANCHOR55] msub w19, w20, w0, w19 and w19, w19, 65535 b .L2987 .L3019: mov x1, x23 b .L2989 .L2990: ldr x2, [x3, #:lo12:.LANCHOR73] mov w3, 56 ldr w0, [x21, #:lo12:.LANCHOR72] umaddl x0, w0, w3, x2 ldr x2, [x29, 136] ldrh w2, [x2] .L3039: ldr x0, [x0, 8] b .L3038 .L2988: ldr w0, [x29, 196] cmn w0, #1 beq .L2992 ldr x1, [x3, #:lo12:.LANCHOR73] mov w2, 56 str w0, [x29, 204] ldr w0, [x21, #:lo12:.LANCHOR72] str x3, [x29, 96] str w20, [x29, 224] nop // between mem op and mult-accumulate umaddl x0, w0, w2, x1 mov w2, 0 ldp x1, x0, [x0, 8] stp x1, x0, [x29, 208] mov w1, 1 add x0, x29, 200 bl FlashReadPages ldr w0, [x29, 200] ldr x3, [x29, 96] cmn w0, #1 bne .L2993 adrp x0, .LANCHOR141 add x0, x0, :lo12:.LANCHOR141 ldr w1, [x0, 72] add w1, w1, 1 str w1, [x0, 72] .L2996: cmp w26, w20 lsl w2, w19, 9 bne .L2997 ldr x0, [x3, #:lo12:.LANCHOR73] mov w3, 56 ldr w1, [x21, #:lo12:.LANCHOR72] umaddl x1, w1, w3, x0 ldr w0, [x29, 168] lsl w0, w0, 9 ldr x3, [x1, 8] mov x1, x23 add x0, x3, x0 .L3038: bl ftl_memcpy b .L2991 .L2993: ldr w1, [x28, 8] cmp w20, w1 beq .L2995 adrp x0, .LANCHOR141 add x0, x0, :lo12:.LANCHOR141 str x3, [x29, 96] ldr w2, [x0, 72] add w2, w2, 1 str w2, [x0, 72] mov w2, w20 adrp x0, .LC83 add x0, x0, :lo12:.LC83 bl printf ldr x3, [x29, 96] .L2995: ldr w0, [x28, 8] cmp w20, w0 beq .L2996 mov w2, 1581 adrp x1, .LANCHOR258 adrp x0, .LC5 add x1, x1, :lo12:.LANCHOR258 add x0, x0, :lo12:.LC5 str x3, [x29, 96] bl printf adrp x1, .LC6 adrp x0, .LC7 add x1, x1, :lo12:.LC6 add x0, x0, :lo12:.LC7 bl printf .L3037: ldr x3, [x29, 96] b .L2996 .L2992: ldr x1, [x3, #:lo12:.LANCHOR73] mov w2, 56 ldr w0, [x21, #:lo12:.LANCHOR72] str x3, [x29, 96] nop // between mem op and mult-accumulate umaddl x0, w0, w2, x1 ldr x1, [x29, 136] ldr x0, [x0, 8] ldrh w2, [x1] mov w1, 0 bl ftl_memset b .L3037 .L2997: ldr x0, [x29, 184] mov w4, 56 ldr x3, [x3, #:lo12:.LANCHOR73] ldrh w1, [x0, #:lo12:.LANCHOR55] ldr w0, [x21, #:lo12:.LANCHOR72] mul w1, w1, w20 umaddl x0, w0, w4, x3 sub w1, w1, w22 lsl w1, w1, 9 add x1, x23, x1 b .L3039 .L2985: ldr w0, [x29, 176] cbz w0, .L2998 ldr w0, [x21, #:lo12:.LANCHOR72] ldr x1, [x19, #:lo12:.LANCHOR73] umaddl x4, w0, w4, x1 ldr x0, [x29, 184] ldrh w0, [x0, #:lo12:.LANCHOR55] mul w0, w0, w20 sub w0, w0, w22 lsl w0, w0, 9 add x0, x23, x0 str x0, [x4, 8] b .L2991 .L2998: ldr x0, [x29, 184] ldr x2, [x19, #:lo12:.LANCHOR73] ldrh w1, [x0, #:lo12:.LANCHOR55] ldr w0, [x21, #:lo12:.LANCHOR72] mul w1, w1, w20 umaddl x4, w0, w4, x2 adrp x0, .LANCHOR57 sub w1, w1, w22 lsl w1, w1, 9 ldrh w2, [x0, #:lo12:.LANCHOR57] add x1, x23, x1 ldr x0, [x4, 8] b .L3038 .L3004: bl FtlCacheWriteBack str wzr, [x21, #:lo12:.LANCHOR72] cmp w24, 1 bhi .L2978 b .L3006 .L3016: mov w0, -1 b .L2970 .size FtlWrite, .-FtlWrite .section .text.ftl_vendor_write,"ax",@progbits .align 2 .global ftl_vendor_write .type ftl_vendor_write, %function ftl_vendor_write: mov x3, x2 mov w2, w1 mov w1, w0 mov w0, 16 b FtlWrite .size ftl_vendor_write, .-ftl_vendor_write .section .text.ftl_sys_write,"ax",@progbits .align 2 .global ftl_sys_write .type ftl_sys_write, %function ftl_sys_write: mov x3, x2 mov w2, w1 add w1, w0, 256 mov w0, 16 b FtlWrite .size ftl_sys_write, .-ftl_sys_write .section .text.StorageSysDataStore,"ax",@progbits .align 2 .global StorageSysDataStore .type StorageSysDataStore, %function StorageSysDataStore: mov x3, x1 mov w2, 1 add w1, w0, 256 mov w0, 16 b FtlWrite .size StorageSysDataStore, .-StorageSysDataStore .section .text.FlashBootVendorWrite,"ax",@progbits .align 2 .global FlashBootVendorWrite .type FlashBootVendorWrite, %function FlashBootVendorWrite: mov x3, x2 mov w1, w0 mov w2, 1 mov w0, 16 b FtlWrite .size FlashBootVendorWrite, .-FlashBootVendorWrite .section .text.ftl_write,"ax",@progbits .align 2 .global ftl_write .type ftl_write, %function ftl_write: stp x29, x30, [sp, -48]! add x29, sp, 0 stp x19, x20, [sp, 16] mov w19, w2 stp x21, x22, [sp, 32] mov x20, x3 mov w22, w1 ands w21, w0, 255 bne .L3045 mov w3, w2 mov w0, 0 mov x2, x20 bl idb_write_data .L3045: mov x3, x20 mov w2, w19 mov w1, w22 mov w0, w21 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 b FtlWrite .size ftl_write, .-ftl_write .section .text.FtlDumpSysBlock,"ax",@progbits .align 2 .global FtlDumpSysBlock .type FtlDumpSysBlock, %function FtlDumpSysBlock: sub sp, sp, #112 stp x29, x30, [sp, 16] add x29, sp, 16 stp x25, x26, [sp, 80] and w25, w0, 65535 adrp x0, .LANCHOR189 stp x21, x22, [sp, 48] adrp x21, .LANCHOR211 add x1, x21, :lo12:.LANCHOR211 ldr x2, [x0, #:lo12:.LANCHOR189] adrp x22, .LANCHOR53 stp x23, x24, [sp, 64] lsl w26, w25, 10 stp x19, x20, [sp, 32] adrp x23, .LC84 str x27, [sp, 96] adrp x24, .LC85 str x2, [x1, 8] adrp x2, .LANCHOR195 add x22, x22, :lo12:.LANCHOR53 add x23, x23, :lo12:.LC84 ldr x2, [x2, #:lo12:.LANCHOR195] add x24, x24, :lo12:.LC85 mov x27, x0 mov w19, 0 str x2, [x1, 16] .L3048: ldrh w0, [x22] cmp w19, w0 blt .L3050 ldp x19, x20, [sp, 32] ldp x21, x22, [sp, 48] ldp x23, x24, [sp, 64] ldp x25, x26, [sp, 80] ldp x29, x30, [sp, 16] ldr x27, [sp, 96] add sp, sp, 112 ret .L3050: add x20, x21, :lo12:.LANCHOR211 orr w0, w19, w26 mov w2, 1 mov w1, w2 str w0, [x20, 4] mov x0, x20 bl FlashReadPages ldp x1, x0, [x20, 8] ldr w2, [x21, #:lo12:.LANCHOR211] ldr w3, [x20, 4] ldr w1, [x1] str w1, [sp] mov w1, w25 ldp w4, w5, [x0] ldp w6, w7, [x0, 8] mov x0, x23 bl printf ldr x0, [x20, 16] ldr w0, [x0] cmn w0, #1 beq .L3049 ldr x1, [x27, #:lo12:.LANCHOR189] mov w3, 768 mov w2, 4 mov x0, x24 bl rknand_print_hex .L3049: add w19, w19, 1 sxth w19, w19 b .L3048 .size FtlDumpSysBlock, .-FtlDumpSysBlock .section .text.dump_map_info,"ax",@progbits .align 2 .global dump_map_info .type dump_map_info, %function dump_map_info: sub sp, sp, #96 adrp x0, .LANCHOR40 stp x29, x30, [sp, 16] add x29, sp, 16 stp x19, x20, [sp, 32] ldrh w20, [x0, #:lo12:.LANCHOR40] stp x23, x24, [sp, 64] adrp x23, .LANCHOR47 stp x21, x22, [sp, 48] add x23, x23, :lo12:.LANCHOR47 adrp x22, .LANCHOR41 add x22, x22, :lo12:.LANCHOR41 stp x25, x26, [sp, 80] adrp x24, .LANCHOR38 .L3056: ldrh w0, [x22] cmp w0, w20 bhi .L3062 adrp x25, .LANCHOR131 adrp x19, .LANCHOR211 add x25, x25, :lo12:.LANCHOR131 add x19, x19, :lo12:.LANCHOR211 mov w26, 0 .L3063: ldrh w0, [x25] cmp w26, w0 bge .L3066 adrp x21, .LANCHOR53 adrp x0, .LC51 sbfiz x23, x26, 1, 32 mov w20, 0 add x21, x21, :lo12:.LANCHOR53 add x24, x0, :lo12:.LC51 b .L3067 .L3058: ldrb w0, [x23, x5] mov w1, w20 bl V2P_block and w4, w0, 65535 bl FtlBbmIsBadBlock cbnz w0, .L3057 umaddl x1, w19, w7, x6 lsl w4, w4, 10 mul w0, w19, w8 add w19, w19, 1 and w19, w19, 65535 asr w0, w0, 2 str w4, [x1, 4] add x0, x10, x0, sxtw 2 stp x11, x0, [x1, 8] .L3057: add x5, x5, 1 .L3064: cmp w12, w5, uxth bhi .L3058 cbnz w19, .L3059 .L3061: add w20, w20, 1 and w20, w20, 65535 b .L3056 .L3059: mov w1, w19 mov w2, 1 mov x0, x6 bl FlashReadPages mov w0, 56 adrp x26, .LC86 add x26, x26, :lo12:.LC86 mov x25, 0 umull x19, w19, w0 .L3060: ldr x0, [x21, #:lo12:.LANCHOR186] add x0, x0, x25 add x25, x25, 56 ldr x1, [x0, 16] ldr w2, [x0, 4] ldr x0, [x0, 8] ldr w3, [x0, 4] str w3, [sp] ldr w7, [x0] mov x0, x26 ldp w3, w4, [x1] ldp w5, w6, [x1, 8] ubfx x1, x2, 10, 16 bl printf cmp x25, x19 bne .L3060 b .L3061 .L3062: adrp x0, .LANCHOR107 adrp x21, .LANCHOR186 ldrh w12, [x24, #:lo12:.LANCHOR38] mov x5, 0 ldr x11, [x0, #:lo12:.LANCHOR107] adrp x0, .LANCHOR108 ldr x6, [x21, #:lo12:.LANCHOR186] mov w19, 0 ldr x10, [x0, #:lo12:.LANCHOR108] adrp x0, .LANCHOR58 mov w7, 56 ldrh w8, [x0, #:lo12:.LANCHOR58] b .L3064 .L3065: adrp x22, .LANCHOR132 mov w2, 1 mov w1, w2 ldr x0, [x22, #:lo12:.LANCHOR132] ldrh w0, [x0, x23] orr w0, w20, w0, lsl 10 str w0, [x19, 4] mov x0, x19 bl FlashReadPages ldp x2, x0, [x19, 8] add w20, w20, 1 ldr x1, [x22, #:lo12:.LANCHOR132] sxth w20, w20 ldr w3, [x2, 4] ldrh w1, [x1, x23] str w3, [sp, 8] ldr w2, [x2] str w2, [sp] ldp w4, w5, [x0] ldp w6, w7, [x0, 8] mov x0, x24 ldp w2, w3, [x19] bl printf .L3067: ldrh w0, [x21] cmp w20, w0 blt .L3065 add w0, w26, 1 sxth w26, w0 b .L3063 .L3066: adrp x0, .LANCHOR64 mov w2, 2 adrp x19, .LANCHOR66 ldr w3, [x0, #:lo12:.LANCHOR64] adrp x0, .LANCHOR132 ldr x1, [x0, #:lo12:.LANCHOR132] adrp x0, .LC87 add x0, x0, :lo12:.LC87 bl rknand_print_hex adrp x0, .LANCHOR134 ldrh w3, [x19, #:lo12:.LANCHOR66] mov w2, 4 ldr x1, [x0, #:lo12:.LANCHOR134] adrp x0, .LC88 add x0, x0, :lo12:.LC88 bl rknand_print_hex adrp x0, .LANCHOR203 ldrh w3, [x19, #:lo12:.LANCHOR66] ldp x21, x22, [sp, 48] mov w2, 4 ldr x1, [x0, #:lo12:.LANCHOR203] adrp x0, .LC89 ldp x19, x20, [sp, 32] add x0, x0, :lo12:.LC89 ldp x23, x24, [sp, 64] ldp x25, x26, [sp, 80] ldp x29, x30, [sp, 16] add sp, sp, 96 b rknand_print_hex .size dump_map_info, .-dump_map_info .global FtlMallocOffset .global FtlMallocBuffer .global LastWritenPbaAddr .global gc_ink_free_return_value .global check_valid_page_count_table .global FtlUpdateVaildLpnCount .global g_ect_tbl_power_up_flush .global last_cache_match_count .global power_up_flag .global g_LowFormat .global gFtlInitStatus .global DeviceCapacity .global ToshibaRefValue .global Toshiba15RefValue .global ToshibaA19RefValue .global SamsungRefValue .global refValueDefault .global random_seed .global gSlcNandParaInfo .global gNandParaInfo .global g_page_map_check_enable .global g_power_lost_ecc_error_blk .global g_power_lost_recovery_flag .global c_mlc_erase_count_value .global g_recovery_ppa_tbl .global g_recovery_page_min_ver .global g_recovery_page_num .global g_cur_erase_blk .global g_gc_skip_write_count .global g_gc_head_data_block_count .global g_gc_head_data_block .global g_ftl_nand_free_count .global g_in_swl_replace .global g_in_gc_progress .global g_all_blk_used_slc_mode .global g_max_erase_count .global g_totle_sys_slc_erase_count .global g_totle_slc_erase_count .global g_min_erase_count .global g_totle_avg_erase_count .global g_totle_mlc_erase_count .global g_totle_l2p_write_count .global g_totle_cache_write_count .global g_tmp_data_superblock_id .global g_totle_read_page_count .global g_totle_discard_page_count .global g_totle_read_sector .global g_totle_write_sector .global g_totle_write_page_count .global g_totle_gc_page_count .global g_gc_blk_index .global g_gc_merge_free_blk_threshold .global g_gc_free_blk_threshold .global g_gc_refresh_block_temp_tbl .global g_free_slc_blk_num .global g_gc_refresh_block_temp_num .global g_gc_bad_block_temp_tbl .global g_gc_bad_block_gc_index .global g_gc_bad_block_temp_num .global g_gc_next_blk_3 .global g_gc_next_blk_2 .global g_gc_next_blk_1 .global g_gc_next_blk .global g_gc_cur_blk_max_valid_pages .global g_gc_cur_blk_valid_pages .global g_gc_page_offset .global g_gc_blk_num .global p_gc_blk_tbl .global p_gc_page_info .global g_sys_ext_data .global g_sys_save_data .global gp_last_act_superblock .global g_gc_superblock .global g_gc_temp_superblock .global g_buffer_superblock .global g_active_superblock .global g_num_data_superblocks .global g_num_free_superblocks .global p_data_block_list_tail .global p_data_block_list_head .global p_free_data_block_list_head .global p_data_block_list_table .global g_l2p_last_update_region_id .global p_l2p_map_buf .global p_l2p_ram_map .global g_totle_vendor_block .global p_vendor_region_ppn_table .global p_vendor_block_ver_table .global p_vendor_block_valid_page_count .global p_vendor_block_table .global g_totle_map_block .global p_map_region_ppn_check_table .global p_map_region_ppn_table .global p_map_block_ver_table .global p_map_block_valid_page_count .global p_map_block_table .global p_blk_mode_table .global p_valid_page_count_table .global g_totle_swl_count .global p_swl_mul_table .global p_erase_count_table .global g_ect_tbl_info_size .global gp_ect_tbl_info .global g_gc_num_req .global c_gc_page_buf_num .global gp_gc_page_buf_info .global p_gc_data_buf .global p_gc_spare_buf .global p_io_spare_buf .global p_io_data_buf_1 .global p_io_data_buf_0 .global p_sys_spare_buf .global p_vendor_data_buf .global p_sys_data_buf_1 .global p_sys_data_buf .global g_wr_page_num .global req_wr_io .global c_wr_page_buf_num .global p_wr_io_data_buf .global p_wr_io_spare_buf .global p_plane_order_table .global g_req_cache .global req_gc_dst .global req_gc .global req_erase .global req_prgm .global req_read .global req_sys .global gVendorBlkInfo .global gL2pMapInfo .global gSysFreeQueue .global gSysInfo .global gBbtInfo .global g_flash_read_only_en .global g_inkDie_check_enable .global g_SlcPartLbaEndSector .global g_MaxLbn .global g_VaildLpn .global g_MaxLpn .global g_MaxLbaSector .global g_GlobalDataVersion .global g_GlobalSysVersion .global ftl_gc_temp_power_lost_recovery_flag .global c_ftl_nand_max_data_blks .global c_ftl_nand_data_op_blks_per_plane .global c_ftl_nand_data_blks_per_plane .global c_ftl_nand_max_sys_blks .global c_ftl_nand_init_sys_blks_per_plane .global c_ftl_nand_sys_blks_per_plane .global c_ftl_vendor_part_size .global c_ftl_nand_max_vendor_blks .global c_ftl_nand_max_map_blks .global c_ftl_nand_map_blks_per_plane .global c_ftl_nand_vendor_region_num .global c_ftl_nand_l2pmap_ram_region_num .global c_ftl_nand_map_region_num .global c_ftl_nand_totle_phy_blks .global c_ftl_nand_reserved_blks .global c_ftl_nand_byte_pre_oob .global c_ftl_nand_byte_pre_page .global c_ftl_nand_sec_pre_page_shift .global c_ftl_nand_sec_pre_page .global c_ftl_nand_page_pre_super_blk .global c_ftl_nand_page_pre_slc_blk .global c_ftl_nand_page_pre_blk .global c_ftl_nand_bbm_buf_size .global c_ftl_nand_ext_blk_pre_plane .global c_ftl_nand_blk_pre_plane .global c_ftl_nand_planes_num .global c_ftl_nand_blks_per_die .global c_ftl_nand_planes_per_die .global c_ftl_nand_die_num .global c_ftl_nand_type .global gMasterTempBuf .global gMasterInfo .global gNandcDumpWriteEn .global gToggleModeClkDiv .global gBootDdrMode .global gNandcEccBits .global gpNandc1 .global gpNandc .global g_nandc_version_data .global gNandcVer .global gNandChipMap .global gNandIDataBuf .global idb_flash_slc_mode .global FlashDdrTunningReadCount .global FlashWaitBusyScheduleEn .global gNandPhyInfo .global gFlashProgCheckSpareBuffer .global gFlashProgCheckBuffer .global gFlashSpareBuffer .global gFlashPageBuffer1 .global gFlashPageBuffer0 .global gpFlashSaveInfo .global gReadRetryInfo .global gpNandParaInfo .global gNandOptPara .global g_nand_ecc_en .global g_slc2KBNand .global g_maxRetryCount .global g_maxRegNum .global g_retryMode .global gNandIDBResBlkNumSaveInFlash .global gNandIDBResBlkNum .global gNandFlashResEndPageAddr .global gNandFlashInfoBlockAddr .global gNandFlashIdbBlockAddr .global gNandFlashInfoBlockEcc .global gNandFlashIDBEccBits .global gNandFlashEccBits .global gNandRandomizer .global gBlockPageAlignSize .global gTotleBlock .global gNandMaxChip .global gNandMaxDie .global gFlashInterfaceMode .global gFlashCurMode .global gFlashSlcMode .global gFlashOnfiModeEn .global gFlashToggleModeEn .global gFlashSdrModeEn .global gMultiPageProgEn .global gMultiPageReadEn .global gpReadRetrial .global mlcPageToSlcPageTbl .global slcPageToMlcPageTbl .global DieAddrs .global gDieOp .global DieCsIndex .global IDByte .global read_retry_cur_offset .section .bss.DeviceCapacity,"aw",@nobits .align 2 .set .LANCHOR60,. + 0 .type DeviceCapacity, %object .size DeviceCapacity, 4 DeviceCapacity: .zero 4 .section .bss.DieAddrs,"aw",@nobits .align 2 .set .LANCHOR18,. + 0 .type DieAddrs, %object .size DieAddrs, 32 DieAddrs: .zero 32 .section .bss.DieCsIndex,"aw",@nobits .align 2 .set .LANCHOR27,. + 0 .type DieCsIndex, %object .size DieCsIndex, 8 DieCsIndex: .zero 8 .section .bss.FlashDdrTunningReadCount,"aw",@nobits .align 2 .set .LANCHOR147,. + 0 .type FlashDdrTunningReadCount, %object .size FlashDdrTunningReadCount, 4 FlashDdrTunningReadCount: .zero 4 .section .bss.FlashWaitBusyScheduleEn,"aw",@nobits .align 2 .type FlashWaitBusyScheduleEn, %object .size FlashWaitBusyScheduleEn, 4 FlashWaitBusyScheduleEn: .zero 4 .section .bss.FtlMallocBuffer,"aw",@nobits .align 6 .type FtlMallocBuffer, %object .size FtlMallocBuffer, 1310720 FtlMallocBuffer: .zero 1310720 .section .bss.FtlUpdateVaildLpnCount,"aw",@nobits .align 1 .set .LANCHOR101,. + 0 .type FtlUpdateVaildLpnCount, %object .size FtlUpdateVaildLpnCount, 2 FtlUpdateVaildLpnCount: .zero 2 .section .bss.IDByte,"aw",@nobits .align 2 .set .LANCHOR22,. + 0 .type IDByte, %object .size IDByte, 32 IDByte: .zero 32 .section .bss.c_ftl_nand_bbm_buf_size,"aw",@nobits .align 1 .set .LANCHOR126,. + 0 .type c_ftl_nand_bbm_buf_size, %object .size c_ftl_nand_bbm_buf_size, 2 c_ftl_nand_bbm_buf_size: .zero 2 .section .bss.c_ftl_nand_blk_pre_plane,"aw",@nobits .align 1 .set .LANCHOR41,. + 0 .type c_ftl_nand_blk_pre_plane, %object .size c_ftl_nand_blk_pre_plane, 2 c_ftl_nand_blk_pre_plane: .zero 2 .section .bss.c_ftl_nand_blks_per_die,"aw",@nobits .align 1 .set .LANCHOR51,. + 0 .type c_ftl_nand_blks_per_die, %object .size c_ftl_nand_blks_per_die, 2 c_ftl_nand_blks_per_die: .zero 2 .section .bss.c_ftl_nand_byte_pre_oob,"aw",@nobits .align 1 .set .LANCHOR58,. + 0 .type c_ftl_nand_byte_pre_oob, %object .size c_ftl_nand_byte_pre_oob, 2 c_ftl_nand_byte_pre_oob: .zero 2 .section .bss.c_ftl_nand_byte_pre_page,"aw",@nobits .align 1 .set .LANCHOR57,. + 0 .type c_ftl_nand_byte_pre_page, %object .size c_ftl_nand_byte_pre_page, 2 c_ftl_nand_byte_pre_page: .zero 2 .section .bss.c_ftl_nand_data_blks_per_plane,"aw",@nobits .align 1 .set .LANCHOR40,. + 0 .type c_ftl_nand_data_blks_per_plane, %object .size c_ftl_nand_data_blks_per_plane, 2 c_ftl_nand_data_blks_per_plane: .zero 2 .section .bss.c_ftl_nand_data_op_blks_per_plane,"aw",@nobits .align 1 .set .LANCHOR232,. + 0 .type c_ftl_nand_data_op_blks_per_plane, %object .size c_ftl_nand_data_op_blks_per_plane, 2 c_ftl_nand_data_op_blks_per_plane: .zero 2 .section .bss.c_ftl_nand_die_num,"aw",@nobits .align 1 .set .LANCHOR45,. + 0 .type c_ftl_nand_die_num, %object .size c_ftl_nand_die_num, 2 c_ftl_nand_die_num: .zero 2 .section .bss.c_ftl_nand_ext_blk_pre_plane,"aw",@nobits .align 1 .set .LANCHOR49,. + 0 .type c_ftl_nand_ext_blk_pre_plane, %object .size c_ftl_nand_ext_blk_pre_plane, 2 c_ftl_nand_ext_blk_pre_plane: .zero 2 .section .bss.c_ftl_nand_init_sys_blks_per_plane,"aw",@nobits .align 2 .set .LANCHOR65,. + 0 .type c_ftl_nand_init_sys_blks_per_plane, %object .size c_ftl_nand_init_sys_blks_per_plane, 4 c_ftl_nand_init_sys_blks_per_plane: .zero 4 .section .bss.c_ftl_nand_l2pmap_ram_region_num,"aw",@nobits .align 1 .set .LANCHOR67,. + 0 .type c_ftl_nand_l2pmap_ram_region_num, %object .size c_ftl_nand_l2pmap_ram_region_num, 2 c_ftl_nand_l2pmap_ram_region_num: .zero 2 .section .bss.c_ftl_nand_map_blks_per_plane,"aw",@nobits .align 1 .set .LANCHOR63,. + 0 .type c_ftl_nand_map_blks_per_plane, %object .size c_ftl_nand_map_blks_per_plane, 2 c_ftl_nand_map_blks_per_plane: .zero 2 .section .bss.c_ftl_nand_map_region_num,"aw",@nobits .align 1 .set .LANCHOR66,. + 0 .type c_ftl_nand_map_region_num, %object .size c_ftl_nand_map_region_num, 2 c_ftl_nand_map_region_num: .zero 2 .section .bss.c_ftl_nand_max_data_blks,"aw",@nobits .align 2 .set .LANCHOR42,. + 0 .type c_ftl_nand_max_data_blks, %object .size c_ftl_nand_max_data_blks, 4 c_ftl_nand_max_data_blks: .zero 4 .section .bss.c_ftl_nand_max_map_blks,"aw",@nobits .align 2 .set .LANCHOR64,. + 0 .type c_ftl_nand_max_map_blks, %object .size c_ftl_nand_max_map_blks, 4 c_ftl_nand_max_map_blks: .zero 4 .section .bss.c_ftl_nand_max_sys_blks,"aw",@nobits .align 2 .set .LANCHOR39,. + 0 .type c_ftl_nand_max_sys_blks, %object .size c_ftl_nand_max_sys_blks, 4 c_ftl_nand_max_sys_blks: .zero 4 .section .bss.c_ftl_nand_max_vendor_blks,"aw",@nobits .align 1 .set .LANCHOR61,. + 0 .type c_ftl_nand_max_vendor_blks, %object .size c_ftl_nand_max_vendor_blks, 2 c_ftl_nand_max_vendor_blks: .zero 2 .section .bss.c_ftl_nand_page_pre_blk,"aw",@nobits .align 1 .set .LANCHOR52,. + 0 .type c_ftl_nand_page_pre_blk, %object .size c_ftl_nand_page_pre_blk, 2 c_ftl_nand_page_pre_blk: .zero 2 .section .bss.c_ftl_nand_page_pre_slc_blk,"aw",@nobits .align 1 .set .LANCHOR53,. + 0 .type c_ftl_nand_page_pre_slc_blk, %object .size c_ftl_nand_page_pre_slc_blk, 2 c_ftl_nand_page_pre_slc_blk: .zero 2 .section .bss.c_ftl_nand_page_pre_super_blk,"aw",@nobits .align 1 .set .LANCHOR54,. + 0 .type c_ftl_nand_page_pre_super_blk, %object .size c_ftl_nand_page_pre_super_blk, 2 c_ftl_nand_page_pre_super_blk: .zero 2 .section .bss.c_ftl_nand_planes_num,"aw",@nobits .align 1 .set .LANCHOR38,. + 0 .type c_ftl_nand_planes_num, %object .size c_ftl_nand_planes_num, 2 c_ftl_nand_planes_num: .zero 2 .section .bss.c_ftl_nand_planes_per_die,"aw",@nobits .align 1 .set .LANCHOR46,. + 0 .type c_ftl_nand_planes_per_die, %object .size c_ftl_nand_planes_per_die, 2 c_ftl_nand_planes_per_die: .zero 2 .section .bss.c_ftl_nand_reserved_blks,"aw",@nobits .align 1 .set .LANCHOR59,. + 0 .type c_ftl_nand_reserved_blks, %object .size c_ftl_nand_reserved_blks, 2 c_ftl_nand_reserved_blks: .zero 2 .section .bss.c_ftl_nand_sec_pre_page,"aw",@nobits .align 1 .set .LANCHOR55,. + 0 .type c_ftl_nand_sec_pre_page, %object .size c_ftl_nand_sec_pre_page, 2 c_ftl_nand_sec_pre_page: .zero 2 .section .bss.c_ftl_nand_sec_pre_page_shift,"aw",@nobits .align 1 .set .LANCHOR56,. + 0 .type c_ftl_nand_sec_pre_page_shift, %object .size c_ftl_nand_sec_pre_page_shift, 2 c_ftl_nand_sec_pre_page_shift: .zero 2 .section .bss.c_ftl_nand_sys_blks_per_plane,"aw",@nobits .align 2 .set .LANCHOR37,. + 0 .type c_ftl_nand_sys_blks_per_plane, %object .size c_ftl_nand_sys_blks_per_plane, 4 c_ftl_nand_sys_blks_per_plane: .zero 4 .section .bss.c_ftl_nand_totle_phy_blks,"aw",@nobits .align 2 .set .LANCHOR43,. + 0 .type c_ftl_nand_totle_phy_blks, %object .size c_ftl_nand_totle_phy_blks, 4 c_ftl_nand_totle_phy_blks: .zero 4 .section .bss.c_ftl_nand_type,"aw",@nobits .align 1 .set .LANCHOR44,. + 0 .type c_ftl_nand_type, %object .size c_ftl_nand_type, 2 c_ftl_nand_type: .zero 2 .section .bss.c_ftl_nand_vendor_region_num,"aw",@nobits .align 1 .set .LANCHOR62,. + 0 .type c_ftl_nand_vendor_region_num, %object .size c_ftl_nand_vendor_region_num, 2 c_ftl_nand_vendor_region_num: .zero 2 .section .bss.c_ftl_vendor_part_size,"aw",@nobits .align 1 .set .LANCHOR50,. + 0 .type c_ftl_vendor_part_size, %object .size c_ftl_vendor_part_size, 2 c_ftl_vendor_part_size: .zero 2 .section .bss.c_gc_page_buf_num,"aw",@nobits .align 2 .set .LANCHOR110,. + 0 .type c_gc_page_buf_num, %object .size c_gc_page_buf_num, 4 c_gc_page_buf_num: .zero 4 .section .bss.c_mlc_erase_count_value,"aw",@nobits .align 1 .set .LANCHOR48,. + 0 .type c_mlc_erase_count_value, %object .size c_mlc_erase_count_value, 2 c_mlc_erase_count_value: .zero 2 .section .bss.c_wr_page_buf_num,"aw",@nobits .align 2 .set .LANCHOR185,. + 0 .type c_wr_page_buf_num, %object .size c_wr_page_buf_num, 4 c_wr_page_buf_num: .zero 4 .section .bss.check_valid_page_count_table,"aw",@nobits .align 3 .type check_valid_page_count_table, %object .size check_valid_page_count_table, 8192 check_valid_page_count_table: .zero 8192 .section .bss.ftl_gc_temp_power_lost_recovery_flag,"aw",@nobits .align 2 .set .LANCHOR138,. + 0 .type ftl_gc_temp_power_lost_recovery_flag, %object .size ftl_gc_temp_power_lost_recovery_flag, 4 ftl_gc_temp_power_lost_recovery_flag: .zero 4 .section .bss.gBbtInfo,"aw",@nobits .align 3 .set .LANCHOR76,. + 0 .type gBbtInfo, %object .size gBbtInfo, 96 gBbtInfo: .zero 96 .section .bss.gBlockPageAlignSize,"aw",@nobits .align 2 .set .LANCHOR4,. + 0 .type gBlockPageAlignSize, %object .size gBlockPageAlignSize, 4 gBlockPageAlignSize: .zero 4 .section .bss.gBootDdrMode,"aw",@nobits .align 2 .set .LANCHOR160,. + 0 .type gBootDdrMode, %object .size gBootDdrMode, 4 gBootDdrMode: .zero 4 .section .bss.gDieOp,"aw",@nobits .align 2 .set .LANCHOR23,. + 0 .type gDieOp, %object .size gDieOp, 192 gDieOp: .zero 192 .section .bss.gFlashCurMode,"aw",@nobits .set .LANCHOR24,. + 0 .type gFlashCurMode, %object .size gFlashCurMode, 1 gFlashCurMode: .zero 1 .section .bss.gFlashInterfaceMode,"aw",@nobits .set .LANCHOR25,. + 0 .type gFlashInterfaceMode, %object .size gFlashInterfaceMode, 1 gFlashInterfaceMode: .zero 1 .section .bss.gFlashOnfiModeEn,"aw",@nobits .type gFlashOnfiModeEn, %object .size gFlashOnfiModeEn, 1 gFlashOnfiModeEn: .zero 1 .section .bss.gFlashPageBuffer0,"aw",@nobits .align 3 .set .LANCHOR154,. + 0 .type gFlashPageBuffer0, %object .size gFlashPageBuffer0, 8 gFlashPageBuffer0: .zero 8 .section .bss.gFlashPageBuffer1,"aw",@nobits .align 3 .set .LANCHOR152,. + 0 .type gFlashPageBuffer1, %object .size gFlashPageBuffer1, 8 gFlashPageBuffer1: .zero 8 .section .bss.gFlashProgCheckBuffer,"aw",@nobits .align 3 .set .LANCHOR206,. + 0 .type gFlashProgCheckBuffer, %object .size gFlashProgCheckBuffer, 8 gFlashProgCheckBuffer: .zero 8 .section .bss.gFlashProgCheckSpareBuffer,"aw",@nobits .align 3 .set .LANCHOR207,. + 0 .type gFlashProgCheckSpareBuffer, %object .size gFlashProgCheckSpareBuffer, 8 gFlashProgCheckSpareBuffer: .zero 8 .section .bss.gFlashSdrModeEn,"aw",@nobits .type gFlashSdrModeEn, %object .size gFlashSdrModeEn, 1 gFlashSdrModeEn: .zero 1 .section .bss.gFlashSlcMode,"aw",@nobits .set .LANCHOR16,. + 0 .type gFlashSlcMode, %object .size gFlashSlcMode, 1 gFlashSlcMode: .zero 1 .section .bss.gFlashSpareBuffer,"aw",@nobits .align 3 .set .LANCHOR205,. + 0 .type gFlashSpareBuffer, %object .size gFlashSpareBuffer, 8 gFlashSpareBuffer: .zero 8 .section .bss.gFlashToggleModeEn,"aw",@nobits .set .LANCHOR30,. + 0 .type gFlashToggleModeEn, %object .size gFlashToggleModeEn, 1 gFlashToggleModeEn: .zero 1 .section .bss.gL2pMapInfo,"aw",@nobits .align 3 .set .LANCHOR130,. + 0 .type gL2pMapInfo, %object .size gL2pMapInfo, 64 gL2pMapInfo: .zero 64 .section .bss.gMasterInfo,"aw",@nobits .align 3 .set .LANCHOR35,. + 0 .type gMasterInfo, %object .size gMasterInfo, 48 gMasterInfo: .zero 48 .section .bss.gMasterTempBuf,"aw",@nobits .align 3 .set .LANCHOR161,. + 0 .type gMasterTempBuf, %object .size gMasterTempBuf, 8 gMasterTempBuf: .zero 8 .section .bss.gMultiPageProgEn,"aw",@nobits .set .LANCHOR28,. + 0 .type gMultiPageProgEn, %object .size gMultiPageProgEn, 1 gMultiPageProgEn: .zero 1 .section .bss.gMultiPageReadEn,"aw",@nobits .set .LANCHOR210,. + 0 .type gMultiPageReadEn, %object .size gMultiPageReadEn, 1 gMultiPageReadEn: .zero 1 .section .bss.gNandChipMap,"aw",@nobits .align 3 .set .LANCHOR0,. + 0 .type gNandChipMap, %object .size gNandChipMap, 64 gNandChipMap: .zero 64 .section .bss.gNandFlashEccBits,"aw",@nobits .set .LANCHOR33,. + 0 .type gNandFlashEccBits, %object .size gNandFlashEccBits, 1 gNandFlashEccBits: .zero 1 .section .bss.gNandFlashIDBEccBits,"aw",@nobits .set .LANCHOR158,. + 0 .type gNandFlashIDBEccBits, %object .size gNandFlashIDBEccBits, 1 gNandFlashIDBEccBits: .zero 1 .section .bss.gNandFlashIdbBlockAddr,"aw",@nobits .align 2 .set .LANCHOR156,. + 0 .type gNandFlashIdbBlockAddr, %object .size gNandFlashIdbBlockAddr, 4 gNandFlashIdbBlockAddr: .zero 4 .section .bss.gNandFlashInfoBlockAddr,"aw",@nobits .align 2 .set .LANCHOR155,. + 0 .type gNandFlashInfoBlockAddr, %object .size gNandFlashInfoBlockAddr, 4 gNandFlashInfoBlockAddr: .zero 4 .section .bss.gNandFlashInfoBlockEcc,"aw",@nobits .type gNandFlashInfoBlockEcc, %object .size gNandFlashInfoBlockEcc, 1 gNandFlashInfoBlockEcc: .zero 1 .section .bss.gNandFlashResEndPageAddr,"aw",@nobits .align 2 .type gNandFlashResEndPageAddr, %object .size gNandFlashResEndPageAddr, 4 gNandFlashResEndPageAddr: .zero 4 .section .bss.gNandIDBResBlkNum,"aw",@nobits .set .LANCHOR3,. + 0 .type gNandIDBResBlkNum, %object .size gNandIDBResBlkNum, 1 gNandIDBResBlkNum: .zero 1 .section .bss.gNandIDBResBlkNumSaveInFlash,"aw",@nobits .set .LANCHOR157,. + 0 .type gNandIDBResBlkNumSaveInFlash, %object .size gNandIDBResBlkNumSaveInFlash, 1 gNandIDBResBlkNumSaveInFlash: .zero 1 .section .bss.gNandIDataBuf,"aw",@nobits .align 3 .set .LANCHOR144,. + 0 .type gNandIDataBuf, %object .size gNandIDataBuf, 2048 gNandIDataBuf: .zero 2048 .section .bss.gNandMaxChip,"aw",@nobits .set .LANCHOR124,. + 0 .type gNandMaxChip, %object .size gNandMaxChip, 1 gNandMaxChip: .zero 1 .section .bss.gNandMaxDie,"aw",@nobits .set .LANCHOR26,. + 0 .type gNandMaxDie, %object .size gNandMaxDie, 1 gNandMaxDie: .zero 1 .section .bss.gNandOptPara,"aw",@nobits .align 3 .set .LANCHOR8,. + 0 .type gNandOptPara, %object .size gNandOptPara, 32 gNandOptPara: .zero 32 .section .bss.gNandPhyInfo,"aw",@nobits .align 3 .set .LANCHOR15,. + 0 .type gNandPhyInfo, %object .size gNandPhyInfo, 28 gNandPhyInfo: .zero 28 .section .bss.gNandRandomizer,"aw",@nobits .set .LANCHOR6,. + 0 .type gNandRandomizer, %object .size gNandRandomizer, 1 gNandRandomizer: .zero 1 .section .bss.gNandcDumpWriteEn,"aw",@nobits .align 2 .set .LANCHOR36,. + 0 .type gNandcDumpWriteEn, %object .size gNandcDumpWriteEn, 4 gNandcDumpWriteEn: .zero 4 .section .bss.gNandcEccBits,"aw",@nobits .align 2 .set .LANCHOR32,. + 0 .type gNandcEccBits, %object .size gNandcEccBits, 4 gNandcEccBits: .zero 4 .section .bss.gNandcVer,"aw",@nobits .align 2 .set .LANCHOR34,. + 0 .type gNandcVer, %object .size gNandcVer, 4 gNandcVer: .zero 4 .section .bss.gReadRetryInfo,"aw",@nobits .align 3 .set .LANCHOR20,. + 0 .type gReadRetryInfo, %object .size gReadRetryInfo, 852 gReadRetryInfo: .zero 852 .section .bss.gSysFreeQueue,"aw",@nobits .align 3 .set .LANCHOR77,. + 0 .type gSysFreeQueue, %object .size gSysFreeQueue, 2056 gSysFreeQueue: .zero 2056 .section .bss.gSysInfo,"aw",@nobits .align 3 .set .LANCHOR218,. + 0 .type gSysInfo, %object .size gSysInfo, 16 gSysInfo: .zero 16 .section .bss.gToggleModeClkDiv,"aw",@nobits .align 2 .type gToggleModeClkDiv, %object .size gToggleModeClkDiv, 4 gToggleModeClkDiv: .zero 4 .section .bss.gTotleBlock,"aw",@nobits .align 1 .set .LANCHOR125,. + 0 .type gTotleBlock, %object .size gTotleBlock, 2 gTotleBlock: .zero 2 .section .bss.gVendorBlkInfo,"aw",@nobits .align 3 .set .LANCHOR224,. + 0 .type gVendorBlkInfo, %object .size gVendorBlkInfo, 64 gVendorBlkInfo: .zero 64 .section .bss.g_GlobalDataVersion,"aw",@nobits .align 2 .set .LANCHOR165,. + 0 .type g_GlobalDataVersion, %object .size g_GlobalDataVersion, 4 g_GlobalDataVersion: .zero 4 .section .bss.g_GlobalSysVersion,"aw",@nobits .align 2 .set .LANCHOR164,. + 0 .type g_GlobalSysVersion, %object .size g_GlobalSysVersion, 4 g_GlobalSysVersion: .zero 4 .section .bss.g_LowFormat,"aw",@nobits .align 2 .set .LANCHOR254,. + 0 .type g_LowFormat, %object .size g_LowFormat, 4 g_LowFormat: .zero 4 .section .bss.g_MaxLbaSector,"aw",@nobits .align 2 .set .LANCHOR68,. + 0 .type g_MaxLbaSector, %object .size g_MaxLbaSector, 4 g_MaxLbaSector: .zero 4 .section .bss.g_MaxLbn,"aw",@nobits .align 2 .set .LANCHOR231,. + 0 .type g_MaxLbn, %object .size g_MaxLbn, 4 g_MaxLbn: .zero 4 .section .bss.g_MaxLpn,"aw",@nobits .align 2 .set .LANCHOR74,. + 0 .type g_MaxLpn, %object .size g_MaxLpn, 4 g_MaxLpn: .zero 4 .section .bss.g_SlcPartLbaEndSector,"aw",@nobits .align 2 .set .LANCHOR162,. + 0 .type g_SlcPartLbaEndSector, %object .size g_SlcPartLbaEndSector, 4 g_SlcPartLbaEndSector: .zero 4 .section .bss.g_VaildLpn,"aw",@nobits .align 2 .set .LANCHOR102,. + 0 .type g_VaildLpn, %object .size g_VaildLpn, 4 g_VaildLpn: .zero 4 .section .bss.g_active_superblock,"aw",@nobits .align 3 .set .LANCHOR93,. + 0 .type g_active_superblock, %object .size g_active_superblock, 48 g_active_superblock: .zero 48 .section .bss.g_all_blk_used_slc_mode,"aw",@nobits .align 2 .set .LANCHOR163,. + 0 .type g_all_blk_used_slc_mode, %object .size g_all_blk_used_slc_mode, 4 g_all_blk_used_slc_mode: .zero 4 .section .bss.g_buffer_superblock,"aw",@nobits .align 3 .set .LANCHOR94,. + 0 .type g_buffer_superblock, %object .size g_buffer_superblock, 48 g_buffer_superblock: .zero 48 .section .bss.g_cur_erase_blk,"aw",@nobits .align 2 .set .LANCHOR75,. + 0 .type g_cur_erase_blk, %object .size g_cur_erase_blk, 4 g_cur_erase_blk: .zero 4 .section .bss.g_ect_tbl_info_size,"aw",@nobits .align 1 .set .LANCHOR198,. + 0 .type g_ect_tbl_info_size, %object .size g_ect_tbl_info_size, 2 g_ect_tbl_info_size: .zero 2 .section .bss.g_ect_tbl_power_up_flush,"aw",@nobits .align 1 .set .LANCHOR227,. + 0 .type g_ect_tbl_power_up_flush, %object .size g_ect_tbl_power_up_flush, 2 g_ect_tbl_power_up_flush: .zero 2 .section .bss.g_flash_read_only_en,"aw",@nobits .align 2 .set .LANCHOR78,. + 0 .type g_flash_read_only_en, %object .size g_flash_read_only_en, 4 g_flash_read_only_en: .zero 4 .section .bss.g_free_slc_blk_num,"aw",@nobits .align 1 .set .LANCHOR142,. + 0 .type g_free_slc_blk_num, %object .size g_free_slc_blk_num, 2 g_free_slc_blk_num: .zero 2 .section .bss.g_ftl_nand_free_count,"aw",@nobits .align 2 .set .LANCHOR256,. + 0 .type g_ftl_nand_free_count, %object .size g_ftl_nand_free_count, 4 g_ftl_nand_free_count: .zero 4 .section .bss.g_gc_bad_block_gc_index,"aw",@nobits .align 1 .set .LANCHOR121,. + 0 .type g_gc_bad_block_gc_index, %object .size g_gc_bad_block_gc_index, 2 g_gc_bad_block_gc_index: .zero 2 .section .bss.g_gc_bad_block_temp_num,"aw",@nobits .align 1 .set .LANCHOR119,. + 0 .type g_gc_bad_block_temp_num, %object .size g_gc_bad_block_temp_num, 2 g_gc_bad_block_temp_num: .zero 2 .section .bss.g_gc_bad_block_temp_tbl,"aw",@nobits .align 3 .set .LANCHOR120,. + 0 .type g_gc_bad_block_temp_tbl, %object .size g_gc_bad_block_temp_tbl, 34 g_gc_bad_block_temp_tbl: .zero 34 .section .bss.g_gc_blk_index,"aw",@nobits .align 1 .set .LANCHOR183,. + 0 .type g_gc_blk_index, %object .size g_gc_blk_index, 2 g_gc_blk_index: .zero 2 .section .bss.g_gc_blk_num,"aw",@nobits .align 1 .set .LANCHOR111,. + 0 .type g_gc_blk_num, %object .size g_gc_blk_num, 2 g_gc_blk_num: .zero 2 .section .bss.g_gc_cur_blk_max_valid_pages,"aw",@nobits .align 1 .set .LANCHOR250,. + 0 .type g_gc_cur_blk_max_valid_pages, %object .size g_gc_cur_blk_max_valid_pages, 2 g_gc_cur_blk_max_valid_pages: .zero 2 .section .bss.g_gc_cur_blk_valid_pages,"aw",@nobits .align 1 .set .LANCHOR249,. + 0 .type g_gc_cur_blk_valid_pages, %object .size g_gc_cur_blk_valid_pages, 2 g_gc_cur_blk_valid_pages: .zero 2 .section .bss.g_gc_free_blk_threshold,"aw",@nobits .align 1 .set .LANCHOR181,. + 0 .type g_gc_free_blk_threshold, %object .size g_gc_free_blk_threshold, 2 g_gc_free_blk_threshold: .zero 2 .section .bss.g_gc_head_data_block,"aw",@nobits .align 2 .set .LANCHOR178,. + 0 .type g_gc_head_data_block, %object .size g_gc_head_data_block, 4 g_gc_head_data_block: .zero 4 .section .bss.g_gc_head_data_block_count,"aw",@nobits .align 2 .set .LANCHOR179,. + 0 .type g_gc_head_data_block_count, %object .size g_gc_head_data_block_count, 4 g_gc_head_data_block_count: .zero 4 .section .bss.g_gc_merge_free_blk_threshold,"aw",@nobits .align 1 .set .LANCHOR182,. + 0 .type g_gc_merge_free_blk_threshold, %object .size g_gc_merge_free_blk_threshold, 2 g_gc_merge_free_blk_threshold: .zero 2 .section .bss.g_gc_next_blk,"aw",@nobits .align 1 .set .LANCHOR115,. + 0 .type g_gc_next_blk, %object .size g_gc_next_blk, 2 g_gc_next_blk: .zero 2 .section .bss.g_gc_next_blk_1,"aw",@nobits .align 1 .set .LANCHOR116,. + 0 .type g_gc_next_blk_1, %object .size g_gc_next_blk_1, 2 g_gc_next_blk_1: .zero 2 .section .bss.g_gc_next_blk_2,"aw",@nobits .align 1 .set .LANCHOR117,. + 0 .type g_gc_next_blk_2, %object .size g_gc_next_blk_2, 2 g_gc_next_blk_2: .zero 2 .section .bss.g_gc_next_blk_3,"aw",@nobits .align 1 .set .LANCHOR118,. + 0 .type g_gc_next_blk_3, %object .size g_gc_next_blk_3, 2 g_gc_next_blk_3: .zero 2 .section .bss.g_gc_num_req,"aw",@nobits .align 2 .set .LANCHOR105,. + 0 .type g_gc_num_req, %object .size g_gc_num_req, 4 g_gc_num_req: .zero 4 .section .bss.g_gc_page_offset,"aw",@nobits .align 1 .set .LANCHOR113,. + 0 .type g_gc_page_offset, %object .size g_gc_page_offset, 2 g_gc_page_offset: .zero 2 .section .bss.g_gc_refresh_block_temp_num,"aw",@nobits .align 1 .set .LANCHOR184,. + 0 .type g_gc_refresh_block_temp_num, %object .size g_gc_refresh_block_temp_num, 2 g_gc_refresh_block_temp_num: .zero 2 .section .bss.g_gc_refresh_block_temp_tbl,"aw",@nobits .align 3 .type g_gc_refresh_block_temp_tbl, %object .size g_gc_refresh_block_temp_tbl, 34 g_gc_refresh_block_temp_tbl: .zero 34 .section .bss.g_gc_skip_write_count,"aw",@nobits .align 2 .set .LANCHOR180,. + 0 .type g_gc_skip_write_count, %object .size g_gc_skip_write_count, 4 g_gc_skip_write_count: .zero 4 .section .bss.g_gc_superblock,"aw",@nobits .align 3 .set .LANCHOR213,. + 0 .type g_gc_superblock, %object .size g_gc_superblock, 48 g_gc_superblock: .zero 48 .section .bss.g_gc_temp_superblock,"aw",@nobits .align 3 .set .LANCHOR95,. + 0 .type g_gc_temp_superblock, %object .size g_gc_temp_superblock, 48 g_gc_temp_superblock: .zero 48 .section .bss.g_in_gc_progress,"aw",@nobits .align 2 .set .LANCHOR176,. + 0 .type g_in_gc_progress, %object .size g_in_gc_progress, 4 g_in_gc_progress: .zero 4 .section .bss.g_in_swl_replace,"aw",@nobits .align 2 .set .LANCHOR177,. + 0 .type g_in_swl_replace, %object .size g_in_swl_replace, 4 g_in_swl_replace: .zero 4 .section .bss.g_inkDie_check_enable,"aw",@nobits .align 2 .set .LANCHOR104,. + 0 .type g_inkDie_check_enable, %object .size g_inkDie_check_enable, 4 g_inkDie_check_enable: .zero 4 .section .bss.g_l2p_last_update_region_id,"aw",@nobits .align 1 .set .LANCHOR99,. + 0 .type g_l2p_last_update_region_id, %object .size g_l2p_last_update_region_id, 2 g_l2p_last_update_region_id: .zero 2 .section .bss.g_maxRegNum,"aw",@nobits .set .LANCHOR13,. + 0 .type g_maxRegNum, %object .size g_maxRegNum, 1 g_maxRegNum: .zero 1 .section .bss.g_maxRetryCount,"aw",@nobits .set .LANCHOR149,. + 0 .type g_maxRetryCount, %object .size g_maxRetryCount, 1 g_maxRetryCount: .zero 1 .section .bss.g_max_erase_count,"aw",@nobits .align 2 .set .LANCHOR174,. + 0 .type g_max_erase_count, %object .size g_max_erase_count, 4 g_max_erase_count: .zero 4 .section .bss.g_min_erase_count,"aw",@nobits .align 2 .set .LANCHOR175,. + 0 .type g_min_erase_count, %object .size g_min_erase_count, 4 g_min_erase_count: .zero 4 .section .bss.g_nand_ecc_en,"aw",@nobits .set .LANCHOR208,. + 0 .type g_nand_ecc_en, %object .size g_nand_ecc_en, 1 g_nand_ecc_en: .zero 1 .section .bss.g_nandc_version_data,"aw",@nobits .align 2 .set .LANCHOR122,. + 0 .type g_nandc_version_data, %object .size g_nandc_version_data, 4 g_nandc_version_data: .zero 4 .section .bss.g_num_data_superblocks,"aw",@nobits .align 1 .set .LANCHOR87,. + 0 .type g_num_data_superblocks, %object .size g_num_data_superblocks, 2 g_num_data_superblocks: .zero 2 .section .bss.g_num_free_superblocks,"aw",@nobits .align 1 .set .LANCHOR90,. + 0 .type g_num_free_superblocks, %object .size g_num_free_superblocks, 2 g_num_free_superblocks: .zero 2 .section .bss.g_page_map_check_enable,"aw",@nobits .align 1 .set .LANCHOR69,. + 0 .type g_page_map_check_enable, %object .size g_page_map_check_enable, 2 g_page_map_check_enable: .zero 2 .section .bss.g_power_lost_ecc_error_blk,"aw",@nobits .align 1 .set .LANCHOR241,. + 0 .type g_power_lost_ecc_error_blk, %object .size g_power_lost_ecc_error_blk, 2 g_power_lost_ecc_error_blk: .zero 2 .section .bss.g_power_lost_recovery_flag,"aw",@nobits .align 1 .set .LANCHOR242,. + 0 .type g_power_lost_recovery_flag, %object .size g_power_lost_recovery_flag, 2 g_power_lost_recovery_flag: .zero 2 .section .bss.g_recovery_page_min_ver,"aw",@nobits .align 2 .set .LANCHOR139,. + 0 .type g_recovery_page_min_ver, %object .size g_recovery_page_min_ver, 4 g_recovery_page_min_ver: .zero 4 .section .bss.g_recovery_page_num,"aw",@nobits .align 2 .set .LANCHOR243,. + 0 .type g_recovery_page_num, %object .size g_recovery_page_num, 4 g_recovery_page_num: .zero 4 .section .bss.g_recovery_ppa_tbl,"aw",@nobits .align 3 .set .LANCHOR244,. + 0 .type g_recovery_ppa_tbl, %object .size g_recovery_ppa_tbl, 128 g_recovery_ppa_tbl: .zero 128 .section .bss.g_req_cache,"aw",@nobits .align 3 .set .LANCHOR135,. + 0 .type g_req_cache, %object .size g_req_cache, 8 g_req_cache: .zero 8 .section .bss.g_retryMode,"aw",@nobits .set .LANCHOR11,. + 0 .type g_retryMode, %object .size g_retryMode, 1 g_retryMode: .zero 1 .section .bss.g_slc2KBNand,"aw",@nobits .set .LANCHOR2,. + 0 .type g_slc2KBNand, %object .size g_slc2KBNand, 1 g_slc2KBNand: .zero 1 .section .bss.g_sys_ext_data,"aw",@nobits .align 3 .set .LANCHOR141,. + 0 .type g_sys_ext_data, %object .size g_sys_ext_data, 512 g_sys_ext_data: .zero 512 .section .bss.g_sys_save_data,"aw",@nobits .align 3 .set .LANCHOR82,. + 0 .type g_sys_save_data, %object .size g_sys_save_data, 48 g_sys_save_data: .zero 48 .section .bss.g_tmp_data_superblock_id,"aw",@nobits .align 1 .set .LANCHOR136,. + 0 .type g_tmp_data_superblock_id, %object .size g_tmp_data_superblock_id, 2 g_tmp_data_superblock_id: .zero 2 .section .bss.g_totle_avg_erase_count,"aw",@nobits .align 2 .set .LANCHOR214,. + 0 .type g_totle_avg_erase_count, %object .size g_totle_avg_erase_count, 4 g_totle_avg_erase_count: .zero 4 .section .bss.g_totle_cache_write_count,"aw",@nobits .align 2 .set .LANCHOR169,. + 0 .type g_totle_cache_write_count, %object .size g_totle_cache_write_count, 4 g_totle_cache_write_count: .zero 4 .section .bss.g_totle_discard_page_count,"aw",@nobits .align 2 .set .LANCHOR168,. + 0 .type g_totle_discard_page_count, %object .size g_totle_discard_page_count, 4 g_totle_discard_page_count: .zero 4 .section .bss.g_totle_gc_page_count,"aw",@nobits .align 2 .set .LANCHOR166,. + 0 .type g_totle_gc_page_count, %object .size g_totle_gc_page_count, 4 g_totle_gc_page_count: .zero 4 .section .bss.g_totle_l2p_write_count,"aw",@nobits .align 2 .set .LANCHOR170,. + 0 .type g_totle_l2p_write_count, %object .size g_totle_l2p_write_count, 4 g_totle_l2p_write_count: .zero 4 .section .bss.g_totle_map_block,"aw",@nobits .align 1 .set .LANCHOR131,. + 0 .type g_totle_map_block, %object .size g_totle_map_block, 2 g_totle_map_block: .zero 2 .section .bss.g_totle_mlc_erase_count,"aw",@nobits .align 2 .set .LANCHOR172,. + 0 .type g_totle_mlc_erase_count, %object .size g_totle_mlc_erase_count, 4 g_totle_mlc_erase_count: .zero 4 .section .bss.g_totle_read_page_count,"aw",@nobits .align 2 .set .LANCHOR171,. + 0 .type g_totle_read_page_count, %object .size g_totle_read_page_count, 4 g_totle_read_page_count: .zero 4 .section .bss.g_totle_read_sector,"aw",@nobits .align 2 .set .LANCHOR226,. + 0 .type g_totle_read_sector, %object .size g_totle_read_sector, 4 g_totle_read_sector: .zero 4 .section .bss.g_totle_slc_erase_count,"aw",@nobits .align 2 .set .LANCHOR173,. + 0 .type g_totle_slc_erase_count, %object .size g_totle_slc_erase_count, 4 g_totle_slc_erase_count: .zero 4 .section .bss.g_totle_swl_count,"aw",@nobits .align 2 .set .LANCHOR137,. + 0 .type g_totle_swl_count, %object .size g_totle_swl_count, 4 g_totle_swl_count: .zero 4 .section .bss.g_totle_sys_slc_erase_count,"aw",@nobits .align 2 .set .LANCHOR81,. + 0 .type g_totle_sys_slc_erase_count, %object .size g_totle_sys_slc_erase_count, 4 g_totle_sys_slc_erase_count: .zero 4 .section .bss.g_totle_vendor_block,"aw",@nobits .align 1 .set .LANCHOR70,. + 0 .type g_totle_vendor_block, %object .size g_totle_vendor_block, 2 g_totle_vendor_block: .zero 2 .section .bss.g_totle_write_page_count,"aw",@nobits .align 2 .set .LANCHOR167,. + 0 .type g_totle_write_page_count, %object .size g_totle_write_page_count, 4 g_totle_write_page_count: .zero 4 .section .bss.g_totle_write_sector,"aw",@nobits .align 2 .set .LANCHOR225,. + 0 .type g_totle_write_sector, %object .size g_totle_write_sector, 4 g_totle_write_sector: .zero 4 .section .bss.g_wr_page_num,"aw",@nobits .align 2 .set .LANCHOR72,. + 0 .type g_wr_page_num, %object .size g_wr_page_num, 4 g_wr_page_num: .zero 4 .section .bss.gc_discard_updated,"aw",@nobits .align 2 .set .LANCHOR253,. + 0 .type gc_discard_updated, %object .size gc_discard_updated, 4 gc_discard_updated: .zero 4 .section .bss.gc_ink_free_return_value,"aw",@nobits .align 1 .set .LANCHOR248,. + 0 .type gc_ink_free_return_value, %object .size gc_ink_free_return_value, 2 gc_ink_free_return_value: .zero 2 .section .bss.gpFlashSaveInfo,"aw",@nobits .align 3 .set .LANCHOR153,. + 0 .type gpFlashSaveInfo, %object .size gpFlashSaveInfo, 8 gpFlashSaveInfo: .zero 8 .section .bss.gpNandParaInfo,"aw",@nobits .align 3 .set .LANCHOR7,. + 0 .type gpNandParaInfo, %object .size gpNandParaInfo, 8 gpNandParaInfo: .zero 8 .section .bss.gpNandc,"aw",@nobits .align 3 .set .LANCHOR19,. + 0 .type gpNandc, %object .size gpNandc, 8 gpNandc: .zero 8 .section .bss.gpNandc1,"aw",@nobits .align 3 .type gpNandc1, %object .size gpNandc1, 8 gpNandc1: .zero 8 .section .bss.gpReadRetrial,"aw",@nobits .align 3 .set .LANCHOR148,. + 0 .type gpReadRetrial, %object .size gpReadRetrial, 8 gpReadRetrial: .zero 8 .section .bss.gp_ect_tbl_info,"aw",@nobits .align 3 .set .LANCHOR199,. + 0 .type gp_ect_tbl_info, %object .size gp_ect_tbl_info, 8 gp_ect_tbl_info: .zero 8 .section .bss.gp_flash_check_buf,"aw",@nobits .align 3 .type gp_flash_check_buf, %object .size gp_flash_check_buf, 262144 gp_flash_check_buf: .zero 262144 .section .bss.gp_gc_page_buf_info,"aw",@nobits .align 3 .set .LANCHOR106,. + 0 .type gp_gc_page_buf_info, %object .size gp_gc_page_buf_info, 8 gp_gc_page_buf_info: .zero 8 .section .bss.gp_last_act_superblock,"aw",@nobits .align 3 .set .LANCHOR252,. + 0 .type gp_last_act_superblock, %object .size gp_last_act_superblock, 8 gp_last_act_superblock: .zero 8 .section .bss.idb_buf,"aw",@nobits .align 3 .type idb_buf, %object .size idb_buf, 262144 idb_buf: .zero 262144 .section .bss.idb_flash_slc_mode,"aw",@nobits .align 2 .set .LANCHOR29,. + 0 .type idb_flash_slc_mode, %object .size idb_flash_slc_mode, 4 idb_flash_slc_mode: .zero 4 .section .bss.idb_need_write_back,"aw",@nobits .align 2 .set .LANCHOR159,. + 0 .type idb_need_write_back, %object .size idb_need_write_back, 4 idb_need_write_back: .zero 4 .section .bss.last_cache_match_count,"aw",@nobits .align 2 .set .LANCHOR257,. + 0 .type last_cache_match_count, %object .size last_cache_match_count, 4 last_cache_match_count: .zero 4 .section .bss.mlcPageToSlcPageTbl,"aw",@nobits .align 2 .set .LANCHOR123,. + 0 .type mlcPageToSlcPageTbl, %object .size mlcPageToSlcPageTbl, 2048 mlcPageToSlcPageTbl: .zero 2048 .section .bss.p_blk_mode_table,"aw",@nobits .align 3 .set .LANCHOR1,. + 0 .type p_blk_mode_table, %object .size p_blk_mode_table, 8 p_blk_mode_table: .zero 8 .section .bss.p_data_block_list_head,"aw",@nobits .align 3 .set .LANCHOR84,. + 0 .type p_data_block_list_head, %object .size p_data_block_list_head, 8 p_data_block_list_head: .zero 8 .section .bss.p_data_block_list_table,"aw",@nobits .align 3 .set .LANCHOR83,. + 0 .type p_data_block_list_table, %object .size p_data_block_list_table, 8 p_data_block_list_table: .zero 8 .section .bss.p_data_block_list_tail,"aw",@nobits .align 3 .set .LANCHOR86,. + 0 .type p_data_block_list_tail, %object .size p_data_block_list_tail, 8 p_data_block_list_tail: .zero 8 .section .bss.p_erase_count_table,"aw",@nobits .align 3 .set .LANCHOR80,. + 0 .type p_erase_count_table, %object .size p_erase_count_table, 8 p_erase_count_table: .zero 8 .section .bss.p_free_data_block_list_head,"aw",@nobits .align 3 .set .LANCHOR89,. + 0 .type p_free_data_block_list_head, %object .size p_free_data_block_list_head, 8 p_free_data_block_list_head: .zero 8 .section .bss.p_gc_blk_tbl,"aw",@nobits .align 3 .set .LANCHOR112,. + 0 .type p_gc_blk_tbl, %object .size p_gc_blk_tbl, 8 p_gc_blk_tbl: .zero 8 .section .bss.p_gc_data_buf,"aw",@nobits .align 3 .set .LANCHOR107,. + 0 .type p_gc_data_buf, %object .size p_gc_data_buf, 8 p_gc_data_buf: .zero 8 .section .bss.p_gc_page_info,"aw",@nobits .align 3 .set .LANCHOR114,. + 0 .type p_gc_page_info, %object .size p_gc_page_info, 8 p_gc_page_info: .zero 8 .section .bss.p_gc_spare_buf,"aw",@nobits .align 3 .set .LANCHOR108,. + 0 .type p_gc_spare_buf, %object .size p_gc_spare_buf, 8 p_gc_spare_buf: .zero 8 .section .bss.p_io_data_buf_0,"aw",@nobits .align 3 .set .LANCHOR193,. + 0 .type p_io_data_buf_0, %object .size p_io_data_buf_0, 8 p_io_data_buf_0: .zero 8 .section .bss.p_io_data_buf_1,"aw",@nobits .align 3 .set .LANCHOR194,. + 0 .type p_io_data_buf_1, %object .size p_io_data_buf_1, 8 p_io_data_buf_1: .zero 8 .section .bss.p_io_spare_buf,"aw",@nobits .align 3 .set .LANCHOR196,. + 0 .type p_io_spare_buf, %object .size p_io_spare_buf, 8 p_io_spare_buf: .zero 8 .section .bss.p_l2p_map_buf,"aw",@nobits .align 3 .set .LANCHOR129,. + 0 .type p_l2p_map_buf, %object .size p_l2p_map_buf, 8 p_l2p_map_buf: .zero 8 .section .bss.p_l2p_ram_map,"aw",@nobits .align 3 .set .LANCHOR98,. + 0 .type p_l2p_ram_map, %object .size p_l2p_ram_map, 8 p_l2p_ram_map: .zero 8 .section .bss.p_map_block_table,"aw",@nobits .align 3 .set .LANCHOR132,. + 0 .type p_map_block_table, %object .size p_map_block_table, 8 p_map_block_table: .zero 8 .section .bss.p_map_block_valid_page_count,"aw",@nobits .align 3 .set .LANCHOR128,. + 0 .type p_map_block_valid_page_count, %object .size p_map_block_valid_page_count, 8 p_map_block_valid_page_count: .zero 8 .section .bss.p_map_block_ver_table,"aw",@nobits .align 3 .set .LANCHOR133,. + 0 .type p_map_block_ver_table, %object .size p_map_block_ver_table, 8 p_map_block_ver_table: .zero 8 .section .bss.p_map_region_ppn_check_table,"aw",@nobits .align 3 .set .LANCHOR203,. + 0 .type p_map_region_ppn_check_table, %object .size p_map_region_ppn_check_table, 8 p_map_region_ppn_check_table: .zero 8 .section .bss.p_map_region_ppn_table,"aw",@nobits .align 3 .set .LANCHOR134,. + 0 .type p_map_region_ppn_table, %object .size p_map_region_ppn_table, 8 p_map_region_ppn_table: .zero 8 .section .bss.p_plane_order_table,"aw",@nobits .align 3 .set .LANCHOR47,. + 0 .type p_plane_order_table, %object .size p_plane_order_table, 32 p_plane_order_table: .zero 32 .section .bss.p_swl_mul_table,"aw",@nobits .align 3 .set .LANCHOR140,. + 0 .type p_swl_mul_table, %object .size p_swl_mul_table, 8 p_swl_mul_table: .zero 8 .section .bss.p_sys_data_buf,"aw",@nobits .align 3 .set .LANCHOR189,. + 0 .type p_sys_data_buf, %object .size p_sys_data_buf, 8 p_sys_data_buf: .zero 8 .section .bss.p_sys_data_buf_1,"aw",@nobits .align 3 .set .LANCHOR190,. + 0 .type p_sys_data_buf_1, %object .size p_sys_data_buf_1, 8 p_sys_data_buf_1: .zero 8 .section .bss.p_sys_spare_buf,"aw",@nobits .align 3 .set .LANCHOR195,. + 0 .type p_sys_spare_buf, %object .size p_sys_spare_buf, 8 p_sys_spare_buf: .zero 8 .section .bss.p_valid_page_count_table,"aw",@nobits .align 3 .set .LANCHOR85,. + 0 .type p_valid_page_count_table, %object .size p_valid_page_count_table, 8 p_valid_page_count_table: .zero 8 .section .bss.p_vendor_block_table,"aw",@nobits .align 3 .set .LANCHOR71,. + 0 .type p_vendor_block_table, %object .size p_vendor_block_table, 8 p_vendor_block_table: .zero 8 .section .bss.p_vendor_block_valid_page_count,"aw",@nobits .align 3 .set .LANCHOR200,. + 0 .type p_vendor_block_valid_page_count, %object .size p_vendor_block_valid_page_count, 8 p_vendor_block_valid_page_count: .zero 8 .section .bss.p_vendor_block_ver_table,"aw",@nobits .align 3 .set .LANCHOR201,. + 0 .type p_vendor_block_ver_table, %object .size p_vendor_block_ver_table, 8 p_vendor_block_ver_table: .zero 8 .section .bss.p_vendor_data_buf,"aw",@nobits .align 3 .set .LANCHOR191,. + 0 .type p_vendor_data_buf, %object .size p_vendor_data_buf, 8 p_vendor_data_buf: .zero 8 .section .bss.p_vendor_region_ppn_table,"aw",@nobits .align 3 .set .LANCHOR202,. + 0 .type p_vendor_region_ppn_table, %object .size p_vendor_region_ppn_table, 8 p_vendor_region_ppn_table: .zero 8 .section .bss.p_wr_io_data_buf,"aw",@nobits .align 3 .set .LANCHOR192,. + 0 .type p_wr_io_data_buf, %object .size p_wr_io_data_buf, 8 p_wr_io_data_buf: .zero 8 .section .bss.p_wr_io_spare_buf,"aw",@nobits .align 3 .set .LANCHOR197,. + 0 .type p_wr_io_spare_buf, %object .size p_wr_io_spare_buf, 8 p_wr_io_spare_buf: .zero 8 .section .bss.read_retry_cur_offset,"aw",@nobits .align 3 .set .LANCHOR21,. + 0 .type read_retry_cur_offset, %object .size read_retry_cur_offset, 4 read_retry_cur_offset: .zero 4 .section .bss.req_erase,"aw",@nobits .align 3 .set .LANCHOR79,. + 0 .type req_erase, %object .size req_erase, 8 req_erase: .zero 8 .section .bss.req_gc,"aw",@nobits .align 3 .set .LANCHOR109,. + 0 .type req_gc, %object .size req_gc, 8 req_gc: .zero 8 .section .bss.req_gc_dst,"aw",@nobits .align 3 .set .LANCHOR187,. + 0 .type req_gc_dst, %object .size req_gc_dst, 8 req_gc_dst: .zero 8 .section .bss.req_prgm,"aw",@nobits .align 3 .set .LANCHOR188,. + 0 .type req_prgm, %object .size req_prgm, 8 req_prgm: .zero 8 .section .bss.req_read,"aw",@nobits .align 3 .set .LANCHOR186,. + 0 .type req_read, %object .size req_read, 8 req_read: .zero 8 .section .bss.req_sys,"aw",@nobits .align 3 .set .LANCHOR211,. + 0 .type req_sys, %object .size req_sys, 56 req_sys: .zero 56 .section .bss.req_wr_io,"aw",@nobits .align 3 .set .LANCHOR73,. + 0 .type req_wr_io, %object .size req_wr_io, 8 req_wr_io: .zero 8 .section .bss.slcPageToMlcPageTbl,"aw",@nobits .align 2 .set .LANCHOR17,. + 0 .type slcPageToMlcPageTbl, %object .size slcPageToMlcPageTbl, 1024 slcPageToMlcPageTbl: .zero 1024 .section .data.FtlMallocOffset,"aw",@progbits .align 2 .type FtlMallocOffset, %object .size FtlMallocOffset, 4 FtlMallocOffset: .word 64 .section .data.LastWritenPbaAddr,"aw",@progbits .align 2 .type LastWritenPbaAddr, %object .size LastWritenPbaAddr, 4 LastWritenPbaAddr: .word -1 .section .data.NandFlashParaTbl,"aw",@progbits .align 3 .set .LANCHOR145,. + 0 .type NandFlashParaTbl, %object .size NandFlashParaTbl, 2752 NandFlashParaTbl: .byte 6 .byte 44 .byte 100 .byte 68 .byte 75 .byte -87 .byte 0 .byte 4 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte 68 .byte 68 .byte 75 .byte -87 .byte 0 .byte 4 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 1064 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte 104 .byte 4 .byte 74 .byte -87 .byte 0 .byte 4 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte -120 .byte 4 .byte 75 .byte -87 .byte 0 .byte 4 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -88 .byte 5 .byte -53 .byte -87 .byte 0 .byte 4 .byte 2 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte 104 .byte 4 .byte 70 .byte -119 .byte 0 .byte 4 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte 72 .byte 4 .byte 74 .byte -91 .byte 0 .byte 4 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 1024 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -124 .byte 100 .byte 60 .byte -91 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 2 .hword 1024 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte 100 .byte 84 .byte -87 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 2 .hword 1024 .hword 479 .byte 4 .byte 18 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -41 .byte -108 .byte 62 .byte -124 .byte 0 .byte 4 .byte 1 .byte 8 .hword 128 .byte 2 .byte 2 .hword 4096 .hword 279 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte 72 .byte 4 .byte 70 .byte -123 .byte 0 .byte 4 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 1024 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -120 .byte 5 .byte -58 .byte -119 .byte 0 .byte 4 .byte 2 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte -120 .byte 36 .byte 75 .byte -87 .byte 0 .byte 4 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 287 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte 104 .byte 0 .byte 39 .byte -87 .byte 0 .byte 4 .byte 1 .byte 16 .hword 128 .byte 1 .byte 2 .hword 2048 .hword 287 .byte 0 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte 100 .byte 100 .byte 86 .byte -91 .byte 0 .byte 4 .byte 1 .byte 24 .hword 512 .byte 2 .byte 2 .hword 700 .hword 479 .byte 4 .byte 18 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -124 .byte -59 .byte 75 .byte -87 .byte 0 .byte 4 .byte 2 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -43 .byte -47 .byte -90 .byte 104 .byte 0 .byte 4 .byte 2 .byte 8 .hword 64 .byte 1 .byte 2 .hword 2048 .hword 279 .byte 0 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -36 .byte -112 .byte -90 .byte 84 .byte 0 .byte 4 .byte 1 .byte 8 .hword 64 .byte 1 .byte 2 .hword 1024 .hword 279 .byte 0 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte 100 .byte 100 .byte 84 .byte -92 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 1024 .hword 479 .byte 4 .byte 18 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte 68 .byte 50 .byte -86 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 2184 .hword 1479 .byte 5 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 1 .byte 0 .zero 4 .byte 5 .byte 44 .byte 100 .byte 68 .byte 50 .byte -91 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 1048 .hword 1479 .byte 5 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 1 .byte 0 .zero 4 .byte 5 .byte 44 .byte 100 .byte 100 .byte 60 .byte -91 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 1044 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte 68 .byte 50 .byte -86 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 2184 .hword 1479 .byte 5 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte 68 .byte 52 .byte -86 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 2184 .hword 1479 .byte 5 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte -60 .byte 52 .byte -86 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 2184 .hword 1479 .byte 5 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 1 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte 68 .byte 52 .byte -92 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 2184 .hword 1479 .byte 5 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 1 .byte 0 .zero 4 .byte 5 .byte 44 .byte -124 .byte 100 .byte 60 .byte -87 .byte 0 .byte 4 .byte 1 .byte 32 .hword 512 .byte 2 .byte 2 .hword 1024 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 44 .byte -92 .byte 100 .byte 50 .byte -86 .byte 4 .byte 4 .byte 1 .byte 32 .hword 1024 .byte 2 .byte 1 .hword 2192 .hword 1479 .byte 10 .byte 19 .byte 60 .byte 32 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .zero 4 .byte 6 .byte -83 .byte -34 .byte -108 .byte -46 .byte 4 .byte 67 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 473 .byte 1 .byte 1 .byte 24 .byte 32 .byte 4 .byte 0 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -41 .byte -108 .byte -38 .byte 116 .byte -61 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 1024 .hword 473 .byte 1 .byte 2 .byte 40 .byte 32 .byte 4 .byte 0 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -41 .byte -108 .byte -111 .byte 96 .byte 68 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 1046 .hword 473 .byte 1 .byte 3 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -34 .byte -108 .byte -38 .byte 116 .byte -60 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2090 .hword 473 .byte 1 .byte 4 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -34 .byte -108 .byte -21 .byte 116 .byte 68 .byte 2 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1066 .hword 473 .byte 1 .byte 7 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -43 .byte -108 .byte -38 .byte 116 .byte -60 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 530 .hword 473 .byte 1 .byte 3 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -41 .byte -108 .byte -102 .byte 116 .byte 66 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 1024 .hword 281 .byte 1 .byte 0 .byte 24 .byte 32 .byte 4 .byte 0 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -34 .byte 20 .byte -89 .byte 66 .byte 74 .byte 2 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1060 .hword 473 .byte 2 .byte 5 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -41 .byte 20 .byte -98 .byte 52 .byte 74 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 1056 .hword 473 .byte 2 .byte 5 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -34 .byte -108 .byte -89 .byte 66 .byte 72 .byte 2 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1060 .hword 473 .byte 2 .byte 5 .byte 40 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -34 .byte 20 .byte -85 .byte 66 .byte 74 .byte 2 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1056 .hword 473 .byte 2 .byte 6 .byte 40 .byte 32 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte 58 .byte 20 .byte -85 .byte 66 .byte 74 .byte 2 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 2092 .hword 473 .byte 2 .byte 5 .byte 40 .byte 32 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte -43 .byte -108 .byte -102 .byte 116 .byte 66 .byte 2 .byte 1 .byte 16 .hword 256 .byte 2 .byte 1 .hword 1024 .hword 273 .byte 1 .byte 0 .byte 24 .byte 32 .byte 4 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -83 .byte 58 .byte 20 .byte 3 .byte 8 .byte 80 .byte 2 .byte 1 .byte 32 .hword 388 .byte 2 .byte 2 .hword 1362 .hword 473 .byte 9 .byte 8 .byte 40 .byte 32 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte 100 .byte 68 .byte 75 .byte -87 .byte 0 .byte 7 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte -120 .byte 36 .byte 75 .byte -87 .byte -124 .byte 7 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 479 .byte 3 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte -120 .byte 36 .byte 75 .byte -87 .byte 0 .byte 7 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 279 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte 104 .byte 36 .byte 74 .byte -87 .byte 0 .byte 7 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 279 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte 104 .byte 4 .byte 74 .byte -87 .byte 0 .byte 7 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 279 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte -41 .byte -108 .byte 62 .byte -124 .byte 0 .byte 7 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 279 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte 104 .byte 4 .byte 70 .byte -87 .byte 0 .byte 7 .byte 1 .byte 8 .hword 256 .byte 2 .byte 2 .hword 2048 .hword 279 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte -119 .byte 100 .byte 100 .byte 60 .byte -95 .byte 0 .byte 7 .byte 1 .byte 32 .hword 512 .byte 2 .byte 1 .hword 1024 .hword 455 .byte 4 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte -119 .byte -124 .byte 100 .byte 60 .byte -91 .byte 0 .byte 7 .byte 1 .byte 32 .hword 512 .byte 2 .byte 2 .hword 1024 .hword 455 .byte 4 .byte 17 .byte 40 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -119 .byte -120 .byte 36 .byte 59 .byte -87 .byte 0 .byte 7 .byte 1 .byte 16 .hword 192 .byte 2 .byte 2 .hword 2048 .hword 279 .byte 12 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -41 .byte -124 .byte -109 .byte 114 .byte 87 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 1060 .hword 1473 .byte 2 .byte 33 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -34 .byte -124 .byte -109 .byte 114 .byte 87 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 2092 .hword 1473 .byte 2 .byte 33 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte 58 .byte -123 .byte -109 .byte 118 .byte 87 .byte 1 .byte 2 .byte 32 .hword 256 .byte 2 .byte 1 .hword 2092 .hword 1505 .byte 2 .byte 33 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -43 .byte -124 .byte 50 .byte 114 .byte 86 .byte 1 .byte 1 .byte 16 .hword 128 .byte 2 .byte 1 .hword 2056 .hword 1473 .byte 2 .byte 33 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -41 .byte -108 .byte 50 .byte 118 .byte 86 .byte 1 .byte 1 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2058 .hword 1489 .byte 2 .byte 33 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -34 .byte -108 .byte -126 .byte 118 .byte 86 .byte 1 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2062 .hword 1489 .byte 1 .byte 33 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -34 .byte -108 .byte -109 .byte 118 .byte 80 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1066 .hword 1497 .byte 2 .byte 34 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte 58 .byte -107 .byte -109 .byte 122 .byte 80 .byte 1 .byte 2 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1066 .hword 1497 .byte 2 .byte 34 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -41 .byte -108 .byte 50 .byte 118 .byte 85 .byte 1 .byte 1 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2050 .hword 401 .byte 2 .byte 0 .byte 24 .byte 32 .byte 1 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -34 .byte -108 .byte -109 .byte 118 .byte 87 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1058 .hword 1497 .byte 2 .byte 33 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -41 .byte -124 .byte -109 .byte 114 .byte 80 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 1060 .hword 1473 .byte 2 .byte 34 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -34 .byte -108 .byte -109 .byte 118 .byte 81 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1074 .hword 1497 .byte 2 .byte 35 .byte 40 .byte 32 .byte 3 .byte 1 .byte 4 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte 58 .byte -108 .byte -109 .byte 118 .byte 81 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 2106 .hword 1497 .byte 2 .byte 35 .byte 40 .byte 32 .byte 3 .byte 1 .byte 4 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -41 .byte -124 .byte -109 .byte 114 .byte 81 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 1056 .hword 1497 .byte 2 .byte 35 .byte 40 .byte 32 .byte 3 .byte 1 .byte 4 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -104 .byte -34 .byte -108 .byte -109 .byte 118 .byte -47 .byte 1 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1074 .hword 1497 .byte 2 .byte 35 .byte 40 .byte 32 .byte 3 .byte 1 .byte 4 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -108 .byte -109 .byte 118 .byte 87 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1058 .hword 1497 .byte 2 .byte 66 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -41 .byte -124 .byte -109 .byte 114 .byte 87 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 1060 .hword 1473 .byte 2 .byte 66 .byte 40 .byte 32 .byte 2 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -92 .byte -126 .byte 118 .byte 86 .byte 8 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2082 .hword 473 .byte 1 .byte 65 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -108 .byte -109 .byte 118 .byte 80 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1066 .hword 1497 .byte 2 .byte 67 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -41 .byte -124 .byte -109 .byte 114 .byte 80 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 1060 .hword 1473 .byte 2 .byte 67 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -92 .byte -126 .byte 118 .byte -41 .byte 8 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2090 .hword 1241 .byte 1 .byte 66 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -124 .byte -109 .byte 114 .byte 87 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 1 .hword 2092 .hword 1473 .byte 2 .byte 66 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte 58 .byte -108 .byte -109 .byte 118 .byte 81 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 2106 .hword 473 .byte 2 .byte 68 .byte 40 .byte 32 .byte 3 .byte 1 .byte 4 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -108 .byte -109 .byte 118 .byte 81 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1074 .hword 473 .byte 2 .byte 68 .byte 40 .byte 32 .byte 3 .byte 1 .byte 4 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte 58 .byte -92 .byte -109 .byte 122 .byte 80 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 2138 .hword 1497 .byte 2 .byte 0 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -108 .byte -126 .byte 118 .byte 86 .byte 8 .byte 1 .byte 16 .hword 256 .byte 2 .byte 2 .hword 2062 .hword 473 .byte 1 .byte 0 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte 69 .byte -34 .byte -108 .byte -109 .byte 118 .byte -41 .byte 8 .byte 1 .byte 32 .hword 256 .byte 2 .byte 2 .hword 1058 .hword 1497 .byte 2 .byte 66 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .byte 5 .byte -20 .byte -41 .byte -108 .byte 126 .byte 100 .byte 68 .byte 0 .byte 1 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2048 .hword 473 .byte 2 .byte 49 .byte 60 .byte 36 .byte 3 .byte 0 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -20 .byte -34 .byte -43 .byte 126 .byte 104 .byte 68 .byte 0 .byte 2 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2048 .hword 505 .byte 2 .byte 49 .byte 60 .byte 36 .byte 3 .byte 0 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -20 .byte -41 .byte -108 .byte 122 .byte 84 .byte 67 .byte 0 .byte 1 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2076 .hword 409 .byte 2 .byte 0 .byte 40 .byte 36 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -20 .byte -34 .byte -43 .byte 122 .byte 88 .byte 67 .byte 0 .byte 2 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2076 .hword 441 .byte 2 .byte 0 .byte 40 .byte 36 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -20 .byte -43 .byte -108 .byte 118 .byte 84 .byte 67 .byte 0 .byte 1 .byte 16 .hword 128 .byte 2 .byte 2 .hword 1038 .hword 281 .byte 2 .byte 0 .byte 24 .byte 36 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -20 .byte -41 .byte 20 .byte 118 .byte 84 .byte -62 .byte 0 .byte 1 .byte 16 .hword 128 .byte 2 .byte 2 .hword 2076 .hword 1169 .byte 2 .byte 0 .byte 24 .byte 40 .byte 3 .byte 1 .byte 3 .byte 0 .byte 0 .byte 0 .zero 4 .byte 6 .byte -20 .byte -34 .byte -108 .byte -61 .byte -92 .byte -54 .byte 0 .byte 1 .byte 32 .hword 792 .byte 2 .byte 1 .hword 688 .hword 1217 .byte 11 .byte 50 .byte 40 .byte 32 .byte 3 .byte 1 .byte 1 .byte 0 .byte 1 .byte 0 .zero 4 .section .data.NandOptPara,"aw",@progbits .align 3 .set .LANCHOR146,. + 0 .type NandOptPara, %object .size NandOptPara, 128 NandOptPara: .byte 1 .byte 0 .byte 49 .byte 63 .byte 0 .byte 49 .byte -128 .byte 21 .byte 0 .byte 50 .byte 17 .byte -128 .byte 112 .byte 120 .byte 120 .byte 3 .byte 1 .byte 0 .zero 14 .byte 2 .byte 0 .byte 49 .byte 63 .byte 0 .byte 49 .byte -128 .byte 21 .byte 0 .byte 0 .byte 17 .byte -127 .byte 112 .byte -15 .byte -14 .byte 0 .byte 0 .byte 0 .zero 14 .byte 3 .byte 0 .byte 49 .byte 63 .byte 0 .byte 49 .byte -128 .byte 21 .byte 96 .byte 96 .byte 17 .byte -127 .byte 112 .byte -15 .byte -14 .byte 0 .byte 0 .byte 0 .zero 14 .byte 4 .byte 0 .byte 49 .byte 63 .byte 0 .byte 49 .byte -128 .byte 21 .byte 96 .byte 96 .byte 17 .byte -127 .byte 112 .byte 112 .byte 112 .byte 0 .byte 0 .byte 0 .zero 14 .section .data.SamsungRefValue,"aw",@progbits .align 3 .set .LANCHOR14,. + 0 .type SamsungRefValue, %object .size SamsungRefValue, 64 SamsungRefValue: .byte -89 .byte -92 .byte -91 .byte -90 .byte 0 .byte 0 .byte 0 .byte 0 .byte 5 .byte 10 .byte 0 .byte 0 .byte 40 .byte 0 .byte -20 .byte -40 .byte -19 .byte -11 .byte -19 .byte -26 .byte 10 .byte 15 .byte 5 .byte 0 .byte 15 .byte 10 .byte -5 .byte -20 .byte -24 .byte -17 .byte -24 .byte -36 .byte -15 .byte -5 .byte -2 .byte -16 .byte 10 .byte 0 .byte -5 .byte -20 .byte -48 .byte -30 .byte -48 .byte -62 .byte 20 .byte 15 .byte -5 .byte -20 .byte -24 .byte -5 .byte -24 .byte -36 .byte 30 .byte 20 .byte -5 .byte -20 .byte -5 .byte -1 .byte -5 .byte -8 .byte 7 .byte 12 .byte 2 .byte 0 .section .data.Toshiba15RefValue,"aw",@progbits .align 3 .set .LANCHOR9,. + 0 .type Toshiba15RefValue, %object .size Toshiba15RefValue, 95 Toshiba15RefValue: .byte 4 .byte 5 .byte 6 .byte 7 .byte 13 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 2 .byte 4 .byte 2 .byte 0 .byte 0 .byte 8 .byte 8 .byte 0 .byte 0 .byte 0 .byte 124 .byte 0 .byte 124 .byte 124 .byte 0 .byte 122 .byte 0 .byte 122 .byte 122 .byte 0 .byte 11 .byte 126 .byte 118 .byte 116 .byte 0 .byte 120 .byte 2 .byte 120 .byte 122 .byte 0 .byte 126 .byte 4 .byte 126 .byte 122 .byte 0 .byte 16 .byte 118 .byte 114 .byte 112 .byte 0 .byte 118 .byte 4 .byte 118 .byte 120 .byte 0 .byte 4 .byte 4 .byte 4 .byte 118 .byte 0 .byte 2 .byte 0 .byte 126 .byte 124 .byte 0 .byte 6 .byte 10 .byte 6 .byte 2 .byte 0 .byte 116 .byte 124 .byte 116 .byte 118 .byte 0 .byte 4 .byte 4 .byte 124 .byte 126 .byte 0 .byte 0 .byte 124 .byte 120 .byte 120 .byte 0 .byte 124 .byte 118 .byte 116 .byte 114 .byte 0 .section .data.ToshibaA19RefValue,"aw",@progbits .align 3 .set .LANCHOR10,. + 0 .type ToshibaA19RefValue, %object .size ToshibaA19RefValue, 45 ToshibaA19RefValue: .byte 4 .byte 5 .byte 6 .byte 7 .byte 13 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 4 .byte 4 .byte 124 .byte 126 .byte 0 .byte 0 .byte 124 .byte 120 .byte 120 .byte 0 .byte 124 .byte 118 .byte 116 .byte 114 .byte 0 .byte 8 .byte 8 .byte 0 .byte 0 .byte 0 .byte 11 .byte 126 .byte 118 .byte 116 .byte 0 .byte 16 .byte 118 .byte 114 .byte 112 .byte 0 .byte 2 .byte 0 .byte 126 .byte 124 .byte 0 .section .data.ToshibaRefValue,"aw",@progbits .align 3 .set .LANCHOR12,. + 0 .type ToshibaRefValue, %object .size ToshibaRefValue, 8 ToshibaRefValue: .byte 0 .byte 4 .byte 124 .byte 120 .byte 116 .byte 8 .byte 12 .byte 112 .section .data.ftl_gc_temp_block_bops_scan_page_addr,"aw",@progbits .align 1 .set .LANCHOR245,. + 0 .type ftl_gc_temp_block_bops_scan_page_addr, %object .size ftl_gc_temp_block_bops_scan_page_addr, 2 ftl_gc_temp_block_bops_scan_page_addr: .hword -1 .section .data.gFtlInitStatus,"aw",@progbits .align 2 .set .LANCHOR247,. + 0 .type gFtlInitStatus, %object .size gFtlInitStatus, 4 gFtlInitStatus: .word -1 .section .data.gNandParaInfo,"aw",@progbits .align 3 .set .LANCHOR31,. + 0 .type gNandParaInfo, %object .size gNandParaInfo, 32 gNandParaInfo: .byte 0 .byte 0 .zero 5 .byte 0 .byte 1 .byte 8 .hword 128 .byte 2 .byte 1 .hword 2048 .hword 0 .byte 1 .byte 0 .byte 24 .byte 32 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .section .data.gSlcNandParaInfo,"aw",@progbits .align 3 .set .LANCHOR209,. + 0 .type gSlcNandParaInfo, %object .size gSlcNandParaInfo, 32 gSlcNandParaInfo: .byte 2 .byte -104 .byte -15 .byte 0 .byte 0 .byte 0 .byte 0 .byte 1 .byte 1 .byte 4 .hword 64 .byte 1 .byte 1 .hword 1024 .hword 256 .byte 0 .byte 0 .byte 16 .byte 40 .byte 1 .byte 0 .byte 1 .byte 0 .byte 0 .byte 0 .zero 4 .section .data.power_up_flag,"aw",@progbits .align 2 .type power_up_flag, %object .size power_up_flag, 4 power_up_flag: .word 1 .section .data.random_seed,"aw",@progbits .align 3 .set .LANCHOR5,. + 0 .type random_seed, %object .size random_seed, 256 random_seed: .hword 22378 .hword 1512 .hword 25245 .hword 17827 .hword 25756 .hword 19440 .hword 9026 .hword 10030 .hword 29528 .hword 20467 .hword 29676 .hword 24432 .hword 31328 .hword 6872 .hword 13426 .hword 13842 .hword 8783 .hword 1108 .hword 782 .hword 28837 .hword 30729 .hword 9505 .hword 18676 .hword 23085 .hword 18730 .hword 1085 .hword 32609 .hword 14697 .hword 20858 .hword 15170 .hword 30365 .hword 1607 .hword 32298 .hword 4995 .hword 18905 .hword 1976 .hword 9592 .hword 20204 .hword 17443 .hword 13615 .hword 23330 .hword 29369 .hword 13947 .hword 9398 .hword 32398 .hword 8984 .hword 27600 .hword 21785 .hword 6019 .hword 6311 .hword 31598 .hword 30210 .hword 19327 .hword 13896 .hword 11347 .hword 27545 .hword 3107 .hword 26575 .hword 32270 .hword 19852 .hword 20601 .hword 8349 .hword 9290 .hword 29819 .hword 13579 .hword 3661 .hword 28676 .hword 27331 .hword 32574 .hword 8693 .hword 31253 .hword 9081 .hword 5399 .hword 6842 .hword 20087 .hword 5537 .hword 1274 .hword 11617 .hword 9530 .hword 4866 .hword 8035 .hword 23219 .hword 1178 .hword 23272 .hword 7383 .hword 18944 .hword 12488 .hword 12871 .hword 29340 .hword 20532 .hword 11022 .hword 22514 .hword 228 .hword 22363 .hword 24978 .hword 14584 .hword 12138 .hword 3092 .hword 17916 .hword 16863 .hword 14554 .hword 31457 .hword 29474 .hword 25311 .hword 24121 .hword 3684 .hword 28037 .hword 22865 .hword 22839 .hword 25217 .hword 13217 .hword 27186 .hword 14938 .hword 11180 .hword 29754 .hword 24180 .hword 15150 .hword 32455 .hword 20434 .hword 23848 .hword 29983 .hword 16120 .hword 14769 .hword 20041 .hword 29803 .hword 28406 .hword 17598 .hword 28087 .section .data.refValueDefault,"aw",@progbits .align 3 .set .LANCHOR204,. + 0 .type refValueDefault, %object .size refValueDefault, 28 refValueDefault: .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 6 .byte 10 .byte 6 .byte 0 .byte -3 .byte -7 .byte -8 .byte 0 .byte -6 .byte -13 .byte -15 .byte 0 .byte -11 .byte -20 .byte -23 .byte 0 .byte 0 .byte -26 .byte -30 .byte 0 .byte 0 .byte -32 .byte -37 .section .rodata.FlashDdrTunningRead.str1.1,"aMS",@progbits,1 .LC9: .string "sdr read ok %x ecc=%d\n" .LC10: .string "sync para %d\n" .LC11: .string "TOG mode Read error %x %x\n" .section .rodata.FlashEraseSLc2KBlocks.str1.1,"aMS",@progbits,1 .LC1: .string "FlashEraseBlocks pageAddr error %x\n" .section .rodata.FlashInit.str1.1,"aMS",@progbits,1 .LC24: .string "No.%d FLASH ID:%x %x %x %x %x %x\n" .LC25: .string "FlashLoadPhyInfo fail %x!!\n" .section .rodata.FlashProgSlc2KPages.str1.1,"aMS",@progbits,1 .LC30: .string "prog error: = %x\n" .LC31: .string "prog read error: = %x\n" .LC32: .string "prog read REFRESH: = %x\n" .LC33: .string "prog read s error: = %x %x %x\n" .LC34: .string "prog read d error: = %x %x %x\n" .section .rodata.FlashReadFacBbtData.str1.1,"aMS",@progbits,1 .LC59: .string "BBT:" .section .rodata.FlashReadIdbDataRaw.str1.1,"aMS",@progbits,1 .LC15: .string "ECC:%d\n" .section .rodata.FlashReadPage.str1.1,"aMS",@progbits,1 .LC12: .string "read retry status %x %x %x\n" .section .rodata.FlashReadPages.str1.1,"aMS",@progbits,1 .LC29: .string "ReadRetry pageadd=%x ecc=%x err=%x\n" .section .rodata.FlashReadSlc2KPages.str1.1,"aMS",@progbits,1 .LC26: .string "Read pageadd=%x ecc=%x err=%x\n" .LC27: .string "data:" .LC28: .string "spare:" .section .rodata.FtlBbmMapBadBlock.str1.1,"aMS",@progbits,1 .LC2: .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" .section .rodata.FtlBbmTblFlush.str1.1,"aMS",@progbits,1 .LC35: .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" .LC36: .string "FtlBbmTblFlush error:%x\n" .LC37: .string "FtlBbmTblFlush error = %x error count = %d\n" .section .rodata.FtlCacheWriteBack.str1.1,"aMS",@progbits,1 .LC76: .string "Ftlwrite decrement_vpc_count %x = %d\n" .section .rodata.FtlCheckVpc.str1.1,"aMS",@progbits,1 .LC63: .string "FtlCheckVpc2 %x = %x %x\n" .LC64: .string "free blk vpc error %x = %x %x\n" .LC65: .string "error_flag %x\n" .section .rodata.FtlDumpBlockInfo.str1.1,"aMS",@progbits,1 .LC48: .string "...%s enter...\n" .LC49: .string "superBlkID = %x vpc=%x\n" .LC50: .string "flashmode = %x pagenum = %x %x\n" .LC51: .string "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" .section .rodata.FtlDumpSysBlock.str1.1,"aMS",@progbits,1 .LC84: .string "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\n" .LC85: .string ":" .section .rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",@progbits,1 .LC3: .string "FtlFreeSysBlkQueueOut free count = %d\n" .LC4: .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" .section .rodata.FtlGcFreeTempBlock.str1.1,"aMS",@progbits,1 .LC74: .string "GC des block %x done\n" .section .rodata.FtlGcScanTempBlk.str1.1,"aMS",@progbits,1 .LC72: .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" .LC73: .string "FtlGcScanTempBlkError ID %x %x!!!!!!!\n" .section .rodata.FtlInit.str1.1,"aMS",@progbits,1 .LC77: .string "FTL version: 5.0.63 20200923" .LC78: .string "...%s: no bad block mapping table, format device\n" .LC79: .string "...%s FtlSysBlkInit error ,format device!\n" .section .rodata.FtlLoadEctTbl.str1.1,"aMS",@progbits,1 .LC45: .string "no ect" .section .rodata.FtlLoadSysInfo.str1.1,"aMS",@progbits,1 .LC47: .string "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\n" .section .rodata.FtlLowFormat.str1.1,"aMS",@progbits,1 .LC75: .string "too many bad block = %d %d\n" .section .rodata.FtlMapWritePage.str1.1,"aMS",@progbits,1 .LC42: .string "FtlMapWritePage error = %x\n" .LC43: .string "FtlMapWritePage error = %x error count = %d\n" .section .rodata.FtlRecoverySuperblock.str1.1,"aMS",@progbits,1 .LC69: .string "RSB refresh addr %x\n" .LC70: .string "spuer block %x vpn is 0\n " .LC71: .string "g_recovery_ppa %x ver %x\n " .section .rodata.FtlScanAllBlock.str1.1,"aMS",@progbits,1 .LC52: .string "blk = %x vpc=%x mode = %x\n" .LC53: .string "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" .LC54: .string "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\n" .section .rodata.FtlVendorPartRead.str1.1,"aMS",@progbits,1 .LC44: .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" .section .rodata.FtlVpcTblFlush.str1.1,"aMS",@progbits,1 .LC40: .string "FtlVpcTblFlush error = %x error count = %d\n" .section .rodata.FtlWrite.str1.1,"aMS",@progbits,1 .LC83: .string "FtlWrite: lpa error:%x %x\n" .section .rodata.Ftl_load_ext_data.str1.1,"aMS",@progbits,1 .LC46: .string "slc mode" .section .rodata.Ftlscanalldata.str1.1,"aMS",@progbits,1 .LC66: .string "Ftlscanalldata = %x\n" .LC67: .string "scan lpa = %x ppa= %x\n" .LC68: .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" .section .rodata.HynixGetReadRetryDefault.str1.1,"aMS",@progbits,1 .LC22: .string "otp error! %d" .LC23: .string "rr" .section .rodata.INSERT_DATA_LIST.str1.1,"aMS",@progbits,1 .LC5: .string "\n!!!!! error @ func:%s - line:%d\n" .LC6: .string "!!!!! FTL sys Error !!!!!" .LC7: .string "%s\n" .section .rodata.MicronReadRetrial.str1.1,"aMS",@progbits,1 .LC13: .string "micron RR %d row=%x,count %d,status=%d\n" .section .rodata.__func__.10027,"a",@progbits .align 3 .set .LANCHOR96,. + 0 .type __func__.10027, %object .size __func__.10027, 22 __func__.10027: .string "List_update_data_list" .section .rodata.__func__.10034,"a",@progbits .align 3 .set .LANCHOR237,. + 0 .type __func__.10034, %object .size __func__.10034, 20 __func__.10034: .string "ftl_load_l2p_region" .section .rodata.__func__.10065,"a",@progbits .align 3 .set .LANCHOR97,. + 0 .type __func__.10065, %object .size __func__.10065, 26 __func__.10065: .string "ftl_map_blk_alloc_new_blk" .section .rodata.__func__.10075,"a",@progbits .align 3 .set .LANCHOR221,. + 0 .type __func__.10075, %object .size __func__.10075, 15 __func__.10075: .string "ftl_map_blk_gc" .section .rodata.__func__.10088,"a",@progbits .align 3 .set .LANCHOR222,. + 0 .type __func__.10088, %object .size __func__.10088, 31 __func__.10088: .string "Ftl_write_map_blk_to_last_page" .section .rodata.__func__.10101,"a",@progbits .align 3 .set .LANCHOR223,. + 0 .type __func__.10101, %object .size __func__.10101, 16 __func__.10101: .string "FtlMapWritePage" .section .rodata.__func__.10121,"a",@progbits .align 3 .set .LANCHOR100,. + 0 .type __func__.10121, %object .size __func__.10121, 22 __func__.10121: .string "select_l2p_ram_region" .section .rodata.__func__.10137,"a",@progbits .align 3 .set .LANCHOR236,. + 0 .type __func__.10137, %object .size __func__.10137, 9 __func__.10137: .string "log2phys" .section .rodata.__func__.10199,"a",@progbits .align 3 .set .LANCHOR219,. + 0 .type __func__.10199, %object .size __func__.10199, 15 __func__.10199: .string "FtlVpcTblFlush" .section .rodata.__func__.10218,"a",@progbits .align 3 .set .LANCHOR229,. + 0 .type __func__.10218, %object .size __func__.10218, 14 __func__.10218: .string "FtlScanSysBlk" .section .rodata.__func__.10273,"a",@progbits .align 3 .set .LANCHOR230,. + 0 .type __func__.10273, %object .size __func__.10273, 15 __func__.10273: .string "FtlLoadSysInfo" .section .rodata.__func__.10284,"a",@progbits .align 3 .set .LANCHOR238,. + 0 .type __func__.10284, %object .size __func__.10284, 12 __func__.10284: .string "FtlCheckVpc" .section .rodata.__func__.10316,"a",@progbits .align 3 .set .LANCHOR233,. + 0 .type __func__.10316, %object .size __func__.10316, 17 __func__.10316: .string "FtlDumpBlockInfo" .section .rodata.__func__.10335,"a",@progbits .align 3 .set .LANCHOR234,. + 0 .type __func__.10335, %object .size __func__.10335, 16 __func__.10335: .string "FtlScanAllBlock" .section .rodata.__func__.10440,"a",@progbits .align 3 .set .LANCHOR239,. + 0 .type __func__.10440, %object .size __func__.10440, 16 __func__.10440: .string "FtlReUsePrevPpa" .section .rodata.__func__.10473,"a",@progbits .align 3 .set .LANCHOR240,. + 0 .type __func__.10473, %object .size __func__.10473, 22 __func__.10473: .string "FtlRecoverySuperblock" .section .rodata.__func__.10527,"a",@progbits .align 3 .set .LANCHOR103,. + 0 .type __func__.10527, %object .size __func__.10527, 16 __func__.10527: .string "make_superblock" .section .rodata.__func__.10547,"a",@progbits .align 3 .set .LANCHOR143,. + 0 .type __func__.10547, %object .size __func__.10547, 18 __func__.10547: .string "SupperBlkListInit" .section .rodata.__func__.10593,"a",@progbits .align 3 .set .LANCHOR235,. + 0 .type __func__.10593, %object .size __func__.10593, 17 __func__.10593: .string "ftl_scan_all_ppa" .section .rodata.__func__.10638,"a",@progbits .align 3 .set .LANCHOR212,. + 0 .type __func__.10638, %object .size __func__.10638, 25 __func__.10638: .string "allocate_data_superblock" .section .rodata.__func__.10652,"a",@progbits .align 3 .set .LANCHOR228,. + 0 .type __func__.10652, %object .size __func__.10652, 29 __func__.10652: .string "allocate_new_data_superblock" .section .rodata.__func__.10658,"a",@progbits .align 3 .set .LANCHOR217,. + 0 .type __func__.10658, %object .size __func__.10658, 19 __func__.10658: .string "get_new_active_ppa" .section .rodata.__func__.10669,"a",@progbits .align 3 .set .LANCHOR215,. + 0 .type __func__.10669, %object .size __func__.10669, 16 __func__.10669: .string "update_vpc_list" .section .rodata.__func__.10674,"a",@progbits .align 3 .set .LANCHOR216,. + 0 .type __func__.10674, %object .size __func__.10674, 20 __func__.10674: .string "decrement_vpc_count" .section .rodata.__func__.10742,"a",@progbits .align 3 .set .LANCHOR246,. + 0 .type __func__.10742, %object .size __func__.10742, 19 __func__.10742: .string "FtlGcFreeTempBlock" .section .rodata.__func__.10843,"a",@progbits .align 3 .set .LANCHOR251,. + 0 .type __func__.10843, %object .size __func__.10843, 10 __func__.10843: .string "ftl_do_gc" .section .rodata.__func__.9622,"a",@progbits .align 3 .set .LANCHOR255,. + 0 .type __func__.9622, %object .size __func__.9622, 8 __func__.9622: .string "FtlInit" .section .rodata.__func__.9726,"a",@progbits .align 3 .set .LANCHOR258,. + 0 .type __func__.9726, %object .size __func__.9726, 9 __func__.9726: .string "FtlWrite" .section .rodata.__func__.9816,"a",@progbits .align 3 .set .LANCHOR127,. + 0 .type __func__.9816, %object .size __func__.9816, 14 __func__.9816: .string "FtlBbt2Bitmap" .section .rodata.__func__.9862,"a",@progbits .align 3 .set .LANCHOR220,. + 0 .type __func__.9862, %object .size __func__.9862, 11 __func__.9862: .string "FtlLoadBbt" .section .rodata.__func__.9955,"a",@progbits .align 3 .set .LANCHOR91,. + 0 .type __func__.9955, %object .size __func__.9955, 17 __func__.9955: .string "INSERT_FREE_LIST" .section .rodata.__func__.9959,"a",@progbits .align 3 .set .LANCHOR88,. + 0 .type __func__.9959, %object .size __func__.9959, 17 __func__.9959: .string "INSERT_DATA_LIST" .section .rodata.__func__.9997,"a",@progbits .align 3 .set .LANCHOR92,. + 0 .type __func__.9997, %object .size __func__.9997, 17 __func__.9997: .string "List_remove_node" .section .rodata.decrement_vpc_count.str1.1,"aMS",@progbits,1 .LC38: .string "decrement_vpc_count %x = %d\n" .LC39: .string "decrement_vpc_count %x = %d in free list\n" .section .rodata.dump_map_info.str1.1,"aMS",@progbits,1 .LC86: .string "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" .LC87: .string "Mblk:" .LC88: .string "L2P:" .LC89: .string "L2PC:" .section .rodata.ftl_fix_nand_power_lost_error.str1.1,"aMS",@progbits,1 .LC81: .string "fix power lost blk = %x vpc=%x\n" .LC82: .string "erase power lost blk = %x vpc=%x\n" .section .rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",@progbits,1 .LC8: .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" .section .rodata.ftl_map_blk_gc.str1.1,"aMS",@progbits,1 .LC41: .string "page map lost: %x %x\n" .section .rodata.ftl_scan_all_ppa.str1.1,"aMS",@progbits,1 .LC55: .string "ftl_scan_all_ppa blk %x page %x flag: %x\n" .LC56: .string "ftl_scan_all_ppa blk %x page %x flag: %x ............... is bad block\n" .LC57: .string "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\n" .LC58: .string "%s finished\n" .section .rodata.idb_write_data.str1.1,"aMS",@progbits,1 .LC16: .string "1 write_idblock fix data %x %x %x\n" .LC17: .string "write_idblock fail! %x %x %x %x\n" .LC18: .string "write_idblock fail! %x\n" .section .rodata.log2phys.str1.1,"aMS",@progbits,1 .LC60: .string "region_id = %x phyAddr = %x\n" .LC61: .string "map_ppn:" .LC62: .string "load_l2p_region refresh = %x phyAddr = %x\n" .section .rodata.rk_ftl_init.str1.1,"aMS",@progbits,1 .LC80: .string "FtlInit %x\n" .section .rodata.rknand_print_hex.str1.1,"aMS",@progbits,1 .LC19: .string "%s 0x%x:" .LC20: .string "%x " .LC21: .string "" .section .rodata.samsung_14nm_mlc_rr,"a",@progbits .align 3 .set .LANCHOR151,. + 0 .type samsung_14nm_mlc_rr, %object .size samsung_14nm_mlc_rr, 104 samsung_14nm_mlc_rr: .byte 0 .byte 0 .byte 0 .byte 0 .byte -4 .byte 3 .byte -4 .byte -6 .byte 6 .byte 0 .byte 6 .byte -10 .byte -10 .byte 4 .byte -10 .byte 16 .byte 12 .byte -4 .byte 12 .byte 8 .byte -16 .byte 10 .byte -16 .byte 24 .byte 18 .byte -14 .byte 18 .byte -4 .byte -22 .byte -16 .byte -22 .byte -8 .byte 24 .byte -9 .byte 24 .byte 8 .byte -28 .byte -4 .byte -28 .byte 16 .byte 30 .byte 10 .byte 30 .byte 10 .byte -34 .byte 6 .byte -34 .byte 0 .byte 36 .byte -8 .byte 36 .byte -8 .byte -40 .byte -2 .byte -40 .byte -20 .byte -46 .byte -4 .byte -46 .byte -30 .byte 3 .byte 0 .byte 3 .byte -3 .byte -2 .byte -4 .byte -2 .byte -6 .byte -4 .byte -4 .byte -4 .byte -10 .byte -6 .byte -8 .byte -6 .byte -14 .byte -9 .byte -8 .byte -9 .byte -18 .byte -52 .byte 22 .byte -52 .byte 10 .byte 42 .byte 4 .byte 42 .byte 4 .byte 48 .byte -9 .byte 48 .byte 4 .byte -58 .byte 12 .byte -58 .byte 0 .byte -64 .byte -24 .byte -64 .byte -6 .byte 9 .byte 18 .byte 9 .byte 8 .section .rodata.samsung_14nm_slc_rr,"a",@progbits .align 3 .set .LANCHOR150,. + 0 .type samsung_14nm_slc_rr, %object .size samsung_14nm_slc_rr, 26 samsung_14nm_slc_rr: .byte 0 .byte 10 .byte -10 .byte 20 .byte -20 .byte 30 .byte -30 .byte 40 .byte -40 .byte 50 .byte -50 .byte 60 .byte -60 .byte -70 .byte -80 .byte -90 .byte -100 .byte -110 .byte -120 .byte -9 .byte 70 .byte 80 .byte 90 .byte -125 .byte -115 .byte 100 .section .rodata.samsung_read_retrial.str1.1,"aMS",@progbits,1 .LC14: .string "samsung RR %d row=%x,count %d,status=%d\n" .hidden free