diff --git a/drivers/rkflash/nand_boot.c b/drivers/rkflash/nand_boot.c index 864c2bdbaf2f..6c9ea7279eee 100644 --- a/drivers/rkflash/nand_boot.c +++ b/drivers/rkflash/nand_boot.c @@ -52,6 +52,11 @@ int sftl_flash_vendor_write(u32 sec, u32 n_sec, void *p_data) return sftl_vendor_write(sec, n_sec, p_data); } +int sftl_flash_gc(void) +{ + return sftl_gc(); +} + void sftl_flash_deinit(void) { u8 chip_sel = 0; diff --git a/drivers/rkflash/nandc.c b/drivers/rkflash/nandc.c index 622db477c0cb..c6bdcbc4d7e1 100644 --- a/drivers/rkflash/nandc.c +++ b/drivers/rkflash/nandc.c @@ -138,7 +138,6 @@ static void nandc_xfer_start(u8 chip_sel, { union BCH_CTL_T bch_reg; union FL_CTL_T fl_reg; - u8 bus_mode = (p_spare || p_data); u32 i; union MTRANS_CFG_T master_reg; u16 *p_spare_tmp = (u16 *)p_spare; @@ -159,7 +158,7 @@ static void nandc_xfer_start(u8 chip_sel, master_reg.d32 = nandc_readl(NANDC_MTRANS_CFG); master_reg.V6.bus_mode = 0; #ifdef NANDC_MASTER_EN - if (bus_mode != 0 && dir != 0) { + if (dir != 0) { u32 spare_sz = 64; for (i = 0; i < sector_count / 2; i++) { @@ -219,7 +218,8 @@ static void nandc_xfer_comp(u8 chip_sel) do { fl_reg.d32 = nandc_readl(NANDC_FLCTL); stat_reg.d32 = nandc_readl(NANDC_MTRANS_STAT); - } while (stat_reg.V6.mtrans_cnt < fl_reg.V6.page_num); + } while (stat_reg.V6.mtrans_cnt < fl_reg.V6.page_num || + fl_reg.V6.tr_rdy == 0); if (master.mapped) { rknandc_dma_unmap_single((u64)master.page_phy, @@ -233,7 +233,16 @@ static void nandc_xfer_comp(u8 chip_sel) do { fl_reg.d32 = nandc_readl(NANDC_FLCTL); } while (fl_reg.V6.tr_rdy == 0); + if (master.mapped) { + rknandc_dma_unmap_single( + (unsigned long)(master.page_phy), + fl_reg.V6.page_num * 1024, 1); + rknandc_dma_unmap_single( + (unsigned long)(master.spare_phy), + fl_reg.V6.page_num * 64, 1); + } } + master.mapped = 0; } else { do { fl_reg.d32 = nandc_readl(NANDC_FLCTL); @@ -256,19 +265,6 @@ u32 nandc_xfer_data(u8 chip_sel, u8 dir, u8 sector_count, nandc_xfer_start(chip_sel, dir, sector_count, 0, p_data, p_spare); nandc_xfer_comp(chip_sel); if (dir == NANDC_READ) { - if (p_spare) { - u32 spare_sz = 64; - u32 temp_data; - u8 *p_spare_temp = (u8 *)p_spare; - - for (i = 0; i < sector_count / 2; i++) { - temp_data = master.spare_buf[i * spare_sz / 4]; - *p_spare_temp++ = (u8)temp_data; - *p_spare_temp++ = (u8)(temp_data >> 8); - *p_spare_temp++ = (u8)(temp_data >> 16); - *p_spare_temp++ = (u8)(temp_data >> 24); - } - } for (i = 0; i < sector_count / 4 ; i++) { bch_st_reg.d32 = nandc_readl(NANDC_BCHST(i)); if (bch_st_reg.V6.fail0 || bch_st_reg.V6.fail1) { @@ -284,6 +280,19 @@ u32 nandc_xfer_data(u8 chip_sel, u8 dir, u8 sector_count, status = max(tmp, status); } } + if (p_spare) { + u32 spare_sz = 64; + u32 temp_data; + u8 *p_spare_temp = (u8 *)p_spare; + + for (i = 0; i < sector_count / 2; i++) { + temp_data = master.spare_buf[i * spare_sz / 4]; + *p_spare_temp++ = (u8)temp_data; + *p_spare_temp++ = (u8)(temp_data >> 8); + *p_spare_temp++ = (u8)(temp_data >> 16); + *p_spare_temp++ = (u8)(temp_data >> 24); + } + } } nandc_writel(0, NANDC_MTRANS_CFG); return status; diff --git a/drivers/rkflash/rk_sftl_arm_v7.S b/drivers/rkflash/rk_sftl_arm_v7.S index 59d145aae38d..bda328556148 100644 --- a/drivers/rkflash/rk_sftl_arm_v7.S +++ b/drivers/rkflash/rk_sftl_arm_v7.S @@ -2,7 +2,7 @@ /* * Copyright (c) 2018 Rockchip Electronics Co. Ltd. - * date: 2018-08-17 + * date: 2018-09-30 */ .file "rk_sftl.c" .global __udivsi3 @@ -795,44 +795,6 @@ IsInFreeQueue: .word .LANCHOR0 .size IsInFreeQueue, .-IsInFreeQueue .align 2 - .global test_node_in_list - .syntax unified - .arm - .fpu softvfp - .type test_node_in_list, %function -test_node_in_list: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - ldr r3, .L103 - uxth r1, r1 - movw ip, #65535 - ldr r2, [r0] - ldr r0, [r3, #2316] - sub r3, r2, r0 - ubfx r3, r3, #3, #16 -.L100: - cmp r3, r1 - beq .L101 - ldrh r3, [r2] - cmp r3, ip - beq .L102 - add r2, r0, r3, lsl #3 - b .L100 -.L101: - mov r0, #1 - ldmfd sp, {fp, sp, pc} -.L102: - mov r0, #0 - ldmfd sp, {fp, sp, pc} -.L104: - .align 2 -.L103: - .word .LANCHOR0 - .size test_node_in_list, .-test_node_in_list - .align 2 .global insert_data_list .syntax unified .arm @@ -846,11 +808,11 @@ insert_data_list: sub fp, ip, #4 sub sp, sp, #12 uxth r0, r0 - ldr r1, .L121 + ldr r1, .L114 ldrh r3, [r1, #40] mov lr, r1 cmp r3, r0 - bls .L107 + bls .L100 ldr r6, [r1, #2316] lsl r5, r0, #3 mvn ip, #0 @@ -859,11 +821,11 @@ insert_data_list: strh ip, [r6, r5] @ movhi ldr r3, [r1, #2320] cmp r3, #0 - bne .L108 -.L120: + bne .L101 +.L113: str r2, [r1, #2320] - b .L107 -.L108: + b .L100 +.L101: ldr r7, [r1, #2324] lsl r4, r0, #1 ldrh r1, [r2, #4] @@ -881,7 +843,7 @@ insert_data_list: add lr, r8, r4 str lr, [fp, #-52] mov lr, #0 -.L116: +.L109: ldr r4, [fp, #-48] add lr, lr, #1 uxth lr, lr @@ -891,7 +853,7 @@ insert_data_list: cmp r0, r1 orreq r4, r4, #1 cmp r4, #0 - bne .L107 + bne .L100 lsl r9, r1, #1 ldrh r4, [r7, r9] mov ip, r4 @@ -901,51 +863,51 @@ insert_data_list: ldr ip, [fp, #-44] mvneq r4, #0 cmp ip, r4 - bne .L112 + bne .L105 ldr ip, [fp, #-52] ldrh r9, [r8, r9] ldrh r4, [ip] cmp r9, r4 - bcc .L114 -.L113: + bcc .L107 +.L106: strh r1, [r6, r5] @ movhi ldrh r1, [r3, #2] strh r1, [r2, #2] @ movhi - ldr r1, .L121 + ldr r1, .L114 ldr ip, [r1, #2320] cmp r3, ip - bne .L117 + bne .L110 strh r0, [r3, #2] @ movhi - b .L120 -.L112: - bcc .L113 -.L114: + b .L113 +.L105: + bcc .L106 +.L107: ldrh r4, [r3] movw ip, #65535 cmp r4, ip - bne .L115 + bne .L108 strh r1, [r2, #2] @ movhi strh r0, [r3] @ movhi - ldr r3, .L121 + ldr r3, .L114 str r2, [r3, #2332] -.L107: +.L100: mov r0, #0 sub sp, fp, #40 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L115: +.L108: add r3, r10, r4, lsl #3 mov r1, r4 - b .L116 -.L117: + b .L109 +.L110: ldrh r2, [r3, #2] ldr r1, [r1, #2316] lsl r2, r2, #3 strh r0, [r1, r2] @ movhi strh r0, [r3, #2] @ movhi - b .L107 -.L122: + b .L100 +.L115: .align 2 -.L121: +.L114: .word .LANCHOR0 .size insert_data_list, .-insert_data_list .align 2 @@ -962,7 +924,7 @@ INSERT_DATA_LIST: sub fp, ip, #4 uxth r0, r0 bl insert_data_list - ldr r2, .L125 + ldr r2, .L118 add r1, r2, #2336 ldrh r2, [r2, #40] ldrh r3, [r1] @@ -971,14 +933,14 @@ INSERT_DATA_LIST: cmp r2, r3 strh r3, [r1] @ movhi ldmfdcs sp, {fp, sp, pc} - mov r2, #221 - ldr r1, .L125+4 - ldr r0, .L125+8 + mov r2, #214 + ldr r1, .L118+4 + ldr r0, .L118+8 bl sftl_printk ldmfd sp, {fp, sp, pc} -.L126: +.L119: .align 2 -.L125: +.L118: .word .LANCHOR0 .word .LANCHOR1 .word .LC1 @@ -998,8 +960,8 @@ insert_free_list: uxth r0, r0 movw lr, #65535 cmp r0, lr - beq .L128 - ldr r2, .L134 + beq .L121 + ldr r2, .L127 lsl r5, r0, #3 mvn r3, #0 ldr r6, [r2, #2316] @@ -1010,7 +972,7 @@ insert_free_list: ldr r3, [r2, #2340] cmp r3, #0 streq ip, [r2, #2340] - beq .L128 + beq .L121 ldr r8, [r2, #2328] lsl r2, r0, #1 ldr r7, [r1, #2316] @@ -1018,24 +980,24 @@ insert_free_list: ldrh r9, [r8, r2] sub r2, r3, r7 ubfx r2, r2, #3, #16 -.L132: +.L125: lsl lr, r2, #1 ldrh lr, [r8, lr] cmp lr, r9 - bcs .L130 + bcs .L123 ldrh lr, [r3] cmp lr, r4 - bne .L131 + bne .L124 strh r2, [ip, #2] @ movhi strh r0, [r3] @ movhi -.L128: +.L121: mov r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} -.L131: +.L124: add r3, r7, lr, lsl #3 mov r2, lr - b .L132 -.L130: + b .L125 +.L123: ldrh lr, [r3, #2] strh lr, [ip, #2] @ movhi strh r2, [r6, r5] @ movhi @@ -1048,10 +1010,10 @@ insert_free_list: lslne r2, r2, #3 strhne r0, [r1, r2] @ movhi strhne r0, [r3, #2] @ movhi - b .L128 -.L135: + b .L121 +.L128: .align 2 -.L134: +.L127: .word .LANCHOR0 .size insert_free_list, .-insert_free_list .align 2 @@ -1068,7 +1030,7 @@ INSERT_FREE_LIST: sub fp, ip, #4 uxth r0, r0 bl insert_free_list - ldr r2, .L138 + ldr r2, .L131 movw r1, #2344 ldrh r3, [r2, r1] add r3, r3, #1 @@ -1077,14 +1039,14 @@ INSERT_FREE_LIST: ldrh r2, [r2, #40] cmp r2, r3 ldmfdcs sp, {fp, sp, pc} - mov r2, #214 - ldr r1, .L138+4 - ldr r0, .L138+8 + mov r2, #207 + ldr r1, .L131+4 + ldr r0, .L131+8 bl sftl_printk ldmfd sp, {fp, sp, pc} -.L139: +.L132: .align 2 -.L138: +.L131: .word .LANCHOR0 .word .LANCHOR1+17 .word .LC1 @@ -1101,7 +1063,7 @@ List_remove_node: mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L147 + ldr r4, .L140 uxth r1, r1 movw r3, #65535 mov r8, r0 @@ -1110,20 +1072,20 @@ List_remove_node: add r5, r7, r6 ldrh r2, [r5, #2] cmp r2, r3 - bne .L141 + bne .L134 ldr r3, [r0] cmp r5, r3 - beq .L141 - movw r2, #397 - ldr r1, .L147+4 - ldr r0, .L147+8 + beq .L134 + mov r2, #372 + ldr r1, .L140+4 + ldr r0, .L140+8 bl sftl_printk -.L141: +.L134: ldr r3, [r8] ldrh r2, [r7, r6] cmp r5, r3 movw r3, #65535 - bne .L142 + bne .L135 cmp r2, r3 ldrne r3, [r4, #2316] moveq r3, #0 @@ -1132,25 +1094,25 @@ List_remove_node: mvnne r3, #0 strne r2, [r8] strhne r3, [r2, #2] @ movhi -.L144: +.L137: mvn r3, #0 mov r0, #0 strh r3, [r7, r6] @ movhi strh r3, [r5, #2] @ movhi ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L142: +.L135: cmp r2, r3 ldrh r3, [r5, #2] - bne .L145 + bne .L138 cmp r3, r2 ldrne r2, [r4, #2316] lslne r3, r3, #3 mvnne r1, #0 - beq .L144 -.L146: + beq .L137 +.L139: strh r1, [r2, r3] @ movhi - b .L144 -.L145: + b .L137 +.L138: ldr r1, [r4, #2316] add r2, r1, r2, lsl #3 strh r3, [r2, #2] @ movhi @@ -1158,10 +1120,10 @@ List_remove_node: ldrh r1, [r7, r6] ldr r2, [r4, #2316] lsl r3, r3, #3 - b .L146 -.L148: + b .L139 +.L141: .align 2 -.L147: +.L140: .word .LANCHOR0 .word .LANCHOR1+34 .word .LC1 @@ -1182,32 +1144,32 @@ List_pop_index_node: uxth r1, r1 cmp r3, #0 movweq r4, #65535 - beq .L149 - ldr r2, .L156 + beq .L142 + ldr r2, .L149 movw ip, #65535 ldr r4, [r2, #2316] -.L151: +.L144: cmp r1, #0 - bne .L152 -.L154: + bne .L145 +.L147: sub r3, r3, r4 ubfx r4, r3, #3, #16 mov r1, r4 bl List_remove_node -.L149: +.L142: mov r0, r4 ldmfd sp, {r4, fp, sp, pc} -.L152: +.L145: ldrh r2, [r3] cmp r2, ip - beq .L154 + beq .L147 sub r1, r1, #1 add r3, r4, r2, lsl #3 uxth r1, r1 - b .L151 -.L157: + b .L144 +.L150: .align 2 -.L156: +.L149: .word .LANCHOR0 .size List_pop_index_node, .-List_pop_index_node .align 2 @@ -1238,33 +1200,33 @@ List_get_gc_head_node: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r1, .L165 + ldr r1, .L158 uxth r2, r0 ldr r3, [r1, #2320] cmp r3, #0 ldrne r1, [r1, #2316] movwne r0, #65535 - bne .L161 + bne .L154 movw r0, #65535 ldmfd sp, {fp, sp, pc} -.L163: +.L156: sub r2, r2, #1 add r3, r1, r3, lsl #3 uxth r2, r2 -.L161: +.L154: cmp r2, #0 - beq .L162 + beq .L155 ldrh r3, [r3] cmp r3, r0 - bne .L163 + bne .L156 ldmfd sp, {fp, sp, pc} -.L162: +.L155: sub r3, r3, r1 ubfx r0, r3, #3, #16 ldmfd sp, {fp, sp, pc} -.L166: +.L159: .align 2 -.L165: +.L158: .word .LANCHOR0 .size List_get_gc_head_node, .-List_get_gc_head_node .align 2 @@ -1279,25 +1241,25 @@ List_update_data_list: mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L180 + ldr r4, .L173 movw r3, #2348 uxth r5, r0 ldrh r3, [r4, r3] cmp r3, r5 - beq .L169 + beq .L162 movw r3, #2396 ldrh r3, [r4, r3] cmp r3, r5 - beq .L169 + beq .L162 movw r3, #2444 ldrh r3, [r4, r3] cmp r3, r5 - beq .L169 + beq .L162 ldr r8, [r4, #2316] ldr r3, [r4, #2320] add r7, r8, r5, lsl #3 cmp r7, r3 - beq .L169 + beq .L162 ldr r2, [r4, #2324] lsl r3, r5, #1 ldrh r6, [r7, #4] @@ -1307,15 +1269,15 @@ List_update_data_list: mulne r6, r6, r3 ldr r3, [r8, r5, lsl #3] cmn r3, #1 - bne .L172 - mov r2, #488 - ldr r1, .L180+4 - ldr r0, .L180+8 + bne .L165 + movw r2, #463 + ldr r1, .L173+4 + ldr r0, .L173+8 bl sftl_printk -.L172: +.L165: ldr r3, [r8, r5, lsl #3] cmn r3, #1 - beq .L169 + beq .L162 ldrh r2, [r7, #2] ldr r1, [r4, #2324] lsl r2, r2, #3 @@ -1328,30 +1290,30 @@ List_update_data_list: mulne r3, r3, r0 mvneq r3, #0 cmp r6, r3 - bcs .L169 - ldr r4, .L180+12 + bcs .L162 + ldr r4, .L173+12 mov r1, r5 - ldr r0, .L180+16 + ldr r0, .L173+16 bl List_remove_node ldrh r3, [r4] cmp r3, #0 - bne .L174 - movw r2, #499 - ldr r1, .L180+4 - ldr r0, .L180+8 + bne .L167 + movw r2, #474 + ldr r1, .L173+4 + ldr r0, .L173+8 bl sftl_printk -.L174: +.L167: ldrh r3, [r4] mov r0, r5 sub r3, r3, #1 strh r3, [r4] @ movhi bl INSERT_DATA_LIST -.L169: +.L162: mov r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L181: +.L174: .align 2 -.L180: +.L173: .word .LANCHOR0 .word .LANCHOR1+51 .word .LC1 @@ -1370,52 +1332,52 @@ select_l2p_ram_region: mov ip, sp push {r4, r5, r6, fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L192 + ldr r3, .L185 mov r1, #0 mov r0, #12 movw ip, #65535 ldrh r2, [r3, #138] ldr r3, [r3, #2492] -.L183: +.L176: uxth r4, r1 cmp r4, r2 - bcc .L185 + bcc .L178 mov r4, r2 mov r1, #0 mov r0, #-2147483648 mov r5, #12 -.L186: +.L179: uxth lr, r1 cmp lr, r2 - bcc .L188 + bcc .L181 cmp r4, r2 - bcc .L184 - ldr r1, .L192+4 + bcc .L177 + ldr r1, .L185+4 mov r4, r2 mvn r0, #0 ldrh r5, [r1] mov r1, #0 -.L189: +.L182: uxth ip, r1 cmp ip, r2 - bcc .L191 - cmp r4, r2 bcc .L184 - movw r2, #823 - ldr r1, .L192+8 - ldr r0, .L192+12 + cmp r4, r2 + bcc .L177 + movw r2, #787 + ldr r1, .L185+8 + ldr r0, .L185+12 bl sftl_printk - b .L184 -.L185: + b .L177 +.L178: add r1, r1, #1 mla lr, r0, r1, r3 ldrh lr, [lr, #-12] cmp lr, ip - bne .L183 -.L184: + bne .L176 +.L177: mov r0, r4 ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L188: +.L181: mla ip, r5, r1, r3 add r1, r1, #1 ldr ip, [ip, #4] @@ -1427,22 +1389,22 @@ select_l2p_ram_region: cmp r6, #0 movne r0, ip movne r4, lr - b .L186 -.L191: + b .L179 +.L184: ldr lr, [r3, #4] cmp r0, lr - bls .L190 + bls .L183 ldrh r6, [r3] cmp r6, r5 movne r0, lr movne r4, ip -.L190: +.L183: add r1, r1, #1 add r3, r3, #12 - b .L189 -.L193: + b .L182 +.L186: .align 2 -.L192: +.L185: .word .LANCHOR0 .word .LANCHOR0+2496 .word .LANCHOR1+73 @@ -1460,17 +1422,17 @@ FtlUpdateVaildLpn: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr ip, .L200 + ldr ip, .L193 movw r1, #2498 ldrh r2, [ip, r1] mov r3, ip cmp r2, #4 cmpls r0, #0 - bne .L195 + bne .L188 add r2, r2, #1 strh r2, [ip, r1] @ movhi ldmfd sp, {fp, sp, pc} -.L195: +.L188: mov r2, #0 movw lr, #65535 strh r2, [ip, r1] @ movhi @@ -1478,20 +1440,20 @@ FtlUpdateVaildLpn: ldrh r1, [ip, #40] ldr r2, [ip, #2324] add r1, r2, r1, lsl #1 -.L196: +.L189: cmp r2, r1 - bne .L198 + bne .L191 ldmfd sp, {fp, sp, pc} -.L198: +.L191: ldrh ip, [r2], #2 cmp ip, lr ldrne r0, [r3, #2500] addne r0, r0, ip strne r0, [r3, #2500] - b .L196 -.L201: + b .L189 +.L194: .align 2 -.L200: +.L193: .word .LANCHOR0 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 @@ -1508,11 +1470,11 @@ ftl_set_blk_mode: sub fp, ip, #4 cmp r1, #0 uxth r0, r0 - beq .L203 + beq .L196 bl ftl_set_blk_mode.part.6 ldmfd sp, {fp, sp, pc} -.L203: - ldr r3, .L205 +.L196: + ldr r3, .L198 lsr r1, r0, #5 mov ip, #1 and r0, r0, #31 @@ -1521,9 +1483,9 @@ ftl_set_blk_mode: bic r0, r3, ip, lsl r0 str r0, [r2, r1, lsl #2] ldmfd sp, {fp, sp, pc} -.L206: +.L199: .align 2 -.L205: +.L198: .word .LANCHOR0 .size ftl_set_blk_mode, .-ftl_set_blk_mode .align 2 @@ -1538,7 +1500,7 @@ ftl_get_blk_mode: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L208 + ldr r3, .L201 uxth r0, r0 ldr r3, [r3, #24] lsr r2, r0, #5 @@ -1547,9 +1509,9 @@ ftl_get_blk_mode: lsr r0, r3, r0 and r0, r0, #1 ldmfd sp, {fp, sp, pc} -.L209: +.L202: .align 2 -.L208: +.L201: .word .LANCHOR0 .size ftl_get_blk_mode, .-ftl_get_blk_mode .align 2 @@ -1568,14 +1530,14 @@ ftl_sb_update_avl_pages: uxth r2, r2 uxth r5, r1 strh r3, [r0, #4] @ movhi - ldr r3, .L217 + ldr r3, .L210 add ip, r0, r2, lsl #1 movw r1, #65535 add ip, ip, #14 ldrh lr, [r3, #32] -.L211: +.L204: cmp r2, lr - bcc .L213 + bcc .L206 ldrh r1, [r3, #102] add ip, r0, #16 mov r3, #0 @@ -1583,12 +1545,12 @@ ftl_sb_update_avl_pages: sub r1, r1, #1 sub r1, r1, r5 uxth r1, r1 -.L214: +.L207: uxth r2, r3 cmp lr, r2 - bhi .L216 + bhi .L209 ldmfd sp, {r4, r5, fp, sp, pc} -.L213: +.L206: ldrh r4, [ip, #2]! add r2, r2, #1 uxth r2, r2 @@ -1596,18 +1558,18 @@ ftl_sb_update_avl_pages: ldrhne r4, [r0, #4] addne r4, r4, #1 strhne r4, [r0, #4] @ movhi - b .L211 -.L216: + b .L204 +.L209: ldrh r2, [ip], #2 add r3, r3, #1 cmp r2, r4 ldrhne r2, [r0, #4] addne r2, r1, r2 strhne r2, [r0, #4] @ movhi - b .L214 -.L218: + b .L207 +.L211: .align 2 -.L217: +.L210: .word .LANCHOR0 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 @@ -1633,14 +1595,14 @@ FtlSlcSuperblockCheck: mov lr, #0 add r2, r0, r2, lsl #1 ldrh r1, [r2, #16] - ldr r2, .L225 + ldr r2, .L218 ldrh ip, [r2, #32] mov r2, r3 -.L222: +.L215: cmp r1, r2 - beq .L224 + beq .L217 ldmfd sp, {fp, sp, pc} -.L224: +.L217: ldrb r3, [r0, #6] @ zero_extendqisi2 add r3, r3, #1 uxtb r3, r3 @@ -1653,10 +1615,10 @@ FtlSlcSuperblockCheck: ldrb r3, [r0, #6] @ zero_extendqisi2 add r3, r0, r3, lsl #1 ldrh r1, [r3, #16] - b .L222 -.L226: + b .L215 +.L219: .align 2 -.L225: +.L218: .word .LANCHOR0 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 @@ -1673,36 +1635,35 @@ make_superblock: sub fp, ip, #4 sub sp, sp, #4 mov r4, r0 - ldr r6, .L232 + ldr r6, .L225 ldrh r2, [r0] ldrh r3, [r6, #40] cmp r2, r3 - bcc .L228 - movw r2, #2146 - ldr r1, .L232+4 - ldr r0, .L232+8 + bcc .L221 + movw r2, #2110 + ldr r1, .L225+4 + ldr r0, .L225+8 bl sftl_printk -.L228: +.L221: ldrh r9, [r6, #32] add r7, r4, #16 - ldr r10, .L232+12 + ldr r10, .L225+12 mvn r8, #0 mov r5, #0 strh r5, [r4, #4] @ movhi strb r5, [r4, #7] -.L229: +.L222: uxth r3, r5 cmp r9, r3 - bhi .L231 + bhi .L224 ldrb r3, [r4, #7] @ zero_extendqisi2 mov r0, #0 ldrh r2, [r6, #102] + strb r0, [r4, #9] smulbb r3, r3, r2 strh r3, [r4, #4] @ movhi - mov r3, #1 - strb r3, [r4, #9] ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L231: +.L224: ldrb r0, [r10, r5] @ zero_extendqisi2 add r7, r7, #2 ldrh r1, [r4] @@ -1717,10 +1678,10 @@ make_superblock: ldrbeq r3, [r4, #7] @ zero_extendqisi2 addeq r3, r3, #1 strbeq r3, [r4, #7] - b .L229 -.L233: + b .L222 +.L226: .align 2 -.L232: +.L225: .word .LANCHOR0 .word .LANCHOR1+95 .word .LC1 @@ -1738,7 +1699,7 @@ update_multiplier_value: mov ip, sp push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L240 + ldr r3, .L233 mov r5, #0 uxth r6, r0 mov r4, r5 @@ -1746,23 +1707,23 @@ update_multiplier_value: mov r7, r3 ldrh r9, [r3, #102] add r10, r3, #60 -.L235: +.L228: uxth r3, r5 cmp r8, r3 - bhi .L237 + bhi .L230 cmp r4, #0 moveq r0, r4 - beq .L238 + beq .L231 mov r1, r4 mov r0, #32768 bl __divsi3 -.L238: +.L231: ldr r1, [r7, #2316] add r1, r1, r6, lsl #3 strh r0, [r1, #4] @ movhi mov r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L237: +.L230: mov r1, r6 ldrb r0, [r10, r5] @ zero_extendqisi2 bl V2P_block @@ -1771,10 +1732,10 @@ update_multiplier_value: add r5, r5, #1 addeq r4, r4, r9 uxtheq r4, r4 - b .L235 -.L241: + b .L228 +.L234: .align 2 -.L240: +.L233: .word .LANCHOR0 .size update_multiplier_value, .-update_multiplier_value .align 2 @@ -1789,7 +1750,7 @@ GetFreeBlockMinEraseCount: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L245 + ldr r3, .L238 ldr r0, [r3, #2340] cmp r0, #0 ldrne r2, [r3, #2316] @@ -1799,9 +1760,9 @@ GetFreeBlockMinEraseCount: lslne r0, r0, #1 ldrhne r0, [r3, r0] ldmfd sp, {fp, sp, pc} -.L246: +.L239: .align 2 -.L245: +.L238: .word .LANCHOR0 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount .align 2 @@ -1816,7 +1777,7 @@ GetFreeBlockMaxEraseCount: mov ip, sp push {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 - ldr r2, .L255 + ldr r2, .L248 uxth r4, r0 ldr r0, [r2, #2340] cmp r0, #0 @@ -1832,26 +1793,26 @@ GetFreeBlockMaxEraseCount: uxthgt r4, r3 sub r3, r0, ip ubfx r3, r3, #3, #16 -.L250: +.L243: uxth r0, r1 cmp r4, r0 - bls .L252 + bls .L245 lsl r0, r3, #3 add r1, r1, #1 ldrh lr, [ip, r0] cmp lr, r5 - bne .L254 -.L252: + bne .L247 +.L245: ldr r2, [r2, #2328] lsl r3, r3, #1 ldrh r0, [r2, r3] ldmfd sp, {r4, r5, fp, sp, pc} -.L254: +.L247: mov r3, lr - b .L250 -.L256: + b .L243 +.L249: .align 2 -.L255: +.L248: .word .LANCHOR0 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount .align 2 @@ -1868,184 +1829,184 @@ FtlPrintInfo2buf: sub fp, ip, #4 sub sp, sp, #16 mov r6, r0 - ldr r5, .L269 + ldr r5, .L262 add r4, r6, #12 - ldr r1, .L269+4 + ldr r1, .L262+4 movw r8, #2344 bl strcpy ldr r3, [r5, #116] mov r1, #64 - ldr r2, .L269+8 + ldr r2, .L262+8 mov r0, r4 bl snprintf add r4, r4, r0 - ldr r1, .L269+12 + ldr r1, .L262+12 mov r0, r4 add r4, r4, #10 bl strcpy ldr r3, [r5, #2504] mov r1, #64 - ldr r2, .L269+16 + ldr r2, .L262+16 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2500] - ldr r2, .L269+20 + ldr r2, .L262+20 mov r1, #64 mov r0, r4 - ldr r7, .L269+24 + ldr r7, .L262+24 bl snprintf add r4, r4, r0 ldr r3, [r5, #2508] - ldr r2, .L269+28 + ldr r2, .L262+28 mov r1, #64 mov r0, r4 - ldr r9, .L269+32 + ldr r9, .L262+32 bl snprintf add r4, r4, r0 ldr r3, [r5, #2512] - ldr r2, .L269+36 + ldr r2, .L262+36 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2516] - ldr r2, .L269+40 + ldr r2, .L262+40 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2520] - ldr r2, .L269+44 + ldr r2, .L262+44 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2524] - ldr r2, .L269+48 + ldr r2, .L262+48 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2528] - ldr r2, .L269+52 + ldr r2, .L262+52 mov r1, #64 mov r0, r4 bl snprintf ldr r3, [r5, #2532] add r4, r4, r0 - ldr r2, .L269+56 + ldr r2, .L262+56 mov r1, #64 mov r0, r4 lsr r3, r3, #11 bl snprintf ldr r3, [r5, #2536] add r4, r4, r0 - ldr r2, .L269+60 + ldr r2, .L262+60 mov r1, #64 mov r0, r4 lsr r3, r3, #11 bl snprintf add r4, r4, r0 ldr r3, [r5, #2540] - ldr r2, .L269+64 + ldr r2, .L262+64 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2544] - ldr r2, .L269+68 + ldr r2, .L262+68 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #158] - ldr r2, .L269+72 + ldr r2, .L262+72 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, r8] - ldr r2, .L269+76 + ldr r2, .L262+76 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2548] - ldr r2, .L269+80 + ldr r2, .L262+80 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2552] - ldr r2, .L269+84 + ldr r2, .L262+84 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2556] - ldr r2, .L269+88 + ldr r2, .L262+88 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2560] - ldr r2, .L269+92 + ldr r2, .L262+92 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2564] - ldr r2, .L269+96 + ldr r2, .L262+96 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2568] - ldr r2, .L269+100 + ldr r2, .L262+100 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r7, #30] - ldr r2, .L269+104 + ldr r2, .L262+104 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r7, #28] - ldr r2, .L269+108 + ldr r2, .L262+108 mov r1, #64 mov r0, r4 movw r7, #2348 bl snprintf add r4, r4, r0 ldr r3, [r5, #140] - ldr r2, .L269+112 + ldr r2, .L262+112 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #132] - ldr r2, .L269+116 + ldr r2, .L262+116 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #28] - ldr r2, .L269+120 + ldr r2, .L262+120 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #218] - ldr r2, .L269+124 + ldr r2, .L262+124 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #40] - ldr r2, .L269+128 + ldr r2, .L262+128 mov r1, #64 mov r0, r4 bl snprintf @@ -2053,12 +2014,12 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r3, [r5, r3] mov r1, #64 - ldr r2, .L269+132 + ldr r2, .L262+132 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #44] - ldr r2, .L269+136 + ldr r2, .L262+136 mov r1, #64 mov r0, r4 bl snprintf @@ -2066,42 +2027,42 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r3, [r3] mov r1, #64 - ldr r2, .L269+140 + ldr r2, .L262+140 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #152] - ldr r2, .L269+144 + ldr r2, .L262+144 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r9, #2] - ldr r2, .L269+148 + ldr r2, .L262+148 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2354] @ zero_extendqisi2 - ldr r2, .L269+152 + ldr r2, .L262+152 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, r7] - ldr r2, .L269+156 + ldr r2, .L262+156 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2356] @ zero_extendqisi2 - ldr r2, .L269+160 + ldr r2, .L262+160 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r9, #4] - ldr r2, .L269+164 + ldr r2, .L262+164 mov r1, #64 mov r0, r4 bl snprintf @@ -2113,35 +2074,35 @@ FtlPrintInfo2buf: movw r7, #2396 lsl r3, r3, #1 ldrh r3, [r2, r3] - ldr r2, .L269+168 + ldr r2, .L262+168 bl snprintf add r4, r4, r0 ldrh r3, [r9, #50] - ldr r2, .L269+172 + ldr r2, .L262+172 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2402] @ zero_extendqisi2 - ldr r2, .L269+176 + ldr r2, .L262+176 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, r7] - ldr r2, .L269+180 + ldr r2, .L262+180 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2404] @ zero_extendqisi2 - ldr r2, .L269+184 + ldr r2, .L262+184 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r9, #52] - ldr r2, .L269+188 + ldr r2, .L262+188 mov r1, #64 mov r0, r4 bl snprintf @@ -2153,17 +2114,17 @@ FtlPrintInfo2buf: movw r7, #2588 lsl r3, r3, #1 ldrh r3, [r2, r3] - ldr r2, .L269+192 + ldr r2, .L262+192 bl snprintf add r4, r4, r0 ldrh r3, [r9, #98] - ldr r2, .L269+196 + ldr r2, .L262+196 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2450] @ zero_extendqisi2 - ldr r2, .L269+200 + ldr r2, .L262+200 mov r1, #64 mov r0, r4 bl snprintf @@ -2171,54 +2132,54 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r3, [r5, r3] mov r1, #64 - ldr r2, .L269+204 + ldr r2, .L262+204 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2452] @ zero_extendqisi2 - ldr r2, .L269+208 + ldr r2, .L262+208 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r9, #100] - ldr r2, .L269+212 + ldr r2, .L262+212 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r9, #242] - ldr r2, .L269+216 + ldr r2, .L262+216 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2594] @ zero_extendqisi2 - ldr r2, .L269+220 + ldr r2, .L262+220 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, r7] - ldr r2, .L269+224 + ldr r2, .L262+224 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2596] @ zero_extendqisi2 - ldr r2, .L269+228 + ldr r2, .L262+228 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r9, #244] - ldr r2, .L269+232 + ldr r2, .L262+232 mov r1, #64 mov r0, r4 bl snprintf ldr r3, [r5, #2712] add r4, r4, r0 - ldr r2, .L269+236 + ldr r2, .L262+236 mov r1, #64 mov r0, r4 str r3, [sp, #4] @@ -2228,13 +2189,13 @@ FtlPrintInfo2buf: bl snprintf add r4, r4, r0 ldr r3, [r5, #2708] - ldr r2, .L269+240 + ldr r2, .L262+240 mov r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2732] - ldr r2, .L269+244 + ldr r2, .L262+244 mov r1, #64 mov r0, r4 bl snprintf @@ -2242,19 +2203,19 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r3, [r5, r3] mov r1, #64 - ldr r2, .L269+248 + ldr r2, .L262+248 mov r0, r4 bl snprintf movw r3, #3150 add r4, r4, r0 ldrh r3, [r5, r3] mov r1, #64 - ldr r2, .L269+252 + ldr r2, .L262+252 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #3152] - ldr r2, .L269+256 + ldr r2, .L262+256 mov r1, #64 mov r0, r4 bl snprintf @@ -2262,12 +2223,12 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r3, [r5, r3] mov r1, #64 - ldr r2, .L269+260 + ldr r2, .L262+260 mov r0, r4 bl snprintf add r4, r4, r0 bl GetFreeBlockMinEraseCount - ldr r2, .L269+264 + ldr r2, .L262+264 mov r3, r0 mov r1, #64 mov r0, r4 @@ -2275,43 +2236,43 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r0, [r5, r8] bl GetFreeBlockMaxEraseCount - ldr r2, .L269+268 + ldr r2, .L262+268 mov r3, r0 mov r1, #64 mov r0, r4 bl snprintf - ldr r3, .L269+272 + ldr r3, .L262+272 add r4, r4, r0 ldr r3, [r3] cmp r3, #1 - beq .L258 -.L263: + beq .L251 +.L256: sub r0, r4, r6 sub sp, fp, #40 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L258: +.L251: ldrh r3, [r5, r7] movw r2, #65535 cmp r3, r2 - beq .L260 + beq .L253 ldr r2, [r5, #2324] lsl r3, r3, #1 mov r0, r4 mov r1, #64 ldrh r3, [r2, r3] - ldr r2, .L269+276 + ldr r2, .L262+276 bl snprintf add r4, r4, r0 -.L260: +.L253: mov r0, #0 - ldr r9, .L269+280 + ldr r9, .L262+280 bl List_get_gc_head_node uxth r0, r0 mov r7, #0 movw r10, #65535 -.L262: +.L255: cmp r0, r10 - beq .L261 + beq .L254 ldr r3, [r5, #2328] lsl r2, r0, #1 lsl r8, r0, #3 @@ -2334,18 +2295,18 @@ FtlPrintInfo2buf: cmp r7, #16 add r4, r4, r0 ldrh r0, [r3, r8] - bne .L262 -.L261: + bne .L255 +.L254: ldr r3, [r5, #2340] mov r7, #0 ldr r2, [r5, #2316] movw r9, #65535 - ldr r10, .L269+284 + ldr r10, .L262+284 sub r3, r3, r2 ubfx r3, r3, #3, #16 -.L264: +.L257: cmp r3, r9 - beq .L263 + beq .L256 ldr r1, [r5, #2328] lsl r2, r3, #1 lsl r8, r3, #3 @@ -2364,13 +2325,13 @@ FtlPrintInfo2buf: bl snprintf cmp r7, #4 add r4, r4, r0 - beq .L263 + beq .L256 ldr r3, [r5, #2316] ldrh r3, [r3, r8] - b .L264 -.L270: + b .L257 +.L263: .align 2 -.L269: +.L262: .word .LANCHOR0 .word .LC2 .word .LC3 @@ -2458,10 +2419,10 @@ rknand_proc_ftlread: sub fp, ip, #4 cmp r0, #2048 mov r5, r1 - blt .L273 - ldr r3, .L274 + blt .L266 + ldr r3, .L267 mov r1, #64 - ldr r2, .L274+4 + ldr r2, .L267+4 mov r0, r5 bl snprintf add r4, r5, r0 @@ -2470,12 +2431,12 @@ rknand_proc_ftlread: add r0, r4, r0 sub r0, r0, r5 ldmfd sp, {r4, r5, fp, sp, pc} -.L273: +.L266: mov r0, #0 ldmfd sp, {r4, r5, fp, sp, pc} -.L275: +.L268: .align 2 -.L274: +.L267: .word .LC70 .word .LC71 .size rknand_proc_ftlread, .-rknand_proc_ftlread @@ -2492,19 +2453,19 @@ GetSwlReplaceBlock: push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #16 - ldr r4, .L300 + ldr r4, .L293 ldr r2, [r4, #2556] ldr r3, [r4, #2568] cmp r2, r3 - bcs .L277 + bcs .L270 ldr r2, [r4, #2328] mov r3, #0 ldrh r1, [r4, #40] str r3, [r4, #2548] sub r2, r2, #2 -.L278: +.L271: cmp r3, r1 - bcc .L279 + bcc .L272 ldr r5, [r4, #2548] mov r0, r5 bl __udivsi3 @@ -2514,48 +2475,48 @@ GetSwlReplaceBlock: sub r0, r5, r0 bl __udivsi3 str r0, [r4, #2548] -.L280: +.L273: ldr r6, [r4, #2568] ldr r7, [r4, #2556] add r3, r6, #256 cmp r3, r7 - bls .L285 + bls .L278 ldr r2, [r4, #2564] add r3, r6, #768 cmp r3, r2 - bls .L285 -.L287: + bls .L278 +.L280: movw r5, #65535 -.L286: +.L279: mov r0, r5 sub sp, fp, #40 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L279: +.L272: ldrh r0, [r2, #2]! add r3, r3, #1 ldr ip, [r4, #2548] add r0, r0, ip str r0, [r4, #2548] - b .L278 -.L277: + b .L271 +.L270: ldr r3, [r4, #2564] cmp r2, r3 addhi r3, r3, #1 strhi r3, [r4, #2564] movhi r3, #0 - bls .L280 -.L282: + bls .L273 +.L275: ldrh r2, [r4, #40] cmp r3, r2 - bcs .L280 + bcs .L273 ldr r0, [r4, #2328] lsl r1, r3, #1 add r3, r3, #1 ldrh r2, [r0, r1] add r2, r2, #1 strh r2, [r0, r1] @ movhi - b .L282 -.L285: + b .L275 +.L278: movw r3, #2344 ldrh r0, [r4, r3] add r0, r0, r0, lsl #1 @@ -2564,53 +2525,53 @@ GetSwlReplaceBlock: add r3, r6, #64 mov r9, r0 cmp r0, r3 - bcc .L287 + bcc .L280 ldr r3, [r4, #2320] cmp r3, #0 - beq .L287 + beq .L280 ldrh r10, [r4, #40] movw r1, #65535 ldr lr, [r4, #2316] mov r0, #0 ldr r8, [r4, #2328] mov r2, r1 -.L288: +.L281: ldrh ip, [r3] movw r5, #65535 cmp ip, r5 - bne .L291 + bne .L284 mov r5, r2 -.L290: +.L283: movw r3, #65535 cmp r5, r3 - beq .L287 + beq .L280 lsl r3, r5, #1 ldrh r10, [r8, r3] cmp r6, r10 - bcs .L292 + bcs .L285 str r3, [fp, #-44] bl GetFreeBlockMinEraseCount ldr r3, [fp, #-44] cmp r6, r0 strcc r1, [r4, #2568] -.L292: +.L285: cmp r7, r10 - bls .L287 + bls .L280 add r2, r10, #128 cmp r9, r2 - ble .L287 + ble .L280 add r2, r10, #256 cmp r7, r2 - bhi .L293 + bhi .L286 ldr r2, [r4, #2564] add r10, r10, #768 cmp r10, r2 - bcs .L287 -.L293: + bcs .L280 +.L286: str r9, [sp, #8] mov r1, r5 ldrh r2, [r8, r3] - ldr r0, .L300+4 + ldr r0, .L293+4 str r2, [sp, #4] ldr r2, [r4, #2324] ldrh r3, [r2, r3] @@ -2620,31 +2581,31 @@ GetSwlReplaceBlock: bl sftl_printk mov r3, #1 str r3, [r4, #3160] - b .L286 -.L291: + b .L279 +.L284: add r0, r0, #1 uxth r0, r0 cmp r0, r10 - bhi .L287 + bhi .L280 ldrh r5, [r3, #4] cmp r5, #0 - beq .L289 + beq .L282 sub r3, r3, lr asr r3, r3, #3 uxth r5, r3 lsl r3, r5, #1 ldrh r3, [r8, r3] cmp r6, r3 - bcs .L290 + bcs .L283 cmp r1, r3 movhi r1, r3 movhi r2, r5 -.L289: +.L282: add r3, lr, ip, lsl #3 - b .L288 -.L301: + b .L281 +.L294: .align 2 -.L300: +.L293: .word .LANCHOR0 .word .LC72 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock @@ -2663,19 +2624,19 @@ free_data_superblock: uxth r0, r0 movw r3, #65535 cmp r0, r3 - beq .L303 - ldr r3, .L304 + beq .L296 + ldr r3, .L297 mov r1, #0 ldr r2, [r3, #2324] lsl r3, r0, #1 strh r1, [r2, r3] @ movhi bl INSERT_FREE_LIST -.L303: +.L296: mov r0, #0 ldmfd sp, {fp, sp, pc} -.L305: +.L298: .align 2 -.L304: +.L297: .word .LANCHOR0 .size free_data_superblock, .-free_data_superblock .align 2 @@ -2694,30 +2655,30 @@ get_new_active_ppa: movw r3, #65535 mov r4, r0 cmp r2, r3 - bne .L307 - movw r2, #2776 - ldr r1, .L320 - ldr r0, .L320+4 + bne .L300 + movw r2, #2740 + ldr r1, .L313 + ldr r0, .L313+4 bl sftl_printk -.L307: - ldr r5, .L320+8 +.L300: + ldr r5, .L313+8 ldrh r2, [r4, #2] ldrh r3, [r5, #102] cmp r2, r3 - bne .L308 - movw r2, #2777 - ldr r1, .L320 - ldr r0, .L320+4 + bne .L301 + movw r2, #2741 + ldr r1, .L313 + ldr r0, .L313+4 bl sftl_printk -.L308: +.L301: ldrh r3, [r4, #4] cmp r3, #0 - bne .L309 - movw r2, #2778 - ldr r1, .L320 - ldr r0, .L320+4 + bne .L302 + movw r2, #2742 + ldr r1, .L313 + ldr r0, .L313+4 bl sftl_printk -.L309: +.L302: ldrb r2, [r4, #6] @ zero_extendqisi2 mov r3, #0 ldrh r1, [r5, #32] @@ -2726,10 +2687,10 @@ get_new_active_ppa: add r2, r4, r2, lsl #1 ldrh r0, [r2, #16] mov r2, r3 -.L310: +.L303: cmp r0, ip ldrb r3, [r4, #6] @ zero_extendqisi2 - beq .L312 + beq .L305 ldrh r2, [r4, #4] ldrh r6, [r4, #2] sub r2, r2, #1 @@ -2737,7 +2698,7 @@ get_new_active_ppa: orr r6, r6, r0, lsl #10 movw r0, #65535 strh r2, [r4, #4] @ movhi -.L314: +.L307: add r3, r3, #1 uxtb r3, r3 cmp r1, r3 @@ -2748,7 +2709,7 @@ get_new_active_ppa: add ip, r4, r3, lsl #1 ldrh ip, [ip, #16] cmp ip, r0 - beq .L314 + beq .L307 strb r3, [r4, #6] cmp r2, #0 ldrh r3, [r4, #2] @@ -2758,15 +2719,15 @@ get_new_active_ppa: lsr r3, r3, #5 moveq r3, #0 cmp r3, #0 - beq .L306 - movw r2, #2799 - ldr r1, .L320 - ldr r0, .L320+4 + beq .L299 + movw r2, #2763 + ldr r1, .L313 + ldr r0, .L313+4 bl sftl_printk -.L306: +.L299: mov r0, r6 ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L312: +.L305: add r3, r3, #1 uxtb r3, r3 cmp r3, r1 @@ -2778,10 +2739,10 @@ get_new_active_ppa: ldrb r3, [r4, #6] @ zero_extendqisi2 add r3, r4, r3, lsl #1 ldrh r0, [r3, #16] - b .L310 -.L321: + b .L303 +.L314: .align 2 -.L320: +.L313: .word .LANCHOR1+111 .word .LC1 .word .LANCHOR0 @@ -2798,26 +2759,26 @@ FtlGcBufInit: mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L327 + ldr r3, .L320 mov lr, #12 mov r4, #1 mov r5, #20 mov r2, #0 str r2, [r3, #3164] -.L323: +.L316: ldrh r1, [r3, #32] uxth r0, r2 add ip, r2, #1 cmp r0, r1 - bcc .L324 + bcc .L317 mov ip, #12 mov lr, #0 -.L325: +.L318: ldr r2, [r3, #3184] cmp r1, r2 - bcc .L326 + bcc .L319 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L324: +.L317: uxth r2, r2 ldr r6, [r3, #3168] mul r0, lr, r2 @@ -2850,8 +2811,8 @@ FtlGcBufInit: ldr r1, [r6, #4] str r1, [r2, #12] mov r2, ip - b .L323 -.L326: + b .L316 +.L319: mul r4, ip, r1 ldr r5, [r3, #3168] add r2, r5, r4 @@ -2878,10 +2839,10 @@ FtlGcBufInit: bic r2, r2, #3 add r2, r4, r2 str r2, [r0, #4] - b .L325 -.L328: + b .L318 +.L321: .align 2 -.L327: +.L320: .word .LANCHOR0 .size FtlGcBufInit, .-FtlGcBufInit .align 2 @@ -2896,37 +2857,37 @@ FtlGcBufFree: mov ip, sp push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L336 + ldr r3, .L329 mov lr, #0 mov r5, #20 mov r7, #12 mov r8, lr ldr r6, [r3, #3184] ldr r4, [r3, #3168] -.L330: +.L323: uxth r3, lr cmp r1, r3 ldmfdls sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} mla ip, r5, r3, r0 mov r2, #0 -.L331: +.L324: uxth r3, r2 cmp r6, r3 - bls .L332 + bls .L325 mul r3, r7, r3 add r2, r2, #1 ldr r10, [r4, r3] add r9, r4, r3 ldr r3, [ip, #8] cmp r10, r3 - bne .L331 + bne .L324 str r8, [r9, #8] -.L332: +.L325: add lr, lr, #1 - b .L330 -.L337: + b .L323 +.L330: .align 2 -.L336: +.L329: .word .LANCHOR0 .size FtlGcBufFree, .-FtlGcBufFree .align 2 @@ -2941,41 +2902,41 @@ FtlGcBufAlloc: mov ip, sp push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L345 + ldr r3, .L338 mov ip, #0 mov r6, #12 mov r7, #1 mov r8, #20 ldr r4, [r3, #3184] ldr r5, [r3, #3168] -.L339: +.L332: uxth r2, ip cmp r1, r2 - bhi .L343 + bhi .L336 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} -.L343: +.L336: mov lr, #0 -.L340: +.L333: uxth r3, lr cmp r4, r3 - bls .L341 + bls .L334 mla r3, r6, r3, r5 add lr, lr, #1 ldr r9, [r3, #8] cmp r9, #0 - bne .L340 + bne .L333 mla r2, r8, r2, r0 ldr lr, [r3] str r7, [r3, #8] str lr, [r2, #8] ldr r3, [r3, #4] str r3, [r2, #12] -.L341: +.L334: add ip, ip, #1 - b .L339 -.L346: + b .L332 +.L339: .align 2 -.L345: +.L338: .word .LANCHOR0 .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 @@ -2990,26 +2951,26 @@ IsBlkInGcList: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r2, .L352 + ldr r2, .L345 movw r1, #3192 uxth r0, r0 ldr r3, [r2, #3188] ldrh r2, [r2, r1] add r2, r3, r2, lsl #1 -.L348: +.L341: cmp r3, r2 - bne .L350 + bne .L343 mov r0, #0 ldmfd sp, {fp, sp, pc} -.L350: +.L343: ldrh r1, [r3], #2 cmp r1, r0 - bne .L348 + bne .L341 mov r0, #1 ldmfd sp, {fp, sp, pc} -.L353: +.L346: .align 2 -.L352: +.L345: .word .LANCHOR0 .size IsBlkInGcList, .-IsBlkInGcList .align 2 @@ -3029,31 +2990,31 @@ FtlGcUpdatePage: mov r5, r1 mov r6, r2 bl P2V_block_in_plane - ldr ip, .L358 + ldr ip, .L351 movw r3, #3192 ldr r2, [ip, #3188] ldrh lr, [ip, r3] mov r3, #0 sub r1, r2, #2 -.L355: +.L348: uxth r7, r3 cmp r7, lr - bcc .L357 - bne .L356 + bcc .L350 + bne .L349 lsl r3, r7, #1 strh r0, [r2, r3] @ movhi movw r2, #3192 ldrh r3, [ip, r2] add r3, r3, #1 strh r3, [ip, r2] @ movhi - b .L356 -.L357: + b .L349 +.L350: ldrh r7, [r1, #2]! add r3, r3, #1 cmp r7, r0 - bne .L355 -.L356: - ldr r0, .L358+4 + bne .L348 +.L349: + ldr r0, .L351+4 mov r3, #12 ldrh r2, [r0] mul r3, r3, r2 @@ -3065,9 +3026,9 @@ FtlGcUpdatePage: add r3, r3, #1 strh r3, [r0] @ movhi ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L359: +.L352: .align 2 -.L358: +.L351: .word .LANCHOR0 .word .LANCHOR0+3200 .size FtlGcUpdatePage, .-FtlGcUpdatePage @@ -3081,47 +3042,33 @@ FtlGcRefreshBlock: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp - push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + push {r4, fp, ip, lr, pc} sub fp, ip, #4 uxth r4, r0 - movw r7, #3202 + ldr r0, .L356 mov r1, r4 - ldr r0, .L365 bl sftl_printk - ldr r3, .L365+4 - ldrh r8, [r3, r7] - cmp r4, r8 - beq .L361 - movw r5, #3204 - ldrh r6, [r3, r5] - cmp r4, r6 - beq .L361 - movw ip, #3206 + ldr r3, .L356+4 + movw ip, #3202 ldrh lr, [r3, ip] cmp r4, lr - beq .L361 - movw r1, #3208 - ldrh r0, [r3, r1] + beq .L354 + movw r2, #3204 + ldrh r0, [r3, r2] cmp r4, r0 - beq .L361 - movw r2, #65535 - cmp r8, r2 - strheq r4, [r3, r7] @ movhi - beq .L361 - cmp r6, r2 - strheq r4, [r3, r5] @ movhi - beq .L361 - cmp lr, r2 + beq .L354 + movw r1, #65535 + cmp lr, r1 strheq r4, [r3, ip] @ movhi - beq .L361 - cmp r0, r2 - strheq r4, [r3, r1] @ movhi -.L361: + beq .L354 + cmp r0, r1 + strheq r4, [r3, r2] @ movhi +.L354: mov r0, #0 - ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L366: + ldmfd sp, {r4, fp, sp, pc} +.L357: .align 2 -.L365: +.L356: .word .LC73 .word .LANCHOR0 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock @@ -3137,48 +3084,48 @@ FtlGcMarkBadPhyBlk: mov ip, sp push {r4, r5, r6, r7, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L371 + ldr r4, .L362 uxth r5, r0 - movw r6, #3210 + movw r6, #3206 mov r0, r5 bl P2V_block_in_plane mov r2, r5 mov r7, r0 ldrh r1, [r4, r6] - ldr r0, .L371+4 + ldr r0, .L362+4 bl sftl_printk mov r0, r7 bl FtlGcRefreshBlock ldrh r3, [r4, r6] mov r2, #0 - ldr r0, .L371+8 -.L368: + ldr r0, .L362+8 +.L359: uxth r1, r2 cmp r3, r1 - bhi .L370 + bhi .L361 cmp r3, #15 - movwls r2, #3210 + movwls r2, #3206 addls r1, r3, #1 strhls r1, [r4, r2] @ movhi lslls r3, r3, #1 - ldrls r2, .L371+8 + ldrls r2, .L362+8 strhls r5, [r2, r3] @ movhi - b .L369 -.L370: + b .L360 +.L361: add r2, r2, #1 add r1, r0, r2, lsl #1 ldrh r1, [r1, #-2] cmp r1, r5 - bne .L368 -.L369: + bne .L359 +.L360: mov r0, #0 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L372: +.L363: .align 2 -.L371: +.L362: .word .LANCHOR0 .word .LC74 - .word .LANCHOR0+3212 + .word .LANCHOR0+3208 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk .align 2 .global FtlGcReFreshBadBlk @@ -3192,24 +3139,24 @@ FtlGcReFreshBadBlk: mov ip, sp push {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L379 - movw r3, #3210 + ldr r4, .L370 + movw r3, #3206 ldrh r2, [r4, r3] cmp r2, #0 - beq .L374 + beq .L365 movw r3, #3202 ldrh r1, [r4, r3] movw r3, #65535 cmp r1, r3 - bne .L374 - movw r3, #3246 - movw r5, #3246 + bne .L365 + movw r3, #3242 + movw r5, #3242 ldrh r1, [r4, r3] cmp r1, r2 movcs r2, #0 strhcs r2, [r4, r3] @ movhi ldrh r3, [r4, r5] - ldr r2, .L379+4 + ldr r2, .L370+4 lsl r3, r3, #1 ldrh r0, [r2, r3] bl P2V_block_in_plane @@ -3217,14 +3164,14 @@ FtlGcReFreshBadBlk: ldrh r3, [r4, r5] add r3, r3, #1 strh r3, [r4, r5] @ movhi -.L374: +.L365: mov r0, #0 ldmfd sp, {r4, r5, fp, sp, pc} -.L380: +.L371: .align 2 -.L379: +.L370: .word .LANCHOR0 - .word .LANCHOR0+3212 + .word .LANCHOR0+3208 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk .align 2 .global ftl_malloc @@ -3238,12 +3185,12 @@ ftl_malloc: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r1, .L382 + ldr r1, .L373 bl __kmalloc ldmfd sp, {fp, sp, pc} -.L383: +.L374: .align 2 -.L382: +.L373: .word 37748929 .size ftl_malloc, .-ftl_malloc .align 2 @@ -3280,46 +3227,46 @@ rknand_print_hex: mov r9, r3 mov r5, r6 mov r4, r6 -.L386: +.L377: cmp r4, r9 - bcc .L392 - ldr r0, .L394 + bcc .L383 + ldr r0, .L385 bl sftl_printk ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L392: +.L383: cmp r5, #0 - bne .L387 + bne .L378 mov r3, r6 mov r2, r7 mov r1, r10 - ldr r0, .L394+4 + ldr r0, .L385+4 bl sftl_printk -.L387: +.L378: cmp r8, #4 ldreq r1, [r7, r4, lsl #2] - ldreq r0, .L394+8 - beq .L393 + ldreq r0, .L385+8 + beq .L384 cmp r8, #2 lsleq r3, r4, #1 - ldreq r0, .L394+12 + ldreq r0, .L385+12 ldrbne r1, [r7, r4] @ zero_extendqisi2 ldrheq r1, [r7, r3] - ldrne r0, .L394+16 -.L393: + ldrne r0, .L385+16 +.L384: add r5, r5, #1 bl sftl_printk cmp r5, #15 - bls .L391 + bls .L382 mov r5, #0 - ldr r0, .L394 + ldr r0, .L385 bl sftl_printk -.L391: +.L382: add r4, r4, #1 add r6, r6, r8 - b .L386 -.L395: + b .L377 +.L386: .align 2 -.L394: +.L385: .word .LC79 .word .LC75 .word .LC76 @@ -3327,432 +3274,102 @@ rknand_print_hex: .word .LC78 .size rknand_print_hex, .-rknand_print_hex .align 2 - .global FlashReadPages - .syntax unified - .arm - .fpu softvfp - .type FlashReadPages, %function -FlashReadPages: - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #8 - mov r6, #0 - ldr r5, .L414 - mov r7, r1 - ldr r9, .L414+4 - mov r4, r0 - ldr r10, .L414+8 - ldrh r8, [r5, #12] -.L397: - cmp r6, r7 - bne .L404 - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L404: - ldr r3, [r4, #8] - cmp r3, #0 - beq .L398 - ldr r3, [r4, #12] - cmp r3, #0 - bne .L399 -.L398: - mov r2, #101 - mov r1, r9 - mov r0, r10 - bl sftl_printk -.L399: - sub r2, fp, #48 - sub r1, fp, #44 - mov r0, r4 - bl l2p_addr_tran - ldr r3, [r4, #12] - ldr ip, [r5, #3260] - ldr r2, [r4, #8] - ldr r1, [fp, #-44] - ldrb r0, [fp, #-48] @ zero_extendqisi2 - blx ip - str r0, [r4] - ldrh r3, [r5, #14] - cmp r3, #4 - bne .L401 - ldr r3, [r4, #12] - ldr r2, [r4, #8] - ldr r1, [fp, #-44] - ldr ip, [r5, #3260] - add r3, r3, #8 - add r2, r2, #2048 - ldrb r0, [fp, #-48] @ zero_extendqisi2 - add r1, r8, r1 - blx ip - cmn r0, #1 - beq .L402 - ldr r3, [r4, #12] - ldr r2, [r3, #12] - cmn r2, #1 - bne .L401 - ldr r2, [r3, #8] - cmn r2, #1 - bne .L401 - ldr r3, [r3] - cmn r3, #1 - beq .L401 -.L402: - mvn r3, #0 - str r3, [r4] -.L401: - add r6, r6, #1 - add r4, r4, #20 - b .L397 -.L415: - .align 2 -.L414: - .word .LANCHOR0 - .word .LANCHOR1+130 - .word .LC1 - .size FlashReadPages, .-FlashReadPages - .align 2 - .global FtlLoadFactoryBbt - .syntax unified - .arm - .fpu softvfp - .type FtlLoadFactoryBbt, %function -FtlLoadFactoryBbt: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L426 - mov r6, #0 - mvn r9, #0 - ldr r3, [r4, #3284] - add r7, r4, #162 - ldr r8, [r4, #3288] - add r10, r4, #3264 - str r3, [r4, #3272] - str r8, [r4, #3276] -.L417: - ldrh r3, [r4, #54] - cmp r6, r3 - bcc .L422 - mov r0, #0 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L422: - ldrh r5, [r4, #98] - strh r9, [r7, #2]! @ movhi -.L419: - ldrh r3, [r4, #98] - sub r5, r5, #1 - uxth r5, r5 - sub r2, r3, #16 - cmp r5, r2 - ble .L420 - mla r3, r6, r3, r5 - mov r2, #1 - mov r1, r2 - mov r0, r10 - lsl r3, r3, #10 - str r3, [r4, #3268] - bl FlashReadPages - ldr r3, [r4, #3264] - cmn r3, #1 - beq .L419 - ldrh r2, [r8] - movw r3, #61664 - cmp r2, r3 - bne .L419 - strh r5, [r7] @ movhi -.L420: - add r6, r6, #1 - b .L417 -.L427: - .align 2 -.L426: - .word .LANCHOR0 - .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt - .align 2 - .global FtlGetLastWrittenPage - .syntax unified - .arm - .fpu softvfp - .type FtlGetLastWrittenPage, %function -FtlGetLastWrittenPage: - @ args = 0, pretend = 0, frame = 84 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #84 - cmp r1, #1 - ldr r3, .L439 - lsl r6, r0, #10 - mov r2, r1 - mov r7, r1 - sub r0, fp, #116 - ldrheq r5, [r3, #104] - mov r1, #1 - ldrhne r5, [r3, #102] - ldr r3, .L439+4 - sub r5, r5, #1 - sxth r5, r5 - str r3, [fp, #-108] - sub r3, fp, #96 - str r3, [fp, #-104] - orr r3, r5, r6 - str r3, [fp, #-112] - bl FlashReadPages - ldr r3, [fp, #-96] - cmn r3, #1 - moveq r8, #0 - beq .L432 -.L431: - mov r0, r5 - sub sp, fp, #32 - ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L435: - add r3, r8, r5 - mov r2, r7 - add r3, r3, r3, lsr #31 - mov r1, #1 - sub r0, fp, #116 - asr r4, r3, #1 - sxth r3, r4 - orr r3, r3, r6 - str r3, [fp, #-112] - bl FlashReadPages - ldr r3, [fp, #-96] - cmn r3, #1 - bne .L433 - ldr r3, [fp, #-92] - cmn r3, #1 - bne .L433 - ldr r3, [fp, #-116] - cmn r3, #1 - subne r4, r4, #1 - sxthne r5, r4 - bne .L432 -.L433: - add r4, r4, #1 - sxth r8, r4 -.L432: - cmp r8, r5 - ble .L435 - b .L431 -.L440: - .align 2 -.L439: - .word .LANCHOR0 - .word ftl_temp_buf - .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage - .align 2 - .global FlashProgPages - .syntax unified - .arm - .fpu softvfp - .type FlashProgPages, %function -FlashProgPages: - @ args = 0, pretend = 0, frame = 32 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #32 - mov r9, r3 - ldr r6, .L471 - mov r10, r1 - mov r8, r2 - mov r4, r0 - mov r5, r0 - mov r7, #0 - ldrh r3, [r6, #12] - str r3, [fp, #-72] -.L442: - cmp r7, r10 - bne .L450 - cmp r9, #0 - bne .L457 -.L470: - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L450: - ldr r3, [r5, #8] - cmp r3, #0 - beq .L443 - ldr r3, [r5, #12] - cmp r3, #0 - bne .L444 -.L443: - mov r2, #131 - ldr r1, .L471+4 - ldr r0, .L471+8 - bl sftl_printk -.L444: - sub r2, fp, #68 - sub r1, fp, #64 - mov r0, r5 - bl l2p_addr_tran - ldr r3, [r5, #12] - ldr ip, [r6, #3256] - ldr r2, [r5, #8] - ldr r1, [fp, #-64] - ldrb r0, [fp, #-68] @ zero_extendqisi2 - blx ip - cmp r0, #0 - mvnne r3, #0 - streq r0, [r5] - strne r3, [r5] - ldrh r3, [r6, #14] - cmp r3, #4 - bne .L448 - ldr r0, [fp, #-72] - ldr r3, [r5, #12] - ldr r2, [r5, #8] - ldr r1, [fp, #-64] - add r3, r3, #8 - ldr ip, [r6, #3256] - add r2, r2, #2048 - add r1, r0, r1 - ldrb r0, [fp, #-68] @ zero_extendqisi2 - blx ip - cmp r0, #0 - mvnne r3, #0 - strne r3, [r5] -.L448: - add r7, r7, #1 - add r5, r5, #20 - b .L442 -.L455: - mov r3, #0 - mov r2, r8 - str r3, [r9] - mov r1, #1 - str r3, [r6, #3292] - sub r0, fp, #60 - ldr r3, [r4, #4] - str r9, [fp, #-52] - str r10, [fp, #-48] - str r3, [fp, #-56] - bl FlashReadPages - ldr r3, [fp, #-60] - cmn r3, #1 - bne .L452 - ldr r1, [r4, #4] - ldr r0, .L471+12 - str r3, [fp, #-72] - bl sftl_printk - ldr r3, [fp, #-72] - str r3, [r4] -.L452: - ldr r3, [r4, #12] - cmp r3, #0 - beq .L453 - ldr r2, [r3] - ldr r3, [r6, #3292] - cmp r2, r3 - beq .L453 - ldr r1, [r4, #4] - ldr r0, .L471+16 - bl sftl_printk - mvn r3, #0 - str r3, [r4] -.L453: - ldr r3, [r4, #8] - cmp r3, #0 - beq .L454 - ldr r2, [r3] - ldr r3, [r9] - cmp r2, r3 - beq .L454 - ldr r1, [r4, #4] - ldr r0, .L471+20 - bl sftl_printk - mvn r3, #0 - str r3, [r4] -.L454: - add r5, r5, #1 - add r4, r4, #20 -.L451: - cmp r7, r5 - bne .L455 - b .L470 -.L457: - mov r5, #0 - ldr r9, .L471+24 - ldr r10, .L471+28 - b .L451 -.L472: - .align 2 -.L471: - .word .LANCHOR0 - .word .LANCHOR1+145 - .word .LC1 - .word .LC80 - .word .LC81 - .word .LC82 - .word check_buf - .word .LANCHOR0+3292 - .size FlashProgPages, .-FlashProgPages - .align 2 .global FlashEraseBlocks .syntax unified .arm .fpu softvfp .type FlashEraseBlocks, %function FlashEraseBlocks: - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 12 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp - push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 - sub sp, sp, #8 - mov r6, #0 - ldr r5, .L484 - mov r7, r2 + sub sp, sp, #12 + mov r7, #0 + ldr r6, .L403 + mov r8, r2 mov r4, r0 - ldrh r8, [r5, #12] -.L474: - cmp r6, r7 - bne .L480 - mov r0, #0 - sub sp, fp, #32 - ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L480: - sub r2, fp, #40 - sub r1, fp, #36 - mov r0, r4 + mov r5, r0 + ldrh r9, [r6, #12] + lsl r10, r9, #3 +.L388: + cmp r7, r8 + beq .L392 + sub r2, fp, #48 + sub r1, fp, #44 + mov r0, r5 bl l2p_addr_tran - ldr r3, [r5, #3252] - ldr r1, [fp, #-36] - ldrb r0, [fp, #-40] @ zero_extendqisi2 - blx r3 - cmp r0, #0 - mvnne r3, #0 - streq r0, [r4] - strne r3, [r4] - ldrh r3, [r5, #14] - cmp r3, #4 - bne .L478 - ldr r1, [fp, #-36] - ldr r3, [r5, #3252] - ldrb r0, [fp, #-40] @ zero_extendqisi2 - add r1, r8, r1 - blx r3 - cmp r0, #0 - mvnne r3, #0 - strne r3, [r4] -.L478: - add r6, r6, #1 + ldr ip, [fp, #-48] + cmp ip, #0 + bne .L389 + ldr r3, [fp, #-44] + cmp r10, r3 + bls .L389 + ldr r5, .L403+4 + ldr r6, .L403+8 + b .L402 +.L391: + mvn r3, #0 + ldr r2, [fp, #-44] + str r3, [r4, #-20] + mov r1, r5 + mov r0, r6 + str ip, [fp, #-52] + bl sftl_printk + mov r3, #16 + mov r2, #4 + ldr r1, [r4, #-12] + ldr r0, .L403+12 + bl rknand_print_hex + mov r3, #4 + ldr r1, [r4, #-8] + mov r2, r3 + ldr r0, .L403+16 + bl rknand_print_hex + ldr ip, [fp, #-52] + add ip, ip, #1 +.L402: + cmp ip, r8 add r4, r4, #20 - b .L474 -.L485: + bne .L391 + bl dump_stack +.L392: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L389: + ldr r3, [r6, #3248] + uxtb r0, ip + ldr r1, [fp, #-44] + blx r3 + cmp r0, #0 + mvnne r3, #0 + streq r0, [r5] + strne r3, [r5] + ldrh r3, [r6, #14] + cmp r3, #4 + bne .L396 + ldr r1, [fp, #-44] + ldr r3, [r6, #3248] + ldrb r0, [fp, #-48] @ zero_extendqisi2 + add r1, r9, r1 + blx r3 + cmp r0, #0 + mvnne r3, #0 + strne r3, [r5] +.L396: + add r7, r7, #1 + add r5, r5, #20 + b .L388 +.L404: .align 2 -.L484: +.L403: .word .LANCHOR0 + .word .LANCHOR1+130 + .word .LC80 + .word .LC81 + .word .LC82 .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global FtlFreeSysBlkQueueIn @@ -3773,16 +3390,16 @@ FtlFreeSysBlkQueueIn: uxth r3, r3 cmp r3, r2 ldmfdhi sp, {r4, r5, r6, fp, sp, pc} - ldr r4, .L495 + ldr r4, .L414 ldrh r3, [r4, #218] cmp r3, #1024 ldmfdeq sp, {r4, r5, r6, fp, sp, pc} cmp r1, #0 - beq .L488 + beq .L407 mov r0, r5 bl P2V_block_in_plane mov r6, r0 - ldr r0, [r4, #3804] + ldr r0, [r4, #3260] lsl r3, r5, #10 mov r2, #1 mov r1, r2 @@ -3796,7 +3413,7 @@ FtlFreeSysBlkQueueIn: ldr r3, [r4, #2560] add r3, r3, #1 str r3, [r4, #2560] -.L488: +.L407: ldrh r3, [r4, #218] add r3, r3, #1 strh r3, [r4, #218] @ movhi @@ -3807,262 +3424,12 @@ FtlFreeSysBlkQueueIn: strh r5, [r2, #220] @ movhi strh r3, [r4, #216] @ movhi ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L496: +.L415: .align 2 -.L495: +.L414: .word .LANCHOR0 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .align 2 - .global FtlLowFormatEraseBlock - .syntax unified - .arm - .fpu softvfp - .type FtlLowFormatEraseBlock, %function -FtlLowFormatEraseBlock: - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #24 - uxth r3, r0 - mov r10, #0 - uxtb r6, r1 - str r3, [fp, #-48] - mov r5, r10 - ldr r3, .L539 - mov r4, r10 - ldr r2, [fp, #-48] - mov r9, #20 - mov r8, r3 - str r2, [r3, #3808] -.L498: - ldrh r1, [r8, #32] - uxth r2, r10 - cmp r1, r2 - bhi .L502 - cmp r5, #0 - beq .L497 - mov r7, #0 - mov r9, #20 - mov r2, r5 - mov r1, #0 - ldr r0, [r8, #3804] - bl FlashEraseBlocks -.L505: - uxth r2, r7 - cmp r5, r2 - bhi .L507 -.L508: - cmp r6, #0 - ldrhne r3, [r8, #104] - moveq r3, #6 - ldr r8, .L539 - streq r3, [fp, #-60] - moveq r3, #1 - strne r3, [fp, #-52] - lsrne r3, r3, #2 - mov r10, r8 - streq r3, [fp, #-52] - strne r3, [fp, #-60] - movne r3, #1 - strne r3, [fp, #-56] - mov r3, #0 - streq r6, [fp, #-56] - str r3, [fp, #-44] -.L517: - mov r7, #0 - mov r5, r7 -.L509: - ldrh r1, [r8, #32] - uxth r3, r7 - cmp r1, r3 - bhi .L512 - cmp r5, #0 - beq .L497 - ldr r2, [fp, #-56] - mov r3, #1 - mov r1, r5 - ldr r0, [r8, #3804] - bl FlashProgPages - mov r9, #0 - mov r2, #20 -.L514: - uxth r3, r9 - cmp r5, r3 - bhi .L516 - ldr r3, [fp, #-44] - ldr r2, [fp, #-60] - add r7, r3, r2 - uxth r3, r7 - str r3, [fp, #-44] - ldr r2, [fp, #-44] - ldr r3, [fp, #-52] - cmp r3, r2 - bhi .L517 - mov r7, #0 - mov r9, #20 -.L518: - uxth r3, r7 - cmp r5, r3 - bhi .L520 - ldr r3, [fp, #-48] - adds r6, r6, #0 - movne r6, #1 - cmp r3, #63 - movhi r8, r6 - orrls r8, r6, #1 - cmp r8, #0 - beq .L497 - mov r2, r5 - ldr r1, [fp, #-56] - ldr r0, [r10, #3804] - bl FlashEraseBlocks -.L497: - mov r0, r4 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L502: - uxth r2, r10 - ldr r0, [r8, #3804] - mov r3, #0 - mul r1, r9, r2 - add r2, r8, r2 - str r3, [r0, r1] - ldr r1, [fp, #-48] - ldrb r0, [r2, #60] @ zero_extendqisi2 - bl V2P_block - cmp r6, #0 - mov r7, r0 - beq .L499 - bl IsBlkInVendorPart - cmp r0, #0 - bne .L500 -.L499: - mov r0, r7 - bl FtlBbmIsBadBlock - cmp r0, #0 - addne r4, r4, #1 - uxthne r4, r4 - bne .L500 - ldr r1, [r8, #3804] - lsl r7, r7, #10 - ldr r2, [r8, #3812] - mla r1, r9, r5, r1 - str r2, [r1, #8] - ldrh r2, [r8, #112] - str r7, [r1, #4] - mul r2, r5, r2 - add r5, r5, #1 - uxth r5, r5 - add r0, r2, #3 - cmp r2, #0 - movlt r2, r0 - ldr r0, [r8, #3816] - bic r2, r2, #3 - add r2, r0, r2 - str r2, [r1, #12] -.L500: - add r10, r10, #1 - b .L498 -.L507: - mul r2, r9, r7 - ldr r1, [r8, #3804] - add r0, r1, r2 - ldr r2, [r1, r2] - cmn r2, #1 - bne .L506 - ldr r0, [r0, #4] - add r4, r4, #1 - uxth r4, r4 - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock -.L506: - add r7, r7, #1 - b .L505 -.L512: - uxth r3, r7 - mov r2, #20 - ldr r0, [r8, #3804] - mul r1, r2, r3 - mov r2, #0 - add r3, r8, r3 - str r2, [r0, r1] - ldr r1, [fp, #-48] - ldrb r0, [r3, #60] @ zero_extendqisi2 - bl V2P_block - cmp r6, #0 - mov r9, r0 - beq .L510 - bl IsBlkInVendorPart - cmp r0, #0 - bne .L511 -.L510: - mov r0, r9 - bl FtlBbmIsBadBlock - cmp r0, #0 - bne .L511 - ldr r1, [r8, #3804] - mov r3, #20 - mla r1, r3, r5, r1 - ldr r3, [fp, #-44] - add r9, r3, r9, lsl #10 - ldr r3, [r8, #3820] - str r9, [r1, #4] - str r3, [r1, #8] - ldrh r3, [r8, #112] - mul r3, r5, r3 - add r5, r5, #1 - uxth r5, r5 - add r0, r3, #3 - cmp r3, #0 - movlt r3, r0 - ldr r0, [r8, #3812] - bic r3, r3, #3 - add r3, r0, r3 - str r3, [r1, #12] -.L511: - add r7, r7, #1 - b .L509 -.L516: - mul r3, r2, r9 - ldr r1, [r10, #3804] - add r0, r1, r3 - ldr r3, [r1, r3] - cmp r3, #0 - beq .L515 - ldr r0, [r0, #4] - add r4, r4, #1 - str r2, [fp, #-64] - uxth r4, r4 - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock - ldr r2, [fp, #-64] -.L515: - add r9, r9, #1 - b .L514 -.L520: - cmp r6, #0 - beq .L519 - mul r3, r9, r7 - ldr r2, [r10, #3804] - add r1, r2, r3 - ldr r3, [r2, r3] - cmp r3, #0 - bne .L519 - ldr r0, [r1, #4] - mov r1, #1 - ubfx r0, r0, #10, #16 - bl FtlFreeSysBlkQueueIn -.L519: - add r7, r7, #1 - b .L518 -.L540: - .align 2 -.L539: - .word .LANCHOR0 - .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock - .align 2 .global FtlFreeSysBlkQueueOut .syntax unified .arm @@ -4072,62 +3439,49 @@ FtlFreeSysBlkQueueOut: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp - push {r4, r5, r6, r7, fp, ip, lr, pc} + push {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L548 - ldr r6, .L548+4 -.L542: - ldrh r1, [r4, #218] - cmp r1, #0 - beq .L543 + ldr r4, .L421 + ldrh r2, [r4, #218] + cmp r2, #0 + movweq r5, #65535 + beq .L417 ldrh r3, [r4, #214] - sub r1, r1, #1 - strh r1, [r4, #218] @ movhi - add r2, r4, r3, lsl #1 + sub r2, r2, #1 + ldr r0, [r4, #3260] + strh r2, [r4, #218] @ movhi + mov r2, #1 + add r1, r4, r3, lsl #1 add r3, r3, #1 ubfx r3, r3, #0, #10 - ldrh r5, [r2, #220] - strh r3, [r4, #214] @ movhi - mov r0, r5 - bl P2V_block_in_plane - mov r7, r0 - ldr r0, [r4, #3804] - lsl r3, r5, #10 - mov r2, #1 + ldrh r5, [r1, #220] mov r1, r2 + strh r3, [r4, #214] @ movhi + lsl r3, r5, #10 str r3, [r0, #4] bl FlashEraseBlocks - ldr r2, [r4, #2328] - lsl r0, r7, #1 - ldrh r3, [r2, r0] - add r3, r3, #1 - strh r3, [r2, r0] @ movhi - movw r2, #65533 ldr r3, [r4, #2560] add r3, r3, #1 str r3, [r4, #2560] +.L417: sub r3, r5, #1 + movw r2, #65533 uxth r3, r3 cmp r3, r2 - bhi .L544 - mov r0, r5 - ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L543: - ldr r0, .L548+8 - bl sftl_printk -.L546: - b .L546 -.L544: + bls .L418 ldrh r2, [r4, #218] mov r1, r5 - mov r0, r6 + ldr r0, .L421+4 bl sftl_printk - b .L542 -.L549: +.L419: + b .L419 +.L418: + mov r0, r5 + ldmfd sp, {r4, r5, fp, sp, pc} +.L422: .align 2 -.L548: +.L421: .word .LANCHOR0 - .word .LC84 .word .LC83 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 2 @@ -4146,16 +3500,16 @@ ftl_map_blk_alloc_new_blk: mov r4, r0 mov r3, #0 ldr r2, [r0, #12] -.L551: +.L424: uxth r5, r3 cmp r5, r1 - bcs .L554 + bcs .L427 mov r7, r2 add r3, r3, #1 ldrh r6, [r7] add r2, r2, #2 cmp r6, #0 - bne .L551 + bne .L424 bl FtlFreeSysBlkQueueOut sub r3, r0, #1 movw r2, #65533 @@ -4163,14 +3517,14 @@ ftl_map_blk_alloc_new_blk: mov r1, r0 strh r0, [r7] @ movhi cmp r3, r2 - bls .L552 - ldr r3, .L558 - ldr r0, .L558+4 + bls .L425 + ldr r3, .L431 + ldr r0, .L431+4 ldrh r2, [r3, #218] bl sftl_printk -.L553: - b .L553 -.L552: +.L426: + b .L426 +.L425: ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi strh r5, [r4] @ movhi @@ -4179,82 +3533,26 @@ ftl_map_blk_alloc_new_blk: ldrh r3, [r4, #8] add r3, r3, #1 strh r3, [r4, #8] @ movhi -.L554: +.L427: ldrh r3, [r4, #10] cmp r3, r5 - bhi .L556 - movw r2, #603 - ldr r1, .L558+8 - ldr r0, .L558+12 + bhi .L429 + movw r2, #578 + ldr r1, .L431+8 + ldr r0, .L431+12 bl sftl_printk -.L556: +.L429: mov r0, #0 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L559: +.L432: .align 2 -.L558: +.L431: .word .LANCHOR0 - .word .LC85 - .word .LANCHOR1+160 + .word .LC84 + .word .LANCHOR1+147 .word .LC1 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 - .global FlashTestBlk - .syntax unified - .arm - .fpu softvfp - .type FlashTestBlk, %function -FlashTestBlk: - @ args = 0, pretend = 0, frame = 84 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #84 - uxth r4, r0 - cmp r4, #11 - movls r4, #0 - bls .L560 - ldr r5, .L563 - sub r0, fp, #84 - mov r2, #32 - mov r1, #165 - str r0, [fp, #-92] - lsl r4, r4, #10 - str r5, [fp, #-96] - bl memset - ldr r3, .L563+4 - mov r2, #1 - mov r1, r2 - sub r0, fp, #104 - str r4, [fp, #-100] - str r3, [r5] - str r3, [r5, #4] - bl FlashEraseBlocks - mov r3, #1 - sub r0, fp, #104 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldr r4, [fp, #-104] - mov r2, #1 - mov r1, #0 - sub r0, fp, #104 - adds r4, r4, #0 - movne r4, #1 - rsb r4, r4, #0 - bl FlashEraseBlocks -.L560: - mov r0, r4 - sub sp, fp, #20 - ldmfd sp, {r4, r5, fp, sp, pc} -.L564: - .align 2 -.L563: - .word ftl_temp_buf - .word 1515870810 - .size FlashTestBlk, .-FlashTestBlk - .align 2 .global FlashGetBadBlockList .syntax unified .arm @@ -4266,42 +3564,42 @@ FlashGetBadBlockList: mov ip, sp push {r4, r5, r6, fp, ip, lr, pc} sub fp, ip, #4 - ldr r5, .L572 + ldr r5, .L440 mov r4, r0 mov r6, r1 mov r2, #256 mov r1, #255 bl memset - ldr r3, [r5, #3248] + ldr r3, [r5, #3244] mov r1, r6 mov r0, r4 blx r3 uxth r0, r0 cmp r0, #50 - bls .L566 + bls .L434 mov r2, #256 mov r1, #255 mov r0, r4 bl memset mov r0, #0 -.L566: +.L434: ldrh r3, [r5, #14] cmp r3, #4 moveq r3, r4 addeq r1, r3, r0, lsl #1 - beq .L568 + beq .L436 ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L569: +.L437: ldrh r2, [r3] lsr r2, r2, #1 strh r2, [r3], #2 @ movhi -.L568: +.L436: cmp r3, r1 - bne .L569 + bne .L437 ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L573: +.L441: .align 2 -.L572: +.L440: .word .LANCHOR0 .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 2 @@ -4318,9 +3616,9 @@ ftl_memset: sub fp, ip, #4 cmp r2, #0 mov r4, r0 - beq .L575 + beq .L443 bl memset -.L575: +.L443: mov r0, r4 ldmfd sp, {r4, fp, sp, pc} .size ftl_memset, .-ftl_memset @@ -4336,12 +3634,12 @@ FtlMemInit: mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L680 + ldr r4, .L548 movw r3, #65535 movw r2, #3202 mov r5, #0 - mov r6, #12 - str r3, [r4, #3828] + mov r7, #12 + str r3, [r4, #3268] mvn r3, #0 strh r3, [r4, r2] @ movhi movw r2, #3204 @@ -4356,13 +3654,13 @@ FtlMemInit: strh r2, [r4, r3] @ movhi movw r3, #3156 strh r5, [r4, r3] @ movhi - movw r3, #3210 + movw r3, #3206 strh r5, [r4, r3] @ movhi lsl r0, r0, #1 - movw r3, #3246 + movw r3, #3242 str r5, [r4, #2544] strh r5, [r4, r3] @ movhi - mov r7, #20 + mov r6, #20 str r5, [r4, #2528] str r5, [r4, #2516] str r5, [r4, #2512] @@ -4374,74 +3672,84 @@ FtlMemInit: str r5, [r4, #2560] str r5, [r4, #2564] str r5, [r4, #2568] - str r5, [r4, #3824] + str r5, [r4, #3264] str r5, [r4, #3160] - str r5, [r4, #3832] + str r5, [r4, #3272] str r5, [r4, #3152] - str r5, [r4, #3808] + str r5, [r4, #3276] bl ftl_malloc str r0, [r4, #3188] ldrh r0, [r4, #106] - mul r0, r6, r0 + mul r0, r7, r0 bl ftl_malloc ldrh r3, [r4, #32] str r0, [r4, #3196] - mul r7, r7, r3 - lsl r8, r7, #2 + mul r6, r6, r3 + lsl r8, r6, #2 mov r0, r8 bl ftl_malloc - str r0, [r4, #3836] - mov r0, r7 + str r0, [r4, #3280] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3840] + str r0, [r4, #3284] mov r0, r8 bl ftl_malloc - str r0, [r4, #3844] - mov r0, r7 + str r0, [r4, #3288] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3804] - mov r0, r7 + str r0, [r4, #3260] + mov r0, r6 bl ftl_malloc ldrh r3, [r4, #32] - ldrh r7, [r4, #110] + ldrh r6, [r4, #110] str r0, [r4, #3180] lsl r3, r3, #1 - mov r0, r7 + mov r0, r6 add r3, r3, #1 str r3, [r4, #3184] bl ftl_malloc - str r0, [r4, #3284] - mov r0, r7 + str r0, [r4, #3292] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3848] - mov r0, r7 + str r0, [r4, #3296] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3852] + str r0, [r4, #3300] ldr r0, [r4, #3184] - mul r0, r0, r7 + mul r0, r0, r6 bl ftl_malloc str r0, [r4, #3172] - mov r0, r7 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3820] - mov r0, r7 + str r0, [r4, #3304] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3812] + str r0, [r4, #3308] ldr r0, [r4, #3184] - mul r0, r6, r0 + mul r0, r7, r0 bl ftl_malloc - ldrh r3, [r4, #112] - ldrh r7, [r4, #32] str r0, [r4, #3168] - mul r7, r7, r3 - mov r0, r7 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3288] - lsl r0, r7, #2 - add r7, r4, #3856 + str r0, [r4, #3312] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3316] + ldrh r0, [r4, #58] + lsl r0, r0, #2 bl ftl_malloc ldrh r3, [r4, #112] - str r0, [r4, #3816] + ldrh r6, [r4, #32] + str r0, [r4, #3320] + mul r6, r6, r3 + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3324] + lsl r0, r6, #2 + movw r6, #3332 + bl ftl_malloc + ldrh r3, [r4, #112] + str r0, [r4, #3328] ldr r0, [r4, #3184] mul r0, r0, r3 bl ftl_malloc @@ -4449,36 +3757,36 @@ FtlMemInit: ldrh r0, [r4, #42] lsl r0, r0, #1 uxth r0, r0 - strh r0, [r7] @ movhi + strh r0, [r4, r6] @ movhi bl ftl_malloc - str r0, [r4, #3860] - ldrh r0, [r7] - ldr r3, .L680+4 + str r0, [r4, #3336] + ldrh r0, [r4, r6] + ldr r3, .L548+4 add r0, r0, #544 add r0, r0, #3 lsr r0, r0, #9 - strh r0, [r7] @ movhi + strh r0, [r4, r6] @ movhi and r0, r3, r0, lsl #9 bl ftl_malloc - ldrh r7, [r4, #42] - str r0, [r4, #3864] + ldrh r6, [r4, #42] + str r0, [r4, #3340] add r0, r0, #32 str r0, [r4, #2328] - lsl r7, r7, #1 - mov r0, r7 + lsl r6, r6, #1 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3868] - mov r0, r7 + str r0, [r4, #3344] + mov r0, r6 bl ftl_malloc - ldr r7, [r4, #128] + ldr r6, [r4, #128] str r0, [r4, #2324] - lsl r7, r7, #1 - mov r0, r7 + lsl r6, r6, #1 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3872] - mov r0, r7 + str r0, [r4, #3348] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3876] + str r0, [r4, #3352] ldrh r0, [r4, #42] lsr r0, r0, #3 add r0, r0, #4 @@ -4491,37 +3799,37 @@ FtlMemInit: ldrh r0, [r4, #120] lsl r0, r0, #1 bl ftl_malloc - str r0, [r4, #3880] + str r0, [r4, #3356] ldrh r0, [r4, #120] lsl r0, r0, #2 bl ftl_malloc - str r0, [r4, #3884] + str r0, [r4, #3360] ldrh r0, [r4, #122] lsl r0, r0, #2 bl ftl_malloc ldrh r2, [r4, #122] mov r1, r5 - str r0, [r4, #3888] - add r5, r4, #3904 + str r0, [r4, #3364] + movw r5, #3380 lsl r2, r2, #2 bl ftl_memset ldrh r0, [r4, #136] lsl r0, r0, #2 bl ftl_malloc - str r0, [r4, #3892] + str r0, [r4, #3368] ldr r0, [r4, #128] lsl r0, r0, #2 bl ftl_malloc - str r0, [r4, #3896] + str r0, [r4, #3372] ldrh r0, [r4, #138] - mul r0, r6, r0 + mul r0, r7, r0 bl ftl_malloc ldrh r3, [r4, #138] str r0, [r4, #2492] ldrh r0, [r4, #110] mul r0, r0, r3 bl ftl_malloc - str r0, [r4, #3900] + str r0, [r4, #3376] ldrh r0, [r4, #42] lsl r0, r0, #3 bl ftl_malloc @@ -4530,152 +3838,152 @@ FtlMemInit: ldrh r3, [r4, #54] add r0, r0, #31 asr r0, r0, #5 - strh r0, [r5] @ movhi + strh r0, [r4, r5] @ movhi mul r0, r0, r3 lsl r0, r0, #2 bl ftl_malloc - ldrh r2, [r5] + ldrh r2, [r4, r5] add ip, r4, #180 ldrh lr, [r4, #54] mov r3, #1 str r0, [r4, #180] lsl r2, r2, #2 mov r1, r2 -.L580: +.L448: cmp r3, lr - bcc .L581 - ldr r2, .L680+8 + bcc .L449 + ldr r2, .L548+8 mov r1, #0 add r3, r2, r3, lsl #2 add r2, r2, #56 add r3, r3, #24 -.L582: +.L450: cmp r2, r3 - bne .L583 - ldr r3, [r4, #3872] + bne .L451 + ldr r3, [r4, #3348] cmp r3, #0 - bne .L584 -.L586: - ldr r1, .L680+12 - ldr r0, .L680+16 + bne .L452 +.L454: + ldr r1, .L548+12 + ldr r0, .L548+16 bl sftl_printk mvn r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L581: +.L449: ldr r0, [r4, #180] add r3, r3, #1 add r0, r0, r1 add r1, r1, r2 str r0, [ip, #4]! - b .L580 -.L583: + b .L448 +.L451: str r1, [r3, #4]! - b .L582 -.L584: - ldr r3, [r4, #3876] + b .L450 +.L452: + ldr r3, [r4, #3352] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3892] + beq .L454 + ldr r3, [r4, #3368] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3896] + beq .L454 + ldr r3, [r4, #3372] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #2492] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3900] + beq .L454 + ldr r3, [r4, #3376] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #2316] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #180] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #2324] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #3188] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #3196] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3836] + beq .L454 + ldr r3, [r4, #3280] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3844] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3804] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3180] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3840] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3284] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3848] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3852] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3172] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3820] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3812] - cmp r3, #0 - beq .L586 - ldr r3, [r4, #3168] - cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #3288] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3816] + beq .L454 + ldr r3, [r4, #3260] cmp r3, #0 - beq .L586 + beq .L454 + ldr r3, [r4, #3180] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3284] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3292] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3296] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3300] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3172] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3304] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3308] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3168] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3324] + cmp r3, #0 + beq .L454 + ldr r3, [r4, #3328] + cmp r3, #0 + beq .L454 ldr r3, [r4, #3176] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #2328] cmp r3, #0 - beq .L586 - ldr r3, [r4, #3860] + beq .L454 + ldr r3, [r4, #3336] cmp r3, #0 - beq .L586 + beq .L454 ldr r3, [r4, #148] cmp r3, #0 - beq .L586 - ldr r3, .L680 - ldr r2, [r3, #3880] + beq .L454 + ldr r3, .L548 + ldr r2, [r3, #3356] cmp r2, #0 - beq .L586 - ldr r2, [r3, #3884] + beq .L454 + ldr r2, [r3, #3360] cmp r2, #0 - beq .L586 - ldr r3, [r3, #3888] + beq .L454 + ldr r3, [r3, #3364] cmp r3, #0 - beq .L586 + beq .L454 mov r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L681: +.L549: .align 2 -.L680: +.L548: .word .LANCHOR0 .word 33553920 .word .LANCHOR0+152 - .word .LANCHOR1+186 - .word .LC86 + .word .LANCHOR1+173 + .word .LC85 .size FtlMemInit, .-FtlMemInit .align 2 .global FtlBbt2Bitmap @@ -4687,34 +3995,35 @@ FtlBbt2Bitmap: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp - push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} sub fp, ip, #4 - ldr r6, .L688 + ldr r6, .L556 + movw r3, #3380 mov r4, r0 - mov r7, r1 - ldr r8, .L688+4 + ldr r8, .L556+4 sub r5, r4, #2 - ldrh r2, [r6] + ldrh r2, [r6, r3] add r4, r4, #1020 + ldr r9, .L556+8 + mov r7, r1 add r4, r4, #2 - sub r6, r6, #3904 mov r1, #0 mov r0, r7 lsl r2, r2, #2 bl ftl_memset -.L685: +.L553: ldrh r3, [r5, #2] movw r2, #65535 cmp r3, r2 - ldmfdeq sp, {r4, r5, r6, r7, r8, fp, sp, pc} + ldmfdeq sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} ldrh r2, [r6, #98] cmp r2, r3 - bhi .L684 + bhi .L552 mov r2, #74 mov r1, r8 - ldr r0, .L688+8 + mov r0, r9 bl sftl_printk -.L684: +.L552: ldrh r3, [r5, #2]! mov r0, #1 cmp r4, r5 @@ -4723,13 +4032,13 @@ FtlBbt2Bitmap: ldr r2, [r7, r1, lsl #2] orr r3, r2, r0, lsl r3 str r3, [r7, r1, lsl #2] - bne .L685 - ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L689: + bne .L553 + ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L557: .align 2 -.L688: - .word .LANCHOR0+3904 - .word .LANCHOR1+197 +.L556: + .word .LANCHOR0 + .word .LANCHOR1+184 .word .LC1 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap .align 2 @@ -4739,1964 +4048,109 @@ FtlBbt2Bitmap: .fpu softvfp .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 4 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 - sub sp, sp, #8 + sub sp, sp, #4 mov r1, #0 ldrh r2, [r0, #10] mov r4, r0 ldr r5, [r0, #20] - ldr r9, [r0, #12] + ldr r7, [r0, #12] ldr r6, [r0, #24] lsl r2, r2, #1 mov r0, r5 bl ftl_memset mov r2, #0 -.L691: +.L559: ldrh r1, [r4, #6] uxth r3, r2 cmp r1, r3 - bhi .L695 - ldrh r2, [r5] - mov r7, #0 - ldr ip, .L704 - mov r10, r7 -.L696: - ldrh r1, [r4, #10] - uxth r3, r7 - cmp r1, r3 - bhi .L700 - mov r0, r10 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L695: + bhi .L563 + ldr r3, .L578 + mov r6, #0 + mov r8, r6 + mov r10, r6 + ldrh r2, [r3, #104] + ldrh r3, [r4] + lsl r3, r3, #1 + strh r2, [r5, r3] @ movhi + ldrh r9, [r5] +.L564: + ldrh r3, [r4, #10] + uxth r1, r6 + cmp r3, r1 + bhi .L568 + mov r0, r8 + ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L563: uxth r3, r2 mov r1, #0 ldr r0, [r6, r3, lsl #2] ubfx r0, r0, #10, #16 -.L692: +.L560: ldrh ip, [r4, #10] uxth r3, r1 cmp ip, r3 addls r2, r2, #1 - bls .L691 -.L694: + bls .L559 +.L562: uxth r3, r1 add r1, r1, #1 lsl r3, r3, #1 - ldrh ip, [r9, r3] - cmp ip, r0 - ldrheq ip, [r5, r3] - addeq ip, ip, #1 - strheq ip, [r5, r3] @ movhi - b .L692 -.L700: - ldrh r1, [r4] - uxth r6, r7 - cmp r1, r3 - bne .L697 - ldrh r0, [r4, #2] - ldrh r1, [ip, #104] - cmp r0, r1 - lslcc r0, r6, #1 - strhcc r1, [r5, r0] @ movhi -.L697: - lsl r6, r6, #1 - ldrh r8, [r5, r6] - cmp r2, r8 - movhi r10, r3 - movhi r2, r8 - cmp r8, #0 - bne .L699 - ldrh r0, [r9, r6] + ldrh ip, [r7, r3] + adds lr, ip, #0 + movne lr, #1 + cmp r0, ip + movne lr, #0 + cmp lr, #0 + ldrhne ip, [r5, r3] + addne ip, ip, #1 + strhne ip, [r5, r3] @ movhi + b .L560 +.L568: + uxth r3, r6 + lsl r3, r3, #1 + ldrh r2, [r5, r3] + cmp r9, r2 + bls .L565 + ldrh r0, [r7, r3] + add ip, r7, r3 cmp r0, #0 - beq .L699 + bne .L566 +.L567: + add r6, r6, #1 + b .L564 +.L565: + cmp r2, #0 + bne .L567 + ldrh r0, [r7, r3] + add ip, r7, r3 + cmp r0, #0 + beq .L567 +.L569: mov r1, #1 - str ip, [fp, #-48] - str r2, [fp, #-44] + str ip, [fp, #-44] bl FtlFreeSysBlkQueueIn - strh r8, [r9, r6] @ movhi - ldr ip, [fp, #-48] + ldr ip, [fp, #-44] + strh r10, [ip] @ movhi ldrh r3, [r4, #8] - ldr r2, [fp, #-44] sub r3, r3, #1 strh r3, [r4, #8] @ movhi -.L699: - add r7, r7, #1 - b .L696 -.L705: + b .L567 +.L566: + subs r9, r2, #0 + mov r8, r1 + beq .L569 + b .L567 +.L579: .align 2 -.L704: +.L578: .word .LANCHOR0 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 - .global Ftl_write_map_blk_to_last_page - .syntax unified - .arm - .fpu softvfp - .type Ftl_write_map_blk_to_last_page, %function -Ftl_write_map_blk_to_last_page: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, fp, ip, lr, pc} - sub fp, ip, #4 - ldrh r3, [r0] - movw r2, #65535 - mov r4, r0 - ldr r5, [r0, #12] - cmp r3, r2 - bne .L707 - ldrh r3, [r0, #8] - cmp r3, #0 - beq .L708 - movw r2, #677 - ldr r1, .L716 - ldr r0, .L716+4 - bl sftl_printk -.L708: - ldrh r3, [r4, #8] - add r3, r3, #1 - strh r3, [r4, #8] @ movhi - bl FtlFreeSysBlkQueueOut - mov r3, #0 - strh r0, [r5] @ movhi - strh r3, [r4, #2] @ movhi - strh r3, [r4] @ movhi - ldr r3, [r4, #28] - add r3, r3, #1 - str r3, [r4, #28] -.L709: - mov r0, #0 - ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L707: - lsl r3, r3, #1 - ldr r2, [r0, #28] - ldr r6, [r0, #24] - mov r1, #255 - ldrh r7, [r5, r3] - ldrh r3, [r0, #2] - ldr r5, .L716+8 - orr r3, r3, r7, lsl #10 - str r3, [r5, #3268] - ldr r3, [r5, #3284] - str r3, [r5, #3272] - ldr r3, [r5, #3288] - str r3, [r5, #3276] - str r2, [r3, #4] - ldr r2, .L716+12 - strh r2, [r3, #8] @ movhi - ldrh r2, [r0, #4] - strh r7, [r3, #2] @ movhi - strh r2, [r3] @ movhi - ldrh r2, [r5, #104] - ldr r0, [r5, #3284] - lsl r2, r2, #3 - bl ftl_memset - mov r2, #0 - mov r3, r2 -.L710: - ldrh r0, [r4, #6] - uxth r1, r2 - cmp r0, r1 - bhi .L712 - mov r2, #1 - mov r3, #0 - mov r1, r2 - ldr r0, .L716+16 - bl FlashProgPages - ldrh r3, [r4, #2] - mov r0, r4 - add r3, r3, #1 - strh r3, [r4, #2] @ movhi - bl ftl_map_blk_gc - b .L709 -.L712: - uxth r1, r2 - ldr r0, [r6, r1, lsl #2] - cmp r7, r0, lsr #10 - bne .L711 - ldr r0, [r5, #3284] - add r3, r3, #1 - uxth r3, r3 - str r1, [r0, r3, lsl #3] - ldr r0, [r6, r1, lsl #2] - ldr r1, [r5, #3284] - add r1, r1, r3, lsl #3 - str r0, [r1, #4] -.L711: - add r2, r2, #1 - b .L710 -.L717: - .align 2 -.L716: - .word .LANCHOR1+211 - .word .LC1 - .word .LANCHOR0 - .word -1291 - .word .LANCHOR0+3264 - .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page - .align 2 - .global FtlMapWritePage - .syntax unified - .arm - .fpu softvfp - .type FtlMapWritePage, %function -FtlMapWritePage: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r7, .L738 - mov r4, r0 - mov r8, r1 - mov r9, r2 - mov r6, #0 - mov r5, r7 -.L719: - ldr r3, [r7, #2524] - add r3, r3, #1 - str r3, [r7, #2524] - ldrh r3, [r7, #104] - ldrh r2, [r4, #2] - sub r3, r3, #1 - cmp r2, r3 - bge .L720 - ldrh r2, [r4] - movw r3, #65535 - cmp r2, r3 - bne .L721 -.L720: - mov r0, r4 - bl Ftl_write_map_blk_to_last_page -.L721: - ldrh r3, [r4] - ldr r2, [r4, #12] - lsl r3, r3, #1 - ldrh r3, [r2, r3] - cmp r3, #0 - bne .L722 - movw r2, #735 - ldr r1, .L738+4 - ldr r0, .L738+8 - bl sftl_printk -.L722: - ldrh r2, [r4] - ldrh r3, [r4, #10] - cmp r2, r3 - bcc .L723 - mov r2, #736 - ldr r1, .L738+4 - ldr r0, .L738+8 - bl sftl_printk -.L723: - ldrh r3, [r4] - mov r1, #16 - ldr r2, [r4, #12] - ldr r0, [r5, #3288] - lsl r3, r3, #1 - ldrh r10, [r2, r3] - ldrh r3, [r4, #2] - str r0, [r5, #3276] - str r9, [r5, #3272] - orr r3, r3, r10, lsl #10 - str r3, [r5, #3268] - bl __memzero - ldr r3, [r5, #3276] - ldr r2, [r4, #28] - ldr r0, .L738+12 - strh r8, [r3, #8] @ movhi - str r2, [r3, #4] - ldrh r2, [r4, #4] - strh r10, [r3, #2] @ movhi - strh r2, [r3] @ movhi - mov r3, #1 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldrh r0, [r4, #2] - add r0, r0, #1 - uxth r0, r0 - strh r0, [r4, #2] @ movhi - ldr r3, [r5, #3264] - cmn r3, #1 - bne .L724 - ldr r1, [r5, #3268] - add r6, r6, #1 - ldr r0, .L738+16 - uxth r6, r6 - bl sftl_printk - ldrh r3, [r4, #2] - cmp r3, #2 - ldrhls r3, [r5, #104] - subls r3, r3, #1 - strhls r3, [r4, #2] @ movhi - cmp r6, #3 - bls .L726 - mov r2, r6 - ldr r1, [r5, #3268] - ldr r0, .L738+20 - bl sftl_printk -.L727: - b .L727 -.L726: - ldr r3, [r4, #32] - cmp r3, #0 - beq .L719 -.L737: - b .L737 -.L724: - cmp r3, #0 - strhne r10, [r4, #40] @ movhi - cmp r0, #1 - cmpne r3, #256 - moveq r0, #1 - movne r0, #0 - beq .L719 - ldr r2, [r5, #3268] - ldr r3, [r4, #24] - str r2, [r3, r8, lsl #2] - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L739: - .align 2 -.L738: - .word .LANCHOR0 - .word .LANCHOR1+242 - .word .LC1 - .word .LANCHOR0+3264 - .word .LC87 - .word .LC88 - .size FtlMapWritePage, .-FtlMapWritePage - .align 2 - .global load_l2p_region - .syntax unified - .arm - .fpu softvfp - .type load_l2p_region, %function -load_l2p_region: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L747 - uxth r6, r0 - uxth r8, r1 - ldrh r3, [r4, #136] - cmp r3, r6 - bcs .L741 - movw r2, #510 - ldr r1, .L747+4 - ldr r0, .L747+8 - bl sftl_printk -.L741: - ldr r3, [r4, #3892] - mov r5, #12 - ldr r7, [r3, r6, lsl #2] - cmp r7, #0 - bne .L742 - mul r5, r5, r8 - ldr r3, [r4, #2492] - ldrh r2, [r4, #110] - mov r1, #255 - add r3, r3, r5 - ldr r0, [r3, #8] - bl ftl_memset - ldr r3, [r4, #2492] - strh r6, [r3, r5] @ movhi - ldr r3, [r4, #2492] - add r5, r3, r5 - str r7, [r5, #4] -.L743: - mov r0, #0 - ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L742: - mul r5, r5, r8 - ldr r3, [r4, #2492] - mov r2, #1 - ldr r0, .L747+12 - mov r1, r2 - str r7, [r4, #3268] - add r3, r3, r5 - ldr r3, [r3, #8] - str r3, [r4, #3272] - ldr r3, [r4, #3288] - str r3, [r4, #3276] - bl FlashReadPages - ldr r3, [r4, #3264] - ldr r8, [r4, #3276] - cmp r3, #256 - bne .L744 - mov r2, r7 - mov r1, r6 - ldr r0, .L747+16 - bl sftl_printk - ldr r0, .L747+20 - lsr r3, r7, #10 - mov r1, r6 - strh r3, [r0, #40] @ movhi - ldr r3, [r4, #2492] - add r3, r3, r5 - ldr r2, [r3, #8] - bl FtlMapWritePage -.L744: - ldrh r3, [r8, #8] - cmp r3, r6 - beq .L745 - mov r2, r7 - mov r1, r6 - ldr r0, .L747+24 - bl sftl_printk - mov r3, #4 - ldr r1, [r4, #3276] - mov r2, r3 - ldr r0, .L747+28 - bl rknand_print_hex - ldrh r3, [r4, #136] - mov r2, #4 - ldr r1, [r4, #3892] - ldr r0, .L747+32 - bl rknand_print_hex -.L745: - ldrh r3, [r8, #8] - cmp r3, r6 - beq .L746 - movw r2, #535 - ldr r1, .L747+4 - ldr r0, .L747+8 - bl sftl_printk -.L746: - ldr r3, [r4, #2492] - mov r1, #0 - add r2, r3, r5 - str r1, [r2, #4] - strh r6, [r3, r5] @ movhi - b .L743 -.L748: - .align 2 -.L747: - .word .LANCHOR0 - .word .LANCHOR1+258 - .word .LC1 - .word .LANCHOR0+3264 - .word .LC89 - .word .LANCHOR0+3908 - .word .LC90 - .word .LC91 - .word .LC92 - .size load_l2p_region, .-load_l2p_region - .align 2 - .global ftl_map_blk_gc - .syntax unified - .arm - .fpu softvfp - .type ftl_map_blk_gc, %function -ftl_map_blk_gc: - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #8 - mov r4, r0 - ldr r6, [r0, #12] - ldr r9, [r0, #24] - bl ftl_free_no_use_map_blk - ldrh ip, [r4, #10] - ldrh r2, [r4, #8] - ldrh r1, [r4, #40] - sub r3, ip, #4 - ldr r5, .L772 - cmp r2, r3 - bge .L750 - movw r3, #65535 - cmp r1, r3 - beq .L752 - ldrh r2, [r4, #2] - ldrh r3, [r5, #104] - cmp r2, r3 - bcc .L753 -.L750: - movw r3, #65535 - uxth r0, r0 - cmp r1, r3 - beq .L754 - ldrh r2, [r5, #104] - ldrh r3, [r4, #2] - cmp r2, r3 - subls lr, r6, #2 - movls r2, #0 - bls .L755 -.L754: - lsl r0, r0, #1 - ldrh r8, [r6, r0] - cmp r8, #0 - beq .L752 - ldr r3, [r4, #32] - cmp r3, #0 - bne .L752 - mov r2, #1 - str r2, [r4, #32] - strh r3, [r6, r0] @ movhi - ldrh r3, [r4, #8] - ldrh r2, [r4, #2] - sub r3, r3, #1 - strh r3, [r4, #8] @ movhi - ldrh r3, [r5, #104] - cmp r2, r3 - bcc .L759 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L759: - mov r6, #0 -.L760: - ldrh r3, [r4, #6] - uxth r10, r6 - cmp r3, r10 - bhi .L767 - mov r1, #1 - mov r0, r8 - bl FtlFreeSysBlkQueueIn - mov r3, #0 - str r3, [r4, #32] -.L752: - ldrh r2, [r4, #2] - ldrh r3, [r5, #104] - cmp r2, r3 - bcc .L753 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L753: - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L757: - ldrh r10, [lr, #2]! - add r8, r2, #1 - cmp r10, r1 - beq .L756 - mov r2, r8 -.L755: - uxth r7, r2 - cmp r7, ip - bcc .L757 - mov r7, r0 -.L756: - uxth r2, r2 - ldr r0, .L772+4 - lsl r2, r2, #1 - ldrh r2, [r6, r2] - bl sftl_printk - mvn r3, #0 - mov r0, r7 - strh r3, [r4, #40] @ movhi - b .L754 -.L767: - uxth r7, r6 - add r3, r9, r7, lsl #2 - str r3, [fp, #-44] - ldr r3, [r9, r7, lsl #2] - cmp r8, r3, lsr #10 - bne .L761 - ldr r3, [r5, #3848] - ldr r0, .L772+8 - str r3, [r5, #3272] - ldr r3, [r5, #3288] - str r3, [r5, #3276] - ldr r2, [r9, r7, lsl #2] - str r3, [fp, #-48] - str r2, [r5, #3268] - mov r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r3, [fp, #-48] - ldrh r2, [r3, #8] - cmp r2, r10 - beq .L762 - movw r2, #647 - ldr r1, .L772+12 - ldr r0, .L772+16 - bl sftl_printk - ldr r3, [fp, #-48] -.L762: - ldr r2, [r5, #3264] - cmn r2, #1 - bne .L763 -.L765: - ldr r2, [fp, #-44] - mov r3, #0 - str r3, [r2] -.L764: - b .L764 -.L763: - ldrh r2, [r3, #8] - cmp r2, r10 - bne .L765 - ldrh r2, [r3] - ldrh r3, [r4, #4] - cmp r2, r3 - bne .L765 - ldr r2, [r5, #3272] - mov r1, r7 - mov r0, r4 - bl FtlMapWritePage -.L761: - add r6, r6, #1 - b .L760 -.L773: - .align 2 -.L772: - .word .LANCHOR0 - .word .LC93 - .word .LANCHOR0+3264 - .word .LANCHOR1+274 - .word .LC1 - .size ftl_map_blk_gc, .-ftl_map_blk_gc - .align 2 - .global flush_l2p_region - .syntax unified - .arm - .fpu softvfp - .type flush_l2p_region, %function -flush_l2p_region: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r5, .L775 - uxth r0, r0 - mov r4, #12 - mul r4, r4, r0 - ldr r3, [r5, #2492] - add r0, r5, #3904 - add r0, r0, #4 - add r2, r3, r4 - ldrh r1, [r3, r4] - ldr r2, [r2, #8] - bl FtlMapWritePage - ldr r0, [r5, #2492] - add r4, r0, r4 - mov r0, #0 - ldr r3, [r4, #4] - bic r3, r3, #-2147483648 - str r3, [r4, #4] - ldmfd sp, {r4, r5, fp, sp, pc} -.L776: - .align 2 -.L775: - .word .LANCHOR0 - .size flush_l2p_region, .-flush_l2p_region - .align 2 - .global log2phys - .syntax unified - .arm - .fpu softvfp - .type log2phys, %function -log2phys: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #4 - mvn r6, #0 - ldr r4, .L791 - mov r7, r1 - mov r10, r2 - ldrh r3, [r4, #108] - add r3, r3, #7 - lsr r9, r0, r3 - bic r6, r0, r6, lsl r3 - ldr r3, [r4, #2504] - uxth r8, r9 - uxth r6, r6 - cmp r0, r3 - bcc .L778 - movw r2, #847 - ldr r1, .L791+4 - ldr r0, .L791+8 - bl sftl_printk -.L778: - ldrh r1, [r4, #138] - mov r2, #0 - ldr r0, [r4, #2492] - mov r3, #12 -.L779: - uxth r5, r2 - cmp r5, r1 - bcc .L784 - str r3, [fp, #-44] - bl select_l2p_ram_region - ldr r3, [fp, #-44] - mov r5, r0 - ldr r2, [r4, #2492] - mul r3, r3, r0 - add r1, r2, r3 - ldrh r2, [r2, r3] - movw r3, #65535 - cmp r2, r3 - beq .L785 - ldr r3, [r1, #4] - cmp r3, #0 - bge .L785 - bl flush_l2p_region -.L785: - mov r1, r5 - uxth r0, r9 - bl load_l2p_region - b .L780 -.L784: - add r2, r2, #1 - mla ip, r3, r2, r0 - ldrh ip, [ip, #-12] - cmp ip, r8 - bne .L779 -.L780: - cmp r10, #0 - mov r3, #12 - bne .L781 - ldr r2, [r4, #2492] - mla r3, r3, r5, r2 - ldr r3, [r3, #8] - ldr r3, [r3, r6, lsl #2] - str r3, [r7] -.L782: - ldr r2, [r4, #2492] - mov r3, #12 - mov r0, #0 - mla r5, r3, r5, r2 - ldr r3, [r5, #4] - cmn r3, #1 - addne r3, r3, #1 - strne r3, [r5, #4] - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L781: - mul r3, r3, r5 - ldr r2, [r4, #2492] - ldr r1, [r7] - add r2, r2, r3 - ldr r2, [r2, #8] - str r1, [r2, r6, lsl #2] - ldr r2, [r4, #2492] - add r3, r2, r3 - ldr r2, [r3, #4] - orr r2, r2, #-2147483648 - str r2, [r3, #4] - ldr r3, .L791+12 - strh r8, [r3] @ movhi - b .L782 -.L792: - .align 2 -.L791: - .word .LANCHOR0 - .word .LANCHOR1+289 - .word .LC1 - .word .LANCHOR0+2496 - .size log2phys, .-log2phys - .align 2 - .global FtlReUsePrevPpa - .syntax unified - .arm - .fpu softvfp - .type FtlReUsePrevPpa, %function -FtlReUsePrevPpa: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #4 - mov r6, r0 - ldr r7, .L803 - ubfx r0, r1, #10, #16 - str r1, [fp, #-32] - bl P2V_block_in_plane - ldr r2, [r7, #2324] - lsl r5, r0, #1 - ldrh r3, [r2, r5] - cmp r3, #0 - bne .L794 - ldr r4, [r7, #2340] - cmp r4, #0 - beq .L795 - movw r2, #2344 - movw lr, #65535 - ldrh ip, [r7, r2] - ldr r2, [r7, #2316] - sub r4, r4, r2 - ubfx r4, r4, #3, #16 -.L796: - uxth r1, r3 - cmp ip, r1 - bls .L795 - cmp r4, r0 - bne .L797 - mov r1, r4 - ldr r0, .L803+4 - bl List_remove_node - movw r3, #2344 - ldrh r3, [r7, r3] - cmp r3, #0 - bne .L798 - movw r2, #1737 - ldr r1, .L803+8 - ldr r0, .L803+12 - bl sftl_printk -.L798: - movw r2, #2344 - mov r0, r4 - ldrh r3, [r7, r2] - sub r3, r3, #1 - strh r3, [r7, r2] @ movhi - bl INSERT_DATA_LIST - ldr r2, [r7, #2324] - ldrh r3, [r2, r5] -.L794: - add r3, r3, #1 - strh r3, [r2, r5] @ movhi - b .L795 -.L797: - lsl r4, r4, #3 - add r3, r3, #1 - ldrh r4, [r2, r4] - cmp r4, lr - bne .L796 -.L795: - mov r2, #1 - sub r1, fp, #32 - mov r0, r6 - bl log2phys - ldmib sp, {r4, r5, r6, r7, fp, sp, pc} -.L804: - .align 2 -.L803: - .word .LANCHOR0 - .word .LANCHOR0+2340 - .word .LANCHOR1+298 - .word .LC1 - .size FtlReUsePrevPpa, .-FtlReUsePrevPpa - .align 2 - .global ftl_scan_all_data - .syntax unified - .arm - .fpu softvfp - .type ftl_scan_all_data, %function -ftl_scan_all_data: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #24 - mov r5, #0 - ldr r6, .L813 - mov r1, #0 - ldr r0, .L813+4 - bl sftl_printk - mov r4, r6 -.L806: - ldr r3, [r6, #2504] - cmp r5, r3 - bcc .L812 - sub sp, fp, #28 - ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L812: - mov r2, #0 - sub r1, fp, #32 - mov r0, r5 - bl log2phys - ubfx r3, r5, #0, #11 - cmp r3, #0 - bne .L807 - ldr r2, [fp, #-32] - mov r1, r5 - ldr r0, .L813+8 - bl sftl_printk -.L807: - ldr r3, [fp, #-32] - cmn r3, #1 - beq .L809 - str r3, [r4, #3268] - mov r2, #0 - ldr r3, [r4, #3284] - mov r1, #1 - ldr r7, [r4, #3288] - ldr r0, .L813+12 - str r3, [r4, #3272] - str r5, [r4, #3280] - str r7, [r4, #3276] - str r2, [r4, #3264] - bl FlashReadPages - ldr r3, [r4, #3264] - cmn r3, #1 - cmpne r3, #256 - beq .L810 - ldr r3, [r7, #8] - cmp r5, r3 - beq .L809 -.L810: - ldr r2, [r4, #3272] - ldr r3, [r4, #3276] - ldr r0, .L813+16 - ldr r1, [r2, #4] - str r1, [sp, #16] - mov r1, r5 - ldr r2, [r2] - str r2, [sp, #12] - ldr r2, [r3, #12] - str r2, [sp, #8] - ldr r2, [r3, #8] - str r2, [sp, #4] - ldr r2, [r3, #4] - str r2, [sp] - ldr r3, [r3] - ldr r2, [r4, #3268] - bl sftl_printk -.L809: - add r5, r5, #1 - b .L806 -.L814: - .align 2 -.L813: - .word .LANCHOR0 - .word .LC94 - .word .LC95 - .word .LANCHOR0+3264 - .word .LC96 - .size ftl_scan_all_data, .-ftl_scan_all_data - .align 2 - .global FtlReadRefresh - .syntax unified - .arm - .fpu softvfp - .type FtlReadRefresh, %function -FtlReadRefresh: - @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #88 - ldr r3, .L828 - ldr r0, [r3, #2716] - mov r4, r3 - cmp r0, #0 - beq .L816 - ldr r1, [r3, #2720] - ldr r2, [r3, #2504] - cmp r1, r2 - bcs .L817 - mov r5, #2048 -.L822: - ldr r0, [r4, #2720] - ldr r3, [r4, #2504] - cmp r0, r3 - bcs .L819 - mov r2, #0 - sub r1, fp, #108 - bl log2phys - ldr r2, [fp, #-108] - ldr r3, [r4, #2720] - cmn r2, #1 - add r3, r3, #1 - str r3, [r4, #2720] - beq .L820 - str r3, [fp, #-88] - sub r0, fp, #20 - ldr r3, .L828+4 - mov r1, #1 - str r2, [fp, #-100] - mov r2, #0 - str r2, [r0, #-84]! - str r3, [fp, #-96] - sub r3, fp, #84 - str r3, [fp, #-92] - bl FlashReadPages - ldr r3, [fp, #-104] - cmp r3, #256 - bne .L819 - ldr r0, [fp, #-108] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L819: - mvn r0, #0 -.L815: - sub sp, fp, #20 - ldmfd sp, {r4, r5, fp, sp, pc} -.L820: - subs r5, r5, #1 - bne .L822 - b .L819 -.L817: - ldr r2, [r3, #2508] - mov r0, #0 - str r0, [r3, #2716] - str r0, [r3, #2720] - str r2, [r3, #2712] - b .L815 -.L816: - ldr r1, [r3, #2508] - ldr r2, [r3, #2712] - add ip, r1, #1048576 - cmp r2, ip - bhi .L825 - ldr r3, [r3, #2564] - mov ip, #33554432 - lsr r3, r3, #10 - add r2, r2, ip, asr r3 - cmp r1, r2 - bhi .L825 - ldr r3, .L828+8 - ldrb r3, [r3, #28] @ zero_extendqisi2 - cmp r3, #0 - bne .L815 -.L825: - mov r3, #1 - mov r0, #0 - str r3, [r4, #2716] - str r0, [r4, #2720] - str r1, [r4, #2712] - b .L815 -.L829: - .align 2 -.L828: - .word .LANCHOR0 - .word ftl_temp_buf - .word .LANCHOR0+2268 - .size FtlReadRefresh, .-FtlReadRefresh - .align 2 - .global ftl_check_vpc - .syntax unified - .arm - .fpu softvfp - .type ftl_check_vpc, %function -ftl_check_vpc: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #4 - mov r4, #0 - ldr r6, .L854 - ldr r1, .L854+4 - ldr r0, .L854+8 - mov r5, r6 - bl sftl_printk - mov r1, #8192 - ldr r0, .L854+12 - bl __memzero -.L831: - ldr r3, [r6, #2504] - cmp r4, r3 - bcc .L833 - ldr r8, .L854+12 - mov r4, #0 - ldr r9, .L854+16 - mov r6, r4 -.L834: - ldrh r2, [r5, #40] - uxth r3, r4 - cmp r2, r3 - bhi .L836 - ldr r4, [r5, #2340] - cmp r4, #0 - beq .L837 - movw r3, #2344 - ldr r9, .L854+12 - ldrh r8, [r5, r3] - mov r7, #0 - ldr r3, [r5, #2316] - ldr r10, .L854+20 - sub r4, r4, r3 - ubfx r4, r4, #3, #16 -.L838: - uxth r3, r7 - cmp r8, r3 - bls .L837 - ldr r2, [r5, #2324] - lsl r3, r4, #1 - ldrh r2, [r2, r3] - cmp r2, #0 - beq .L839 - mov r6, #1 - ldrh r3, [r9, r3] - mov r1, r4 - mov r0, r10 - bl sftl_printk -.L839: - ldr r3, [r5, #2316] - lsl r4, r4, #3 - add r7, r7, #1 - ldrh r4, [r3, r4] - movw r3, #65535 - cmp r4, r3 - bne .L838 -.L837: - cmp r6, #0 - ldmibeq sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} - movw r2, #2373 - ldr r1, .L854+4 - ldr r0, .L854+24 - bl sftl_printk - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L833: - mov r2, #0 - sub r1, fp, #44 - mov r0, r4 - bl log2phys - ldr r0, [fp, #-44] - cmn r0, #1 - beq .L832 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, .L854+12 - lsl r0, r0, #1 - ldrh r3, [r2, r0] - add r3, r3, #1 - strh r3, [r2, r0] @ movhi -.L832: - add r4, r4, #1 - b .L831 -.L836: - uxth r1, r4 - ldr r3, [r5, #2324] - lsl r7, r1, #1 - ldrh r2, [r3, r7] - ldrh r3, [r8, r7] - cmp r2, r3 - beq .L835 - mov r0, r9 - bl sftl_printk - ldr r3, [r5, #2324] - movw r2, #65535 - ldrh r3, [r3, r7] - cmp r3, r2 - beq .L835 - ldrh r2, [r8, r7] - cmp r2, r3 - movhi r6, #1 -.L835: - add r4, r4, #1 - b .L834 -.L855: - .align 2 -.L854: - .word .LANCHOR0 - .word .LANCHOR1+314 - .word .LC97 - .word check_vpc_table - .word .LC98 - .word .LC99 - .word .LC1 - .size ftl_check_vpc, .-ftl_check_vpc - .align 2 - .global FtlMapBlkWriteDump_data - .syntax unified - .arm - .fpu softvfp - .type FtlMapBlkWriteDump_data, %function -FtlMapBlkWriteDump_data: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r3, [r0, #36] - mov r6, r0 - cmp r3, #0 - ldmfdeq sp, {r4, r5, r6, fp, sp, pc} - mov r3, #0 - ldrh r5, [r0, #6] - str r3, [r0, #36] - ldr r3, .L863 - ldr r2, [r0, #24] - sub r5, r5, #1 - uxth r5, r5 - ldr r0, [r3, #3848] - mov r4, r3 - ldr r1, [r3, #3288] - str r0, [r3, #3272] - str r1, [r3, #3276] - ldr r2, [r2, r5, lsl #2] - cmp r2, #0 - str r2, [r3, #3268] - beq .L858 - mov r2, #1 - add r0, r3, #3264 - mov r1, r2 - bl FlashReadPages -.L859: - ldr r2, [r4, #3272] - mov r1, r5 - mov r0, r6 - bl FtlMapWritePage - ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L858: - ldrh r2, [r3, #110] - mov r1, #255 - bl ftl_memset - b .L859 -.L864: - .align 2 -.L863: - .word .LANCHOR0 - .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data - .align 2 - .global FtlScanSysBlk - .syntax unified - .arm - .fpu softvfp - .type FtlScanSysBlk, %function -FtlScanSysBlk: - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #24 - mov r5, #0 - ldr r4, .L946 - mov r1, r5 - ldr r2, [r4, #128] - add r3, r4, #3952 - ldr r0, [r4, #3896] - mov r6, r4 - strh r5, [r3] @ movhi - strh r5, [r4, #144] @ movhi - lsl r2, r2, #2 - bl ftl_memset - ldr r2, [r4, #128] - mov r1, r5 - ldr r0, [r4, #3872] - lsl r2, r2, #1 - bl ftl_memset - ldrh r2, [r4, #120] - mov r1, r5 - ldr r0, [r4, #3884] - lsl r2, r2, #2 - bl ftl_memset - ldrh r2, [r4, #120] - mov r1, r5 - ldr r0, [r4, #148] - mov r5, r4 - lsl r2, r2, #1 - bl ftl_memset - mvn r3, #0 - str r3, [r4, #2576] - str r3, [r4, #2580] - str r3, [r4, #2584] - ldrh r3, [r4, #40] - str r3, [fp, #-44] -.L866: - ldrh r3, [r6, #42] - ldr r2, [fp, #-44] - cmp r3, r2 - bls .L907 - ldr r1, [r6, #3176] - mov r7, #0 - ldrh r2, [r6, #32] - mov r10, r7 - ldr r8, [r6, #3836] - ldr r3, [r6, #3172] - str r1, [fp, #-48] - ldrh r9, [r6, #112] - ldr ip, .L946+4 - b .L908 -.L868: - ldrb r0, [ip, r7] @ zero_extendqisi2 - ldr r1, [fp, #-44] - str r3, [fp, #-64] - str r2, [fp, #-60] - str ip, [fp, #-56] - bl V2P_block - str r0, [fp, #-52] - bl FtlBbmIsBadBlock - cmp r0, #0 - ldr ip, [fp, #-56] - ldr r2, [fp, #-60] - ldr r3, [fp, #-64] - bne .L867 - mov r1, #20 - mla r0, r1, r10, r8 - ldr r1, [fp, #-52] - lsl r1, r1, #10 - stmib r0, {r1, r3} - mul r1, r9, r10 - add lr, r1, #3 - cmp r1, #0 - movlt r1, lr - ldr lr, [fp, #-48] - bic r1, r1, #3 - add r1, lr, r1 - str r1, [r0, #12] - add r1, r10, #1 - uxth r10, r1 -.L867: - add r7, r7, #1 -.L908: - uxth r1, r7 - cmp r2, r1 - bhi .L868 - cmp r10, #0 - bne .L869 -.L906: - ldr r3, [fp, #-44] - add r3, r3, #1 - uxth r3, r3 - str r3, [fp, #-44] - b .L866 -.L869: - mov r2, #1 - mov r1, r10 - mov r0, r8 - bl FlashReadPages - mov r3, #0 -.L945: - str r3, [fp, #-48] - ldrh r3, [fp, #-48] - cmp r10, r3 - bls .L906 - ldr r3, [fp, #-48] - mov r9, #20 - mul r9, r9, r3 - ldr r3, [r4, #3836] - add r2, r3, r9 - ldr r3, [r3, r9] - ldr r1, [r2, #4] - ldr r7, [r2, #12] - cmn r3, #1 - lsr ip, r1, #10 - uxth r8, ip - bne .L873 - mov r3, #16 -.L875: - ldr r0, [r4, #3836] - str ip, [fp, #-56] - str r3, [fp, #-52] - add r0, r0, r9 - ldr r2, [r0, #4] - add r2, r2, #1 - str r2, [r0, #4] - mov r2, #1 - mov r1, r2 - bl FlashReadPages - ldrh r2, [r7] - movw r3, #65535 - ldr ip, [fp, #-56] - cmp r2, r3 - ldr r3, [fp, #-52] - bne .L872 - ldr r3, [r4, #3836] - mvn r2, #0 - str r2, [r3, r9] - ldr r3, [r4, #3836] - ldr r3, [r3, r9] - cmp r3, r2 - bne .L873 -.L874: - mov r1, #0 - uxth r0, ip - bl FtlFreeSysBlkQueueIn - b .L878 -.L872: - ldr r2, [r4, #3836] - ldr r2, [r2, r9] - cmn r2, #1 - bne .L873 - sub r3, r3, #1 - uxth r3, r3 - cmp r3, #0 - bne .L875 - b .L874 -.L873: - ldr r2, [r6, #2540] - ldr r3, [r7, #4] - cmn r2, #1 - beq .L876 - cmp r2, r3 - bhi .L877 -.L876: - cmn r3, #1 - addne r2, r3, #1 - strne r2, [r5, #2540] -.L877: - ldrh r2, [r7] - movw r1, #61604 - cmp r2, r1 - beq .L879 - bhi .L880 - movw r3, #61574 - cmp r2, r3 - beq .L881 -.L878: - ldr r3, [fp, #-48] - add r3, r3, #1 - b .L945 -.L880: - movw r3, #61634 - cmp r2, r3 - beq .L882 - movw r3, #65535 - cmp r2, r3 - beq .L874 - b .L878 -.L882: - ldr r9, .L946+8 - ldr r3, [r4, #128] - ldrh r2, [r9] - cmp r2, r3 - bls .L884 - movw r2, #1256 - ldr r1, .L946+12 - ldr r0, .L946+16 - bl sftl_printk -.L884: - ldr r0, [r4, #128] - ldrh r2, [r9] - ldr ip, [r4, #3896] - uxth r1, r0 - sub r3, r1, #1 - sub r1, r1, r2 - sub r1, r1, #1 - sxth r3, r3 - sxth r1, r1 - str r1, [fp, #-52] -.L885: - ldr r1, [fp, #-52] - cmp r3, r1 - bgt .L891 - cmp r3, #0 - bge .L923 - b .L878 -.L891: - lsl lr, r3, #2 - ldr r1, [r7, #4] - str lr, [fp, #-56] - ldr lr, [ip, r3, lsl #2] - cmp r1, lr - bls .L886 - ldr r1, [ip] - cmp r1, #0 - bne .L887 - cmp r0, r2 - addne r2, r2, #1 - strhne r2, [r9] @ movhi -.L887: - uxth ip, r3 - mov r1, #0 -.L888: - uxth r0, r1 - sxth r2, r1 - cmp ip, r0 - bhi .L889 - ldr r1, [r7, #4] - cmp r3, #0 - ldr r2, [r5, #3896] - ldr r0, [fp, #-56] - str r1, [r2, r0] - lsl r2, r3, #1 - ldr r1, [r5, #3872] - strh r8, [r1, r2] @ movhi - blt .L878 - ldr r2, .L946+8 - ldr r1, [r5, #128] - ldrh r2, [r2] - sub r1, r1, r2 - sub r1, r1, #1 - sxth r1, r1 - cmp r3, r1 - bgt .L878 -.L923: - add r2, r2, #1 - ldr r1, [r7, #4] - strh r2, [r9] @ movhi - ldr r2, [r4, #3896] - str r1, [r2, r3, lsl #2] - lsl r3, r3, #1 - ldr r2, [r4, #3872] -.L943: - strh r8, [r2, r3] @ movhi - b .L878 -.L889: - ldr r0, [r6, #3896] - add r1, r1, #1 - add lr, r0, r2, lsl #2 - ldr lr, [lr, #4] - str lr, [r0, r2, lsl #2] - lsl r2, r2, #1 - ldr r0, [r6, #3872] - add lr, r0, r2 - ldrh lr, [lr, #2] - strh lr, [r0, r2] @ movhi - b .L888 -.L886: - sub r3, r3, #1 - sxth r3, r3 - b .L885 -.L881: - ldrh r2, [r4, #144] - ldrh r3, [r4, #120] - cmp r2, r3 - bls .L894 - movw r2, #1297 - ldr r1, .L946+12 - ldr r0, .L946+16 - bl sftl_printk -.L894: - ldrh r2, [r4, #120] - ldrh r1, [r4, #144] - ldr ip, [r4, #3884] - sub r0, r2, #1 - sxth r3, r0 - sub r0, r0, r1 - str r0, [fp, #-52] -.L895: - ldr r0, [fp, #-52] - cmp r3, r0 - ble .L900 - ldr r9, [ip, r3, lsl #2] - lsl lr, r3, #2 - ldr r0, [r7, #4] - cmp r0, r9 - bls .L896 - sub r2, r2, r1 - ldr r0, [ip] - clz r2, r2 - uxth ip, r3 - lsr r2, r2, #5 - cmp r0, #0 - orrne r2, r2, #1 - cmp r2, #0 - addeq r1, r1, #1 - strheq r1, [r5, #144] @ movhi - mov r1, #0 -.L898: - uxth r0, r1 - sxth r2, r1 - cmp ip, r0 - bhi .L899 - ldr r1, [r7, #4] - ldr r2, [r5, #3884] - str r1, [r2, lr] - lsl r2, r3, #1 - ldr r1, [r5, #148] - strh r8, [r1, r2] @ movhi -.L900: - cmp r3, #0 - blt .L878 - ldrh r2, [r5, #120] - ldrh r1, [r5, #144] - sub r2, r2, #1 - sub r2, r2, r1 - sxth r2, r2 - cmp r3, r2 - bgt .L878 - add r1, r1, #1 - ldr r2, [r5, #3884] - strh r1, [r5, #144] @ movhi - ldr r1, [r7, #4] - str r1, [r2, r3, lsl #2] - lsl r3, r3, #1 - ldr r2, [r5, #148] - b .L943 -.L899: - ldr r0, [r6, #3884] - add r1, r1, #1 - add r9, r0, r2, lsl #2 - ldr r9, [r9, #4] - str r9, [r0, r2, lsl #2] - lsl r2, r2, #1 - ldr r0, [r6, #148] - add r9, r0, r2 - ldrh r9, [r9, #2] - strh r9, [r0, r2] @ movhi - b .L898 -.L896: - sub r3, r3, #1 - sxth r3, r3 - b .L895 -.L879: - ldr r9, .L946+20 - movw r2, #65535 - ldrh r1, [r9] - cmp r1, r2 - strheq r8, [r9] @ movhi - beq .L944 - ldrh r0, [r9, #4] - cmp r0, r2 - beq .L903 - mov r1, #1 - bl FtlFreeSysBlkQueueIn -.L903: - ldr r3, [r7, #4] - ldr r2, [r4, #2584] - cmp r2, r3 - strhcs r8, [r9, #4] @ movhi - bcs .L878 - ldrh r3, [r9] - strh r8, [r9] @ movhi - strh r3, [r9, #4] @ movhi - ldr r3, [r7, #4] -.L944: - str r3, [r4, #2584] - b .L878 -.L907: - ldr r2, [r6, #3872] - ldrh r3, [r2] - cmp r3, #0 - beq .L909 -.L912: - ldr r1, [r4, #148] - ldrh r2, [r1] - cmp r2, #0 - beq .L910 -.L911: - ldr r3, .L946+8 - ldrh r2, [r3] - ldr r3, [r4, #128] - cmp r2, r3 - bls .L942 - movw r2, #1422 - ldr r1, .L946+12 - ldr r0, .L946+16 - bl sftl_printk -.L942: - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L909: - ldr r1, .L946+8 - ldrh r1, [r1] - cmp r1, #0 - ldrne r1, [r6, #128] - beq .L912 -.L913: - sxth ip, r3 - cmp ip, r1 - bcs .L912 - lsl r0, ip, #1 - add r3, r3, #1 - ldrh r0, [r2, r0] - cmp r0, #0 - beq .L913 - mov r3, ip - mov lr, #0 -.L914: - ldr r2, [r5, #128] - cmp r3, r2 - bcs .L912 - ldr r1, [r5, #3872] - lsl r2, r3, #1 - sub r0, r3, ip - lsl r6, r0, #1 - ldrh r7, [r1, r2] - strh r7, [r1, r6] @ movhi - ldr r1, [r5, #3896] - ldr r6, [r1, r3, lsl #2] - add r3, r3, #1 - sxth r3, r3 - str r6, [r1, r0, lsl #2] - ldr r1, [r5, #3872] - strh lr, [r1, r2] @ movhi - b .L914 -.L910: - ldrh r3, [r4, #144] - cmp r3, #0 - ldrhne r0, [r4, #120] - beq .L911 -.L919: - sxth r3, r2 - cmp r3, r0 - mov ip, r3 - bge .L911 - lsl lr, r3, #1 - add r2, r2, #1 - ldrh lr, [r1, lr] - cmp lr, #0 - beq .L919 - mov lr, #0 -.L920: - ldrh r2, [r5, #120] - cmp r3, r2 - bge .L911 - ldr r1, [r5, #148] - lsl r2, r3, #1 - sub r0, r3, ip - lsl r6, r0, #1 - ldrh r7, [r1, r2] - strh r7, [r1, r6] @ movhi - ldr r1, [r5, #3884] - ldr r6, [r1, r3, lsl #2] - add r3, r3, #1 - sxth r3, r3 - str r6, [r1, r0, lsl #2] - ldr r1, [r5, #148] - strh lr, [r1, r2] @ movhi - b .L920 -.L947: - .align 2 -.L946: - .word .LANCHOR0 - .word .LANCHOR0+60 - .word .LANCHOR0+3952 - .word .LANCHOR1+328 - .word .LC1 - .word .LANCHOR0+2576 - .size FtlScanSysBlk, .-FtlScanSysBlk - .align 2 - .global FtlMapTblRecovery - .syntax unified - .arm - .fpu softvfp - .type FtlMapTblRecovery, %function -FtlMapTblRecovery: - @ args = 0, pretend = 0, frame = 20 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #20 - mov r1, #0 - ldr r3, [r0, #24] - mov r4, r0 - ldr r6, .L973 - mov r7, #0 - ldr r8, [r0, #12] - str r3, [fp, #-44] - ldr r3, [r0, #16] - mov r5, r6 - str r3, [fp, #-56] - ldrh r3, [r0, #6] - str r3, [fp, #-48] - ldrh r3, [r0, #8] - ldr r0, [fp, #-44] - str r3, [fp, #-52] - ldr r3, [fp, #-48] - lsl r2, r3, #2 - bl ftl_memset - ldr r3, [r6, #3284] - mvn r2, #0 - ldr r9, [r6, #3288] - str r7, [r4, #32] - str r3, [r6, #3272] - str r9, [r6, #3276] - strh r2, [r4] @ movhi - strh r2, [r4, #2] @ movhi - mov r2, #1 - str r7, [r4, #28] - str r2, [r4, #36] -.L949: - ldr r3, [fp, #-52] - sxth r2, r7 - cmp r2, r3 - bge .L967 - ldr r3, [fp, #-52] - lsl r0, r2, #1 - sub r1, r3, #1 - cmp r2, r1 - bne .L950 - add r10, r8, r0 - mov r1, #1 - ldrh r0, [r8, r0] - mov r8, #0 - str r2, [fp, #-52] - bl FtlGetLastWrittenPage - ldr r3, [fp, #-56] - sxth r1, r0 - ldr r2, [fp, #-52] - add r0, r0, #1 - ldr ip, .L973+4 - strh r7, [r4] @ movhi - add r7, r1, #1 - strh r0, [r4, #2] @ movhi - ldr r2, [r3, r2, lsl #2] - str r2, [r4, #28] -.L951: - sxth r2, r8 - cmp r2, r7 - blt .L954 -.L967: - mov r0, r4 - bl ftl_free_no_use_map_blk - ldrh r2, [r4, #2] - ldrh r3, [r5, #104] - cmp r2, r3 - bne .L956 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L956: - mov r0, r4 - bl ftl_map_blk_gc - mov r0, r4 - bl ftl_map_blk_gc - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L954: - ldrh r1, [r10] - mov r0, ip - str ip, [fp, #-52] - orr r2, r2, r1, lsl #10 - str r2, [r6, #3268] - mov r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [r6, #3264] - ldr ip, [fp, #-52] - cmn r2, #1 - ldrheq r2, [r10] - strheq r2, [r4, #40] @ movhi - beq .L953 - ldrh r2, [r9, #8] - ldr r3, [fp, #-48] - cmp r3, r2 - bls .L953 - ldrh r1, [r4, #4] - ldrh r0, [r9] - cmp r0, r1 - ldreq r1, [r6, #3268] - ldreq r3, [fp, #-44] - streq r1, [r3, r2, lsl #2] -.L953: - add r8, r8, #1 - b .L951 -.L950: - ldr r2, [r5, #3284] - add r3, r8, r0 - str r3, [fp, #-60] - str r2, [r5, #3272] - ldrh r2, [r5, #104] - ldrh r1, [r8, r0] - ldr r0, .L973+4 - sub r2, r2, #1 - orr r2, r2, r1, lsl #10 - str r2, [r5, #3268] - mov r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [r5, #3264] - cmn r2, #1 - beq .L969 - ldrh r1, [r9] - ldrh r2, [r4, #4] - cmp r1, r2 - bne .L969 - ldrh r1, [r9, #8] - movw r2, #64245 - cmp r1, r2 - beq .L958 -.L969: - mov r10, #0 -.L959: - ldrh r1, [r5, #104] - sxth r2, r10 - cmp r2, r1 - bge .L965 - ldr r3, [fp, #-60] - ldr r0, .L973+4 - ldrh r1, [r3] - orr r2, r2, r1, lsl #10 - str r2, [r5, #3268] - mov r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [r5, #3264] - cmn r2, #1 - beq .L963 - ldrh r2, [r9, #8] - ldr r3, [fp, #-48] - cmp r3, r2 - bls .L963 - ldrh r1, [r4, #4] - ldrh r0, [r9] - cmp r0, r1 - ldreq r1, [r5, #3268] - ldreq r3, [fp, #-44] - streq r1, [r3, r2, lsl #2] -.L963: - add r10, r10, #1 - b .L959 -.L958: - mov r0, #0 - mov lr, #4 -.L960: - ldrh r1, [r5, #104] - sxth r2, r0 - sub r1, r1, #1 - cmp r2, r1 - blt .L962 -.L965: - add r7, r7, #1 - b .L949 -.L962: - ldr ip, [r5, #3284] - add r0, r0, #1 - ldr r3, [fp, #-48] - ldr r1, [ip, r2, lsl #3] - uxth r10, r1 - cmp r3, r10 - addhi r2, lr, r2, lsl #3 - ldrhi r3, [fp, #-44] - movhi r1, r10 - ldrhi r2, [ip, r2] - strhi r2, [r3, r1, lsl #2] - b .L960 -.L974: - .align 2 -.L973: - .word .LANCHOR0 - .word .LANCHOR0+3264 - .size FtlMapTblRecovery, .-FtlMapTblRecovery - .align 2 - .global FtlLoadVonderInfo - .syntax unified - .arm - .fpu softvfp - .type FtlLoadVonderInfo, %function -FtlLoadVonderInfo: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - ldr r3, .L976 - ldrh r2, [r3, #120] - add r0, r3, #3952 - add r0, r0, #4 - strh r2, [r0, #10] @ movhi - ldr r2, .L976+4 - strh r2, [r0, #4] @ movhi - ldrh r2, [r3, #144] - strh r2, [r0, #8] @ movhi - ldrh r2, [r3, #122] - strh r2, [r0, #6] @ movhi - ldr r2, [r3, #148] - str r2, [r3, #3968] - ldr r2, [r3, #3884] - str r2, [r3, #3972] - ldr r2, [r3, #3880] - str r2, [r3, #3976] - ldr r2, [r3, #3888] - str r2, [r3, #3980] - mvn r3, #0 - strh r3, [r0, #40] @ movhi - bl FtlMapTblRecovery - mov r0, #0 - ldmfd sp, {fp, sp, pc} -.L977: - .align 2 -.L976: - .word .LANCHOR0 - .word -3962 - .size FtlLoadVonderInfo, .-FtlLoadVonderInfo - .align 2 .global FtlL2PDataInit .syntax unified .arm @@ -6708,53 +4162,53 @@ FtlL2PDataInit: mov ip, sp push {r4, r5, r6, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L981 + ldr r4, .L583 mov r1, #0 mvn r5, #0 ldr r2, [r4, #128] - ldr r0, [r4, #3876] + ldr r0, [r4, #3352] lsl r2, r2, #1 bl ftl_memset ldrh r3, [r4, #110] mov r1, #255 ldrh r2, [r4, #138] - ldr r0, [r4, #3900] + ldr r0, [r4, #3376] mul r2, r2, r3 bl ftl_memset mov r2, #0 mov r3, r4 mov lr, #12 mov r4, r2 -.L979: +.L581: ldrh r0, [r3, #138] uxth r1, r2 add ip, r2, #1 cmp r0, r1 - bhi .L980 + bhi .L582 + ldr r2, .L583+4 mvn r1, #0 - movw r0, #3908 - ldr r2, .L981+4 + movw r0, #3384 strh r1, [r3, r0] @ movhi - ldr r0, [r3, #128] strh r1, [r2, #2] @ movhi - strh r1, [r2, #40] @ movhi - strh r0, [r2, #10] @ movhi - ldr r0, .L981+8 - strh r0, [r2, #4] @ movhi - ldrh r0, [r2, #44] - strh r0, [r2, #8] @ movhi - ldrh r0, [r3, #136] - strh r0, [r2, #6] @ movhi - ldr r0, [r3, #3872] - str r0, [r3, #3920] - ldr r0, [r3, #3896] - str r0, [r3, #3924] - ldr r0, [r3, #3876] - str r0, [r3, #3928] - ldr r0, [r3, #3892] - str r0, [r3, #3932] + ldr r1, [r3, #128] + strh r1, [r2, #10] @ movhi + ldr r1, .L583+8 + strh r1, [r2, #4] @ movhi + movw r1, #3428 + ldrh r1, [r3, r1] + strh r1, [r2, #8] @ movhi + ldrh r1, [r3, #136] + strh r1, [r2, #6] @ movhi + ldr r2, [r3, #3348] + str r2, [r3, #3396] + ldr r2, [r3, #3372] + str r2, [r3, #3400] + ldr r2, [r3, #3352] + str r2, [r3, #3404] + ldr r2, [r3, #3368] + str r2, [r3, #3408] ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L980: +.L582: uxth r2, r2 ldr r1, [r3, #2492] mul r0, lr, r2 @@ -6765,42 +4219,20 @@ FtlL2PDataInit: add r1, r1, r0 ldrh r0, [r3, #110] mul r2, r2, r0 - ldr r0, [r3, #3900] + ldr r0, [r3, #3376] bic r2, r2, #3 add r2, r0, r2 str r2, [r1, #8] mov r2, ip - b .L979 -.L982: + b .L581 +.L584: .align 2 -.L981: +.L583: .word .LANCHOR0 - .word .LANCHOR0+3908 + .word .LANCHOR0+3384 .word -3902 .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 - .global FtlLoadMapInfo - .syntax unified - .arm - .fpu softvfp - .type FtlLoadMapInfo, %function -FtlLoadMapInfo: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - bl FtlL2PDataInit - ldr r0, .L984 - bl FtlMapTblRecovery - mov r0, #0 - ldmfd sp, {fp, sp, pc} -.L985: - .align 2 -.L984: - .word .LANCHOR0+3908 - .size FtlLoadMapInfo, .-FtlLoadMapInfo - .align 2 .global FtlVariablesInit .syntax unified .arm @@ -6812,18 +4244,18 @@ FtlVariablesInit: mov ip, sp push {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L987 + ldr r4, .L586 mvn r3, #0 + movw r2, #3430 mov r5, #0 + strh r3, [r4, r2] @ movhi mov r1, r5 - add r2, r4, #4000 - ldr r0, [r4, #148] - strh r3, [r2] @ movhi ldrh r2, [r4, #120] - str r3, [r4, #4012] - str r5, [r4, #4004] - str r5, [r4, #4008] + ldr r0, [r4, #148] + str r3, [r4, #3440] + str r5, [r4, #3432] lsl r2, r2, #1 + str r5, [r4, #3436] strh r5, [r4, #144] @ movhi bl ftl_memset ldrh r2, [r4, #42] @@ -6833,7 +4265,7 @@ FtlVariablesInit: bl ftl_memset ldrh r2, [r4, #42] mov r1, r5 - ldr r0, [r4, #3860] + ldr r0, [r4, #3336] lsl r2, r2, #1 bl ftl_memset add r0, r4, #2256 @@ -6848,9 +4280,9 @@ FtlVariablesInit: bl FtlL2PDataInit mov r0, r5 ldmfd sp, {r4, r5, fp, sp, pc} -.L988: +.L587: .align 2 -.L987: +.L586: .word .LANCHOR0 .size FtlVariablesInit, .-FtlVariablesInit .align 2 @@ -6867,7 +4299,7 @@ SupperBlkListInit: sub fp, ip, #4 sub sp, sp, #16 mov r5, #0 - ldr r4, .L1000 + ldr r4, .L599 mov r1, #0 mov r8, r5 mov r6, r5 @@ -6883,20 +4315,20 @@ SupperBlkListInit: strh r5, [r3] @ movhi strh r5, [r4, r2] @ movhi str r3, [fp, #-48] -.L990: +.L589: ldrh r3, [r4, #40] uxth r10, r5 cmp r10, r3 - bcs .L997 + bcs .L596 ldrh r3, [r4, #102] mov r9, r10 ldrh ip, [r4, #32] str r3, [fp, #-44] mov r3, #0 mov r7, r3 - b .L998 -.L992: - ldr r2, .L1000+4 + b .L597 +.L591: + ldr r2, .L599+4 mov r1, r9 str ip, [fp, #-56] str r3, [fp, #-52] @@ -6910,77 +4342,77 @@ SupperBlkListInit: add r3, r3, #1 addeq r7, r7, r2 uxtheq r7, r7 -.L998: +.L597: uxth r1, r3 cmp ip, r1 - bhi .L992 + bhi .L591 cmp r7, #0 - beq .L993 + beq .L592 mov r1, r7 mov r0, #32768 bl __divsi3 uxth r7, r0 -.L994: +.L593: ldr r3, [r4, #2316] add r3, r3, r9, lsl #3 strh r7, [r3, #4] @ movhi - ldr r3, .L1000+8 + ldr r3, .L599+8 ldrh r1, [r3] cmp r1, r10 - beq .L995 + beq .L594 ldrh r1, [r3, #48] cmp r1, r10 - beq .L995 + beq .L594 ldrh r3, [r3, #96] cmp r3, r10 - beq .L995 + beq .L594 ldr r2, [r4, #2324] lsl r3, r9, #1 ldrh r3, [r2, r3] cmp r3, #0 - bne .L996 + bne .L595 add r8, r8, #1 mov r0, r9 uxth r8, r8 bl INSERT_FREE_LIST -.L995: +.L594: add r5, r5, #1 - b .L990 -.L993: + b .L589 +.L592: ldr r1, [r4, #2324] lsl r3, r9, #1 mvn r0, #0 strh r0, [r1, r3] @ movhi - b .L994 -.L996: + b .L593 +.L595: add r6, r6, #1 mov r0, r9 uxth r6, r6 bl INSERT_DATA_LIST - b .L995 -.L997: + b .L594 +.L596: ldr r2, [fp, #-48] strh r6, [r2] @ movhi add r6, r6, r8 cmp r6, r3 movw r2, #2344 strh r8, [r4, r2] @ movhi - ble .L999 - movw r2, #2206 - ldr r1, .L1000+12 - ldr r0, .L1000+16 + ble .L598 + movw r2, #2170 + ldr r1, .L599+12 + ldr r0, .L599+16 bl sftl_printk -.L999: +.L598: mov r0, #0 sub sp, fp, #40 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1001: +.L600: .align 2 -.L1000: +.L599: .word .LANCHOR0 .word .LANCHOR0+60 .word .LANCHOR0+2348 - .word .LANCHOR1+342 + .word .LANCHOR1+198 .word .LC1 .size SupperBlkListInit, .-SupperBlkListInit .align 2 @@ -6995,7 +4427,7 @@ FtlGcPageVarInit: mov ip, sp push {r4, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L1003 + ldr r4, .L602 mov r3, #0 movw r2, #3192 mov r1, #255 @@ -7014,201 +4446,12 @@ FtlGcPageVarInit: bl ftl_memset bl FtlGcBufInit ldmfd sp, {r4, fp, sp, pc} -.L1004: +.L603: .align 2 -.L1003: +.L602: .word .LANCHOR0 .size FtlGcPageVarInit, .-FtlGcPageVarInit .align 2 - .global FtlGcScanTempBlk - .syntax unified - .arm - .fpu softvfp - .type FtlGcScanTempBlk, %function -FtlGcScanTempBlk: - @ args = 0, pretend = 0, frame = 20 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #20 - mov r6, r0 - ldr r3, .L1028 - mov r10, r1 - ldrh r4, [r3, #4] - movw r3, #65535 - cmp r4, r3 - beq .L1022 - cmp r4, #0 - bne .L1006 -.L1007: - bl FtlGcPageVarInit - b .L1008 -.L1022: - mov r4, #0 -.L1006: - ldr r3, .L1028+4 - ldrh r3, [r3, #102] - cmp r3, r10 - beq .L1007 -.L1008: - ldr r5, .L1028+4 - mov r8, #0 -.L1016: - ldrh r2, [r6] - movw r3, #65535 - mov r0, #0 - strb r0, [r6, #8] - cmp r2, r3 - beq .L1009 -.L1019: - ldrh r3, [r5, #32] - mov r2, #0 - ldr r0, [r5, #3836] - add ip, r6, #16 - mov r7, r2 - movw r9, #65535 - str r3, [fp, #-44] - ldr r3, [r5, #3172] - str r3, [fp, #-48] - ldrh r3, [r5, #110] - str r3, [fp, #-52] - ldr r3, [r5, #3176] - str r3, [fp, #-56] - ldrh r3, [r5, #112] - str r3, [fp, #-60] -.L1010: - ldr r1, [fp, #-44] - uxth r3, r2 - cmp r1, r3 - bhi .L1012 - mov r9, #0 - mov r2, #0 - mov r1, r7 - bl FlashReadPages -.L1013: - uxth r3, r9 - cmp r7, r3 - bhi .L1017 - add r8, r8, #1 - add r4, r4, #1 - cmp r10, r8 - uxth r4, r4 - bls .L1018 -.L1020: - ldrh r3, [r5, #102] - cmp r3, r4 - bhi .L1019 - mov r0, #0 - b .L1009 -.L1012: - ldrh r3, [ip], #2 - cmp r3, r9 - beq .L1011 - mov r1, #20 - orr r3, r4, r3, lsl #10 - mla r1, r1, r7, r0 - str r3, [r1, #4] - ldr r3, [fp, #-52] - mul r3, r3, r7 - add lr, r3, #3 - cmp r3, #0 - movlt r3, lr - ldr lr, [fp, #-48] - bic r3, r3, #3 - add r3, lr, r3 - str r3, [r1, #8] - ldr r3, [fp, #-60] - mul r3, r3, r7 - add r7, r7, #1 - uxth r7, r7 - add lr, r3, #3 - cmp r3, #0 - movlt r3, lr - ldr lr, [fp, #-56] - bic r3, r3, #3 - add r3, lr, r3 - str r3, [r1, #12] -.L1011: - add r2, r2, #1 - b .L1010 -.L1017: - mov r3, #20 - ldr r2, [r5, #3836] - mul r3, r3, r9 - str r2, [fp, #-52] - add ip, r2, r3 - str r3, [fp, #-56] - ldr r1, [ip, #4] - str ip, [fp, #-48] - ubfx r0, r1, #10, #16 - str r1, [fp, #-44] - bl P2V_plane - ldr r2, [fp, #-52] - ldr r3, [fp, #-56] - ldr r3, [r2, r3] - cmp r3, #0 - bne .L1014 - ldr ip, [fp, #-48] - movw r2, #65535 - add r9, r9, #1 - ldr r1, [fp, #-44] - ldr r3, [ip, #12] - ldrh ip, [r3] - cmp ip, r2 - bne .L1015 - mov r3, #1 - str r3, [r5, #4008] -.L1009: - ldr r3, .L1028 - mvn r2, #0 - strb r0, [r6, #6] - mov r1, r4 - strh r4, [r6, #2] @ movhi - strh r2, [r3, #4] @ movhi - mov r2, r0 - mov r0, r6 - bl ftl_sb_update_avl_pages - b .L1021 -.L1015: - ldr r2, [r3, #8] - ldr r0, [r3, #12] - bl FtlGcUpdatePage - b .L1013 -.L1014: - ldrh r3, [r6] - mov r4, #0 - ldr r2, [r5, #2324] - lsl r3, r3, #1 - strh r4, [r2, r3] @ movhi - ldrh r0, [r6] - bl INSERT_FREE_LIST - mvn r3, #0 - strh r3, [r6] @ movhi - bl FtlGcPageVarInit - b .L1016 -.L1018: - ldr r2, .L1028 - movw r1, #65535 - ldrh r3, [r2, #4] - cmp r3, r1 - beq .L1020 - add r3, r3, r8 - strh r3, [r2, #4] @ movhi - ldrh r3, [r5, #102] - cmp r3, r4 - bls .L1020 -.L1021: - mvn r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1029: - .align 2 -.L1028: - .word .LANCHOR2 - .word .LANCHOR0 - .size FtlGcScanTempBlk, .-FtlGcScanTempBlk - .align 2 .global ftl_memcpy .syntax unified .arm @@ -7224,1577 +4467,756 @@ ftl_memcpy: ldmfd sp, {fp, sp, pc} .size ftl_memcpy, .-ftl_memcpy .align 2 - .global FtlBbmTblFlush + .global FlashReadPages .syntax unified .arm .fpu softvfp - .type FtlBbmTblFlush, %function -FtlBbmTblFlush: - @ args = 0, pretend = 0, frame = 0 + .type FlashReadPages, %function +FlashReadPages: + @ args = 0, pretend = 0, frame = 12 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 - sub sp, sp, #4 - mov r5, #0 - ldr r4, .L1040 - mov r1, #0 - ldr r0, [r4, #3284] - add r6, r4, #176 - ldr r3, [r4, #3288] - add r7, r4, #3904 - ldrh r2, [r4, #110] - str r0, [r4, #3272] - str r3, [r4, #3276] - bl ftl_memset -.L1032: - ldrh r3, [r4, #54] - cmp r5, r3 - blt .L1033 - ldr r6, [r4, #3276] - mov r2, #16 - mov r1, #255 - ldr r9, .L1040+4 - ldr r8, .L1040+8 - mov r5, #0 - mov r0, r6 - mov r7, r5 - bl memset - ldr r3, .L1040+12 - strh r3, [r6] @ movhi - ldr r3, [r4, #160] - str r3, [r6, #4] - ldrh r3, [r4, #152] - strh r3, [r6, #2] @ movhi - ldrh r3, [r4, #156] - strh r3, [r6, #8] @ movhi - ldrh r3, [r4, #158] - strh r3, [r6, #10] @ movhi - ldr r3, [r4, #28] - strh r3, [r6, #12] @ movhi -.L1034: - ldr r3, [r4, #3284] - mov r10, #0 - ldrh r1, [r4, #152] - ldrh r2, [r4, #154] - str r3, [r4, #3272] - ldr r3, [r4, #3288] - str r10, [r4, #3264] - str r3, [r4, #3276] - orr r3, r2, r1, lsl #10 - ldrh r0, [r6, #10] - str r3, [r4, #3268] - ldrh r3, [r4, #156] - str r0, [sp] - mov r0, r9 - bl sftl_printk - mov r3, #1 - ldr r0, .L1040+8 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldrh r3, [r4, #104] - ldrh r2, [r4, #154] - sub r3, r3, #1 - cmp r2, r3 - blt .L1035 - ldr r3, [r4, #160] - ldrh r2, [r4, #152] - ldr r0, [r4, #3804] - add r3, r3, #1 - strh r10, [r4, #154] @ movhi - str r3, [r4, #160] - str r3, [r6, #4] - ldrh r3, [r4, #156] - strh r2, [r6, #8] @ movhi - strh r2, [r4, #156] @ movhi - mov r2, #1 - strh r3, [r4, #152] @ movhi - mov r1, r2 - lsl r3, r3, #10 - str r3, [r4, #3268] - str r3, [r0, #4] - bl FlashEraseBlocks - mov r3, #1 - mov r0, r8 - mov r2, r3 - mov r1, r3 - bl FlashProgPages -.L1035: - ldrh r3, [r4, #154] - add r3, r3, #1 - strh r3, [r4, #154] @ movhi - ldr r3, [r4, #3264] - cmn r3, #1 - bne .L1036 - add r5, r5, #1 - ldr r1, [r4, #3268] - uxth r5, r5 - ldr r0, .L1040+16 - bl sftl_printk - cmp r5, #3 - bls .L1034 - mov r2, r5 - ldr r1, [r4, #3268] - ldr r0, .L1040+20 - bl sftl_printk -.L1038: - b .L1038 -.L1033: - ldrh r2, [r7] - ldr r3, [r4, #3272] - ldr r1, [r6, #4]! - mul r0, r2, r5 - lsl r2, r2, #2 - add r5, r5, #1 - add r0, r3, r0, lsl #2 - bl ftl_memcpy - b .L1032 -.L1039: - mov r7, #1 - b .L1034 -.L1036: - cmp r7, #0 - beq .L1039 - mov r0, #0 - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1041: - .align 2 -.L1040: - .word .LANCHOR0 - .word .LC100 - .word .LANCHOR0+3264 - .word -3887 - .word .LC101 - .word .LC102 - .size FtlBbmTblFlush, .-FtlBbmTblFlush - .align 2 - .global allocate_data_superblock - .syntax unified - .arm - .fpu softvfp - .type allocate_data_superblock, %function -allocate_data_superblock: - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #16 - mov r5, r0 - ldr r4, .L1077 - add r9, r4, #2336 -.L1043: - ldr r7, .L1077+4 - ldrh r2, [r9] - ldrh r3, [r7] - add r3, r3, r2 - ldrh r2, [r4, #40] - cmp r3, r2 - ble .L1044 - movw r2, #2654 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk -.L1044: - ldr r3, .L1077+16 - cmp r5, r3 - movne r1, #0 - bne .L1045 - ldrh r3, [r7] - ldr r1, [r4, #3160] - mul r2, r1, r3 - lsr r1, r3, #1 - add r1, r1, #1 - add r1, r1, r2, lsr #2 - uxth r1, r1 - cmp r1, #0 - subne r1, r1, #1 - uxthne r1, r1 -.L1045: - ldr r0, .L1077+20 - bl List_pop_index_node - ldrh r3, [r7] - mov r6, r0 - uxth r8, r0 - cmp r3, #0 - bne .L1046 - movw r2, #2663 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk -.L1046: - ldrh r3, [r7] - mov r0, r5 - sub r3, r3, #1 - strh r3, [r7] @ movhi - strh r8, [r5] @ movhi - bl make_superblock - ldrb r3, [r5, #7] @ zero_extendqisi2 - cmp r3, #0 - bne .L1047 - uxth r0, r6 - ldr r2, [r4, #2324] - mvn r1, #0 - lsl r3, r0, #1 - strh r1, [r2, r3] @ movhi - bl INSERT_DATA_LIST - ldrh r2, [r9] - ldrh r3, [r7] - add r3, r3, r2 - ldrh r2, [r4, #40] - cmp r3, r2 - ble .L1043 - movw r2, #2674 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk - b .L1043 -.L1047: - ldrh r2, [r9] - ldrh r3, [r7] - add r3, r3, r2 - ldrh r2, [r4, #40] - cmp r3, r2 - ble .L1049 - movw r2, #2677 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk -.L1049: - ldr r0, [r4, #3804] - mov r2, #20 - ldrh r1, [r4, #32] + sub sp, sp, #12 mov r7, #0 - add ip, r5, #16 - mov lr, r7 - mov r3, r0 - mla r1, r2, r1, r0 - str r1, [fp, #-44] -.L1050: - ldr r1, [fp, #-44] - cmp r1, r3 - bne .L1052 - cmp r7, #0 - bne .L1053 - mov r2, #2688 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk -.L1053: - ldr r3, .L1077+24 - ldrh r3, [r3] - cmp r3, r8 - bne .L1054 - movw r2, #2690 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk -.L1054: - ldrb r3, [r5, #8] @ zero_extendqisi2 - uxth r6, r6 - cmp r3, #0 - bne .L1055 - ldr r1, [r4, #2328] - lsl r2, r6, #1 - ldrh r3, [r1, r2] - cmp r3, #0 - ldrhne r0, [r4, #92] - moveq r3, #2 - addne r3, r3, r0 - mov r0, r6 - strh r3, [r1, r2] @ movhi - mov r1, #0 - ldr r3, [r4, #2548] - add r3, r3, #1 - str r3, [r4, #2548] - bl ftl_set_blk_mode -.L1058: - ldr r3, [r4, #2328] - lsl r10, r6, #1 - ldr r2, [r4, #2564] - ldr r0, [r4, #2548] - ldrh r3, [r3, r10] - ldrh r1, [r4, #40] - cmp r3, r2 - ldrh r2, [r4, #92] - strhi r3, [r4, #2564] - ldr r3, [r4, #2552] - mla r0, r0, r2, r3 - bl __udivsi3 - ldr r2, [r4, #3864] - ldr r1, [r4, #3804] - str r0, [r4, #2556] - ldr r3, [r2, #16] - ldr r0, .L1077+28 - add r3, r3, #1 - str r3, [r2, #16] - mov r2, #20 - mla r2, r2, r7, r1 - add r3, r1, #4 - add r2, r2, #24 -.L1060: - add r3, r3, #20 - cmp r2, r3 - bne .L1061 - ldrb r1, [r5, #8] @ zero_extendqisi2 - mov r2, r7 - ldr r0, [r4, #3804] - bl FlashEraseBlocks - mov r3, #0 - mov ip, #20 - mov r1, r3 -.L1062: - uxth r2, r3 - cmp r7, r2 - bhi .L1064 - cmp r1, #0 - ble .L1065 - mov r0, r6 - bl update_multiplier_value - bl FtlBbmTblFlush -.L1065: - ldrb r2, [r5, #7] @ zero_extendqisi2 - cmp r2, #0 - bne .L1066 - ldr r3, [r4, #2324] - mvn r2, #0 - strh r2, [r3, r10] @ movhi - b .L1043 -.L1052: - str lr, [r3, #8] - movw r10, #65535 - str lr, [r3, #12] - add r3, r3, #20 - ldrh r1, [ip], #2 - cmp r1, r10 - mlane r10, r2, r7, r0 - lslne r1, r1, #10 - addne r7, r7, #1 - uxthne r7, r7 - strne r1, [r10, #4] - b .L1050 -.L1055: - ldr r1, [r4, #2328] - lsl r3, r6, #1 - mov r0, r6 - ldrh r2, [r1, r3] - add r2, r2, #1 - strh r2, [r1, r3] @ movhi - ldr r3, [r4, #2552] - add r3, r3, #1 - str r3, [r4, #2552] - bl ftl_set_blk_mode.part.6 - b .L1058 -.L1061: - ldr r1, [r3, #-20] - and r1, r1, r0 - str r1, [r3, #-20] - b .L1060 -.L1064: - mul r2, ip, r3 - ldr lr, [r4, #3804] - add r0, lr, r2 - ldr r2, [lr, r2] - cmn r2, #1 - bne .L1063 - ldr r0, [r0, #4] - add r1, r1, #1 - str ip, [fp, #-56] - str r2, [fp, #-52] - ubfx r0, r0, #10, #16 - str r3, [fp, #-48] - str r1, [fp, #-44] - bl FtlBbmMapBadBlock - ldr r3, [fp, #-48] - ldr r2, [fp, #-52] - ldr ip, [fp, #-56] - ldr r1, [fp, #-44] - add r0, r5, r3, lsl #1 - strh r2, [r0, #16] @ movhi - ldrb r2, [r5, #7] @ zero_extendqisi2 - sub r2, r2, #1 - strb r2, [r5, #7] -.L1063: - add r3, r3, #1 - b .L1062 -.L1066: - ldrh r3, [r4, #102] - strh r8, [r5] @ movhi - smulbb r3, r3, r2 - mov r2, #0 - strh r2, [r5, #2] @ movhi - strb r2, [r5, #6] - ldr r2, [r4, #2540] - uxth r3, r3 - ldr r1, [r4, #2324] - strh r3, [r5, #4] @ movhi - str r2, [r5, #12] - add r2, r2, #1 - str r2, [r4, #2540] - ldrh r2, [r5] - lsl r2, r2, #1 - strh r3, [r1, r2] @ movhi - ldrh r3, [r5, #4] - cmp r3, #0 - beq .L1067 - ldrb r3, [r5, #7] @ zero_extendqisi2 - cmp r3, #0 - bne .L1068 -.L1067: - movw r2, #2743 - ldr r1, .L1077+8 - ldr r0, .L1077+12 - bl sftl_printk -.L1068: - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1078: - .align 2 -.L1077: - .word .LANCHOR0 - .word .LANCHOR0+2344 - .word .LANCHOR1+360 - .word .LC1 - .word .LANCHOR0+2444 - .word .LANCHOR0+2340 - .word .LANCHOR0+2588 - .word -1024 - .size allocate_data_superblock, .-allocate_data_superblock - .align 2 - .global FtlGcFreeBadSuperBlk - .syntax unified - .arm - .fpu softvfp - .type FtlGcFreeBadSuperBlk, %function -FtlGcFreeBadSuperBlk: - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #8 - uxth r3, r0 - ldr r6, .L1091 - str r3, [fp, #-44] - movw r3, #3210 - ldrh r3, [r6, r3] - cmp r3, #0 - movne r7, #0 - ldrne r10, .L1091+4 - bne .L1081 -.L1080: - mov r0, #0 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1087: - uxtah r3, r6, r7 - ldr r1, [fp, #-44] - mov r8, #0 - ldrb r0, [r3, #60] @ zero_extendqisi2 - bl V2P_block - mov r9, r0 -.L1082: - ldrh r3, [r10] - uxth r4, r8 - cmp r3, r4 - bhi .L1086 - add r7, r7, #1 -.L1081: - ldrh r2, [r6, #32] - uxth r3, r7 - cmp r2, r3 - bhi .L1087 - bl FtlGcReFreshBadBlk - b .L1080 -.L1086: - uxth r3, r8 - ldr r5, .L1091+8 - lsl r2, r3, #1 - ldrh r2, [r5, r2] - cmp r2, r9 - bne .L1083 - mov r1, r9 - ldr r0, .L1091+12 - str r3, [fp, #-48] - bl sftl_printk - mov r0, r9 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldr r3, [fp, #-48] - ldrh r2, [r10] - add r3, r5, r3, lsl #1 -.L1084: - cmp r4, r2 - bcc .L1085 - sub r2, r2, #1 - strh r2, [r10] @ movhi -.L1083: - add r8, r8, #1 - b .L1082 -.L1085: - ldrh r1, [r3, #2]! - add r4, r4, #1 - uxth r4, r4 - strh r1, [r3, #-2] @ movhi - b .L1084 -.L1092: - .align 2 -.L1091: - .word .LANCHOR0 - .word .LANCHOR0+3210 - .word .LANCHOR0+3212 - .word .LC103 - .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk - .align 2 - .global update_vpc_list - .syntax unified - .arm - .fpu softvfp - .type update_vpc_list, %function -update_vpc_list: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r3, .L1103 - uxth r4, r0 - ldr r1, [r3, #2324] - lsl r2, r4, #1 - mov r6, r3 - ldrh r0, [r1, r2] - cmp r0, #0 - bne .L1094 - movw r2, #2588 - ldrh r1, [r3, r2] - cmp r1, r4 - mvneq r3, #0 - strheq r3, [r6, r2] @ movhi - beq .L1096 - movw r2, #2348 - ldrh r2, [r3, r2] - cmp r2, r4 - ldmfdeq sp, {r4, r5, r6, fp, sp, pc} - movw r2, #2396 - ldrh r2, [r3, r2] - cmp r2, r4 - ldmfdeq sp, {r4, r5, r6, fp, sp, pc} - movw r2, #2444 - ldrh r3, [r3, r2] - cmp r3, r4 - ldmfdeq sp, {r4, r5, r6, fp, sp, pc} -.L1096: - ldr r5, .L1103+4 - mov r1, r4 - ldr r0, .L1103+8 - bl List_remove_node - ldrh r3, [r5] - cmp r3, #0 - bne .L1098 - movw r2, #2813 - ldr r1, .L1103+12 - ldr r0, .L1103+16 - bl sftl_printk -.L1098: - ldrh r3, [r5] - mov r0, r4 - sub r3, r3, #1 - strh r3, [r5] @ movhi - bl free_data_superblock - mov r0, r4 - bl FtlGcFreeBadSuperBlk - movw r3, #2344 - ldrh r2, [r5] - ldrh r3, [r6, r3] - add r3, r3, r2 - ldrh r2, [r6, #40] - cmp r3, r2 - ble .L1102 - mov r2, #2816 - ldr r1, .L1103+12 - ldr r0, .L1103+16 - bl sftl_printk -.L1102: - mov r0, #1 - ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L1094: - mov r0, r4 - bl List_update_data_list - mov r0, #0 - ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L1104: - .align 2 -.L1103: - .word .LANCHOR0 - .word .LANCHOR0+2336 - .word .LANCHOR0+2320 - .word .LANCHOR1+385 - .word .LC1 - .size update_vpc_list, .-update_vpc_list - .align 2 - .global decrement_vpc_count - .syntax unified - .arm - .fpu softvfp - .type decrement_vpc_count, %function -decrement_vpc_count: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, fp, ip, lr, pc} - sub fp, ip, #4 - uxth r4, r0 - movw r3, #65535 - cmp r4, r3 - ldr r5, .L1120 - beq .L1106 - ldr r3, [r5, #2324] - lsl r6, r4, #1 - ldrh r2, [r3, r6] - cmp r2, #0 - subne r2, r2, #1 - strhne r2, [r3, r6] @ movhi - bne .L1106 - mov r1, r4 - ldr r0, .L1120+4 - bl sftl_printk - ldr r3, [r5, #2324] - ldrh r3, [r3, r6] - cmp r3, #0 - bne .L1108 - movw r2, #2831 - ldr r1, .L1120+8 - ldr r0, .L1120+12 - bl sftl_printk -.L1108: - ldr r3, [r5, #2324] - mov r2, #16 - mov r1, r4 - ldr r0, .L1120+16 - strh r2, [r3, r6] @ movhi - bl test_node_in_list - cmp r0, #0 - beq .L1109 - mov r1, r4 - ldr r0, .L1120+16 - bl List_remove_node - movw r3, #2344 - ldrh r3, [r5, r3] - cmp r3, #0 - bne .L1110 - movw r2, #2835 - ldr r1, .L1120+8 - ldr r0, .L1120+12 - bl sftl_printk -.L1110: - movw r2, #2344 - mov r0, r4 - ldrh r3, [r5, r2] - sub r3, r3, #1 - strh r3, [r5, r2] @ movhi - bl INSERT_DATA_LIST - ldr r3, [r5, #2324] - mov r1, r4 - ldr r0, .L1120+20 - ldrh r2, [r3, r6] - bl sftl_printk -.L1109: - mov r0, r4 - bl FtlGcRefreshBlock -.L1113: - mov r6, #0 - b .L1105 -.L1106: - ldr r7, .L1120+24 - movw r3, #65535 - ldrh r0, [r7] - cmp r0, r3 - strheq r4, [r7] @ movhi - beq .L1113 - cmp r4, r0 - beq .L1113 - bl update_vpc_list - ldr r2, [r5, #2316] - adds r6, r0, #0 - ldr r3, [r5, #2320] - movne r6, #1 - ldr r1, [r5, #2324] - strh r4, [r7] @ movhi - sub r3, r3, r2 - asr r3, r3, #3 - uxth r2, r3 - uxth r3, r3 - lsl r2, r2, #1 - cmp r3, r4 - ldrh r2, [r1, r2] - clz r2, r2 - lsr r2, r2, #5 - moveq r2, #0 - cmp r2, #0 - beq .L1105 - movw r2, #2856 - ldr r1, .L1120+8 - ldr r0, .L1120+12 - bl sftl_printk -.L1105: - mov r0, r6 - ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L1121: - .align 2 -.L1120: - .word .LANCHOR0 - .word .LC104 - .word .LANCHOR1+401 - .word .LC1 - .word .LANCHOR0+2340 - .word .LC105 - .word .LANCHOR0+4000 - .size decrement_vpc_count, .-decrement_vpc_count - .align 2 - .global FtlWriteDump_data - .syntax unified - .arm - .fpu softvfp - .type FtlWriteDump_data, %function -FtlWriteDump_data: - @ args = 0, pretend = 0, frame = 28 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #28 - ldr r6, .L1140 - ldr r4, .L1140+4 - ldrh r2, [r6, #4] - cmp r2, #0 - beq .L1123 - ldrb r3, [r4, #2356] @ zero_extendqisi2 - cmp r3, #0 - bne .L1123 - ldrb r1, [r4, #2355] @ zero_extendqisi2 - ldrh r3, [r4, #102] - mul r3, r3, r1 - cmp r2, r3 - beq .L1123 - ldrb r8, [r4, #2358] @ zero_extendqisi2 - cmp r8, #0 - bne .L1122 - ldr r7, [r4, #2504] - mov r2, r8 - sub r1, fp, #64 - ldrh r9, [r4, #32] - sub r7, r7, #1 - mov r0, r7 - bl log2phys - ldr r3, [fp, #-64] - ldr r5, [r4, #3288] - ldr r0, [r4, #3284] - cmn r3, #1 - str r3, [fp, #-56] - str r7, [fp, #-44] - str r0, [fp, #-52] - str r5, [fp, #-48] - str r8, [r5, #4] - beq .L1125 - mov r2, r8 - mov r1, #1 - sub r0, fp, #60 - bl FlashReadPages -.L1126: - ldr ip, .L1140 - mov r8, #0 - ldr r3, .L1140+8 - lsl r9, r9, #2 - mov r10, r8 - strh r3, [r5] @ movhi -.L1127: - cmp r9, r8 - bne .L1131 -.L1128: - mov r3, #1 -.L1139: - strb r3, [r4, #2358] -.L1122: - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1125: - ldrh r2, [r4, #110] - mov r1, #255 - bl ftl_memset - b .L1126 -.L1131: - ldrh r3, [r6, #4] - cmp r3, #0 - beq .L1128 - ldr r3, [fp, #-56] - mov r0, ip - str r7, [r5, #8] - add r8, r8, #1 - str ip, [fp, #-68] - str r3, [r5, #12] - ldrh r3, [r6] - strh r3, [r5, #2] @ movhi - bl get_new_active_ppa - ldr r3, [r4, #2544] - mov r1, #1 - str r0, [fp, #-56] - sub r0, fp, #60 - str r3, [r5, #4] - add r3, r3, #1 - cmn r3, #1 - moveq r3, r10 - str r3, [r4, #2544] - mov r3, #0 - mov r2, r3 - bl FlashProgPages - ldrh r0, [r6] - bl decrement_vpc_count - ldr ip, [fp, #-68] - b .L1127 -.L1123: - mov r3, #0 - b .L1139 -.L1141: - .align 2 -.L1140: - .word .LANCHOR0+2348 - .word .LANCHOR0 - .word -3947 - .size FtlWriteDump_data, .-FtlWriteDump_data - .align 2 - .global l2p_flush - .syntax unified - .arm - .fpu softvfp - .type l2p_flush, %function -l2p_flush: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r5, .L1146 - mov r4, #0 - mov r6, #12 - bl FtlWriteDump_data -.L1143: - ldrh r2, [r5, #138] - uxth r3, r4 - cmp r2, r3 - bhi .L1145 - mov r0, #0 - ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L1145: - ldr r3, [r5, #2492] - uxth r0, r4 - mla r3, r6, r0, r3 - ldr r3, [r3, #4] - cmp r3, #0 - bge .L1144 - bl flush_l2p_region -.L1144: - add r4, r4, #1 - b .L1143 -.L1147: - .align 2 -.L1146: - .word .LANCHOR0 - .size l2p_flush, .-l2p_flush - .align 2 - .global FtlRecoverySuperblock - .syntax unified - .arm - .fpu softvfp - .type FtlRecoverySuperblock, %function -FtlRecoverySuperblock: - @ args = 0, pretend = 0, frame = 44 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #44 - movw r2, #65535 - ldrh r3, [r0] + ldr r5, .L632 + mov r8, r1 + ldr r9, .L632+4 mov r4, r0 - cmp r3, r2 - beq .L1269 - ldrh r3, [r0, #2] - ldr r6, .L1276 - str r3, [fp, #-64] - ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r1, [fp, #-64] - str r3, [fp, #-80] - ldrh r3, [r6, #102] - cmp r3, r1 - mov r3, #0 - strheq r3, [r0, #4] @ movhi - ldrhne r0, [r0, #16] - bne .L1152 -.L1274: - strb r3, [r4, #6] -.L1269: + ldr r10, .L632+8 + ldrh r3, [r5, #12] + str r3, [fp, #-52] +.L606: + cmp r7, r8 + bne .L616 mov r0, #0 sub sp, fp, #40 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1153: - uxth r1, r3 - add r1, r4, r1, lsl #1 - ldrh r0, [r1, #16] -.L1152: - cmp r0, r2 - uxth r7, r3 - add r3, r3, #1 - beq .L1153 - mov r1, #1 - bl FtlGetLastWrittenPage - cmn r0, #1 - mov r5, r0 - beq .L1154 - ldrh r3, [r6, #32] - mov r2, #0 - ldr r0, [r6, #3836] - movw r8, #65535 - ldr lr, [r6, #3176] - mov r9, #20 - str r3, [fp, #-56] - ldr r3, [r6, #3172] - ldrh r7, [r6, #112] - str r3, [fp, #-60] - ldrh r3, [r6, #110] - mov r6, r2 - str r3, [fp, #-68] - add r3, r4, #16 - mov ip, r3 - str r3, [fp, #-76] -.L1155: - ldr r1, [fp, #-56] - uxth r3, r2 - cmp r1, r3 - bhi .L1159 - ldr r7, .L1276 - mov r2, #0 - mov r1, r6 - bl FlashReadPages - ldr r3, [r7, #2544] - movw r2, #65535 - ldr r9, [r7, #3836] - mov r10, r7 - str r2, [fp, #-72] - uxth r2, r5 - sub r3, r3, #1 - str r3, [fp, #-56] - mov r8, r9 - mov r3, #0 - str r2, [fp, #-60] -.L1160: - uxth r2, r3 - cmp r6, r2 - bhi .L1165 - addeq r3, r5, #1 - uxtheq r3, r3 - streq r3, [fp, #-60] - bne .L1163 -.L1270: - ldr r0, [r9, #4] - ubfx r0, r0, #10, #16 - bl P2V_plane - ldrh r3, [r7, #102] - sub r1, fp, #68 - ldr r2, [fp, #-60] - str r0, [fp, #-68] - ldr r0, [fp, #-80] - cmp r3, r2 - ldrheq r3, [fp, #-60] - strheq r3, [r4, #2] @ movhi - moveq r3, #0 - strbeq r3, [r4, #6] - strheq r3, [r4, #4] @ movhi - ldm r1, {r1, r2, r3} - cmp r3, r2 - cmpeq r1, r0 - moveq r2, r1 - moveq r1, r3 - beq .L1275 - ldr r2, [fp, #-72] - movw r3, #65535 - cmp r2, r3 - bne .L1169 - ldrb r3, [r4, #8] @ zero_extendqisi2 +.L616: + ldr r3, [r4, #8] cmp r3, #0 - bne .L1170 -.L1169: - ldr r3, [r7, #4012] - uxth r8, r5 - uxth r5, r5 - cmn r3, #1 - ldreq r3, [fp, #-56] - streq r3, [r7, #4012] - ldr r3, [fp, #-64] - ldr r7, .L1276 - add r3, r3, #7 - cmp r5, r3 - subgt r5, r8, #7 - ldrle r5, [fp, #-64] - uxthgt r5, r5 -.L1173: - cmp r5, r8 - bhi .L1180 - mov r3, #0 - ldrh r9, [r7, #32] - ldr r0, [r7, #3836] - mov r6, r3 - ldr r1, [fp, #-76] - movw lr, #65535 - mov ip, #20 - b .L1181 -.L1154: - ldr r3, [fp, #-64] + beq .L607 + ldr r3, [r4, #12] cmp r3, #0 - beq .L1156 - movw r2, #1804 - ldr r1, .L1276+4 - ldr r0, .L1276+8 + bne .L608 +.L607: + mov r2, #96 + mov r1, r9 + mov r0, r10 bl sftl_printk -.L1156: - ldr r3, [fp, #-80] - cmp r3, #0 - cmpne r7, r3 - beq .L1157 - movw r2, #1805 - ldr r1, .L1276+4 - ldr r0, .L1276+8 - bl sftl_printk -.L1157: - mov r3, #0 - strh r3, [r4, #2] @ movhi - b .L1274 -.L1159: - ldrh r3, [ip], #2 - cmp r3, r8 - beq .L1158 - mla r1, r9, r6, r0 - orr r3, r5, r3, lsl #10 - str r3, [r1, #4] - ldr r3, [fp, #-68] - mul r3, r3, r6 - add r10, r3, #3 - cmp r3, #0 - movlt r3, r10 - ldr r10, [fp, #-60] - bic r3, r3, #3 - add r3, r10, r3 - str r3, [r1, #8] - mul r3, r7, r6 - add r6, r6, #1 - uxth r6, r6 - add r10, r3, #3 - cmp r3, #0 - movlt r3, r10 - bic r3, r3, #3 - add r3, lr, r3 - str r3, [r1, #12] -.L1158: - add r2, r2, #1 - b .L1155 -.L1165: - ldr r2, [r8] - cmp r2, #0 - bne .L1161 - ldr ip, [r8, #12] - ldr r2, [ip, #4] - cmn r2, #1 - beq .L1162 - ldr r1, [r10, #2544] - mov r0, r2 - str ip, [fp, #-68] - bl ftl_cmp_data_ver - ldr ip, [fp, #-68] - cmp r0, #0 - addne r2, r2, #1 - strne r2, [r10, #2544] -.L1162: - ldr r2, [ip] - cmn r2, #1 - bne .L1164 -.L1163: - uxth r2, r5 - uxth r3, r3 - str r2, [fp, #-60] - mov r2, #20 - mla r9, r2, r3, r9 - b .L1270 -.L1161: - ldr r2, [fp, #-60] - str r2, [fp, #-72] -.L1164: - add r3, r3, #1 - add r8, r8, #20 - b .L1160 -.L1175: - ldrh r2, [r1], #2 - add r3, r3, #1 - cmp r2, lr - mlane r10, ip, r6, r0 - addne r6, r6, #1 - orrne r2, r5, r2, lsl #10 - uxthne r6, r6 - strne r2, [r10, #4] -.L1181: - uxth r2, r3 - cmp r9, r2 - bhi .L1175 - mov r1, r6 - mov r2, #0 - bl FlashReadPages - ldr r3, [r7, #3836] - mov r2, #20 - movw r1, #65535 - mla r6, r2, r6, r3 -.L1176: - cmp r6, r3 - addeq r5, r5, #1 - uxtheq r5, r5 - beq .L1173 -.L1179: - ldr r2, [r3] - cmp r2, #0 - bne .L1170 - ldr r2, [r3, #12] - ldrh r0, [r2] - cmp r0, r1 - beq .L1178 - ldr r2, [r2, #4] - cmn r2, #1 - strne r2, [r7, #4012] -.L1178: - add r3, r3, #20 - b .L1176 -.L1180: - mvn r3, #0 - str r3, [r7, #4012] -.L1170: - ldr r5, .L1276+12 - mov r3, #1 - mov r0, r5 - sub r5, r5, #4016 - strh r3, [r0], #-108 @ movhi - bl FtlMapBlkWriteDump_data - ldr r9, [fp, #-64] -.L1182: - ldrh ip, [r5, #32] - mov r3, #0 - ldr r0, [r5, #3836] - mov r10, r3 - ldr r1, [fp, #-76] - movw lr, #65535 - mov r6, #20 -.L1183: - uxth r2, r3 - cmp ip, r2 - bhi .L1185 - mov r2, #0 - mov r1, r10 - bl FlashReadPages - mov r3, #0 -.L1273: - str r3, [fp, #-72] - ldrh r3, [fp, #-72] - cmp r10, r3 - bhi .L1213 - add r9, r9, #1 - ldrh r3, [r5, #102] - uxth r9, r9 - cmp r3, r9 - bne .L1182 - ldrh r2, [r5, #32] - movw r0, #65535 - mov r3, #0 - strh r9, [r4, #2] @ movhi - strh r3, [r4, #4] @ movhi -.L1214: - uxth r1, r3 - cmp r1, r2 - bcs .L1269 - ldr r1, [fp, #-76] - ldrh ip, [r1], #2 - cmp ip, r0 - str r1, [fp, #-76] - add r1, r3, #1 - bne .L1274 - mov r3, r1 - b .L1214 -.L1185: - ldrh r2, [r1], #2 - add r3, r3, #1 - cmp r2, lr - mlane r7, r6, r10, r0 - orrne r2, r9, r2, lsl #10 - addne r10, r10, #1 - uxthne r10, r10 - strne r2, [r7, #4] - b .L1183 -.L1213: - ldr r3, [fp, #-72] - mov r7, #20 - ldr r2, [r5, #3836] - mul r7, r7, r3 - str r2, [fp, #-84] - add r8, r2, r7 - ldr r6, [r8, #4] - ubfx r0, r6, #10, #16 - str r6, [fp, #-44] - bl P2V_plane - ldr r3, [fp, #-64] - cmp r9, r3 - bcc .L1187 - ldr r2, [fp, #-80] - moveq r3, #1 - movne r3, #0 - cmp r2, r0 - movls r3, #0 - andhi r3, r3, #1 - cmp r3, #0 - bne .L1187 - ldr r3, [fp, #-60] - ldr r2, [fp, #-68] - cmp r9, r3 - cmpeq r2, r0 - beq .L1188 - ldr r2, [fp, #-84] - ldr r3, [r2, r7] - cmn r3, #1 - beq .L1189 - ldr r8, [r8, #12] - movw r3, #61589 - ldrh r2, [r8] - cmp r2, r3 - beq .L1190 -.L1197: - ldrh r0, [r4] -.L1272: - bl decrement_vpc_count -.L1187: - ldr r3, [fp, #-72] - add r3, r3, #1 - b .L1273 -.L1190: - ldr r3, [r8, #4] - cmn r3, #1 - str r3, [fp, #-56] - beq .L1191 - mov r0, r3 - ldr r1, [r5, #2544] - bl ftl_cmp_data_ver - cmp r0, #0 - ldrne r3, [fp, #-56] - addne r3, r3, #1 - strne r3, [r5, #2544] -.L1191: - ldrh r2, [r8] - movw r3, #61589 - cmp r2, r3 - beq .L1192 - movw r2, #1954 - ldr r1, .L1276+4 - ldr r0, .L1276+8 - bl sftl_printk -.L1192: - ldr r6, [r8, #8] - sub r1, fp, #48 - ldr r3, [r8, #12] - mov r2, #0 - mov r0, r6 - str r3, [fp, #-52] - bl log2phys - ldr r1, [r5, #4012] - cmn r1, #1 - beq .L1193 - ldr r0, [fp, #-56] - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1193 - ldr r2, [fp, #-52] - cmn r2, #1 - beq .L1194 - ldr r0, [r5, #3836] - mov r1, #1 - add r0, r0, r7 - str r2, [r0, #4] - mov r2, #0 - ldr r8, [r0, #12] - bl FlashReadPages - ldr r2, [r5, #3836] - ldr r1, [r2, r7] - add r3, r2, r7 - cmn r1, #1 - bne .L1195 -.L1196: - mvn r3, #0 - ldrh r0, [r4] - str r3, [fp, #-52] - bl decrement_vpc_count -.L1204: - ldr r7, [fp, #-52] - cmn r7, #1 - beq .L1187 -.L1217: - ubfx r0, r7, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r5, #40] - mov r6, r0 - cmp r3, r0 - bhi .L1209 - movw r2, #2055 - ldr r1, .L1276+4 - ldr r0, .L1276+8 - bl sftl_printk -.L1209: - ldr r2, [r5, #2324] - lsl r3, r6, #1 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L1210 - mov r0, r6 - b .L1272 -.L1194: - ldr r3, [fp, #-44] - ldr r2, [fp, #-48] - cmp r2, r3 - bne .L1197 - mov r2, #1 - sub r1, fp, #52 - mov r0, r6 - bl log2phys - b .L1197 -.L1195: - ldr r1, [r8, #8] - cmp r6, r1 - bne .L1196 - ldr r1, [r8, #4] - ldr r0, [r5, #4012] - str r1, [fp, #-84] - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1196 - ldr r1, [fp, #-48] - ldr r0, [fp, #-44] - cmp r1, r0 - bne .L1199 -.L1202: - ldr r1, [fp, #-52] - mov r0, r6 - bl FtlReUsePrevPpa - b .L1196 -.L1199: - ldr r0, [fp, #-52] - cmp r1, r0 - beq .L1196 - cmn r1, #1 - streq r1, [r2, r7] - beq .L1201 - str r1, [r3, #4] - mov r2, #0 - mov r1, #1 - mov r0, r3 - ldr r8, [r3, #12] - bl FlashReadPages -.L1201: - ldr r2, [r5, #3836] - ldr r2, [r2, r7] - cmn r2, #1 - beq .L1202 - ldr r3, [r8, #4] - ldr r0, [r5, #4012] - mov r1, r3 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1202 - mov r1, r3 - ldr r0, [fp, #-84] - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1196 - b .L1202 -.L1193: - ldr r3, [fp, #-44] - ldr r2, [fp, #-48] - cmp r2, r3 - beq .L1204 - mov r2, #1 +.L608: + sub r2, fp, #48 sub r1, fp, #44 - mov r0, r6 - bl log2phys - ldr r7, [fp, #-48] - cmn r7, #1 - beq .L1204 - ldr r3, [fp, #-52] - cmp r7, r3 - beq .L1217 - ubfx r0, r7, #10, #16 - bl P2V_block_in_plane - ldr r3, .L1276+16 - ldrh r2, [r3] - cmp r2, r0 - beq .L1208 - ldrh r2, [r3, #48] - cmp r2, r0 - beq .L1208 - ldrh r3, [r3, #96] - cmp r3, r0 - bne .L1204 -.L1208: - ldr r0, [r5, #3836] - mov r2, #0 - mov r1, #1 - str r7, [r0, #4] - ldr r8, [r0, #12] - bl FlashReadPages - ldr r3, [r5, #3836] + mov r0, r4 + bl l2p_addr_tran + ldr r6, [r4, #8] + ldr r3, [r4, #12] + ldr ip, [r5, #3256] + tst r6, #63 + ldr r1, [fp, #-44] + ldrne r6, [r5, #3312] + ldrb r0, [fp, #-48] @ zero_extendqisi2 + mov r2, r6 + blx ip + str r0, [r4] + ldrh r3, [r5, #14] + cmp r3, #4 + bne .L611 + ldr r0, [fp, #-52] + add r2, r6, #2048 + ldr r3, [r4, #12] + ldr r1, [fp, #-44] + ldr ip, [r5, #3256] + add r3, r3, #8 + add r1, r0, r1 + ldrb r0, [fp, #-48] @ zero_extendqisi2 + blx ip + cmn r0, #1 + beq .L612 + ldr r3, [r4, #12] + ldr r2, [r3, #12] + cmn r2, #1 + bne .L613 + ldr r2, [r3, #8] + cmn r2, #1 + bne .L613 ldr r3, [r3] cmn r3, #1 - beq .L1204 - ldr r1, [r8, #4] - ldr r0, [fp, #-56] - bl ftl_cmp_data_ver - cmp r0, #0 - bne .L1204 - mov r2, #1 - sub r1, fp, #48 - mov r0, r6 - bl log2phys - b .L1204 -.L1210: - mov r1, r6 - ldr r0, .L1276+20 - bl sftl_printk - b .L1187 -.L1189: - ldr r3, [r5, #4020] - cmp r3, #31 - addls r2, r5, r3, lsl #2 - addls r3, r3, #1 - strls r3, [r5, #4020] - strls r6, [r2, #4024] - ldrh r0, [r4] - bl decrement_vpc_count - ldr r3, [r5, #4012] + beq .L613 +.L612: + mvn r3, #0 + str r3, [r4] +.L613: + ldr r3, [r4] + sub r0, r0, #256 + clz r0, r0 + lsr r0, r0, #5 cmn r3, #1 - ldreq r3, [fp, #-56] - beq .L1271 - ldr r2, [fp, #-56] - cmp r2, r3 - bcs .L1187 - mov r3, r2 -.L1271: - str r3, [r5, #4012] - b .L1187 -.L1188: - ldrb r3, [fp, #-68] @ zero_extendqisi2 - ldr r2, [fp, #-68] - ldr r1, [fp, #-60] - strb r3, [r4, #6] - ldrh r3, [fp, #-60] - strh r3, [r4, #2] @ movhi -.L1275: - mov r0, r4 - bl ftl_sb_update_avl_pages - b .L1269 -.L1277: + moveq r0, #0 + cmp r0, #0 + movne r3, #256 + strne r3, [r4] +.L611: + ldr r3, [r5, #3312] + cmp r6, r3 + bne .L615 + ldr r0, [r4, #8] + cmp r6, r0 + beq .L615 + ldrh r2, [r5, #58] + mov r1, r6 + lsl r2, r2, #9 + bl ftl_memcpy +.L615: + add r7, r7, #1 + add r4, r4, #20 + b .L606 +.L633: .align 2 -.L1276: +.L632: .word .LANCHOR0 - .word .LANCHOR1+421 + .word .LANCHOR1+216 .word .LC1 - .word .LANCHOR0+4016 - .word .LANCHOR0+2348 - .word .LC106 - .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .size FlashReadPages, .-FlashReadPages .align 2 - .global FtlSuperblockPowerLostFix + .global FtlLoadFactoryBbt .syntax unified .arm .fpu softvfp - .type FtlSuperblockPowerLostFix, %function -FtlSuperblockPowerLostFix: - @ args = 0, pretend = 0, frame = 20 + .type FtlLoadFactoryBbt, %function +FtlLoadFactoryBbt: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L644 + mov r6, #0 + mvn r9, #0 + ldr r10, .L644+4 + ldr r3, [r4, #3292] + add r7, r4, #162 + ldr r8, [r4, #3324] + str r3, [r4, #3452] + str r8, [r4, #3456] +.L635: + ldrh r3, [r4, #54] + cmp r6, r3 + bcc .L640 + mov r0, #0 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L640: + ldrh r5, [r4, #98] + strh r9, [r7, #2]! @ movhi +.L637: + ldrh r3, [r4, #98] + sub r5, r5, #1 + uxth r5, r5 + sub r2, r3, #16 + cmp r5, r2 + ble .L638 + mla r3, r6, r3, r5 + mov r2, #1 + mov r1, r2 + mov r0, r10 + lsl r3, r3, #10 + str r3, [r4, #3448] + bl FlashReadPages + ldr r3, [r4, #3444] + cmn r3, #1 + beq .L637 + ldrh r2, [r8] + movw r3, #61664 + cmp r2, r3 + bne .L637 + strh r5, [r7] @ movhi +.L638: + add r6, r6, #1 + b .L635 +.L645: + .align 2 +.L644: + .word .LANCHOR0 + .word .LANCHOR0+3444 + .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt + .align 2 + .global FtlGetLastWrittenPage + .syntax unified + .arm + .fpu softvfp + .type FtlGetLastWrittenPage, %function +FtlGetLastWrittenPage: + @ args = 0, pretend = 0, frame = 84 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - sub sp, sp, #20 - mvn r3, #0 - str r3, [fp, #-36] - mov r7, #0 - ldr r3, .L1289 - movw r1, #61589 - mov r4, r0 - mov r6, #7 - ldr r2, [r3, #3284] - mov r8, r3 - ldr r5, [r3, #3288] - str r2, [fp, #-44] - mvn r2, #2 - str r5, [fp, #-40] - str r2, [r5, #8] - mvn r2, #1 - str r2, [r5, #12] - ldrh r2, [r0] - strh r7, [r5] @ movhi - strh r2, [r5, #2] @ movhi - ldr r2, [r3, #3284] - str r1, [r2] - ldr r1, .L1289+4 - ldr r2, [r3, #3284] - str r1, [r2, #4] -.L1279: - subs r6, r6, #1 - beq .L1281 - ldrh r3, [r4, #4] - cmp r3, #0 - bne .L1280 -.L1281: - ldrh r3, [r4] - ldr r1, [r8, #2324] - ldrh r0, [r4, #4] - lsl r3, r3, #1 - ldrh r2, [r1, r3] - sub r2, r2, r0 - strh r2, [r1, r3] @ movhi - ldrh r3, [r8, #102] - strh r3, [r4, #2] @ movhi - mov r3, #0 - strb r3, [r4, #6] - strh r3, [r4, #4] @ movhi + sub sp, sp, #84 + cmp r1, #1 + ldr r3, .L657 + lsl r6, r0, #10 + mov r2, r1 + mov r7, r1 + sub r0, fp, #116 + ldrheq r5, [r3, #104] + mov r1, #1 + ldrhne r5, [r3, #102] + ldr r3, [r3, #3316] + sub r5, r5, #1 + sxth r5, r5 + str r3, [fp, #-108] + sub r3, fp, #96 + str r3, [fp, #-104] + orr r3, r5, r6 + str r3, [fp, #-112] + bl FlashReadPages + ldr r3, [fp, #-96] + cmn r3, #1 + moveq r8, #0 + beq .L650 +.L649: + mov r0, r5 sub sp, fp, #32 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L1280: - mov r0, r4 - bl get_new_active_ppa - cmn r0, #1 - str r0, [fp, #-48] - beq .L1281 - ldr r3, [r8, #2544] +.L653: + add r3, r8, r5 + mov r2, r7 + add r3, r3, r3, lsr #31 mov r1, #1 - sub r0, fp, #52 - str r3, [r5, #4] - add r3, r3, #1 + sub r0, fp, #116 + asr r4, r3, #1 + sxth r3, r4 + orr r3, r3, r6 + str r3, [fp, #-112] + bl FlashReadPages + ldr r3, [fp, #-96] cmn r3, #1 - moveq r3, r7 - str r3, [r8, #2544] - mov r3, #0 - mov r2, r3 - bl FlashProgPages - ldrh r0, [r4] - bl decrement_vpc_count - b .L1279 -.L1290: + bne .L651 + ldr r3, [fp, #-92] + cmn r3, #1 + bne .L651 + ldr r3, [fp, #-116] + cmn r3, #1 + subne r4, r4, #1 + sxthne r5, r4 + bne .L650 +.L651: + add r4, r4, #1 + sxth r8, r4 +.L650: + cmp r8, r5 + ble .L653 + b .L649 +.L658: .align 2 -.L1289: +.L657: .word .LANCHOR0 - .word 305419896 - .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix + .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage + .align 2 + .global FtlScanSysBlk + .syntax unified + .arm + .fpu softvfp + .type FtlScanSysBlk, %function +FtlScanSysBlk: + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #24 + mov r5, #0 + ldr r4, .L741 + movw r3, #3428 + mov r1, r5 + ldr r2, [r4, #128] + mov r6, r4 + ldr r0, [r4, #3372] + strh r5, [r4, r3] @ movhi + strh r5, [r4, #144] @ movhi + lsl r2, r2, #2 + bl ftl_memset + ldr r2, [r4, #128] + mov r1, r5 + ldr r0, [r4, #3348] + lsl r2, r2, #1 + bl ftl_memset + ldrh r2, [r4, #120] + mov r1, r5 + ldr r0, [r4, #3360] + lsl r2, r2, #2 + bl ftl_memset + ldrh r2, [r4, #120] + mov r1, r5 + ldr r0, [r4, #148] + mov r5, r4 + lsl r2, r2, #1 + bl ftl_memset + mvn r3, #0 + str r3, [r4, #2576] + str r3, [r4, #2580] + str r3, [r4, #2584] + ldrh r3, [r4, #40] + str r3, [fp, #-44] +.L660: + ldrh r3, [r6, #42] + ldr r2, [fp, #-44] + cmp r3, r2 + bls .L701 + ldr r1, [r6, #3176] + mov r7, #0 + ldrh r2, [r6, #32] + mov r10, r7 + ldr r8, [r6, #3280] + ldr r3, [r6, #3172] + str r1, [fp, #-48] + ldrh r9, [r6, #112] + ldr ip, .L741+4 + b .L702 +.L662: + ldrb r0, [ip, r7] @ zero_extendqisi2 + ldr r1, [fp, #-44] + str r3, [fp, #-64] + str r2, [fp, #-60] + str ip, [fp, #-56] + bl V2P_block + str r0, [fp, #-52] + bl FtlBbmIsBadBlock + cmp r0, #0 + ldr ip, [fp, #-56] + ldr r2, [fp, #-60] + ldr r3, [fp, #-64] + bne .L661 + mov r1, #20 + mla r0, r1, r10, r8 + ldr r1, [fp, #-52] + lsl r1, r1, #10 + stmib r0, {r1, r3} + mul r1, r9, r10 + add lr, r1, #3 + cmp r1, #0 + movlt r1, lr + ldr lr, [fp, #-48] + bic r1, r1, #3 + add r1, lr, r1 + str r1, [r0, #12] + add r1, r10, #1 + uxth r10, r1 +.L661: + add r7, r7, #1 +.L702: + uxth r1, r7 + cmp r2, r1 + bhi .L662 + cmp r10, #0 + bne .L663 +.L700: + ldr r3, [fp, #-44] + add r3, r3, #1 + uxth r3, r3 + str r3, [fp, #-44] + b .L660 +.L663: + mov r2, #1 + mov r1, r10 + mov r0, r8 + bl FlashReadPages + mov r3, #0 +.L740: + str r3, [fp, #-48] + ldrh r3, [fp, #-48] + cmp r10, r3 + bls .L700 + ldr r3, [fp, #-48] + mov r9, #20 + mul r9, r9, r3 + ldr r3, [r4, #3280] + add r2, r3, r9 + ldr r3, [r3, r9] + ldr r1, [r2, #4] + ldr r7, [r2, #12] + cmn r3, #1 + lsr ip, r1, #10 + uxth r8, ip + bne .L667 + mov r3, #16 +.L669: + ldr r0, [r4, #3280] + str ip, [fp, #-56] + str r3, [fp, #-52] + add r0, r0, r9 + ldr r2, [r0, #4] + add r2, r2, #1 + str r2, [r0, #4] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldrh r2, [r7] + movw r3, #65535 + ldr ip, [fp, #-56] + cmp r2, r3 + ldr r3, [fp, #-52] + bne .L666 + ldr r3, [r4, #3280] + mvn r2, #0 + str r2, [r3, r9] + ldr r3, [r4, #3280] + ldr r3, [r3, r9] + cmp r3, r2 + bne .L667 +.L668: + mov r1, #1 + b .L739 +.L666: + ldr r2, [r4, #3280] + ldr r2, [r2, r9] + cmn r2, #1 + bne .L667 + sub r3, r3, #1 + uxth r3, r3 + cmp r3, #0 + bne .L669 + b .L668 +.L667: + ldr r2, [r6, #2540] + ldr r3, [r7, #4] + cmn r2, #1 + beq .L670 + cmp r2, r3 + bhi .L671 +.L670: + cmn r3, #1 + addne r2, r3, #1 + strne r2, [r5, #2540] +.L671: + ldrh r2, [r7] + movw r1, #61604 + cmp r2, r1 + beq .L673 + bhi .L674 + movw r3, #61574 + cmp r2, r3 + beq .L675 +.L672: + ldr r3, [fp, #-48] + add r3, r3, #1 + b .L740 +.L674: + movw r3, #61634 + cmp r2, r3 + beq .L676 + movw r3, #65535 + cmp r2, r3 + moveq r1, #0 + bne .L672 +.L739: + uxth r0, ip + bl FtlFreeSysBlkQueueIn + b .L672 +.L676: + ldr r9, .L741+8 + ldr r3, [r4, #128] + ldrh r2, [r9] + cmp r2, r3 + bls .L678 + movw r2, #1222 + ldr r1, .L741+12 + ldr r0, .L741+16 + bl sftl_printk +.L678: + ldr r0, [r4, #128] + ldrh r2, [r9] + ldr ip, [r4, #3372] + uxth r1, r0 + sub r3, r1, #1 + sub r1, r1, r2 + sub r1, r1, #1 + sxth r3, r3 + sxth r1, r1 + str r1, [fp, #-52] +.L679: + ldr r1, [fp, #-52] + cmp r3, r1 + bgt .L685 + cmp r3, #0 + bge .L717 + b .L672 +.L685: + lsl lr, r3, #2 + ldr r1, [r7, #4] + str lr, [fp, #-56] + ldr lr, [ip, r3, lsl #2] + cmp r1, lr + bls .L680 + ldr r1, [ip] + cmp r1, #0 + bne .L681 + cmp r0, r2 + addne r2, r2, #1 + strhne r2, [r9] @ movhi +.L681: + uxth ip, r3 + mov r1, #0 +.L682: + uxth r0, r1 + sxth r2, r1 + cmp ip, r0 + bhi .L683 + ldr r1, [r7, #4] + cmp r3, #0 + ldr r2, [r5, #3372] + ldr r0, [fp, #-56] + str r1, [r2, r0] + lsl r2, r3, #1 + ldr r1, [r5, #3348] + strh r8, [r1, r2] @ movhi + blt .L672 + ldr r2, .L741+8 + ldr r1, [r5, #128] + ldrh r2, [r2] + sub r1, r1, r2 + sub r1, r1, #1 + sxth r1, r1 + cmp r3, r1 + bgt .L672 +.L717: + add r2, r2, #1 + ldr r1, [r7, #4] + strh r2, [r9] @ movhi + ldr r2, [r4, #3372] + str r1, [r2, r3, lsl #2] + lsl r3, r3, #1 + ldr r2, [r4, #3348] +.L737: + strh r8, [r2, r3] @ movhi + b .L672 +.L683: + ldr r0, [r6, #3372] + add r1, r1, #1 + add lr, r0, r2, lsl #2 + ldr lr, [lr, #4] + str lr, [r0, r2, lsl #2] + lsl r2, r2, #1 + ldr r0, [r6, #3348] + add lr, r0, r2 + ldrh lr, [lr, #2] + strh lr, [r0, r2] @ movhi + b .L682 +.L680: + sub r3, r3, #1 + sxth r3, r3 + b .L679 +.L675: + ldrh r2, [r4, #144] + ldrh r3, [r4, #120] + cmp r2, r3 + bls .L688 + movw r2, #1263 + ldr r1, .L741+12 + ldr r0, .L741+16 + bl sftl_printk +.L688: + ldrh r2, [r4, #120] + ldrh r1, [r4, #144] + ldr ip, [r4, #3360] + sub r0, r2, #1 + sxth r3, r0 + sub r0, r0, r1 + str r0, [fp, #-52] +.L689: + ldr r0, [fp, #-52] + cmp r3, r0 + ble .L694 + ldr r9, [ip, r3, lsl #2] + lsl lr, r3, #2 + ldr r0, [r7, #4] + cmp r0, r9 + bls .L690 + sub r2, r2, r1 + ldr r0, [ip] + clz r2, r2 + uxth ip, r3 + lsr r2, r2, #5 + cmp r0, #0 + orrne r2, r2, #1 + cmp r2, #0 + addeq r1, r1, #1 + strheq r1, [r5, #144] @ movhi + mov r1, #0 +.L692: + uxth r0, r1 + sxth r2, r1 + cmp ip, r0 + bhi .L693 + ldr r1, [r7, #4] + ldr r2, [r5, #3360] + str r1, [r2, lr] + lsl r2, r3, #1 + ldr r1, [r5, #148] + strh r8, [r1, r2] @ movhi +.L694: + cmp r3, #0 + blt .L672 + ldrh r2, [r5, #120] + ldrh r1, [r5, #144] + sub r2, r2, #1 + sub r2, r2, r1 + sxth r2, r2 + cmp r3, r2 + bgt .L672 + add r1, r1, #1 + ldr r2, [r5, #3360] + strh r1, [r5, #144] @ movhi + ldr r1, [r7, #4] + str r1, [r2, r3, lsl #2] + lsl r3, r3, #1 + ldr r2, [r5, #148] + b .L737 +.L693: + ldr r0, [r6, #3360] + add r1, r1, #1 + add r9, r0, r2, lsl #2 + ldr r9, [r9, #4] + str r9, [r0, r2, lsl #2] + lsl r2, r2, #1 + ldr r0, [r6, #148] + add r9, r0, r2 + ldrh r9, [r9, #2] + strh r9, [r0, r2] @ movhi + b .L692 +.L690: + sub r3, r3, #1 + sxth r3, r3 + b .L689 +.L673: + ldr r9, .L741+20 + movw r2, #65535 + ldrh r1, [r9] + cmp r1, r2 + strheq r8, [r9] @ movhi + beq .L738 + ldrh r0, [r9, #4] + cmp r0, r2 + beq .L697 + mov r1, #1 + bl FtlFreeSysBlkQueueIn +.L697: + ldr r3, [r7, #4] + ldr r2, [r4, #2584] + cmp r2, r3 + strhcs r8, [r9, #4] @ movhi + bcs .L672 + ldrh r3, [r9] + strh r8, [r9] @ movhi + strh r3, [r9, #4] @ movhi + ldr r3, [r7, #4] +.L738: + str r3, [r4, #2584] + b .L672 +.L701: + ldr r2, [r6, #3348] + ldrh r3, [r2] + cmp r3, #0 + beq .L703 +.L706: + ldr r1, [r4, #148] + ldrh r2, [r1] + cmp r2, #0 + beq .L704 +.L705: + movw r3, #3428 + ldrh r2, [r4, r3] + ldr r3, [r4, #128] + cmp r2, r3 + bls .L736 + movw r2, #1388 + ldr r1, .L741+12 + ldr r0, .L741+16 + bl sftl_printk +.L736: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L703: + movw r1, #3428 + ldrh r1, [r6, r1] + cmp r1, #0 + ldrne r1, [r6, #128] + beq .L706 +.L707: + sxth ip, r3 + cmp ip, r1 + bcs .L706 + lsl r0, ip, #1 + add r3, r3, #1 + ldrh r0, [r2, r0] + cmp r0, #0 + beq .L707 + mov r3, ip + mov lr, #0 +.L708: + ldr r2, [r5, #128] + cmp r3, r2 + bcs .L706 + ldr r1, [r5, #3348] + lsl r2, r3, #1 + sub r0, r3, ip + lsl r6, r0, #1 + ldrh r7, [r1, r2] + strh r7, [r1, r6] @ movhi + ldr r1, [r5, #3372] + ldr r6, [r1, r3, lsl #2] + add r3, r3, #1 + sxth r3, r3 + str r6, [r1, r0, lsl #2] + ldr r1, [r5, #3348] + strh lr, [r1, r2] @ movhi + b .L708 +.L704: + ldrh r3, [r4, #144] + cmp r3, #0 + ldrhne r0, [r4, #120] + beq .L705 +.L713: + sxth r3, r2 + cmp r3, r0 + mov ip, r3 + bge .L705 + lsl lr, r3, #1 + add r2, r2, #1 + ldrh lr, [r1, lr] + cmp lr, #0 + beq .L713 + mov lr, #0 +.L714: + ldrh r2, [r5, #120] + cmp r3, r2 + bge .L705 + ldr r1, [r5, #148] + lsl r2, r3, #1 + sub r0, r3, ip + lsl r6, r0, #1 + ldrh r7, [r1, r2] + strh r7, [r1, r6] @ movhi + ldr r1, [r5, #3360] + ldr r6, [r1, r3, lsl #2] + add r3, r3, #1 + sxth r3, r3 + str r6, [r1, r0, lsl #2] + ldr r1, [r5, #148] + strh lr, [r1, r2] @ movhi + b .L714 +.L742: + .align 2 +.L741: + .word .LANCHOR0 + .word .LANCHOR0+60 + .word .LANCHOR0+3428 + .word .LANCHOR1+231 + .word .LC1 + .word .LANCHOR0+2576 + .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadBbt .syntax unified @@ -8807,71 +5229,71 @@ FtlLoadBbt: mov ip, sp push {r4, r5, r6, r7, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L1323 - ldr r3, [r4, #3284] - add r7, r4, #3264 - ldr r6, [r4, #3288] - str r3, [r4, #3272] - str r6, [r4, #3276] + ldr r4, .L775 + ldr r7, .L775+4 + ldr r3, [r4, #3292] + ldr r6, [r4, #3324] + str r3, [r4, #3452] + str r6, [r4, #3456] bl FtlBbtMemInit ldrh r5, [r4, #98] sub r5, r5, #1 uxth r5, r5 -.L1292: +.L744: ldrh r3, [r4, #98] sub r3, r3, #16 cmp r5, r3 - ble .L1295 + ble .L747 lsl r3, r5, #10 mov r2, #1 mov r1, r2 mov r0, r7 - str r3, [r4, #3268] + str r3, [r4, #3448] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] cmn r3, #1 - bne .L1293 - ldr r3, [r4, #3268] + bne .L745 + ldr r3, [r4, #3448] mov r2, #1 mov r1, r2 mov r0, r7 add r3, r3, #1 - str r3, [r4, #3268] + str r3, [r4, #3448] bl FlashReadPages -.L1293: - ldr r3, [r4, #3264] +.L745: + ldr r3, [r4, #3444] cmn r3, #1 - beq .L1294 + beq .L746 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L1294 + bne .L746 ldr r3, [r6, #4] strh r5, [r4, #152] @ movhi str r3, [r4, #160] ldrh r3, [r6, #8] strh r3, [r4, #156] @ movhi -.L1295: +.L747: ldrh r3, [r4, #152] movw r2, #65535 cmp r3, r2 - beq .L1309 + beq .L761 ldrh r3, [r4, #156] cmp r3, r2 - beq .L1299 + beq .L751 lsl r3, r3, #10 mov r2, #1 mov r1, r2 - ldr r0, .L1323+4 - str r3, [r4, #3268] + ldr r0, .L775+4 + str r3, [r4, #3448] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] cmn r3, #1 - beq .L1299 + beq .L751 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L1299 + bne .L751 ldr r3, [r6, #4] ldr r2, [r4, #160] cmp r3, r2 @@ -8880,3564 +5302,95 @@ FtlLoadBbt: ldrhhi r3, [r6, #8] strhhi r2, [r4, #152] @ movhi strhhi r3, [r4, #156] @ movhi -.L1299: - ldr r7, .L1323+4 +.L751: + ldr r7, .L775+4 mov r1, #1 ldrh r0, [r4, #152] bl FtlGetLastWrittenPage sxth r5, r0 add r0, r0, #1 strh r0, [r4, #154] @ movhi -.L1301: +.L753: cmp r5, #0 - bge .L1304 - mov r2, #254 - ldr r1, .L1323+8 - ldr r0, .L1323+12 + bge .L756 + mov r2, #253 + ldr r1, .L775+8 + ldr r0, .L775+12 bl sftl_printk -.L1303: +.L755: ldrh r3, [r6, #10] ldrh r0, [r6, #12] strh r3, [r4, #158] @ movhi movw r3, #65535 cmp r0, r3 - beq .L1306 + beq .L758 ldr r2, [r4, #28] cmp r0, r2 - beq .L1306 + beq .L758 ldrh r3, [r4, #42] lsr r3, r3, #2 cmp r0, r3 cmpcc r2, r3 - bcs .L1306 + bcs .L758 bl FtlSysBlkNumInit -.L1306: - ldr r6, .L1323+16 +.L758: + ldr r6, .L775+16 mov r5, #0 - add r7, r6, #3728 -.L1307: + ldr r7, .L775+20 +.L759: ldrh r3, [r4, #54] cmp r5, r3 - bcc .L1308 + bcc .L760 mov r0, #0 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L1294: +.L746: sub r5, r5, #1 uxth r5, r5 - b .L1292 -.L1304: + b .L744 +.L756: ldrh r3, [r4, #152] mov r2, #1 mov r1, r2 mov r0, r7 orr r3, r5, r3, lsl #10 - str r3, [r4, #3268] - ldr r3, [r4, #3284] - str r3, [r4, #3272] + str r3, [r4, #3448] + ldr r3, [r4, #3292] + str r3, [r4, #3452] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] cmn r3, #1 - beq .L1302 + beq .L754 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - beq .L1303 -.L1302: + beq .L755 +.L754: sub r5, r5, #1 sxth r5, r5 - b .L1301 -.L1308: + b .L753 +.L760: ldrh r2, [r7] - ldr r1, [r4, #3272] + ldr r1, [r4, #3452] ldr r0, [r6, #4]! lsl r2, r2, #2 mla r1, r5, r2, r1 add r5, r5, #1 bl ftl_memcpy - b .L1307 -.L1309: + b .L759 +.L761: mvn r0, #0 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L1324: +.L776: .align 2 -.L1323: +.L775: .word .LANCHOR0 - .word .LANCHOR0+3264 - .word .LANCHOR1+443 + .word .LANCHOR0+3444 + .word .LANCHOR1+245 .word .LC1 .word .LANCHOR0+176 + .word .LANCHOR0+3380 .size FtlLoadBbt, .-FtlLoadBbt .align 2 - .global FtlMakeBbt - .syntax unified - .arm - .fpu softvfp - .type FtlMakeBbt, %function -FtlMakeBbt: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #4 - mov r7, #0 - ldr r8, .L1344 - bl FtlBbtMemInit - bl FtlLoadFactoryBbt - sub r5, r8, #180 - sub r9, r8, #18 - mov r4, r5 -.L1326: - ldrh r3, [r5, #54] - cmp r7, r3 - bcc .L1332 - mov r0, #0 -.L1333: - ldrh r2, [r4, #114] - uxth r3, r0 - add r5, r0, #1 - cmp r2, r3 - bhi .L1334 - ldrh r5, [r4, #164] - movw r6, #65535 - sub r5, r5, #1 - uxth r5, r5 -.L1335: - ldrh r3, [r4, #164] - sub r3, r3, #48 - cmp r5, r3 - ble .L1339 - mov r0, r5 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L1336 - mov r0, r5 - bl FlashTestBlk - cmp r0, #0 - beq .L1337 - mov r0, r5 - bl FtlBbmMapBadBlock -.L1336: - sub r5, r5, #1 - uxth r5, r5 - b .L1335 -.L1332: - ldrh r3, [r9, #2]! - movw r2, #65535 - ldr r0, [r5, #3284] - ldr r10, [r5, #3288] - cmp r3, r2 - str r0, [r5, #3272] - str r10, [r5, #3276] - beq .L1327 - ldrh ip, [r5, #98] - mov r2, #1 - mov r1, r2 - ldr r0, .L1344+4 - mla ip, r7, ip, r3 - lsl r3, ip, #10 - str ip, [fp, #-44] - str r3, [r5, #3268] - bl FlashReadPages - ldrh r2, [r5, #98] - ldr r1, [r5, #3272] - ldr r0, [r8] - add r2, r2, #7 - asr r2, r2, #3 - bl ftl_memcpy - ldr ip, [fp, #-44] -.L1328: - uxth r0, ip - add r7, r7, #1 - add r8, r8, #4 - bl FtlBbmMapBadBlock - b .L1326 -.L1327: - mov r1, r7 - bl FlashGetBadBlockList - ldr r1, [r8] - ldr r0, [r5, #3272] - bl FtlBbt2Bitmap - ldrh r6, [r5, #98] -.L1330: - sub r6, r6, #1 - uxth r6, r6 -.L1329: - ldrh r0, [r4, #98] - smlabb r0, r0, r7, r6 - uxth r0, r0 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L1330 - mov r1, #16 - ldr r0, [r4, #3288] - strh r6, [r9] @ movhi - bl __memzero - mov r1, #4096 - ldr r0, [r4, #3284] - bl __memzero - ldr r3, .L1344+8 - strh r3, [r10] @ movhi - mov r3, #0 - str r3, [r10, #4] - ldrh r3, [r9] - ldrh ip, [r4, #98] - strh r3, [r10, #2] @ movhi - ldrh r3, [r9] - ldr r1, [r8] - ldr r0, [r4, #3272] - mla ip, r7, ip, r3 - lsl r3, ip, #10 - str ip, [fp, #-44] - str r3, [r4, #3268] - ldr r3, .L1344+12 - ldrh r2, [r3] - lsl r2, r2, #2 - bl ftl_memcpy - mov r2, #1 - ldr r0, .L1344+4 - mov r1, r2 - bl FlashEraseBlocks - mov r3, #1 - ldr r0, .L1344+4 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldr r3, [r4, #3264] - ldr ip, [fp, #-44] - cmn r3, #1 - bne .L1328 - uxth r0, ip - bl FtlBbmMapBadBlock - b .L1329 -.L1334: - uxth r0, r0 - bl FtlBbmMapBadBlock - mov r0, r5 - b .L1333 -.L1337: - ldrh r3, [r4, #152] - cmp r3, r6 - strheq r5, [r4, #152] @ movhi - beq .L1336 -.L1338: - strh r5, [r4, #156] @ movhi -.L1339: - ldrh r3, [r4, #152] - mov r5, #0 - ldr r0, [r4, #3804] - mov r1, #1 - str r5, [r4, #160] - mov r2, #2 - strh r5, [r4, #154] @ movhi - lsl r3, r3, #10 - str r3, [r0, #4] - ldrh r3, [r4, #156] - lsl r3, r3, #10 - str r3, [r0, #24] - bl FlashEraseBlocks - ldrh r0, [r4, #152] - bl FtlBbmMapBadBlock - ldrh r0, [r4, #156] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldr r3, [r4, #160] - ldrh r2, [r4, #156] - strh r5, [r4, #154] @ movhi - add r3, r3, #1 - str r3, [r4, #160] - ldrh r3, [r4, #152] - strh r2, [r4, #152] @ movhi - strh r3, [r4, #156] @ movhi - bl FtlBbmTblFlush - mov r0, r5 - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1345: - .align 2 -.L1344: - .word .LANCHOR0+180 - .word .LANCHOR0+3264 - .word -3872 - .word .LANCHOR0+3904 - .size FtlMakeBbt, .-FtlMakeBbt - .align 2 - .global FtlVendorPartWrite - .syntax unified - .arm - .fpu softvfp - .type FtlVendorPartWrite, %function -FtlVendorPartWrite: - @ args = 0, pretend = 0, frame = 100 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #100 - mov r7, r0 - ldr r4, .L1355 - mov r5, r1 - str r2, [fp, #-128] - add r2, r0, r1 - ldrh r3, [r4, #96] - cmp r2, r3 - mvnhi r8, #0 - bhi .L1346 - ldrh r6, [r4, #108] - mov r8, #0 - lsr r6, r0, r6 - lsl r10, r6, #2 -.L1348: - cmp r5, #0 - bne .L1353 -.L1346: - mov r0, r8 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1353: - ldr r3, [r4, #3888] - mov r0, r7 - ldrh r2, [r4, #58] - ldr ip, [r3, r10] - mov r1, r2 - str r2, [fp, #-136] - str ip, [fp, #-140] - bl __umodsi3 - ldr r2, [fp, #-136] - ldr ip, [fp, #-140] - str r0, [fp, #-132] - sub r3, r2, r0 - uxth r9, r3 - cmp r5, r9 - uxthcc r9, r5 - cmp ip, #0 - cmpne r9, r2 - movne r1, #1 - moveq r1, #0 - beq .L1350 - ldr r2, [r4, #3852] - sub r0, fp, #124 - str ip, [fp, #-120] - str r2, [fp, #-116] - sub r2, fp, #104 - str r2, [fp, #-112] - mov r2, #1 - mov r1, r2 - bl FlashReadPages -.L1351: - ldr r3, [fp, #-132] - lsl ip, r9, #9 - ldr r0, [r4, #3852] - sub r5, r5, r9 - mov r2, ip - ldr r1, [fp, #-128] - str ip, [fp, #-136] - add r7, r7, r9 - add r10, r10, #4 - add r0, r0, r3, lsl #9 - bl ftl_memcpy - mov r1, r6 - ldr r2, [r4, #3852] - ldr r0, .L1355+4 - add r6, r6, #1 - bl FtlMapWritePage - ldr r3, [fp, #-128] - cmn r0, #1 - ldr ip, [fp, #-136] - mvneq r8, #0 - add r3, r3, ip - str r3, [fp, #-128] - b .L1348 -.L1350: - ldrh r2, [r4, #110] - ldr r0, [r4, #3852] - bl ftl_memset - b .L1351 -.L1356: - .align 2 -.L1355: - .word .LANCHOR0 - .word .LANCHOR0+3956 - .size FtlVendorPartWrite, .-FtlVendorPartWrite - .align 2 - .global Ftl_save_ext_data - .syntax unified - .arm - .fpu softvfp - .type Ftl_save_ext_data, %function -Ftl_save_ext_data: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - ldr r3, .L1359 - ldr r2, .L1359+4 - ldr r1, [r3, #2636] - cmp r1, r2 - ldmfdne sp, {fp, sp, pc} - ldr r2, .L1359+8 - mov r1, #1 - mov r0, #0 - str r2, [r3, #2640] - ldr r2, [r3, #2532] - str r2, [r3, #2724] - ldr r2, [r3, #2536] - str r2, [r3, #2728] - ldr r2, [r3, #2528] - str r2, [r3, #2644] - ldr r2, [r3, #2516] - str r2, [r3, #2648] - ldr r2, [r3, #2508] - str r2, [r3, #2652] - ldr r2, [r3, #2524] - str r2, [r3, #2656] - ldr r2, [r3, #2552] - str r2, [r3, #2664] - ldr r2, [r3, #2560] - str r2, [r3, #2668] - ldr r2, [r3, #2512] - str r2, [r3, #2672] - ldr r2, [r3, #2520] - str r2, [r3, #2676] - ldr r2, [r3, #2564] - str r2, [r3, #2680] - ldr r2, [r3, #2568] - str r2, [r3, #2684] - ldr r2, .L1359+12 - bl FtlVendorPartWrite - ldmfd sp, {fp, sp, pc} -.L1360: - .align 2 -.L1359: - .word .LANCHOR0 - .word 1179929683 - .word 1342177349 - .word .LANCHOR0+2636 - .size Ftl_save_ext_data, .-Ftl_save_ext_data - .align 2 - .global FtlEctTblFlush - .syntax unified - .arm - .fpu softvfp - .type FtlEctTblFlush, %function -FtlEctTblFlush: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - ldr r2, .L1366 - ldrh r3, [r2] - cmp r3, #31 - addls r3, r3, #1 - movhi r3, #32 - strhls r3, [r2] @ movhi - movls r3, #1 - cmp r0, #0 - ldr r2, .L1366+4 - bne .L1363 - ldr r1, [r2, #3864] - ldr r0, [r1, #20] - ldr r1, [r1, #16] - add r3, r3, r0 - cmp r1, r3 - bcc .L1364 -.L1363: - ldr r3, [r2, #3864] - mov r0, #64 - ldr r1, [r3, #16] - str r1, [r3, #20] - ldr r1, .L1366+8 - str r1, [r3] - ldr r3, .L1366+12 - ldr r2, [r2, #3864] - ldrh r1, [r3] - lsl r3, r1, #9 - str r3, [r2, #12] - ldr r3, [r2, #8] - add r3, r3, #1 - str r3, [r2, #8] - mov r3, #0 - str r3, [r2, #4] - bl FtlVendorPartWrite - bl Ftl_save_ext_data -.L1364: - mov r0, #0 - ldmfd sp, {fp, sp, pc} -.L1367: - .align 2 -.L1366: - .word .LANCHOR3-4032 - .word .LANCHOR0 - .word 1112818501 - .word .LANCHOR0+3856 - .size FtlEctTblFlush, .-FtlEctTblFlush - .align 2 - .global FtlVendorPartRead - .syntax unified - .arm - .fpu softvfp - .type FtlVendorPartRead, %function -FtlVendorPartRead: - @ args = 0, pretend = 0, frame = 96 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #96 - mov r9, r2 - ldr r3, .L1378 - mov r6, r1 - add r1, r0, r1 - mov r7, r0 - ldrh r2, [r3, #96] - mov r10, r3 - cmp r1, r2 - mvnhi r8, #0 - bhi .L1368 - ldrh r5, [r3, #108] - mov r8, #0 - lsr r5, r0, r5 - lsl r3, r5, #2 - str r3, [fp, #-128] -.L1370: - cmp r6, #0 - bne .L1376 -.L1368: - mov r0, r8 - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1376: - ldr r3, [fp, #-128] - mov r0, r7 - ldr r2, [r10, #3888] - ldrh r4, [r10, #58] - ldr ip, [r2, r3] - mov r1, r4 - str ip, [fp, #-136] - bl __umodsi3 - sub r4, r4, r0 - ldr ip, [fp, #-136] - uxth r4, r4 - str r0, [fp, #-132] - cmp r6, r4 - uxthcc r4, r6 - cmp ip, #0 - lsl r3, r4, #9 - str r3, [fp, #-136] - beq .L1372 - ldr r2, [r10, #3852] - sub r0, fp, #124 - str ip, [fp, #-120] - str ip, [fp, #-136] - str r2, [fp, #-116] - sub r2, fp, #104 - str r2, [fp, #-112] - mov r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [fp, #-124] - ldr ip, [fp, #-136] - cmn r2, #1 - ldr r2, [r10, #3264] - mvneq r8, #0 - cmp r2, #256 - bne .L1374 - mov r2, ip - mov r1, r5 - ldr r0, .L1378+4 - bl sftl_printk - ldr r2, [r10, #3852] - mov r1, r5 - ldr r0, .L1378+8 - bl FtlMapWritePage -.L1374: - ldr r1, [r10, #3852] - lsl r2, r4, #9 - ldr r3, [fp, #-132] - mov r0, r9 - add r1, r1, r3, lsl #9 - bl ftl_memcpy -.L1375: - ldr r3, [fp, #-128] - add r5, r5, #1 - sub r6, r6, r4 - add r7, r7, r4 - add r9, r9, r4, lsl #9 - add r3, r3, #4 - str r3, [fp, #-128] - b .L1370 -.L1372: - lsl r2, r4, #9 - mov r1, ip - mov r0, r9 - bl ftl_memset - b .L1375 -.L1379: - .align 2 -.L1378: - .word .LANCHOR0 - .word .LC107 - .word .LANCHOR0+3956 - .size FtlVendorPartRead, .-FtlVendorPartRead - .align 2 - .global FtlLoadEctTbl - .syntax unified - .arm - .fpu softvfp - .type FtlLoadEctTbl, %function -FtlLoadEctTbl: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1382 - mov r0, #64 - add r5, r4, #3856 - ldr r2, [r4, #3864] - ldrh r1, [r5] - bl FtlVendorPartRead - ldr r3, [r4, #3864] - ldr r2, [r3] - ldr r3, .L1382+4 - cmp r2, r3 - beq .L1381 - ldr r1, .L1382+8 - ldr r0, .L1382+12 - bl sftl_printk - ldrh r2, [r5] - mov r1, #0 - ldr r0, [r4, #3864] - lsl r2, r2, #9 - bl ftl_memset -.L1381: - mov r0, #0 - ldmfd sp, {r4, r5, fp, sp, pc} -.L1383: - .align 2 -.L1382: - .word .LANCHOR0 - .word 1112818501 - .word .LC108 - .word .LC71 - .size FtlLoadEctTbl, .-FtlLoadEctTbl - .align 2 - .global Ftl_load_ext_data - .syntax unified - .arm - .fpu softvfp - .type Ftl_load_ext_data, %function -Ftl_load_ext_data: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1387 - mov r1, #1 - mov r0, #0 - ldr r2, .L1387+4 - bl FtlVendorPartRead - ldr r5, .L1387+8 - ldr r3, [r4, #2636] - cmp r3, r5 - beq .L1385 - mov r1, #512 - ldr r0, .L1387+4 - bl __memzero - str r5, [r4, #2636] -.L1385: - ldr r3, [r4, #2636] - cmp r3, r5 - bne .L1386 - ldr r3, [r4, #2724] - str r3, [r4, #2532] - ldr r3, [r4, #2728] - str r3, [r4, #2536] - ldr r3, [r4, #2644] - str r3, [r4, #2528] - ldr r3, [r4, #2648] - str r3, [r4, #2516] - ldr r3, [r4, #2652] - str r3, [r4, #2508] - ldr r3, [r4, #2656] - str r3, [r4, #2524] - ldr r3, [r4, #2664] - str r3, [r4, #2552] - ldr r3, [r4, #2668] - str r3, [r4, #2560] - ldr r3, [r4, #2672] - str r3, [r4, #2512] - ldr r3, [r4, #2676] - str r3, [r4, #2520] - ldr r3, [r4, #2680] - str r3, [r4, #2564] - ldr r3, [r4, #2684] - str r3, [r4, #2568] -.L1386: - ldrh r2, [r4, #92] - ldr r3, [r4, #2552] - ldr r0, [r4, #2548] - ldrh r1, [r4, #40] - mla r0, r0, r2, r3 - bl __udivsi3 - str r0, [r4, #2556] - ldmfd sp, {r4, r5, fp, sp, pc} -.L1388: - .align 2 -.L1387: - .word .LANCHOR0 - .word .LANCHOR0+2636 - .word 1179929683 - .size Ftl_load_ext_data, .-Ftl_load_ext_data - .align 2 - .global FtlVpcTblFlush - .syntax unified - .arm - .fpu softvfp - .type FtlVpcTblFlush, %function -FtlVpcTblFlush: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1398 - mov r6, #0 - mov r1, #255 - ldr r10, .L1398+4 - ldr r3, [r4, #3284] - add r5, r4, #2576 - ldr r8, [r4, #3288] - sub r7, r5, #308 - add r9, r4, #3264 - str r3, [r4, #3272] - ldrh r3, [r5] - str r8, [r4, #3276] - str r6, [r8, #12] - strh r3, [r8, #2] @ movhi - ldr r3, .L1398+8 - strh r3, [r8] @ movhi - ldr r3, [r4, #2584] - str r6, [r8, #8] - ldrh r2, [r5, #-226] - str r3, [r8, #4] - ldr r3, .L1398+12 - str r3, [r4, #2268] - ldr r3, .L1398+16 - str r3, [r4, #2272] - ldrh r3, [r5, #6] - strh r3, [r7, #8] @ movhi - ldrh r3, [r4, #54] - strb r3, [r4, #2278] - movw r3, #2348 - ldrh r3, [r4, r3] - strh r3, [r7, #14] @ movhi - ldrb r3, [r4, #2354] @ zero_extendqisi2 - orr r3, r3, r2, lsl #6 - ldrh r2, [r5, #-178] - strh r3, [r7, #16] @ movhi - ldrb r3, [r4, #2356] @ zero_extendqisi2 - strb r3, [r4, #2279] - movw r3, #2396 - ldrh r3, [r4, r3] - strh r3, [r7, #18] @ movhi - ldrb r3, [r4, #2402] @ zero_extendqisi2 - orr r3, r3, r2, lsl #6 - strh r3, [r7, #20] @ movhi - ldrb r3, [r4, #2404] @ zero_extendqisi2 - strb r3, [r4, #2280] - movw r3, #2444 - ldrh r3, [r4, r3] - strh r3, [r7, #22] @ movhi - ldrh r2, [r5, #-130] - ldrb r3, [r4, #2450] @ zero_extendqisi2 - ldr r0, [r4, #3272] - orr r3, r3, r2, lsl #6 - ldrh r2, [r4, #110] - strh r3, [r7, #24] @ movhi - ldrb r3, [r4, #2452] @ zero_extendqisi2 - strb r3, [r4, #2281] - ldr r3, [r4, #2548] - str r3, [r4, #2300] - ldr r3, [r4, #2540] - str r3, [r4, #2308] - ldr r3, [r4, #2544] - str r3, [r4, #2304] - movw r3, #3202 - ldrh r3, [r4, r3] - strh r3, [r7, #44] @ movhi - movw r3, #3204 - ldrh r3, [r4, r3] - strh r3, [r7, #46] @ movhi - bl ftl_memset - mov r1, r7 - mov r2, #48 - ldr r0, [r4, #3272] - movw r7, #65535 - bl ftl_memcpy - ldrh r2, [r4, #40] - ldr r0, [r4, #3272] - ldr r1, [r4, #2324] - lsl r2, r2, #1 - add r0, r0, #48 - bl ftl_memcpy - ldrh r0, [r4, #40] - ldr r3, [r4, #3272] - ldr r1, [r4, #24] - lsr r2, r0, #3 - add r0, r0, #24 - lsl r0, r0, #1 - add r2, r2, #4 - bic r0, r0, #3 - add r0, r3, r0 - bl ftl_memcpy - mov r0, r6 - bl FtlUpdateVaildLpn -.L1390: - ldr r3, [r4, #3284] - mov r0, r9 - ldrh r2, [r5] - str r3, [r4, #3272] - ldr r3, [r4, #3288] - str r3, [r4, #3276] - ldrh r3, [r5, #2] - orr r3, r3, r2, lsl #10 - str r3, [r4, #3268] - mov r3, #1 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldrh r3, [r4, #104] - ldrh r2, [r5, #2] - sub r3, r3, #1 - cmp r2, r3 - blt .L1391 - ldrh r3, [r5] - ldrh r7, [r5, #4] - strh r3, [r5, #4] @ movhi - mov r3, #0 - strh r3, [r5, #2] @ movhi - bl FtlFreeSysBlkQueueOut - ldr r3, [r4, #2540] - strh r0, [r5] @ movhi - add r2, r3, #1 - str r3, [r4, #2584] - str r2, [r4, #2540] - lsl r2, r0, #10 - str r2, [r4, #3268] - str r3, [r8, #4] - mov r3, #1 - strh r0, [r8, #2] @ movhi - mov r2, r3 - mov r1, r3 - mov r0, r9 - bl FlashProgPages -.L1391: - ldrh r3, [r5, #2] - ldr r2, [r4, #3264] - add r3, r3, #1 - uxth r3, r3 - cmn r2, #1 - strh r3, [r5, #2] @ movhi - bne .L1392 - cmp r3, #1 - bne .L1393 - movw r2, #1169 - mov r1, r10 - ldr r0, .L1398+20 - bl sftl_printk -.L1393: - ldrh r3, [r5, #2] - add r6, r6, #1 - uxth r6, r6 - cmp r3, #1 - ldrheq r3, [r4, #104] - subeq r3, r3, #1 - strheq r3, [r5, #2] @ movhi - cmp r6, #3 - bls .L1390 - mov r2, r6 - ldr r1, [r4, #3268] - ldr r0, .L1398+24 - bl sftl_printk -.L1396: - b .L1396 -.L1392: - cmp r2, #256 - cmpne r3, #1 - beq .L1390 - movw r3, #65535 - cmp r7, r3 - beq .L1397 - mov r1, #1 - mov r0, r7 - bl FtlFreeSysBlkQueueIn -.L1397: - mov r0, #0 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1399: - .align 2 -.L1398: - .word .LANCHOR0 - .word .LANCHOR1+454 - .word -3932 - .word 1179929683 - .word 1342177349 - .word .LC1 - .word .LC109 - .size FtlVpcTblFlush, .-FtlVpcTblFlush - .align 2 - .global FtlSysFlush - .syntax unified - .arm - .fpu softvfp - .type FtlSysFlush, %function -FtlSysFlush: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - bl l2p_flush - mov r0, #1 - bl FtlEctTblFlush - bl FtlVpcTblFlush - mov r0, #0 - ldmfd sp, {fp, sp, pc} - .size FtlSysFlush, .-FtlSysFlush - .align 2 - .global sftl_deinit - .syntax unified - .arm - .fpu softvfp - .type sftl_deinit, %function -sftl_deinit: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - ldr r3, .L1403 - ldr r3, [r3] - cmp r3, #1 - bne .L1402 - bl FtlSysFlush -.L1402: - mov r0, #0 - ldmfd sp, {fp, sp, pc} -.L1404: - .align 2 -.L1403: - .word .LANCHOR2 - .size sftl_deinit, .-sftl_deinit - .align 2 - .global FtlDiscard - .syntax unified - .arm - .fpu softvfp - .type FtlDiscard, %function -FtlDiscard: - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #8 - add r2, r0, r1 - ldr r6, .L1420 - mov r8, r0 - mov r5, r1 - ldr r3, [r6, #140] - cmp r2, r3 - mvnhi r0, #0 - bhi .L1405 - cmp r1, #31 - bhi .L1407 -.L1412: - mov r0, #0 -.L1405: - sub sp, fp, #32 - ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L1407: - ldrh r4, [r6, #58] - mov r1, r4 - bl __udivsi3 - smulbb r3, r0, r4 - mov r7, r0 - sub r8, r8, r3 - uxth r8, r8 - cmp r8, #0 - beq .L1408 - sub r4, r4, r8 - add r7, r0, #1 - cmp r4, r5 - movcs r4, r5 - uxth r4, r4 - sub r5, r5, r4 -.L1408: - ldr r4, .L1420+4 - mvn r3, #0 - str r3, [fp, #-36] -.L1409: - ldrh r3, [r6, #58] - cmp r5, r3 - bcs .L1411 - ldr r3, .L1420+4 - ldr r2, [r3, #-4028] - cmp r2, #32 - bls .L1412 - mov r4, #0 - str r4, [r3, #-4028] - bl l2p_flush - bl FtlVpcTblFlush - b .L1412 -.L1411: - mov r2, #0 - sub r1, fp, #40 - mov r0, r7 - bl log2phys - ldr r3, [fp, #-40] - cmn r3, #1 - beq .L1410 - ldr r3, [r4, #-4028] - mov r2, #1 - sub r1, fp, #36 - mov r0, r7 - add r3, r3, #1 - str r3, [r4, #-4028] - ldr r3, [r6, #2512] - add r3, r3, #1 - str r3, [r6, #2512] - bl log2phys - ldr r0, [fp, #-40] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl decrement_vpc_count -.L1410: - ldrh r3, [r6, #58] - add r7, r7, #1 - sub r5, r5, r3 - b .L1409 -.L1421: - .align 2 -.L1420: - .word .LANCHOR0 - .word .LANCHOR3 - .size FtlDiscard, .-FtlDiscard - .align 2 - .global FtlVpcCheckAndModify - .syntax unified - .arm - .fpu softvfp - .type FtlVpcCheckAndModify, %function -FtlVpcCheckAndModify: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #4 - mov r5, #0 - ldr r4, .L1434 - ldr r1, .L1434+4 - ldr r0, .L1434+8 - bl sftl_printk - ldrh r2, [r4, #42] - mov r1, #0 - ldr r0, [r4, #3868] - lsl r2, r2, #1 - bl ftl_memset -.L1423: - ldr r3, [r4, #2504] - cmp r5, r3 - bcc .L1425 - ldr r9, .L1434+12 - mov r6, #0 - ldr r10, .L1434+16 -.L1426: - ldrh r3, [r4, #40] - uxth r5, r6 - cmp r3, r5 - bhi .L1430 - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1425: - mov r2, #0 - sub r1, fp, #44 - mov r0, r5 - bl log2phys - ldr r0, [fp, #-44] - cmn r0, #1 - beq .L1424 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r4, #3868] - lsl r0, r0, #1 - ldrh r3, [r2, r0] - add r3, r3, #1 - strh r3, [r2, r0] @ movhi -.L1424: - add r5, r5, #1 - b .L1423 -.L1430: - uxth r8, r6 - ldr r3, [r4, #2324] - movw r1, #65535 - lsl r7, r8, #1 - ldrh r2, [r3, r7] - ldr r3, [r4, #3868] - ldrh r3, [r3, r7] - cmp r2, r1 - cmpne r2, r3 - beq .L1428 - mov r1, r8 - mov r0, r9 - bl sftl_printk - ldrh r3, [r10] - cmp r3, r5 - beq .L1428 - ldr r3, .L1434+20 - ldrh r2, [r3] - cmp r2, r5 - beq .L1428 - ldrh r3, [r3, #-48] - cmp r3, r5 - beq .L1428 - ldr r3, [r4, #3868] - mov r0, r8 - ldrh r2, [r3, r7] - ldr r3, [r4, #2324] - strh r2, [r3, r7] @ movhi - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L1428: - add r6, r6, #1 - b .L1426 -.L1435: - .align 2 -.L1434: - .word .LANCHOR0 - .word .LANCHOR1+469 - .word .LC97 - .word .LC110 - .word .LANCHOR0+2348 - .word .LANCHOR0+2444 - .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify - .align 2 - .global allocate_new_data_superblock - .syntax unified - .arm - .fpu softvfp - .type allocate_new_data_superblock, %function -allocate_new_data_superblock: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r5, .L1446 - mov r7, r0 - ldrh r4, [r0] - ldrh r3, [r5, #40] - cmp r3, r4 - bcs .L1437 - movw r2, #2750 - ldr r1, .L1446+4 - ldr r0, .L1446+8 - bl sftl_printk -.L1437: - movw r3, #65535 - cmp r4, r3 - beq .L1438 - ldr r2, [r5, #2324] - lsl r3, r4, #1 - mov r0, r4 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L1439 - bl INSERT_DATA_LIST -.L1438: - mov r3, #1 - movw r2, #65535 - strb r3, [r7, #8] - ldr r3, .L1446+12 - ldrh r0, [r3] - mov r6, r3 - cmp r0, r2 - beq .L1440 - cmp r4, r0 - bne .L1441 - ldr r2, [r5, #2324] - lsl r3, r0, #1 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L1442 -.L1441: - bl update_vpc_list -.L1442: - mvn r3, #0 - strh r3, [r6] @ movhi -.L1440: - mov r0, r7 - bl allocate_data_superblock - bl l2p_flush - mov r0, #0 - bl FtlEctTblFlush - bl FtlVpcTblFlush - mov r0, #0 - ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} -.L1439: - bl INSERT_FREE_LIST - b .L1438 -.L1447: - .align 2 -.L1446: - .word .LANCHOR0 - .word .LANCHOR1+490 - .word .LC1 - .word .LANCHOR0+4000 - .size allocate_new_data_superblock, .-allocate_new_data_superblock - .align 2 - .global FtlProgPages - .syntax unified - .arm - .fpu softvfp - .type FtlProgPages, %function -FtlProgPages: - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #8 - mov r7, #0 - ldr r6, .L1462 - mov r4, r3 - ldr r10, .L1462+4 - mov r2, #0 - ldrb r3, [r3, #9] @ zero_extendqisi2 - mov r5, r0 - mov r9, r1 - bl FlashProgPages -.L1449: - cmp r7, r9 - beq .L1456 - mov r8, #0 - b .L1457 -.L1452: - ldr r0, [r5, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r4] - cmp r3, r0 - bne .L1450 - ldr r1, [r6, #2324] - lsl r3, r3, #1 - ldrh r0, [r4, #4] - ldrh r2, [r1, r3] - sub r2, r2, r0 - strh r2, [r1, r3] @ movhi - ldrh r3, [r6, #102] - strb r8, [r4, #6] - strh r8, [r4, #4] @ movhi - strh r3, [r4, #2] @ movhi -.L1450: - ldrh r3, [r4, #4] - cmp r3, #0 - bne .L1451 - mov r0, r4 - bl allocate_new_data_superblock -.L1451: - ldr r3, [r6, #2732] - add r3, r3, #1 - str r3, [r6, #2732] - ldr r0, [r5, #4] - ubfx r0, r0, #10, #16 - bl FtlGcMarkBadPhyBlk - mov r0, r4 - bl get_new_active_ppa - mov r2, #0 - str r0, [r5, #4] - str r0, [fp, #-44] - mov r1, #1 - ldrb r3, [r4, #9] @ zero_extendqisi2 - mov r0, r5 - bl FlashProgPages -.L1457: - ldr r3, [r5] - cmn r3, #1 - beq .L1452 - ldrb r2, [r4, #6] @ zero_extendqisi2 - ldrh r3, [r6, #32] - cmp r2, r3 - bcc .L1453 - movw r2, #941 - mov r1, r10 - ldr r0, .L1462+8 - bl sftl_printk -.L1453: - ldr r3, [r5, #4] - sub r1, fp, #40 - mov r2, #1 - ldr r0, [r5, #16] - str r3, [r1, #-4]! - bl log2phys - ldr r3, [r5, #12] - ldr r3, [r3, #12] - ubfx r0, r3, #10, #16 - str r3, [fp, #-48] - bl P2V_block_in_plane - ldr r3, [fp, #-48] - mov r8, r0 - cmn r3, #1 - beq .L1454 - ldr r2, [r6, #2324] - lsl r3, r0, #1 - ldrh r2, [r2, r3] - cmp r2, #0 - bne .L1455 - mov r1, r0 - ldr r0, .L1462+12 - bl sftl_printk -.L1455: - mov r0, r8 - bl decrement_vpc_count -.L1454: - add r7, r7, #1 - add r5, r5, #20 - b .L1449 -.L1456: - ldrb r2, [r4, #6] @ zero_extendqisi2 - ldrh r3, [r6, #32] - cmp r2, r3 - bcc .L1448 - mov r2, #956 - ldr r1, .L1462+4 - ldr r0, .L1462+8 - bl sftl_printk -.L1448: - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1463: - .align 2 -.L1462: - .word .LANCHOR0 - .word .LANCHOR1+519 - .word .LC1 - .word .LC111 - .size FtlProgPages, .-FtlProgPages - .align 2 - .global FtlGcFreeTempBlock - .syntax unified - .arm - .fpu softvfp - .type FtlGcFreeTempBlock, %function -FtlGcFreeTempBlock: - @ args = 0, pretend = 0, frame = 4 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #4 - movw r3, #2444 - ldr r4, .L1490 - movw r2, #65535 - ldrh r5, [r4, r3] - ldrh r1, [r4, #102] - cmp r5, r2 - bne .L1465 -.L1475: - mov r3, #0 - str r3, [r4, #4008] - movw r3, #2444 - ldrh r2, [r4, r3] - movw r3, #65535 - cmp r2, r3 - bne .L1488 -.L1466: - mov r0, #0 - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1465: - cmp r0, #0 - beq .L1468 - ldr r3, .L1490+4 - ldrh r0, [r3, #4] - cmp r0, r2 - beq .L1469 -.L1470: - mov r1, #2 -.L1468: - ldr r0, .L1490+8 - bl FtlGcScanTempBlk - cmn r0, #1 - str r0, [fp, #-44] - beq .L1471 - ldr r2, [r4, #2328] - lsl r5, r5, #1 - ldrh r3, [r2, r5] - cmp r3, #4 - bls .L1472 - sub r3, r3, #5 - mov r0, #1 - strh r3, [r2, r5] @ movhi - bl FtlEctTblFlush -.L1472: - ldr r3, [r4, #4008] - cmp r3, #0 - bne .L1473 - ldr r3, [r4, #2732] - ldr r0, [fp, #-44] - add r3, r3, #1 - ubfx r0, r0, #10, #16 - str r3, [r4, #2732] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L1473: - mov r3, #0 - str r3, [r4, #4008] -.L1484: - mov r0, #1 - ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1469: - mov r2, #0 - strh r2, [r3, #4] @ movhi - movw r3, #2344 - ldrh r3, [r4, r3] - cmp r3, #17 - bhi .L1470 - b .L1468 -.L1471: - ldr r3, .L1490+4 - ldrh r2, [r3, #4] - movw r3, #65535 - cmp r2, r3 - bne .L1484 - b .L1475 -.L1488: - ldrb r1, [r4, #2451] @ zero_extendqisi2 - ldrh r3, [r4, #102] - ldr r6, .L1490+12 - mul r3, r3, r1 - ldrh r2, [r6] - cmp r2, r3 - beq .L1476 - mov r2, #162 - ldr r1, .L1490+16 - ldr r0, .L1490+20 - bl sftl_printk -.L1476: - ldrb r2, [r4, #2451] @ zero_extendqisi2 - movw r3, #2444 - ldrh r0, [r4, #102] - mov r5, #0 - ldrh r3, [r4, r3] - ldr r1, [r4, #2324] - ldr r10, .L1490+20 - smulbb r2, r2, r0 - lsl r3, r3, #1 - strh r2, [r1, r3] @ movhi - ldr r2, [r4, #2528] - ldrh r3, [r6] - add r3, r3, r2 - str r3, [r4, #2528] -.L1477: - ldrh r2, [r6] - uxth r3, r5 - cmp r2, r3 - bhi .L1481 - movw r0, #65535 - bl decrement_vpc_count - movw r3, #2444 - ldr r1, [r4, #2324] - ldrh r0, [r4, r3] - mov r5, r3 - lsl r2, r0, #1 - ldrh r2, [r1, r2] - cmp r2, #0 - beq .L1482 - bl INSERT_DATA_LIST -.L1483: - mvn r7, #0 - movw r3, #3192 - strh r7, [r4, r5] @ movhi - mov r5, #0 - strh r5, [r4, r3] @ movhi - strh r5, [r6] @ movhi - bl l2p_flush - bl FtlVpcTblFlush - movw r3, #2344 - ldrh r2, [r4, r3] - movw r3, #2572 - ldrh r3, [r4, r3] - add r3, r3, r3, lsl #1 - cmp r2, r3, asr #2 - movwgt r3, #2588 - movgt r2, #20 - strhgt r7, [r4, r3] @ movhi - movwgt r3, #3148 - strhgt r2, [r4, r3] @ movhi - b .L1466 -.L1481: - uxth r3, r5 - mov r7, #12 - ldr r8, [r4, #3196] - mul r7, r7, r3 - ldr r2, [r4, #2504] - add r9, r8, r7 - ldr r1, [r9, #8] - cmp r1, r2 - bcc .L1478 - mov r2, #168 - ldr r1, .L1490+16 - mov r0, r10 - bl sftl_printk -.L1478: - mov r2, #0 - sub r1, fp, #44 - ldr r0, [r9, #8] - bl log2phys - ldr r2, [fp, #-44] - ldr r0, [r8, r7] - cmp r0, r2 - bne .L1479 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - mov r2, #1 - mov r7, r0 - add r1, r9, #4 - ldr r0, [r9, #8] - bl log2phys - mov r0, r7 -.L1489: - bl decrement_vpc_count -.L1480: - add r5, r5, #1 - b .L1477 -.L1479: - ldr r3, [r9, #4] - cmp r2, r3 - beq .L1480 - ldr r3, .L1490+8 - ldrh r0, [r3] - b .L1489 -.L1482: - bl INSERT_FREE_LIST - b .L1483 -.L1491: - .align 2 -.L1490: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR0+2444 - .word .LANCHOR0+3200 - .word .LANCHOR1+532 - .word .LC1 - .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock - .align 2 - .global FtlGcPageRecovery - .syntax unified - .arm - .fpu softvfp - .type FtlGcPageRecovery, %function -FtlGcPageRecovery: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1494 - ldr r5, .L1494+4 - ldrh r1, [r4, #102] - mov r0, r5 - bl FtlGcScanTempBlk - ldrh r2, [r5, #2] - ldrh r3, [r4, #102] - cmp r2, r3 - ldmfdcc sp, {r4, r5, fp, sp, pc} - ldr r0, .L1494+8 - bl FtlMapBlkWriteDump_data - mov r0, #0 - bl FtlGcFreeTempBlock - mov r3, #0 - str r3, [r4, #4008] - ldmfd sp, {r4, r5, fp, sp, pc} -.L1495: - .align 2 -.L1494: - .word .LANCHOR0 - .word .LANCHOR0+2444 - .word .LANCHOR0+3908 - .size FtlGcPageRecovery, .-FtlGcPageRecovery - .align 2 - .global FtlPowerLostRecovery - .syntax unified - .arm - .fpu softvfp - .type FtlPowerLostRecovery, %function -FtlPowerLostRecovery: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1497 - mov r6, #0 - add r5, r4, #2336 - str r6, [r4, #4020] - add r5, r5, #12 - add r4, r4, #2384 - mov r0, r5 - add r4, r4, #12 - bl FtlRecoverySuperblock - mov r0, r5 - bl FtlSlcSuperblockCheck - mov r0, r4 - bl FtlRecoverySuperblock - mov r0, r4 - bl FtlSlcSuperblockCheck - bl FtlGcPageRecovery - movw r0, #65535 - bl decrement_vpc_count - mov r0, r6 - ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L1498: - .align 2 -.L1497: - .word .LANCHOR0 - .size FtlPowerLostRecovery, .-FtlPowerLostRecovery - .align 2 - .global Ftl_gc_temp_data_write_back - .syntax unified - .arm - .fpu softvfp - .type Ftl_gc_temp_data_write_back, %function -Ftl_gc_temp_data_write_back: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1506 - mov r3, #0 - mov r5, #0 - mov r6, #20 - mov r2, r3 - ldr r1, [r4, #3164] - ldr r0, [r4, #3840] - bl FlashProgPages -.L1500: - ldr r1, [r4, #3164] - uxth r3, r5 - cmp r1, r3 - bhi .L1503 - ldr r0, [r4, #3840] - bl FtlGcBufFree - ldr r3, .L1506+4 - mov r0, #0 - str r0, [r4, #3164] - ldrh r3, [r3, #4] - cmp r3, r0 - ldmfdne sp, {r4, r5, r6, fp, sp, pc} - mov r0, #1 - bl FtlGcFreeTempBlock - b .L1505 -.L1503: - mul r3, r6, r3 - ldr r2, [r4, #3840] - add r5, r5, #1 - ldr r0, [r2, r3] - add r1, r2, r3 - cmn r0, #1 - bne .L1501 - movw r1, #2444 - ldr ip, [r4, #2324] - ldrh r2, [r4, r1] - mov lr, #0 - lsl r2, r2, #1 - strh lr, [ip, r2] @ movhi - ldr r2, [r4, #2732] - strh r0, [r4, r1] @ movhi - add r2, r2, #1 - str r2, [r4, #2732] - ldr r2, [r4, #3840] - add r3, r2, r3 - ldr r0, [r3, #4] - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - bl FtlGcPageVarInit -.L1505: - mov r0, #1 - ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L1501: - ldr r3, [r1, #12] - ldr r1, [r1, #4] - ldr r2, [r3, #8] - ldr r0, [r3, #12] - bl FtlGcUpdatePage - b .L1500 -.L1507: - .align 2 -.L1506: - .word .LANCHOR0 - .word .LANCHOR0+2444 - .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back - .align 2 - .global Ftl_get_new_temp_ppa - .syntax unified - .arm - .fpu softvfp - .type Ftl_get_new_temp_ppa, %function -Ftl_get_new_temp_ppa: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, fp, ip, lr, pc} - sub fp, ip, #4 - ldr r4, .L1511 - movw r3, #2444 - ldrh r2, [r4, r3] - movw r3, #65535 - cmp r2, r3 - beq .L1509 - ldr r3, .L1511+4 - ldrh r3, [r3, #4] - cmp r3, #0 - bne .L1510 -.L1509: - mov r0, #0 - mov r5, #0 - bl FtlGcFreeTempBlock - ldr r0, .L1511+4 - strb r5, [r4, #2452] - bl allocate_data_superblock - movw r3, #3192 - strh r5, [r4, r3] @ movhi - ldr r3, .L1511+8 - strh r5, [r3] @ movhi - bl l2p_flush - mov r0, r5 - bl FtlEctTblFlush - bl FtlVpcTblFlush -.L1510: - ldr r0, .L1511+4 - bl get_new_active_ppa - ldmfd sp, {r4, r5, fp, sp, pc} -.L1512: - .align 2 -.L1511: - .word .LANCHOR0 - .word .LANCHOR0+2444 - .word .LANCHOR0+3200 - .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa - .align 2 - .global rk_ftl_garbage_collect - .syntax unified - .arm - .fpu softvfp - .type rk_ftl_garbage_collect, %function -rk_ftl_garbage_collect: - @ args = 0, pretend = 0, frame = 28 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #36 - mov r6, r0 - ldr r3, .L1625 - ldr r0, [r3, #3824] - mov r5, r3 - cmp r0, #0 - movne r0, #0 - bne .L1513 - add r2, r3, #2336 - ldrh r2, [r2] - cmp r2, #47 - bls .L1513 - ldr r2, .L1625+4 - ldrh r1, [r2, #4] - movw r2, #65535 - cmp r1, r2 - bne .L1515 -.L1518: - movw ip, #3204 - movw r2, #65535 - ldrh r7, [r5, ip] - cmp r7, r2 - bne .L1516 -.L1517: - ldr r3, [r5, #3152] - movw r2, #2588 - ldrh r2, [r5, r2] - movw r4, #65535 - add r3, r3, #1 - add r3, r3, r6, lsl #7 - cmp r2, r4 - str r3, [r5, #3152] - bne .L1519 - movw r1, #2444 - ldrh r4, [r5, r1] - cmp r4, r2 - movne r4, r2 - bne .L1519 - movw r2, #3202 - ldrh r7, [r5, r2] - cmp r7, r4 - bne .L1519 - movw r10, #2344 - ldrh r2, [r5, r10] - cmp r2, #24 - movcc r2, #5120 - movcs r2, #1024 - cmp r3, r2 - movls r4, r7 - bls .L1519 - ldr r3, .L1625+8 - mov r9, #0 - str r9, [r5, #3152] - strh r9, [r3, #-8] @ movhi - bl GetSwlReplaceBlock - cmp r0, r7 - mov r4, r0 - movne r7, r0 - bne .L1521 - movw r8, #3150 - ldrh r2, [r5, r10] - ldrh r3, [r5, r8] - cmp r2, r3 - bcs .L1522 - mov r0, #64 - bl List_get_gc_head_node - uxth r3, r0 - cmp r3, r4 - beq .L1524 - mov r0, r3 - ldr r3, [r5, #2324] - lsl r0, r0, #1 - ldrh r3, [r3, r0] - cmp r3, #7 - bhi .L1525 - mov r0, r9 - bl List_get_gc_head_node - uxth r7, r0 - mov r3, #128 - strh r3, [r5, r8] @ movhi - cmp r7, r4 - bne .L1521 -.L1524: - bl FtlGcReFreshBadBlk -.L1519: - movw r2, #65535 - sub r3, r4, r2 - clz r3, r3 - lsr r3, r3, #5 - cmp r6, #0 - movne r6, #0 - andeq r6, r3, #1 - cmp r6, #0 - beq .L1527 - movw r3, #2344 - ldrh r3, [r5, r3] - cmp r3, #24 - movhi r6, #1 - bhi .L1528 - ldrh r6, [r5, #102] - cmp r3, #16 - lsrhi r6, r6, #5 - bhi .L1528 - cmp r3, #12 - lsrhi r6, r6, #4 - bhi .L1528 - cmp r3, #8 - lsrhi r6, r6, #2 -.L1528: - movw r2, #3148 - ldrh r1, [r5, r2] - cmp r1, r3 - bcs .L1532 - movw r3, #2444 - movw r1, #65535 - ldrh r3, [r5, r3] - cmp r3, r1 - bne .L1533 - movw r1, #3202 - ldrh r1, [r5, r1] - cmp r1, r3 - bne .L1533 - ldr r3, .L1625+8 - ldrh r0, [r3, #-8] - cmp r0, #0 - bne .L1534 - ldr r3, [r5, #2504] - ldr r1, [r5, #2500] - add r3, r3, r3, lsl #1 - cmp r1, r3, lsr #2 - movcs r3, #18 - bcs .L1618 -.L1534: - movw r3, #2572 - movw r2, #3148 - ldrh r3, [r5, r3] - add r3, r3, r3, lsl #1 - asr r3, r3, #2 -.L1618: - strh r3, [r5, r2] @ movhi - mov r3, #0 - str r3, [r5, #3160] -.L1513: - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1515: - movw r1, #2444 - ldrh r3, [r3, r1] - cmp r3, r2 - beq .L1518 - mov r0, #1 - bl FtlGcFreeTempBlock - cmp r0, #0 - beq .L1518 - mov r0, #1 - b .L1513 -.L1516: - movw r4, #3202 - ldrh r3, [r5, r4] - cmp r3, r2 - bne .L1517 - movw r1, #3206 - ldrh lr, [r5, r1] - cmp lr, r3 - beq .L1517 - movw r2, #3208 - ldrh r0, [r5, r2] - cmp r0, r3 - mvnne r3, #0 - strhne r7, [r5, r4] @ movhi - strhne lr, [r5, ip] @ movhi - strhne r0, [r5, r1] @ movhi - strhne r3, [r5, r2] @ movhi - b .L1517 -.L1525: - mov r3, #64 -.L1617: - strh r3, [r5, r8] @ movhi - b .L1524 -.L1522: - mov r3, #80 - b .L1617 -.L1521: - movw r0, #3148 - ldr r3, [r5, #2324] - ldrh r0, [r5, r0] - lsl r1, r7, #1 - movw r2, #2344 - ldrh r3, [r3, r1] - mov r4, r7 - ldrh r2, [r5, r2] - str r0, [sp, #4] - ldr r0, [r5, #2328] - ldrh r1, [r0, r1] - ldr r0, .L1625+12 - str r1, [sp] - mov r1, r7 - bl sftl_printk - b .L1524 -.L1533: - movw r3, #2572 - movw r2, #3148 - ldrh r3, [r5, r3] - add r3, r3, r3, lsl #1 - asr r3, r3, #2 - strh r3, [r5, r2] @ movhi -.L1532: - movw r3, #3210 - movw r4, #65535 - ldrh r3, [r5, r3] - cmp r3, #0 - addne r6, r6, #32 - uxthne r6, r6 -.L1538: - movw r3, #2588 - ldrh r2, [r5, r3] - movw r1, #65535 - cmp r2, r1 - bne .L1547 - cmp r4, r2 - strhne r4, [r5, r3] @ movhi - bne .L1549 - movw r2, #3202 - ldrh r3, [r5, r2] - cmp r3, r4 - beq .L1549 - ldr r1, [r5, #2324] - lsl r3, r3, #1 - ldrh r3, [r1, r3] - cmp r3, #0 - mvneq r3, #0 - strheq r3, [r5, r2] @ movhi - movw r3, #3202 - ldrh r1, [r5, r3] - movw r2, #2588 - strh r1, [r5, r2] @ movhi - mvn r2, #0 - strh r2, [r5, r3] @ movhi -.L1549: - movw r7, #2588 - mov r3, #0 - ldrh r0, [r5, r7] - strb r3, [r5, #2596] - movw r3, #65535 - cmp r0, r3 - beq .L1547 - bl IsBlkInGcList - cmp r0, #0 - ldr r8, .L1625+16 - mvnne r3, #0 - strhne r3, [r5, r7] @ movhi - movw r7, #2588 - ldrh r2, [r5, r7] - movw r3, #65535 - cmp r2, r3 - beq .L1547 - mov r0, r8 - bl make_superblock - ldr r2, .L1625+8 - mov r3, #0 - strh r3, [r8, #2] @ movhi - strb r3, [r5, #2594] - strh r3, [r2, #-6] @ movhi - ldrh r3, [r5, r7] - ldr r1, [r5, #2324] - lsl r3, r3, #1 - ldrh r3, [r1, r3] - strh r3, [r2, #-4] @ movhi -.L1547: - movw r3, #2588 - movw r2, #2348 - ldrh r3, [r5, r3] - ldrh r2, [r5, r2] - cmp r2, r3 - beq .L1553 - movw r2, #2396 - ldrh r2, [r5, r2] - cmp r2, r3 - ldrne r7, .L1625 - movne r5, r7 - bne .L1554 -.L1553: - mvn r2, #0 - movw r3, #2588 -.L1623: - strh r2, [r5, r3] @ movhi - ldr r3, .L1625+8 -.L1624: - ldrh r0, [r3, #-8] - b .L1513 -.L1527: - movw r1, #2444 - ldrh r7, [r5, r1] - cmp r7, r2 - bne .L1595 - movw r2, #3202 - ldrh r2, [r5, r2] - cmp r2, r7 - movne r3, #0 - andeq r3, r3, #1 - cmp r3, #0 - beq .L1595 - movw r3, #2588 - ldrh r3, [r5, r3] - cmp r3, r7 - beq .L1539 -.L1544: - mov r4, r7 -.L1595: - mov r6, #1 - b .L1538 -.L1539: - movw r3, #2344 - movw r2, #3148 - ldrh r8, [r5, r3] - ldrh r3, [r5, r2] - str r6, [r5, #3160] - ldr r4, .L1625+8 - cmp r3, r8 - bcs .L1540 - ldrh r3, [r4, #-8] - cmp r3, #0 - bne .L1541 - ldr r3, [r5, #2504] - ldr r1, [r5, #2500] - add r3, r3, r3, lsl #1 - cmp r1, r3, lsr #2 - movcs r3, #18 - bcs .L1619 -.L1541: - movw r3, #2572 - movw r2, #3148 - ldrh r3, [r5, r3] - add r3, r3, r3, lsl #1 - asr r3, r3, #2 -.L1619: - strh r3, [r5, r2] @ movhi -.L1622: - bl FtlReadRefresh - ldrh r0, [r4, #-8] - b .L1513 -.L1540: - ldrh r0, [r4, #-8] - cmp r0, #0 - bne .L1544 - movw r3, #2572 - ldrh r6, [r5, r3] - add r3, r6, r6, lsl #1 - asr r3, r3, #2 - strh r3, [r5, r2] @ movhi - bl List_get_gc_head_node - uxth r0, r0 - ldr r3, [r5, #2324] - ldrh r1, [r5, #104] - lsl r0, r0, #1 - ldrh r2, [r3, r0] - ldrh r3, [r5, #32] - mul r3, r3, r1 - add r3, r3, r3, lsr #31 - cmp r2, r3, asr #1 - ble .L1545 - sub r6, r6, #1 - cmp r8, r6 - bge .L1622 -.L1545: - cmp r2, #0 - bne .L1544 - movw r0, #65535 - bl decrement_vpc_count - movw r3, #2344 - ldrh r0, [r5, r3] - add r0, r0, #1 - b .L1513 -.L1557: - uxth r2, r0 - str r1, [fp, #-52] - add r10, r10, #1 - mov r0, r2 - str r2, [fp, #-48] - bl IsBlkInGcList - cmp r0, #0 - ldr r2, [fp, #-48] - ldr r1, [fp, #-52] - strhne r10, [r9] @ movhi - bne .L1556 - ldrh lr, [r5, #32] - uxth r10, r10 - ldrh r3, [r5, #102] - lsl r2, r2, #1 - ldr r0, [r5, #2324] - strh r10, [r9] @ movhi - mul r3, lr, r3 - ldrh ip, [r0, r2] - add lr, r3, r3, lsr #31 - cmp ip, lr, asr #1 - bgt .L1560 - cmp ip, #8 - cmphi r10, #48 - bls .L1561 - ldr ip, .L1625+20 - ldrh ip, [ip] - cmp ip, #35 - bhi .L1561 -.L1560: - ldr lr, .L1625+24 - mov ip, #0 - strh ip, [lr] @ movhi -.L1561: - ldrh ip, [r0, r2] - movw r0, #65535 - cmp r3, ip - cmple r4, r0 - moveq r3, #1 - movne r3, #0 - bne .L1562 - mvn r2, #0 - movw r3, #2588 - strh r2, [r5, r3] @ movhi - mov r2, #0 - movw r3, #3156 - b .L1623 -.L1562: - cmp ip, #0 - bne .L1563 - bl decrement_vpc_count - ldr r3, .L1625+24 - ldr r2, .L1625+24 - ldrh r3, [r3] - add r3, r3, #1 - strh r3, [r2] @ movhi - b .L1556 -.L1563: - strb r3, [r5, #2596] - ldr r3, .L1625+28 - ldrh r3, [r3] - cmp r3, r1 - bne .L1564 - movw r2, #665 - ldr r1, .L1625+32 - ldr r0, .L1625+36 - bl sftl_printk -.L1564: - ldr r3, .L1625+40 - ldrh r2, [r8] - ldrh r3, [r3] - cmp r2, r3 - bne .L1565 - movw r2, #666 - ldr r1, .L1625+32 - ldr r0, .L1625+36 - bl sftl_printk -.L1565: - ldr r3, .L1625+44 - ldrh r2, [r8] - ldrh r3, [r3] - cmp r2, r3 - bne .L1566 - movw r2, #667 - ldr r1, .L1625+32 - ldr r0, .L1625+36 - bl sftl_printk -.L1566: - ldr r0, .L1625+16 - bl make_superblock - ldrh r2, [r8] - mov r3, #0 - ldr r1, .L1625+48 - ldr r0, [r5, #2324] - lsl r2, r2, #1 - strh r3, [r1] @ movhi - ldrh r2, [r0, r2] - strh r3, [r8, #2] @ movhi - strb r3, [r5, #2594] - strh r2, [r1, #2] @ movhi -.L1555: - bl FtlReadRefresh - mov r3, #1 - str r3, [r5, #3824] - ldrh r3, [r5, #102] - str r3, [fp, #-56] - ldrh r3, [r8, #2] - ldr r1, [fp, #-56] - add r2, r3, r6 - cmp r2, r1 - movgt r2, r1 - subgt r6, r2, r3 - mov r3, #0 - uxthgt r6, r6 -.L1621: - str r3, [fp, #-52] - ldrh r3, [fp, #-52] - ldr r8, .L1625+16 - cmp r6, r3 - bls .L1576 - ldrh r9, [r8, #2] - add r1, r8, #14 - ldr r3, [fp, #-52] - movw r10, #65535 - ldrh ip, [r7, #32] - ldr r0, [r7, #3180] - add r9, r9, r3 - mov r3, #0 - mov r8, r3 - b .L1577 -.L1570: - ldrh r2, [r1, #2]! - add r3, r3, #1 - cmp r2, r10 - movne lr, #20 - orrne r2, r9, r2, lsl #10 - mlane lr, lr, r8, r0 - addne r8, r8, #1 - uxthne r8, r8 - strne r2, [lr, #4] -.L1577: - uxth r2, r3 - cmp ip, r2 - bhi .L1570 - ldrb r2, [r7, #2596] @ zero_extendqisi2 - mov r1, r8 - bl FlashReadPages - mov r3, #0 -.L1620: - str r3, [fp, #-48] - ldrh r3, [fp, #-48] - cmp r3, r8 - ldrcs r3, [fp, #-52] - addcs r3, r3, #1 - bcs .L1621 -.L1575: - ldr r3, [fp, #-48] - mov r9, #20 - mul r9, r9, r3 - ldr r3, [r7, #3180] - add r2, r3, r9 - ldr r3, [r3, r9] - cmn r3, #1 - beq .L1572 - ldr r10, [r2, #12] - movw r3, #61589 - ldrh r2, [r10] - cmp r2, r3 - bne .L1572 - ldr r3, [r10, #8] - cmn r3, #1 - bne .L1573 - movw r2, #703 - ldr r1, .L1625+32 - ldr r0, .L1625+36 - str r3, [fp, #-60] - bl sftl_printk - ldr r3, [fp, #-60] -.L1573: - mov r2, #0 - mov r0, r3 - sub r1, fp, #44 - bl log2phys - ldr r0, [r5, #3180] - ldr r3, [fp, #-44] - add r0, r0, r9 - ldr r2, [r0, #4] - cmp r2, r3 - bne .L1572 - ldr r3, .L1625+48 - mov r1, #20 - ldr lr, [r5, #3164] - ldr r0, [r0, #16] - ldrh r2, [r3] - str r1, [fp, #-64] - add r2, r2, #1 - strh r2, [r3], #6 @ movhi - ldr r2, [r5, #3840] - str r3, [fp, #-68] - mla r2, r1, lr, r2 - str r0, [r2, #16] - str r2, [fp, #-60] - bl Ftl_get_new_temp_ppa - ldr r2, [fp, #-60] - ldr r1, [fp, #-64] - str r0, [r2, #4] - ldr r0, [r5, #3164] - ldr r2, [r5, #3840] - mla r1, r1, r0, r2 - ldr r2, [r5, #3180] - add r2, r2, r9 - ldr r0, [r2, #8] - str r0, [r1, #8] - ldr r2, [r2, #12] - str r2, [r1, #12] - ldr r2, [fp, #-44] - str r2, [r10, #12] - ldr r2, .L1625+44 - ldrh r1, [r2] - str r2, [fp, #-60] - strh r1, [r10, #2] @ movhi - ldr r1, [r5, #2544] - ldr r0, [r5, #3180] - str r1, [r10, #4] - ldr r1, [r5, #3164] - add r0, r0, r9 - add r1, r1, #1 - str r1, [r5, #3164] - mov r1, #1 - bl FtlGcBufAlloc - ldrb r0, [r5, #2451] @ zero_extendqisi2 - ldr r1, [r5, #3164] - ldr r3, [fp, #-68] - cmp r0, r1 - beq .L1574 - ldr r2, [fp, #-60] - ldrh r2, [r2, #4] - cmp r2, #0 - bne .L1572 -.L1574: - str r3, [fp, #-60] - bl Ftl_gc_temp_data_write_back - cmp r0, #0 - ldr r3, [fp, #-60] - ldrne r2, .L1625 - movne r1, #0 - strne r1, [r2, #3824] - bne .L1624 -.L1572: - ldr r3, [fp, #-48] - add r3, r3, #1 - b .L1620 -.L1576: - ldrh r3, [r8, #2] - add r6, r6, r3 - ldr r3, [fp, #-56] - uxth r6, r6 - cmp r3, r6 - strh r6, [r8, #2] @ movhi - bhi .L1578 - ldr r3, [r7, #3164] - ldr r9, .L1625+8 - cmp r3, #0 - beq .L1579 - bl Ftl_gc_temp_data_write_back - cmp r0, #0 - movne r3, #0 - ldrhne r0, [r9, #-8] - strne r3, [r7, #3824] - bne .L1513 -.L1579: - ldrh r6, [r9, #-6] - cmp r6, #0 - bne .L1580 - ldrh r1, [r8] - ldr r2, [r7, #2324] - lsl r3, r1, #1 - ldrh r3, [r2, r3] - cmp r3, #0 - beq .L1580 - ldrh r0, [r9, #-4] - ldrh r2, [r8, #2] - str r3, [sp] - mov r3, r6 - str r0, [sp, #4] - ldr r0, .L1625+52 - bl sftl_printk - ldrh r3, [r8] - ldr r2, [r7, #2324] - lsl r3, r3, #1 - strh r6, [r2, r3] @ movhi - ldrh r0, [r8] - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L1580: - mvn r3, #0 - strh r3, [r8] @ movhi -.L1578: - ldr r3, .L1625+56 - ldrh r3, [r3] - cmp r3, #2 - bhi .L1581 - ldrh r6, [r7, #102] -.L1554: - ldr r8, .L1625+16 - movw r3, #65535 - ldrh r2, [r8] - cmp r2, r3 - bne .L1555 - add r9, r8, #568 - mov r3, #0 - str r3, [r7, #3160] -.L1556: - ldrh r10, [r9] - mov r0, r10 - bl List_get_gc_head_node - ldr r3, .L1625+16 - uxth r1, r0 - strh r1, [r3] @ movhi - movw r3, #65535 - cmp r1, r3 - bne .L1557 - mov r3, #0 - mov r0, #8 - strh r3, [r9] @ movhi - b .L1513 -.L1581: - mov r2, #0 - str r2, [r7, #3824] - ldr r2, .L1625+8 - ldrh r0, [r2, #-8] - cmp r0, #0 - addeq r0, r3, #1 - b .L1513 -.L1626: - .align 2 -.L1625: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR3-4016 - .word .LC112 - .word .LANCHOR0+2588 - .word .LANCHOR0+3192 - .word .LANCHOR0+3156 - .word .LANCHOR0+2348 - .word .LANCHOR1+551 - .word .LC1 - .word .LANCHOR0+2396 - .word .LANCHOR0+2444 - .word .LANCHOR3-4022 - .word .LC113 - .word .LANCHOR0+2344 - .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect - .align 2 - .global sftl_gc - .syntax unified - .arm - .fpu softvfp - .type sftl_gc, %function -sftl_gc: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - mov r1, #1 - mov r0, r1 - bl rk_ftl_garbage_collect - ldmfd sp, {fp, sp, pc} - .size sftl_gc, .-sftl_gc - .align 2 - .global FtlRead - .syntax unified - .arm - .fpu softvfp - .type FtlRead, %function -FtlRead: - @ args = 0, pretend = 0, frame = 52 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #72 - uxtb r0, r0 - mov r7, r1 - str r2, [fp, #-72] - cmp r0, #16 - mov r9, r3 - bne .L1629 - mov r2, r3 - ldr r1, [fp, #-72] - add r0, r7, #256 - bl FtlVendorPartRead - str r0, [fp, #-48] -.L1628: - ldr r0, [fp, #-48] - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1629: - ldr r3, [fp, #-72] - ldr r4, .L1663 - add r3, r1, r3 - str r3, [fp, #-56] - ldr r2, [fp, #-56] - ldr r3, [r4, #140] - cmp r2, r3 - bhi .L1650 - ldr r3, .L1663+4 - ldr r3, [r3] - cmn r3, #1 - beq .L1651 - ldrh r5, [r4, #58] - mov r0, r7 - mov r8, #0 - mov r6, r8 - mov r1, r5 - bl __udivsi3 - ldr r3, [fp, #-56] - mov r1, r5 - str r0, [fp, #-60] - sub r0, r3, #1 - bl __udivsi3 - ldr r3, [fp, #-60] - ldr r5, [fp, #-60] - str r0, [fp, #-64] - rsb r3, r3, #1 - str r8, [fp, #-80] - add r3, r3, r0 - str r8, [fp, #-76] - str r3, [fp, #-52] - ldr r2, [fp, #-52] - ldr r3, [r4, #2508] - str r8, [fp, #-48] - add r3, r3, r2 - str r3, [r4, #2508] -.L1631: - ldr r3, [fp, #-52] - cmp r3, #0 - bne .L1648 - ldr r3, .L1663 - movw r2, #3210 - ldrh r2, [r3, r2] - cmp r2, #0 - bne .L1649 - movw r2, #2344 - ldrh r3, [r3, r2] - cmp r3, #31 - bhi .L1628 -.L1649: - mov r1, #1 - mov r0, #0 - bl rk_ftl_garbage_collect - b .L1628 -.L1648: - mov r2, #0 - sub r1, fp, #44 - mov r0, r5 - bl log2phys - ldr r2, [fp, #-44] - cmn r2, #1 - moveq r10, #0 - beq .L1633 - ldr r3, [r4, #3836] - mov r1, #20 - ldrh r10, [r4, #58] - mla r3, r1, r6, r3 - str r2, [r3, #4] - ldr r2, [fp, #-60] - cmp r5, r2 - bne .L1637 - ldr r2, [r4, #3820] - mov r1, r10 - mov r0, r7 - str r3, [fp, #-68] - str r2, [r3, #8] - bl __umodsi3 - ldr r3, [fp, #-72] - sub r2, r10, r0 - str r0, [fp, #-76] - cmp r3, r2 - movcs r3, r2 - cmp r3, r10 - str r3, [fp, #-80] - ldr r3, [fp, #-68] - streq r9, [r3, #8] -.L1638: - ldrh r2, [r4, #112] - ldr r1, [r4, #3816] - str r5, [r3, #16] - mul r2, r6, r2 - add r6, r6, #1 - bic r2, r2, #3 - add r2, r1, r2 - str r2, [r3, #12] - b .L1636 -.L1635: - mla r0, r0, r5, r10 - ldr r3, [fp, #-56] - cmp r3, r0 - movhi r3, #1 - movls r3, #0 - cmp r7, r0 - movhi r3, #0 - cmp r3, #0 - beq .L1634 - sub r0, r0, r7 - mov r1, #512 - add r0, r9, r0, lsl #9 - bl __memzero -.L1634: - add r10, r10, #1 -.L1633: - ldrh r0, [r4, #58] - cmp r10, r0 - bcc .L1635 -.L1636: - ldr r3, [fp, #-52] - add r5, r5, #1 - subs r3, r3, #1 - str r3, [fp, #-52] - beq .L1640 - ldrh r3, [r4, #32] - cmp r6, r3, lsl #2 - bne .L1631 -.L1640: - cmp r6, #0 - beq .L1631 - mov r2, #0 - mov r1, r6 - ldr r0, [r4, #3836] - bl FlashReadPages - lsl r3, r8, #9 - str r3, [fp, #-92] - ldr r3, [fp, #-76] - lsl r3, r3, #9 - str r3, [fp, #-84] - ldr r3, [fp, #-80] - lsl r3, r3, #9 - str r3, [fp, #-88] - mov r3, #0 - str r3, [fp, #-68] -.L1647: - ldr r3, [fp, #-68] - mov ip, #20 - ldr r1, [fp, #-60] - mul r10, ip, r3 - ldr r3, [r4, #3836] - add r3, r3, r10 - ldr r2, [r3, #16] - cmp r1, r2 - bne .L1642 - ldr r1, [r3, #8] - ldr r3, [r4, #3820] - cmp r1, r3 - bne .L1643 - ldr r3, [fp, #-84] - mov r0, r9 - ldr r2, [fp, #-88] - add r1, r1, r3 -.L1662: - bl ftl_memcpy -.L1643: - ldr r1, [r4, #3836] - add r1, r1, r10 - ldr r3, [r1, #12] - ldr r2, [r1, #16] - ldr r3, [r3, #8] - cmp r2, r3 - beq .L1644 - ldr r3, [r4, #2708] - add r3, r3, #1 - str r3, [r4, #2708] - ldr r2, [r1, #8] - ldr r3, [r1, #12] - ldr r0, [r2, #4] - str r0, [sp, #16] - ldr r2, [r2] - ldr r0, .L1663+8 - str r2, [sp, #12] - ldr r2, [r3, #12] - str r2, [sp, #8] - ldr r2, [r3, #8] - str r2, [sp, #4] - ldr r2, [r3, #4] - str r2, [sp] - ldr r2, [r1, #4] - ldr r3, [r3] - ldr r1, [r1, #16] - bl sftl_printk -.L1644: - ldr r3, [r4, #3836] - ldr r1, [r3, r10] - add r0, r3, r10 - cmn r1, #1 - ldreq r2, [r4, #2708] - streq r1, [fp, #-48] - addeq r2, r2, #1 - streq r2, [r4, #2708] - ldr r3, [r3, r10] - cmp r3, #256 - bne .L1646 - ldr r0, [r0, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L1646: - ldr r3, [fp, #-68] - add r3, r3, #1 - cmp r6, r3 - str r3, [fp, #-68] - bne .L1647 - mov r6, #0 - b .L1631 -.L1637: - ldr r2, [fp, #-64] - cmp r5, r2 - bne .L1639 - ldr r2, [r4, #3812] - ldr r1, [fp, #-56] - str r2, [r3, #8] - mul r2, r10, r5 - sub r8, r1, r2 - cmp r10, r8 - subeq r2, r2, r7 - addeq r2, r9, r2, lsl #9 - streq r2, [r3, #8] - b .L1638 -.L1639: - mul r10, r5, r10 - sub r10, r10, r7 - add r10, r9, r10, lsl #9 - str r10, [r3, #8] - b .L1638 -.L1642: - ldr r1, [fp, #-64] - cmp r1, r2 - bne .L1643 - ldr r1, [r3, #8] - ldr r3, [r4, #3812] - cmp r1, r3 - bne .L1643 - ldrh r0, [r4, #58] - ldr r3, [fp, #-64] - ldr r2, [fp, #-92] - mul r0, r3, r0 - sub r0, r0, r7 - add r0, r9, r0, lsl #9 - b .L1662 -.L1650: - mvn r3, #0 -.L1651: - str r3, [fp, #-48] - b .L1628 -.L1664: - .align 2 -.L1663: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC96 - .size FtlRead, .-FtlRead - .align 2 - .global sftl_read - .syntax unified - .arm - .fpu softvfp - .type sftl_read, %function -sftl_read: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - mov r3, r2 - mov r2, r1 - mov r1, r0 - mov r0, #0 - bl FtlRead - ldmfd sp, {fp, sp, pc} - .size sftl_read, .-sftl_read - .align 2 - .global sftl_vendor_read - .syntax unified - .arm - .fpu softvfp - .type sftl_vendor_read, %function -sftl_vendor_read: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - mov r3, r2 - mov r2, r1 - mov r1, r0 - mov r0, #16 - bl FtlRead - ldmfd sp, {fp, sp, pc} - .size sftl_vendor_read, .-sftl_vendor_read - .align 2 - .global FtlWrite - .syntax unified - .arm - .fpu softvfp - .type FtlWrite, %function -FtlWrite: - @ args = 0, pretend = 0, frame = 68 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #68 - uxtb r0, r0 - mov r9, r1 - str r2, [fp, #-84] - cmp r0, #16 - str r3, [fp, #-80] - bne .L1668 - mov r2, r3 - ldr r1, [fp, #-84] - add r0, r9, #256 - bl FtlVendorPartWrite -.L1667: - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1668: - ldr r3, [fp, #-84] - ldr r4, .L1718 - add r6, r1, r3 - ldr r3, [r4, #140] - cmp r6, r3 - mvnhi r0, #0 - bhi .L1667 - ldr r5, .L1718+4 - ldr r0, [r5] - cmn r0, #1 - beq .L1667 - ldr r3, .L1718+8 - mov r2, #2048 - ldrh r7, [r4, #58] - mov r0, r9 - str r2, [r3, #-4016] - mov r1, r7 - bl __udivsi3 - mov r1, r7 - str r0, [fp, #-76] - sub r0, r6, #1 - bl __udivsi3 - ldr r2, [fp, #-76] - str r0, [fp, #-92] - sub r3, r0, r2 - str r3, [fp, #-96] - add r3, r3, #1 - str r3, [fp, #-72] - ldr r2, [fp, #-72] - ldr r3, [r4, #2516] - add r3, r3, r2 - str r3, [r4, #2516] - ldr r3, [r5, #8] - ldr r4, .L1718+12 - cmp r3, #0 - beq .L1670 - ldrh r3, [r4, #4] - add r0, r4, #48 - cmp r3, #0 - moveq r4, r0 -.L1670: - ldr r5, [fp, #-76] - ldr r10, .L1718 -.L1671: - ldr r3, [fp, #-72] - cmp r3, #0 - bne .L1699 - mov r0, r3 - ldr r1, [fp, #-96] - bl rk_ftl_garbage_collect - movw r3, #2344 - ldrh r3, [r10, r3] - cmp r3, #15 - bls .L1700 -.L1702: - mov r0, #0 - b .L1667 -.L1699: - ldrb r2, [r4, #6] @ zero_extendqisi2 - ldrh r3, [r10, #32] - cmp r2, r3 - bcc .L1672 - mov r2, #996 - ldr r1, .L1718+16 - ldr r0, .L1718+20 - bl sftl_printk -.L1672: - ldrh r2, [r4, #4] - cmp r2, #0 - bne .L1673 - ldr r3, .L1718+12 - ldr r6, .L1718+4 - cmp r4, r3 - bne .L1674 - add r0, r4, #48 - ldrh r7, [r0, #4] - cmp r7, #0 - bne .L1675 - bl allocate_new_data_superblock - str r7, [r6, #8] -.L1675: - ldr r0, .L1718+12 - bl allocate_new_data_superblock - ldr r4, .L1718+12 - ldr r3, [r6, #8] - add r0, r4, #48 - cmp r3, #0 - movne r4, r0 -.L1676: - ldrh r3, [r4, #4] - cmp r3, #0 - bne .L1673 - mov r0, r4 - bl allocate_new_data_superblock -.L1673: - ldrb r2, [r4, #7] @ zero_extendqisi2 - ldrh r3, [r4, #4] - ldr r1, [fp, #-72] - lsl r2, r2, #2 - cmp r3, r1 - movcs r3, r1 - cmp r2, r3 - movcc r3, r2 - ldrb r2, [r4, #6] @ zero_extendqisi2 - str r3, [fp, #-108] - ldrh r3, [r10, #32] - cmp r2, r3 - bcc .L1677 - movw r2, #1029 - ldr r1, .L1718+16 - ldr r0, .L1718+20 - bl sftl_printk -.L1677: - mov r3, #0 -.L1717: - str r3, [fp, #-68] - ldr r3, [fp, #-68] - ldr r2, [fp, #-108] - cmp r3, r2 - bne .L1697 -.L1679: - mov r3, r4 - mov r2, #0 - ldr r1, [fp, #-68] - ldr r0, [r10, #3844] - bl FtlProgPages - ldr r3, [fp, #-68] - ldr r2, [fp, #-72] - cmp r3, r2 - bls .L1698 - movw r2, #1106 - ldr r1, .L1718+16 - ldr r0, .L1718+20 - bl sftl_printk -.L1698: - ldr r3, [fp, #-72] - ldr r2, [fp, #-68] - sub r3, r3, r2 - str r3, [fp, #-72] - b .L1671 -.L1674: - str r2, [r6, #8] - ldrh r2, [r3, #4] - cmp r2, #0 - movne r4, r3 - bne .L1673 - mov r0, r4 - bl allocate_new_data_superblock - b .L1676 -.L1697: - ldrh r3, [r4, #4] - cmp r3, #0 - beq .L1679 - mov r2, #0 - sub r1, fp, #64 - mov r0, r5 - mov r7, #20 - bl log2phys - mov r0, r4 - bl get_new_active_ppa - ldrh r2, [r10, #112] - ldr r1, [fp, #-68] - ldr r3, [fp, #-68] - mul r1, r2, r1 - mul r7, r7, r3 - ldr r3, [r10, #3844] - bic r1, r1, #3 - str r1, [fp, #-100] - add r3, r3, r7 - ldr r1, [r10, #3816] - str r0, [r3, #4] - ldr r0, [fp, #-100] - str r1, [fp, #-104] - str r5, [r3, #16] - add r8, r1, r0 - mov r1, #0 - str r8, [r3, #12] - mov r0, r8 - bl ftl_memset - ldr r3, [fp, #-76] - ldr r2, [fp, #-92] - ldrh r6, [r10, #58] - cmp r5, r2 - cmpne r5, r3 - bne .L1680 - cmp r5, r3 - bne .L1681 - mov r1, r6 - mov r0, r9 - bl __umodsi3 - ldr r3, [fp, #-84] - sub r6, r6, r0 - str r0, [fp, #-88] - cmp r6, r3 - movcs r6, r3 -.L1682: - ldrh r3, [r10, #58] - cmp r6, r3 - ldr r3, [fp, #-76] - bne .L1683 - cmp r5, r3 - ldr r3, [r10, #3844] - add r7, r3, r7 - ldreq r3, [fp, #-80] - streq r3, [r7, #8] - beq .L1685 -.L1714: - mul r6, r5, r6 - ldr r3, [fp, #-80] - sub r6, r6, r9 - add r6, r3, r6, lsl #9 - str r6, [r7, #8] - b .L1685 -.L1681: - ldr r3, [fp, #-84] - add r2, r9, r3 - smulbb r3, r6, r5 - sub r6, r2, r3 - mov r3, #0 - uxth r6, r6 - str r3, [fp, #-88] - b .L1682 -.L1683: - cmp r5, r3 - ldr r3, [r10, #3844] - ldreq r2, [r10, #3820] - ldrne r2, [r10, #3812] - add r3, r3, r7 - str r2, [r3, #8] - ldr r3, [fp, #-64] - cmn r3, #1 - beq .L1688 - str r3, [fp, #-56] - mov r1, #1 - ldr r3, [r10, #3844] - sub r0, fp, #60 - str r5, [fp, #-44] - add r3, r3, r7 - ldr r2, [r3, #8] - ldr r3, [r3, #12] - str r2, [fp, #-52] - mov r2, #0 - str r3, [fp, #-48] - bl FlashReadPages - ldr r3, [fp, #-60] - cmn r3, #1 - ldreq r3, [r10, #2708] - addeq r3, r3, #1 - streq r3, [r10, #2708] - beq .L1692 - ldr r3, [r8, #8] - cmp r5, r3 - beq .L1691 - ldr r3, [r10, #2708] - mov r2, r5 - ldr r0, .L1718+24 - add r3, r3, #1 - str r3, [r10, #2708] - ldr r1, [r8, #8] - bl sftl_printk -.L1691: - ldr r3, [r8, #8] - cmp r5, r3 - beq .L1692 - movw r2, #1082 - ldr r1, .L1718+16 - ldr r0, .L1718+20 - bl sftl_printk -.L1692: - ldr r3, [fp, #-76] - lsl r2, r6, #9 - cmp r5, r3 - bne .L1693 - ldr r3, [r10, #3844] - ldr r1, [fp, #-80] - add r7, r3, r7 - ldr r3, [fp, #-88] - ldr r0, [r7, #8] - add r0, r0, r3, lsl #9 -.L1715: - bl ftl_memcpy -.L1685: - ldrb r2, [r4, #6] @ zero_extendqisi2 - ldrh r3, [r10, #32] - cmp r2, r3 - bcc .L1694 - movw r2, #1097 - ldr r1, .L1718+16 - ldr r0, .L1718+20 - bl sftl_printk -.L1694: - ldr r3, .L1718+28 - ldr r2, [fp, #-104] - ldr r1, [fp, #-100] - strh r3, [r2, r1] @ movhi - ldr r3, [r10, #2544] - str r5, [r8, #8] - add r5, r5, #1 - str r3, [r8, #4] - add r3, r3, #1 - cmn r3, #1 - moveq r3, #0 - str r3, [r10, #2544] - ldr r3, [fp, #-64] - str r3, [r8, #12] - ldrh r3, [r4] - strh r3, [r8, #2] @ movhi - ldr r3, [fp, #-68] - add r3, r3, #1 - b .L1717 -.L1688: - ldr r3, [r10, #3844] - mov r1, #0 - ldrh r2, [r10, #110] - add r3, r3, r7 - ldr r0, [r3, #8] - bl ftl_memset - b .L1692 -.L1693: - ldrh r1, [r10, #58] - ldr r3, [r10, #3844] - mul r1, r5, r1 - add r7, r3, r7 - ldr r3, [fp, #-80] - ldr r0, [r7, #8] - sub r1, r1, r9 - add r1, r3, r1, lsl #9 - b .L1715 -.L1680: - ldr r3, [r10, #3844] - add r7, r3, r7 - b .L1714 -.L1700: - ldr r4, .L1718+32 - ldr r5, .L1718+36 -.L1712: - ldrh r3, [r4] - movw r2, #65535 - cmp r3, r2 - bne .L1701 - ldrh r2, [r5] - cmp r2, r3 - bne .L1701 - mov r0, #0 - bl List_get_gc_head_node - uxth r0, r0 - bl FtlGcRefreshBlock -.L1701: - ldr r3, .L1718+40 - mov r1, #1 - mov r2, #128 - mov r0, r1 - strh r2, [r3] @ movhi - strh r2, [r3, #-2] @ movhi - bl rk_ftl_garbage_collect - mov r1, #1 - mov r0, #0 - bl rk_ftl_garbage_collect - ldr r3, .L1718+44 - ldrh r3, [r3] - cmp r3, #8 - bls .L1712 - b .L1702 -.L1719: - .align 2 -.L1718: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR3 - .word .LANCHOR0+2348 - .word .LANCHOR1+574 - .word .LC1 - .word .LC114 - .word -3947 - .word .LANCHOR0+2588 - .word .LANCHOR0+3202 - .word .LANCHOR0+3150 - .word .LANCHOR0+2344 - .size FtlWrite, .-FtlWrite - .global __modsi3 - .align 2 - .global sftl_write - .syntax unified - .arm - .fpu softvfp - .type sftl_write, %function -sftl_write: - @ args = 0, pretend = 0, frame = 116 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} - sub fp, ip, #4 - sub sp, sp, #120 - add ip, r0, r1 - sub lr, ip, #1 - mov r3, r1 - cmp lr, #63 - mov r10, r0 - movhi r3, #0 - movls r3, #1 - cmp r0, #576 - orrhi r3, r3, #1 - str r1, [fp, #-112] - cmp r3, #0 - str r2, [fp, #-132] - ldr r4, .L1751 - beq .L1721 - ldr r3, [r4, #-4012] - cmp r3, #0 - beq .L1722 - ldr r2, .L1751+4 - mov r0, #512 - ldrh r3, [r2, #14] - str r3, [fp, #-116] - ldrh r3, [r2, #10] - ldrb r1, [fp, #-116] @ zero_extendqisi2 - smulbb r3, r3, r1 - uxth r3, r3 - mov r1, r3 - str r3, [fp, #-120] - bl __udivsi3 - ldr r2, .L1751+8 - mov r3, #0 - ldr r1, .L1751+12 - str r0, [fp, #-108] - sub ip, r2, #262144 -.L1726: - ldr r0, [r2, #-4] - cmp r0, #0 - beq .L1723 -.L1727: - ldr r3, [fp, #-108] - mov r4, #0 - ldr r2, [fp, #-120] - ldr r9, .L1751+16 - ldr r5, .L1751+4 - str r4, [fp, #-124] - mul r3, r3, r2 - str r3, [fp, #-144] - ldr r3, [fp, #-108] - str r3, [fp, #-128] -.L1724: - mov r1, #512 - mov r0, r9 - bl __memzero - ldrh r8, [r5, #14] - mov r0, r4 - ldrh r6, [r5, #10] - mov r1, r8 - uxtb r7, r8 - uxth r3, r7 - str r3, [fp, #-136] - ldrh r3, [fp, #-136] - smulbb r6, r6, r3 - bl __udivsi3 - uxth r6, r6 - mov r1, r0 - ldr r3, [r5, #3252] - mov r0, #0 - blx r3 - cmp r6, #512 - bcs .L1728 - mov r1, r8 - add r0, r6, r4 - bl __udivsi3 - ldr r3, [r5, #3252] - mov r1, r0 - mov r0, #0 - blx r3 -.L1728: - mov r1, r6 - mov r0, r4 - bl __umodsi3 - mov r6, #0 - mov r8, r0 - sub r3, r4, r0 - str r3, [fp, #-140] -.L1729: - cmp r6, #512 - bcc .L1730 - ldrb r7, [r5, #14] @ zero_extendqisi2 - mov r0, r4 - ldrh r1, [r5, #10] - mov r6, #0 - uxth r3, r7 - str r3, [fp, #-136] - ldrh r3, [fp, #-136] - smulbb r1, r1, r3 - uxth r1, r1 - bl __umodsi3 - mov r1, r7 - mov ip, r0 - sub r3, r4, r0 - uxth r0, r0 - str r3, [fp, #-140] - str ip, [fp, #-148] - bl __modsi3 - ldr ip, [fp, #-148] - uxth r3, r0 -.L1731: - cmp r6, #512 - bcs .L1735 - ldr r2, [fp, #-136] - add r0, ip, r6 - mov r1, r7 - str ip, [fp, #-148] - str r3, [fp, #-156] - sub r8, r2, r3 - add r2, r9, r6, lsl #9 - uxth r8, r8 - str r2, [fp, #-152] - bl __udivsi3 - ldr r2, [fp, #-140] - uxth r0, r0 - ldr r3, [fp, #-156] - mov r1, r7 - add r3, r3, r2 - mla r0, r7, r0, r3 - bl __udivsi3 - ldr ip, [r5, #3260] - mov r1, r0 - sub r3, fp, #104 - ldr r2, [fp, #-152] - mov r0, #0 - blx ip - cmn r0, #1 - ldr ip, [fp, #-148] - bne .L1732 -.L1735: - ldr r3, .L1751+20 - mov r6, #0 -.L1733: - mov r7, r3 - ldr r1, [r9, r6, lsl #2] - ldr r2, [r7] - add r3, r3, #4 - cmp r1, r2 - beq .L1736 - mov r1, #512 - mov r0, r9 - bl __memzero - ldr r2, [r9, r6, lsl #2] - mov r1, r4 - str r6, [sp] - ldr r0, .L1751+24 - ldr r3, [r7] - bl sftl_printk - ldr r1, [fp, #-116] - mov r0, r4 - bl __udivsi3 - ldr r3, [r5, #3252] - mov r1, r0 - mov r0, #0 - blx r3 - ldr r3, [fp, #-108] - cmp r3, #1 - bls .L1737 - ldr r3, [fp, #-120] - ldr r1, [fp, #-116] - add r0, r3, r4 - bl __udivsi3 - ldr r3, [r5, #3252] - mov r1, r0 - mov r0, #0 - blx r3 -.L1737: - ldr r2, [fp, #-128] - ldr r3, [fp, #-108] - add r3, r3, r2 - ldr r2, [fp, #-144] - add r4, r4, r2 - ldr r2, [fp, #-128] - cmp r2, #15 - bls .L1743 -.L1742: - ldr r3, .L1751 - mov r2, #0 - str r2, [r3, #-4012] -.L1722: - ldr r3, [fp, #-132] - mov r1, r10 - ldr r2, [fp, #-112] - mov r0, #0 - bl FtlWrite - sub sp, fp, #40 - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1723: - ldr r0, [ip, r3, lsl #2] - add r3, r3, #1 - cmp r3, #4096 - movhi r3, #0 - str r0, [r2, #-4]! - cmp r1, r2 - bne .L1726 - b .L1727 -.L1743: - str r3, [fp, #-128] - b .L1724 -.L1730: - mov r1, r7 - add r0, r8, r6 - bl __udivsi3 - uxth ip, r0 - mov r1, r7 - ldr r0, [fp, #-140] - mul r3, r7, ip - str ip, [fp, #-152] - str r3, [fp, #-104] - movw r3, #61424 - str r3, [fp, #-100] - ldr r3, .L1751+20 - add r2, r3, r6, lsl #9 - str r2, [fp, #-148] - bl __udivsi3 - ldr ip, [fp, #-152] - sub r3, fp, #104 - ldr r2, [fp, #-148] - add r1, r0, ip - mov r0, #0 - ldr ip, [r5, #3256] - blx ip - ldr r3, [fp, #-136] - add r6, r3, r6 - uxth r6, r6 - b .L1729 -.L1732: - add r6, r8, r6 - mov r3, #0 - uxth r6, r6 - b .L1731 -.L1736: - add r6, r6, #1 - cmp r6, #65536 - bne .L1733 - ldr r3, [fp, #-124] - add r3, r3, #1 - cmp r3, #5 - str r3, [fp, #-124] - bls .L1737 - b .L1742 -.L1721: - cmp r0, #63 - ldr r0, .L1751+20 - ldrls r3, [fp, #-112] - rsbls r1, r10, #64 - ldrhi r3, .L1751+28 - ldrhi r2, [fp, #-112] - subls r2, r3, r1 - ldrls r3, [fp, #-132] - addhi r3, r10, r3 - ldrhi r1, [fp, #-132] - addhi r0, r0, r3, lsl #9 - addls r1, r3, r1, lsl #9 - cmp lr, #576 - subhi r2, r2, ip - subhi r2, r2, #444 - mov r3, #1 - subhi r2, r2, #3 - str r3, [r4, #-4012] - lsl r2, r2, #9 - bl memcpy - b .L1722 -.L1752: - .align 2 -.L1751: - .word .LANCHOR3 - .word .LANCHOR0 - .word idb_buf+262144 - .word idb_buf+16388 - .word gp_flash_check_buf - .word idb_buf - .word .LC115 - .word 8388544 - .size sftl_write, .-sftl_write - .align 2 - .global sftl_vendor_write - .syntax unified - .arm - .fpu softvfp - .type sftl_vendor_write, %function -sftl_vendor_write: - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 1, uses_anonymous_args = 0 - mov ip, sp - push {fp, ip, lr, pc} - sub fp, ip, #4 - mov r3, r2 - mov r2, r1 - mov r1, r0 - mov r0, #16 - bl FtlWrite - ldmfd sp, {fp, sp, pc} - .size sftl_vendor_write, .-sftl_vendor_write - .align 2 .global FtlLoadSysInfo .syntax unified .arm @@ -12449,63 +5402,63 @@ FtlLoadSysInfo: mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L1775 + ldr r4, .L798 mov r1, #0 - ldr r3, [r4, #3284] + ldr r3, [r4, #3292] add r6, r4, #2576 ldrh r2, [r4, #40] ldr r0, [r4, #2324] - str r3, [r4, #3272] - ldr r3, [r4, #3288] + str r3, [r4, #3452] + ldr r3, [r4, #3324] lsl r2, r2, #1 - str r3, [r4, #3276] + str r3, [r4, #3456] bl ftl_memset ldrh r0, [r6] movw r3, #65535 cmp r0, r3 - bne .L1755 -.L1763: + bne .L778 +.L786: mvn r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L1755: - ldr r8, .L1775+4 +.L778: + ldr r7, .L798+4 mov r1, #1 - add r7, r4, #3264 + ldr r8, .L798+8 bl FtlGetLastWrittenPage sxth r5, r0 add r0, r0, #1 strh r0, [r6, #2] @ movhi -.L1757: +.L780: cmp r5, #0 - bge .L1760 - movw r2, #1482 - ldr r1, .L1775+8 - ldr r0, .L1775+12 + bge .L783 + movw r2, #1448 + ldr r1, .L798+12 + ldr r0, .L798+16 bl sftl_printk -.L1759: +.L782: ldrh r3, [r4, #40] ldrh r2, [r4, #110] add r3, r3, #24 cmp r2, r3, lsl #1 - bcs .L1762 - movw r2, #1484 - ldr r1, .L1775+8 - ldr r0, .L1775+12 + bcs .L785 + movw r2, #1450 + ldr r1, .L798+12 + ldr r0, .L798+16 bl sftl_printk -.L1762: - ldr r5, .L1775+16 +.L785: + ldr r5, .L798+20 mov r2, #48 - ldr r1, [r4, #3272] + ldr r1, [r4, #3452] mov r0, r5 bl ftl_memcpy ldrh r2, [r4, #40] - ldr r1, [r4, #3272] + ldr r1, [r4, #3452] ldr r0, [r4, #2324] lsl r2, r2, #1 add r1, r1, #48 bl ftl_memcpy ldrh r1, [r4, #40] - ldr r3, [r4, #3272] + ldr r3, [r4, #3452] ldr r0, [r4, #24] lsr r2, r1, #3 add r1, r1, #24 @@ -12515,23 +5468,22 @@ FtlLoadSysInfo: add r1, r3, r1 bl ftl_memcpy ldr r2, [r4, #2268] - ldr r3, .L1775+4 + ldr r3, .L798+8 cmp r2, r3 - bne .L1763 + bne .L786 ldrb r2, [r4, #2278] @ zero_extendqisi2 ldrh r3, [r4, #54] ldrh r7, [r5, #8] cmp r2, r3 strh r7, [r6, #6] @ movhi - bne .L1763 - ldr r3, .L1775+20 + bne .L786 + ldrh r3, [r4, #102] ldrh r2, [r4, #58] ldr r6, [r4, #44] - str r7, [r3, #-4008] - ldrh r3, [r4, #102] ldrh r0, [r4, #158] - ldrh r1, [r4, #32] mul r3, r7, r3 + str r7, [r4, #3464] + ldrh r1, [r4, #32] sub r0, r6, r0 sub r0, r0, r7 str r3, [r4, #2504] @@ -12541,15 +5493,15 @@ FtlLoadSysInfo: cmp r7, r6 movw r3, #2572 strh r0, [r4, r3] @ movhi - bls .L1764 - movw r2, #1506 - ldr r1, .L1775+8 - ldr r0, .L1775+12 + bls .L787 + mov r2, #1472 + ldr r1, .L798+12 + ldr r0, .L798+16 bl sftl_printk -.L1764: +.L787: ldrh r0, [r5, #14] movw r3, #2348 - ldr r1, .L1775+24 + ldr r1, .L798+24 mvn ip, #0 strh r0, [r4, r3] @ movhi ldrh r3, [r5, #16] @@ -12604,77 +5556,5147 @@ FtlLoadSysInfo: strhi r3, [r4, #2544] movw r3, #65535 cmp r0, r3 - beq .L1767 - ldr r0, .L1775+24 + beq .L790 + ldr r0, .L798+24 bl make_superblock -.L1767: +.L790: movw r3, #2396 ldrh r2, [r4, r3] movw r3, #65535 cmp r2, r3 - beq .L1768 - ldr r0, .L1775+28 + beq .L791 + ldr r0, .L798+28 bl make_superblock -.L1768: +.L791: movw r3, #2444 ldrh r2, [r4, r3] movw r3, #65535 cmp r2, r3 - beq .L1769 - ldr r0, .L1775+32 + beq .L792 + ldr r0, .L798+32 bl make_superblock -.L1769: +.L792: movw r3, #2588 ldrh r2, [r4, r3] movw r3, #65535 cmp r2, r3 - beq .L1770 - ldr r0, .L1775+36 + beq .L793 + ldr r0, .L798+36 bl make_superblock -.L1770: +.L793: mov r0, #0 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L1760: +.L783: ldrh r3, [r6] mov r2, #1 mov r1, r2 mov r0, r7 orr r3, r5, r3, lsl #10 - str r3, [r4, #3268] - ldr r3, [r4, #3284] - str r3, [r4, #3272] + str r3, [r4, #3448] + ldr r3, [r4, #3292] + str r3, [r4, #3452] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] cmn r3, #1 - beq .L1758 - ldr r3, [r4, #3284] + beq .L781 + ldr r3, [r4, #3292] ldr r3, [r3] cmp r3, r8 - bne .L1758 - ldr r3, [r4, #3288] + bne .L781 + ldr r3, [r4, #3324] ldrh r2, [r3] movw r3, #61604 cmp r2, r3 - beq .L1759 -.L1758: + beq .L782 +.L781: sub r5, r5, #1 sxth r5, r5 - b .L1757 -.L1776: + b .L780 +.L799: .align 2 -.L1775: +.L798: .word .LANCHOR0 + .word .LANCHOR0+3444 .word 1179929683 - .word .LANCHOR1+583 + .word .LANCHOR1+256 .word .LC1 .word .LANCHOR0+2268 - .word .LANCHOR3 .word .LANCHOR0+2348 .word .LANCHOR0+2396 .word .LANCHOR0+2444 .word .LANCHOR0+2588 .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 + .global FlashProgPages + .syntax unified + .arm + .fpu softvfp + .type FlashProgPages, %function +FlashProgPages: + @ args = 0, pretend = 0, frame = 48 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #48 + mov r8, #0 + ldr r6, .L836 + mov r4, r0 + str r3, [fp, #-88] + mov r5, r0 + str r1, [fp, #-76] + ldrh r3, [r6, #12] + mov r9, r6 + mov r10, r6 + str r2, [fp, #-84] + str r3, [fp, #-72] + lsl r3, r3, #3 + str r3, [fp, #-80] +.L801: + ldr r3, [fp, #-76] + cmp r8, r3 + bne .L814 + ldr r3, [fp, #-88] + cmp r3, #0 + beq .L807 + mov r5, #0 + ldr r7, .L836+4 + ldr r6, .L836 + b .L815 +.L814: + ldr r3, [r5, #8] + cmp r3, #0 + beq .L802 + ldr r3, [r5, #12] + cmp r3, #0 + bne .L803 +.L802: + mov r2, #136 + ldr r1, .L836+8 + ldr r0, .L836+12 + bl sftl_printk +.L803: + sub r2, fp, #68 + sub r1, fp, #64 + mov r0, r5 + bl l2p_addr_tran + ldr r7, [fp, #-68] + cmp r7, #0 + bne .L804 + ldr r3, [fp, #-64] + ldr r2, [fp, #-80] + cmp r2, r3 + bls .L804 + ldr r5, .L836+8 + ldr r6, .L836+16 + b .L835 +.L806: + mvn r3, #0 + ldr r2, [r4, #-16] + str r3, [r4, #-20] + mov r1, r5 + mov r0, r6 + add r7, r7, #1 + bl sftl_printk + mov r3, #16 + mov r2, #4 + ldr r1, [r4, #-12] + ldr r0, .L836+20 + bl rknand_print_hex + mov r3, #4 + ldr r1, [r4, #-8] + mov r2, r3 + ldr r0, .L836+24 + bl rknand_print_hex +.L835: + ldr r3, [fp, #-76] + add r4, r4, #20 + cmp r7, r3 + bne .L806 + bl dump_stack +.L807: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L804: + ldr r1, [r5, #8] + tst r1, #63 + moveq r7, r1 + beq .L808 + ldr r7, [r10, #3312] + cmp r1, r7 + beq .L808 + ldrh r2, [r10, #58] + mov r0, r7 + lsl r2, r2, #9 + bl ftl_memcpy +.L808: + ldr r3, [r5, #12] + mov r2, r7 + ldr ip, [r10, #3252] + ldr r1, [fp, #-64] + ldrb r0, [fp, #-68] @ zero_extendqisi2 + blx ip + cmp r0, #0 + mvnne r3, #0 + streq r0, [r5] + strne r3, [r5] + ldrh r3, [r6, #14] + cmp r3, #4 + bne .L812 + ldr r0, [fp, #-72] + add r2, r7, #2048 + ldr r3, [r5, #12] + ldr r1, [fp, #-64] + ldr ip, [r6, #3252] + add r3, r3, #8 + add r1, r0, r1 + ldrb r0, [fp, #-68] @ zero_extendqisi2 + blx ip + cmp r0, #0 + mvnne r3, #0 + strne r3, [r5] +.L812: + add r8, r8, #1 + add r5, r5, #20 + b .L801 +.L819: + ldr r2, [r9, #3312] + mov r3, #0 + mov r1, #1 + sub r0, fp, #60 + str r3, [r2] + ldr r2, [r9, #3320] + str r3, [r2] + ldr r3, [r4, #4] + ldr r2, [fp, #-84] + str r3, [fp, #-56] + ldr r3, [r9, #3312] + str r3, [fp, #-52] + ldr r3, [r9, #3320] + str r3, [fp, #-48] + bl FlashReadPages + ldr r10, [fp, #-60] + cmn r10, #1 + bne .L816 + ldr r1, [r4, #4] + mov r0, r7 + bl sftl_printk + str r10, [r4] +.L816: + ldr r3, [r4, #12] + cmp r3, #0 + beq .L817 + ldr r2, [r3] + ldr r3, [r6, #3320] + ldr r3, [r3] + cmp r2, r3 + beq .L817 + ldr r1, [r4, #4] + ldr r0, .L836+28 + bl sftl_printk + mvn r3, #0 + str r3, [r4] +.L817: + ldr r3, [r4, #8] + cmp r3, #0 + beq .L818 + ldr r2, [r3] + ldr r3, [r6, #3312] + ldr r3, [r3] + cmp r2, r3 + beq .L818 + ldr r1, [r4, #4] + ldr r0, .L836+32 + bl sftl_printk + mvn r3, #0 + str r3, [r4] +.L818: + add r5, r5, #1 + add r4, r4, #20 +.L815: + cmp r8, r5 + bne .L819 + b .L807 +.L837: + .align 2 +.L836: + .word .LANCHOR0 + .word .LC86 + .word .LANCHOR1+271 + .word .LC1 + .word .LC80 + .word .LC81 + .word .LC82 + .word .LC87 + .word .LC88 + .size FlashProgPages, .-FlashProgPages + .align 2 + .global FtlLowFormatEraseBlock + .syntax unified + .arm + .fpu softvfp + .type FtlLowFormatEraseBlock, %function +FtlLowFormatEraseBlock: + @ args = 0, pretend = 0, frame = 12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + mov r9, #0 + ldr ip, .L880 + uxtb r6, r1 + uxth r7, r0 + mov r5, r9 + mov r4, r9 + mov r10, ip + str r7, [ip, #3276] +.L839: + ldrh r1, [r10, #32] + uxth r3, r9 + cmp r1, r3 + bhi .L843 + cmp r5, #0 + beq .L838 + mov r8, #0 + mov r9, #20 + mov r2, r5 + mov r1, #0 + ldr r0, [r10, #3260] + bl FlashEraseBlocks +.L846: + uxth r3, r8 + cmp r5, r3 + bhi .L848 +.L849: + cmp r6, #0 + ldrhne r3, [r10, #104] + moveq r3, #2 + streq r3, [fp, #-52] + streq r6, [fp, #-48] + strne r3, [fp, #-52] + movne r3, #1 + strne r3, [fp, #-48] + mov r3, #0 + str r3, [fp, #-44] +.L858: + mov r8, #0 + mov r5, r8 +.L850: + ldrh r1, [r10, #32] + uxth r3, r8 + cmp r1, r3 + bhi .L853 + cmp r5, #0 + beq .L838 + mov r9, #0 + mov r3, #1 + ldr r2, [fp, #-48] + mov r1, r5 + ldr r0, [r10, #3260] + bl FlashProgPages +.L855: + uxth r3, r9 + cmp r5, r3 + bhi .L857 + ldr r3, [fp, #-44] + ldr r2, [fp, #-52] + add r3, r3, #1 + str r3, [fp, #-44] + ldrh r3, [fp, #-44] + cmp r2, r3 + bhi .L858 + mov r8, #0 + mov r9, #20 +.L859: + uxth r3, r8 + cmp r5, r3 + bhi .L861 + adds r6, r6, #0 + movne r6, #1 + cmp r7, #63 + movhi r7, r6 + orrls r7, r6, #1 + cmp r7, #0 + beq .L838 + mov r2, r5 + ldr r1, [fp, #-48] + ldr r0, [r10, #3260] + bl FlashEraseBlocks +.L838: + mov r0, r4 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L843: + uxth r3, r9 + mov r2, #20 + ldr r0, [r10, #3260] + mul r1, r2, r3 + mov r2, #0 + add r3, r10, r3 + str r2, [r0, r1] + mov r1, r7 + ldrb r0, [r3, #60] @ zero_extendqisi2 + bl V2P_block + cmp r6, #0 + mov r8, r0 + beq .L840 + bl IsBlkInVendorPart + cmp r0, #0 + bne .L841 +.L840: + mov r0, r8 + bl FtlBbmIsBadBlock + cmp r0, #0 + addne r4, r4, #1 + uxthne r4, r4 + bne .L841 + ldr r1, [r10, #3260] + mov r3, #20 + lsl r8, r8, #10 + mla r1, r3, r5, r1 + ldr r3, [r10, #3308] + str r3, [r1, #8] + ldrh r3, [r10, #112] + str r8, [r1, #4] + mul r3, r5, r3 + add r5, r5, #1 + uxth r5, r5 + add r0, r3, #3 + cmp r3, #0 + movlt r3, r0 + ldr r0, [r10, #3328] + bic r3, r3, #3 + add r3, r0, r3 + str r3, [r1, #12] +.L841: + add r9, r9, #1 + b .L839 +.L848: + mul r3, r9, r8 + ldr r2, [r10, #3260] + add r1, r2, r3 + ldr r3, [r2, r3] + cmn r3, #1 + bne .L847 + ldr r0, [r1, #4] + add r4, r4, #1 + uxth r4, r4 + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock +.L847: + add r8, r8, #1 + b .L846 +.L853: + uxth r3, r8 + mov r2, #20 + ldr r0, [r10, #3260] + mul r1, r2, r3 + mov r2, #0 + add r3, r10, r3 + str r2, [r0, r1] + mov r1, r7 + ldrb r0, [r3, #60] @ zero_extendqisi2 + bl V2P_block + cmp r6, #0 + mov r9, r0 + beq .L851 + bl IsBlkInVendorPart + cmp r0, #0 + bne .L852 +.L851: + mov r0, r9 + bl FtlBbmIsBadBlock + cmp r0, #0 + bne .L852 + ldr r1, [r10, #3260] + mov r3, #20 + mla r1, r3, r5, r1 + ldr r3, [fp, #-44] + add r9, r3, r9, lsl #10 + ldr r3, [r10, #3304] + str r9, [r1, #4] + str r3, [r1, #8] + ldrh r3, [r10, #112] + mul r3, r5, r3 + add r5, r5, #1 + uxth r5, r5 + add r0, r3, #3 + cmp r3, #0 + movlt r3, r0 + ldr r0, [r10, #3308] + bic r3, r3, #3 + add r3, r0, r3 + str r3, [r1, #12] +.L852: + add r8, r8, #1 + b .L850 +.L857: + mov r3, #20 + ldr r2, [r10, #3260] + mul r3, r3, r9 + add r1, r2, r3 + ldr r3, [r2, r3] + cmp r3, #0 + beq .L856 + ldr r0, [r1, #4] + add r4, r4, #1 + uxth r4, r4 + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock +.L856: + add r9, r9, #1 + b .L855 +.L861: + cmp r6, #0 + beq .L860 + mul r3, r9, r8 + ldr r2, [r10, #3260] + add r1, r2, r3 + ldr r3, [r2, r3] + cmp r3, #0 + bne .L860 + ldr r0, [r1, #4] + mov r1, #1 + ubfx r0, r0, #10, #16 + bl FtlFreeSysBlkQueueIn +.L860: + add r8, r8, #1 + b .L859 +.L881: + .align 2 +.L880: + .word .LANCHOR0 + .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock + .align 2 + .global Ftl_write_map_blk_to_last_page + .syntax unified + .arm + .fpu softvfp + .type Ftl_write_map_blk_to_last_page, %function +Ftl_write_map_blk_to_last_page: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + ldrh r3, [r0] + movw r2, #65535 + mov r4, r0 + ldr r5, [r0, #12] + cmp r3, r2 + bne .L883 + ldrh r3, [r0, #8] + cmp r3, #0 + beq .L884 + movw r2, #641 + ldr r1, .L892 + ldr r0, .L892+4 + bl sftl_printk +.L884: + ldrh r3, [r4, #8] + add r3, r3, #1 + strh r3, [r4, #8] @ movhi + bl FtlFreeSysBlkQueueOut + mov r3, #0 + strh r0, [r5] @ movhi + strh r3, [r4, #2] @ movhi + strh r3, [r4] @ movhi + ldr r3, [r4, #28] + add r3, r3, #1 + str r3, [r4, #28] +.L885: + mov r0, #0 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L883: + lsl r3, r3, #1 + ldr r2, [r0, #28] + ldr r6, [r0, #24] + mov r1, #255 + ldrh r7, [r5, r3] + ldrh r3, [r0, #2] + ldr r5, .L892+8 + orr r3, r3, r7, lsl #10 + str r3, [r5, #3448] + ldr r3, [r5, #3292] + str r3, [r5, #3452] + ldr r3, [r5, #3324] + str r3, [r5, #3456] + str r2, [r3, #4] + ldr r2, .L892+12 + strh r2, [r3, #8] @ movhi + ldrh r2, [r0, #4] + strh r7, [r3, #2] @ movhi + strh r2, [r3] @ movhi + ldrh r2, [r5, #104] + ldr r0, [r5, #3292] + lsl r2, r2, #3 + bl ftl_memset + mov r2, #0 + mov r3, r2 +.L886: + ldrh r0, [r4, #6] + uxth r1, r2 + cmp r0, r1 + bhi .L888 + mov r2, #1 + mov r3, #0 + mov r1, r2 + ldr r0, .L892+16 + bl FlashProgPages + ldrh r3, [r4, #2] + mov r0, r4 + add r3, r3, #1 + strh r3, [r4, #2] @ movhi + bl ftl_map_blk_gc + b .L885 +.L888: + uxth r1, r2 + ldr r0, [r6, r1, lsl #2] + cmp r7, r0, lsr #10 + bne .L887 + ldr r0, [r5, #3292] + add r3, r3, #1 + uxth r3, r3 + str r1, [r0, r3, lsl #3] + ldr r0, [r6, r1, lsl #2] + ldr r1, [r5, #3292] + add r1, r1, r3, lsl #3 + str r0, [r1, #4] +.L887: + add r2, r2, #1 + b .L886 +.L893: + .align 2 +.L892: + .word .LANCHOR1+286 + .word .LC1 + .word .LANCHOR0 + .word -1291 + .word .LANCHOR0+3444 + .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .align 2 + .global FtlMapWritePage + .syntax unified + .arm + .fpu softvfp + .type FtlMapWritePage, %function +FtlMapWritePage: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r7, .L912 + mov r4, r0 + mov r8, r1 + mov r9, r2 + mov r6, #0 + mov r5, r7 +.L895: + ldr r3, [r7, #2524] + add r3, r3, #1 + str r3, [r7, #2524] + ldrh r3, [r7, #104] + ldrh r2, [r4, #2] + sub r3, r3, #1 + cmp r2, r3 + bge .L896 + ldrh r2, [r4] + movw r3, #65535 + cmp r2, r3 + bne .L897 +.L896: + mov r0, r4 + bl Ftl_write_map_blk_to_last_page +.L897: + ldrh r3, [r4] + ldr r2, [r4, #12] + lsl r3, r3, #1 + ldrh r3, [r2, r3] + cmp r3, #0 + bne .L898 + movw r2, #699 + ldr r1, .L912+4 + ldr r0, .L912+8 + bl sftl_printk +.L898: + ldrh r2, [r4] + ldrh r3, [r4, #10] + cmp r2, r3 + bcc .L899 + mov r2, #700 + ldr r1, .L912+4 + ldr r0, .L912+8 + bl sftl_printk +.L899: + ldrh r3, [r4] + mov r1, #16 + ldr r2, [r4, #12] + ldr r0, [r5, #3324] + lsl r3, r3, #1 + ldrh r10, [r2, r3] + ldrh r3, [r4, #2] + str r0, [r5, #3456] + str r9, [r5, #3452] + orr r3, r3, r10, lsl #10 + str r3, [r5, #3448] + bl __memzero + ldr r3, [r5, #3456] + ldr r2, [r4, #28] + ldr r0, .L912+12 + strh r8, [r3, #8] @ movhi + str r2, [r3, #4] + ldrh r2, [r4, #4] + strh r10, [r3, #2] @ movhi + strh r2, [r3] @ movhi + mov r3, #1 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r4, #2] + add r3, r3, #1 + uxth r3, r3 + strh r3, [r4, #2] @ movhi + ldr r2, [r5, #3444] + cmn r2, #1 + bne .L900 + ldr r1, [r5, #3448] + add r6, r6, #1 + ldr r0, .L912+16 + uxth r6, r6 + bl sftl_printk + ldrh r3, [r4, #2] + cmp r3, #2 + ldrhls r3, [r5, #104] + subls r3, r3, #1 + strhls r3, [r4, #2] @ movhi + cmp r6, #3 + bls .L902 + mov r2, r6 + ldr r1, [r5, #3448] + ldr r0, .L912+20 + bl sftl_printk +.L903: + b .L903 +.L902: + ldr r3, [r4, #32] + cmp r3, #0 + beq .L895 +.L911: + b .L911 +.L900: + cmp r3, #1 + cmpne r2, #256 + beq .L906 + ldr r0, [r4, #36] + cmp r0, #0 + beq .L907 +.L906: + mov r3, #0 + str r3, [r4, #36] + b .L895 +.L907: + ldr r2, [r5, #3448] + ldr r3, [r4, #24] + str r2, [r3, r8, lsl #2] + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L913: + .align 2 +.L912: + .word .LANCHOR0 + .word .LANCHOR1+317 + .word .LC1 + .word .LANCHOR0+3444 + .word .LC89 + .word .LC90 + .size FtlMapWritePage, .-FtlMapWritePage + .align 2 + .global load_l2p_region + .syntax unified + .arm + .fpu softvfp + .type load_l2p_region, %function +load_l2p_region: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L921 + uxth r6, r0 + uxth r8, r1 + ldrh r3, [r4, #136] + cmp r3, r6 + bcs .L915 + movw r2, #485 + ldr r1, .L921+4 + ldr r0, .L921+8 + bl sftl_printk +.L915: + ldr r3, [r4, #3368] + mov r5, #12 + ldr r7, [r3, r6, lsl #2] + cmp r7, #0 + bne .L916 + mul r5, r5, r8 + ldr r3, [r4, #2492] + ldrh r2, [r4, #110] + mov r1, #255 + add r3, r3, r5 + ldr r0, [r3, #8] + bl ftl_memset + ldr r3, [r4, #2492] + strh r6, [r3, r5] @ movhi + ldr r3, [r4, #2492] + add r5, r3, r5 + str r7, [r5, #4] +.L917: + mov r0, #0 + ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} +.L916: + mul r5, r5, r8 + ldr r3, [r4, #2492] + mov r2, #1 + ldr r0, .L921+12 + mov r1, r2 + str r7, [r4, #3448] + add r3, r3, r5 + ldr r3, [r3, #8] + str r3, [r4, #3452] + ldr r3, [r4, #3324] + str r3, [r4, #3456] + bl FlashReadPages + ldr r8, [r4, #3456] + ldrh r3, [r8, #8] + cmp r3, r6 + beq .L918 + mov r2, r7 + mov r1, r6 + ldr r0, .L921+16 + bl sftl_printk + mov r3, #4 + ldr r1, [r4, #3456] + mov r2, r3 + ldr r0, .L921+20 + bl rknand_print_hex + ldrh r3, [r4, #136] + mov r2, #4 + ldr r1, [r4, #3368] + ldr r0, .L921+24 + bl rknand_print_hex +.L919: + ldrh r3, [r8, #8] + cmp r3, r6 + beq .L920 + mov r2, #508 + ldr r1, .L921+4 + ldr r0, .L921+8 + bl sftl_printk +.L920: + ldr r3, [r4, #2492] + mov r1, #0 + add r2, r3, r5 + str r1, [r2, #4] + strh r6, [r3, r5] @ movhi + b .L917 +.L918: + ldr r3, [r4, #3444] + cmp r3, #256 + bne .L919 + mov r2, r7 + mov r1, r6 + ldr r0, .L921+28 + bl sftl_printk + ldr r3, [r4, #2492] + mov r1, r6 + ldr r0, .L921+32 + add r3, r3, r5 + ldr r2, [r3, #8] + bl FtlMapWritePage + b .L919 +.L922: + .align 2 +.L921: + .word .LANCHOR0 + .word .LANCHOR1+333 + .word .LC1 + .word .LANCHOR0+3444 + .word .LC91 + .word .LC92 + .word .LC93 + .word .LC94 + .word .LANCHOR0+3384 + .size load_l2p_region, .-load_l2p_region + .align 2 + .global ftl_map_blk_gc + .syntax unified + .arm + .fpu softvfp + .type ftl_map_blk_gc, %function +ftl_map_blk_gc: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #8 + mov r4, r0 + ldr r6, [r0, #12] + ldr r9, [r0, #24] + bl ftl_free_no_use_map_blk + ldrh r3, [r4, #10] + ldrh r2, [r4, #8] + ldr r5, .L939 + sub r3, r3, #5 + cmp r2, r3 + blt .L924 + uxth r0, r0 + lsl r0, r0, #1 + ldrh r8, [r6, r0] + cmp r8, #0 + beq .L924 + ldr r3, [r4, #32] + cmp r3, #0 + bne .L924 + mov r2, #1 + str r2, [r4, #32] + strh r3, [r6, r0] @ movhi + ldrh r3, [r4, #8] + ldrh r2, [r4, #2] + sub r3, r3, #1 + strh r3, [r4, #8] @ movhi + ldrh r3, [r5, #104] + cmp r2, r3 + bcc .L925 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk +.L925: + mov r6, #0 +.L926: + ldrh r3, [r4, #6] + uxth r10, r6 + cmp r3, r10 + bhi .L933 + mov r1, #1 + mov r0, r8 + bl FtlFreeSysBlkQueueIn + mov r3, #0 + str r3, [r4, #32] +.L924: + ldrh r2, [r4, #2] + ldrh r3, [r5, #104] + cmp r2, r3 + bcc .L934 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk +.L934: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L933: + uxth r7, r6 + add r3, r9, r7, lsl #2 + str r3, [fp, #-44] + ldr r3, [r9, r7, lsl #2] + cmp r8, r3, lsr #10 + bne .L927 + ldr r3, [r5, #3296] + ldr r0, .L939+4 + str r3, [r5, #3452] + ldr r3, [r5, #3324] + str r3, [r5, #3456] + ldr r2, [r9, r7, lsl #2] + str r3, [fp, #-48] + str r2, [r5, #3448] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r3, [fp, #-48] + ldrh r2, [r3, #8] + cmp r2, r10 + beq .L928 + movw r2, #611 + ldr r1, .L939+8 + ldr r0, .L939+12 + bl sftl_printk + ldr r3, [fp, #-48] +.L928: + ldr r2, [r5, #3444] + cmn r2, #1 + bne .L929 +.L931: + ldr r2, [fp, #-44] + mov r3, #0 + str r3, [r2] +.L930: + b .L930 +.L929: + ldrh r2, [r3, #8] + cmp r2, r10 + bne .L931 + ldrh r2, [r3] + ldrh r3, [r4, #4] + cmp r2, r3 + bne .L931 + ldr r2, [r5, #3452] + mov r1, r7 + mov r0, r4 + bl FtlMapWritePage +.L927: + add r6, r6, #1 + b .L926 +.L940: + .align 2 +.L939: + .word .LANCHOR0 + .word .LANCHOR0+3444 + .word .LANCHOR1+349 + .word .LC1 + .size ftl_map_blk_gc, .-ftl_map_blk_gc + .align 2 + .global FtlMapTblRecovery + .syntax unified + .arm + .fpu softvfp + .type FtlMapTblRecovery, %function +FtlMapTblRecovery: + @ args = 0, pretend = 0, frame = 20 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #20 + mov r1, #0 + ldr r3, [r0, #24] + mov r4, r0 + ldr r6, .L968 + mov r7, #0 + ldr r8, [r0, #12] + str r3, [fp, #-44] + ldr r3, [r0, #16] + mov r5, r6 + str r3, [fp, #-56] + ldrh r3, [r0, #6] + str r3, [fp, #-48] + ldrh r3, [r0, #8] + ldr r0, [fp, #-44] + str r3, [fp, #-52] + ldr r3, [fp, #-48] + lsl r2, r3, #2 + bl ftl_memset + ldr r3, [r6, #3292] + mvn r2, #0 + ldr r9, [r6, #3324] + str r7, [r4, #32] + str r3, [r6, #3452] + str r9, [r6, #3456] + strh r2, [r4] @ movhi + strh r2, [r4, #2] @ movhi + mov r2, #1 + str r7, [r4, #28] + str r2, [r4, #36] +.L942: + ldr r3, [fp, #-52] + sxth r2, r7 + cmp r2, r3 + bge .L959 + ldr r3, [fp, #-52] + lsl r0, r2, #1 + sub r1, r3, #1 + cmp r2, r1 + bne .L943 + add r10, r8, r0 + mov r1, #1 + ldrh r0, [r8, r0] + mov r8, #0 + str r2, [fp, #-52] + bl FtlGetLastWrittenPage + ldr r3, [fp, #-56] + sxth r1, r0 + ldr r2, [fp, #-52] + add r0, r0, #1 + ldr ip, .L968+4 + strh r7, [r4] @ movhi + add r7, r1, #1 + strh r0, [r4, #2] @ movhi + ldr r2, [r3, r2, lsl #2] + str r2, [r4, #28] +.L944: + sxth r2, r8 + cmp r2, r7 + blt .L946 +.L959: + mov r0, r4 + bl ftl_free_no_use_map_blk + ldrh r2, [r4, #2] + ldrh r3, [r5, #104] + cmp r2, r3 + bne .L948 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk +.L948: + mov r0, r4 + bl ftl_map_blk_gc + mov r0, r4 + bl ftl_map_blk_gc + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L946: + ldrh r1, [r10] + mov r0, ip + str ip, [fp, #-52] + orr r2, r2, r1, lsl #10 + str r2, [r6, #3448] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r6, #3444] + ldr ip, [fp, #-52] + cmn r2, #1 + beq .L945 + ldrh r2, [r9, #8] + ldr r3, [fp, #-48] + cmp r3, r2 + bls .L945 + ldrh r1, [r4, #4] + ldrh r0, [r9] + cmp r0, r1 + ldreq r1, [r6, #3448] + ldreq r3, [fp, #-44] + streq r1, [r3, r2, lsl #2] +.L945: + add r8, r8, #1 + b .L944 +.L943: + ldr r2, [r5, #3292] + add r3, r8, r0 + str r3, [fp, #-60] + str r2, [r5, #3452] + ldrh r2, [r5, #104] + ldrh r1, [r8, r0] + ldr r0, .L968+4 + sub r2, r2, #1 + orr r2, r2, r1, lsl #10 + str r2, [r5, #3448] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #3444] + cmn r2, #1 + beq .L961 + ldrh r1, [r9] + ldrh r2, [r4, #4] + cmp r1, r2 + bne .L961 + ldrh r1, [r9, #8] + movw r2, #64245 + cmp r1, r2 + beq .L950 +.L961: + mov r10, #0 +.L951: + ldrh r1, [r5, #104] + sxth r2, r10 + cmp r2, r1 + bge .L957 + ldr r3, [fp, #-60] + ldr r0, .L968+4 + ldrh r1, [r3] + orr r2, r2, r1, lsl #10 + str r2, [r5, #3448] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #3444] + cmn r2, #1 + beq .L955 + ldrh r2, [r9, #8] + ldr r3, [fp, #-48] + cmp r3, r2 + bls .L955 + ldrh r1, [r4, #4] + ldrh r0, [r9] + cmp r0, r1 + ldreq r1, [r5, #3448] + ldreq r3, [fp, #-44] + streq r1, [r3, r2, lsl #2] +.L955: + add r10, r10, #1 + b .L951 +.L950: + mov r0, #0 + mov lr, #4 +.L952: + ldrh r1, [r5, #104] + sxth r2, r0 + sub r1, r1, #1 + cmp r2, r1 + blt .L954 +.L957: + add r7, r7, #1 + b .L942 +.L954: + ldr ip, [r5, #3292] + add r0, r0, #1 + ldr r3, [fp, #-48] + ldr r1, [ip, r2, lsl #3] + uxth r10, r1 + cmp r3, r10 + addhi r2, lr, r2, lsl #3 + ldrhi r3, [fp, #-44] + movhi r1, r10 + ldrhi r2, [ip, r2] + strhi r2, [r3, r1, lsl #2] + b .L952 +.L969: + .align 2 +.L968: + .word .LANCHOR0 + .word .LANCHOR0+3444 + .size FtlMapTblRecovery, .-FtlMapTblRecovery + .align 2 + .global FtlLoadVonderInfo + .syntax unified + .arm + .fpu softvfp + .type FtlLoadVonderInfo, %function +FtlLoadVonderInfo: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + ldr r3, .L971 + ldrh r2, [r3, #120] + add r0, r3, #3456 + add r0, r0, #12 + strh r2, [r0, #10] @ movhi + ldr r2, .L971+4 + strh r2, [r0, #4] @ movhi + ldrh r2, [r3, #144] + strh r2, [r0, #8] @ movhi + ldrh r2, [r3, #122] + strh r2, [r0, #6] @ movhi + ldr r2, [r3, #148] + str r2, [r3, #3480] + ldr r2, [r3, #3360] + str r2, [r3, #3484] + ldr r2, [r3, #3356] + str r2, [r3, #3488] + ldr r2, [r3, #3364] + str r2, [r3, #3492] + bl FtlMapTblRecovery + mov r0, #0 + ldmfd sp, {fp, sp, pc} +.L972: + .align 2 +.L971: + .word .LANCHOR0 + .word -3962 + .size FtlLoadVonderInfo, .-FtlLoadVonderInfo + .align 2 + .global FtlLoadMapInfo + .syntax unified + .arm + .fpu softvfp + .type FtlLoadMapInfo, %function +FtlLoadMapInfo: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + bl FtlL2PDataInit + ldr r0, .L974 + bl FtlMapTblRecovery + mov r0, #0 + ldmfd sp, {fp, sp, pc} +.L975: + .align 2 +.L974: + .word .LANCHOR0+3384 + .size FtlLoadMapInfo, .-FtlLoadMapInfo + .align 2 + .global flush_l2p_region + .syntax unified + .arm + .fpu softvfp + .type flush_l2p_region, %function +flush_l2p_region: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r5, .L977 + uxth r0, r0 + mov r4, #12 + mul r4, r4, r0 + ldr r3, [r5, #2492] + add r0, r5, #3376 + add r0, r0, #8 + add r2, r3, r4 + ldrh r1, [r3, r4] + ldr r2, [r2, #8] + bl FtlMapWritePage + ldr r0, [r5, #2492] + add r4, r0, r4 + mov r0, #0 + ldr r3, [r4, #4] + bic r3, r3, #-2147483648 + str r3, [r4, #4] + ldmfd sp, {r4, r5, fp, sp, pc} +.L978: + .align 2 +.L977: + .word .LANCHOR0 + .size flush_l2p_region, .-flush_l2p_region + .align 2 + .global log2phys + .syntax unified + .arm + .fpu softvfp + .type log2phys, %function +log2phys: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #8 + mov r6, r0 + ldr r4, .L992 + mov r7, r1 + mov r10, r2 + ldr r3, [r4, #2504] + ldrh r5, [r4, #108] + cmp r0, r3 + bcc .L980 + movw r2, #811 + ldr r1, .L992+4 + ldr r0, .L992+8 + bl sftl_printk +.L980: + ldr r3, [r4, #2504] + cmp r6, r3 + bcs .L981 + add r5, r5, #7 + ldrh r0, [r4, #138] + lsr r3, r6, r5 + ldr ip, [r4, #2492] + mov r1, #0 + str r3, [fp, #-44] + mov r2, #12 + ldrh r9, [fp, #-44] +.L982: + uxth r8, r1 + cmp r8, r0 + bcc .L987 + str r2, [fp, #-48] + bl select_l2p_ram_region + ldr r2, [fp, #-48] + mov r8, r0 + ldr r1, [r4, #2492] + mul r2, r2, r0 + add ip, r1, r2 + ldrh r1, [r1, r2] + movw r2, #65535 + cmp r1, r2 + beq .L988 + ldr r2, [ip, #4] + cmp r2, #0 + bge .L988 + bl flush_l2p_region +.L988: + mov r1, r8 + ldrh r0, [fp, #-44] + bl load_l2p_region + b .L984 +.L981: + cmp r10, #0 + mvn r0, #0 + streq r0, [r7] +.L979: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L987: + add r1, r1, #1 + mla lr, r2, r1, ip + ldrh lr, [lr, #-12] + cmp lr, r9 + bne .L982 +.L984: + mvn r2, #0 + cmp r10, #0 + bic r5, r6, r2, lsl r5 + mov r2, #12 + uxth r5, r5 + bne .L985 + ldr r1, [r4, #2492] + mla r2, r2, r8, r1 + ldr r2, [r2, #8] + ldr r2, [r2, r5, lsl #2] + str r2, [r7] +.L986: + ldr r1, [r4, #2492] + mov r2, #12 + mov r0, #0 + mla r3, r2, r8, r1 + ldr r2, [r3, #4] + cmn r2, #1 + addne r2, r2, #1 + strne r2, [r3, #4] + b .L979 +.L985: + mul r2, r2, r8 + ldr r1, [r4, #2492] + ldr r0, [r7] + add r1, r1, r2 + ldr r1, [r1, #8] + str r0, [r1, r5, lsl #2] + ldr r1, [r4, #2492] + add r2, r1, r2 + ldr r1, [r2, #4] + orr r1, r1, #-2147483648 + str r1, [r2, #4] + ldr r2, .L992+12 + strh r9, [r2] @ movhi + b .L986 +.L993: + .align 2 +.L992: + .word .LANCHOR0 + .word .LANCHOR1+364 + .word .LC1 + .word .LANCHOR0+2496 + .size log2phys, .-log2phys + .align 2 + .global FtlReUsePrevPpa + .syntax unified + .arm + .fpu softvfp + .type FtlReUsePrevPpa, %function +FtlReUsePrevPpa: + @ args = 0, pretend = 0, frame = 4 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #4 + mov r6, r0 + ldr r7, .L1004 + ubfx r0, r1, #10, #16 + str r1, [fp, #-32] + bl P2V_block_in_plane + ldr r2, [r7, #2324] + lsl r5, r0, #1 + ldrh r3, [r2, r5] + cmp r3, #0 + bne .L995 + ldr r4, [r7, #2340] + cmp r4, #0 + beq .L996 + movw r2, #2344 + movw lr, #65535 + ldrh ip, [r7, r2] + ldr r2, [r7, #2316] + sub r4, r4, r2 + ubfx r4, r4, #3, #16 +.L997: + uxth r1, r3 + cmp ip, r1 + bls .L996 + cmp r4, r0 + bne .L998 + mov r1, r4 + ldr r0, .L1004+4 + bl List_remove_node + movw r3, #2344 + ldrh r3, [r7, r3] + cmp r3, #0 + bne .L999 + movw r2, #1699 + ldr r1, .L1004+8 + ldr r0, .L1004+12 + bl sftl_printk +.L999: + movw r2, #2344 + mov r0, r4 + ldrh r3, [r7, r2] + sub r3, r3, #1 + strh r3, [r7, r2] @ movhi + bl INSERT_DATA_LIST + ldr r2, [r7, #2324] + ldrh r3, [r2, r5] +.L995: + add r3, r3, #1 + strh r3, [r2, r5] @ movhi + b .L996 +.L998: + lsl r4, r4, #3 + add r3, r3, #1 + ldrh r4, [r2, r4] + cmp r4, lr + bne .L997 +.L996: + mov r2, #1 + sub r1, fp, #32 + mov r0, r6 + bl log2phys + ldmib sp, {r4, r5, r6, r7, fp, sp, pc} +.L1005: + .align 2 +.L1004: + .word .LANCHOR0 + .word .LANCHOR0+2340 + .word .LANCHOR1+373 + .word .LC1 + .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .align 2 + .global ftl_check_vpc + .syntax unified + .arm + .fpu softvfp + .type ftl_check_vpc, %function +ftl_check_vpc: + @ args = 0, pretend = 0, frame = 4 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #4 + mov r4, #0 + ldr r6, .L1030 + ldr r1, .L1030+4 + ldr r0, .L1030+8 + mov r5, r6 + bl sftl_printk + mov r1, #8192 + ldr r0, .L1030+12 + bl __memzero +.L1007: + ldr r3, [r6, #2504] + cmp r4, r3 + bcc .L1009 + ldr r8, .L1030+12 + mov r4, #0 + ldr r9, .L1030+16 + mov r6, r4 +.L1010: + ldrh r2, [r5, #40] + uxth r3, r4 + cmp r2, r3 + bhi .L1012 + ldr r4, [r5, #2340] + cmp r4, #0 + beq .L1013 + movw r3, #2344 + ldr r9, .L1030+12 + ldrh r8, [r5, r3] + mov r7, #0 + ldr r3, [r5, #2316] + ldr r10, .L1030+20 + sub r4, r4, r3 + ubfx r4, r4, #3, #16 +.L1014: + uxth r3, r7 + cmp r8, r3 + bls .L1013 + ldr r2, [r5, #2324] + lsl r3, r4, #1 + ldrh r2, [r2, r3] + cmp r2, #0 + beq .L1015 + mov r6, #1 + ldrh r3, [r9, r3] + mov r1, r4 + mov r0, r10 + bl sftl_printk +.L1015: + ldr r3, [r5, #2316] + lsl r4, r4, #3 + add r7, r7, #1 + ldrh r4, [r3, r4] + movw r3, #65535 + cmp r4, r3 + bne .L1014 +.L1013: + cmp r6, #0 + ldmibeq sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} + movw r2, #2343 + ldr r1, .L1030+4 + ldr r0, .L1030+24 + bl sftl_printk + ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1009: + mov r2, #0 + sub r1, fp, #44 + mov r0, r4 + bl log2phys + ldr r0, [fp, #-44] + cmn r0, #1 + beq .L1008 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, .L1030+12 + lsl r0, r0, #1 + ldrh r3, [r2, r0] + add r3, r3, #1 + strh r3, [r2, r0] @ movhi +.L1008: + add r4, r4, #1 + b .L1007 +.L1012: + uxth r1, r4 + ldr r3, [r5, #2324] + lsl r7, r1, #1 + ldrh r2, [r3, r7] + ldrh r3, [r8, r7] + cmp r2, r3 + beq .L1011 + mov r0, r9 + bl sftl_printk + ldr r3, [r5, #2324] + movw r2, #65535 + ldrh r3, [r3, r7] + cmp r3, r2 + beq .L1011 + ldrh r2, [r8, r7] + cmp r2, r3 + movhi r6, #1 +.L1011: + add r4, r4, #1 + b .L1010 +.L1031: + .align 2 +.L1030: + .word .LANCHOR0 + .word .LANCHOR1+389 + .word .LC95 + .word check_vpc_table + .word .LC96 + .word .LC97 + .word .LC1 + .size ftl_check_vpc, .-ftl_check_vpc + .align 2 + .global ftl_scan_all_data + .syntax unified + .arm + .fpu softvfp + .type ftl_scan_all_data, %function +ftl_scan_all_data: + @ args = 0, pretend = 0, frame = 4 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #24 + mov r5, #0 + ldr r6, .L1040 + mov r1, #0 + ldr r0, .L1040+4 + bl sftl_printk + mov r4, r6 +.L1033: + ldr r3, [r6, #2504] + cmp r5, r3 + bcc .L1039 + sub sp, fp, #28 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1039: + mov r2, #0 + sub r1, fp, #32 + mov r0, r5 + bl log2phys + ubfx r3, r5, #0, #11 + cmp r3, #0 + bne .L1034 + ldr r2, [fp, #-32] + mov r1, r5 + ldr r0, .L1040+8 + bl sftl_printk +.L1034: + ldr r3, [fp, #-32] + cmn r3, #1 + beq .L1036 + str r3, [r4, #3448] + mov r2, #0 + ldr r3, [r4, #3292] + mov r1, #1 + ldr r7, [r4, #3324] + ldr r0, .L1040+12 + str r3, [r4, #3452] + str r5, [r4, #3460] + str r7, [r4, #3456] + str r2, [r4, #3444] + bl FlashReadPages + ldr r3, [r4, #3444] + cmn r3, #1 + cmpne r3, #256 + beq .L1037 + ldr r3, [r7, #8] + cmp r5, r3 + beq .L1036 +.L1037: + ldr r2, [r4, #3452] + ldr r3, [r4, #3456] + ldr r0, .L1040+16 + ldr r1, [r2, #4] + str r1, [sp, #16] + mov r1, r5 + ldr r2, [r2] + str r2, [sp, #12] + ldr r2, [r3, #12] + str r2, [sp, #8] + ldr r2, [r3, #8] + str r2, [sp, #4] + ldr r2, [r3, #4] + str r2, [sp] + ldr r3, [r3] + ldr r2, [r4, #3448] + bl sftl_printk +.L1036: + add r5, r5, #1 + b .L1033 +.L1041: + .align 2 +.L1040: + .word .LANCHOR0 + .word .LC98 + .word .LC99 + .word .LANCHOR0+3444 + .word .LC100 + .size ftl_scan_all_data, .-ftl_scan_all_data + .align 2 + .global FtlGcScanTempBlk + .syntax unified + .arm + .fpu softvfp + .type FtlGcScanTempBlk, %function +FtlGcScanTempBlk: + @ args = 0, pretend = 0, frame = 44 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #44 + mov r4, r0 + ldr r3, .L1072 + str r1, [fp, #-68] + ldrh r6, [r3, #4] + movw r3, #65535 + cmp r6, r3 + beq .L1066 + cmp r6, #0 + bne .L1043 +.L1044: + bl FtlGcPageVarInit + b .L1045 +.L1066: + mov r6, #0 +.L1043: + ldr r3, .L1072+4 + ldr r2, [fp, #-68] + ldrh r3, [r3, #102] + cmp r3, r2 + beq .L1044 +.L1045: + ldr r5, .L1072+4 + mov r9, #0 +.L1046: + ldrh r2, [r4] + mov r3, #0 + strb r3, [r4, #8] + movw r3, #65535 + cmp r2, r3 + beq .L1047 +.L1063: + ldrh r3, [r5, #32] + mov r2, #0 + ldr r0, [r5, #3280] + add ip, r4, #16 + ldrh r8, [r5, #112] + mov r10, r2 + str r3, [fp, #-72] + movw lr, #65535 + ldr r3, [r5, #3172] + str r3, [fp, #-76] + ldrh r3, [r5, #110] + str r3, [fp, #-80] + ldr r3, [r5, #3176] + str r3, [fp, #-84] +.L1048: + ldr r1, [fp, #-72] + uxth r3, r2 + cmp r1, r3 + bhi .L1050 + mov r8, #0 + mov r2, #0 + mov r1, r10 + bl FlashReadPages +.L1051: + uxth r3, r8 + cmp r10, r3 + bhi .L1061 + ldr r3, [fp, #-68] + add r9, r9, #1 + add r6, r6, #1 + uxth r6, r6 + cmp r3, r9 + bls .L1062 +.L1064: + ldrh r3, [r5, #102] + cmp r3, r6 + bhi .L1063 +.L1047: + ldr r3, .L1072 + mvn r2, #0 + strh r6, [r4, #2] @ movhi + mov r1, r6 + mov r0, r4 + strh r2, [r3, #4] @ movhi + mov r2, #0 + strb r2, [r4, #6] + bl ftl_sb_update_avl_pages + b .L1065 +.L1050: + ldrh r3, [ip], #2 + cmp r3, lr + beq .L1049 + mov r1, #20 + orr r3, r6, r3, lsl #10 + mla r1, r1, r10, r0 + str r3, [r1, #4] + ldr r3, [fp, #-80] + mul r3, r3, r10 + add r7, r3, #3 + cmp r3, #0 + movlt r3, r7 + ldr r7, [fp, #-76] + bic r3, r3, #3 + add r3, r7, r3 + str r3, [r1, #8] + mul r3, r8, r10 + add r10, r10, #1 + uxth r10, r10 + add r7, r3, #3 + cmp r3, #0 + movlt r3, r7 + ldr r7, [fp, #-84] + bic r3, r3, #3 + add r3, r7, r3 + str r3, [r1, #12] +.L1049: + add r2, r2, #1 + b .L1048 +.L1061: + mov r3, #20 + ldr r2, [r5, #3280] + mul ip, r3, r8 + ldr r7, [r2, ip] + add r3, r2, ip + ldr r1, [r3, #4] + cmp r7, #0 + str r1, [fp, #-72] + bne .L1052 + ldr r3, [r3, #12] + movw r2, #65535 + ldrh r1, [r3] + cmp r1, r2 + bne .L1053 + ldrh r3, [r4] + ldr r2, [r5, #2324] + lsl r3, r3, #1 + strh r7, [r2, r3] @ movhi +.L1071: + ldrh r0, [r4] + mov r6, #0 + bl INSERT_FREE_LIST + mvn r3, #0 + strh r3, [r4] @ movhi + bl FtlGcPageVarInit + b .L1046 +.L1053: + mov r2, r7 + sub r1, fp, #64 + ldr r0, [r3, #8] + str ip, [fp, #-80] + str r3, [fp, #-76] + bl log2phys + ldr r3, [fp, #-76] + ldr r1, [fp, #-64] + ldr ip, [fp, #-80] + ldr r2, [r3, #12] + cmp r2, r1 + beq .L1055 +.L1059: + ldr r2, [r3, #8] + add r8, r8, #1 + ldr r1, [fp, #-72] + ldr r0, [r3, #12] + bl FtlGcUpdatePage + b .L1051 +.L1055: + str r2, [fp, #-56] + mov r1, #1 + ldr r2, [r5, #3308] + sub r0, fp, #60 + str ip, [fp, #-80] + str r3, [fp, #-76] + str r2, [fp, #-52] + ldr r2, [r5, #3328] + str r2, [fp, #-48] + mov r2, r7 + bl FlashReadPages + ldr r1, [r5, #3280] + ldrh r2, [r5, #58] + ldr ip, [fp, #-80] + ldr r3, [fp, #-76] + add ip, r1, ip + ldr r1, [fp, #-52] + lsl r2, r2, #7 +.L1056: + cmp r7, r2 + beq .L1059 + ldr r0, [ip, #8] + ldr lr, [r0, r7, lsl #2] + ldr r0, [r1, r7, lsl #2] + cmp lr, r0 + beq .L1057 + ldr r2, [fp, #-56] + ldrh r1, [r4] + ldr r0, .L1072+8 + bl sftl_printk +.L1052: + ldrh r3, [r4] + mov r1, #0 + ldr r2, [r5, #2324] + lsl r3, r3, #1 + strh r1, [r2, r3] @ movhi + b .L1071 +.L1057: + add r7, r7, #1 + b .L1056 +.L1062: + ldr r2, .L1072 + movw r1, #65535 + ldrh r3, [r2, #4] + cmp r3, r1 + beq .L1064 + add r3, r3, r9 + strh r3, [r2, #4] @ movhi + ldrh r3, [r5, #102] + cmp r3, r6 + bls .L1064 +.L1065: + mvn r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1073: + .align 2 +.L1072: + .word .LANCHOR2 + .word .LANCHOR0 + .word .LC101 + .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .align 2 + .global FtlReadRefresh + .syntax unified + .arm + .fpu softvfp + .type FtlReadRefresh, %function +FtlReadRefresh: + @ args = 0, pretend = 0, frame = 88 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #88 + ldr r3, .L1087 + ldr r0, [r3, #2716] + mov r4, r3 + cmp r0, #0 + beq .L1075 + ldr r1, [r3, #2720] + ldr r2, [r3, #2504] + cmp r1, r2 + bcs .L1076 + mov r5, #2048 +.L1081: + ldr r0, [r4, #2720] + ldr r3, [r4, #2504] + cmp r0, r3 + bcs .L1078 + mov r2, #0 + sub r1, fp, #108 + bl log2phys + ldr r2, [fp, #-108] + ldr r3, [r4, #2720] + cmn r2, #1 + add r3, r3, #1 + str r3, [r4, #2720] + beq .L1079 + str r3, [fp, #-88] + sub r0, fp, #20 + ldr r3, [r4, #3316] + mov r1, #1 + str r2, [fp, #-100] + mov r2, #0 + str r2, [r0, #-84]! + str r3, [fp, #-96] + sub r3, fp, #84 + str r3, [fp, #-92] + bl FlashReadPages + ldr r3, [fp, #-104] + cmp r3, #256 + bne .L1078 + ldr r0, [fp, #-108] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1078: + mvn r0, #0 +.L1074: + sub sp, fp, #20 + ldmfd sp, {r4, r5, fp, sp, pc} +.L1079: + subs r5, r5, #1 + bne .L1081 + b .L1078 +.L1076: + ldr r2, [r3, #2508] + mov r0, #0 + str r0, [r3, #2716] + str r0, [r3, #2720] + str r2, [r3, #2712] + b .L1074 +.L1075: + ldr r1, [r3, #2508] + ldr r2, [r3, #2712] + add ip, r1, #1048576 + cmp r2, ip + bhi .L1084 + ldr r3, [r3, #2564] + mov ip, #33554432 + lsr r3, r3, #10 + add r2, r2, ip, asr r3 + cmp r1, r2 + bhi .L1084 + ldr r3, .L1087+4 + ldrb r3, [r3, #28] @ zero_extendqisi2 + cmp r3, #0 + bne .L1074 +.L1084: + mov r3, #1 + mov r0, #0 + str r3, [r4, #2716] + str r0, [r4, #2720] + str r1, [r4, #2712] + b .L1074 +.L1088: + .align 2 +.L1087: + .word .LANCHOR0 + .word .LANCHOR0+2268 + .size FtlReadRefresh, .-FtlReadRefresh + .align 2 + .global FtlMapBlkWriteDump_data + .syntax unified + .arm + .fpu softvfp + .type FtlMapBlkWriteDump_data, %function +FtlMapBlkWriteDump_data: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r3, [r0, #36] + mov r6, r0 + cmp r3, #0 + ldmfdeq sp, {r4, r5, r6, fp, sp, pc} + mov r3, #0 + ldrh r5, [r0, #6] + str r3, [r0, #36] + ldr r3, .L1096 + ldr r2, [r0, #24] + sub r5, r5, #1 + uxth r5, r5 + ldr r0, [r3, #3296] + mov r4, r3 + ldr r1, [r3, #3324] + str r0, [r3, #3452] + str r1, [r3, #3456] + ldr r2, [r2, r5, lsl #2] + cmp r2, #0 + str r2, [r3, #3448] + beq .L1091 + mov r2, #1 + ldr r0, .L1096+4 + mov r1, r2 + bl FlashReadPages +.L1092: + ldr r2, [r4, #3452] + mov r1, r5 + mov r0, r6 + bl FtlMapWritePage + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1091: + ldrh r2, [r3, #110] + mov r1, #255 + bl ftl_memset + b .L1092 +.L1097: + .align 2 +.L1096: + .word .LANCHOR0 + .word .LANCHOR0+3444 + .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data + .align 2 + .global FlashTestBlk + .syntax unified + .arm + .fpu softvfp + .type FlashTestBlk, %function +FlashTestBlk: + @ args = 0, pretend = 0, frame = 84 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #84 + uxth r4, r0 + cmp r4, #11 + movls r4, #0 + bls .L1098 + ldr r3, .L1101 + sub r0, fp, #84 + mov r2, #32 + mov r1, #165 + str r0, [fp, #-92] + lsl r4, r4, #10 + ldr r5, [r3, #3316] + str r5, [fp, #-96] + bl memset + ldr r3, .L1101+4 + mov r2, #1 + mov r1, r2 + sub r0, fp, #104 + str r3, [r5] @ unaligned + str r3, [r5, #4] @ unaligned + str r4, [fp, #-100] + bl FlashEraseBlocks + mov r3, #1 + sub r0, fp, #104 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldr r4, [fp, #-104] + mov r2, #1 + mov r1, #0 + sub r0, fp, #104 + adds r4, r4, #0 + movne r4, #1 + rsb r4, r4, #0 + bl FlashEraseBlocks +.L1098: + mov r0, r4 + sub sp, fp, #20 + ldmfd sp, {r4, r5, fp, sp, pc} +.L1102: + .align 2 +.L1101: + .word .LANCHOR0 + .word 1515870810 + .size FlashTestBlk, .-FlashTestBlk + .align 2 + .global FtlBbmTblFlush + .syntax unified + .arm + .fpu softvfp + .type FtlBbmTblFlush, %function +FtlBbmTblFlush: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #4 + mov r5, #0 + ldr r4, .L1112 + mov r1, #0 + ldr r7, .L1112+4 + ldr r0, [r4, #3292] + add r6, r4, #176 + ldr r3, [r4, #3324] + ldrh r2, [r4, #110] + str r0, [r4, #3452] + str r3, [r4, #3456] + bl ftl_memset +.L1104: + ldrh r3, [r4, #54] + cmp r5, r3 + blt .L1105 + ldr r5, [r4, #3456] + mov r2, #16 + mov r1, #255 + ldr r8, .L1112+8 + mov r6, #0 + mov r0, r5 + mov r7, r6 + bl memset + ldr r3, .L1112+12 + strh r3, [r5] @ movhi + ldr r3, [r4, #160] + str r3, [r5, #4] + ldrh r3, [r4, #152] + strh r3, [r5, #2] @ movhi + ldrh r3, [r4, #156] + strh r3, [r5, #8] @ movhi + ldrh r3, [r4, #158] + strh r3, [r5, #10] @ movhi + ldr r3, [r4, #28] + strh r3, [r5, #12] @ movhi +.L1106: + ldr r3, [r4, #3292] + mov r9, #0 + ldrh r2, [r4, #154] + ldrh r1, [r4, #152] + str r3, [r4, #3452] + ldr r3, [r4, #3324] + str r9, [r4, #3444] + str r3, [r4, #3456] + orr r3, r2, r1, lsl #10 + ldrh r0, [r5, #10] + str r3, [r4, #3448] + ldrh r3, [r4, #156] + str r0, [sp] + mov r0, r8 + bl sftl_printk + ldrh r3, [r4, #104] + ldrh r2, [r4, #154] + sub r3, r3, #1 + cmp r2, r3 + blt .L1107 + ldr r3, [r4, #160] + ldrh r2, [r4, #152] + ldr r0, [r4, #3260] + add r3, r3, #1 + strh r9, [r4, #154] @ movhi + str r3, [r4, #160] + str r3, [r5, #4] + ldrh r3, [r4, #156] + strh r2, [r5, #8] @ movhi + strh r2, [r4, #156] @ movhi + mov r2, #1 + strh r3, [r4, #152] @ movhi + mov r1, r2 + lsl r3, r3, #10 + str r3, [r4, #3448] + str r3, [r0, #4] + bl FlashEraseBlocks +.L1107: + mov r3, #1 + ldr r0, .L1112+16 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r4, #154] + add r3, r3, #1 + strh r3, [r4, #154] @ movhi + ldr r3, [r4, #3444] + cmn r3, #1 + bne .L1108 + add r6, r6, #1 + ldr r1, [r4, #3448] + uxth r6, r6 + ldr r0, .L1112+20 + bl sftl_printk + cmp r6, #3 + bls .L1106 + mov r2, r6 + ldr r1, [r4, #3448] + ldr r0, .L1112+24 + bl sftl_printk +.L1110: + b .L1110 +.L1105: + ldrh r2, [r7] + ldr r3, [r4, #3452] + ldr r1, [r6, #4]! + mul r0, r2, r5 + lsl r2, r2, #2 + add r5, r5, #1 + add r0, r3, r0, lsl #2 + bl ftl_memcpy + b .L1104 +.L1111: + mov r7, #1 + b .L1106 +.L1108: + cmp r7, #0 + beq .L1111 + mov r0, #0 + ldmib sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} +.L1113: + .align 2 +.L1112: + .word .LANCHOR0 + .word .LANCHOR0+3380 + .word .LC102 + .word -3887 + .word .LANCHOR0+3444 + .word .LC103 + .word .LC104 + .size FtlBbmTblFlush, .-FtlBbmTblFlush + .align 2 + .global allocate_data_superblock + .syntax unified + .arm + .fpu softvfp + .type allocate_data_superblock, %function +allocate_data_superblock: + @ args = 0, pretend = 0, frame = 12 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #12 + mov r4, r0 + ldr r10, .L1150 +.L1115: + ldr r8, .L1150+4 + ldrh r1, [r8, #-8] + ldrh r2, [r8] + add r2, r2, r1 + ldrh r1, [r10, #40] + cmp r2, r1 + ble .L1116 + movw r2, #2615 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk +.L1116: + ldr r2, .L1150+16 + cmp r4, r2 + movne r1, #0 + bne .L1117 + ldrh r2, [r8] + ldr r1, [r10, #3160] + mul r0, r1, r2 + lsr r1, r2, #1 + add r1, r1, #1 + add r1, r1, r0, lsr #2 + uxth r1, r1 + cmp r1, #0 + subne r1, r1, #1 + uxthne r1, r1 +.L1117: + ldr r0, .L1150+20 + bl List_pop_index_node + ldrh r2, [r8] + mov r7, r0 + uxth r9, r0 + cmp r2, #0 + bne .L1118 + mov r2, #2624 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk +.L1118: + ldrh r2, [r8] + sub r2, r2, #1 + strh r2, [r8] @ movhi + ldrh r2, [r10, #40] + cmp r2, r9 + bls .L1115 + uxth r7, r7 + ldr r2, [r10, #2324] + lsl r6, r7, #1 + ldrh r5, [r2, r6] + cmp r5, #0 + bne .L1115 + strh r9, [r4] @ movhi + mov r0, r4 + bl make_superblock + ldrb r2, [r4, #7] @ zero_extendqisi2 + cmp r2, #0 + bne .L1120 + ldr r2, [r10, #2324] + mvn r1, #0 + mov r0, r7 + strh r1, [r2, r6] @ movhi + bl INSERT_DATA_LIST + ldr r3, .L1150+24 + ldrh r2, [r8] + ldrh r1, [r3] + add r2, r2, r1 + ldrh r1, [r10, #40] + cmp r2, r1 + ble .L1115 + movw r2, #2638 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk + b .L1115 +.L1120: + ldr r3, .L1150+24 + ldrh r2, [r8] + ldrh r1, [r3] + add r2, r2, r1 + ldrh r1, [r10, #40] + cmp r2, r1 + ble .L1122 + movw r2, #2641 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk +.L1122: + ldr r0, [r10, #3260] + mov r1, #20 + ldrh lr, [r10, #32] + add ip, r4, #16 + str r1, [fp, #-44] + mov r2, r0 + mla r3, r1, lr, r0 + mov lr, #0 +.L1123: + cmp r3, r2 + bne .L1125 + cmp r5, #0 + bne .L1126 + movw r2, #2652 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk +.L1126: + ldr r2, .L1150+28 + ldrh r2, [r2] + cmp r2, r9 + bne .L1127 + movw r2, #2654 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk +.L1127: + ldrb r2, [r4, #8] @ zero_extendqisi2 + ldr r1, [r10, #2328] + cmp r2, #0 + ldrh r2, [r1, r6] + bne .L1128 + cmp r2, #0 + ldrhne r0, [r10, #92] + moveq r2, #2 + addne r2, r2, r0 + mov r0, r7 + strh r2, [r1, r6] @ movhi + mov r1, #0 + ldr r2, [r10, #2548] + add r2, r2, #1 + str r2, [r10, #2548] + bl ftl_set_blk_mode +.L1131: + ldr r2, [r10, #2328] + ldr r1, [r10, #2564] + ldr ip, [r10, #2548] + ldrh r2, [r2, r6] + ldrh r0, [r10, #92] + cmp r2, r1 + ldrh r1, [r10, #40] + strhi r2, [r10, #2564] + ldr r2, [r10, #2552] + mla r0, ip, r0, r2 + bl __udivsi3 + ldr r1, [r10, #3340] + str r0, [r10, #2556] + ldr r0, [r10, #3260] + ldr r2, [r1, #16] + ldr ip, .L1150+32 + add r2, r2, #1 + str r2, [r1, #16] + mov r1, #20 + mla r1, r1, r5, r0 + add r2, r0, #4 + add r1, r1, #24 +.L1133: + add r2, r2, #20 + cmp r1, r2 + bne .L1134 + ldrb r1, [r4, #8] @ zero_extendqisi2 + mov r2, r5 + ldr r0, [r10, #3260] + mov r8, #0 + bl FlashEraseBlocks + mov r1, r8 + mov ip, #20 +.L1135: + uxth r2, r8 + cmp r5, r2 + bhi .L1137 + cmp r1, #0 + ble .L1138 + mov r0, r7 + bl update_multiplier_value + bl FtlBbmTblFlush +.L1138: + ldrb r1, [r4, #7] @ zero_extendqisi2 + cmp r1, #0 + bne .L1139 + ldr r2, [r10, #2324] + mvn r1, #0 + strh r1, [r2, r6] @ movhi + b .L1115 +.L1125: + str lr, [r2, #8] + movw r8, #65535 + str lr, [r2, #12] + add r2, r2, #20 + ldrh r1, [ip], #2 + cmp r1, r8 + ldrne r8, [fp, #-44] + lslne r1, r1, #10 + mlane r8, r8, r5, r0 + addne r5, r5, #1 + uxthne r5, r5 + strne r1, [r8, #4] + b .L1123 +.L1128: + add r2, r2, #1 + mov r0, r7 + strh r2, [r1, r6] @ movhi + ldr r2, [r10, #2552] + add r2, r2, #1 + str r2, [r10, #2552] + bl ftl_set_blk_mode.part.6 + b .L1131 +.L1134: + ldr r0, [r2, #-20] + and r0, r0, ip + str r0, [r2, #-20] + b .L1133 +.L1137: + mul r2, ip, r8 + ldr lr, [r10, #3260] + add r0, lr, r2 + ldr r2, [lr, r2] + cmn r2, #1 + bne .L1136 + ldr r0, [r0, #4] + add r1, r1, #1 + str ip, [fp, #-52] + str r2, [fp, #-48] + ubfx r0, r0, #10, #16 + str r1, [fp, #-44] + bl FtlBbmMapBadBlock + ldr r2, [fp, #-48] + add r0, r4, r8, lsl #1 + ldr ip, [fp, #-52] + ldr r1, [fp, #-44] + strh r2, [r0, #16] @ movhi + ldrb r2, [r4, #7] @ zero_extendqisi2 + sub r2, r2, #1 + strb r2, [r4, #7] +.L1136: + add r8, r8, #1 + b .L1135 +.L1139: + ldrh r2, [r10, #102] + strh r9, [r4] @ movhi + smulbb r2, r2, r1 + mov r1, #0 + strh r1, [r4, #2] @ movhi + strb r1, [r4, #6] + ldr r1, [r10, #2540] + uxth r2, r2 + ldr r0, [r10, #2324] + strh r2, [r4, #4] @ movhi + str r1, [r4, #12] + add r1, r1, #1 + str r1, [r10, #2540] + ldrh r1, [r4] + lsl r3, r1, #1 + strh r2, [r0, r3] @ movhi + ldrh r3, [r4, #4] + cmp r3, #0 + beq .L1140 + ldrb r3, [r4, #7] @ zero_extendqisi2 + cmp r3, #0 + bne .L1141 +.L1140: + movw r2, #2707 + ldr r1, .L1150+8 + ldr r0, .L1150+12 + bl sftl_printk +.L1141: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1151: + .align 2 +.L1150: + .word .LANCHOR0 + .word .LANCHOR0+2344 + .word .LANCHOR1+403 + .word .LC1 + .word .LANCHOR0+2444 + .word .LANCHOR0+2340 + .word .LANCHOR0+2336 + .word .LANCHOR0+2588 + .word -1024 + .size allocate_data_superblock, .-allocate_data_superblock + .align 2 + .global FtlGcFreeBadSuperBlk + .syntax unified + .arm + .fpu softvfp + .type FtlGcFreeBadSuperBlk, %function +FtlGcFreeBadSuperBlk: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #8 + uxth r3, r0 + ldr r6, .L1164 + str r3, [fp, #-44] + movw r3, #3206 + ldrh r3, [r6, r3] + cmp r3, #0 + movne r7, #0 + ldrne r10, .L1164+4 + bne .L1154 +.L1153: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1160: + uxtah r3, r6, r7 + ldr r1, [fp, #-44] + mov r8, #0 + ldrb r0, [r3, #60] @ zero_extendqisi2 + bl V2P_block + mov r9, r0 +.L1155: + ldrh r3, [r10] + uxth r4, r8 + cmp r3, r4 + bhi .L1159 + add r7, r7, #1 +.L1154: + ldrh r2, [r6, #32] + uxth r3, r7 + cmp r2, r3 + bhi .L1160 + bl FtlGcReFreshBadBlk + b .L1153 +.L1159: + uxth r3, r8 + ldr r5, .L1164+8 + lsl r2, r3, #1 + ldrh r2, [r5, r2] + cmp r2, r9 + bne .L1156 + mov r1, r9 + ldr r0, .L1164+12 + str r3, [fp, #-48] + bl sftl_printk + mov r0, r9 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldr r3, [fp, #-48] + ldrh r2, [r10] + add r3, r5, r3, lsl #1 +.L1157: + cmp r4, r2 + bcc .L1158 + sub r2, r2, #1 + strh r2, [r10] @ movhi +.L1156: + add r8, r8, #1 + b .L1155 +.L1158: + ldrh r1, [r3, #2]! + add r4, r4, #1 + uxth r4, r4 + strh r1, [r3, #-2] @ movhi + b .L1157 +.L1165: + .align 2 +.L1164: + .word .LANCHOR0 + .word .LANCHOR0+3206 + .word .LANCHOR0+3208 + .word .LC105 + .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk + .align 2 + .global update_vpc_list + .syntax unified + .arm + .fpu softvfp + .type update_vpc_list, %function +update_vpc_list: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r3, .L1176 + uxth r4, r0 + ldr r1, [r3, #2324] + lsl r2, r4, #1 + mov r6, r3 + ldrh r0, [r1, r2] + cmp r0, #0 + bne .L1167 + movw r2, #2588 + ldrh r1, [r3, r2] + cmp r1, r4 + mvneq r3, #0 + strheq r3, [r6, r2] @ movhi + beq .L1169 + movw r2, #2348 + ldrh r2, [r3, r2] + cmp r2, r4 + ldmfdeq sp, {r4, r5, r6, fp, sp, pc} + movw r2, #2396 + ldrh r2, [r3, r2] + cmp r2, r4 + ldmfdeq sp, {r4, r5, r6, fp, sp, pc} + movw r2, #2444 + ldrh r3, [r3, r2] + cmp r3, r4 + ldmfdeq sp, {r4, r5, r6, fp, sp, pc} +.L1169: + ldr r5, .L1176+4 + mov r1, r4 + ldr r0, .L1176+8 + bl List_remove_node + ldrh r3, [r5] + cmp r3, #0 + bne .L1171 + movw r2, #2777 + ldr r1, .L1176+12 + ldr r0, .L1176+16 + bl sftl_printk +.L1171: + ldrh r3, [r5] + mov r0, r4 + sub r3, r3, #1 + strh r3, [r5] @ movhi + bl free_data_superblock + mov r0, r4 + bl FtlGcFreeBadSuperBlk + movw r3, #2344 + ldrh r2, [r5] + ldrh r3, [r6, r3] + add r3, r3, r2 + ldrh r2, [r6, #40] + cmp r3, r2 + ble .L1175 + movw r2, #2780 + ldr r1, .L1176+12 + ldr r0, .L1176+16 + bl sftl_printk +.L1175: + mov r0, #1 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1167: + mov r0, r4 + bl List_update_data_list + mov r0, #0 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1177: + .align 2 +.L1176: + .word .LANCHOR0 + .word .LANCHOR0+2336 + .word .LANCHOR0+2320 + .word .LANCHOR1+428 + .word .LC1 + .size update_vpc_list, .-update_vpc_list + .align 2 + .global decrement_vpc_count + .syntax unified + .arm + .fpu softvfp + .type decrement_vpc_count, %function +decrement_vpc_count: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, fp, ip, lr, pc} + sub fp, ip, #4 + uxth r6, r0 + movw r3, #65535 + cmp r6, r3 + ldr r4, .L1190 + beq .L1179 + ldr r3, [r4, #2324] + lsl r5, r6, #1 + ldrh r2, [r3, r5] + cmp r2, #0 + subne r2, r2, #1 + strhne r2, [r3, r5] @ movhi + bne .L1179 + mov r1, r6 + ldr r0, .L1190+4 + bl sftl_printk + ldr r3, [r4, #2324] + ldrh r5, [r3, r5] + cmp r5, #0 + beq .L1181 +.L1188: + mov r5, #0 +.L1178: + mov r0, r5 + ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} +.L1181: + movw r2, #2795 +.L1189: + ldr r1, .L1190+8 + ldr r0, .L1190+12 + bl sftl_printk + b .L1178 +.L1179: + movw r7, #3430 + movw r3, #65535 + ldrh r0, [r4, r7] + cmp r0, r3 + strheq r6, [r4, r7] @ movhi + beq .L1188 +.L1183: + cmp r6, r0 + beq .L1188 + bl update_vpc_list + ldr r2, [r4, #2316] + adds r5, r0, #0 + ldr r3, [r4, #2320] + movne r5, #1 + ldr r1, [r4, #2324] + strh r6, [r4, r7] @ movhi + sub r3, r3, r2 + asr r3, r3, #3 + uxth r2, r3 + uxth r3, r3 + lsl r2, r2, #1 + cmp r3, r6 + ldrh r2, [r1, r2] + clz r2, r2 + lsr r2, r2, #5 + moveq r2, #0 + cmp r2, #0 + beq .L1178 + movw r2, #2811 + b .L1189 +.L1191: + .align 2 +.L1190: + .word .LANCHOR0 + .word .LC106 + .word .LANCHOR1+444 + .word .LC1 + .size decrement_vpc_count, .-decrement_vpc_count + .align 2 + .global FtlRecoverySuperblock + .syntax unified + .arm + .fpu softvfp + .type FtlRecoverySuperblock, %function +FtlRecoverySuperblock: + @ args = 0, pretend = 0, frame = 44 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #44 + movw r2, #65535 + ldrh r3, [r0] + mov r10, r0 + cmp r3, r2 + beq .L1312 + ldrh r3, [r0, #2] + ldr r5, .L1319 + str r3, [fp, #-64] + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r1, [fp, #-64] + str r3, [fp, #-80] + ldrh r3, [r5, #102] + cmp r3, r1 + mov r3, #0 + strheq r3, [r0, #4] @ movhi + ldrhne r0, [r0, #16] + bne .L1196 +.L1317: + strb r3, [r10, #6] +.L1312: + mov r0, #0 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1197: + uxth r1, r3 + add r1, r10, r1, lsl #1 + ldrh r0, [r1, #16] +.L1196: + cmp r0, r2 + uxth r6, r3 + add r3, r3, #1 + beq .L1197 + mov r1, #1 + bl FtlGetLastWrittenPage + cmn r0, #1 + mov r4, r0 + beq .L1198 + ldrh r3, [r5, #32] + mov r2, #0 + ldr r0, [r5, #3280] + movw r7, #65535 + ldr lr, [r5, #3176] + mov r8, #20 + str r3, [fp, #-56] + ldr r3, [r5, #3172] + ldrh r6, [r5, #112] + str r3, [fp, #-60] + ldrh r3, [r5, #110] + mov r5, r2 + str r3, [fp, #-68] + add r3, r10, #16 + mov ip, r3 + str r3, [fp, #-76] +.L1199: + ldr r1, [fp, #-56] + uxth r3, r2 + cmp r1, r3 + bhi .L1203 + ldr r6, .L1319 + mov r2, #0 + mov r1, r5 + movw r8, #65535 + bl FlashReadPages + ldr r3, [r6, #2544] + uxth r2, r4 + ldr r9, [r6, #3280] + str r2, [fp, #-60] + sub r3, r3, #1 + str r3, [fp, #-56] + mov r7, r9 + mov r3, #0 +.L1204: + uxth r2, r3 + cmp r5, r2 + bhi .L1209 + addeq r3, r4, #1 + uxtheq r3, r3 + streq r3, [fp, #-60] + bne .L1207 +.L1313: + ldr r0, [r9, #4] + ubfx r0, r0, #10, #16 + bl P2V_plane + ldrh r3, [r6, #102] + sub r1, fp, #68 + ldr r2, [fp, #-60] + str r0, [fp, #-68] + ldr r0, [fp, #-80] + cmp r3, r2 + ldrheq r3, [fp, #-60] + strheq r3, [r10, #2] @ movhi + moveq r3, #0 + strbeq r3, [r10, #6] + strheq r3, [r10, #4] @ movhi + ldm r1, {r1, r2, r3} + cmp r3, r2 + cmpeq r1, r0 + moveq r2, r1 + moveq r1, r3 + beq .L1318 + movw r3, #65535 + cmp r8, r3 + bne .L1213 + ldrb r3, [r10, #8] @ zero_extendqisi2 + cmp r3, #0 + bne .L1214 +.L1213: + ldr r3, [r6, #3440] + uxth r7, r4 + uxth r4, r4 + cmn r3, #1 + ldreq r3, [fp, #-56] + streq r3, [r6, #3440] + ldr r3, [fp, #-64] + ldr r6, .L1319 + add r3, r3, #7 + cmp r4, r3 + subgt r4, r7, #7 + ldrle r4, [fp, #-64] + uxthgt r4, r4 +.L1217: + cmp r4, r7 + bhi .L1224 + mov r3, #0 + ldrh r8, [r6, #32] + ldr r0, [r6, #3280] + mov r5, r3 + ldr r1, [fp, #-76] + movw lr, #65535 + mov ip, #20 + b .L1225 +.L1198: + ldr r3, [fp, #-64] + cmp r3, #0 + beq .L1200 + movw r2, #1766 + ldr r1, .L1319+4 + ldr r0, .L1319+8 + bl sftl_printk +.L1200: + ldr r3, [fp, #-80] + cmp r3, #0 + cmpne r6, r3 + beq .L1201 + movw r2, #1767 + ldr r1, .L1319+4 + ldr r0, .L1319+8 + bl sftl_printk +.L1201: + mov r3, #0 + strh r3, [r10, #2] @ movhi + b .L1317 +.L1203: + ldrh r3, [ip], #2 + cmp r3, r7 + beq .L1202 + mla r1, r8, r5, r0 + orr r3, r4, r3, lsl #10 + str r3, [r1, #4] + ldr r3, [fp, #-68] + mul r3, r3, r5 + add r9, r3, #3 + cmp r3, #0 + movlt r3, r9 + ldr r9, [fp, #-60] + bic r3, r3, #3 + add r3, r9, r3 + str r3, [r1, #8] + mul r3, r6, r5 + add r5, r5, #1 + uxth r5, r5 + add r9, r3, #3 + cmp r3, #0 + movlt r3, r9 + bic r3, r3, #3 + add r3, lr, r3 + str r3, [r1, #12] +.L1202: + add r2, r2, #1 + b .L1199 +.L1209: + ldr r2, [r7] + cmp r2, #0 + bne .L1205 + ldr ip, [r7, #12] + ldr r2, [ip, #4] + cmn r2, #1 + beq .L1206 + ldr r1, .L1319 + mov r0, r2 + str ip, [fp, #-68] + ldr r1, [r1, #2544] + bl ftl_cmp_data_ver + ldr ip, [fp, #-68] + cmp r0, #0 + ldrne r1, .L1319 + addne r2, r2, #1 + strne r2, [r1, #2544] +.L1206: + ldr r2, [ip] + cmn r2, #1 + bne .L1208 +.L1207: + uxth r2, r4 + uxth r3, r3 + str r2, [fp, #-60] + mov r2, #20 + mla r9, r2, r3, r9 + b .L1313 +.L1205: + ldr r8, [fp, #-60] +.L1208: + add r3, r3, #1 + add r7, r7, #20 + b .L1204 +.L1219: + ldrh r2, [r1], #2 + add r3, r3, #1 + cmp r2, lr + mlane r9, ip, r5, r0 + addne r5, r5, #1 + orrne r2, r4, r2, lsl #10 + uxthne r5, r5 + strne r2, [r9, #4] +.L1225: + uxth r2, r3 + cmp r8, r2 + bhi .L1219 + mov r1, r5 + mov r2, #0 + bl FlashReadPages + ldr r3, [r6, #3280] + mov r2, #20 + movw r1, #65535 + mla r5, r2, r5, r3 +.L1220: + cmp r5, r3 + addeq r4, r4, #1 + uxtheq r4, r4 + beq .L1217 +.L1223: + ldr r2, [r3] + cmp r2, #0 + bne .L1214 + ldr r2, [r3, #12] + ldrh r0, [r2] + cmp r0, r1 + beq .L1222 + ldr r2, [r2, #4] + cmn r2, #1 + strne r2, [r6, #3440] +.L1222: + add r3, r3, #20 + b .L1220 +.L1224: + mvn r3, #0 + str r3, [r6, #3440] +.L1214: + ldr r1, .L1319 + mov r2, #1 + ldr r8, [fp, #-64] + movw r3, #3512 + mov r4, r1 + strh r2, [r1, r3] @ movhi +.L1226: + ldrh ip, [r4, #32] + mov r3, #0 + ldr r0, [r4, #3280] + mov r9, r3 + ldr r1, [fp, #-76] + movw lr, #65535 + mov r5, #20 +.L1227: + uxth r2, r3 + cmp ip, r2 + bhi .L1229 + mov r2, #0 + mov r1, r9 + bl FlashReadPages + mov r3, #0 +.L1316: + str r3, [fp, #-72] + ldrh r3, [fp, #-72] + cmp r9, r3 + bhi .L1256 + add r8, r8, #1 + ldrh r3, [r4, #102] + uxth r8, r8 + cmp r3, r8 + bne .L1226 + ldrh r2, [r4, #32] + movw r0, #65535 + mov r3, #0 + strh r8, [r10, #2] @ movhi + strh r3, [r10, #4] @ movhi +.L1257: + uxth r1, r3 + cmp r1, r2 + bcs .L1312 + ldr r1, [fp, #-76] + ldrh ip, [r1], #2 + cmp ip, r0 + str r1, [fp, #-76] + add r1, r3, #1 + bne .L1317 + mov r3, r1 + b .L1257 +.L1229: + ldrh r2, [r1], #2 + add r3, r3, #1 + cmp r2, lr + mlane r6, r5, r9, r0 + orrne r2, r8, r2, lsl #10 + addne r9, r9, #1 + uxthne r9, r9 + strne r2, [r6, #4] + b .L1227 +.L1256: + ldr r3, [fp, #-72] + mov r6, #20 + ldr r2, [r4, #3280] + mul r6, r6, r3 + str r2, [fp, #-84] + add r7, r2, r6 + ldr r5, [r7, #4] + ubfx r0, r5, #10, #16 + str r5, [fp, #-44] + bl P2V_plane + ldr r3, [fp, #-64] + cmp r8, r3 + bcc .L1231 + ldr r2, [fp, #-80] + moveq r3, #1 + movne r3, #0 + cmp r2, r0 + movls r3, #0 + andhi r3, r3, #1 + cmp r3, #0 + bne .L1231 + ldr r3, [fp, #-60] + ldr r2, [fp, #-68] + cmp r8, r3 + cmpeq r2, r0 + beq .L1232 + ldr r2, [fp, #-84] + ldr r3, [r2, r6] + cmn r3, #1 + beq .L1233 + ldr r7, [r7, #12] + movw r3, #61589 + ldrh r2, [r7] + cmp r2, r3 + ldrhne r0, [r10] + bne .L1314 + ldr r3, [r7, #4] + cmn r3, #1 + str r3, [fp, #-56] + beq .L1235 + mov r0, r3 + ldr r1, [r4, #2544] + bl ftl_cmp_data_ver + cmp r0, #0 + ldrne r3, [fp, #-56] + addne r3, r3, #1 + strne r3, [r4, #2544] +.L1235: + ldrh r2, [r7] + movw r3, #61589 + cmp r2, r3 + beq .L1236 + movw r2, #1918 + ldr r1, .L1319+4 + ldr r0, .L1319+8 + bl sftl_printk +.L1236: + ldr r5, [r7, #8] + sub r1, fp, #48 + ldr r3, [r7, #12] + mov r2, #0 + mov r0, r5 + str r3, [fp, #-52] + bl log2phys + ldr r1, [r4, #3440] + cmn r1, #1 + beq .L1237 + ldr r0, [fp, #-56] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1237 + ldr r2, [fp, #-52] + cmn r2, #1 + beq .L1238 + ldr r0, [r4, #3280] + mov r1, #1 + add r0, r0, r6 + str r2, [r0, #4] + mov r2, #0 + ldr r7, [r0, #12] + bl FlashReadPages + ldr r2, [r4, #3280] + ldr r1, [r2, r6] + add r3, r2, r6 + cmn r1, #1 + bne .L1239 +.L1240: + mvn r3, #0 + str r3, [fp, #-52] +.L1247: + ldr r6, [fp, #-52] + cmn r6, #1 + beq .L1231 +.L1260: + ubfx r0, r6, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r4, #40] + mov r5, r0 + cmp r3, r0 + bhi .L1252 + movw r2, #2019 + ldr r1, .L1319+4 + ldr r0, .L1319+8 + bl sftl_printk +.L1252: + ldr r3, .L1319 + ldr r2, [r3, #2324] + lsl r3, r5, #1 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L1253 + mov r0, r5 +.L1314: + bl decrement_vpc_count + b .L1231 +.L1238: + ldr r3, [fp, #-44] + ldr r2, [fp, #-48] + cmp r2, r3 + bne .L1231 + mov r2, #1 + sub r1, fp, #52 + mov r0, r5 + bl log2phys +.L1231: + ldr r3, [fp, #-72] + add r3, r3, #1 + b .L1316 +.L1239: + ldr r1, [r7, #8] + cmp r5, r1 + bne .L1240 + ldr r1, [r7, #4] + ldr r0, [r4, #3440] + str r1, [fp, #-84] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1240 + ldr r1, [fp, #-48] + ldr r0, [fp, #-44] + cmp r1, r0 + bne .L1242 +.L1245: + ldr r1, [fp, #-52] + mov r0, r5 + bl FtlReUsePrevPpa + b .L1240 +.L1242: + ldr r0, [fp, #-52] + cmp r1, r0 + beq .L1240 + cmn r1, #1 + streq r1, [r2, r6] + beq .L1244 + str r1, [r3, #4] + mov r2, #0 + mov r1, #1 + mov r0, r3 + ldr r7, [r3, #12] + bl FlashReadPages +.L1244: + ldr r2, [r4, #3280] + ldr r2, [r2, r6] + cmn r2, #1 + beq .L1245 + ldr r3, [r7, #4] + ldr r0, [r4, #3440] + mov r1, r3 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1245 + mov r1, r3 + ldr r0, [fp, #-84] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1240 + b .L1245 +.L1237: + ldr r3, [fp, #-44] + ldr r2, [fp, #-48] + cmp r2, r3 + beq .L1247 + mov r2, #1 + sub r1, fp, #44 + mov r0, r5 + bl log2phys + ldr r6, [fp, #-48] + cmn r6, #1 + beq .L1247 + ldr r3, [fp, #-52] + cmp r6, r3 + beq .L1260 + ubfx r0, r6, #10, #16 + bl P2V_block_in_plane + ldr r3, .L1319+12 + ldrh r2, [r3] + cmp r2, r0 + beq .L1251 + ldrh r2, [r3, #48] + cmp r2, r0 + beq .L1251 + ldrh r3, [r3, #96] + cmp r3, r0 + bne .L1247 +.L1251: + ldr r0, [r4, #3280] + mov r2, #0 + mov r1, #1 + str r6, [r0, #4] + ldr r7, [r0, #12] + bl FlashReadPages + ldr r3, [r4, #3280] + ldr r3, [r3] + cmn r3, #1 + beq .L1247 + ldr r1, [r7, #4] + ldr r0, [fp, #-56] + bl ftl_cmp_data_ver + cmp r0, #0 + bne .L1247 + mov r2, #1 + sub r1, fp, #48 + mov r0, r5 + bl log2phys + b .L1247 +.L1253: + mov r1, r5 + ldr r0, .L1319+16 + bl sftl_printk + b .L1231 +.L1233: + ldr r3, [r4, #3516] + cmp r3, #31 + addls r2, r4, r3, lsl #2 + addls r3, r3, #1 + strls r3, [r4, #3516] + strls r5, [r2, #3520] + ldrh r0, [r10] + bl decrement_vpc_count + ldr r3, [r4, #3440] + cmn r3, #1 + ldreq r3, [fp, #-56] + beq .L1315 + ldr r2, [fp, #-56] + cmp r2, r3 + bcs .L1231 + mov r3, r2 +.L1315: + str r3, [r4, #3440] + b .L1231 +.L1232: + ldrb r3, [fp, #-68] @ zero_extendqisi2 + ldr r2, [fp, #-68] + ldr r1, [fp, #-60] + strb r3, [r10, #6] + ldrh r3, [fp, #-60] + strh r3, [r10, #2] @ movhi +.L1318: + mov r0, r10 + bl ftl_sb_update_avl_pages + b .L1312 +.L1320: + .align 2 +.L1319: + .word .LANCHOR0 + .word .LANCHOR1+464 + .word .LC1 + .word .LANCHOR0+2348 + .word .LC107 + .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .align 2 + .global FtlWriteDump_data + .syntax unified + .arm + .fpu softvfp + .type FtlWriteDump_data, %function +FtlWriteDump_data: + @ args = 0, pretend = 0, frame = 28 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #28 + ldr r6, .L1339 + ldr r4, .L1339+4 + ldrh r2, [r6, #4] + cmp r2, #0 + beq .L1322 + ldrb r3, [r4, #2356] @ zero_extendqisi2 + cmp r3, #0 + bne .L1322 + ldrb r1, [r4, #2355] @ zero_extendqisi2 + ldrh r3, [r4, #102] + mul r3, r3, r1 + cmp r2, r3 + beq .L1322 + ldrb r8, [r4, #2358] @ zero_extendqisi2 + cmp r8, #0 + bne .L1321 + ldr r7, [r4, #2504] + mov r2, r8 + sub r1, fp, #64 + ldrh r9, [r4, #32] + sub r7, r7, #1 + mov r0, r7 + bl log2phys + ldr r3, [fp, #-64] + ldr r5, [r4, #3324] + ldr r0, [r4, #3292] + cmn r3, #1 + str r3, [fp, #-56] + str r7, [fp, #-44] + str r0, [fp, #-52] + str r5, [fp, #-48] + str r8, [r5, #4] + beq .L1324 + mov r2, r8 + mov r1, #1 + sub r0, fp, #60 + bl FlashReadPages +.L1325: + ldr ip, .L1339 + mov r8, #0 + ldr r3, .L1339+8 + lsl r9, r9, #2 + mov r10, r8 + strh r3, [r5] @ movhi +.L1326: + cmp r9, r8 + bne .L1330 +.L1327: + mov r3, #1 +.L1338: + strb r3, [r4, #2358] +.L1321: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1324: + ldrh r2, [r4, #110] + mov r1, #255 + bl ftl_memset + b .L1325 +.L1330: + ldrh r3, [r6, #4] + cmp r3, #0 + beq .L1327 + ldr r3, [fp, #-56] + mov r0, ip + str r7, [r5, #8] + add r8, r8, #1 + str ip, [fp, #-68] + str r3, [r5, #12] + ldrh r3, [r6] + strh r3, [r5, #2] @ movhi + bl get_new_active_ppa + ldr r3, [r4, #2544] + mov r1, #1 + str r0, [fp, #-56] + sub r0, fp, #60 + str r3, [r5, #4] + add r3, r3, #1 + cmn r3, #1 + moveq r3, r10 + str r3, [r4, #2544] + mov r3, #0 + mov r2, r3 + bl FlashProgPages + ldrh r0, [r6] + bl decrement_vpc_count + ldr ip, [fp, #-68] + b .L1326 +.L1322: + mov r3, #0 + b .L1338 +.L1340: + .align 2 +.L1339: + .word .LANCHOR0+2348 + .word .LANCHOR0 + .word -3947 + .size FtlWriteDump_data, .-FtlWriteDump_data + .align 2 + .global l2p_flush + .syntax unified + .arm + .fpu softvfp + .type l2p_flush, %function +l2p_flush: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r5, .L1345 + mov r4, #0 + mov r6, #12 + bl FtlWriteDump_data +.L1342: + ldrh r2, [r5, #138] + uxth r3, r4 + cmp r2, r3 + bhi .L1344 + mov r0, #0 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1344: + ldr r3, [r5, #2492] + uxth r0, r4 + mla r3, r6, r0, r3 + ldr r3, [r3, #4] + cmp r3, #0 + bge .L1343 + bl flush_l2p_region +.L1343: + add r4, r4, #1 + b .L1342 +.L1346: + .align 2 +.L1345: + .word .LANCHOR0 + .size l2p_flush, .-l2p_flush + .align 2 + .global FtlSuperblockPowerLostFix + .syntax unified + .arm + .fpu softvfp + .type FtlSuperblockPowerLostFix, %function +FtlSuperblockPowerLostFix: + @ args = 0, pretend = 0, frame = 20 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #20 + mvn r3, #0 + str r3, [fp, #-36] + mov r6, #0 + ldr r3, .L1360 + movw r1, #61589 + mov r4, r0 + ldr r2, [r3, #3292] + mov r8, r3 + ldr r5, [r3, #3324] + str r2, [fp, #-44] + mvn r2, #2 + str r5, [fp, #-40] + str r2, [r5, #8] + mvn r2, #1 + str r2, [r5, #12] + ldrh r2, [r0] + strh r6, [r5] @ movhi + strh r2, [r5, #2] @ movhi + ldr r2, [r3, #3292] + str r1, [r2] + ldr r1, .L1360+4 + ldr r2, [r3, #3292] + str r1, [r2, #4] + ldrh r2, [r0, #4] + tst r2, #1 + moveq r7, #6 + movne r7, #7 +.L1353: + ldrh r3, [r4, #4] + cmp r3, #0 + bne .L1349 +.L1350: + ldrh r3, [r4] + ldr r1, [r8, #2324] + ldrh r0, [r4, #4] + lsl r3, r3, #1 + ldrh r2, [r1, r3] + sub r2, r2, r0 + strh r2, [r1, r3] @ movhi + ldrh r3, [r8, #102] + strh r3, [r4, #2] @ movhi + mov r3, #0 + strb r3, [r4, #6] + strh r3, [r4, #4] @ movhi + sub sp, fp, #32 + ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} +.L1349: + mov r0, r4 + bl get_new_active_ppa + cmn r0, #1 + str r0, [fp, #-48] + beq .L1350 + ldr r3, [r8, #2544] + mov r1, #1 + sub r0, fp, #52 + str r3, [r5, #4] + add r3, r3, #1 + cmn r3, #1 + moveq r3, r6 + str r3, [r8, #2544] + mov r3, #0 + mov r2, r3 + bl FlashProgPages + ldrh r0, [r4] + bl decrement_vpc_count + subs r7, r7, #1 + bne .L1353 + b .L1350 +.L1361: + .align 2 +.L1360: + .word .LANCHOR0 + .word 305419896 + .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix + .align 2 + .global FtlVendorPartWrite + .syntax unified + .arm + .fpu softvfp + .type FtlVendorPartWrite, %function +FtlVendorPartWrite: + @ args = 0, pretend = 0, frame = 100 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #100 + mov r7, r0 + ldr r4, .L1371 + mov r5, r1 + str r2, [fp, #-128] + add r2, r0, r1 + ldrh r3, [r4, #96] + cmp r2, r3 + mvnhi r8, #0 + bhi .L1362 + ldrh r6, [r4, #108] + mov r8, #0 + lsr r6, r0, r6 + lsl r10, r6, #2 +.L1364: + cmp r5, #0 + bne .L1369 +.L1362: + mov r0, r8 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1369: + ldr r3, [r4, #3364] + mov r0, r7 + ldrh r2, [r4, #58] + ldr ip, [r3, r10] + mov r1, r2 + str r2, [fp, #-136] + str ip, [fp, #-140] + bl __umodsi3 + ldr r2, [fp, #-136] + ldr ip, [fp, #-140] + str r0, [fp, #-132] + sub r3, r2, r0 + uxth r9, r3 + cmp r5, r9 + uxthcc r9, r5 + cmp ip, #0 + cmpne r9, r2 + movne r1, #1 + moveq r1, #0 + beq .L1366 + ldr r2, [r4, #3300] + sub r0, fp, #124 + str ip, [fp, #-120] + str r2, [fp, #-116] + sub r2, fp, #104 + str r2, [fp, #-112] + mov r2, #1 + mov r1, r2 + bl FlashReadPages +.L1367: + ldr r3, [fp, #-132] + lsl ip, r9, #9 + ldr r0, [r4, #3300] + sub r5, r5, r9 + mov r2, ip + ldr r1, [fp, #-128] + str ip, [fp, #-136] + add r7, r7, r9 + add r10, r10, #4 + add r0, r0, r3, lsl #9 + bl ftl_memcpy + mov r1, r6 + ldr r2, [r4, #3300] + ldr r0, .L1371+4 + add r6, r6, #1 + bl FtlMapWritePage + ldr r3, [fp, #-128] + cmn r0, #1 + ldr ip, [fp, #-136] + mvneq r8, #0 + add r3, r3, ip + str r3, [fp, #-128] + b .L1364 +.L1366: + ldrh r2, [r4, #110] + ldr r0, [r4, #3300] + bl ftl_memset + b .L1367 +.L1372: + .align 2 +.L1371: + .word .LANCHOR0 + .word .LANCHOR0+3468 + .size FtlVendorPartWrite, .-FtlVendorPartWrite + .align 2 + .global Ftl_save_ext_data + .syntax unified + .arm + .fpu softvfp + .type Ftl_save_ext_data, %function +Ftl_save_ext_data: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + ldr r3, .L1375 + ldr r2, .L1375+4 + ldr r1, [r3, #2636] + cmp r1, r2 + ldmfdne sp, {fp, sp, pc} + ldr r2, .L1375+8 + mov r1, #1 + mov r0, #0 + str r2, [r3, #2640] + ldr r2, [r3, #2532] + str r2, [r3, #2724] + ldr r2, [r3, #2536] + str r2, [r3, #2728] + ldr r2, [r3, #2528] + str r2, [r3, #2644] + ldr r2, [r3, #2516] + str r2, [r3, #2648] + ldr r2, [r3, #2508] + str r2, [r3, #2652] + ldr r2, [r3, #2524] + str r2, [r3, #2656] + ldr r2, [r3, #2552] + str r2, [r3, #2664] + ldr r2, [r3, #2560] + str r2, [r3, #2668] + ldr r2, [r3, #2512] + str r2, [r3, #2672] + ldr r2, [r3, #2520] + str r2, [r3, #2676] + ldr r2, [r3, #2564] + str r2, [r3, #2680] + ldr r2, [r3, #2568] + str r2, [r3, #2684] + ldr r2, .L1375+12 + bl FtlVendorPartWrite + ldmfd sp, {fp, sp, pc} +.L1376: + .align 2 +.L1375: + .word .LANCHOR0 + .word 1179929683 + .word 1342177352 + .word .LANCHOR0+2636 + .size Ftl_save_ext_data, .-Ftl_save_ext_data + .align 2 + .global FtlEctTblFlush + .syntax unified + .arm + .fpu softvfp + .type FtlEctTblFlush, %function +FtlEctTblFlush: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + ldr r2, .L1382 + ldrh r3, [r2] + cmp r3, #31 + addls r3, r3, #1 + movhi r2, #32 + strhls r3, [r2] @ movhi + movls r2, #1 + cmp r0, #0 + ldr r3, .L1382+4 + bne .L1379 + ldr r1, [r3, #3340] + ldr r0, [r1, #20] + ldr r1, [r1, #16] + add r2, r2, r0 + cmp r1, r2 + bcc .L1380 +.L1379: + ldr r2, [r3, #3340] + mov r0, #64 + ldr r1, [r2, #16] + str r1, [r2, #20] + ldr r1, .L1382+8 + str r1, [r2] + movw r1, #3332 + ldrh r1, [r3, r1] + ldr r2, [r3, #3340] + lsl r3, r1, #9 + str r3, [r2, #12] + ldr r3, [r2, #8] + add r3, r3, #1 + str r3, [r2, #8] + mov r3, #0 + str r3, [r2, #4] + bl FtlVendorPartWrite + bl Ftl_save_ext_data +.L1380: + mov r0, #0 + ldmfd sp, {fp, sp, pc} +.L1383: + .align 2 +.L1382: + .word .LANCHOR0+3648 + .word .LANCHOR0 + .word 1112818501 + .size FtlEctTblFlush, .-FtlEctTblFlush + .align 2 + .global FtlVendorPartRead + .syntax unified + .arm + .fpu softvfp + .type FtlVendorPartRead, %function +FtlVendorPartRead: + @ args = 0, pretend = 0, frame = 96 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #96 + mov r9, r2 + ldr r3, .L1394 + mov r6, r1 + add r1, r0, r1 + mov r7, r0 + ldrh r2, [r3, #96] + mov r10, r3 + cmp r1, r2 + mvnhi r8, #0 + bhi .L1384 + ldrh r5, [r3, #108] + mov r8, #0 + lsr r5, r0, r5 + lsl r3, r5, #2 + str r3, [fp, #-128] +.L1386: + cmp r6, #0 + bne .L1392 +.L1384: + mov r0, r8 + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1392: + ldr r3, [fp, #-128] + mov r0, r7 + ldr r2, [r10, #3364] + ldrh r4, [r10, #58] + ldr ip, [r2, r3] + mov r1, r4 + str ip, [fp, #-136] + bl __umodsi3 + sub r4, r4, r0 + ldr ip, [fp, #-136] + uxth r4, r4 + str r0, [fp, #-132] + cmp r6, r4 + uxthcc r4, r6 + cmp ip, #0 + lsl r3, r4, #9 + str r3, [fp, #-136] + beq .L1388 + ldr r2, [r10, #3300] + sub r0, fp, #124 + str ip, [fp, #-120] + str ip, [fp, #-136] + str r2, [fp, #-116] + sub r2, fp, #104 + str r2, [fp, #-112] + mov r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [fp, #-124] + ldr ip, [fp, #-136] + cmn r2, #1 + ldr r2, [r10, #3444] + mvneq r8, #0 + cmp r2, #256 + bne .L1390 + mov r2, ip + mov r1, r5 + ldr r0, .L1394+4 + bl sftl_printk + ldr r2, [r10, #3300] + mov r1, r5 + ldr r0, .L1394+8 + bl FtlMapWritePage +.L1390: + ldr r1, [r10, #3300] + lsl r2, r4, #9 + ldr r3, [fp, #-132] + mov r0, r9 + add r1, r1, r3, lsl #9 + bl ftl_memcpy +.L1391: + ldr r3, [fp, #-128] + add r5, r5, #1 + sub r6, r6, r4 + add r7, r7, r4 + add r9, r9, r4, lsl #9 + add r3, r3, #4 + str r3, [fp, #-128] + b .L1386 +.L1388: + lsl r2, r4, #9 + mov r1, ip + mov r0, r9 + bl ftl_memset + b .L1391 +.L1395: + .align 2 +.L1394: + .word .LANCHOR0 + .word .LC108 + .word .LANCHOR0+3468 + .size FtlVendorPartRead, .-FtlVendorPartRead + .align 2 + .global FtlLoadEctTbl + .syntax unified + .arm + .fpu softvfp + .type FtlLoadEctTbl, %function +FtlLoadEctTbl: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1398 + movw r5, #3332 + mov r0, #64 + ldr r2, [r4, #3340] + ldrh r1, [r4, r5] + bl FtlVendorPartRead + ldr r3, [r4, #3340] + ldr r2, [r3] + ldr r3, .L1398+4 + cmp r2, r3 + beq .L1397 + ldr r1, .L1398+8 + ldr r0, .L1398+12 + bl sftl_printk + ldrh r2, [r4, r5] + mov r1, #0 + ldr r0, [r4, #3340] + lsl r2, r2, #9 + bl ftl_memset +.L1397: + mov r0, #0 + ldmfd sp, {r4, r5, fp, sp, pc} +.L1399: + .align 2 +.L1398: + .word .LANCHOR0 + .word 1112818501 + .word .LC109 + .word .LC71 + .size FtlLoadEctTbl, .-FtlLoadEctTbl + .align 2 + .global Ftl_load_ext_data + .syntax unified + .arm + .fpu softvfp + .type Ftl_load_ext_data, %function +Ftl_load_ext_data: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1403 + mov r1, #1 + mov r0, #0 + ldr r2, .L1403+4 + bl FtlVendorPartRead + ldr r5, .L1403+8 + ldr r3, [r4, #2636] + cmp r3, r5 + beq .L1401 + mov r1, #512 + ldr r0, .L1403+4 + bl __memzero + str r5, [r4, #2636] +.L1401: + ldr r3, [r4, #2636] + cmp r3, r5 + bne .L1402 + ldr r3, [r4, #2724] + str r3, [r4, #2532] + ldr r3, [r4, #2728] + str r3, [r4, #2536] + ldr r3, [r4, #2644] + str r3, [r4, #2528] + ldr r3, [r4, #2648] + str r3, [r4, #2516] + ldr r3, [r4, #2652] + str r3, [r4, #2508] + ldr r3, [r4, #2656] + str r3, [r4, #2524] + ldr r3, [r4, #2664] + str r3, [r4, #2552] + ldr r3, [r4, #2668] + str r3, [r4, #2560] + ldr r3, [r4, #2672] + str r3, [r4, #2512] + ldr r3, [r4, #2676] + str r3, [r4, #2520] + ldr r3, [r4, #2680] + str r3, [r4, #2564] + ldr r3, [r4, #2684] + str r3, [r4, #2568] +.L1402: + ldrh r2, [r4, #92] + ldr r3, [r4, #2552] + ldr r0, [r4, #2548] + ldrh r1, [r4, #40] + mla r0, r0, r2, r3 + bl __udivsi3 + str r0, [r4, #2556] + ldmfd sp, {r4, r5, fp, sp, pc} +.L1404: + .align 2 +.L1403: + .word .LANCHOR0 + .word .LANCHOR0+2636 + .word 1179929683 + .size Ftl_load_ext_data, .-Ftl_load_ext_data + .align 2 + .global FtlVpcTblFlush + .syntax unified + .arm + .fpu softvfp + .type FtlVpcTblFlush, %function +FtlVpcTblFlush: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1414 + mov r5, #0 + mov r1, #255 + ldr r10, .L1414+4 + ldr r3, [r4, #3292] + add r6, r4, #2576 + ldr r7, [r4, #3324] + sub r8, r6, #308 + add r9, r6, #868 + str r3, [r4, #3452] + ldrh r3, [r6] + str r7, [r4, #3456] + str r5, [r7, #12] + strh r3, [r7, #2] @ movhi + ldr r3, .L1414+8 + strh r3, [r7] @ movhi + ldr r3, [r4, #2584] + str r5, [r7, #8] + ldrh r2, [r6, #-226] + str r3, [r7, #4] + ldr r3, .L1414+12 + str r3, [r4, #2268] + ldr r3, .L1414+16 + str r3, [r4, #2272] + ldrh r3, [r6, #6] + strh r3, [r8, #8] @ movhi + ldrh r3, [r4, #54] + strb r3, [r4, #2278] + movw r3, #2348 + ldrh r3, [r4, r3] + strh r3, [r8, #14] @ movhi + ldrb r3, [r4, #2354] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + ldrh r2, [r6, #-178] + strh r3, [r8, #16] @ movhi + ldrb r3, [r4, #2356] @ zero_extendqisi2 + strb r3, [r4, #2279] + movw r3, #2396 + ldrh r3, [r4, r3] + strh r3, [r8, #18] @ movhi + ldrb r3, [r4, #2402] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + strh r3, [r8, #20] @ movhi + ldrb r3, [r4, #2404] @ zero_extendqisi2 + strb r3, [r4, #2280] + movw r3, #2444 + ldrh r3, [r4, r3] + strh r3, [r8, #22] @ movhi + ldrh r2, [r6, #-130] + ldrb r3, [r4, #2450] @ zero_extendqisi2 + ldr r0, [r4, #3452] + orr r3, r3, r2, lsl #6 + ldrh r2, [r4, #110] + strh r3, [r8, #24] @ movhi + ldrb r3, [r4, #2452] @ zero_extendqisi2 + strb r3, [r4, #2281] + ldr r3, [r4, #2548] + str r3, [r4, #2300] + ldr r3, [r4, #2540] + str r3, [r4, #2308] + ldr r3, [r4, #2544] + str r3, [r4, #2304] + bl ftl_memset + mov r1, r8 + mov r2, #48 + ldr r0, [r4, #3452] + movw r8, #65535 + bl ftl_memcpy + ldrh r2, [r4, #40] + ldr r0, [r4, #3452] + ldr r1, [r4, #2324] + lsl r2, r2, #1 + add r0, r0, #48 + bl ftl_memcpy + ldrh r0, [r4, #40] + ldr r3, [r4, #3452] + ldr r1, [r4, #24] + lsr r2, r0, #3 + add r0, r0, #24 + lsl r0, r0, #1 + add r2, r2, #4 + bic r0, r0, #3 + add r0, r3, r0 + bl ftl_memcpy + mov r0, r5 + bl FtlUpdateVaildLpn +.L1406: + ldr r3, [r4, #3292] + ldrh r1, [r6, #2] + ldrh r2, [r6] + str r3, [r4, #3452] + ldr r3, [r4, #3324] + str r3, [r4, #3456] + orr r3, r1, r2, lsl #10 + str r3, [r4, #3448] + ldrh r3, [r4, #104] + sub r3, r3, #1 + cmp r1, r3 + blt .L1407 + mov r3, #0 + ldrh r8, [r6, #4] + strh r3, [r6, #2] @ movhi + strh r2, [r6, #4] @ movhi + bl FtlFreeSysBlkQueueOut + ldr r3, [r4, #2540] + strh r0, [r6] @ movhi + add r2, r3, #1 + str r3, [r4, #2584] + str r2, [r4, #2540] + lsl r2, r0, #10 + str r2, [r4, #3448] + str r3, [r7, #4] + strh r0, [r7, #2] @ movhi +.L1407: + mov r3, #1 + mov r0, r9 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r6, #2] + ldr r2, [r4, #3444] + add r3, r3, #1 + uxth r3, r3 + cmn r2, #1 + strh r3, [r6, #2] @ movhi + bne .L1408 + cmp r3, #1 + bne .L1409 + movw r2, #1135 + mov r1, r10 + ldr r0, .L1414+20 + bl sftl_printk +.L1409: + ldrh r3, [r6, #2] + add r5, r5, #1 + uxth r5, r5 + cmp r3, #1 + ldrheq r3, [r4, #104] + subeq r3, r3, #1 + strheq r3, [r6, #2] @ movhi + cmp r5, #3 + bls .L1406 + mov r2, r5 + ldr r1, [r4, #3448] + ldr r0, .L1414+24 + bl sftl_printk +.L1412: + b .L1412 +.L1408: + cmp r2, #256 + cmpne r3, #1 + beq .L1406 + movw r3, #65535 + cmp r8, r3 + beq .L1413 + mov r1, #1 + mov r0, r8 + bl FtlFreeSysBlkQueueIn +.L1413: + mov r0, #0 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1415: + .align 2 +.L1414: + .word .LANCHOR0 + .word .LANCHOR1+486 + .word -3932 + .word 1179929683 + .word 1342177352 + .word .LC1 + .word .LC110 + .size FtlVpcTblFlush, .-FtlVpcTblFlush + .align 2 + .global FtlSysFlush + .syntax unified + .arm + .fpu softvfp + .type FtlSysFlush, %function +FtlSysFlush: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + bl l2p_flush + mov r0, #1 + bl FtlEctTblFlush + bl FtlVpcTblFlush + mov r0, #0 + ldmfd sp, {fp, sp, pc} + .size FtlSysFlush, .-FtlSysFlush + .align 2 + .global sftl_deinit + .syntax unified + .arm + .fpu softvfp + .type sftl_deinit, %function +sftl_deinit: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + ldr r3, .L1419 + ldr r3, [r3] + cmp r3, #1 + bne .L1418 + bl FtlSysFlush +.L1418: + mov r0, #0 + ldmfd sp, {fp, sp, pc} +.L1420: + .align 2 +.L1419: + .word .LANCHOR2 + .size sftl_deinit, .-sftl_deinit + .align 2 + .global FtlDiscard + .syntax unified + .arm + .fpu softvfp + .type FtlDiscard, %function +FtlDiscard: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #8 + add r2, r0, r1 + ldr r4, .L1436 + mov r8, r0 + mov r6, r1 + ldr r3, [r4, #140] + cmp r2, r3 + mvnhi r0, #0 + bhi .L1421 + cmp r1, #31 + bhi .L1423 +.L1428: + mov r0, #0 +.L1421: + sub sp, fp, #32 + ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} +.L1423: + ldrh r5, [r4, #58] + mov r1, r5 + bl __udivsi3 + smulbb r3, r0, r5 + mov r7, r0 + sub r8, r8, r3 + uxth r8, r8 + cmp r8, #0 + beq .L1424 + sub r5, r5, r8 + add r7, r0, #1 + cmp r5, r6 + movcs r5, r6 + uxth r5, r5 + sub r6, r6, r5 +.L1424: + mvn r3, #0 + str r3, [fp, #-36] +.L1425: + ldrh r3, [r4, #58] + cmp r6, r3 + bcs .L1427 + ldr r3, [r4, #3652] + cmp r3, #32 + bls .L1428 + mov r5, #0 + str r5, [r4, #3652] + bl l2p_flush + bl FtlVpcTblFlush + b .L1428 +.L1427: + mov r2, #0 + sub r1, fp, #40 + mov r0, r7 + bl log2phys + ldr r3, [fp, #-40] + cmn r3, #1 + beq .L1426 + ldr r3, [r4, #3652] + mov r2, #1 + sub r1, fp, #36 + mov r0, r7 + add r3, r3, #1 + str r3, [r4, #3652] + ldr r3, [r4, #2512] + add r3, r3, #1 + str r3, [r4, #2512] + bl log2phys + ldr r0, [fp, #-40] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl decrement_vpc_count +.L1426: + ldrh r3, [r4, #58] + add r7, r7, #1 + sub r6, r6, r3 + b .L1425 +.L1437: + .align 2 +.L1436: + .word .LANCHOR0 + .size FtlDiscard, .-FtlDiscard + .align 2 + .global FtlVpcCheckAndModify + .syntax unified + .arm + .fpu softvfp + .type FtlVpcCheckAndModify, %function +FtlVpcCheckAndModify: + @ args = 0, pretend = 0, frame = 4 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #4 + mov r5, #0 + ldr r4, .L1451 + ldr r1, .L1451+4 + ldr r0, .L1451+8 + bl sftl_printk + ldrh r2, [r4, #42] + mov r1, #0 + ldr r0, [r4, #3344] + lsl r2, r2, #1 + bl ftl_memset +.L1439: + ldr r3, [r4, #2504] + cmp r5, r3 + bcc .L1441 + ldr r9, .L1451+12 + mov r7, #0 + ldr r10, .L1451+16 +.L1442: + ldrh r3, [r4, #40] + uxth r6, r7 + cmp r3, r6 + bhi .L1447 + bl l2p_flush + bl FtlVpcTblFlush + ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1441: + mov r2, #0 + sub r1, fp, #44 + mov r0, r5 + bl log2phys + ldr r0, [fp, #-44] + cmn r0, #1 + beq .L1440 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r4, #3344] + lsl r0, r0, #1 + ldrh r3, [r2, r0] + add r3, r3, #1 + strh r3, [r2, r0] @ movhi +.L1440: + add r5, r5, #1 + b .L1439 +.L1447: + uxth r8, r7 + ldr r3, [r4, #2324] + movw r1, #65535 + lsl r5, r8, #1 + ldrh r2, [r3, r5] + ldr r3, [r4, #3344] + ldrh r3, [r3, r5] + cmp r2, r1 + cmpne r2, r3 + beq .L1444 + mov r1, r8 + mov r0, r9 + bl sftl_printk + ldrh r3, [r10] + cmp r3, r6 + beq .L1444 + ldr r3, .L1451+20 + ldrh r2, [r3] + cmp r2, r6 + beq .L1444 + ldrh r3, [r3, #-48] + cmp r3, r6 + beq .L1444 + ldr r3, [r4, #2324] + ldrh r2, [r3, r5] + cmp r2, #0 + ldr r2, [r4, #3344] + ldrh r2, [r2, r5] + strh r2, [r3, r5] @ movhi + bne .L1446 +.L1444: + add r7, r7, #1 + b .L1442 +.L1446: + mov r0, r8 + bl update_vpc_list + b .L1444 +.L1452: + .align 2 +.L1451: + .word .LANCHOR0 + .word .LANCHOR1+501 + .word .LC95 + .word .LC111 + .word .LANCHOR0+2348 + .word .LANCHOR0+2444 + .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify + .align 2 + .global allocate_new_data_superblock + .syntax unified + .arm + .fpu softvfp + .type allocate_new_data_superblock, %function +allocate_new_data_superblock: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1463 + mov r6, r0 + ldrh r5, [r0] + ldrh r3, [r4, #40] + cmp r3, r5 + bcs .L1454 + movw r2, #2714 + ldr r1, .L1463+4 + ldr r0, .L1463+8 + bl sftl_printk +.L1454: + movw r3, #65535 + cmp r5, r3 + beq .L1455 + ldr r2, [r4, #2324] + lsl r3, r5, #1 + mov r0, r5 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L1456 + bl INSERT_DATA_LIST +.L1455: + mov r3, #1 + strb r3, [r6, #8] + movw r3, #3430 + ldrh r0, [r4, r3] + movw r3, #65535 + cmp r0, r3 + beq .L1457 + cmp r5, r0 + bne .L1458 + ldr r2, [r4, #2324] + lsl r3, r0, #1 + ldrh r3, [r2, r3] + cmp r3, #0 + beq .L1459 +.L1458: + bl update_vpc_list +.L1459: + mvn r2, #0 + movw r3, #3430 + strh r2, [r4, r3] @ movhi +.L1457: + mov r0, r6 + bl allocate_data_superblock + bl l2p_flush + mov r0, #0 + bl FtlEctTblFlush + bl FtlVpcTblFlush + mov r0, #0 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1456: + bl INSERT_FREE_LIST + b .L1455 +.L1464: + .align 2 +.L1463: + .word .LANCHOR0 + .word .LANCHOR1+522 + .word .LC1 + .size allocate_new_data_superblock, .-allocate_new_data_superblock + .align 2 + .global FtlProgPages + .syntax unified + .arm + .fpu softvfp + .type FtlProgPages, %function +FtlProgPages: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #8 + mov r7, #0 + ldr r6, .L1479 + mov r4, r3 + ldr r10, .L1479+4 + mov r2, #0 + ldrb r3, [r3, #9] @ zero_extendqisi2 + mov r5, r0 + mov r9, r1 + bl FlashProgPages +.L1466: + cmp r7, r9 + beq .L1473 + mov r8, #0 + b .L1474 +.L1469: + ldr r0, [r5, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r4] + cmp r3, r0 + bne .L1467 + ldr r1, [r6, #2324] + lsl r3, r3, #1 + ldrh r0, [r4, #4] + ldrh r2, [r1, r3] + sub r2, r2, r0 + strh r2, [r1, r3] @ movhi + ldrh r3, [r6, #102] + strb r8, [r4, #6] + strh r8, [r4, #4] @ movhi + strh r3, [r4, #2] @ movhi +.L1467: + ldrh r3, [r4, #4] + cmp r3, #0 + bne .L1468 + mov r0, r4 + bl allocate_new_data_superblock +.L1468: + ldr r3, [r6, #2732] + add r3, r3, #1 + str r3, [r6, #2732] + ldr r0, [r5, #4] + ubfx r0, r0, #10, #16 + bl FtlGcMarkBadPhyBlk + mov r0, r4 + bl get_new_active_ppa + mov r2, #0 + str r0, [r5, #4] + str r0, [fp, #-44] + mov r1, #1 + ldrb r3, [r4, #9] @ zero_extendqisi2 + mov r0, r5 + bl FlashProgPages +.L1474: + ldr r3, [r5] + cmn r3, #1 + beq .L1469 + ldrb r2, [r4, #6] @ zero_extendqisi2 + ldrh r3, [r6, #32] + cmp r2, r3 + bcc .L1470 + movw r2, #955 + mov r1, r10 + ldr r0, .L1479+8 + bl sftl_printk +.L1470: + ldr r3, [r5, #4] + sub r1, fp, #40 + mov r2, #1 + ldr r0, [r5, #16] + str r3, [r1, #-4]! + bl log2phys + ldr r3, [r5, #12] + ldr r3, [r3, #12] + ubfx r0, r3, #10, #16 + str r3, [fp, #-48] + bl P2V_block_in_plane + ldr r3, [fp, #-48] + mov r8, r0 + cmn r3, #1 + beq .L1471 + ldr r2, [r6, #2324] + lsl r3, r0, #1 + ldrh r2, [r2, r3] + cmp r2, #0 + bne .L1472 + mov r1, r0 + ldr r0, .L1479+12 + bl sftl_printk +.L1472: + mov r0, r8 + bl decrement_vpc_count +.L1471: + add r7, r7, #1 + add r5, r5, #20 + b .L1466 +.L1473: + ldrb r2, [r4, #6] @ zero_extendqisi2 + ldrh r3, [r6, #32] + cmp r2, r3 + bcc .L1465 + movw r2, #970 + ldr r1, .L1479+4 + ldr r0, .L1479+8 + bl sftl_printk +.L1465: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1480: + .align 2 +.L1479: + .word .LANCHOR0 + .word .LANCHOR1+551 + .word .LC1 + .word .LC112 + .size FtlProgPages, .-FtlProgPages + .align 2 + .global FtlGcFreeTempBlock + .syntax unified + .arm + .fpu softvfp + .type FtlGcFreeTempBlock, %function +FtlGcFreeTempBlock: + @ args = 0, pretend = 0, frame = 4 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #4 + movw r3, #2444 + ldr r4, .L1507 + movw r2, #65535 + ldrh r5, [r4, r3] + ldrh r1, [r4, #102] + cmp r5, r2 + bne .L1482 +.L1492: + mov r3, #0 + str r3, [r4, #3436] + movw r3, #2444 + ldrh r2, [r4, r3] + movw r3, #65535 + cmp r2, r3 + bne .L1505 +.L1483: + mov r0, #0 + ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1482: + cmp r0, #0 + beq .L1485 + ldr r3, .L1507+4 + ldrh r0, [r3, #4] + cmp r0, r2 + beq .L1486 +.L1487: + mov r1, #2 +.L1485: + ldr r0, .L1507+8 + bl FtlGcScanTempBlk + cmn r0, #1 + str r0, [fp, #-44] + beq .L1488 + ldr r2, [r4, #2328] + lsl r5, r5, #1 + ldrh r3, [r2, r5] + cmp r3, #4 + bls .L1489 + sub r3, r3, #5 + mov r0, #1 + strh r3, [r2, r5] @ movhi + bl FtlEctTblFlush +.L1489: + ldr r3, [r4, #3436] + cmp r3, #0 + bne .L1490 + ldr r3, [r4, #2732] + ldr r0, [fp, #-44] + add r3, r3, #1 + ubfx r0, r0, #10, #16 + str r3, [r4, #2732] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L1490: + mov r3, #0 + str r3, [r4, #3436] +.L1501: + mov r0, #1 + ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1486: + mov r2, #0 + strh r2, [r3, #4] @ movhi + movw r3, #2344 + ldrh r3, [r4, r3] + cmp r3, #17 + bhi .L1487 + b .L1485 +.L1488: + ldr r3, .L1507+4 + ldrh r2, [r3, #4] + movw r3, #65535 + cmp r2, r3 + bne .L1501 + b .L1492 +.L1505: + ldrb r1, [r4, #2451] @ zero_extendqisi2 + ldrh r3, [r4, #102] + ldr r6, .L1507+12 + mul r3, r3, r1 + ldrh r2, [r6] + cmp r2, r3 + beq .L1493 + mov r2, #162 + ldr r1, .L1507+16 + ldr r0, .L1507+20 + bl sftl_printk +.L1493: + ldrb r2, [r4, #2451] @ zero_extendqisi2 + movw r3, #2444 + ldrh r0, [r4, #102] + mov r5, #0 + ldrh r3, [r4, r3] + ldr r1, [r4, #2324] + ldr r10, .L1507+20 + smulbb r2, r2, r0 + lsl r3, r3, #1 + strh r2, [r1, r3] @ movhi + ldr r2, [r4, #2528] + ldrh r3, [r6] + add r3, r3, r2 + str r3, [r4, #2528] +.L1494: + ldrh r2, [r6] + uxth r3, r5 + cmp r2, r3 + bhi .L1498 + movw r0, #65535 + bl decrement_vpc_count + movw r3, #2444 + ldr r1, [r4, #2324] + ldrh r0, [r4, r3] + mov r5, r3 + lsl r2, r0, #1 + ldrh r2, [r1, r2] + cmp r2, #0 + beq .L1499 + bl INSERT_DATA_LIST +.L1500: + mvn r7, #0 + movw r3, #3192 + strh r7, [r4, r5] @ movhi + mov r5, #0 + strh r5, [r4, r3] @ movhi + strh r5, [r6] @ movhi + bl l2p_flush + bl FtlVpcTblFlush + movw r3, #2588 + strh r7, [r4, r3] @ movhi + movw r3, #2344 + ldrh r2, [r4, r3] + movw r3, #2572 + ldrh r3, [r4, r3] + add r3, r3, r3, lsl #1 + cmp r2, r3, asr #2 + movgt r2, #20 + movwgt r3, #3148 + strhgt r2, [r4, r3] @ movhi + b .L1483 +.L1498: + uxth r3, r5 + mov r7, #12 + ldr r8, [r4, #3196] + mul r7, r7, r3 + ldr r2, [r4, #2504] + add r9, r8, r7 + ldr r1, [r9, #8] + cmp r1, r2 + bcc .L1495 + mov r2, #168 + ldr r1, .L1507+16 + mov r0, r10 + bl sftl_printk +.L1495: + mov r2, #0 + sub r1, fp, #44 + ldr r0, [r9, #8] + bl log2phys + ldr r2, [fp, #-44] + ldr r0, [r8, r7] + cmp r0, r2 + bne .L1496 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + mov r2, #1 + mov r7, r0 + add r1, r9, #4 + ldr r0, [r9, #8] + bl log2phys + mov r0, r7 +.L1506: + bl decrement_vpc_count +.L1497: + add r5, r5, #1 + b .L1494 +.L1496: + ldr r3, [r9, #4] + cmp r2, r3 + beq .L1497 + ldr r3, .L1507+8 + ldrh r0, [r3] + b .L1506 +.L1499: + bl INSERT_FREE_LIST + b .L1500 +.L1508: + .align 2 +.L1507: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+2444 + .word .LANCHOR0+3200 + .word .LANCHOR1+564 + .word .LC1 + .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock + .align 2 + .global FtlGcPageRecovery + .syntax unified + .arm + .fpu softvfp + .type FtlGcPageRecovery, %function +FtlGcPageRecovery: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1511 + ldr r5, .L1511+4 + ldrh r1, [r4, #102] + mov r0, r5 + bl FtlGcScanTempBlk + ldrh r2, [r5, #2] + ldrh r3, [r4, #102] + cmp r2, r3 + ldmfdcc sp, {r4, r5, fp, sp, pc} + add r0, r5, #940 + bl FtlMapBlkWriteDump_data + mov r0, #0 + bl FtlGcFreeTempBlock + mov r3, #0 + str r3, [r4, #3436] + ldmfd sp, {r4, r5, fp, sp, pc} +.L1512: + .align 2 +.L1511: + .word .LANCHOR0 + .word .LANCHOR0+2444 + .size FtlGcPageRecovery, .-FtlGcPageRecovery + .align 2 + .global FtlPowerLostRecovery + .syntax unified + .arm + .fpu softvfp + .type FtlPowerLostRecovery, %function +FtlPowerLostRecovery: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1514 + mov r6, #0 + add r5, r4, #2336 + str r6, [r4, #3516] + add r5, r5, #12 + add r4, r4, #2384 + mov r0, r5 + add r4, r4, #12 + bl FtlRecoverySuperblock + mov r0, r5 + bl FtlSlcSuperblockCheck + mov r0, r4 + bl FtlRecoverySuperblock + mov r0, r4 + bl FtlSlcSuperblockCheck + bl FtlGcPageRecovery + movw r0, #65535 + bl decrement_vpc_count + mov r0, r6 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1515: + .align 2 +.L1514: + .word .LANCHOR0 + .size FtlPowerLostRecovery, .-FtlPowerLostRecovery + .align 2 + .global Ftl_gc_temp_data_write_back + .syntax unified + .arm + .fpu softvfp + .type Ftl_gc_temp_data_write_back, %function +Ftl_gc_temp_data_write_back: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1523 + mov r3, #0 + mov r5, #0 + mov r6, #20 + mov r2, r3 + ldr r1, [r4, #3164] + ldr r0, [r4, #3284] + bl FlashProgPages +.L1517: + ldr r1, [r4, #3164] + uxth r3, r5 + cmp r1, r3 + bhi .L1520 + ldr r0, [r4, #3284] + bl FtlGcBufFree + ldr r3, .L1523+4 + mov r0, #0 + str r0, [r4, #3164] + ldrh r3, [r3, #4] + cmp r3, r0 + ldmfdne sp, {r4, r5, r6, fp, sp, pc} + mov r0, #1 + bl FtlGcFreeTempBlock + b .L1522 +.L1520: + mul r3, r6, r3 + ldr r2, [r4, #3284] + add r5, r5, #1 + ldr r0, [r2, r3] + add r1, r2, r3 + cmn r0, #1 + bne .L1518 + movw r1, #2444 + ldr ip, [r4, #2324] + ldrh r2, [r4, r1] + mov lr, #0 + lsl r2, r2, #1 + strh lr, [ip, r2] @ movhi + ldr r2, [r4, #2732] + strh r0, [r4, r1] @ movhi + add r2, r2, #1 + str r2, [r4, #2732] + ldr r2, [r4, #3284] + add r3, r2, r3 + ldr r0, [r3, #4] + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + bl FtlGcPageVarInit +.L1522: + mov r0, #1 + ldmfd sp, {r4, r5, r6, fp, sp, pc} +.L1518: + ldr r3, [r1, #12] + ldr r1, [r1, #4] + ldr r2, [r3, #8] + ldr r0, [r3, #12] + bl FtlGcUpdatePage + b .L1517 +.L1524: + .align 2 +.L1523: + .word .LANCHOR0 + .word .LANCHOR0+2444 + .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back + .align 2 + .global Ftl_get_new_temp_ppa + .syntax unified + .arm + .fpu softvfp + .type Ftl_get_new_temp_ppa, %function +Ftl_get_new_temp_ppa: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1528 + movw r3, #2444 + ldrh r2, [r4, r3] + movw r3, #65535 + cmp r2, r3 + beq .L1526 + ldr r3, .L1528+4 + ldrh r3, [r3, #4] + cmp r3, #0 + bne .L1527 +.L1526: + mov r0, #0 + mov r5, #0 + bl FtlGcFreeTempBlock + ldr r0, .L1528+4 + strb r5, [r4, #2452] + bl allocate_data_superblock + movw r3, #3192 + strh r5, [r4, r3] @ movhi + ldr r3, .L1528+8 + strh r5, [r3] @ movhi + bl l2p_flush + mov r0, r5 + bl FtlEctTblFlush + bl FtlVpcTblFlush +.L1527: + ldr r0, .L1528+4 + bl get_new_active_ppa + ldmfd sp, {r4, r5, fp, sp, pc} +.L1529: + .align 2 +.L1528: + .word .LANCHOR0 + .word .LANCHOR0+2444 + .word .LANCHOR0+3200 + .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa + .align 2 .global FtlSysBlkInit .syntax unified .arm @@ -12686,27 +10708,27 @@ FtlSysBlkInit: mov ip, sp push {r4, r5, r6, r7, r8, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L1801 - mov r3, #0 - add r6, r4, #4016 + ldr r4, .L1545 + mov r2, #0 + movw r3, #3512 ldrh r0, [r4, #36] - strh r3, [r6] @ movhi + strh r2, [r4, r3] @ movhi bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk add r3, r4, #2576 ldrh r2, [r3] movw r3, #65535 cmp r2, r3 - bne .L1778 -.L1780: + bne .L1531 +.L1533: mvn r8, #0 -.L1777: +.L1530: mov r0, r8 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} -.L1778: +.L1531: bl FtlLoadSysInfo subs r8, r0, #0 - bne .L1780 + bne .L1533 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -12720,26 +10742,31 @@ FtlSysBlkInit: mov r3, r8 ldr r2, [r4, #2492] mov r0, #12 -.L1781: +.L1534: cmp r3, r1 - bge .L1786 + bge .L1539 mla ip, r0, r3, r2 ldr ip, [ip, #4] cmp ip, #0 - bge .L1782 -.L1786: - ldr r5, .L1801+4 + bge .L1535 +.L1539: + ldr r5, .L1545+4 cmp r3, r1 ldrh r2, [r5, #28] - add r7, r5, #80 + add r6, r5, #80 add r2, r2, #1 strh r2, [r5, #28] @ movhi - bge .L1800 -.L1783: + bge .L1544 +.L1536: + ldr r7, .L1545+8 + ldr r0, .L1545+12 + bl FtlSuperblockPowerLostFix + mov r0, r7 + bl FtlSuperblockPowerLostFix movw r3, #2348 ldr r1, [r4, #2324] ldrh r3, [r4, r3] - ldrh r0, [r7, #4] + ldrh r0, [r6, #4] lsl r3, r3, #1 ldrh r2, [r1, r3] sub r2, r2, r0 @@ -12747,397 +10774,823 @@ FtlSysBlkInit: movw r2, #2396 ldrh r2, [r4, r2] ldrh r3, [r4, #102] - ldr r1, .L1801+8 - ldr ip, [r4, #2324] + ldr r0, [r4, #2324] + ldrh ip, [r7, #4] lsl r2, r2, #1 - strh r3, [r7, #2] @ movhi + strh r3, [r6, #2] @ movhi mov r3, #0 - ldrh lr, [r1, #4] strb r3, [r4, #2354] - strh r3, [r7, #4] @ movhi - ldrh r0, [ip, r2] - sub r0, r0, lr - strh r0, [ip, r2] @ movhi - ldrh r2, [r4, #102] - ldr r0, .L1801+12 - strh r3, [r1, #4] @ movhi - strh r2, [r1, #2] @ movhi + strh r3, [r6, #4] @ movhi + ldrh r1, [r0, r2] + sub r1, r1, ip + strh r1, [r0, r2] @ movhi strb r3, [r4, #2402] - bl FtlMapBlkWriteDump_data - ldr r0, .L1801+16 - bl FtlMapBlkWriteDump_data + strh r3, [r7, #4] @ movhi ldrh r3, [r5, #30] + ldrh r2, [r4, #102] add r3, r3, #1 + strh r2, [r7, #2] @ movhi strh r3, [r5, #30] @ movhi bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush - b .L1787 -.L1782: + b .L1540 +.L1535: add r3, r3, #1 - b .L1781 -.L1800: - ldrh r3, [r6] + b .L1534 +.L1544: + movw r3, #3512 + ldrh r3, [r4, r3] cmp r3, #0 - bne .L1783 -.L1787: - ldrh r6, [r5, #44] - movw r2, #65533 - sub r3, r6, #1 - uxth r3, r3 - cmp r3, r2 - bhi .L1789 - movw r3, #3202 - mov r1, r6 - ldr r0, .L1801+20 - strh r6, [r4, r3] @ movhi - bl test_node_in_list - cmp r0, #0 - bne .L1790 - ldrh r3, [r4, #40] - cmp r3, r6 - bls .L1790 - ldr r3, [r4, #2324] - lsl r6, r6, #1 - ldrh r3, [r3, r6] - cmp r3, #0 - bne .L1789 -.L1790: - mvn r2, #0 - movw r3, #3202 - strh r2, [r4, r3] @ movhi -.L1789: - ldrh r6, [r5, #46] - movw r2, #65533 - sub r3, r6, #1 - uxth r3, r3 - cmp r3, r2 - bhi .L1793 - movw r3, #3204 - mov r1, r6 - ldr r0, .L1801+20 - strh r6, [r4, r3] @ movhi - bl test_node_in_list - cmp r0, #0 - bne .L1794 - ldrh r3, [r4, #40] - cmp r3, r6 - bls .L1794 - ldr r3, [r4, #2324] - lsl r6, r6, #1 - ldrh r3, [r3, r6] - cmp r3, #0 - bne .L1793 -.L1794: - mvn r2, #0 - movw r3, #3204 - strh r2, [r4, r3] @ movhi -.L1793: + bne .L1536 +.L1540: + bl FtlVpcCheckAndModify movw r3, #2348 ldrh r0, [r4, r3] movw r3, #65535 cmp r0, r3 - beq .L1796 - ldrh r3, [r7, #4] - cmp r3, #0 - bne .L1796 - ldr r6, .L1801+8 + beq .L1530 ldrh r3, [r6, #4] cmp r3, #0 - bne .L1796 + bne .L1530 + ldr r5, .L1545+8 + ldrh r3, [r5, #4] + cmp r3, #0 + bne .L1530 bl FtlGcRefreshBlock movw r3, #2396 ldrh r0, [r4, r3] bl FtlGcRefreshBlock bl FtlVpcTblFlush - sub r0, r6, #48 + sub r0, r5, #48 bl allocate_new_data_superblock - mov r0, r6 + mov r0, r5 bl allocate_new_data_superblock -.L1796: - ldrh r3, [r5, #28] - tst r3, #31 - bne .L1777 - bl FtlVpcCheckAndModify - b .L1777 -.L1802: + b .L1530 +.L1546: .align 2 -.L1801: +.L1545: .word .LANCHOR0 .word .LANCHOR0+2268 .word .LANCHOR0+2396 - .word .LANCHOR0+3908 - .word .LANCHOR0+3956 - .word .LANCHOR0+2340 + .word .LANCHOR0+2348 .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 - .global ftl_low_format + .global rk_ftl_garbage_collect .syntax unified .arm .fpu softvfp - .type ftl_low_format, %function -ftl_low_format: - @ args = 0, pretend = 0, frame = 0 + .type rk_ftl_garbage_collect, %function +rk_ftl_garbage_collect: + @ args = 0, pretend = 0, frame = 28 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L1827 - mov r3, #0 - ldrh r0, [r4, #36] - str r3, [r4, #2540] - str r3, [r4, #2544] - bl FtlFreeSysBlkQueueInit - bl FtlLoadBbt + sub sp, sp, #36 + ldr r3, .L1665 + str r0, [fp, #-60] + ldr r0, [r3, #3264] + mov r4, r3 cmp r0, #0 - beq .L1804 - bl FtlMakeBbt -.L1804: - ldr r0, .L1827+4 - mov r2, #0 -.L1805: - ldrh r1, [r4, #58] - uxth r3, r2 - add r2, r2, #1 - cmp r3, r1, lsl #7 - blt .L1806 - ldrh r6, [r4, #40] - mov r5, #0 -.L1807: - ldrh r3, [r4, #42] - cmp r3, r6 - bhi .L1808 - ldrh r1, [r4, #32] - sub r3, r5, #3 - cmp r3, r1, lsl #1 - bge .L1809 -.L1813: - mov r0, #0 - mov r6, r0 -.L1810: - ldrh r2, [r4, #40] - uxth r3, r0 - add r5, r0, #1 - cmp r2, r3 - bhi .L1814 - ldrh r3, [r4, #42] - movw r9, #2572 - ldrh r5, [r4, #32] - ldr r10, [r4, #44] - str r3, [r4, #3808] - mov r1, r5 - mov r0, r10 - bl __udivsi3 - ubfx r7, r0, #5, #16 - mov r8, r0 - add r3, r7, #36 - str r0, [r4, #2504] - strh r3, [r4, r9] @ movhi - mov r3, #24 - mul r3, r3, r5 - cmp r6, r3 - ble .L1815 - mov r1, r5 - sub r0, r10, r6 - bl __udivsi3 - str r0, [r4, #2504] - lsr r0, r0, #5 - add r0, r0, #24 - strh r0, [r4, r9] @ movhi -.L1815: - ldrh r3, [r4, #94] - cmp r3, #0 - beq .L1817 - movw r2, #2572 - ldrh r1, [r4, r2] - add r1, r1, r3, lsr #1 - strh r1, [r4, r2] @ movhi - mul r1, r5, r3 - cmp r6, r1 - addlt r3, r3, #32 - strlt r8, [r4, #2504] - addlt r3, r7, r3 - strhlt r3, [r4, r2] @ movhi -.L1817: - movw r3, #2572 - ldr r6, .L1827+8 - ldrh r2, [r4, r3] - mvn r7, #0 - ldr r3, [r4, #2504] - sub r3, r3, r2 - mul r5, r5, r3 - ldrh r3, [r4, #102] - str r5, [r6, #-4008] - mul r5, r5, r3 - ldrh r3, [r4, #58] - str r5, [r4, #2504] - mul r5, r5, r3 - str r5, [r4, #140] - bl FtlBbmTblFlush - ldrh r2, [r4, #42] - mov r1, #0 - ldr r0, [r4, #2324] - ldr r5, .L1827+12 - lsl r2, r2, #1 - sub r5, r5, #240 - bl ftl_memset + movne r0, #0 + bne .L1547 + add r2, r3, #2336 + ldrh r2, [r2] + cmp r2, #47 + bls .L1547 + ldr r2, .L1665+4 + ldrh r1, [r2, #4] + movw r2, #65535 + cmp r1, r2 + bne .L1549 +.L1552: + movw r3, #3204 + movw r0, #65535 + ldrh r1, [r4, r3] + cmp r1, r0 + bne .L1550 +.L1551: + bl FtlReadRefresh + ldr r3, [r4, #3152] + movw r5, #65535 + ldr r2, [fp, #-60] + add r3, r3, #1 + add r3, r3, r2, lsl #7 movw r2, #2588 - mov r3, #0 - strh r7, [r4, r2] @ movhi - movw r2, #2348 - strh r3, [r4, r2] @ movhi - mov r1, #255 - ldrh r2, [r4, #40] - strh r3, [r5, #242] @ movhi - mov r8, r5 - str r3, [r4, #2500] - strb r3, [r4, #2594] - strb r3, [r4, #2596] - lsr r2, r2, #3 - strh r3, [r5, #2] @ movhi - strb r3, [r4, #2354] - mov r3, #1 - ldr r0, [r4, #24] - strb r3, [r4, #2356] - bl ftl_memset -.L1819: - mov r0, r8 - bl make_superblock - ldrb r3, [r4, #2355] @ zero_extendqisi2 - cmp r3, #0 - ldrh r3, [r5] - bne .L1820 - ldr r2, [r4, #2324] - lsl r3, r3, #1 - strh r7, [r2, r3] @ movhi - ldrh r3, [r5] - add r3, r3, #1 - strh r3, [r5] @ movhi - b .L1819 -.L1806: - ldr ip, [r4, #3820] - mvn r1, r3 - orr r1, r3, r1, lsl #16 - str r1, [ip, r3, lsl #2] - ldr r1, [r4, #3812] - str r0, [r1, r3, lsl #2] - b .L1805 -.L1808: - mov r0, r6 - mov r1, #1 - bl FtlLowFormatEraseBlock - add r6, r6, #1 - add r5, r5, r0 - uxth r5, r5 - uxth r6, r6 - b .L1807 -.L1809: - mov r0, r5 - bl __udivsi3 - ldr r3, [r4, #132] - add r0, r0, r3 - uxth r0, r0 - bl FtlSysBlkNumInit - ldrh r0, [r4, #36] - bl FtlFreeSysBlkQueueInit - ldrh r5, [r4, #40] -.L1811: - ldrh r3, [r4, #42] + ldrh r2, [r4, r2] + str r3, [r4, #3152] + cmp r2, r5 + bne .L1553 + movw r1, #2444 + ldrh r5, [r4, r1] + cmp r5, r2 + movne r5, r2 + bne .L1553 + movw r2, #3202 + ldrh r6, [r4, r2] + cmp r6, r5 + bne .L1553 + movw r9, #2344 + ldrh r2, [r4, r9] + cmp r2, #24 + movcc r2, #5120 + movcs r2, #1024 + cmp r3, r2 + movls r5, r6 + bls .L1553 + mov r8, #0 + movw r3, #3656 + str r8, [r4, #3152] + strh r8, [r4, r3] @ movhi + bl GetSwlReplaceBlock + cmp r0, r6 + mov r5, r0 + movne r6, r0 + bne .L1555 + movw r7, #3150 + ldrh r2, [r4, r9] + ldrh r3, [r4, r7] + cmp r2, r3 + bcs .L1556 + mov r0, #64 + bl List_get_gc_head_node + uxth r3, r0 cmp r3, r5 - bls .L1813 - mov r0, r5 - mov r1, #1 - add r5, r5, #1 - bl FtlLowFormatEraseBlock - uxth r5, r5 - b .L1811 -.L1814: - mov r1, #0 - uxth r0, r0 - bl FtlLowFormatEraseBlock - add r6, r6, r0 - mov r0, r5 - uxth r6, r6 - b .L1810 -.L1820: - ldr r2, [r4, #2540] - lsl r3, r3, #1 - ldrh r1, [r5, #4] - mvn r7, #0 - str r2, [r4, #2360] - add r2, r2, #1 - str r2, [r4, #2540] - ldr r2, [r4, #2324] - strh r1, [r2, r3] @ movhi + beq .L1558 + mov r0, r3 + ldr r3, [r4, #2324] + lsl r0, r0, #1 + ldrh r3, [r3, r0] + cmp r3, #7 + bhi .L1559 + mov r0, r8 + bl List_get_gc_head_node + uxth r6, r0 + mov r3, #128 + strh r3, [r4, r7] @ movhi + cmp r6, r5 + bne .L1555 +.L1558: + bl FtlGcReFreshBadBlk +.L1553: + movw r1, #65535 + ldr r2, [fp, #-60] + sub r3, r5, r1 + clz r3, r3 + lsr r3, r3, #5 + cmp r2, #0 + movne r2, #0 + andeq r2, r3, #1 + cmp r2, #0 + beq .L1561 + movw r3, #2344 + ldrh r3, [r4, r3] + cmp r3, #24 + movhi r6, #1 + bhi .L1562 + ldrh r6, [r4, #102] + cmp r3, #16 + lsrhi r6, r6, #5 + bhi .L1562 + cmp r3, #12 + lsrhi r6, r6, #4 + bhi .L1562 + cmp r3, #8 + lsrhi r6, r6, #2 +.L1562: + movw r2, #3148 + ldrh r1, [r4, r2] + cmp r1, r3 + bcs .L1566 + movw r3, #2444 + movw r1, #65535 + ldrh r3, [r4, r3] + cmp r3, r1 + bne .L1567 + movw r1, #3202 + ldrh r1, [r4, r1] + cmp r1, r3 + bne .L1567 + movw r3, #3656 + ldrh r0, [r4, r3] + cmp r0, #0 + bne .L1568 + ldr r3, [r4, #2504] + ldr r1, [r4, #2500] + add r3, r3, r3, lsl #1 + cmp r1, r3, lsr #2 + movcs r3, #18 + bcs .L1660 +.L1568: + movw r3, #2572 + movw r2, #3148 + ldrh r3, [r4, r3] + add r3, r3, r3, lsl #1 + asr r3, r3, #2 +.L1660: + strh r3, [r4, r2] @ movhi mov r3, #0 - ldr r2, .L1827+16 - movw r1, #2396 - strb r3, [r4, #2402] - strh r3, [r2, #2] @ movhi - mov r8, r2 - ldrh r3, [r5] - mov r5, r2 - add r3, r3, #1 - strh r3, [r4, r1] @ movhi - mov r3, #1 - strb r3, [r4, #2404] -.L1821: + str r3, [r4, #3160] +.L1547: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1549: + movw r1, #2444 + ldrh r3, [r3, r1] + cmp r3, r2 + beq .L1552 + mov r0, #1 + bl FtlGcFreeTempBlock + cmp r0, #0 + beq .L1552 + mov r0, #1 + b .L1547 +.L1550: + movw r2, #3202 + ldrh ip, [r4, r2] + cmp ip, r0 + strheq r1, [r4, r2] @ movhi + mvneq r2, #0 + strheq r2, [r4, r3] @ movhi + b .L1551 +.L1559: + mov r3, #64 +.L1659: + strh r3, [r4, r7] @ movhi + b .L1558 +.L1556: + mov r3, #80 + b .L1659 +.L1555: + movw r0, #3148 + ldr r3, [r4, #2324] + ldrh r0, [r4, r0] + lsl r1, r6, #1 + movw r2, #2344 + ldrh r3, [r3, r1] + mov r5, r6 + ldrh r2, [r4, r2] + str r0, [sp, #4] + ldr r0, [r4, #2328] + ldrh r1, [r0, r1] + ldr r0, .L1665+8 + str r1, [sp] + mov r1, r6 + bl sftl_printk + b .L1558 +.L1567: + movw r3, #2572 + movw r2, #3148 + ldrh r3, [r4, r3] + add r3, r3, r3, lsl #1 + asr r3, r3, #2 + strh r3, [r4, r2] @ movhi +.L1566: + movw r3, #3206 + movw r5, #65535 + ldrh r3, [r4, r3] + cmp r3, #0 + addne r6, r6, #32 + uxthne r6, r6 +.L1572: + movw r3, #2588 + ldrh r2, [r4, r3] + movw r1, #65535 + cmp r2, r1 + bne .L1581 + cmp r5, r2 + strhne r5, [r4, r3] @ movhi + bne .L1583 + movw r2, #3202 + ldrh r3, [r4, r2] + cmp r3, r5 + beq .L1583 + ldr r1, [r4, #2324] + lsl r3, r3, #1 + ldrh r3, [r1, r3] + cmp r3, #0 + mvneq r3, #0 + strheq r3, [r4, r2] @ movhi + movw r3, #3202 + ldrh r1, [r4, r3] + movw r2, #2588 + strh r1, [r4, r2] @ movhi + mvn r2, #0 + strh r2, [r4, r3] @ movhi +.L1583: + movw r7, #2588 + mov r3, #0 + ldrh r0, [r4, r7] + strb r3, [r4, #2596] + movw r3, #65535 + cmp r0, r3 + beq .L1581 + bl IsBlkInGcList + cmp r0, #0 + ldr r8, .L1665+12 + mvnne r3, #0 + strhne r3, [r4, r7] @ movhi + movw r7, #2588 + ldrh r2, [r4, r7] + movw r3, #65535 + cmp r2, r3 + beq .L1581 mov r0, r8 bl make_superblock - ldrb r3, [r4, #2403] @ zero_extendqisi2 + mov r3, #0 + movw r2, #3658 + strh r3, [r4, r2] @ movhi + strh r3, [r8, #2] @ movhi + strb r3, [r4, #2594] + ldrh r3, [r4, r7] + ldr r2, [r4, #2324] + lsl r3, r3, #1 + ldrh r2, [r2, r3] + movw r3, #3660 + strh r2, [r4, r3] @ movhi +.L1581: + movw r3, #2588 + movw r2, #2348 + ldrh r3, [r4, r3] + ldrh r2, [r4, r2] + cmp r2, r3 + beq .L1587 + movw r2, #2396 + ldrh r2, [r4, r2] + cmp r2, r3 + bne .L1588 +.L1587: + mvn r2, #0 + movw r3, #2588 + strh r2, [r4, r3] @ movhi +.L1588: + ldr r4, .L1665 + mov r9, r4 +.L1617: + ldr r7, .L1665+12 + movw r3, #65535 + ldrh r2, [r7] + cmp r2, r3 + bne .L1589 + add r10, r7, #568 + mov r3, #0 + str r3, [r4, #3160] +.L1590: + ldrh r8, [r10] + mov r0, r8 + bl List_get_gc_head_node + ldr r3, .L1665+12 + uxth r2, r0 + strh r2, [r3] @ movhi + movw r3, #65535 + cmp r2, r3 + bne .L1591 + mov r3, #0 + mov r0, #8 + strh r3, [r10] @ movhi + b .L1547 +.L1561: + movw r0, #2444 + ldrh r6, [r4, r0] + cmp r6, r1 + bne .L1631 + movw r1, #3202 + ldrh r1, [r4, r1] + cmp r1, r6 + movne r3, #0 + andeq r3, r3, #1 cmp r3, #0 - ldrh r3, [r5] - bne .L1822 - ldr r2, [r4, #2324] - lsl r3, r3, #1 - strh r7, [r2, r3] @ movhi - ldrh r3, [r5] - add r3, r3, #1 - strh r3, [r5] @ movhi - b .L1821 -.L1822: - ldr r2, [r4, #2540] - lsl r3, r3, #1 - ldrh r1, [r5, #4] - mvn r5, #0 - str r2, [r4, #2408] - add r2, r2, #1 - str r2, [r4, #2540] - ldr r2, [r4, #2324] - strh r1, [r2, r3] @ movhi - movw r3, #2444 - strh r5, [r4, r3] @ movhi - bl FtlFreeSysBlkQueueOut - ldr r3, .L1827+20 - mov r2, #0 - strh r2, [r3, #2] @ movhi - ldr r2, [r6, #-4008] - strh r5, [r3, #4] @ movhi - strh r0, [r3] @ movhi - strh r2, [r3, #6] @ movhi - ldr r3, [r4, #2540] - str r3, [r4, #2584] - add r3, r3, #1 - str r3, [r4, #2540] - bl FtlVpcTblFlush - bl FtlSysBlkInit - cmp r0, #0 + beq .L1631 + movw r3, #2588 + ldrh r3, [r4, r3] + cmp r3, r6 + beq .L1573 +.L1578: + mov r5, r6 +.L1631: + mov r6, #1 + b .L1572 +.L1573: + movw r3, #2344 + str r2, [r4, #3160] + movw r2, #3148 + ldrh r1, [r4, r3] + ldrh r3, [r4, r2] + cmp r1, r3 + bls .L1574 + movw r3, #3656 + ldrh r3, [r4, r3] + cmp r3, #0 + bne .L1575 + ldr r3, [r4, #2504] + ldr r1, [r4, #2500] + add r3, r3, r3, lsl #1 + cmp r1, r3, lsr #2 + movcs r3, #18 + bcs .L1661 +.L1575: + movw r3, #2572 + movw r2, #3148 + ldrh r3, [r4, r3] + add r3, r3, r3, lsl #1 + asr r3, r3, #2 +.L1661: + strh r3, [r4, r2] @ movhi + bl FtlReadRefresh mov r0, #0 - ldreq r3, .L1827+24 - moveq r2, #1 - streq r2, [r3] - ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1828: + bl List_get_gc_head_node + uxth r0, r0 + ldr r3, [r4, #2324] + lsl r0, r0, #1 + ldrh r3, [r3, r0] + cmp r3, #4 + bls .L1574 +.L1664: + movw r3, #3656 + ldrh r0, [r4, r3] + b .L1547 +.L1574: + movw r5, #3656 + ldrh r0, [r4, r5] + cmp r0, #0 + bne .L1578 + movw r3, #2572 + movw r2, #3148 + ldrh r7, [r4, r3] + add r3, r7, r7, lsl #1 + asr r3, r3, #2 + strh r3, [r4, r2] @ movhi + bl List_get_gc_head_node + uxth r0, r0 + ldr r3, [r4, #2324] + ldrh r1, [r4, #104] + lsl r0, r0, #1 + ldrh r2, [r3, r0] + ldrh r3, [r4, #32] + mul r3, r3, r1 + add r3, r3, r3, lsr #31 + cmp r2, r3, asr #1 + ble .L1579 + movw r3, #2344 + sub r7, r7, #1 + ldrh r3, [r4, r3] + cmp r3, r7 + blt .L1579 + bl FtlReadRefresh + ldrh r0, [r4, r5] + b .L1547 +.L1579: + cmp r2, #0 + bne .L1578 + movw r0, #65535 + bl decrement_vpc_count + movw r3, #2344 + ldrh r0, [r4, r3] + add r0, r0, #1 + b .L1547 +.L1591: + uxth r3, r0 + str r2, [fp, #-52] + add r8, r8, #1 + mov r0, r3 + str r3, [fp, #-48] + bl IsBlkInGcList + cmp r0, #0 + ldr r3, [fp, #-48] + ldr r2, [fp, #-52] + strhne r8, [r10] @ movhi + bne .L1590 + lsl r0, r3, #1 + ldrh lr, [r9, #32] + ldrh r3, [r9, #102] + uxth r8, r8 + ldr r1, [r9, #2324] + strh r8, [r10] @ movhi + mul r3, lr, r3 + ldrh ip, [r1, r0] + add lr, r3, r3, lsr #31 + cmp ip, lr, asr #1 + bgt .L1594 + cmp ip, #8 + cmphi r8, #48 + bls .L1595 + ldr ip, .L1665+16 + ldrh ip, [ip] + cmp ip, #35 + bhi .L1595 +.L1594: + ldr lr, .L1665+20 + mov ip, #0 + strh ip, [lr] @ movhi +.L1595: + ldrh r1, [r1, r0] + movw r0, #65535 + cmp r3, r1 + cmple r5, r0 + bne .L1596 + ldr r3, .L1665+20 + ldrh r3, [r3] + cmp r3, #3 + bhi .L1596 + mvn r2, #0 + movw r3, #2588 + strh r2, [r9, r3] @ movhi + mov r3, #0 + ldr r2, .L1665+20 + strh r3, [r2] @ movhi + movw r3, #3656 + ldrh r0, [r9, r3] + b .L1547 +.L1596: + cmp r1, #0 + bne .L1597 + movw r0, #65535 + bl decrement_vpc_count + ldr r3, .L1665+20 + ldr r2, .L1665+20 + ldrh r3, [r3] + add r3, r3, #1 + strh r3, [r2] @ movhi + b .L1590 +.L1597: + mov r3, #0 + strb r3, [r9, #2596] + ldr r3, .L1665+24 + ldrh r3, [r3] + cmp r3, r2 + bne .L1598 + mov r2, #700 + ldr r1, .L1665+28 + ldr r0, .L1665+32 + bl sftl_printk +.L1598: + ldr r3, .L1665+36 + ldrh r2, [r7] + ldrh r3, [r3] + cmp r2, r3 + bne .L1599 + movw r2, #701 + ldr r1, .L1665+28 + ldr r0, .L1665+32 + bl sftl_printk +.L1599: + ldr r3, .L1665+40 + ldrh r2, [r7] + ldrh r3, [r3] + cmp r2, r3 + bne .L1600 + movw r2, #702 + ldr r1, .L1665+28 + ldr r0, .L1665+32 + bl sftl_printk +.L1600: + ldr r0, .L1665+12 + bl make_superblock + ldrh r2, [r7] + mov r3, #0 + ldr r1, .L1665+44 + ldr r0, [r9, #2324] + lsl r2, r2, #1 + strh r3, [r1] @ movhi + ldrh r2, [r0, r2] + strh r3, [r7, #2] @ movhi + strb r3, [r9, #2594] + strh r2, [r1, #2] @ movhi +.L1589: + mov r3, #1 + str r3, [r9, #3264] + ldrh r3, [r9, #102] + str r3, [fp, #-48] + ldr r3, [fp, #-60] + cmp r3, #0 + beq .L1601 + ldr r2, [fp, #-48] + ldrh r3, [r9, #32] + ldr r1, [r9, #2324] + mul r3, r2, r3 + ldrh r2, [r7] + lsl r2, r2, #1 + ldrh r2, [r1, r2] + sub r3, r3, r2 + add r2, r3, #3 + cmp r3, #0 + movlt r3, r2 + add r6, r6, r3, asr #2 + uxth r6, r6 +.L1601: + ldrh r3, [r7, #2] + ldr r1, [fp, #-48] + add r2, r3, r6 + cmp r2, r1 + movgt r2, r1 + subgt r6, r2, r3 + mov r3, #0 + uxthgt r6, r6 +.L1663: + str r3, [fp, #-56] + ldrh r3, [fp, #-56] + ldr r7, .L1665+12 + cmp r6, r3 + bls .L1611 + ldrh ip, [r7, #2] + mov r2, #0 + ldr r3, [fp, #-56] + mov lr, #20 + ldrh r8, [r4, #32] + ldr r0, [r4, #3180] + add ip, ip, r3 + add r3, r7, #14 + mov r7, r2 + b .L1612 +.L1605: + ldrh r1, [r3, #2]! + movw r10, #65535 + add r2, r2, #1 + cmp r1, r10 + mlane r10, lr, r7, r0 + addne r7, r7, #1 + orrne r1, ip, r1, lsl #10 + uxthne r7, r7 + strne r1, [r10, #4] +.L1612: + uxth r1, r2 + cmp r8, r1 + bhi .L1605 + ldrb r2, [r4, #2596] @ zero_extendqisi2 + mov r1, r7 + bl FlashReadPages + mov r3, #0 +.L1662: + str r3, [fp, #-52] + ldrh r3, [fp, #-52] + cmp r7, r3 + ldrls r3, [fp, #-56] + addls r3, r3, #1 + bls .L1663 +.L1610: + ldr r3, [fp, #-52] + mov r8, #20 + mul r8, r8, r3 + ldr r3, [r4, #3180] + add r2, r3, r8 + ldr r3, [r3, r8] + cmn r3, #1 + beq .L1607 + ldr r10, [r2, #12] + movw r3, #61589 + ldrh r2, [r10] + cmp r2, r3 + bne .L1607 + ldr r3, [r10, #8] + cmn r3, #1 + bne .L1608 + mov r2, #736 + ldr r1, .L1665+28 + ldr r0, .L1665+32 + str r3, [fp, #-64] + bl sftl_printk + ldr r3, [fp, #-64] +.L1608: + mov r2, #0 + sub r1, fp, #44 + mov r0, r3 + bl log2phys + ldr r3, [r4, #3180] + ldr r2, [fp, #-44] + add r3, r3, r8 + ldr r1, [r3, #4] + cmp r1, r2 + bne .L1607 + ldr r2, .L1665+44 + ldr r1, .L1665+44 + ldr r0, [r4, #3164] + ldrh r2, [r2] + ldr r3, [r3, #16] + add r2, r2, #1 + strh r2, [r1] @ movhi + mov r1, #20 + ldr r2, [r4, #3284] + str r1, [fp, #-68] + mla r2, r1, r0, r2 + str r3, [r2, #16] + str r2, [fp, #-64] + bl Ftl_get_new_temp_ppa + ldr r2, [fp, #-64] + ldr r3, [r4, #3284] + ldr r1, [fp, #-68] + str r0, [r2, #4] + ldr r2, [r4, #3164] + mla r3, r1, r2, r3 + ldr r2, [r4, #3180] + add r2, r2, r8 + ldr r1, [r2, #8] + str r1, [r3, #8] + mov r1, #1 + ldr r2, [r2, #12] + str r2, [r3, #12] + ldr r3, [fp, #-44] + str r3, [r10, #12] + ldr r3, .L1665+40 + ldrh r2, [r3] + str r3, [fp, #-64] + strh r2, [r10, #2] @ movhi + ldr r2, [r4, #2544] + ldr r0, [r4, #3180] + str r2, [r10, #4] + ldr r2, [r4, #3164] + add r0, r0, r8 + add r2, r2, #1 + str r2, [r4, #3164] + bl FtlGcBufAlloc + ldrb r1, [r4, #2451] @ zero_extendqisi2 + ldr r2, [r4, #3164] + cmp r1, r2 + beq .L1609 + ldr r3, [fp, #-64] + ldrh r3, [r3, #4] + cmp r3, #0 + bne .L1607 +.L1609: + bl Ftl_gc_temp_data_write_back + cmp r0, #0 + beq .L1607 + ldr r3, .L1665 + mov r2, #0 + str r2, [r3, #3264] + movw r2, #3656 + ldrh r0, [r3, r2] + b .L1547 +.L1607: + ldr r3, [fp, #-52] + add r3, r3, #1 + b .L1662 +.L1611: + ldrh r3, [r7, #2] + add r6, r6, r3 + ldr r3, [fp, #-48] + uxth r6, r6 + cmp r3, r6 + strh r6, [r7, #2] @ movhi + bhi .L1613 + ldr r3, [r4, #3164] + cmp r3, #0 + beq .L1614 + bl Ftl_gc_temp_data_write_back + cmp r0, #0 + movne r3, #0 + strne r3, [r4, #3264] + bne .L1664 +.L1614: + ldr r3, .L1665+44 + ldrh r1, [r3] + cmp r1, #0 + bne .L1615 + ldrh r3, [r7] + ldr r2, [r4, #2324] + lsl r3, r3, #1 + ldrh r0, [r2, r3] + cmp r0, #0 + beq .L1615 + strh r1, [r2, r3] @ movhi + ldrh r0, [r7] + bl update_vpc_list + bl l2p_flush + bl FtlVpcTblFlush +.L1615: + mvn r3, #0 + strh r3, [r7] @ movhi +.L1613: + mov r3, #0 + str r3, [r4, #3264] + ldr r3, .L1665+48 + ldrh r3, [r3] + cmp r3, #2 + ldrhls r6, [r4, #102] + bls .L1617 +.L1616: + movw r2, #3656 + ldrh r0, [r4, r2] + cmp r0, #0 + addeq r0, r3, #1 + b .L1547 +.L1666: .align 2 -.L1827: +.L1665: .word .LANCHOR0 - .word 168778952 - .word .LANCHOR3 - .word .LANCHOR0+2588 - .word .LANCHOR0+2396 - .word .LANCHOR0+2576 .word .LANCHOR2 - .size ftl_low_format, .-ftl_low_format + .word .LC113 + .word .LANCHOR0+2588 + .word .LANCHOR0+3192 + .word .LANCHOR0+3156 + .word .LANCHOR0+2348 + .word .LANCHOR1+583 + .word .LC1 + .word .LANCHOR0+2396 + .word .LANCHOR0+2444 + .word .LANCHOR0+3658 + .word .LANCHOR0+2344 + .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 2 .global sftl_init .syntax unified @@ -13150,11 +11603,11 @@ sftl_init: mov ip, sp push {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 - ldr r4, .L1835 + ldr r4, .L1673 mvn r3, #0 - ldr r5, .L1835+4 - ldr r1, .L1835+8 - ldr r0, .L1835+12 + ldr r5, .L1673+4 + ldr r1, .L1673+8 + ldr r0, .L1673+12 str r3, [r5] bl sftl_printk mov r0, r4 @@ -13165,35 +11618,1580 @@ sftl_init: bl FtlFreeSysBlkQueueInit bl FtlLoadBbt cmp r0, #0 - bne .L1833 + bne .L1671 bl FtlSysBlkInit cmp r0, #0 - bne .L1833 + bne .L1671 mov r3, #1 str r3, [r5] movw r3, #2344 ldrh r3, [r4, r3] cmp r3, #15 - bhi .L1833 + bhi .L1671 movw r4, #8129 -.L1832: +.L1670: mov r1, #1 mov r0, #0 bl rk_ftl_garbage_collect subs r4, r4, #1 - bne .L1832 -.L1833: + bne .L1670 +.L1671: mov r0, #0 ldmfd sp, {r4, r5, fp, sp, pc} -.L1836: +.L1674: .align 2 -.L1835: +.L1673: .word .LANCHOR0 .word .LANCHOR2 .word .LC70 .word .LC71 .size sftl_init, .-sftl_init .align 2 + .global sftl_gc + .syntax unified + .arm + .fpu softvfp + .type sftl_gc, %function +sftl_gc: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + mov r1, #1 + mov r0, r1 + bl rk_ftl_garbage_collect + ldmfd sp, {fp, sp, pc} + .size sftl_gc, .-sftl_gc + .align 2 + .global FtlRead + .syntax unified + .arm + .fpu softvfp + .type FtlRead, %function +FtlRead: + @ args = 0, pretend = 0, frame = 52 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #52 + uxtb r0, r0 + mov r6, r1 + str r2, [fp, #-52] + cmp r0, #16 + mov r9, r3 + bne .L1677 + mov r2, r3 + ldr r1, [fp, #-52] + add r0, r6, #256 + bl FtlVendorPartRead + str r0, [fp, #-48] +.L1676: + ldr r0, [fp, #-48] + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1677: + ldr r3, [fp, #-52] + ldr r10, .L1711 + add r3, r1, r3 + str r3, [fp, #-60] + ldr r2, [fp, #-60] + ldr r3, [r10, #140] + cmp r2, r3 + mvnhi r3, #0 + strhi r3, [fp, #-48] + bhi .L1676 + ldr r3, .L1711+4 + ldr r7, [r3] + cmn r7, #1 + streq r7, [fp, #-48] + beq .L1676 + ldrh r4, [r10, #58] + mov r0, r6 + mov r8, #0 + mov r7, r10 + mov r5, r8 + mov r1, r4 + bl __udivsi3 + ldr r3, [fp, #-60] + mov r1, r4 + str r0, [fp, #-64] + sub r0, r3, #1 + bl __udivsi3 + ldr r3, [fp, #-64] + ldr r2, [fp, #-52] + ldr r4, [fp, #-64] + rsb r3, r3, #1 + str r0, [fp, #-68] + add r3, r3, r0 + str r8, [fp, #-76] + str r3, [fp, #-56] + ldr r3, [r10, #2536] + str r8, [fp, #-72] + str r8, [fp, #-48] + add r3, r3, r2 + ldr r2, [fp, #-56] + str r3, [r10, #2536] + ldr r3, [r10, #2508] + add r3, r3, r2 + str r3, [r10, #2508] +.L1679: + ldr r3, [fp, #-56] + cmp r3, #0 + bne .L1696 + ldr r3, .L1711 + movw r2, #3206 + ldrh r2, [r3, r2] + cmp r2, #0 + bne .L1697 + movw r2, #2344 + ldrh r3, [r3, r2] + cmp r3, #31 + bhi .L1676 +.L1697: + mov r1, #1 + mov r0, #0 + bl rk_ftl_garbage_collect + b .L1676 +.L1696: + sub r1, fp, #44 + mov r2, #0 + mov r0, r4 + bl log2phys + ldr r1, [fp, #-44] + cmn r1, #1 + moveq r10, #0 + beq .L1681 + ldr r2, [r7, #3280] + mov r0, #20 + ldr r3, [fp, #-64] + ldrh r10, [r7, #58] + mla r2, r0, r5, r2 + cmp r4, r3 + str r1, [r2, #4] + bne .L1685 + ldr r1, [r7, #3304] + mov r0, r6 + str r2, [fp, #-80] + str r1, [r2, #8] + mov r1, r10 + bl __umodsi3 + ldr r3, [fp, #-52] + sub r1, r10, r0 + ldr r2, [fp, #-80] + str r0, [fp, #-72] + cmp r3, r1 + movcs r3, r1 + cmp r3, r10 + str r3, [fp, #-76] + streq r9, [r2, #8] +.L1686: + ldrh r1, [r7, #112] + ldr r0, [r7, #3328] + str r4, [r2, #16] + mul r1, r5, r1 + add r5, r5, #1 + bic r1, r1, #3 + add r1, r0, r1 + str r1, [r2, #12] + b .L1684 +.L1683: + mla r0, r0, r4, r10 + ldr r2, [fp, #-60] + cmp r2, r0 + movhi r2, #1 + movls r2, #0 + cmp r6, r0 + movhi r2, #0 + cmp r2, #0 + beq .L1682 + sub r0, r0, r6 + mov r1, #512 + add r0, r9, r0, lsl #9 + bl __memzero +.L1682: + add r10, r10, #1 +.L1681: + ldrh r0, [r7, #58] + cmp r10, r0 + bcc .L1683 +.L1684: + ldr r3, [fp, #-56] + add r4, r4, #1 + subs r3, r3, #1 + str r3, [fp, #-56] + beq .L1688 + ldrh r2, [r7, #32] + cmp r5, r2, lsl #2 + bne .L1679 +.L1688: + cmp r5, #0 + beq .L1679 + mov r2, #0 + mov r1, r5 + ldr r0, [r7, #3280] + mov r10, #0 + bl FlashReadPages + lsl r3, r8, #9 + str r3, [fp, #-88] + ldr r3, [fp, #-72] + lsl r3, r3, #9 + str r3, [fp, #-80] + ldr r3, [fp, #-76] + lsl r3, r3, #9 + str r3, [fp, #-84] +.L1695: + mov ip, #20 + ldr r2, [r7, #3280] + mul ip, ip, r10 + ldr r3, [fp, #-64] + add r2, r2, ip + ldr r1, [r2, #16] + cmp r3, r1 + bne .L1690 + ldr r1, [r2, #8] + ldr r2, [r7, #3304] + cmp r1, r2 + bne .L1691 + ldr r3, [fp, #-80] + mov r0, r9 + ldr r2, [fp, #-84] + str ip, [fp, #-92] + add r1, r1, r3 +.L1710: + bl ftl_memcpy + ldr ip, [fp, #-92] +.L1691: + ldr r1, [r7, #3280] + add r2, r1, ip + ldr r0, [r2, #12] + ldr lr, [r2, #16] + ldr r0, [r0, #8] + cmp lr, r0 + ldrne r0, [r7, #2708] + addne r0, r0, #1 + strne r0, [r7, #2708] + ldr lr, [r1, ip] + cmn lr, #1 + ldreq r0, [r7, #2708] + streq lr, [fp, #-48] + addeq r0, r0, #1 + streq r0, [r7, #2708] + ldr r1, [r1, ip] + cmp r1, #256 + bne .L1694 + ldr r0, [r2, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1694: + add r10, r10, #1 + cmp r5, r10 + bne .L1695 + mov r5, #0 + b .L1679 +.L1685: + ldr r3, [fp, #-68] + cmp r4, r3 + bne .L1687 + ldr r1, [r7, #3308] + ldr r3, [fp, #-60] + str r1, [r2, #8] + mul r1, r10, r4 + sub r8, r3, r1 + cmp r10, r8 + subeq r1, r1, r6 + addeq r1, r9, r1, lsl #9 + streq r1, [r2, #8] + b .L1686 +.L1687: + mul r10, r4, r10 + sub r10, r10, r6 + add r10, r9, r10, lsl #9 + str r10, [r2, #8] + b .L1686 +.L1690: + ldr r3, [fp, #-68] + cmp r3, r1 + bne .L1691 + ldr r1, [r2, #8] + ldr r2, [r7, #3308] + cmp r1, r2 + bne .L1691 + ldrh r0, [r7, #58] + str ip, [fp, #-92] + ldr r2, [fp, #-88] + mul r0, r3, r0 + sub r0, r0, r6 + add r0, r9, r0, lsl #9 + b .L1710 +.L1712: + .align 2 +.L1711: + .word .LANCHOR0 + .word .LANCHOR2 + .size FtlRead, .-FtlRead + .align 2 + .global sftl_read + .syntax unified + .arm + .fpu softvfp + .type sftl_read, %function +sftl_read: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + mov r3, r2 + mov r2, r1 + mov r1, r0 + mov r0, #0 + bl FtlRead + ldmfd sp, {fp, sp, pc} + .size sftl_read, .-sftl_read + .align 2 + .global sftl_vendor_read + .syntax unified + .arm + .fpu softvfp + .type sftl_vendor_read, %function +sftl_vendor_read: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + mov r3, r2 + mov r2, r1 + mov r1, r0 + mov r0, #16 + bl FtlRead + ldmfd sp, {fp, sp, pc} + .size sftl_vendor_read, .-sftl_vendor_read + .align 2 + .global FtlWrite + .syntax unified + .arm + .fpu softvfp + .type FtlWrite, %function +FtlWrite: + @ args = 0, pretend = 0, frame = 68 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #68 + uxtb r0, r0 + mov r9, r1 + str r2, [fp, #-80] + cmp r0, #16 + str r3, [fp, #-84] + bne .L1716 + mov r2, r3 + ldr r1, [fp, #-80] + add r0, r9, #256 + bl FtlVendorPartWrite +.L1715: + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1716: + ldr r3, [fp, #-80] + ldr r4, .L1767 + add r6, r1, r3 + ldr r3, [r4, #140] + cmp r6, r3 + mvnhi r0, #0 + bhi .L1715 + ldr r5, .L1767+4 + ldr r0, [r5] + cmn r0, #1 + beq .L1715 + ldrh r7, [r4, #58] + mov r3, #2048 + str r3, [r4, #3664] + mov r0, r9 + mov r1, r7 + bl __udivsi3 + mov r1, r7 + str r0, [fp, #-76] + sub r0, r6, #1 + bl __udivsi3 + ldr r2, [fp, #-76] + str r0, [fp, #-92] + sub r3, r0, r2 + ldr r2, [fp, #-80] + str r3, [fp, #-96] + add r3, r3, #1 + str r3, [fp, #-72] + ldr r3, [r4, #2532] + add r3, r3, r2 + ldr r2, [fp, #-72] + str r3, [r4, #2532] + ldr r3, [r4, #2516] + add r3, r3, r2 + str r3, [r4, #2516] + ldr r3, [r5, #8] + ldr r4, .L1767+8 + cmp r3, #0 + beq .L1718 + ldrh r3, [r4, #4] + add r0, r4, #48 + cmp r3, #0 + moveq r4, r0 +.L1718: + ldr r5, [fp, #-76] + ldr r10, .L1767 +.L1719: + ldr r3, [fp, #-72] + cmp r3, #0 + bne .L1747 + mov r0, r3 + ldr r1, [fp, #-96] + bl rk_ftl_garbage_collect + movw r3, #2344 + ldrh r3, [r10, r3] + cmp r3, #5 + bls .L1748 +.L1750: + mov r0, #0 + b .L1715 +.L1747: + ldrb r2, [r4, #6] @ zero_extendqisi2 + ldrh r3, [r10, #32] + cmp r2, r3 + bcc .L1720 + movw r2, #1011 + ldr r1, .L1767+12 + ldr r0, .L1767+16 + bl sftl_printk +.L1720: + ldrh r2, [r4, #4] + cmp r2, #0 + bne .L1721 + ldr r3, .L1767+8 + ldr r6, .L1767+4 + cmp r4, r3 + bne .L1722 + add r0, r4, #48 + ldrh r7, [r0, #4] + cmp r7, #0 + bne .L1723 + bl allocate_new_data_superblock + str r7, [r6, #8] +.L1723: + ldr r0, .L1767+8 + bl allocate_new_data_superblock + ldr r4, .L1767+8 + ldr r3, [r6, #8] + add r0, r4, #48 + cmp r3, #0 + movne r4, r0 +.L1724: + ldrh r3, [r4, #4] + cmp r3, #0 + bne .L1721 + mov r0, r4 + bl allocate_new_data_superblock +.L1721: + ldrh r3, [r4, #4] + ldr r2, [fp, #-72] + cmp r3, r2 + movcs r3, r2 + ldrb r2, [r4, #7] @ zero_extendqisi2 + lsl r2, r2, #2 + cmp r3, r2 + movcs r3, r2 + ldrb r2, [r4, #6] @ zero_extendqisi2 + str r3, [fp, #-108] + ldrh r3, [r10, #32] + cmp r2, r3 + bcc .L1725 + movw r2, #1044 + ldr r1, .L1767+12 + ldr r0, .L1767+16 + bl sftl_printk +.L1725: + mov r3, #0 +.L1766: + str r3, [fp, #-68] + ldr r3, [fp, #-68] + ldr r2, [fp, #-108] + cmp r3, r2 + bne .L1745 +.L1727: + mov r3, r4 + mov r2, #0 + ldr r1, [fp, #-68] + ldr r0, [r10, #3288] + bl FtlProgPages + ldr r3, [fp, #-68] + ldr r2, [fp, #-72] + cmp r3, r2 + bls .L1746 + movw r2, #1121 + ldr r1, .L1767+12 + ldr r0, .L1767+16 + bl sftl_printk +.L1746: + ldr r3, [fp, #-72] + ldr r2, [fp, #-68] + sub r3, r3, r2 + str r3, [fp, #-72] + b .L1719 +.L1722: + str r2, [r6, #8] + ldrh r2, [r3, #4] + cmp r2, #0 + movne r4, r3 + bne .L1721 + mov r0, r4 + bl allocate_new_data_superblock + b .L1724 +.L1745: + ldrh r3, [r4, #4] + cmp r3, #0 + beq .L1727 + mov r2, #0 + sub r1, fp, #64 + mov r0, r5 + mov r7, #20 + bl log2phys + mov r0, r4 + bl get_new_active_ppa + ldrh r2, [r10, #112] + ldr r1, [fp, #-68] + ldr r3, [fp, #-68] + mul r1, r2, r1 + mul r7, r7, r3 + ldr r3, [r10, #3288] + bic r1, r1, #3 + str r1, [fp, #-100] + add r3, r3, r7 + ldr r1, [r10, #3328] + str r0, [r3, #4] + ldr r0, [fp, #-100] + str r1, [fp, #-104] + str r5, [r3, #16] + add r8, r1, r0 + mov r1, #0 + str r8, [r3, #12] + mov r0, r8 + bl ftl_memset + ldr r3, [fp, #-76] + ldr r2, [fp, #-92] + ldrh r6, [r10, #58] + cmp r5, r2 + cmpne r5, r3 + bne .L1728 + cmp r5, r3 + bne .L1729 + mov r1, r6 + mov r0, r9 + bl __umodsi3 + ldr r3, [fp, #-80] + sub r6, r6, r0 + str r0, [fp, #-88] + cmp r6, r3 + movcs r6, r3 +.L1730: + ldrh r3, [r10, #58] + cmp r6, r3 + ldr r3, [fp, #-76] + bne .L1731 + cmp r5, r3 + ldr r3, [r10, #3288] + add r7, r3, r7 + ldreq r3, [fp, #-84] + streq r3, [r7, #8] + beq .L1733 +.L1763: + mul r6, r5, r6 + ldr r3, [fp, #-84] + sub r6, r6, r9 + add r6, r3, r6, lsl #9 + str r6, [r7, #8] + b .L1733 +.L1729: + ldr r3, [fp, #-80] + add r2, r9, r3 + smulbb r3, r6, r5 + sub r6, r2, r3 + mov r3, #0 + uxth r6, r6 + str r3, [fp, #-88] + b .L1730 +.L1731: + cmp r5, r3 + ldr r3, [r10, #3288] + ldreq r2, [r10, #3304] + ldrne r2, [r10, #3308] + add r3, r3, r7 + str r2, [r3, #8] + ldr r3, [fp, #-64] + cmn r3, #1 + beq .L1736 + str r3, [fp, #-56] + mov r1, #1 + ldr r3, [r10, #3288] + sub r0, fp, #60 + str r5, [fp, #-44] + add r3, r3, r7 + ldr r2, [r3, #8] + ldr r3, [r3, #12] + str r2, [fp, #-52] + mov r2, #0 + str r3, [fp, #-48] + bl FlashReadPages + ldr r3, [fp, #-60] + cmn r3, #1 + ldreq r3, [r10, #2708] + addeq r3, r3, #1 + streq r3, [r10, #2708] + beq .L1740 + ldr r3, [r8, #8] + cmp r5, r3 + beq .L1739 + ldr r3, [r10, #2708] + mov r2, r5 + ldr r0, .L1767+20 + add r3, r3, #1 + str r3, [r10, #2708] + ldr r1, [r8, #8] + bl sftl_printk +.L1739: + ldr r3, [r8, #8] + cmp r5, r3 + beq .L1740 + movw r2, #1097 + ldr r1, .L1767+12 + ldr r0, .L1767+16 + bl sftl_printk +.L1740: + ldr r3, [fp, #-76] + lsl r2, r6, #9 + cmp r5, r3 + bne .L1741 + ldr r3, [r10, #3288] + ldr r1, [fp, #-84] + add r7, r3, r7 + ldr r3, [fp, #-88] + ldr r0, [r7, #8] + add r0, r0, r3, lsl #9 +.L1764: + bl ftl_memcpy +.L1733: + ldrb r2, [r4, #6] @ zero_extendqisi2 + ldrh r3, [r10, #32] + cmp r2, r3 + bcc .L1742 + movw r2, #1112 + ldr r1, .L1767+12 + ldr r0, .L1767+16 + bl sftl_printk +.L1742: + ldr r3, .L1767+24 + ldr r2, [fp, #-104] + ldr r1, [fp, #-100] + strh r3, [r2, r1] @ movhi + ldr r3, [r10, #2544] + str r5, [r8, #8] + add r5, r5, #1 + str r3, [r8, #4] + add r3, r3, #1 + cmn r3, #1 + moveq r3, #0 + str r3, [r10, #2544] + ldr r3, [fp, #-64] + str r3, [r8, #12] + ldrh r3, [r4] + strh r3, [r8, #2] @ movhi + ldr r3, [fp, #-68] + add r3, r3, #1 + b .L1766 +.L1736: + ldr r3, [r10, #3288] + mov r1, #0 + ldrh r2, [r10, #110] + add r3, r3, r7 + ldr r0, [r3, #8] + bl ftl_memset + b .L1740 +.L1741: + ldrh r1, [r10, #58] + ldr r3, [r10, #3288] + mul r1, r5, r1 + add r7, r3, r7 + ldr r3, [fp, #-84] + ldr r0, [r7, #8] + sub r1, r1, r9 + add r1, r3, r1, lsl #9 + b .L1764 +.L1728: + ldr r3, [r10, #3288] + add r7, r3, r7 + b .L1763 +.L1748: + ldr r5, .L1767+28 + mov r4, #256 + ldr r6, .L1767+32 +.L1751: + ldrh r3, [r5] + movw r2, #65535 + cmp r3, r2 + bne .L1749 + ldrh r2, [r6] + cmp r2, r3 + bne .L1749 + mov r0, #0 + bl List_get_gc_head_node + uxth r0, r0 + bl FtlGcRefreshBlock +.L1749: + ldr r3, .L1767+36 + mov r1, #1 + mov r2, #128 + mov r0, r1 + strh r2, [r3] @ movhi + strh r2, [r3, #-2] @ movhi + bl rk_ftl_garbage_collect + mov r1, #1 + mov r0, #0 + bl rk_ftl_garbage_collect + ldr r3, .L1767+40 + ldrh r3, [r3] + cmp r3, #2 + bhi .L1750 + subs r4, r4, #1 + bne .L1751 + b .L1750 +.L1768: + .align 2 +.L1767: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+2348 + .word .LANCHOR1+606 + .word .LC1 + .word .LC114 + .word -3947 + .word .LANCHOR0+2588 + .word .LANCHOR0+3202 + .word .LANCHOR0+3150 + .word .LANCHOR0+2344 + .size FtlWrite, .-FtlWrite + .global __modsi3 + .align 2 + .global sftl_write + .syntax unified + .arm + .fpu softvfp + .type sftl_write, %function +sftl_write: + @ args = 0, pretend = 0, frame = 124 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #128 + add r5, r0, r1 + sub r6, r5, #1 + mov r3, r1 + cmp r6, #63 + mov r9, r0 + movhi r3, #0 + movls r3, #1 + cmp r0, #576 + orrhi r3, r3, #1 + str r1, [fp, #-120] + cmp r3, #0 + str r2, [fp, #-140] + ldr r4, .L1805 + beq .L1770 + ldr r3, [r4, #3668] + cmp r3, #0 + beq .L1771 + ldr r10, [r4, #3672] + ldr r3, .L1805+4 + ldr r2, [r10] + cmp r2, r3 + beq .L1772 +.L1789: + ldr r4, .L1805 + mov r3, #0 + ldr r0, [r4, #3672] + str r3, [r4, #3668] + bl kfree + ldr r0, [r4, #3676] + bl kfree +.L1771: + ldr r3, [fp, #-140] + mov r1, r9 + ldr r2, [fp, #-120] + mov r0, #0 + bl FtlWrite + sub sp, fp, #40 + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1772: + ldrh r5, [r4, #14] + add r0, r10, #262144 + ldrh r4, [r4, #10] + mov r3, #0 + movw r2, #65535 +.L1776: + ldr r1, [r0, #-4] + cmp r1, #0 + bne .L1773 + ldr r1, [r10, r3, lsl #2] + add r3, r3, #1 + cmp r3, #4096 + sub r2, r2, #1 + movhi r3, #0 + cmp r2, #4096 + str r1, [r0, #-4]! + bne .L1776 + mov r3, #512 + str r3, [fp, #-108] + b .L1775 +.L1773: + add r3, r2, #127 + ldr r0, .L1805+8 + lsr r3, r3, #7 + str r3, [fp, #-108] + bl sftl_printk +.L1775: + uxtb r5, r5 + smulbb r5, r5, r4 + ldr r4, .L1805 + uxth r3, r5 + mov r5, #0 + str r3, [fp, #-112] + sub r0, r3, #1 + mov r1, r3 + ldr r3, [fp, #-108] + add r0, r0, r3 + bl __udivsi3 + ldr r2, [fp, #-112] + str r0, [fp, #-116] + str r0, [fp, #-136] + str r5, [fp, #-128] + mul r3, r0, r2 + str r3, [fp, #-124] + ldr r3, [fp, #-108] + lsl r3, r3, #7 + str r3, [fp, #-152] + b .L1788 +.L1796: + str r3, [fp, #-136] +.L1788: + mov r1, #512 + ldr r0, [r4, #3676] + bl __memzero + ldrh r8, [r4, #14] + mov r0, r5 + ldrh r6, [r4, #10] + mov r1, r8 + uxtb r7, r8 + uxth r3, r7 + str r3, [fp, #-132] + ldrh r3, [fp, #-132] + smulbb r6, r6, r3 + bl __udivsi3 + ldr r3, [r4, #3248] + mov r1, r0 + mov r0, #0 + uxth r6, r6 + blx r3 + ldr r3, [fp, #-124] + cmp r3, r6 + bls .L1777 + mov r1, r8 + add r0, r6, r5 + bl __udivsi3 + ldr r3, [r4, #3248] + mov r1, r0 + mov r0, #0 + blx r3 +.L1777: + mov r1, r6 + mov r0, r5 + bl __umodsi3 + mov r6, #0 + mov r8, r0 + sub r3, r5, r0 + str r3, [fp, #-144] +.L1778: + ldr r3, [fp, #-124] + cmp r3, r6 + bhi .L1779 + ldrb r7, [r4, #14] @ zero_extendqisi2 + mov r0, r5 + ldr r3, [r4, #3676] + mov r6, #0 + ldrh r1, [r4, #10] + str r3, [fp, #-148] + uxth r3, r7 + str r3, [fp, #-144] + ldrh r3, [fp, #-144] + smulbb r1, r1, r3 + uxth r1, r1 + bl __umodsi3 + mov r1, r7 + sub r3, r5, r0 + str r0, [fp, #-132] + ldrh r0, [fp, #-132] + str r3, [fp, #-156] + bl __modsi3 + uxth r3, r0 +.L1780: + ldr r2, [fp, #-108] + cmp r6, r2 + bcs .L1784 + ldr r2, [fp, #-144] + mov r1, r7 + str r3, [fp, #-164] + sub r8, r2, r3 + ldr r3, [fp, #-148] + uxth r8, r8 + add r2, r3, r6, lsl #9 + ldr r3, [fp, #-132] + str r2, [fp, #-160] + add r0, r3, r6 + bl __udivsi3 + ldr r2, [fp, #-156] + uxth r0, r0 + ldr r3, [fp, #-164] + mov r1, r7 + add r3, r3, r2 + mla r0, r7, r0, r3 + bl __udivsi3 + ldr ip, [r4, #3256] + mov r1, r0 + sub r3, fp, #104 + ldr r2, [fp, #-160] + mov r0, #0 + blx ip + cmn r0, #1 + bne .L1781 +.L1784: + ldr r0, [r4, #3676] + mov r3, r10 + mov r6, #0 +.L1782: + mov r8, r3 + ldr r1, [r0, r6, lsl #2] + ldr r2, [r8] + lsl r7, r6, #2 + add r3, r3, #4 + cmp r1, r2 + beq .L1785 + mov r1, #512 + bl __memzero + ldr r2, [r4, #3676] + mov r1, r5 + str r6, [sp] + ldr r0, .L1805+12 + ldr r3, [r8] + ldr r2, [r2, r7] + bl sftl_printk + ldr r3, [r4, #3248] + mov r1, r5 + mov r0, #0 + blx r3 + ldr r3, [fp, #-116] + cmp r3, #1 + bls .L1795 + ldr r2, [fp, #-112] + mov r0, #0 + ldr r3, [r4, #3248] + add r1, r2, r5 + blx r3 +.L1795: + ldr r2, [fp, #-136] + ldr r3, [fp, #-116] + add r3, r3, r2 + ldr r2, [fp, #-124] + add r5, r5, r2 + ldr r2, [fp, #-136] + cmp r2, #15 + bls .L1796 + b .L1789 +.L1779: + mov r1, r7 + add r0, r8, r6 + bl __udivsi3 + uxth ip, r0 + add r2, r10, r6, lsl #9 + ldr r0, [fp, #-144] + mul r3, r7, ip + mov r1, r7 + str ip, [fp, #-156] + str r2, [fp, #-148] + str r3, [fp, #-104] + movw r3, #61424 + str r3, [fp, #-100] + bl __udivsi3 + ldr ip, [fp, #-156] + sub r3, fp, #104 + ldr r2, [fp, #-148] + add r1, r0, ip + mov r0, #0 + ldr ip, [r4, #3252] + blx ip + ldr r3, [fp, #-132] + add r6, r3, r6 + uxth r6, r6 + b .L1778 +.L1781: + add r6, r8, r6 + mov r3, #0 + uxth r6, r6 + b .L1780 +.L1785: + ldr r2, [fp, #-152] + add r6, r6, #1 + cmp r6, r2 + bne .L1782 + ldr r3, [fp, #-128] + add r3, r3, #1 + cmp r3, #5 + str r3, [fp, #-128] + bls .L1795 + b .L1789 +.L1770: + cmp r0, #64 + bne .L1790 + mov r0, #262144 + bl ftl_malloc + str r0, [r4, #3672] + mov r0, #262144 + bl ftl_malloc + ldr r3, [r4, #3672] + str r0, [r4, #3676] + cmp r0, #0 + cmpne r3, #0 + beq .L1791 + mov r2, #1 + mov r1, #262144 + mov r0, r3 + str r2, [r4, #3668] + bl __memzero +.L1790: + cmp r9, #63 + ldr r0, [r4, #3672] + ldrls r3, [fp, #-120] + rsbls r1, r9, #64 + ldrhi r3, .L1805+16 + ldrhi r2, [fp, #-120] + subls r2, r3, r1 + ldrls r3, [fp, #-140] + addhi r3, r9, r3 + ldrhi r1, [fp, #-140] + addhi r0, r0, r3, lsl #9 + addls r1, r3, r1, lsl #9 + cmp r6, #576 + subhi r2, r2, r5 + subhi r2, r2, #444 + subhi r2, r2, #3 + lsl r2, r2, #9 + bl ftl_memcpy + b .L1771 +.L1791: + ldr r1, .L1805+20 + ldr r0, .L1805+24 + bl sftl_printk + b .L1790 +.L1806: + .align 2 +.L1805: + .word .LANCHOR0 + .word -52655045 + .word .LC115 + .word .LC116 + .word 8388544 + .word .LANCHOR1+615 + .word .LC117 + .size sftl_write, .-sftl_write + .align 2 + .global sftl_vendor_write + .syntax unified + .arm + .fpu softvfp + .type sftl_vendor_write, %function +sftl_vendor_write: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {fp, ip, lr, pc} + sub fp, ip, #4 + mov r3, r2 + mov r2, r1 + mov r1, r0 + mov r0, #16 + bl FtlWrite + ldmfd sp, {fp, sp, pc} + .size sftl_vendor_write, .-sftl_vendor_write + .align 2 + .global FtlMakeBbt + .syntax unified + .arm + .fpu softvfp + .type FtlMakeBbt, %function +FtlMakeBbt: + @ args = 0, pretend = 0, frame = 4 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + sub sp, sp, #4 + mov r7, #0 + ldr r8, .L1827 + bl FtlBbtMemInit + bl FtlLoadFactoryBbt + sub r5, r8, #180 + sub r9, r8, #18 + mov r4, r5 +.L1809: + ldrh r3, [r5, #54] + cmp r7, r3 + bcc .L1815 + mov r0, #0 +.L1816: + ldrh r2, [r4, #114] + uxth r3, r0 + add r5, r0, #1 + cmp r2, r3 + bhi .L1817 + ldrh r5, [r4, #164] + movw r6, #65535 + sub r5, r5, #1 + uxth r5, r5 +.L1818: + ldrh r3, [r4, #164] + sub r3, r3, #48 + cmp r5, r3 + ble .L1822 + mov r0, r5 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L1819 + mov r0, r5 + bl FlashTestBlk + cmp r0, #0 + beq .L1820 + mov r0, r5 + bl FtlBbmMapBadBlock +.L1819: + sub r5, r5, #1 + uxth r5, r5 + b .L1818 +.L1815: + ldrh r3, [r9, #2]! + movw r2, #65535 + ldr r0, [r5, #3292] + ldr r10, [r5, #3324] + cmp r3, r2 + str r0, [r5, #3452] + str r10, [r5, #3456] + beq .L1810 + ldrh ip, [r5, #98] + mov r2, #1 + mov r1, r2 + ldr r0, .L1827+4 + mla ip, r7, ip, r3 + lsl r3, ip, #10 + str ip, [fp, #-44] + str r3, [r5, #3448] + bl FlashReadPages + ldrh r2, [r5, #98] + ldr r1, [r5, #3452] + ldr r0, [r8] + add r2, r2, #7 + asr r2, r2, #3 + bl ftl_memcpy + ldr ip, [fp, #-44] +.L1811: + uxth r0, ip + add r7, r7, #1 + add r8, r8, #4 + bl FtlBbmMapBadBlock + b .L1809 +.L1810: + mov r1, r7 + bl FlashGetBadBlockList + ldr r1, [r8] + ldr r0, [r5, #3452] + bl FtlBbt2Bitmap + ldrh r6, [r5, #98] +.L1813: + sub r6, r6, #1 + uxth r6, r6 +.L1812: + ldrh r0, [r4, #98] + smlabb r0, r0, r7, r6 + uxth r0, r0 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L1813 + mov r1, #16 + ldr r0, [r4, #3324] + strh r6, [r9] @ movhi + bl __memzero + mov r1, #4096 + ldr r0, [r4, #3292] + bl __memzero + ldr r3, .L1827+8 + strh r3, [r10] @ movhi + mov r3, #0 + str r3, [r10, #4] + ldrh r3, [r9] + ldrh ip, [r4, #98] + strh r3, [r10, #2] @ movhi + ldrh r3, [r9] + ldr r1, [r8] + ldr r0, [r4, #3452] + mla ip, r7, ip, r3 + lsl r3, ip, #10 + str ip, [fp, #-44] + str r3, [r4, #3448] + ldr r3, .L1827+12 + ldrh r2, [r3] + lsl r2, r2, #2 + bl ftl_memcpy + mov r2, #1 + ldr r0, .L1827+4 + mov r1, r2 + bl FlashEraseBlocks + mov r3, #1 + ldr r0, .L1827+4 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldr r3, [r4, #3444] + ldr ip, [fp, #-44] + cmn r3, #1 + bne .L1811 + uxth r0, ip + bl FtlBbmMapBadBlock + b .L1812 +.L1817: + uxth r0, r0 + bl FtlBbmMapBadBlock + mov r0, r5 + b .L1816 +.L1820: + ldrh r3, [r4, #152] + cmp r3, r6 + strheq r5, [r4, #152] @ movhi + beq .L1819 +.L1821: + strh r5, [r4, #156] @ movhi +.L1822: + ldrh r3, [r4, #152] + mov r5, #0 + ldr r0, [r4, #3260] + mov r1, #1 + str r5, [r4, #160] + mov r2, #2 + strh r5, [r4, #154] @ movhi + lsl r3, r3, #10 + str r3, [r0, #4] + ldrh r3, [r4, #156] + lsl r3, r3, #10 + str r3, [r0, #24] + bl FlashEraseBlocks + ldrh r0, [r4, #152] + bl FtlBbmMapBadBlock + ldrh r0, [r4, #156] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldr r3, [r4, #160] + ldrh r2, [r4, #156] + strh r5, [r4, #154] @ movhi + add r3, r3, #1 + str r3, [r4, #160] + ldrh r3, [r4, #152] + strh r2, [r4, #152] @ movhi + strh r3, [r4, #156] @ movhi + bl FtlBbmTblFlush + mov r0, r5 + ldmib sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1828: + .align 2 +.L1827: + .word .LANCHOR0+180 + .word .LANCHOR0+3444 + .word -3872 + .word .LANCHOR0+3380 + .size FtlMakeBbt, .-FtlMakeBbt + .align 2 + .global ftl_low_format + .syntax unified + .arm + .fpu softvfp + .type ftl_low_format, %function +ftl_low_format: + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + mov ip, sp + push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} + sub fp, ip, #4 + ldr r4, .L1853 + mov r3, #0 + ldrh r0, [r4, #36] + str r3, [r4, #2540] + str r3, [r4, #2544] + bl FtlFreeSysBlkQueueInit + bl FtlLoadBbt + cmp r0, #0 + beq .L1830 + bl FtlMakeBbt +.L1830: + ldr r0, .L1853+4 + mov r2, #0 +.L1831: + ldrh r1, [r4, #58] + uxth r3, r2 + add r2, r2, #1 + cmp r3, r1, lsl #7 + blt .L1832 + ldrh r6, [r4, #40] + mov r5, #0 +.L1833: + ldrh r3, [r4, #42] + cmp r3, r6 + bhi .L1834 + ldrh r1, [r4, #32] + sub r3, r5, #3 + cmp r3, r1, lsl #1 + bge .L1835 +.L1839: + mov r0, #0 + mov r6, r0 +.L1836: + ldrh r2, [r4, #40] + uxth r3, r0 + add r5, r0, #1 + cmp r2, r3 + bhi .L1840 + ldrh r3, [r4, #42] + movw r9, #2572 + ldrh r5, [r4, #32] + ldr r10, [r4, #44] + str r3, [r4, #3276] + mov r1, r5 + mov r0, r10 + bl __udivsi3 + ubfx r7, r0, #5, #16 + mov r8, r0 + add r3, r7, #36 + str r0, [r4, #2504] + strh r3, [r4, r9] @ movhi + mov r3, #24 + mul r3, r3, r5 + cmp r6, r3 + ble .L1841 + mov r1, r5 + sub r0, r10, r6 + bl __udivsi3 + str r0, [r4, #2504] + lsr r0, r0, #5 + add r0, r0, #24 + strh r0, [r4, r9] @ movhi +.L1841: + ldrh r3, [r4, #94] + cmp r3, #0 + beq .L1843 + movw r2, #2572 + ldrh r1, [r4, r2] + add r1, r1, r3, lsr #1 + strh r1, [r4, r2] @ movhi + mul r1, r5, r3 + cmp r6, r1 + addlt r3, r3, #32 + strlt r8, [r4, #2504] + addlt r3, r7, r3 + strhlt r3, [r4, r2] @ movhi +.L1843: + movw r3, #2572 + mvn r6, #0 + ldrh r2, [r4, r3] + ldr r3, [r4, #2504] + sub r3, r3, r2 + mul r5, r5, r3 + ldrh r3, [r4, #102] + str r5, [r4, #3464] + mul r5, r5, r3 + ldrh r3, [r4, #58] + str r5, [r4, #2504] + mul r5, r5, r3 + str r5, [r4, #140] + bl FtlBbmTblFlush + ldrh r2, [r4, #42] + mov r1, #0 + ldr r0, [r4, #2324] + ldr r5, .L1853+8 + lsl r2, r2, #1 + sub r5, r5, #240 + bl ftl_memset + movw r2, #2588 + mov r3, #0 + strh r6, [r4, r2] @ movhi + movw r2, #2348 + strh r3, [r4, r2] @ movhi + mov r1, #255 + ldrh r2, [r4, #40] + strh r3, [r5, #242] @ movhi + mov r7, r5 + str r3, [r4, #2500] + strb r3, [r4, #2594] + strb r3, [r4, #2596] + lsr r2, r2, #3 + strh r3, [r5, #2] @ movhi + strb r3, [r4, #2354] + mov r3, #1 + ldr r0, [r4, #24] + strb r3, [r4, #2356] + bl ftl_memset +.L1845: + mov r0, r7 + bl make_superblock + ldrb r3, [r4, #2355] @ zero_extendqisi2 + cmp r3, #0 + ldrh r3, [r5] + bne .L1846 + ldr r2, [r4, #2324] + lsl r3, r3, #1 + strh r6, [r2, r3] @ movhi + ldrh r3, [r5] + add r3, r3, #1 + strh r3, [r5] @ movhi + b .L1845 +.L1832: + ldr ip, [r4, #3304] + mvn r1, r3 + orr r1, r3, r1, lsl #16 + str r1, [ip, r3, lsl #2] + ldr r1, [r4, #3308] + str r0, [r1, r3, lsl #2] + b .L1831 +.L1834: + mov r0, r6 + mov r1, #1 + bl FtlLowFormatEraseBlock + add r6, r6, #1 + add r5, r5, r0 + uxth r5, r5 + uxth r6, r6 + b .L1833 +.L1835: + mov r0, r5 + bl __udivsi3 + ldr r3, [r4, #132] + add r0, r0, r3 + uxth r0, r0 + bl FtlSysBlkNumInit + ldrh r0, [r4, #36] + bl FtlFreeSysBlkQueueInit + ldrh r5, [r4, #40] +.L1837: + ldrh r3, [r4, #42] + cmp r3, r5 + bls .L1839 + mov r0, r5 + mov r1, #1 + add r5, r5, #1 + bl FtlLowFormatEraseBlock + uxth r5, r5 + b .L1837 +.L1840: + mov r1, #0 + uxth r0, r0 + bl FtlLowFormatEraseBlock + add r6, r6, r0 + mov r0, r5 + uxth r6, r6 + b .L1836 +.L1846: + ldr r2, [r4, #2540] + lsl r3, r3, #1 + ldrh r1, [r5, #4] + mvn r6, #0 + str r2, [r4, #2360] + add r2, r2, #1 + str r2, [r4, #2540] + ldr r2, [r4, #2324] + strh r1, [r2, r3] @ movhi + mov r3, #0 + ldr r2, .L1853+12 + movw r1, #2396 + strb r3, [r4, #2402] + strh r3, [r2, #2] @ movhi + mov r7, r2 + ldrh r3, [r5] + mov r5, r2 + add r3, r3, #1 + strh r3, [r4, r1] @ movhi + mov r3, #1 + strb r3, [r4, #2404] +.L1847: + mov r0, r7 + bl make_superblock + ldrb r3, [r4, #2403] @ zero_extendqisi2 + cmp r3, #0 + ldrh r3, [r5] + bne .L1848 + ldr r2, [r4, #2324] + lsl r3, r3, #1 + strh r6, [r2, r3] @ movhi + ldrh r3, [r5] + add r3, r3, #1 + strh r3, [r5] @ movhi + b .L1847 +.L1848: + ldr r2, [r4, #2540] + lsl r3, r3, #1 + ldrh r1, [r5, #4] + mvn r5, #0 + str r2, [r4, #2408] + add r2, r2, #1 + str r2, [r4, #2540] + ldr r2, [r4, #2324] + strh r1, [r2, r3] @ movhi + movw r3, #2444 + strh r5, [r4, r3] @ movhi + bl FtlFreeSysBlkQueueOut + ldr r3, .L1853+16 + mov r2, #0 + strh r2, [r3, #2] @ movhi + ldr r2, [r4, #3464] + strh r5, [r3, #4] @ movhi + strh r0, [r3] @ movhi + strh r2, [r3, #6] @ movhi + ldr r3, [r4, #2540] + str r3, [r4, #2584] + add r3, r3, #1 + str r3, [r4, #2540] + bl FtlVpcTblFlush + bl FtlSysBlkInit + cmp r0, #0 + mov r0, #0 + ldreq r3, .L1853+20 + moveq r2, #1 + streq r2, [r3] + ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} +.L1854: + .align 2 +.L1853: + .word .LANCHOR0 + .word 168778952 + .word .LANCHOR0+2588 + .word .LANCHOR0+2396 + .word .LANCHOR0+2576 + .word .LANCHOR2 + .size ftl_low_format, .-ftl_low_format + .align 2 .global ftl_memcmp .syntax unified .arm @@ -13220,18 +13218,18 @@ rk_sftl_vendor_dev_ops_register: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r2, .L1841 - ldr r3, [r2, #-4004] + ldr r2, .L1859 + ldr r3, [r2, #3680] cmp r3, #0 - streq r0, [r2, #-4004] + streq r0, [r2, #3680] moveq r0, r3 - streq r1, [r2, #-4000] + streq r1, [r2, #3684] mvnne r0, #0 ldmfd sp, {fp, sp, pc} -.L1842: +.L1860: .align 2 -.L1841: - .word .LANCHOR3 +.L1859: + .word .LANCHOR0 .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register .align 2 .global rk_sftl_vendor_storage_init @@ -13246,28 +13244,28 @@ rk_sftl_vendor_storage_init: push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} sub fp, ip, #4 mov r0, #65536 - ldr r4, .L1852 + ldr r4, .L1870 bl ftl_malloc cmp r0, #0 - str r0, [r4, #-3996] + str r0, [r4, #3688] mvneq r9, #11 - beq .L1843 - ldr r8, .L1852+4 + beq .L1861 + ldr r8, .L1870+4 mov r6, #0 mov r5, r6 mov r7, r6 -.L1847: - ldr r3, [r4, #-4004] +.L1865: + ldr r3, [r4, #3680] mov r1, #128 - ldr r2, [r4, #-3996] + ldr r2, [r4, #3688] lsl r0, r7, #7 blx r3 subs r9, r0, #0 - bne .L1845 - ldr r2, [r4, #-3996] + bne .L1863 + ldr r2, [r4, #3688] ldr r3, [r2] cmp r3, r8 - bne .L1846 + bne .L1864 add r1, r2, #61440 ldr r3, [r2, #4] ldr r1, [r1, #4092] @@ -13279,45 +13277,45 @@ rk_sftl_vendor_storage_init: cmp r1, #0 movne r6, r7 movne r5, r3 -.L1846: +.L1864: add r7, r7, #1 cmp r7, #2 - bne .L1847 + bne .L1865 cmp r5, #0 - beq .L1848 - ldr r3, [r4, #-4004] + beq .L1866 + ldr r3, [r4, #3680] mov r1, #128 lsl r0, r6, #7 blx r3 subs r9, r0, #0 - beq .L1843 -.L1845: - ldr r0, [r4, #-3996] + beq .L1861 +.L1863: + ldr r0, [r4, #3688] mvn r9, #0 bl kfree mov r3, #0 - str r3, [r4, #-3996] - b .L1843 -.L1848: + str r3, [r4, #3688] + b .L1861 +.L1866: mov r1, #65536 mov r0, r2 bl __memzero - ldr r3, [r4, #-3996] + ldr r3, [r4, #3688] mov r2, #1 add r1, r3, #61440 str r2, [r3, #4] str r8, [r3] str r2, [r1, #4092] - ldr r2, .L1852+8 + ldr r2, .L1870+8 strh r5, [r3, #12] @ movhi strh r2, [r3, #14] @ movhi -.L1843: +.L1861: mov r0, r9 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} -.L1853: +.L1871: .align 2 -.L1852: - .word .LANCHOR3 +.L1870: + .word .LANCHOR0 .word 1380668996 .word -1032 .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init @@ -13333,26 +13331,26 @@ rk_sftl_vendor_read: mov ip, sp push {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 - ldr r3, .L1860 + ldr r3, .L1878 mov r4, r0 mov r0, r1 - ldr ip, [r3, #-3996] + ldr ip, [r3, #3688] cmp ip, #0 ldrhne lr, [ip, #10] movne r3, #0 - bne .L1856 -.L1859: + bne .L1874 +.L1877: mvn r0, #0 ldmfd sp, {r4, r5, fp, sp, pc} -.L1857: +.L1875: add r3, r3, #1 -.L1856: +.L1874: cmp r3, lr - bcs .L1859 + bcs .L1877 add r1, ip, r3, lsl #3 ldrh r5, [r1, #16] cmp r5, r4 - bne .L1857 + bne .L1875 ldrh r4, [r1, #20] ldrh r1, [r1, #18] cmp r4, r2 @@ -13363,10 +13361,10 @@ rk_sftl_vendor_read: bl memcpy mov r0, r4 ldmfd sp, {r4, r5, fp, sp, pc} -.L1861: +.L1879: .align 2 -.L1860: - .word .LANCHOR3 +.L1878: + .word .LANCHOR0 .size rk_sftl_vendor_read, .-rk_sftl_vendor_read .align 2 .global rk_sftl_vendor_write @@ -13382,23 +13380,23 @@ rk_sftl_vendor_write: sub fp, ip, #4 sub sp, sp, #24 mov ip, r1 - ldr r8, .L1881 + ldr r8, .L1899 mov r9, r2 - ldr r4, [r8, #-3996] + ldr r4, [r8, #3688] cmp r4, #0 - beq .L1877 + beq .L1895 ldrh r2, [r4, #10] add r7, r9, #63 ldrh r3, [r4, #8] bic r7, r7, #63 mov r5, #0 str r3, [fp, #-44] -.L1864: +.L1882: cmp r5, r2 - bcc .L1872 + bcc .L1890 ldrh r1, [r4, #14] cmp r7, r1 - bhi .L1877 + bhi .L1895 add r3, r4, r2, lsl #3 uxth r7, r7 strh r0, [r3, #16] @ movhi @@ -13429,32 +13427,32 @@ rk_sftl_vendor_write: cmp r3, #1 movhi r3, #0 strh r3, [r4, #8] @ movhi - ldr r3, [r8, #-4000] - b .L1880 -.L1872: + ldr r3, [r8, #3684] + b .L1898 +.L1890: add r6, r4, r5, lsl #3 ldrh r3, [r6, #16] cmp r3, r0 str r3, [fp, #-48] - bne .L1865 + bne .L1883 ldrh r1, [r6, #20] add r3, r4, #1024 add r1, r1, #63 bic r1, r1, #63 cmp r9, r1 str r1, [fp, #-52] - bls .L1866 + bls .L1884 ldrh r1, [r4, #14] cmp r7, r1 - bhi .L1877 + bhi .L1895 ldrh r8, [r6, #18] sub r2, r2, #1 str r2, [fp, #-56] -.L1867: +.L1885: ldr r2, [fp, #-56] add r6, r6, #8 cmp r5, r2 - bcc .L1868 + bcc .L1886 ldrh r2, [fp, #-48] add r5, r4, r5, lsl #3 uxth r8, r8 @@ -13473,7 +13471,7 @@ rk_sftl_vendor_write: strh r8, [r4, #12] @ movhi add r7, r7, r3 strh r7, [r4, #14] @ movhi -.L1869: +.L1887: ldr r3, [r4, #4] add r2, r4, #61440 add r3, r3, #1 @@ -13485,19 +13483,19 @@ rk_sftl_vendor_write: cmp r3, #1 movhi r3, #0 strh r3, [r4, #8] @ movhi - ldr r3, .L1881 - ldr r3, [r3, #-4000] -.L1880: + ldr r3, .L1899 + ldr r3, [r3, #3684] +.L1898: ldr r0, [fp, #-44] mov r2, r4 mov r1, #128 lsl r0, r0, #7 blx r3 mov r0, #0 -.L1862: +.L1880: sub sp, fp, #40 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} -.L1868: +.L1886: ldrh r10, [r6, #20] add r0, r3, r8 ldrh r2, [r6, #16] @@ -13516,8 +13514,8 @@ rk_sftl_vendor_write: bl memcpy ldr ip, [fp, #-64] ldr r3, [fp, #-60] - b .L1867 -.L1866: + b .L1885 +.L1884: add r5, r4, r5, lsl #3 mov r2, r9 mov r1, ip @@ -13525,17 +13523,17 @@ rk_sftl_vendor_write: add r0, r3, r0 bl memcpy strh r9, [r6, #20] @ movhi - b .L1869 -.L1865: + b .L1887 +.L1883: add r5, r5, #1 - b .L1864 -.L1877: + b .L1882 +.L1895: mvn r0, #0 - b .L1862 -.L1882: + b .L1880 +.L1900: .align 2 -.L1881: - .word .LANCHOR3 +.L1899: + .word .LANCHOR0 .size rk_sftl_vendor_write, .-rk_sftl_vendor_write .align 2 .global rk_sftl_vendor_storage_ioctl @@ -13555,18 +13553,18 @@ rk_sftl_vendor_storage_ioctl: bl ftl_malloc subs r4, r0, #0 mvneq r5, #0 - beq .L1883 - ldr r3, .L1908 + beq .L1901 + ldr r3, .L1926 cmp r6, r3 - beq .L1886 + beq .L1904 add r3, r3, #1 cmp r6, r3 - beq .L1887 -.L1903: + beq .L1905 +.L1921: mvn r5, #13 - b .L1885 -.L1886: - ldr r6, .L1908+4 + b .L1903 +.L1904: + ldr r6, .L1926+4 mov r3, sp and r3, r3, r6 ldr r3, [r3, #72] @@ -13577,31 +13575,31 @@ rk_sftl_vendor_storage_ioctl: .arm .syntax unified cmp r3, #0 - bne .L1893 + bne .L1911 mov r2, #8 mov r1, r5 bl arm_copy_from_user cmp r0, #0 - bne .L1903 + bne .L1921 ldr r2, [r4] - ldr r3, .L1908+8 + ldr r3, .L1926+8 cmp r2, r3 - beq .L1891 -.L1892: + beq .L1909 +.L1910: mvn r5, #0 -.L1885: +.L1903: mov r0, r4 bl kfree -.L1883: +.L1901: mov r0, r5 ldmfd sp, {r4, r5, r6, fp, sp, pc} -.L1891: +.L1909: ldrh r2, [r4, #6] add r1, r4, #8 ldrh r0, [r4, #4] bl rk_sftl_vendor_read cmn r0, #1 - beq .L1892 + beq .L1910 mov r3, sp uxth r2, r0 and r6, r6, r3 @@ -13615,15 +13613,15 @@ rk_sftl_vendor_storage_ioctl: .arm .syntax unified cmp r3, #0 - bne .L1903 + bne .L1921 mov r0, r5 mov r1, r4 bl arm_copy_to_user subs r5, r0, #0 - beq .L1885 - b .L1903 -.L1887: - ldr r6, .L1908+4 + beq .L1903 + b .L1921 +.L1905: + ldr r6, .L1926+4 mov r3, sp and r3, r3, r6 ldr r3, [r3, #72] @@ -13634,20 +13632,20 @@ rk_sftl_vendor_storage_ioctl: .arm .syntax unified cmp r3, #0 - bne .L1893 + bne .L1911 mov r2, #8 mov r1, r5 bl arm_copy_from_user cmp r0, #0 - bne .L1903 + bne .L1921 ldr r2, [r4] - ldr r3, .L1908+8 + ldr r3, .L1926+8 cmp r2, r3 - bne .L1892 + bne .L1910 ldrh r2, [r4, #6] movw r3, #4087 cmp r2, r3 - bhi .L1892 + bhi .L1910 mov r3, sp add r2, r2, #8 and r6, r6, r3 @@ -13661,26 +13659,26 @@ rk_sftl_vendor_storage_ioctl: cmp r3, #0 movne r1, r2 movne r0, r4 - bne .L1907 + bne .L1925 mov r1, r5 mov r0, r4 bl arm_copy_from_user cmp r0, #0 - bne .L1903 + bne .L1921 ldrh r2, [r4, #6] add r1, r4, #8 ldrh r0, [r4, #4] bl rk_sftl_vendor_write mov r5, r0 - b .L1885 -.L1893: - mov r1, #8 -.L1907: - bl __memzero b .L1903 -.L1909: +.L1911: + mov r1, #8 +.L1925: + bl __memzero + b .L1921 +.L1927: .align 2 -.L1908: +.L1926: .word 1074034177 .word -8192 .word 1448232273 @@ -13697,15 +13695,14 @@ rk_sftl_vendor_register: mov ip, sp push {fp, ip, lr, pc} sub fp, ip, #4 - ldr r0, .L1911 + ldr r0, .L1929 bl misc_register ldmfd sp, {fp, sp, pc} -.L1912: +.L1930: .align 2 -.L1911: +.L1929: .word .LANCHOR2+12 .size rk_sftl_vendor_register, .-rk_sftl_vendor_register - .global ftl_temp_buf .global g_nand_ops .global g_nand_phy_info .global gc_ink_free_return_value @@ -13720,6 +13717,9 @@ rk_sftl_vendor_register: .global g_recovery_ppa_tbl .global g_recovery_page_min_ver .global g_recovery_page_num + .global sftl_nand_check_spare_buf + .global sftl_temp_buf + .global sftl_nand_check_buf .global g_cur_erase_blk .global g_gc_skip_write_count .global g_gc_head_data_block_count @@ -13748,8 +13748,6 @@ rk_sftl_vendor_register: .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 @@ -13857,143 +13855,151 @@ rk_sftl_vendor_register: .section .rodata .align 2 .set .LANCHOR1,. + 0 - .type __func__.4010, %object - .size __func__.4010, 17 -__func__.4010: + .type __func__.4011, %object + .size __func__.4011, 17 +__func__.4011: .ascii "INSERT_DATA_LIST\000" - .type __func__.4005, %object - .size __func__.4005, 17 -__func__.4005: + .type __func__.4006, %object + .size __func__.4006, 17 +__func__.4006: .ascii "INSERT_FREE_LIST\000" - .type __func__.4048, %object - .size __func__.4048, 17 -__func__.4048: + .type __func__.4042, %object + .size __func__.4042, 17 +__func__.4042: .ascii "List_remove_node\000" - .type __func__.4080, %object - .size __func__.4080, 22 -__func__.4080: + .type __func__.4074, %object + .size __func__.4074, 22 +__func__.4074: .ascii "List_update_data_list\000" - .type __func__.4191, %object - .size __func__.4191, 22 -__func__.4191: + .type __func__.4181, %object + .size __func__.4181, 22 +__func__.4181: .ascii "select_l2p_ram_region\000" - .type __func__.4514, %object - .size __func__.4514, 16 -__func__.4514: + .type __func__.4504, %object + .size __func__.4504, 16 +__func__.4504: .ascii "make_superblock\000" - .type __func__.4689, %object - .size __func__.4689, 19 -__func__.4689: + .type __func__.4679, %object + .size __func__.4679, 19 +__func__.4679: .ascii "get_new_active_ppa\000" - .type __func__.15027, %object - .size __func__.15027, 15 -__func__.15027: - .ascii "FlashReadPages\000" - .type __func__.15044, %object - .size __func__.15044, 15 -__func__.15044: - .ascii "FlashProgPages\000" - .type __func__.4122, %object - .size __func__.4122, 26 -__func__.4122: + .type __func__.15073, %object + .size __func__.15073, 17 +__func__.15073: + .ascii "FlashEraseBlocks\000" + .type __func__.4116, %object + .size __func__.4116, 26 +__func__.4116: .ascii "ftl_map_blk_alloc_new_blk\000" - .type __func__.3541, %object - .size __func__.3541, 11 -__func__.3541: + .type __func__.3543, %object + .size __func__.3543, 11 +__func__.3543: .ascii "FtlMemInit\000" - .type __func__.3845, %object - .size __func__.3845, 14 -__func__.3845: + .type __func__.3848, %object + .size __func__.3848, 14 +__func__.3848: .ascii "FtlBbt2Bitmap\000" - .type __func__.4152, %object - .size __func__.4152, 31 -__func__.4152: - .ascii "Ftl_write_map_blk_to_last_page\000" - .type __func__.4166, %object - .size __func__.4166, 16 -__func__.4166: - .ascii "FtlMapWritePage\000" - .type __func__.4089, %object - .size __func__.4089, 16 -__func__.4089: - .ascii "load_l2p_region\000" - .type __func__.4137, %object - .size __func__.4137, 15 -__func__.4137: - .ascii "ftl_map_blk_gc\000" - .type __func__.4208, %object - .size __func__.4208, 9 -__func__.4208: - .ascii "log2phys\000" - .type __func__.4423, %object - .size __func__.4423, 16 -__func__.4423: - .ascii "FtlReUsePrevPpa\000" - .type __func__.4576, %object - .size __func__.4576, 14 -__func__.4576: - .ascii "ftl_check_vpc\000" - .type __func__.4303, %object - .size __func__.4303, 14 -__func__.4303: - .ascii "FtlScanSysBlk\000" - .type __func__.4535, %object - .size __func__.4535, 18 -__func__.4535: + .type __func__.4525, %object + .size __func__.4525, 18 +__func__.4525: .ascii "SupperBlkListInit\000" - .type __func__.4661, %object - .size __func__.4661, 25 -__func__.4661: - .ascii "allocate_data_superblock\000" - .type __func__.4702, %object - .size __func__.4702, 16 -__func__.4702: - .ascii "update_vpc_list\000" - .type __func__.4709, %object - .size __func__.4709, 20 -__func__.4709: - .ascii "decrement_vpc_count\000" - .type __func__.4457, %object - .size __func__.4457, 22 -__func__.4457: - .ascii "FtlRecoverySuperblock\000" - .type __func__.3888, %object - .size __func__.3888, 11 -__func__.3888: + .type __func__.15032, %object + .size __func__.15032, 15 +__func__.15032: + .ascii "FlashReadPages\000" + .type __func__.4293, %object + .size __func__.4293, 14 +__func__.4293: + .ascii "FtlScanSysBlk\000" + .type __func__.3891, %object + .size __func__.3891, 11 +__func__.3891: .ascii "FtlLoadBbt\000" - .type __func__.4281, %object - .size __func__.4281, 15 -__func__.4281: - .ascii "FtlVpcTblFlush\000" - .type __func__.4560, %object - .size __func__.4560, 21 -__func__.4560: - .ascii "FtlVpcCheckAndModify\000" - .type __func__.4682, %object - .size __func__.4682, 29 -__func__.4682: - .ascii "allocate_new_data_superblock\000" - .type __func__.3665, %object - .size __func__.3665, 13 -__func__.3665: - .ascii "FtlProgPages\000" - .type __func__.4780, %object - .size __func__.4780, 19 -__func__.4780: - .ascii "FtlGcFreeTempBlock\000" - .type __func__.4886, %object - .size __func__.4886, 23 -__func__.4886: - .ascii "rk_ftl_garbage_collect\000" - .type __func__.3693, %object - .size __func__.3693, 9 -__func__.3693: - .ascii "FtlWrite\000" - .type __func__.4360, %object - .size __func__.4360, 15 -__func__.4360: + .type __func__.4350, %object + .size __func__.4350, 15 +__func__.4350: .ascii "FtlLoadSysInfo\000" - .space 2 + .type __func__.15050, %object + .size __func__.15050, 15 +__func__.15050: + .ascii "FlashProgPages\000" + .type __func__.4142, %object + .size __func__.4142, 31 +__func__.4142: + .ascii "Ftl_write_map_blk_to_last_page\000" + .type __func__.4156, %object + .size __func__.4156, 16 +__func__.4156: + .ascii "FtlMapWritePage\000" + .type __func__.4083, %object + .size __func__.4083, 16 +__func__.4083: + .ascii "load_l2p_region\000" + .type __func__.4127, %object + .size __func__.4127, 15 +__func__.4127: + .ascii "ftl_map_blk_gc\000" + .type __func__.4198, %object + .size __func__.4198, 9 +__func__.4198: + .ascii "log2phys\000" + .type __func__.4413, %object + .size __func__.4413, 16 +__func__.4413: + .ascii "FtlReUsePrevPpa\000" + .type __func__.4566, %object + .size __func__.4566, 14 +__func__.4566: + .ascii "ftl_check_vpc\000" + .type __func__.4651, %object + .size __func__.4651, 25 +__func__.4651: + .ascii "allocate_data_superblock\000" + .type __func__.4692, %object + .size __func__.4692, 16 +__func__.4692: + .ascii "update_vpc_list\000" + .type __func__.4699, %object + .size __func__.4699, 20 +__func__.4699: + .ascii "decrement_vpc_count\000" + .type __func__.4447, %object + .size __func__.4447, 22 +__func__.4447: + .ascii "FtlRecoverySuperblock\000" + .type __func__.4271, %object + .size __func__.4271, 15 +__func__.4271: + .ascii "FtlVpcTblFlush\000" + .type __func__.4550, %object + .size __func__.4550, 21 +__func__.4550: + .ascii "FtlVpcCheckAndModify\000" + .type __func__.4672, %object + .size __func__.4672, 29 +__func__.4672: + .ascii "allocate_new_data_superblock\000" + .type __func__.3667, %object + .size __func__.3667, 13 +__func__.3667: + .ascii "FtlProgPages\000" + .type __func__.4769, %object + .size __func__.4769, 19 +__func__.4769: + .ascii "FtlGcFreeTempBlock\000" + .type __func__.4880, %object + .size __func__.4880, 23 +__func__.4880: + .ascii "rk_ftl_garbage_collect\000" + .type __func__.3695, %object + .size __func__.3695, 9 +__func__.3695: + .ascii "FtlWrite\000" + .type __func__.3807, %object + .size __func__.3807, 14 +__func__.3807: + .ascii "FtlWriteToIDB\000" + .space 3 .type rk_sftl_vendor_storage_fops, %object .size rk_sftl_vendor_storage_fops, 108 rk_sftl_vendor_storage_fops: @@ -14021,13 +14027,12 @@ power_up_flag: .size rkflash_vender_storage_dev, 40 rkflash_vender_storage_dev: .word 255 - .word .LC116 + .word .LC118 .word rk_sftl_vendor_storage_fops .space 28 .bss .align 2 .set .LANCHOR0,. + 0 - .set .LANCHOR3,. + 8184 .type g_nand_phy_info, %object .size g_nand_phy_info, 24 g_nand_phy_info: @@ -14407,14 +14412,6 @@ g_gc_next_blk: .type g_gc_next_blk_1, %object .size g_gc_next_blk_1, 2 g_gc_next_blk_1: - .space 2 - .type g_gc_next_blk_2, %object - .size g_gc_next_blk_2, 2 -g_gc_next_blk_2: - .space 2 - .type g_gc_next_blk_3, %object - .size g_gc_next_blk_3, 2 -g_gc_next_blk_3: .space 2 .type g_gc_bad_block_temp_num, %object .size g_gc_bad_block_temp_num, 2 @@ -14432,41 +14429,9 @@ g_gc_bad_block_gc_index: .size g_nand_ops, 16 g_nand_ops: .space 16 - .type req_sys, %object - .size req_sys, 20 -req_sys: - .space 20 - .type p_sys_data_buf, %object - .size p_sys_data_buf, 4 -p_sys_data_buf: - .space 4 - .type p_sys_spare_buf, %object - .size p_sys_spare_buf, 4 -p_sys_spare_buf: - .space 4 - .type check_spare_buf, %object - .size check_spare_buf, 512 -check_spare_buf: - .space 512 .type req_erase, %object .size req_erase, 4 req_erase: - .space 4 - .type g_cur_erase_blk, %object - .size g_cur_erase_blk, 4 -g_cur_erase_blk: - .space 4 - .type p_io_data_buf_1, %object - .size p_io_data_buf_1, 4 -p_io_data_buf_1: - .space 4 - .type p_io_spare_buf, %object - .size p_io_spare_buf, 4 -p_io_spare_buf: - .space 4 - .type p_io_data_buf_0, %object - .size p_io_data_buf_0, 4 -p_io_data_buf_0: .space 4 .type g_in_gc_progress, %object .size g_in_gc_progress, 4 @@ -14479,6 +14444,10 @@ g_gc_head_data_block: .type g_gc_head_data_block_count, %object .size g_gc_head_data_block_count, 4 g_gc_head_data_block_count: + .space 4 + .type g_cur_erase_blk, %object + .size g_cur_erase_blk, 4 +g_cur_erase_blk: .space 4 .type req_read, %object .size req_read, 4 @@ -14491,6 +14460,10 @@ req_gc_dst: .type req_prgm, %object .size req_prgm, 4 req_prgm: + .space 4 + .type p_sys_data_buf, %object + .size p_sys_data_buf, 4 +p_sys_data_buf: .space 4 .type p_sys_data_buf_1, %object .size p_sys_data_buf_1, 4 @@ -14499,6 +14472,34 @@ p_sys_data_buf_1: .type p_vendor_data_buf, %object .size p_vendor_data_buf, 4 p_vendor_data_buf: + .space 4 + .type p_io_data_buf_0, %object + .size p_io_data_buf_0, 4 +p_io_data_buf_0: + .space 4 + .type p_io_data_buf_1, %object + .size p_io_data_buf_1, 4 +p_io_data_buf_1: + .space 4 + .type sftl_nand_check_buf, %object + .size sftl_nand_check_buf, 4 +sftl_nand_check_buf: + .space 4 + .type sftl_temp_buf, %object + .size sftl_temp_buf, 4 +sftl_temp_buf: + .space 4 + .type sftl_nand_check_spare_buf, %object + .size sftl_nand_check_spare_buf, 4 +sftl_nand_check_spare_buf: + .space 4 + .type p_sys_spare_buf, %object + .size p_sys_spare_buf, 4 +p_sys_spare_buf: + .space 4 + .type p_io_spare_buf, %object + .size p_io_spare_buf, 4 +p_io_spare_buf: .space 4 .type g_ect_tbl_info_size, %object .size g_ect_tbl_info_size, 2 @@ -14562,15 +14563,9 @@ gL2pMapInfo: .size g_totle_map_block, 2 g_totle_map_block: .space 2 - .space 2 - .type gVendorBlkInfo, %object - .size gVendorBlkInfo, 44 -gVendorBlkInfo: - .space 44 .type g_tmp_data_superblock_id, %object .size g_tmp_data_superblock_id, 2 g_tmp_data_superblock_id: - .space 2 .space 2 .type g_totle_swl_count, %object .size g_totle_swl_count, 4 @@ -14584,6 +14579,18 @@ ftl_gc_temp_power_lost_recovery_flag: .size g_recovery_page_min_ver, 4 g_recovery_page_min_ver: .space 4 + .type req_sys, %object + .size req_sys, 20 +req_sys: + .space 20 + .type g_MaxLbn, %object + .size g_MaxLbn, 4 +g_MaxLbn: + .space 4 + .type gVendorBlkInfo, %object + .size gVendorBlkInfo, 44 +gVendorBlkInfo: + .space 44 .type g_power_lost_recovery_flag, %object .size g_power_lost_recovery_flag, 2 g_power_lost_recovery_flag: @@ -14627,9 +14634,13 @@ g_ftl_nand_free_count: .size idb_need_write_back, 4 idb_need_write_back: .space 4 - .type g_MaxLbn, %object - .size g_MaxLbn, 4 -g_MaxLbn: + .type idb_buf, %object + .size idb_buf, 4 +idb_buf: + .space 4 + .type gp_flash_check_buf, %object + .size gp_flash_check_buf, 4 +gp_flash_check_buf: .space 4 .type _flash_read, %object .size _flash_read, 4 @@ -14643,26 +14654,10 @@ _flash_write: .size g_vendor, 4 g_vendor: .space 4 - .type ftl_temp_buf, %object - .size ftl_temp_buf, 4096 -ftl_temp_buf: - .space 4096 - .type check_buf, %object - .size check_buf, 4096 -check_buf: - .space 4096 .type check_vpc_table, %object .size check_vpc_table, 16384 check_vpc_table: .space 16384 - .type gp_flash_check_buf, %object - .size gp_flash_check_buf, 262144 -gp_flash_check_buf: - .space 262144 - .type idb_buf, %object - .size idb_buf, 262144 -idb_buf: - .space 262144 .type gp_last_act_superblock, %object .size gp_last_act_superblock, 4 gp_last_act_superblock: @@ -14810,7 +14805,7 @@ gp_last_act_superblock: .LC69: .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" .LC70: - .ascii "SFTL version: 5.0.45 20180810\000" + .ascii "SFTL version: 5.0.48 20180930\000" .LC71: .ascii "%s\012\000" .LC72: @@ -14831,78 +14826,82 @@ gp_last_act_superblock: .LC79: .ascii "\012\000" .LC80: - .ascii "prog read error: = %x\012\000" + .ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000" .LC81: - .ascii "prog read s error: = %x %x %x\012\000" + .ascii "not free: w: d:\000" .LC82: - .ascii "prog read d error: = %x %x %x\012\000" + .ascii "not free: w: s:\000" .LC83: - .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" -.LC84: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" .ascii "\000" -.LC85: +.LC84: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" -.LC86: +.LC85: .ascii "%s error allocating memory. return -1\012\000" +.LC86: + .ascii "prog read error: = %x\012\000" .LC87: - .ascii "FtlMapWritePage error = %x \012\000" + .ascii "prog read s error: = %x %x %x\012\000" .LC88: - .ascii "FtlMapWritePage error = %x error count = %d\012\000" + .ascii "prog read d error: = %x %x %x\012\000" .LC89: - .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" + .ascii "FtlMapWritePage error = %x \012\000" .LC90: - .ascii "region_id = %x phyAddr = %x\012\000" + .ascii "FtlMapWritePage error = %x error count = %d\012\000" .LC91: - .ascii "spare:\000" + .ascii "region_id = %x phyAddr = %x\012\000" .LC92: - .ascii "map_ppn:\000" + .ascii "spare:\000" .LC93: - .ascii "ftl_map_blk_gc blk info: %x %x %x\012\000" + .ascii "map_ppn:\000" .LC94: - .ascii "ftl_scan_all_data = %x\012\000" + .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" .LC95: - .ascii "scan lpa = %x ppa= %x\012\000" + .ascii "...%s enter...\012\000" .LC96: + .ascii "FtlCheckVpc2 %x = %x %x\012\000" +.LC97: + .ascii "free blk vpc error %x = %x %x\012\000" +.LC98: + .ascii "ftl_scan_all_data = %x\012\000" +.LC99: + .ascii "scan lpa = %x ppa= %x\012\000" +.LC100: .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" .ascii "\000" -.LC97: - .ascii "...%s enter...\012\000" -.LC98: - .ascii "FtlCheckVpc2 %x = %x %x\012\000" -.LC99: - .ascii "free blk vpc error %x = %x %x\012\000" -.LC100: - .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" .LC101: - .ascii "FtlBbmTblFlush error:%x\012\000" + .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" .LC102: - .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" + .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" .LC103: - .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" + .ascii "FtlBbmTblFlush error:%x\012\000" .LC104: - .ascii "decrement_vpc_count %x = %d\012\000" + .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" .LC105: - .ascii "decrement_vpc_count %x = %d in free list\012\000" + .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" .LC106: - .ascii "spuer block %x vpn is 0\012 \000" + .ascii "decrement_vpc_count %x = %d\012\000" .LC107: - .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" + .ascii "spuer block %x vpn is 0\012 \000" .LC108: - .ascii "no ect\000" + .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" .LC109: - .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" + .ascii "no ect\000" .LC110: - .ascii "FtlCheckVpc %x = %x %x\012\000" + .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" .LC111: - .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" + .ascii "FtlCheckVpc %x = %x %x\012\000" .LC112: - .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" + .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" .LC113: - .ascii "g_gc_superblock_free %x %x %x %x %x\012\000" + .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" .LC114: .ascii "FtlWrite: lpa error:%x %x\012\000" .LC115: - .ascii "write_idblock fail! %x %x %x %x\012\000" + .ascii "write_idblock fix data %x %x %x\012\000" .LC116: + .ascii "write_idblock fail! %x %x %x %x\012\000" +.LC117: + .ascii "%s idb buffer alloc fail\012\000" +.LC118: .ascii "vendor_storage\000" diff --git a/drivers/rkflash/rk_sftl_arm_v7_thumb.S b/drivers/rkflash/rk_sftl_arm_v7_thumb.S index 568c8c2a3d48..95aa4302e257 100644 --- a/drivers/rkflash/rk_sftl_arm_v7_thumb.S +++ b/drivers/rkflash/rk_sftl_arm_v7_thumb.S @@ -2,7 +2,7 @@ /* * Copyright (c) 2018 Rockchip Electronics Co. Ltd. - * date: 2018-08-17 + * date: 2018-09-30 */ .arch armv7-a .eabi_attribute 20, 1 @@ -838,50 +838,6 @@ IsInFreeQueue: .fnend .size IsInFreeQueue, .-IsInFreeQueue .align 1 - .global test_node_in_list - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type test_node_in_list, %function -test_node_in_list: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L104 - push {r4, r5, lr} - .save {r4, r5, lr} - movw r5, #65535 - ldr r2, [r0] - ldr r4, [r3, #2316] - subs r3, r2, r4 - asrs r0, r3, #1 - ldr r3, .L104+4 - muls r3, r0, r3 - movs r0, #6 - uxth r3, r3 -.L101: - cmp r3, r1 - beq .L102 - ldrh r3, [r2] - cmp r3, r5 - beq .L103 - mla r2, r0, r3, r4 - b .L101 -.L102: - movs r0, #1 - pop {r4, r5, pc} -.L103: - movs r0, #0 - pop {r4, r5, pc} -.L105: - .align 2 -.L104: - .word .LANCHOR0 - .word -1431655765 - .fnend - .size test_node_in_list, .-test_node_in_list - .align 1 .global insert_data_list .syntax unified .thumb @@ -895,11 +851,11 @@ insert_data_list: push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #12 - ldr r2, .L121 + ldr r2, .L114 ldrh r3, [r2, #40] mov r5, r2 cmp r3, r0 - bls .L108 + bls .L101 movs r4, #6 ldr ip, [r2, #2316] muls r4, r0, r4 @@ -908,27 +864,27 @@ insert_data_list: strh r3, [r1, #2] @ movhi strh r3, [ip, r4] @ movhi ldr r3, [r2, #2320] - cbnz r3, .L109 + cbnz r3, .L102 str r1, [r2, #2320] -.L108: +.L101: movs r0, #0 add sp, sp, #12 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L109: +.L102: ldrh r6, [r1, #4] lsl r10, r0, #1 ldr r8, [r2, #2324] ldrh r2, [r8, r0, lsl #1] cmp r6, #0 - beq .L119 + beq .L112 muls r6, r2, r6 -.L110: +.L103: ldr lr, [r5, #2316] ldrh r7, [r5, #40] sub r2, r3, lr asr r9, r2, #1 - ldr r2, .L121+4 + ldr r2, .L114+4 str r7, [sp] mul r2, r2, r9 ldr r9, [r5, #2328] @@ -936,30 +892,30 @@ insert_data_list: uxth r2, r2 str r5, [sp, #4] movs r5, #0 -.L117: +.L110: adds r5, r5, #1 ldr r7, [sp] uxth r5, r5 cmp r5, r7 - bhi .L108 + bhi .L101 cmp r0, r2 - beq .L108 + beq .L101 ldrh r7, [r3, #4] lsl r10, r2, #1 ldrh fp, [r8, r2, lsl #1] - cbz r7, .L120 + cbz r7, .L113 mul r7, r7, fp -.L112: +.L105: cmp r6, r7 - bne .L113 + bne .L106 ldr r7, [sp, #4] ldrh r10, [r9, r10] ldrh r7, [r7] cmp r10, r7 - bcc .L115 -.L114: + bcc .L108 +.L107: strh r2, [ip, r4] @ movhi - ldr r4, .L121 + ldr r4, .L114 ldrh r2, [r3, #2] strh r2, [r1, #2] @ movhi ldr r2, [r4, #2320] @@ -974,33 +930,33 @@ insert_data_list: mulne r2, r2, r5 strhne r0, [r1, r2] @ movhi strhne r0, [r3, #2] @ movhi - b .L108 -.L119: + b .L101 +.L112: mov r6, #-1 - b .L110 -.L120: - mov r7, #-1 - b .L112 + b .L103 .L113: - bcc .L114 -.L115: + mov r7, #-1 + b .L105 +.L106: + bcc .L107 +.L108: ldrh r7, [r3] movw r10, #65535 cmp r7, r10 - bne .L116 + bne .L109 strh r2, [r1, #2] @ movhi strh r0, [r3] @ movhi - ldr r3, .L121 + ldr r3, .L114 str r1, [r3, #2332] - b .L108 -.L116: + b .L101 +.L109: movs r3, #6 mov r2, r7 mla r3, r3, r7, lr - b .L117 -.L122: + b .L110 +.L115: .align 2 -.L121: +.L114: .word .LANCHOR0 .word -1431655765 .fnend @@ -1019,24 +975,24 @@ INSERT_DATA_LIST: push {r3, lr} .save {r3, lr} bl insert_data_list - ldr r2, .L125 + ldr r2, .L118 ldrh r3, [r2, #2336] adds r3, r3, #1 uxth r3, r3 strh r3, [r2, #2336] @ movhi ldrh r2, [r2, #40] cmp r2, r3 - bcs .L123 - movs r2, #221 - ldr r1, .L125+4 - ldr r0, .L125+8 + bcs .L116 + movs r2, #214 + ldr r1, .L118+4 + ldr r0, .L118+8 pop {r3, lr} b sftl_printk -.L123: +.L116: pop {r3, pc} -.L126: +.L119: .align 2 -.L125: +.L118: .word .LANCHOR0 .word .LANCHOR1 .word .LC1 @@ -1057,8 +1013,8 @@ insert_free_list: .save {r4, r5, r6, r7, r8, r9, r10, lr} movw r4, #65535 cmp r0, r4 - beq .L128 - ldr r2, .L134 + beq .L121 + ldr r2, .L127 movs r1, #6 mul r7, r1, r0 ldr ip, [r2, #2316] @@ -1067,36 +1023,36 @@ insert_free_list: strh r4, [r6, #2] @ movhi strh r4, [ip, r7] @ movhi ldr r3, [r2, #2340] - cbnz r3, .L129 + cbnz r3, .L122 str r6, [r2, #2340] -.L128: +.L121: movs r0, #0 pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L129: +.L122: ldr lr, [r2, #2316] ldr r8, [r2, #2328] sub r2, r3, lr asr r10, r2, #1 - ldr r2, .L134+4 + ldr r2, .L127+4 ldrh r9, [r8, r0, lsl #1] mul r2, r2, r10 mov r10, r4 uxth r2, r2 -.L132: +.L125: ldrh r4, [r8, r2, lsl #1] cmp r4, r9 - bcs .L130 + bcs .L123 ldrh r4, [r3] cmp r4, r10 - bne .L131 + bne .L124 strh r2, [r6, #2] @ movhi strh r0, [r3] @ movhi - b .L128 -.L131: + b .L121 +.L124: mla r3, r1, r4, lr mov r2, r4 - b .L132 -.L130: + b .L125 +.L123: ldrh r1, [r3, #2] strh r1, [r6, #2] @ movhi strh r2, [ip, r7] @ movhi @@ -1112,10 +1068,10 @@ insert_free_list: mulne r2, r2, r4 strhne r0, [r1, r2] @ movhi strhne r0, [r3, #2] @ movhi - b .L128 -.L135: + b .L121 +.L128: .align 2 -.L134: +.L127: .word .LANCHOR0 .word -1431655765 .fnend @@ -1134,24 +1090,24 @@ INSERT_FREE_LIST: push {r3, lr} .save {r3, lr} bl insert_free_list - ldr r2, .L138 + ldr r2, .L131 ldrh r3, [r2, #2344] adds r3, r3, #1 uxth r3, r3 strh r3, [r2, #2344] @ movhi ldrh r2, [r2, #40] cmp r2, r3 - bcs .L136 - movs r2, #214 - ldr r1, .L138+4 - ldr r0, .L138+8 + bcs .L129 + movs r2, #207 + ldr r1, .L131+4 + ldr r0, .L131+8 pop {r3, lr} b sftl_printk -.L136: +.L129: pop {r3, pc} -.L139: +.L132: .align 2 -.L138: +.L131: .word .LANCHOR0 .word .LANCHOR1+17 .word .LC1 @@ -1171,7 +1127,7 @@ List_remove_node: push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} movs r6, #6 - ldr r4, .L146 + ldr r4, .L139 muls r6, r1, r6 movw r3, #65535 mov r8, r0 @@ -1179,20 +1135,20 @@ List_remove_node: adds r5, r7, r6 ldrh r2, [r5, #2] cmp r2, r3 - bne .L141 + bne .L134 ldr r3, [r0] cmp r5, r3 - beq .L141 - movw r2, #397 - ldr r1, .L146+4 - ldr r0, .L146+8 + beq .L134 + mov r2, #372 + ldr r1, .L139+4 + ldr r0, .L139+8 bl sftl_printk -.L141: +.L134: ldr r3, [r8] movw r1, #65535 cmp r5, r3 ldrh r3, [r7, r6] - bne .L142 + bne .L135 cmp r3, r1 ittee ne ldrne r0, [r4, #2316] @@ -1203,24 +1159,24 @@ List_remove_node: mlane r3, r2, r3, r0 strne r3, [r8] strhne r1, [r3, #2] @ movhi -.L144: +.L137: movw r3, #65535 movs r0, #0 strh r3, [r7, r6] @ movhi strh r3, [r5, #2] @ movhi pop {r4, r5, r6, r7, r8, pc} -.L142: +.L135: cmp r3, r1 ldrh r1, [r5, #2] - bne .L145 + bne .L138 cmp r1, r3 - beq .L144 + beq .L137 movs r2, #6 ldr r0, [r4, #2316] muls r1, r2, r1 strh r3, [r0, r1] @ movhi - b .L144 -.L145: + b .L137 +.L138: ldr r0, [r4, #2316] movs r2, #6 mla r3, r2, r3, r0 @@ -1230,10 +1186,10 @@ List_remove_node: ldr r3, [r4, #2316] muls r2, r0, r2 strh r1, [r3, r2] @ movhi - b .L144 -.L147: + b .L137 +.L140: .align 2 -.L146: +.L139: .word .LANCHOR0 .word .LANCHOR1+34 .word .LC1 @@ -1253,15 +1209,15 @@ List_pop_index_node: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} ldr r3, [r0] - cbz r3, .L154 - ldr r2, .L155 + cbz r3, .L147 + ldr r2, .L148 movw r5, #65535 movs r6, #6 ldr r2, [r2, #2316] -.L150: - cbnz r1, .L151 -.L153: - ldr r4, .L155+4 +.L143: + cbnz r1, .L144 +.L146: + ldr r4, .L148+4 subs r3, r3, r2 asrs r3, r3, #1 muls r4, r3, r4 @@ -1269,20 +1225,20 @@ List_pop_index_node: bl List_remove_node uxth r0, r4 pop {r4, r5, r6, pc} -.L151: +.L144: ldrh r4, [r3] cmp r4, r5 - beq .L153 + beq .L146 subs r1, r1, #1 mla r3, r6, r4, r2 uxth r1, r1 - b .L150 -.L154: + b .L143 +.L147: movw r0, #65535 pop {r4, r5, r6, pc} -.L156: +.L149: .align 2 -.L155: +.L148: .word .LANCHOR0 .word -1431655765 .fnend @@ -1314,37 +1270,37 @@ List_get_gc_head_node: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L164 + ldr r2, .L157 push {r4, lr} .save {r4, lr} ldr r3, [r2, #2320] - cbz r3, .L163 + cbz r3, .L156 ldr r1, [r2, #2316] movs r4, #6 movw r2, #65535 -.L160: - cbz r0, .L161 +.L153: + cbz r0, .L154 ldrh r3, [r3] cmp r3, r2 - bne .L162 -.L163: + bne .L155 +.L156: movw r0, #65535 pop {r4, pc} -.L162: +.L155: subs r0, r0, #1 mla r3, r4, r3, r1 uxth r0, r0 - b .L160 -.L161: - ldr r0, .L164+4 + b .L153 +.L154: + ldr r0, .L157+4 subs r3, r3, r1 asrs r3, r3, #1 muls r3, r0, r3 uxth r0, r3 pop {r4, pc} -.L165: +.L158: .align 2 -.L164: +.L157: .word .LANCHOR0 .word -1431655765 .fnend @@ -1363,53 +1319,53 @@ List_update_data_list: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} mov r5, r0 - ldr r4, .L177 + ldr r4, .L170 ldrh r3, [r4, #2348] cmp r3, r0 - beq .L168 + beq .L161 ldrh r3, [r4, #2396] cmp r3, r0 - beq .L168 + beq .L161 ldrh r3, [r4, #2444] cmp r3, r0 - beq .L168 + beq .L161 movs r7, #6 ldr r9, [r4, #2316] muls r7, r0, r7 ldr r3, [r4, #2320] add r8, r9, r7 cmp r8, r3 - beq .L168 + beq .L161 ldrh r6, [r8, #4] ldr r3, [r4, #2324] ldrh r3, [r3, r0, lsl #1] cmp r6, #0 - beq .L175 - muls r6, r3, r6 -.L170: - ldrh r3, [r8, #2] - movw r2, #65535 - cmp r3, r2 - bne .L171 - ldrh r2, [r9, r7] - cmp r2, r3 - bne .L171 - mov r2, #488 - ldr r1, .L177+4 - ldr r0, .L177+8 - bl sftl_printk -.L171: - ldrh r3, [r8, #2] - movw r2, #65535 - cmp r3, r2 - bne .L172 - ldrh r2, [r9, r7] - cmp r2, r3 beq .L168 -.L172: + muls r6, r3, r6 +.L163: + ldrh r3, [r8, #2] + movw r2, #65535 + cmp r3, r2 + bne .L164 + ldrh r2, [r9, r7] + cmp r2, r3 + bne .L164 + movw r2, #463 + ldr r1, .L170+4 + ldr r0, .L170+8 + bl sftl_printk +.L164: + ldrh r3, [r8, #2] + movw r2, #65535 + cmp r3, r2 + bne .L165 + ldrh r2, [r9, r7] + cmp r2, r3 + beq .L161 +.L165: movs r2, #6 muls r2, r3, r2 - ldr r3, .L177+12 + ldr r3, .L170+12 asrs r1, r2, #1 muls r3, r1, r3 ldr r1, [r4, #2324] @@ -1417,38 +1373,38 @@ List_update_data_list: ldr r1, [r4, #2316] add r2, r2, r1 ldrh r3, [r2, #4] - cbz r3, .L176 + cbz r3, .L169 muls r3, r0, r3 -.L173: +.L166: cmp r6, r3 - bcs .L168 + bcs .L161 mov r1, r5 - ldr r0, .L177+16 + ldr r0, .L170+16 bl List_remove_node ldrh r3, [r4, #2336] - cbnz r3, .L174 - movw r2, #499 - ldr r1, .L177+4 - ldr r0, .L177+8 + cbnz r3, .L167 + mov r2, #474 + ldr r1, .L170+4 + ldr r0, .L170+8 bl sftl_printk -.L174: +.L167: ldrh r3, [r4, #2336] mov r0, r5 subs r3, r3, #1 strh r3, [r4, #2336] @ movhi bl INSERT_DATA_LIST -.L168: +.L161: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L175: +.L168: mov r6, #-1 - b .L170 -.L176: + b .L163 +.L169: mov r3, #-1 - b .L173 -.L178: + b .L166 +.L171: .align 2 -.L177: +.L170: .word .LANCHOR0 .word .LANCHOR1+51 .word .LC1 @@ -1470,77 +1426,77 @@ select_l2p_ram_region: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} movs r1, #0 - ldr r5, .L189 + ldr r5, .L182 movs r0, #12 movw r6, #65535 ldrh r2, [r5, #138] ldr r3, [r5, #2492] -.L180: +.L173: uxth r4, r1 cmp r4, r2 - bcc .L182 + bcc .L175 mov r4, r2 movs r1, #0 mov r7, #-2147483648 mov ip, #12 -.L183: +.L176: uxth r6, r1 cmp r6, r2 - bcc .L185 + bcc .L178 cmp r4, r2 - bcc .L181 + bcc .L174 ldrh r7, [r5, #2496] mov r4, r2 movs r1, #0 mov r0, #-1 -.L186: +.L179: uxth r5, r1 cmp r5, r2 - bcc .L188 - cmp r4, r2 bcc .L181 - movw r2, #823 - ldr r1, .L189+4 - ldr r0, .L189+8 + cmp r4, r2 + bcc .L174 + movw r2, #787 + ldr r1, .L182+4 + ldr r0, .L182+8 bl sftl_printk - b .L181 -.L182: + b .L174 +.L175: adds r1, r1, #1 mla r7, r0, r1, r3 ldrh r7, [r7, #-12] cmp r7, r6 - bne .L180 -.L181: + bne .L173 +.L174: mov r0, r4 pop {r3, r4, r5, r6, r7, pc} -.L185: +.L178: mla r0, ip, r1, r3 ldr r0, [r0, #4] cmp r0, #0 - blt .L184 + blt .L177 cmp r7, r0 itt hi movhi r7, r0 movhi r4, r6 -.L184: +.L177: adds r1, r1, #1 - b .L183 -.L188: + b .L176 +.L181: ldr r6, [r3, #4] cmp r0, r6 - bls .L187 + bls .L180 ldrh ip, [r3] cmp ip, r7 itt ne movne r0, r6 movne r4, r5 -.L187: +.L180: adds r1, r1, #1 adds r3, r3, #12 - b .L186 -.L190: + b .L179 +.L183: .align 2 -.L189: +.L182: .word .LANCHOR0 .word .LANCHOR1+73 .word .LC1 @@ -1557,18 +1513,18 @@ FtlUpdateVaildLpn: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L197 + ldr r1, .L190 push {r4, r5, lr} .save {r4, r5, lr} mov r3, r1 ldrh r2, [r1, #2498] cmp r2, #4 - bhi .L192 - cbnz r0, .L192 + bhi .L185 + cbnz r0, .L185 adds r2, r2, #1 strh r2, [r1, #2498] @ movhi pop {r4, r5, pc} -.L192: +.L185: movs r2, #0 ldrh r1, [r3, #40] strh r2, [r3, #2498] @ movhi @@ -1576,21 +1532,21 @@ FtlUpdateVaildLpn: str r2, [r3, #2500] ldr r2, [r3, #2324] add r1, r2, r1, lsl #1 -.L193: +.L186: cmp r2, r1 - bne .L195 + bne .L188 pop {r4, r5, pc} -.L195: +.L188: ldrh r4, [r2], #2 cmp r4, r5 ittt ne ldrne r0, [r3, #2500] addne r0, r0, r4 strne r0, [r3, #2500] - b .L193 -.L198: + b .L186 +.L191: .align 2 -.L197: +.L190: .word .LANCHOR0 .fnend .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn @@ -1607,10 +1563,10 @@ ftl_set_blk_mode: @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. mov r3, r0 - cbz r1, .L200 + cbz r1, .L193 b ftl_set_blk_mode.part.6 -.L200: - ldr r2, .L201 +.L193: + ldr r2, .L194 lsrs r0, r0, #5 and r3, r3, #31 ldr r1, [r2, #24] @@ -1620,9 +1576,9 @@ ftl_set_blk_mode: bic r2, r2, r3 str r2, [r1, r0, lsl #2] bx lr -.L202: +.L195: .align 2 -.L201: +.L194: .word .LANCHOR0 .fnend .size ftl_set_blk_mode, .-ftl_set_blk_mode @@ -1638,7 +1594,7 @@ ftl_get_blk_mode: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r3, .L204 + ldr r3, .L197 lsrs r2, r0, #5 and r0, r0, #31 ldr r3, [r3, #24] @@ -1646,9 +1602,9 @@ ftl_get_blk_mode: lsr r0, r3, r0 and r0, r0, #1 bx lr -.L205: +.L198: .align 2 -.L204: +.L197: .word .LANCHOR0 .fnend .size ftl_get_blk_mode, .-ftl_get_blk_mode @@ -1669,12 +1625,12 @@ ftl_sb_update_avl_pages: strh r3, [r0, #4] @ movhi add r4, r0, r2, lsl #1 movw r7, #65535 - ldr r3, .L213 + ldr r3, .L206 adds r4, r4, #14 ldrh r5, [r3, #32] -.L207: +.L200: cmp r2, r5 - bcc .L209 + bcc .L202 ldrh r3, [r3, #102] add r4, r0, #16 movw r6, #65535 @@ -1682,12 +1638,12 @@ ftl_sb_update_avl_pages: subs r1, r3, r1 movs r3, #0 uxth r1, r1 -.L210: +.L203: uxth r2, r3 cmp r5, r2 - bhi .L212 + bhi .L205 pop {r4, r5, r6, r7, pc} -.L209: +.L202: ldrh r6, [r4, #2]! adds r2, r2, #1 uxth r2, r2 @@ -1696,8 +1652,8 @@ ftl_sb_update_avl_pages: ldrhne r6, [r0, #4] addne r6, r6, #1 strhne r6, [r0, #4] @ movhi - b .L207 -.L212: + b .L200 +.L205: ldrh r2, [r4], #2 adds r3, r3, #1 cmp r2, r6 @@ -1705,10 +1661,10 @@ ftl_sb_update_avl_pages: ldrhne r2, [r0, #4] addne r2, r2, r1 strhne r2, [r0, #4] @ movhi - b .L210 -.L214: + b .L203 +.L207: .align 2 -.L213: +.L206: .word .LANCHOR0 .fnend .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages @@ -1726,24 +1682,24 @@ FtlSlcSuperblockCheck: ldrh r3, [r0, #4] push {r4, r5, lr} .save {r4, r5, lr} - cbz r3, .L215 + cbz r3, .L208 ldrh r2, [r0] movw r3, #65535 cmp r2, r3 - beq .L215 + beq .L208 ldrb r2, [r0, #6] @ zero_extendqisi2 movs r5, #0 adds r2, r2, #8 ldrh r1, [r0, r2, lsl #1] - ldr r2, .L221 + ldr r2, .L214 ldrh r4, [r2, #32] mov r2, r3 -.L218: +.L211: cmp r1, r2 - beq .L220 -.L215: + beq .L213 +.L208: pop {r4, r5, pc} -.L220: +.L213: ldrb r3, [r0, #6] @ zero_extendqisi2 adds r3, r3, #1 uxtb r3, r3 @@ -1757,10 +1713,10 @@ FtlSlcSuperblockCheck: ldrb r3, [r0, #6] @ zero_extendqisi2 adds r3, r3, #8 ldrh r1, [r0, r3, lsl #1] - b .L218 -.L222: + b .L211 +.L215: .align 2 -.L221: +.L214: .word .LANCHOR0 .fnend .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck @@ -1778,54 +1734,53 @@ make_superblock: push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r4, r0 - ldr r6, .L228 + ldr r6, .L221 ldrh r2, [r0] ldrh r3, [r6, #40] cmp r2, r3 - bcc .L224 - movw r2, #2146 - ldr r1, .L228+4 - ldr r0, .L228+8 + bcc .L217 + movw r2, #2110 + ldr r1, .L221+4 + ldr r0, .L221+8 bl sftl_printk -.L224: +.L217: ldrh r9, [r6, #32] add r7, r4, #16 - ldr r10, .L228+12 + ldr r10, .L221+12 movw r8, #65535 movs r5, #0 strh r5, [r4, #4] @ movhi strb r5, [r4, #7] -.L225: +.L218: uxth r3, r5 cmp r9, r3 - bhi .L227 + bhi .L220 ldrb r3, [r4, #7] @ zero_extendqisi2 movs r0, #0 ldrh r2, [r6, #102] + strb r0, [r4, #9] smulbb r3, r3, r2 strh r3, [r4, #4] @ movhi - movs r3, #1 - strb r3, [r4, #9] pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L227: +.L220: ldrh r1, [r4] ldrb r0, [r10, r5] @ zero_extendqisi2 bl V2P_block strh r8, [r7] @ movhi mov fp, r0 bl FtlBbmIsBadBlock - cbnz r0, .L226 + cbnz r0, .L219 strh fp, [r7] @ movhi ldrb r3, [r4, #7] @ zero_extendqisi2 adds r3, r3, #1 strb r3, [r4, #7] -.L226: +.L219: adds r5, r5, #1 adds r7, r7, #2 - b .L225 -.L229: + b .L218 +.L222: .align 2 -.L228: +.L221: .word .LANCHOR0 .word .LANCHOR1+95 .word .LC1 @@ -1846,44 +1801,44 @@ update_multiplier_value: push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} movs r5, #0 - ldr r6, .L236 + ldr r6, .L229 mov r7, r0 mov r4, r5 ldrh r8, [r6, #32] add r10, r6, #60 ldrh r9, [r6, #102] -.L231: +.L224: uxth r3, r5 cmp r8, r3 - bhi .L233 - cbz r4, .L235 + bhi .L226 + cbz r4, .L228 mov r1, r4 mov r0, #32768 bl __aeabi_idiv -.L234: +.L227: ldr r1, [r6, #2316] movs r3, #6 mla r1, r3, r7, r1 strh r0, [r1, #4] @ movhi movs r0, #0 pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L233: +.L226: mov r1, r7 ldrb r0, [r10, r5] @ zero_extendqisi2 bl V2P_block bl FtlBbmIsBadBlock - cbnz r0, .L232 + cbnz r0, .L225 add r4, r4, r9 uxth r4, r4 -.L232: +.L225: adds r5, r5, #1 - b .L231 -.L235: + b .L224 +.L228: mov r0, r4 - b .L234 -.L237: + b .L227 +.L230: .align 2 -.L236: +.L229: .word .LANCHOR0 .fnend .size update_multiplier_value, .-update_multiplier_value @@ -1899,22 +1854,22 @@ GetFreeBlockMinEraseCount: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L241 + ldr r2, .L234 ldr r0, [r2, #2340] - cbz r0, .L239 + cbz r0, .L232 ldr r3, [r2, #2316] subs r0, r0, r3 - ldr r3, .L241+4 + ldr r3, .L234+4 asrs r0, r0, #1 muls r0, r3, r0 ldr r3, [r2, #2328] uxth r0, r0 ldrh r0, [r3, r0, lsl #1] -.L239: +.L232: bx lr -.L242: +.L235: .align 2 -.L241: +.L234: .word .LANCHOR0 .word -1431655765 .fnend @@ -1930,11 +1885,11 @@ GetFreeBlockMaxEraseCount: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r1, .L251 + ldr r1, .L244 push {r4, r5, r6, r7, lr} .save {r4, r5, r6, r7, lr} ldr r3, [r1, #2340] - cbz r3, .L249 + cbz r3, .L242 ldrh r2, [r1, #2344] movs r6, #6 ldr r4, [r1, #2316] @@ -1946,32 +1901,32 @@ GetFreeBlockMaxEraseCount: cmp r0, r2 it gt uxthgt r0, r2 - ldr r2, .L251+4 + ldr r2, .L244+4 muls r3, r2, r3 movs r2, #0 uxth r3, r3 -.L246: +.L239: uxth r5, r2 cmp r0, r5 - bls .L248 + bls .L241 mul r5, r6, r3 adds r2, r2, #1 ldrh r5, [r4, r5] cmp r5, r7 - bne .L250 -.L248: + bne .L243 +.L241: ldr r2, [r1, #2328] ldrh r0, [r2, r3, lsl #1] pop {r4, r5, r6, r7, pc} -.L250: +.L243: mov r3, r5 - b .L246 -.L249: + b .L239 +.L242: mov r0, r3 pop {r4, r5, r6, r7, pc} -.L252: +.L245: .align 2 -.L251: +.L244: .word .LANCHOR0 .word -1431655765 .fnend @@ -1990,236 +1945,236 @@ FtlPrintInfo2buf: push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r6, r0 - ldr r5, .L265 + ldr r5, .L258 add r4, r6, #12 .pad #20 sub sp, sp, #20 - ldr r1, .L265+4 + ldr r1, .L258+4 bl strcpy ldr r3, [r5, #116] movs r1, #64 - ldr r2, .L265+8 + ldr r2, .L258+8 mov r0, r4 bl snprintf add r4, r4, r0 - ldr r1, .L265+12 + ldr r1, .L258+12 mov r0, r4 adds r4, r4, #10 bl strcpy ldr r3, [r5, #2504] movs r1, #64 - ldr r2, .L265+16 + ldr r2, .L258+16 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2500] - ldr r2, .L265+20 + ldr r2, .L258+20 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2508] - ldr r2, .L265+24 + ldr r2, .L258+24 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2512] - ldr r2, .L265+28 + ldr r2, .L258+28 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2516] - ldr r2, .L265+32 + ldr r2, .L258+32 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2520] - ldr r2, .L265+36 + ldr r2, .L258+36 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2524] - ldr r2, .L265+40 + ldr r2, .L258+40 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2528] - ldr r2, .L265+44 + ldr r2, .L258+44 movs r1, #64 mov r0, r4 bl snprintf ldr r3, [r5, #2532] add r4, r4, r0 - ldr r2, .L265+48 + ldr r2, .L258+48 movs r1, #64 mov r0, r4 lsrs r3, r3, #11 bl snprintf ldr r3, [r5, #2536] add r4, r4, r0 - ldr r2, .L265+52 + ldr r2, .L258+52 movs r1, #64 mov r0, r4 lsrs r3, r3, #11 bl snprintf add r4, r4, r0 ldr r3, [r5, #2540] - ldr r2, .L265+56 + ldr r2, .L258+56 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2544] - ldr r2, .L265+60 + ldr r2, .L258+60 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #158] - ldr r2, .L265+64 + ldr r2, .L258+64 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2344] - ldr r2, .L265+68 + ldr r2, .L258+68 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2548] - ldr r2, .L265+72 + ldr r2, .L258+72 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2552] - ldr r2, .L265+76 + ldr r2, .L258+76 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2556] - ldr r2, .L265+80 + ldr r2, .L258+80 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2560] - ldr r2, .L265+84 + ldr r2, .L258+84 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2564] - ldr r2, .L265+88 + ldr r2, .L258+88 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2568] - ldr r2, .L265+92 + ldr r2, .L258+92 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2298] - ldr r2, .L265+96 + ldr r2, .L258+96 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2296] - ldr r2, .L265+100 + ldr r2, .L258+100 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #140] - ldr r2, .L265+104 + ldr r2, .L258+104 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #132] - ldr r2, .L265+108 + ldr r2, .L258+108 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #28] - ldr r2, .L265+112 + ldr r2, .L258+112 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #218] - ldr r2, .L265+116 + ldr r2, .L258+116 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #40] - ldr r2, .L265+120 + ldr r2, .L258+120 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2572] - ldr r2, .L265+124 + ldr r2, .L258+124 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #44] - ldr r2, .L265+128 + ldr r2, .L258+128 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2576] - ldr r2, .L265+132 + ldr r2, .L258+132 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #152] - ldr r2, .L265+136 + ldr r2, .L258+136 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2350] - ldr r2, .L265+140 + ldr r2, .L258+140 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2354] @ zero_extendqisi2 - ldr r2, .L265+144 + ldr r2, .L258+144 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2348] - ldr r2, .L265+148 + ldr r2, .L258+148 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2356] @ zero_extendqisi2 - ldr r2, .L265+152 + ldr r2, .L258+152 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2352] - ldr r2, .L265+156 + ldr r2, .L258+156 movs r1, #64 mov r0, r4 bl snprintf @@ -2229,35 +2184,35 @@ FtlPrintInfo2buf: movs r1, #64 mov r0, r4 ldrh r3, [r3, r2, lsl #1] - ldr r2, .L265+160 + ldr r2, .L258+160 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2398] - ldr r2, .L265+164 + ldr r2, .L258+164 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2402] @ zero_extendqisi2 - ldr r2, .L265+168 + ldr r2, .L258+168 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2396] - ldr r2, .L265+172 + ldr r2, .L258+172 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2404] @ zero_extendqisi2 - ldr r2, .L265+176 + ldr r2, .L258+176 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2400] - ldr r2, .L265+180 + ldr r2, .L258+180 movs r1, #64 mov r0, r4 bl snprintf @@ -2267,68 +2222,68 @@ FtlPrintInfo2buf: movs r1, #64 mov r0, r4 ldrh r3, [r3, r2, lsl #1] - ldr r2, .L265+184 + ldr r2, .L258+184 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2446] - ldr r2, .L265+188 + ldr r2, .L258+188 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2450] @ zero_extendqisi2 - ldr r2, .L265+192 + ldr r2, .L258+192 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2444] - ldr r2, .L265+196 + ldr r2, .L258+196 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2452] @ zero_extendqisi2 - ldr r2, .L265+200 + ldr r2, .L258+200 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2448] - ldr r2, .L265+204 + ldr r2, .L258+204 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2590] - ldr r2, .L265+208 + ldr r2, .L258+208 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2594] @ zero_extendqisi2 - ldr r2, .L265+212 + ldr r2, .L258+212 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2588] - ldr r2, .L265+216 + ldr r2, .L258+216 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrb r3, [r5, #2596] @ zero_extendqisi2 - ldr r2, .L265+220 + ldr r2, .L258+220 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #2592] - b .L266 -.L267: + b .L259 +.L260: .align 2 -.L265: +.L258: .word .LANCHOR0 .word .LC2 .word .LC3 @@ -2385,14 +2340,14 @@ FtlPrintInfo2buf: .word .LC54 .word .LC55 .word .LC56 -.L266: - ldr r2, .L268 +.L259: + ldr r2, .L261 movs r1, #64 mov r0, r4 bl snprintf ldr r3, [r5, #2712] add r4, r4, r0 - ldr r2, .L268+4 + ldr r2, .L261+4 movs r1, #64 mov r0, r4 str r3, [sp, #4] @@ -2402,43 +2357,43 @@ FtlPrintInfo2buf: bl snprintf add r4, r4, r0 ldr r3, [r5, #2708] - ldr r2, .L268+8 + ldr r2, .L261+8 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #2732] - ldr r2, .L268+12 + ldr r2, .L261+12 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #3148] - ldr r2, .L268+16 + ldr r2, .L261+16 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #3150] - ldr r2, .L268+20 + ldr r2, .L261+20 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldr r3, [r5, #3152] - ldr r2, .L268+24 + ldr r2, .L261+24 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 ldrh r3, [r5, #3156] - ldr r2, .L268+28 + ldr r2, .L261+28 movs r1, #64 mov r0, r4 bl snprintf add r4, r4, r0 bl GetFreeBlockMinEraseCount - ldr r2, .L268+32 + ldr r2, .L261+32 mov r3, r0 movs r1, #64 mov r0, r4 @@ -2446,44 +2401,44 @@ FtlPrintInfo2buf: add r4, r4, r0 ldrh r0, [r5, #2344] bl GetFreeBlockMaxEraseCount - ldr r2, .L268+36 + ldr r2, .L261+36 mov r3, r0 movs r1, #64 mov r0, r4 bl snprintf - ldr r3, .L268+40 + ldr r3, .L261+40 add r4, r4, r0 ldr r3, [r3] cmp r3, #1 - beq .L254 -.L259: + beq .L247 +.L252: subs r0, r4, r6 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L254: +.L247: ldrh r3, [r5, #2588] movw r2, #65535 cmp r3, r2 - beq .L256 + beq .L249 ldr r2, [r5, #2324] mov r0, r4 movs r1, #64 ldrh r3, [r2, r3, lsl #1] - ldr r2, .L268+44 + ldr r2, .L261+44 bl snprintf add r4, r4, r0 -.L256: +.L249: movs r0, #0 - ldr r9, .L268+52 + ldr r9, .L261+52 bl List_get_gc_head_node uxth r0, r0 movs r7, #0 movw fp, #65535 mov r10, #6 -.L258: +.L251: cmp r0, fp - beq .L257 + beq .L250 ldr r3, [r5, #2328] mul r8, r10, r0 mov r2, r9 @@ -2505,22 +2460,22 @@ FtlPrintInfo2buf: cmp r7, #16 add r4, r4, r0 ldrh r0, [r3, r8] - bne .L258 -.L257: + bne .L251 +.L250: ldr r2, [r5, #2316] movs r7, #0 ldr r3, [r5, #2340] movw r9, #65535 - ldr fp, .L268+56 + ldr fp, .L261+56 mov r10, #6 subs r3, r3, r2 asrs r2, r3, #1 - ldr r3, .L268+48 + ldr r3, .L261+48 muls r3, r2, r3 uxth r3, r3 -.L260: +.L253: cmp r3, r9 - beq .L259 + beq .L252 ldr r2, [r5, #2328] mul r8, r10, r3 mov r0, r4 @@ -2538,13 +2493,13 @@ FtlPrintInfo2buf: bl snprintf cmp r7, #4 add r4, r4, r0 - beq .L259 + beq .L252 ldr r3, [r5, #2316] ldrh r3, [r3, r8] - b .L260 -.L269: + b .L253 +.L262: .align 2 -.L268: +.L261: .word .LC57 .word .LC58 .word .LC59 @@ -2577,10 +2532,10 @@ rknand_proc_ftlread: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} mov r5, r1 - blt .L272 - ldr r3, .L273 + blt .L265 + ldr r3, .L266 movs r1, #64 - ldr r2, .L273+4 + ldr r2, .L266+4 mov r0, r5 bl snprintf adds r4, r5, r0 @@ -2589,12 +2544,12 @@ rknand_proc_ftlread: add r0, r0, r4 subs r0, r0, r5 pop {r3, r4, r5, pc} -.L272: +.L265: movs r0, #0 pop {r3, r4, r5, pc} -.L274: +.L267: .align 2 -.L273: +.L266: .word .LC70 .word .LC71 .fnend @@ -2614,18 +2569,18 @@ GetSwlReplaceBlock: .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} .pad #28 sub sp, sp, #28 - ldr r4, .L299 + ldr r4, .L292 ldr r2, [r4, #2556] ldr r3, [r4, #2568] cmp r2, r3 - bcs .L276 + bcs .L269 ldrh r1, [r4, #40] movs r3, #0 ldr r0, [r4, #2328] str r3, [r4, #2548] -.L277: +.L270: cmp r3, r1 - bcc .L278 + bcc .L271 ldr r5, [r4, #2548] mov r0, r5 bl __aeabi_uidiv @@ -2635,48 +2590,48 @@ GetSwlReplaceBlock: subs r0, r5, r0 bl __aeabi_uidiv str r0, [r4, #2548] -.L279: +.L272: ldr r6, [r4, #2568] ldr r7, [r4, #2556] add r3, r6, #256 cmp r3, r7 - bls .L284 + bls .L277 ldr r2, [r4, #2564] add r3, r6, #768 cmp r3, r2 - bls .L284 -.L286: + bls .L277 +.L279: movw r5, #65535 -.L285: +.L278: mov r0, r5 add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L278: +.L271: ldrh r2, [r0, r3, lsl #1] adds r3, r3, #1 ldr r5, [r4, #2548] add r2, r2, r5 str r2, [r4, #2548] - b .L277 -.L276: + b .L270 +.L269: ldr r3, [r4, #2564] cmp r2, r3 - bls .L279 + bls .L272 adds r3, r3, #1 str r3, [r4, #2564] movs r3, #0 -.L281: +.L274: ldrh r2, [r4, #40] cmp r3, r2 - bcs .L279 + bcs .L272 ldr r1, [r4, #2328] ldrh r2, [r1, r3, lsl #1] adds r2, r2, #1 strh r2, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 - b .L281 -.L284: + b .L274 +.L277: ldrh r0, [r4, #2344] add r0, r0, r0, lsl #1 ubfx r0, r0, #2, #16 @@ -2684,10 +2639,10 @@ GetSwlReplaceBlock: add r3, r6, #64 mov r9, r0 cmp r0, r3 - bcc .L286 + bcc .L279 ldr r3, [r4, #2320] cmp r3, #0 - beq .L286 + beq .L279 ldrh r2, [r4, #40] movw r1, #65535 ldr lr, [r4, #2316] @@ -2697,42 +2652,42 @@ GetSwlReplaceBlock: str r2, [sp, #20] mov fp, #6 mov r2, r1 -.L287: +.L280: ldrh ip, [r3] cmp ip, r10 - bne .L290 + bne .L283 mov r5, r2 -.L289: +.L282: movw r3, #65535 cmp r5, r3 - beq .L286 + beq .L279 ldrh r10, [r8, r5, lsl #1] lsl fp, r5, #1 cmp r6, r10 - bcs .L291 + bcs .L284 bl GetFreeBlockMinEraseCount cmp r6, r0 it cc strcc r1, [r4, #2568] -.L291: +.L284: cmp r7, r10 - bls .L286 + bls .L279 add r3, r10, #128 cmp r9, r3 - ble .L286 + ble .L279 add r3, r10, #256 cmp r7, r3 - bhi .L292 + bhi .L285 ldr r3, [r4, #2564] add r10, r10, #768 cmp r10, r3 - bcs .L286 -.L292: + bcs .L279 +.L285: str r9, [sp, #8] mov r2, r7 ldrh r3, [r8, fp] mov r1, r5 - ldr r0, .L299+4 + ldr r0, .L292+4 str r3, [sp, #4] ldr r3, [r4, #2324] ldrh r3, [r3, fp] @@ -2741,33 +2696,33 @@ GetSwlReplaceBlock: bl sftl_printk movs r3, #1 str r3, [r4, #3160] - b .L285 -.L290: + b .L278 +.L283: adds r0, r0, #1 ldr r5, [sp, #20] uxth r0, r0 cmp r0, r5 - bhi .L286 + bhi .L279 ldrh r5, [r3, #4] - cbz r5, .L288 - ldr r5, .L299+8 + cbz r5, .L281 + ldr r5, .L292+8 sub r3, r3, lr asrs r3, r3, #1 muls r3, r5, r3 uxth r5, r3 ldrh r3, [r8, r5, lsl #1] cmp r6, r3 - bcs .L289 + bcs .L282 cmp r1, r3 itt hi movhi r1, r3 movhi r2, r5 -.L288: +.L281: mla r3, fp, ip, lr - b .L287 -.L300: + b .L280 +.L293: .align 2 -.L299: +.L292: .word .LANCHOR0 .word .LC72 .word -1431655765 @@ -2788,18 +2743,18 @@ free_data_superblock: push {r3, lr} .save {r3, lr} cmp r0, r2 - beq .L302 - ldr r2, .L303 + beq .L295 + ldr r2, .L296 movs r1, #0 ldr r2, [r2, #2324] strh r1, [r2, r0, lsl #1] @ movhi bl INSERT_FREE_LIST -.L302: +.L295: movs r0, #0 pop {r3, pc} -.L304: +.L297: .align 2 -.L303: +.L296: .word .LANCHOR0 .fnend .size free_data_superblock, .-free_data_superblock @@ -2820,29 +2775,29 @@ get_new_active_ppa: ldrh r2, [r0] mov r4, r0 cmp r2, r3 - bne .L306 - movw r2, #2776 - ldr r1, .L319 - ldr r0, .L319+4 + bne .L299 + movw r2, #2740 + ldr r1, .L312 + ldr r0, .L312+4 bl sftl_printk -.L306: - ldr r5, .L319+8 +.L299: + ldr r5, .L312+8 ldrh r2, [r4, #2] ldrh r3, [r5, #102] cmp r2, r3 - bne .L307 - movw r2, #2777 - ldr r1, .L319 - ldr r0, .L319+4 + bne .L300 + movw r2, #2741 + ldr r1, .L312 + ldr r0, .L312+4 bl sftl_printk -.L307: +.L300: ldrh r3, [r4, #4] - cbnz r3, .L308 - movw r2, #2778 - ldr r1, .L319 - ldr r0, .L319+4 + cbnz r3, .L301 + movw r2, #2742 + ldr r1, .L312 + ldr r0, .L312+4 bl sftl_printk -.L308: +.L301: ldrb r2, [r4, #6] @ zero_extendqisi2 movs r3, #0 ldrh r1, [r5, #32] @@ -2851,10 +2806,10 @@ get_new_active_ppa: adds r2, r2, #8 ldrh r0, [r4, r2, lsl #1] mov r2, r3 -.L309: +.L302: cmp r0, r6 ldrb r3, [r4, #6] @ zero_extendqisi2 - beq .L311 + beq .L304 ldrh r2, [r4, #4] ldrh r6, [r4, #2] subs r2, r2, #1 @@ -2862,7 +2817,7 @@ get_new_active_ppa: orr r6, r6, r0, lsl #10 movw r0, #65535 strh r2, [r4, #4] @ movhi -.L313: +.L306: adds r3, r3, #1 uxtb r3, r3 cmp r1, r3 @@ -2874,21 +2829,21 @@ get_new_active_ppa: add r7, r3, #8 ldrh r7, [r4, r7, lsl #1] cmp r7, r0 - beq .L313 + beq .L306 strb r3, [r4, #6] ldrh r1, [r4, #2] ldrh r3, [r5, #102] cmp r1, r3 - bne .L305 - cbz r2, .L305 - movw r2, #2799 - ldr r1, .L319 - ldr r0, .L319+4 + bne .L298 + cbz r2, .L298 + movw r2, #2763 + ldr r1, .L312 + ldr r0, .L312+4 bl sftl_printk -.L305: +.L298: mov r0, r6 pop {r3, r4, r5, r6, r7, pc} -.L311: +.L304: adds r3, r3, #1 uxtb r3, r3 cmp r3, r1 @@ -2901,10 +2856,10 @@ get_new_active_ppa: ldrb r3, [r4, #6] @ zero_extendqisi2 adds r3, r3, #8 ldrh r0, [r4, r3, lsl #1] - b .L309 -.L320: + b .L302 +.L313: .align 2 -.L319: +.L312: .word .LANCHOR1+111 .word .LC1 .word .LANCHOR0 @@ -2921,7 +2876,7 @@ FtlGcBufInit: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L330 + ldr r3, .L323 mov ip, #20 push {r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} @@ -2930,21 +2885,21 @@ FtlGcBufInit: movs r2, #0 mov r7, r3 str r2, [r3, #3164] -.L322: +.L315: ldrh r1, [r3, #32] uxth r0, r2 adds r4, r2, #1 cmp r0, r1 - bcc .L325 - ldr r7, .L330 + bcc .L318 + ldr r7, .L323 mov ip, #12 movs r6, #0 -.L326: +.L319: ldr r2, [r3, #3184] cmp r1, r2 - bcc .L329 + bcc .L322 pop {r4, r5, r6, r7, r8, r9, pc} -.L325: +.L318: uxth r2, r2 ldr r8, [r3, #3168] mul lr, r9, r2 @@ -2975,8 +2930,8 @@ FtlGcBufInit: ldr r1, [r8, #4] str r1, [r2, #12] mov r2, r4 - b .L322 -.L329: + b .L315 +.L322: mul r0, ip, r1 ldr r4, [r3, #3168] ldr r5, [r3, #3172] @@ -3001,10 +2956,10 @@ FtlGcBufInit: add r2, r2, r4 uxth r1, r1 str r2, [r0, #4] - b .L326 -.L331: + b .L319 +.L324: .align 2 -.L330: +.L323: .word .LANCHOR0 .fnend .size FtlGcBufInit, .-FtlGcBufInit @@ -3019,7 +2974,7 @@ FtlGcBufFree: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L339 + ldr r3, .L332 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} movs r5, #0 @@ -3028,32 +2983,32 @@ FtlGcBufFree: mov r8, r5 ldr ip, [r3, #3184] ldr r6, [r3, #3168] -.L333: +.L326: uxth r3, r5 cmp r1, r3 - bls .L332 + bls .L325 mla r4, r10, r3, r0 movs r2, #0 -.L334: +.L327: uxth r3, r2 cmp ip, r3 - bls .L335 + bls .L328 mul r3, lr, r3 ldr r7, [r4, #8] adds r2, r2, #1 add r9, r6, r3 ldr r3, [r6, r3] cmp r3, r7 - bne .L334 + bne .L327 str r8, [r9, #8] -.L335: +.L328: adds r5, r5, #1 - b .L333 -.L332: + b .L326 +.L325: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L340: +.L333: .align 2 -.L339: +.L332: .word .LANCHOR0 .fnend .size FtlGcBufFree, .-FtlGcBufFree @@ -3068,7 +3023,7 @@ FtlGcBufAlloc: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L348 + ldr r3, .L341 mov ip, #12 push {r4, r5, r6, r7, r8, r9, lr} .save {r4, r5, r6, r7, r8, r9, lr} @@ -3077,34 +3032,34 @@ FtlGcBufAlloc: mov r8, #20 ldr r5, [r3, #3184] ldr r6, [r3, #3168] -.L342: +.L335: uxth r2, r4 cmp r1, r2 - bhi .L346 + bhi .L339 pop {r4, r5, r6, r7, r8, r9, pc} -.L346: +.L339: mov r9, #0 -.L343: +.L336: uxth r3, r9 cmp r5, r3 - bls .L344 + bls .L337 mla r3, ip, r3, r6 add r9, r9, #1 ldr r7, [r3, #8] cmp r7, #0 - bne .L343 + bne .L336 mla r2, r8, r2, r0 ldr r7, [r3] str lr, [r3, #8] str r7, [r2, #8] ldr r3, [r3, #4] str r3, [r2, #12] -.L344: +.L337: adds r4, r4, #1 - b .L342 -.L349: + b .L335 +.L342: .align 2 -.L348: +.L341: .word .LANCHOR0 .fnend .size FtlGcBufAlloc, .-FtlGcBufAlloc @@ -3120,24 +3075,24 @@ IsBlkInGcList: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L355 + ldr r2, .L348 ldr r3, [r2, #3188] ldrh r2, [r2, #3192] add r2, r3, r2, lsl #1 -.L351: +.L344: cmp r3, r2 - bne .L353 + bne .L346 movs r0, #0 bx lr -.L353: +.L346: ldrh r1, [r3], #2 cmp r1, r0 - bne .L351 + bne .L344 movs r0, #1 bx lr -.L356: +.L349: .align 2 -.L355: +.L348: .word .LANCHOR0 .fnend .size IsBlkInGcList, .-IsBlkInGcList @@ -3160,26 +3115,26 @@ FtlGcUpdatePage: mov r7, r2 movs r4, #0 bl P2V_block_in_plane - ldr r3, .L361 + ldr r3, .L354 ldrh r1, [r3, #3192] ldr r2, [r3, #3188] -.L358: +.L351: uxth ip, r4 cmp ip, r1 - bcc .L360 - bne .L359 + bcc .L353 + bne .L352 strh r0, [r2, ip, lsl #1] @ movhi ldrh r0, [r3, #3192] adds r0, r0, #1 strh r0, [r3, #3192] @ movhi - b .L359 -.L360: + b .L352 +.L353: adds r4, r4, #1 add ip, r2, r4, lsl #1 ldrh ip, [ip, #-2] cmp ip, r0 - bne .L358 -.L359: + bne .L351 +.L352: ldrh r2, [r3, #3200] movs r0, #12 muls r0, r2, r0 @@ -3192,9 +3147,9 @@ FtlGcUpdatePage: adds r2, r2, #1 strh r2, [r3, #3200] @ movhi pop {r3, r4, r5, r6, r7, pc} -.L362: +.L355: .align 2 -.L361: +.L354: .word .LANCHOR0 .fnend .size FtlGcUpdatePage, .-FtlGcUpdatePage @@ -3209,50 +3164,34 @@ FtlGcRefreshBlock: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} + push {r4, lr} + .save {r4, lr} mov r1, r0 mov r4, r0 - ldr r0, .L368 + ldr r0, .L359 bl sftl_printk - ldr r3, .L368+4 - ldrh r6, [r3, #3202] - cmp r4, r6 - beq .L364 - ldrh r5, [r3, #3204] - cmp r4, r5 - beq .L364 - ldrh r0, [r3, #3206] + ldr r3, .L359+4 + ldrh r0, [r3, #3202] cmp r4, r0 - beq .L364 - ldrh r1, [r3, #3208] + beq .L357 + ldrh r1, [r3, #3204] cmp r4, r1 - beq .L364 + beq .L357 movw r2, #65535 - cmp r6, r2 - bne .L365 - strh r4, [r3, #3202] @ movhi -.L364: - movs r0, #0 - pop {r4, r5, r6, pc} -.L365: - cmp r5, r2 - bne .L366 - strh r4, [r3, #3204] @ movhi - b .L364 -.L366: cmp r0, r2 - bne .L367 - strh r4, [r3, #3206] @ movhi - b .L364 -.L367: + bne .L358 + strh r4, [r3, #3202] @ movhi +.L357: + movs r0, #0 + pop {r4, pc} +.L358: cmp r1, r2 it eq - strheq r4, [r3, #3208] @ movhi - b .L364 -.L369: + strheq r4, [r3, #3204] @ movhi + b .L357 +.L360: .align 2 -.L368: +.L359: .word .LC73 .word .LANCHOR0 .fnend @@ -3271,41 +3210,41 @@ FtlGcMarkBadPhyBlk: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r5, r0 - ldr r4, .L374 + ldr r4, .L365 bl P2V_block_in_plane mov r2, r5 mov r6, r0 - ldrh r1, [r4, #3210] - ldr r0, .L374+4 + ldrh r1, [r4, #3206] + ldr r0, .L365+4 bl sftl_printk mov r0, r6 bl FtlGcRefreshBlock - ldrh r3, [r4, #3210] + ldrh r3, [r4, #3206] movs r2, #0 - addw r0, r4, #3212 -.L371: + addw r0, r4, #3208 +.L362: uxth r1, r2 cmp r3, r1 - bhi .L373 + bhi .L364 cmp r3, #15 itttt ls addls r2, r3, #1 - strhls r2, [r4, #3210] @ movhi + strhls r2, [r4, #3206] @ movhi addls r4, r4, r3, lsl #1 - strhls r5, [r4, #3212] @ movhi - b .L372 -.L373: + strhls r5, [r4, #3208] @ movhi + b .L363 +.L364: adds r2, r2, #1 add r1, r0, r2, lsl #1 ldrh r1, [r1, #-2] cmp r1, r5 - bne .L371 -.L372: + bne .L362 +.L363: movs r0, #0 pop {r4, r5, r6, pc} -.L375: +.L366: .align 2 -.L374: +.L365: .word .LANCHOR0 .word .LC74 .fnend @@ -3323,32 +3262,32 @@ FtlGcReFreshBadBlk: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} .save {r4, lr} - ldr r4, .L382 - ldrh r3, [r4, #3210] - cbz r3, .L377 + ldr r4, .L373 + ldrh r3, [r4, #3206] + cbz r3, .L368 ldrh r1, [r4, #3202] movw r2, #65535 cmp r1, r2 - bne .L377 - ldrh r2, [r4, #3246] + bne .L368 + ldrh r2, [r4, #3242] cmp r2, r3 itt cs movcs r3, #0 - strhcs r3, [r4, #3246] @ movhi - ldrh r3, [r4, #3246] + strhcs r3, [r4, #3242] @ movhi + ldrh r3, [r4, #3242] add r3, r4, r3, lsl #1 - ldrh r0, [r3, #3212] + ldrh r0, [r3, #3208] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh r3, [r4, #3246] + ldrh r3, [r4, #3242] adds r3, r3, #1 - strh r3, [r4, #3246] @ movhi -.L377: + strh r3, [r4, #3242] @ movhi +.L368: movs r0, #0 pop {r4, pc} -.L383: +.L374: .align 2 -.L382: +.L373: .word .LANCHOR0 .fnend .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk @@ -3364,11 +3303,11 @@ ftl_malloc: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r1, .L385 + ldr r1, .L376 b __kmalloc -.L386: +.L377: .align 2 -.L385: +.L376: .word 37748929 .fnend .size ftl_malloc, .-ftl_malloc @@ -3401,54 +3340,54 @@ rknand_print_hex: push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r6, #0 - ldr fp, .L397+16 + ldr fp, .L388+16 mov r10, r0 mov r7, r1 mov r8, r2 mov r9, r3 mov r5, r6 mov r4, r6 -.L389: +.L380: cmp r4, r9 - bcc .L395 - ldr r0, .L397 + bcc .L386 + ldr r0, .L388 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} b sftl_printk -.L395: - cbnz r5, .L390 +.L386: + cbnz r5, .L381 mov r3, r6 mov r2, r7 mov r1, r10 - ldr r0, .L397+4 + ldr r0, .L388+4 bl sftl_printk -.L390: +.L381: cmp r8, #4 - bne .L391 + bne .L382 ldr r1, [r7, r4, lsl #2] - ldr r0, .L397+8 -.L396: + ldr r0, .L388+8 +.L387: adds r5, r5, #1 bl sftl_printk cmp r5, #15 - bls .L394 + bls .L385 movs r5, #0 - ldr r0, .L397 + ldr r0, .L388 bl sftl_printk -.L394: +.L385: adds r4, r4, #1 add r6, r6, r8 - b .L389 -.L391: + b .L380 +.L382: cmp r8, #2 ittee eq ldrheq r1, [r7, r4, lsl #1] moveq r0, fp ldrbne r1, [r7, r4] @ zero_extendqisi2 - ldrne r0, .L397+12 - b .L396 -.L398: + ldrne r0, .L388+12 + b .L387 +.L389: .align 2 -.L397: +.L388: .word .LC79 .word .LC75 .word .LC76 @@ -3457,390 +3396,6 @@ rknand_print_hex: .fnend .size rknand_print_hex, .-rknand_print_hex .align 1 - .global FlashReadPages - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FlashReadPages, %function -FlashReadPages: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - mov r8, r1 - ldr r5, .L417 - mov r4, r0 - movs r6, #0 - ldr r10, .L417+4 - ldrh r9, [r5, #12] - ldr fp, .L417+8 -.L400: - cmp r6, r8 - bne .L407 - movs r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L407: - ldr r3, [r4, #8] - cbz r3, .L401 - ldr r3, [r4, #12] - cbnz r3, .L402 -.L401: - movs r2, #101 - mov r1, r10 - mov r0, fp - bl sftl_printk -.L402: - mov r2, sp - add r1, sp, #4 - mov r0, r4 - bl l2p_addr_tran - ldr r3, [r4, #12] - ldr r2, [r4, #8] - ldr r1, [sp, #4] - ldrb r0, [sp] @ zero_extendqisi2 - ldr r7, [r5, #3260] - blx r7 - str r0, [r4] - ldrh r3, [r5, #14] - cmp r3, #4 - bne .L404 - ldr r3, [r4, #12] - ldr r2, [r4, #8] - ldr r1, [sp, #4] - adds r3, r3, #8 - ldrb r0, [sp] @ zero_extendqisi2 - add r2, r2, #2048 - ldr r7, [r5, #3260] - add r1, r1, r9 - blx r7 - adds r0, r0, #1 - beq .L405 - ldr r3, [r4, #12] - ldr r2, [r3, #12] - adds r2, r2, #1 - bne .L404 - ldr r2, [r3, #8] - adds r2, r2, #1 - bne .L404 - ldr r3, [r3] - adds r3, r3, #1 - beq .L404 -.L405: - mov r3, #-1 - str r3, [r4] -.L404: - adds r6, r6, #1 - adds r4, r4, #20 - b .L400 -.L418: - .align 2 -.L417: - .word .LANCHOR0 - .word .LANCHOR1+130 - .word .LC1 - .fnend - .size FlashReadPages, .-FlashReadPages - .align 1 - .global FtlLoadFactoryBbt - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlLoadFactoryBbt, %function -FtlLoadFactoryBbt: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - movs r6, #0 - ldr r4, .L429 - movw r10, #61664 - ldr r3, [r4, #3284] - add r7, r4, #162 - ldr r8, [r4, #3288] - add r9, r4, #3264 - str r3, [r4, #3272] - str r8, [r4, #3276] -.L420: - ldrh r3, [r4, #54] - cmp r6, r3 - bcc .L425 - movs r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L425: - ldrh r5, [r4, #98] - movw r3, #65535 - strh r3, [r7, #2]! @ movhi -.L422: - ldrh r3, [r4, #98] - subs r5, r5, #1 - uxth r5, r5 - sub r2, r3, #16 - cmp r5, r2 - ble .L423 - mla r3, r6, r3, r5 - movs r2, #1 - mov r1, r2 - mov r0, r9 - lsls r3, r3, #10 - str r3, [r4, #3268] - bl FlashReadPages - ldr r3, [r4, #3264] - adds r3, r3, #1 - beq .L422 - ldrh r3, [r8] - cmp r3, r10 - bne .L422 - strh r5, [r7] @ movhi -.L423: - adds r6, r6, #1 - b .L420 -.L430: - .align 2 -.L429: - .word .LANCHOR0 - .fnend - .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt - .align 1 - .global FtlGetLastWrittenPage - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlGetLastWrittenPage, %function -FtlGetLastWrittenPage: - .fnstart - @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L442 - cmp r1, #1 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - lsl r6, r0, #10 - .pad #88 - sub sp, sp, #88 - mov r2, r1 - mov r7, r1 - it eq - ldrheq r5, [r3, #104] - mov r1, #1 - it ne - ldrhne r5, [r3, #102] - add r0, sp, #4 - ldr r3, .L442+4 - subs r5, r5, #1 - sxth r5, r5 - str r3, [sp, #12] - add r3, sp, #24 - str r3, [sp, #16] - orr r3, r5, r6 - str r3, [sp, #8] - bl FlashReadPages - ldr r3, [sp, #24] - adds r3, r3, #1 - bne .L434 - mov r8, #0 -.L435: - cmp r8, r5 - ble .L438 -.L434: - mov r0, r5 - add sp, sp, #88 - @ sp needed - pop {r4, r5, r6, r7, r8, pc} -.L438: - add r3, r8, r5 - mov r2, r7 - add r3, r3, r3, lsr #31 - movs r1, #1 - add r0, sp, #4 - asrs r4, r3, #1 - sxth r3, r4 - orrs r3, r3, r6 - str r3, [sp, #8] - bl FlashReadPages - ldr r3, [sp, #24] - adds r3, r3, #1 - bne .L436 - ldr r3, [sp, #28] - adds r3, r3, #1 - bne .L436 - ldr r3, [sp, #4] - adds r3, r3, #1 - beq .L436 - subs r4, r4, #1 - sxth r5, r4 - b .L435 -.L436: - adds r4, r4, #1 - sxth r8, r4 - b .L435 -.L443: - .align 2 -.L442: - .word .LANCHOR0 - .word ftl_temp_buf - .fnend - .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage - .align 1 - .global FlashProgPages - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FlashProgPages, %function -FlashProgPages: - .fnstart - @ args = 0, pretend = 0, frame = 40 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov fp, r1 - ldr r6, .L474 - mov r9, r2 - mov r4, r0 - mov r5, r0 - mov r8, #0 - .pad #44 - sub sp, sp, #44 - ldrh r10, [r6, #12] - str r3, [sp, #4] -.L445: - cmp r8, fp - bne .L453 - ldr r3, [sp, #4] - cmp r3, #0 - bne .L460 -.L473: - movs r0, #0 - add sp, sp, #44 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L453: - ldr r3, [r5, #8] - cbz r3, .L446 - ldr r3, [r5, #12] - cbnz r3, .L447 -.L446: - movs r2, #131 - ldr r1, .L474+4 - ldr r0, .L474+8 - bl sftl_printk -.L447: - add r2, sp, #12 - add r1, sp, #16 - mov r0, r5 - bl l2p_addr_tran - ldr r3, [r5, #12] - ldr r2, [r5, #8] - ldr r1, [sp, #16] - ldrb r0, [sp, #12] @ zero_extendqisi2 - ldr r7, [r6, #3256] - blx r7 - cbnz r0, .L448 - str r0, [r5] -.L449: - ldrh r3, [r6, #14] - cmp r3, #4 - bne .L451 - ldr r3, [r5, #12] - ldr r2, [r5, #8] - ldr r1, [sp, #16] - adds r3, r3, #8 - ldrb r0, [sp, #12] @ zero_extendqisi2 - add r2, r2, #2048 - ldr r7, [r6, #3256] - add r1, r1, r10 - blx r7 - cbz r0, .L451 - mov r3, #-1 - str r3, [r5] -.L451: - add r8, r8, #1 - adds r5, r5, #20 - b .L445 -.L448: - mov r3, #-1 - str r3, [r5] - b .L449 -.L458: - movs r3, #0 - mov r2, r9 - str r3, [r7] - movs r1, #1 - str r3, [r6, #3292] - add r0, sp, #20 - ldr r3, [r4, #4] - str r7, [sp, #28] - str r10, [sp, #32] - str r3, [sp, #24] - bl FlashReadPages - ldr r3, [sp, #20] - adds r2, r3, #1 - bne .L455 - ldr r1, [r4, #4] - mov r0, fp - str r3, [sp, #4] - bl sftl_printk - ldr r3, [sp, #4] - str r3, [r4] -.L455: - ldr r3, [r4, #12] - cbz r3, .L456 - ldr r2, [r3] - ldr r3, [r6, #3292] - cmp r2, r3 - beq .L456 - ldr r1, [r4, #4] - ldr r0, .L474+12 - bl sftl_printk - mov r3, #-1 - str r3, [r4] -.L456: - ldr r3, [r4, #8] - cbz r3, .L457 - ldr r2, [r3] - ldr r3, [r7] - cmp r2, r3 - beq .L457 - ldr r1, [r4, #4] - ldr r0, .L474+16 - bl sftl_printk - mov r3, #-1 - str r3, [r4] -.L457: - adds r5, r5, #1 - adds r4, r4, #20 -.L454: - cmp r8, r5 - bne .L458 - b .L473 -.L460: - movs r5, #0 - ldr r7, .L474+20 - ldr r10, .L474+24 - ldr fp, .L474+28 - b .L454 -.L475: - .align 2 -.L474: - .word .LANCHOR0 - .word .LANCHOR1+145 - .word .LC1 - .word .LC81 - .word .LC82 - .word check_buf - .word .LANCHOR0+3292 - .word .LC80 - .fnend - .size FlashProgPages, .-FlashProgPages - .align 1 .global FlashEraseBlocks .syntax unified .thumb @@ -3849,56 +3404,98 @@ FlashProgPages: .type FlashEraseBlocks, %function FlashEraseBlocks: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #12 - mov r7, r2 - ldr r4, .L487 - mov r5, r0 - movs r6, #0 - mov r9, #-1 - ldrh r8, [r4, #12] -.L477: - cmp r6, r7 - bne .L483 - movs r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L483: - mov r2, sp - add r1, sp, #4 - mov r0, r5 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r2 + ldr r5, .L406 + mov r4, r0 + mov fp, r0 + movs r7, #0 + mov r10, #-1 + .pad #20 + sub sp, sp, #20 + ldrh r9, [r5, #12] + lsl r3, r9, #3 + str r3, [sp, #4] +.L391: + cmp r7, r8 + beq .L395 + add r2, sp, #8 + add r1, sp, #12 + mov r0, fp bl l2p_addr_tran - ldr r3, [r4, #3252] - ldr r1, [sp, #4] - ldrb r0, [sp] @ zero_extendqisi2 - blx r3 - cmp r0, #0 - mov r3, r0 - it ne - movne r3, r9 - str r3, [r5] - ldrh r3, [r4, #14] - cmp r3, #4 - bne .L481 - ldr r1, [sp, #4] - ldr r3, [r4, #3252] - ldrb r0, [sp] @ zero_extendqisi2 - add r1, r1, r8 - blx r3 - cbz r0, .L481 - str r9, [r5] -.L481: + ldr r6, [sp, #8] + cbnz r6, .L392 + ldr r2, [sp, #12] + ldr r3, [sp, #4] + cmp r3, r2 + bls .L392 + ldr r5, .L406+4 + ldr r7, .L406+8 + ldr r9, .L406+16 + b .L405 +.L394: + mov r3, #-1 + ldr r2, [sp, #12] + str r3, [r4, #-20] + mov r1, r5 + mov r0, r7 adds r6, r6, #1 - adds r5, r5, #20 - b .L477 -.L488: + bl sftl_printk + movs r3, #16 + movs r2, #4 + ldr r1, [r4, #-12] + mov r0, r9 + bl rknand_print_hex + movs r3, #4 + ldr r1, [r4, #-8] + mov r2, r3 + ldr r0, .L406+12 + bl rknand_print_hex +.L405: + cmp r6, r8 + add r4, r4, #20 + bne .L394 + bl dump_stack +.L395: + movs r0, #0 + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L392: + ldr r2, [r5, #3248] + uxtb r0, r6 + ldr r1, [sp, #12] + blx r2 + cmp r0, #0 + mov r2, r0 + it ne + movne r2, r10 + str r2, [fp] + ldrh r2, [r5, #14] + cmp r2, #4 + bne .L399 + ldr r1, [sp, #12] + ldr r2, [r5, #3248] + ldrb r0, [sp, #8] @ zero_extendqisi2 + add r1, r1, r9 + blx r2 + cbz r0, .L399 + str r10, [fp] +.L399: + adds r7, r7, #1 + add fp, fp, #20 + b .L391 +.L407: .align 2 -.L487: +.L406: .word .LANCHOR0 + .word .LANCHOR1+130 + .word .LC80 + .word .LC82 + .word .LC81 .fnend .size FlashEraseBlocks, .-FlashEraseBlocks .align 1 @@ -3919,15 +3516,15 @@ FtlFreeSysBlkQueueIn: .save {r4, r5, r6, lr} mov r5, r0 cmp r3, r2 - bhi .L489 - ldr r4, .L498 + bhi .L408 + ldr r4, .L417 ldrh r3, [r4, #218] cmp r3, #1024 - beq .L489 - cbz r1, .L491 + beq .L408 + cbz r1, .L410 bl P2V_block_in_plane mov r6, r0 - ldr r0, [r4, #3804] + ldr r0, [r4, #3260] lsls r3, r5, #10 movs r2, #1 mov r1, r2 @@ -3940,7 +3537,7 @@ FtlFreeSysBlkQueueIn: ldr r3, [r4, #2560] adds r3, r3, #1 str r3, [r4, #2560] -.L491: +.L410: ldrh r3, [r4, #218] adds r3, r3, #1 strh r3, [r4, #218] @ movhi @@ -3950,247 +3547,15 @@ FtlFreeSysBlkQueueIn: ubfx r3, r3, #0, #10 strh r5, [r2, #220] @ movhi strh r3, [r4, #216] @ movhi -.L489: +.L408: pop {r4, r5, r6, pc} -.L499: +.L418: .align 2 -.L498: +.L417: .word .LANCHOR0 .fnend .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .align 1 - .global FtlLowFormatEraseBlock - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlLowFormatEraseBlock, %function -FtlLowFormatEraseBlock: - .fnstart - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, #0 - ldr r4, .L545 - mov r7, r1 - mov r6, r10 - mov r5, r10 - mov r9, #20 - .pad #20 - sub sp, sp, #20 - mov fp, r4 - str r0, [sp] - str r0, [r4, #3808] -.L501: - ldrh r1, [r4, #32] - uxth r3, r10 - cmp r1, r3 - bhi .L506 - cmp r6, #0 - beq .L500 - mov r8, #0 - mov r9, #20 - mov r2, r6 - movs r1, #0 - ldr r0, [r4, #3804] - bl FlashEraseBlocks -.L509: - uxth r3, r8 - cmp r6, r3 - bhi .L511 - cmp r7, #0 - beq .L528 - ldrh r3, [r4, #104] - mov r10, #1 - str r3, [sp, #4] - lsrs r3, r3, #2 - str r3, [sp, #8] -.L512: - mov r8, #0 - mov fp, #20 -.L522: - mov r9, #0 - mov r6, r9 -.L513: - ldrh r1, [r4, #32] - uxth r3, r9 - cmp r1, r3 - bhi .L517 - cbz r6, .L500 - mov r9, #0 - movs r3, #1 - mov r2, r10 - mov r1, r6 - ldr r0, [r4, #3804] - bl FlashProgPages -.L519: - uxth r3, r9 - cmp r6, r3 - bhi .L521 - ldr r3, [sp, #8] - add r8, r8, r3 - ldr r3, [sp, #4] - uxth r8, r8 - cmp r3, r8 - bhi .L522 - mov r8, #0 - mov r9, #20 -.L523: - uxth r3, r8 - cmp r6, r3 - bhi .L525 - ldr r3, [sp] - cmp r3, #63 - bls .L526 - cbz r7, .L500 -.L526: - mov r2, r6 - mov r1, r10 - ldr r0, [r4, #3804] - bl FlashEraseBlocks -.L500: - mov r0, r5 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L506: - uxth r3, r10 - ldr r0, [r4, #3804] - movs r2, #0 - mul r1, r9, r3 - add r3, r3, r4 - str r2, [r0, r1] - ldr r1, [sp] - ldrb r0, [r3, #60] @ zero_extendqisi2 - bl V2P_block - mov r8, r0 - cbz r7, .L502 - bl IsBlkInVendorPart - cbnz r0, .L503 -.L502: - mov r0, r8 - bl FtlBbmIsBadBlock - cbnz r0, .L504 - ldr r1, [r4, #3804] - lsl r3, r8, #10 - ldr r0, [fp, #3816] - mla r1, r9, r6, r1 - str r3, [r1, #4] - ldr r3, [r4, #3812] - str r3, [r1, #8] - ldrh r3, [r4, #112] - muls r3, r6, r3 - add r6, r6, #1 - it mi - addmi r3, r3, #3 - uxth r6, r6 - bic r3, r3, #3 - add r3, r3, r0 - str r3, [r1, #12] -.L503: - add r10, r10, #1 - b .L501 -.L504: - adds r5, r5, #1 - uxth r5, r5 - b .L503 -.L511: - mul r3, r9, r8 - ldr r2, [r4, #3804] - adds r1, r2, r3 - ldr r3, [r2, r3] - adds r3, r3, #1 - bne .L510 - ldr r0, [r1, #4] - adds r5, r5, #1 - uxth r5, r5 - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock -.L510: - add r8, r8, #1 - b .L509 -.L528: - movs r3, #6 - mov r10, r7 - str r3, [sp, #8] - movs r3, #1 - str r3, [sp, #4] - b .L512 -.L517: - uxth r3, r9 - ldr r0, [r4, #3804] - movs r2, #0 - mul r1, fp, r3 - add r3, r3, r4 - str r2, [r0, r1] - ldr r1, [sp] - ldrb r0, [r3, #60] @ zero_extendqisi2 - bl V2P_block - str r0, [sp, #12] - cbz r7, .L514 - bl IsBlkInVendorPart - cbnz r0, .L515 -.L514: - ldr r0, [sp, #12] - bl FtlBbmIsBadBlock - cbnz r0, .L515 - ldr r1, [r4, #3804] - ldr r3, [sp, #12] - ldr r2, .L545 - mla r1, fp, r6, r1 - ldr r0, [r2, #3812] - add r3, r8, r3, lsl #10 - str r3, [r1, #4] - ldr r3, [r4, #3820] - str r3, [r1, #8] - ldrh r3, [r4, #112] - muls r3, r6, r3 - add r6, r6, #1 - it mi - addmi r3, r3, #3 - uxth r6, r6 - bic r3, r3, #3 - add r3, r3, r0 - str r3, [r1, #12] -.L515: - add r9, r9, #1 - b .L513 -.L521: - mul r3, fp, r9 - ldr r2, [r4, #3804] - adds r1, r2, r3 - ldr r3, [r2, r3] - cbz r3, .L520 - ldr r0, [r1, #4] - adds r5, r5, #1 - uxth r5, r5 - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock -.L520: - add r9, r9, #1 - b .L519 -.L525: - cbz r7, .L524 - mul r3, r9, r8 - ldr r2, [r4, #3804] - adds r1, r2, r3 - ldr r3, [r2, r3] - cbnz r3, .L524 - ldr r0, [r1, #4] - movs r1, #1 - ubfx r0, r0, #10, #16 - bl FtlFreeSysBlkQueueIn -.L524: - add r8, r8, #1 - b .L523 -.L546: - .align 2 -.L545: - .word .LANCHOR0 - .fnend - .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock - .align 1 .global FtlFreeSysBlkQueueOut .syntax unified .thumb @@ -4201,60 +3566,50 @@ FtlFreeSysBlkQueueOut: .fnstart @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - ldr r4, .L554 - ldr r6, .L554+4 -.L548: - ldrh r1, [r4, #218] - cbz r1, .L549 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + ldr r4, .L424 + ldrh r2, [r4, #218] + cbz r2, .L423 ldrh r3, [r4, #214] - subs r1, r1, #1 - strh r1, [r4, #218] @ movhi - add r2, r4, r3, lsl #1 + subs r2, r2, #1 + ldr r0, [r4, #3260] + strh r2, [r4, #218] @ movhi + movs r2, #1 + add r1, r4, r3, lsl #1 adds r3, r3, #1 ubfx r3, r3, #0, #10 - ldrh r5, [r2, #220] - strh r3, [r4, #214] @ movhi - mov r0, r5 - bl P2V_block_in_plane - mov r7, r0 - ldr r0, [r4, #3804] - lsls r3, r5, #10 - movs r2, #1 + ldrh r5, [r1, #220] mov r1, r2 + strh r3, [r4, #214] @ movhi + lsls r3, r5, #10 str r3, [r0, #4] bl FlashEraseBlocks - ldr r2, [r4, #2328] - ldrh r3, [r2, r7, lsl #1] - adds r3, r3, #1 - strh r3, [r2, r7, lsl #1] @ movhi - movw r2, #65533 ldr r3, [r4, #2560] adds r3, r3, #1 str r3, [r4, #2560] +.L420: subs r3, r5, #1 + movw r2, #65533 uxth r3, r3 cmp r3, r2 - bhi .L550 - mov r0, r5 - pop {r3, r4, r5, r6, r7, pc} -.L549: - ldr r0, .L554+8 - bl sftl_printk -.L552: - b .L552 -.L550: + bls .L421 ldrh r2, [r4, #218] mov r1, r5 - mov r0, r6 + ldr r0, .L424+4 bl sftl_printk - b .L548 -.L555: +.L422: + b .L422 +.L423: + movw r5, #65535 + b .L420 +.L421: + mov r0, r5 + pop {r3, r4, r5, pc} +.L425: .align 2 -.L554: +.L424: .word .LANCHOR0 - .word .LC84 .word .LC83 .fnend .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut @@ -4275,16 +3630,16 @@ ftl_map_blk_alloc_new_blk: ldrh r1, [r0, #10] movs r3, #0 ldr r2, [r0, #12] -.L557: +.L427: uxth r5, r3 cmp r5, r1 - bcs .L560 + bcs .L430 mov r7, r2 adds r3, r3, #1 ldrh r6, [r7] adds r2, r2, #2 cmp r6, #0 - bne .L557 + bne .L427 bl FtlFreeSysBlkQueueOut subs r3, r0, #1 movw r2, #65533 @@ -4292,14 +3647,14 @@ ftl_map_blk_alloc_new_blk: mov r1, r0 strh r0, [r7] @ movhi cmp r3, r2 - bls .L558 - ldr r3, .L564 - ldr r0, .L564+4 + bls .L428 + ldr r3, .L434 + ldr r0, .L434+4 ldrh r2, [r3, #218] bl sftl_printk -.L559: - b .L559 -.L558: +.L429: + b .L429 +.L428: ldr r3, [r4, #28] strh r6, [r4, #2] @ movhi strh r5, [r4] @ movhi @@ -4308,89 +3663,27 @@ ftl_map_blk_alloc_new_blk: ldrh r3, [r4, #8] adds r3, r3, #1 strh r3, [r4, #8] @ movhi -.L560: +.L430: ldrh r3, [r4, #10] cmp r3, r5 - bhi .L562 - movw r2, #603 - ldr r1, .L564+8 - ldr r0, .L564+12 + bhi .L432 + movw r2, #578 + ldr r1, .L434+8 + ldr r0, .L434+12 bl sftl_printk -.L562: +.L432: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L565: +.L435: .align 2 -.L564: +.L434: .word .LANCHOR0 - .word .LC85 - .word .LANCHOR1+160 + .word .LC84 + .word .LANCHOR1+147 .word .LC1 .fnend .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 1 - .global FlashTestBlk - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FlashTestBlk, %function -FlashTestBlk: - .fnstart - @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r0, #11 - push {r4, r5, lr} - .save {r4, r5, lr} - mov r4, r0 - .pad #92 - sub sp, sp, #92 - bls .L568 - ldr r5, .L569 - add r0, sp, #24 - movs r2, #32 - movs r1, #165 - lsls r4, r4, #10 - str r0, [sp, #16] - str r5, [sp, #12] - bl memset - movs r2, #1 - mov r3, #1515870810 - mov r1, r2 - add r0, sp, #4 - str r3, [r5] - str r3, [r5, #4] - str r4, [sp, #8] - bl FlashEraseBlocks - movs r3, #1 - add r0, sp, #4 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldr r4, [sp, #4] - movs r2, #1 - movs r1, #0 - add r0, sp, #4 - adds r4, r4, #0 - it ne - movne r4, #1 - negs r4, r4 - bl FlashEraseBlocks -.L566: - mov r0, r4 - add sp, sp, #92 - @ sp needed - pop {r4, r5, pc} -.L568: - movs r4, #0 - b .L566 -.L570: - .align 2 -.L569: - .word ftl_temp_buf - .fnend - .size FlashTestBlk, .-FlashTestBlk - .align 1 .global FlashGetBadBlockList .syntax unified .thumb @@ -4404,42 +3697,42 @@ FlashGetBadBlockList: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} mov r2, #256 - ldr r5, .L578 + ldr r5, .L443 mov r4, r0 mov r6, r1 movs r1, #255 bl memset - ldr r3, [r5, #3248] + ldr r3, [r5, #3244] mov r1, r6 mov r0, r4 blx r3 uxth r0, r0 cmp r0, #50 - bls .L572 + bls .L437 mov r2, #256 movs r1, #255 mov r0, r4 bl memset movs r0, #0 -.L572: +.L437: ldrh r3, [r5, #14] cmp r3, #4 - bne .L577 + bne .L442 add r1, r4, r0, lsl #1 mov r3, r4 -.L574: +.L439: cmp r3, r1 - bne .L575 -.L577: + bne .L440 +.L442: pop {r4, r5, r6, pc} -.L575: +.L440: ldrh r2, [r3] lsrs r2, r2, #1 strh r2, [r3], #2 @ movhi - b .L574 -.L579: + b .L439 +.L444: .align 2 -.L578: +.L443: .word .LANCHOR0 .fnend .size FlashGetBadBlockList, .-FlashGetBadBlockList @@ -4457,9 +3750,9 @@ ftl_memset: push {r4, lr} .save {r4, lr} mov r4, r0 - cbz r2, .L581 + cbz r2, .L446 bl memset -.L581: +.L446: mov r0, r4 pop {r4, pc} .fnend @@ -4478,12 +3771,12 @@ FtlMemInit: push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} movw r3, #65535 - ldr r4, .L686 + ldr r4, .L551 movs r5, #0 - movs r6, #12 - movs r7, #20 + movs r7, #12 + movs r6, #20 ldrh r0, [r4, #106] - str r3, [r4, #3828] + str r3, [r4, #3268] strh r3, [r4, #3202] @ movhi strh r3, [r4, #3204] @ movhi movs r3, #32 @@ -4504,76 +3797,86 @@ FtlMemInit: str r5, [r4, #2560] str r5, [r4, #2564] str r5, [r4, #2568] - str r5, [r4, #3824] + str r5, [r4, #3264] str r5, [r4, #3160] - str r5, [r4, #3832] + str r5, [r4, #3272] str r5, [r4, #3152] - str r5, [r4, #3808] + str r5, [r4, #3276] strh r5, [r4, #3156] @ movhi - strh r5, [r4, #3210] @ movhi - strh r5, [r4, #3246] @ movhi + strh r5, [r4, #3206] @ movhi + strh r5, [r4, #3242] @ movhi bl ftl_malloc str r0, [r4, #3188] ldrh r0, [r4, #106] - muls r0, r6, r0 + muls r0, r7, r0 bl ftl_malloc ldrh r3, [r4, #32] str r0, [r4, #3196] - muls r7, r3, r7 - lsl r8, r7, #2 + muls r6, r3, r6 + lsl r8, r6, #2 mov r0, r8 bl ftl_malloc - str r0, [r4, #3836] - mov r0, r7 + str r0, [r4, #3280] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3840] + str r0, [r4, #3284] mov r0, r8 bl ftl_malloc - str r0, [r4, #3844] - mov r0, r7 + str r0, [r4, #3288] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3804] - mov r0, r7 + str r0, [r4, #3260] + mov r0, r6 bl ftl_malloc ldrh r3, [r4, #32] - ldrh r7, [r4, #110] + ldrh r6, [r4, #110] str r0, [r4, #3180] lsls r3, r3, #1 - mov r0, r7 + mov r0, r6 adds r3, r3, #1 str r3, [r4, #3184] bl ftl_malloc - str r0, [r4, #3284] - mov r0, r7 + str r0, [r4, #3292] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3848] - mov r0, r7 + str r0, [r4, #3296] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3852] - ldr r0, [r4, #3184] - muls r0, r7, r0 - bl ftl_malloc - str r0, [r4, #3172] - mov r0, r7 - bl ftl_malloc - str r0, [r4, #3820] - mov r0, r7 - bl ftl_malloc - str r0, [r4, #3812] + str r0, [r4, #3300] ldr r0, [r4, #3184] muls r0, r6, r0 bl ftl_malloc - ldrh r3, [r4, #112] - ldrh r7, [r4, #32] + str r0, [r4, #3172] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3304] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3308] + ldr r0, [r4, #3184] + muls r0, r7, r0 + bl ftl_malloc str r0, [r4, #3168] - muls r7, r3, r7 - mov r0, r7 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3288] - lsls r0, r7, #2 + str r0, [r4, #3312] + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3316] + ldrh r0, [r4, #58] + lsls r0, r0, #2 bl ftl_malloc ldrh r3, [r4, #112] - str r0, [r4, #3816] + ldrh r6, [r4, #32] + str r0, [r4, #3320] + muls r6, r3, r6 + mov r0, r6 + bl ftl_malloc + str r0, [r4, #3324] + lsls r0, r6, #2 + bl ftl_malloc + ldrh r3, [r4, #112] + str r0, [r4, #3328] ldr r0, [r4, #3184] muls r0, r3, r0 bl ftl_malloc @@ -4581,35 +3884,35 @@ FtlMemInit: ldrh r0, [r4, #42] lsls r0, r0, #1 uxth r0, r0 - strh r0, [r4, #3856] @ movhi + strh r0, [r4, #3332] @ movhi bl ftl_malloc - ldrh r3, [r4, #3856] - str r0, [r4, #3860] - ldr r0, .L686+4 + ldrh r3, [r4, #3332] + str r0, [r4, #3336] + ldr r0, .L551+4 addw r3, r3, #547 lsrs r3, r3, #9 and r0, r0, r3, lsl #9 - strh r3, [r4, #3856] @ movhi + strh r3, [r4, #3332] @ movhi bl ftl_malloc - ldrh r7, [r4, #42] - str r0, [r4, #3864] + ldrh r6, [r4, #42] + str r0, [r4, #3340] adds r0, r0, #32 str r0, [r4, #2328] - lsls r7, r7, #1 - mov r0, r7 + lsls r6, r6, #1 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3868] - mov r0, r7 + str r0, [r4, #3344] + mov r0, r6 bl ftl_malloc - ldr r7, [r4, #128] + ldr r6, [r4, #128] str r0, [r4, #2324] - lsls r7, r7, #1 - mov r0, r7 + lsls r6, r6, #1 + mov r0, r6 bl ftl_malloc - str r0, [r4, #3872] - mov r0, r7 + str r0, [r4, #3348] + mov r0, r6 bl ftl_malloc - str r0, [r4, #3876] + str r0, [r4, #3352] ldrh r0, [r4, #42] lsrs r0, r0, #3 adds r0, r0, #4 @@ -4622,30 +3925,30 @@ FtlMemInit: ldrh r0, [r4, #120] lsls r0, r0, #1 bl ftl_malloc - str r0, [r4, #3880] + str r0, [r4, #3356] ldrh r0, [r4, #120] lsls r0, r0, #2 bl ftl_malloc - str r0, [r4, #3884] + str r0, [r4, #3360] ldrh r0, [r4, #122] lsls r0, r0, #2 bl ftl_malloc ldrh r2, [r4, #122] mov r1, r5 - str r0, [r4, #3888] + str r0, [r4, #3364] add r5, r4, #180 lsls r2, r2, #2 bl ftl_memset ldrh r0, [r4, #136] lsls r0, r0, #2 bl ftl_malloc - str r0, [r4, #3892] + str r0, [r4, #3368] ldr r0, [r4, #128] lsls r0, r0, #2 bl ftl_malloc - str r0, [r4, #3896] + str r0, [r4, #3372] ldrh r0, [r4, #138] - muls r0, r6, r0 + muls r0, r7, r0 bl ftl_malloc ldrh r3, [r4, #138] str r0, [r4, #2492] @@ -4653,7 +3956,7 @@ FtlMemInit: muls r0, r3, r0 bl ftl_malloc ldrh r3, [r4, #42] - str r0, [r4, #3900] + str r0, [r4, #3376] movs r0, #6 muls r0, r3, r0 bl ftl_malloc @@ -4662,153 +3965,153 @@ FtlMemInit: ldrh r3, [r4, #54] adds r0, r0, #31 asrs r0, r0, #5 - strh r0, [r4, #3904] @ movhi + strh r0, [r4, #3380] @ movhi muls r0, r3, r0 lsls r0, r0, #2 bl ftl_malloc - ldrh r2, [r4, #3904] + ldrh r2, [r4, #3380] movs r3, #1 ldrh r6, [r4, #54] str r0, [r4, #180] lsls r2, r2, #2 mov r1, r2 -.L586: +.L451: cmp r3, r6 - bcc .L587 - ldr r2, .L686+8 + bcc .L452 + ldr r2, .L551+8 movs r1, #0 add r3, r2, r3, lsl #2 adds r2, r2, #56 adds r3, r3, #24 -.L588: +.L453: cmp r2, r3 - bne .L589 - ldr r3, [r4, #3872] - cbnz r3, .L590 -.L592: - ldr r1, .L686+12 - ldr r0, .L686+16 + bne .L454 + ldr r3, [r4, #3348] + cbnz r3, .L455 +.L457: + ldr r1, .L551+12 + ldr r0, .L551+16 bl sftl_printk mov r0, #-1 pop {r4, r5, r6, r7, r8, pc} -.L587: +.L452: ldr r0, [r4, #180] adds r3, r3, #1 add r0, r0, r1 add r1, r1, r2 str r0, [r5, #4]! - b .L586 -.L589: + b .L451 +.L454: str r1, [r3, #4]! - b .L588 -.L687: + b .L453 +.L552: .align 2 -.L686: +.L551: .word .LANCHOR0 .word 33553920 .word .LANCHOR0+152 - .word .LANCHOR1+186 - .word .LC86 -.L590: - ldr r3, [r4, #3876] + .word .LANCHOR1+173 + .word .LC85 +.L455: + ldr r3, [r4, #3352] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3892] + beq .L457 + ldr r3, [r4, #3368] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3896] + beq .L457 + ldr r3, [r4, #3372] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #2492] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3900] + beq .L457 + ldr r3, [r4, #3376] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #2316] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #180] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #2324] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #3188] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #3196] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3836] + beq .L457 + ldr r3, [r4, #3280] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3844] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3804] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3180] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3840] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3284] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3848] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3852] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3172] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3820] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3812] - cmp r3, #0 - beq .L592 - ldr r3, [r4, #3168] - cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #3288] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3816] + beq .L457 + ldr r3, [r4, #3260] cmp r3, #0 - beq .L592 + beq .L457 + ldr r3, [r4, #3180] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3284] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3292] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3296] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3300] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3172] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3304] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3308] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3168] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3324] + cmp r3, #0 + beq .L457 + ldr r3, [r4, #3328] + cmp r3, #0 + beq .L457 ldr r3, [r4, #3176] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #2328] cmp r3, #0 - beq .L592 - ldr r3, [r4, #3860] + beq .L457 + ldr r3, [r4, #3336] cmp r3, #0 - beq .L592 + beq .L457 ldr r3, [r4, #148] cmp r3, #0 - beq .L592 - ldr r3, .L688 - ldr r2, [r3, #3880] + beq .L457 + ldr r3, .L553 + ldr r2, [r3, #3356] cmp r2, #0 - beq .L592 - ldr r2, [r3, #3884] + beq .L457 + ldr r2, [r3, #3360] cmp r2, #0 - beq .L592 - ldr r3, [r3, #3888] + beq .L457 + ldr r3, [r3, #3364] cmp r3, #0 - beq .L592 + beq .L457 movs r0, #0 pop {r4, r5, r6, r7, r8, pc} -.L689: +.L554: .align 2 -.L688: +.L553: .word .LANCHOR0 .fnend .size FtlMemInit, .-FtlMemInit @@ -4826,30 +4129,30 @@ FtlBbt2Bitmap: push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} mov r5, r0 - ldr r6, .L696 + ldr r6, .L561 mov r7, r1 subs r4, r5, #2 movw r8, #65535 - ldr r9, .L696+4 + ldr r9, .L561+4 addw r5, r5, #1022 - ldrh r2, [r6, #3904] + ldrh r2, [r6, #3380] movs r1, #0 - ldr r10, .L696+8 + ldr r10, .L561+8 mov r0, r7 lsls r2, r2, #2 bl ftl_memset -.L693: +.L558: ldrh r3, [r4, #2] cmp r3, r8 - beq .L690 + beq .L555 ldrh r2, [r6, #98] cmp r2, r3 - bhi .L692 + bhi .L557 movs r2, #74 mov r1, r9 mov r0, r10 bl sftl_printk -.L692: +.L557: ldrh r3, [r4, #2]! movs r2, #1 cmp r5, r4 @@ -4859,14 +4162,14 @@ FtlBbt2Bitmap: ldr r2, [r7, r1, lsl #2] orr r2, r2, r3 str r2, [r7, r1, lsl #2] - bne .L693 -.L690: + bne .L558 +.L555: pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L697: +.L562: .align 2 -.L696: +.L561: .word .LANCHOR0 - .word .LANCHOR1+197 + .word .LANCHOR1+184 .word .LC1 .fnend .size FtlBbt2Bitmap, .-FtlBbt2Bitmap @@ -4879,1959 +4182,104 @@ FtlBbt2Bitmap: .type ftl_free_no_use_map_blk, %function ftl_free_no_use_map_blk: .fnstart - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - mov r4, r0 - ldrh r2, [r0, #10] + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r1, #0 + ldrh r2, [r0, #10] + mov r4, r0 ldr r5, [r0, #20] - ldr r9, [r0, #12] + ldr r7, [r0, #12] ldr r6, [r0, #24] lsls r2, r2, #1 mov r0, r5 bl ftl_memset movs r3, #0 -.L699: +.L564: ldrh r1, [r4, #6] uxth r2, r3 cmp r1, r2 - bhi .L703 - ldrh fp, [r5] + bhi .L568 + ldr r3, .L583 movs r6, #0 - ldr r2, .L712 - mov r10, r6 -.L704: - ldrh r1, [r4, #10] - uxth r3, r6 - cmp r1, r3 - bhi .L708 - mov r0, r10 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L703: + mov r9, r6 + mov fp, r6 + ldrh r2, [r3, #104] + ldrh r3, [r4] + strh r2, [r5, r3, lsl #1] @ movhi + ldrh r10, [r5] +.L569: + ldrh r3, [r4, #10] + uxth r1, r6 + cmp r3, r1 + bhi .L573 + mov r0, r9 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L568: uxth r2, r3 ldr r1, [r6, r2, lsl #2] movs r2, #0 ubfx r1, r1, #10, #16 -.L700: - ldrh r7, [r4, #10] +.L565: + ldrh ip, [r4, #10] uxth r0, r2 - cmp r7, r0 - bhi .L702 + cmp ip, r0 + bhi .L567 adds r3, r3, #1 - b .L699 -.L702: + b .L564 +.L567: uxth r0, r2 + ldrh ip, [r7, r0, lsl #1] + cmp ip, r1 + bne .L566 + cbz r1, .L566 + ldrh ip, [r5, r0, lsl #1] + add ip, ip, #1 + strh ip, [r5, r0, lsl #1] @ movhi +.L566: adds r2, r2, #1 - ldrh r7, [r9, r0, lsl #1] - cmp r7, r1 - ittt eq - ldrheq r7, [r5, r0, lsl #1] - addeq r7, r7, #1 - strheq r7, [r5, r0, lsl #1] @ movhi - b .L700 -.L708: - ldrh r1, [r4] - uxth r7, r6 - cmp r1, r3 - bne .L705 - ldrh r1, [r2, #104] - ldrh r0, [r4, #2] - cmp r0, r1 - it cc - strhcc r1, [r5, r7, lsl #1] @ movhi -.L705: - ldrh r8, [r5, r7, lsl #1] - cmp fp, r8 - itt hi - movhi r10, r3 - movhi fp, r8 - cmp r8, #0 - bne .L707 - ldrh r0, [r9, r7, lsl #1] - cbz r0, .L707 + b .L565 +.L573: + uxth r2, r6 + ldrh r3, [r5, r2, lsl #1] + lsl r8, r2, #1 + cmp r10, r3 + bls .L570 + ldrh r0, [r7, r2, lsl #1] + add r8, r8, r7 + cbnz r0, .L571 +.L572: + adds r6, r6, #1 + b .L569 +.L570: + cmp r3, #0 + bne .L572 + ldrh r0, [r7, r2, lsl #1] + add r8, r8, r7 + cmp r0, #0 + beq .L572 +.L574: movs r1, #1 - str r2, [sp, #4] bl FtlFreeSysBlkQueueIn - strh r8, [r9, r7, lsl #1] @ movhi - ldr r2, [sp, #4] + strh fp, [r8] @ movhi ldrh r3, [r4, #8] subs r3, r3, #1 strh r3, [r4, #8] @ movhi -.L707: - adds r6, r6, #1 - b .L704 -.L713: + b .L572 +.L571: + mov r9, r1 + mov r10, r3 + cmp r3, #0 + beq .L574 + b .L572 +.L584: .align 2 -.L712: +.L583: .word .LANCHOR0 .fnend .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 1 - .global Ftl_write_map_blk_to_last_page - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type Ftl_write_map_blk_to_last_page, %function -Ftl_write_map_blk_to_last_page: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, lr} - .save {r3, r4, r5, r6, r7, lr} - movw r2, #65535 - ldrh r3, [r0] - mov r4, r0 - ldr r5, [r0, #12] - cmp r3, r2 - bne .L715 - ldrh r3, [r0, #8] - cbz r3, .L716 - movw r2, #677 - ldr r1, .L724 - ldr r0, .L724+4 - bl sftl_printk -.L716: - ldrh r3, [r4, #8] - adds r3, r3, #1 - strh r3, [r4, #8] @ movhi - bl FtlFreeSysBlkQueueOut - movs r3, #0 - strh r0, [r5] @ movhi - strh r3, [r4, #2] @ movhi - strh r3, [r4] @ movhi - ldr r3, [r4, #28] - adds r3, r3, #1 - str r3, [r4, #28] -.L717: - movs r0, #0 - pop {r3, r4, r5, r6, r7, pc} -.L715: - ldrh r6, [r5, r3, lsl #1] - movs r1, #255 - ldrh r3, [r0, #2] - ldr r5, .L724+8 - ldr r2, [r0, #28] - ldr r7, [r0, #24] - orr r3, r3, r6, lsl #10 - str r3, [r5, #3268] - ldr r3, [r5, #3284] - str r3, [r5, #3272] - ldr r3, [r5, #3288] - str r3, [r5, #3276] - str r2, [r3, #4] - movw r2, #64245 - strh r2, [r3, #8] @ movhi - ldrh r2, [r0, #4] - strh r6, [r3, #2] @ movhi - strh r2, [r3] @ movhi - ldrh r2, [r5, #104] - ldr r0, [r5, #3284] - lsls r2, r2, #3 - bl ftl_memset - movs r2, #0 - mov r3, r2 -.L718: - ldrh r0, [r4, #6] - uxth r1, r2 - cmp r0, r1 - bhi .L720 - movs r2, #1 - movs r3, #0 - mov r1, r2 - ldr r0, .L724+12 - bl FlashProgPages - ldrh r3, [r4, #2] - mov r0, r4 - adds r3, r3, #1 - strh r3, [r4, #2] @ movhi - bl ftl_map_blk_gc - b .L717 -.L720: - uxth r1, r2 - ldr r0, [r7, r1, lsl #2] - cmp r6, r0, lsr #10 - bne .L719 - ldr r0, [r5, #3284] - adds r3, r3, #1 - uxth r3, r3 - str r1, [r0, r3, lsl #3] - ldr r0, [r7, r1, lsl #2] - ldr r1, [r5, #3284] - add r1, r1, r3, lsl #3 - str r0, [r1, #4] -.L719: - adds r2, r2, #1 - b .L718 -.L725: - .align 2 -.L724: - .word .LANCHOR1+211 - .word .LC1 - .word .LANCHOR0 - .word .LANCHOR0+3264 - .fnend - .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page - .align 1 - .global FtlMapWritePage - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlMapWritePage, %function -FtlMapWritePage: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r4, r0 - ldr r7, .L755 - mov r9, r1 - mov fp, r2 - movs r6, #0 - ldr r10, .L755+20 - mov r5, r7 -.L727: - ldr r3, [r7, #2524] - adds r3, r3, #1 - str r3, [r7, #2524] - ldrh r3, [r7, #104] - ldrh r2, [r4, #2] - subs r3, r3, #1 - cmp r2, r3 - bge .L728 - ldrh r2, [r4] - movw r3, #65535 - cmp r2, r3 - bne .L729 -.L728: - mov r0, r4 - bl Ftl_write_map_blk_to_last_page -.L729: - ldrh r2, [r4] - ldr r3, [r4, #12] - ldrh r3, [r3, r2, lsl #1] - cbnz r3, .L730 - movw r2, #735 - mov r1, r10 - ldr r0, .L755+4 - bl sftl_printk -.L730: - ldrh r2, [r4] - ldrh r3, [r4, #10] - cmp r2, r3 - bcc .L731 - mov r2, #736 - mov r1, r10 - ldr r0, .L755+4 - bl sftl_printk -.L731: - ldrh r2, [r4] - movs r1, #16 - ldr r3, [r4, #12] - ldr r0, [r5, #3288] - ldrh r8, [r3, r2, lsl #1] - ldrh r3, [r4, #2] - str r0, [r5, #3276] - str fp, [r5, #3272] - orr r3, r3, r8, lsl #10 - str r3, [r5, #3268] - bl __memzero - ldr r3, [r5, #3276] - ldr r2, [r4, #28] - ldr r0, .L755+8 - strh r9, [r3, #8] @ movhi - str r2, [r3, #4] - ldrh r2, [r4, #4] - strh r8, [r3, #2] @ movhi - strh r2, [r3] @ movhi - movs r3, #1 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldrh r3, [r4, #2] - adds r3, r3, #1 - uxth r3, r3 - strh r3, [r4, #2] @ movhi - ldr r2, [r5, #3264] - adds r1, r2, #1 - bne .L732 - ldr r1, [r5, #3268] - adds r6, r6, #1 - ldr r0, .L755+12 - uxth r6, r6 - bl sftl_printk - ldrh r3, [r4, #2] - cmp r3, #2 - ittt ls - ldrhls r3, [r5, #104] - addls r3, r3, #-1 - strhls r3, [r4, #2] @ movhi - cmp r6, #3 - bls .L734 - mov r2, r6 - ldr r1, [r5, #3268] - ldr r0, .L755+16 - bl sftl_printk -.L735: - b .L735 -.L734: - ldr r3, [r4, #32] - cmp r3, #0 - beq .L727 -.L752: - b .L752 -.L732: - cbz r2, .L738 - cmp r3, #1 - strh r8, [r4, #40] @ movhi - beq .L727 - cmp r2, #256 -.L754: - beq .L727 - ldr r2, [r5, #3268] - movs r0, #0 - ldr r3, [r4, #24] - str r2, [r3, r9, lsl #2] - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L738: - cmp r3, #1 - b .L754 -.L756: - .align 2 -.L755: - .word .LANCHOR0 - .word .LC1 - .word .LANCHOR0+3264 - .word .LC87 - .word .LC88 - .word .LANCHOR1+242 - .fnend - .size FtlMapWritePage, .-FtlMapWritePage - .align 1 - .global load_l2p_region - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type load_l2p_region, %function -load_l2p_region: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldr r4, .L764 - mov r8, r1 - ldrh r3, [r4, #136] - cmp r3, r0 - bcs .L758 - mov r2, #510 - ldr r1, .L764+4 - ldr r0, .L764+8 - bl sftl_printk -.L758: - ldr r3, [r4, #3892] - movs r5, #12 - ldr r7, [r3, r6, lsl #2] - cbnz r7, .L759 - mul r5, r5, r8 - ldr r3, [r4, #2492] - ldrh r2, [r4, #110] - movs r1, #255 - add r3, r3, r5 - ldr r0, [r3, #8] - bl ftl_memset - ldr r3, [r4, #2492] - strh r6, [r3, r5] @ movhi - ldr r3, [r4, #2492] - add r5, r5, r3 - str r7, [r5, #4] -.L760: - movs r0, #0 - pop {r4, r5, r6, r7, r8, pc} -.L759: - mul r5, r5, r8 - ldr r3, [r4, #2492] - movs r2, #1 - ldr r0, .L764+12 - mov r1, r2 - str r7, [r4, #3268] - add r3, r3, r5 - ldr r3, [r3, #8] - str r3, [r4, #3272] - ldr r3, [r4, #3288] - str r3, [r4, #3276] - bl FlashReadPages - ldr r3, [r4, #3264] - ldr r8, [r4, #3276] - cmp r3, #256 - bne .L761 - mov r2, r7 - mov r1, r6 - ldr r0, .L764+16 - bl sftl_printk - lsrs r3, r7, #10 - mov r1, r6 - ldr r0, .L764+20 - strh r3, [r4, #3948] @ movhi - ldr r3, [r4, #2492] - add r3, r3, r5 - ldr r2, [r3, #8] - bl FtlMapWritePage -.L761: - ldrh r3, [r8, #8] - cmp r3, r6 - beq .L762 - mov r2, r7 - mov r1, r6 - ldr r0, .L764+24 - bl sftl_printk - movs r3, #4 - ldr r1, [r4, #3276] - mov r2, r3 - ldr r0, .L764+28 - bl rknand_print_hex - ldrh r3, [r4, #136] - movs r2, #4 - ldr r1, [r4, #3892] - ldr r0, .L764+32 - bl rknand_print_hex -.L762: - ldrh r3, [r8, #8] - cmp r3, r6 - beq .L763 - movw r2, #535 - ldr r1, .L764+4 - ldr r0, .L764+8 - bl sftl_printk -.L763: - ldr r3, [r4, #2492] - movs r1, #0 - adds r2, r3, r5 - str r1, [r2, #4] - strh r6, [r3, r5] @ movhi - b .L760 -.L765: - .align 2 -.L764: - .word .LANCHOR0 - .word .LANCHOR1+258 - .word .LC1 - .word .LANCHOR0+3264 - .word .LC89 - .word .LANCHOR0+3908 - .word .LC90 - .word .LC91 - .word .LC92 - .fnend - .size load_l2p_region, .-load_l2p_region - .align 1 - .global ftl_map_blk_gc - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type ftl_map_blk_gc, %function -ftl_map_blk_gc: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - mov r4, r0 - ldr r6, [r0, #12] - ldr r10, [r0, #24] - bl ftl_free_no_use_map_blk - ldrh ip, [r4, #10] - ldrh r2, [r4, #8] - ldrh r1, [r4, #40] - sub r3, ip, #4 - ldr r5, .L790 - cmp r2, r3 - bge .L767 - movw r3, #65535 - cmp r1, r3 - beq .L769 - ldrh r2, [r4, #2] - ldrh r3, [r5, #104] - cmp r2, r3 - bcc .L770 -.L767: - movw r3, #65535 - uxth r0, r0 - cmp r1, r3 - beq .L771 - ldrh r3, [r4, #2] - ldrh r2, [r5, #104] - cmp r2, r3 - bls .L772 -.L771: - ldrh r9, [r6, r0, lsl #1] - lsls r2, r0, #1 - cmp r9, #0 - beq .L769 - ldr r3, [r4, #32] - cbnz r3, .L769 - movs r1, #1 - str r1, [r4, #32] - strh r3, [r6, r2] @ movhi - ldrh r3, [r4, #8] - ldrh r2, [r4, #2] - subs r3, r3, #1 - strh r3, [r4, #8] @ movhi - ldrh r3, [r5, #104] - cmp r2, r3 - bcc .L777 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L777: - movs r6, #0 -.L778: - ldrh r2, [r4, #6] - uxth fp, r6 - cmp r2, fp - bhi .L785 - movs r1, #1 - mov r0, r9 - bl FtlFreeSysBlkQueueIn - movs r3, #0 - str r3, [r4, #32] -.L769: - ldrh r2, [r4, #2] - ldrh r3, [r5, #104] - cmp r2, r3 - bcc .L770 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L770: - movs r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L775: - ldrh r8, [r6, r2, lsl #1] - add lr, r2, #1 - cmp r8, r1 - beq .L773 - mov r2, lr -.L774: - uxth r7, r2 - cmp r7, ip - bcc .L775 - mov r7, r0 -.L773: - uxth r2, r2 - ldr r0, .L790+4 - ldrh r2, [r6, r2, lsl #1] - bl sftl_printk - movw r3, #65535 - mov r0, r7 - strh r3, [r4, #40] @ movhi - b .L771 -.L772: - movs r2, #0 - b .L774 -.L785: - uxth r7, r6 - ldr r2, [r10, r7, lsl #2] - add r3, r10, r7, lsl #2 - str r3, [sp, #4] - cmp r9, r2, lsr #10 - bne .L779 - ldr r2, [r5, #3848] - ldr r8, [r5, #3288] - ldr r0, .L790+8 - str r2, [r5, #3272] - str r8, [r5, #3276] - ldr r2, [r10, r7, lsl #2] - str r2, [r5, #3268] - movs r2, #1 - mov r1, r2 - bl FlashReadPages - ldrh r2, [r8, #8] - cmp r2, fp - beq .L780 - movw r2, #647 - ldr r1, .L790+12 - ldr r0, .L790+16 - bl sftl_printk -.L780: - ldr r2, [r5, #3264] - adds r2, r2, #1 - bne .L781 -.L783: - ldr r2, [sp, #4] - movs r3, #0 - str r3, [r2] -.L782: - b .L782 -.L781: - ldrh r2, [r8, #8] - cmp r2, fp - bne .L783 - ldrh r2, [r8] - ldrh r3, [r4, #4] - cmp r2, r3 - bne .L783 - ldr r2, [r5, #3272] - mov r1, r7 - mov r0, r4 - bl FtlMapWritePage -.L779: - adds r6, r6, #1 - b .L778 -.L791: - .align 2 -.L790: - .word .LANCHOR0 - .word .LC93 - .word .LANCHOR0+3264 - .word .LANCHOR1+274 - .word .LC1 - .fnend - .size ftl_map_blk_gc, .-ftl_map_blk_gc - .align 1 - .global flush_l2p_region - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type flush_l2p_region, %function -flush_l2p_region: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - movs r4, #12 - ldr r5, .L793 - muls r4, r0, r4 - ldr r3, [r5, #2492] - addw r0, r5, #3908 - adds r2, r3, r4 - ldrh r1, [r3, r4] - ldr r2, [r2, #8] - bl FtlMapWritePage - ldr r3, [r5, #2492] - movs r0, #0 - add r4, r4, r3 - ldr r3, [r4, #4] - bic r3, r3, #-2147483648 - str r3, [r4, #4] - pop {r3, r4, r5, pc} -.L794: - .align 2 -.L793: - .word .LANCHOR0 - .fnend - .size flush_l2p_region, .-flush_l2p_region - .align 1 - .global log2phys - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type log2phys, %function -log2phys: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - mov r7, r1 - ldr r4, .L809 - mov r9, r2 - ldrh r5, [r4, #108] - adds r3, r5, #7 - movs r5, #1 - lsr r8, r0, r3 - lsls r5, r5, r3 - ldr r3, [r4, #2504] - subs r5, r5, #1 - uxth r8, r8 - ands r5, r5, r0 - cmp r0, r3 - uxth r5, r5 - bcc .L796 - movw r2, #847 - ldr r1, .L809+4 - ldr r0, .L809+8 - bl sftl_printk -.L796: - ldrh r2, [r4, #138] - movs r3, #0 - ldr r1, [r4, #2492] - mov r10, #12 -.L797: - uxth r6, r3 - cmp r6, r2 - bcc .L802 - bl select_l2p_ram_region - mul r10, r10, r0 - ldr r3, [r4, #2492] - mov r6, r0 - ldrh r1, [r3, r10] - add r2, r3, r10 - movw r3, #65535 - cmp r1, r3 - beq .L803 - ldr r3, [r2, #4] - cmp r3, #0 - bge .L803 - bl flush_l2p_region -.L803: - mov r1, r6 - mov r0, r8 - bl load_l2p_region - b .L798 -.L802: - adds r3, r3, #1 - mla r0, r10, r3, r1 - ldrh r0, [r0, #-12] - cmp r0, r8 - bne .L797 -.L798: - movs r3, #12 - cmp r9, #0 - bne .L799 - ldr r2, [r4, #2492] - mla r3, r3, r6, r2 - ldr r3, [r3, #8] - ldr r3, [r3, r5, lsl #2] - str r3, [r7] -.L800: - ldr r2, [r4, #2492] - movs r3, #12 - mla r6, r3, r6, r2 - ldr r3, [r6, #4] - adds r2, r3, #1 - beq .L806 - adds r3, r3, #1 - str r3, [r6, #4] -.L806: - movs r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L799: - muls r3, r6, r3 - ldr r2, [r4, #2492] - ldr r1, [r7] - add r2, r2, r3 - ldr r2, [r2, #8] - str r1, [r2, r5, lsl #2] - ldr r2, [r4, #2492] - strh r8, [r4, #2496] @ movhi - add r3, r3, r2 - ldr r2, [r3, #4] - orr r2, r2, #-2147483648 - str r2, [r3, #4] - b .L800 -.L810: - .align 2 -.L809: - .word .LANCHOR0 - .word .LANCHOR1+289 - .word .LC1 - .fnend - .size log2phys, .-log2phys - .align 1 - .global FtlReUsePrevPpa - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlReUsePrevPpa, %function -FtlReUsePrevPpa: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, lr} - .save {r4, r5, r6, r7, lr} - .pad #12 - mov r6, r0 - ldr r5, .L821 - ubfx r0, r1, #10, #16 - str r1, [sp, #4] - bl P2V_block_in_plane - ldr r2, [r5, #2324] - mov r7, r0 - ldrh r3, [r2, r0, lsl #1] - cbnz r3, .L812 - ldr r4, [r5, #2340] - cbz r4, .L813 - ldr r1, [r5, #2316] - mov ip, #6 - ldr r2, .L821+4 - movw lr, #65535 - ldrh r0, [r5, #2344] - subs r4, r4, r1 - asrs r4, r4, #1 - muls r4, r2, r4 - uxth r4, r4 -.L814: - uxth r2, r3 - cmp r0, r2 - bls .L813 - cmp r4, r7 - bne .L815 - mov r1, r4 - ldr r0, .L821+8 - bl List_remove_node - ldrh r3, [r5, #2344] - cbnz r3, .L816 - movw r2, #1737 - ldr r1, .L821+12 - ldr r0, .L821+16 - bl sftl_printk -.L816: - ldrh r3, [r5, #2344] - mov r0, r4 - subs r3, r3, #1 - strh r3, [r5, #2344] @ movhi - bl INSERT_DATA_LIST - ldr r2, [r5, #2324] - ldrh r3, [r2, r7, lsl #1] -.L812: - adds r3, r3, #1 - strh r3, [r2, r7, lsl #1] @ movhi - b .L813 -.L815: - mul r4, ip, r4 - adds r3, r3, #1 - ldrh r4, [r1, r4] - cmp r4, lr - bne .L814 -.L813: - movs r2, #1 - add r1, sp, #4 - mov r0, r6 - bl log2phys - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, pc} -.L822: - .align 2 -.L821: - .word .LANCHOR0 - .word -1431655765 - .word .LANCHOR0+2340 - .word .LANCHOR1+298 - .word .LC1 - .fnend - .size FtlReUsePrevPpa, .-FtlReUsePrevPpa - .align 1 - .global ftl_scan_all_data - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type ftl_scan_all_data, %function -ftl_scan_all_data: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - movs r5, #0 - ldr r6, .L837 - .pad #32 - sub sp, sp, #32 - movs r1, #0 - ldr r8, .L837+16 - mov r4, r6 - ldr r0, .L837+4 - bl sftl_printk -.L824: - ldr r3, [r6, #2504] - cmp r5, r3 - bcc .L830 - add sp, sp, #32 - @ sp needed - pop {r4, r5, r6, r7, r8, pc} -.L830: - movs r2, #0 - add r1, sp, #28 - mov r0, r5 - bl log2phys - ubfx r3, r5, #0, #11 - cbnz r3, .L825 - ldr r2, [sp, #28] - mov r1, r5 - mov r0, r8 - bl sftl_printk -.L825: - ldr r3, [sp, #28] - adds r2, r3, #1 - beq .L827 - str r3, [r4, #3268] - movs r2, #0 - ldr r3, [r4, #3284] - movs r1, #1 - ldr r7, [r4, #3288] - ldr r0, .L837+8 - str r3, [r4, #3272] - str r5, [r4, #3280] - str r7, [r4, #3276] - str r2, [r4, #3264] - bl FlashReadPages - ldr r3, [r4, #3264] - cmp r3, #256 - beq .L828 - adds r3, r3, #1 - beq .L828 - ldr r3, [r7, #8] - cmp r5, r3 - beq .L827 -.L828: - ldr r2, [r4, #3272] - ldr r3, [r4, #3276] - ldr r0, .L837+12 - ldr r1, [r2, #4] - str r1, [sp, #16] - mov r1, r5 - ldr r2, [r2] - str r2, [sp, #12] - ldr r2, [r3, #12] - str r2, [sp, #8] - ldr r2, [r3, #8] - str r2, [sp, #4] - ldr r2, [r3, #4] - str r2, [sp] - ldr r3, [r3] - ldr r2, [r4, #3268] - bl sftl_printk -.L827: - adds r5, r5, #1 - b .L824 -.L838: - .align 2 -.L837: - .word .LANCHOR0 - .word .LC94 - .word .LANCHOR0+3264 - .word .LC96 - .word .LC95 - .fnend - .size ftl_scan_all_data, .-ftl_scan_all_data - .align 1 - .global FtlReadRefresh - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlReadRefresh, %function -FtlReadRefresh: - .fnstart - @ args = 0, pretend = 0, frame = 88 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L852 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - .pad #88 - sub sp, sp, #88 - mov r4, r3 - ldr r0, [r3, #2716] - cmp r0, #0 - beq .L840 - ldr r1, [r3, #2720] - ldr r2, [r3, #2504] - cmp r1, r2 - bcs .L841 - mov r5, #2048 -.L846: - ldr r0, [r4, #2720] - ldr r3, [r4, #2504] - cmp r0, r3 - bcs .L843 - movs r2, #0 - mov r1, sp - bl log2phys - ldr r2, [sp] - ldr r3, [r4, #2720] - adds r1, r2, #1 - add r3, r3, #1 - str r3, [r4, #2720] - beq .L844 - str r3, [sp, #20] - add r0, sp, #88 - ldr r3, .L852+4 - movs r1, #1 - str r2, [sp, #8] - movs r2, #0 - str r2, [r0, #-84]! - str r3, [sp, #12] - add r3, sp, #24 - str r3, [sp, #16] - bl FlashReadPages - ldr r3, [sp, #4] - cmp r3, #256 - bne .L843 - ldr r0, [sp] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L843: - mov r0, #-1 -.L839: - add sp, sp, #88 - @ sp needed - pop {r4, r5, r6, pc} -.L844: - subs r5, r5, #1 - bne .L846 - b .L843 -.L841: - ldr r2, [r3, #2508] - movs r0, #0 - str r0, [r3, #2716] - str r0, [r3, #2720] - str r2, [r3, #2712] - b .L839 -.L840: - ldr r1, [r3, #2508] - ldr r6, [r3, #2712] - add r2, r1, #1048576 - cmp r6, r2 - bhi .L849 - ldr r2, [r3, #2564] - lsrs r5, r2, #10 - mov r2, #33554432 - asrs r2, r2, r5 - add r2, r2, r6 - cmp r1, r2 - bhi .L849 - ldrb r3, [r3, #2296] @ zero_extendqisi2 - cmp r3, #0 - bne .L839 -.L849: - movs r3, #1 - movs r0, #0 - str r3, [r4, #2716] - str r0, [r4, #2720] - str r1, [r4, #2712] - b .L839 -.L853: - .align 2 -.L852: - .word .LANCHOR0 - .word ftl_temp_buf - .fnend - .size FtlReadRefresh, .-FtlReadRefresh - .align 1 - .global ftl_check_vpc - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type ftl_check_vpc, %function -ftl_check_vpc: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - movs r4, #0 - ldr r6, .L878 - ldr r7, .L878+4 - ldr r1, .L878+8 - mov r5, r6 - ldr r0, .L878+12 - bl sftl_printk - mov r1, #8192 - ldr r0, .L878+4 - bl __memzero -.L855: - ldr r3, [r6, #2504] - cmp r4, r3 - bcc .L857 - ldr r8, .L878+4 - movs r4, #0 - ldr r10, .L878+24 - mov r7, r4 - movw r9, #65535 -.L858: - ldrh r2, [r5, #40] - uxth r3, r4 - cmp r2, r3 - bhi .L860 - ldr r4, [r5, #2340] - cbz r4, .L861 - ldr r3, [r5, #2316] - movs r6, #0 - ldrh r8, [r5, #2344] - mov fp, #6 - ldr r9, .L878+4 - subs r4, r4, r3 - ldr r3, .L878+16 - asrs r4, r4, #1 - ldr r10, .L878+28 - muls r4, r3, r4 - uxth r4, r4 -.L862: - uxth r3, r6 - cmp r8, r3 - bls .L861 - ldr r3, [r5, #2324] - ldrh r2, [r3, r4, lsl #1] - cbz r2, .L863 - movs r7, #1 - ldrh r3, [r9, r4, lsl #1] - mov r1, r4 - mov r0, r10 - bl sftl_printk -.L863: - mul r4, fp, r4 - ldr r3, [r5, #2316] - adds r6, r6, #1 - ldrh r4, [r3, r4] - movw r3, #65535 - cmp r4, r3 - bne .L862 -.L861: - cbz r7, .L854 - movw r2, #2373 - ldr r1, .L878+8 - ldr r0, .L878+20 - bl sftl_printk -.L854: - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L857: - movs r2, #0 - add r1, sp, #4 - mov r0, r4 - bl log2phys - ldr r0, [sp, #4] - adds r3, r0, #1 - beq .L856 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r7, r0, lsl #1] - adds r3, r3, #1 - strh r3, [r7, r0, lsl #1] @ movhi -.L856: - adds r4, r4, #1 - b .L855 -.L860: - ldr r3, [r5, #2324] - uxth r6, r4 - ldrh r2, [r3, r6, lsl #1] - ldrh r3, [r8, r6, lsl #1] - cmp r2, r3 - beq .L859 - mov r1, r6 - mov r0, r10 - bl sftl_printk - ldr r3, [r5, #2324] - ldrh r3, [r3, r6, lsl #1] - cmp r3, r9 - beq .L859 - ldrh r2, [r8, r6, lsl #1] - cmp r2, r3 - it hi - movhi r7, #1 -.L859: - adds r4, r4, #1 - b .L858 -.L879: - .align 2 -.L878: - .word .LANCHOR0 - .word check_vpc_table - .word .LANCHOR1+314 - .word .LC97 - .word -1431655765 - .word .LC1 - .word .LC98 - .word .LC99 - .fnend - .size ftl_check_vpc, .-ftl_check_vpc - .align 1 - .global FtlMapBlkWriteDump_data - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlMapBlkWriteDump_data, %function -FtlMapBlkWriteDump_data: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - ldr r3, [r0, #36] - cbz r3, .L880 - ldrh r5, [r0, #6] - movs r3, #0 - ldr r4, .L884 - ldr r2, [r0, #24] - str r3, [r0, #36] - subs r5, r5, #1 - ldr r0, [r4, #3848] - uxth r5, r5 - ldr r1, [r4, #3288] - str r0, [r4, #3272] - str r1, [r4, #3276] - ldr r2, [r2, r5, lsl #2] - str r2, [r4, #3268] - cbz r2, .L882 - movs r2, #1 - add r0, r4, #3264 - mov r1, r2 - bl FlashReadPages -.L883: - ldr r2, [r4, #3272] - mov r1, r5 - mov r0, r6 - pop {r4, r5, r6, lr} - b FtlMapWritePage -.L882: - ldrh r2, [r4, #110] - movs r1, #255 - bl ftl_memset - b .L883 -.L880: - pop {r4, r5, r6, pc} -.L885: - .align 2 -.L884: - .word .LANCHOR0 - .fnend - .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data - .align 1 - .global FtlScanSysBlk - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlScanSysBlk, %function -FtlScanSysBlk: - .fnstart - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r5, #0 - ldr r4, .L967 - mov r1, r5 - .pad #20 - sub sp, sp, #20 - ldr r2, [r4, #128] - ldr r0, [r4, #3896] - strh r5, [r4, #3952] @ movhi - strh r5, [r4, #144] @ movhi - lsls r2, r2, #2 - bl ftl_memset - ldr r2, [r4, #128] - mov r1, r5 - ldr r0, [r4, #3872] - lsls r2, r2, #1 - bl ftl_memset - ldrh r2, [r4, #120] - mov r1, r5 - ldr r0, [r4, #3884] - lsls r2, r2, #2 - bl ftl_memset - ldrh r2, [r4, #120] - mov r1, r5 - ldr r0, [r4, #148] - lsls r2, r2, #1 - bl ftl_memset - ldrh r8, [r4, #40] - mov r3, #-1 - str r3, [r4, #2576] - str r3, [r4, #2580] - str r3, [r4, #2584] -.L887: - ldrh r3, [r4, #42] - cmp r3, r8 - bls .L929 - movs r5, #0 - ldrh fp, [r4, #32] - ldr r9, [r4, #3836] - mov r7, r5 - ldr r3, [r4, #3172] - mov r10, #20 - ldr r2, [r4, #3176] - ldrh r6, [r4, #112] - b .L930 -.L890: - str r3, [sp, #8] - mov r1, r8 - ldr r3, .L967+4 - str r2, [sp, #12] - ldrb r0, [r3, r5] @ zero_extendqisi2 - bl V2P_block - str r0, [sp, #4] - bl FtlBbmIsBadBlock - ldr r3, [sp, #8] - ldr r2, [sp, #12] - cbnz r0, .L888 - ldr r1, [sp, #4] - mla r0, r10, r7, r9 - lsls r1, r1, #10 - str r3, [r0, #8] - str r1, [r0, #4] - mov r1, r6 - muls r1, r7, r1 - add r7, r7, #1 - it mi - addmi r1, r1, #3 - uxth r7, r7 - bic r1, r1, #3 - add r1, r1, r2 - str r1, [r0, #12] -.L888: - adds r5, r5, #1 -.L930: - uxth r1, r5 - cmp fp, r1 - bhi .L890 - cbnz r7, .L891 -.L928: - add r8, r8, #1 - uxth r8, r8 - b .L887 -.L891: - mov r0, r9 - mov r9, #0 - movs r2, #1 - mov r1, r7 - bl FlashReadPages -.L892: - uxth r3, r9 - cmp r7, r3 - bls .L928 - movs r3, #20 - mul r10, r3, r9 - ldr r3, [r4, #3836] - add r2, r3, r10 - ldr r3, [r3, r10] - ldr r5, [r2, #4] - ldr r6, [r2, #12] - adds r3, r3, #1 - ubfx r5, r5, #10, #16 - bne .L895 - mov fp, #16 - movw r3, #65535 -.L897: - ldr r0, [r4, #3836] - str r3, [sp, #4] - add r0, r0, r10 - ldr r2, [r0, #4] - adds r2, r2, #1 - str r2, [r0, #4] - movs r2, #1 - mov r1, r2 - bl FlashReadPages - ldrh r2, [r6] - ldr r3, [sp, #4] - cmp r2, r3 - bne .L894 - ldr r3, [r4, #3836] - mov r2, #-1 - str r2, [r3, r10] - ldr r3, [r4, #3836] - ldr r3, [r3, r10] - cmp r3, r2 - bne .L895 -.L896: - movs r1, #0 - mov r0, r5 - bl FtlFreeSysBlkQueueIn - b .L900 -.L894: - ldr r2, [r4, #3836] - ldr r2, [r2, r10] - adds r2, r2, #1 - bne .L895 - add fp, fp, #-1 - uxth fp, fp - cmp fp, #0 - bne .L897 - b .L896 -.L895: - ldr r2, [r4, #2540] - ldr r3, [r6, #4] - adds r1, r2, #1 - beq .L898 - cmp r2, r3 - bhi .L899 -.L898: - adds r2, r3, #1 - itt ne - addne r2, r3, #1 - strne r2, [r4, #2540] -.L899: - ldrh r2, [r6] - movw r1, #61604 - cmp r2, r1 - beq .L901 - bhi .L902 - movw r3, #61574 - cmp r2, r3 - beq .L903 -.L900: - add r9, r9, #1 - b .L892 -.L902: - movw r3, #61634 - cmp r2, r3 - beq .L904 - movw r3, #65535 - cmp r2, r3 - beq .L896 - b .L900 -.L904: - ldrh r2, [r4, #3952] - ldr r3, [r4, #128] - cmp r2, r3 - bls .L906 - mov r2, #1256 - ldr r1, .L967+8 - ldr r0, .L967+12 - bl sftl_printk -.L906: - ldr r1, [r4, #128] - ldrh r0, [r4, #3952] - ldr r10, [r4, #3896] - uxth ip, r1 - add r3, ip, #-1 - sub ip, ip, r0 - add ip, ip, #-1 - sxth r3, r3 - sxth ip, ip -.L907: - cmp r3, ip - bgt .L913 - cmp r3, #0 - bge .L945 - b .L900 -.L913: - ldr r2, [r6, #4] - lsl fp, r3, #2 - mov lr, r2 - ldr r2, [r10, r3, lsl #2] - cmp lr, r2 - bls .L908 - ldr r2, [r10] - cbnz r2, .L909 - cmp r1, r0 - itt ne - addne r0, r0, #1 - strhne r0, [r4, #3952] @ movhi -.L909: - uxth ip, r3 - movs r2, #0 -.L910: - uxth r0, r2 - sxth r1, r2 - cmp ip, r0 - bhi .L911 - ldr r2, [r4, #3896] - cmp r3, #0 - ldr r1, [r6, #4] - str r1, [r2, fp] - ldr r2, [r4, #3872] - strh r5, [r2, r3, lsl #1] @ movhi - blt .L900 - ldrh r0, [r4, #3952] - ldr r2, [r4, #128] - subs r2, r2, r0 - subs r2, r2, #1 - sxth r2, r2 - cmp r3, r2 - bgt .L900 -.L945: - ldr r2, [r4, #3896] - adds r0, r0, #1 - ldr r1, [r6, #4] - strh r0, [r4, #3952] @ movhi - str r1, [r2, r3, lsl #2] - ldr r2, [r4, #3872] -.L965: - strh r5, [r2, r3, lsl #1] @ movhi - b .L900 -.L911: - ldr r0, [r4, #3896] - adds r2, r2, #1 - add lr, r0, r1, lsl #2 - ldr lr, [lr, #4] - str lr, [r0, r1, lsl #2] - ldr r0, [r4, #3872] - add lr, r0, r1, lsl #1 - ldrh lr, [lr, #2] - strh lr, [r0, r1, lsl #1] @ movhi - b .L910 -.L908: - subs r3, r3, #1 - sxth r3, r3 - b .L907 -.L968: - .align 2 -.L967: - .word .LANCHOR0 - .word .LANCHOR0+60 - .word .LANCHOR1+328 - .word .LC1 -.L903: - ldrh r2, [r4, #144] - ldrh r3, [r4, #120] - cmp r2, r3 - bls .L916 - movw r2, #1297 - ldr r1, .L969 - ldr r0, .L969+4 - bl sftl_printk -.L916: - ldrh lr, [r4, #120] - ldrh r0, [r4, #144] - ldr r10, [r4, #3884] - add ip, lr, #-1 - sxth r3, ip - sub ip, ip, r0 -.L917: - cmp r3, ip - ble .L922 - ldr r2, [r6, #4] - lsl fp, r3, #2 - ldr r1, [r10, r3, lsl #2] - cmp r2, r1 - bls .L918 - ldr r2, [r10] - cbnz r2, .L919 - cmp lr, r0 - itt ne - addne r0, r0, #1 - strhne r0, [r4, #144] @ movhi -.L919: - uxth ip, r3 - movs r2, #0 -.L920: - uxth r0, r2 - sxth r1, r2 - cmp ip, r0 - bhi .L921 - ldr r2, [r4, #3884] - ldr r1, [r6, #4] - str r1, [r2, fp] - ldr r2, [r4, #148] - strh r5, [r2, r3, lsl #1] @ movhi -.L922: - cmp r3, #0 - blt .L900 - ldrh r2, [r4, #120] - ldrh r1, [r4, #144] - subs r2, r2, #1 - subs r2, r2, r1 - sxth r2, r2 - cmp r3, r2 - bgt .L900 - adds r1, r1, #1 - ldr r2, [r4, #3884] - strh r1, [r4, #144] @ movhi - ldr r1, [r6, #4] - str r1, [r2, r3, lsl #2] - ldr r2, [r4, #148] - b .L965 -.L921: - ldr r0, [r4, #3884] - adds r2, r2, #1 - add lr, r0, r1, lsl #2 - ldr lr, [lr, #4] - str lr, [r0, r1, lsl #2] - ldr r0, [r4, #148] - add lr, r0, r1, lsl #1 - ldrh lr, [lr, #2] - strh lr, [r0, r1, lsl #1] @ movhi - b .L920 -.L918: - subs r3, r3, #1 - sxth r3, r3 - b .L917 -.L901: - ldrh r1, [r4, #2576] - movw r2, #65535 - cmp r1, r2 - bne .L924 - strh r5, [r4, #2576] @ movhi -.L966: - str r3, [r4, #2584] - b .L900 -.L924: - ldrh r0, [r4, #2580] - cmp r0, r2 - beq .L925 - movs r1, #1 - bl FtlFreeSysBlkQueueIn -.L925: - ldr r2, [r4, #2584] - ldr r3, [r6, #4] - cmp r2, r3 - bcs .L926 - ldrh r3, [r4, #2576] - strh r5, [r4, #2576] @ movhi - strh r3, [r4, #2580] @ movhi - ldr r3, [r6, #4] - b .L966 -.L926: - strh r5, [r4, #2580] @ movhi - b .L900 -.L929: - ldr r1, [r4, #3872] - ldrh r3, [r1] - cbz r3, .L931 -.L934: - ldr r1, [r4, #148] - ldrh r2, [r1] - cmp r2, #0 - beq .L932 -.L933: - ldrh r2, [r4, #3952] - ldr r3, [r4, #128] - cmp r2, r3 - bls .L964 - movw r2, #1422 - ldr r1, .L969 - ldr r0, .L969+4 - bl sftl_printk -.L964: - movs r0, #0 - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L931: - ldrh r2, [r4, #3952] - cmp r2, #0 - beq .L934 - ldr r0, [r4, #128] -.L935: - sxth r2, r3 - cmp r2, r0 - bcs .L934 - ldrh r5, [r1, r2, lsl #1] - adds r3, r3, #1 - cmp r5, #0 - beq .L935 - mov r3, r2 - movs r5, #0 -.L936: - ldr r1, [r4, #128] - cmp r3, r1 - bcs .L934 - ldr r1, [r4, #3872] - subs r0, r3, r2 - ldrh r6, [r1, r3, lsl #1] - strh r6, [r1, r0, lsl #1] @ movhi - ldr r1, [r4, #3896] - ldr r6, [r1, r3, lsl #2] - str r6, [r1, r0, lsl #2] - ldr r1, [r4, #3872] - strh r5, [r1, r3, lsl #1] @ movhi - adds r3, r3, #1 - sxth r3, r3 - b .L936 -.L932: - ldrh r3, [r4, #144] - cmp r3, #0 - beq .L933 - ldrh r0, [r4, #120] -.L941: - sxth r3, r2 - cmp r3, r0 - mov r5, r3 - bge .L933 - ldrh r6, [r1, r3, lsl #1] - adds r2, r2, #1 - cmp r6, #0 - beq .L941 - movs r0, #0 -.L942: - ldrh r2, [r4, #120] - cmp r3, r2 - bge .L933 - ldr r2, [r4, #148] - subs r1, r3, r5 - ldrh r6, [r2, r3, lsl #1] - strh r6, [r2, r1, lsl #1] @ movhi - ldr r2, [r4, #3884] - ldr r6, [r2, r3, lsl #2] - str r6, [r2, r1, lsl #2] - ldr r2, [r4, #148] - strh r0, [r2, r3, lsl #1] @ movhi - adds r3, r3, #1 - sxth r3, r3 - b .L942 -.L970: - .align 2 -.L969: - .word .LANCHOR1+328 - .word .LC1 - .fnend - .size FtlScanSysBlk, .-FtlScanSysBlk - .align 1 - .global FtlMapTblRecovery - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlMapTblRecovery, %function -FtlMapTblRecovery: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #28 - sub sp, sp, #28 - ldr r3, [r0, #24] - mov r4, r0 - movs r1, #0 - ldrh r10, [r0, #6] - str r3, [sp, #4] - ldr r3, [r0, #16] - ldr r5, .L996 - ldr r9, [r0, #12] - lsl r2, r10, #2 - str r3, [sp, #12] - ldrh r3, [r0, #8] - ldr r0, [sp, #4] - str r3, [sp, #8] - bl ftl_memset - ldr r3, [r5, #3284] - movs r2, #1 - ldr r6, [r5, #3288] - str r2, [r4, #36] - str r3, [r5, #3272] - movw r3, #65535 - str r6, [r5, #3276] - strh r3, [r4] @ movhi - strh r3, [r4, #2] @ movhi - movs r3, #0 - str r3, [r4, #32] - mov r8, r3 - str r3, [r4, #28] - ldr r3, [sp, #8] - add fp, r3, #-1 - mov r3, r5 -.L972: - ldr r1, [sp, #8] - sxth r2, r8 - cmp r2, r1 - bge .L990 - cmp r2, fp - lsl r7, r2, #1 - bne .L973 - ldrh r0, [r9, fp, lsl #1] - movs r1, #1 - bl FtlGetLastWrittenPage - ldr r3, [sp, #12] - add r7, r7, r9 - strh r8, [r4] @ movhi - sxth r9, r0 - ldr r8, .L996+4 - adds r0, r0, #1 - strh r0, [r4, #2] @ movhi - add r9, r9, #1 - ldr r3, [r3, fp, lsl #2] - mov fp, #0 - str r3, [r4, #28] -.L974: - sxth r2, fp - cmp r2, r9 - blt .L977 -.L990: - mov r0, r4 - bl ftl_free_no_use_map_blk - ldrh r2, [r4, #2] - ldrh r3, [r5, #104] - cmp r2, r3 - bne .L979 - mov r0, r4 - bl ftl_map_blk_alloc_new_blk -.L979: - mov r0, r4 - bl ftl_map_blk_gc - mov r0, r4 - bl ftl_map_blk_gc - movs r0, #0 - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L977: - ldrh r1, [r7] - mov r0, r8 - orr r2, r2, r1, lsl #10 - str r2, [r5, #3268] - movs r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [r5, #3264] - adds r2, r2, #1 - beq .L975 - ldrh r2, [r6, #8] - cmp r10, r2 - bls .L976 - ldrh r0, [r6] - ldrh r1, [r4, #4] - cmp r0, r1 - bne .L976 - ldr r1, [r5, #3268] - ldr r3, [sp, #4] - str r1, [r3, r2, lsl #2] -.L976: - add fp, fp, #1 - b .L974 -.L975: - ldrh r2, [r7] - strh r2, [r4, #40] @ movhi - b .L976 -.L973: - ldr r1, [r5, #3284] - str r3, [sp, #20] - add r3, r9, r7 - ldr r0, .L996+4 - str r1, [r5, #3272] - ldrh r1, [r9, r2, lsl #1] - ldrh r2, [r5, #104] - str r3, [sp, #16] - subs r2, r2, #1 - orr r2, r2, r1, lsl #10 - str r2, [r5, #3268] - movs r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [r5, #3264] - ldr r3, [sp, #20] - adds r2, r2, #1 - beq .L992 - ldrh r1, [r6] - ldrh r2, [r4, #4] - cmp r1, r2 - bne .L992 - ldrh r1, [r6, #8] - movw r2, #64245 - cmp r1, r2 - beq .L981 -.L992: - movs r7, #0 -.L982: - ldrh r1, [r3, #104] - sxth r2, r7 - cmp r2, r1 - bge .L988 - ldr r1, [sp, #16] - ldr r0, .L996+4 - str r3, [sp, #20] - ldrh r1, [r1] - orr r2, r2, r1, lsl #10 - str r2, [r3, #3268] - movs r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r3, [sp, #20] - ldr r2, [r3, #3264] - adds r2, r2, #1 - beq .L986 - ldrh r2, [r6, #8] - cmp r10, r2 - bls .L986 - ldrh r0, [r6] - ldrh r1, [r4, #4] - cmp r0, r1 - ittt eq - ldreq r1, [r3, #3268] - ldreq r0, [sp, #4] - streq r1, [r0, r2, lsl #2] -.L986: - adds r7, r7, #1 - b .L982 -.L981: - movs r0, #0 - mov ip, #4 -.L983: - ldrh r1, [r5, #104] - sxth r2, r0 - subs r1, r1, #1 - cmp r2, r1 - blt .L985 -.L988: - add r8, r8, #1 - b .L972 -.L985: - ldr r7, [r5, #3284] - ldr r1, [r7, r2, lsl #3] - uxth lr, r1 - cmp r10, lr - bls .L984 - add r2, ip, r2, lsl #3 - ldr r2, [r7, r2] - ldr r7, [sp, #4] - str r2, [r7, lr, lsl #2] -.L984: - adds r0, r0, #1 - b .L983 -.L997: - .align 2 -.L996: - .word .LANCHOR0 - .word .LANCHOR0+3264 - .fnend - .size FtlMapTblRecovery, .-FtlMapTblRecovery - .align 1 - .global FtlLoadVonderInfo - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlLoadVonderInfo, %function -FtlLoadVonderInfo: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r0, .L999 - push {r3, lr} - .save {r3, lr} - ldrh r3, [r0, #120] - strh r3, [r0, #3966] @ movhi - movw r3, #61574 - strh r3, [r0, #3960] @ movhi - ldrh r3, [r0, #144] - strh r3, [r0, #3964] @ movhi - ldrh r3, [r0, #122] - strh r3, [r0, #3962] @ movhi - ldr r3, [r0, #148] - addw r0, r0, #3956 - str r3, [r0, #12] - ldr r3, [r0, #-72] - str r3, [r0, #16] - ldr r3, [r0, #-76] - str r3, [r0, #20] - ldr r3, [r0, #-68] - str r3, [r0, #24] - movw r3, #65535 - strh r3, [r0, #40] @ movhi - bl FtlMapTblRecovery - movs r0, #0 - pop {r3, pc} -.L1000: - .align 2 -.L999: - .word .LANCHOR0 - .fnend - .size FtlLoadVonderInfo, .-FtlLoadVonderInfo - .align 1 .global FtlL2PDataInit .syntax unified .thumb @@ -6845,49 +4293,48 @@ FtlL2PDataInit: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} movs r1, #0 - ldr r4, .L1004 + ldr r4, .L588 movs r6, #12 ldr r2, [r4, #128] - ldr r0, [r4, #3876] + ldr r0, [r4, #3352] lsls r2, r2, #1 bl ftl_memset ldrh r3, [r4, #110] movs r1, #255 ldrh r2, [r4, #138] - ldr r0, [r4, #3900] + ldr r0, [r4, #3376] muls r2, r3, r2 bl ftl_memset movs r2, #0 mov r3, r4 movw r1, #65535 mov r7, r2 -.L1002: +.L586: ldrh r4, [r3, #138] uxth r0, r2 adds r5, r2, #1 cmp r4, r0 - bhi .L1003 + bhi .L587 ldr r2, [r3, #128] - strh r1, [r3, #3910] @ movhi - strh r1, [r3, #3908] @ movhi - strh r2, [r3, #3918] @ movhi + strh r1, [r3, #3386] @ movhi + strh r1, [r3, #3384] @ movhi + strh r2, [r3, #3394] @ movhi movw r2, #61634 - strh r2, [r3, #3912] @ movhi - ldrh r2, [r3, #3952] - strh r1, [r3, #3948] @ movhi - strh r2, [r3, #3916] @ movhi + strh r2, [r3, #3388] @ movhi + ldrh r2, [r3, #3428] + strh r2, [r3, #3392] @ movhi ldrh r2, [r3, #136] - strh r2, [r3, #3914] @ movhi - ldr r2, [r3, #3872] - str r2, [r3, #3920] - ldr r2, [r3, #3896] - str r2, [r3, #3924] - ldr r2, [r3, #3876] - str r2, [r3, #3928] - ldr r2, [r3, #3892] - str r2, [r3, #3932] + strh r2, [r3, #3390] @ movhi + ldr r2, [r3, #3348] + str r2, [r3, #3396] + ldr r2, [r3, #3372] + str r2, [r3, #3400] + ldr r2, [r3, #3352] + str r2, [r3, #3404] + ldr r2, [r3, #3368] + str r2, [r3, #3408] pop {r3, r4, r5, r6, r7, pc} -.L1003: +.L587: uxth r2, r2 ldr r0, [r3, #2492] mul r4, r6, r2 @@ -6898,43 +4345,19 @@ FtlL2PDataInit: add r0, r0, r4 ldrh r4, [r3, #110] muls r2, r4, r2 - ldr r4, [r3, #3900] + ldr r4, [r3, #3376] bic r2, r2, #3 add r2, r2, r4 str r2, [r0, #8] mov r2, r5 - b .L1002 -.L1005: + b .L586 +.L589: .align 2 -.L1004: +.L588: .word .LANCHOR0 .fnend .size FtlL2PDataInit, .-FtlL2PDataInit .align 1 - .global FtlLoadMapInfo - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlLoadMapInfo, %function -FtlLoadMapInfo: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, lr} - .save {r3, lr} - bl FtlL2PDataInit - ldr r0, .L1007 - bl FtlMapTblRecovery - movs r0, #0 - pop {r3, pc} -.L1008: - .align 2 -.L1007: - .word .LANCHOR0+3908 - .fnend - .size FtlLoadMapInfo, .-FtlLoadMapInfo - .align 1 .global FtlVariablesInit .syntax unified .thumb @@ -6948,17 +4371,17 @@ FtlVariablesInit: push {r3, r4, r5, lr} .save {r3, r4, r5, lr} movs r5, #0 - ldr r4, .L1010 + ldr r4, .L591 movw r3, #65535 mov r1, r5 ldrh r2, [r4, #120] - strh r3, [r4, #4000] @ movhi + strh r3, [r4, #3430] @ movhi mov r3, #-1 ldr r0, [r4, #148] - str r3, [r4, #4012] + str r3, [r4, #3440] lsls r2, r2, #1 - str r5, [r4, #4004] - str r5, [r4, #4008] + str r5, [r4, #3432] + str r5, [r4, #3436] strh r5, [r4, #144] @ movhi bl ftl_memset ldrh r2, [r4, #42] @@ -6968,7 +4391,7 @@ FtlVariablesInit: bl ftl_memset ldrh r2, [r4, #42] mov r1, r5 - ldr r0, [r4, #3860] + ldr r0, [r4, #3336] lsls r2, r2, #1 bl ftl_memset addw r0, r4, #2268 @@ -6981,9 +4404,9 @@ FtlVariablesInit: bl FtlL2PDataInit mov r0, r5 pop {r3, r4, r5, pc} -.L1011: +.L592: .align 2 -.L1010: +.L591: .word .LANCHOR0 .fnend .size FtlVariablesInit, .-FtlVariablesInit @@ -7001,7 +4424,7 @@ SupperBlkListInit: push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} movs r5, #0 - ldr r4, .L1023 + ldr r4, .L604 movs r2, #6 mov r9, r5 mov r6, r5 @@ -7019,18 +4442,18 @@ SupperBlkListInit: str r5, [r4, #2332] strh r5, [r4, #2336] @ movhi strh r5, [r4, #2344] @ movhi -.L1013: +.L594: ldrh r3, [r4, #40] uxth r8, r5 cmp r8, r3 - bcs .L1020 + bcs .L601 ldrh r3, [r4, #102] ldrh r2, [r4, #32] str r3, [sp, #4] movs r3, #0 mov r7, r3 - b .L1021 -.L1015: + b .L602 +.L596: ldrb r0, [r10, r3] @ zero_extendqisi2 mov r1, r8 str r2, [sp, #12] @@ -7039,78 +4462,78 @@ SupperBlkListInit: bl FtlBbmIsBadBlock ldr r3, [sp, #8] ldr r2, [sp, #12] - cbnz r0, .L1014 + cbnz r0, .L595 ldr r1, [sp, #4] add r7, r7, r1 uxth r7, r7 -.L1014: +.L595: adds r3, r3, #1 -.L1021: +.L602: uxth r1, r3 cmp r2, r1 - bhi .L1015 + bhi .L596 uxth r3, r5 - cbz r7, .L1016 + cbz r7, .L597 mov r1, r7 str r3, [sp, #4] mov r0, #32768 bl __aeabi_idiv ldr r3, [sp, #4] uxth r7, r0 -.L1017: +.L598: ldr r1, [r4, #2316] movs r2, #6 mla r2, r2, r3, r1 strh r7, [r2, #4] @ movhi ldrh r2, [r4, #2348] cmp r2, r8 - beq .L1018 + beq .L599 ldrh r2, [r4, #2396] cmp r2, r8 - beq .L1018 + beq .L599 ldrh r2, [r4, #2444] cmp r2, r8 - beq .L1018 + beq .L599 ldr r2, [r4, #2324] ldrh r3, [r2, r3, lsl #1] - cbnz r3, .L1019 + cbnz r3, .L600 add r9, r9, #1 mov r0, r8 uxth r9, r9 bl INSERT_FREE_LIST -.L1018: +.L599: adds r5, r5, #1 - b .L1013 -.L1016: + b .L594 +.L597: ldr r2, [r4, #2324] strh fp, [r2, r3, lsl #1] @ movhi - b .L1017 -.L1019: + b .L598 +.L600: adds r6, r6, #1 mov r0, r8 uxth r6, r6 bl INSERT_DATA_LIST - b .L1018 -.L1020: + b .L599 +.L601: strh r6, [r4, #2336] @ movhi add r6, r6, r9 cmp r6, r3 strh r9, [r4, #2344] @ movhi - ble .L1022 - movw r2, #2206 - ldr r1, .L1023+4 - ldr r0, .L1023+8 + ble .L603 + movw r2, #2170 + ldr r1, .L604+4 + ldr r0, .L604+8 bl sftl_printk -.L1022: +.L603: movs r0, #0 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1024: +.L605: .align 2 -.L1023: +.L604: .word .LANCHOR0 - .word .LANCHOR1+342 + .word .LANCHOR1+198 .word .LC1 .fnend .size SupperBlkListInit, .-SupperBlkListInit @@ -7128,7 +4551,7 @@ FtlGcPageVarInit: push {r4, lr} .save {r4, lr} movs r3, #0 - ldr r4, .L1026 + ldr r4, .L607 movs r1, #255 ldrh r2, [r4, #106] ldr r0, [r4, #3188] @@ -7144,197 +4567,13 @@ FtlGcPageVarInit: bl ftl_memset pop {r4, lr} b FtlGcBufInit -.L1027: +.L608: .align 2 -.L1026: +.L607: .word .LANCHOR0 .fnend .size FtlGcPageVarInit, .-FtlGcPageVarInit .align 1 - .global FtlGcScanTempBlk - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlGcScanTempBlk, %function -FtlGcScanTempBlk: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1053 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #28 - sub sp, sp, #28 - mov r7, r0 - str r1, [sp, #8] - ldrh r4, [r3, #4] - movw r3, #65535 - cmp r4, r3 - beq .L1047 - cbnz r4, .L1029 -.L1030: - bl FtlGcPageVarInit - b .L1031 -.L1047: - movs r4, #0 -.L1029: - ldr r3, .L1053+4 - ldr r2, [sp, #8] - ldrh r3, [r3, #102] - cmp r3, r2 - beq .L1030 -.L1031: - mov fp, #0 - movw r8, #65535 -.L1041: - ldrh r3, [r7] - movs r0, #0 - strb r0, [r7, #8] - cmp r3, r8 - beq .L1032 - ldr r5, .L1053+4 -.L1044: - ldr r3, [r5, #3836] - movs r2, #0 - ldrh ip, [r5, #32] - add lr, r7, #16 - ldr r10, [r5, #3176] - mov r6, r2 - str r3, [sp, #4] - mov r9, #20 - ldr r3, [r5, #3172] - str r3, [sp, #12] - ldrh r3, [r5, #110] - str r3, [sp, #16] - ldrh r3, [r5, #112] - str r3, [sp, #20] -.L1033: - uxth r3, r2 - cmp ip, r3 - bhi .L1037 - mov r9, #0 - movs r2, #0 - mov r1, r6 - ldr r0, [sp, #4] - bl FlashReadPages -.L1038: - uxth r3, r9 - cmp r6, r3 - bhi .L1042 - ldr r3, [sp, #8] - add fp, fp, #1 - adds r4, r4, #1 - uxth r4, r4 - cmp r3, fp - bls .L1043 -.L1045: - ldrh r3, [r5, #102] - cmp r3, r4 - bhi .L1044 - movs r0, #0 - b .L1032 -.L1037: - ldrh r3, [lr], #2 - cmp r3, r8 - beq .L1034 - ldr r1, [sp, #4] - orr r3, r4, r3, lsl #10 - mla r1, r9, r6, r1 - str r3, [r1, #4] - ldr r3, [sp, #16] - muls r3, r6, r3 - it mi - addmi r3, r3, #3 - bic r3, r3, #3 - mov r0, r3 - ldr r3, [sp, #12] - add r0, r0, r3 - ldr r3, [sp, #20] - muls r3, r6, r3 - add r6, r6, #1 - it mi - addmi r3, r3, #3 - uxth r6, r6 - bic r3, r3, #3 - str r0, [r1, #8] - add r3, r3, r10 - str r3, [r1, #12] -.L1034: - adds r2, r2, #1 - b .L1033 -.L1042: - movs r3, #20 - ldr r2, [r5, #3836] - mul r10, r3, r9 - str r2, [sp, #16] - add r3, r2, r10 - ldr r1, [r3, #4] - str r3, [sp, #12] - ubfx r0, r1, #10, #16 - str r1, [sp, #4] - bl P2V_plane - ldr r2, [sp, #16] - ldr r2, [r2, r10] - cbnz r2, .L1039 - ldr r3, [sp, #12] - add r9, r9, #1 - ldr r1, [sp, #4] - ldr r3, [r3, #12] - ldrh r2, [r3] - cmp r2, r8 - bne .L1040 - movs r3, #1 - str r3, [r5, #4008] -.L1032: - ldr r3, .L1053 - movw r2, #65535 - strb r0, [r7, #6] - mov r1, r4 - strh r4, [r7, #2] @ movhi - strh r2, [r3, #4] @ movhi - mov r2, r0 - mov r0, r7 - bl ftl_sb_update_avl_pages - b .L1046 -.L1040: - ldr r2, [r3, #8] - ldr r0, [r3, #12] - bl FtlGcUpdatePage - b .L1038 -.L1039: - ldrh r2, [r7] - movs r4, #0 - ldr r3, [r5, #2324] - strh r4, [r3, r2, lsl #1] @ movhi - ldrh r0, [r7] - bl INSERT_FREE_LIST - strh r8, [r7] @ movhi - bl FtlGcPageVarInit - b .L1041 -.L1043: - ldr r2, .L1053 - ldrh r3, [r2, #4] - cmp r3, r8 - beq .L1045 - add r3, r3, fp - strh r3, [r2, #4] @ movhi - ldrh r3, [r5, #102] - cmp r3, r4 - bls .L1045 -.L1046: - mov r0, #-1 - add sp, sp, #28 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1054: - .align 2 -.L1053: - .word .LANCHOR2 - .word .LANCHOR0 - .fnend - .size FtlGcScanTempBlk, .-FtlGcScanTempBlk - .align 1 .global ftl_memcpy .syntax unified .thumb @@ -7350,1583 +4589,733 @@ ftl_memcpy: .fnend .size ftl_memcpy, .-ftl_memcpy .align 1 - .global FtlBbmTblFlush + .global FlashReadPages .syntax unified .thumb .thumb_func .fpu softvfp - .type FtlBbmTblFlush, %function -FtlBbmTblFlush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - movs r5, #0 - ldr r4, .L1065 - movs r1, #0 - ldr r0, [r4, #3284] - add r6, r4, #176 - ldr r3, [r4, #3288] - ldrh r2, [r4, #110] - str r0, [r4, #3272] - str r3, [r4, #3276] - bl ftl_memset -.L1057: - ldrh r3, [r4, #54] - cmp r5, r3 - blt .L1058 - ldr r6, [r4, #3276] - movs r2, #16 - movs r1, #255 - ldr r9, .L1065+12 - ldr r8, .L1065+4 - movs r5, #0 - mov r0, r6 - ldr r10, .L1065+16 - bl memset - movw r3, #61649 - mov r7, r5 - strh r3, [r6] @ movhi - ldr r3, [r4, #160] - str r3, [r6, #4] - ldrh r3, [r4, #152] - strh r3, [r6, #2] @ movhi - ldrh r3, [r4, #156] - strh r3, [r6, #8] @ movhi - ldrh r3, [r4, #158] - strh r3, [r6, #10] @ movhi - ldr r3, [r4, #28] - strh r3, [r6, #12] @ movhi -.L1059: - ldr r3, [r4, #3284] - mov fp, #0 - ldrh r1, [r4, #152] - ldrh r2, [r4, #154] - str r3, [r4, #3272] - ldr r3, [r4, #3288] - str fp, [r4, #3264] - str r3, [r4, #3276] - orr r3, r2, r1, lsl #10 - ldrh r0, [r6, #10] - str r3, [r4, #3268] - ldrh r3, [r4, #156] - str r0, [sp] - mov r0, r9 - bl sftl_printk - movs r3, #1 - ldr r0, .L1065+4 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldrh r3, [r4, #104] - ldrh r2, [r4, #154] - subs r3, r3, #1 - cmp r2, r3 - blt .L1060 - ldr r3, [r4, #160] - ldrh r2, [r4, #152] - ldr r0, [r4, #3804] - adds r3, r3, #1 - strh fp, [r4, #154] @ movhi - str r3, [r4, #160] - str r3, [r6, #4] - ldrh r3, [r4, #156] - strh r2, [r6, #8] @ movhi - strh r2, [r4, #156] @ movhi - movs r2, #1 - strh r3, [r4, #152] @ movhi - mov r1, r2 - lsls r3, r3, #10 - str r3, [r4, #3268] - str r3, [r0, #4] - bl FlashEraseBlocks - movs r3, #1 - mov r0, r8 - mov r2, r3 - mov r1, r3 - bl FlashProgPages -.L1060: - ldrh r3, [r4, #154] - adds r3, r3, #1 - strh r3, [r4, #154] @ movhi - ldr r3, [r4, #3264] - adds r3, r3, #1 - bne .L1061 - adds r5, r5, #1 - ldr r1, [r4, #3268] - uxth r5, r5 - mov r0, r10 - bl sftl_printk - cmp r5, #3 - bls .L1059 - mov r2, r5 - ldr r1, [r4, #3268] - ldr r0, .L1065+8 - bl sftl_printk -.L1063: - b .L1063 -.L1058: - ldrh r2, [r4, #3904] - ldr r3, [r4, #3272] - ldr r1, [r6, #4]! - mul r0, r2, r5 - lsls r2, r2, #2 - adds r5, r5, #1 - add r0, r3, r0, lsl #2 - bl ftl_memcpy - b .L1057 -.L1064: - movs r7, #1 - b .L1059 -.L1061: - cmp r7, #0 - beq .L1064 - movs r0, #0 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1066: - .align 2 -.L1065: - .word .LANCHOR0 - .word .LANCHOR0+3264 - .word .LC102 - .word .LC100 - .word .LC101 - .fnend - .size FtlBbmTblFlush, .-FtlBbmTblFlush - .align 1 - .global allocate_data_superblock - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type allocate_data_superblock, %function -allocate_data_superblock: + .type FlashReadPages, %function +FlashReadPages: .fnstart @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r5, r0 - ldr r4, .L1102 + mov r9, r1 + ldr r5, .L637 + mov r4, r0 + mov r8, #0 .pad #20 sub sp, sp, #20 - ldr r9, .L1102+20 -.L1068: - ldr r3, .L1102 - ldr r2, .L1102 - ldrh r3, [r3, #2344] - ldrh r2, [r2, #2336] - add r3, r3, r2 - ldr r2, .L1102 - ldrh r2, [r2, #40] - cmp r3, r2 - ble .L1069 - movw r2, #2654 - mov r1, r9 - ldr r0, .L1102+4 - bl sftl_printk -.L1069: - ldr r3, .L1102+8 - cmp r5, r3 - bne .L1094 - ldrh r3, [r4, #2344] - ldr r1, [r4, #3160] - mul r2, r1, r3 - lsrs r1, r3, #1 - adds r1, r1, #1 - add r1, r1, r2, lsr #2 - uxth r1, r1 - cbz r1, .L1070 - subs r1, r1, #1 - uxth r1, r1 -.L1070: - ldr r0, .L1102+12 - bl List_pop_index_node - ldrh r3, [r4, #2344] - mov r6, r0 - uxth r8, r0 - cbnz r3, .L1071 - movw r2, #2663 - mov r1, r9 - ldr r0, .L1102+4 - bl sftl_printk -.L1071: - ldrh r3, [r4, #2344] - mov r0, r5 - subs r3, r3, #1 - strh r3, [r4, #2344] @ movhi - strh r8, [r5] @ movhi - bl make_superblock - ldrb r3, [r5, #7] @ zero_extendqisi2 - cbnz r3, .L1072 - ldr r3, [r4, #2324] - uxth r6, r6 - movw r2, #65535 - mov r0, r8 - strh r2, [r3, r6, lsl #1] @ movhi - bl INSERT_DATA_LIST - ldrh r2, [r4, #2336] - ldrh r3, [r4, #2344] - add r3, r3, r2 - ldrh r2, [r4, #40] - cmp r3, r2 - ble .L1068 - movw r2, #2674 - mov r1, r9 - ldr r0, .L1102+4 - bl sftl_printk - b .L1068 -.L1094: - movs r1, #0 - b .L1070 -.L1072: - ldrh r2, [r4, #2336] - ldrh r3, [r4, #2344] - add r3, r3, r2 - ldrh r2, [r4, #40] - cmp r3, r2 - ble .L1074 - movw r2, #2677 - mov r1, r9 - ldr r0, .L1102+4 - bl sftl_printk -.L1074: - ldr r1, [r4, #3804] - mov r10, #20 - ldrh r2, [r4, #32] - add fp, r5, #16 - movs r7, #0 - mov r0, fp - mov r3, r1 - mov ip, r7 - mla r2, r10, r2, r1 - str r2, [sp, #4] -.L1075: - ldr r2, [sp, #4] - cmp r2, r3 - bne .L1077 - cbnz r7, .L1078 - mov r2, #2688 - mov r1, r9 - ldr r0, .L1102+4 - bl sftl_printk -.L1078: - ldrh r3, [r4, #2588] - cmp r3, r8 - bne .L1079 - movw r2, #2690 - mov r1, r9 - ldr r0, .L1102+4 - bl sftl_printk -.L1079: - ldrb r3, [r5, #8] @ zero_extendqisi2 - uxth r6, r6 - ldr r2, [r4, #2328] - cmp r3, #0 - bne .L1080 - ldrh r3, [r2, r6, lsl #1] - cmp r3, #0 - beq .L1081 - ldrh r1, [r4, #92] - add r3, r3, r1 -.L1101: - strh r3, [r2, r6, lsl #1] @ movhi - movs r1, #0 - ldr r3, [r4, #2548] - mov r0, r8 - adds r3, r3, #1 - str r3, [r4, #2548] - bl ftl_set_blk_mode -.L1083: - ldr r3, [r4, #2328] - ldr r2, [r4, #2564] - ldrh r0, [r4, #92] - ldrh r3, [r3, r6, lsl #1] - ldrh r1, [r4, #40] - cmp r3, r2 - ldr r2, [r4, #2548] - it hi - strhi r3, [r4, #2564] - ldr r3, [r4, #2552] - mla r0, r2, r0, r3 - bl __aeabi_uidiv - ldr r2, [r4, #3864] - ldr r1, [r4, #3804] - str r0, [r4, #2556] - ldr r3, [r2, #16] - ldr r0, .L1102+16 - adds r3, r3, #1 - str r3, [r2, #16] - movs r2, #20 - mla r2, r2, r7, r1 - adds r3, r1, #4 - adds r2, r2, #24 -.L1085: - adds r3, r3, #20 - cmp r2, r3 - bne .L1086 - ldrb r1, [r5, #8] @ zero_extendqisi2 - mov r2, r7 - ldr r0, [r4, #3804] - mov r10, #0 - bl FlashEraseBlocks - mov r3, r10 - movs r1, #20 -.L1087: - uxth r2, r10 - cmp r7, r2 - bhi .L1089 - cmp r3, #0 - ble .L1090 - mov r0, r8 - bl update_multiplier_value - bl FtlBbmTblFlush -.L1090: - ldrb r2, [r5, #7] @ zero_extendqisi2 - cmp r2, #0 - bne .L1091 - ldr r3, [r4, #2324] - movw r2, #65535 - strh r2, [r3, r6, lsl #1] @ movhi - b .L1068 -.L1077: - str ip, [r3, #8] - movw lr, #65535 - str ip, [r3, #12] - ldrh r2, [r0], #2 - cmp r2, lr - beq .L1076 - mla lr, r10, r7, r1 - adds r7, r7, #1 - lsls r2, r2, #10 - uxth r7, r7 - str r2, [lr, #4] -.L1076: - adds r3, r3, #20 - b .L1075 -.L1081: - movs r3, #2 - b .L1101 -.L1080: - ldrh r3, [r2, r6, lsl #1] - mov r0, r8 - adds r3, r3, #1 - strh r3, [r2, r6, lsl #1] @ movhi - ldr r3, [r4, #2552] - adds r3, r3, #1 - str r3, [r4, #2552] - bl ftl_set_blk_mode.part.6 - b .L1083 -.L1086: - ldr r1, [r3, #-20] - ands r1, r1, r0 - str r1, [r3, #-20] - b .L1085 -.L1089: - mul r2, r1, r10 - ldr r0, [r4, #3804] - add ip, r0, r2 - ldr r2, [r0, r2] - adds r0, r2, #1 - bne .L1088 - ldr r0, [ip, #4] - adds r3, r3, #1 - str r1, [sp, #12] - str r2, [sp, #8] - ubfx r0, r0, #10, #16 + ldr r10, .L637+4 + ldr fp, .L637+8 + ldrh r3, [r5, #12] str r3, [sp, #4] - bl FtlBbmMapBadBlock - ldr r2, [sp, #8] - ldr r1, [sp, #12] - ldr r3, [sp, #4] - strh r2, [fp] @ movhi - ldrb r2, [r5, #7] @ zero_extendqisi2 - subs r2, r2, #1 - strb r2, [r5, #7] -.L1088: - add r10, r10, #1 - add fp, fp, #2 - b .L1087 -.L1091: - ldrh r3, [r4, #102] - strh r8, [r5] @ movhi - smulbb r3, r3, r2 - movs r2, #0 - strh r2, [r5, #2] @ movhi - strb r2, [r5, #6] - ldr r2, [r4, #2540] - uxth r3, r3 - strh r3, [r5, #4] @ movhi - str r2, [r5, #12] - adds r2, r2, #1 - str r2, [r4, #2540] - ldr r2, [r4, #2324] - ldrh r1, [r5] - strh r3, [r2, r1, lsl #1] @ movhi - ldrh r3, [r5, #4] - cbz r3, .L1092 - ldrb r3, [r5, #7] @ zero_extendqisi2 - cbnz r3, .L1093 -.L1092: - movw r2, #2743 - ldr r1, .L1102+20 - ldr r0, .L1102+4 - bl sftl_printk -.L1093: +.L611: + cmp r8, r9 + bne .L621 movs r0, #0 add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1103: - .align 2 -.L1102: - .word .LANCHOR0 - .word .LC1 - .word .LANCHOR0+2444 - .word .LANCHOR0+2340 - .word -1024 - .word .LANCHOR1+360 - .fnend - .size allocate_data_superblock, .-allocate_data_superblock - .align 1 - .global FtlGcFreeBadSuperBlk - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlGcFreeBadSuperBlk, %function -FtlGcFreeBadSuperBlk: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, r0 - ldr r4, .L1116 - ldrh r3, [r4, #3210] - cbz r3, .L1105 - movs r7, #0 - addw r10, r4, #3212 -.L1106: - ldrh r2, [r4, #32] - uxth r3, r7 - cmp r2, r3 - bhi .L1112 - bl FtlGcReFreshBadBlk -.L1105: - movs r0, #0 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1112: - uxtah r3, r4, r7 - mov r1, r8 - mov fp, #0 - ldrb r0, [r3, #60] @ zero_extendqisi2 - bl V2P_block - mov r9, r0 -.L1107: - ldrh r3, [r4, #3210] - uxth r5, fp - cmp r3, r5 - bhi .L1111 - adds r7, r7, #1 - b .L1106 -.L1111: - uxth r6, fp - add r3, r4, r6, lsl #1 - ldrh r3, [r3, #3212] - cmp r3, r9 - bne .L1108 - mov r1, r9 - ldr r0, .L1116+4 +.L621: + ldr r3, [r4, #8] + cbz r3, .L612 + ldr r3, [r4, #12] + cbnz r3, .L613 +.L612: + movs r2, #96 + mov r1, r10 + mov r0, fp bl sftl_printk - mov r0, r9 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldrh r1, [r4, #3210] - add r3, r10, r6, lsl #1 -.L1109: - cmp r5, r1 - bcc .L1110 - subs r1, r1, #1 - strh r1, [r4, #3210] @ movhi -.L1108: - add fp, fp, #1 - b .L1107 -.L1110: - ldrh r0, [r3, #2]! - adds r5, r5, #1 - uxth r5, r5 - strh r0, [r3, #-2] @ movhi - b .L1109 -.L1117: - .align 2 -.L1116: - .word .LANCHOR0 - .word .LC103 - .fnend - .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk - .align 1 - .global update_vpc_list - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type update_vpc_list, %function -update_vpc_list: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L1128 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - ldr r3, [r2, #2324] - ldrh r3, [r3, r0, lsl #1] - cmp r3, #0 - bne .L1119 - ldrh r1, [r2, #2588] - cmp r1, r0 - bne .L1120 - movw r3, #65535 - strh r3, [r2, #2588] @ movhi -.L1121: - mov r1, r5 - ldr r0, .L1128+4 - bl List_remove_node - ldrh r3, [r4, #2336] - cbnz r3, .L1123 - movw r2, #2813 - ldr r1, .L1128+8 - ldr r0, .L1128+12 - bl sftl_printk -.L1123: - ldrh r3, [r4, #2336] - mov r0, r5 - subs r3, r3, #1 - strh r3, [r4, #2336] @ movhi - bl free_data_superblock - mov r0, r5 - bl FtlGcFreeBadSuperBlk - ldrh r2, [r4, #2336] - ldrh r3, [r4, #2344] - add r3, r3, r2 - ldrh r2, [r4, #40] - cmp r3, r2 - ble .L1127 - mov r2, #2816 - ldr r1, .L1128+8 - ldr r0, .L1128+12 - bl sftl_printk -.L1127: - movs r3, #1 - b .L1118 -.L1120: - ldrh r1, [r2, #2348] - cmp r1, r0 - beq .L1118 - ldrh r1, [r2, #2396] - cmp r1, r0 - beq .L1118 - ldrh r2, [r2, #2444] - cmp r2, r0 - bne .L1121 -.L1118: - mov r0, r3 - pop {r3, r4, r5, pc} -.L1119: - bl List_update_data_list - movs r3, #0 - b .L1118 -.L1129: - .align 2 -.L1128: - .word .LANCHOR0 - .word .LANCHOR0+2320 - .word .LANCHOR1+385 - .word .LC1 - .fnend - .size update_vpc_list, .-update_vpc_list - .align 1 - .global decrement_vpc_count - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type decrement_vpc_count, %function -decrement_vpc_count: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - movw r3, #65535 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - cmp r0, r3 - mov r4, r0 - ldr r5, .L1142 - beq .L1131 - ldr r3, [r5, #2324] - ldrh r2, [r3, r0, lsl #1] - cmp r2, #0 - bne .L1132 - mov r1, r0 - ldr r0, .L1142+4 - bl sftl_printk - ldr r3, [r5, #2324] - ldrh r3, [r3, r4, lsl #1] - cbnz r3, .L1133 - movw r2, #2831 - ldr r1, .L1142+8 - ldr r0, .L1142+12 - bl sftl_printk -.L1133: - ldr r3, [r5, #2324] - movs r2, #16 - mov r1, r4 - ldr r0, .L1142+16 - strh r2, [r3, r4, lsl #1] @ movhi - bl test_node_in_list - cbz r0, .L1134 - mov r1, r4 - ldr r0, .L1142+16 - bl List_remove_node - ldrh r3, [r5, #2344] - cbnz r3, .L1135 - movw r2, #2835 - ldr r1, .L1142+8 - ldr r0, .L1142+12 - bl sftl_printk -.L1135: - ldrh r3, [r5, #2344] +.L613: + add r2, sp, #8 + add r1, sp, #12 mov r0, r4 - subs r3, r3, #1 - strh r3, [r5, #2344] @ movhi - bl INSERT_DATA_LIST - ldr r3, [r5, #2324] - mov r1, r4 - ldr r0, .L1142+20 - ldrh r2, [r3, r4, lsl #1] - bl sftl_printk -.L1134: - mov r0, r4 - bl FtlGcRefreshBlock -.L1138: - movs r6, #0 - b .L1130 -.L1132: - subs r2, r2, #1 - strh r2, [r3, r0, lsl #1] @ movhi -.L1131: - ldrh r0, [r5, #4000] - movw r3, #65535 - cmp r0, r3 - bne .L1137 - strh r4, [r5, #4000] @ movhi - b .L1138 -.L1137: - cmp r4, r0 - beq .L1138 - bl update_vpc_list - ldr r2, [r5, #2316] - adds r6, r0, #0 - ldr r3, [r5, #2320] + bl l2p_addr_tran + ldr r6, [r4, #8] + ldr r3, [r4, #12] + ldr r1, [sp, #12] + lsls r2, r6, #26 + ldrb r0, [sp, #8] @ zero_extendqisi2 it ne - movne r6, #1 - strh r4, [r5, #4000] @ movhi - subs r3, r3, r2 - asrs r2, r3, #1 - ldr r3, .L1142+24 - muls r3, r2, r3 - ldr r2, [r5, #2324] - uxth r1, r3 - ldrh r2, [r2, r1, lsl #1] - cbnz r2, .L1130 - cmp r4, r1 - beq .L1130 - movw r2, #2856 - ldr r1, .L1142+8 - ldr r0, .L1142+12 - bl sftl_printk -.L1130: - mov r0, r6 - pop {r4, r5, r6, pc} -.L1143: + ldrne r6, [r5, #3312] + ldr r7, [r5, #3256] + mov r2, r6 + blx r7 + str r0, [r4] + ldrh r3, [r5, #14] + cmp r3, #4 + bne .L616 + ldr r0, [sp, #4] + add r2, r6, #2048 + ldr r3, [r4, #12] + ldr r1, [sp, #12] + ldr r7, [r5, #3256] + adds r3, r3, #8 + add r1, r1, r0 + ldrb r0, [sp, #8] @ zero_extendqisi2 + blx r7 + adds r3, r0, #1 + beq .L617 + ldr r3, [r4, #12] + ldr r2, [r3, #12] + adds r2, r2, #1 + bne .L618 + ldr r2, [r3, #8] + adds r2, r2, #1 + bne .L618 + ldr r3, [r3] + adds r3, r3, #1 + beq .L618 +.L617: + mov r3, #-1 + str r3, [r4] +.L618: + ldr r3, [r4] + adds r3, r3, #1 + beq .L616 + cmp r0, #256 + it eq + streq r0, [r4] +.L616: + ldr r3, [r5, #3312] + cmp r6, r3 + bne .L620 + ldr r0, [r4, #8] + cmp r6, r0 + beq .L620 + ldrh r2, [r5, #58] + mov r1, r6 + lsls r2, r2, #9 + bl ftl_memcpy +.L620: + add r8, r8, #1 + adds r4, r4, #20 + b .L611 +.L638: .align 2 -.L1142: +.L637: .word .LANCHOR0 - .word .LC104 - .word .LANCHOR1+401 + .word .LANCHOR1+216 .word .LC1 - .word .LANCHOR0+2340 - .word .LC105 - .word -1431655765 .fnend - .size decrement_vpc_count, .-decrement_vpc_count + .size FlashReadPages, .-FlashReadPages .align 1 - .global FtlWriteDump_data + .global FtlLoadFactoryBbt .syntax unified .thumb .thumb_func .fpu softvfp - .type FtlWriteDump_data, %function -FtlWriteDump_data: + .type FtlLoadFactoryBbt, %function +FtlLoadFactoryBbt: .fnstart - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, lr} .save {r4, r5, r6, r7, r8, r9, r10, lr} - .pad #24 - sub sp, sp, #24 - ldr r4, .L1162 - ldrh r2, [r4, #2352] - cmp r2, #0 - beq .L1145 - ldrb r3, [r4, #2356] @ zero_extendqisi2 - cmp r3, #0 - bne .L1145 - ldrb r1, [r4, #2355] @ zero_extendqisi2 - ldrh r3, [r4, #102] - muls r3, r1, r3 - cmp r2, r3 - beq .L1145 - ldrb r7, [r4, #2358] @ zero_extendqisi2 - cbnz r7, .L1144 - ldr r6, [r4, #2504] - mov r2, r7 - mov r1, sp - ldrh r8, [r4, #32] - subs r6, r6, #1 - mov r0, r6 - bl log2phys - ldr r3, [sp] - ldr r5, [r4, #3288] - ldr r0, [r4, #3284] - str r3, [sp, #8] - adds r3, r3, #1 - str r6, [sp, #20] - str r0, [sp, #12] - str r5, [sp, #16] - str r7, [r5, #4] - beq .L1147 - mov r2, r7 - movs r1, #1 - add r0, sp, #4 - bl FlashReadPages -.L1148: - ldr r9, .L1162+4 - movs r7, #0 - lsl r8, r8, #2 - mov r10, r7 - movw r3, #61589 - strh r3, [r5] @ movhi -.L1149: - cmp r8, r7 - bne .L1153 -.L1150: - movs r3, #1 -.L1161: - strb r3, [r4, #2358] -.L1144: - add sp, sp, #24 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L1147: - ldrh r2, [r4, #110] - movs r1, #255 - bl ftl_memset - b .L1148 -.L1153: - ldrh r3, [r4, #2352] - cmp r3, #0 - beq .L1150 - ldr r3, [sp, #8] - mov r0, r9 - str r6, [r5, #8] - adds r7, r7, #1 - str r3, [r5, #12] - ldrh r3, [r4, #2348] - strh r3, [r5, #2] @ movhi - bl get_new_active_ppa - ldr r3, [r4, #2544] - movs r1, #1 - str r0, [sp, #8] - add r0, sp, #4 - str r3, [r5, #4] - adds r3, r3, #1 - adds r2, r3, #1 - it eq - moveq r3, r10 - str r3, [r4, #2544] - movs r3, #0 - mov r2, r3 - bl FlashProgPages - ldrh r0, [r4, #2348] - bl decrement_vpc_count - b .L1149 -.L1145: - movs r3, #0 - b .L1161 -.L1163: - .align 2 -.L1162: - .word .LANCHOR0 - .word .LANCHOR0+2348 - .fnend - .size FtlWriteDump_data, .-FtlWriteDump_data - .align 1 - .global l2p_flush - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type l2p_flush, %function -l2p_flush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movs r4, #0 - ldr r5, .L1168 - movs r6, #12 - bl FtlWriteDump_data -.L1165: - ldrh r3, [r5, #138] - uxth r0, r4 - cmp r3, r0 - bhi .L1167 + movs r6, #0 + ldr r4, .L649 + movw r10, #61664 + ldr r3, [r4, #3292] + add r7, r4, #162 + ldr r8, [r4, #3324] + addw r9, r4, #3444 + str r3, [r4, #3452] + str r8, [r4, #3456] +.L640: + ldrh r3, [r4, #54] + cmp r6, r3 + bcc .L645 movs r0, #0 - pop {r4, r5, r6, pc} -.L1167: - ldr r2, [r5, #2492] - uxth r3, r4 - mla r3, r6, r3, r2 - ldr r3, [r3, #4] - cmp r3, #0 - bge .L1166 - bl flush_l2p_region -.L1166: - adds r4, r4, #1 - b .L1165 -.L1169: + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L645: + ldrh r5, [r4, #98] + movw r3, #65535 + strh r3, [r7, #2]! @ movhi +.L642: + ldrh r3, [r4, #98] + subs r5, r5, #1 + uxth r5, r5 + sub r2, r3, #16 + cmp r5, r2 + ble .L643 + mla r3, r6, r3, r5 + movs r2, #1 + mov r1, r2 + mov r0, r9 + lsls r3, r3, #10 + str r3, [r4, #3448] + bl FlashReadPages + ldr r3, [r4, #3444] + adds r3, r3, #1 + beq .L642 + ldrh r3, [r8] + cmp r3, r10 + bne .L642 + strh r5, [r7] @ movhi +.L643: + adds r6, r6, #1 + b .L640 +.L650: .align 2 -.L1168: +.L649: .word .LANCHOR0 .fnend - .size l2p_flush, .-l2p_flush + .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt .align 1 - .global FtlRecoverySuperblock + .global FtlGetLastWrittenPage .syntax unified .thumb .thumb_func .fpu softvfp - .type FtlRecoverySuperblock, %function -FtlRecoverySuperblock: + .type FtlGetLastWrittenPage, %function +FtlGetLastWrittenPage: .fnstart - @ args = 0, pretend = 0, frame = 48 + @ args = 0, pretend = 0, frame = 88 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L662 + cmp r1, #1 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + lsl r6, r0, #10 + .pad #88 + sub sp, sp, #88 + mov r2, r1 + mov r7, r1 + it eq + ldrheq r5, [r3, #104] + mov r1, #1 + it ne + ldrhne r5, [r3, #102] + add r0, sp, #4 + ldr r3, [r3, #3316] + subs r5, r5, #1 + sxth r5, r5 + str r3, [sp, #12] + add r3, sp, #24 + str r3, [sp, #16] + orr r3, r5, r6 + str r3, [sp, #8] + bl FlashReadPages + ldr r3, [sp, #24] + adds r3, r3, #1 + bne .L654 + mov r8, #0 +.L655: + cmp r8, r5 + ble .L658 +.L654: + mov r0, r5 + add sp, sp, #88 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L658: + add r3, r8, r5 + mov r2, r7 + add r3, r3, r3, lsr #31 + movs r1, #1 + add r0, sp, #4 + asrs r4, r3, #1 + sxth r3, r4 + orrs r3, r3, r6 + str r3, [sp, #8] + bl FlashReadPages + ldr r3, [sp, #24] + adds r3, r3, #1 + bne .L656 + ldr r3, [sp, #28] + adds r3, r3, #1 + bne .L656 + ldr r3, [sp, #4] + adds r3, r3, #1 + beq .L656 + subs r4, r4, #1 + sxth r5, r4 + b .L655 +.L656: + adds r4, r4, #1 + sxth r8, r4 + b .L655 +.L663: + .align 2 +.L662: + .word .LANCHOR0 + .fnend + .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage + .align 1 + .global FtlScanSysBlk + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlScanSysBlk, %function +FtlScanSysBlk: + .fnstart + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movw r2, #65535 - ldrh r3, [r0] - .pad #52 - sub sp, sp, #52 - mov fp, r0 - cmp r3, r2 - beq .L1295 - ldrh r3, [r0, #2] - ldr r4, .L1302 + movs r5, #0 + ldr r4, .L746 + mov r1, r5 + .pad #20 + sub sp, sp, #20 + ldr r2, [r4, #128] + ldr r0, [r4, #3372] + strh r5, [r4, #3428] @ movhi + strh r5, [r4, #144] @ movhi + lsls r2, r2, #2 + bl ftl_memset + ldr r2, [r4, #128] + mov r1, r5 + ldr r0, [r4, #3348] + lsls r2, r2, #1 + bl ftl_memset + ldrh r2, [r4, #120] + mov r1, r5 + ldr r0, [r4, #3360] + lsls r2, r2, #2 + bl ftl_memset + ldrh r2, [r4, #120] + mov r1, r5 + ldr r0, [r4, #148] + lsls r2, r2, #1 + bl ftl_memset + ldrh r8, [r4, #40] + mov r3, #-1 + str r3, [r4, #2576] + str r3, [r4, #2580] + str r3, [r4, #2584] +.L665: + ldrh r3, [r4, #42] + cmp r3, r8 + bls .L707 + movs r5, #0 + ldrh fp, [r4, #32] + ldr r9, [r4, #3280] + mov r7, r5 + ldr r3, [r4, #3172] + mov r10, #20 + ldr r2, [r4, #3176] + ldrh r6, [r4, #112] + b .L708 +.L668: str r3, [sp, #8] - ldrb r3, [r0, #6] @ zero_extendqisi2 - ldr r1, [sp, #8] - str r3, [sp, #24] - ldrh r3, [r4, #102] - cmp r3, r1 - mov r3, #0 - bne .L1173 - strh r3, [r0, #4] @ movhi -.L1300: - strb r3, [fp, #6] -.L1295: + mov r1, r8 + ldr r3, .L746+4 + str r2, [sp, #12] + ldrb r0, [r3, r5] @ zero_extendqisi2 + bl V2P_block + str r0, [sp, #4] + bl FtlBbmIsBadBlock + ldr r3, [sp, #8] + ldr r2, [sp, #12] + cbnz r0, .L666 + ldr r1, [sp, #4] + mla r0, r10, r7, r9 + lsls r1, r1, #10 + str r3, [r0, #8] + str r1, [r0, #4] + mov r1, r6 + muls r1, r7, r1 + add r7, r7, #1 + it mi + addmi r1, r1, #3 + uxth r7, r7 + bic r1, r1, #3 + add r1, r1, r2 + str r1, [r0, #12] +.L666: + adds r5, r5, #1 +.L708: + uxth r1, r5 + cmp fp, r1 + bhi .L668 + cbnz r7, .L669 +.L706: + add r8, r8, #1 + uxth r8, r8 + b .L665 +.L669: + mov r0, r9 + mov r9, #0 + movs r2, #1 + mov r1, r7 + bl FlashReadPages +.L670: + uxth r3, r9 + cmp r7, r3 + bls .L706 + movs r3, #20 + mul r10, r3, r9 + ldr r3, [r4, #3280] + add r2, r3, r10 + ldr r3, [r3, r10] + ldr r5, [r2, #4] + ldr r6, [r2, #12] + adds r3, r3, #1 + ubfx r5, r5, #10, #16 + bne .L673 + mov fp, #16 + movw r3, #65535 +.L675: + ldr r0, [r4, #3280] + str r3, [sp, #4] + add r0, r0, r10 + ldr r2, [r0, #4] + adds r2, r2, #1 + str r2, [r0, #4] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldrh r2, [r6] + ldr r3, [sp, #4] + cmp r2, r3 + bne .L672 + ldr r3, [r4, #3280] + mov r2, #-1 + str r2, [r3, r10] + ldr r3, [r4, #3280] + ldr r3, [r3, r10] + cmp r3, r2 + bne .L673 +.L674: + movs r1, #1 + b .L745 +.L672: + ldr r2, [r4, #3280] + ldr r2, [r2, r10] + adds r2, r2, #1 + bne .L673 + add fp, fp, #-1 + uxth fp, fp + cmp fp, #0 + bne .L675 + b .L674 +.L673: + ldr r2, [r4, #2540] + ldr r3, [r6, #4] + adds r1, r2, #1 + beq .L676 + cmp r2, r3 + bhi .L677 +.L676: + adds r2, r3, #1 + itt ne + addne r2, r3, #1 + strne r2, [r4, #2540] +.L677: + ldrh r2, [r6] + movw r1, #61604 + cmp r2, r1 + beq .L679 + bhi .L680 + movw r3, #61574 + cmp r2, r3 + beq .L681 +.L678: + add r9, r9, #1 + b .L670 +.L680: + movw r3, #61634 + cmp r2, r3 + beq .L682 + movw r3, #65535 + cmp r2, r3 + bne .L678 + movs r1, #0 +.L745: + mov r0, r5 + bl FtlFreeSysBlkQueueIn + b .L678 +.L682: + ldrh r2, [r4, #3428] + ldr r3, [r4, #128] + cmp r2, r3 + bls .L684 + movw r2, #1222 + ldr r1, .L746+8 + ldr r0, .L746+12 + bl sftl_printk +.L684: + ldr r1, [r4, #128] + ldrh r0, [r4, #3428] + ldr r10, [r4, #3372] + uxth ip, r1 + add r3, ip, #-1 + sub ip, ip, r0 + add ip, ip, #-1 + sxth r3, r3 + sxth ip, ip +.L685: + cmp r3, ip + bgt .L691 + cmp r3, #0 + bge .L723 + b .L678 +.L691: + ldr r2, [r6, #4] + lsl fp, r3, #2 + mov lr, r2 + ldr r2, [r10, r3, lsl #2] + cmp lr, r2 + bls .L686 + ldr r2, [r10] + cbnz r2, .L687 + cmp r1, r0 + itt ne + addne r0, r0, #1 + strhne r0, [r4, #3428] @ movhi +.L687: + uxth ip, r3 + movs r2, #0 +.L688: + uxth r0, r2 + sxth r1, r2 + cmp ip, r0 + bhi .L689 + ldr r2, [r4, #3372] + cmp r3, #0 + ldr r1, [r6, #4] + str r1, [r2, fp] + ldr r2, [r4, #3348] + strh r5, [r2, r3, lsl #1] @ movhi + blt .L678 + ldrh r0, [r4, #3428] + ldr r2, [r4, #128] + subs r2, r2, r0 + subs r2, r2, #1 + sxth r2, r2 + cmp r3, r2 + bgt .L678 +.L723: + ldr r2, [r4, #3372] + adds r0, r0, #1 + ldr r1, [r6, #4] + strh r0, [r4, #3428] @ movhi + str r1, [r2, r3, lsl #2] + ldr r2, [r4, #3348] +.L743: + strh r5, [r2, r3, lsl #1] @ movhi + b .L678 +.L689: + ldr r0, [r4, #3372] + adds r2, r2, #1 + add lr, r0, r1, lsl #2 + ldr lr, [lr, #4] + str lr, [r0, r1, lsl #2] + ldr r0, [r4, #3348] + add lr, r0, r1, lsl #1 + ldrh lr, [lr, #2] + strh lr, [r0, r1, lsl #1] @ movhi + b .L688 +.L686: + subs r3, r3, #1 + sxth r3, r3 + b .L685 +.L747: + .align 2 +.L746: + .word .LANCHOR0 + .word .LANCHOR0+60 + .word .LANCHOR1+231 + .word .LC1 +.L681: + ldrh r2, [r4, #144] + ldrh r3, [r4, #120] + cmp r2, r3 + bls .L694 + movw r2, #1263 + ldr r1, .L748 + ldr r0, .L748+4 + bl sftl_printk +.L694: + ldrh lr, [r4, #120] + ldrh r0, [r4, #144] + ldr r10, [r4, #3360] + add ip, lr, #-1 + sxth r3, ip + sub ip, ip, r0 +.L695: + cmp r3, ip + ble .L700 + ldr r2, [r6, #4] + lsl fp, r3, #2 + ldr r1, [r10, r3, lsl #2] + cmp r2, r1 + bls .L696 + ldr r2, [r10] + cbnz r2, .L697 + cmp lr, r0 + itt ne + addne r0, r0, #1 + strhne r0, [r4, #144] @ movhi +.L697: + uxth ip, r3 + movs r2, #0 +.L698: + uxth r0, r2 + sxth r1, r2 + cmp ip, r0 + bhi .L699 + ldr r2, [r4, #3360] + ldr r1, [r6, #4] + str r1, [r2, fp] + ldr r2, [r4, #148] + strh r5, [r2, r3, lsl #1] @ movhi +.L700: + cmp r3, #0 + blt .L678 + ldrh r2, [r4, #120] + ldrh r1, [r4, #144] + subs r2, r2, #1 + subs r2, r2, r1 + sxth r2, r2 + cmp r3, r2 + bgt .L678 + adds r1, r1, #1 + ldr r2, [r4, #3360] + strh r1, [r4, #144] @ movhi + ldr r1, [r6, #4] + str r1, [r2, r3, lsl #2] + ldr r2, [r4, #148] + b .L743 +.L699: + ldr r0, [r4, #3360] + adds r2, r2, #1 + add lr, r0, r1, lsl #2 + ldr lr, [lr, #4] + str lr, [r0, r1, lsl #2] + ldr r0, [r4, #148] + add lr, r0, r1, lsl #1 + ldrh lr, [lr, #2] + strh lr, [r0, r1, lsl #1] @ movhi + b .L698 +.L696: + subs r3, r3, #1 + sxth r3, r3 + b .L695 +.L679: + ldrh r1, [r4, #2576] + movw r2, #65535 + cmp r1, r2 + bne .L702 + strh r5, [r4, #2576] @ movhi +.L744: + str r3, [r4, #2584] + b .L678 +.L702: + ldrh r0, [r4, #2580] + cmp r0, r2 + beq .L703 + movs r1, #1 + bl FtlFreeSysBlkQueueIn +.L703: + ldr r2, [r4, #2584] + ldr r3, [r6, #4] + cmp r2, r3 + bcs .L704 + ldrh r3, [r4, #2576] + strh r5, [r4, #2576] @ movhi + strh r3, [r4, #2580] @ movhi + ldr r3, [r6, #4] + b .L744 +.L704: + strh r5, [r4, #2580] @ movhi + b .L678 +.L707: + ldr r1, [r4, #3348] + ldrh r3, [r1] + cbz r3, .L709 +.L712: + ldr r1, [r4, #148] + ldrh r2, [r1] + cmp r2, #0 + beq .L710 +.L711: + ldrh r2, [r4, #3428] + ldr r3, [r4, #128] + cmp r2, r3 + bls .L742 + movw r2, #1388 + ldr r1, .L748 + ldr r0, .L748+4 + bl sftl_printk +.L742: movs r0, #0 - add sp, sp, #52 + add sp, sp, #20 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1173: - ldrh r0, [r0, #16] -.L1174: - cmp r0, r2 - uxth r5, r3 - add r3, r3, #1 - beq .L1175 - movs r1, #1 - bl FtlGetLastWrittenPage - adds r7, r0, #1 - mov r6, r0 - beq .L1176 - ldr r3, [r4, #3172] - movs r2, #0 - ldrh lr, [r4, #32] - movw r9, #65535 - ldr r0, [r4, #3836] - mov r10, #20 - str r3, [sp, #4] - ldrh r3, [r4, #110] - ldr r8, [r4, #3176] - ldrh r7, [r4, #112] - mov r4, r2 - str r3, [sp, #12] - add r3, fp, #16 - mov ip, r3 - str r3, [sp, #20] -.L1177: - uxth r3, r2 - cmp lr, r3 - bhi .L1183 - ldr r5, .L1302 - movs r2, #0 - mov r1, r4 - movw r9, #65535 - bl FlashReadPages - ldr r3, [r5, #2544] - uxth r2, r6 - ldr r8, [r5, #3836] - str r2, [sp, #12] - subs r3, r3, #1 - str r3, [sp, #4] - mov r7, r8 - movs r3, #0 -.L1184: - uxth r2, r3 - cmp r4, r2 - bhi .L1189 - bne .L1187 - adds r3, r6, #1 - uxth r3, r3 - str r3, [sp, #16] -.L1296: - ldr r0, [r8, #4] - ubfx r0, r0, #10, #16 - bl P2V_plane - ldrh r3, [r5, #102] - ldr r2, [sp, #16] - str r0, [sp, #12] - cmp r3, r2 - bne .L1191 - ldrh r3, [sp, #16] - strh r3, [fp, #2] @ movhi - movs r3, #0 - strb r3, [fp, #6] - strh r3, [fp, #4] @ movhi -.L1191: - ldr r3, [sp, #16] - ldr r2, [sp, #8] - cmp r3, r2 - bne .L1192 - ldr r3, [sp, #12] - ldr r2, [sp, #24] - cmp r3, r2 - bne .L1192 - ldr r1, [sp, #16] - mov r2, r3 -.L1301: - mov r0, fp - bl ftl_sb_update_avl_pages - b .L1295 -.L1175: - uxth r1, r3 - adds r1, r1, #8 - ldrh r0, [fp, r1, lsl #1] - b .L1174 -.L1176: - ldr r3, [sp, #8] - cbz r3, .L1178 - movw r2, #1804 - ldr r1, .L1302+4 - ldr r0, .L1302+8 - bl sftl_printk -.L1178: - ldr r3, [sp, #24] - cbz r3, .L1179 - cmp r5, r3 - beq .L1179 - movw r2, #1805 - ldr r1, .L1302+4 - ldr r0, .L1302+8 - bl sftl_printk -.L1179: - movs r3, #0 - strh r3, [fp, #2] @ movhi - b .L1300 -.L1183: - ldrh r3, [ip], #2 - cmp r3, r9 - beq .L1180 - mla r1, r10, r4, r0 - orr r3, r6, r3, lsl #10 - str r3, [r1, #4] - ldr r3, [sp, #12] - muls r3, r4, r3 - it mi - addmi r3, r3, #3 - bic r3, r3, #3 - mov r5, r3 - ldr r3, [sp, #4] - add r5, r5, r3 - mov r3, r7 - muls r3, r4, r3 - add r4, r4, #1 - it mi - addmi r3, r3, #3 - uxth r4, r4 - bic r3, r3, #3 - str r5, [r1, #8] - add r3, r3, r8 - str r3, [r1, #12] -.L1180: - adds r2, r2, #1 - b .L1177 -.L1189: - ldr r2, [r7] - cbnz r2, .L1185 - ldr r10, [r7, #12] - ldr r2, [r10, #4] - adds r0, r2, #1 - beq .L1186 - ldr r1, [r5, #2544] - mov r0, r2 - bl ftl_cmp_data_ver - cbz r0, .L1186 - adds r2, r2, #1 - str r2, [r5, #2544] -.L1186: - ldr r2, [r10] - adds r2, r2, #1 - bne .L1188 -.L1187: - uxth r2, r6 - uxth r3, r3 - str r2, [sp, #16] - movs r2, #20 - mla r8, r2, r3, r8 - b .L1296 -.L1185: - ldr r9, [sp, #12] -.L1188: +.L709: + ldrh r2, [r4, #3428] + cmp r2, #0 + beq .L712 + ldr r0, [r4, #128] +.L713: + sxth r2, r3 + cmp r2, r0 + bcs .L712 + ldrh r5, [r1, r2, lsl #1] adds r3, r3, #1 - adds r7, r7, #20 - b .L1184 -.L1192: - movw r3, #65535 - cmp r9, r3 - bne .L1193 - ldrb r3, [fp, #8] @ zero_extendqisi2 - cmp r3, #0 - bne .L1194 -.L1193: - ldr r3, [r5, #4012] - uxth r8, r6 - uxth r6, r6 - ldr r7, .L1302 - movw r9, #65535 - adds r3, r3, #1 - itt eq - ldreq r3, [sp, #4] - streq r3, [r5, #4012] - ldr r3, [sp, #8] - adds r3, r3, #7 - cmp r6, r3 - itet gt - subgt r4, r8, #7 - ldrle r4, [sp, #8] - uxthgt r4, r4 -.L1197: - cmp r4, r8 - bhi .L1204 - movs r3, #0 - ldrh lr, [r7, #32] - ldr r0, [r7, #3836] - mov r6, r3 - ldr r1, [sp, #20] - mov ip, #20 - b .L1205 -.L1199: - ldrh r2, [r1], #2 - cmp r2, r9 - beq .L1198 - mla r10, ip, r6, r0 - adds r6, r6, #1 - orr r2, r4, r2, lsl #10 - uxth r6, r6 - str r2, [r10, #4] -.L1198: - adds r3, r3, #1 -.L1205: - uxth r2, r3 - cmp r2, lr - bcc .L1199 - movs r2, #0 - mov r1, r6 - bl FlashReadPages - ldr r3, [r7, #3836] - movs r2, #20 - mla r6, r2, r6, r3 -.L1200: - cmp r6, r3 - bne .L1203 - adds r4, r4, #1 - uxth r4, r4 - b .L1197 -.L1203: - ldr r2, [r3] - cbnz r2, .L1194 - ldr r2, [r3, #12] - ldrh r1, [r2] - cmp r1, r9 - beq .L1202 - ldr r2, [r2, #4] - adds r1, r2, #1 - it ne - strne r2, [r7, #4012] -.L1202: - adds r3, r3, #20 - b .L1200 -.L1204: - mov r3, #-1 - str r3, [r7, #4012] -.L1194: - movs r3, #1 - ldr r0, .L1302+12 - strh r3, [r5, #4016] @ movhi - ldr r4, .L1302 - bl FtlMapBlkWriteDump_data - ldr r5, [sp, #8] -.L1206: - ldrh r6, [r4, #32] - movs r3, #0 - ldr r0, [r4, #3836] - mov r10, r3 - ldr r1, [sp, #20] - movw r7, #65535 - mov ip, #20 -.L1207: - uxth r2, r3 - cmp r6, r2 - bhi .L1209 - movs r2, #0 - mov r1, r10 - bl FlashReadPages - movs r3, #0 -.L1299: - str r3, [sp, #28] - ldrh r3, [sp, #28] - cmp r10, r3 - bhi .L1239 - adds r5, r5, #1 - ldrh r3, [r4, #102] - uxth r5, r5 - cmp r3, r5 - bne .L1206 - ldrh r2, [r4, #32] - movw r0, #65535 - movs r3, #0 - strh r5, [fp, #2] @ movhi - strh r3, [fp, #4] @ movhi -.L1240: - uxth r1, r3 - cmp r1, r2 - bcs .L1295 - ldr r1, [sp, #20] - ldrh r4, [r1], #2 - cmp r4, r0 - str r1, [sp, #20] - add r1, r3, #1 - bne .L1300 - mov r3, r1 - b .L1240 -.L1209: - ldrh r2, [r1], #2 - cmp r2, r7 - beq .L1208 - mla lr, ip, r10, r0 - add r10, r10, #1 - orr r2, r5, r2, lsl #10 - uxth r10, r10 - str r2, [lr, #4] -.L1208: - adds r3, r3, #1 - b .L1207 -.L1303: - .align 2 -.L1302: - .word .LANCHOR0 - .word .LANCHOR1+421 - .word .LC1 - .word .LANCHOR0+3908 -.L1239: - ldr r3, [sp, #28] - movs r7, #20 - ldr r9, [r4, #3836] - muls r7, r3, r7 - add r8, r9, r7 - ldr r6, [r8, #4] - ubfx r0, r6, #10, #16 - str r6, [sp, #44] - bl P2V_plane - ldr r3, [sp, #8] - cmp r5, r3 - bcc .L1211 - bne .L1212 - ldr r3, [sp, #24] - cmp r3, r0 - bhi .L1211 -.L1212: - ldr r3, [sp, #16] - cmp r5, r3 - bne .L1213 - ldr r3, [sp, #12] - cmp r3, r0 - beq .L1214 -.L1213: - ldr r3, [r9, r7] - adds r3, r3, #1 - beq .L1215 - ldr r8, [r8, #12] - movw r3, #61589 - ldrh r2, [r8] - cmp r2, r3 - beq .L1216 -.L1223: - ldrh r0, [fp] -.L1298: - bl decrement_vpc_count -.L1211: - ldr r3, [sp, #28] - adds r3, r3, #1 - b .L1299 -.L1216: - ldr r3, [r8, #4] - adds r6, r3, #1 - str r3, [sp, #4] - beq .L1217 - ldr r1, [r4, #2544] - mov r0, r3 - bl ftl_cmp_data_ver - cbz r0, .L1217 - ldr r3, [sp, #4] - adds r3, r3, #1 - str r3, [r4, #2544] -.L1217: - ldrh r2, [r8] - movw r3, #61589 - cmp r2, r3 - beq .L1218 - movw r2, #1954 - ldr r1, .L1304 - ldr r0, .L1304+4 - bl sftl_printk -.L1218: - ldr r6, [r8, #8] - add r1, sp, #40 - ldr r3, [r8, #12] - movs r2, #0 - mov r0, r6 - str r3, [sp, #36] - bl log2phys - ldr r1, [r4, #4012] - adds r0, r1, #1 - beq .L1219 - ldr r0, [sp, #4] - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1219 - ldr r3, [sp, #36] - adds r2, r3, #1 - beq .L1220 - ldr r0, [r4, #3836] - movs r2, #0 - movs r1, #1 - add r0, r0, r7 - str r3, [r0, #4] - ldr r8, [r0, #12] - bl FlashReadPages - ldr r2, [r4, #3836] - ldr r1, [r2, r7] - adds r3, r2, r7 - adds r1, r1, #1 - bne .L1221 -.L1222: - mov r3, #-1 - ldrh r0, [fp] - str r3, [sp, #36] - bl decrement_vpc_count -.L1230: - ldr r0, [sp, #36] - adds r1, r0, #1 - beq .L1211 -.L1243: - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r4, #40] - mov r6, r0 - cmp r3, r0 - bhi .L1235 - movw r2, #2055 - ldr r1, .L1304 - ldr r0, .L1304+4 - bl sftl_printk -.L1235: - ldr r3, [r4, #2324] - ldrh r3, [r3, r6, lsl #1] - cmp r3, #0 - beq .L1236 - mov r0, r6 - b .L1298 -.L1220: - ldr r3, [sp, #44] - ldr r2, [sp, #40] - cmp r2, r3 - bne .L1223 - movs r2, #1 - add r1, sp, #36 - mov r0, r6 - bl log2phys - b .L1223 -.L1221: - ldr r1, [r8, #8] - cmp r6, r1 - bne .L1222 - ldr r9, [r8, #4] - ldr r0, [r4, #4012] - mov r1, r9 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1222 - ldr r1, [sp, #40] - ldr r0, [sp, #44] - cmp r1, r0 - bne .L1225 -.L1228: - ldr r1, [sp, #36] - mov r0, r6 - bl FtlReUsePrevPpa - b .L1222 -.L1225: - ldr r0, [sp, #36] - cmp r1, r0 - beq .L1222 - adds r0, r1, #1 - beq .L1226 - str r1, [r3, #4] - movs r2, #0 - movs r1, #1 - mov r0, r3 - ldr r8, [r3, #12] - bl FlashReadPages -.L1227: - ldr r3, [r4, #3836] - ldr r3, [r3, r7] - adds r3, r3, #1 - beq .L1228 - ldr r3, [r8, #4] - ldr r0, [r4, #4012] - mov r1, r3 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1228 - mov r1, r3 - mov r0, r9 - bl ftl_cmp_data_ver - cmp r0, #0 - beq .L1222 - b .L1228 -.L1226: - str r1, [r2, r7] - b .L1227 -.L1219: - ldr r3, [sp, #44] - ldr r2, [sp, #40] - cmp r2, r3 - beq .L1230 - movs r2, #1 - add r1, sp, #44 - mov r0, r6 - bl log2phys - ldr r8, [sp, #40] - cmp r8, #-1 - beq .L1230 - ldr r3, [sp, #36] - cmp r8, r3 - beq .L1233 - ubfx r0, r8, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r4, #2348] - cmp r3, r0 - beq .L1234 - ldrh r3, [r4, #2396] - cmp r3, r0 - beq .L1234 - ldrh r3, [r4, #2444] - cmp r3, r0 - bne .L1230 -.L1234: - ldr r0, [r4, #3836] - movs r2, #0 - movs r1, #1 - str r8, [r0, #4] - ldr r7, [r0, #12] - bl FlashReadPages - ldr r3, [r4, #3836] - ldr r3, [r3] - adds r3, r3, #1 - beq .L1230 - ldr r1, [r7, #4] - ldr r0, [sp, #4] - bl ftl_cmp_data_ver - cmp r0, #0 - bne .L1230 - movs r2, #1 - add r1, sp, #40 - mov r0, r6 - bl log2phys - b .L1230 -.L1236: - mov r1, r6 - ldr r0, .L1304+8 - bl sftl_printk - b .L1211 -.L1215: - ldr r3, [r4, #4020] - cmp r3, #31 - itttt ls - addls r2, r4, r3, lsl #2 - addls r3, r3, #1 - strls r3, [r4, #4020] - strls r6, [r2, #4024] - ldrh r0, [fp] - bl decrement_vpc_count - ldr r3, [r4, #4012] - adds r2, r3, #1 - bne .L1238 - ldr r3, [sp, #4] -.L1297: - str r3, [r4, #4012] - b .L1211 -.L1238: - ldr r2, [sp, #4] - cmp r2, r3 - bcs .L1211 + cmp r5, #0 + beq .L713 mov r3, r2 - b .L1297 -.L1214: - ldrb r3, [sp, #12] @ zero_extendqisi2 - mov r1, r5 - strh r5, [fp, #2] @ movhi - ldr r2, [sp, #12] - strb r3, [fp, #6] - b .L1301 -.L1233: - mov r0, r8 - b .L1243 -.L1305: - .align 2 -.L1304: - .word .LANCHOR1+421 - .word .LC1 - .word .LC106 - .fnend - .size FtlRecoverySuperblock, .-FtlRecoverySuperblock - .align 1 - .global FtlSuperblockPowerLostFix - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlSuperblockPowerLostFix, %function -FtlSuperblockPowerLostFix: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - .pad #24 - sub sp, sp, #24 - ldr r4, .L1317 - mov r3, #-1 - mov r8, #0 - movw r1, #61589 - str r3, [sp, #20] - mov r5, r0 - ldr r2, [r4, #3284] - movs r7, #7 - ldr r6, [r4, #3288] - str r2, [sp, #12] - mvn r2, #2 - str r6, [sp, #16] - str r2, [r6, #8] - mvn r2, #1 - str r2, [r6, #12] - ldrh r2, [r0] - strh r8, [r6] @ movhi - strh r2, [r6, #2] @ movhi - ldr r2, [r4, #3284] - str r1, [r2] - add r1, r1, #304087040 - ldr r2, [r4, #3284] - add r1, r1, #1269760 - addw r1, r1, #1507 - str r1, [r2, #4] -.L1307: - subs r7, r7, #1 - beq .L1309 - ldrh r3, [r5, #4] - cbnz r3, .L1308 -.L1309: - ldr r2, [r4, #2324] - ldrh r1, [r5] - ldrh r0, [r5, #4] - ldrh r3, [r2, r1, lsl #1] - subs r3, r3, r0 - strh r3, [r2, r1, lsl #1] @ movhi - ldrh r3, [r4, #102] - strh r3, [r5, #2] @ movhi - movs r3, #0 - strb r3, [r5, #6] - strh r3, [r5, #4] @ movhi - add sp, sp, #24 - @ sp needed - pop {r4, r5, r6, r7, r8, pc} -.L1308: - mov r0, r5 - bl get_new_active_ppa - str r0, [sp, #8] - adds r0, r0, #1 - beq .L1309 - ldr r3, [r4, #2544] - movs r1, #1 - add r0, sp, #4 - str r3, [r6, #4] + movs r5, #0 +.L714: + ldr r1, [r4, #128] + cmp r3, r1 + bcs .L712 + ldr r1, [r4, #3348] + subs r0, r3, r2 + ldrh r6, [r1, r3, lsl #1] + strh r6, [r1, r0, lsl #1] @ movhi + ldr r1, [r4, #3372] + ldr r6, [r1, r3, lsl #2] + str r6, [r1, r0, lsl #2] + ldr r1, [r4, #3348] + strh r5, [r1, r3, lsl #1] @ movhi adds r3, r3, #1 - adds r2, r3, #1 - it eq - moveq r3, r8 - str r3, [r4, #2544] - movs r3, #0 - mov r2, r3 - bl FlashProgPages - ldrh r0, [r5] - bl decrement_vpc_count - b .L1307 -.L1318: + sxth r3, r3 + b .L714 +.L710: + ldrh r3, [r4, #144] + cmp r3, #0 + beq .L711 + ldrh r0, [r4, #120] +.L719: + sxth r3, r2 + cmp r3, r0 + mov r5, r3 + bge .L711 + ldrh r6, [r1, r3, lsl #1] + adds r2, r2, #1 + cmp r6, #0 + beq .L719 + movs r0, #0 +.L720: + ldrh r2, [r4, #120] + cmp r3, r2 + bge .L711 + ldr r2, [r4, #148] + subs r1, r3, r5 + ldrh r6, [r2, r3, lsl #1] + strh r6, [r2, r1, lsl #1] @ movhi + ldr r2, [r4, #3360] + ldr r6, [r2, r3, lsl #2] + str r6, [r2, r1, lsl #2] + ldr r2, [r4, #148] + strh r0, [r2, r3, lsl #1] @ movhi + adds r3, r3, #1 + sxth r3, r3 + b .L720 +.L749: .align 2 -.L1317: - .word .LANCHOR0 +.L748: + .word .LANCHOR1+231 + .word .LC1 .fnend - .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix + .size FtlScanSysBlk, .-FtlScanSysBlk .align 1 .global FtlLoadBbt .syntax unified @@ -8941,81 +5330,81 @@ FtlLoadBbt: push {r4, r5, r6, r7, r8, lr} .save {r4, r5, r6, r7, r8, lr} movw r8, #61649 - ldr r4, .L1348 - ldr r3, [r4, #3284] - add r7, r4, #3264 - ldr r6, [r4, #3288] - str r3, [r4, #3272] - str r6, [r4, #3276] + ldr r4, .L779 + ldr r3, [r4, #3292] + addw r7, r4, #3444 + ldr r6, [r4, #3324] + str r3, [r4, #3452] + str r6, [r4, #3456] bl FtlBbtMemInit ldrh r5, [r4, #98] subs r5, r5, #1 uxth r5, r5 -.L1320: +.L751: ldrh r3, [r4, #98] subs r3, r3, #16 cmp r5, r3 - ble .L1323 + ble .L754 lsls r3, r5, #10 movs r2, #1 mov r1, r2 mov r0, r7 - str r3, [r4, #3268] + str r3, [r4, #3448] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] adds r3, r3, #1 - bne .L1321 - ldr r3, [r4, #3268] + bne .L752 + ldr r3, [r4, #3448] movs r2, #1 mov r1, r2 mov r0, r7 adds r3, r3, #1 - str r3, [r4, #3268] + str r3, [r4, #3448] bl FlashReadPages -.L1321: - ldr r3, [r4, #3264] +.L752: + ldr r3, [r4, #3444] adds r3, r3, #1 - beq .L1322 + beq .L753 ldrh r3, [r6] cmp r3, r8 - bne .L1322 + bne .L753 ldr r3, [r6, #4] strh r5, [r4, #152] @ movhi str r3, [r4, #160] ldrh r3, [r6, #8] strh r3, [r4, #156] @ movhi -.L1323: +.L754: ldrh r3, [r4, #152] movw r2, #65535 cmp r3, r2 - beq .L1337 + beq .L768 ldrh r3, [r4, #156] cmp r3, r2 - beq .L1327 + beq .L758 lsls r3, r3, #10 movs r2, #1 mov r1, r2 - ldr r0, .L1348+4 - str r3, [r4, #3268] + ldr r0, .L779+4 + str r3, [r4, #3448] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] adds r3, r3, #1 - beq .L1327 + beq .L758 ldrh r2, [r6] movw r3, #61649 cmp r2, r3 - bne .L1327 + bne .L758 ldr r3, [r6, #4] ldr r2, [r4, #160] cmp r3, r2 - bls .L1327 + bls .L758 ldrh r2, [r4, #156] str r3, [r4, #160] ldrh r3, [r6, #8] strh r2, [r4, #152] @ movhi strh r3, [r4, #156] @ movhi -.L1327: - ldr r7, .L1348+4 +.L758: + ldr r7, .L779+4 movs r1, #1 ldrh r0, [r4, #152] movw r8, #61649 @@ -9023,3485 +5412,86 @@ FtlLoadBbt: sxth r5, r0 adds r0, r0, #1 strh r0, [r4, #154] @ movhi -.L1329: +.L760: cmp r5, #0 - bge .L1332 - movs r2, #254 - ldr r1, .L1348+8 - ldr r0, .L1348+12 + bge .L763 + movs r2, #253 + ldr r1, .L779+8 + ldr r0, .L779+12 bl sftl_printk -.L1331: +.L762: ldrh r3, [r6, #10] ldrh r0, [r6, #12] strh r3, [r4, #158] @ movhi movw r3, #65535 cmp r0, r3 - beq .L1334 + beq .L765 ldr r2, [r4, #28] cmp r0, r2 - beq .L1334 + beq .L765 ldrh r3, [r4, #42] lsrs r3, r3, #2 cmp r2, r3 - bcs .L1334 + bcs .L765 cmp r0, r3 - bcs .L1334 + bcs .L765 bl FtlSysBlkNumInit -.L1334: - ldr r6, .L1348+16 +.L765: + ldr r6, .L779+16 movs r5, #0 -.L1335: +.L766: ldrh r3, [r4, #54] cmp r5, r3 - bcc .L1336 + bcc .L767 movs r0, #0 pop {r4, r5, r6, r7, r8, pc} -.L1322: +.L753: subs r5, r5, #1 uxth r5, r5 - b .L1320 -.L1332: + b .L751 +.L763: ldrh r3, [r4, #152] movs r2, #1 mov r1, r2 mov r0, r7 orr r3, r5, r3, lsl #10 - str r3, [r4, #3268] - ldr r3, [r4, #3284] - str r3, [r4, #3272] + str r3, [r4, #3448] + ldr r3, [r4, #3292] + str r3, [r4, #3452] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] adds r3, r3, #1 - beq .L1330 + beq .L761 ldrh r3, [r6] cmp r3, r8 - beq .L1331 -.L1330: + beq .L762 +.L761: subs r5, r5, #1 sxth r5, r5 - b .L1329 -.L1336: - ldrh r2, [r4, #3904] - ldr r1, [r4, #3272] + b .L760 +.L767: + ldrh r2, [r4, #3380] + ldr r1, [r4, #3452] ldr r0, [r6, #4]! lsls r2, r2, #2 mla r1, r5, r2, r1 adds r5, r5, #1 bl ftl_memcpy - b .L1335 -.L1337: + b .L766 +.L768: mov r0, #-1 pop {r4, r5, r6, r7, r8, pc} -.L1349: +.L780: .align 2 -.L1348: +.L779: .word .LANCHOR0 - .word .LANCHOR0+3264 - .word .LANCHOR1+443 + .word .LANCHOR0+3444 + .word .LANCHOR1+245 .word .LC1 .word .LANCHOR0+176 .fnend .size FtlLoadBbt, .-FtlLoadBbt .align 1 - .global FtlMakeBbt - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlMakeBbt, %function -FtlMakeBbt: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r8, #0 - ldr r9, .L1369+4 - bl FtlBbtMemInit - sub r5, r9, #180 - sub r10, r9, #18 - mov r4, r5 - bl FtlLoadFactoryBbt -.L1351: - ldrh r3, [r5, #54] - cmp r8, r3 - bcc .L1357 - movs r5, #0 -.L1358: - ldrh r3, [r4, #114] - uxth r0, r5 - adds r5, r5, #1 - cmp r3, r0 - bhi .L1359 - ldrh r5, [r4, #164] - movw r6, #65535 - subs r5, r5, #1 - uxth r5, r5 -.L1360: - ldrh r3, [r4, #164] - subs r3, r3, #48 - cmp r5, r3 - ble .L1364 - mov r0, r5 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L1361 - mov r0, r5 - bl FlashTestBlk - cmp r0, #0 - beq .L1362 - mov r0, r5 - bl FtlBbmMapBadBlock -.L1361: - subs r5, r5, #1 - uxth r5, r5 - b .L1360 -.L1357: - ldrh r3, [r10, #2]! - movw r2, #65535 - ldr r0, [r5, #3284] - ldr fp, [r5, #3288] - cmp r3, r2 - str r0, [r5, #3272] - str fp, [r5, #3276] - beq .L1352 - ldrh r7, [r5, #98] - movs r2, #1 - mov r1, r2 - ldr r0, .L1369 - mla r7, r8, r7, r3 - lsls r3, r7, #10 - str r3, [r5, #3268] - bl FlashReadPages - ldrh r2, [r5, #98] - ldr r1, [r5, #3272] - ldr r0, [r9] - adds r2, r2, #7 - asrs r2, r2, #3 - bl ftl_memcpy -.L1353: - uxth r0, r7 - add r8, r8, #1 - add r9, r9, #4 - bl FtlBbmMapBadBlock - b .L1351 -.L1352: - mov r1, r8 - bl FlashGetBadBlockList - ldr r1, [r9] - ldr r0, [r5, #3272] - bl FtlBbt2Bitmap - ldrh r6, [r5, #98] -.L1355: - subs r6, r6, #1 - uxth r6, r6 -.L1354: - ldrh r0, [r4, #98] - smlabb r0, r0, r8, r6 - uxth r0, r0 - bl FtlBbmIsBadBlock - cmp r0, #1 - beq .L1355 - movs r1, #16 - ldr r0, [r4, #3288] - strh r6, [r10] @ movhi - bl __memzero - mov r1, #4096 - ldr r0, [r4, #3284] - bl __memzero - movw r3, #61664 - strh r3, [fp] @ movhi - movs r3, #0 - str r3, [fp, #4] - ldrh r3, [r10] - ldrh r7, [r4, #98] - ldrh r2, [r4, #3904] - strh r3, [fp, #2] @ movhi - ldrh r3, [r10] - ldr r1, [r9] - lsls r2, r2, #2 - ldr r0, [r4, #3272] - mla r7, r8, r7, r3 - lsls r3, r7, #10 - str r3, [r4, #3268] - bl ftl_memcpy - movs r2, #1 - ldr r0, .L1369 - mov r1, r2 - bl FlashEraseBlocks - movs r3, #1 - ldr r0, .L1369 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldr r3, [r4, #3264] - adds r3, r3, #1 - bne .L1353 - uxth r0, r7 - bl FtlBbmMapBadBlock - b .L1354 -.L1359: - bl FtlBbmMapBadBlock - b .L1358 -.L1362: - ldrh r3, [r4, #152] - cmp r3, r6 - bne .L1363 - strh r5, [r4, #152] @ movhi - b .L1361 -.L1363: - strh r5, [r4, #156] @ movhi -.L1364: - ldrh r3, [r4, #152] - movs r5, #0 - ldr r0, [r4, #3804] - movs r1, #1 - str r5, [r4, #160] - movs r2, #2 - strh r5, [r4, #154] @ movhi - lsls r3, r3, #10 - str r3, [r0, #4] - ldrh r3, [r4, #156] - lsls r3, r3, #10 - str r3, [r0, #24] - bl FlashEraseBlocks - ldrh r0, [r4, #152] - bl FtlBbmMapBadBlock - ldrh r0, [r4, #156] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldr r3, [r4, #160] - ldrh r2, [r4, #156] - strh r5, [r4, #154] @ movhi - adds r3, r3, #1 - str r3, [r4, #160] - ldrh r3, [r4, #152] - strh r2, [r4, #152] @ movhi - strh r3, [r4, #156] @ movhi - bl FtlBbmTblFlush - mov r0, r5 - pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1370: - .align 2 -.L1369: - .word .LANCHOR0+3264 - .word .LANCHOR0+180 - .fnend - .size FtlMakeBbt, .-FtlMakeBbt - .align 1 - .global FtlVendorPartWrite - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlVendorPartWrite, %function -FtlVendorPartWrite: - .fnstart - @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r2 - ldr r4, .L1383 - adds r2, r0, r1 - .pad #108 - sub sp, sp, #108 - mov r8, r0 - mov r6, r1 - ldrh r3, [r4, #96] - cmp r2, r3 - bhi .L1379 - ldrh r7, [r4, #108] - mov r9, #0 - lsr r7, r0, r7 - lsl fp, r7, #2 -.L1373: - cbnz r6, .L1378 -.L1371: - mov r0, r9 - add sp, sp, #108 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1378: - ldr r3, [r4, #3888] - mov r0, r8 - ldr r2, [r3, fp] - ldrh r3, [r4, #58] - str r2, [sp, #12] - mov r1, r3 - str r3, [sp, #8] - bl __aeabi_uidivmod - ldr r3, [sp, #8] - ldr r2, [sp, #12] - str r1, [sp, #4] - subs r5, r3, r1 - uxth r5, r5 - cmp r6, r5 - it cc - uxthcc r5, r6 - cbz r2, .L1375 - cmp r5, r3 - beq .L1375 - ldr r3, [r4, #3852] - add r0, sp, #20 - str r2, [sp, #24] - movs r2, #1 - mov r1, r2 - str r3, [sp, #28] - add r3, sp, #40 - str r3, [sp, #32] - bl FlashReadPages -.L1376: - lsls r3, r5, #9 - ldr r0, [r4, #3852] - mov r1, r10 - mov r2, r3 - str r3, [sp, #8] - ldr r3, [sp, #4] - subs r6, r6, r5 - add r8, r8, r5 - add fp, fp, #4 - add r0, r0, r3, lsl #9 - bl ftl_memcpy - mov r1, r7 - ldr r2, [r4, #3852] - ldr r0, .L1383+4 - adds r7, r7, #1 - bl FtlMapWritePage - ldr r3, [sp, #8] - adds r0, r0, #1 - it eq - moveq r9, #-1 - add r10, r10, r3 - b .L1373 -.L1375: - ldrh r2, [r4, #110] - movs r1, #0 - ldr r0, [r4, #3852] - bl ftl_memset - b .L1376 -.L1379: - mov r9, #-1 - b .L1371 -.L1384: - .align 2 -.L1383: - .word .LANCHOR0 - .word .LANCHOR0+3956 - .fnend - .size FtlVendorPartWrite, .-FtlVendorPartWrite - .align 1 - .global Ftl_save_ext_data - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type Ftl_save_ext_data, %function -Ftl_save_ext_data: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - ldr r2, .L1387 - ldr r3, .L1387+4 - ldr r1, [r2, #2636] - cmp r1, r3 - bne .L1385 - ldr r3, .L1387+8 - addw r2, r2, #2636 - movs r1, #1 - movs r0, #0 - str r3, [r2, #4] - ldr r3, [r2, #-104] - str r3, [r2, #88] - ldr r3, [r2, #-100] - str r3, [r2, #92] - ldr r3, [r2, #-108] - str r3, [r2, #8] - ldr r3, [r2, #-120] - str r3, [r2, #12] - ldr r3, [r2, #-128] - str r3, [r2, #16] - ldr r3, [r2, #-112] - str r3, [r2, #20] - ldr r3, [r2, #-84] - str r3, [r2, #28] - ldr r3, [r2, #-76] - str r3, [r2, #32] - ldr r3, [r2, #-124] - str r3, [r2, #36] - ldr r3, [r2, #-116] - str r3, [r2, #40] - ldr r3, [r2, #-72] - str r3, [r2, #44] - ldr r3, [r2, #-68] - str r3, [r2, #48] - b FtlVendorPartWrite -.L1385: - bx lr -.L1388: - .align 2 -.L1387: - .word .LANCHOR0 - .word 1179929683 - .word 1342177349 - .fnend - .size Ftl_save_ext_data, .-Ftl_save_ext_data - .align 1 - .global FtlEctTblFlush - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlEctTblFlush, %function -FtlEctTblFlush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r2, .L1394 - push {r3, lr} - .save {r3, lr} - ldrh r3, [r2, #-192] - cmp r3, #31 - itett ls - addls r3, r3, #1 - movhi r2, #32 - strhls r3, [r2, #-192] @ movhi - movls r2, #1 - ldr r3, .L1394+4 - cbnz r0, .L1391 - ldr r1, [r3, #3864] - ldr r0, [r1, #20] - ldr r1, [r1, #16] - add r2, r2, r0 - cmp r1, r2 - bcc .L1392 -.L1391: - ldr r2, [r3, #3864] - movs r0, #64 - ldr r1, [r2, #16] - str r1, [r2, #20] - ldr r1, .L1394+8 - str r1, [r2] - ldrh r1, [r3, #3856] - ldr r2, [r3, #3864] - lsls r3, r1, #9 - str r3, [r2, #12] - ldr r3, [r2, #8] - adds r3, r3, #1 - str r3, [r2, #8] - movs r3, #0 - str r3, [r2, #4] - bl FtlVendorPartWrite - bl Ftl_save_ext_data -.L1392: - movs r0, #0 - pop {r3, pc} -.L1395: - .align 2 -.L1394: - .word .LANCHOR3 - .word .LANCHOR0 - .word 1112818501 - .fnend - .size FtlEctTblFlush, .-FtlEctTblFlush - .align 1 - .global sftl_vendor_write - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_vendor_write, %function -sftl_vendor_write: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - add r0, r0, #256 - b FtlVendorPartWrite - .fnend - .size sftl_vendor_write, .-sftl_vendor_write - .align 1 - .global FtlVendorPartRead - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlVendorPartRead, %function -FtlVendorPartRead: - .fnstart - @ args = 0, pretend = 0, frame = 104 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r10, r2 - ldr r4, .L1407 - adds r2, r0, r1 - .pad #108 - sub sp, sp, #108 - mov r8, r0 - mov r7, r1 - ldrh r3, [r4, #96] - cmp r2, r3 - bhi .L1406 - ldrh r6, [r4, #108] - mov r9, #0 - lsr r6, r0, r6 - lsl fp, r6, #2 -.L1399: - cbnz r7, .L1405 -.L1397: - mov r0, r9 - add sp, sp, #108 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1405: - ldr r3, [r4, #3888] - mov r0, r8 - ldrh r5, [r4, #58] - ldr r3, [r3, fp] - mov r1, r5 - str r3, [sp, #8] - bl __aeabi_uidivmod - subs r5, r5, r1 - ldr r3, [sp, #8] - uxth r5, r5 - str r1, [sp, #4] - cmp r7, r5 - it cc - uxthcc r5, r7 - lsls r2, r5, #9 - str r2, [sp, #8] - cbz r3, .L1401 - ldr r2, [r4, #3852] - add r0, sp, #20 - str r3, [sp, #24] - str r3, [sp, #12] - str r2, [sp, #28] - add r2, sp, #40 - str r2, [sp, #32] - movs r2, #1 - mov r1, r2 - bl FlashReadPages - ldr r2, [sp, #20] - ldr r3, [sp, #12] - adds r2, r2, #1 - ldr r2, [r4, #3264] - it eq - moveq r9, #-1 - cmp r2, #256 - bne .L1403 - mov r2, r3 - mov r1, r6 - ldr r0, .L1407+4 - bl sftl_printk - ldr r2, [r4, #3852] - mov r1, r6 - ldr r0, .L1407+8 - bl FtlMapWritePage -.L1403: - ldr r1, [r4, #3852] - lsls r2, r5, #9 - ldr r3, [sp, #4] - mov r0, r10 - add r1, r1, r3, lsl #9 - bl ftl_memcpy -.L1404: - ldr r3, [sp, #8] - adds r6, r6, #1 - subs r7, r7, r5 - add r8, r8, r5 - add fp, fp, #4 - add r10, r10, r3 - b .L1399 -.L1401: - lsls r2, r5, #9 - mov r1, r3 - mov r0, r10 - bl ftl_memset - b .L1404 -.L1406: - mov r9, #-1 - b .L1397 -.L1408: - .align 2 -.L1407: - .word .LANCHOR0 - .word .LC107 - .word .LANCHOR0+3956 - .fnend - .size FtlVendorPartRead, .-FtlVendorPartRead - .align 1 - .global FtlLoadEctTbl - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlLoadEctTbl, %function -FtlLoadEctTbl: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - movs r0, #64 - ldr r4, .L1411 - ldr r2, [r4, #3864] - ldrh r1, [r4, #3856] - bl FtlVendorPartRead - ldr r3, [r4, #3864] - ldr r2, [r3] - ldr r3, .L1411+4 - cmp r2, r3 - beq .L1410 - ldr r1, .L1411+8 - ldr r0, .L1411+12 - bl sftl_printk - ldrh r2, [r4, #3856] - movs r1, #0 - ldr r0, [r4, #3864] - lsls r2, r2, #9 - bl ftl_memset -.L1410: - movs r0, #0 - pop {r4, pc} -.L1412: - .align 2 -.L1411: - .word .LANCHOR0 - .word 1112818501 - .word .LC108 - .word .LC71 - .fnend - .size FtlLoadEctTbl, .-FtlLoadEctTbl - .align 1 - .global Ftl_load_ext_data - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type Ftl_load_ext_data, %function -Ftl_load_ext_data: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - movs r1, #1 - ldr r4, .L1416 - movs r0, #0 - ldr r5, .L1416+4 - addw r2, r4, #2636 - bl FtlVendorPartRead - ldr r3, [r4, #2636] - cmp r3, r5 - beq .L1414 - mov r1, #512 - addw r0, r4, #2636 - bl __memzero - str r5, [r4, #2636] -.L1414: - ldr r3, [r4, #2636] - cmp r3, r5 - bne .L1415 - ldr r3, [r4, #2724] - str r3, [r4, #2532] - ldr r3, [r4, #2728] - str r3, [r4, #2536] - ldr r3, [r4, #2644] - str r3, [r4, #2528] - ldr r3, [r4, #2648] - str r3, [r4, #2516] - ldr r3, [r4, #2652] - str r3, [r4, #2508] - ldr r3, [r4, #2656] - str r3, [r4, #2524] - ldr r3, [r4, #2664] - str r3, [r4, #2552] - ldr r3, [r4, #2668] - str r3, [r4, #2560] - ldr r3, [r4, #2672] - str r3, [r4, #2512] - ldr r3, [r4, #2676] - str r3, [r4, #2520] - ldr r3, [r4, #2680] - str r3, [r4, #2564] - ldr r3, [r4, #2684] - str r3, [r4, #2568] -.L1415: - ldrh r2, [r4, #92] - ldr r3, [r4, #2552] - ldr r0, [r4, #2548] - ldrh r1, [r4, #40] - mla r0, r0, r2, r3 - bl __aeabi_uidiv - str r0, [r4, #2556] - pop {r3, r4, r5, pc} -.L1417: - .align 2 -.L1416: - .word .LANCHOR0 - .word 1179929683 - .fnend - .size Ftl_load_ext_data, .-Ftl_load_ext_data - .align 1 - .global sftl_vendor_read - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_vendor_read, %function -sftl_vendor_read: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - add r0, r0, #256 - b FtlVendorPartRead - .fnend - .size sftl_vendor_read, .-sftl_vendor_read - .align 1 - .global FtlVpcTblFlush - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlVpcTblFlush, %function -FtlVpcTblFlush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, lr} - .save {r4, r5, r6, r7, r8, r9, r10, lr} - movs r5, #0 - ldr r4, .L1434 - movs r1, #255 - movw r7, #65535 - ldr r9, .L1434+16 - ldr r3, [r4, #3284] - add r8, r4, #3264 - ldr r6, [r4, #3288] - ldr r10, .L1434+20 - str r3, [r4, #3272] - ldrh r3, [r4, #2576] - str r6, [r4, #3276] - str r5, [r6, #12] - strh r3, [r6, #2] @ movhi - movw r3, #61604 - strh r3, [r6] @ movhi - ldr r3, [r4, #2584] - str r5, [r6, #8] - ldrh r2, [r4, #2350] - str r3, [r6, #4] - ldr r3, .L1434+4 - str r3, [r4, #2268] - ldr r3, .L1434+8 - str r3, [r4, #2272] - ldrh r3, [r4, #2582] - strh r3, [r4, #2276] @ movhi - ldrh r3, [r4, #54] - strb r3, [r4, #2278] - ldrh r3, [r4, #2348] - strh r3, [r4, #2282] @ movhi - ldrb r3, [r4, #2354] @ zero_extendqisi2 - orr r3, r3, r2, lsl #6 - ldrh r2, [r4, #2398] - strh r3, [r4, #2284] @ movhi - ldrb r3, [r4, #2356] @ zero_extendqisi2 - strb r3, [r4, #2279] - ldrh r3, [r4, #2396] - strh r3, [r4, #2286] @ movhi - ldrb r3, [r4, #2402] @ zero_extendqisi2 - orr r3, r3, r2, lsl #6 - strh r3, [r4, #2288] @ movhi - ldrb r3, [r4, #2404] @ zero_extendqisi2 - strb r3, [r4, #2280] - ldrh r3, [r4, #2444] - ldrh r2, [r4, #2446] - ldr r0, [r4, #3272] - strh r3, [r4, #2290] @ movhi - ldrb r3, [r4, #2450] @ zero_extendqisi2 - orr r3, r3, r2, lsl #6 - ldrh r2, [r4, #110] - strh r3, [r4, #2292] @ movhi - ldrb r3, [r4, #2452] @ zero_extendqisi2 - strb r3, [r4, #2281] - ldr r3, [r4, #2548] - str r3, [r4, #2300] - ldr r3, [r4, #2540] - str r3, [r4, #2308] - ldr r3, [r4, #2544] - str r3, [r4, #2304] - ldrh r3, [r4, #3202] - strh r3, [r4, #2312] @ movhi - ldrh r3, [r4, #3204] - strh r3, [r4, #2314] @ movhi - bl ftl_memset - movs r2, #48 - addw r1, r4, #2268 - ldr r0, [r4, #3272] - bl ftl_memcpy - ldrh r2, [r4, #40] - ldr r0, [r4, #3272] - ldr r1, [r4, #2324] - lsls r2, r2, #1 - adds r0, r0, #48 - bl ftl_memcpy - ldrh r0, [r4, #40] - ldr r3, [r4, #3272] - ldr r1, [r4, #24] - lsrs r2, r0, #3 - adds r0, r0, #24 - lsls r0, r0, #1 - adds r2, r2, #4 - bic r0, r0, #3 - add r0, r0, r3 - bl ftl_memcpy - mov r0, r5 - bl FtlUpdateVaildLpn -.L1420: - ldr r3, [r4, #3284] - mov r0, r8 - ldrh r2, [r4, #2576] - str r3, [r4, #3272] - ldr r3, [r4, #3288] - str r3, [r4, #3276] - ldrh r3, [r4, #2578] - orr r3, r3, r2, lsl #10 - str r3, [r4, #3268] - movs r3, #1 - mov r2, r3 - mov r1, r3 - bl FlashProgPages - ldrh r3, [r4, #104] - ldrh r2, [r4, #2578] - subs r3, r3, #1 - cmp r2, r3 - blt .L1421 - ldrh r3, [r4, #2576] - ldrh r7, [r4, #2580] - strh r3, [r4, #2580] @ movhi - movs r3, #0 - strh r3, [r4, #2578] @ movhi - bl FtlFreeSysBlkQueueOut - ldr r3, [r4, #2540] - strh r0, [r4, #2576] @ movhi - adds r2, r3, #1 - str r3, [r4, #2584] - str r2, [r4, #2540] - lsls r2, r0, #10 - str r2, [r4, #3268] - str r3, [r6, #4] - movs r3, #1 - strh r0, [r6, #2] @ movhi - mov r2, r3 - mov r1, r3 - mov r0, r8 - bl FlashProgPages -.L1421: - ldrh r3, [r4, #2578] - ldr r2, [r4, #3264] - adds r3, r3, #1 - uxth r3, r3 - adds r1, r2, #1 - strh r3, [r4, #2578] @ movhi - bne .L1422 - cmp r3, #1 - bne .L1423 - movw r2, #1169 - mov r1, r9 - mov r0, r10 - bl sftl_printk -.L1423: - ldrh r3, [r4, #2578] - adds r5, r5, #1 - uxth r5, r5 - cmp r3, #1 - ittt eq - ldrheq r3, [r4, #104] - addeq r3, r3, #-1 - strheq r3, [r4, #2578] @ movhi - cmp r5, #3 - bls .L1420 - mov r2, r5 - ldr r1, [r4, #3268] - ldr r0, .L1434+12 - bl sftl_printk -.L1426: - b .L1426 -.L1422: - cmp r3, #1 - beq .L1420 - cmp r2, #256 - beq .L1420 - movw r3, #65535 - cmp r7, r3 - beq .L1427 - movs r1, #1 - mov r0, r7 - bl FtlFreeSysBlkQueueIn -.L1427: - movs r0, #0 - pop {r4, r5, r6, r7, r8, r9, r10, pc} -.L1435: - .align 2 -.L1434: - .word .LANCHOR0 - .word 1179929683 - .word 1342177349 - .word .LC109 - .word .LANCHOR1+454 - .word .LC1 - .fnend - .size FtlVpcTblFlush, .-FtlVpcTblFlush - .align 1 - .global FtlSysFlush - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlSysFlush, %function -FtlSysFlush: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, lr} - .save {r3, lr} - bl l2p_flush - movs r0, #1 - bl FtlEctTblFlush - bl FtlVpcTblFlush - movs r0, #0 - pop {r3, pc} - .fnend - .size FtlSysFlush, .-FtlSysFlush - .align 1 - .global sftl_deinit - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_deinit, %function -sftl_deinit: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, lr} - .save {r3, lr} - ldr r3, .L1439 - ldr r3, [r3] - cmp r3, #1 - bne .L1438 - bl FtlSysFlush -.L1438: - movs r0, #0 - pop {r3, pc} -.L1440: - .align 2 -.L1439: - .word .LANCHOR2 - .fnend - .size sftl_deinit, .-sftl_deinit - .align 1 - .global FtlDiscard - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlDiscard, %function -FtlDiscard: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r4, r5, r6, r7, r8, lr} - .save {r4, r5, r6, r7, r8, lr} - .pad #8 - adds r2, r0, r1 - ldr r6, .L1456 - mov r8, r0 - mov r5, r1 - ldr r3, [r6, #140] - cmp r2, r3 - bhi .L1449 - cmp r1, #31 - bhi .L1443 -.L1448: - movs r0, #0 -.L1441: - add sp, sp, #8 - @ sp needed - pop {r4, r5, r6, r7, r8, pc} -.L1443: - ldrh r4, [r6, #58] - mov r1, r4 - bl __aeabi_uidiv - smulbb r3, r0, r4 - mov r7, r0 - sub r8, r8, r3 - uxth r3, r8 - cbz r3, .L1444 - subs r4, r4, r3 - adds r7, r7, #1 - cmp r4, r5 - it cs - movcs r4, r5 - uxth r4, r4 - subs r5, r5, r4 -.L1444: - ldr r4, .L1456+4 - mov r3, #-1 - str r3, [sp, #4] -.L1445: - ldrh r3, [r6, #58] - cmp r5, r3 - bcs .L1447 - ldr r3, .L1456+4 - ldr r2, [r3, #-188] - cmp r2, #32 - bls .L1448 - movs r4, #0 - str r4, [r3, #-188] - bl l2p_flush - bl FtlVpcTblFlush - b .L1448 -.L1447: - movs r2, #0 - mov r1, sp - mov r0, r7 - bl log2phys - ldr r3, [sp] - adds r3, r3, #1 - beq .L1446 - ldr r3, [r4, #-188] - movs r2, #1 - add r1, sp, #4 - mov r0, r7 - adds r3, r3, #1 - str r3, [r4, #-188] - ldr r3, [r6, #2512] - adds r3, r3, #1 - str r3, [r6, #2512] - bl log2phys - ldr r0, [sp] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl decrement_vpc_count -.L1446: - ldrh r3, [r6, #58] - adds r7, r7, #1 - subs r5, r5, r3 - b .L1445 -.L1449: - mov r0, #-1 - b .L1441 -.L1457: - .align 2 -.L1456: - .word .LANCHOR0 - .word .LANCHOR3 - .fnend - .size FtlDiscard, .-FtlDiscard - .align 1 - .global FtlVpcCheckAndModify - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlVpcCheckAndModify, %function -FtlVpcCheckAndModify: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - .save {r4, r5, r6, r7, r8, r9, lr} - .pad #12 - movs r5, #0 - ldr r4, .L1470 - ldr r1, .L1470+4 - ldr r0, .L1470+8 - bl sftl_printk - ldrh r2, [r4, #42] - movs r1, #0 - ldr r0, [r4, #3868] - lsls r2, r2, #1 - bl ftl_memset -.L1459: - ldr r3, [r4, #2504] - cmp r5, r3 - bcc .L1461 - ldr r9, .L1470+12 - movs r7, #0 - movw r8, #65535 -.L1462: - ldrh r3, [r4, #40] - uxth r5, r7 - cmp r3, r5 - bhi .L1466 - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, pc} -.L1461: - movs r2, #0 - add r1, sp, #4 - mov r0, r5 - bl log2phys - ldr r0, [sp, #4] - adds r3, r0, #1 - beq .L1460 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldr r2, [r4, #3868] - ldrh r3, [r2, r0, lsl #1] - adds r3, r3, #1 - strh r3, [r2, r0, lsl #1] @ movhi -.L1460: - adds r5, r5, #1 - b .L1459 -.L1466: - ldr r3, [r4, #2324] - uxth r6, r7 - ldrh r2, [r3, r6, lsl #1] - ldr r3, [r4, #3868] - ldrh r3, [r3, r6, lsl #1] - cmp r2, r3 - beq .L1464 - cmp r2, r8 - beq .L1464 - mov r1, r6 - mov r0, r9 - bl sftl_printk - ldrh r3, [r4, #2348] - cmp r3, r5 - beq .L1464 - ldrh r3, [r4, #2444] - cmp r3, r5 - beq .L1464 - ldrh r3, [r4, #2396] - cmp r3, r5 - beq .L1464 - ldr r3, [r4, #3868] - mov r0, r5 - ldrh r2, [r3, r6, lsl #1] - ldr r3, [r4, #2324] - strh r2, [r3, r6, lsl #1] @ movhi - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L1464: - adds r7, r7, #1 - b .L1462 -.L1471: - .align 2 -.L1470: - .word .LANCHOR0 - .word .LANCHOR1+469 - .word .LC97 - .word .LC110 - .fnend - .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify - .align 1 - .global allocate_new_data_superblock - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type allocate_new_data_superblock, %function -allocate_new_data_superblock: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - mov r6, r0 - ldr r4, .L1482 - ldrh r5, [r0] - ldrh r3, [r4, #40] - cmp r3, r5 - bcs .L1473 - movw r2, #2750 - ldr r1, .L1482+4 - ldr r0, .L1482+8 - bl sftl_printk -.L1473: - movw r3, #65535 - cmp r5, r3 - beq .L1474 - ldr r3, [r4, #2324] - mov r0, r5 - ldrh r3, [r3, r5, lsl #1] - cbz r3, .L1475 - bl INSERT_DATA_LIST -.L1474: - ldrh r0, [r4, #4000] - movs r3, #1 - strb r3, [r6, #8] - movw r3, #65535 - cmp r0, r3 - beq .L1476 - cmp r5, r0 - bne .L1477 - ldr r3, [r4, #2324] - ldrh r3, [r3, r0, lsl #1] - cbz r3, .L1478 -.L1477: - bl update_vpc_list -.L1478: - movw r3, #65535 - strh r3, [r4, #4000] @ movhi -.L1476: - mov r0, r6 - bl allocate_data_superblock - bl l2p_flush - movs r0, #0 - bl FtlEctTblFlush - bl FtlVpcTblFlush - movs r0, #0 - pop {r4, r5, r6, pc} -.L1475: - bl INSERT_FREE_LIST - b .L1474 -.L1483: - .align 2 -.L1482: - .word .LANCHOR0 - .word .LANCHOR1+490 - .word .LC1 - .fnend - .size allocate_new_data_superblock, .-allocate_new_data_superblock - .align 1 - .global FtlProgPages - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlProgPages, %function -FtlProgPages: - .fnstart - @ args = 0, pretend = 0, frame = 16 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - movs r7, #0 - ldr r6, .L1498 - .pad #20 - sub sp, sp, #20 - mov r4, r3 - movs r2, #0 - ldr r10, .L1498+8 - mov r5, r0 - ldr fp, .L1498+12 - mov r9, r1 - ldrb r3, [r3, #9] @ zero_extendqisi2 - bl FlashProgPages -.L1485: - cmp r7, r9 - beq .L1492 - mov r8, #0 - b .L1493 -.L1488: - ldr r0, [r5, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - ldrh r3, [r4] - cmp r3, r0 - bne .L1486 - ldr r1, [r6, #2324] - ldrh r0, [r4, #4] - ldrh r2, [r1, r3, lsl #1] - subs r2, r2, r0 - strh r2, [r1, r3, lsl #1] @ movhi - ldrh r3, [r6, #102] - strb r8, [r4, #6] - strh r8, [r4, #4] @ movhi - strh r3, [r4, #2] @ movhi -.L1486: - ldrh r3, [r4, #4] - cbnz r3, .L1487 - mov r0, r4 - bl allocate_new_data_superblock -.L1487: - ldr r3, [r6, #2732] - adds r3, r3, #1 - str r3, [r6, #2732] - ldr r0, [r5, #4] - ubfx r0, r0, #10, #16 - bl FtlGcMarkBadPhyBlk - mov r0, r4 - bl get_new_active_ppa - movs r2, #0 - str r0, [r5, #4] - str r0, [sp, #12] - movs r1, #1 - ldrb r3, [r4, #9] @ zero_extendqisi2 - mov r0, r5 - bl FlashProgPages -.L1493: - ldr r3, [r5] - adds r3, r3, #1 - beq .L1488 - ldrb r2, [r4, #6] @ zero_extendqisi2 - ldrh r3, [r6, #32] - cmp r2, r3 - bcc .L1489 - movw r2, #941 - mov r1, r10 - mov r0, fp - bl sftl_printk -.L1489: - ldr r3, [r5, #4] - add r1, sp, #16 - movs r2, #1 - ldr r0, [r5, #16] - str r3, [r1, #-4]! - bl log2phys - ldr r3, [r5, #12] - ldr r3, [r3, #12] - ubfx r0, r3, #10, #16 - str r3, [sp, #4] - bl P2V_block_in_plane - ldr r3, [sp, #4] - mov r8, r0 - adds r3, r3, #1 - beq .L1490 - ldr r3, [r6, #2324] - ldrh r2, [r3, r0, lsl #1] - cbnz r2, .L1491 - mov r1, r0 - ldr r0, .L1498+4 - bl sftl_printk -.L1491: - mov r0, r8 - bl decrement_vpc_count -.L1490: - adds r7, r7, #1 - adds r5, r5, #20 - b .L1485 -.L1492: - ldrb r2, [r4, #6] @ zero_extendqisi2 - ldrh r3, [r6, #32] - cmp r2, r3 - bcc .L1484 - mov r2, #956 - ldr r1, .L1498+8 - ldr r0, .L1498+12 - bl sftl_printk -.L1484: - add sp, sp, #20 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1499: - .align 2 -.L1498: - .word .LANCHOR0 - .word .LC111 - .word .LANCHOR1+519 - .word .LC1 - .fnend - .size FtlProgPages, .-FtlProgPages - .align 1 - .global FtlGcFreeTempBlock - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlGcFreeTempBlock, %function -FtlGcFreeTempBlock: - .fnstart - @ args = 0, pretend = 0, frame = 8 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #12 - movw r2, #65535 - ldr r4, .L1526 - ldrh r5, [r4, #2444] - ldrh r1, [r4, #102] - cmp r5, r2 - bne .L1501 -.L1511: - ldrh r2, [r4, #2444] - movs r3, #0 - str r3, [r4, #4008] - movw r3, #65535 - cmp r2, r3 - bne .L1524 -.L1502: - movs r0, #0 -.L1500: - add sp, sp, #12 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1501: - cbz r0, .L1504 - ldr r3, .L1526+4 - ldrh r0, [r3, #4] - cmp r0, r2 - beq .L1505 -.L1506: - movs r1, #2 -.L1504: - ldr r0, .L1526+8 - bl FtlGcScanTempBlk - str r0, [sp, #4] - adds r0, r0, #1 - beq .L1507 - ldr r2, [r4, #2328] - ldrh r3, [r2, r5, lsl #1] - cmp r3, #4 - bls .L1508 - subs r3, r3, #5 - movs r0, #1 - strh r3, [r2, r5, lsl #1] @ movhi - bl FtlEctTblFlush -.L1508: - ldr r3, [r4, #4008] - cbnz r3, .L1509 - ldr r3, [r4, #2732] - ldr r0, [sp, #4] - adds r3, r3, #1 - ubfx r0, r0, #10, #16 - str r3, [r4, #2732] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L1509: - movs r3, #0 - str r3, [r4, #4008] -.L1520: - movs r0, #1 - b .L1500 -.L1505: - movs r2, #0 - strh r2, [r3, #4] @ movhi - ldrh r3, [r4, #2344] - cmp r3, #17 - bhi .L1506 - b .L1504 -.L1507: - ldr r3, .L1526+4 - ldrh r2, [r3, #4] - movw r3, #65535 - cmp r2, r3 - bne .L1520 - b .L1511 -.L1524: - ldrb r1, [r4, #2451] @ zero_extendqisi2 - ldrh r3, [r4, #102] - ldrh r2, [r4, #3200] - muls r3, r1, r3 - cmp r2, r3 - beq .L1512 - movs r2, #162 - ldr r1, .L1526+12 - ldr r0, .L1526+16 - bl sftl_printk -.L1512: - ldrb r3, [r4, #2451] @ zero_extendqisi2 - movs r6, #0 - ldrh r0, [r4, #102] - mov r9, #12 - ldr r2, [r4, #2324] - ldrh r1, [r4, #2444] - ldr r10, .L1526+12 - smulbb r3, r3, r0 - ldr fp, .L1526+16 - strh r3, [r2, r1, lsl #1] @ movhi - ldr r2, [r4, #2528] - ldrh r3, [r4, #3200] - add r3, r3, r2 - str r3, [r4, #2528] -.L1513: - ldrh r2, [r4, #3200] - uxth r3, r6 - cmp r2, r3 - bhi .L1517 - movw r0, #65535 - bl decrement_vpc_count - ldrh r0, [r4, #2444] - ldr r3, [r4, #2324] - ldrh r3, [r3, r0, lsl #1] - cmp r3, #0 - beq .L1518 - bl INSERT_DATA_LIST -.L1519: - movs r5, #0 - movw r6, #65535 - strh r6, [r4, #2444] @ movhi - strh r5, [r4, #3200] @ movhi - strh r5, [r4, #3192] @ movhi - bl l2p_flush - bl FtlVpcTblFlush - ldrh r3, [r4, #2572] - ldrh r2, [r4, #2344] - add r3, r3, r3, lsl #1 - cmp r2, r3, asr #2 - ble .L1502 - movs r3, #20 - strh r6, [r4, #2588] @ movhi - strh r3, [r4, #3148] @ movhi - b .L1502 -.L1517: - uxth r7, r6 - ldr r8, [r4, #3196] - ldr r3, [r4, #2504] - mul r7, r9, r7 - add r5, r8, r7 - ldr r2, [r5, #8] - cmp r2, r3 - bcc .L1514 - movs r2, #168 - mov r1, r10 - mov r0, fp - bl sftl_printk -.L1514: - movs r2, #0 - add r1, sp, #4 - ldr r0, [r5, #8] - bl log2phys - ldr r0, [r8, r7] - ldr r3, [sp, #4] - cmp r0, r3 - bne .L1515 - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - movs r2, #1 - mov r7, r0 - adds r1, r5, #4 - ldr r0, [r5, #8] - bl log2phys - mov r0, r7 -.L1525: - bl decrement_vpc_count -.L1516: - adds r6, r6, #1 - b .L1513 -.L1515: - ldr r2, [r5, #4] - cmp r3, r2 - beq .L1516 - ldrh r0, [r4, #2444] - b .L1525 -.L1518: - bl INSERT_FREE_LIST - b .L1519 -.L1527: - .align 2 -.L1526: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR0+2444 - .word .LANCHOR1+532 - .word .LC1 - .fnend - .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock - .align 1 - .global FtlGcPageRecovery - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlGcPageRecovery, %function -FtlGcPageRecovery: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, lr} - .save {r4, lr} - ldr r4, .L1530 - ldrh r1, [r4, #102] - addw r0, r4, #2444 - bl FtlGcScanTempBlk - ldrh r2, [r4, #2446] - ldrh r3, [r4, #102] - cmp r2, r3 - bcc .L1528 - addw r0, r4, #3908 - bl FtlMapBlkWriteDump_data - movs r0, #0 - bl FtlGcFreeTempBlock - movs r3, #0 - str r3, [r4, #4008] -.L1528: - pop {r4, pc} -.L1531: - .align 2 -.L1530: - .word .LANCHOR0 - .fnend - .size FtlGcPageRecovery, .-FtlGcPageRecovery - .align 1 - .global FtlPowerLostRecovery - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlPowerLostRecovery, %function -FtlPowerLostRecovery: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movs r5, #0 - ldr r4, .L1533 - addw r6, r4, #2348 - str r5, [r4, #4020] - mov r0, r6 - addw r4, r4, #2396 - bl FtlRecoverySuperblock - mov r0, r6 - bl FtlSlcSuperblockCheck - mov r0, r4 - bl FtlRecoverySuperblock - mov r0, r4 - bl FtlSlcSuperblockCheck - bl FtlGcPageRecovery - movw r0, #65535 - bl decrement_vpc_count - mov r0, r5 - pop {r4, r5, r6, pc} -.L1534: - .align 2 -.L1533: - .word .LANCHOR0 - .fnend - .size FtlPowerLostRecovery, .-FtlPowerLostRecovery - .align 1 - .global Ftl_gc_temp_data_write_back - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type Ftl_gc_temp_data_write_back, %function -Ftl_gc_temp_data_write_back: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, lr} - .save {r4, r5, r6, lr} - movs r3, #0 - ldr r4, .L1542 - movs r5, #0 - movs r6, #20 - mov r2, r3 - ldr r1, [r4, #3164] - ldr r0, [r4, #3840] - bl FlashProgPages -.L1536: - ldr r1, [r4, #3164] - uxth r3, r5 - cmp r1, r3 - bhi .L1539 - ldr r0, [r4, #3840] - bl FtlGcBufFree - ldrh r3, [r4, #2448] - movs r0, #0 - str r0, [r4, #3164] - cbnz r3, .L1535 - movs r0, #1 - bl FtlGcFreeTempBlock - b .L1541 -.L1539: - muls r3, r6, r3 - ldr r2, [r4, #3840] - adds r5, r5, #1 - adds r1, r2, r3 - ldr r2, [r2, r3] - adds r0, r2, #1 - bne .L1537 - ldrh r0, [r4, #2444] - movs r5, #0 - ldr r1, [r4, #2324] - strh r5, [r1, r0, lsl #1] @ movhi - strh r2, [r4, #2444] @ movhi - ldr r2, [r4, #2732] - adds r2, r2, #1 - str r2, [r4, #2732] - ldr r2, [r4, #3840] - add r3, r3, r2 - ldr r0, [r3, #4] - ubfx r0, r0, #10, #16 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - bl FtlGcPageVarInit -.L1541: - movs r0, #1 -.L1535: - pop {r4, r5, r6, pc} -.L1537: - ldr r3, [r1, #12] - ldr r1, [r1, #4] - ldr r2, [r3, #8] - ldr r0, [r3, #12] - bl FtlGcUpdatePage - b .L1536 -.L1543: - .align 2 -.L1542: - .word .LANCHOR0 - .fnend - .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back - .align 1 - .global Ftl_get_new_temp_ppa - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type Ftl_get_new_temp_ppa, %function -Ftl_get_new_temp_ppa: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - movw r3, #65535 - ldr r4, .L1547 - ldrh r2, [r4, #2444] - cmp r2, r3 - beq .L1545 - ldrh r3, [r4, #2448] - cbnz r3, .L1546 -.L1545: - movs r0, #0 - movs r5, #0 - bl FtlGcFreeTempBlock - ldr r0, .L1547+4 - strb r5, [r4, #2452] - bl allocate_data_superblock - strh r5, [r4, #3192] @ movhi - strh r5, [r4, #3200] @ movhi - bl l2p_flush - mov r0, r5 - bl FtlEctTblFlush - bl FtlVpcTblFlush -.L1546: - ldr r0, .L1547+4 - pop {r3, r4, r5, lr} - b get_new_active_ppa -.L1548: - .align 2 -.L1547: - .word .LANCHOR0 - .word .LANCHOR0+2444 - .fnend - .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa - .align 1 - .global rk_ftl_garbage_collect - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type rk_ftl_garbage_collect, %function -rk_ftl_garbage_collect: - .fnstart - @ args = 0, pretend = 0, frame = 24 - @ frame_needed = 0, uses_anonymous_args = 0 - ldr r3, .L1667 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - mov r7, r0 - .pad #36 - sub sp, sp, #36 - mov r4, r3 - ldr r0, [r3, #3824] - cmp r0, #0 - bne .L1623 - ldrh r2, [r3, #2336] - cmp r2, #47 - bls .L1549 - ldr r2, .L1667+4 - ldrh r1, [r2, #4] - movw r2, #65535 - cmp r1, r2 - bne .L1551 -.L1554: - ldrh r0, [r4, #3204] - movw r2, #65535 - cmp r0, r2 - bne .L1552 -.L1553: - ldr r3, [r4, #3152] - movw r5, #65535 - ldrh r1, [r4, #2588] - adds r3, r3, #1 - add r3, r3, r7, lsl #7 - cmp r1, r5 - str r3, [r4, #3152] - bne .L1555 - ldrh r2, [r4, #2444] - cmp r2, r1 - bne .L1556 - ldrh r8, [r4, #3202] - cmp r8, r2 - bne .L1557 - ldrh r2, [r4, #2344] - cmp r2, #24 - ite cc - movcc r2, #5120 - movcs r2, #1024 - cmp r3, r2 - bls .L1557 - ldr r3, .L1667+8 - movs r6, #0 - str r6, [r4, #3152] - strh r6, [r3, #-184] @ movhi - bl GetSwlReplaceBlock - cmp r0, r8 - mov r5, r0 - bne .L1627 - ldrh r2, [r4, #2344] - ldrh r3, [r4, #3150] - cmp r2, r3 - bcs .L1560 - movs r0, #64 - bl List_get_gc_head_node - uxth r3, r0 - cmp r3, r5 - beq .L1562 - mov r0, r3 - ldr r3, [r4, #2324] - ldrh r3, [r3, r0, lsl #1] - cmp r3, #7 - bhi .L1563 - mov r0, r6 - bl List_get_gc_head_node - uxth r6, r0 - movs r3, #128 - strh r3, [r4, #3150] @ movhi - cmp r6, r5 - bne .L1559 -.L1562: - bl FtlGcReFreshBadBlk - cmp r7, #0 - bne .L1565 - movw r3, #65535 - cmp r5, r3 - bne .L1565 -.L1621: - ldrh r3, [r4, #2344] - cmp r3, #24 - bhi .L1628 - cmp r3, #16 - ldrh r6, [r4, #102] - bls .L1567 - lsrs r6, r6, #5 -.L1566: - ldrh r2, [r4, #3148] - cmp r2, r3 - bcs .L1570 - ldrh r3, [r4, #2444] - movw r2, #65535 - cmp r3, r2 - bne .L1571 - ldrh r2, [r4, #3202] - cmp r2, r3 - bne .L1571 - ldr r3, .L1667+8 - ldrh r0, [r3, #-184] - cbnz r0, .L1572 - ldr r3, [r4, #2504] - ldr r2, [r4, #2500] - add r3, r3, r3, lsl #1 - cmp r2, r3, lsr #2 - bcs .L1573 -.L1572: - ldrh r3, [r4, #2572] - add r3, r3, r3, lsl #1 - asrs r3, r3, #2 -.L1661: - strh r3, [r4, #3148] @ movhi - movs r3, #0 - str r3, [r4, #3160] -.L1549: - add sp, sp, #36 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1551: - ldrh r3, [r3, #2444] - cmp r3, r2 - beq .L1554 - movs r0, #1 - bl FtlGcFreeTempBlock - cmp r0, #0 - beq .L1554 - movs r0, #1 - b .L1549 -.L1552: - ldrh r3, [r4, #3202] - cmp r3, r2 - bne .L1553 - ldrh r1, [r4, #3206] - cmp r1, r3 - beq .L1553 - ldrh r2, [r4, #3208] - cmp r2, r3 - itttt ne - strhne r0, [r4, #3202] @ movhi - strhne r1, [r4, #3204] @ movhi - strhne r2, [r4, #3206] @ movhi - strhne r3, [r4, #3208] @ movhi - b .L1553 -.L1563: - movs r3, #64 -.L1660: - strh r3, [r4, #3150] @ movhi - b .L1562 -.L1560: - movs r3, #80 - b .L1660 -.L1627: - mov r6, r0 -.L1559: - ldr r3, [r4, #2324] - mov r5, r6 - ldrh r1, [r4, #3148] - ldrh r2, [r4, #2344] - ldrh r3, [r3, r6, lsl #1] - str r1, [sp, #4] - ldr r1, [r4, #2328] - ldr r0, .L1667+12 - ldrh r1, [r1, r6, lsl #1] - str r1, [sp] - mov r1, r6 - bl sftl_printk - b .L1562 -.L1567: - cmp r3, #12 - bls .L1568 - lsrs r6, r6, #4 - b .L1566 -.L1568: - cmp r3, #8 - bls .L1566 - lsrs r6, r6, #2 - b .L1566 -.L1628: - movs r6, #1 - b .L1566 -.L1573: - movs r3, #18 - b .L1661 -.L1571: - ldrh r3, [r4, #2572] - add r3, r3, r3, lsl #1 - asrs r3, r3, #2 - strh r3, [r4, #3148] @ movhi -.L1570: - ldrh r3, [r4, #3210] - cbz r3, .L1629 - adds r6, r6, #32 - uxth r6, r6 -.L1629: - movw r5, #65535 -.L1576: - ldrh r3, [r4, #2588] - movw r2, #65535 - cmp r3, r2 - bne .L1585 - cmp r5, r3 - beq .L1586 - strh r5, [r4, #2588] @ movhi -.L1587: - ldrh r0, [r4, #2588] - movw r7, #65535 - movs r3, #0 - strb r3, [r4, #2596] - cmp r0, r7 - beq .L1585 - bl IsBlkInGcList - cbz r0, .L1590 - strh r7, [r4, #2588] @ movhi -.L1590: - ldrh r2, [r4, #2588] - movw r3, #65535 - cmp r2, r3 - beq .L1585 - ldr r0, .L1667+16 - bl make_superblock - ldr r2, .L1667+8 - movs r3, #0 - strh r3, [r4, #2590] @ movhi - strb r3, [r4, #2594] - strh r3, [r2, #-182] @ movhi - ldrh r1, [r4, #2588] - ldr r3, [r4, #2324] - ldrh r3, [r3, r1, lsl #1] - strh r3, [r2, #-180] @ movhi -.L1585: - ldrh r3, [r4, #2588] - ldrh r2, [r4, #2348] - cmp r2, r3 - beq .L1591 - ldrh r2, [r4, #2396] - cmp r2, r3 - beq .L1591 - ldr r7, .L1667+8 -.L1592: - ldrh r9, [r4, #2588] - movw r3, #65535 - cmp r9, r3 - bne .L1593 - movs r3, #0 - mov r10, r3 - str r3, [r4, #3160] -.L1594: - ldrh r8, [r4, #3156] - mov r0, r8 - bl List_get_gc_head_node - uxth fp, r0 - cmp fp, r9 - strh fp, [r4, #2588] @ movhi - bne .L1595 - movs r3, #0 - movs r0, #8 - strh r3, [r4, #3156] @ movhi - b .L1549 -.L1577: - movs r3, #0 - ldrh r7, [r4, #2344] - str r3, [r4, #3160] - ldrh r3, [r4, #3148] - ldr r5, .L1667+8 - cmp r3, r7 - bcs .L1578 - ldrh r3, [r5, #-184] - cbnz r3, .L1579 - ldr r3, [r4, #2504] - ldr r2, [r4, #2500] - add r3, r3, r3, lsl #1 - cmp r2, r3, lsr #2 - bcs .L1580 -.L1579: - ldrh r3, [r4, #2572] - add r3, r3, r3, lsl #1 - asrs r3, r3, #2 -.L1662: - strh r3, [r4, #3148] @ movhi -.L1664: - bl FtlReadRefresh - ldrh r0, [r5, #-184] - b .L1549 -.L1580: - movs r3, #18 - b .L1662 -.L1578: - ldrh r0, [r5, #-184] - cmp r0, #0 - bne .L1582 - ldrh r6, [r4, #2572] - add r3, r6, r6, lsl #1 - asrs r3, r3, #2 - strh r3, [r4, #3148] @ movhi - bl List_get_gc_head_node - ldr r3, [r4, #2324] - uxth r0, r0 - ldrh r1, [r4, #104] - ldrh r2, [r3, r0, lsl #1] - ldrh r3, [r4, #32] - muls r3, r1, r3 - add r3, r3, r3, lsr #31 - cmp r2, r3, asr #1 - ble .L1583 - subs r6, r6, #1 - cmp r7, r6 - bge .L1664 -.L1583: - cmp r2, #0 - bne .L1582 - movw r0, #65535 - bl decrement_vpc_count - ldrh r0, [r4, #2344] - adds r0, r0, #1 - b .L1549 -.L1668: - .align 2 -.L1667: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR3 - .word .LC112 - .word .LANCHOR0+2588 -.L1586: - ldrh r3, [r4, #3202] - cmp r3, r5 - beq .L1587 - ldr r2, [r4, #2324] - ldrh r3, [r2, r3, lsl #1] - cbnz r3, .L1588 - strh r5, [r4, #3202] @ movhi -.L1588: - ldrh r3, [r4, #3202] - strh r3, [r4, #2588] @ movhi - movw r3, #65535 - strh r3, [r4, #3202] @ movhi - b .L1587 -.L1591: - movw r3, #65535 - strh r3, [r4, #2588] @ movhi -.L1665: - ldr r3, .L1669 - ldrh r0, [r3, #-184] - b .L1549 -.L1595: - str r0, [sp, #8] - mov r0, fp - bl IsBlkInGcList - add r8, r8, #1 - ldr r3, [sp, #8] - cbz r0, .L1596 - strh r8, [r4, #3156] @ movhi - b .L1594 -.L1596: - uxth r0, r3 - ldrh ip, [r4, #32] - ldrh r3, [r4, #102] - uxth r8, r8 - ldr r2, [r4, #2324] - strh r8, [r4, #3156] @ movhi - mul r3, ip, r3 - ldrh r1, [r2, r0, lsl #1] - add ip, r3, r3, lsr #31 - cmp r1, ip, asr #1 - bgt .L1598 - cmp r8, #48 - bls .L1599 - cmp r1, #8 - bls .L1599 - ldrh r1, [r4, #3192] - cmp r1, #35 - bhi .L1599 -.L1598: - strh r10, [r4, #3156] @ movhi -.L1599: - ldrh r2, [r2, r0, lsl #1] - cmp r3, r2 - bgt .L1600 - cmp r5, r9 - bne .L1600 - movs r3, #0 - strh r5, [r4, #2588] @ movhi - strh r3, [r4, #3156] @ movhi - b .L1665 -.L1600: - cbnz r2, .L1601 - movw r0, #65535 - bl decrement_vpc_count - ldrh r3, [r4, #3156] - adds r3, r3, #1 - strh r3, [r4, #3156] @ movhi - b .L1594 -.L1601: - movs r3, #0 - strb r3, [r4, #2596] - ldrh r3, [r4, #2348] - cmp r3, fp - bne .L1602 - movw r2, #665 - ldr r1, .L1669+4 - ldr r0, .L1669+8 - bl sftl_printk -.L1602: - ldrh r2, [r4, #2588] - ldrh r3, [r4, #2396] - cmp r2, r3 - bne .L1603 - movw r2, #666 - ldr r1, .L1669+4 - ldr r0, .L1669+8 - bl sftl_printk -.L1603: - ldrh r2, [r4, #2588] - ldrh r3, [r4, #2444] - cmp r2, r3 - bne .L1604 - movw r2, #667 - ldr r1, .L1669+4 - ldr r0, .L1669+8 - bl sftl_printk -.L1604: - ldr r0, .L1669+12 - bl make_superblock - ldrh r1, [r4, #2588] - movs r3, #0 - ldr r2, [r4, #2324] - strh r3, [r7, #-182] @ movhi - ldrh r2, [r2, r1, lsl #1] - strh r3, [r4, #2590] @ movhi - strb r3, [r4, #2594] - strh r2, [r7, #-180] @ movhi -.L1593: - bl FtlReadRefresh - movs r3, #1 - str r3, [r4, #3824] - ldrh r3, [r4, #102] - str r3, [sp, #12] - ldrh r3, [r4, #2590] - ldr r1, [sp, #12] - adds r2, r3, r6 - cmp r2, r1 - itt gt - movgt r2, r1 - subgt r6, r2, r3 - mov r3, #0 - it gt - uxthgt r6, r6 -.L1663: - str r3, [sp, #8] - ldrh r3, [sp, #8] - cmp r6, r3 - bls .L1614 - ldr r3, [sp, #8] - movw r10, #65535 - ldrh r1, [r4, #2590] - mov fp, #20 - ldrh lr, [r4, #32] - ldr r0, [r4, #3180] - add r1, r1, r3 - movs r3, #0 - ldr ip, .L1669+20 - mov r8, r3 - b .L1615 -.L1608: - ldrh r2, [ip, #2]! - cmp r2, r10 - beq .L1607 - mla r9, fp, r8, r0 - add r8, r8, #1 - orr r2, r1, r2, lsl #10 - uxth r8, r8 - str r2, [r9, #4] -.L1607: - adds r3, r3, #1 -.L1615: - uxth r2, r3 - cmp lr, r2 - bhi .L1608 - mov fp, #0 - ldrb r2, [r4, #2596] @ zero_extendqisi2 - mov r1, r8 - bl FlashReadPages -.L1609: - uxth r3, fp - cmp r8, r3 - bhi .L1613 - ldr r3, [sp, #8] - adds r3, r3, #1 - b .L1663 -.L1613: - mov r9, #20 - ldr r3, [r4, #3180] - mul r9, r9, fp - add r2, r3, r9 - ldr r3, [r3, r9] - adds r3, r3, #1 - beq .L1610 - ldr r10, [r2, #12] - movw r3, #61589 - ldrh r2, [r10] - cmp r2, r3 - bne .L1610 - ldr r3, [r10, #8] - adds r2, r3, #1 - bne .L1611 - movw r2, #703 - ldr r1, .L1669+4 - ldr r0, .L1669+8 - str r3, [sp, #16] - bl sftl_printk - ldr r3, [sp, #16] -.L1611: - movs r2, #0 - mov r0, r3 - add r1, sp, #28 - bl log2phys - ldr r0, [r4, #3180] - ldr r3, [sp, #28] - add r0, r0, r9 - ldr r2, [r0, #4] - cmp r2, r3 - bne .L1610 - ldrh r3, [r7, #-182] - movs r2, #20 - ldr r1, [r4, #3164] - str r2, [sp, #20] - adds r3, r3, #1 - strh r3, [r7, #-182] @ movhi - ldr r3, [r4, #3840] - mla r3, r2, r1, r3 - ldr r1, [r0, #16] - str r1, [r3, #16] - str r3, [sp, #16] - bl Ftl_get_new_temp_ppa - ldr r3, [sp, #16] - ldr r1, [r4, #3840] - ldr r2, [sp, #20] - str r0, [r3, #4] - ldr r3, [r4, #3164] - mla r3, r2, r3, r1 - ldr r2, [r4, #3180] - add r2, r2, r9 - ldr r1, [r2, #8] - str r1, [r3, #8] - movs r1, #1 - ldr r2, [r2, #12] - str r2, [r3, #12] - ldr r3, [sp, #28] - str r3, [r10, #12] - ldrh r3, [r4, #2444] - strh r3, [r10, #2] @ movhi - ldr r3, [r4, #2544] - ldr r0, [r4, #3180] - str r3, [r10, #4] - ldr r3, [r4, #3164] - add r0, r0, r9 - adds r3, r3, #1 - str r3, [r4, #3164] - bl FtlGcBufAlloc - ldrb r2, [r4, #2451] @ zero_extendqisi2 - ldr r3, [r4, #3164] - cmp r2, r3 - beq .L1612 - ldrh r3, [r4, #2448] - cbnz r3, .L1610 -.L1612: - bl Ftl_gc_temp_data_write_back - cbz r0, .L1610 -.L1666: - movs r3, #0 - ldrh r0, [r7, #-184] - str r3, [r4, #3824] - b .L1549 -.L1610: - add fp, fp, #1 - b .L1609 -.L1614: - ldrh r3, [r4, #2590] - add r6, r6, r3 - ldr r3, [sp, #12] - uxth r6, r6 - cmp r3, r6 - strh r6, [r4, #2590] @ movhi - bhi .L1616 - ldr r3, [r4, #3164] - cbz r3, .L1617 - bl Ftl_gc_temp_data_write_back - cmp r0, #0 - bne .L1666 -.L1617: - ldrh r6, [r7, #-182] - cbnz r6, .L1618 - ldrh r1, [r4, #2588] - ldr r3, [r4, #2324] - ldrh r3, [r3, r1, lsl #1] - cbz r3, .L1618 - ldrh r0, [r7, #-180] - ldrh r2, [r4, #2590] - str r3, [sp] - mov r3, r6 - str r0, [sp, #4] - ldr r0, .L1669+16 - bl sftl_printk - ldrh r2, [r4, #2588] - ldr r3, [r4, #2324] - strh r6, [r3, r2, lsl #1] @ movhi - ldrh r0, [r4, #2588] - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L1618: - movw r3, #65535 - strh r3, [r4, #2588] @ movhi -.L1616: - ldrh r3, [r4, #2344] - cmp r3, #2 - bhi .L1619 - ldrh r6, [r4, #102] - b .L1592 -.L1619: - movs r2, #0 - str r2, [r4, #3824] - ldr r2, .L1669 - ldrh r0, [r2, #-184] - cmp r0, #0 - bne .L1549 - adds r0, r3, #1 - b .L1549 -.L1623: - movs r0, #0 - b .L1549 -.L1670: - .align 2 -.L1669: - .word .LANCHOR3 - .word .LANCHOR1+551 - .word .LC1 - .word .LANCHOR0+2588 - .word .LC113 - .word .LANCHOR0+2602 -.L1555: - cmp r7, #0 - beq .L1621 -.L1565: - ldrh r2, [r4, #2444] - movw r3, #65535 - cmp r2, r3 - bne .L1632 -.L1622: - ldrh r3, [r4, #3202] - movw r2, #65535 - cmp r3, r2 - bne .L1632 - cmp r5, r3 - bne .L1632 - ldrh r3, [r4, #2588] - cmp r3, r5 - beq .L1577 -.L1582: - movw r5, #65535 -.L1632: - movs r6, #1 - b .L1576 -.L1556: - cmp r7, #0 - bne .L1582 - b .L1621 -.L1557: - cmp r7, #0 - beq .L1621 - movw r5, #65535 - b .L1622 - .fnend - .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect - .align 1 - .global sftl_gc - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_gc, %function -sftl_gc: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - movs r1, #1 - mov r0, r1 - b rk_ftl_garbage_collect - .fnend - .size sftl_gc, .-sftl_gc - .align 1 - .global FtlRead - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlRead, %function -FtlRead: - .fnstart - @ args = 0, pretend = 0, frame = 56 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r0, #16 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #84 - sub sp, sp, #84 - mov r7, r1 - mov r9, r3 - str r2, [sp, #56] - bne .L1673 - mov r2, r3 - ldr r1, [sp, #56] - add r0, r7, #256 - bl FtlVendorPartRead - str r0, [sp, #28] -.L1672: - ldr r0, [sp, #28] - add sp, sp, #84 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1673: - ldr r3, [sp, #56] - ldr r4, .L1705 - adds r3, r1, r3 - str r3, [sp, #36] - ldr r2, [sp, #36] - ldr r3, [r4, #140] - cmp r2, r3 - bhi .L1694 - ldr r3, .L1705+4 - ldr r3, [r3] - adds r0, r3, #1 - beq .L1695 - ldrh r5, [r4, #58] - mov r0, r7 - mov r8, #0 - mov r6, r8 - mov r1, r5 - bl __aeabi_uidiv - ldr r3, [sp, #36] - mov r1, r5 - str r0, [sp, #40] - subs r0, r3, #1 - bl __aeabi_uidiv - ldr r3, [sp, #40] - ldr r5, [sp, #40] - str r0, [sp, #44] - rsb r3, r3, #1 - str r8, [sp, #52] - add r3, r3, r0 - str r8, [sp, #48] - str r3, [sp, #32] - ldr r2, [sp, #32] - ldr r3, [r4, #2508] - str r8, [sp, #28] - add r3, r3, r2 - str r3, [r4, #2508] -.L1675: - ldr r3, [sp, #32] - cbnz r3, .L1692 - ldr r3, .L1705 - ldrh r2, [r3, #3210] - cbnz r2, .L1693 - ldrh r3, [r3, #2344] - cmp r3, #31 - bhi .L1672 -.L1693: - movs r1, #1 - movs r0, #0 - bl rk_ftl_garbage_collect - b .L1672 -.L1692: - add r1, sp, #76 - movs r2, #0 - mov r0, r5 - bl log2phys - ldr r3, [sp, #76] - adds r1, r3, #1 - bne .L1676 - mov r10, #0 -.L1677: - ldrh r0, [r4, #58] - cmp r10, r0 - bcc .L1679 -.L1680: - ldr r3, [sp, #32] - adds r5, r5, #1 - subs r3, r3, #1 - str r3, [sp, #32] - beq .L1684 - ldrh r3, [r4, #32] - cmp r6, r3, lsl #2 - bne .L1675 -.L1684: - cmp r6, #0 - beq .L1675 - movs r2, #0 - mov r1, r6 - ldr r0, [r4, #3836] - mov fp, #0 - bl FlashReadPages - lsl r3, r8, #9 - str r3, [sp, #68] - ldr r3, [sp, #48] - lsls r3, r3, #9 - str r3, [sp, #60] - ldr r3, [sp, #52] - lsls r3, r3, #9 - str r3, [sp, #64] -.L1691: - movs r3, #20 - ldr r1, [sp, #40] - mul r10, r3, fp - ldr r3, [r4, #3836] - add r3, r3, r10 - ldr r2, [r3, #16] - cmp r1, r2 - bne .L1686 - ldr r1, [r3, #8] - ldr r3, [r4, #3820] - cmp r1, r3 - bne .L1687 - ldr r3, [sp, #60] - mov r0, r9 - ldr r2, [sp, #64] - add r1, r1, r3 -.L1704: - bl ftl_memcpy -.L1687: - ldr r1, [r4, #3836] - add r1, r1, r10 - ldr r3, [r1, #12] - ldr r2, [r1, #16] - ldr r3, [r3, #8] - cmp r2, r3 - beq .L1688 - ldr r3, [r4, #2708] - adds r3, r3, #1 - str r3, [r4, #2708] - ldr r2, [r1, #8] - ldr r3, [r1, #12] - ldr r0, [r2, #4] - str r0, [sp, #16] - ldr r2, [r2] - ldr r0, .L1705+8 - str r2, [sp, #12] - ldr r2, [r3, #12] - str r2, [sp, #8] - ldr r2, [r3, #8] - str r2, [sp, #4] - ldr r2, [r3, #4] - str r2, [sp] - ldr r2, [r1, #4] - ldr r3, [r3] - ldr r1, [r1, #16] - bl sftl_printk -.L1688: - ldr r3, [r4, #3836] - ldr r1, [r3, r10] - add r0, r3, r10 - adds r2, r1, #1 - itttt eq - ldreq r2, [r4, #2708] - streq r1, [sp, #28] - addeq r2, r2, #1 - streq r2, [r4, #2708] - ldr r3, [r3, r10] - cmp r3, #256 - bne .L1690 - ldr r0, [r0, #4] - ubfx r0, r0, #10, #16 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L1690: - add fp, fp, #1 - cmp r6, fp - bne .L1691 - movs r6, #0 - b .L1675 -.L1679: - mla r0, r0, r5, r10 - cmp r7, r0 - bhi .L1678 - ldr r3, [sp, #36] - cmp r3, r0 - bls .L1678 - subs r0, r0, r7 - mov r1, #512 - add r0, r9, r0, lsl #9 - bl __memzero -.L1678: - add r10, r10, #1 - b .L1677 -.L1676: - ldr r2, [r4, #3836] - mov fp, #20 - ldrh r10, [r4, #58] - mla fp, fp, r6, r2 - str r3, [fp, #4] - ldr r3, [sp, #40] - cmp r5, r3 - bne .L1681 - ldr r3, [r4, #3820] - mov r1, r10 - mov r0, r7 - str r3, [fp, #8] - bl __aeabi_uidivmod - ldr r2, [sp, #56] - sub r3, r10, r1 - str r1, [sp, #48] - cmp r3, r2 - it cs - movcs r3, r2 - cmp r3, r10 - str r3, [sp, #52] - bne .L1682 - str r9, [fp, #8] -.L1682: - ldrh r3, [r4, #112] - ldr r2, [r4, #3816] - str r5, [fp, #16] - muls r3, r6, r3 - adds r6, r6, #1 - bic r3, r3, #3 - add r3, r3, r2 - str r3, [fp, #12] - b .L1680 -.L1681: - ldr r3, [sp, #44] - cmp r5, r3 - bne .L1683 - ldr r3, [r4, #3812] - ldr r2, [sp, #36] - str r3, [fp, #8] - mul r3, r10, r5 - sub r8, r2, r3 - cmp r10, r8 - bne .L1682 -.L1703: - subs r3, r3, r7 - add r3, r9, r3, lsl #9 - str r3, [fp, #8] - b .L1682 -.L1683: - mul r3, r5, r10 - b .L1703 -.L1686: - ldr r1, [sp, #44] - cmp r1, r2 - bne .L1687 - ldr r1, [r3, #8] - ldr r3, [r4, #3812] - cmp r1, r3 - bne .L1687 - ldrh r0, [r4, #58] - ldr r3, [sp, #44] - ldr r2, [sp, #68] - muls r0, r3, r0 - subs r0, r0, r7 - add r0, r9, r0, lsl #9 - b .L1704 -.L1694: - mov r3, #-1 -.L1695: - str r3, [sp, #28] - b .L1672 -.L1706: - .align 2 -.L1705: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC96 - .fnend - .size FtlRead, .-FtlRead - .align 1 - .global sftl_read - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_read, %function -sftl_read: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - @ link register save eliminated. - mov r3, r2 - mov r2, r1 - mov r1, r0 - movs r0, #0 - b FtlRead - .fnend - .size sftl_read, .-sftl_read - .align 1 - .global FtlWrite - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type FtlWrite, %function -FtlWrite: - .fnstart - @ args = 0, pretend = 0, frame = 64 - @ frame_needed = 0, uses_anonymous_args = 0 - cmp r0, #16 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .pad #68 - sub sp, sp, #68 - mov r10, r1 - str r2, [sp, #12] - str r3, [sp, #8] - bne .L1709 - mov r2, r3 - ldr r1, [sp, #12] - add r0, r10, #256 - bl FtlVendorPartWrite -.L1708: - add sp, sp, #68 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1709: - ldr r3, [sp, #12] - ldr r5, .L1759 - adds r6, r1, r3 - ldr r3, [r5, #140] - cmp r6, r3 - bhi .L1745 - ldr r4, .L1759+4 - ldr r0, [r4] - adds r7, r0, #1 - beq .L1708 - ldr r3, .L1759+8 - mov r2, #2048 - ldrh r7, [r5, #58] - mov r0, r10 - str r2, [r3, #-176] - mov r1, r7 - bl __aeabi_uidiv - mov r1, r7 - str r0, [sp, #4] - subs r0, r6, #1 - bl __aeabi_uidiv - ldr r2, [sp, #4] - str r0, [sp, #20] - subs r3, r0, r2 - str r3, [sp, #24] - adds r3, r3, #1 - str r3, [sp] - ldr r2, [sp] - ldr r3, [r5, #2516] - add r3, r3, r2 - str r3, [r5, #2516] - ldr r3, [r4, #8] - cbz r3, .L1747 - ldrh r2, [r5, #2352] - addw r3, r5, #2348 - addw r5, r5, #2396 - cmp r2, #0 - it ne - movne r5, r3 -.L1711: - ldr r7, [sp, #4] - ldr r4, .L1759 -.L1712: - ldr r3, [sp] - cbnz r3, .L1741 - mov r0, r3 - ldr r1, [sp, #24] - bl rk_ftl_garbage_collect - ldrh r3, [r4, #2344] - cmp r3, #15 - bls .L1742 -.L1744: - movs r0, #0 - b .L1708 -.L1747: - addw r5, r5, #2348 - b .L1711 -.L1741: - ldrb r2, [r5, #6] @ zero_extendqisi2 - ldrh r3, [r4, #32] - cmp r2, r3 - bcc .L1713 - mov r2, #996 - ldr r1, .L1759+12 - ldr r0, .L1759+16 - bl sftl_printk -.L1713: - ldrh r2, [r5, #4] - cbnz r2, .L1714 - ldr r3, .L1759+20 - ldr r6, .L1759+4 - cmp r5, r3 - bne .L1715 - ldrh r8, [r4, #2400] - cmp r8, #0 - bne .L1716 - add r0, r5, #48 - bl allocate_new_data_superblock - str r8, [r6, #8] -.L1716: - ldr r5, .L1759+20 - ldr r0, .L1759+20 - bl allocate_new_data_superblock - ldr r2, [r6, #8] - add r3, r5, #48 - cmp r2, #0 - it ne - movne r5, r3 -.L1717: - ldrh r3, [r5, #4] - cbnz r3, .L1714 - mov r0, r5 - bl allocate_new_data_superblock -.L1714: - ldrb r2, [r5, #7] @ zero_extendqisi2 - ldrh r3, [r5, #4] - ldr r1, [sp] - lsls r2, r2, #2 - cmp r3, r1 - it cs - movcs r3, r1 - cmp r2, r3 - it cs - movcs r2, r3 - ldrh r3, [r4, #32] - str r2, [sp, #36] - ldrb r2, [r5, #6] @ zero_extendqisi2 - cmp r2, r3 - bcc .L1718 - movw r2, #1029 - ldr r1, .L1759+12 - ldr r0, .L1759+16 - bl sftl_printk -.L1718: - mov fp, #0 -.L1719: - ldr r3, [sp, #36] - cmp fp, r3 - bne .L1739 -.L1720: - mov r3, r5 - movs r2, #0 - mov r1, fp - ldr r0, [r4, #3844] - bl FtlProgPages - ldr r3, [sp] - cmp fp, r3 - bls .L1740 - movw r2, #1106 - ldr r1, .L1759+12 - ldr r0, .L1759+16 - bl sftl_printk -.L1740: - ldr r3, [sp] - sub r3, r3, fp - str r3, [sp] - b .L1712 -.L1715: - str r2, [r6, #8] - ldrh r2, [r4, #2352] - cbnz r2, .L1750 - mov r0, r5 - bl allocate_new_data_superblock - b .L1717 -.L1750: - mov r5, r3 - b .L1714 -.L1739: - ldrh r3, [r5, #4] - cmp r3, #0 - beq .L1720 - movs r2, #0 - add r1, sp, #40 - mov r0, r7 - mov r8, #20 - bl log2phys - mov r0, r5 - mul r8, r8, fp - bl get_new_active_ppa - ldrh r2, [r4, #112] - ldr r3, [r4, #3844] - mul r1, r2, fp - add r3, r3, r8 - str r0, [r3, #4] - str r7, [r3, #16] - bic r1, r1, #3 - str r1, [sp, #28] - ldr r0, [sp, #28] - ldr r1, [r4, #3816] - add r9, r1, r0 - str r1, [sp, #32] - str r9, [r3, #12] - movs r1, #0 - mov r0, r9 - bl ftl_memset - ldr r3, [sp, #4] - cmp r7, r3 - beq .L1721 - ldr r3, [sp, #20] - cmp r7, r3 - bne .L1754 - ldrh r2, [r4, #58] - ldr r3, [sp, #12] - smulbb r2, r2, r7 - add r6, r10, r3 - movs r3, #0 - str r3, [sp, #16] - subs r6, r6, r2 - uxth r6, r6 - b .L1724 -.L1721: - ldrh r6, [r4, #58] - mov r0, r10 - mov r1, r6 - bl __aeabi_uidivmod - ldr r3, [sp, #12] - subs r6, r6, r1 - str r1, [sp, #16] - cmp r6, r3 - it cs - movcs r6, r3 -.L1724: - ldrh r3, [r4, #58] - cmp r6, r3 - ldr r3, [sp, #4] - bne .L1725 - cmp r7, r3 - ldr r3, [r4, #3844] - itte ne - mulne r6, r6, r7 - ldrne r2, [sp, #8] - ldreq r2, [sp, #8] - add r3, r3, r8 - itett ne - subne r6, r6, r10 - streq r2, [r3, #8] - addne r6, r2, r6, lsl #9 - strne r6, [r3, #8] -.L1727: - ldrb r2, [r5, #6] @ zero_extendqisi2 - ldrh r3, [r4, #32] - cmp r2, r3 - bcc .L1736 - movw r2, #1097 - ldr r1, .L1759+12 - ldr r0, .L1759+16 - bl sftl_printk -.L1736: - ldr r2, [sp, #32] - movw r3, #61589 - ldr r1, [sp, #28] - add fp, fp, #1 - strh r3, [r2, r1] @ movhi - ldr r3, [r4, #2544] - str r7, [r9, #8] - adds r7, r7, #1 - str r3, [r9, #4] - adds r3, r3, #1 - adds r2, r3, #1 - it eq - moveq r3, #0 - str r3, [r4, #2544] - ldr r3, [sp, #40] - str r3, [r9, #12] - ldrh r3, [r5] - strh r3, [r9, #2] @ movhi - b .L1719 -.L1725: - cmp r7, r3 - ldr r3, [r4, #3844] - ite eq - ldreq r2, [r4, #3820] - ldrne r2, [r4, #3812] - add r3, r3, r8 - str r2, [r3, #8] - ldr r3, [sp, #40] - adds r1, r3, #1 - beq .L1730 - str r3, [sp, #48] - movs r1, #1 - ldr r3, [r4, #3844] - add r0, sp, #44 - str r7, [sp, #60] - add r3, r3, r8 - ldr r2, [r3, #8] - ldr r3, [r3, #12] - str r2, [sp, #52] - movs r2, #0 - str r3, [sp, #56] - bl FlashReadPages - ldr r3, [sp, #44] - adds r3, r3, #1 - bne .L1731 - ldr r3, [r4, #2708] - adds r3, r3, #1 - str r3, [r4, #2708] -.L1734: - ldr r3, [sp, #4] - lsls r2, r6, #9 - cmp r7, r3 - bne .L1735 - ldr r3, [r4, #3844] - ldr r1, [sp, #8] - add r3, r3, r8 - ldr r0, [r3, #8] - ldr r3, [sp, #16] - add r0, r0, r3, lsl #9 -.L1757: - bl ftl_memcpy - b .L1727 -.L1760: - .align 2 -.L1759: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LANCHOR3 - .word .LANCHOR1+574 - .word .LC1 - .word .LANCHOR0+2348 -.L1731: - ldr r3, [r9, #8] - cmp r7, r3 - beq .L1733 - ldr r3, [r4, #2708] - mov r2, r7 - ldr r0, .L1761 - adds r3, r3, #1 - str r3, [r4, #2708] - ldr r1, [r9, #8] - bl sftl_printk -.L1733: - ldr r3, [r9, #8] - cmp r7, r3 - beq .L1734 - movw r2, #1082 - ldr r1, .L1761+4 - ldr r0, .L1761+8 - bl sftl_printk - b .L1734 -.L1730: - ldr r3, [r4, #3844] - movs r1, #0 - ldrh r2, [r4, #110] - add r3, r3, r8 - ldr r0, [r3, #8] - bl ftl_memset - b .L1734 -.L1735: - ldrh r1, [r4, #58] - ldr r0, [sp, #8] - ldr r3, [r4, #3844] - muls r1, r7, r1 - add r3, r3, r8 - sub r1, r1, r10 - add r1, r0, r1, lsl #9 - ldr r0, [r3, #8] - b .L1757 -.L1754: - ldr r3, [r4, #3844] - ldr r2, [sp, #8] - add r8, r8, r3 - ldrh r3, [r4, #58] - muls r3, r7, r3 - sub r3, r3, r10 - add r3, r2, r3, lsl #9 - str r3, [r8, #8] - b .L1727 -.L1742: - movw r5, #65535 -.L1755: - ldrh r3, [r4, #2588] - cmp r3, r5 - bne .L1743 - ldrh r3, [r4, #3202] - cmp r3, r5 - bne .L1743 - movs r0, #0 - bl List_get_gc_head_node - uxth r0, r0 - bl FtlGcRefreshBlock -.L1743: - movs r1, #1 - movs r3, #128 - mov r0, r1 - strh r3, [r4, #3150] @ movhi - strh r3, [r4, #3148] @ movhi - bl rk_ftl_garbage_collect - movs r1, #1 - movs r0, #0 - bl rk_ftl_garbage_collect - ldrh r3, [r4, #2344] - cmp r3, #8 - bls .L1755 - b .L1744 -.L1745: - mov r0, #-1 - b .L1708 -.L1762: - .align 2 -.L1761: - .word .LC114 - .word .LANCHOR1+574 - .word .LC1 - .fnend - .size FtlWrite, .-FtlWrite - .global __aeabi_idivmod - .align 1 - .global sftl_write - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_write, %function -sftl_write: - .fnstart - @ args = 0, pretend = 0, frame = 112 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r4, r5, r6, r7, r8, r9, r10, fp, lr} - .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} - adds r4, r0, r1 - subs r5, r4, #1 - .pad #124 - sub sp, sp, #124 - cmp r5, #63 - mov fp, r0 - str r1, [sp, #16] - str r2, [sp, #36] - ldr r6, .L1795 - bls .L1764 - cmp r0, #576 - bls .L1765 -.L1764: - ldr r3, [r6, #-172] - cmp r3, #0 - beq .L1766 - ldr r2, .L1795+4 - mov r0, #512 - ldrh r3, [r2, #14] - str r3, [sp, #20] - ldrh r3, [r2, #10] - ldrb r1, [sp, #20] @ zero_extendqisi2 - smulbb r3, r3, r1 - uxth r3, r3 - mov r1, r3 - str r3, [sp, #24] - bl __aeabi_uidiv - ldr r2, .L1795+8 - movs r3, #0 - ldr r1, .L1795+12 - str r0, [sp, #12] - sub r4, r2, #262144 -.L1770: - ldr r0, [r2, #-4] - cmp r0, #0 - beq .L1767 -.L1771: - ldr r3, [sp, #12] - movs r4, #0 - ldr r2, [sp, #24] - ldr r5, .L1795+4 - str r4, [sp, #28] - muls r3, r2, r3 - str r3, [sp, #48] - ldr r3, [sp, #12] - str r3, [sp, #32] -.L1768: - mov r1, #512 - ldr r0, .L1795+16 - bl __memzero - ldrh r7, [r5, #14] - mov r0, r4 - ldrh r6, [r5, #10] - mov r1, r7 - uxtb r8, r7 - uxth r3, r8 - str r3, [sp, #40] - ldrh r3, [sp, #40] - smulbb r6, r6, r3 - bl __aeabi_uidiv - uxth r6, r6 - mov r1, r0 - ldr r3, [r5, #3252] - movs r0, #0 - blx r3 - cmp r6, #512 - bcs .L1772 - mov r1, r7 - adds r0, r6, r4 - bl __aeabi_uidiv - ldr r3, [r5, #3252] - mov r1, r0 - movs r0, #0 - blx r3 -.L1772: - mov r1, r6 - mov r0, r4 - bl __aeabi_uidivmod - movs r6, #0 - mov r9, r1 - subs r3, r4, r1 - str r3, [sp, #44] -.L1773: - cmp r6, #512 - bcc .L1774 - ldrb r8, [r5, #14] @ zero_extendqisi2 - mov r0, r4 - ldrh r1, [r5, #10] - movs r6, #0 - uxth r3, r8 - str r3, [sp, #40] - ldrh r3, [sp, #40] - smulbb r1, r1, r3 - uxth r1, r1 - bl __aeabi_uidivmod - mov r10, r1 - subs r3, r4, r1 - uxth r0, r10 - mov r1, r8 - str r3, [sp, #44] - bl __aeabi_idivmod - uxth r7, r1 -.L1775: - cmp r6, #512 - bcs .L1779 - ldr r3, [sp, #40] - mov r1, r8 - add r0, r10, r6 - sub r9, r3, r7 - ldr r3, .L1795+16 - uxth r9, r9 - add r2, r3, r6, lsl #9 - str r2, [sp, #52] - bl __aeabi_uidiv - ldr r3, [sp, #44] - uxth r0, r0 - mov r1, r8 - add r7, r7, r3 - mla r0, r8, r0, r7 - bl __aeabi_uidiv - ldr r7, [r5, #3260] - mov r1, r0 - add r3, sp, #56 - ldr r2, [sp, #52] - movs r0, #0 - blx r7 - adds r0, r0, #1 - bne .L1776 -.L1779: - ldr r1, .L1795+20 - movs r6, #0 -.L1777: - ldr r3, .L1795+16 - mov r7, r1 - adds r1, r1, #4 - ldr r2, [r3, r6, lsl #2] - ldr r3, [r7] - cmp r2, r3 - beq .L1780 - mov r1, #512 - ldr r0, .L1795+16 - bl __memzero - ldr r2, .L1795+16 - mov r1, r4 - str r6, [sp] - ldr r3, [r7] - ldr r2, [r2, r6, lsl #2] - ldr r0, .L1795+24 - bl sftl_printk - mov r0, r4 - ldr r1, [sp, #20] - bl __aeabi_uidiv - ldr r3, [r5, #3252] - mov r1, r0 - movs r0, #0 - blx r3 - ldr r3, [sp, #12] - cmp r3, #1 - bls .L1781 - ldr r3, [sp, #24] - ldr r1, [sp, #20] - adds r0, r3, r4 - bl __aeabi_uidiv - ldr r3, [r5, #3252] - mov r1, r0 - movs r0, #0 - blx r3 -.L1781: - ldr r2, [sp, #32] - ldr r3, [sp, #12] - add r3, r3, r2 - ldr r2, [sp, #48] - add r4, r4, r2 - ldr r2, [sp, #32] - cmp r2, #15 - bls .L1787 -.L1786: - ldr r3, .L1795 - movs r2, #0 - str r2, [r3, #-172] -.L1766: - ldr r3, [sp, #36] - mov r1, fp - ldr r2, [sp, #16] - movs r0, #0 - bl FtlWrite - add sp, sp, #124 - @ sp needed - pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1767: - ldr r0, [r4, r3, lsl #2] - adds r3, r3, #1 - cmp r3, #4096 - it hi - movhi r3, #0 - str r0, [r2, #-4]! - cmp r1, r2 - bne .L1770 - b .L1771 -.L1787: - str r3, [sp, #32] - b .L1768 -.L1774: - mov r1, r8 - add r0, r9, r6 - bl __aeabi_uidiv - uxth r10, r0 - mov r1, r8 - ldr r0, [sp, #44] - mul r3, r8, r10 - str r3, [sp, #56] - movw r3, #61424 - str r3, [sp, #60] - ldr r3, .L1795+20 - add r2, r3, r6, lsl #9 - str r2, [sp, #52] - bl __aeabi_uidiv - ldr r7, [r5, #3256] - add r3, sp, #56 - add r1, r0, r10 - ldr r2, [sp, #52] - movs r0, #0 - blx r7 - ldr r3, [sp, #40] - add r6, r6, r3 - uxth r6, r6 - b .L1773 -.L1776: - add r6, r6, r9 - movs r7, #0 - uxth r6, r6 - b .L1775 -.L1780: - adds r6, r6, #1 - cmp r6, #65536 - bne .L1777 - ldr r3, [sp, #28] - adds r3, r3, #1 - cmp r3, #5 - str r3, [sp, #28] - bls .L1781 - b .L1786 -.L1765: - cmp r0, #63 - ldr r0, .L1795+20 - bhi .L1783 - ldr r3, [sp, #16] - rsb r1, fp, #64 - subs r2, r3, r1 - ldr r3, [sp, #36] - add r1, r3, r1, lsl #9 -.L1784: - movs r3, #1 - cmp r5, #576 - str r3, [r6, #-172] - ittt hi - subhi r2, r2, r4 - mvnhi r3, #446 - addhi r2, r2, r3 - lsls r2, r2, #9 - bl memcpy - b .L1766 -.L1783: - ldr r3, .L1795+28 - ldr r1, [sp, #36] - ldr r2, [sp, #16] - add r3, r3, fp - add r0, r0, r3, lsl #9 - b .L1784 -.L1796: - .align 2 -.L1795: - .word .LANCHOR3 - .word .LANCHOR0 - .word idb_buf+262144 - .word idb_buf+16388 - .word gp_flash_check_buf - .word idb_buf - .word .LC115 - .word 8388544 - .fnend - .size sftl_write, .-sftl_write - .align 1 .global FtlLoadSysInfo .syntax unified .thumb @@ -12515,60 +5505,60 @@ FtlLoadSysInfo: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} movs r1, #0 - ldr r4, .L1818 - ldr r3, [r4, #3284] + ldr r4, .L802 + ldr r3, [r4, #3292] ldrh r2, [r4, #40] ldr r0, [r4, #2324] - str r3, [r4, #3272] - ldr r3, [r4, #3288] + str r3, [r4, #3452] + ldr r3, [r4, #3324] lsls r2, r2, #1 - str r3, [r4, #3276] + str r3, [r4, #3456] bl ftl_memset ldrh r0, [r4, #2576] movw r3, #65535 cmp r0, r3 - bne .L1798 -.L1806: + bne .L782 +.L790: mov r0, #-1 pop {r3, r4, r5, r6, r7, pc} -.L1798: - ldr r7, .L1818+4 +.L782: + ldr r7, .L802+4 movs r1, #1 - add r6, r4, #3264 + addw r6, r4, #3444 bl FtlGetLastWrittenPage sxth r5, r0 adds r0, r0, #1 strh r0, [r4, #2578] @ movhi -.L1800: +.L784: cmp r5, #0 - bge .L1803 - movw r2, #1482 - ldr r1, .L1818+8 - ldr r0, .L1818+12 + bge .L787 + mov r2, #1448 + ldr r1, .L802+8 + ldr r0, .L802+12 bl sftl_printk -.L1802: +.L786: ldrh r3, [r4, #40] ldrh r2, [r4, #110] adds r3, r3, #24 cmp r2, r3, lsl #1 - bcs .L1805 - movw r2, #1484 - ldr r1, .L1818+8 - ldr r0, .L1818+12 + bcs .L789 + movw r2, #1450 + ldr r1, .L802+8 + ldr r0, .L802+12 bl sftl_printk -.L1805: +.L789: movs r2, #48 - ldr r1, [r4, #3272] - ldr r0, .L1818+16 + ldr r1, [r4, #3452] + ldr r0, .L802+16 bl ftl_memcpy ldrh r2, [r4, #40] - ldr r1, [r4, #3272] + ldr r1, [r4, #3452] ldr r0, [r4, #2324] lsls r2, r2, #1 adds r1, r1, #48 bl ftl_memcpy ldrh r1, [r4, #40] - ldr r3, [r4, #3272] + ldr r3, [r4, #3452] ldr r0, [r4, #24] lsrs r2, r1, #3 adds r1, r1, #24 @@ -12578,23 +5568,22 @@ FtlLoadSysInfo: add r1, r1, r3 bl ftl_memcpy ldr r2, [r4, #2268] - ldr r3, .L1818+4 + ldr r3, .L802+4 cmp r2, r3 - bne .L1806 + bne .L790 ldrb r2, [r4, #2278] @ zero_extendqisi2 ldrh r3, [r4, #54] ldrh r5, [r4, #2276] cmp r2, r3 strh r5, [r4, #2582] @ movhi - bne .L1806 - ldr r3, .L1818+20 + bne .L790 + ldrh r3, [r4, #102] ldrh r2, [r4, #58] ldr r6, [r4, #44] - str r5, [r3, #-168] - ldrh r3, [r4, #102] ldrh r0, [r4, #158] - ldrh r1, [r4, #32] muls r3, r5, r3 + str r5, [r4, #3464] + ldrh r1, [r4, #32] subs r0, r6, r0 subs r0, r0, r5 str r3, [r4, #2504] @@ -12603,12 +5592,12 @@ FtlLoadSysInfo: bl __aeabi_uidiv cmp r5, r6 strh r0, [r4, #2572] @ movhi - bls .L1807 - movw r2, #1506 - ldr r1, .L1818+8 - ldr r0, .L1818+12 + bls .L791 + mov r2, #1472 + ldr r1, .L802+8 + ldr r0, .L802+12 bl sftl_printk -.L1807: +.L791: ldrh r3, [r4, #2284] ldrh r1, [r4, #2282] lsrs r2, r3, #6 @@ -12663,68 +5652,67 @@ FtlLoadSysInfo: strhi r3, [r4, #2544] movw r3, #65535 cmp r1, r3 - beq .L1810 - ldr r0, .L1818+24 + beq .L794 + ldr r0, .L802+20 bl make_superblock -.L1810: +.L794: ldrh r2, [r4, #2396] movw r3, #65535 cmp r2, r3 - beq .L1811 - ldr r0, .L1818+28 + beq .L795 + ldr r0, .L802+24 bl make_superblock -.L1811: +.L795: ldrh r2, [r4, #2444] movw r3, #65535 cmp r2, r3 - beq .L1812 - ldr r0, .L1818+32 + beq .L796 + ldr r0, .L802+28 bl make_superblock -.L1812: +.L796: ldrh r2, [r4, #2588] movw r3, #65535 cmp r2, r3 - beq .L1813 - ldr r0, .L1818+36 + beq .L797 + ldr r0, .L802+32 bl make_superblock -.L1813: +.L797: movs r0, #0 pop {r3, r4, r5, r6, r7, pc} -.L1803: +.L787: ldrh r3, [r4, #2576] movs r2, #1 mov r1, r2 mov r0, r6 orr r3, r5, r3, lsl #10 - str r3, [r4, #3268] - ldr r3, [r4, #3284] - str r3, [r4, #3272] + str r3, [r4, #3448] + ldr r3, [r4, #3292] + str r3, [r4, #3452] bl FlashReadPages - ldr r3, [r4, #3264] + ldr r3, [r4, #3444] adds r3, r3, #1 - beq .L1801 - ldr r3, [r4, #3284] + beq .L785 + ldr r3, [r4, #3292] ldr r3, [r3] cmp r3, r7 - bne .L1801 - ldr r3, [r4, #3288] + bne .L785 + ldr r3, [r4, #3324] ldrh r2, [r3] movw r3, #61604 cmp r2, r3 - beq .L1802 -.L1801: + beq .L786 +.L785: subs r5, r5, #1 sxth r5, r5 - b .L1800 -.L1819: + b .L784 +.L803: .align 2 -.L1818: +.L802: .word .LANCHOR0 .word 1179929683 - .word .LANCHOR1+583 + .word .LANCHOR1+256 .word .LC1 .word .LANCHOR0+2268 - .word .LANCHOR3 .word .LANCHOR0+2348 .word .LANCHOR0+2396 .word .LANCHOR0+2444 @@ -12732,6 +5720,5137 @@ FtlLoadSysInfo: .fnend .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 1 + .global FlashProgPages + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FlashProgPages, %function +FlashProgPages: + .fnstart + @ args = 0, pretend = 0, frame = 48 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + ldr r6, .L840 + mov fp, r1 + mov r4, r0 + mov r5, r0 + str r3, [sp, #12] + mov r10, #0 + ldrh r3, [r6, #12] + mov r8, r6 + str r2, [sp, #8] + str r3, [sp] + lsls r3, r3, #3 + str r3, [sp, #4] +.L805: + cmp r10, fp + bne .L818 + ldr r3, [sp, #12] + cmp r3, #0 + beq .L811 + movs r5, #0 + ldr r7, .L840+4 + ldr r8, .L840+24 + ldr r9, .L840+28 + b .L819 +.L818: + ldr r3, [r5, #8] + cbz r3, .L806 + ldr r3, [r5, #12] + cbnz r3, .L807 +.L806: + movs r2, #136 + ldr r1, .L840+8 + ldr r0, .L840+12 + bl sftl_printk +.L807: + add r2, sp, #20 + add r1, sp, #24 + mov r0, r5 + bl l2p_addr_tran + ldr r7, [sp, #20] + cbnz r7, .L808 + ldr r3, [sp, #24] + ldr r2, [sp, #4] + cmp r2, r3 + bls .L808 + ldr r5, .L840+8 + ldr r6, .L840+16 + ldr r8, .L840+32 + b .L839 +.L810: + mov r3, #-1 + ldr r2, [r4, #-16] + str r3, [r4, #-20] + mov r1, r5 + mov r0, r6 + adds r7, r7, #1 + bl sftl_printk + movs r3, #16 + movs r2, #4 + ldr r1, [r4, #-12] + mov r0, r8 + bl rknand_print_hex + movs r3, #4 + ldr r1, [r4, #-8] + mov r2, r3 + ldr r0, .L840+20 + bl rknand_print_hex +.L839: + cmp r7, fp + add r4, r4, #20 + bne .L810 + bl dump_stack +.L811: + movs r0, #0 + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L808: + ldr r1, [r5, #8] + lsls r3, r1, #26 + beq .L825 + ldr r9, [r8, #3312] + cmp r1, r9 + beq .L812 + ldrh r2, [r8, #58] + mov r0, r9 + lsls r2, r2, #9 + bl ftl_memcpy +.L812: + ldr r3, [r5, #12] + mov r2, r9 + ldr r1, [sp, #24] + ldrb r0, [sp, #20] @ zero_extendqisi2 + ldr r7, [r8, #3252] + blx r7 + cbnz r0, .L813 + str r0, [r5] +.L814: + ldrh r3, [r8, #14] + cmp r3, #4 + bne .L816 + ldr r0, [sp] + add r2, r9, #2048 + ldr r3, [r5, #12] + ldr r1, [sp, #24] + ldr r7, [r8, #3252] + adds r3, r3, #8 + add r1, r1, r0 + ldrb r0, [sp, #20] @ zero_extendqisi2 + blx r7 + cbz r0, .L816 + mov r3, #-1 + str r3, [r5] +.L816: + add r10, r10, #1 + adds r5, r5, #20 + b .L805 +.L825: + mov r9, r1 + b .L812 +.L813: + mov r3, #-1 + str r3, [r5] + b .L814 +.L823: + ldr r2, [r6, #3312] + movs r3, #0 + movs r1, #1 + add r0, sp, #28 + str r3, [r2] + ldr r2, [r6, #3320] + str r3, [r2] + ldr r3, [r4, #4] + ldr r2, [sp, #8] + str r3, [sp, #32] + ldr r3, [r6, #3312] + str r3, [sp, #36] + ldr r3, [r6, #3320] + str r3, [sp, #40] + bl FlashReadPages + ldr fp, [sp, #28] + cmp fp, #-1 + bne .L820 + ldr r1, [r4, #4] + mov r0, r7 + bl sftl_printk + str fp, [r4] +.L820: + ldr r3, [r4, #12] + cbz r3, .L821 + ldr r2, [r3] + ldr r3, [r6, #3320] + ldr r3, [r3] + cmp r2, r3 + beq .L821 + ldr r1, [r4, #4] + mov r0, r8 + bl sftl_printk + mov r3, #-1 + str r3, [r4] +.L821: + ldr r3, [r4, #8] + cbz r3, .L822 + ldr r2, [r3] + ldr r3, [r6, #3312] + ldr r3, [r3] + cmp r2, r3 + beq .L822 + ldr r1, [r4, #4] + mov r0, r9 + bl sftl_printk + mov r3, #-1 + str r3, [r4] +.L822: + adds r5, r5, #1 + adds r4, r4, #20 +.L819: + cmp r10, r5 + bne .L823 + b .L811 +.L841: + .align 2 +.L840: + .word .LANCHOR0 + .word .LC86 + .word .LANCHOR1+271 + .word .LC1 + .word .LC80 + .word .LC82 + .word .LC87 + .word .LC88 + .word .LC81 + .fnend + .size FlashProgPages, .-FlashProgPages + .align 1 + .global FtlLowFormatEraseBlock + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlLowFormatEraseBlock, %function +FtlLowFormatEraseBlock: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r10, #0 + ldr r4, .L887 + mov r7, r1 + mov r6, r10 + mov r5, r10 + mov r9, #20 + .pad #20 + sub sp, sp, #20 + mov fp, r4 + str r0, [sp, #4] + str r0, [r4, #3276] +.L843: + ldrh r1, [r4, #32] + uxth r3, r10 + cmp r1, r3 + bhi .L848 + cmp r6, #0 + beq .L842 + mov r8, #0 + mov r9, #20 + mov r2, r6 + movs r1, #0 + ldr r0, [r4, #3260] + bl FlashEraseBlocks +.L851: + uxth r3, r8 + cmp r6, r3 + bhi .L853 + cmp r7, #0 + beq .L870 + ldrh r3, [r4, #104] + mov r10, #1 + str r3, [sp, #8] +.L854: + mov r8, #0 + mov fp, #20 +.L864: + mov r9, #0 + mov r6, r9 +.L855: + ldrh r1, [r4, #32] + uxth r3, r9 + cmp r1, r3 + bhi .L859 + cbz r6, .L842 + mov r9, #0 + movs r3, #1 + mov r2, r10 + mov r1, r6 + ldr r0, [r4, #3260] + bl FlashProgPages +.L861: + uxth r3, r9 + cmp r6, r3 + bhi .L863 + add r8, r8, #1 + ldr r2, [sp, #8] + uxth r3, r8 + cmp r2, r3 + bhi .L864 + mov r8, #0 + mov r9, #20 +.L865: + uxth r3, r8 + cmp r6, r3 + bhi .L867 + ldr r3, [sp, #4] + cmp r3, #63 + bls .L868 + cbz r7, .L842 +.L868: + mov r2, r6 + mov r1, r10 + ldr r0, [r4, #3260] + bl FlashEraseBlocks +.L842: + mov r0, r5 + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L848: + uxth r3, r10 + ldr r0, [r4, #3260] + movs r2, #0 + mul r1, r9, r3 + add r3, r3, r4 + str r2, [r0, r1] + ldr r1, [sp, #4] + ldrb r0, [r3, #60] @ zero_extendqisi2 + bl V2P_block + mov r8, r0 + cbz r7, .L844 + bl IsBlkInVendorPart + cbnz r0, .L845 +.L844: + mov r0, r8 + bl FtlBbmIsBadBlock + cbnz r0, .L846 + ldr r1, [r4, #3260] + lsl r3, r8, #10 + ldr r0, [fp, #3328] + mla r1, r9, r6, r1 + str r3, [r1, #4] + ldr r3, [r4, #3308] + str r3, [r1, #8] + ldrh r3, [r4, #112] + muls r3, r6, r3 + add r6, r6, #1 + it mi + addmi r3, r3, #3 + uxth r6, r6 + bic r3, r3, #3 + add r3, r3, r0 + str r3, [r1, #12] +.L845: + add r10, r10, #1 + b .L843 +.L846: + adds r5, r5, #1 + uxth r5, r5 + b .L845 +.L853: + mul r3, r9, r8 + ldr r2, [r4, #3260] + adds r1, r2, r3 + ldr r3, [r2, r3] + adds r3, r3, #1 + bne .L852 + ldr r0, [r1, #4] + adds r5, r5, #1 + uxth r5, r5 + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock +.L852: + add r8, r8, #1 + b .L851 +.L870: + movs r3, #2 + mov r10, r7 + str r3, [sp, #8] + b .L854 +.L859: + uxth r3, r9 + ldr r0, [r4, #3260] + movs r2, #0 + mul r1, fp, r3 + add r3, r3, r4 + str r2, [r0, r1] + ldr r1, [sp, #4] + ldrb r0, [r3, #60] @ zero_extendqisi2 + bl V2P_block + str r0, [sp, #12] + cbz r7, .L856 + bl IsBlkInVendorPart + cbnz r0, .L857 +.L856: + ldr r0, [sp, #12] + bl FtlBbmIsBadBlock + cbnz r0, .L857 + ldr r1, [r4, #3260] + ldr r3, [sp, #12] + ldr r2, .L887 + mla r1, fp, r6, r1 + ldr r0, [r2, #3308] + add r3, r8, r3, lsl #10 + str r3, [r1, #4] + ldr r3, [r4, #3304] + str r3, [r1, #8] + ldrh r3, [r4, #112] + muls r3, r6, r3 + add r6, r6, #1 + it mi + addmi r3, r3, #3 + uxth r6, r6 + bic r3, r3, #3 + add r3, r3, r0 + str r3, [r1, #12] +.L857: + add r9, r9, #1 + b .L855 +.L863: + mul r3, fp, r9 + ldr r2, [r4, #3260] + adds r1, r2, r3 + ldr r3, [r2, r3] + cbz r3, .L862 + ldr r0, [r1, #4] + adds r5, r5, #1 + uxth r5, r5 + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock +.L862: + add r9, r9, #1 + b .L861 +.L867: + cbz r7, .L866 + mul r3, r9, r8 + ldr r2, [r4, #3260] + adds r1, r2, r3 + ldr r3, [r2, r3] + cbnz r3, .L866 + ldr r0, [r1, #4] + movs r1, #1 + ubfx r0, r0, #10, #16 + bl FtlFreeSysBlkQueueIn +.L866: + add r8, r8, #1 + b .L865 +.L888: + .align 2 +.L887: + .word .LANCHOR0 + .fnend + .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock + .align 1 + .global Ftl_write_map_blk_to_last_page + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type Ftl_write_map_blk_to_last_page, %function +Ftl_write_map_blk_to_last_page: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, r6, r7, lr} + .save {r3, r4, r5, r6, r7, lr} + movw r2, #65535 + ldrh r3, [r0] + mov r4, r0 + ldr r5, [r0, #12] + cmp r3, r2 + bne .L890 + ldrh r3, [r0, #8] + cbz r3, .L891 + movw r2, #641 + ldr r1, .L899 + ldr r0, .L899+4 + bl sftl_printk +.L891: + ldrh r3, [r4, #8] + adds r3, r3, #1 + strh r3, [r4, #8] @ movhi + bl FtlFreeSysBlkQueueOut + movs r3, #0 + strh r0, [r5] @ movhi + strh r3, [r4, #2] @ movhi + strh r3, [r4] @ movhi + ldr r3, [r4, #28] + adds r3, r3, #1 + str r3, [r4, #28] +.L892: + movs r0, #0 + pop {r3, r4, r5, r6, r7, pc} +.L890: + ldrh r6, [r5, r3, lsl #1] + movs r1, #255 + ldrh r3, [r0, #2] + ldr r5, .L899+8 + ldr r2, [r0, #28] + ldr r7, [r0, #24] + orr r3, r3, r6, lsl #10 + str r3, [r5, #3448] + ldr r3, [r5, #3292] + str r3, [r5, #3452] + ldr r3, [r5, #3324] + str r3, [r5, #3456] + str r2, [r3, #4] + movw r2, #64245 + strh r2, [r3, #8] @ movhi + ldrh r2, [r0, #4] + strh r6, [r3, #2] @ movhi + strh r2, [r3] @ movhi + ldrh r2, [r5, #104] + ldr r0, [r5, #3292] + lsls r2, r2, #3 + bl ftl_memset + movs r2, #0 + mov r3, r2 +.L893: + ldrh r0, [r4, #6] + uxth r1, r2 + cmp r0, r1 + bhi .L895 + movs r2, #1 + movs r3, #0 + mov r1, r2 + ldr r0, .L899+12 + bl FlashProgPages + ldrh r3, [r4, #2] + mov r0, r4 + adds r3, r3, #1 + strh r3, [r4, #2] @ movhi + bl ftl_map_blk_gc + b .L892 +.L895: + uxth r1, r2 + ldr r0, [r7, r1, lsl #2] + cmp r6, r0, lsr #10 + bne .L894 + ldr r0, [r5, #3292] + adds r3, r3, #1 + uxth r3, r3 + str r1, [r0, r3, lsl #3] + ldr r0, [r7, r1, lsl #2] + ldr r1, [r5, #3292] + add r1, r1, r3, lsl #3 + str r0, [r1, #4] +.L894: + adds r2, r2, #1 + b .L893 +.L900: + .align 2 +.L899: + .word .LANCHOR1+286 + .word .LC1 + .word .LANCHOR0 + .word .LANCHOR0+3444 + .fnend + .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .align 1 + .global FtlMapWritePage + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlMapWritePage, %function +FtlMapWritePage: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r4, r0 + ldr r7, .L925 + mov r8, r1 + mov r10, r2 + movs r6, #0 + ldr r9, .L925+20 + mov r5, r7 +.L902: + ldr r3, [r7, #2524] + adds r3, r3, #1 + str r3, [r7, #2524] + ldrh r3, [r7, #104] + ldrh r2, [r4, #2] + subs r3, r3, #1 + cmp r2, r3 + bge .L903 + ldrh r2, [r4] + movw r3, #65535 + cmp r2, r3 + bne .L904 +.L903: + mov r0, r4 + bl Ftl_write_map_blk_to_last_page +.L904: + ldrh r2, [r4] + ldr r3, [r4, #12] + ldrh r3, [r3, r2, lsl #1] + cbnz r3, .L905 + movw r2, #699 + mov r1, r9 + ldr r0, .L925+4 + bl sftl_printk +.L905: + ldrh r2, [r4] + ldrh r3, [r4, #10] + cmp r2, r3 + bcc .L906 + mov r2, #700 + mov r1, r9 + ldr r0, .L925+4 + bl sftl_printk +.L906: + ldrh r2, [r4] + movs r1, #16 + ldr r3, [r4, #12] + ldr r0, [r5, #3324] + ldrh fp, [r3, r2, lsl #1] + ldrh r3, [r4, #2] + str r0, [r5, #3456] + str r10, [r5, #3452] + orr r3, r3, fp, lsl #10 + str r3, [r5, #3448] + bl __memzero + ldr r3, [r5, #3456] + ldr r2, [r4, #28] + ldr r0, .L925+8 + strh r8, [r3, #8] @ movhi + str r2, [r3, #4] + ldrh r2, [r4, #4] + strh fp, [r3, #2] @ movhi + strh r2, [r3] @ movhi + movs r3, #1 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r4, #2] + adds r3, r3, #1 + uxth r3, r3 + strh r3, [r4, #2] @ movhi + ldr r2, [r5, #3444] + adds r1, r2, #1 + bne .L907 + ldr r1, [r5, #3448] + adds r6, r6, #1 + ldr r0, .L925+12 + uxth r6, r6 + bl sftl_printk + ldrh r3, [r4, #2] + cmp r3, #2 + ittt ls + ldrhls r3, [r5, #104] + addls r3, r3, #-1 + strhls r3, [r4, #2] @ movhi + cmp r6, #3 + bls .L909 + mov r2, r6 + ldr r1, [r5, #3448] + ldr r0, .L925+16 + bl sftl_printk +.L910: + b .L910 +.L909: + ldr r3, [r4, #32] + cmp r3, #0 + beq .L902 +.L924: + b .L924 +.L907: + cmp r3, #1 + beq .L913 + cmp r2, #256 + beq .L913 + ldr r0, [r4, #36] + cbz r0, .L914 +.L913: + movs r3, #0 + str r3, [r4, #36] + b .L902 +.L914: + ldr r2, [r5, #3448] + ldr r3, [r4, #24] + str r2, [r3, r8, lsl #2] + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L926: + .align 2 +.L925: + .word .LANCHOR0 + .word .LC1 + .word .LANCHOR0+3444 + .word .LC89 + .word .LC90 + .word .LANCHOR1+317 + .fnend + .size FtlMapWritePage, .-FtlMapWritePage + .align 1 + .global load_l2p_region + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type load_l2p_region, %function +load_l2p_region: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + mov r6, r0 + ldr r4, .L934 + mov r8, r1 + ldrh r3, [r4, #136] + cmp r3, r0 + bcs .L928 + movw r2, #485 + ldr r1, .L934+4 + ldr r0, .L934+8 + bl sftl_printk +.L928: + ldr r3, [r4, #3368] + movs r5, #12 + ldr r7, [r3, r6, lsl #2] + cbnz r7, .L929 + mul r5, r5, r8 + ldr r3, [r4, #2492] + ldrh r2, [r4, #110] + movs r1, #255 + add r3, r3, r5 + ldr r0, [r3, #8] + bl ftl_memset + ldr r3, [r4, #2492] + strh r6, [r3, r5] @ movhi + ldr r3, [r4, #2492] + add r5, r5, r3 + str r7, [r5, #4] +.L930: + movs r0, #0 + pop {r4, r5, r6, r7, r8, pc} +.L929: + mul r5, r5, r8 + ldr r3, [r4, #2492] + movs r2, #1 + ldr r0, .L934+12 + mov r1, r2 + str r7, [r4, #3448] + add r3, r3, r5 + ldr r3, [r3, #8] + str r3, [r4, #3452] + ldr r3, [r4, #3324] + str r3, [r4, #3456] + bl FlashReadPages + ldr r8, [r4, #3456] + ldrh r3, [r8, #8] + cmp r3, r6 + beq .L931 + mov r2, r7 + mov r1, r6 + ldr r0, .L934+16 + bl sftl_printk + movs r3, #4 + ldr r1, [r4, #3456] + mov r2, r3 + ldr r0, .L934+20 + bl rknand_print_hex + ldrh r3, [r4, #136] + movs r2, #4 + ldr r1, [r4, #3368] + ldr r0, .L934+24 + bl rknand_print_hex +.L932: + ldrh r3, [r8, #8] + cmp r3, r6 + beq .L933 + mov r2, #508 + ldr r1, .L934+4 + ldr r0, .L934+8 + bl sftl_printk +.L933: + ldr r3, [r4, #2492] + movs r1, #0 + adds r2, r3, r5 + str r1, [r2, #4] + strh r6, [r3, r5] @ movhi + b .L930 +.L931: + ldr r3, [r4, #3444] + cmp r3, #256 + bne .L932 + mov r2, r7 + mov r1, r6 + ldr r0, .L934+28 + bl sftl_printk + ldr r3, [r4, #2492] + mov r1, r6 + ldr r0, .L934+32 + add r3, r3, r5 + ldr r2, [r3, #8] + bl FtlMapWritePage + b .L932 +.L935: + .align 2 +.L934: + .word .LANCHOR0 + .word .LANCHOR1+333 + .word .LC1 + .word .LANCHOR0+3444 + .word .LC91 + .word .LC92 + .word .LC93 + .word .LC94 + .word .LANCHOR0+3384 + .fnend + .size load_l2p_region, .-load_l2p_region + .align 1 + .global ftl_map_blk_gc + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type ftl_map_blk_gc, %function +ftl_map_blk_gc: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + mov r4, r0 + ldr r6, [r0, #12] + ldr r10, [r0, #24] + bl ftl_free_no_use_map_blk + ldrh r3, [r4, #10] + ldrh r2, [r4, #8] + ldr r5, .L952 + subs r3, r3, #5 + cmp r2, r3 + blt .L937 + uxth r0, r0 + ldrh r9, [r6, r0, lsl #1] + cmp r9, #0 + beq .L937 + ldr r3, [r4, #32] + cbnz r3, .L937 + movs r2, #1 + str r2, [r4, #32] + strh r3, [r6, r0, lsl #1] @ movhi + ldrh r3, [r4, #8] + ldrh r2, [r4, #2] + subs r3, r3, #1 + strh r3, [r4, #8] @ movhi + ldrh r3, [r5, #104] + cmp r2, r3 + bcc .L938 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk +.L938: + movs r6, #0 +.L939: + ldrh r2, [r4, #6] + uxth fp, r6 + cmp r2, fp + bhi .L946 + movs r1, #1 + mov r0, r9 + bl FtlFreeSysBlkQueueIn + movs r3, #0 + str r3, [r4, #32] +.L937: + ldrh r2, [r4, #2] + ldrh r3, [r5, #104] + cmp r2, r3 + bcc .L947 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk +.L947: + movs r0, #0 + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L946: + uxth r7, r6 + ldr r2, [r10, r7, lsl #2] + add r3, r10, r7, lsl #2 + str r3, [sp, #4] + cmp r9, r2, lsr #10 + bne .L940 + ldr r2, [r5, #3296] + ldr r8, [r5, #3324] + ldr r0, .L952+4 + str r2, [r5, #3452] + str r8, [r5, #3456] + ldr r2, [r10, r7, lsl #2] + str r2, [r5, #3448] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldrh r2, [r8, #8] + cmp r2, fp + beq .L941 + movw r2, #611 + ldr r1, .L952+8 + ldr r0, .L952+12 + bl sftl_printk +.L941: + ldr r2, [r5, #3444] + adds r2, r2, #1 + bne .L942 +.L944: + ldr r2, [sp, #4] + movs r3, #0 + str r3, [r2] +.L943: + b .L943 +.L942: + ldrh r2, [r8, #8] + cmp r2, fp + bne .L944 + ldrh r2, [r8] + ldrh r3, [r4, #4] + cmp r2, r3 + bne .L944 + ldr r2, [r5, #3452] + mov r1, r7 + mov r0, r4 + bl FtlMapWritePage +.L940: + adds r6, r6, #1 + b .L939 +.L953: + .align 2 +.L952: + .word .LANCHOR0 + .word .LANCHOR0+3444 + .word .LANCHOR1+349 + .word .LC1 + .fnend + .size ftl_map_blk_gc, .-ftl_map_blk_gc + .align 1 + .global FtlMapTblRecovery + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlMapTblRecovery, %function +FtlMapTblRecovery: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #28 + sub sp, sp, #28 + ldr r3, [r0, #24] + mov r4, r0 + movs r1, #0 + ldrh r10, [r0, #6] + str r3, [sp, #4] + ldr r3, [r0, #16] + ldr r5, .L981 + ldr r9, [r0, #12] + lsl r2, r10, #2 + str r3, [sp, #12] + ldrh r3, [r0, #8] + ldr r0, [sp, #4] + str r3, [sp, #8] + bl ftl_memset + ldr r3, [r5, #3292] + movs r2, #1 + ldr r6, [r5, #3324] + str r2, [r4, #36] + str r3, [r5, #3452] + movw r3, #65535 + str r6, [r5, #3456] + strh r3, [r4] @ movhi + strh r3, [r4, #2] @ movhi + movs r3, #0 + str r3, [r4, #32] + mov r8, r3 + str r3, [r4, #28] + ldr r3, [sp, #8] + add fp, r3, #-1 + mov r3, r5 +.L955: + ldr r1, [sp, #8] + sxth r2, r8 + cmp r2, r1 + bge .L972 + cmp r2, fp + lsl r7, r2, #1 + bne .L956 + ldrh r0, [r9, fp, lsl #1] + movs r1, #1 + bl FtlGetLastWrittenPage + ldr r3, [sp, #12] + add r7, r7, r9 + strh r8, [r4] @ movhi + sxth r9, r0 + ldr r8, .L981+4 + adds r0, r0, #1 + strh r0, [r4, #2] @ movhi + add r9, r9, #1 + ldr r3, [r3, fp, lsl #2] + mov fp, #0 + str r3, [r4, #28] +.L957: + sxth r2, fp + cmp r2, r9 + blt .L959 +.L972: + mov r0, r4 + bl ftl_free_no_use_map_blk + ldrh r2, [r4, #2] + ldrh r3, [r5, #104] + cmp r2, r3 + bne .L961 + mov r0, r4 + bl ftl_map_blk_alloc_new_blk +.L961: + mov r0, r4 + bl ftl_map_blk_gc + mov r0, r4 + bl ftl_map_blk_gc + movs r0, #0 + add sp, sp, #28 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L959: + ldrh r1, [r7] + mov r0, r8 + orr r2, r2, r1, lsl #10 + str r2, [r5, #3448] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #3444] + adds r2, r2, #1 + beq .L958 + ldrh r2, [r6, #8] + cmp r10, r2 + bls .L958 + ldrh r1, [r4, #4] + ldrh r0, [r6] + cmp r0, r1 + ittt eq + ldreq r1, [r5, #3448] + ldreq r3, [sp, #4] + streq r1, [r3, r2, lsl #2] +.L958: + add fp, fp, #1 + b .L957 +.L956: + ldr r1, [r5, #3292] + str r3, [sp, #20] + add r3, r9, r7 + ldr r0, .L981+4 + str r1, [r5, #3452] + ldrh r1, [r9, r2, lsl #1] + ldrh r2, [r5, #104] + str r3, [sp, #16] + subs r2, r2, #1 + orr r2, r2, r1, lsl #10 + str r2, [r5, #3448] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [r5, #3444] + ldr r3, [sp, #20] + adds r2, r2, #1 + beq .L974 + ldrh r1, [r6] + ldrh r2, [r4, #4] + cmp r1, r2 + bne .L974 + ldrh r1, [r6, #8] + movw r2, #64245 + cmp r1, r2 + beq .L963 +.L974: + movs r7, #0 +.L964: + ldrh r1, [r3, #104] + sxth r2, r7 + cmp r2, r1 + bge .L970 + ldr r1, [sp, #16] + ldr r0, .L981+4 + str r3, [sp, #20] + ldrh r1, [r1] + orr r2, r2, r1, lsl #10 + str r2, [r3, #3448] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r3, [sp, #20] + ldr r2, [r3, #3444] + adds r2, r2, #1 + beq .L968 + ldrh r2, [r6, #8] + cmp r10, r2 + bls .L968 + ldrh r0, [r6] + ldrh r1, [r4, #4] + cmp r0, r1 + ittt eq + ldreq r1, [r3, #3448] + ldreq r0, [sp, #4] + streq r1, [r0, r2, lsl #2] +.L968: + adds r7, r7, #1 + b .L964 +.L963: + movs r0, #0 + mov ip, #4 +.L965: + ldrh r1, [r5, #104] + sxth r2, r0 + subs r1, r1, #1 + cmp r2, r1 + blt .L967 +.L970: + add r8, r8, #1 + b .L955 +.L967: + ldr r7, [r5, #3292] + ldr r1, [r7, r2, lsl #3] + uxth lr, r1 + cmp r10, lr + bls .L966 + add r2, ip, r2, lsl #3 + ldr r2, [r7, r2] + ldr r7, [sp, #4] + str r2, [r7, lr, lsl #2] +.L966: + adds r0, r0, #1 + b .L965 +.L982: + .align 2 +.L981: + .word .LANCHOR0 + .word .LANCHOR0+3444 + .fnend + .size FtlMapTblRecovery, .-FtlMapTblRecovery + .align 1 + .global FtlLoadVonderInfo + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlLoadVonderInfo, %function +FtlLoadVonderInfo: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r0, .L984 + push {r3, lr} + .save {r3, lr} + ldrh r3, [r0, #120] + strh r3, [r0, #3478] @ movhi + movw r3, #61574 + strh r3, [r0, #3472] @ movhi + ldrh r3, [r0, #144] + strh r3, [r0, #3476] @ movhi + ldrh r3, [r0, #122] + strh r3, [r0, #3474] @ movhi + ldr r3, [r0, #148] + addw r0, r0, #3468 + str r3, [r0, #12] + ldr r3, [r0, #-108] + str r3, [r0, #16] + ldr r3, [r0, #-112] + str r3, [r0, #20] + ldr r3, [r0, #-104] + str r3, [r0, #24] + bl FtlMapTblRecovery + movs r0, #0 + pop {r3, pc} +.L985: + .align 2 +.L984: + .word .LANCHOR0 + .fnend + .size FtlLoadVonderInfo, .-FtlLoadVonderInfo + .align 1 + .global FtlLoadMapInfo + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlLoadMapInfo, %function +FtlLoadMapInfo: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, lr} + .save {r3, lr} + bl FtlL2PDataInit + ldr r0, .L987 + bl FtlMapTblRecovery + movs r0, #0 + pop {r3, pc} +.L988: + .align 2 +.L987: + .word .LANCHOR0+3384 + .fnend + .size FtlLoadMapInfo, .-FtlLoadMapInfo + .align 1 + .global flush_l2p_region + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type flush_l2p_region, %function +flush_l2p_region: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + movs r4, #12 + ldr r5, .L990 + muls r4, r0, r4 + ldr r3, [r5, #2492] + addw r0, r5, #3384 + adds r2, r3, r4 + ldrh r1, [r3, r4] + ldr r2, [r2, #8] + bl FtlMapWritePage + ldr r3, [r5, #2492] + movs r0, #0 + add r4, r4, r3 + ldr r3, [r4, #4] + bic r3, r3, #-2147483648 + str r3, [r4, #4] + pop {r3, r4, r5, pc} +.L991: + .align 2 +.L990: + .word .LANCHOR0 + .fnend + .size flush_l2p_region, .-flush_l2p_region + .align 1 + .global log2phys + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type log2phys, %function +log2phys: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r9, r0 + ldr r4, .L1005 + mov r5, r1 + mov r7, r2 + ldr r3, [r4, #2504] + ldrh r10, [r4, #108] + cmp r0, r3 + bcc .L993 + movw r2, #811 + ldr r1, .L1005+4 + ldr r0, .L1005+8 + bl sftl_printk +.L993: + ldr r3, [r4, #2504] + cmp r9, r3 + bcs .L994 + add r10, r10, #7 + ldrh r2, [r4, #138] + lsr r6, r9, r10 + ldr r1, [r4, #2492] + movs r3, #0 + uxth r6, r6 + mov fp, #12 +.L995: + uxth r8, r3 + cmp r8, r2 + bcc .L1000 + bl select_l2p_ram_region + mul fp, fp, r0 + ldr r3, [r4, #2492] + mov r8, r0 + ldrh r1, [r3, fp] + add r2, r3, fp + movw r3, #65535 + cmp r1, r3 + beq .L1001 + ldr r3, [r2, #4] + cmp r3, #0 + bge .L1001 + bl flush_l2p_region +.L1001: + mov r1, r8 + mov r0, r6 + bl load_l2p_region + b .L997 +.L994: + mov r0, #-1 + cbnz r7, .L992 + str r0, [r5] + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1000: + adds r3, r3, #1 + mla r0, fp, r3, r1 + ldrh r0, [r0, #-12] + cmp r0, r6 + bne .L995 +.L997: + movs r0, #1 + movs r3, #12 + lsl r0, r0, r10 + subs r0, r0, #1 + and r0, r0, r9 + uxth r0, r0 + cbnz r7, .L998 + ldr r2, [r4, #2492] + mla r3, r3, r8, r2 + ldr r3, [r3, #8] + ldr r3, [r3, r0, lsl #2] + str r3, [r5] +.L999: + ldr r2, [r4, #2492] + movs r3, #12 + mla r8, r3, r8, r2 + ldr r3, [r8, #4] + adds r2, r3, #1 + beq .L1003 + adds r3, r3, #1 + str r3, [r8, #4] +.L1003: + movs r0, #0 +.L992: + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L998: + mul r3, r3, r8 + ldr r2, [r4, #2492] + ldr r1, [r5] + add r2, r2, r3 + ldr r2, [r2, #8] + str r1, [r2, r0, lsl #2] + ldr r2, [r4, #2492] + strh r6, [r4, #2496] @ movhi + add r3, r3, r2 + ldr r2, [r3, #4] + orr r2, r2, #-2147483648 + str r2, [r3, #4] + b .L999 +.L1006: + .align 2 +.L1005: + .word .LANCHOR0 + .word .LANCHOR1+364 + .word .LC1 + .fnend + .size log2phys, .-log2phys + .align 1 + .global FtlReUsePrevPpa + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlReUsePrevPpa, %function +FtlReUsePrevPpa: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, lr} + .save {r4, r5, r6, r7, lr} + .pad #12 + mov r6, r0 + ldr r5, .L1017 + ubfx r0, r1, #10, #16 + str r1, [sp, #4] + bl P2V_block_in_plane + ldr r2, [r5, #2324] + mov r7, r0 + ldrh r3, [r2, r0, lsl #1] + cbnz r3, .L1008 + ldr r4, [r5, #2340] + cbz r4, .L1009 + ldr r1, [r5, #2316] + mov ip, #6 + ldr r2, .L1017+4 + movw lr, #65535 + ldrh r0, [r5, #2344] + subs r4, r4, r1 + asrs r4, r4, #1 + muls r4, r2, r4 + uxth r4, r4 +.L1010: + uxth r2, r3 + cmp r0, r2 + bls .L1009 + cmp r4, r7 + bne .L1011 + mov r1, r4 + ldr r0, .L1017+8 + bl List_remove_node + ldrh r3, [r5, #2344] + cbnz r3, .L1012 + movw r2, #1699 + ldr r1, .L1017+12 + ldr r0, .L1017+16 + bl sftl_printk +.L1012: + ldrh r3, [r5, #2344] + mov r0, r4 + subs r3, r3, #1 + strh r3, [r5, #2344] @ movhi + bl INSERT_DATA_LIST + ldr r2, [r5, #2324] + ldrh r3, [r2, r7, lsl #1] +.L1008: + adds r3, r3, #1 + strh r3, [r2, r7, lsl #1] @ movhi + b .L1009 +.L1011: + mul r4, ip, r4 + adds r3, r3, #1 + ldrh r4, [r1, r4] + cmp r4, lr + bne .L1010 +.L1009: + movs r2, #1 + add r1, sp, #4 + mov r0, r6 + bl log2phys + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, pc} +.L1018: + .align 2 +.L1017: + .word .LANCHOR0 + .word -1431655765 + .word .LANCHOR0+2340 + .word .LANCHOR1+373 + .word .LC1 + .fnend + .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .align 1 + .global ftl_check_vpc + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type ftl_check_vpc, %function +ftl_check_vpc: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + movs r4, #0 + ldr r6, .L1043 + ldr r7, .L1043+4 + ldr r1, .L1043+8 + mov r5, r6 + ldr r0, .L1043+12 + bl sftl_printk + mov r1, #8192 + ldr r0, .L1043+4 + bl __memzero +.L1020: + ldr r3, [r6, #2504] + cmp r4, r3 + bcc .L1022 + ldr r8, .L1043+4 + movs r4, #0 + ldr r10, .L1043+24 + mov r7, r4 + movw r9, #65535 +.L1023: + ldrh r2, [r5, #40] + uxth r3, r4 + cmp r2, r3 + bhi .L1025 + ldr r4, [r5, #2340] + cbz r4, .L1026 + ldr r3, [r5, #2316] + movs r6, #0 + ldrh r8, [r5, #2344] + mov fp, #6 + ldr r9, .L1043+4 + subs r4, r4, r3 + ldr r3, .L1043+16 + asrs r4, r4, #1 + ldr r10, .L1043+28 + muls r4, r3, r4 + uxth r4, r4 +.L1027: + uxth r3, r6 + cmp r8, r3 + bls .L1026 + ldr r3, [r5, #2324] + ldrh r2, [r3, r4, lsl #1] + cbz r2, .L1028 + movs r7, #1 + ldrh r3, [r9, r4, lsl #1] + mov r1, r4 + mov r0, r10 + bl sftl_printk +.L1028: + mul r4, fp, r4 + ldr r3, [r5, #2316] + adds r6, r6, #1 + ldrh r4, [r3, r4] + movw r3, #65535 + cmp r4, r3 + bne .L1027 +.L1026: + cbz r7, .L1019 + movw r2, #2343 + ldr r1, .L1043+8 + ldr r0, .L1043+20 + bl sftl_printk +.L1019: + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1022: + movs r2, #0 + add r1, sp, #4 + mov r0, r4 + bl log2phys + ldr r0, [sp, #4] + adds r3, r0, #1 + beq .L1021 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r7, r0, lsl #1] + adds r3, r3, #1 + strh r3, [r7, r0, lsl #1] @ movhi +.L1021: + adds r4, r4, #1 + b .L1020 +.L1025: + ldr r3, [r5, #2324] + uxth r6, r4 + ldrh r2, [r3, r6, lsl #1] + ldrh r3, [r8, r6, lsl #1] + cmp r2, r3 + beq .L1024 + mov r1, r6 + mov r0, r10 + bl sftl_printk + ldr r3, [r5, #2324] + ldrh r3, [r3, r6, lsl #1] + cmp r3, r9 + beq .L1024 + ldrh r2, [r8, r6, lsl #1] + cmp r2, r3 + it hi + movhi r7, #1 +.L1024: + adds r4, r4, #1 + b .L1023 +.L1044: + .align 2 +.L1043: + .word .LANCHOR0 + .word check_vpc_table + .word .LANCHOR1+389 + .word .LC95 + .word -1431655765 + .word .LC1 + .word .LC96 + .word .LC97 + .fnend + .size ftl_check_vpc, .-ftl_check_vpc + .align 1 + .global ftl_scan_all_data + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type ftl_scan_all_data, %function +ftl_scan_all_data: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + movs r5, #0 + ldr r6, .L1059 + .pad #32 + sub sp, sp, #32 + movs r1, #0 + ldr r8, .L1059+16 + mov r4, r6 + ldr r0, .L1059+4 + bl sftl_printk +.L1046: + ldr r3, [r6, #2504] + cmp r5, r3 + bcc .L1052 + add sp, sp, #32 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L1052: + movs r2, #0 + add r1, sp, #28 + mov r0, r5 + bl log2phys + ubfx r3, r5, #0, #11 + cbnz r3, .L1047 + ldr r2, [sp, #28] + mov r1, r5 + mov r0, r8 + bl sftl_printk +.L1047: + ldr r3, [sp, #28] + adds r2, r3, #1 + beq .L1049 + str r3, [r4, #3448] + movs r2, #0 + ldr r3, [r4, #3292] + movs r1, #1 + ldr r7, [r4, #3324] + ldr r0, .L1059+8 + str r3, [r4, #3452] + str r5, [r4, #3460] + str r7, [r4, #3456] + str r2, [r4, #3444] + bl FlashReadPages + ldr r3, [r4, #3444] + cmp r3, #256 + beq .L1050 + adds r3, r3, #1 + beq .L1050 + ldr r3, [r7, #8] + cmp r5, r3 + beq .L1049 +.L1050: + ldr r2, [r4, #3452] + ldr r3, [r4, #3456] + ldr r0, .L1059+12 + ldr r1, [r2, #4] + str r1, [sp, #16] + mov r1, r5 + ldr r2, [r2] + str r2, [sp, #12] + ldr r2, [r3, #12] + str r2, [sp, #8] + ldr r2, [r3, #8] + str r2, [sp, #4] + ldr r2, [r3, #4] + str r2, [sp] + ldr r3, [r3] + ldr r2, [r4, #3448] + bl sftl_printk +.L1049: + adds r5, r5, #1 + b .L1046 +.L1060: + .align 2 +.L1059: + .word .LANCHOR0 + .word .LC98 + .word .LANCHOR0+3444 + .word .LC100 + .word .LC99 + .fnend + .size ftl_scan_all_data, .-ftl_scan_all_data + .align 1 + .global FtlGcScanTempBlk + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlGcScanTempBlk, %function +FtlGcScanTempBlk: + .fnstart + @ args = 0, pretend = 0, frame = 48 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L1093 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #52 + sub sp, sp, #52 + mov r4, r0 + str r1, [sp, #12] + ldrh r6, [r3, #4] + movw r3, #65535 + cmp r6, r3 + beq .L1087 + cbnz r6, .L1062 +.L1063: + bl FtlGcPageVarInit + b .L1064 +.L1087: + movs r6, #0 +.L1062: + ldr r3, .L1093+4 + ldr r2, [sp, #12] + ldrh r3, [r3, #102] + cmp r3, r2 + beq .L1063 +.L1064: + movw r9, #65535 + movs r3, #0 + str r3, [sp, #4] +.L1065: + movs r3, #0 + strb r3, [r4, #8] + ldrh r3, [r4] + cmp r3, r9 + beq .L1066 + ldr r5, .L1093+4 +.L1084: + ldr r3, [r5, #3280] + movs r2, #0 + ldrh ip, [r5, #32] + add lr, r4, #16 + ldrh fp, [r5, #110] + mov r7, r2 + str r3, [sp, #8] + mov r8, #20 + ldr r3, [r5, #3172] + ldr r10, [r5, #3176] + str r3, [sp, #16] + ldrh r3, [r5, #112] + str r3, [sp, #20] +.L1067: + uxth r3, r2 + cmp ip, r3 + bhi .L1071 + mov fp, #0 + movs r2, #0 + mov r1, r7 + ldr r0, [sp, #8] + bl FlashReadPages +.L1072: + uxth r3, fp + cmp r7, r3 + bhi .L1082 + ldr r3, [sp, #4] + adds r6, r6, #1 + uxth r6, r6 + adds r3, r3, #1 + str r3, [sp, #4] + ldr r2, [sp, #4] + ldr r3, [sp, #12] + cmp r3, r2 + bls .L1083 +.L1085: + ldrh r3, [r5, #102] + cmp r3, r6 + bhi .L1084 +.L1066: + ldr r3, .L1093 + movw r2, #65535 + strh r6, [r4, #2] @ movhi + mov r1, r6 + mov r0, r4 + strh r2, [r3, #4] @ movhi + movs r2, #0 + strb r2, [r4, #6] + bl ftl_sb_update_avl_pages + b .L1086 +.L1071: + ldrh r3, [lr], #2 + cmp r3, r9 + beq .L1068 + ldr r1, [sp, #8] + orr r3, r6, r3, lsl #10 + mla r1, r8, r7, r1 + str r3, [r1, #4] + mov r3, fp + muls r3, r7, r3 + it mi + addmi r3, r3, #3 + bic r3, r3, #3 + mov r0, r3 + ldr r3, [sp, #16] + add r0, r0, r3 + ldr r3, [sp, #20] + muls r3, r7, r3 + add r7, r7, #1 + it mi + addmi r3, r3, #3 + uxth r7, r7 + bic r3, r3, #3 + str r0, [r1, #8] + add r3, r3, r10 + str r3, [r1, #12] +.L1068: + adds r2, r2, #1 + b .L1067 +.L1082: + movs r3, #20 + ldr r1, [r5, #3280] + mul r3, r3, fp + adds r2, r1, r3 + ldr r8, [r1, r3] + ldr r0, [r2, #4] + str r0, [sp, #8] + cmp r8, #0 + bne .L1073 + ldr r10, [r2, #12] + ldrh r2, [r10] + cmp r2, r9 + bne .L1074 + ldrh r2, [r4] + ldr r3, [r5, #2324] + strh r8, [r3, r2, lsl #1] @ movhi +.L1092: + ldrh r0, [r4] + movs r6, #0 + bl INSERT_FREE_LIST + strh r9, [r4] @ movhi + bl FtlGcPageVarInit + b .L1065 +.L1074: + mov r2, r8 + add r1, sp, #24 + ldr r0, [r10, #8] + str r3, [sp, #16] + bl log2phys + ldr r2, [r10, #12] + ldr r1, [sp, #24] + ldr r3, [sp, #16] + cmp r2, r1 + beq .L1076 +.L1080: + ldr r2, [r10, #8] + add fp, fp, #1 + ldr r1, [sp, #8] + ldr r0, [r10, #12] + bl FtlGcUpdatePage + b .L1072 +.L1076: + str r2, [sp, #32] + movs r1, #1 + ldr r2, [r5, #3308] + add r0, sp, #28 + str r3, [sp, #16] + str r2, [sp, #36] + ldr r2, [r5, #3328] + str r2, [sp, #40] + mov r2, r8 + bl FlashReadPages + ldrh r2, [r5, #58] + ldr r1, [r5, #3280] + ldr r3, [sp, #16] + ldr r0, [sp, #36] + lsls r2, r2, #7 + add ip, r3, r1 +.L1077: + cmp r8, r2 + beq .L1080 + ldr r1, [ip, #8] + ldr r3, [r0, r8, lsl #2] + ldr r1, [r1, r8, lsl #2] + cmp r1, r3 + beq .L1078 + ldr r2, [sp, #32] + ldrh r1, [r4] + ldr r0, .L1093+8 + bl sftl_printk +.L1073: + ldrh r2, [r4] + movs r1, #0 + ldr r3, [r5, #2324] + strh r1, [r3, r2, lsl #1] @ movhi + b .L1092 +.L1078: + add r8, r8, #1 + b .L1077 +.L1083: + ldr r2, .L1093 + ldrh r3, [r2, #4] + cmp r3, r9 + beq .L1085 + ldr r1, [sp, #4] + add r3, r3, r1 + strh r3, [r2, #4] @ movhi + ldrh r3, [r5, #102] + cmp r3, r6 + bls .L1085 +.L1086: + mov r0, #-1 + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1094: + .align 2 +.L1093: + .word .LANCHOR2 + .word .LANCHOR0 + .word .LC101 + .fnend + .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .align 1 + .global FtlReadRefresh + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlReadRefresh, %function +FtlReadRefresh: + .fnstart + @ args = 0, pretend = 0, frame = 88 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L1108 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + .pad #88 + sub sp, sp, #88 + mov r4, r3 + ldr r0, [r3, #2716] + cmp r0, #0 + beq .L1096 + ldr r1, [r3, #2720] + ldr r2, [r3, #2504] + cmp r1, r2 + bcs .L1097 + mov r5, #2048 +.L1102: + ldr r0, [r4, #2720] + ldr r3, [r4, #2504] + cmp r0, r3 + bcs .L1099 + movs r2, #0 + mov r1, sp + bl log2phys + ldr r2, [sp] + ldr r3, [r4, #2720] + adds r1, r2, #1 + add r3, r3, #1 + str r3, [r4, #2720] + beq .L1100 + str r3, [sp, #20] + add r0, sp, #88 + ldr r3, [r4, #3316] + movs r1, #1 + str r2, [sp, #8] + movs r2, #0 + str r2, [r0, #-84]! + str r3, [sp, #12] + add r3, sp, #24 + str r3, [sp, #16] + bl FlashReadPages + ldr r3, [sp, #4] + cmp r3, #256 + bne .L1099 + ldr r0, [sp] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1099: + mov r0, #-1 +.L1095: + add sp, sp, #88 + @ sp needed + pop {r4, r5, r6, pc} +.L1100: + subs r5, r5, #1 + bne .L1102 + b .L1099 +.L1097: + ldr r2, [r3, #2508] + movs r0, #0 + str r0, [r3, #2716] + str r0, [r3, #2720] + str r2, [r3, #2712] + b .L1095 +.L1096: + ldr r1, [r3, #2508] + ldr r6, [r3, #2712] + add r2, r1, #1048576 + cmp r6, r2 + bhi .L1105 + ldr r2, [r3, #2564] + lsrs r5, r2, #10 + mov r2, #33554432 + asrs r2, r2, r5 + add r2, r2, r6 + cmp r1, r2 + bhi .L1105 + ldrb r3, [r3, #2296] @ zero_extendqisi2 + cmp r3, #0 + bne .L1095 +.L1105: + movs r3, #1 + movs r0, #0 + str r3, [r4, #2716] + str r0, [r4, #2720] + str r1, [r4, #2712] + b .L1095 +.L1109: + .align 2 +.L1108: + .word .LANCHOR0 + .fnend + .size FtlReadRefresh, .-FtlReadRefresh + .align 1 + .global FtlMapBlkWriteDump_data + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlMapBlkWriteDump_data, %function +FtlMapBlkWriteDump_data: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r6, r0 + ldr r3, [r0, #36] + cbz r3, .L1110 + ldrh r5, [r0, #6] + movs r3, #0 + ldr r4, .L1114 + ldr r2, [r0, #24] + str r3, [r0, #36] + subs r5, r5, #1 + ldr r0, [r4, #3296] + uxth r5, r5 + ldr r1, [r4, #3324] + str r0, [r4, #3452] + str r1, [r4, #3456] + ldr r2, [r2, r5, lsl #2] + str r2, [r4, #3448] + cbz r2, .L1112 + movs r2, #1 + addw r0, r4, #3444 + mov r1, r2 + bl FlashReadPages +.L1113: + ldr r2, [r4, #3452] + mov r1, r5 + mov r0, r6 + pop {r4, r5, r6, lr} + b FtlMapWritePage +.L1112: + ldrh r2, [r4, #110] + movs r1, #255 + bl ftl_memset + b .L1113 +.L1110: + pop {r4, r5, r6, pc} +.L1115: + .align 2 +.L1114: + .word .LANCHOR0 + .fnend + .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data + .align 1 + .global FlashTestBlk + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FlashTestBlk, %function +FlashTestBlk: + .fnstart + @ args = 0, pretend = 0, frame = 88 + @ frame_needed = 0, uses_anonymous_args = 0 + cmp r0, #11 + push {r4, r5, lr} + .save {r4, r5, lr} + mov r4, r0 + .pad #92 + sub sp, sp, #92 + bls .L1118 + ldr r3, .L1119 + add r0, sp, #24 + movs r2, #32 + movs r1, #165 + lsls r4, r4, #10 + str r0, [sp, #16] + ldr r5, [r3, #3316] + str r5, [sp, #12] + bl memset + mov r3, #1515870810 + movs r2, #1 + str r3, [r5] @ unaligned + mov r1, r2 + str r3, [r5, #4] @ unaligned + add r0, sp, #4 + str r4, [sp, #8] + bl FlashEraseBlocks + movs r3, #1 + add r0, sp, #4 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldr r4, [sp, #4] + movs r2, #1 + movs r1, #0 + add r0, sp, #4 + adds r4, r4, #0 + it ne + movne r4, #1 + negs r4, r4 + bl FlashEraseBlocks +.L1116: + mov r0, r4 + add sp, sp, #92 + @ sp needed + pop {r4, r5, pc} +.L1118: + movs r4, #0 + b .L1116 +.L1120: + .align 2 +.L1119: + .word .LANCHOR0 + .fnend + .size FlashTestBlk, .-FlashTestBlk + .align 1 + .global FtlBbmTblFlush + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlBbmTblFlush, %function +FtlBbmTblFlush: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #8 + movs r5, #0 + ldr r4, .L1130 + movs r1, #0 + ldr r0, [r4, #3292] + add r6, r4, #176 + ldr r3, [r4, #3324] + ldrh r2, [r4, #110] + str r0, [r4, #3452] + str r3, [r4, #3456] + bl ftl_memset +.L1122: + ldrh r3, [r4, #54] + cmp r5, r3 + blt .L1123 + ldr r6, [r4, #3456] + movs r2, #16 + movs r1, #255 + ldr r8, .L1130+12 + ldr r9, .L1130+16 + movs r5, #0 + mov r0, r6 + mov r7, r5 + bl memset + movw r3, #61649 + strh r3, [r6] @ movhi + ldr r3, [r4, #160] + str r3, [r6, #4] + ldrh r3, [r4, #152] + strh r3, [r6, #2] @ movhi + ldrh r3, [r4, #156] + strh r3, [r6, #8] @ movhi + ldrh r3, [r4, #158] + strh r3, [r6, #10] @ movhi + ldr r3, [r4, #28] + strh r3, [r6, #12] @ movhi +.L1124: + ldr r3, [r4, #3292] + mov r10, #0 + ldrh r2, [r4, #154] + ldrh r1, [r4, #152] + str r3, [r4, #3452] + ldr r3, [r4, #3324] + str r10, [r4, #3444] + str r3, [r4, #3456] + orr r3, r2, r1, lsl #10 + ldrh r0, [r6, #10] + str r3, [r4, #3448] + ldrh r3, [r4, #156] + str r0, [sp] + mov r0, r8 + bl sftl_printk + ldrh r3, [r4, #104] + ldrh r2, [r4, #154] + subs r3, r3, #1 + cmp r2, r3 + blt .L1125 + ldr r3, [r4, #160] + ldrh r2, [r4, #152] + ldr r0, [r4, #3260] + adds r3, r3, #1 + strh r10, [r4, #154] @ movhi + str r3, [r4, #160] + str r3, [r6, #4] + ldrh r3, [r4, #156] + strh r2, [r6, #8] @ movhi + strh r2, [r4, #156] @ movhi + movs r2, #1 + strh r3, [r4, #152] @ movhi + mov r1, r2 + lsls r3, r3, #10 + str r3, [r4, #3448] + str r3, [r0, #4] + bl FlashEraseBlocks +.L1125: + movs r3, #1 + mov r0, r9 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r4, #154] + adds r3, r3, #1 + strh r3, [r4, #154] @ movhi + ldr r3, [r4, #3444] + adds r3, r3, #1 + bne .L1126 + adds r5, r5, #1 + ldr r1, [r4, #3448] + uxth r5, r5 + ldr r0, .L1130+4 + bl sftl_printk + cmp r5, #3 + bls .L1124 + mov r2, r5 + ldr r1, [r4, #3448] + ldr r0, .L1130+8 + bl sftl_printk +.L1128: + b .L1128 +.L1123: + ldrh r2, [r4, #3380] + ldr r3, [r4, #3452] + ldr r1, [r6, #4]! + mul r0, r2, r5 + lsls r2, r2, #2 + adds r5, r5, #1 + add r0, r3, r0, lsl #2 + bl ftl_memcpy + b .L1122 +.L1129: + movs r7, #1 + b .L1124 +.L1126: + cmp r7, #0 + beq .L1129 + movs r0, #0 + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1131: + .align 2 +.L1130: + .word .LANCHOR0 + .word .LC103 + .word .LC104 + .word .LC102 + .word .LANCHOR0+3444 + .fnend + .size FtlBbmTblFlush, .-FtlBbmTblFlush + .align 1 + .global allocate_data_superblock + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type allocate_data_superblock, %function +allocate_data_superblock: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r5, r0 + ldr r4, .L1168 + .pad #20 + sub sp, sp, #20 + ldr r9, .L1168+20 +.L1133: + ldr r3, .L1168 + ldr r2, .L1168 + ldrh r3, [r3, #2344] + ldrh r2, [r2, #2336] + add r3, r3, r2 + ldr r2, .L1168 + ldrh r2, [r2, #40] + cmp r3, r2 + ble .L1134 + movw r2, #2615 + mov r1, r9 + ldr r0, .L1168+4 + bl sftl_printk +.L1134: + ldr r3, .L1168+8 + cmp r5, r3 + bne .L1160 + ldrh r3, [r4, #2344] + ldr r1, [r4, #3160] + mul r2, r1, r3 + lsrs r1, r3, #1 + adds r1, r1, #1 + add r1, r1, r2, lsr #2 + uxth r1, r1 + cbz r1, .L1135 + subs r1, r1, #1 + uxth r1, r1 +.L1135: + ldr r0, .L1168+12 + bl List_pop_index_node + ldrh r3, [r4, #2344] + mov r6, r0 + uxth r8, r0 + cbnz r3, .L1136 + mov r2, #2624 + mov r1, r9 + ldr r0, .L1168+4 + bl sftl_printk +.L1136: + ldrh r3, [r4, #2344] + subs r3, r3, #1 + strh r3, [r4, #2344] @ movhi + ldrh r3, [r4, #40] + cmp r3, r8 + bls .L1133 + ldr r3, [r4, #2324] + uxth r6, r6 + ldrh r7, [r3, r6, lsl #1] + cmp r7, #0 + bne .L1133 + strh r8, [r5] @ movhi + mov r0, r5 + bl make_superblock + ldrb r3, [r5, #7] @ zero_extendqisi2 + cbnz r3, .L1138 + ldr r3, [r4, #2324] + movw r2, #65535 + mov r0, r8 + strh r2, [r3, r6, lsl #1] @ movhi + bl INSERT_DATA_LIST + ldrh r2, [r4, #2336] + ldrh r3, [r4, #2344] + add r3, r3, r2 + ldrh r2, [r4, #40] + cmp r3, r2 + ble .L1133 + movw r2, #2638 + mov r1, r9 + ldr r0, .L1168+4 + bl sftl_printk + b .L1133 +.L1160: + movs r1, #0 + b .L1135 +.L1138: + ldrh r2, [r4, #2336] + ldrh r3, [r4, #2344] + add r3, r3, r2 + ldrh r2, [r4, #40] + cmp r3, r2 + ble .L1140 + movw r2, #2641 + mov r1, r9 + ldr r0, .L1168+4 + bl sftl_printk +.L1140: + ldr r1, [r4, #3260] + mov r10, #20 + ldrh r2, [r4, #32] + add fp, r5, #16 + mov r0, fp + mov ip, #0 + mov r3, r1 + mla r2, r10, r2, r1 + str r2, [sp, #4] +.L1141: + ldr r2, [sp, #4] + cmp r2, r3 + bne .L1143 + cbnz r7, .L1144 + movw r2, #2652 + mov r1, r9 + ldr r0, .L1168+4 + bl sftl_printk +.L1144: + ldrh r3, [r4, #2588] + cmp r3, r8 + bne .L1145 + movw r2, #2654 + mov r1, r9 + ldr r0, .L1168+4 + bl sftl_printk +.L1145: + ldrb r3, [r5, #8] @ zero_extendqisi2 + ldr r2, [r4, #2328] + cmp r3, #0 + bne .L1146 + ldrh r3, [r2, r6, lsl #1] + cmp r3, #0 + beq .L1147 + ldrh r1, [r4, #92] + add r3, r3, r1 +.L1167: + strh r3, [r2, r6, lsl #1] @ movhi + movs r1, #0 + ldr r3, [r4, #2548] + mov r0, r8 + adds r3, r3, #1 + str r3, [r4, #2548] + bl ftl_set_blk_mode +.L1149: + ldr r3, [r4, #2328] + ldr r2, [r4, #2564] + ldrh r0, [r4, #92] + ldrh r3, [r3, r6, lsl #1] + ldrh r1, [r4, #40] + cmp r3, r2 + ldr r2, [r4, #2548] + it hi + strhi r3, [r4, #2564] + ldr r3, [r4, #2552] + mla r0, r2, r0, r3 + bl __aeabi_uidiv + ldr r2, [r4, #3340] + ldr r1, [r4, #3260] + str r0, [r4, #2556] + ldr r3, [r2, #16] + ldr r0, .L1168+16 + adds r3, r3, #1 + str r3, [r2, #16] + movs r2, #20 + mla r2, r2, r7, r1 + adds r3, r1, #4 + adds r2, r2, #24 +.L1151: + adds r3, r3, #20 + cmp r2, r3 + bne .L1152 + ldrb r1, [r5, #8] @ zero_extendqisi2 + mov r2, r7 + ldr r0, [r4, #3260] + mov r10, #0 + bl FlashEraseBlocks + mov r3, r10 + movs r1, #20 +.L1153: + uxth r2, r10 + cmp r7, r2 + bhi .L1155 + cmp r3, #0 + ble .L1156 + mov r0, r8 + bl update_multiplier_value + bl FtlBbmTblFlush +.L1156: + ldrb r2, [r5, #7] @ zero_extendqisi2 + cmp r2, #0 + bne .L1157 + ldr r3, [r4, #2324] + movw r2, #65535 + strh r2, [r3, r6, lsl #1] @ movhi + b .L1133 +.L1143: + str ip, [r3, #8] + movw lr, #65535 + str ip, [r3, #12] + ldrh r2, [r0], #2 + cmp r2, lr + beq .L1142 + mla lr, r10, r7, r1 + adds r7, r7, #1 + lsls r2, r2, #10 + uxth r7, r7 + str r2, [lr, #4] +.L1142: + adds r3, r3, #20 + b .L1141 +.L1147: + movs r3, #2 + b .L1167 +.L1146: + ldrh r3, [r2, r6, lsl #1] + mov r0, r8 + adds r3, r3, #1 + strh r3, [r2, r6, lsl #1] @ movhi + ldr r3, [r4, #2552] + adds r3, r3, #1 + str r3, [r4, #2552] + bl ftl_set_blk_mode.part.6 + b .L1149 +.L1152: + ldr r1, [r3, #-20] + ands r1, r1, r0 + str r1, [r3, #-20] + b .L1151 +.L1155: + mul r2, r1, r10 + ldr r0, [r4, #3260] + add ip, r0, r2 + ldr r2, [r0, r2] + adds r0, r2, #1 + bne .L1154 + ldr r0, [ip, #4] + adds r3, r3, #1 + str r1, [sp, #12] + str r2, [sp, #8] + ubfx r0, r0, #10, #16 + str r3, [sp, #4] + bl FtlBbmMapBadBlock + ldr r2, [sp, #8] + ldr r1, [sp, #12] + ldr r3, [sp, #4] + strh r2, [fp] @ movhi + ldrb r2, [r5, #7] @ zero_extendqisi2 + subs r2, r2, #1 + strb r2, [r5, #7] +.L1154: + add r10, r10, #1 + add fp, fp, #2 + b .L1153 +.L1157: + ldrh r3, [r4, #102] + strh r8, [r5] @ movhi + smulbb r3, r3, r2 + movs r2, #0 + strh r2, [r5, #2] @ movhi + strb r2, [r5, #6] + ldr r2, [r4, #2540] + uxth r3, r3 + strh r3, [r5, #4] @ movhi + str r2, [r5, #12] + adds r2, r2, #1 + str r2, [r4, #2540] + ldr r2, [r4, #2324] + ldrh r1, [r5] + strh r3, [r2, r1, lsl #1] @ movhi + ldrh r3, [r5, #4] + cbz r3, .L1158 + ldrb r3, [r5, #7] @ zero_extendqisi2 + cbnz r3, .L1159 +.L1158: + movw r2, #2707 + ldr r1, .L1168+20 + ldr r0, .L1168+4 + bl sftl_printk +.L1159: + movs r0, #0 + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1169: + .align 2 +.L1168: + .word .LANCHOR0 + .word .LC1 + .word .LANCHOR0+2444 + .word .LANCHOR0+2340 + .word -1024 + .word .LANCHOR1+403 + .fnend + .size allocate_data_superblock, .-allocate_data_superblock + .align 1 + .global FtlGcFreeBadSuperBlk + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlGcFreeBadSuperBlk, %function +FtlGcFreeBadSuperBlk: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, r0 + ldr r4, .L1182 + ldrh r3, [r4, #3206] + cbz r3, .L1171 + movs r7, #0 + addw r10, r4, #3208 +.L1172: + ldrh r2, [r4, #32] + uxth r3, r7 + cmp r2, r3 + bhi .L1178 + bl FtlGcReFreshBadBlk +.L1171: + movs r0, #0 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1178: + uxtah r3, r4, r7 + mov r1, r8 + mov fp, #0 + ldrb r0, [r3, #60] @ zero_extendqisi2 + bl V2P_block + mov r9, r0 +.L1173: + ldrh r3, [r4, #3206] + uxth r5, fp + cmp r3, r5 + bhi .L1177 + adds r7, r7, #1 + b .L1172 +.L1177: + uxth r6, fp + add r3, r4, r6, lsl #1 + ldrh r3, [r3, #3208] + cmp r3, r9 + bne .L1174 + mov r1, r9 + ldr r0, .L1182+4 + bl sftl_printk + mov r0, r9 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldrh r1, [r4, #3206] + add r3, r10, r6, lsl #1 +.L1175: + cmp r5, r1 + bcc .L1176 + subs r1, r1, #1 + strh r1, [r4, #3206] @ movhi +.L1174: + add fp, fp, #1 + b .L1173 +.L1176: + ldrh r0, [r3, #2]! + adds r5, r5, #1 + uxth r5, r5 + strh r0, [r3, #-2] @ movhi + b .L1175 +.L1183: + .align 2 +.L1182: + .word .LANCHOR0 + .word .LC105 + .fnend + .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk + .align 1 + .global update_vpc_list + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type update_vpc_list, %function +update_vpc_list: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r2, .L1194 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r5, r0 + mov r4, r2 + ldr r3, [r2, #2324] + ldrh r3, [r3, r0, lsl #1] + cmp r3, #0 + bne .L1185 + ldrh r1, [r2, #2588] + cmp r1, r0 + bne .L1186 + movw r3, #65535 + strh r3, [r2, #2588] @ movhi +.L1187: + mov r1, r5 + ldr r0, .L1194+4 + bl List_remove_node + ldrh r3, [r4, #2336] + cbnz r3, .L1189 + movw r2, #2777 + ldr r1, .L1194+8 + ldr r0, .L1194+12 + bl sftl_printk +.L1189: + ldrh r3, [r4, #2336] + mov r0, r5 + subs r3, r3, #1 + strh r3, [r4, #2336] @ movhi + bl free_data_superblock + mov r0, r5 + bl FtlGcFreeBadSuperBlk + ldrh r2, [r4, #2336] + ldrh r3, [r4, #2344] + add r3, r3, r2 + ldrh r2, [r4, #40] + cmp r3, r2 + ble .L1193 + movw r2, #2780 + ldr r1, .L1194+8 + ldr r0, .L1194+12 + bl sftl_printk +.L1193: + movs r3, #1 + b .L1184 +.L1186: + ldrh r1, [r2, #2348] + cmp r1, r0 + beq .L1184 + ldrh r1, [r2, #2396] + cmp r1, r0 + beq .L1184 + ldrh r2, [r2, #2444] + cmp r2, r0 + bne .L1187 +.L1184: + mov r0, r3 + pop {r3, r4, r5, pc} +.L1185: + bl List_update_data_list + movs r3, #0 + b .L1184 +.L1195: + .align 2 +.L1194: + .word .LANCHOR0 + .word .LANCHOR0+2320 + .word .LANCHOR1+428 + .word .LC1 + .fnend + .size update_vpc_list, .-update_vpc_list + .align 1 + .global decrement_vpc_count + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type decrement_vpc_count, %function +decrement_vpc_count: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + movw r3, #65535 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + cmp r0, r3 + mov r4, r0 + ldr r5, .L1205 + beq .L1197 + ldr r3, [r5, #2324] + ldrh r2, [r3, r0, lsl #1] + cbnz r2, .L1198 + mov r1, r0 + ldr r0, .L1205+4 + bl sftl_printk + ldr r3, [r5, #2324] + ldrh r6, [r3, r4, lsl #1] + cbz r6, .L1199 +.L1203: + movs r6, #0 +.L1196: + mov r0, r6 + pop {r4, r5, r6, pc} +.L1199: + movw r2, #2795 +.L1204: + ldr r1, .L1205+8 + ldr r0, .L1205+12 + bl sftl_printk + b .L1196 +.L1198: + subs r2, r2, #1 + strh r2, [r3, r0, lsl #1] @ movhi +.L1197: + ldrh r0, [r5, #3430] + movw r3, #65535 + cmp r0, r3 + bne .L1201 + strh r4, [r5, #3430] @ movhi + b .L1203 +.L1201: + cmp r4, r0 + beq .L1203 + bl update_vpc_list + ldr r2, [r5, #2316] + adds r6, r0, #0 + ldr r3, [r5, #2320] + it ne + movne r6, #1 + strh r4, [r5, #3430] @ movhi + subs r3, r3, r2 + asrs r2, r3, #1 + ldr r3, .L1205+16 + muls r3, r2, r3 + ldr r2, [r5, #2324] + uxth r1, r3 + ldrh r2, [r2, r1, lsl #1] + cmp r2, #0 + bne .L1196 + cmp r4, r1 + beq .L1196 + movw r2, #2811 + b .L1204 +.L1206: + .align 2 +.L1205: + .word .LANCHOR0 + .word .LC106 + .word .LANCHOR1+444 + .word .LC1 + .word -1431655765 + .fnend + .size decrement_vpc_count, .-decrement_vpc_count + .align 1 + .global FtlRecoverySuperblock + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlRecoverySuperblock, %function +FtlRecoverySuperblock: + .fnstart + @ args = 0, pretend = 0, frame = 48 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movw r2, #65535 + ldrh r3, [r0] + .pad #52 + sub sp, sp, #52 + mov fp, r0 + cmp r3, r2 + beq .L1331 + ldrh r3, [r0, #2] + ldr r4, .L1338 + str r3, [sp, #4] + ldrb r3, [r0, #6] @ zero_extendqisi2 + ldr r1, [sp, #4] + str r3, [sp, #20] + ldrh r3, [r4, #102] + cmp r3, r1 + mov r3, #0 + bne .L1210 + strh r3, [r0, #4] @ movhi +.L1336: + strb r3, [fp, #6] +.L1331: + movs r0, #0 + add sp, sp, #52 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1210: + ldrh r0, [r0, #16] +.L1211: + cmp r0, r2 + uxth r6, r3 + add r3, r3, #1 + beq .L1212 + movs r1, #1 + bl FtlGetLastWrittenPage + adds r7, r0, #1 + mov r5, r0 + beq .L1213 + ldr r3, [r4, #3172] + movs r2, #0 + ldrh lr, [r4, #32] + movw r9, #65535 + ldr r0, [r4, #3280] + mov r10, #20 + str r3, [sp] + ldrh r3, [r4, #110] + ldr r8, [r4, #3176] + ldrh r7, [r4, #112] + mov r4, r2 + str r3, [sp, #8] + add r3, fp, #16 + mov ip, r3 + str r3, [sp, #16] +.L1214: + uxth r3, r2 + cmp lr, r3 + bhi .L1220 + ldr r6, .L1338 + movs r2, #0 + mov r1, r4 + movw r9, #65535 + bl FlashReadPages + ldr r3, [r6, #2544] + uxth r2, r5 + ldr r8, [r6, #3280] + str r2, [sp, #8] + subs r3, r3, #1 + str r3, [sp] + mov r7, r8 + movs r3, #0 +.L1221: + uxth r2, r3 + cmp r4, r2 + bhi .L1226 + bne .L1224 + adds r3, r5, #1 + uxth r3, r3 + str r3, [sp, #12] +.L1332: + ldr r0, [r8, #4] + ubfx r0, r0, #10, #16 + bl P2V_plane + ldrh r3, [r6, #102] + ldr r2, [sp, #12] + str r0, [sp, #8] + cmp r3, r2 + bne .L1228 + ldrh r3, [sp, #12] + strh r3, [fp, #2] @ movhi + movs r3, #0 + strb r3, [fp, #6] + strh r3, [fp, #4] @ movhi +.L1228: + ldr r3, [sp, #12] + ldr r2, [sp, #4] + cmp r3, r2 + bne .L1229 + ldr r3, [sp, #8] + ldr r2, [sp, #20] + cmp r3, r2 + bne .L1229 + ldr r1, [sp, #12] + mov r2, r3 +.L1337: + mov r0, fp + bl ftl_sb_update_avl_pages + b .L1331 +.L1212: + uxth r1, r3 + adds r1, r1, #8 + ldrh r0, [fp, r1, lsl #1] + b .L1211 +.L1213: + ldr r3, [sp, #4] + cbz r3, .L1215 + movw r2, #1766 + ldr r1, .L1338+4 + ldr r0, .L1338+8 + bl sftl_printk +.L1215: + ldr r3, [sp, #20] + cbz r3, .L1216 + cmp r6, r3 + beq .L1216 + movw r2, #1767 + ldr r1, .L1338+4 + ldr r0, .L1338+8 + bl sftl_printk +.L1216: + movs r3, #0 + strh r3, [fp, #2] @ movhi + b .L1336 +.L1220: + ldrh r3, [ip], #2 + cmp r3, r9 + beq .L1217 + mla r1, r10, r4, r0 + orr r3, r5, r3, lsl #10 + str r3, [r1, #4] + ldr r3, [sp, #8] + muls r3, r4, r3 + it mi + addmi r3, r3, #3 + bic r3, r3, #3 + mov r6, r3 + ldr r3, [sp] + add r6, r6, r3 + mov r3, r7 + muls r3, r4, r3 + add r4, r4, #1 + it mi + addmi r3, r3, #3 + uxth r4, r4 + bic r3, r3, #3 + str r6, [r1, #8] + add r3, r3, r8 + str r3, [r1, #12] +.L1217: + adds r2, r2, #1 + b .L1214 +.L1226: + ldr r2, [r7] + cbnz r2, .L1222 + ldr r10, [r7, #12] + ldr r2, [r10, #4] + adds r0, r2, #1 + beq .L1223 + ldr r1, [r6, #2544] + mov r0, r2 + bl ftl_cmp_data_ver + cbz r0, .L1223 + adds r2, r2, #1 + str r2, [r6, #2544] +.L1223: + ldr r2, [r10] + adds r2, r2, #1 + bne .L1225 +.L1224: + uxth r2, r5 + uxth r3, r3 + str r2, [sp, #12] + movs r2, #20 + mla r8, r2, r3, r8 + b .L1332 +.L1222: + ldr r9, [sp, #8] +.L1225: + adds r3, r3, #1 + adds r7, r7, #20 + b .L1221 +.L1229: + movw r3, #65535 + cmp r9, r3 + bne .L1230 + ldrb r3, [fp, #8] @ zero_extendqisi2 + cmp r3, #0 + bne .L1231 +.L1230: + ldr r3, [r6, #3440] + uxth r7, r5 + uxth r5, r5 + movw r8, #65535 + adds r3, r3, #1 + itt eq + ldreq r3, [sp] + streq r3, [r6, #3440] + ldr r3, [sp, #4] + ldr r6, .L1338 + adds r3, r3, #7 + cmp r5, r3 + itet gt + subgt r4, r7, #7 + ldrle r4, [sp, #4] + uxthgt r4, r4 +.L1234: + cmp r4, r7 + bhi .L1241 + movs r3, #0 + ldrh lr, [r6, #32] + ldr r0, [r6, #3280] + mov r5, r3 + ldr r1, [sp, #16] + mov ip, #20 + b .L1242 +.L1236: + ldrh r2, [r1], #2 + cmp r2, r8 + beq .L1235 + mla r9, ip, r5, r0 + adds r5, r5, #1 + orr r2, r4, r2, lsl #10 + uxth r5, r5 + str r2, [r9, #4] +.L1235: + adds r3, r3, #1 +.L1242: + uxth r2, r3 + cmp r2, lr + bcc .L1236 + movs r2, #0 + mov r1, r5 + bl FlashReadPages + ldr r3, [r6, #3280] + movs r2, #20 + mla r5, r2, r5, r3 +.L1237: + cmp r5, r3 + bne .L1240 + adds r4, r4, #1 + uxth r4, r4 + b .L1234 +.L1240: + ldr r2, [r3] + cbnz r2, .L1231 + ldr r2, [r3, #12] + ldrh r1, [r2] + cmp r1, r8 + beq .L1239 + ldr r2, [r2, #4] + adds r1, r2, #1 + it ne + strne r2, [r6, #3440] +.L1239: + adds r3, r3, #20 + b .L1237 +.L1241: + mov r3, #-1 + str r3, [r6, #3440] +.L1231: + ldr r10, .L1338 + movs r3, #1 + ldr r5, [sp, #4] + mov r4, r10 + strh r3, [r10, #3512] @ movhi +.L1243: + ldrh r6, [r4, #32] + movs r3, #0 + ldr r0, [r4, #3280] + mov r9, r3 + ldr r1, [sp, #16] + movw r7, #65535 + mov ip, #20 +.L1244: + uxth r2, r3 + cmp r6, r2 + bhi .L1246 + movs r2, #0 + mov r1, r9 + bl FlashReadPages + movs r3, #0 +.L1335: + str r3, [sp, #24] + ldrh r3, [sp, #24] + cmp r9, r3 + bhi .L1275 + adds r5, r5, #1 + ldrh r3, [r4, #102] + uxth r5, r5 + cmp r3, r5 + bne .L1243 + ldrh r2, [r4, #32] + movw r0, #65535 + movs r3, #0 + strh r5, [fp, #2] @ movhi + strh r3, [fp, #4] @ movhi +.L1276: + uxth r1, r3 + cmp r1, r2 + bcs .L1331 + ldr r1, [sp, #16] + ldrh r4, [r1], #2 + cmp r4, r0 + str r1, [sp, #16] + add r1, r3, #1 + bne .L1336 + mov r3, r1 + b .L1276 +.L1246: + ldrh r2, [r1], #2 + cmp r2, r7 + beq .L1245 + mla lr, ip, r9, r0 + orr r2, r5, r2, lsl #10 + str r2, [lr, #4] + add r2, r9, #1 + uxth r9, r2 +.L1245: + adds r3, r3, #1 + b .L1244 +.L1339: + .align 2 +.L1338: + .word .LANCHOR0 + .word .LANCHOR1+464 + .word .LC1 +.L1275: + ldr r3, [sp, #24] + movs r7, #20 + muls r7, r3, r7 + ldr r3, [r4, #3280] + str r3, [sp, #28] + add r8, r3, r7 + ldr r6, [r8, #4] + ubfx r0, r6, #10, #16 + str r6, [sp, #44] + bl P2V_plane + ldr r3, [sp, #4] + cmp r5, r3 + bcc .L1248 + ldr r3, [sp, #28] + bne .L1249 + ldr r2, [sp, #20] + cmp r2, r0 + bhi .L1248 +.L1249: + ldr r2, [sp, #12] + cmp r5, r2 + bne .L1250 + ldr r2, [sp, #8] + cmp r2, r0 + beq .L1251 +.L1250: + ldr r3, [r3, r7] + adds r3, r3, #1 + beq .L1252 + ldr r8, [r8, #12] + movw r3, #61589 + ldrh r2, [r8] + cmp r2, r3 + beq .L1253 + ldrh r0, [fp] +.L1333: + bl decrement_vpc_count + b .L1248 +.L1253: + ldr r3, [r8, #4] + adds r6, r3, #1 + str r3, [sp] + beq .L1254 + ldr r1, [r4, #2544] + mov r0, r3 + bl ftl_cmp_data_ver + cbz r0, .L1254 + ldr r3, [sp] + adds r3, r3, #1 + str r3, [r4, #2544] +.L1254: + ldrh r2, [r8] + movw r3, #61589 + cmp r2, r3 + beq .L1255 + movw r2, #1918 + ldr r1, .L1340 + ldr r0, .L1340+4 + bl sftl_printk +.L1255: + ldr r6, [r8, #8] + add r1, sp, #40 + ldr r3, [r8, #12] + movs r2, #0 + mov r0, r6 + str r3, [sp, #36] + bl log2phys + ldr r1, [r4, #3440] + adds r0, r1, #1 + beq .L1256 + ldr r0, [sp] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1256 + ldr r3, [sp, #36] + adds r2, r3, #1 + beq .L1257 + ldr r0, [r4, #3280] + movs r2, #0 + movs r1, #1 + add r0, r0, r7 + str r3, [r0, #4] + ldr r8, [r0, #12] + bl FlashReadPages + ldr r2, [r4, #3280] + ldr r1, [r2, r7] + adds r3, r2, r7 + adds r1, r1, #1 + bne .L1258 +.L1259: + mov r3, #-1 + str r3, [sp, #36] +.L1266: + ldr r0, [sp, #36] + adds r1, r0, #1 + beq .L1248 +.L1279: + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r4, #40] + mov r6, r0 + cmp r3, r0 + bhi .L1271 + movw r2, #2019 + ldr r1, .L1340 + ldr r0, .L1340+4 + bl sftl_printk +.L1271: + ldr r3, [r10, #2324] + ldrh r3, [r3, r6, lsl #1] + cmp r3, #0 + beq .L1272 + mov r0, r6 + b .L1333 +.L1257: + ldr r3, [sp, #44] + ldr r2, [sp, #40] + cmp r2, r3 + bne .L1248 + movs r2, #1 + add r1, sp, #36 + mov r0, r6 + bl log2phys +.L1248: + ldr r3, [sp, #24] + adds r3, r3, #1 + b .L1335 +.L1258: + ldr r1, [r8, #8] + cmp r6, r1 + bne .L1259 + ldr r1, [r8, #4] + ldr r0, [r4, #3440] + str r1, [sp, #28] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1259 + ldr r1, [sp, #40] + ldr r0, [sp, #44] + cmp r1, r0 + bne .L1261 +.L1264: + ldr r1, [sp, #36] + mov r0, r6 + bl FtlReUsePrevPpa + b .L1259 +.L1261: + ldr r0, [sp, #36] + cmp r1, r0 + beq .L1259 + adds r0, r1, #1 + beq .L1262 + str r1, [r3, #4] + movs r2, #0 + movs r1, #1 + mov r0, r3 + ldr r8, [r3, #12] + bl FlashReadPages +.L1263: + ldr r3, [r4, #3280] + ldr r3, [r3, r7] + adds r3, r3, #1 + beq .L1264 + ldr r3, [r8, #4] + ldr r0, [r4, #3440] + mov r1, r3 + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1264 + mov r1, r3 + ldr r0, [sp, #28] + bl ftl_cmp_data_ver + cmp r0, #0 + beq .L1259 + b .L1264 +.L1262: + str r1, [r2, r7] + b .L1263 +.L1256: + ldr r3, [sp, #44] + ldr r2, [sp, #40] + cmp r2, r3 + beq .L1266 + movs r2, #1 + add r1, sp, #44 + mov r0, r6 + bl log2phys + ldr r8, [sp, #40] + cmp r8, #-1 + beq .L1266 + ldr r3, [sp, #36] + cmp r8, r3 + beq .L1269 + ubfx r0, r8, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r4, #2348] + cmp r3, r0 + beq .L1270 + ldrh r3, [r4, #2396] + cmp r3, r0 + beq .L1270 + ldrh r3, [r4, #2444] + cmp r3, r0 + bne .L1266 +.L1270: + ldr r0, [r10, #3280] + movs r2, #0 + movs r1, #1 + str r8, [r0, #4] + ldr r7, [r0, #12] + bl FlashReadPages + ldr r3, [r10, #3280] + ldr r3, [r3] + adds r3, r3, #1 + beq .L1266 + ldr r1, [r7, #4] + ldr r0, [sp] + bl ftl_cmp_data_ver + cmp r0, #0 + bne .L1266 + movs r2, #1 + add r1, sp, #40 + mov r0, r6 + bl log2phys + b .L1266 +.L1272: + mov r1, r6 + ldr r0, .L1340+8 + bl sftl_printk + b .L1248 +.L1252: + ldr r3, [r4, #3516] + cmp r3, #31 + itttt ls + addls r2, r4, r3, lsl #2 + addls r3, r3, #1 + strls r3, [r4, #3516] + strls r6, [r2, #3520] + ldrh r0, [fp] + bl decrement_vpc_count + ldr r3, [r4, #3440] + adds r2, r3, #1 + bne .L1274 + ldr r3, [sp] +.L1334: + str r3, [r4, #3440] + b .L1248 +.L1274: + ldr r2, [sp] + cmp r2, r3 + bcs .L1248 + mov r3, r2 + b .L1334 +.L1251: + ldrb r3, [sp, #8] @ zero_extendqisi2 + mov r1, r5 + strh r5, [fp, #2] @ movhi + ldr r2, [sp, #8] + strb r3, [fp, #6] + b .L1337 +.L1269: + mov r0, r8 + b .L1279 +.L1341: + .align 2 +.L1340: + .word .LANCHOR1+464 + .word .LC1 + .word .LC107 + .fnend + .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .align 1 + .global FtlWriteDump_data + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlWriteDump_data, %function +FtlWriteDump_data: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + .pad #24 + sub sp, sp, #24 + ldr r4, .L1360 + ldrh r2, [r4, #2352] + cmp r2, #0 + beq .L1343 + ldrb r3, [r4, #2356] @ zero_extendqisi2 + cmp r3, #0 + bne .L1343 + ldrb r1, [r4, #2355] @ zero_extendqisi2 + ldrh r3, [r4, #102] + muls r3, r1, r3 + cmp r2, r3 + beq .L1343 + ldrb r7, [r4, #2358] @ zero_extendqisi2 + cbnz r7, .L1342 + ldr r6, [r4, #2504] + mov r2, r7 + mov r1, sp + ldrh r8, [r4, #32] + subs r6, r6, #1 + mov r0, r6 + bl log2phys + ldr r3, [sp] + ldr r5, [r4, #3324] + ldr r0, [r4, #3292] + str r3, [sp, #8] + adds r3, r3, #1 + str r6, [sp, #20] + str r0, [sp, #12] + str r5, [sp, #16] + str r7, [r5, #4] + beq .L1345 + mov r2, r7 + movs r1, #1 + add r0, sp, #4 + bl FlashReadPages +.L1346: + ldr r9, .L1360+4 + movs r7, #0 + lsl r8, r8, #2 + mov r10, r7 + movw r3, #61589 + strh r3, [r5] @ movhi +.L1347: + cmp r8, r7 + bne .L1351 +.L1348: + movs r3, #1 +.L1359: + strb r3, [r4, #2358] +.L1342: + add sp, sp, #24 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1345: + ldrh r2, [r4, #110] + movs r1, #255 + bl ftl_memset + b .L1346 +.L1351: + ldrh r3, [r4, #2352] + cmp r3, #0 + beq .L1348 + ldr r3, [sp, #8] + mov r0, r9 + str r6, [r5, #8] + adds r7, r7, #1 + str r3, [r5, #12] + ldrh r3, [r4, #2348] + strh r3, [r5, #2] @ movhi + bl get_new_active_ppa + ldr r3, [r4, #2544] + movs r1, #1 + str r0, [sp, #8] + add r0, sp, #4 + str r3, [r5, #4] + adds r3, r3, #1 + adds r2, r3, #1 + it eq + moveq r3, r10 + str r3, [r4, #2544] + movs r3, #0 + mov r2, r3 + bl FlashProgPages + ldrh r0, [r4, #2348] + bl decrement_vpc_count + b .L1347 +.L1343: + movs r3, #0 + b .L1359 +.L1361: + .align 2 +.L1360: + .word .LANCHOR0 + .word .LANCHOR0+2348 + .fnend + .size FtlWriteDump_data, .-FtlWriteDump_data + .align 1 + .global l2p_flush + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type l2p_flush, %function +l2p_flush: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movs r4, #0 + ldr r5, .L1366 + movs r6, #12 + bl FtlWriteDump_data +.L1363: + ldrh r3, [r5, #138] + uxth r0, r4 + cmp r3, r0 + bhi .L1365 + movs r0, #0 + pop {r4, r5, r6, pc} +.L1365: + ldr r2, [r5, #2492] + uxth r3, r4 + mla r3, r6, r3, r2 + ldr r3, [r3, #4] + cmp r3, #0 + bge .L1364 + bl flush_l2p_region +.L1364: + adds r4, r4, #1 + b .L1363 +.L1367: + .align 2 +.L1366: + .word .LANCHOR0 + .fnend + .size l2p_flush, .-l2p_flush + .align 1 + .global FtlSuperblockPowerLostFix + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlSuperblockPowerLostFix, %function +FtlSuperblockPowerLostFix: + .fnstart + @ args = 0, pretend = 0, frame = 24 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #24 + sub sp, sp, #24 + ldr r5, .L1381 + mov r3, #-1 + movs r7, #0 + movw r1, #61589 + str r3, [sp, #20] + mov r4, r0 + ldr r2, [r5, #3292] + ldr r6, [r5, #3324] + str r2, [sp, #12] + mvn r2, #2 + str r6, [sp, #16] + str r2, [r6, #8] + mvn r2, #1 + str r2, [r6, #12] + ldrh r2, [r0] + strh r7, [r6] @ movhi + strh r2, [r6, #2] @ movhi + ldr r2, [r5, #3292] + str r1, [r2] + add r1, r1, #304087040 + ldr r2, [r5, #3292] + add r1, r1, #1269760 + addw r1, r1, #1507 + str r1, [r2, #4] + ldrh r2, [r0, #4] + tst r2, #1 + ite eq + moveq r8, #6 + movne r8, #7 +.L1374: + ldrh r3, [r4, #4] + cbnz r3, .L1370 +.L1371: + ldr r2, [r5, #2324] + ldrh r1, [r4] + ldrh r0, [r4, #4] + ldrh r3, [r2, r1, lsl #1] + subs r3, r3, r0 + strh r3, [r2, r1, lsl #1] @ movhi + ldrh r3, [r5, #102] + strh r3, [r4, #2] @ movhi + movs r3, #0 + strb r3, [r4, #6] + strh r3, [r4, #4] @ movhi + add sp, sp, #24 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L1370: + mov r0, r4 + bl get_new_active_ppa + str r0, [sp, #8] + adds r0, r0, #1 + beq .L1371 + ldr r3, [r5, #2544] + movs r1, #1 + add r0, sp, #4 + str r3, [r6, #4] + adds r3, r3, #1 + adds r2, r3, #1 + it eq + moveq r3, r7 + str r3, [r5, #2544] + movs r3, #0 + mov r2, r3 + bl FlashProgPages + ldrh r0, [r4] + bl decrement_vpc_count + subs r8, r8, #1 + bne .L1374 + b .L1371 +.L1382: + .align 2 +.L1381: + .word .LANCHOR0 + .fnend + .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix + .align 1 + .global FtlVendorPartWrite + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlVendorPartWrite, %function +FtlVendorPartWrite: + .fnstart + @ args = 0, pretend = 0, frame = 104 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r10, r2 + ldr r4, .L1395 + adds r2, r0, r1 + .pad #108 + sub sp, sp, #108 + mov r8, r0 + mov r6, r1 + ldrh r3, [r4, #96] + cmp r2, r3 + bhi .L1391 + ldrh r7, [r4, #108] + mov r9, #0 + lsr r7, r0, r7 + lsl fp, r7, #2 +.L1385: + cbnz r6, .L1390 +.L1383: + mov r0, r9 + add sp, sp, #108 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1390: + ldr r3, [r4, #3364] + mov r0, r8 + ldr r2, [r3, fp] + ldrh r3, [r4, #58] + str r2, [sp, #12] + mov r1, r3 + str r3, [sp, #8] + bl __aeabi_uidivmod + ldr r3, [sp, #8] + ldr r2, [sp, #12] + str r1, [sp, #4] + subs r5, r3, r1 + uxth r5, r5 + cmp r6, r5 + it cc + uxthcc r5, r6 + cbz r2, .L1387 + cmp r5, r3 + beq .L1387 + ldr r3, [r4, #3300] + add r0, sp, #20 + str r2, [sp, #24] + movs r2, #1 + mov r1, r2 + str r3, [sp, #28] + add r3, sp, #40 + str r3, [sp, #32] + bl FlashReadPages +.L1388: + lsls r3, r5, #9 + ldr r0, [r4, #3300] + mov r1, r10 + mov r2, r3 + str r3, [sp, #8] + ldr r3, [sp, #4] + subs r6, r6, r5 + add r8, r8, r5 + add fp, fp, #4 + add r0, r0, r3, lsl #9 + bl ftl_memcpy + mov r1, r7 + ldr r2, [r4, #3300] + ldr r0, .L1395+4 + adds r7, r7, #1 + bl FtlMapWritePage + ldr r3, [sp, #8] + adds r0, r0, #1 + it eq + moveq r9, #-1 + add r10, r10, r3 + b .L1385 +.L1387: + ldrh r2, [r4, #110] + movs r1, #0 + ldr r0, [r4, #3300] + bl ftl_memset + b .L1388 +.L1391: + mov r9, #-1 + b .L1383 +.L1396: + .align 2 +.L1395: + .word .LANCHOR0 + .word .LANCHOR0+3468 + .fnend + .size FtlVendorPartWrite, .-FtlVendorPartWrite + .align 1 + .global Ftl_save_ext_data + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type Ftl_save_ext_data, %function +Ftl_save_ext_data: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + ldr r2, .L1399 + ldr r3, .L1399+4 + ldr r1, [r2, #2636] + cmp r1, r3 + bne .L1397 + ldr r3, .L1399+8 + addw r2, r2, #2636 + movs r1, #1 + movs r0, #0 + str r3, [r2, #4] + ldr r3, [r2, #-104] + str r3, [r2, #88] + ldr r3, [r2, #-100] + str r3, [r2, #92] + ldr r3, [r2, #-108] + str r3, [r2, #8] + ldr r3, [r2, #-120] + str r3, [r2, #12] + ldr r3, [r2, #-128] + str r3, [r2, #16] + ldr r3, [r2, #-112] + str r3, [r2, #20] + ldr r3, [r2, #-84] + str r3, [r2, #28] + ldr r3, [r2, #-76] + str r3, [r2, #32] + ldr r3, [r2, #-124] + str r3, [r2, #36] + ldr r3, [r2, #-116] + str r3, [r2, #40] + ldr r3, [r2, #-72] + str r3, [r2, #44] + ldr r3, [r2, #-68] + str r3, [r2, #48] + b FtlVendorPartWrite +.L1397: + bx lr +.L1400: + .align 2 +.L1399: + .word .LANCHOR0 + .word 1179929683 + .word 1342177352 + .fnend + .size Ftl_save_ext_data, .-Ftl_save_ext_data + .align 1 + .global FtlEctTblFlush + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlEctTblFlush, %function +FtlEctTblFlush: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, lr} + .save {r3, lr} + ldr r3, .L1406 + ldrh r2, [r3, #3648] + cmp r2, #31 + itett ls + addls r2, r2, #1 + movhi r2, #32 + strhls r2, [r3, #3648] @ movhi + movls r2, #1 + cbnz r0, .L1403 + ldr r1, [r3, #3340] + ldr r0, [r1, #20] + ldr r1, [r1, #16] + add r2, r2, r0 + cmp r1, r2 + bcc .L1404 +.L1403: + ldr r2, [r3, #3340] + movs r0, #64 + ldr r1, [r2, #16] + str r1, [r2, #20] + ldr r1, .L1406+4 + str r1, [r2] + ldrh r1, [r3, #3332] + ldr r2, [r3, #3340] + lsls r3, r1, #9 + str r3, [r2, #12] + ldr r3, [r2, #8] + adds r3, r3, #1 + str r3, [r2, #8] + movs r3, #0 + str r3, [r2, #4] + bl FtlVendorPartWrite + bl Ftl_save_ext_data +.L1404: + movs r0, #0 + pop {r3, pc} +.L1407: + .align 2 +.L1406: + .word .LANCHOR0 + .word 1112818501 + .fnend + .size FtlEctTblFlush, .-FtlEctTblFlush + .align 1 + .global sftl_vendor_write + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_vendor_write, %function +sftl_vendor_write: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + add r0, r0, #256 + b FtlVendorPartWrite + .fnend + .size sftl_vendor_write, .-sftl_vendor_write + .align 1 + .global FtlVendorPartRead + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlVendorPartRead, %function +FtlVendorPartRead: + .fnstart + @ args = 0, pretend = 0, frame = 104 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r10, r2 + ldr r4, .L1419 + adds r2, r0, r1 + .pad #108 + sub sp, sp, #108 + mov r8, r0 + mov r7, r1 + ldrh r3, [r4, #96] + cmp r2, r3 + bhi .L1418 + ldrh r6, [r4, #108] + mov r9, #0 + lsr r6, r0, r6 + lsl fp, r6, #2 +.L1411: + cbnz r7, .L1417 +.L1409: + mov r0, r9 + add sp, sp, #108 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1417: + ldr r3, [r4, #3364] + mov r0, r8 + ldrh r5, [r4, #58] + ldr r3, [r3, fp] + mov r1, r5 + str r3, [sp, #8] + bl __aeabi_uidivmod + subs r5, r5, r1 + ldr r3, [sp, #8] + uxth r5, r5 + str r1, [sp, #4] + cmp r7, r5 + it cc + uxthcc r5, r7 + lsls r2, r5, #9 + str r2, [sp, #8] + cbz r3, .L1413 + ldr r2, [r4, #3300] + add r0, sp, #20 + str r3, [sp, #24] + str r3, [sp, #12] + str r2, [sp, #28] + add r2, sp, #40 + str r2, [sp, #32] + movs r2, #1 + mov r1, r2 + bl FlashReadPages + ldr r2, [sp, #20] + ldr r3, [sp, #12] + adds r2, r2, #1 + ldr r2, [r4, #3444] + it eq + moveq r9, #-1 + cmp r2, #256 + bne .L1415 + mov r2, r3 + mov r1, r6 + ldr r0, .L1419+4 + bl sftl_printk + ldr r2, [r4, #3300] + mov r1, r6 + ldr r0, .L1419+8 + bl FtlMapWritePage +.L1415: + ldr r1, [r4, #3300] + lsls r2, r5, #9 + ldr r3, [sp, #4] + mov r0, r10 + add r1, r1, r3, lsl #9 + bl ftl_memcpy +.L1416: + ldr r3, [sp, #8] + adds r6, r6, #1 + subs r7, r7, r5 + add r8, r8, r5 + add fp, fp, #4 + add r10, r10, r3 + b .L1411 +.L1413: + lsls r2, r5, #9 + mov r1, r3 + mov r0, r10 + bl ftl_memset + b .L1416 +.L1418: + mov r9, #-1 + b .L1409 +.L1420: + .align 2 +.L1419: + .word .LANCHOR0 + .word .LC108 + .word .LANCHOR0+3468 + .fnend + .size FtlVendorPartRead, .-FtlVendorPartRead + .align 1 + .global FtlLoadEctTbl + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlLoadEctTbl, %function +FtlLoadEctTbl: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, lr} + .save {r4, lr} + movs r0, #64 + ldr r4, .L1423 + ldr r2, [r4, #3340] + ldrh r1, [r4, #3332] + bl FtlVendorPartRead + ldr r3, [r4, #3340] + ldr r2, [r3] + ldr r3, .L1423+4 + cmp r2, r3 + beq .L1422 + ldr r1, .L1423+8 + ldr r0, .L1423+12 + bl sftl_printk + ldrh r2, [r4, #3332] + movs r1, #0 + ldr r0, [r4, #3340] + lsls r2, r2, #9 + bl ftl_memset +.L1422: + movs r0, #0 + pop {r4, pc} +.L1424: + .align 2 +.L1423: + .word .LANCHOR0 + .word 1112818501 + .word .LC109 + .word .LC71 + .fnend + .size FtlLoadEctTbl, .-FtlLoadEctTbl + .align 1 + .global Ftl_load_ext_data + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type Ftl_load_ext_data, %function +Ftl_load_ext_data: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + movs r1, #1 + ldr r4, .L1428 + movs r0, #0 + ldr r5, .L1428+4 + addw r2, r4, #2636 + bl FtlVendorPartRead + ldr r3, [r4, #2636] + cmp r3, r5 + beq .L1426 + mov r1, #512 + addw r0, r4, #2636 + bl __memzero + str r5, [r4, #2636] +.L1426: + ldr r3, [r4, #2636] + cmp r3, r5 + bne .L1427 + ldr r3, [r4, #2724] + str r3, [r4, #2532] + ldr r3, [r4, #2728] + str r3, [r4, #2536] + ldr r3, [r4, #2644] + str r3, [r4, #2528] + ldr r3, [r4, #2648] + str r3, [r4, #2516] + ldr r3, [r4, #2652] + str r3, [r4, #2508] + ldr r3, [r4, #2656] + str r3, [r4, #2524] + ldr r3, [r4, #2664] + str r3, [r4, #2552] + ldr r3, [r4, #2668] + str r3, [r4, #2560] + ldr r3, [r4, #2672] + str r3, [r4, #2512] + ldr r3, [r4, #2676] + str r3, [r4, #2520] + ldr r3, [r4, #2680] + str r3, [r4, #2564] + ldr r3, [r4, #2684] + str r3, [r4, #2568] +.L1427: + ldrh r2, [r4, #92] + ldr r3, [r4, #2552] + ldr r0, [r4, #2548] + ldrh r1, [r4, #40] + mla r0, r0, r2, r3 + bl __aeabi_uidiv + str r0, [r4, #2556] + pop {r3, r4, r5, pc} +.L1429: + .align 2 +.L1428: + .word .LANCHOR0 + .word 1179929683 + .fnend + .size Ftl_load_ext_data, .-Ftl_load_ext_data + .align 1 + .global sftl_vendor_read + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_vendor_read, %function +sftl_vendor_read: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + add r0, r0, #256 + b FtlVendorPartRead + .fnend + .size sftl_vendor_read, .-sftl_vendor_read + .align 1 + .global FtlVpcTblFlush + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlVpcTblFlush, %function +FtlVpcTblFlush: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, lr} + .save {r4, r5, r6, r7, r8, r9, r10, lr} + movs r5, #0 + ldr r4, .L1446 + movs r1, #255 + movw r7, #65535 + ldr r9, .L1446+16 + ldr r3, [r4, #3292] + addw r8, r4, #3444 + ldr r6, [r4, #3324] + ldr r10, .L1446+20 + str r3, [r4, #3452] + ldrh r3, [r4, #2576] + str r6, [r4, #3456] + str r5, [r6, #12] + strh r3, [r6, #2] @ movhi + movw r3, #61604 + strh r3, [r6] @ movhi + ldr r3, [r4, #2584] + str r5, [r6, #8] + ldrh r2, [r4, #2350] + str r3, [r6, #4] + ldr r3, .L1446+4 + str r3, [r4, #2268] + ldr r3, .L1446+8 + str r3, [r4, #2272] + ldrh r3, [r4, #2582] + strh r3, [r4, #2276] @ movhi + ldrh r3, [r4, #54] + strb r3, [r4, #2278] + ldrh r3, [r4, #2348] + strh r3, [r4, #2282] @ movhi + ldrb r3, [r4, #2354] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + ldrh r2, [r4, #2398] + strh r3, [r4, #2284] @ movhi + ldrb r3, [r4, #2356] @ zero_extendqisi2 + strb r3, [r4, #2279] + ldrh r3, [r4, #2396] + strh r3, [r4, #2286] @ movhi + ldrb r3, [r4, #2402] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + strh r3, [r4, #2288] @ movhi + ldrb r3, [r4, #2404] @ zero_extendqisi2 + strb r3, [r4, #2280] + ldrh r3, [r4, #2444] + ldrh r2, [r4, #2446] + ldr r0, [r4, #3452] + strh r3, [r4, #2290] @ movhi + ldrb r3, [r4, #2450] @ zero_extendqisi2 + orr r3, r3, r2, lsl #6 + ldrh r2, [r4, #110] + strh r3, [r4, #2292] @ movhi + ldrb r3, [r4, #2452] @ zero_extendqisi2 + strb r3, [r4, #2281] + ldr r3, [r4, #2548] + str r3, [r4, #2300] + ldr r3, [r4, #2540] + str r3, [r4, #2308] + ldr r3, [r4, #2544] + str r3, [r4, #2304] + bl ftl_memset + movs r2, #48 + addw r1, r4, #2268 + ldr r0, [r4, #3452] + bl ftl_memcpy + ldrh r2, [r4, #40] + ldr r0, [r4, #3452] + ldr r1, [r4, #2324] + lsls r2, r2, #1 + adds r0, r0, #48 + bl ftl_memcpy + ldrh r0, [r4, #40] + ldr r3, [r4, #3452] + ldr r1, [r4, #24] + lsrs r2, r0, #3 + adds r0, r0, #24 + lsls r0, r0, #1 + adds r2, r2, #4 + bic r0, r0, #3 + add r0, r0, r3 + bl ftl_memcpy + mov r0, r5 + bl FtlUpdateVaildLpn +.L1432: + ldr r3, [r4, #3292] + ldrh r1, [r4, #2578] + ldrh r2, [r4, #2576] + str r3, [r4, #3452] + ldr r3, [r4, #3324] + str r3, [r4, #3456] + orr r3, r1, r2, lsl #10 + str r3, [r4, #3448] + ldrh r3, [r4, #104] + subs r3, r3, #1 + cmp r1, r3 + blt .L1433 + movs r3, #0 + ldrh r7, [r4, #2580] + strh r3, [r4, #2578] @ movhi + strh r2, [r4, #2580] @ movhi + bl FtlFreeSysBlkQueueOut + ldr r3, [r4, #2540] + strh r0, [r4, #2576] @ movhi + adds r2, r3, #1 + str r3, [r4, #2584] + str r2, [r4, #2540] + lsls r2, r0, #10 + str r2, [r4, #3448] + str r3, [r6, #4] + strh r0, [r6, #2] @ movhi +.L1433: + movs r3, #1 + mov r0, r8 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldrh r3, [r4, #2578] + ldr r2, [r4, #3444] + adds r3, r3, #1 + uxth r3, r3 + adds r1, r2, #1 + strh r3, [r4, #2578] @ movhi + bne .L1434 + cmp r3, #1 + bne .L1435 + movw r2, #1135 + mov r1, r9 + mov r0, r10 + bl sftl_printk +.L1435: + ldrh r3, [r4, #2578] + adds r5, r5, #1 + uxth r5, r5 + cmp r3, #1 + ittt eq + ldrheq r3, [r4, #104] + addeq r3, r3, #-1 + strheq r3, [r4, #2578] @ movhi + cmp r5, #3 + bls .L1432 + mov r2, r5 + ldr r1, [r4, #3448] + ldr r0, .L1446+12 + bl sftl_printk +.L1438: + b .L1438 +.L1434: + cmp r3, #1 + beq .L1432 + cmp r2, #256 + beq .L1432 + movw r3, #65535 + cmp r7, r3 + beq .L1439 + movs r1, #1 + mov r0, r7 + bl FtlFreeSysBlkQueueIn +.L1439: + movs r0, #0 + pop {r4, r5, r6, r7, r8, r9, r10, pc} +.L1447: + .align 2 +.L1446: + .word .LANCHOR0 + .word 1179929683 + .word 1342177352 + .word .LC110 + .word .LANCHOR1+486 + .word .LC1 + .fnend + .size FtlVpcTblFlush, .-FtlVpcTblFlush + .align 1 + .global FtlSysFlush + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlSysFlush, %function +FtlSysFlush: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, lr} + .save {r3, lr} + bl l2p_flush + movs r0, #1 + bl FtlEctTblFlush + bl FtlVpcTblFlush + movs r0, #0 + pop {r3, pc} + .fnend + .size FtlSysFlush, .-FtlSysFlush + .align 1 + .global sftl_deinit + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_deinit, %function +sftl_deinit: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, lr} + .save {r3, lr} + ldr r3, .L1451 + ldr r3, [r3] + cmp r3, #1 + bne .L1450 + bl FtlSysFlush +.L1450: + movs r0, #0 + pop {r3, pc} +.L1452: + .align 2 +.L1451: + .word .LANCHOR2 + .fnend + .size sftl_deinit, .-sftl_deinit + .align 1 + .global FtlDiscard + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlDiscard, %function +FtlDiscard: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r4, r5, r6, r7, r8, lr} + .save {r4, r5, r6, r7, r8, lr} + .pad #8 + adds r2, r0, r1 + ldr r4, .L1468 + mov r8, r0 + mov r6, r1 + ldr r3, [r4, #140] + cmp r2, r3 + bhi .L1461 + cmp r1, #31 + bhi .L1455 +.L1460: + movs r0, #0 +.L1453: + add sp, sp, #8 + @ sp needed + pop {r4, r5, r6, r7, r8, pc} +.L1455: + ldrh r5, [r4, #58] + mov r1, r5 + bl __aeabi_uidiv + smulbb r3, r0, r5 + mov r7, r0 + sub r8, r8, r3 + uxth r3, r8 + cbz r3, .L1456 + subs r5, r5, r3 + adds r7, r7, #1 + cmp r5, r6 + it cs + movcs r5, r6 + uxth r5, r5 + subs r6, r6, r5 +.L1456: + mov r3, #-1 + str r3, [sp, #4] +.L1457: + ldrh r3, [r4, #58] + cmp r6, r3 + bcs .L1459 + ldr r3, [r4, #3652] + cmp r3, #32 + bls .L1460 + movs r5, #0 + str r5, [r4, #3652] + bl l2p_flush + bl FtlVpcTblFlush + b .L1460 +.L1459: + movs r2, #0 + mov r1, sp + mov r0, r7 + bl log2phys + ldr r3, [sp] + adds r3, r3, #1 + beq .L1458 + ldr r3, [r4, #3652] + movs r2, #1 + add r1, sp, #4 + mov r0, r7 + adds r3, r3, #1 + str r3, [r4, #3652] + ldr r3, [r4, #2512] + adds r3, r3, #1 + str r3, [r4, #2512] + bl log2phys + ldr r0, [sp] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl decrement_vpc_count +.L1458: + ldrh r3, [r4, #58] + adds r7, r7, #1 + subs r6, r6, r3 + b .L1457 +.L1461: + mov r0, #-1 + b .L1453 +.L1469: + .align 2 +.L1468: + .word .LANCHOR0 + .fnend + .size FtlDiscard, .-FtlDiscard + .align 1 + .global FtlVpcCheckAndModify + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlVpcCheckAndModify, %function +FtlVpcCheckAndModify: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} + .save {r4, r5, r6, r7, r8, r9, lr} + .pad #12 + movs r5, #0 + ldr r4, .L1483 + ldr r1, .L1483+4 + ldr r0, .L1483+8 + bl sftl_printk + ldrh r2, [r4, #42] + movs r1, #0 + ldr r0, [r4, #3344] + lsls r2, r2, #1 + bl ftl_memset +.L1471: + ldr r3, [r4, #2504] + cmp r5, r3 + bcc .L1473 + ldr r9, .L1483+12 + movs r7, #0 + movw r8, #65535 +.L1474: + ldrh r3, [r4, #40] + uxth r6, r7 + cmp r3, r6 + bhi .L1479 + bl l2p_flush + bl FtlVpcTblFlush + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, pc} +.L1473: + movs r2, #0 + add r1, sp, #4 + mov r0, r5 + bl log2phys + ldr r0, [sp, #4] + adds r3, r0, #1 + beq .L1472 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldr r2, [r4, #3344] + ldrh r3, [r2, r0, lsl #1] + adds r3, r3, #1 + strh r3, [r2, r0, lsl #1] @ movhi +.L1472: + adds r5, r5, #1 + b .L1471 +.L1479: + ldr r3, [r4, #2324] + uxth r5, r7 + ldrh r2, [r3, r5, lsl #1] + ldr r3, [r4, #3344] + ldrh r3, [r3, r5, lsl #1] + cmp r2, r3 + beq .L1476 + cmp r2, r8 + beq .L1476 + mov r1, r5 + mov r0, r9 + bl sftl_printk + ldrh r3, [r4, #2348] + cmp r3, r6 + beq .L1476 + ldrh r3, [r4, #2444] + cmp r3, r6 + beq .L1476 + ldrh r3, [r4, #2396] + cmp r3, r6 + beq .L1476 + ldr r3, [r4, #2324] + ldrh r2, [r3, r5, lsl #1] + cbnz r2, .L1478 + ldr r2, [r4, #3344] + ldrh r2, [r2, r5, lsl #1] + strh r2, [r3, r5, lsl #1] @ movhi +.L1476: + adds r7, r7, #1 + b .L1474 +.L1478: + ldr r2, [r4, #3344] + mov r0, r6 + ldrh r2, [r2, r5, lsl #1] + strh r2, [r3, r5, lsl #1] @ movhi + bl update_vpc_list + b .L1476 +.L1484: + .align 2 +.L1483: + .word .LANCHOR0 + .word .LANCHOR1+501 + .word .LC95 + .word .LC111 + .fnend + .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify + .align 1 + .global allocate_new_data_superblock + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type allocate_new_data_superblock, %function +allocate_new_data_superblock: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + mov r6, r0 + ldr r4, .L1495 + ldrh r5, [r0] + ldrh r3, [r4, #40] + cmp r3, r5 + bcs .L1486 + movw r2, #2714 + ldr r1, .L1495+4 + ldr r0, .L1495+8 + bl sftl_printk +.L1486: + movw r3, #65535 + cmp r5, r3 + beq .L1487 + ldr r3, [r4, #2324] + mov r0, r5 + ldrh r3, [r3, r5, lsl #1] + cbz r3, .L1488 + bl INSERT_DATA_LIST +.L1487: + ldrh r0, [r4, #3430] + movs r3, #1 + strb r3, [r6, #8] + movw r3, #65535 + cmp r0, r3 + beq .L1489 + cmp r5, r0 + bne .L1490 + ldr r3, [r4, #2324] + ldrh r3, [r3, r0, lsl #1] + cbz r3, .L1491 +.L1490: + bl update_vpc_list +.L1491: + movw r3, #65535 + strh r3, [r4, #3430] @ movhi +.L1489: + mov r0, r6 + bl allocate_data_superblock + bl l2p_flush + movs r0, #0 + bl FtlEctTblFlush + bl FtlVpcTblFlush + movs r0, #0 + pop {r4, r5, r6, pc} +.L1488: + bl INSERT_FREE_LIST + b .L1487 +.L1496: + .align 2 +.L1495: + .word .LANCHOR0 + .word .LANCHOR1+522 + .word .LC1 + .fnend + .size allocate_new_data_superblock, .-allocate_new_data_superblock + .align 1 + .global FtlProgPages + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlProgPages, %function +FtlProgPages: + .fnstart + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + movs r7, #0 + ldr r6, .L1511 + .pad #20 + sub sp, sp, #20 + mov r4, r3 + movs r2, #0 + ldr r10, .L1511+8 + mov r5, r0 + ldr fp, .L1511+12 + mov r9, r1 + ldrb r3, [r3, #9] @ zero_extendqisi2 + bl FlashProgPages +.L1498: + cmp r7, r9 + beq .L1505 + mov r8, #0 + b .L1506 +.L1501: + ldr r0, [r5, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + ldrh r3, [r4] + cmp r3, r0 + bne .L1499 + ldr r1, [r6, #2324] + ldrh r0, [r4, #4] + ldrh r2, [r1, r3, lsl #1] + subs r2, r2, r0 + strh r2, [r1, r3, lsl #1] @ movhi + ldrh r3, [r6, #102] + strb r8, [r4, #6] + strh r8, [r4, #4] @ movhi + strh r3, [r4, #2] @ movhi +.L1499: + ldrh r3, [r4, #4] + cbnz r3, .L1500 + mov r0, r4 + bl allocate_new_data_superblock +.L1500: + ldr r3, [r6, #2732] + adds r3, r3, #1 + str r3, [r6, #2732] + ldr r0, [r5, #4] + ubfx r0, r0, #10, #16 + bl FtlGcMarkBadPhyBlk + mov r0, r4 + bl get_new_active_ppa + movs r2, #0 + str r0, [r5, #4] + str r0, [sp, #12] + movs r1, #1 + ldrb r3, [r4, #9] @ zero_extendqisi2 + mov r0, r5 + bl FlashProgPages +.L1506: + ldr r3, [r5] + adds r3, r3, #1 + beq .L1501 + ldrb r2, [r4, #6] @ zero_extendqisi2 + ldrh r3, [r6, #32] + cmp r2, r3 + bcc .L1502 + movw r2, #955 + mov r1, r10 + mov r0, fp + bl sftl_printk +.L1502: + ldr r3, [r5, #4] + add r1, sp, #16 + movs r2, #1 + ldr r0, [r5, #16] + str r3, [r1, #-4]! + bl log2phys + ldr r3, [r5, #12] + ldr r3, [r3, #12] + ubfx r0, r3, #10, #16 + str r3, [sp, #4] + bl P2V_block_in_plane + ldr r3, [sp, #4] + mov r8, r0 + adds r3, r3, #1 + beq .L1503 + ldr r3, [r6, #2324] + ldrh r2, [r3, r0, lsl #1] + cbnz r2, .L1504 + mov r1, r0 + ldr r0, .L1511+4 + bl sftl_printk +.L1504: + mov r0, r8 + bl decrement_vpc_count +.L1503: + adds r7, r7, #1 + adds r5, r5, #20 + b .L1498 +.L1505: + ldrb r2, [r4, #6] @ zero_extendqisi2 + ldrh r3, [r6, #32] + cmp r2, r3 + bcc .L1497 + movw r2, #970 + ldr r1, .L1511+8 + ldr r0, .L1511+12 + bl sftl_printk +.L1497: + add sp, sp, #20 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1512: + .align 2 +.L1511: + .word .LANCHOR0 + .word .LC112 + .word .LANCHOR1+551 + .word .LC1 + .fnend + .size FtlProgPages, .-FtlProgPages + .align 1 + .global FtlGcFreeTempBlock + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlGcFreeTempBlock, %function +FtlGcFreeTempBlock: + .fnstart + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #12 + movw r2, #65535 + ldr r4, .L1539 + ldrh r5, [r4, #2444] + ldrh r1, [r4, #102] + cmp r5, r2 + bne .L1514 +.L1524: + ldrh r2, [r4, #2444] + movs r3, #0 + str r3, [r4, #3436] + movw r3, #65535 + cmp r2, r3 + bne .L1537 +.L1515: + movs r0, #0 +.L1513: + add sp, sp, #12 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1514: + cbz r0, .L1517 + ldr r3, .L1539+4 + ldrh r0, [r3, #4] + cmp r0, r2 + beq .L1518 +.L1519: + movs r1, #2 +.L1517: + ldr r0, .L1539+8 + bl FtlGcScanTempBlk + str r0, [sp, #4] + adds r0, r0, #1 + beq .L1520 + ldr r2, [r4, #2328] + ldrh r3, [r2, r5, lsl #1] + cmp r3, #4 + bls .L1521 + subs r3, r3, #5 + movs r0, #1 + strh r3, [r2, r5, lsl #1] @ movhi + bl FtlEctTblFlush +.L1521: + ldr r3, [r4, #3436] + cbnz r3, .L1522 + ldr r3, [r4, #2732] + ldr r0, [sp, #4] + adds r3, r3, #1 + ubfx r0, r0, #10, #16 + str r3, [r4, #2732] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L1522: + movs r3, #0 + str r3, [r4, #3436] +.L1533: + movs r0, #1 + b .L1513 +.L1518: + movs r2, #0 + strh r2, [r3, #4] @ movhi + ldrh r3, [r4, #2344] + cmp r3, #17 + bhi .L1519 + b .L1517 +.L1520: + ldr r3, .L1539+4 + ldrh r2, [r3, #4] + movw r3, #65535 + cmp r2, r3 + bne .L1533 + b .L1524 +.L1537: + ldrb r1, [r4, #2451] @ zero_extendqisi2 + ldrh r3, [r4, #102] + ldrh r2, [r4, #3200] + muls r3, r1, r3 + cmp r2, r3 + beq .L1525 + movs r2, #162 + ldr r1, .L1539+12 + ldr r0, .L1539+16 + bl sftl_printk +.L1525: + ldrb r3, [r4, #2451] @ zero_extendqisi2 + movs r6, #0 + ldrh r0, [r4, #102] + mov r9, #12 + ldr r2, [r4, #2324] + ldrh r1, [r4, #2444] + ldr r10, .L1539+12 + smulbb r3, r3, r0 + ldr fp, .L1539+16 + strh r3, [r2, r1, lsl #1] @ movhi + ldr r2, [r4, #2528] + ldrh r3, [r4, #3200] + add r3, r3, r2 + str r3, [r4, #2528] +.L1526: + ldrh r2, [r4, #3200] + uxth r3, r6 + cmp r2, r3 + bhi .L1530 + movw r0, #65535 + bl decrement_vpc_count + ldrh r0, [r4, #2444] + ldr r3, [r4, #2324] + ldrh r3, [r3, r0, lsl #1] + cmp r3, #0 + beq .L1531 + bl INSERT_DATA_LIST +.L1532: + movw r6, #65535 + movs r5, #0 + strh r6, [r4, #2444] @ movhi + strh r5, [r4, #3200] @ movhi + strh r5, [r4, #3192] @ movhi + bl l2p_flush + bl FtlVpcTblFlush + ldrh r3, [r4, #2572] + ldrh r2, [r4, #2344] + strh r6, [r4, #2588] @ movhi + add r3, r3, r3, lsl #1 + cmp r2, r3, asr #2 + ble .L1515 + movs r3, #20 + strh r3, [r4, #3148] @ movhi + b .L1515 +.L1530: + uxth r7, r6 + ldr r8, [r4, #3196] + ldr r3, [r4, #2504] + mul r7, r9, r7 + add r5, r8, r7 + ldr r2, [r5, #8] + cmp r2, r3 + bcc .L1527 + movs r2, #168 + mov r1, r10 + mov r0, fp + bl sftl_printk +.L1527: + movs r2, #0 + add r1, sp, #4 + ldr r0, [r5, #8] + bl log2phys + ldr r0, [r8, r7] + ldr r3, [sp, #4] + cmp r0, r3 + bne .L1528 + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + movs r2, #1 + mov r7, r0 + adds r1, r5, #4 + ldr r0, [r5, #8] + bl log2phys + mov r0, r7 +.L1538: + bl decrement_vpc_count +.L1529: + adds r6, r6, #1 + b .L1526 +.L1528: + ldr r2, [r5, #4] + cmp r3, r2 + beq .L1529 + ldrh r0, [r4, #2444] + b .L1538 +.L1531: + bl INSERT_FREE_LIST + b .L1532 +.L1540: + .align 2 +.L1539: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR0+2444 + .word .LANCHOR1+564 + .word .LC1 + .fnend + .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock + .align 1 + .global FtlGcPageRecovery + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlGcPageRecovery, %function +FtlGcPageRecovery: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, lr} + .save {r4, lr} + ldr r4, .L1543 + ldrh r1, [r4, #102] + addw r0, r4, #2444 + bl FtlGcScanTempBlk + ldrh r2, [r4, #2446] + ldrh r3, [r4, #102] + cmp r2, r3 + bcc .L1541 + addw r0, r4, #3384 + bl FtlMapBlkWriteDump_data + movs r0, #0 + bl FtlGcFreeTempBlock + movs r3, #0 + str r3, [r4, #3436] +.L1541: + pop {r4, pc} +.L1544: + .align 2 +.L1543: + .word .LANCHOR0 + .fnend + .size FtlGcPageRecovery, .-FtlGcPageRecovery + .align 1 + .global FtlPowerLostRecovery + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlPowerLostRecovery, %function +FtlPowerLostRecovery: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movs r5, #0 + ldr r4, .L1546 + addw r6, r4, #2348 + str r5, [r4, #3516] + mov r0, r6 + addw r4, r4, #2396 + bl FtlRecoverySuperblock + mov r0, r6 + bl FtlSlcSuperblockCheck + mov r0, r4 + bl FtlRecoverySuperblock + mov r0, r4 + bl FtlSlcSuperblockCheck + bl FtlGcPageRecovery + movw r0, #65535 + bl decrement_vpc_count + mov r0, r5 + pop {r4, r5, r6, pc} +.L1547: + .align 2 +.L1546: + .word .LANCHOR0 + .fnend + .size FtlPowerLostRecovery, .-FtlPowerLostRecovery + .align 1 + .global Ftl_gc_temp_data_write_back + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type Ftl_gc_temp_data_write_back, %function +Ftl_gc_temp_data_write_back: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, lr} + .save {r4, r5, r6, lr} + movs r3, #0 + ldr r4, .L1555 + movs r5, #0 + movs r6, #20 + mov r2, r3 + ldr r1, [r4, #3164] + ldr r0, [r4, #3284] + bl FlashProgPages +.L1549: + ldr r1, [r4, #3164] + uxth r3, r5 + cmp r1, r3 + bhi .L1552 + ldr r0, [r4, #3284] + bl FtlGcBufFree + ldrh r3, [r4, #2448] + movs r0, #0 + str r0, [r4, #3164] + cbnz r3, .L1548 + movs r0, #1 + bl FtlGcFreeTempBlock + b .L1554 +.L1552: + muls r3, r6, r3 + ldr r2, [r4, #3284] + adds r5, r5, #1 + adds r1, r2, r3 + ldr r2, [r2, r3] + adds r0, r2, #1 + bne .L1550 + ldrh r0, [r4, #2444] + movs r5, #0 + ldr r1, [r4, #2324] + strh r5, [r1, r0, lsl #1] @ movhi + strh r2, [r4, #2444] @ movhi + ldr r2, [r4, #2732] + adds r2, r2, #1 + str r2, [r4, #2732] + ldr r2, [r4, #3284] + add r3, r3, r2 + ldr r0, [r3, #4] + ubfx r0, r0, #10, #16 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + bl FtlGcPageVarInit +.L1554: + movs r0, #1 +.L1548: + pop {r4, r5, r6, pc} +.L1550: + ldr r3, [r1, #12] + ldr r1, [r1, #4] + ldr r2, [r3, #8] + ldr r0, [r3, #12] + bl FtlGcUpdatePage + b .L1549 +.L1556: + .align 2 +.L1555: + .word .LANCHOR0 + .fnend + .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back + .align 1 + .global Ftl_get_new_temp_ppa + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type Ftl_get_new_temp_ppa, %function +Ftl_get_new_temp_ppa: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + movw r3, #65535 + ldr r4, .L1560 + ldrh r2, [r4, #2444] + cmp r2, r3 + beq .L1558 + ldrh r3, [r4, #2448] + cbnz r3, .L1559 +.L1558: + movs r0, #0 + movs r5, #0 + bl FtlGcFreeTempBlock + ldr r0, .L1560+4 + strb r5, [r4, #2452] + bl allocate_data_superblock + strh r5, [r4, #3192] @ movhi + strh r5, [r4, #3200] @ movhi + bl l2p_flush + mov r0, r5 + bl FtlEctTblFlush + bl FtlVpcTblFlush +.L1559: + ldr r0, .L1560+4 + pop {r3, r4, r5, lr} + b get_new_active_ppa +.L1561: + .align 2 +.L1560: + .word .LANCHOR0 + .word .LANCHOR0+2444 + .fnend + .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa + .align 1 .global FtlSysBlkInit .syntax unified .thumb @@ -12745,25 +10864,25 @@ FtlSysBlkInit: push {r4, r5, r6, lr} .save {r4, r5, r6, lr} movs r3, #0 - ldr r4, .L1844 + ldr r4, .L1577 ldrh r0, [r4, #36] - strh r3, [r4, #4016] @ movhi + strh r3, [r4, #3512] @ movhi bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk ldrh r2, [r4, #2576] movw r3, #65535 cmp r2, r3 - bne .L1821 -.L1823: - mov r6, #-1 -.L1820: - mov r0, r6 + bne .L1563 +.L1565: + mov r5, #-1 +.L1562: + mov r0, r5 pop {r4, r5, r6, pc} -.L1821: +.L1563: bl FtlLoadSysInfo - mov r6, r0 + mov r5, r0 cmp r0, #0 - bne .L1823 + bne .L1565 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -12774,23 +10893,27 @@ FtlSysBlkInit: movs r0, #1 bl FtlUpdateVaildLpn ldrh r1, [r4, #138] - mov r3, r6 + mov r3, r5 ldr r2, [r4, #2492] movs r0, #12 -.L1824: +.L1566: cmp r3, r1 - bge .L1829 - mla r5, r0, r3, r2 - ldr r5, [r5, #4] - cmp r5, #0 - bge .L1825 -.L1829: + bge .L1571 + mla r6, r0, r3, r2 + ldr r6, [r6, #4] + cmp r6, #0 + bge .L1567 +.L1571: ldrh r2, [r4, #2296] cmp r3, r1 add r2, r2, #1 strh r2, [r4, #2296] @ movhi - bge .L1843 -.L1826: + bge .L1576 +.L1568: + ldr r0, .L1577+4 + bl FtlSuperblockPowerLostFix + ldr r0, .L1577+8 + bl FtlSuperblockPowerLostFix ldrh r1, [r4, #2348] ldr r2, [r4, #2324] ldrh r0, [r4, #2352] @@ -12804,109 +10927,2060 @@ FtlSysBlkInit: movs r3, #0 strb r3, [r4, #2354] strh r3, [r4, #2352] @ movhi - ldrh r5, [r4, #2400] + ldrh r6, [r4, #2400] ldrh r2, [r1, r0, lsl #1] - subs r2, r2, r5 + subs r2, r2, r6 strh r2, [r1, r0, lsl #1] @ movhi - ldrh r2, [r4, #102] - ldr r0, .L1844+4 strb r3, [r4, #2402] - strh r2, [r4, #2398] @ movhi strh r3, [r4, #2400] @ movhi - bl FtlMapBlkWriteDump_data - ldr r0, .L1844+8 - bl FtlMapBlkWriteDump_data ldrh r3, [r4, #2298] + ldrh r2, [r4, #102] adds r3, r3, #1 + strh r2, [r4, #2398] @ movhi strh r3, [r4, #2298] @ movhi bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush - b .L1830 -.L1825: + b .L1572 +.L1567: adds r3, r3, #1 - b .L1824 -.L1843: - ldrh r3, [r4, #4016] + b .L1566 +.L1576: + ldrh r3, [r4, #3512] cmp r3, #0 - bne .L1826 -.L1830: - ldrh r5, [r4, #2312] - movw r2, #65533 - subs r3, r5, #1 - uxth r3, r3 - cmp r3, r2 - bhi .L1832 - mov r1, r5 - ldr r0, .L1844+12 - strh r5, [r4, #3202] @ movhi - bl test_node_in_list - cbnz r0, .L1833 - ldrh r3, [r4, #40] - cmp r3, r5 - bls .L1833 - ldr r3, [r4, #2324] - ldrh r3, [r3, r5, lsl #1] - cbnz r3, .L1832 -.L1833: - movw r3, #65535 - strh r3, [r4, #3202] @ movhi -.L1832: - ldrh r5, [r4, #2314] - movw r2, #65533 - subs r3, r5, #1 - uxth r3, r3 - cmp r3, r2 - bhi .L1836 - mov r1, r5 - ldr r0, .L1844+12 - strh r5, [r4, #3204] @ movhi - bl test_node_in_list - cbnz r0, .L1837 - ldrh r3, [r4, #40] - cmp r3, r5 - bls .L1837 - ldr r3, [r4, #2324] - ldrh r3, [r3, r5, lsl #1] - cbnz r3, .L1836 -.L1837: - movw r3, #65535 - strh r3, [r4, #3204] @ movhi -.L1836: + bne .L1568 +.L1572: + bl FtlVpcCheckAndModify ldrh r0, [r4, #2348] movw r3, #65535 cmp r0, r3 - beq .L1839 + beq .L1562 ldrh r3, [r4, #2352] - cbnz r3, .L1839 + cmp r3, #0 + bne .L1562 ldrh r3, [r4, #2400] - cbnz r3, .L1839 + cmp r3, #0 + bne .L1562 bl FtlGcRefreshBlock ldrh r0, [r4, #2396] bl FtlGcRefreshBlock bl FtlVpcTblFlush - ldr r0, .L1844+16 + ldr r0, .L1577+4 bl allocate_new_data_superblock - ldr r0, .L1844+20 + ldr r0, .L1577+8 bl allocate_new_data_superblock -.L1839: - ldrh r3, [r4, #2296] - lsls r3, r3, #27 - bne .L1820 - bl FtlVpcCheckAndModify - b .L1820 -.L1845: + b .L1562 +.L1578: .align 2 -.L1844: +.L1577: .word .LANCHOR0 - .word .LANCHOR0+3908 - .word .LANCHOR0+3956 - .word .LANCHOR0+2340 .word .LANCHOR0+2348 .word .LANCHOR0+2396 .fnend .size FtlSysBlkInit, .-FtlSysBlkInit .align 1 + .global rk_ftl_garbage_collect + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type rk_ftl_garbage_collect, %function +rk_ftl_garbage_collect: + .fnstart + @ args = 0, pretend = 0, frame = 32 + @ frame_needed = 0, uses_anonymous_args = 0 + ldr r3, .L1701 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r9, r0 + .pad #44 + sub sp, sp, #44 + mov r4, r3 + ldr r0, [r3, #3264] + cmp r0, #0 + bne .L1656 + ldrh r2, [r3, #2336] + cmp r2, #47 + bls .L1579 + ldr r2, .L1701+4 + ldrh r1, [r2, #4] + movw r2, #65535 + cmp r1, r2 + bne .L1581 +.L1584: + ldrh r2, [r4, #3204] + movw r1, #65535 + cmp r2, r1 + bne .L1582 +.L1583: + bl FtlReadRefresh + ldr r3, [r4, #3152] + movw r6, #65535 + ldrh r1, [r4, #2588] + adds r3, r3, #1 + add r3, r3, r9, lsl #7 + cmp r1, r6 + str r3, [r4, #3152] + bne .L1585 + ldrh r2, [r4, #2444] + cmp r2, r1 + bne .L1586 + ldrh r7, [r4, #3202] + cmp r7, r2 + bne .L1587 + ldrh r2, [r4, #2344] + cmp r2, #24 + ite cc + movcc r2, #5120 + movcs r2, #1024 + cmp r3, r2 + bls .L1587 + movs r5, #0 + str r5, [r4, #3152] + strh r5, [r4, #3656] @ movhi + bl GetSwlReplaceBlock + cmp r0, r7 + mov r6, r0 + bne .L1660 + ldrh r2, [r4, #2344] + ldrh r3, [r4, #3150] + cmp r2, r3 + bcs .L1590 + movs r0, #64 + bl List_get_gc_head_node + uxth r3, r0 + cmp r3, r6 + beq .L1592 + mov r0, r3 + ldr r3, [r4, #2324] + ldrh r3, [r3, r0, lsl #1] + cmp r3, #7 + bhi .L1593 + mov r0, r5 + bl List_get_gc_head_node + uxth r5, r0 + movs r3, #128 + strh r3, [r4, #3150] @ movhi + cmp r5, r6 + bne .L1589 +.L1592: + bl FtlGcReFreshBadBlk + cmp r9, #0 + bne .L1595 + movw r3, #65535 + cmp r6, r3 + bne .L1595 +.L1654: + ldrh r3, [r4, #2344] + cmp r3, #24 + bhi .L1661 + cmp r3, #16 + ldrh r5, [r4, #102] + bls .L1597 + lsrs r5, r5, #5 +.L1596: + ldrh r2, [r4, #3148] + cmp r2, r3 + bcs .L1600 + ldrh r3, [r4, #2444] + movw r2, #65535 + cmp r3, r2 + bne .L1601 + ldrh r2, [r4, #3202] + cmp r2, r3 + bne .L1601 + ldrh r0, [r4, #3656] + cbnz r0, .L1602 + ldr r3, [r4, #2504] + ldr r2, [r4, #2500] + add r3, r3, r3, lsl #1 + cmp r2, r3, lsr #2 + bcs .L1603 +.L1602: + ldrh r3, [r4, #2572] + add r3, r3, r3, lsl #1 + asrs r3, r3, #2 +.L1697: + strh r3, [r4, #3148] @ movhi + movs r3, #0 + str r3, [r4, #3160] +.L1579: + add sp, sp, #44 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1581: + ldrh r3, [r3, #2444] + cmp r3, r2 + beq .L1584 + movs r0, #1 + bl FtlGcFreeTempBlock + cmp r0, #0 + beq .L1584 + movs r0, #1 + b .L1579 +.L1582: + ldrh r3, [r4, #3202] + cmp r3, r1 + itt eq + strheq r2, [r4, #3202] @ movhi + strheq r3, [r4, #3204] @ movhi + b .L1583 +.L1593: + movs r3, #64 +.L1696: + strh r3, [r4, #3150] @ movhi + b .L1592 +.L1590: + movs r3, #80 + b .L1696 +.L1660: + mov r5, r0 +.L1589: + ldr r3, [r4, #2324] + mov r6, r5 + ldrh r1, [r4, #3148] + ldrh r2, [r4, #2344] + ldrh r3, [r3, r5, lsl #1] + str r1, [sp, #4] + ldr r1, [r4, #2328] + ldr r0, .L1701+8 + ldrh r1, [r1, r5, lsl #1] + str r1, [sp] + mov r1, r5 + bl sftl_printk + b .L1592 +.L1597: + cmp r3, #12 + bls .L1598 + lsrs r5, r5, #4 + b .L1596 +.L1598: + cmp r3, #8 + bls .L1596 + lsrs r5, r5, #2 + b .L1596 +.L1661: + movs r5, #1 + b .L1596 +.L1603: + movs r3, #18 + b .L1697 +.L1601: + ldrh r3, [r4, #2572] + add r3, r3, r3, lsl #1 + asrs r3, r3, #2 + strh r3, [r4, #3148] @ movhi +.L1600: + ldrh r3, [r4, #3206] + cbz r3, .L1662 + adds r5, r5, #32 + uxth r5, r5 +.L1662: + movw r6, #65535 +.L1606: + ldrh r3, [r4, #2588] + movw r2, #65535 + cmp r3, r2 + bne .L1615 + cmp r6, r3 + beq .L1616 + strh r6, [r4, #2588] @ movhi +.L1617: + ldrh r0, [r4, #2588] + movw r7, #65535 + movs r3, #0 + strb r3, [r4, #2596] + cmp r0, r7 + beq .L1615 + bl IsBlkInGcList + cbz r0, .L1620 + strh r7, [r4, #2588] @ movhi +.L1620: + ldrh r2, [r4, #2588] + movw r3, #65535 + cmp r2, r3 + beq .L1615 + ldr r0, .L1701+12 + bl make_superblock + movs r3, #0 + ldrh r2, [r4, #2588] + strh r3, [r4, #2590] @ movhi + strb r3, [r4, #2594] + strh r3, [r4, #3658] @ movhi + ldr r3, [r4, #2324] + ldrh r3, [r3, r2, lsl #1] + strh r3, [r4, #3660] @ movhi +.L1615: + ldrh r3, [r4, #2588] + ldrh r2, [r4, #2348] + cmp r2, r3 + beq .L1621 + ldrh r2, [r4, #2396] + cmp r2, r3 + bne .L1622 +.L1621: + movw r3, #65535 + strh r3, [r4, #2588] @ movhi +.L1622: + ldr r7, .L1701 + mov r4, r7 +.L1652: + ldrh r10, [r7, #2588] + movw r3, #65535 + cmp r10, r3 + bne .L1623 + movs r3, #0 + mov fp, r3 + str r3, [r7, #3160] +.L1624: + ldrh r8, [r4, #3156] + mov r0, r8 + bl List_get_gc_head_node + uxth r2, r0 + cmp r2, r10 + strh r2, [r4, #2588] @ movhi + bne .L1625 + movs r3, #0 + movs r0, #8 + strh r3, [r4, #3156] @ movhi + b .L1579 +.L1607: + movs r3, #0 + ldrh r2, [r4, #2344] + str r3, [r4, #3160] + ldrh r3, [r4, #3148] + cmp r2, r3 + bls .L1608 + ldrh r3, [r4, #3656] + cbnz r3, .L1609 + ldr r3, [r4, #2504] + ldr r2, [r4, #2500] + add r3, r3, r3, lsl #1 + cmp r2, r3, lsr #2 + bcs .L1610 +.L1609: + ldrh r3, [r4, #2572] + add r3, r3, r3, lsl #1 + asrs r3, r3, #2 +.L1698: + strh r3, [r4, #3148] @ movhi + bl FtlReadRefresh + movs r0, #0 + bl List_get_gc_head_node + ldr r3, [r4, #2324] + uxth r0, r0 + ldrh r3, [r3, r0, lsl #1] + cmp r3, #4 + bls .L1608 +.L1700: + ldrh r0, [r4, #3656] + b .L1579 +.L1610: + movs r3, #18 + b .L1698 +.L1608: + ldrh r0, [r4, #3656] + cmp r0, #0 + bne .L1612 + ldrh r5, [r4, #2572] + add r3, r5, r5, lsl #1 + asrs r3, r3, #2 + strh r3, [r4, #3148] @ movhi + bl List_get_gc_head_node + ldr r3, [r4, #2324] + uxth r0, r0 + ldrh r1, [r4, #104] + ldrh r2, [r3, r0, lsl #1] + ldrh r3, [r4, #32] + muls r3, r1, r3 + add r3, r3, r3, lsr #31 + cmp r2, r3, asr #1 + ble .L1613 + ldrh r3, [r4, #2344] + subs r5, r5, #1 + cmp r3, r5 + blt .L1613 + bl FtlReadRefresh + b .L1700 +.L1613: + cmp r2, #0 + bne .L1612 + movw r0, #65535 + bl decrement_vpc_count + ldrh r0, [r4, #2344] + adds r0, r0, #1 + b .L1579 +.L1702: + .align 2 +.L1701: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC113 + .word .LANCHOR0+2588 +.L1616: + ldrh r3, [r4, #3202] + cmp r3, r6 + beq .L1617 + ldr r2, [r4, #2324] + ldrh r3, [r2, r3, lsl #1] + cbnz r3, .L1618 + strh r6, [r4, #3202] @ movhi +.L1618: + ldrh r3, [r4, #3202] + strh r3, [r4, #2588] @ movhi + movw r3, #65535 + strh r3, [r4, #3202] @ movhi + b .L1617 +.L1625: + str r0, [sp, #16] + mov r0, r2 + str r2, [sp, #12] + add r8, r8, #1 + bl IsBlkInGcList + ldr r2, [sp, #12] + ldr r3, [sp, #16] + cbz r0, .L1626 + strh r8, [r4, #3156] @ movhi + b .L1624 +.L1626: + ldrh lr, [r4, #32] + uxth r8, r8 + ldrh r1, [r4, #102] + uxth r3, r3 + ldr r0, [r4, #2324] + strh r8, [r4, #3156] @ movhi + mul r1, lr, r1 + ldrh ip, [r0, r3, lsl #1] + add lr, r1, r1, lsr #31 + cmp ip, lr, asr #1 + bgt .L1628 + cmp r8, #48 + bls .L1629 + cmp ip, #8 + bls .L1629 + ldrh ip, [r4, #3192] + cmp ip, #35 + bhi .L1629 +.L1628: + strh fp, [r4, #3156] @ movhi +.L1629: + ldrh r3, [r0, r3, lsl #1] + cmp r1, r3 + bgt .L1630 + cmp r6, r10 + bne .L1630 + ldrh r1, [r4, #3156] + cmp r1, #3 + bhi .L1630 + movs r3, #0 + strh r6, [r4, #2588] @ movhi + strh r3, [r4, #3156] @ movhi + b .L1700 +.L1630: + cbnz r3, .L1631 + movw r0, #65535 + bl decrement_vpc_count + ldrh r3, [r4, #3156] + adds r3, r3, #1 + strh r3, [r4, #3156] @ movhi + b .L1624 +.L1631: + movs r3, #0 + strb r3, [r4, #2596] + ldrh r3, [r4, #2348] + cmp r3, r2 + bne .L1632 + mov r2, #700 + ldr r1, .L1703 + ldr r0, .L1703+4 + bl sftl_printk +.L1632: + ldrh r2, [r4, #2588] + ldrh r3, [r4, #2396] + cmp r2, r3 + bne .L1633 + movw r2, #701 + ldr r1, .L1703 + ldr r0, .L1703+4 + bl sftl_printk +.L1633: + ldrh r2, [r4, #2588] + ldrh r3, [r4, #2444] + cmp r2, r3 + bne .L1634 + movw r2, #702 + ldr r1, .L1703 + ldr r0, .L1703+4 + bl sftl_printk +.L1634: + ldr r0, .L1703+8 + bl make_superblock + ldrh r1, [r4, #2588] + movs r3, #0 + ldr r2, [r4, #2324] + strh r3, [r4, #3658] @ movhi + ldrh r2, [r2, r1, lsl #1] + strh r3, [r4, #2590] @ movhi + strb r3, [r4, #2594] + strh r2, [r4, #3660] @ movhi +.L1623: + movs r3, #1 + str r3, [r4, #3264] + ldrh r3, [r4, #102] + str r3, [sp, #16] + cmp r9, #0 + beq .L1635 + ldr r2, [sp, #16] + ldrh r3, [r4, #32] + ldrh r1, [r4, #2588] + muls r3, r2, r3 + ldr r2, [r4, #2324] + ldrh r2, [r2, r1, lsl #1] + subs r3, r3, r2 + it mi + addmi r3, r3, #3 + add r5, r5, r3, asr #2 + uxth r5, r5 +.L1635: + ldrh r3, [r4, #2590] + ldr r1, [sp, #16] + adds r2, r3, r5 + cmp r2, r1 + itt gt + movgt r2, r1 + subgt r5, r2, r3 + mov r3, #0 + it gt + uxthgt r5, r5 +.L1699: + str r3, [sp, #20] + ldrh r3, [sp, #20] + cmp r5, r3 + bls .L1646 + ldr r3, [sp, #20] + movw r10, #65535 + ldrh r8, [r7, #2590] + mov fp, #20 + ldrh ip, [r7, #32] + ldr r0, [r7, #3180] + add r8, r8, r3 + ldr r3, .L1703+12 + str r3, [sp, #24] + movs r3, #0 + str r3, [sp, #12] + b .L1647 +.L1640: + ldr r1, [sp, #24] + ldrh r2, [r1, #2]! + cmp r2, r10 + str r1, [sp, #24] + beq .L1639 + ldr r1, [sp, #12] + orr r2, r8, r2, lsl #10 + mla lr, fp, r1, r0 + str r2, [lr, #4] + mov r2, r1 + adds r2, r2, #1 + uxth r2, r2 + str r2, [sp, #12] +.L1639: + adds r3, r3, #1 +.L1647: + uxth r2, r3 + cmp ip, r2 + bhi .L1640 + mov fp, #0 + ldrb r2, [r7, #2596] @ zero_extendqisi2 + ldr r1, [sp, #12] + bl FlashReadPages +.L1641: + ldr r2, [sp, #12] + uxth r3, fp + cmp r2, r3 + bhi .L1645 + ldr r3, [sp, #20] + adds r3, r3, #1 + b .L1699 +.L1645: + mov r8, #20 + ldr r3, [r7, #3180] + mul r8, r8, fp + add r2, r3, r8 + ldr r3, [r3, r8] + adds r3, r3, #1 + beq .L1642 + ldr r10, [r2, #12] + movw r3, #61589 + ldrh r2, [r10] + cmp r2, r3 + bne .L1642 + ldr r3, [r10, #8] + adds r2, r3, #1 + bne .L1643 + mov r2, #736 + ldr r1, .L1703 + ldr r0, .L1703+4 + str r3, [sp, #24] + bl sftl_printk + ldr r3, [sp, #24] +.L1643: + movs r2, #0 + mov r0, r3 + add r1, sp, #36 + bl log2phys + ldr r0, [r4, #3180] + ldr r3, [sp, #36] + add r0, r0, r8 + ldr r2, [r0, #4] + cmp r2, r3 + bne .L1642 + ldrh r3, [r4, #3658] + movs r2, #20 + ldr r1, [r4, #3164] + str r2, [sp, #28] + adds r3, r3, #1 + strh r3, [r4, #3658] @ movhi + ldr r3, [r4, #3284] + mla r3, r2, r1, r3 + ldr r1, [r0, #16] + str r1, [r3, #16] + str r3, [sp, #24] + bl Ftl_get_new_temp_ppa + ldr r3, [sp, #24] + ldr r1, [r4, #3284] + ldr r2, [sp, #28] + str r0, [r3, #4] + ldr r3, [r4, #3164] + mla r3, r2, r3, r1 + ldr r2, [r4, #3180] + add r2, r2, r8 + ldr r1, [r2, #8] + str r1, [r3, #8] + movs r1, #1 + ldr r2, [r2, #12] + str r2, [r3, #12] + ldr r3, [sp, #36] + str r3, [r10, #12] + ldrh r3, [r4, #2444] + strh r3, [r10, #2] @ movhi + ldr r3, [r4, #2544] + ldr r0, [r4, #3180] + str r3, [r10, #4] + ldr r3, [r4, #3164] + add r0, r0, r8 + adds r3, r3, #1 + str r3, [r4, #3164] + bl FtlGcBufAlloc + ldrb r2, [r4, #2451] @ zero_extendqisi2 + ldr r3, [r4, #3164] + cmp r2, r3 + beq .L1644 + ldrh r3, [r4, #2448] + cbnz r3, .L1642 +.L1644: + bl Ftl_gc_temp_data_write_back + cbz r0, .L1642 + ldr r3, .L1703+16 + movs r2, #0 + str r2, [r3, #3264] + ldrh r0, [r3, #3656] + b .L1579 +.L1642: + add fp, fp, #1 + b .L1641 +.L1646: + ldrh r3, [r7, #2590] + add r5, r5, r3 + ldr r3, [sp, #16] + uxth r5, r5 + cmp r3, r5 + strh r5, [r7, #2590] @ movhi + bhi .L1648 + ldr r3, [r7, #3164] + cbz r3, .L1649 + bl Ftl_gc_temp_data_write_back + cbz r0, .L1649 + movs r3, #0 + ldrh r0, [r7, #3656] + str r3, [r7, #3264] + b .L1579 +.L1649: + ldrh r1, [r7, #3658] + cbnz r1, .L1650 + ldrh r2, [r7, #2588] + ldr r3, [r7, #2324] + ldrh r0, [r3, r2, lsl #1] + cbz r0, .L1650 + strh r1, [r3, r2, lsl #1] @ movhi + ldrh r0, [r7, #2588] + bl update_vpc_list + bl l2p_flush + bl FtlVpcTblFlush +.L1650: + movw r3, #65535 + strh r3, [r7, #2588] @ movhi +.L1648: + movs r3, #0 + str r3, [r7, #3264] + ldrh r3, [r7, #2344] + cmp r3, #2 + bhi .L1651 + ldrh r5, [r7, #102] + b .L1652 +.L1651: + ldrh r0, [r7, #3656] + cmp r0, #0 + bne .L1579 + adds r0, r3, #1 + b .L1579 +.L1656: + movs r0, #0 + b .L1579 +.L1585: + cmp r9, #0 + beq .L1654 +.L1595: + ldrh r2, [r4, #2444] + movw r3, #65535 + cmp r2, r3 + bne .L1665 +.L1655: + ldrh r3, [r4, #3202] + movw r2, #65535 + cmp r3, r2 + bne .L1665 + cmp r6, r3 + bne .L1665 + ldrh r3, [r4, #2588] + cmp r3, r6 + beq .L1607 +.L1612: + movw r6, #65535 +.L1665: + movs r5, #1 + b .L1606 +.L1587: + cmp r9, #0 + beq .L1654 + movw r6, #65535 + b .L1655 +.L1586: + cmp r9, #0 + bne .L1612 + b .L1654 +.L1704: + .align 2 +.L1703: + .word .LANCHOR1+583 + .word .LC1 + .word .LANCHOR0+2588 + .word .LANCHOR0+2602 + .word .LANCHOR0 + .fnend + .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect + .align 1 + .global sftl_init + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_init, %function +sftl_init: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, lr} + .save {r3, r4, r5, lr} + mov r3, #-1 + ldr r4, .L1711 + ldr r5, .L1711+4 + ldr r1, .L1711+8 + ldr r0, .L1711+12 + str r3, [r5] + bl sftl_printk + mov r0, r4 + bl FtlConstantsInit + bl FtlMemInit + bl FtlVariablesInit + ldrh r0, [r4, #36] + bl FtlFreeSysBlkQueueInit + bl FtlLoadBbt + cbnz r0, .L1709 + bl FtlSysBlkInit + cbnz r0, .L1709 + movs r3, #1 + str r3, [r5] + ldrh r3, [r4, #2344] + cmp r3, #15 + bhi .L1709 + movw r4, #8129 +.L1708: + movs r1, #1 + movs r0, #0 + bl rk_ftl_garbage_collect + subs r4, r4, #1 + bne .L1708 +.L1709: + movs r0, #0 + pop {r3, r4, r5, pc} +.L1712: + .align 2 +.L1711: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LC70 + .word .LC71 + .fnend + .size sftl_init, .-sftl_init + .align 1 + .global sftl_gc + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_gc, %function +sftl_gc: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + movs r1, #1 + mov r0, r1 + b rk_ftl_garbage_collect + .fnend + .size sftl_gc, .-sftl_gc + .align 1 + .global FtlRead + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlRead, %function +FtlRead: + .fnstart + @ args = 0, pretend = 0, frame = 56 + @ frame_needed = 0, uses_anonymous_args = 0 + cmp r0, #16 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #60 + sub sp, sp, #60 + mov r7, r1 + mov r10, r3 + str r2, [sp, #20] + bne .L1715 + mov r2, r3 + ldr r1, [sp, #20] + add r0, r7, #256 + bl FtlVendorPartRead + mov r8, r0 +.L1714: + mov r0, r8 + add sp, sp, #60 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1715: + ldr r3, [sp, #20] + ldr r4, .L1747 + adds r3, r1, r3 + str r3, [sp, #8] + ldr r2, [sp, #8] + ldr r3, [r4, #140] + cmp r2, r3 + bhi .L1736 + ldr r3, .L1747+4 + ldr r3, [r3] + adds r5, r3, #1 + beq .L1737 + ldrh r5, [r4, #58] + mov r0, r7 + mov r9, #0 + mov r6, r9 + mov r8, r9 + mov r1, r5 + bl __aeabi_uidiv + ldr r3, [sp, #8] + mov r1, r5 + str r0, [sp, #12] + subs r0, r3, #1 + bl __aeabi_uidiv + ldr r3, [sp, #12] + ldr r2, [sp, #20] + ldr r5, [sp, #12] + rsb r3, r3, #1 + str r0, [sp, #16] + add r3, r3, r0 + str r9, [sp, #28] + str r3, [sp, #4] + ldr r3, [r4, #2536] + str r9, [sp, #24] + add r3, r3, r2 + ldr r2, [sp, #4] + str r3, [r4, #2536] + ldr r3, [r4, #2508] + add r3, r3, r2 + str r3, [r4, #2508] +.L1717: + ldr r3, [sp, #4] + cbnz r3, .L1734 + ldr r3, .L1747 + ldrh r2, [r3, #3206] + cbnz r2, .L1735 + ldrh r3, [r3, #2344] + cmp r3, #31 + bhi .L1714 +.L1735: + movs r1, #1 + movs r0, #0 + bl rk_ftl_garbage_collect + b .L1714 +.L1734: + movs r2, #0 + add r1, sp, #52 + mov r0, r5 + bl log2phys + ldr r2, [sp, #52] + adds r0, r2, #1 + bne .L1718 + mov fp, #0 +.L1719: + ldrh r0, [r4, #58] + cmp fp, r0 + bcc .L1721 +.L1722: + ldr r3, [sp, #4] + adds r5, r5, #1 + subs r3, r3, #1 + str r3, [sp, #4] + beq .L1726 + ldrh r3, [r4, #32] + cmp r6, r3, lsl #2 + bne .L1717 +.L1726: + cmp r6, #0 + beq .L1717 + movs r2, #0 + mov r1, r6 + ldr r0, [r4, #3280] + mov fp, #0 + bl FlashReadPages + lsl r3, r9, #9 + str r3, [sp, #40] + ldr r3, [sp, #24] + lsls r3, r3, #9 + str r3, [sp, #32] + ldr r3, [sp, #28] + lsls r3, r3, #9 + str r3, [sp, #36] +.L1733: + movs r3, #20 + ldr r2, [r4, #3280] + mul r3, r3, fp + ldr r0, [sp, #12] + add r2, r2, r3 + ldr r1, [r2, #16] + cmp r0, r1 + bne .L1728 + ldr r1, [r2, #8] + ldr r2, [r4, #3304] + cmp r1, r2 + bne .L1729 + str r3, [sp, #44] + mov r0, r10 + ldr r3, [sp, #32] + ldr r2, [sp, #36] + add r1, r1, r3 +.L1746: + bl ftl_memcpy + ldr r3, [sp, #44] +.L1729: + ldr ip, [r4, #3280] + add r2, ip, r3 + ldr r0, [r2, #12] + ldr r1, [r2, #16] + ldr r0, [r0, #8] + cmp r1, r0 + ittt ne + ldrne r1, [r4, #2708] + addne r1, r1, #1 + strne r1, [r4, #2708] + ldr r0, [ip, r3] + adds r1, r0, #1 + itttt eq + ldreq r1, [r4, #2708] + moveq r8, r0 + addeq r1, r1, #1 + streq r1, [r4, #2708] + ldr r3, [ip, r3] + cmp r3, #256 + bne .L1732 + ldr r0, [r2, #4] + ubfx r0, r0, #10, #16 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1732: + add fp, fp, #1 + cmp r6, fp + bne .L1733 + movs r6, #0 + b .L1717 +.L1721: + mla r0, r0, r5, fp + cmp r7, r0 + bhi .L1720 + ldr r3, [sp, #8] + cmp r3, r0 + bls .L1720 + subs r0, r0, r7 + mov r1, #512 + add r0, r10, r0, lsl #9 + bl __memzero +.L1720: + add fp, fp, #1 + b .L1719 +.L1718: + ldr r3, [r4, #3280] + movs r1, #20 + ldrh fp, [r4, #58] + mla r3, r1, r6, r3 + str r2, [r3, #4] + ldr r2, [sp, #12] + cmp r5, r2 + bne .L1723 + ldr r2, [r4, #3304] + mov r1, fp + mov r0, r7 + str r3, [sp, #32] + str r2, [r3, #8] + bl __aeabi_uidivmod + sub r2, fp, r1 + str r1, [sp, #24] + ldr r1, [sp, #20] + mov r3, r2 + cmp r2, r1 + it cs + movcs r3, r1 + cmp r3, fp + str r3, [sp, #28] + ldr r3, [sp, #32] + bne .L1724 + str r10, [r3, #8] +.L1724: + ldrh r2, [r4, #112] + ldr r1, [r4, #3328] + str r5, [r3, #16] + muls r2, r6, r2 + adds r6, r6, #1 + bic r2, r2, #3 + add r2, r2, r1 + str r2, [r3, #12] + b .L1722 +.L1723: + ldr r2, [sp, #16] + cmp r5, r2 + bne .L1725 + ldr r2, [r4, #3308] + ldr r1, [sp, #8] + str r2, [r3, #8] + mul r2, fp, r5 + sub r9, r1, r2 + cmp fp, r9 + bne .L1724 +.L1745: + subs r2, r2, r7 + add r2, r10, r2, lsl #9 + str r2, [r3, #8] + b .L1724 +.L1725: + mul r2, r5, fp + b .L1745 +.L1728: + ldr r0, [sp, #16] + cmp r0, r1 + bne .L1729 + ldr r1, [r2, #8] + ldr r2, [r4, #3308] + cmp r1, r2 + bne .L1729 + str r3, [sp, #44] + ldrh r0, [r4, #58] + ldr r3, [sp, #16] + ldr r2, [sp, #40] + muls r0, r3, r0 + subs r0, r0, r7 + add r0, r10, r0, lsl #9 + b .L1746 +.L1736: + mov r8, #-1 + b .L1714 +.L1737: + mov r8, r3 + b .L1714 +.L1748: + .align 2 +.L1747: + .word .LANCHOR0 + .word .LANCHOR2 + .fnend + .size FtlRead, .-FtlRead + .align 1 + .global sftl_read + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_read, %function +sftl_read: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + mov r3, r2 + mov r2, r1 + mov r1, r0 + movs r0, #0 + b FtlRead + .fnend + .size sftl_read, .-sftl_read + .align 1 + .global FtlWrite + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlWrite, %function +FtlWrite: + .fnstart + @ args = 0, pretend = 0, frame = 64 + @ frame_needed = 0, uses_anonymous_args = 0 + cmp r0, #16 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .pad #68 + sub sp, sp, #68 + mov r10, r1 + str r2, [sp, #12] + str r3, [sp, #8] + bne .L1751 + mov r2, r3 + ldr r1, [sp, #12] + add r0, r10, #256 + bl FtlVendorPartWrite +.L1750: + add sp, sp, #68 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1751: + ldr r3, [sp, #12] + ldr r5, .L1802 + adds r6, r1, r3 + ldr r3, [r5, #140] + cmp r6, r3 + bhi .L1788 + ldr r4, .L1802+4 + ldr r0, [r4] + adds r7, r0, #1 + beq .L1750 + ldrh r7, [r5, #58] + mov r3, #2048 + str r3, [r5, #3664] + mov r0, r10 + mov r1, r7 + bl __aeabi_uidiv + mov r1, r7 + str r0, [sp, #4] + subs r0, r6, #1 + bl __aeabi_uidiv + ldr r2, [sp, #4] + str r0, [sp, #20] + subs r3, r0, r2 + ldr r2, [sp, #12] + str r3, [sp, #24] + adds r3, r3, #1 + str r3, [sp] + ldr r3, [r5, #2532] + add r3, r3, r2 + ldr r2, [sp] + str r3, [r5, #2532] + ldr r3, [r5, #2516] + add r3, r3, r2 + str r3, [r5, #2516] + ldr r3, [r4, #8] + cbz r3, .L1790 + ldrh r2, [r5, #2352] + addw r3, r5, #2348 + addw r5, r5, #2396 + cmp r2, #0 + it ne + movne r5, r3 +.L1753: + ldr r7, [sp, #4] + ldr r4, .L1802 +.L1754: + ldr r3, [sp] + cbnz r3, .L1783 + mov r0, r3 + ldr r1, [sp, #24] + bl rk_ftl_garbage_collect + ldrh r3, [r4, #2344] + cmp r3, #5 + bls .L1784 +.L1786: + movs r0, #0 + b .L1750 +.L1790: + addw r5, r5, #2348 + b .L1753 +.L1783: + ldrb r2, [r5, #6] @ zero_extendqisi2 + ldrh r3, [r4, #32] + cmp r2, r3 + bcc .L1755 + movw r2, #1011 + ldr r1, .L1802+8 + ldr r0, .L1802+12 + bl sftl_printk +.L1755: + ldrh r2, [r5, #4] + cbnz r2, .L1756 + ldr r3, .L1802+16 + ldr r6, .L1802+4 + cmp r5, r3 + bne .L1757 + ldrh r8, [r4, #2400] + cmp r8, #0 + bne .L1758 + add r0, r5, #48 + bl allocate_new_data_superblock + str r8, [r6, #8] +.L1758: + ldr r5, .L1802+16 + ldr r0, .L1802+16 + bl allocate_new_data_superblock + ldr r2, [r6, #8] + add r3, r5, #48 + cmp r2, #0 + it ne + movne r5, r3 +.L1759: + ldrh r3, [r5, #4] + cbnz r3, .L1756 + mov r0, r5 + bl allocate_new_data_superblock +.L1756: + ldrh r2, [r5, #4] + ldr r3, [sp] + cmp r2, r3 + it cs + movcs r2, r3 + ldrb r3, [r5, #7] @ zero_extendqisi2 + lsls r3, r3, #2 + cmp r2, r3 + it cs + movcs r2, r3 + ldrh r3, [r4, #32] + str r2, [sp, #36] + ldrb r2, [r5, #6] @ zero_extendqisi2 + cmp r2, r3 + bcc .L1760 + movw r2, #1044 + ldr r1, .L1802+8 + ldr r0, .L1802+12 + bl sftl_printk +.L1760: + mov fp, #0 +.L1761: + ldr r3, [sp, #36] + cmp fp, r3 + bne .L1781 +.L1762: + mov r3, r5 + movs r2, #0 + mov r1, fp + ldr r0, [r4, #3288] + bl FtlProgPages + ldr r3, [sp] + cmp fp, r3 + bls .L1782 + movw r2, #1121 + ldr r1, .L1802+8 + ldr r0, .L1802+12 + bl sftl_printk +.L1782: + ldr r3, [sp] + sub r3, r3, fp + str r3, [sp] + b .L1754 +.L1757: + str r2, [r6, #8] + ldrh r2, [r4, #2352] + cbnz r2, .L1793 + mov r0, r5 + bl allocate_new_data_superblock + b .L1759 +.L1793: + mov r5, r3 + b .L1756 +.L1781: + ldrh r3, [r5, #4] + cmp r3, #0 + beq .L1762 + movs r2, #0 + add r1, sp, #40 + mov r0, r7 + mov r8, #20 + bl log2phys + mov r0, r5 + mul r8, r8, fp + bl get_new_active_ppa + ldrh r2, [r4, #112] + ldr r3, [r4, #3288] + mul r1, r2, fp + add r3, r3, r8 + str r0, [r3, #4] + str r7, [r3, #16] + bic r1, r1, #3 + str r1, [sp, #28] + ldr r0, [sp, #28] + ldr r1, [r4, #3328] + add r9, r1, r0 + str r1, [sp, #32] + str r9, [r3, #12] + movs r1, #0 + mov r0, r9 + bl ftl_memset + ldr r3, [sp, #4] + cmp r7, r3 + beq .L1763 + ldr r3, [sp, #20] + cmp r7, r3 + bne .L1798 + ldrh r2, [r4, #58] + ldr r3, [sp, #12] + smulbb r2, r2, r7 + add r6, r10, r3 + movs r3, #0 + str r3, [sp, #16] + subs r6, r6, r2 + uxth r6, r6 + b .L1766 +.L1763: + ldrh r6, [r4, #58] + mov r0, r10 + mov r1, r6 + bl __aeabi_uidivmod + ldr r3, [sp, #12] + subs r6, r6, r1 + str r1, [sp, #16] + cmp r6, r3 + it cs + movcs r6, r3 +.L1766: + ldrh r3, [r4, #58] + cmp r6, r3 + ldr r3, [sp, #4] + bne .L1767 + cmp r7, r3 + ldr r3, [r4, #3288] + itte ne + mulne r6, r6, r7 + ldrne r2, [sp, #8] + ldreq r2, [sp, #8] + add r3, r3, r8 + itett ne + subne r6, r6, r10 + streq r2, [r3, #8] + addne r6, r2, r6, lsl #9 + strne r6, [r3, #8] +.L1769: + ldrb r2, [r5, #6] @ zero_extendqisi2 + ldrh r3, [r4, #32] + cmp r2, r3 + bcc .L1778 + mov r2, #1112 + ldr r1, .L1802+8 + ldr r0, .L1802+12 + bl sftl_printk +.L1778: + ldr r2, [sp, #32] + movw r3, #61589 + ldr r1, [sp, #28] + add fp, fp, #1 + strh r3, [r2, r1] @ movhi + ldr r3, [r4, #2544] + str r7, [r9, #8] + adds r7, r7, #1 + str r3, [r9, #4] + adds r3, r3, #1 + adds r2, r3, #1 + it eq + moveq r3, #0 + str r3, [r4, #2544] + ldr r3, [sp, #40] + str r3, [r9, #12] + ldrh r3, [r5] + strh r3, [r9, #2] @ movhi + b .L1761 +.L1767: + cmp r7, r3 + ldr r3, [r4, #3288] + ite eq + ldreq r2, [r4, #3304] + ldrne r2, [r4, #3308] + add r3, r3, r8 + str r2, [r3, #8] + ldr r3, [sp, #40] + adds r1, r3, #1 + beq .L1772 + str r3, [sp, #48] + movs r1, #1 + ldr r3, [r4, #3288] + add r0, sp, #44 + str r7, [sp, #60] + add r3, r3, r8 + ldr r2, [r3, #8] + ldr r3, [r3, #12] + str r2, [sp, #52] + movs r2, #0 + str r3, [sp, #56] + bl FlashReadPages + ldr r3, [sp, #44] + adds r3, r3, #1 + bne .L1773 + ldr r3, [r4, #2708] + adds r3, r3, #1 + str r3, [r4, #2708] +.L1776: + ldr r3, [sp, #4] + lsls r2, r6, #9 + cmp r7, r3 + bne .L1777 + ldr r3, [r4, #3288] + ldr r1, [sp, #8] + add r3, r3, r8 + ldr r0, [r3, #8] + ldr r3, [sp, #16] + add r0, r0, r3, lsl #9 +.L1800: + bl ftl_memcpy + b .L1769 +.L1803: + .align 2 +.L1802: + .word .LANCHOR0 + .word .LANCHOR2 + .word .LANCHOR1+606 + .word .LC1 + .word .LANCHOR0+2348 +.L1773: + ldr r3, [r9, #8] + cmp r7, r3 + beq .L1775 + ldr r3, [r4, #2708] + mov r2, r7 + ldr r0, .L1804 + adds r3, r3, #1 + str r3, [r4, #2708] + ldr r1, [r9, #8] + bl sftl_printk +.L1775: + ldr r3, [r9, #8] + cmp r7, r3 + beq .L1776 + movw r2, #1097 + ldr r1, .L1804+4 + ldr r0, .L1804+8 + bl sftl_printk + b .L1776 +.L1772: + ldr r3, [r4, #3288] + movs r1, #0 + ldrh r2, [r4, #110] + add r3, r3, r8 + ldr r0, [r3, #8] + bl ftl_memset + b .L1776 +.L1777: + ldrh r1, [r4, #58] + ldr r0, [sp, #8] + ldr r3, [r4, #3288] + muls r1, r7, r1 + add r3, r3, r8 + sub r1, r1, r10 + add r1, r0, r1, lsl #9 + ldr r0, [r3, #8] + b .L1800 +.L1798: + ldr r3, [r4, #3288] + ldr r2, [sp, #8] + add r8, r8, r3 + ldrh r3, [r4, #58] + muls r3, r7, r3 + sub r3, r3, r10 + add r3, r2, r3, lsl #9 + str r3, [r8, #8] + b .L1769 +.L1784: + mov r5, #256 + movw r6, #65535 +.L1787: + ldrh r3, [r4, #2588] + cmp r3, r6 + bne .L1785 + ldrh r3, [r4, #3202] + cmp r3, r6 + bne .L1785 + movs r0, #0 + bl List_get_gc_head_node + uxth r0, r0 + bl FtlGcRefreshBlock +.L1785: + movs r1, #1 + movs r3, #128 + mov r0, r1 + strh r3, [r4, #3150] @ movhi + strh r3, [r4, #3148] @ movhi + bl rk_ftl_garbage_collect + movs r1, #1 + movs r0, #0 + bl rk_ftl_garbage_collect + ldrh r3, [r4, #2344] + cmp r3, #2 + bhi .L1786 + subs r5, r5, #1 + bne .L1787 + b .L1786 +.L1788: + mov r0, #-1 + b .L1750 +.L1805: + .align 2 +.L1804: + .word .LC114 + .word .LANCHOR1+606 + .word .LC1 + .fnend + .size FtlWrite, .-FtlWrite + .global __aeabi_idivmod + .align 1 + .global sftl_write + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type sftl_write, %function +sftl_write: + .fnstart + @ args = 0, pretend = 0, frame = 120 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} + adds r5, r0, r1 + subs r6, r5, #1 + .pad #132 + sub sp, sp, #132 + cmp r6, #63 + mov fp, r0 + str r1, [sp, #20] + str r2, [sp, #40] + ldr r4, .L1849 + bls .L1807 + cmp r0, #576 + bls .L1808 +.L1807: + ldr r3, [r4, #3668] + cbz r3, .L1809 + ldr r10, [r4, #3672] + ldr r3, .L1849+4 + ldr r2, [r10] + cmp r2, r3 + beq .L1810 +.L1827: + ldr r4, .L1849 + movs r3, #0 + ldr r0, [r4, #3672] + str r3, [r4, #3668] + bl kfree + ldr r0, [r4, #3676] + bl kfree +.L1809: + ldr r3, [sp, #40] + mov r1, fp + ldr r2, [sp, #20] + movs r0, #0 + bl FtlWrite + add sp, sp, #132 + @ sp needed + pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1810: + ldrh r5, [r4, #14] + add r0, r10, #262144 + ldrh r4, [r4, #10] + movs r3, #0 + movw r2, #65535 +.L1814: + ldr r1, [r0, #-4] + cbnz r1, .L1811 + ldr r1, [r10, r3, lsl #2] + adds r3, r3, #1 + cmp r3, #4096 + add r2, r2, #-1 + it hi + movhi r3, #0 + cmp r2, #4096 + str r1, [r0, #-4]! + bne .L1814 + mov r3, #512 + str r3, [sp, #8] + b .L1813 +.L1811: + add r3, r2, #127 + ldr r0, .L1849+8 + lsrs r3, r3, #7 + str r3, [sp, #8] + bl sftl_printk +.L1813: + uxtb r5, r5 + smulbb r5, r5, r4 + ldr r4, .L1849 + uxth r3, r5 + movs r5, #0 + str r3, [sp, #12] + subs r0, r3, #1 + mov r1, r3 + ldr r3, [sp, #8] + add r0, r0, r3 + bl __aeabi_uidiv + ldr r2, [sp, #12] + mov r3, r0 + str r0, [sp, #16] + str r0, [sp, #36] + str r5, [sp, #28] + muls r3, r2, r3 + str r3, [sp, #24] + ldr r3, [sp, #8] + lsls r3, r3, #7 + str r3, [sp, #52] + b .L1826 +.L1834: + str r3, [sp, #36] +.L1826: + mov r1, #512 + ldr r0, [r4, #3676] + bl __memzero + ldrh r7, [r4, #14] + mov r0, r5 + ldrh r6, [r4, #10] + mov r1, r7 + uxtb r8, r7 + uxth r3, r8 + str r3, [sp, #32] + ldrh r3, [sp, #32] + smulbb r6, r6, r3 + bl __aeabi_uidiv + ldr r3, [r4, #3248] + mov r1, r0 + movs r0, #0 + uxth r6, r6 + blx r3 + ldr r3, [sp, #24] + cmp r3, r6 + bls .L1815 + mov r1, r7 + adds r0, r6, r5 + bl __aeabi_uidiv + ldr r3, [r4, #3248] + mov r1, r0 + movs r0, #0 + blx r3 +.L1815: + mov r1, r6 + mov r0, r5 + bl __aeabi_uidivmod + movs r6, #0 + mov r9, r1 + subs r3, r5, r1 + str r3, [sp, #44] +.L1816: + ldr r3, [sp, #24] + cmp r3, r6 + bhi .L1817 + ldrb r8, [r4, #14] @ zero_extendqisi2 + mov r0, r5 + ldr r3, [r4, #3676] + movs r6, #0 + ldrh r1, [r4, #10] + str r3, [sp, #48] + uxth r3, r8 + str r3, [sp, #44] + ldrh r3, [sp, #44] + smulbb r1, r1, r3 + uxth r1, r1 + bl __aeabi_uidivmod + str r1, [sp, #32] + subs r3, r5, r1 + ldrh r0, [sp, #32] + mov r1, r8 + str r3, [sp, #56] + bl __aeabi_idivmod + uxth r7, r1 +.L1818: + ldr r3, [sp, #8] + cmp r6, r3 + bcs .L1822 + ldr r3, [sp, #44] + mov r1, r8 + sub r9, r3, r7 + ldr r3, [sp, #48] + uxth r9, r9 + add r2, r3, r6, lsl #9 + ldr r3, [sp, #32] + str r2, [sp, #60] + adds r0, r3, r6 + bl __aeabi_uidiv + ldr r3, [sp, #56] + uxth r0, r0 + mov r1, r8 + add r7, r7, r3 + mla r0, r8, r0, r7 + bl __aeabi_uidiv + ldr r7, [r4, #3256] + mov r1, r0 + add r3, sp, #64 + ldr r2, [sp, #60] + movs r0, #0 + blx r7 + adds r0, r0, #1 + bne .L1819 +.L1822: + ldr r0, [r4, #3676] + mov r1, r10 + movs r6, #0 +.L1820: + mov r8, r1 + ldr r2, [r0, r6, lsl #2] + ldr r3, [r8] + lsls r7, r6, #2 + adds r1, r1, #4 + cmp r2, r3 + beq .L1823 + mov r1, #512 + bl __memzero + ldr r2, [r4, #3676] + mov r1, r5 + str r6, [sp] + ldr r0, .L1849+12 + ldr r3, [r8] + ldr r2, [r2, r7] + bl sftl_printk + ldr r3, [r4, #3248] + mov r1, r5 + movs r0, #0 + blx r3 + ldr r3, [sp, #16] + cmp r3, #1 + bls .L1833 + ldr r2, [sp, #12] + movs r0, #0 + ldr r3, [r4, #3248] + adds r1, r2, r5 + blx r3 +.L1833: + ldr r2, [sp, #36] + ldr r3, [sp, #16] + add r3, r3, r2 + ldr r2, [sp, #24] + add r5, r5, r2 + ldr r2, [sp, #36] + cmp r2, #15 + bls .L1834 + b .L1827 +.L1817: + mov r1, r8 + add r0, r9, r6 + bl __aeabi_uidiv + uxth r7, r0 + add r2, r10, r6, lsl #9 + ldr r0, [sp, #44] + mul r3, r8, r7 + mov r1, r8 + str r2, [sp, #48] + str r3, [sp, #64] + movw r3, #61424 + str r3, [sp, #68] + bl __aeabi_uidiv + adds r1, r0, r7 + add r3, sp, #64 + ldr r2, [sp, #48] + movs r0, #0 + ldr r7, [r4, #3252] + blx r7 + ldr r3, [sp, #32] + add r6, r6, r3 + uxth r6, r6 + b .L1816 +.L1819: + add r6, r6, r9 + movs r7, #0 + uxth r6, r6 + b .L1818 +.L1823: + ldr r3, [sp, #52] + adds r6, r6, #1 + cmp r6, r3 + bne .L1820 + ldr r3, [sp, #28] + adds r3, r3, #1 + cmp r3, #5 + str r3, [sp, #28] + bls .L1833 + b .L1827 +.L1808: + cmp r0, #64 + bne .L1828 + mov r0, #262144 + bl ftl_malloc + str r0, [r4, #3672] + mov r0, #262144 + bl ftl_malloc + ldr r3, [r4, #3672] + str r0, [r4, #3676] + cbz r3, .L1829 + cbz r0, .L1829 + movs r2, #1 + mov r1, #262144 + mov r0, r3 + str r2, [r4, #3668] + bl __memzero +.L1828: + cmp fp, #63 + ldr r0, [r4, #3672] + bhi .L1830 + ldr r3, [sp, #20] + rsb r1, fp, #64 + subs r2, r3, r1 + ldr r3, [sp, #40] + add r1, r3, r1, lsl #9 +.L1831: + cmp r6, #576 + ittt hi + subhi r2, r2, r5 + mvnhi r3, #446 + addhi r2, r2, r3 + lsls r2, r2, #9 + bl ftl_memcpy + b .L1809 +.L1829: + ldr r1, .L1849+16 + ldr r0, .L1849+20 + bl sftl_printk + b .L1828 +.L1830: + ldr r3, .L1849+24 + ldr r1, [sp, #40] + ldr r2, [sp, #20] + add r3, r3, fp + add r0, r0, r3, lsl #9 + b .L1831 +.L1850: + .align 2 +.L1849: + .word .LANCHOR0 + .word -52655045 + .word .LC115 + .word .LC116 + .word .LANCHOR1+615 + .word .LC117 + .word 8388544 + .fnend + .size sftl_write, .-sftl_write + .align 1 + .global FtlMakeBbt + .syntax unified + .thumb + .thumb_func + .fpu softvfp + .type FtlMakeBbt, %function +FtlMakeBbt: + .fnstart + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 0, uses_anonymous_args = 0 + push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + mov r8, #0 + ldr r9, .L1870+4 + bl FtlBbtMemInit + sub r5, r9, #180 + sub r10, r9, #18 + mov r4, r5 + bl FtlLoadFactoryBbt +.L1852: + ldrh r3, [r5, #54] + cmp r8, r3 + bcc .L1858 + movs r5, #0 +.L1859: + ldrh r3, [r4, #114] + uxth r0, r5 + adds r5, r5, #1 + cmp r3, r0 + bhi .L1860 + ldrh r5, [r4, #164] + movw r6, #65535 + subs r5, r5, #1 + uxth r5, r5 +.L1861: + ldrh r3, [r4, #164] + subs r3, r3, #48 + cmp r5, r3 + ble .L1865 + mov r0, r5 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L1862 + mov r0, r5 + bl FlashTestBlk + cmp r0, #0 + beq .L1863 + mov r0, r5 + bl FtlBbmMapBadBlock +.L1862: + subs r5, r5, #1 + uxth r5, r5 + b .L1861 +.L1858: + ldrh r3, [r10, #2]! + movw r2, #65535 + ldr r0, [r5, #3292] + ldr fp, [r5, #3324] + cmp r3, r2 + str r0, [r5, #3452] + str fp, [r5, #3456] + beq .L1853 + ldrh r7, [r5, #98] + movs r2, #1 + mov r1, r2 + ldr r0, .L1870 + mla r7, r8, r7, r3 + lsls r3, r7, #10 + str r3, [r5, #3448] + bl FlashReadPages + ldrh r2, [r5, #98] + ldr r1, [r5, #3452] + ldr r0, [r9] + adds r2, r2, #7 + asrs r2, r2, #3 + bl ftl_memcpy +.L1854: + uxth r0, r7 + add r8, r8, #1 + add r9, r9, #4 + bl FtlBbmMapBadBlock + b .L1852 +.L1853: + mov r1, r8 + bl FlashGetBadBlockList + ldr r1, [r9] + ldr r0, [r5, #3452] + bl FtlBbt2Bitmap + ldrh r6, [r5, #98] +.L1856: + subs r6, r6, #1 + uxth r6, r6 +.L1855: + ldrh r0, [r4, #98] + smlabb r0, r0, r8, r6 + uxth r0, r0 + bl FtlBbmIsBadBlock + cmp r0, #1 + beq .L1856 + movs r1, #16 + ldr r0, [r4, #3324] + strh r6, [r10] @ movhi + bl __memzero + mov r1, #4096 + ldr r0, [r4, #3292] + bl __memzero + movw r3, #61664 + strh r3, [fp] @ movhi + movs r3, #0 + str r3, [fp, #4] + ldrh r3, [r10] + ldrh r7, [r4, #98] + ldrh r2, [r4, #3380] + strh r3, [fp, #2] @ movhi + ldrh r3, [r10] + ldr r1, [r9] + lsls r2, r2, #2 + ldr r0, [r4, #3452] + mla r7, r8, r7, r3 + lsls r3, r7, #10 + str r3, [r4, #3448] + bl ftl_memcpy + movs r2, #1 + ldr r0, .L1870 + mov r1, r2 + bl FlashEraseBlocks + movs r3, #1 + ldr r0, .L1870 + mov r2, r3 + mov r1, r3 + bl FlashProgPages + ldr r3, [r4, #3444] + adds r3, r3, #1 + bne .L1854 + uxth r0, r7 + bl FtlBbmMapBadBlock + b .L1855 +.L1860: + bl FtlBbmMapBadBlock + b .L1859 +.L1863: + ldrh r3, [r4, #152] + cmp r3, r6 + bne .L1864 + strh r5, [r4, #152] @ movhi + b .L1862 +.L1864: + strh r5, [r4, #156] @ movhi +.L1865: + ldrh r3, [r4, #152] + movs r5, #0 + ldr r0, [r4, #3260] + movs r1, #1 + str r5, [r4, #160] + movs r2, #2 + strh r5, [r4, #154] @ movhi + lsls r3, r3, #10 + str r3, [r0, #4] + ldrh r3, [r4, #156] + lsls r3, r3, #10 + str r3, [r0, #24] + bl FlashEraseBlocks + ldrh r0, [r4, #152] + bl FtlBbmMapBadBlock + ldrh r0, [r4, #156] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldr r3, [r4, #160] + ldrh r2, [r4, #156] + strh r5, [r4, #154] @ movhi + adds r3, r3, #1 + str r3, [r4, #160] + ldrh r3, [r4, #152] + strh r2, [r4, #152] @ movhi + strh r3, [r4, #156] @ movhi + bl FtlBbmTblFlush + mov r0, r5 + pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} +.L1871: + .align 2 +.L1870: + .word .LANCHOR0+3444 + .word .LANCHOR0+180 + .fnend + .size FtlMakeBbt, .-FtlMakeBbt + .align 1 .global ftl_low_format .syntax unified .thumb @@ -12920,46 +12994,46 @@ ftl_low_format: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} movs r3, #0 - ldr r4, .L1870 + ldr r4, .L1896 ldrh r0, [r4, #36] str r3, [r4, #2540] str r3, [r4, #2544] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbz r0, .L1847 + cbz r0, .L1873 bl FtlMakeBbt -.L1847: - ldr r0, .L1870+4 +.L1873: + ldr r0, .L1896+4 movs r2, #0 -.L1848: +.L1874: ldrh r1, [r4, #58] uxth r3, r2 adds r2, r2, #1 cmp r3, r1, lsl #7 - blt .L1849 + blt .L1875 ldrh r6, [r4, #40] movs r5, #0 -.L1850: +.L1876: ldrh r3, [r4, #42] cmp r3, r6 - bhi .L1851 + bhi .L1877 ldrh r1, [r4, #32] subs r3, r5, #3 cmp r3, r1, lsl #1 - bge .L1852 -.L1856: + bge .L1878 +.L1882: movs r5, #0 mov r6, r5 -.L1853: +.L1879: ldrh r3, [r4, #40] uxth r0, r5 adds r5, r5, #1 cmp r3, r0 - bhi .L1857 + bhi .L1883 ldrh r3, [r4, #42] ldrh r5, [r4, #32] ldr r9, [r4, #44] - str r3, [r4, #3808] + str r3, [r4, #3276] mov r1, r5 mov r0, r9 bl __aeabi_uidiv @@ -12971,7 +13045,7 @@ ftl_low_format: movs r3, #24 muls r3, r5, r3 cmp r6, r3 - ble .L1858 + ble .L1884 mov r1, r5 sub r0, r9, r6 bl __aeabi_uidiv @@ -12979,9 +13053,9 @@ ftl_low_format: lsrs r0, r0, #5 adds r0, r0, #24 strh r0, [r4, #2572] @ movhi -.L1858: +.L1884: ldrh r3, [r4, #94] - cbz r3, .L1860 + cbz r3, .L1886 ldrh r2, [r4, #2572] add r2, r2, r3, lsr #1 strh r2, [r4, #2572] @ movhi @@ -12992,26 +13066,24 @@ ftl_low_format: strlt r8, [r4, #2504] addlt r3, r3, r7 strhlt r3, [r4, #2572] @ movhi -.L1860: +.L1886: ldrh r2, [r4, #2572] - movw r6, #65535 ldr r3, [r4, #2504] - ldr r7, .L1870+8 + ldr r6, .L1896+8 subs r3, r3, r2 muls r5, r3, r5 ldrh r3, [r4, #102] - str r5, [r7, #-168] + str r5, [r4, #3464] muls r5, r3, r5 ldrh r3, [r4, #58] str r5, [r4, #2504] muls r5, r3, r5 str r5, [r4, #140] - mov r5, r7 + movw r5, #65535 bl FtlBbmTblFlush ldrh r2, [r4, #42] movs r1, #0 ldr r0, [r4, #2324] - ldr r7, .L1870+12 lsls r2, r2, #1 bl ftl_memset ldrh r2, [r4, #40] @@ -13027,31 +13099,31 @@ ftl_low_format: strh r3, [r4, #2348] @ movhi movs r3, #1 ldr r0, [r4, #24] - strh r6, [r4, #2588] @ movhi + strh r5, [r4, #2588] @ movhi strb r3, [r4, #2356] bl ftl_memset -.L1862: - mov r0, r7 +.L1888: + mov r0, r6 bl make_superblock ldrb r3, [r4, #2355] @ zero_extendqisi2 ldrh r2, [r4, #2348] cmp r3, #0 - bne .L1863 + bne .L1889 ldr r3, [r4, #2324] - strh r6, [r3, r2, lsl #1] @ movhi + strh r5, [r3, r2, lsl #1] @ movhi ldrh r3, [r4, #2348] adds r3, r3, #1 strh r3, [r4, #2348] @ movhi - b .L1862 -.L1849: - ldr r5, [r4, #3820] + b .L1888 +.L1875: + ldr r5, [r4, #3304] mvns r1, r3 orr r1, r3, r1, lsl #16 str r1, [r5, r3, lsl #2] - ldr r1, [r4, #3812] + ldr r1, [r4, #3308] str r0, [r1, r3, lsl #2] - b .L1848 -.L1851: + b .L1874 +.L1877: mov r0, r6 movs r1, #1 bl FtlLowFormatEraseBlock @@ -13059,8 +13131,8 @@ ftl_low_format: add r5, r5, r0 uxth r5, r5 uxth r6, r6 - b .L1850 -.L1852: + b .L1876 +.L1878: mov r0, r5 bl __aeabi_uidiv ldr r3, [r4, #132] @@ -13070,27 +13142,27 @@ ftl_low_format: ldrh r0, [r4, #36] bl FtlFreeSysBlkQueueInit ldrh r5, [r4, #40] -.L1854: +.L1880: ldrh r3, [r4, #42] cmp r3, r5 - bls .L1856 + bls .L1882 mov r0, r5 movs r1, #1 adds r5, r5, #1 bl FtlLowFormatEraseBlock uxth r5, r5 - b .L1854 -.L1857: + b .L1880 +.L1883: movs r1, #0 bl FtlLowFormatEraseBlock add r6, r6, r0 uxth r6, r6 - b .L1853 -.L1863: + b .L1879 +.L1889: ldr r3, [r4, #2540] - movw r6, #65535 + movw r5, #65535 ldrh r1, [r4, #2352] - ldr r7, .L1870+16 + ldr r6, .L1896+12 str r3, [r4, #2360] adds r3, r3, #1 str r3, [r4, #2540] @@ -13104,34 +13176,34 @@ ftl_low_format: strh r3, [r4, #2396] @ movhi movs r3, #1 strb r3, [r4, #2404] -.L1864: - mov r0, r7 +.L1890: + mov r0, r6 bl make_superblock ldrb r3, [r4, #2403] @ zero_extendqisi2 ldrh r2, [r4, #2396] - cbnz r3, .L1865 + cbnz r3, .L1891 ldr r3, [r4, #2324] - strh r6, [r3, r2, lsl #1] @ movhi + strh r5, [r3, r2, lsl #1] @ movhi ldrh r3, [r4, #2396] adds r3, r3, #1 strh r3, [r4, #2396] @ movhi - b .L1864 -.L1865: + b .L1890 +.L1891: ldr r3, [r4, #2540] - movw r6, #65535 + movw r5, #65535 ldrh r1, [r4, #2400] str r3, [r4, #2408] adds r3, r3, #1 str r3, [r4, #2540] ldr r3, [r4, #2324] strh r1, [r3, r2, lsl #1] @ movhi - strh r6, [r4, #2444] @ movhi + strh r5, [r4, #2444] @ movhi bl FtlFreeSysBlkQueueOut movs r3, #0 strh r0, [r4, #2576] @ movhi strh r3, [r4, #2578] @ movhi - ldr r3, [r5, #-168] - strh r6, [r4, #2580] @ movhi + ldr r3, [r4, #3464] + strh r5, [r4, #2580] @ movhi strh r3, [r4, #2582] @ movhi ldr r3, [r4, #2540] str r3, [r4, #2584] @@ -13139,79 +13211,24 @@ ftl_low_format: str r3, [r4, #2540] bl FtlVpcTblFlush bl FtlSysBlkInit - cbnz r0, .L1866 - ldr r3, .L1870+20 + cbnz r0, .L1892 + ldr r3, .L1896+16 movs r2, #1 str r2, [r3] -.L1866: +.L1892: movs r0, #0 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1871: +.L1897: .align 2 -.L1870: +.L1896: .word .LANCHOR0 .word 168778952 - .word .LANCHOR3 .word .LANCHOR0+2348 .word .LANCHOR0+2396 .word .LANCHOR2 .fnend .size ftl_low_format, .-ftl_low_format .align 1 - .global sftl_init - .syntax unified - .thumb - .thumb_func - .fpu softvfp - .type sftl_init, %function -sftl_init: - .fnstart - @ args = 0, pretend = 0, frame = 0 - @ frame_needed = 0, uses_anonymous_args = 0 - push {r3, r4, r5, lr} - .save {r3, r4, r5, lr} - mov r3, #-1 - ldr r4, .L1878 - ldr r5, .L1878+4 - ldr r1, .L1878+8 - ldr r0, .L1878+12 - str r3, [r5] - bl sftl_printk - mov r0, r4 - bl FtlConstantsInit - bl FtlMemInit - bl FtlVariablesInit - ldrh r0, [r4, #36] - bl FtlFreeSysBlkQueueInit - bl FtlLoadBbt - cbnz r0, .L1876 - bl FtlSysBlkInit - cbnz r0, .L1876 - movs r3, #1 - str r3, [r5] - ldrh r3, [r4, #2344] - cmp r3, #15 - bhi .L1876 - movw r4, #8129 -.L1875: - movs r1, #1 - movs r0, #0 - bl rk_ftl_garbage_collect - subs r4, r4, #1 - bne .L1875 -.L1876: - movs r0, #0 - pop {r3, r4, r5, pc} -.L1879: - .align 2 -.L1878: - .word .LANCHOR0 - .word .LANCHOR2 - .word .LC70 - .word .LC71 - .fnend - .size sftl_init, .-sftl_init - .align 1 .global ftl_memcmp .syntax unified .thumb @@ -13238,20 +13255,20 @@ rk_sftl_vendor_dev_ops_register: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r2, .L1884 - ldr r3, [r2, #-164] - cbnz r3, .L1883 - str r0, [r2, #-164] + ldr r2, .L1902 + ldr r3, [r2, #3680] + cbnz r3, .L1901 + str r0, [r2, #3680] mov r0, r3 - str r1, [r2, #-160] + str r1, [r2, #3684] bx lr -.L1883: +.L1901: mov r0, #-1 bx lr -.L1885: +.L1903: .align 2 -.L1884: - .word .LANCHOR3 +.L1902: + .word .LANCHOR0 .fnend .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register .align 1 @@ -13268,59 +13285,59 @@ rk_sftl_vendor_storage_init: push {r3, r4, r5, r6, r7, r8, r9, lr} .save {r3, r4, r5, r6, r7, r8, r9, lr} mov r0, #65536 - ldr r4, .L1894 + ldr r4, .L1912 bl ftl_malloc - str r0, [r4, #-156] + str r0, [r4, #3688] cmp r0, #0 - beq .L1892 - ldr r8, .L1894+4 + beq .L1910 + ldr r8, .L1912+4 mov r9, #0 mov r7, r9 mov r6, r9 -.L1890: - ldr r3, [r4, #-164] +.L1908: + ldr r3, [r4, #3680] movs r1, #128 - ldr r2, [r4, #-156] + ldr r2, [r4, #3688] lsls r0, r6, #7 blx r3 mov r5, r0 - cbnz r0, .L1888 - ldr r2, [r4, #-156] + cbnz r0, .L1906 + ldr r2, [r4, #3688] ldr r3, [r2] cmp r3, r8 - bne .L1889 + bne .L1907 movw r3, #65532 ldr r1, [r2, r3] ldr r3, [r2, #4] cmp r1, r3 - bne .L1889 + bne .L1907 cmp r1, r7 itt hi movhi r9, r6 movhi r7, r1 -.L1889: +.L1907: adds r6, r6, #1 cmp r6, #2 - bne .L1890 - cbz r7, .L1891 - ldr r3, [r4, #-164] + bne .L1908 + cbz r7, .L1909 + ldr r3, [r4, #3680] movs r1, #128 lsl r0, r9, #7 blx r3 mov r5, r0 - cbz r0, .L1886 -.L1888: - ldr r0, [r4, #-156] + cbz r0, .L1904 +.L1906: + ldr r0, [r4, #3688] mov r5, #-1 bl kfree movs r3, #0 - str r3, [r4, #-156] - b .L1886 -.L1891: + str r3, [r4, #3688] + b .L1904 +.L1909: mov r1, #65536 mov r0, r2 bl __memzero - ldr r3, [r4, #-156] + ldr r3, [r4, #3688] movs r2, #1 movw r1, #65532 str r2, [r3, #4] @@ -13329,16 +13346,16 @@ rk_sftl_vendor_storage_init: movw r2, #64504 strh r7, [r3, #12] @ movhi strh r2, [r3, #14] @ movhi -.L1886: +.L1904: mov r0, r5 pop {r3, r4, r5, r6, r7, r8, r9, pc} -.L1892: +.L1910: mvn r5, #11 - b .L1886 -.L1895: + b .L1904 +.L1913: .align 2 -.L1894: - .word .LANCHOR3 +.L1912: + .word .LANCHOR0 .word 1380668996 .fnend .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init @@ -13356,23 +13373,23 @@ rk_sftl_vendor_read: push {r3, r4, r5, r6, r7, lr} .save {r3, r4, r5, r6, r7, lr} mov r7, r0 - ldr r3, .L1902 + ldr r3, .L1920 mov r0, r1 - ldr r5, [r3, #-156] - cbz r5, .L1901 + ldr r5, [r3, #3688] + cbz r5, .L1919 ldrh r6, [r5, #10] movs r3, #0 -.L1898: +.L1916: cmp r3, r6 - bcc .L1900 -.L1901: + bcc .L1918 +.L1919: mov r0, #-1 pop {r3, r4, r5, r6, r7, pc} -.L1900: +.L1918: add r1, r5, r3, lsl #3 ldrh r4, [r1, #16] cmp r4, r7 - bne .L1899 + bne .L1917 ldrh r4, [r1, #20] ldrh r1, [r1, #18] cmp r4, r2 @@ -13384,13 +13401,13 @@ rk_sftl_vendor_read: bl memcpy mov r0, r4 pop {r3, r4, r5, r6, r7, pc} -.L1899: +.L1917: adds r3, r3, #1 - b .L1898 -.L1903: + b .L1916 +.L1921: .align 2 -.L1902: - .word .LANCHOR3 +.L1920: + .word .LANCHOR0 .fnend .size rk_sftl_vendor_read, .-rk_sftl_vendor_read .align 1 @@ -13407,26 +13424,26 @@ rk_sftl_vendor_write: push {r4, r5, r6, r7, r8, r9, r10, fp, lr} .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} mov r8, r2 - ldr r2, .L1923 + ldr r2, .L1941 .pad #28 sub sp, sp, #28 mov r3, r1 - ldr r4, [r2, #-156] + ldr r4, [r2, #3688] mov r9, r2 cmp r4, #0 - beq .L1919 + beq .L1937 ldrh r2, [r4, #10] add r6, r8, #63 ldrh r1, [r4, #8] bic r6, r6, #63 movs r7, #0 str r1, [sp, #4] -.L1906: +.L1924: cmp r7, r2 - bcc .L1914 + bcc .L1932 ldrh r1, [r4, #14] cmp r6, r1 - bhi .L1919 + bhi .L1937 add r2, r4, r2, lsl #3 uxth r6, r6 strh r0, [r2, #16] @ movhi @@ -13458,32 +13475,32 @@ rk_sftl_vendor_write: it hi movhi r3, #0 strh r3, [r4, #8] @ movhi - ldr r3, [r9, #-160] - b .L1922 -.L1914: + ldr r3, [r9, #3684] + b .L1940 +.L1932: add r5, r4, r7, lsl #3 ldrh r1, [r5, #16] cmp r1, r0 str r1, [sp, #8] - bne .L1907 + bne .L1925 ldrh r1, [r5, #20] add fp, r4, #1024 adds r1, r1, #63 bic r1, r1, #63 cmp r8, r1 str r1, [sp, #12] - bls .L1908 + bls .L1926 ldrh r1, [r4, #14] cmp r6, r1 - bhi .L1919 + bhi .L1937 ldrh r10, [r5, #18] subs r2, r2, #1 str r2, [sp, #16] -.L1909: +.L1927: ldr r2, [sp, #16] adds r5, r5, #8 cmp r7, r2 - bcc .L1910 + bcc .L1928 ldrh r2, [sp, #8] add r7, r4, r7, lsl #3 uxth r5, r10 @@ -13502,7 +13519,7 @@ rk_sftl_vendor_write: strh r5, [r4, #12] @ movhi add r6, r6, r3 strh r6, [r4, #14] @ movhi -.L1911: +.L1929: ldr r3, [r4, #4] movw r2, #65532 adds r3, r3, #1 @@ -13515,20 +13532,20 @@ rk_sftl_vendor_write: it hi movhi r3, #0 strh r3, [r4, #8] @ movhi - ldr r3, .L1923 - ldr r3, [r3, #-160] -.L1922: + ldr r3, .L1941 + ldr r3, [r3, #3684] +.L1940: ldr r0, [sp, #4] mov r2, r4 movs r1, #128 lsls r0, r0, #7 blx r3 movs r0, #0 -.L1904: +.L1922: add sp, sp, #28 @ sp needed pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} -.L1910: +.L1928: ldrh r9, [r5, #20] add r0, fp, r10 ldrh r2, [r5, #16] @@ -13545,25 +13562,25 @@ rk_sftl_vendor_write: add r10, r10, r9 bl memcpy ldr r3, [sp, #20] - b .L1909 -.L1908: + b .L1927 +.L1926: ldrh r0, [r5, #18] mov r2, r8 mov r1, r3 add r0, r0, fp bl memcpy strh r8, [r5, #20] @ movhi - b .L1911 -.L1907: + b .L1929 +.L1925: adds r7, r7, #1 - b .L1906 -.L1919: + b .L1924 +.L1937: mov r0, #-1 - b .L1904 -.L1924: + b .L1922 +.L1942: .align 2 -.L1923: - .word .LANCHOR3 +.L1941: + .word .LANCHOR0 .fnend .size rk_sftl_vendor_write, .-rk_sftl_vendor_write .align 1 @@ -13585,18 +13602,18 @@ rk_sftl_vendor_storage_ioctl: bl ftl_malloc mov r4, r0 cmp r0, #0 - beq .L1939 - ldr r3, .L1951 + beq .L1957 + ldr r3, .L1969 cmp r6, r3 - beq .L1928 + beq .L1946 adds r3, r3, #1 cmp r6, r3 - beq .L1929 -.L1950: + beq .L1947 +.L1968: mvn r5, #13 - b .L1927 -.L1928: - ldr r6, .L1951+4 + b .L1945 +.L1946: + ldr r6, .L1969+4 mov r3, sp ands r3, r3, r6 ldr r3, [r3, #72] @@ -13607,31 +13624,31 @@ rk_sftl_vendor_storage_ioctl: .thumb .syntax unified cmp r3, #0 - bne .L1935 + bne .L1953 movs r2, #8 mov r1, r5 bl arm_copy_from_user cmp r0, #0 - bne .L1950 + bne .L1968 ldr r2, [r4] - ldr r3, .L1951+8 + ldr r3, .L1969+8 cmp r2, r3 - beq .L1933 -.L1934: + beq .L1951 +.L1952: mov r5, #-1 -.L1927: +.L1945: mov r0, r4 bl kfree -.L1925: +.L1943: mov r0, r5 pop {r4, r5, r6, pc} -.L1933: +.L1951: ldrh r2, [r4, #6] add r1, r4, #8 ldrh r0, [r4, #4] bl rk_sftl_vendor_read adds r3, r0, #1 - beq .L1934 + beq .L1952 mov r3, sp uxth r2, r0 ands r6, r6, r3 @@ -13645,17 +13662,17 @@ rk_sftl_vendor_storage_ioctl: .thumb .syntax unified cmp r3, #0 - bne .L1950 + bne .L1968 mov r1, r4 mov r0, r5 bl arm_copy_to_user cmp r0, #0 - bne .L1950 -.L1941: + bne .L1968 +.L1959: mov r5, r0 - b .L1927 -.L1929: - ldr r6, .L1951+4 + b .L1945 +.L1947: + ldr r6, .L1969+4 mov r3, sp ands r3, r3, r6 ldr r3, [r3, #72] @@ -13665,20 +13682,20 @@ rk_sftl_vendor_storage_ioctl: @ 0 "" 2 .thumb .syntax unified - cbnz r3, .L1935 + cbnz r3, .L1953 movs r2, #8 mov r1, r5 bl arm_copy_from_user cmp r0, #0 - bne .L1950 + bne .L1968 ldr r2, [r4] - ldr r3, .L1951+8 + ldr r3, .L1969+8 cmp r2, r3 - bne .L1934 + bne .L1952 ldrh r2, [r4, #6] movw r3, #4087 cmp r2, r3 - bhi .L1934 + bhi .L1952 mov r3, sp adds r2, r2, #8 ands r6, r6, r3 @@ -13689,32 +13706,32 @@ rk_sftl_vendor_storage_ioctl: @ 0 "" 2 .thumb .syntax unified - cbnz r3, .L1937 + cbnz r3, .L1955 mov r1, r5 mov r0, r4 bl arm_copy_from_user cmp r0, #0 - bne .L1950 + bne .L1968 ldrh r2, [r4, #6] add r1, r4, #8 ldrh r0, [r4, #4] bl rk_sftl_vendor_write - b .L1941 -.L1935: + b .L1959 +.L1953: movs r1, #8 -.L1949: +.L1967: bl __memzero - b .L1950 -.L1937: + b .L1968 +.L1955: mov r1, r2 mov r0, r4 - b .L1949 -.L1939: + b .L1967 +.L1957: mov r5, #-1 - b .L1925 -.L1952: + b .L1943 +.L1970: .align 2 -.L1951: +.L1969: .word 1074034177 .word -8192 .word 1448232273 @@ -13732,15 +13749,14 @@ rk_sftl_vendor_register: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldr r0, .L1954 + ldr r0, .L1972 b misc_register -.L1955: +.L1973: .align 2 -.L1954: +.L1972: .word .LANCHOR2+12 .fnend .size rk_sftl_vendor_register, .-rk_sftl_vendor_register - .global ftl_temp_buf .global g_nand_ops .global g_nand_phy_info .global gc_ink_free_return_value @@ -13755,6 +13771,9 @@ rk_sftl_vendor_register: .global g_recovery_ppa_tbl .global g_recovery_page_min_ver .global g_recovery_page_num + .global sftl_nand_check_spare_buf + .global sftl_temp_buf + .global sftl_nand_check_buf .global g_cur_erase_blk .global g_gc_skip_write_count .global g_gc_head_data_block_count @@ -13783,8 +13802,6 @@ rk_sftl_vendor_register: .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 @@ -13892,143 +13909,151 @@ rk_sftl_vendor_register: .section .rodata .align 2 .set .LANCHOR1,. + 0 - .type __func__.6749, %object - .size __func__.6749, 17 -__func__.6749: + .type __func__.6750, %object + .size __func__.6750, 17 +__func__.6750: .ascii "INSERT_DATA_LIST\000" - .type __func__.6744, %object - .size __func__.6744, 17 -__func__.6744: + .type __func__.6745, %object + .size __func__.6745, 17 +__func__.6745: .ascii "INSERT_FREE_LIST\000" - .type __func__.6787, %object - .size __func__.6787, 17 -__func__.6787: + .type __func__.6781, %object + .size __func__.6781, 17 +__func__.6781: .ascii "List_remove_node\000" - .type __func__.6819, %object - .size __func__.6819, 22 -__func__.6819: + .type __func__.6813, %object + .size __func__.6813, 22 +__func__.6813: .ascii "List_update_data_list\000" - .type __func__.6930, %object - .size __func__.6930, 22 -__func__.6930: + .type __func__.6920, %object + .size __func__.6920, 22 +__func__.6920: .ascii "select_l2p_ram_region\000" - .type __func__.7253, %object - .size __func__.7253, 16 -__func__.7253: + .type __func__.7243, %object + .size __func__.7243, 16 +__func__.7243: .ascii "make_superblock\000" - .type __func__.7428, %object - .size __func__.7428, 19 -__func__.7428: + .type __func__.7418, %object + .size __func__.7418, 19 +__func__.7418: .ascii "get_new_active_ppa\000" - .type __func__.17766, %object - .size __func__.17766, 15 -__func__.17766: - .ascii "FlashReadPages\000" - .type __func__.17783, %object - .size __func__.17783, 15 -__func__.17783: - .ascii "FlashProgPages\000" - .type __func__.6861, %object - .size __func__.6861, 26 -__func__.6861: + .type __func__.17812, %object + .size __func__.17812, 17 +__func__.17812: + .ascii "FlashEraseBlocks\000" + .type __func__.6855, %object + .size __func__.6855, 26 +__func__.6855: .ascii "ftl_map_blk_alloc_new_blk\000" - .type __func__.6280, %object - .size __func__.6280, 11 -__func__.6280: + .type __func__.6282, %object + .size __func__.6282, 11 +__func__.6282: .ascii "FtlMemInit\000" - .type __func__.6584, %object - .size __func__.6584, 14 -__func__.6584: + .type __func__.6587, %object + .size __func__.6587, 14 +__func__.6587: .ascii "FtlBbt2Bitmap\000" - .type __func__.6891, %object - .size __func__.6891, 31 -__func__.6891: - .ascii "Ftl_write_map_blk_to_last_page\000" - .type __func__.6905, %object - .size __func__.6905, 16 -__func__.6905: - .ascii "FtlMapWritePage\000" - .type __func__.6828, %object - .size __func__.6828, 16 -__func__.6828: - .ascii "load_l2p_region\000" - .type __func__.6876, %object - .size __func__.6876, 15 -__func__.6876: - .ascii "ftl_map_blk_gc\000" - .type __func__.6947, %object - .size __func__.6947, 9 -__func__.6947: - .ascii "log2phys\000" - .type __func__.7162, %object - .size __func__.7162, 16 -__func__.7162: - .ascii "FtlReUsePrevPpa\000" - .type __func__.7315, %object - .size __func__.7315, 14 -__func__.7315: - .ascii "ftl_check_vpc\000" - .type __func__.7042, %object - .size __func__.7042, 14 -__func__.7042: - .ascii "FtlScanSysBlk\000" - .type __func__.7274, %object - .size __func__.7274, 18 -__func__.7274: + .type __func__.7264, %object + .size __func__.7264, 18 +__func__.7264: .ascii "SupperBlkListInit\000" - .type __func__.7400, %object - .size __func__.7400, 25 -__func__.7400: - .ascii "allocate_data_superblock\000" - .type __func__.7441, %object - .size __func__.7441, 16 -__func__.7441: - .ascii "update_vpc_list\000" - .type __func__.7448, %object - .size __func__.7448, 20 -__func__.7448: - .ascii "decrement_vpc_count\000" - .type __func__.7196, %object - .size __func__.7196, 22 -__func__.7196: - .ascii "FtlRecoverySuperblock\000" - .type __func__.6627, %object - .size __func__.6627, 11 -__func__.6627: + .type __func__.17771, %object + .size __func__.17771, 15 +__func__.17771: + .ascii "FlashReadPages\000" + .type __func__.7032, %object + .size __func__.7032, 14 +__func__.7032: + .ascii "FtlScanSysBlk\000" + .type __func__.6630, %object + .size __func__.6630, 11 +__func__.6630: .ascii "FtlLoadBbt\000" - .type __func__.7020, %object - .size __func__.7020, 15 -__func__.7020: - .ascii "FtlVpcTblFlush\000" - .type __func__.7299, %object - .size __func__.7299, 21 -__func__.7299: - .ascii "FtlVpcCheckAndModify\000" - .type __func__.7421, %object - .size __func__.7421, 29 -__func__.7421: - .ascii "allocate_new_data_superblock\000" - .type __func__.6404, %object - .size __func__.6404, 13 -__func__.6404: - .ascii "FtlProgPages\000" - .type __func__.7519, %object - .size __func__.7519, 19 -__func__.7519: - .ascii "FtlGcFreeTempBlock\000" - .type __func__.7625, %object - .size __func__.7625, 23 -__func__.7625: - .ascii "rk_ftl_garbage_collect\000" - .type __func__.6432, %object - .size __func__.6432, 9 -__func__.6432: - .ascii "FtlWrite\000" - .type __func__.7099, %object - .size __func__.7099, 15 -__func__.7099: + .type __func__.7089, %object + .size __func__.7089, 15 +__func__.7089: .ascii "FtlLoadSysInfo\000" - .space 2 + .type __func__.17789, %object + .size __func__.17789, 15 +__func__.17789: + .ascii "FlashProgPages\000" + .type __func__.6881, %object + .size __func__.6881, 31 +__func__.6881: + .ascii "Ftl_write_map_blk_to_last_page\000" + .type __func__.6895, %object + .size __func__.6895, 16 +__func__.6895: + .ascii "FtlMapWritePage\000" + .type __func__.6822, %object + .size __func__.6822, 16 +__func__.6822: + .ascii "load_l2p_region\000" + .type __func__.6866, %object + .size __func__.6866, 15 +__func__.6866: + .ascii "ftl_map_blk_gc\000" + .type __func__.6937, %object + .size __func__.6937, 9 +__func__.6937: + .ascii "log2phys\000" + .type __func__.7152, %object + .size __func__.7152, 16 +__func__.7152: + .ascii "FtlReUsePrevPpa\000" + .type __func__.7305, %object + .size __func__.7305, 14 +__func__.7305: + .ascii "ftl_check_vpc\000" + .type __func__.7390, %object + .size __func__.7390, 25 +__func__.7390: + .ascii "allocate_data_superblock\000" + .type __func__.7431, %object + .size __func__.7431, 16 +__func__.7431: + .ascii "update_vpc_list\000" + .type __func__.7438, %object + .size __func__.7438, 20 +__func__.7438: + .ascii "decrement_vpc_count\000" + .type __func__.7186, %object + .size __func__.7186, 22 +__func__.7186: + .ascii "FtlRecoverySuperblock\000" + .type __func__.7010, %object + .size __func__.7010, 15 +__func__.7010: + .ascii "FtlVpcTblFlush\000" + .type __func__.7289, %object + .size __func__.7289, 21 +__func__.7289: + .ascii "FtlVpcCheckAndModify\000" + .type __func__.7411, %object + .size __func__.7411, 29 +__func__.7411: + .ascii "allocate_new_data_superblock\000" + .type __func__.6406, %object + .size __func__.6406, 13 +__func__.6406: + .ascii "FtlProgPages\000" + .type __func__.7508, %object + .size __func__.7508, 19 +__func__.7508: + .ascii "FtlGcFreeTempBlock\000" + .type __func__.7619, %object + .size __func__.7619, 23 +__func__.7619: + .ascii "rk_ftl_garbage_collect\000" + .type __func__.6434, %object + .size __func__.6434, 9 +__func__.6434: + .ascii "FtlWrite\000" + .type __func__.6546, %object + .size __func__.6546, 14 +__func__.6546: + .ascii "FtlWriteToIDB\000" + .space 3 .type rk_sftl_vendor_storage_fops, %object .size rk_sftl_vendor_storage_fops, 108 rk_sftl_vendor_storage_fops: @@ -14056,13 +14081,12 @@ power_up_flag: .size rkflash_vender_storage_dev, 40 rkflash_vender_storage_dev: .word 255 - .word .LC116 + .word .LC118 .word rk_sftl_vendor_storage_fops .space 28 .bss .align 2 .set .LANCHOR0,. + 0 - .set .LANCHOR3,. + 4344 .type g_nand_phy_info, %object .size g_nand_phy_info, 24 g_nand_phy_info: @@ -14442,14 +14466,6 @@ g_gc_next_blk: .type g_gc_next_blk_1, %object .size g_gc_next_blk_1, 2 g_gc_next_blk_1: - .space 2 - .type g_gc_next_blk_2, %object - .size g_gc_next_blk_2, 2 -g_gc_next_blk_2: - .space 2 - .type g_gc_next_blk_3, %object - .size g_gc_next_blk_3, 2 -g_gc_next_blk_3: .space 2 .type g_gc_bad_block_temp_num, %object .size g_gc_bad_block_temp_num, 2 @@ -14467,41 +14483,9 @@ g_gc_bad_block_gc_index: .size g_nand_ops, 16 g_nand_ops: .space 16 - .type req_sys, %object - .size req_sys, 20 -req_sys: - .space 20 - .type p_sys_data_buf, %object - .size p_sys_data_buf, 4 -p_sys_data_buf: - .space 4 - .type p_sys_spare_buf, %object - .size p_sys_spare_buf, 4 -p_sys_spare_buf: - .space 4 - .type check_spare_buf, %object - .size check_spare_buf, 512 -check_spare_buf: - .space 512 .type req_erase, %object .size req_erase, 4 req_erase: - .space 4 - .type g_cur_erase_blk, %object - .size g_cur_erase_blk, 4 -g_cur_erase_blk: - .space 4 - .type p_io_data_buf_1, %object - .size p_io_data_buf_1, 4 -p_io_data_buf_1: - .space 4 - .type p_io_spare_buf, %object - .size p_io_spare_buf, 4 -p_io_spare_buf: - .space 4 - .type p_io_data_buf_0, %object - .size p_io_data_buf_0, 4 -p_io_data_buf_0: .space 4 .type g_in_gc_progress, %object .size g_in_gc_progress, 4 @@ -14514,6 +14498,10 @@ g_gc_head_data_block: .type g_gc_head_data_block_count, %object .size g_gc_head_data_block_count, 4 g_gc_head_data_block_count: + .space 4 + .type g_cur_erase_blk, %object + .size g_cur_erase_blk, 4 +g_cur_erase_blk: .space 4 .type req_read, %object .size req_read, 4 @@ -14526,6 +14514,10 @@ req_gc_dst: .type req_prgm, %object .size req_prgm, 4 req_prgm: + .space 4 + .type p_sys_data_buf, %object + .size p_sys_data_buf, 4 +p_sys_data_buf: .space 4 .type p_sys_data_buf_1, %object .size p_sys_data_buf_1, 4 @@ -14534,6 +14526,34 @@ p_sys_data_buf_1: .type p_vendor_data_buf, %object .size p_vendor_data_buf, 4 p_vendor_data_buf: + .space 4 + .type p_io_data_buf_0, %object + .size p_io_data_buf_0, 4 +p_io_data_buf_0: + .space 4 + .type p_io_data_buf_1, %object + .size p_io_data_buf_1, 4 +p_io_data_buf_1: + .space 4 + .type sftl_nand_check_buf, %object + .size sftl_nand_check_buf, 4 +sftl_nand_check_buf: + .space 4 + .type sftl_temp_buf, %object + .size sftl_temp_buf, 4 +sftl_temp_buf: + .space 4 + .type sftl_nand_check_spare_buf, %object + .size sftl_nand_check_spare_buf, 4 +sftl_nand_check_spare_buf: + .space 4 + .type p_sys_spare_buf, %object + .size p_sys_spare_buf, 4 +p_sys_spare_buf: + .space 4 + .type p_io_spare_buf, %object + .size p_io_spare_buf, 4 +p_io_spare_buf: .space 4 .type g_ect_tbl_info_size, %object .size g_ect_tbl_info_size, 2 @@ -14597,15 +14617,9 @@ gL2pMapInfo: .size g_totle_map_block, 2 g_totle_map_block: .space 2 - .space 2 - .type gVendorBlkInfo, %object - .size gVendorBlkInfo, 44 -gVendorBlkInfo: - .space 44 .type g_tmp_data_superblock_id, %object .size g_tmp_data_superblock_id, 2 g_tmp_data_superblock_id: - .space 2 .space 2 .type g_totle_swl_count, %object .size g_totle_swl_count, 4 @@ -14619,6 +14633,18 @@ ftl_gc_temp_power_lost_recovery_flag: .size g_recovery_page_min_ver, 4 g_recovery_page_min_ver: .space 4 + .type req_sys, %object + .size req_sys, 20 +req_sys: + .space 20 + .type g_MaxLbn, %object + .size g_MaxLbn, 4 +g_MaxLbn: + .space 4 + .type gVendorBlkInfo, %object + .size gVendorBlkInfo, 44 +gVendorBlkInfo: + .space 44 .type g_power_lost_recovery_flag, %object .size g_power_lost_recovery_flag, 2 g_power_lost_recovery_flag: @@ -14662,9 +14688,13 @@ g_ftl_nand_free_count: .size idb_need_write_back, 4 idb_need_write_back: .space 4 - .type g_MaxLbn, %object - .size g_MaxLbn, 4 -g_MaxLbn: + .type idb_buf, %object + .size idb_buf, 4 +idb_buf: + .space 4 + .type gp_flash_check_buf, %object + .size gp_flash_check_buf, 4 +gp_flash_check_buf: .space 4 .type _flash_read, %object .size _flash_read, 4 @@ -14678,26 +14708,10 @@ _flash_write: .size g_vendor, 4 g_vendor: .space 4 - .type ftl_temp_buf, %object - .size ftl_temp_buf, 4096 -ftl_temp_buf: - .space 4096 - .type check_buf, %object - .size check_buf, 4096 -check_buf: - .space 4096 .type check_vpc_table, %object .size check_vpc_table, 16384 check_vpc_table: .space 16384 - .type gp_flash_check_buf, %object - .size gp_flash_check_buf, 262144 -gp_flash_check_buf: - .space 262144 - .type idb_buf, %object - .size idb_buf, 262144 -idb_buf: - .space 262144 .type gp_last_act_superblock, %object .size gp_last_act_superblock, 4 gp_last_act_superblock: @@ -14845,7 +14859,7 @@ gp_last_act_superblock: .LC69: .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" .LC70: - .ascii "SFTL version: 5.0.45 20180810\000" + .ascii "SFTL version: 5.0.48 20180930\000" .LC71: .ascii "%s\012\000" .LC72: @@ -14866,78 +14880,82 @@ gp_last_act_superblock: .LC79: .ascii "\012\000" .LC80: - .ascii "prog read error: = %x\012\000" + .ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000" .LC81: - .ascii "prog read s error: = %x %x %x\012\000" + .ascii "not free: w: d:\000" .LC82: - .ascii "prog read d error: = %x %x %x\012\000" + .ascii "not free: w: s:\000" .LC83: - .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" -.LC84: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" .ascii "\000" -.LC85: +.LC84: .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" -.LC86: +.LC85: .ascii "%s error allocating memory. return -1\012\000" +.LC86: + .ascii "prog read error: = %x\012\000" .LC87: - .ascii "FtlMapWritePage error = %x \012\000" + .ascii "prog read s error: = %x %x %x\012\000" .LC88: - .ascii "FtlMapWritePage error = %x error count = %d\012\000" + .ascii "prog read d error: = %x %x %x\012\000" .LC89: - .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" + .ascii "FtlMapWritePage error = %x \012\000" .LC90: - .ascii "region_id = %x phyAddr = %x\012\000" + .ascii "FtlMapWritePage error = %x error count = %d\012\000" .LC91: - .ascii "spare:\000" + .ascii "region_id = %x phyAddr = %x\012\000" .LC92: - .ascii "map_ppn:\000" + .ascii "spare:\000" .LC93: - .ascii "ftl_map_blk_gc blk info: %x %x %x\012\000" + .ascii "map_ppn:\000" .LC94: - .ascii "ftl_scan_all_data = %x\012\000" + .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" .LC95: - .ascii "scan lpa = %x ppa= %x\012\000" + .ascii "...%s enter...\012\000" .LC96: + .ascii "FtlCheckVpc2 %x = %x %x\012\000" +.LC97: + .ascii "free blk vpc error %x = %x %x\012\000" +.LC98: + .ascii "ftl_scan_all_data = %x\012\000" +.LC99: + .ascii "scan lpa = %x ppa= %x\012\000" +.LC100: .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" .ascii "\000" -.LC97: - .ascii "...%s enter...\012\000" -.LC98: - .ascii "FtlCheckVpc2 %x = %x %x\012\000" -.LC99: - .ascii "free blk vpc error %x = %x %x\012\000" -.LC100: - .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" .LC101: - .ascii "FtlBbmTblFlush error:%x\012\000" + .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" .LC102: - .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" + .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" .LC103: - .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" + .ascii "FtlBbmTblFlush error:%x\012\000" .LC104: - .ascii "decrement_vpc_count %x = %d\012\000" + .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" .LC105: - .ascii "decrement_vpc_count %x = %d in free list\012\000" + .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" .LC106: - .ascii "spuer block %x vpn is 0\012 \000" + .ascii "decrement_vpc_count %x = %d\012\000" .LC107: - .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" + .ascii "spuer block %x vpn is 0\012 \000" .LC108: - .ascii "no ect\000" + .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" .LC109: - .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" + .ascii "no ect\000" .LC110: - .ascii "FtlCheckVpc %x = %x %x\012\000" + .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" .LC111: - .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" + .ascii "FtlCheckVpc %x = %x %x\012\000" .LC112: - .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" + .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" .LC113: - .ascii "g_gc_superblock_free %x %x %x %x %x\012\000" + .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" .LC114: .ascii "FtlWrite: lpa error:%x %x\012\000" .LC115: - .ascii "write_idblock fail! %x %x %x %x\012\000" + .ascii "write_idblock fix data %x %x %x\012\000" .LC116: + .ascii "write_idblock fail! %x %x %x %x\012\000" +.LC117: + .ascii "%s idb buffer alloc fail\012\000" +.LC118: .ascii "vendor_storage\000" diff --git a/drivers/rkflash/rk_sftl_arm_v8.S b/drivers/rkflash/rk_sftl_arm_v8.S index b477611bb3f5..d56521ae0232 100644 --- a/drivers/rkflash/rk_sftl_arm_v8.S +++ b/drivers/rkflash/rk_sftl_arm_v8.S @@ -2,7 +2,7 @@ /* * Copyright (c) 2018 Rockchip Electronics Co. Ltd. - * date: 2018-08-17 + * date: 2018-09-30 */ .arch armv8-a .file "rk_sftl.c" @@ -533,37 +533,6 @@ IsInFreeQueue: ret .size IsInFreeQueue, .-IsInFreeQueue .align 2 - .global test_node_in_list - .type test_node_in_list, %function -test_node_in_list: - ldr x2, [x0] - adrp x0, .LANCHOR0+2360 - mov x4, -6148914691236517206 - and w1, w1, 65535 - ldr x3, [x0, #:lo12:.LANCHOR0+2360] - 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 -.L69: - cmp w0, w1 - beq .L70 - ldrh w0, [x2] - cmp w0, w5 - beq .L71 - umaddl x2, w0, w4, x3 - b .L69 -.L70: - mov w0, 1 - ret -.L71: - mov w0, 0 - ret - .size test_node_in_list, .-test_node_in_list - .align 2 .global insert_data_list .type insert_data_list, %function insert_data_list: @@ -572,7 +541,7 @@ insert_data_list: and w0, w0, 65535 ldrh w1, [x3, 44] cmp w1, w0 - bls .L88 + bls .L83 mov w7, 6 ldr x12, [x3, 2360] mov w1, -1 @@ -581,12 +550,12 @@ insert_data_list: strh w1, [x5, 2] strh w1, [x12, x11] ldr x1, [x3, 2368] - cbnz x1, .L75 + cbnz x1, .L70 str x5, [x3, 2368] -.L88: +.L83: mov w0, 0 ret -.L75: +.L70: stp x29, x30, [sp, -16]! ubfiz x8, x0, 1, 16 mov x4, x2 @@ -611,13 +580,13 @@ insert_data_list: add x9, x15, x8 mov w8, w7 and w2, w2, 65535 -.L83: +.L78: add w3, w3, 1 and w3, w3, 65535 cmp w3, w18 - bhi .L74 + bhi .L69 cmp w0, w2 - beq .L74 + beq .L69 ubfiz x16, x2, 1, 16 ldrh w17, [x1, 4] cmp w17, 0 @@ -625,48 +594,48 @@ insert_data_list: mul w7, w7, w17 csel w7, w7, w10, ne cmp w6, w7 - bne .L79 + bne .L74 ldrh w16, [x15, x16] ldrh w7, [x9] cmp w16, w7 - bcc .L81 -.L80: + bcc .L76 +.L75: strh w2, [x12, x11] ldrh w2, [x1, 2] strh w2, [x5, 2] add x2, x4, :lo12:.LANCHOR0 ldr x3, [x2, 2368] cmp x1, x3 - bne .L84 + bne .L79 strh w0, [x1, 2] str x5, [x2, 2368] - b .L74 -.L79: - bcc .L80 -.L81: + b .L69 +.L74: + bcc .L75 +.L76: ldrh w7, [x1] cmp w7, w30 - bne .L82 + bne .L77 strh w2, [x5, 2] add x2, x4, :lo12:.LANCHOR0 strh w0, [x1] str x5, [x2, 2392] -.L74: +.L69: mov w0, 0 ldp x29, x30, [sp], 16 ret -.L82: +.L77: umaddl x1, w7, w8, x13 mov w2, w7 - b .L83 -.L84: + b .L78 +.L79: ldrh w3, [x1, 2] mov w4, 6 ldr x2, [x2, 2360] umull x3, w3, w4 strh w0, [x2, x3] strh w0, [x1, 2] - b .L74 + b .L69 .size insert_data_list, .-insert_data_list .align 2 .global INSERT_DATA_LIST @@ -683,14 +652,14 @@ INSERT_DATA_LIST: strh w0, [x1, 2400] ldrh w1, [x1, 44] cmp w1, w0 - bcs .L90 + bcs .L85 adrp x1, .LANCHOR1 adrp x0, .LC1 - mov w2, 221 + mov w2, 214 add x1, x1, :lo12:.LANCHOR1 add x0, x0, :lo12:.LC1 bl sftl_printk -.L90: +.L85: ldp x29, x30, [sp], 16 ret .size INSERT_DATA_LIST, .-INSERT_DATA_LIST @@ -701,7 +670,7 @@ insert_free_list: and w0, w0, 65535 mov w7, 65535 cmp w0, w7 - beq .L94 + beq .L89 adrp x2, .LANCHOR0 add x5, x2, :lo12:.LANCHOR0 mov w6, 6 @@ -713,12 +682,12 @@ insert_free_list: strh w1, [x4, 2] strh w1, [x9, x8] ldr x1, [x5, 2408] - cbnz x1, .L95 + cbnz x1, .L90 str x4, [x5, 2408] -.L94: +.L89: mov w0, 0 ret -.L95: +.L90: ldr x11, [x5, 2384] ubfiz x2, x0, 1, 16 ldr x10, [x5, 2360] @@ -729,40 +698,40 @@ insert_free_list: asr x2, x2, 1 mul x2, x2, x5 and w2, w2, 65535 -.L98: +.L93: ubfiz x5, x2, 1, 16 ldrh w5, [x11, x5] cmp w5, w12 - bcs .L96 + bcs .L91 ldrh w5, [x1] cmp w5, w7 - bne .L97 + bne .L92 strh w2, [x4, 2] strh w0, [x1] - b .L94 -.L97: + b .L89 +.L92: umaddl x1, w5, w6, x10 mov w2, w5 - b .L98 -.L96: + b .L93 +.L91: ldrh w5, [x1, 2] strh w5, [x4, 2] strh w2, [x9, x8] add x2, x3, :lo12:.LANCHOR0 ldr x3, [x2, 2408] cmp x1, x3 - bne .L99 + bne .L94 strh w0, [x1, 2] str x4, [x2, 2408] - b .L94 -.L99: + b .L89 +.L94: ldrh w3, [x1, 2] mov w4, 6 ldr x2, [x2, 2360] umull x3, w3, w4 strh w0, [x2, x3] strh w0, [x1, 2] - b .L94 + b .L89 .size insert_free_list, .-insert_free_list .align 2 .global INSERT_FREE_LIST @@ -779,15 +748,15 @@ INSERT_FREE_LIST: strh w0, [x1, 2416] ldrh w1, [x1, 44] cmp w1, w0 - bcs .L100 + bcs .L95 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 214 + mov w2, 207 add x1, x1, 24 add x0, x0, :lo12:.LC1 bl sftl_printk -.L100: +.L95: ldp x29, x30, [sp], 16 ret .size INSERT_FREE_LIST, .-INSERT_FREE_LIST @@ -811,27 +780,27 @@ List_remove_node: add x20, x22, x21 ldrh w1, [x20, 2] cmp w1, w0 - bne .L104 + bne .L99 ldr x0, [x23] cmp x20, x0 - beq .L104 + beq .L99 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 397 + mov w2, 372 add x1, x1, 48 add x0, x0, :lo12:.LC1 bl sftl_printk -.L104: +.L99: ldr x0, [x23] mov w1, 65535 cmp x20, x0 ldrh w0, [x22, x21] - bne .L105 + bne .L100 cmp w0, w1 - bne .L106 + bne .L101 str xzr, [x23] -.L107: +.L102: mov w0, -1 strh w0, [x22, x21] strh w0, [x20, 2] @@ -841,7 +810,7 @@ List_remove_node: ldr x23, [sp, 48] ldp x29, x30, [sp], 64 ret -.L106: +.L101: add x19, x19, :lo12:.LANCHOR0 mov w2, 6 ldr x1, [x19, 2360] @@ -849,21 +818,21 @@ List_remove_node: mov w1, -1 str x0, [x23] strh w1, [x0, 2] - b .L107 -.L105: + b .L102 +.L100: cmp w0, w1 ldrh w1, [x20, 2] - bne .L108 + bne .L103 cmp w1, w0 - beq .L107 + beq .L102 add x19, x19, :lo12:.LANCHOR0 mov w0, 6 mov w2, -1 umull x1, w1, w0 ldr x0, [x19, 2360] strh w2, [x0, x1] - b .L107 -.L108: + b .L102 +.L103: add x19, x19, :lo12:.LANCHOR0 mov w2, 6 ldr x3, [x19, 2360] @@ -874,14 +843,14 @@ List_remove_node: ldrh w3, [x22, x21] umull x0, w0, w2 strh w3, [x1, x0] - b .L107 + b .L102 .size List_remove_node, .-List_remove_node .align 2 .global List_pop_index_node .type List_pop_index_node, %function List_pop_index_node: ldr x2, [x0] - cbz x2, .L116 + cbz x2, .L111 stp x29, x30, [sp, -32]! adrp x3, .LANCHOR0+2360 and w1, w1, 65535 @@ -890,9 +859,9 @@ List_pop_index_node: str x19, [sp, 16] mov w5, 6 ldr x19, [x3, #:lo12:.LANCHOR0+2360] -.L112: - cbnz w1, .L113 -.L115: +.L107: + cbnz w1, .L108 +.L110: sub x19, x2, x19 mov x2, -6148914691236517206 asr x19, x19, 1 @@ -905,15 +874,15 @@ List_pop_index_node: ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret -.L113: +.L108: ldrh w3, [x2] cmp w3, w4 - beq .L115 + beq .L110 sub w1, w1, #1 umaddl x2, w3, w5, x19 and w1, w1, 65535 - b .L112 -.L116: + b .L107 +.L111: mov w0, 65535 ret .size List_pop_index_node, .-List_pop_index_node @@ -936,25 +905,25 @@ List_get_gc_head_node: adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 ldr x1, [x0, 2368] - cbz x1, .L128 + cbz x1, .L123 ldr x3, [x0, 2360] mov w4, 6 mov w0, 65535 -.L125: - cbz w2, .L126 +.L120: + cbz w2, .L121 ldrh w1, [x1] cmp w1, w0 - bne .L127 + bne .L122 ret -.L127: +.L122: sub w2, w2, #1 umaddl x1, w1, w4, x3 and w2, w2, 65535 - b .L125 -.L128: + b .L120 +.L123: mov w0, 65535 ret -.L126: +.L121: sub x0, x1, x3 mov x1, -6148914691236517206 asr x0, x0, 1 @@ -977,20 +946,20 @@ List_update_data_list: stp x23, x24, [sp, 48] ldrh w1, [x0, 2424] cmp w1, w20 - beq .L131 + beq .L126 ldrh w1, [x0, 2472] cmp w1, w20 - beq .L131 + beq .L126 ldrh w1, [x0, 2520] cmp w1, w20 - beq .L131 + beq .L126 mov w22, 6 ldr x24, [x0, 2360] ldr x1, [x0, 2368] umull x22, w20, w22 add x23, x24, x22 cmp x23, x1 - beq .L131 + beq .L126 ldr x2, [x0, 2376] ubfiz x1, x20, 1, 16 ldrh w0, [x23, 4] @@ -1001,26 +970,26 @@ List_update_data_list: ldrh w0, [x23, 2] csinv w21, w21, wzr, ne cmp w0, w1 - bne .L134 + bne .L129 ldrh w1, [x24, x22] cmp w1, w0 - bne .L134 + bne .L129 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 488 + mov w2, 463 add x1, x1, 72 add x0, x0, :lo12:.LC1 bl sftl_printk -.L134: +.L129: ldrh w0, [x23, 2] mov w1, 65535 cmp w0, w1 - bne .L135 + bne .L130 ldrh w1, [x24, x22] cmp w1, w0 - beq .L131 -.L135: + beq .L126 +.L130: mov w1, 6 add x22, x19, :lo12:.LANCHOR0 mov x2, -6148914691236517206 @@ -1037,27 +1006,27 @@ List_update_data_list: mul w0, w1, w2 csinv w0, w0, wzr, ne cmp w21, w0 - bcs .L131 + bcs .L126 mov w1, w20 add x0, x22, 2368 bl List_remove_node ldrh w0, [x22, 2400] - cbnz w0, .L137 + cbnz w0, .L132 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 499 + mov w2, 474 add x1, x1, 72 add x0, x0, :lo12:.LC1 bl sftl_printk -.L137: +.L132: add x19, x19, :lo12:.LANCHOR0 ldrh w0, [x19, 2400] sub w0, w0, #1 strh w0, [x19, 2400] mov w0, w20 bl INSERT_DATA_LIST -.L131: +.L126: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -1078,73 +1047,73 @@ select_l2p_ram_region: mov w4, 65535 ldrh w2, [x0, 142] ldr x0, [x0, 2568] -.L142: +.L137: and w19, w3, 65535 cmp w19, w2 - bcc .L144 + bcc .L139 add x4, x0, 4 mov w19, w2 mov w6, -2147483648 mov w3, 0 -.L145: +.L140: cmp w3, w2 - bne .L147 + bne .L142 cmp w19, w2 - bcc .L143 + bcc .L138 add x1, x1, :lo12:.LANCHOR0 mov w19, w2 mov w3, -1 ldrh w4, [x1, 2576] mov w1, 0 -.L148: +.L143: cmp w1, w2 - bne .L150 + bne .L145 cmp w19, w1 - bcc .L143 + bcc .L138 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - mov w2, 823 + mov w2, 787 add x1, x1, 96 adrp x0, .LC1 add x0, x0, :lo12:.LC1 bl sftl_printk - b .L143 -.L144: + b .L138 +.L139: add x3, x3, 1 add x5, x0, x3, lsl 4 ldrh w5, [x5, -16] cmp w5, w4 - bne .L142 -.L143: + bne .L137 +.L138: mov w0, w19 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret -.L147: +.L142: ldr w5, [x4] - tbnz w5, #31, .L146 + tbnz w5, #31, .L141 cmp w6, w5 - bls .L146 + bls .L141 mov w6, w5 mov w19, w3 -.L146: +.L141: add w3, w3, 1 add x4, x4, 16 and w3, w3, 65535 - b .L145 -.L150: + b .L140 +.L145: ldr w6, [x0, 4] cmp w3, w6 - bls .L149 + bls .L144 ldrh w5, [x0] cmp w5, w4 csel w3, w3, w6, eq csel w19, w19, w1, eq -.L149: +.L144: add w1, w1, 1 add x0, x0, 16 and w1, w1, 65535 - b .L148 + b .L143 .size select_l2p_ram_region, .-select_l2p_ram_region .align 2 .global FtlUpdateVaildLpn @@ -1154,12 +1123,12 @@ FtlUpdateVaildLpn: add x3, x1, :lo12:.LANCHOR0 ldrh w2, [x3, 2578] cmp w2, 4 - bhi .L153 - cbnz w0, .L153 + bhi .L148 + cbnz w0, .L148 add w2, w2, 1 strh w2, [x3, 2578] ret -.L153: +.L148: add x0, x1, :lo12:.LANCHOR0 mov w6, 65535 mov x1, 0 @@ -1167,33 +1136,33 @@ FtlUpdateVaildLpn: ldr x5, [x0, 2376] strh wzr, [x0, 2578] str wzr, [x0, 2580] -.L154: +.L149: cmp w4, w1, uxth - bhi .L156 + bhi .L151 ret -.L156: +.L151: ldrh w3, [x5, x1, lsl 1] cmp w3, w6 - beq .L155 + beq .L150 ldr w2, [x0, 2580] add w2, w2, w3 str w2, [x0, 2580] -.L155: +.L150: add x1, x1, 1 - b .L154 + b .L149 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn .align 2 .global ftl_set_blk_mode .type ftl_set_blk_mode, %function ftl_set_blk_mode: and w0, w0, 65535 - cbz w1, .L159 + cbz w1, .L154 stp x29, x30, [sp, -16]! add x29, sp, 0 bl ftl_set_blk_mode.part.7 ldp x29, x30, [sp], 16 ret -.L159: +.L154: adrp x1, .LANCHOR0+24 ubfx x2, x0, 5, 11 lsl x2, x2, 2 @@ -1229,9 +1198,9 @@ ftl_sb_update_avl_pages: strh wzr, [x0, 4] ldrh w3, [x1, 36] mov w1, 65535 -.L167: +.L162: cmp w3, w2, uxth - bhi .L169 + bhi .L164 add x4, x4, :lo12:.LANCHOR0 ubfiz x3, x3, 1, 16 add x3, x3, 16 @@ -1242,69 +1211,69 @@ ftl_sb_update_avl_pages: sub w1, w1, #1 and w1, w1, 65535 sub w1, w1, w6 -.L170: +.L165: cmp x2, x3 - bne .L172 + bne .L167 ret -.L169: +.L164: add x5, x0, x2, sxtw 1 ldrh w5, [x5, 16] cmp w5, w1 - beq .L168 + beq .L163 ldrh w5, [x0, 4] add w5, w5, 1 strh w5, [x0, 4] -.L168: +.L163: add w2, w2, 1 - b .L167 -.L172: + b .L162 +.L167: ldrh w4, [x2] cmp w4, w5 - beq .L171 + beq .L166 ldrh w4, [x0, 4] add w4, w1, w4 strh w4, [x0, 4] -.L171: +.L166: add x2, x2, 2 - b .L170 + b .L165 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages .align 2 .global FtlSlcSuperblockCheck .type FtlSlcSuperblockCheck, %function FtlSlcSuperblockCheck: ldrh w1, [x0, 4] - cbz w1, .L173 + cbz w1, .L168 ldrh w2, [x0] mov w1, 65535 cmp w2, w1 - beq .L173 + beq .L168 ldrb w2, [x0, 6] add x2, x2, 8 ldrh w3, [x0, x2, lsl 1] adrp x2, .LANCHOR0+36 ldrh w4, [x2, #:lo12:.LANCHOR0+36] mov w2, w1 -.L176: +.L171: cmp w3, w2 - beq .L178 -.L173: + beq .L173 +.L168: ret -.L178: +.L173: ldrb w1, [x0, 6] add w1, w1, 1 and w1, w1, 255 strb w1, [x0, 6] cmp w1, w4 - bne .L177 + bne .L172 ldrh w1, [x0, 2] strb wzr, [x0, 6] add w1, w1, 1 strh w1, [x0, 2] -.L177: +.L172: ldrb w1, [x0, 6] add x1, x1, 8 ldrh w3, [x0, x1, lsl 1] - b .L176 + b .L171 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck .align 2 .global make_superblock @@ -1319,15 +1288,15 @@ make_superblock: ldrh w1, [x19] ldrh w0, [x0, 44] cmp w1, w0 - bcc .L180 + bcc .L175 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2146 + mov w2, 2110 add x1, x1, 120 add x0, x0, :lo12:.LC1 bl sftl_printk -.L180: +.L175: add x0, x20, :lo12:.LANCHOR0 add x6, x19, 16 add x7, x0, 64 @@ -1336,36 +1305,35 @@ make_superblock: mov x5, 0 ldrh w8, [x0, 36] mov w9, -1 -.L181: +.L176: cmp w8, w5, uxth - bhi .L183 + bhi .L178 add x20, x20, :lo12:.LANCHOR0 ldrb w0, [x19, 7] + strb wzr, [x19, 9] ldrh w1, [x20, 106] mul w0, w0, w1 strh w0, [x19, 4] - mov w0, 1 - strb w0, [x19, 9] mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret -.L183: +.L178: ldrh w1, [x19] ldrb w0, [x7, x5] bl V2P_block mov w4, w0 strh w9, [x6] bl FtlBbmIsBadBlock - cbnz w0, .L182 + cbnz w0, .L177 strh w4, [x6] ldrb w0, [x19, 7] add w0, w0, 1 strb w0, [x19, 7] -.L182: +.L177: add x5, x5, 1 add x6, x6, 2 - b .L181 + b .L176 .size make_superblock, .-make_superblock .align 2 .global update_multiplier_value @@ -1381,11 +1349,11 @@ update_multiplier_value: ldrh w10, [x1, 36] ldrh w11, [x1, 106] cmp w10, w9, uxth - bhi .L197 - cbz w6, .L195 + bhi .L192 + cbz w6, .L190 mov w0, 32768 sdiv w6, w0, w6 -.L196: +.L191: add x0, x5, :lo12:.LANCHOR0 mov w1, 6 ldr x0, [x0, 2360] @@ -1393,31 +1361,31 @@ update_multiplier_value: mov w0, 0 strh w6, [x8, 4] ret +.L185: + mov w6, 0 + b .L184 .L190: mov w6, 0 - b .L189 -.L195: - mov w6, 0 - b .L196 -.L197: + b .L191 +.L192: stp x29, x30, [sp, -16]! add x29, sp, 0 -.L188: +.L183: ldrb w0, [x7, x9] mov w1, w8 bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L187 + cbnz w0, .L182 add w6, w6, w11 and w6, w6, 65535 -.L187: +.L182: add x9, x9, 1 cmp w10, w9, uxth - bhi .L188 - cbz w6, .L190 + bhi .L183 + cbz w6, .L185 mov w0, 32768 sdiv w6, w0, w6 -.L189: +.L184: add x0, x5, :lo12:.LANCHOR0 mov w1, 6 ldr x0, [x0, 2360] @@ -1434,7 +1402,7 @@ GetFreeBlockMinEraseCount: adrp x1, .LANCHOR0 add x1, x1, :lo12:.LANCHOR0 ldr x0, [x1, 2408] - cbz x0, .L200 + cbz x0, .L195 ldr x2, [x1, 2360] ldr x1, [x1, 2384] sub x0, x0, x2 @@ -1445,7 +1413,7 @@ GetFreeBlockMinEraseCount: and x0, x0, 65535 ldrh w0, [x1, x0, lsl 1] ret -.L200: +.L195: mov w0, 0 ret .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount @@ -1457,7 +1425,7 @@ GetFreeBlockMaxEraseCount: add x4, x2, :lo12:.LANCHOR0 and w0, w0, 65535 ldr x1, [x4, 2408] - cbz x1, .L208 + cbz x1, .L203 ldrh w3, [x4, 2416] mov w5, 7 ldr x4, [x4, 2360] @@ -1474,25 +1442,25 @@ GetFreeBlockMaxEraseCount: mul x1, x1, x3 mov w3, 0 and w1, w1, 65535 -.L204: +.L199: cmp w0, w3 - beq .L207 + beq .L202 umull x5, w1, w6 ldrh w5, [x4, x5] cmp w5, w7 - bne .L205 -.L207: + bne .L200 +.L202: add x2, x2, :lo12:.LANCHOR0 ubfiz x1, x1, 1, 16 ldr x0, [x2, 2384] ldrh w0, [x0, x1] ret -.L205: +.L200: add w3, w3, 1 mov w1, w5 and w3, w3, 65535 - b .L204 -.L208: + b .L199 +.L203: mov w0, 0 ret .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount @@ -1974,8 +1942,8 @@ FtlPrintInfo2buf: adrp x0, .LANCHOR2 ldr w0, [x0, #:lo12:.LANCHOR2] cmp w0, 1 - beq .L210 -.L215: + beq .L205 +.L210: sub w0, w19, w22 ldr x27, [sp, 80] ldp x19, x20, [sp, 16] @@ -1984,11 +1952,11 @@ FtlPrintInfo2buf: ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret -.L210: +.L205: ldrh w0, [x21, 2672] mov w1, 65535 cmp w0, w1 - beq .L212 + beq .L207 ldr x1, [x21, 2376] ubfiz x0, x0, 1, 16 adrp x2, .LC67 @@ -1998,7 +1966,7 @@ FtlPrintInfo2buf: mov x1, 64 bl snprintf add x19, x19, x0, sxtw -.L212: +.L207: mov w0, 0 adrp x24, .LC68 bl List_get_gc_head_node @@ -2008,9 +1976,9 @@ FtlPrintInfo2buf: mov w20, 0 mov w27, 65535 mov w26, 6 -.L214: +.L209: cmp w4, w27 - beq .L213 + beq .L208 umull x25, w4, w26 ldr x0, [x21, 2360] ldr x2, [x21, 2376] @@ -2030,8 +1998,8 @@ FtlPrintInfo2buf: ldr x0, [x21, 2360] cmp w20, 16 ldrh w4, [x0, x25] - bne .L214 -.L213: + bne .L209 +.L208: add x23, x23, :lo12:.LANCHOR0 adrp x21, .LC69 add x21, x21, :lo12:.LC69 @@ -2046,9 +2014,9 @@ FtlPrintInfo2buf: movk x0, 0xaaab, lsl 0 mul x4, x4, x0 and w4, w4, 65535 -.L216: +.L211: cmp w4, w25 - beq .L215 + beq .L210 umull x24, w4, w26 ldr x0, [x23, 2360] ldr x2, [x23, 2384] @@ -2064,17 +2032,17 @@ FtlPrintInfo2buf: bl snprintf add x19, x19, x0, sxtw cmp w20, 4 - beq .L215 + beq .L210 ldr x0, [x23, 2360] ldrh w4, [x0, x24] - b .L216 + b .L211 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf .align 2 .global rknand_proc_ftlread .type rknand_proc_ftlread, %function rknand_proc_ftlread: cmp w0, 2047 - ble .L224 + ble .L219 stp x29, x30, [sp, -32]! adrp x3, .LC70 adrp x2, .LC71 @@ -2094,7 +2062,7 @@ rknand_proc_ftlread: ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret -.L224: +.L219: mov w0, 0 ret .size rknand_proc_ftlread, .-rknand_proc_ftlread @@ -2110,14 +2078,14 @@ GetSwlReplaceBlock: ldr w2, [x0, 2636] ldr w1, [x0, 2648] cmp w2, w1 - bcs .L230 + bcs .L225 ldrh w2, [x0, 44] mov x1, 0 ldr x4, [x0, 2384] str wzr, [x0, 2628] -.L231: +.L226: cmp w2, w1 - bhi .L232 + bhi .L227 add x1, x8, :lo12:.LANCHOR0 ldr w0, [x1, 2628] udiv w2, w0, w2 @@ -2127,50 +2095,50 @@ GetSwlReplaceBlock: ldrh w2, [x1, 96] udiv w0, w0, w2 str w0, [x1, 2628] -.L233: +.L228: add x1, x8, :lo12:.LANCHOR0 ldr w9, [x1, 2648] ldr w11, [x1, 2636] add w0, w9, 256 cmp w0, w11 - bls .L238 + bls .L233 ldr w1, [x1, 2644] add w0, w9, 768 cmp w0, w1 - bls .L238 -.L240: + bls .L233 +.L235: mov w20, 65535 -.L239: +.L234: mov w0, w20 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret -.L232: +.L227: ldrh w3, [x4, x1, lsl 1] add x1, x1, 1 ldr w5, [x0, 2628] add w3, w3, w5 str w3, [x0, 2628] - b .L231 -.L230: + b .L226 +.L225: ldr w1, [x0, 2644] cmp w2, w1 - bls .L233 + bls .L228 add w1, w1, 1 str w1, [x0, 2644] mov w1, 0 -.L235: +.L230: ldrh w2, [x0, 44] cmp w1, w2 - bcs .L233 + bcs .L228 ldr x4, [x0, 2384] ubfiz x3, x1, 1, 32 add w1, w1, 1 ldrh w2, [x4, x3] add w2, w2, 1 strh w2, [x4, x3] - b .L235 -.L238: + b .L230 +.L233: add x10, x8, :lo12:.LANCHOR0 ldrh w0, [x10, 2416] add w0, w0, w0, lsl 1 @@ -2179,9 +2147,9 @@ GetSwlReplaceBlock: and w6, w0, 65535 add w0, w9, 64 cmp w6, w0 - bcc .L240 + bcc .L235 ldr x0, [x10, 2368] - cbz x0, .L240 + cbz x0, .L235 mov w4, 65535 ldrh w12, [x10, 44] mov x13, -6148914691236517206 @@ -2192,39 +2160,39 @@ GetSwlReplaceBlock: mov w1, 0 movk x13, 0xaaab, lsl 0 mov w14, 6 -.L241: +.L236: ldrh w3, [x0] cmp w3, w10 - bne .L244 + bne .L239 mov w20, w2 -.L243: +.L238: mov w0, 65535 cmp w20, w0 - beq .L240 + beq .L235 ubfiz x7, x20, 1, 32 ldrh w3, [x5, x7] cmp w9, w3 - bcs .L245 + bcs .L240 bl GetFreeBlockMinEraseCount cmp w9, w0, uxth - bcs .L245 + bcs .L240 add x0, x8, :lo12:.LANCHOR0 str w4, [x0, 2648] -.L245: +.L240: cmp w11, w3 - bls .L240 + bls .L235 add w0, w3, 128 cmp w6, w0 - ble .L240 + ble .L235 add w0, w3, 256 cmp w11, w0 - bhi .L246 + bhi .L241 add x0, x8, :lo12:.LANCHOR0 add w3, w3, 768 ldr w0, [x0, 2644] cmp w3, w0 - bcs .L240 -.L246: + bcs .L235 +.L241: add x19, x8, :lo12:.LANCHOR0 ldrh w5, [x5, x7] mov w2, w11 @@ -2237,14 +2205,14 @@ GetSwlReplaceBlock: bl sftl_printk mov w0, 1 str w0, [x19, 3244] - b .L239 -.L244: + b .L234 +.L239: add w1, w1, 1 and w1, w1, 65535 cmp w1, w12 - bhi .L240 + bhi .L235 ldrh w15, [x0, 4] - cbz w15, .L242 + cbz w15, .L237 sub x0, x0, x7 asr x0, x0, 1 mul x0, x0, x13 @@ -2252,14 +2220,14 @@ GetSwlReplaceBlock: and x0, x0, 65535 ldrh w0, [x5, x0, lsl 1] cmp w9, w0 - bcs .L243 + bcs .L238 cmp w4, w0 - bls .L242 + bls .L237 mov w4, w0 mov w2, w20 -.L242: +.L237: umaddl x0, w3, w14, x7 - b .L241 + b .L236 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock .align 2 .global free_data_superblock @@ -2268,7 +2236,7 @@ free_data_superblock: and w0, w0, 65535 mov w1, 65535 cmp w0, w1 - beq .L257 + beq .L252 stp x29, x30, [sp, -16]! adrp x2, .LANCHOR0+2376 ubfiz x1, x0, 1, 16 @@ -2279,7 +2247,7 @@ free_data_superblock: mov w0, 0 ldp x29, x30, [sp], 16 ret -.L257: +.L252: mov w0, 0 ret .size free_data_superblock, .-free_data_superblock @@ -2295,39 +2263,39 @@ get_new_active_ppa: ldrh w1, [x0] mov w0, 65535 cmp w1, w0 - bne .L261 + bne .L256 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2776 + mov w2, 2740 add x1, x1, 136 add x0, x0, :lo12:.LC1 bl sftl_printk -.L261: +.L256: adrp x20, .LANCHOR0 add x0, x20, :lo12:.LANCHOR0 ldrh w1, [x19, 2] ldrh w0, [x0, 106] cmp w1, w0 - bne .L262 + bne .L257 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2777 + mov w2, 2741 add x1, x1, 136 add x0, x0, :lo12:.LC1 bl sftl_printk -.L262: +.L257: ldrh w0, [x19, 4] - cbnz w0, .L263 + cbnz w0, .L258 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2778 + mov w2, 2742 add x1, x1, 136 add x0, x0, :lo12:.LC1 bl sftl_printk -.L263: +.L258: ldrb w0, [x19, 6] add x1, x20, :lo12:.LANCHOR0 strb wzr, [x19, 10] @@ -2335,9 +2303,9 @@ get_new_active_ppa: ldrh w2, [x1, 36] mov w1, 65535 ldrh w0, [x19, x0, lsl 1] -.L264: +.L259: cmp w0, w1 - beq .L266 + beq .L261 ldrh w21, [x19, 2] mov w3, 65535 ldrh w1, [x19, 4] @@ -2346,56 +2314,56 @@ get_new_active_ppa: sub w1, w1, #1 and w1, w1, 65535 strh w1, [x19, 4] -.L268: +.L263: add w0, w0, 1 and w0, w0, 255 cmp w2, w0 - bne .L267 + bne .L262 ldrh w0, [x19, 2] add w0, w0, 1 strh w0, [x19, 2] mov w0, 0 -.L267: +.L262: add x4, x19, x0, sxtw 1 ldrh w4, [x4, 16] cmp w4, w3 - beq .L268 + beq .L263 add x20, x20, :lo12:.LANCHOR0 strb w0, [x19, 6] ldrh w2, [x19, 2] ldrh w0, [x20, 106] cmp w2, w0 - bne .L260 - cbz w1, .L260 + bne .L255 + cbz w1, .L255 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2799 + mov w2, 2763 add x1, x1, 136 add x0, x0, :lo12:.LC1 bl sftl_printk -.L260: +.L255: mov w0, w21 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret -.L266: +.L261: ldrb w0, [x19, 6] add w0, w0, 1 and w0, w0, 255 strb w0, [x19, 6] cmp w0, w2 - bne .L265 + bne .L260 ldrh w0, [x19, 2] strb wzr, [x19, 6] add w0, w0, 1 strh w0, [x19, 2] -.L265: +.L260: ldrb w0, [x19, 6] add x0, x0, 8 ldrh w0, [x19, x0, lsl 1] - b .L264 + b .L259 .size get_new_active_ppa, .-get_new_active_ppa .align 2 .global FtlGcBufInit @@ -2408,19 +2376,19 @@ FtlGcBufInit: mov w9, 1 mov w5, 4 str wzr, [x1, 3248] -.L276: +.L271: ldrh w2, [x1, 36] cmp w3, w2 - bcc .L277 + bcc .L272 add x0, x0, :lo12:.LANCHOR0 mov w6, 24 mov w5, 4 -.L278: +.L273: ldr w1, [x0, 3288] cmp w2, w1 - bcc .L279 + bcc .L274 ret -.L277: +.L272: umull x4, w3, w8 ldr x6, [x1, 3256] ldr x7, [x1, 3264] @@ -2448,8 +2416,8 @@ FtlGcBufInit: str x4, [x2, 8] ldr x4, [x6, 8] str x4, [x2, 16] - b .L276 -.L279: + b .L271 +.L274: umull x4, w2, w6 ldr x3, [x0, 3256] ldr x7, [x0, 3264] @@ -2470,7 +2438,7 @@ FtlGcBufInit: sdiv w1, w1, w5 add x1, x4, x1, sxtw 2 str x1, [x3, 8] - b .L278 + b .L273 .size FtlGcBufInit, .-FtlGcBufInit .align 2 .global FtlGcBufFree @@ -2482,31 +2450,31 @@ FtlGcBufFree: mov w8, 24 ldr w7, [x2, 3288] ldr x5, [x2, 3256] -.L281: +.L276: cmp w3, w1 - bcs .L280 + bcs .L275 ubfiz x4, x3, 5, 16 mov w2, 0 add x4, x0, x4 - b .L286 -.L282: + b .L281 +.L277: add w2, w2, 1 and w2, w2, 65535 -.L286: +.L281: cmp w2, w7 - bcs .L283 + bcs .L278 umull x6, w2, w8 add x9, x5, x6 ldr x10, [x5, x6] ldr x6, [x4, 8] cmp x10, x6 - bne .L282 + bne .L277 str wzr, [x9, 16] -.L283: +.L278: add w3, w3, 1 and w3, w3, 65535 - b .L281 -.L280: + b .L276 +.L275: ret .size FtlGcBufFree, .-FtlGcBufFree .align 2 @@ -2520,20 +2488,20 @@ FtlGcBufAlloc: mov w8, 1 ldr w5, [x2, 3288] ldr x6, [x2, 3256] -.L288: +.L283: cmp w3, w1 - bcs .L287 + bcs .L282 mov w2, 0 - b .L293 -.L289: + b .L288 +.L284: add w2, w2, 1 and w2, w2, 65535 -.L293: +.L288: cmp w2, w5 - bcs .L290 + bcs .L285 umaddl x4, w2, w7, x6 ldr w9, [x4, 16] - cbnz w9, .L289 + cbnz w9, .L284 ubfiz x2, x3, 5, 16 ldr x9, [x4] add x2, x0, x2 @@ -2541,11 +2509,11 @@ FtlGcBufAlloc: str x9, [x2, 8] ldr x4, [x4, 8] str x4, [x2, 16] -.L290: +.L285: add w3, w3, 1 and w3, w3, 65535 - b .L288 -.L287: + b .L283 +.L282: ret .size FtlGcBufAlloc, .-FtlGcBufAlloc .align 2 @@ -2558,17 +2526,17 @@ IsBlkInGcList: ldrh w2, [x1, 3292] ldr x3, [x1, 3296] mov x1, 0 -.L295: +.L290: cmp w2, w1, uxth - bhi .L297 + bhi .L292 mov w0, 0 ret -.L297: +.L292: add x1, x1, 1 add x4, x3, x1, lsl 1 ldrh w4, [x4, -2] cmp w4, w0 - bne .L295 + bne .L290 mov w0, 1 ret .size IsBlkInGcList, .-IsBlkInGcList @@ -2589,25 +2557,25 @@ FtlGcUpdatePage: ldrh w1, [x4, 3292] ldr x6, [x4, 3296] mov x4, 0 -.L300: +.L295: and w2, w4, 65535 cmp w2, w1 - bcc .L302 - bne .L301 + bcc .L297 + bne .L296 and x4, x4, 65535 strh w0, [x6, x4, lsl 1] add x4, x3, :lo12:.LANCHOR0 ldrh w0, [x4, 3292] add w0, w0, 1 strh w0, [x4, 3292] - b .L301 -.L302: + b .L296 +.L297: add x4, x4, 1 add x2, x6, x4, lsl 1 ldrh w2, [x2, -2] cmp w2, w9 - bne .L300 -.L301: + bne .L295 +.L296: add x0, x3, :lo12:.LANCHOR0 mov w1, 12 ldrh w3, [x0, 3304] @@ -2639,42 +2607,26 @@ FtlGcRefreshBlock: bl sftl_printk adrp x0, .LANCHOR0 add x0, x0, :lo12:.LANCHOR0 - ldrh w5, [x0, 3320] - cmp w19, w5 - beq .L305 - ldrh w4, [x0, 3322] - cmp w19, w4 - beq .L305 - ldrh w3, [x0, 3324] + ldrh w3, [x0, 3320] cmp w19, w3 - beq .L305 - ldrh w2, [x0, 3326] + beq .L300 + ldrh w2, [x0, 3322] cmp w19, w2 - beq .L305 + beq .L300 mov w1, 65535 - cmp w5, w1 - bne .L306 + cmp w3, w1 + bne .L301 strh w19, [x0, 3320] -.L305: +.L300: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret -.L306: - cmp w4, w1 - bne .L307 - strh w19, [x0, 3322] - b .L305 -.L307: - cmp w3, w1 - bne .L308 - strh w19, [x0, 3324] - b .L305 -.L308: +.L301: cmp w2, w1 - bne .L305 - strh w19, [x0, 3326] - b .L305 + bne .L300 + strh w19, [x0, 3322] + b .L300 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock .align 2 .global FtlGcMarkBadPhyBlk @@ -2687,10 +2639,10 @@ FtlGcMarkBadPhyBlk: add x20, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] and w21, w0, 65535 - add x20, x20, 3336 + add x20, x20, 3328 mov w0, w21 bl P2V_block_in_plane - ldrh w1, [x20, -8] + ldrh w1, [x20, -4] mov w2, w21 mov w22, w0 adrp x0, .LC74 @@ -2698,26 +2650,26 @@ FtlGcMarkBadPhyBlk: bl sftl_printk mov w0, w22 bl FtlGcRefreshBlock - ldrh w0, [x20, -8] + ldrh w0, [x20, -4] mov x1, 0 -.L311: +.L304: cmp w0, w1, uxth - bhi .L313 + bhi .L306 cmp w0, 15 - bhi .L312 + bhi .L305 add x19, x19, :lo12:.LANCHOR0 add w1, w0, 1 - add x19, x19, 3336 - strh w1, [x19, -8] + add x19, x19, 3328 + strh w1, [x19, -4] strh w21, [x19, w0, sxtw 1] - b .L312 -.L313: + b .L305 +.L306: add x1, x1, 1 add x2, x20, x1, lsl 1 ldrh w2, [x2, -2] cmp w2, w21 - bne .L311 -.L312: + bne .L304 +.L305: mov w0, 0 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -2733,27 +2685,27 @@ FtlGcReFreshBadBlk: str x19, [sp, 16] adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 3328] - cbz w1, .L316 + ldrh w1, [x0, 3324] + cbz w1, .L309 ldrh w3, [x0, 3320] mov w2, 65535 cmp w3, w2 - bne .L316 - ldrh w2, [x0, 3370] + bne .L309 + ldrh w2, [x0, 3362] cmp w2, w1 - bcc .L317 - strh wzr, [x0, 3370] -.L317: + bcc .L310 + strh wzr, [x0, 3362] +.L310: add x19, x19, :lo12:.LANCHOR0 - add x0, x19, 3336 - ldrh w1, [x19, 3370] + add x0, x19, 3328 + ldrh w1, [x19, 3362] ldrh w0, [x0, x1, lsl 1] bl P2V_block_in_plane bl FtlGcRefreshBlock - ldrh w0, [x19, 3370] + ldrh w0, [x19, 3362] add w0, w0, 1 - strh w0, [x19, 3370] -.L316: + strh w0, [x19, 3362] +.L309: mov w0, 0 ldr x19, [sp, 16] ldp x29, x30, [sp], 32 @@ -2805,9 +2757,9 @@ rknand_print_hex: mov x19, 0 mov w20, 0 adrp x28, .LC77 -.L327: +.L320: cmp w26, w19 - bhi .L333 + bhi .L326 adrp x0, .LC79 add x0, x0, :lo12:.LC79 bl sftl_printk @@ -2818,67 +2770,87 @@ rknand_print_hex: ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 96 ret -.L333: - cbnz w20, .L328 +.L326: + cbnz w20, .L321 mov w3, w22 mov x2, x21 mov x1, x27 mov x0, x24 bl sftl_printk -.L328: +.L321: cmp w23, 4 - bne .L329 + bne .L322 ldr w1, [x21, x19, lsl 2] adrp x0, .LC76 add x0, x0, :lo12:.LC76 -.L335: +.L328: bl sftl_printk add w20, w20, 1 cmp w20, 15 - bls .L332 + bls .L325 mov w20, 0 adrp x0, .LC79 add x0, x0, :lo12:.LC79 bl sftl_printk -.L332: +.L325: add x19, x19, 1 add w22, w22, w23 - b .L327 -.L329: + b .L320 +.L322: cmp w23, 2 - bne .L331 + bne .L324 ldrh w1, [x21, x19, lsl 1] add x0, x28, :lo12:.LC77 - b .L335 -.L331: + b .L328 +.L324: ldrb w1, [x21, x19] mov x0, x25 - b .L335 + b .L328 .size rknand_print_hex, .-rknand_print_hex .align 2 - .global FlashReadPages - .type FlashReadPages, %function -FlashReadPages: + .global FlashEraseBlocks + .type FlashEraseBlocks, %function +FlashEraseBlocks: stp x29, x30, [sp, -96]! - ubfiz x1, x1, 5, 32 add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x22, .LANCHOR0 - add x2, x22, :lo12:.LANCHOR0 stp x19, x20, [sp, 16] - stp x23, x24, [sp, 48] - adrp x20, .LANCHOR1 + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] stp x25, x26, [sp, 64] + ubfiz x22, x2, 5, 32 + stp x23, x24, [sp, 48] + add x23, x22, 4 + mov x20, x0 + add x21, x0, 4 + ldrh w24, [x19, 12] + add x23, x0, x23 + mov w25, -1 + lsl w26, w24, 3 +.L330: + cmp x21, x23 + beq .L334 + ldr w0, [x21] + add x2, x29, 88 + add x1, x29, 92 + bl l2p_addr_tran.isra.0 + ldr w0, [x29, 88] + cbnz w0, .L331 + ldr w1, [x29, 92] + cmp w26, w1 + bls .L331 + mov x19, x20 + add x22, x20, x22 + adrp x20, .LANCHOR1 add x20, x20, :lo12:.LANCHOR1 - adrp x21, .LC1 - mov x19, x0 - ldrh w25, [x2, 12] - add x23, x0, x1 + adrp x21, .LC80 add x20, x20, 160 - add x21, x21, :lo12:.LC1 -.L337: - cmp x19, x23 - bne .L344 + add x21, x21, :lo12:.LC80 +.L332: + cmp x19, x22 + bne .L333 + bl dump_stack +.L334: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] @@ -2886,387 +2858,47 @@ FlashReadPages: ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 96 ret -.L344: - ldr x0, [x19, 8] - cbz x0, .L338 - ldr x0, [x19, 16] - cbnz x0, .L339 -.L338: - mov w2, 101 +.L333: + ldr w2, [x29, 92] + mov w0, -1 + str w0, [x19] mov x1, x20 mov x0, x21 - bl sftl_printk -.L339: - ldr w0, [x19, 4] - add x26, x22, :lo12:.LANCHOR0 - add x2, x29, 88 - add x1, x29, 92 - bl l2p_addr_tran.isra.0 - ldrb w0, [x29, 88] - ldr w1, [x29, 92] - ldp x2, x3, [x19, 8] - ldr x4, [x26, 3400] - blr x4 - str w0, [x19] - ldrh w0, [x26, 14] - cmp w0, 4 - bne .L341 - ldrb w0, [x29, 88] - ldr x4, [x26, 3400] - ldp x2, x3, [x19, 8] - ldr w1, [x29, 92] - add x3, x3, 8 - add x2, x2, 2048 - add w1, w25, w1 - blr x4 - cmn w0, #1 - beq .L342 - ldr x0, [x19, 16] - ldr w1, [x0, 12] - cmn w1, #1 - bne .L341 - ldr w1, [x0, 8] - cmn w1, #1 - bne .L341 - ldr w0, [x0] - cmn w0, #1 - beq .L341 -.L342: - mov w0, -1 - str w0, [x19] -.L341: add x19, x19, 32 - b .L337 - .size FlashReadPages, .-FlashReadPages - .align 2 - .global FtlLoadFactoryBbt - .type FtlLoadFactoryBbt, %function -FtlLoadFactoryBbt: - stp x29, x30, [sp, -80]! - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - add x29, sp, 0 - stp x21, x22, [sp, 32] - add x22, x0, 172 - stp x25, x26, [sp, 64] - mov w21, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x23, x24, [sp, 48] - add x23, x0, 3408 - mov x25, x23 - mov w26, 61664 - ldr x1, [x0, 3440] - ldr x24, [x0, 3448] - stp x1, x24, [x23, 8] -.L356: - ldrh w0, [x19, 58] - cmp w21, w0 - bcc .L361 - 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 -.L361: - ldrh w20, [x19, 102] - mov w0, -1 - strh w0, [x22] -.L358: - ldrh w0, [x19, 102] - sub w20, w20, #1 - and w20, w20, 65535 - sub w1, w0, #16 - cmp w20, w1 - ble .L359 - madd w0, w0, w21, w20 - mov w2, 1 - mov w1, w2 - lsl w0, w0, 10 - str w0, [x25, 4] - mov x0, x23 - bl FlashReadPages - ldr w0, [x25] - cmn w0, #1 - beq .L358 - ldrh w0, [x24] - cmp w0, w26 - bne .L358 - strh w20, [x22] -.L359: - add w21, w21, 1 - add x22, x22, 2 - b .L356 - .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt - .align 2 - .global FtlGetLastWrittenPage - .type FtlGetLastWrittenPage, %function -FtlGetLastWrittenPage: - stp x29, x30, [sp, -160]! - cmp w1, 1 - add x29, sp, 0 - stp x23, x24, [sp, 48] - mov w23, w1 - stp x19, x20, [sp, 16] - adrp x1, .LANCHOR0 - stp x21, x22, [sp, 32] - add x1, x1, :lo12:.LANCHOR0 - bne .L367 - ldrh w19, [x1, 108] -.L368: - sub w19, w19, #1 - adrp x1, ftl_temp_buf - sxth w19, w19 - add x1, x1, :lo12:ftl_temp_buf - lsl w21, w0, 10 - str x1, [x29, 72] - orr w0, w19, w21 - add x1, x29, 96 - str w0, [x29, 68] - mov w2, w23 - str x1, [x29, 80] - add x0, x29, 64 - mov w1, 1 - bl FlashReadPages - ldr w0, [x29, 96] - cmn w0, #1 - bne .L369 - mov w22, 0 - mov w24, 2 -.L370: - cmp w22, w19 - ble .L373 -.L369: - mov w0, w19 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 160 - ret -.L367: - ldrh w19, [x1, 106] - b .L368 -.L373: - add w20, w22, w19 - mov w2, w23 - mov w1, 1 - sdiv w20, w20, w24 - sxth w0, w20 - orr w0, w0, w21 - str w0, [x29, 68] - add x0, x29, 64 - bl FlashReadPages - ldr w0, [x29, 96] - cmn w0, #1 - bne .L371 - ldr w0, [x29, 100] - cmn w0, #1 - bne .L371 - ldr w0, [x29, 64] - cmn w0, #1 - beq .L371 - sub w19, w20, #1 - sxth w19, w19 - b .L370 -.L371: - add w20, w20, 1 - sxth w22, w20 - b .L370 - .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage - .align 2 - .global FlashProgPages - .type FlashProgPages, %function -FlashProgPages: - stp x29, x30, [sp, -144]! - ubfiz x1, x1, 5, 32 - add x29, sp, 0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - stp x25, x26, [sp, 64] - mov w25, w2 - add x2, x21, :lo12:.LANCHOR0 - stp x19, x20, [sp, 16] - stp x23, x24, [sp, 48] - adrp x22, .LANCHOR1 - str x27, [sp, 80] - add x22, x22, :lo12:.LANCHOR1 - adrp x23, .LC1 - mov w26, w3 - ldrh w27, [x2, 12] - mov x20, x0 - add x24, x0, x1 - mov x19, x0 - add x22, x22, 176 - add x23, x23, :lo12:.LC1 -.L379: - cmp x19, x24 - bne .L387 - cbnz w26, .L388 -.L406: - ldp x19, x20, [sp, 16] - mov w0, 0 - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldr x27, [sp, 80] - ldp x29, x30, [sp], 144 - ret -.L387: - ldr x0, [x19, 8] - cbz x0, .L380 - ldr x0, [x19, 16] - cbnz x0, .L381 -.L380: - mov w2, 131 - mov x1, x22 - mov x0, x23 bl sftl_printk -.L381: - ldr w0, [x19, 4] - add x2, x29, 104 - add x1, x29, 108 - bl l2p_addr_tran.isra.0 - add x0, x21, :lo12:.LANCHOR0 - ldr w1, [x29, 108] - ldp x2, x3, [x19, 8] - ldr x4, [x0, 3392] - ldrb w0, [x29, 104] - blr x4 - cbnz w0, .L382 - str wzr, [x19] -.L383: - add x0, x21, :lo12:.LANCHOR0 - ldrh w1, [x0, 14] - cmp w1, 4 - bne .L385 - ldr x4, [x0, 3392] - ldrb w0, [x29, 104] - ldp x2, x3, [x19, 8] - ldr w1, [x29, 108] - add x3, x3, 8 - add x2, x2, 2048 - add w1, w27, w1 - blr x4 - cbz w0, .L385 - mov w0, -1 - str w0, [x19] -.L385: - add x19, x19, 32 - b .L379 -.L382: - mov w0, -1 - str w0, [x19] - b .L383 -.L392: - str wzr, [x21] - mov w2, w25 - str wzr, [x23] - mov w1, 1 - stp x23, x21, [x29, 120] - ldr w0, [x20, 4] - str w0, [x29, 116] - add x0, x29, 112 - bl FlashReadPages - ldr w24, [x29, 112] - cmn w24, #1 - bne .L389 - ldr w1, [x20, 4] - adrp x0, .LC80 - add x0, x0, :lo12:.LC80 - bl sftl_printk - str w24, [x20] -.L389: - ldr x0, [x20, 16] - cbz x0, .L390 - ldr w2, [x0] - ldr w3, [x21] - cmp w2, w3 - beq .L390 - ldr w1, [x20, 4] + ldr x1, [x19, -24] + mov w3, 16 + mov w2, 4 adrp x0, .LC81 add x0, x0, :lo12:.LC81 - bl sftl_printk - mov w0, -1 - str w0, [x20] -.L390: - ldr x0, [x20, 8] - cbz x0, .L391 - ldr w3, [x22, #:lo12:check_buf] - ldr w2, [x0] - cmp w2, w3 - beq .L391 - ldr w1, [x20, 4] + bl rknand_print_hex + ldr x1, [x19, -16] + mov w3, 4 adrp x0, .LC82 + mov w2, w3 add x0, x0, :lo12:.LC82 - bl sftl_printk - mov w0, -1 - str w0, [x20] -.L391: - add x20, x20, 32 -.L407: - cmp x20, x19 - bne .L392 - b .L406 -.L388: - add x21, x21, :lo12:.LANCHOR0 - adrp x22, check_buf - add x21, x21, 3456 - add x23, x22, :lo12:check_buf - b .L407 - .size FlashProgPages, .-FlashProgPages - .align 2 - .global FlashEraseBlocks - .type FlashEraseBlocks, %function -FlashEraseBlocks: - stp x29, x30, [sp, -80]! - ubfiz x2, x2, 5, 32 - add x2, x2, 4 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - str x23, [sp, 48] - stp x21, x22, [sp, 32] - add x20, x0, 4 - add x22, x0, x2 - mov w21, -1 - ldrh w23, [x19, 12] -.L410: - cmp x20, x22 - bne .L416 - ldp x19, x20, [sp, 16] - mov w0, 0 - ldp x21, x22, [sp, 32] - ldr x23, [sp, 48] - ldp x29, x30, [sp], 80 - ret -.L416: - ldr w0, [x20] - add x2, x29, 72 - add x1, x29, 76 - bl l2p_addr_tran.isra.0 - ldrb w0, [x29, 72] - ldr w1, [x29, 76] - ldr x2, [x19, 3384] + bl rknand_print_hex + b .L332 +.L331: + ldr w1, [x29, 92] + ldr x2, [x19, 3376] blr x2 cmp w0, 0 - csel w0, w21, wzr, ne - str w0, [x20, -4] + csel w0, w25, wzr, ne + str w0, [x21, -4] ldrh w0, [x19, 14] cmp w0, 4 - bne .L414 - ldrb w0, [x29, 72] - ldr x2, [x19, 3384] - ldr w1, [x29, 76] - add w1, w23, w1 + bne .L338 + ldrb w0, [x29, 88] + ldr x2, [x19, 3376] + ldr w1, [x29, 92] + add w1, w24, w1 blr x2 - cbz w0, .L414 - str w21, [x20, -4] -.L414: - add x20, x20, 32 - b .L410 + cbz w0, .L338 + str w25, [x21, -4] +.L338: + add x21, x21, 32 + b .L330 .size FlashEraseBlocks, .-FlashEraseBlocks .align 2 .global FtlFreeSysBlkQueueIn @@ -3280,24 +2912,24 @@ FtlFreeSysBlkQueueIn: sub w2, w21, #1 mov w0, 65533 cmp w0, w2, uxth - bcc .L421 + bcc .L345 adrp x0, .LANCHOR0 add x20, x0, :lo12:.LANCHOR0 mov x19, x0 ldrh w2, [x20, 262] cmp w2, 1024 - beq .L421 + beq .L345 and w1, w1, 65535 - cbz w1, .L423 + cbz w1, .L347 mov w0, w21 bl P2V_block_in_plane and w22, w0, 65535 - ldr x0, [x20, 3968] + ldr x0, [x20, 3400] lsl w1, w21, 10 mov w2, 1 str w1, [x0, 4] mov w1, w2 - ldr x0, [x20, 3968] + ldr x0, [x20, 3400] bl FlashEraseBlocks ldr x2, [x20, 2384] ubfiz x0, x22, 1, 16 @@ -3307,7 +2939,7 @@ FtlFreeSysBlkQueueIn: ldr w0, [x20, 2640] add w0, w0, 1 str w0, [x20, 2640] -.L423: +.L347: add x0, x19, :lo12:.LANCHOR0 add x0, x0, 256 ldrh w1, [x0, 6] @@ -3319,293 +2951,66 @@ FtlFreeSysBlkQueueIn: and w1, w1, 1023 strh w1, [x0, 4] strh w21, [x2, 8] -.L421: +.L345: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 48 ret .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn .align 2 - .global FtlLowFormatEraseBlock - .type FtlLowFormatEraseBlock, %function -FtlLowFormatEraseBlock: - stp x29, x30, [sp, -128]! - mov w10, 0 - mov w9, 4 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - add x5, x20, :lo12:.LANCHOR0 - stp x23, x24, [sp, 48] - stp x21, x22, [sp, 32] - and w23, w1, 255 - stp x25, x26, [sp, 64] - add x8, x5, 64 - stp x27, x28, [sp, 80] - and w24, w0, 65535 - mov w21, 0 - mov w19, 0 - str w24, [x5, 3976] -.L432: - ldrh w0, [x5, 36] - cmp w0, w10 - bhi .L436 - cbz w21, .L431 - ldr x0, [x5, 3968] - mov w2, w21 - mov w1, 0 - ubfiz x21, x21, 5, 16 - mov x22, 0 - add x25, x20, :lo12:.LANCHOR0 - bl FlashEraseBlocks -.L440: - ldr x0, [x25, 3968] - add x1, x0, x22 - ldr w0, [x0, x22] - cmn w0, #1 - bne .L439 - ldr w0, [x1, 4] - add w19, w19, 1 - and w19, w19, 65535 - lsr w0, w0, 10 - bl FtlBbmMapBadBlock -.L439: - add x22, x22, 32 - cmp x22, x21 - bne .L440 - cbz w23, .L453 - add x0, x20, :lo12:.LANCHOR0 - mov w25, 1 - ldrh w26, [x0, 108] - lsr w0, w26, 2 - str w0, [x29, 124] -.L441: - add x27, x20, :lo12:.LANCHOR0 - mov w22, 0 - add x0, x27, 64 - str x0, [x29, 112] -.L449: - mov w5, 0 - mov w21, 0 -.L442: - ldrh w0, [x27, 36] - cmp w0, w5 - bhi .L445 - cbz w21, .L431 - ldr x0, [x27, 3968] - mov w1, w21 - mov w3, 1 - mov w2, w25 - mov x28, 0 - bl FlashProgPages - ubfiz x1, x21, 5, 16 -.L448: - ldr x0, [x27, 3968] - add x3, x0, x28 - ldr w0, [x0, x28] - cbz w0, .L447 - ldr w0, [x3, 4] - add w19, w19, 1 - str x1, [x29, 104] - and w19, w19, 65535 - lsr w0, w0, 10 - bl FtlBbmMapBadBlock - ldr x1, [x29, 104] -.L447: - add x28, x28, 32 - cmp x1, x28 - bne .L448 - ldr w0, [x29, 124] - add w22, w22, w0 - and w22, w22, 65535 - cmp w26, w22 - bhi .L449 - add x26, x20, :lo12:.LANCHOR0 - mov x22, 0 -.L451: - cbz w23, .L450 - ldr x0, [x26, 3968] - add x1, x0, x22 - ldr w0, [x0, x22] - cbnz w0, .L450 - ldr w0, [x1, 4] - mov w1, 1 - lsr w0, w0, 10 - bl FtlFreeSysBlkQueueIn -.L450: - add x22, x22, 32 - cmp x22, x28 - bne .L451 - cmp w24, 63 - ccmp w23, 0, 0, hi - beq .L431 - add x20, x20, :lo12:.LANCHOR0 - mov w2, w21 - mov w1, w25 - ldr x0, [x20, 3968] - bl FlashEraseBlocks -.L431: - mov w0, w19 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 128 - ret -.L436: - ldr x1, [x5, 3968] - ubfiz x0, x10, 5, 16 - str wzr, [x1, x0] - mov w1, w24 - ldrb w0, [x8, w10, sxtw] - bl V2P_block - and w6, w0, 65535 - mov w7, w6 - cbz w23, .L433 - bl IsBlkInVendorPart - cbnz w0, .L434 -.L433: - mov w0, w7 - bl FtlBbmIsBadBlock - cbnz w0, .L435 - ldr x0, [x5, 3968] - ubfiz x2, x21, 5, 16 - lsl w6, w6, 10 - add x0, x0, x2 - str w6, [x0, 4] - ldr x1, [x5, 3968] - ldr x0, [x5, 3984] - add x1, x1, x2 - ldr x2, [x5, 3992] - str x0, [x1, 8] - ldrh w0, [x5, 116] - mul w0, w0, w21 - add w21, w21, 1 - and w21, w21, 65535 - sdiv w0, w0, w9 - add x0, x2, x0, sxtw 2 - str x0, [x1, 16] -.L434: - add w10, w10, 1 - and w10, w10, 65535 - b .L432 -.L435: - add w19, w19, 1 - and w19, w19, 65535 - b .L434 -.L453: - mov w0, 6 - mov w25, 0 - mov w26, 1 - str w0, [x29, 124] - b .L441 -.L445: - ldr x1, [x27, 3968] - ubfiz x0, x5, 5, 16 - str wzr, [x1, x0] - mov w1, w24 - ldr x0, [x29, 112] - ldrb w0, [x0, w5, sxtw] - bl V2P_block - and w6, w0, 65535 - mov w7, w6 - cbz w23, .L443 - bl IsBlkInVendorPart - cbnz w0, .L444 -.L443: - mov w0, w7 - bl FtlBbmIsBadBlock - cbnz w0, .L444 - ldr x0, [x27, 3968] - ubfiz x2, x21, 5, 16 - add w6, w22, w6, lsl 10 - add x0, x0, x2 - str w6, [x0, 4] - ldr x1, [x27, 3968] - ldr x0, [x27, 4000] - add x1, x1, x2 - mov w2, 4 - str x0, [x1, 8] - ldrh w0, [x27, 116] - mul w0, w0, w21 - add w21, w21, 1 - and w21, w21, 65535 - sdiv w0, w0, w2 - ldr x2, [x27, 3984] - add x0, x2, x0, sxtw 2 - str x0, [x1, 16] -.L444: - add w5, w5, 1 - and w5, w5, 65535 - b .L442 - .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock - .align 2 .global FtlFreeSysBlkQueueOut .type FtlFreeSysBlkQueueOut, %function FtlFreeSysBlkQueueOut: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! + adrp x0, .LANCHOR0 add x29, sp, 0 + str x21, [sp, 32] + add x21, x0, :lo12:.LANCHOR0 stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - str x23, [sp, 48] - add x20, x19, 256 - adrp x23, .LC84 - add x23, x23, :lo12:.LC84 - stp x21, x22, [sp, 32] -.L475: - ldrh w1, [x20, 6] - cbz w1, .L476 - ldrh w0, [x20, 2] - sub w1, w1, #1 - strh w1, [x20, 6] - add x2, x20, x0, sxtw 1 + mov x19, x0 + ldrh w2, [x21, 262] + cbz w2, .L359 + ldrh w0, [x21, 258] + add x1, x21, 256 + sub w2, w2, #1 + strh w2, [x21, 262] + mov w2, 1 + add x3, x1, x0, sxtw 1 add w0, w0, 1 and w0, w0, 1023 - strh w0, [x20, 2] - ldrh w21, [x2, 8] - mov w0, w21 - bl P2V_block_in_plane - and w22, w0, 65535 - ldr x0, [x19, 3968] - lsl w1, w21, 10 - mov w2, 1 + strh w0, [x21, 258] + ldr x0, [x21, 3400] + ldrh w20, [x3, 8] + lsl w1, w20, 10 str w1, [x0, 4] mov w1, w2 - ldr x0, [x19, 3968] + ldr x0, [x21, 3400] bl FlashEraseBlocks - ldr x2, [x19, 2384] - ubfiz x0, x22, 1, 16 - ldrh w1, [x2, x0] - add w1, w1, 1 - strh w1, [x2, x0] - sub w1, w21, #1 - ldr w0, [x19, 2640] + ldr w0, [x21, 2640] add w0, w0, 1 - str w0, [x19, 2640] - mov w0, 65533 - cmp w0, w1, uxth - bcc .L477 - mov w0, w21 - ldr x23, [sp, 48] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 - ret -.L476: + str w0, [x21, 2640] +.L356: + sub w0, w20, #1 + mov w1, 65533 + cmp w1, w0, uxth + bcs .L357 + add x0, x19, :lo12:.LANCHOR0 + mov w1, w20 + ldrh w2, [x0, 262] adrp x0, .LC83 - mov w1, 0 add x0, x0, :lo12:.LC83 bl sftl_printk -.L479: - b .L479 -.L477: - ldrh w2, [x20, 6] - mov w1, w21 - mov x0, x23 - bl sftl_printk - b .L475 +.L358: + b .L358 +.L359: + mov w20, 65535 + b .L356 +.L357: + mov w0, w20 + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 + ret .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut .align 2 .global ftl_map_blk_alloc_new_blk @@ -3619,27 +3024,27 @@ ftl_map_blk_alloc_new_blk: mov w20, 0 ldrh w1, [x0, 10] ldr x0, [x0, 16] -.L483: +.L362: cmp w20, w1 - beq .L487 + beq .L366 mov x21, x0 ldrh w2, [x0], 2 - cbnz w2, .L484 + cbnz w2, .L363 bl FtlFreeSysBlkQueueOut and w1, w0, 65535 strh w0, [x21] sub w2, w1, #1 mov w0, 65533 cmp w0, w2, uxth - bcs .L485 + bcs .L364 adrp x0, .LANCHOR0+262 ldrh w2, [x0, #:lo12:.LANCHOR0+262] - adrp x0, .LC85 - add x0, x0, :lo12:.LC85 + adrp x0, .LC84 + add x0, x0, :lo12:.LC84 bl sftl_printk -.L486: - b .L486 -.L485: +.L365: + b .L365 +.L364: ldr w0, [x19, 48] strh wzr, [x19, 2] add w0, w0, 1 @@ -3648,27 +3053,27 @@ ftl_map_blk_alloc_new_blk: strh w20, [x19] add w0, w0, 1 strh w0, [x19, 8] -.L487: +.L366: ldrh w0, [x19, 10] cmp w0, w20 - bhi .L489 + bhi .L368 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 603 - add x1, x1, 192 + mov w2, 578 + add x1, x1, 184 add x0, x0, :lo12:.LC1 bl sftl_printk -.L489: +.L368: mov w0, 0 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret -.L484: +.L363: add w20, w20, 1 and w20, w20, 65535 - b .L483 + b .L362 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk .align 2 .global ftl_memset @@ -3685,7 +3090,7 @@ ftl_memset: .global FtlMemInit .type FtlMemInit, %function FtlMemInit: - stp x29, x30, [sp, -64]! + stp x29, x30, [sp, -48]! mov w0, 65535 add x29, sp, 0 stp x19, x20, [sp, 16] @@ -3694,33 +3099,31 @@ FtlMemInit: stp x21, x22, [sp, 32] add x1, x19, 2560 add x2, x19, 2560 + add x3, x19, 3328 strh wzr, [x19, 3240] + strh wzr, [x19, 3324] stp wzr, wzr, [x1, 28] stp wzr, wzr, [x1, 36] str wzr, [x19, 2604] str wzr, [x19, 2608] stp wzr, wzr, [x2, 60] stp wzr, wzr, [x2, 68] - str w0, [x19, 4012] - mov w0, -1 - strh w0, [x19, 3320] - strh w0, [x19, 3322] - mov w0, 32 - str x23, [sp, 48] - strh w0, [x19, 3232] - mov w0, 128 str wzr, [x19, 2640] - strh w0, [x19, 3234] str wzr, [x19, 2644] str wzr, [x19, 2648] str wzr, [x19, 3236] str wzr, [x19, 3244] - str wzr, [x19, 3976] - str wzr, [x19, 4008] - str wzr, [x19, 4016] - strh wzr, [x19, 3328] + stp wzr, w0, [x3, 80] + mov w0, -1 + stp wzr, wzr, [x3, 88] + strh w0, [x19, 3320] + strh w0, [x19, 3322] + mov w0, 32 + strh w0, [x19, 3232] + mov w0, 128 + strh w0, [x19, 3234] + strh wzr, [x19, 3362] ldrh w0, [x19, 110] - strh wzr, [x19, 3370] lsl w0, w0, 1 bl ftl_malloc ldrh w1, [x19, 110] @@ -3734,16 +3137,16 @@ FtlMemInit: lsl w21, w21, 7 mov w0, w21 bl ftl_malloc - str x0, [x19, 4024] + str x0, [x19, 3424] mov w0, w22 bl ftl_malloc - str x0, [x19, 4032] + str x0, [x19, 3432] mov w0, w21 bl ftl_malloc - str x0, [x19, 4040] + str x0, [x19, 3440] mov w0, w22 bl ftl_malloc - str x0, [x19, 3968] + str x0, [x19, 3400] mov w0, w22 bl ftl_malloc str x0, [x19, 3280] @@ -3754,37 +3157,47 @@ FtlMemInit: str w0, [x19, 3288] mov w0, w21 bl ftl_malloc - str x0, [x19, 3440] + str x0, [x19, 3448] mov w0, w21 bl ftl_malloc - str x0, [x19, 4048] + str x0, [x19, 3456] mov w0, w21 bl ftl_malloc - str x0, [x19, 4056] + str x0, [x19, 3464] ldr w0, [x19, 3288] mul w0, w21, w0 bl ftl_malloc str x0, [x19, 3264] mov w0, w21 bl ftl_malloc - str x0, [x19, 4000] + str x0, [x19, 3472] mov w0, w21 bl ftl_malloc - str x0, [x19, 3984] + str x0, [x19, 3480] ldr w1, [x19, 3288] mov w0, 24 mul w0, w1, w0 bl ftl_malloc - ldrh w21, [x19, 116] str x0, [x19, 3256] + mov w0, w21 + bl ftl_malloc + str x0, [x19, 3488] + mov w0, w21 + bl ftl_malloc + str x0, [x19, 3496] + ldrh w0, [x19, 62] + lsl w0, w0, 2 + bl ftl_malloc + ldrh w21, [x19, 116] + str x0, [x19, 3504] ldrh w0, [x19, 36] mul w21, w21, w0 mov w0, w21 bl ftl_malloc - str x0, [x19, 3448] + str x0, [x19, 3512] lsl w0, w21, 2 bl ftl_malloc - str x0, [x19, 3992] + str x0, [x19, 3520] ldrh w1, [x19, 116] ldr w0, [x19, 3288] mul w0, w1, w0 @@ -3792,37 +3205,35 @@ FtlMemInit: str x0, [x19, 3272] ldrh w0, [x19, 46] ubfiz w0, w0, 1, 15 - strh w0, [x19, 4064] + strh w0, [x19, 3528] and w0, w0, 65534 bl ftl_malloc - str x0, [x19, 4072] - ldrh w0, [x19, 4064] + str x0, [x19, 3536] + ldrh w0, [x19, 3528] add x0, x0, 547 lsr x0, x0, 9 - strh w0, [x19, 4064] + strh w0, [x19, 3528] lsl w0, w0, 9 bl ftl_malloc ldrh w21, [x19, 46] - str x0, [x19, 4080] + str x0, [x19, 3544] add x0, x0, 32 str x0, [x19, 2384] lsl w21, w21, 1 mov w0, w21 bl ftl_malloc - str x0, [x19, 4088] + str x0, [x19, 3552] mov w0, w21 bl ftl_malloc - ldr w23, [x19, 132] - adrp x21, .LANCHOR3 - add x22, x21, :lo12:.LANCHOR3 + ldr w21, [x19, 132] str x0, [x19, 2376] - lsl w23, w23, 1 - mov w0, w23 + lsl w21, w21, 1 + mov w0, w21 bl ftl_malloc - str x0, [x22, -256] - mov w0, w23 + str x0, [x19, 3560] + mov w0, w21 bl ftl_malloc - str x0, [x22, -248] + str x0, [x19, 3568] ldrh w0, [x19, 46] lsr w0, w0, 3 add w0, w0, 4 @@ -3835,27 +3246,27 @@ FtlMemInit: ldrh w0, [x19, 124] lsl w0, w0, 1 bl ftl_malloc - str x0, [x22, -240] + str x0, [x19, 3576] ldrh w0, [x19, 124] lsl w0, w0, 2 bl ftl_malloc - str x0, [x22, -232] + str x0, [x19, 3584] ldrh w0, [x19, 126] lsl w0, w0, 2 bl ftl_malloc ldrh w2, [x19, 126] mov w1, 0 - str x0, [x22, -224] + str x0, [x19, 3592] lsl w2, w2, 2 bl ftl_memset ldrh w0, [x19, 140] lsl w0, w0, 2 bl ftl_malloc - str x0, [x22, -216] + str x0, [x19, 3600] ldr w0, [x19, 132] lsl w0, w0, 2 bl ftl_malloc - str x0, [x22, -208] + str x0, [x19, 3608] ldrh w0, [x19, 142] lsl w0, w0, 4 bl ftl_malloc @@ -3864,7 +3275,7 @@ FtlMemInit: ldrh w0, [x19, 114] mul w0, w1, w0 bl ftl_malloc - str x0, [x22, -200] + str x0, [x19, 3616] ldrh w1, [x19, 46] mov w0, 6 mul w0, w1, w0 @@ -3874,129 +3285,127 @@ FtlMemInit: ldrh w1, [x19, 58] add w0, w0, 31 asr w0, w0, 5 - strh w0, [x22, -192] + strh w0, [x19, 3624] mul w0, w1, w0 lsl w0, w0, 2 bl ftl_malloc - ldrh w4, [x22, -192] + ldrh w4, [x19, 3624] add x5, x19, 200 ldrh w6, [x19, 58] mov x1, 1 str x0, [x19, 192] mov w2, w4 mov x0, x20 -.L494: +.L373: cmp w1, w6 - bcc .L495 + bcc .L374 mov w2, 8 add x4, x0, :lo12:.LANCHOR0 sub w2, w2, w1 add x4, x4, 160 add x2, x2, 1 mov x3, 0 -.L496: +.L375: add x3, x3, 1 cmp x3, x2 - bne .L497 - add x1, x21, :lo12:.LANCHOR3 - ldr x2, [x1, -256] - cbnz x2, .L498 -.L500: + bne .L376 + add x1, x0, :lo12:.LANCHOR0 + ldr x2, [x1, 3560] + cbnz x2, .L377 +.L379: adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 - add x1, x1, 224 - adrp x0, .LC86 - add x0, x0, :lo12:.LC86 + add x1, x1, 216 + adrp x0, .LC85 + add x0, x0, :lo12:.LC85 bl sftl_printk mov w0, -1 -.L493: +.L372: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldr x23, [sp, 48] - ldp x29, x30, [sp], 64 + ldp x29, x30, [sp], 48 ret -.L495: +.L374: ldr x3, [x19, 192] add w1, w1, 1 add x3, x3, x2, uxtw 2 add w2, w2, w4 str x3, [x5], 8 - b .L494 -.L497: + b .L373 +.L376: add x5, x1, x3 add x5, x4, x5, lsl 3 str xzr, [x5, 24] - b .L496 -.L498: - ldr x2, [x1, -248] - cbz x2, .L500 - ldr x2, [x1, -216] - cbz x2, .L500 - ldr x2, [x1, -208] - cbz x2, .L500 - add x2, x0, :lo12:.LANCHOR0 - ldr x3, [x2, 2568] - cbz x3, .L500 - ldr x1, [x1, -200] - cbz x1, .L500 - ldr x1, [x2, 2360] - cbz x1, .L500 - ldr x1, [x2, 192] - cbz x1, .L500 - ldr x1, [x2, 2376] - cbz x1, .L500 - mov x1, x2 - ldr x2, [x2, 3296] - cbz x2, .L500 + b .L375 +.L377: + ldr x2, [x1, 3568] + cbz x2, .L379 + ldr x2, [x1, 3600] + cbz x2, .L379 + ldr x2, [x1, 3608] + cbz x2, .L379 + ldr x2, [x1, 2568] + cbz x2, .L379 + ldr x2, [x1, 3616] + cbz x2, .L379 + ldr x2, [x1, 2360] + cbz x2, .L379 + ldr x2, [x1, 192] + cbz x2, .L379 + ldr x1, [x1, 2376] + cbz x1, .L379 + add x1, x0, :lo12:.LANCHOR0 + ldr x2, [x1, 3296] + cbz x2, .L379 ldr x2, [x1, 3312] - cbz x2, .L500 - ldr x2, [x1, 4024] - cbz x2, .L500 - ldr x2, [x1, 4040] - cbz x2, .L500 - ldr x2, [x1, 3968] - cbz x2, .L500 - ldr x2, [x1, 3280] - cbz x2, .L500 - ldr x2, [x1, 4032] - cbz x2, .L500 + cbz x2, .L379 + ldr x2, [x1, 3424] + cbz x2, .L379 ldr x2, [x1, 3440] - cbz x2, .L500 - ldr x2, [x1, 4048] - cbz x2, .L500 - ldr x1, [x1, 4056] - cbz x1, .L500 + cbz x2, .L379 + ldr x2, [x1, 3400] + cbz x2, .L379 + ldr x2, [x1, 3280] + cbz x2, .L379 + ldr x2, [x1, 3432] + cbz x2, .L379 + ldr x2, [x1, 3448] + cbz x2, .L379 + ldr x2, [x1, 3456] + cbz x2, .L379 + ldr x1, [x1, 3464] + cbz x1, .L379 add x0, x0, :lo12:.LANCHOR0 ldr x1, [x0, 3264] - cbz x1, .L500 - ldr x1, [x0, 4000] - cbz x1, .L500 - ldr x1, [x0, 3984] - cbz x1, .L500 + cbz x1, .L379 + ldr x1, [x0, 3472] + cbz x1, .L379 + ldr x1, [x0, 3480] + cbz x1, .L379 ldr x1, [x0, 3256] - cbz x1, .L500 - ldr x1, [x0, 3448] - cbz x1, .L500 - ldr x1, [x0, 3992] - cbz x1, .L500 + cbz x1, .L379 + ldr x1, [x0, 3512] + cbz x1, .L379 + ldr x1, [x0, 3520] + cbz x1, .L379 ldr x1, [x0, 3272] - cbz x1, .L500 + cbz x1, .L379 ldr x1, [x0, 2384] - cbz x1, .L500 - ldr x1, [x0, 4072] - cbz x1, .L500 + cbz x1, .L379 + ldr x1, [x0, 3536] + cbz x1, .L379 ldr x0, [x0, 152] - cbz x0, .L500 - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldr x1, [x0, -240] - cbz x1, .L500 - ldr x1, [x0, -232] - cbz x1, .L500 - ldr x0, [x0, -224] - cbz x0, .L500 + cbz x0, .L379 + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldr x1, [x0, 3576] + cbz x1, .L379 + ldr x1, [x0, 3584] + cbz x1, .L379 + ldr x0, [x0, 3592] + cbz x0, .L379 mov w0, 0 - b .L493 + b .L372 .size FtlMemInit, .-FtlMemInit .align 2 .global FtlBbt2Bitmap @@ -4005,51 +3414,52 @@ FtlBbt2Bitmap: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x21, x22, [sp, 32] - mov x22, x0 - adrp x0, .LANCHOR3-192 + adrp x21, .LANCHOR0 + stp x23, x24, [sp, 48] + mov x23, x0 + add x0, x21, :lo12:.LANCHOR0 stp x19, x20, [sp, 16] adrp x20, .LANCHOR1 add x20, x20, :lo12:.LANCHOR1 - ldrh w2, [x0, #:lo12:.LANCHOR3-192] - add x20, x20, 240 - str x23, [sp, 48] - adrp x23, .LANCHOR0 - add x23, x23, :lo12:.LANCHOR0 + adrp x24, .LC1 + add x20, x20, 232 + ldrh w2, [x0, 3624] + add x24, x24, :lo12:.LC1 mov x19, 0 - mov x21, x1 - lsl w2, w2, 2 + mov x22, x1 + mov x0, x22 mov w1, 0 - mov x0, x21 + lsl w2, w2, 2 bl ftl_memset -.L598: - ldrh w0, [x22, x19] +.L477: + ldrh w0, [x23, x19] mov w1, 65535 cmp w0, w1 - beq .L595 - ldrh w1, [x23, 102] + beq .L474 + add x1, x21, :lo12:.LANCHOR0 + ldrh w1, [x1, 102] cmp w1, w0 - bhi .L597 - adrp x0, .LC1 + bhi .L476 mov w2, 74 mov x1, x20 - add x0, x0, :lo12:.LC1 + mov x0, x24 bl sftl_printk -.L597: - ldrh w2, [x22, x19] +.L476: + ldrh w2, [x23, x19] mov w1, 1 add x19, x19, 2 cmp x19, 1024 ubfx x0, x2, 5, 11 lsl w2, w1, w2 lsl x0, x0, 2 - ldr w1, [x21, x0] + ldr w1, [x22, x0] orr w1, w1, w2 - str w1, [x21, x0] - bne .L598 -.L595: + str w1, [x22, x0] + bne .L477 +.L474: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldr x23, [sp, 48] + ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret .size FtlBbt2Bitmap, .-FtlBbt2Bitmap @@ -4102,1903 +3512,192 @@ ftl_free_no_use_map_blk: mov x19, x0 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] + str x25, [sp, 64] ldrh w2, [x0, 10] ldp x21, x20, [x0, 32] - ldr x23, [x0, 16] + ldr x22, [x0, 16] lsl w2, w2, 1 mov x0, x21 bl ftl_memset mov w0, 0 -.L607: +.L486: ldrh w1, [x19, 6] cmp w1, w0 - bhi .L611 - ldrh w26, [x21] - adrp x24, .LANCHOR0 - add x24, x24, :lo12:.LANCHOR0 - mov w25, 0 + bhi .L490 + adrp x0, .LANCHOR0+108 + mov w23, 0 mov w20, 0 -.L612: - ldrh w0, [x19, 10] - cmp w0, w20 - bhi .L616 - mov w0, w25 - 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 -.L611: - ubfiz x1, x0, 2, 16 - ldr w2, [x20, x1] - mov w1, 0 - ubfx x2, x2, 10, 16 -.L608: - ldrh w3, [x19, 10] - cmp w3, w1 - bhi .L610 - add w0, w0, 1 - and w0, w0, 65535 - b .L607 -.L610: - ubfiz x3, x1, 1, 16 - ldrh w4, [x23, x3] - cmp w4, w2 - bne .L609 - ldrh w4, [x21, x3] - add w4, w4, 1 - strh w4, [x21, x3] -.L609: - add w1, w1, 1 - and w1, w1, 65535 - b .L608 -.L616: + ldrh w1, [x0, #:lo12:.LANCHOR0+108] ldrh w0, [x19] - uxtw x22, w20 - cmp w0, w20 - bne .L613 - ldrh w0, [x24, 108] - ldrh w1, [x19, 2] - cmp w1, w0 - bcs .L613 - strh w0, [x21, x22, lsl 1] -.L613: - lsl x22, x22, 1 - ldrh w0, [x21, x22] - cmp w26, w0 - bls .L614 - mov w25, w20 - mov w26, w0 -.L614: - cbnz w0, .L615 - ldrh w0, [x23, x22] - cbz w0, .L615 - mov w1, 1 - bl FtlFreeSysBlkQueueIn - strh wzr, [x23, x22] - ldrh w0, [x19, 8] - sub w0, w0, #1 - strh w0, [x19, 8] -.L615: - add w20, w20, 1 - and w20, w20, 65535 - b .L612 - .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk - .align 2 - .global Ftl_write_map_blk_to_last_page - .type Ftl_write_map_blk_to_last_page, %function -Ftl_write_map_blk_to_last_page: - stp x29, x30, [sp, -64]! - mov w1, 65535 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x21, x22, [sp, 32] - str x23, [sp, 48] - ldr x20, [x0, 16] - ldrh w0, [x0] - cmp w0, w1 - bne .L622 - ldrh w0, [x19, 8] - cbz w0, .L623 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 677 - add x1, x1, 256 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L623: - ldrh w0, [x19, 8] - add w0, w0, 1 - strh w0, [x19, 8] - bl FtlFreeSysBlkQueueOut - strh w0, [x20] - strh wzr, [x19, 2] - ldr w0, [x19, 48] - strh wzr, [x19] - add w0, w0, 1 - str w0, [x19, 48] -.L624: - mov w0, 0 - ldr x23, [sp, 48] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 - ret -.L622: - ubfiz x0, x0, 1, 16 - adrp x21, .LANCHOR0 - ldr w1, [x19, 48] - ldr x23, [x19, 40] - ldrh w22, [x20, x0] - add x20, x21, :lo12:.LANCHOR0 - ldrh w0, [x19, 2] - orr w0, w0, w22, lsl 10 - str w0, [x20, 3412] - ldr x0, [x20, 3440] - str x0, [x20, 3416] - ldr x0, [x20, 3448] - str x0, [x20, 3424] - str w1, [x0, 4] - mov w1, -1291 - strh w1, [x0, 8] - ldrh w1, [x19, 4] - strh w1, [x0] - strh w22, [x0, 2] - mov w1, 255 - ldrh w2, [x20, 108] - ldr x0, [x20, 3440] - lsl w2, w2, 3 - bl ftl_memset - mov w0, 0 - mov w1, 0 -.L625: - ldrh w2, [x19, 6] - cmp w2, w1 - bhi .L627 - add x0, x21, :lo12:.LANCHOR0 - mov w2, 1 - mov w3, 0 - mov w1, w2 - add x0, x0, 3408 - bl FlashProgPages - ldrh w0, [x19, 2] - add w0, w0, 1 - strh w0, [x19, 2] - mov x0, x19 - bl ftl_map_blk_gc - b .L624 -.L627: - ubfiz x2, x1, 2, 16 - ldr w3, [x23, x2] - cmp w22, w3, lsr 10 - bne .L626 - add w0, w0, 1 - ldr x4, [x20, 3440] - and w0, w0, 65535 - ubfiz x3, x0, 3, 16 - str w1, [x4, x3] - ldr w4, [x23, x2] - ldr x2, [x20, 3440] - add x2, x2, x3 - str w4, [x2, 4] -.L626: - add w1, w1, 1 - and w1, w1, 65535 - b .L625 - .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page - .align 2 - .global FtlMapWritePage - .type FtlMapWritePage, %function -FtlMapWritePage: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x23, x24, [sp, 48] - adrp x24, .LANCHOR0 - stp x25, x26, [sp, 64] - add x25, x24, :lo12:.LANCHOR0 - stp x19, x20, [sp, 16] - adrp x23, .LANCHOR1 - stp x21, x22, [sp, 32] - mov x19, x0 - stp x27, x28, [sp, 80] - mov w26, w1 - mov x27, x2 - mov x21, x24 - add x23, x23, :lo12:.LANCHOR1 - add x20, x25, 3408 - mov w22, 0 -.L633: - add x0, x24, :lo12:.LANCHOR0 - ldr w1, [x0, 2604] - add w1, w1, 1 - str w1, [x0, 2604] - ldrh w0, [x0, 108] - ldrh w1, [x19, 2] - sub w0, w0, #1 - cmp w1, w0 - bge .L634 - ldrh w1, [x19] - mov w0, 65535 - cmp w1, w0 - bne .L635 -.L634: - mov x0, x19 - bl Ftl_write_map_blk_to_last_page -.L635: - ldrh w1, [x19] - ldr x0, [x19, 16] - ldrh w0, [x0, x1, lsl 1] - cbnz w0, .L636 - adrp x0, .LC1 - mov w2, 735 - add x1, x23, 288 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L636: - ldrh w1, [x19] + strh w1, [x21, x0, lsl 1] + ldrh w24, [x21] +.L491: ldrh w0, [x19, 10] - cmp w1, w0 - bcc .L637 - adrp x0, .LC1 - mov w2, 736 - add x1, x23, 288 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L637: - ldrh w1, [x19] - mov w2, 16 - ldr x0, [x19, 16] - ldrh w28, [x0, x1, lsl 1] - mov w1, 0 - ldrh w0, [x19, 2] - str x27, [x20, 8] - orr w0, w0, w28, lsl 10 - str w0, [x20, 4] - ldr x0, [x25, 3448] - str x0, [x20, 16] - bl ftl_memset - ldr x0, [x20, 16] - mov w3, 1 - ldr w1, [x19, 48] - mov w2, w3 - strh w26, [x0, 8] - str w1, [x0, 4] - ldrh w1, [x19, 4] - strh w1, [x0] - mov w1, w3 - strh w28, [x0, 2] - mov x0, x20 - bl FlashProgPages - ldrh w0, [x19, 2] - add w0, w0, 1 - and w0, w0, 65535 - strh w0, [x19, 2] - ldr w1, [x20] - cmn w1, #1 - bne .L638 - ldr w1, [x20, 4] - adrp x0, .LC87 - add x0, x0, :lo12:.LC87 - add w22, w22, 1 - and w22, w22, 65535 - bl sftl_printk - ldrh w0, [x19, 2] - cmp w0, 2 - bhi .L639 - ldrh w0, [x25, 108] - sub w0, w0, #1 - strh w0, [x19, 2] -.L639: - cmp w22, 3 - bls .L640 - add x21, x21, :lo12:.LANCHOR0 - adrp x0, .LC88 - mov w2, w22 - add x0, x0, :lo12:.LC88 - ldr w1, [x21, 3412] - bl sftl_printk -.L641: - b .L641 -.L640: - ldr w0, [x19, 52] - cbz w0, .L633 -.L658: - b .L658 -.L638: - cbz w1, .L644 - strh w28, [x19, 60] - cmp w0, 1 - beq .L633 - cmp w1, 256 -.L661: - beq .L633 - ldr x0, [x19, 40] - add x21, x21, :lo12:.LANCHOR0 - ldr w1, [x21, 3412] - str w1, [x0, w26, uxtw 2] - 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 -.L644: - cmp w0, 1 - b .L661 - .size FtlMapWritePage, .-FtlMapWritePage - .align 2 - .global load_l2p_region - .type load_l2p_region, %function -load_l2p_region: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - stp x21, x22, [sp, 32] - and w21, w0, 65535 - add x0, x19, :lo12:.LANCHOR0 - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - and x20, x1, 65535 - ldrh w0, [x0, 140] - cmp w0, w21 - bcs .L663 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 510 - add x1, x1, 304 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L663: - adrp x22, .LANCHOR3 - add x26, x22, :lo12:.LANCHOR3 - ubfiz x0, x21, 2, 16 - ldr x1, [x26, -216] - ldr w23, [x1, x0] - cbnz w23, .L664 - add x19, x19, :lo12:.LANCHOR0 - lsl x20, x20, 4 - mov w1, 255 - ldr x0, [x19, 2568] - ldrh w2, [x19, 114] - add x0, x0, x20 - ldr x0, [x0, 8] - bl ftl_memset - ldr x0, [x19, 2568] - strh w21, [x0, x20] - ldr x0, [x19, 2568] - add x20, x0, x20 - str wzr, [x20, 4] -.L665: - 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 -.L664: - add x24, x19, :lo12:.LANCHOR0 - lsl x20, x20, 4 - add x25, x24, 3408 - mov w2, 1 - mov w1, w2 - ldr x0, [x24, 2568] - str w23, [x24, 3412] - add x0, x0, x20 - ldr x0, [x0, 8] - str x0, [x24, 3416] - ldr x0, [x24, 3448] - str x0, [x24, 3424] - mov x0, x25 - bl FlashReadPages - ldr x25, [x24, 3424] - ldr w0, [x24, 3408] - cmp w0, 256 - bne .L666 - mov w2, w23 - mov w1, w21 - adrp x0, .LC89 - add x0, x0, :lo12:.LC89 - bl sftl_printk - lsr w0, w23, 10 - strh w0, [x26, -124] - ldr x0, [x24, 2568] - mov w1, w21 - add x0, x0, x20 - ldr x2, [x0, 8] - sub x0, x26, #184 - bl FtlMapWritePage -.L666: - ldrh w0, [x25, 8] - cmp w0, w21 - beq .L667 - mov w2, w23 - add x23, x19, :lo12:.LANCHOR0 - mov w1, w21 - adrp x0, .LC90 - add x0, x0, :lo12:.LC90 - bl sftl_printk - ldr x1, [x23, 3424] - add x22, x22, :lo12:.LANCHOR3 - mov w3, 4 - adrp x0, .LC91 - mov w2, w3 - add x0, x0, :lo12:.LC91 - bl rknand_print_hex - ldrh w3, [x23, 140] - adrp x0, .LC92 - ldr x1, [x22, -216] - mov w2, 4 - add x0, x0, :lo12:.LC92 - bl rknand_print_hex -.L667: - ldrh w0, [x25, 8] - cmp w0, w21 - beq .L668 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 535 - add x1, x1, 304 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L668: - add x19, x19, :lo12:.LANCHOR0 - ldr x0, [x19, 2568] - add x0, x0, x20 - str wzr, [x0, 4] - ldr x0, [x19, 2568] - strh w21, [x0, x20] - b .L665 - .size load_l2p_region, .-load_l2p_region - .align 2 - .global ftl_map_blk_gc - .type ftl_map_blk_gc, %function -ftl_map_blk_gc: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - ldr x20, [x0, 16] - ldr x22, [x0, 40] - bl ftl_free_no_use_map_blk - ldrh w4, [x19, 10] - ldrh w2, [x19, 8] - sub w1, w4, #4 - cmp w2, w1 - ldrh w1, [x19, 60] - bge .L671 - mov w2, 65535 - cmp w1, w2 - beq .L673 - add x2, x21, :lo12:.LANCHOR0 - ldrh w3, [x19, 2] - ldrh w2, [x2, 108] - cmp w3, w2 - bcc .L674 -.L671: - mov w2, 65535 - and w0, w0, 65535 - cmp w1, w2 - beq .L675 - add x2, x21, :lo12:.LANCHOR0 - ldrh w3, [x19, 2] - ldrh w2, [x2, 108] - cmp w2, w3 - bls .L676 -.L675: - ubfiz x0, x0, 1, 32 - ldrh w26, [x20, x0] - cbz w26, .L673 - ldr w1, [x19, 52] - cbnz w1, .L673 - mov w1, 1 - str w1, [x19, 52] - strh wzr, [x20, x0] - ldrh w0, [x19, 8] - ldrh w1, [x19, 2] - sub w0, w0, #1 - strh w0, [x19, 8] - add x0, x21, :lo12:.LANCHOR0 - ldrh w0, [x0, 108] - cmp w1, w0 - bcc .L681 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk -.L681: - add x27, x21, :lo12:.LANCHOR0 - adrp x24, .LANCHOR1 - add x24, x24, :lo12:.LANCHOR1 - add x23, x27, 3408 - add x24, x24, 320 - mov w20, 0 -.L682: - ldrh w0, [x19, 6] cmp w0, w20 - bhi .L689 - mov w1, 1 - mov w0, w26 - bl FtlFreeSysBlkQueueIn - str wzr, [x19, 52] -.L673: - add x21, x21, :lo12:.LANCHOR0 - ldrh w1, [x19, 2] - ldrh w0, [x21, 108] - cmp w1, w0 - bcc .L674 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk -.L674: - 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 -.L679: - ldrh w6, [x20, x2, lsl 1] - add x5, x2, 1 - cmp w6, w1 - beq .L677 - mov x2, x5 -.L678: - and w23, w2, 65535 - cmp w23, w4 - bcc .L679 - mov w23, w0 -.L677: - and x2, x2, 65535 - adrp x0, .LC93 - add x0, x0, :lo12:.LC93 - ldrh w2, [x20, x2, lsl 1] - bl sftl_printk - mov w0, -1 - strh w0, [x19, 60] + bhi .L495 mov w0, w23 - b .L675 -.L676: - mov x2, 0 - b .L678 -.L689: - ubfiz x0, x20, 2, 16 - add x28, x22, x0 - ldr w1, [x22, x0] - cmp w26, w1, lsr 10 - bne .L683 - ldr x25, [x27, 3448] - mov w2, 1 - ldr x1, [x27, 4048] - stp x1, x25, [x23, 8] - mov w1, w2 - ldr w0, [x22, x0] - str w0, [x23, 4] - mov x0, x23 - bl FlashReadPages - ldrh w0, [x25, 8] - cmp w0, w20 - beq .L684 - adrp x0, .LC1 - mov w2, 647 - mov x1, x24 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L684: - ldr w0, [x23] - cmn w0, #1 - bne .L685 -.L687: - str wzr, [x28] -.L686: - b .L686 -.L685: - ldrh w0, [x25, 8] - cmp w0, w20 - bne .L687 - ldrh w1, [x25] - ldrh w0, [x19, 4] - cmp w1, w0 - bne .L687 - ldr x2, [x23, 8] - mov w1, w20 - mov x0, x19 - bl FtlMapWritePage -.L683: - add w20, w20, 1 - and w20, w20, 65535 - b .L682 - .size ftl_map_blk_gc, .-ftl_map_blk_gc - .align 2 - .global flush_l2p_region - .type flush_l2p_region, %function -flush_l2p_region: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - ubfiz x20, x0, 4, 16 - ldr x0, [x19, 2568] - add x1, x0, x20 - ldr x2, [x1, 8] - ldrh w1, [x0, x20] - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - sub x0, x0, #184 - bl FtlMapWritePage - ldr x0, [x19, 2568] - add x0, x0, x20 - ldr w1, [x0, 4] - and w1, w1, 2147483647 - str w1, [x0, 4] - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 - ret - .size flush_l2p_region, .-flush_l2p_region - .align 2 - .global log2phys - .type log2phys, %function -log2phys: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x23, x24, [sp, 48] - mov w23, w2 - adrp x24, .LANCHOR0 - add x2, x24, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - mov x22, x1 - stp x19, x20, [sp, 16] - str x25, [sp, 64] - ldrh w19, [x2, 112] - add w1, w19, 7 - mov x19, 1 - lsr w21, w0, w1 - and w21, w21, 65535 - lsl x19, x19, x1 - ldr w1, [x2, 2584] - sub w19, w19, #1 - and w19, w19, w0 - cmp w0, w1 - and x19, x19, 65535 - bcc .L698 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 847 - add x1, x1, 336 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L698: - add x0, x24, :lo12:.LANCHOR0 - ldrh w1, [x0, 142] - ldr x2, [x0, 2568] - mov x0, 0 -.L699: - and x20, x0, 65535 - cmp w20, w1 - bcc .L704 - bl select_l2p_ram_region - and x20, x0, 65535 - add x2, x24, :lo12:.LANCHOR0 - ubfiz x1, x20, 4, 16 - mov w25, w0 - ldr x2, [x2, 2568] - add x3, x2, x1 - ldrh w2, [x2, x1] - mov w1, 65535 - cmp w2, w1 - beq .L705 - ldr w1, [x3, 4] - tbz w1, #31, .L705 - bl flush_l2p_region -.L705: - mov w1, w25 - mov w0, w21 - bl load_l2p_region - b .L700 -.L704: - add x0, x0, 1 - add x3, x2, x0, lsl 4 - ldrh w3, [x3, -16] - cmp w3, w21 - bne .L699 -.L700: - cbnz w23, .L701 - add x0, x24, :lo12:.LANCHOR0 - ldr x0, [x0, 2568] - add x0, x0, x20, lsl 4 - ldr x0, [x0, 8] - ldr w0, [x0, x19, lsl 2] - str w0, [x22] -.L702: - add x24, x24, :lo12:.LANCHOR0 - ldr x0, [x24, 2568] - add x20, x0, x20, lsl 4 - ldr w0, [x20, 4] - cmn w0, #1 - beq .L707 - add w0, w0, 1 - str w0, [x20, 4] -.L707: - mov w0, 0 ldr x25, [sp, 64] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 80 ret -.L701: - add x2, x24, :lo12:.LANCHOR0 - lsl x0, x20, 4 - mov x1, x0 - ldr w4, [x22] - ldr x3, [x2, 2568] - add x0, x3, x0 - ldr x0, [x0, 8] - str w4, [x0, x19, lsl 2] - strh w21, [x2, 2576] - ldr x0, [x2, 2568] - add x0, x0, x1 - ldr w1, [x0, 4] - orr w1, w1, -2147483648 - str w1, [x0, 4] - b .L702 - .size log2phys, .-log2phys - .align 2 - .global FtlReUsePrevPpa - .type FtlReUsePrevPpa, %function -FtlReUsePrevPpa: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov w21, w0 - stp x19, x20, [sp, 16] - lsr w0, w1, 10 - str w1, [x29, 76] - adrp x22, .LANCHOR0 - str x23, [sp, 48] - bl P2V_block_in_plane - add x2, x22, :lo12:.LANCHOR0 - and w0, w0, 65535 - ubfiz x20, x0, 1, 16 - ldr x3, [x2, 2376] - ldrh w1, [x3, x20] - cbnz w1, .L713 - ldr x19, [x2, 2408] - cbz x19, .L714 - ldrh w3, [x2, 2416] - mov x4, -6148914691236517206 - ldr x2, [x2, 2360] - movk x4, 0xaaab, lsl 0 - mov w5, 65535 - sub x19, x19, x2 - asr x19, x19, 1 - mul x19, x19, x4 - mov w4, 6 - and w19, w19, 65535 -.L715: - cmp w1, w3 - beq .L714 - cmp w19, w0 - bne .L716 - add x23, x22, :lo12:.LANCHOR0 - mov w1, w19 - add x0, x23, 2408 - bl List_remove_node - ldrh w0, [x23, 2416] - cbnz w0, .L717 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 1737 - add x1, x1, 352 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L717: - add x22, x22, :lo12:.LANCHOR0 - ldrh w0, [x22, 2416] - sub w0, w0, #1 - strh w0, [x22, 2416] - mov w0, w19 - bl INSERT_DATA_LIST - ldr x1, [x22, 2376] - ldrh w0, [x1, x20] +.L490: + ubfiz x1, x0, 2, 16 + ldr w2, [x20, x1] + mov w1, 0 + ubfx x2, x2, 10, 16 +.L487: + ldrh w3, [x19, 10] + cmp w3, w1 + bhi .L489 add w0, w0, 1 - strh w0, [x1, x20] -.L714: - 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 -.L716: - umull x19, w19, w4 - ldrh w19, [x2, x19] - cmp w19, w5 - beq .L714 + and w0, w0, 65535 + b .L486 +.L489: + ubfiz x3, x1, 1, 16 + ldrh w4, [x22, x3] + cmp w4, w2 + bne .L488 + cbz w2, .L488 + ldrh w4, [x21, x3] + add w4, w4, 1 + strh w4, [x21, x3] +.L488: add w1, w1, 1 and w1, w1, 65535 - b .L715 -.L713: - add w1, w1, 1 - strh w1, [x3, x20] - b .L714 - .size FtlReUsePrevPpa, .-FtlReUsePrevPpa - .align 2 - .global ftl_scan_all_data - .type ftl_scan_all_data, %function -ftl_scan_all_data: - sub sp, sp, #96 - adrp x0, .LC94 - mov w1, 0 - add x0, x0, :lo12:.LC94 - stp x29, x30, [sp, 16] - add x29, sp, 16 - stp x21, x22, [sp, 48] - adrp x22, .LANCHOR0 - add x21, x22, :lo12:.LANCHOR0 - stp x19, x20, [sp, 32] - str x23, [sp, 64] - mov w20, 0 - add x19, x21, 3408 - bl sftl_printk -.L724: - add x0, x22, :lo12:.LANCHOR0 - ldr w0, [x0, 2584] - cmp w20, w0 - bcc .L730 - ldp x19, x20, [sp, 32] - ldp x21, x22, [sp, 48] - ldp x29, x30, [sp, 16] - ldr x23, [sp, 64] - add sp, sp, 96 - ret -.L730: - mov w2, 0 - add x1, x29, 76 - mov w0, w20 - bl log2phys - tst x20, 2047 - bne .L725 - ldr w2, [x29, 76] - adrp x0, .LC95 - mov w1, w20 - add x0, x0, :lo12:.LC95 - bl sftl_printk -.L725: - ldr w0, [x29, 76] - cmn w0, #1 - beq .L727 - ldr x23, [x21, 3448] - mov w2, 0 - stp wzr, w0, [x19] - mov w1, 1 - ldr x0, [x21, 3440] - str x0, [x19, 8] - mov x0, x19 - str x23, [x19, 16] - str w20, [x19, 24] - bl FlashReadPages - ldr w0, [x19] - cmp w0, 256 - ccmn w0, #1, 4, ne - beq .L728 - ldr w0, [x23, 8] - cmp w20, w0 - beq .L727 -.L728: - ldp x1, x0, [x19, 8] - ldr w2, [x1, 4] - str w2, [sp] - ldp w3, w4, [x0] - ldp w5, w6, [x0, 8] - adrp x0, .LC96 - ldr w7, [x1] - add x0, x0, :lo12:.LC96 - ldr w2, [x19, 4] - mov w1, w20 - bl sftl_printk -.L727: - add w20, w20, 1 - b .L724 - .size ftl_scan_all_data, .-ftl_scan_all_data - .align 2 - .global FtlReadRefresh - .type FtlReadRefresh, %function -FtlReadRefresh: - adrp x0, .LANCHOR0 - add x1, x0, :lo12:.LANCHOR0 - add x2, x1, 2720 - ldr w3, [x2, 80] - cbz w3, .L733 - ldr w0, [x1, 2584] - ldr w3, [x2, 84] - cmp w3, w0 - bcs .L734 - stp x29, x30, [sp, -160]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x1 - mov w20, 2048 - str x21, [sp, 32] -.L739: - ldr w1, [x19, 2584] - ldr w0, [x19, 2804] - cmp w0, w1 - bcs .L736 - add x1, x29, 60 - mov w2, 0 - bl log2phys - ldr w0, [x19, 2804] - ldr w1, [x29, 60] - add w0, w0, 1 - str w0, [x19, 2804] - cmn w1, #1 - beq .L737 - str w0, [x29, 88] - adrp x0, ftl_temp_buf - add x0, x0, :lo12:ftl_temp_buf - str x0, [x29, 72] - add x0, x29, 96 - str x0, [x29, 80] - add x0, x29, 160 - str w1, [x29, 68] - mov w2, 0 - mov w1, 1 - str wzr, [x0, -96]! - bl FlashReadPages - ldr w0, [x29, 64] - cmp w0, 256 - bne .L736 - ldr w0, [x29, 60] - lsr w0, w0, 10 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L736: - ldp x19, x20, [sp, 16] - mov w0, -1 - ldr x21, [sp, 32] - ldp x29, x30, [sp], 160 - ret -.L737: - subs w20, w20, #1 - bne .L739 - b .L736 -.L734: - ldr w0, [x1, 2588] - stp w0, wzr, [x2, 76] - str wzr, [x2, 84] -.L743: - mov w0, 0 - ret -.L733: - ldr w3, [x1, 2588] - ldr w5, [x2, 76] - add w2, w3, 1048576 - cmp w5, w2 - bhi .L742 - ldr w2, [x1, 2644] - lsr w4, w2, 10 - mov w2, 33554432 - asr w2, w2, w4 - add w2, w2, w5 - cmp w3, w2 - bhi .L742 - ldrb w1, [x1, 2340] - cbnz w1, .L743 -.L742: - add x0, x0, :lo12:.LANCHOR0 - mov w1, 1 - str w3, [x0, 2796] - str w1, [x0, 2800] - str wzr, [x0, 2804] - b .L743 - .size FtlReadRefresh, .-FtlReadRefresh - .align 2 - .global FtlMapBlkWriteDump_data - .type FtlMapBlkWriteDump_data, %function -FtlMapBlkWriteDump_data: - ldr w1, [x0, 56] - cbz w1, .L757 - stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 - add x2, x1, :lo12:.LANCHOR0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - str x21, [sp, 32] - add x0, x2, 3408 - mov x21, x1 - ldrh w20, [x19, 6] - ldr x4, [x2, 3448] - sub w20, w20, #1 - ldr x3, [x2, 4048] - and w20, w20, 65535 - ldr x5, [x19, 40] - stp x3, x4, [x0, 8] - ubfiz x4, x20, 2, 16 - str wzr, [x19, 56] - ldr w4, [x5, x4] - str w4, [x0, 4] - cbz w4, .L751 - mov w2, 1 - mov w1, w2 - bl FlashReadPages -.L752: - add x1, x21, :lo12:.LANCHOR0 - mov x0, x19 - ldr x2, [x1, 3416] - mov w1, w20 - bl FtlMapWritePage - ldr x21, [sp, 32] - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 48 - ret -.L751: - ldrh w2, [x2, 114] - mov w1, 255 - mov x0, x3 - bl ftl_memset - b .L752 -.L757: - ret - .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data - .align 2 - .global FtlScanSysBlk - .type FtlScanSysBlk, %function -FtlScanSysBlk: - stp x29, x30, [sp, -112]! - mov w1, 0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x20, .LANCHOR3 - stp x21, x22, [sp, 32] - add x21, x20, :lo12:.LANCHOR3 - stp x23, x24, [sp, 48] - adrp x22, .LANCHOR0 - stp x25, x26, [sp, 64] - add x19, x22, :lo12:.LANCHOR0 - stp x27, x28, [sp, 80] - adrp x25, .LANCHOR1 - strh wzr, [x21, -120] - add x25, x25, :lo12:.LANCHOR1 - ldr x0, [x21, -208] - add x25, x25, 368 - ldr w2, [x19, 132] - strh wzr, [x19, 148] - lsl w2, w2, 2 - bl ftl_memset - ldr x0, [x21, -256] - mov w1, 0 - ldr w2, [x19, 132] - lsl w2, w2, 1 - bl ftl_memset - ldr x0, [x21, -232] - mov w1, 0 - ldrh w2, [x19, 124] - lsl w2, w2, 2 - bl ftl_memset - ldr x0, [x19, 152] - mov w1, 0 - ldrh w2, [x19, 124] - lsl w2, w2, 1 - bl ftl_memset - mov w2, 12 - mov w1, 255 - add x0, x19, 2656 - bl ftl_memset - ldrh w24, [x19, 44] -.L761: - ldrh w0, [x19, 46] - cmp w0, w24 - bls .L801 - ldrh w9, [x19, 36] - mov x5, 0 - ldrh w8, [x19, 116] - mov w21, 0 - add x7, x19, 64 - mov w6, 4 - b .L802 -.L763: - ldrb w0, [x7, x5] - mov w1, w24 - bl V2P_block - and w4, w0, 65535 - bl FtlBbmIsBadBlock - cbnz w0, .L762 - ldr x0, [x19, 4024] - ubfiz x2, x21, 5, 16 - lsl w4, w4, 10 - add x0, x0, x2 - str w4, [x0, 4] - ldr x1, [x19, 4024] - ldr x0, [x19, 3264] - add x1, x1, x2 - ldr x2, [x19, 3272] - str x0, [x1, 8] - mul w0, w21, w8 - add w21, w21, 1 - and w21, w21, 65535 - sdiv w0, w0, w6 - add x0, x2, x0, sxtw 2 - str x0, [x1, 16] -.L762: - add x5, x5, 1 -.L802: - cmp w9, w5, uxth - bhi .L763 - cbnz w21, .L764 -.L800: - add w24, w24, 1 - and w24, w24, 65535 - b .L761 -.L764: - ldr x0, [x19, 4024] - mov w1, w21 - mov w2, 1 - ubfiz x21, x21, 5, 16 - mov x23, 0 - add x28, x19, 2656 - bl FlashReadPages -.L799: - ldr x0, [x19, 4024] - add x1, x0, x23 - ldr w0, [x0, x23] - ldr w26, [x1, 4] - cmn w0, #1 - ldr x27, [x1, 16] - ubfx x26, x26, 10, 16 - bne .L767 - mov w3, 16 - mov w4, 65535 -.L769: - ldr x0, [x19, 4024] - mov w2, 1 - stp w4, w3, [x29, 104] - add x0, x0, x23 - ldr w1, [x0, 4] - add w1, w1, 1 - str w1, [x0, 4] - mov w1, w2 - ldr x0, [x19, 4024] - add x0, x0, x23 - bl FlashReadPages - ldp w4, w3, [x29, 104] - ldrh w0, [x27] - cmp w0, w4 - ldr x0, [x19, 4024] - bne .L766 - mov w1, -1 - str w1, [x0, x23] - ldr x0, [x19, 4024] - ldr w0, [x0, x23] - cmp w0, w1 - bne .L767 -.L768: - mov w1, 0 - mov w0, w26 - bl FtlFreeSysBlkQueueIn - b .L772 -.L766: - ldr w0, [x0, x23] - cmn w0, #1 - bne .L767 - sub w3, w3, #1 - ands w3, w3, 65535 - bne .L769 - b .L768 -.L767: - ldr w1, [x19, 2620] - ldr w0, [x27, 4] - cmn w1, #1 - beq .L770 - cmp w1, w0 - bhi .L771 -.L770: - cmn w0, #1 - beq .L771 - add w1, w0, 1 - str w1, [x19, 2620] -.L771: - ldrh w1, [x27] - mov w2, 61604 - cmp w1, w2 - beq .L773 - bhi .L774 - mov w0, 61574 - cmp w1, w0 - beq .L775 -.L772: - add x23, x23, 32 - cmp x21, x23 - bne .L799 - b .L800 -.L774: - mov w0, 61634 - cmp w1, w0 - beq .L776 - mov w0, 65535 - cmp w1, w0 - beq .L768 - b .L772 -.L776: - add x0, x20, :lo12:.LANCHOR3 - ldrh w1, [x0, -120] - ldr w0, [x19, 132] - cmp w1, w0 - bls .L778 - adrp x0, .LC1 - mov w2, 1256 - mov x1, x25 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L778: - add x4, x20, :lo12:.LANCHOR3 - ldr w3, [x19, 132] - and w2, w3, 65535 - ldrh w1, [x4, -120] - sub w0, w2, #1 - ldr x4, [x4, -208] - sxth x0, w0 - sub w2, w2, w1 - sub w2, w2, #1 - sxth w2, w2 -.L779: - cmp w0, w2 - bgt .L785 - tbz w0, #31, .L819 - b .L772 -.L785: - sxtw x5, w0 - ldr w8, [x27, 4] - lsl x6, x5, 2 - ldr w7, [x4, x6] - cmp w8, w7 - bls .L780 - ldr w2, [x4] - cbnz w2, .L781 - cmp w3, w1 - beq .L781 - add x2, x20, :lo12:.LANCHOR3 - add w1, w1, 1 - strh w1, [x2, -120] -.L781: - add x3, x20, :lo12:.LANCHOR3 - mov w1, 0 -.L782: - cmp w1, w0 - bne .L783 - add x1, x20, :lo12:.LANCHOR3 - ldr w3, [x27, 4] - ldr x2, [x1, -208] - str w3, [x2, x6] - ldr x2, [x1, -256] - strh w26, [x2, x5, lsl 1] - tbnz w0, #31, .L772 - ldrh w1, [x1, -120] - ldr w2, [x19, 132] - sub w2, w2, w1 - sub w2, w2, #1 - cmp w0, w2, sxth - bgt .L772 -.L819: - add x2, x20, :lo12:.LANCHOR3 - add w1, w1, 1 - ldr w3, [x27, 4] - strh w1, [x2, -120] - ldr x1, [x2, -208] - str w3, [x1, x0, lsl 2] - ldr x1, [x2, -256] -.L837: - strh w26, [x1, x0, lsl 1] - b .L772 -.L783: - ldr x7, [x3, -208] - sxtw x2, w1 - lsl x4, x2, 2 - lsl x2, x2, 1 - add x8, x7, x4 - add w1, w1, 1 - sxth w1, w1 - ldr w8, [x8, 4] - str w8, [x7, x4] - ldr x4, [x3, -256] - add x7, x4, x2 - ldrh w7, [x7, 2] - strh w7, [x4, x2] - b .L782 -.L780: - sub w0, w0, #1 - sxth x0, w0 - b .L779 -.L775: - ldrh w1, [x19, 148] - ldrh w0, [x19, 124] - cmp w1, w0 - bls .L788 - adrp x0, .LC1 - mov w2, 1297 - mov x1, x25 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L788: - add x4, x20, :lo12:.LANCHOR3 - ldrh w3, [x19, 124] - ldrh w1, [x19, 148] - sub w2, w3, #1 - ldr x4, [x4, -232] - sxth x0, w2 - sub w2, w2, w1 -.L789: - cmp w0, w2 - ble .L794 - sxtw x5, w0 - ldr w8, [x27, 4] - lsl x6, x5, 2 - ldr w7, [x4, x6] - cmp w8, w7 - bls .L790 - ldr w2, [x4] - cbnz w2, .L791 - cmp w3, w1 - beq .L791 - add w1, w1, 1 - strh w1, [x19, 148] -.L791: - add x7, x20, :lo12:.LANCHOR3 - mov w1, 0 -.L792: - cmp w1, w0 - bne .L793 - add x1, x20, :lo12:.LANCHOR3 - ldr w2, [x27, 4] - ldr x1, [x1, -232] - str w2, [x1, x6] - ldr x1, [x19, 152] - strh w26, [x1, x5, lsl 1] -.L794: - tbnz w0, #31, .L772 - ldrh w1, [x19, 124] - ldrh w2, [x19, 148] - sub w1, w1, #1 - sub w1, w1, w2 - cmp w0, w1, sxth - bgt .L772 - add x1, x20, :lo12:.LANCHOR3 - add w2, w2, 1 - strh w2, [x19, 148] - ldr w2, [x27, 4] - ldr x1, [x1, -232] - str w2, [x1, x0, lsl 2] - ldr x1, [x19, 152] - b .L837 -.L793: - ldr x4, [x7, -232] - sxtw x2, w1 - lsl x3, x2, 2 - lsl x2, x2, 1 - add x8, x4, x3 - add w1, w1, 1 - sxth w1, w1 - ldr w8, [x8, 4] - str w8, [x4, x3] - ldr x3, [x19, 152] - add x4, x3, x2 - ldrh w4, [x4, 2] - strh w4, [x3, x2] - b .L792 -.L790: - sub w0, w0, #1 - sxth x0, w0 - b .L789 -.L773: - ldrh w2, [x28] - mov w1, 65535 - cmp w2, w1 - bne .L796 - strh w26, [x28] -.L838: - str w0, [x28, 8] - b .L772 -.L796: - ldrh w0, [x28, 4] - cmp w0, w1 - beq .L797 - mov w1, 1 - bl FtlFreeSysBlkQueueIn -.L797: - ldr w0, [x27, 4] - ldr w1, [x28, 8] - cmp w1, w0 - bcs .L798 - ldrh w0, [x28] - strh w0, [x28, 4] - strh w26, [x28] - ldr w0, [x27, 4] - b .L838 -.L798: - strh w26, [x28, 4] - b .L772 -.L801: - add x0, x20, :lo12:.LANCHOR3 - ldr x1, [x0, -256] - ldrh w2, [x1] - cbz w2, .L803 -.L806: - add x0, x22, :lo12:.LANCHOR0 - ldr x1, [x0, 152] - ldrh w2, [x1] - cbz w2, .L804 -.L805: - add x20, x20, :lo12:.LANCHOR3 - add x22, x22, :lo12:.LANCHOR0 - ldrh w1, [x20, -120] - ldr w0, [x22, 132] - cmp w1, w0 - bls .L835 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 1422 - add x1, x1, 368 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L835: - 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 -.L803: - ldrh w0, [x0, -120] - cbz w0, .L806 - ldr w2, [x19, 132] - mov w0, 0 -.L807: - cmp w0, w2 - bcs .L806 - ldrh w3, [x1, w0, sxtw 1] - cbz w3, .L808 - mov w1, w0 - add x7, x22, :lo12:.LANCHOR0 - add x3, x20, :lo12:.LANCHOR3 -.L809: - ldr w2, [x7, 132] - cmp w1, w2 - bcs .L806 - ldr x5, [x3, -256] - sxtw x6, w1 - lsl x4, x6, 1 - sub w2, w1, w0 - sxtw x2, w2 - add w1, w1, 1 - sxth w1, w1 - ldrh w8, [x5, x4] - strh w8, [x5, x2, lsl 1] - ldr x5, [x3, -208] - ldr w6, [x5, x6, lsl 2] - str w6, [x5, x2, lsl 2] - ldr x2, [x3, -256] - strh wzr, [x2, x4] - b .L809 -.L808: - add w0, w0, 1 - sxth w0, w0 - b .L807 -.L804: - ldrh w2, [x0, 148] - cbz w2, .L805 - ldrh w2, [x0, 124] - mov w0, 0 -.L814: - mov w6, w0 - cmp w0, w2 - bge .L805 - ldrh w3, [x1, w0, sxtw 1] - cbz w3, .L815 - add x2, x22, :lo12:.LANCHOR0 - add x7, x20, :lo12:.LANCHOR3 -.L816: - ldrh w1, [x2, 124] - cmp w0, w1 - bge .L805 - ldr x4, [x2, 152] - sxtw x5, w0 - lsl x3, x5, 1 - sub w1, w0, w6 - sxtw x1, w1 - add w0, w0, 1 - sxth w0, w0 - ldrh w8, [x4, x3] - strh w8, [x4, x1, lsl 1] - ldr x4, [x7, -232] - ldr w5, [x4, x5, lsl 2] - str w5, [x4, x1, lsl 2] - ldr x1, [x2, 152] - strh wzr, [x1, x3] - b .L816 -.L815: - add w0, w0, 1 - sxth w0, w0 - b .L814 - .size FtlScanSysBlk, .-FtlScanSysBlk - .align 2 - .global FtlMapTblRecovery - .type FtlMapTblRecovery, %function -FtlMapTblRecovery: - stp x29, x30, [sp, -128]! - mov w1, 0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x21, x22, [sp, 32] - adrp x21, .LANCHOR0 - stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - mov w27, 0 - stp x23, x24, [sp, 48] - ldrh w24, [x0, 6] - ldr x0, [x0, 40] - str x0, [x29, 120] - ldrh w0, [x19, 8] - lsl w2, w24, 2 - str w0, [x29, 116] - ldr x0, [x29, 120] - ldp x23, x26, [x19, 16] - bl ftl_memset - stp wzr, wzr, [x19, 48] - add x3, x21, :lo12:.LANCHOR0 - add x20, x3, 3408 - mov x25, x3 - ldr x0, [x3, 3440] - ldr x22, [x3, 3448] - stp x0, x22, [x20, 8] - mov w0, -1 - strh w0, [x19] - strh w0, [x19, 2] - mov w0, 1 - str w0, [x19, 56] - ldr w0, [x29, 116] - sub w0, w0, #1 - str w0, [x29, 112] -.L840: - ldr w0, [x29, 116] - cmp w27, w0 - bge .L858 - ldr w0, [x29, 112] - sxtw x28, w27 - cmp w27, w0 - bne .L841 - lsl x0, x28, 1 - mov w1, 1 - add x20, x23, x0 - add x25, x21, :lo12:.LANCHOR0 - add x25, x25, 3408 - ldrh w0, [x23, x0] - mov w23, 0 - bl FtlGetLastWrittenPage - strh w27, [x19] - sxth w1, w0 - add w0, w0, 1 - strh w0, [x19, 2] - ldr w0, [x26, x28, lsl 2] - add w26, w1, 1 - str w0, [x19, 48] -.L842: - cmp w23, w26 - blt .L845 -.L858: - add x21, x21, :lo12:.LANCHOR0 - mov x0, x19 - bl ftl_free_no_use_map_blk - ldrh w1, [x19, 2] - ldrh w0, [x21, 108] - cmp w1, w0 - bne .L847 - mov x0, x19 - bl ftl_map_blk_alloc_new_blk -.L847: - mov x0, x19 - bl ftl_map_blk_gc - mov x0, x19 - bl ftl_map_blk_gc - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 128 - ret -.L845: - ldrh w0, [x20] - mov w2, 1 - mov w1, w2 - orr w0, w23, w0, lsl 10 - str w0, [x25, 4] - mov x0, x25 - bl FlashReadPages - ldr w0, [x25] - cmn w0, #1 - beq .L843 - ldrh w0, [x22, 8] - cmp w24, w0 - bls .L844 - ldrh w2, [x22] - ldrh w1, [x19, 4] - cmp w2, w1 - bne .L844 - ldr x2, [x29, 120] - ubfiz x0, x0, 2, 16 - ldr w1, [x25, 4] - str w1, [x2, x0] -.L844: - add w23, w23, 1 - sxth w23, w23 - b .L842 -.L843: - ldrh w0, [x20] - strh w0, [x19, 60] - b .L844 -.L841: - ldr x0, [x25, 3440] - mov w2, 1 - str x0, [x20, 8] - lsl x0, x28, 1 - ldrh w1, [x25, 108] - add x28, x23, x0 - ldrh w0, [x23, x0] - sub w1, w1, #1 - orr w0, w1, w0, lsl 10 - mov w1, w2 - str w0, [x20, 4] - mov x0, x20 - bl FlashReadPages - ldr w0, [x20] - cmn w0, #1 - beq .L860 - ldrh w1, [x22] - ldrh w0, [x19, 4] - cmp w1, w0 - bne .L860 - ldrh w1, [x22, 8] - mov w0, 64245 - cmp w1, w0 - beq .L849 -.L860: - mov w5, 0 -.L850: - ldrh w0, [x25, 108] - cmp w5, w0 - bge .L856 - ldrh w0, [x28] - mov w2, 1 - str w5, [x29, 108] - mov w1, w2 - orr w0, w5, w0, lsl 10 - str w0, [x20, 4] - mov x0, x20 - bl FlashReadPages - ldr w0, [x20] - ldr w5, [x29, 108] - cmn w0, #1 - beq .L854 - ldrh w0, [x22, 8] - cmp w24, w0 - bls .L854 - ldrh w2, [x22] - ldrh w1, [x19, 4] - cmp w2, w1 - bne .L854 - ldr x2, [x29, 120] - ubfiz x0, x0, 2, 16 - ldr w1, [x20, 4] - str w1, [x2, x0] -.L854: - add w5, w5, 1 - sxth w5, w5 - b .L850 -.L849: - mov w0, 0 -.L851: - ldrh w1, [x25, 108] - sub w1, w1, #1 - cmp w0, w1 - blt .L853 -.L856: - add w4, w27, 1 - sxth w27, w4 - b .L840 -.L853: - ldr x2, [x25, 3440] - sbfiz x5, x0, 3, 32 - ldrh w1, [x2, x5] + b .L487 +.L495: + ubfiz x0, x20, 1, 16 + ldrh w1, [x21, x0] cmp w24, w1 - bls .L852 - add x2, x2, x5 - ldr x3, [x29, 120] - ubfiz x1, x1, 2, 16 - ldr w2, [x2, 4] - str w2, [x3, x1] -.L852: - add w0, w0, 1 - sxth w0, w0 - b .L851 - .size FtlMapTblRecovery, .-FtlMapTblRecovery - .align 2 - .global FtlLoadVonderInfo - .type FtlLoadVonderInfo, %function -FtlLoadVonderInfo: - adrp x1, .LANCHOR0 - add x1, x1, :lo12:.LANCHOR0 - stp x29, x30, [sp, -16]! - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - add x29, sp, 0 - ldrh w2, [x1, 124] - sub x0, x0, #112 - strh w2, [x0, 10] - mov w2, -3962 - strh w2, [x0, 4] - ldrh w2, [x1, 148] - strh w2, [x0, 8] - ldrh w2, [x1, 126] - ldr x1, [x1, 152] - str x1, [x0, 16] - ldr x1, [x0, -120] - str x1, [x0, 24] - ldr x1, [x0, -128] - str x1, [x0, 32] - ldr x1, [x0, -112] - str x1, [x0, 40] - mov w1, -1 - strh w2, [x0, 6] - strh w1, [x0, 60] - bl FtlMapTblRecovery - mov w0, 0 - ldp x29, x30, [sp], 16 - ret - .size FtlLoadVonderInfo, .-FtlLoadVonderInfo + bls .L492 + add x25, x22, x0 + ldrh w0, [x22, x0] + cbnz w0, .L493 +.L494: + add w20, w20, 1 + and w20, w20, 65535 + b .L491 +.L492: + cbnz w1, .L494 + add x25, x22, x0 + ldrh w0, [x22, x0] + cbz w0, .L494 +.L496: + mov w1, 1 + bl FtlFreeSysBlkQueueIn + strh wzr, [x25] + ldrh w0, [x19, 8] + sub w0, w0, #1 + strh w0, [x19, 8] + b .L494 +.L497: + mov w24, 0 + b .L496 +.L493: + mov w23, w20 + cbz w1, .L497 + mov w24, w1 + b .L494 + .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk .align 2 .global FtlL2PDataInit .type FtlL2PDataInit, %function FtlL2PDataInit: - stp x29, x30, [sp, -48]! - adrp x1, .LANCHOR0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR3 - str x21, [sp, 32] - add x21, x19, :lo12:.LANCHOR3 - add x20, x1, :lo12:.LANCHOR0 + stp x29, x30, [sp, -32]! + adrp x0, .LANCHOR0 mov w1, 0 - ldr x0, [x21, -248] - ldr w2, [x20, 132] + add x29, sp, 0 + str x19, [sp, 16] + add x19, x0, :lo12:.LANCHOR0 + ldr x0, [x19, 3568] + ldr w2, [x19, 132] lsl w2, w2, 1 bl ftl_memset - ldrh w0, [x20, 142] + ldrh w0, [x19, 142] mov w1, 255 - ldrh w2, [x20, 114] + ldrh w2, [x19, 114] mul w2, w2, w0 - ldr x0, [x21, -200] + ldr x0, [x19, 3616] bl ftl_memset - mov x1, x20 - mov w0, 0 + mov x0, x19 + mov w1, 0 mov w5, -1 -.L868: - ldrh w2, [x1, 142] - cmp w2, w0 - bhi .L869 - add x0, x19, :lo12:.LANCHOR3 - ldr w3, [x1, 132] - ldrh w1, [x1, 140] +.L507: + ldrh w2, [x0, 142] + cmp w2, w1 + bhi .L508 mov w2, -1 - strh w1, [x0, -178] - ldr x1, [x0, -256] - str x1, [x0, -168] - ldr x1, [x0, -208] - strh w3, [x0, -174] - mov w3, -3902 - str x1, [x0, -160] - ldr x1, [x0, -248] - strh w3, [x0, -180] - str x1, [x0, -152] - ldrh w3, [x0, -120] - ldr x1, [x0, -216] - strh w2, [x0, -182] - strh w2, [x0, -184] - strh w2, [x0, -124] - strh w3, [x0, -176] - str x1, [x0, -144] - ldp x19, x20, [sp, 16] - ldr x21, [sp, 32] - ldp x29, x30, [sp], 48 + strh w2, [x0, 3634] + strh w2, [x0, 3632] + add x1, x0, 3632 + ldr w2, [x0, 132] + strh w2, [x0, 3642] + mov w2, -3902 + strh w2, [x0, 3636] + ldrh w2, [x0, 3696] + strh w2, [x0, 3640] + ldrh w2, [x0, 140] + strh w2, [x0, 3638] + ldr x2, [x0, 3560] + str x2, [x0, 3648] + ldr x2, [x0, 3608] + str x2, [x0, 3656] + ldr x2, [x0, 3568] + str x2, [x0, 3664] + ldr x0, [x0, 3600] + str x0, [x1, 40] + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 ret -.L869: - ldr x3, [x1, 2568] - ubfiz x2, x0, 4, 16 +.L508: + ldr x3, [x0, 2568] + ubfiz x2, x1, 4, 16 add x3, x3, x2 str wzr, [x3, 4] - ldr x3, [x1, 2568] + ldr x3, [x0, 2568] strh w5, [x3, x2] - ldr x3, [x1, 2568] - ldr x4, [x21, -200] + ldr x3, [x0, 2568] + ldr x4, [x0, 3616] add x3, x3, x2 - ldrh w2, [x1, 114] - mul w2, w2, w0 - add w0, w0, 1 - and w0, w0, 65535 + ldrh w2, [x0, 114] + mul w2, w2, w1 + add w1, w1, 1 + and w1, w1, 65535 sxtw x2, w2 and x2, x2, -4 add x2, x4, x2 str x2, [x3, 8] - b .L868 + b .L507 .size FtlL2PDataInit, .-FtlL2PDataInit .align 2 - .global FtlLoadMapInfo - .type FtlLoadMapInfo, %function -FtlLoadMapInfo: - stp x29, x30, [sp, -16]! - add x29, sp, 0 - bl FtlL2PDataInit - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - sub x0, x0, #184 - bl FtlMapTblRecovery - mov w0, 0 - ldp x29, x30, [sp], 16 - ret - .size FtlLoadMapInfo, .-FtlLoadMapInfo - .align 2 .global FtlVariablesInit .type FtlVariablesInit, %function FtlVariablesInit: stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - mov w1, -1 + mov w0, -1 + mov w1, 0 add x29, sp, 0 str x19, [sp, 16] adrp x19, .LANCHOR0 add x19, x19, :lo12:.LANCHOR0 - strh w1, [x0, -48] - stp wzr, wzr, [x0, -44] - mov w1, -1 - str w1, [x0, -36] - mov w1, 0 + strh w0, [x19, 3698] + mov w0, -1 + str w0, [x19, 3708] ldr x0, [x19, 152] ldrh w2, [x19, 124] strh wzr, [x19, 148] + str wzr, [x19, 3700] lsl w2, w2, 1 + str wzr, [x19, 3704] bl ftl_memset ldr x0, [x19, 2384] mov w1, 0 ldrh w2, [x19, 46] lsl w2, w2, 1 bl ftl_memset - ldr x0, [x19, 4072] + ldr x0, [x19, 3536] mov w1, 0 ldrh w2, [x19, 46] lsl w2, w2, 1 @@ -6044,83 +3743,83 @@ SupperBlkListInit: str xzr, [x19, 2368] str xzr, [x19, 2392] str xzr, [x19, 2408] -.L876: +.L513: ldrh w0, [x19, 44] cmp w20, w0 - bcs .L883 + bcs .L520 ldrh w8, [x19, 36] mov x6, 0 ldrh w7, [x19, 106] mov w5, 0 - b .L884 -.L878: + b .L521 +.L515: ldrb w0, [x23, x6] mov w1, w20 bl V2P_block bl FtlBbmIsBadBlock - cbnz w0, .L877 + cbnz w0, .L514 add w5, w5, w7 and w5, w5, 65535 -.L877: +.L514: add x6, x6, 1 -.L884: +.L521: cmp w8, w6, uxth - bhi .L878 - cbz w5, .L879 + bhi .L515 + cbz w5, .L516 mov w0, 32768 sdiv w5, w0, w5 -.L880: +.L517: ldr x1, [x19, 2360] mov w0, 6 umaddl x0, w20, w0, x1 strh w5, [x0, 4] ldrh w0, [x19, 2424] cmp w0, w20 - beq .L881 + beq .L518 ldrh w0, [x19, 2472] cmp w0, w20 - beq .L881 + beq .L518 ldrh w0, [x19, 2520] cmp w0, w20 - beq .L881 + beq .L518 ldr x1, [x19, 2376] ubfiz x0, x20, 1, 16 ldrh w0, [x1, x0] - cbnz w0, .L882 + cbnz w0, .L519 add w22, w22, 1 mov w0, w20 and w22, w22, 65535 bl INSERT_FREE_LIST -.L881: +.L518: add w20, w20, 1 and w20, w20, 65535 - b .L876 -.L879: + b .L513 +.L516: ldr x1, [x19, 2376] ubfiz x0, x20, 1, 16 mov w2, -1 strh w2, [x1, x0] - b .L880 -.L882: + b .L517 +.L519: add w21, w21, 1 mov w0, w20 and w21, w21, 65535 bl INSERT_DATA_LIST - b .L881 -.L883: + b .L518 +.L520: strh w21, [x19, 2400] add w21, w21, w22 strh w22, [x19, 2416] cmp w21, w0 - ble .L885 + ble .L522 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2206 - add x1, x1, 384 + mov w2, 2170 + add x1, x1, 248 add x0, x0, :lo12:.LC1 bl sftl_printk -.L885: +.L522: mov w0, 0 ldr x23, [sp, 48] ldp x19, x20, [sp, 16] @@ -6129,144 +3828,6 @@ SupperBlkListInit: ret .size SupperBlkListInit, .-SupperBlkListInit .align 2 - .global ftl_check_vpc - .type ftl_check_vpc, %function -ftl_check_vpc: - stp x29, x30, [sp, -128]! - adrp x0, .LC97 - add x0, x0, :lo12:.LC97 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - stp x23, x24, [sp, 48] - add x24, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - mov w23, 0 - adrp x21, .LANCHOR1 - add x1, x21, :lo12:.LANCHOR1 - add x1, x1, 408 - stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - adrp x22, check_vpc_table - bl sftl_printk - add x19, x22, :lo12:check_vpc_table - mov w2, 8192 - mov w1, 0 - mov x0, x19 - bl ftl_memset -.L888: - ldr w0, [x24, 2584] - cmp w23, w0 - bcc .L890 - adrp x25, .LC98 - add x23, x20, :lo12:.LANCHOR0 - add x26, x22, :lo12:check_vpc_table - add x25, x25, :lo12:.LC98 - mov w24, 0 - mov w19, 0 - mov w4, 65535 -.L891: - ldrh w0, [x23, 44] - cmp w0, w19 - bhi .L893 - ldr x19, [x23, 2408] - cbz x19, .L894 - ldr x0, [x23, 2360] - adrp x25, .LC99 - add x20, x20, :lo12:.LANCHOR0 - add x22, x22, :lo12:check_vpc_table - sub x19, x19, x0 - mov x0, -6148914691236517206 - asr x19, x19, 1 - movk x0, 0xaaab, lsl 0 - add x25, x25, :lo12:.LC99 - ldrh w26, [x23, 2416] - mov w27, 6 - mov w23, 0 - mul x19, x19, x0 - and w19, w19, 65535 -.L895: - cmp w23, w26 - bne .L897 -.L894: - cbz w24, .L887 - add x1, x21, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2373 - add x1, x1, 408 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L887: - 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 -.L890: - mov w2, 0 - add x1, x29, 124 - mov w0, w23 - bl log2phys - ldr w0, [x29, 124] - cmn w0, #1 - beq .L889 - 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] -.L889: - add w23, w23, 1 - b .L888 -.L893: - ldr x0, [x23, 2376] - ubfiz x28, x19, 1, 16 - sxtw x27, w19 - ldrh w2, [x0, x28] - ldrh w3, [x26, x27, lsl 1] - cmp w2, w3 - beq .L892 - mov x0, x25 - str w4, [x29, 108] - mov w1, w19 - bl sftl_printk - ldr x0, [x23, 2376] - ldr w4, [x29, 108] - ldrh w0, [x0, x28] - cmp w0, w4 - beq .L892 - ldrh w1, [x26, x27, lsl 1] - cmp w1, w0 - csinc w24, w24, wzr, ls -.L892: - add w19, w19, 1 - and w19, w19, 65535 - b .L891 -.L897: - ldr x1, [x20, 2376] - ubfiz x0, x19, 1, 16 - ldrh w2, [x1, x0] - cbz w2, .L896 - ldrh w3, [x22, w19, sxtw 1] - mov w24, 1 - mov w1, w19 - mov x0, x25 - bl sftl_printk -.L896: - ldr x0, [x20, 2360] - umull x19, w19, w27 - ldrh w19, [x0, x19] - mov w0, 65535 - cmp w19, w0 - beq .L894 - add w23, w23, 1 - and w23, w23, 65535 - b .L895 - .size ftl_check_vpc, .-ftl_check_vpc - .align 2 .global FtlGcPageVarInit .type FtlGcPageVarInit, %function FtlGcPageVarInit: @@ -6294,218 +3855,6 @@ FtlGcPageVarInit: ret .size FtlGcPageVarInit, .-FtlGcPageVarInit .align 2 - .global FtlGcScanTempBlk - .type FtlGcScanTempBlk, %function -FtlGcScanTempBlk: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x21, x22, [sp, 32] - mov x21, x0 - stp x23, x24, [sp, 48] - adrp x23, .LANCHOR2 - add x0, x23, :lo12:.LANCHOR2 - stp x25, x26, [sp, 64] - stp x19, x20, [sp, 16] - mov w25, w1 - ldrh w19, [x0, 4] - mov w0, 65535 - cmp w19, w0 - beq .L931 - cbnz w19, .L915 -.L916: - bl FtlGcPageVarInit - b .L917 -.L931: - mov w19, 0 -.L915: - adrp x0, .LANCHOR0+106 - ldrh w0, [x0, #:lo12:.LANCHOR0+106] - cmp w0, w25 - beq .L916 -.L917: - adrp x26, .LANCHOR0 - add x22, x26, :lo12:.LANCHOR0 - mov w24, 0 -.L925: - ldrh w1, [x21] - mov w0, 65535 - strb wzr, [x21, 8] - cmp w1, w0 - beq .L932 -.L928: - add x0, x26, :lo12:.LANCHOR0 - add x2, x21, 16 - mov w20, 0 - mov w9, 65535 - mov w5, 4 - ldrh w7, [x0, 114] - ldrh w8, [x0, 116] - ldrh w0, [x0, 36] - add x0, x0, 8 - add x0, x21, x0, lsl 1 -.L919: - cmp x0, x2 - bne .L921 - ldr x0, [x22, 4024] - mov w1, w20 - mov w2, 0 - ubfiz x20, x20, 5, 16 - bl FlashReadPages - mov x10, 0 - mov w11, 65535 -.L922: - cmp x10, x20 - bne .L926 - add w19, w19, 1 - add w24, w24, 1 - and w19, w19, 65535 - cmp w25, w24 - bls .L927 -.L929: - ldrh w0, [x22, 106] - cmp w0, w19 - bhi .L928 -.L932: - mov w2, 0 - b .L918 -.L921: - ldrh w1, [x2] - cmp w1, w9 - beq .L920 - ldr x4, [x22, 4024] - ubfiz x6, x20, 5, 16 - orr w1, w19, w1, lsl 10 - add x4, x4, x6 - str w1, [x4, 4] - mul w1, w20, w7 - ldr x3, [x22, 4024] - ldr x4, [x22, 3264] - sdiv w1, w1, w5 - add x3, x3, x6 - add x1, x4, x1, sxtw 2 - str x1, [x3, 8] - mul w1, w20, w8 - ldr x4, [x22, 3272] - add w20, w20, 1 - and w20, w20, 65535 - sdiv w1, w1, w5 - add x1, x4, x1, sxtw 2 - str x1, [x3, 16] -.L920: - add x2, x2, 2 - b .L919 -.L926: - ldr x6, [x22, 4024] - add x5, x6, x10 - ldr w4, [x5, 4] - lsr w0, w4, 10 - bl P2V_plane - and w2, w0, 65535 - ldr w0, [x6, x10] - cbnz w0, .L923 - ldr x0, [x5, 16] - add x10, x10, 32 - ldrh w1, [x0] - cmp w1, w11 - bne .L924 - adrp x0, .LANCHOR3-40 - mov w1, 1 - str w1, [x0, #:lo12:.LANCHOR3-40] -.L918: - add x23, x23, :lo12:.LANCHOR2 - strh w19, [x21, 2] - strb w2, [x21, 6] - mov w0, -1 - mov w1, w19 - strh w0, [x23, 4] - mov x0, x21 - bl ftl_sb_update_avl_pages - b .L930 -.L924: - ldp w2, w0, [x0, 8] - mov w1, w4 - bl FtlGcUpdatePage - b .L922 -.L923: - ldr x0, [x22, 2376] - mov w19, 0 - ldrh w1, [x21] - strh wzr, [x0, x1, lsl 1] - ldrh w0, [x21] - bl INSERT_FREE_LIST - mov w0, -1 - strh w0, [x21] - bl FtlGcPageVarInit - b .L925 -.L927: - add x1, x23, :lo12:.LANCHOR2 - mov w2, 65535 - ldrh w0, [x1, 4] - cmp w0, w2 - beq .L929 - add w0, w0, w24 - strh w0, [x1, 4] - ldrh w0, [x22, 106] - cmp w0, w19 - bls .L929 -.L930: - mov w0, -1 - 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 FtlGcScanTempBlk, .-FtlGcScanTempBlk - .align 2 - .global FlashTestBlk - .type FlashTestBlk, %function -FlashTestBlk: - stp x29, x30, [sp, -128]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - and w19, w0, 65535 - cmp w19, 11 - bls .L940 - add x0, x29, 64 - mov w2, 32 - mov w1, 165 - adrp x20, ftl_temp_buf - add x20, x20, :lo12:ftl_temp_buf - stp x20, x0, [x29, 40] - bl ftl_memset - lsl w19, w19, 10 - mov w2, 8 - mov w1, 90 - mov x0, x20 - bl ftl_memset - mov w2, 1 - str w19, [x29, 36] - mov w1, w2 - add x0, x29, 32 - bl FlashEraseBlocks - mov w3, 1 - add x0, x29, 32 - mov w2, w3 - mov w1, w3 - bl FlashProgPages - ldr w0, [x29, 32] - mov w2, 1 - mov w1, 0 - cmp w0, 0 - add x0, x29, 32 - csetm w19, ne - bl FlashEraseBlocks -.L938: - mov w0, w19 - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 128 - ret -.L940: - mov w19, 0 - b .L938 - .size FlashTestBlk, .-FlashTestBlk - .align 2 .global FlashGetBadBlockList .type FlashGetBadBlockList, %function FlashGetBadBlockList: @@ -6521,37 +3870,37 @@ FlashGetBadBlockList: adrp x19, .LANCHOR0 add x0, x19, :lo12:.LANCHOR0 mov w1, w21 - ldr x2, [x0, 3376] + ldr x2, [x0, 3368] mov x0, x20 blr x2 and w0, w0, 65535 cmp w0, 50 - bls .L943 + bls .L527 mov w2, 256 mov w1, 255 mov x0, x20 bl ftl_memset mov w0, 0 -.L943: +.L527: add x19, x19, :lo12:.LANCHOR0 ldrh w1, [x19, 14] cmp w1, 4 - bne .L947 + bne .L531 mov x1, 0 -.L945: +.L529: cmp w0, w1, uxth - bhi .L946 -.L947: + bhi .L530 +.L531: ldp x19, x20, [sp, 16] ldr x21, [sp, 32] ldp x29, x30, [sp], 48 ret -.L946: +.L530: ldrh w2, [x20, x1, lsl 1] lsr w2, w2, 1 strh w2, [x20, x1, lsl 1] add x1, x1, 1 - b .L945 + b .L529 .size FlashGetBadBlockList, .-FlashGetBadBlockList .align 2 .global ftl_memcpy @@ -6565,434 +3914,642 @@ ftl_memcpy: ret .size ftl_memcpy, .-ftl_memcpy .align 2 - .global FtlBbmTblFlush - .type FtlBbmTblFlush, %function -FtlBbmTblFlush: - stp x29, x30, [sp, -80]! - mov w1, 0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - str x25, [sp, 64] - adrp x25, .LANCHOR0 - add x19, x25, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - adrp x22, .LANCHOR3 - mov w21, 0 - add x22, x22, :lo12:.LANCHOR3 - ldr x2, [x19, 3448] - add x23, x19, 192 - ldr x0, [x19, 3440] - str x2, [x19, 3424] - ldrh w2, [x19, 114] - str x0, [x19, 3416] - bl ftl_memset -.L952: - ldrh w0, [x19, 58] - add x20, x19, 3408 - cmp w21, w0 - blt .L953 - ldr x24, [x20, 16] - mov w1, 255 - mov w2, 16 - adrp x22, .LC100 - mov x0, x24 - bl ftl_memset - mov w0, -3887 - add x1, x19, 160 - strh w0, [x24] - add x25, x25, :lo12:.LANCHOR0 - add x22, x22, :lo12:.LC100 - mov w21, 0 - ldr w0, [x19, 168] - mov w23, 0 - str w0, [x24, 4] - ldrh w0, [x19, 160] - strh w0, [x24, 2] - ldrh w0, [x19, 164] - strh w0, [x24, 8] - ldrh w0, [x19, 166] - strh w0, [x24, 10] - ldr w0, [x19, 32] - mov x19, x1 - strh w0, [x24, 12] -.L954: - ldr x0, [x25, 3440] - str x0, [x20, 8] - ldr x0, [x25, 3448] - str x0, [x20, 16] - ldrh w1, [x19] - ldrh w2, [x19, 2] - ldrh w3, [x19, 4] - ldrh w4, [x24, 10] - orr w0, w2, w1, lsl 10 - str wzr, [x20] - str w0, [x20, 4] - mov x0, x22 - bl sftl_printk - mov w3, 1 - mov x0, x20 - mov w1, w3 - mov w2, w3 - bl FlashProgPages - ldrh w0, [x25, 108] - ldrh w1, [x19, 2] - sub w0, w0, #1 - cmp w1, w0 - blt .L955 - ldr w0, [x19, 8] - mov w2, 1 - ldrh w1, [x19] - add w0, w0, 1 - str w0, [x19, 8] - str w0, [x24, 4] - strh w1, [x24, 8] - ldrh w0, [x19, 4] - strh w1, [x19, 4] - ldr x1, [x25, 3968] - strh w0, [x19] - lsl w0, w0, 10 - str w0, [x20, 4] - strh wzr, [x19, 2] - str w0, [x1, 4] - mov w1, w2 - ldr x0, [x25, 3968] - bl FlashEraseBlocks - mov w3, 1 - mov x0, x20 - mov w2, w3 - mov w1, w3 - bl FlashProgPages -.L955: - ldrh w0, [x19, 2] - add w0, w0, 1 - strh w0, [x19, 2] - ldr w0, [x20] - cmn w0, #1 - bne .L956 - ldr w1, [x20, 4] - add w21, w21, 1 - adrp x0, .LC101 - and w21, w21, 65535 - add x0, x0, :lo12:.LC101 - bl sftl_printk - cmp w21, 3 - bls .L954 - ldr w1, [x20, 4] - adrp x0, .LC102 - mov w2, w21 - add x0, x0, :lo12:.LC102 - bl sftl_printk -.L958: - b .L958 -.L953: - ldrh w2, [x22, -192] - ldr x1, [x23], 8 - ldr x0, [x20, 8] - mul w3, w21, w2 - lsl w2, w2, 2 - add w21, w21, 1 - add x0, x0, x3, sxtw 2 - bl ftl_memcpy - b .L952 -.L959: - mov w23, 1 - b .L954 -.L956: - cbz w23, .L959 - mov w0, 0 - ldr x25, [sp, 64] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x29, x30, [sp], 80 - ret - .size FtlBbmTblFlush, .-FtlBbmTblFlush - .align 2 - .global allocate_data_superblock - .type allocate_data_superblock, %function -allocate_data_superblock: + .global FlashReadPages + .type FlashReadPages, %function +FlashReadPages: stp x29, x30, [sp, -112]! + ubfiz x1, x1, 5, 32 add x29, sp, 0 stp x21, x22, [sp, 32] adrp x21, .LANCHOR0 - add x22, x21, :lo12:.LANCHOR0 - stp x19, x20, [sp, 16] + add x2, x21, :lo12:.LANCHOR0 stp x23, x24, [sp, 48] - mov x20, x0 - mov x19, x22 - add x23, x22, 2520 + stp x19, x20, [sp, 16] + adrp x22, .LANCHOR1 stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] -.L962: - ldrh w1, [x22, 2400] - ldrh w0, [x22, 2416] - add w0, w0, w1 - ldrh w1, [x22, 44] - cmp w0, w1 - ble .L963 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2654 - add x1, x1, 424 - add x0, x0, :lo12:.LC1 + add x22, x22, :lo12:.LANCHOR1 + str x27, [sp, 80] + adrp x23, .LC1 + mov x19, x0 + add x24, x0, x1 + ldrh w25, [x2, 12] + add x22, x22, 272 + add x23, x23, :lo12:.LC1 +.L536: + cmp x24, x19 + bne .L546 + ldp x19, x20, [sp, 16] + mov w0, 0 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldr x27, [sp, 80] + ldp x29, x30, [sp], 112 + ret +.L546: + ldr x0, [x19, 8] + cbz x0, .L537 + ldr x0, [x19, 16] + cbnz x0, .L538 +.L537: + mov w2, 96 + mov x1, x22 + mov x0, x23 bl sftl_printk -.L963: - cmp x20, x23 - bne .L988 - ldrh w0, [x19, 2416] - ldr w1, [x19, 3244] - mul w1, w0, w1 - lsr w0, w0, 1 - add w0, w0, 1 - add w1, w0, w1, lsr 2 - ands w1, w1, 65535 - beq .L964 - sub w1, w1, #1 - and w1, w1, 65535 -.L964: - add x0, x19, 2408 - bl List_pop_index_node - and w24, w0, 65535 - ldrh w0, [x19, 2416] - cbnz w0, .L965 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2663 - add x1, x1, 424 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L965: - ldrh w0, [x19, 2416] - sub w0, w0, #1 - strh w0, [x19, 2416] - strh w24, [x20] - mov x0, x20 - bl make_superblock - ldrb w0, [x20, 7] - cbnz w0, .L966 - ldr x1, [x19, 2376] - ubfiz x0, x24, 1, 16 - mov w2, -1 - strh w2, [x1, x0] - mov w0, w24 - bl INSERT_DATA_LIST - ldrh w1, [x19, 2400] - ldrh w0, [x19, 2416] - add w0, w0, w1 - ldrh w1, [x19, 44] - cmp w0, w1 - ble .L962 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - mov w2, 2674 - add x1, x1, 424 - adrp x0, .LC1 - add x0, x0, :lo12:.LC1 - bl sftl_printk - b .L962 -.L988: - mov w1, 0 - b .L964 -.L966: - ldrh w1, [x19, 2400] - ldrh w0, [x19, 2416] - add w0, w0, w1 - ldrh w1, [x19, 44] - cmp w0, w1 - ble .L968 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2677 - add x1, x1, 424 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L968: - add x27, x20, 16 - ldrh w4, [x19, 36] - mov x3, x27 - mov x0, 0 - mov w25, 0 - mov w5, 65535 -.L969: - cmp w4, w0, uxth - bhi .L971 - cbnz w25, .L972 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2688 - add x1, x1, 424 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L972: - ldrh w0, [x19, 2672] - cmp w0, w24 - bne .L973 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2690 - add x1, x1, 424 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L973: - ldrb w0, [x20, 8] - uxtw x26, w24 - cbnz w0, .L974 - ldr x2, [x19, 2384] - lsl x1, x26, 1 - ldrh w0, [x2, x1] - cbz w0, .L975 - ldrh w3, [x19, 96] - add w0, w0, w3 -.L996: - strh w0, [x2, x1] - mov w1, 0 - ldr w0, [x19, 2628] - add w0, w0, 1 - str w0, [x19, 2628] - mov w0, w24 - bl ftl_set_blk_mode -.L977: - ldr x0, [x19, 2384] - lsl x26, x26, 1 - ldr w1, [x19, 2644] - ldrh w0, [x0, x26] - cmp w0, w1 - bls .L978 - str w0, [x19, 2644] -.L978: - ldr w1, [x19, 2632] - ubfiz x3, x25, 5, 16 - ldrh w0, [x19, 96] - ldr w2, [x19, 2628] - madd w0, w0, w2, w1 - ldrh w1, [x19, 44] - udiv w0, w0, w1 - ldr x1, [x19, 4080] - str w0, [x19, 2636] - ldr w0, [x1, 16] - add w0, w0, 1 - str w0, [x1, 16] - mov x0, 0 -.L979: - cmp x3, x0 - bne .L980 - ldrb w1, [x20, 8] - mov w2, w25 - ldr x0, [x19, 3968] - mov x28, 0 - bl FlashEraseBlocks - mov w1, 0 -.L981: - cmp w25, w28, uxth - bhi .L983 - cmp w1, 0 - ble .L984 - mov w0, w24 - bl update_multiplier_value - bl FtlBbmTblFlush -.L984: - ldrb w0, [x20, 7] - cbnz w0, .L985 - ldr x0, [x19, 2376] +.L538: + ldr w0, [x19, 4] + add x2, x29, 104 + add x1, x29, 108 + bl l2p_addr_tran.isra.0 + ldr x20, [x19, 8] + tst x20, 63 + beq .L539 + add x0, x21, :lo12:.LANCHOR0 + ldr x20, [x0, 3488] +.L539: + add x27, x21, :lo12:.LANCHOR0 + ldrb w0, [x29, 104] + ldr w1, [x29, 108] + mov x2, x20 + ldr x3, [x19, 16] + ldr x4, [x27, 3392] + blr x4 + str w0, [x19] + ldrh w0, [x27, 14] + cmp w0, 4 + bne .L541 + ldrb w0, [x29, 104] + add x2, x20, 2048 + ldr x4, [x27, 3392] + ldr w1, [x29, 108] + ldr x3, [x19, 16] + add w1, w25, w1 + add x3, x3, 8 + blr x4 + cmn w0, #1 + beq .L542 + ldr x2, [x19, 16] + ldr w1, [x2, 12] + cmn w1, #1 + bne .L543 + ldr w1, [x2, 8] + cmn w1, #1 + bne .L543 + ldr w1, [x2] + cmn w1, #1 + beq .L543 +.L542: mov w1, -1 - strh w1, [x0, x26] - b .L962 -.L971: - ldr x1, [x19, 3968] - add x2, x1, x0, lsl 5 - stp xzr, xzr, [x2, 8] - ldrh w2, [x3] - cmp w2, w5 - beq .L970 - ubfiz x6, x25, 5, 16 - add w25, w25, 1 - add x1, x1, x6 - and w25, w25, 65535 - lsl w2, w2, 10 - str w2, [x1, 4] -.L970: - add x0, x0, 1 - add x3, x3, 2 - b .L969 -.L975: - mov w0, 2 - b .L996 -.L974: - ldr x2, [x19, 2384] - lsl x0, x26, 1 - ldrh w1, [x2, x0] + str w1, [x19] +.L543: + ldr w1, [x19] + cmn w1, #1 + beq .L541 + cmp w0, 256 + bne .L541 + str w0, [x19] +.L541: + add x1, x21, :lo12:.LANCHOR0 + ldr x0, [x1, 3488] + cmp x20, x0 + bne .L545 + ldr x0, [x19, 8] + cmp x20, x0 + beq .L545 + ldrh w2, [x1, 62] + mov x1, x20 + lsl w2, w2, 9 + bl ftl_memcpy +.L545: + add x19, x19, 32 + b .L536 + .size FlashReadPages, .-FlashReadPages + .align 2 + .global FtlLoadFactoryBbt + .type FtlLoadFactoryBbt, %function +FtlLoadFactoryBbt: + stp x29, x30, [sp, -80]! + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x29, sp, 0 + stp x21, x22, [sp, 32] + add x22, x0, 172 + stp x25, x26, [sp, 64] + mov w21, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + stp x23, x24, [sp, 48] + add x23, x0, 3712 + mov x25, x23 + mov w26, 61664 + ldr x1, [x0, 3448] + ldr x24, [x0, 3512] + stp x1, x24, [x23, 8] +.L564: + ldrh w0, [x19, 58] + cmp w21, w0 + bcc .L569 + 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 +.L569: + ldrh w20, [x19, 102] + mov w0, -1 + strh w0, [x22] +.L566: + ldrh w0, [x19, 102] + sub w20, w20, #1 + and w20, w20, 65535 + sub w1, w0, #16 + cmp w20, w1 + ble .L567 + madd w0, w0, w21, w20 + mov w2, 1 + mov w1, w2 + lsl w0, w0, 10 + str w0, [x25, 4] + mov x0, x23 + bl FlashReadPages + ldr w0, [x25] + cmn w0, #1 + beq .L566 + ldrh w0, [x24] + cmp w0, w26 + bne .L566 + strh w20, [x22] +.L567: + add w21, w21, 1 + add x22, x22, 2 + b .L564 + .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt + .align 2 + .global FtlGetLastWrittenPage + .type FtlGetLastWrittenPage, %function +FtlGetLastWrittenPage: + stp x29, x30, [sp, -160]! + cmp w1, 1 + add x29, sp, 0 + stp x23, x24, [sp, 48] + mov w23, w1 + stp x19, x20, [sp, 16] + adrp x1, .LANCHOR0 + stp x21, x22, [sp, 32] + add x2, x1, :lo12:.LANCHOR0 + bne .L575 + ldrh w19, [x2, 108] +.L576: + add x1, x1, :lo12:.LANCHOR0 + sub w19, w19, #1 + sxth w19, w19 + lsl w21, w0, 10 + orr w0, w19, w21 + mov w2, w23 + ldr x1, [x1, 3496] + str x1, [x29, 72] + add x1, x29, 96 + str w0, [x29, 68] + add x0, x29, 64 + str x1, [x29, 80] + mov w1, 1 + bl FlashReadPages + ldr w0, [x29, 96] + cmn w0, #1 + bne .L577 + mov w22, 0 + mov w24, 2 +.L578: + cmp w22, w19 + ble .L581 +.L577: + mov w0, w19 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 160 + ret +.L575: + ldrh w19, [x2, 106] + b .L576 +.L581: + add w20, w22, w19 + mov w2, w23 + mov w1, 1 + sdiv w20, w20, w24 + sxth w0, w20 + orr w0, w0, w21 + str w0, [x29, 68] + add x0, x29, 64 + bl FlashReadPages + ldr w0, [x29, 96] + cmn w0, #1 + bne .L579 + ldr w0, [x29, 100] + cmn w0, #1 + bne .L579 + ldr w0, [x29, 64] + cmn w0, #1 + beq .L579 + sub w19, w20, #1 + sxth w19, w19 + b .L578 +.L579: + add w20, w20, 1 + sxth w22, w20 + b .L578 + .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage + .align 2 + .global FtlScanSysBlk + .type FtlScanSysBlk, %function +FtlScanSysBlk: + stp x29, x30, [sp, -112]! + mov w1, 0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x19, x21, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR1 + stp x27, x28, [sp, 80] + add x25, x25, :lo12:.LANCHOR1 + ldr x0, [x19, 3608] + add x25, x25, 288 + ldr w2, [x19, 132] + strh wzr, [x19, 3696] + strh wzr, [x19, 148] + lsl w2, w2, 2 + bl ftl_memset + ldr x0, [x19, 3560] + mov w1, 0 + ldr w2, [x19, 132] + lsl w2, w2, 1 + bl ftl_memset + ldr x0, [x19, 3584] + mov w1, 0 + ldrh w2, [x19, 124] + lsl w2, w2, 2 + bl ftl_memset + ldr x0, [x19, 152] + mov w1, 0 + ldrh w2, [x19, 124] + lsl w2, w2, 1 + bl ftl_memset + mov w2, 12 + mov w1, 255 + add x0, x19, 2656 + bl ftl_memset + ldrh w24, [x19, 44] +.L587: + ldrh w0, [x19, 46] + cmp w0, w24 + bls .L627 + ldrh w9, [x19, 36] + mov x5, 0 + ldrh w8, [x19, 116] + mov w20, 0 + add x7, x19, 64 + mov w6, 4 + b .L628 +.L589: + ldrb w0, [x7, x5] + mov w1, w24 + bl V2P_block + and w4, w0, 65535 + bl FtlBbmIsBadBlock + cbnz w0, .L588 + ldr x0, [x19, 3424] + ubfiz x2, x20, 5, 16 + lsl w4, w4, 10 + add x0, x0, x2 + str w4, [x0, 4] + ldr x1, [x19, 3424] + ldr x0, [x19, 3264] + add x1, x1, x2 + ldr x2, [x19, 3272] + str x0, [x1, 8] + mul w0, w20, w8 + add w20, w20, 1 + and w20, w20, 65535 + sdiv w0, w0, w6 + add x0, x2, x0, sxtw 2 + str x0, [x1, 16] +.L588: + add x5, x5, 1 +.L628: + cmp w9, w5, uxth + bhi .L589 + cbnz w20, .L590 +.L626: + add w24, w24, 1 + and w24, w24, 65535 + b .L587 +.L590: + ldr x0, [x19, 3424] + mov w1, w20 + mov w2, 1 + ubfiz x20, x20, 5, 16 + mov x23, 0 + add x27, x19, 2656 + bl FlashReadPages +.L625: + ldr x0, [x19, 3424] + add x1, x0, x23 + ldr w0, [x0, x23] + ldr w22, [x1, 4] + cmn w0, #1 + ldr x26, [x1, 16] + ubfx x22, x22, 10, 16 + bne .L593 + mov w28, 16 + mov w3, 65535 +.L595: + ldr x0, [x19, 3424] + mov w2, 1 + str w3, [x29, 108] + add x0, x0, x23 + ldr w1, [x0, 4] add w1, w1, 1 - strh w1, [x2, x0] - ldr w0, [x19, 2632] - add w0, w0, 1 - str w0, [x19, 2632] - mov w0, w24 - bl ftl_set_blk_mode.part.7 - b .L977 -.L980: - ldr x1, [x19, 3968] - add x1, x1, x0 - add x0, x0, 32 - ldr w2, [x1, 4] - and w2, w2, -1024 - str w2, [x1, 4] - b .L979 -.L983: - ldr x2, [x19, 3968] - lsl x0, x28, 5 - add x3, x2, x0 - ldr w2, [x2, x0] - cmn w2, #1 - bne .L982 + str w1, [x0, 4] + mov w1, w2 + ldr x0, [x19, 3424] + add x0, x0, x23 + bl FlashReadPages + ldrh w0, [x26] + ldr w3, [x29, 108] + cmp w0, w3 + ldr x0, [x19, 3424] + bne .L592 + mov w1, -1 + str w1, [x0, x23] + ldr x0, [x19, 3424] + ldr w0, [x0, x23] + cmp w0, w1 + bne .L593 +.L594: + mov w1, 1 + b .L665 +.L592: + ldr w0, [x0, x23] + cmn w0, #1 + bne .L593 + sub w28, w28, #1 + ands w28, w28, 65535 + bne .L595 + b .L594 +.L593: + ldr w1, [x19, 2620] + ldr w0, [x26, 4] + cmn w1, #1 + beq .L596 + cmp w1, w0 + bhi .L597 +.L596: + cmn w0, #1 + beq .L597 + add w1, w0, 1 + str w1, [x19, 2620] +.L597: + ldrh w1, [x26] + mov w2, 61604 + cmp w1, w2 + beq .L599 + bhi .L600 + mov w0, 61574 + cmp w1, w0 + beq .L601 +.L598: + add x23, x23, 32 + cmp x20, x23 + bne .L625 + b .L626 +.L600: + mov w0, 61634 + cmp w1, w0 + beq .L602 + mov w0, 65535 + cmp w1, w0 + bne .L598 + mov w1, 0 +.L665: + mov w0, w22 + bl FtlFreeSysBlkQueueIn + b .L598 +.L602: + ldrh w1, [x19, 3696] + ldr w0, [x19, 132] + cmp w1, w0 + bls .L604 + adrp x0, .LC1 + mov w2, 1222 + mov x1, x25 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L604: + ldr w3, [x19, 132] + ldrh w1, [x19, 3696] + and w2, w3, 65535 + ldr x4, [x19, 3608] + sub w0, w2, #1 + sub w2, w2, w1 + sub w2, w2, #1 + sxth x0, w0 + sxth w2, w2 +.L605: + cmp w0, w2 + bgt .L611 + tbz w0, #31, .L645 + b .L598 +.L611: + sxtw x5, w0 + ldr w8, [x26, 4] + lsl x6, x5, 2 + ldr w7, [x4, x6] + cmp w8, w7 + bls .L606 + ldr w2, [x4] + cbnz w2, .L607 + cmp w3, w1 + beq .L607 add w1, w1, 1 - ldr w0, [x3, 4] - stp w2, w1, [x29, 104] - lsr w0, w0, 10 - bl FtlBbmMapBadBlock - ldp w2, w1, [x29, 104] - strh w2, [x27] - ldrb w0, [x20, 7] + strh w1, [x19, 3696] +.L607: + mov w1, 0 +.L608: + cmp w1, w0 + bne .L609 + ldr x1, [x19, 3608] + ldr w2, [x26, 4] + str w2, [x1, x6] + ldr x1, [x19, 3560] + strh w22, [x1, x5, lsl 1] + tbnz w0, #31, .L598 + ldrh w1, [x19, 3696] + ldr w2, [x19, 132] + sub w2, w2, w1 + sub w2, w2, #1 + cmp w0, w2, sxth + bgt .L598 +.L645: + add w1, w1, 1 + strh w1, [x19, 3696] + ldr x1, [x19, 3608] + ldr w2, [x26, 4] + str w2, [x1, x0, lsl 2] + ldr x1, [x19, 3560] +.L663: + strh w22, [x1, x0, lsl 1] + b .L598 +.L609: + ldr x4, [x19, 3608] + sxtw x2, w1 + lsl x3, x2, 2 + lsl x2, x2, 1 + add x7, x4, x3 + add w1, w1, 1 + sxth w1, w1 + ldr w7, [x7, 4] + str w7, [x4, x3] + ldr x3, [x19, 3560] + add x4, x3, x2 + ldrh w4, [x4, 2] + strh w4, [x3, x2] + b .L608 +.L606: sub w0, w0, #1 - strb w0, [x20, 7] -.L982: - add x28, x28, 1 - add x27, x27, 2 - b .L981 -.L985: - add x21, x21, :lo12:.LANCHOR0 - strh wzr, [x20, 2] - strb wzr, [x20, 6] - ldrh w1, [x21, 106] - strh w24, [x20] - mul w0, w0, w1 - ldr w1, [x21, 2620] - str w1, [x20, 12] - and w0, w0, 65535 + sxth x0, w0 + b .L605 +.L601: + ldrh w1, [x19, 148] + ldrh w0, [x19, 124] + cmp w1, w0 + bls .L614 + adrp x0, .LC1 + mov w2, 1263 + mov x1, x25 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L614: + ldrh w3, [x19, 124] + ldrh w1, [x19, 148] + sub w2, w3, #1 + ldr x4, [x19, 3584] + sxth x0, w2 + sub w2, w2, w1 +.L615: + cmp w0, w2 + ble .L620 + sxtw x5, w0 + ldr w8, [x26, 4] + lsl x6, x5, 2 + ldr w7, [x4, x6] + cmp w8, w7 + bls .L616 + ldr w2, [x4] + cbnz w2, .L617 + cmp w3, w1 + beq .L617 add w1, w1, 1 - strh w0, [x20, 4] - str w1, [x21, 2620] - ldr x1, [x21, 2376] - ldrh w2, [x20] - strh w0, [x1, x2, lsl 1] - ldrh w0, [x20, 4] - cbz w0, .L986 - ldrb w0, [x20, 7] - cbnz w0, .L987 -.L986: + strh w1, [x19, 148] +.L617: + mov w1, 0 +.L618: + cmp w1, w0 + bne .L619 + ldr x1, [x19, 3584] + ldr w2, [x26, 4] + str w2, [x1, x6] + ldr x1, [x19, 152] + strh w22, [x1, x5, lsl 1] +.L620: + tbnz w0, #31, .L598 + ldrh w1, [x19, 124] + ldrh w2, [x19, 148] + sub w1, w1, #1 + sub w1, w1, w2 + cmp w0, w1, sxth + bgt .L598 + ldr x1, [x19, 3584] + add w2, w2, 1 + strh w2, [x19, 148] + ldr w2, [x26, 4] + str w2, [x1, x0, lsl 2] + ldr x1, [x19, 152] + b .L663 +.L619: + ldr x4, [x19, 3584] + sxtw x2, w1 + lsl x3, x2, 2 + lsl x2, x2, 1 + add x7, x4, x3 + add w1, w1, 1 + sxth w1, w1 + ldr w7, [x7, 4] + str w7, [x4, x3] + ldr x3, [x19, 152] + add x4, x3, x2 + ldrh w4, [x4, 2] + strh w4, [x3, x2] + b .L618 +.L616: + sub w0, w0, #1 + sxth x0, w0 + b .L615 +.L599: + ldrh w2, [x27] + mov w1, 65535 + cmp w2, w1 + bne .L622 + strh w22, [x27] +.L664: + str w0, [x27, 8] + b .L598 +.L622: + ldrh w0, [x27, 4] + cmp w0, w1 + beq .L623 + mov w1, 1 + bl FtlFreeSysBlkQueueIn +.L623: + ldr w0, [x26, 4] + ldr w1, [x27, 8] + cmp w1, w0 + bcs .L624 + ldrh w0, [x27] + strh w0, [x27, 4] + strh w22, [x27] + ldr w0, [x26, 4] + b .L664 +.L624: + strh w22, [x27, 4] + b .L598 +.L627: + ldr x1, [x19, 3560] + ldrh w0, [x1] + cbz w0, .L629 +.L632: + add x0, x21, :lo12:.LANCHOR0 + ldr x1, [x0, 152] + ldrh w2, [x1] + cbz w2, .L630 +.L631: + add x21, x21, :lo12:.LANCHOR0 + ldrh w1, [x21, 3696] + ldr w0, [x21, 132] + cmp w1, w0 + bls .L661 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 2743 - add x1, x1, 424 + mov w2, 1388 + add x1, x1, 288 add x0, x0, :lo12:.LC1 bl sftl_printk -.L987: +.L661: ldp x19, x20, [sp, 16] mov w0, 0 ldp x21, x22, [sp, 32] @@ -7001,1110 +4558,77 @@ allocate_data_superblock: ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret - .size allocate_data_superblock, .-allocate_data_superblock - .align 2 - .global FtlGcFreeBadSuperBlk - .type FtlGcFreeBadSuperBlk, %function -FtlGcFreeBadSuperBlk: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - and w22, w0, 65535 - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - ldrh w0, [x19, 3328] - str x27, [sp, 80] - cbz w0, .L998 - add x23, x19, 64 - add x24, x19, 3336 - mov w21, 0 -.L999: - ldrh w0, [x19, 36] - cmp w0, w21 - bhi .L1005 - bl FtlGcReFreshBadBlk -.L998: +.L629: + ldrh w0, [x19, 3696] + cbz w0, .L632 + ldr w2, [x19, 132] 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 -.L1005: - ldrb w0, [x23, w21, sxtw] - mov w1, w22 - adrp x26, .LC103 - add x26, x26, :lo12:.LC103 - mov w20, 0 - bl V2P_block - and w25, w0, 65535 -.L1000: - ldrh w0, [x19, 3328] - cmp w0, w20 - bhi .L1004 - add w21, w21, 1 - and w21, w21, 65535 - b .L999 -.L1004: - ldrh w0, [x24, w20, sxtw 1] - add w27, w20, 1 - cmp w0, w25 - bne .L1001 - mov w1, w25 - mov x0, x26 - bl sftl_printk - mov w0, w25 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - ldrh w0, [x19, 3328] - mov w1, w27 -.L1002: - cmp w20, w0 - bcc .L1003 - sub w0, w0, #1 - strh w0, [x19, 3328] -.L1001: - and w20, w27, 65535 - b .L1000 -.L1003: - sub w2, w1, #1 - ldrh w3, [x24, w1, sxtw 1] - add w20, w20, 1 +.L633: + cmp w0, w2 + bcs .L632 + ldrh w3, [x1, w0, sxtw 1] + cbz w3, .L634 + mov w1, w0 + add x2, x21, :lo12:.LANCHOR0 +.L635: + ldr w3, [x2, 132] + cmp w1, w3 + bcs .L632 + ldr x5, [x2, 3560] + sxtw x6, w1 + lsl x4, x6, 1 + sub w3, w1, w0 + sxtw x3, w3 add w1, w1, 1 - and w20, w20, 65535 - strh w3, [x24, w2, sxtw 1] - b .L1002 - .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk - .align 2 - .global update_vpc_list - .type update_vpc_list, %function -update_vpc_list: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - and w19, w0, 65535 - adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 - str x21, [sp, 32] - ubfiz x1, x19, 1, 16 - ldr x2, [x0, 2376] - ldrh w1, [x2, x1] - cbnz w1, .L1011 - ldrh w1, [x0, 2672] - cmp w1, w19 - bne .L1012 - mov w1, -1 - strh w1, [x0, 2672] -.L1013: - add x21, x20, :lo12:.LANCHOR0 - mov w1, w19 - add x0, x21, 2368 - bl List_remove_node - ldrh w0, [x21, 2400] - cbnz w0, .L1015 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2813 - add x1, x1, 456 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1015: - add x20, x20, :lo12:.LANCHOR0 - ldrh w0, [x20, 2400] - sub w0, w0, #1 - strh w0, [x20, 2400] - mov w0, w19 - bl free_data_superblock - mov w0, w19 - bl FtlGcFreeBadSuperBlk - ldrh w1, [x20, 2400] - ldrh w0, [x20, 2416] - add w0, w0, w1 - ldrh w1, [x20, 44] - cmp w0, w1 - ble .L1019 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2816 - add x1, x1, 456 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1019: - mov w0, 1 - b .L1010 -.L1012: - ldrh w1, [x0, 2424] - cmp w1, w19 - beq .L1018 - ldrh w1, [x0, 2472] - cmp w1, w19 - beq .L1018 - ldrh w0, [x0, 2520] - cmp w0, w19 - bne .L1013 -.L1018: - mov w0, 0 -.L1010: - ldp x19, x20, [sp, 16] - ldr x21, [sp, 32] - ldp x29, x30, [sp], 48 - ret -.L1011: - mov w0, w19 - bl List_update_data_list - b .L1018 - .size update_vpc_list, .-update_vpc_list - .align 2 - .global decrement_vpc_count - .type decrement_vpc_count, %function -decrement_vpc_count: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - and w19, w0, 65535 - stp x21, x22, [sp, 32] - mov w0, 65535 - cmp w19, w0 - beq .L1022 - adrp x20, .LANCHOR0 - add x22, x20, :lo12:.LANCHOR0 - ubfiz x21, x19, 1, 16 - ldr x1, [x22, 2376] - ldrh w0, [x1, x21] - cbnz w0, .L1023 - mov w2, 0 - mov w1, w19 - adrp x0, .LC104 - add x0, x0, :lo12:.LC104 - bl sftl_printk - ldr x0, [x22, 2376] - ldrh w0, [x0, x21] - cbnz w0, .L1024 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2831 - add x1, x1, 472 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1024: - add x22, x20, :lo12:.LANCHOR0 - mov w1, 16 - add x6, x22, 2408 - ldr x0, [x22, 2376] - strh w1, [x0, x21] - mov w1, w19 - mov x0, x6 - bl test_node_in_list - cbz w0, .L1025 - mov w1, w19 - mov x0, x6 - bl List_remove_node - ldrh w0, [x22, 2416] - cbnz w0, .L1026 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2835 - add x1, x1, 472 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1026: - add x20, x20, :lo12:.LANCHOR0 - ldrh w0, [x20, 2416] - sub w0, w0, #1 - strh w0, [x20, 2416] - mov w0, w19 - bl INSERT_DATA_LIST - ldr x0, [x20, 2376] - mov w1, w19 - ldrh w2, [x0, x21] - adrp x0, .LC105 - add x0, x0, :lo12:.LC105 - bl sftl_printk -.L1025: - mov w0, w19 - bl FtlGcRefreshBlock -.L1029: - mov w21, 0 - b .L1021 -.L1023: - sub w0, w0, #1 - strh w0, [x1, x21] -.L1022: - adrp x20, .LANCHOR3 - add x20, x20, :lo12:.LANCHOR3 - mov w1, 65535 - ldrh w0, [x20, -48] - cmp w0, w1 - bne .L1028 - strh w19, [x20, -48] - b .L1029 -.L1028: - cmp w19, w0 - beq .L1029 - bl update_vpc_list - cmp w0, 0 - adrp x1, .LANCHOR0 - add x1, x1, :lo12:.LANCHOR0 - strh w19, [x20, -48] - cset w21, ne - ldr x2, [x1, 2360] - ldr x0, [x1, 2368] - ldr x1, [x1, 2376] - sub x0, x0, x2 - mov x2, -6148914691236517206 - asr x0, x0, 1 - movk x2, 0xaaab, lsl 0 - mul x0, x0, x2 - and x2, x0, 65535 - ldrh w1, [x1, x2, lsl 1] - cbnz w1, .L1021 - cmp w19, w0, uxth - beq .L1021 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2856 - add x1, x1, 472 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1021: - mov w0, w21 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 48 - ret - .size decrement_vpc_count, .-decrement_vpc_count - .align 2 - .global FtlWriteDump_data - .type FtlWriteDump_data, %function -FtlWriteDump_data: - stp x29, x30, [sp, -128]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x20, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - str x25, [sp, 64] - ldrh w2, [x20, 2428] - cbz w2, .L1035 - ldrb w1, [x20, 2432] - cbnz w1, .L1035 - ldrb w1, [x20, 2431] - ldrh w3, [x20, 106] - mul w1, w1, w3 - cmp w2, w1 - beq .L1035 - ldrb w0, [x20, 2434] - cbnz w0, .L1034 - ldr w22, [x20, 2584] - add x1, x29, 92 - ldrh w24, [x20, 36] - mov w2, 0 - sub w22, w22, #1 - mov w0, w22 - bl log2phys - ldr x21, [x20, 3448] - ldr w0, [x29, 92] - ldr x1, [x20, 3440] - str w0, [x29, 100] - cmn w0, #1 - stp x1, x21, [x29, 104] - str w22, [x29, 120] - str wzr, [x21, 4] - beq .L1037 - mov w2, 0 - mov w1, 1 - add x0, x29, 96 - bl FlashReadPages -.L1038: - add x25, x19, :lo12:.LANCHOR0 - lsl w24, w24, 2 - add x20, x25, 2424 - mov w0, -3947 - mov w23, 0 - strh w0, [x21] -.L1039: - cmp w24, w23 - bne .L1043 -.L1040: - add x19, x19, :lo12:.LANCHOR0 - mov w0, 1 - strb w0, [x19, 2434] -.L1034: - 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 -.L1037: - ldrh w2, [x20, 114] - mov w1, 255 - ldr x0, [x20, 3440] - bl ftl_memset - b .L1038 -.L1043: - ldrh w0, [x20, 4] - cbz w0, .L1040 - ldr w0, [x29, 100] - add w23, w23, 1 - stp w22, w0, [x21, 8] - ldrh w0, [x20] - strh w0, [x21, 2] - mov x0, x20 - bl get_new_active_ppa - str w0, [x29, 100] - ldr w0, [x25, 2624] - mov w3, 0 - str w0, [x21, 4] - mov w2, 0 + sxth w1, w1 + ldrh w7, [x5, x4] + strh w7, [x5, x3, lsl 1] + ldr x5, [x2, 3608] + ldr w6, [x5, x6, lsl 2] + str w6, [x5, x3, lsl 2] + ldr x3, [x2, 3560] + strh wzr, [x3, x4] + b .L635 +.L634: add w0, w0, 1 - mov w1, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x25, 2624] - add x0, x29, 96 - bl FlashProgPages - ldrh w0, [x20] - bl decrement_vpc_count - b .L1039 -.L1035: - add x19, x19, :lo12:.LANCHOR0 - strb wzr, [x19, 2434] - b .L1034 - .size FtlWriteDump_data, .-FtlWriteDump_data - .align 2 - .global l2p_flush - .type l2p_flush, %function -l2p_flush: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - add x20, x20, :lo12:.LANCHOR0 - mov w19, 0 - bl FtlWriteDump_data -.L1053: - ldrh w0, [x20, 142] - cmp w0, w19 - bhi .L1055 + sxth w0, w0 + b .L633 +.L630: + ldrh w2, [x0, 148] + cbz w2, .L631 + ldrh w2, [x0, 124] mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 - ret -.L1055: - ldr x1, [x20, 2568] - ubfiz x0, x19, 4, 16 - add x0, x1, x0 - ldr w0, [x0, 4] - tbz w0, #31, .L1054 - mov w0, w19 - bl flush_l2p_region -.L1054: - add w19, w19, 1 - and w19, w19, 65535 - b .L1053 - .size l2p_flush, .-l2p_flush - .align 2 - .global FtlRecoverySuperblock - .type FtlRecoverySuperblock, %function -FtlRecoverySuperblock: - stp x29, x30, [sp, -176]! - mov w1, 65535 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - ldrh w0, [x0] - cmp w0, w1 - beq .L1175 - ldrb w0, [x19, 6] - adrp x20, .LANCHOR0 - str w0, [x29, 156] - add x0, x20, :lo12:.LANCHOR0 - ldrh w27, [x19, 2] - ldrh w0, [x0, 106] - cmp w0, w27 - bne .L1060 - strh wzr, [x19, 4] -.L1181: - strb wzr, [x19, 6] -.L1175: - 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 -.L1060: - ldrh w0, [x19, 16] - mov w21, 0 -.L1061: - cmp w0, w1 - beq .L1062 - mov w1, 1 - bl FtlGetLastWrittenPage - mov w24, w0 - cmn w0, #1 - beq .L1063 - add x0, x20, :lo12:.LANCHOR0 - add x1, x19, 16 - str x1, [x29, 144] - add x5, x19, 16 - mov w21, 0 - mov w10, 65535 - ldrh w1, [x0, 36] - mov w6, 4 - ldrh w8, [x0, 114] - add x1, x1, 8 - ldrh w9, [x0, 116] - add x1, x19, x1, lsl 1 -.L1064: - cmp x5, x1 - bne .L1068 - add x23, x20, :lo12:.LANCHOR0 - mov w2, 0 - mov w1, w21 - ldr x0, [x23, 4024] - bl FlashReadPages - ldr w22, [x23, 2624] - ldr x4, [x23, 4024] - and w9, w24, 65535 - sub w22, w22, #1 - mov w7, 65535 - mov x6, x4 - mov w3, 0 -.L1069: - cmp w21, w3 - bne .L1074 - add w23, w24, 1 - ldr w0, [x4, 4] - and w23, w23, 65535 -.L1177: - lsr w0, w0, 10 - bl P2V_plane - and w28, w0, 65535 - add x0, x20, :lo12:.LANCHOR0 - ldrh w0, [x0, 106] - cmp w0, w23 - bne .L1076 - strh w23, [x19, 2] - strb wzr, [x19, 6] - strh wzr, [x19, 4] -.L1076: - ldr w0, [x29, 156] - cmp w23, w27 - ccmp w28, w0, 0, eq - bne .L1077 -.L1182: - mov w2, w28 - mov w1, w23 - mov x0, x19 - bl ftl_sb_update_avl_pages - b .L1175 -.L1062: - add w21, w21, 1 - and w21, w21, 65535 - add x0, x19, x21, sxtw 1 - ldrh w0, [x0, 16] - b .L1061 -.L1063: - cbz w27, .L1065 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 1804 - add x1, x1, 496 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1065: - ldr w0, [x29, 156] - cmp w0, 0 - ccmp w21, w0, 4, ne - beq .L1066 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 1805 - add x1, x1, 496 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1066: - strh wzr, [x19, 2] - b .L1181 -.L1068: - ldrh w2, [x5] - cmp w2, w10 - beq .L1067 - ldr x4, [x0, 4024] - ubfiz x7, x21, 5, 16 - orr w2, w24, w2, lsl 10 - add x4, x4, x7 - str w2, [x4, 4] - mul w2, w21, w8 - ldr x3, [x0, 4024] - ldr x4, [x0, 3264] - sdiv w2, w2, w6 - add x3, x3, x7 - add x2, x4, x2, sxtw 2 - str x2, [x3, 8] - mul w2, w21, w9 - ldr x4, [x0, 3272] - add w21, w21, 1 - and w21, w21, 65535 - sdiv w2, w2, w6 - add x2, x4, x2, sxtw 2 - str x2, [x3, 16] -.L1067: - add x5, x5, 2 - b .L1064 -.L1074: - ldr w0, [x6] - cbnz w0, .L1070 - ldr x8, [x6, 16] - ldr w5, [x8, 4] - cmn w5, #1 - beq .L1071 - ldr w1, [x23, 2624] - mov w0, w5 - bl ftl_cmp_data_ver - cbz w0, .L1071 - add w5, w5, 1 - str w5, [x23, 2624] -.L1071: - ldr w0, [x8] - cmn w0, #1 - bne .L1073 - ubfiz x3, x3, 5, 16 - and w23, w24, 65535 - add x3, x4, x3 - ldr w0, [x3, 4] - b .L1177 -.L1070: - mov w7, w9 -.L1073: - add w3, w3, 1 - add x6, x6, 32 - and w3, w3, 65535 - b .L1069 -.L1077: - mov w0, 65535 - adrp x21, .LANCHOR3 - cmp w7, w0 - bne .L1078 - ldrb w0, [x19, 8] - cbnz w0, .L1079 -.L1078: - add x0, x21, :lo12:.LANCHOR3 - and w3, w24, 65535 - ldr w1, [x0, -36] - cmn w1, #1 - bne .L1080 - str w22, [x0, -36] -.L1080: - add w0, w27, 7 - cmp w0, w24, uxth - bge .L1128 - sub w25, w3, #7 - and w25, w25, 65535 -.L1081: - add x26, x20, :lo12:.LANCHOR0 - mov w4, 65535 -.L1082: - cmp w25, w3 - bhi .L1089 - ldrh w0, [x26, 36] - mov w24, 0 - ldr x1, [x29, 144] - add x0, x0, 8 - add x0, x19, x0, lsl 1 - b .L1090 -.L1128: - mov w25, w27 - b .L1081 -.L1084: - ldrh w2, [x1] - cmp w2, w4 - beq .L1083 - ldr x5, [x26, 4024] - ubfiz x6, x24, 5, 16 - add w24, w24, 1 - orr w2, w25, w2, lsl 10 - add x5, x5, x6 - and w24, w24, 65535 - str w2, [x5, 4] -.L1083: - add x1, x1, 2 -.L1090: - cmp x0, x1 - bne .L1084 - ldr x0, [x26, 4024] - mov w1, w24 - mov w2, 0 - str w4, [x29, 128] - str w3, [x29, 136] - ubfiz x24, x24, 5, 16 - add x24, x24, 16 - bl FlashReadPages - ldr x1, [x26, 4024] - add x2, x21, :lo12:.LANCHOR3 - ldr w4, [x29, 128] - ldr w3, [x29, 136] - add x0, x1, 16 - add x24, x1, x24 -.L1085: - cmp x24, x0 - bne .L1088 - add w25, w25, 1 - and w25, w25, 65535 - b .L1082 -.L1088: - ldr w1, [x0, -16] - cbnz w1, .L1079 - ldr x1, [x0] - ldrh w5, [x1] - cmp w5, w4 - beq .L1087 - ldr w1, [x1, 4] - cmn w1, #1 - beq .L1087 - str w1, [x2, -36] -.L1087: - add x0, x0, 32 - b .L1085 -.L1089: - add x0, x21, :lo12:.LANCHOR3 - mov w1, -1 - str w1, [x0, -36] -.L1079: - add x21, x21, :lo12:.LANCHOR3 - mov w0, 1 - mov w25, w27 - add x20, x20, :lo12:.LANCHOR0 - strh w0, [x21, -32] - sub x0, x21, #184 - bl FtlMapBlkWriteDump_data - sub x0, x21, #24 - str x0, [x29, 112] -.L1091: - ldrh w0, [x20, 36] - mov w24, 0 - ldr x1, [x29, 144] - mov w4, 65535 - add x0, x0, 8 - add x0, x19, x0, lsl 1 -.L1092: - cmp x0, x1 - bne .L1094 - ldr x0, [x20, 4024] - mov w1, w24 - mov w2, 0 - bl FlashReadPages - ubfiz x0, x24, 5, 16 - str x0, [x29, 120] - adrp x0, .LANCHOR1 - add x0, x0, :lo12:.LANCHOR1 - add x0, x0, 496 - mov x24, 0 - str x0, [x29, 128] -.L1095: - ldr x0, [x29, 120] - cmp x0, x24 - bne .L1122 - add w25, w25, 1 - ldrh w0, [x20, 106] - and w25, w25, 65535 - cmp w0, w25 - bne .L1091 - ldrh w1, [x20, 36] - mov w0, 0 - strh w25, [x19, 2] - mov w2, 65535 - strh wzr, [x19, 4] -.L1123: - cmp w0, w1 - beq .L1175 - ldr x4, [x29, 144] - ldrh w3, [x4], 2 - str x4, [x29, 144] - cmp w3, w2 - beq .L1124 - strb w0, [x19, 6] - b .L1175 -.L1094: - ldrh w2, [x1] - cmp w2, w4 - beq .L1093 - ldr x3, [x20, 4024] - ubfiz x5, x24, 5, 16 - add w24, w24, 1 - orr w2, w25, w2, lsl 10 - add x3, x3, x5 - and w24, w24, 65535 - str w2, [x3, 4] -.L1093: - add x1, x1, 2 - b .L1092 -.L1122: - ldr x4, [x20, 4024] - add x4, x4, x24 - ldr w5, [x4, 4] - str w5, [x29, 172] - lsr w0, w5, 10 - bl P2V_plane - and w0, w0, 65535 - cmp w25, w27 - bcc .L1096 - ldr w1, [x29, 156] - ccmp w1, w0, 0, eq - bhi .L1096 - cmp w25, w23 - ccmp w28, w0, 0, eq - beq .L1097 - ldr w0, [x4] - cmn w0, #1 - beq .L1098 - ldr x3, [x4, 16] - mov w0, 61589 - ldrh w1, [x3] - cmp w1, w0 - beq .L1099 -.L1106: - ldrh w0, [x19] -.L1180: - bl decrement_vpc_count -.L1096: - add x24, x24, 32 - b .L1095 -.L1099: - ldr w22, [x3, 4] - cmn w22, #1 - beq .L1100 - ldr w1, [x20, 2624] - mov w0, w22 - str x3, [x29, 136] - bl ftl_cmp_data_ver - ldr x3, [x29, 136] - cbz w0, .L1100 - add w0, w22, 1 - str w0, [x20, 2624] -.L1100: - ldrh w1, [x3] - mov w0, 61589 - cmp w1, w0 - beq .L1101 - ldr x1, [x29, 128] - mov w2, 1954 - str x3, [x29, 136] - adrp x0, .LC1 - add x0, x0, :lo12:.LC1 - bl sftl_printk - ldr x3, [x29, 136] -.L1101: - ldp w26, w0, [x3, 8] - add x1, x29, 168 - str w0, [x29, 164] - mov w2, 0 - mov w0, w26 - bl log2phys - ldr w1, [x21, -36] - cmn w1, #1 - beq .L1102 - mov w0, w22 - bl ftl_cmp_data_ver - cbz w0, .L1102 - ldr w1, [x29, 164] - cmn w1, #1 - beq .L1103 - ldr x0, [x20, 4024] - mov w2, 0 - add x0, x0, x24 - ldr x4, [x0, 16] - str w1, [x0, 4] - mov w1, 1 - str x4, [x29, 136] - ldr x0, [x20, 4024] - add x0, x0, x24 - bl FlashReadPages - ldr x0, [x20, 4024] - ldr x4, [x29, 136] - add x3, x0, x24 - ldr w0, [x0, x24] - cmn w0, #1 - bne .L1104 -.L1105: - mov w0, -1 - str w0, [x29, 164] - ldrh w0, [x19] - bl decrement_vpc_count -.L1113: - ldr w4, [x29, 164] - cmn w4, #1 - beq .L1096 -.L1127: - lsr w0, w4, 10 - bl P2V_block_in_plane - and w26, w0, 65535 - ldrh w0, [x20, 44] - mov w3, w26 - cmp w0, w26 - bhi .L1118 - ldr x1, [x29, 128] - mov w2, 2055 - adrp x0, .LC1 - str w26, [x29, 136] - add x0, x0, :lo12:.LC1 - bl sftl_printk - ldr w3, [x29, 136] -.L1118: - ldr x1, [x20, 2376] - ubfiz x0, x26, 1, 16 - ldrh w0, [x1, x0] - cbz w0, .L1119 - mov w0, w3 - b .L1180 -.L1103: - ldp w1, w0, [x29, 168] - cmp w1, w0 - bne .L1106 - mov w2, 1 - add x1, x29, 164 - mov w0, w26 - bl log2phys - b .L1106 -.L1104: - ldr w0, [x4, 8] - cmp w26, w0 - bne .L1105 - ldr w0, [x4, 4] - str w0, [x29, 136] - str x4, [x29, 104] - uxtw x1, w0 - ldr w0, [x21, -36] - bl ftl_cmp_data_ver - cbz w0, .L1105 - ldp w0, w1, [x29, 168] - ldr x4, [x29, 104] - cmp w0, w1 - ldr w1, [x29, 164] - bne .L1108 -.L1178: - mov w0, w26 - bl FtlReUsePrevPpa - b .L1105 -.L1108: - cmp w0, w1 - beq .L1105 - cmn w0, #1 - beq .L1109 - ldr x4, [x3, 16] - mov w2, 0 - str w0, [x3, 4] - mov w1, 1 - str x4, [x29, 104] - ldr x0, [x20, 4024] - add x0, x0, x24 - bl FlashReadPages - ldr x4, [x29, 104] -.L1110: - adrp x0, .LANCHOR0+4024 - ldr x0, [x0, #:lo12:.LANCHOR0+4024] - ldr w0, [x0, x24] - cmn w0, #1 - beq .L1111 - ldr w3, [x4, 4] - ldr w0, [x21, -36] - mov w1, w3 - bl ftl_cmp_data_ver - cbz w0, .L1111 - ldr w0, [x29, 136] - mov w1, w3 - bl ftl_cmp_data_ver - cbz w0, .L1105 -.L1111: - ldr w1, [x29, 164] - b .L1178 -.L1109: - str w0, [x3] - b .L1110 -.L1102: - ldp w1, w0, [x29, 168] - cmp w1, w0 - beq .L1113 - mov w2, 1 - add x1, x29, 172 - mov w0, w26 - bl log2phys - ldr w4, [x29, 168] - cmn w4, #1 - beq .L1113 - ldr w0, [x29, 164] - cmp w4, w0 - beq .L1127 - lsr w0, w4, 10 - bl P2V_block_in_plane - ldrh w1, [x20, 2424] - and w0, w0, 65535 - cmp w1, w0 - beq .L1117 - ldrh w1, [x20, 2472] - cmp w1, w0 - beq .L1117 - ldrh w1, [x20, 2520] - cmp w1, w0 - bne .L1113 -.L1117: - ldr x0, [x20, 4024] - mov w2, 0 - mov w1, 1 - str w4, [x0, 4] - ldr x3, [x0, 16] - ldr x0, [x20, 4024] - str x3, [x29, 136] - bl FlashReadPages - ldr x0, [x20, 4024] - ldr w0, [x0] - cmn w0, #1 - beq .L1113 - ldr x3, [x29, 136] - mov w0, w22 - ldr w1, [x3, 4] - bl ftl_cmp_data_ver - cbnz w0, .L1113 - mov w2, 1 - add x1, x29, 168 - mov w0, w26 - bl log2phys - b .L1113 -.L1119: - mov w1, w26 - adrp x0, .LC106 - add x0, x0, :lo12:.LC106 - bl sftl_printk - b .L1096 -.L1098: - ldr w0, [x21, -28] - cmp w0, 31 - bhi .L1120 - ldr x1, [x29, 112] - str w5, [x1, w0, uxtw 2] +.L640: + mov w6, w0 + cmp w0, w2 + bge .L631 + ldrh w3, [x1, w0, sxtw 1] + cbz w3, .L641 + add x1, x21, :lo12:.LANCHOR0 +.L642: + ldrh w2, [x1, 124] + cmp w0, w2 + bge .L631 + ldr x4, [x1, 152] + sxtw x5, w0 + lsl x3, x5, 1 + sub w2, w0, w6 + sxtw x2, w2 add w0, w0, 1 - str w0, [x21, -28] -.L1120: - ldrh w0, [x19] - bl decrement_vpc_count - ldr w0, [x21, -36] - cmn w0, #1 - bne .L1121 -.L1179: - str w22, [x21, -36] - b .L1096 -.L1121: - cmp w22, w0 - bcs .L1096 - b .L1179 -.L1124: + sxth w0, w0 + ldrh w7, [x4, x3] + strh w7, [x4, x2, lsl 1] + ldr x4, [x1, 3584] + ldr w5, [x4, x5, lsl 2] + str w5, [x4, x2, lsl 2] + ldr x2, [x1, 152] + strh wzr, [x2, x3] + b .L642 +.L641: add w0, w0, 1 - and w0, w0, 65535 - b .L1123 -.L1097: - strb w28, [x19, 6] - strh w23, [x19, 2] - b .L1182 - .size FtlRecoverySuperblock, .-FtlRecoverySuperblock - .align 2 - .global FtlSuperblockPowerLostFix - .type FtlSuperblockPowerLostFix, %function -FtlSuperblockPowerLostFix: - stp x29, x30, [sp, -96]! - adrp x2, .LANCHOR0 - mov w3, 61589 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x0 - mov w0, -1 - stp x21, x22, [sp, 32] - str w0, [x29, 88] - add x0, x2, :lo12:.LANCHOR0 - str x23, [sp, 48] - mov x20, x0 - mov x23, x2 - mov w22, 7 - ldr x21, [x0, 3448] - ldr x1, [x0, 3440] - stp x1, x21, [x29, 72] - mov w1, -3 - str w1, [x21, 8] - mov w1, -2 - str w1, [x21, 12] - ldrh w1, [x19] - strh w1, [x21, 2] - strh wzr, [x21] - ldr x1, [x0, 3440] - str w3, [x1] - mov w3, 22136 - movk w3, 0x1234, lsl 16 - ldr x1, [x0, 3440] - str w3, [x1, 4] -.L1184: - subs w22, w22, #1 - beq .L1186 - ldrh w0, [x19, 4] - cbnz w0, .L1185 -.L1186: - add x2, x23, :lo12:.LANCHOR0 - ldrh w0, [x19] - ldrh w4, [x19, 4] - ldr x3, [x2, 2376] - lsl x0, x0, 1 - ldrh w1, [x3, x0] - sub w1, w1, w4 - strh w1, [x3, x0] - strb wzr, [x19, 6] - ldrh w0, [x2, 106] - strh w0, [x19, 2] - strh wzr, [x19, 4] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldr x23, [sp, 48] - ldp x29, x30, [sp], 96 - ret -.L1185: - mov x0, x19 - bl get_new_active_ppa - str w0, [x29, 68] - cmn w0, #1 - beq .L1186 - ldr w0, [x20, 2624] - mov w3, 0 - str w0, [x21, 4] - mov w2, 0 - add w0, w0, 1 - mov w1, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x20, 2624] - add x0, x29, 64 - bl FlashProgPages - ldrh w0, [x19] - bl decrement_vpc_count - b .L1184 - .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix + sxth w0, w0 + b .L640 + .size FtlScanSysBlk, .-FtlScanSysBlk .align 2 .global FtlLoadBbt .type FtlLoadBbt, %function @@ -8116,20 +4640,20 @@ FtlLoadBbt: stp x23, x24, [sp, 48] add x23, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - add x21, x23, 3408 + add x21, x23, 3712 mov w24, 61649 - ldr x0, [x23, 3440] - ldr x22, [x23, 3448] + ldr x0, [x23, 3448] + ldr x22, [x23, 3512] stp x0, x22, [x21, 8] bl FtlBbtMemInit ldrh w20, [x23, 102] sub w20, w20, #1 and w20, w20, 65535 -.L1196: +.L667: ldrh w0, [x23, 102] sub w0, w0, #16 cmp w20, w0 - ble .L1199 + ble .L670 lsl w0, w20, 10 mov w2, 1 str w0, [x21, 4] @@ -8138,7 +4662,7 @@ FtlLoadBbt: bl FlashReadPages ldr w0, [x21] cmn w0, #1 - bne .L1197 + bne .L668 ldr w0, [x21, 4] mov w2, 1 mov w1, w2 @@ -8146,3421 +4670,140 @@ FtlLoadBbt: str w0, [x21, 4] mov x0, x21 bl FlashReadPages -.L1197: +.L668: ldr w0, [x21] cmn w0, #1 - beq .L1198 + beq .L669 ldrh w0, [x22] cmp w0, w24 - bne .L1198 + bne .L669 ldr w1, [x22, 4] str w1, [x23, 168] strh w20, [x23, 160] ldrh w1, [x22, 8] strh w1, [x23, 164] -.L1199: +.L670: add x21, x19, :lo12:.LANCHOR0 mov w0, 65535 ldrh w1, [x21, 160] cmp w1, w0 - beq .L1213 + beq .L684 ldrh w1, [x21, 164] cmp w1, w0 - beq .L1203 - add x0, x21, 3408 + beq .L674 + add x0, x21, 3712 lsl w1, w1, 10 mov w2, 1 str w1, [x0, 4] mov w1, w2 bl FlashReadPages - ldr w0, [x21, 3408] + ldr w0, [x21, 3712] cmn w0, #1 - beq .L1203 + beq .L674 ldrh w1, [x22] mov w0, 61649 cmp w1, w0 - bne .L1203 + bne .L674 ldr w1, [x21, 168] ldr w0, [x22, 4] cmp w0, w1 - bls .L1203 + bls .L674 str w0, [x21, 168] ldrh w1, [x21, 164] ldrh w0, [x22, 8] strh w1, [x21, 160] strh w0, [x21, 164] -.L1203: +.L674: add x20, x19, :lo12:.LANCHOR0 mov w1, 1 - add x23, x20, 3408 + add x23, x20, 3712 mov w24, 61649 ldrh w0, [x20, 160] bl FtlGetLastWrittenPage sxth w21, w0 add w0, w0, 1 strh w0, [x20, 162] -.L1205: - tbz w21, #31, .L1208 +.L676: + tbz w21, #31, .L679 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 254 - add x1, x1, 520 + mov w2, 253 + add x1, x1, 304 add x0, x0, :lo12:.LC1 bl sftl_printk -.L1207: +.L678: add x1, x19, :lo12:.LANCHOR0 ldrh w0, [x22, 10] mov w2, 65535 strh w0, [x1, 166] ldrh w0, [x22, 12] cmp w0, w2 - beq .L1210 + beq .L681 ldr w2, [x1, 32] cmp w0, w2 - beq .L1210 + beq .L681 ldrh w1, [x1, 46] lsr w1, w1, 2 cmp w2, w1 - bcs .L1210 + bcs .L681 cmp w0, w1 - bcs .L1210 + bcs .L681 bl FtlSysBlkNumInit -.L1210: +.L681: add x19, x19, :lo12:.LANCHOR0 - adrp x21, .LANCHOR3 - add x22, x19, 192 - add x21, x21, :lo12:.LANCHOR3 mov w20, 0 -.L1211: + add x21, x19, 192 +.L682: ldrh w0, [x19, 58] cmp w20, w0 - bcc .L1212 + bcc .L683 mov w0, 0 -.L1195: +.L666: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret -.L1198: +.L669: sub w20, w20, #1 and w20, w20, 65535 - b .L1196 -.L1208: + b .L667 +.L679: ldrh w0, [x20, 160] mov w2, 1 mov w1, w2 orr w0, w21, w0, lsl 10 str w0, [x23, 4] - ldr x0, [x20, 3440] + ldr x0, [x20, 3448] str x0, [x23, 8] mov x0, x23 bl FlashReadPages ldr w0, [x23] cmn w0, #1 - beq .L1206 + beq .L677 ldrh w0, [x22] cmp w0, w24 - beq .L1207 -.L1206: + beq .L678 +.L677: sub w21, w21, #1 sxth w21, w21 - b .L1205 -.L1212: - ldrh w2, [x21, -192] - ldr x0, [x19, 3416] + b .L676 +.L683: + ldrh w2, [x19, 3624] + ldr x0, [x19, 3720] mul w1, w2, w20 lsl w2, w2, 2 add w20, w20, 1 add x1, x0, x1, lsl 2 - ldr x0, [x22], 8 + ldr x0, [x21], 8 bl ftl_memcpy - b .L1211 -.L1213: + b .L682 +.L684: mov w0, -1 - b .L1195 + b .L666 .size FtlLoadBbt, .-FtlLoadBbt .align 2 - .global FtlMakeBbt - .type FtlMakeBbt, %function -FtlMakeBbt: - stp x29, x30, [sp, -96]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - stp x25, x26, [sp, 64] - stp x21, x22, [sp, 32] - mov x21, x19 - stp x23, x24, [sp, 48] - mov w24, 0 - stp x27, x28, [sp, 80] - bl FtlBbtMemInit - bl FtlLoadFactoryBbt - adrp x28, .LANCHOR3 - add x0, x19, :lo12:.LANCHOR0 - add x28, x28, :lo12:.LANCHOR3 - add x26, x0, 192 - add x25, x0, 172 - mov x19, x0 - add x20, x0, 3408 -.L1226: - ldrh w0, [x19, 58] - cmp w24, w0 - bcc .L1232 - add x20, x21, :lo12:.LANCHOR0 - mov w19, 0 -.L1233: - ldrh w0, [x20, 118] - cmp w0, w19 - bhi .L1234 - add x20, x20, 160 - ldrh w19, [x20, 12] - mov w22, 65535 - sub w19, w19, #1 - and w19, w19, 65535 -.L1235: - ldrh w0, [x20, 12] - sub w0, w0, #48 - cmp w19, w0 - ble .L1239 - mov w0, w19 - bl FtlBbmIsBadBlock - cmp w0, 1 - beq .L1236 - mov w0, w19 - bl FlashTestBlk - cbz w0, .L1237 - mov w0, w19 - bl FtlBbmMapBadBlock -.L1236: - sub w19, w19, #1 - and w19, w19, 65535 - b .L1235 -.L1232: - ldr x0, [x19, 3440] - mov w2, 65535 - ldr x27, [x19, 3448] - ldrh w1, [x25] - stp x0, x27, [x20, 8] - cmp w1, w2 - beq .L1227 - ldrh w23, [x19, 102] - mov w2, 1 - madd w23, w23, w24, w1 - mov w1, w2 - lsl w0, w23, 10 - str w0, [x20, 4] - mov x0, x20 - bl FlashReadPages - ldr x1, [x20, 8] - ldr x0, [x26] - ldrh w2, [x19, 102] - add w2, w2, 7 - lsr w2, w2, 3 - bl ftl_memcpy -.L1228: - mov w0, w23 - add w24, w24, 1 - bl FtlBbmMapBadBlock - add x26, x26, 8 - add x25, x25, 2 - b .L1226 -.L1227: - mov w1, w24 - bl FlashGetBadBlockList - ldr x0, [x20, 8] - ldr x1, [x26] - bl FtlBbt2Bitmap - ldrh w22, [x19, 102] -.L1230: - sub w22, w22, #1 - and w22, w22, 65535 -.L1229: - ldrh w0, [x19, 102] - madd w0, w24, w0, w22 - bl FtlBbmIsBadBlock - cmp w0, 1 - beq .L1230 - ldr x0, [x19, 3448] - mov w2, 16 - strh w22, [x25] - mov w1, 0 - bl ftl_memset - ldr x0, [x19, 3440] - mov w2, 4096 - mov w1, 0 - bl ftl_memset - str wzr, [x27, 4] - mov w0, -3872 - strh w0, [x27] - ldrh w0, [x25] - strh w0, [x27, 2] - ldrh w23, [x19, 102] - ldrh w0, [x25] - ldr x1, [x26] - ldrh w2, [x28, -192] - madd w23, w23, w24, w0 - lsl w2, w2, 2 - lsl w0, w23, 10 - str w0, [x20, 4] - ldr x0, [x20, 8] - bl ftl_memcpy - mov w2, 1 - mov x0, x20 - mov w1, w2 - bl FlashEraseBlocks - mov w3, 1 - mov x0, x20 - mov w2, w3 - mov w1, w3 - bl FlashProgPages - ldr w0, [x20] - cmn w0, #1 - bne .L1228 - mov w0, w23 - bl FtlBbmMapBadBlock - b .L1229 -.L1234: - mov w0, w19 - add w19, w19, 1 - bl FtlBbmMapBadBlock - and w19, w19, 65535 - b .L1233 -.L1237: - ldrh w0, [x20] - cmp w0, w22 - bne .L1238 - strh w19, [x20] - b .L1236 -.L1238: - strh w19, [x20, 4] -.L1239: - add x21, x21, :lo12:.LANCHOR0 - mov w2, 2 - ldr x1, [x21, 3968] - ldrh w0, [x21, 160] - str wzr, [x21, 168] - strh wzr, [x21, 162] - lsl w0, w0, 10 - str w0, [x1, 4] - ldr x0, [x21, 3968] - ldrh w1, [x21, 164] - lsl w1, w1, 10 - str w1, [x0, 36] - mov w1, 1 - bl FlashEraseBlocks - ldrh w0, [x21, 160] - bl FtlBbmMapBadBlock - ldrh w0, [x21, 164] - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - strh wzr, [x21, 162] - ldr w0, [x21, 168] - ldrh w1, [x21, 164] - add w0, w0, 1 - str w0, [x21, 168] - ldrh w0, [x21, 160] - strh w0, [x21, 164] - strh w1, [x21, 160] - bl FtlBbmTblFlush - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 96 - ret - .size FtlMakeBbt, .-FtlMakeBbt - .align 2 - .global FtlVendorPartWrite - .type FtlVendorPartWrite, %function -FtlVendorPartWrite: - stp x29, x30, [sp, -208]! - add x29, sp, 0 - stp x27, x28, [sp, 80] - mov w27, w0 - stp x21, x22, [sp, 32] - adrp x22, .LANCHOR0 - stp x23, x24, [sp, 48] - mov x24, x2 - add w2, w0, w1 - add x0, x22, :lo12:.LANCHOR0 - stp x19, x20, [sp, 16] - mov w28, w1 - stp x25, x26, [sp, 64] - ldrh w1, [x0, 100] - cmp w2, w1 - bhi .L1253 - ldrh w21, [x0, 112] - adrp x26, .LANCHOR3 - add x25, x26, :lo12:.LANCHOR3 - mov w23, 0 - sub x25, x25, #112 - lsr w21, w27, w21 -.L1247: - cbnz w28, .L1252 -.L1245: - mov w0, w23 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 208 - ret -.L1252: - add x2, x22, :lo12:.LANCHOR0 - add x0, x26, :lo12:.LANCHOR3 - ldrh w1, [x2, 62] - ldr x0, [x0, -224] - udiv w20, w27, w1 - ldr w4, [x0, w21, uxtw 2] - and w0, w28, 65535 - msub w20, w20, w1, w27 - sub w19, w1, w20 - and w19, w19, 65535 - cmp w28, w19 - csel w19, w0, w19, cc - cbz w4, .L1249 - cmp w19, w1 - beq .L1249 - ldr x0, [x2, 4056] - mov w2, 1 - str x0, [x29, 120] - add x0, x29, 144 - mov w1, w2 - str x0, [x29, 128] - str w4, [x29, 116] - add x0, x29, 112 - bl FlashReadPages -.L1250: - add x5, x22, :lo12:.LANCHOR0 - lsl w4, w19, 9 - lsl w20, w20, 9 - mov w2, w4 - asr w20, w20, 2 - mov x1, x24 - ldr x0, [x5, 4056] - sub w28, w28, w19 - str w4, [x29, 108] - add w27, w27, w19 - str x5, [x29, 96] - add x0, x0, x20, sxtw 2 - bl ftl_memcpy - ldr x5, [x29, 96] - mov w1, w21 - mov x0, x25 - add w21, w21, 1 - ldr x2, [x5, 4056] - bl FtlMapWritePage - cmn w0, #1 - ldr w4, [x29, 108] - csinv w23, w23, wzr, ne - add x24, x24, x4, sxtw - b .L1247 -.L1249: - add x0, x22, :lo12:.LANCHOR0 - mov w1, 0 - ldrh w2, [x0, 114] - ldr x0, [x0, 4056] - bl ftl_memset - b .L1250 -.L1253: - mov w23, -1 - b .L1245 - .size FtlVendorPartWrite, .-FtlVendorPartWrite - .align 2 - .global Ftl_save_ext_data - .type Ftl_save_ext_data, %function -Ftl_save_ext_data: - adrp x0, .LANCHOR0 - add x0, x0, :lo12:.LANCHOR0 - mov w1, 19539 - movk w1, 0x4654, lsl 16 - ldr w3, [x0, 2720] - cmp w3, w1 - bne .L1261 - stp x29, x30, [sp, -16]! - add x2, x0, 2720 - mov w1, 69 - add x29, sp, 0 - movk w1, 0x5000, lsl 16 - str w1, [x2, 4] - ldr w1, [x0, 2612] - str w1, [x2, 88] - ldr w1, [x0, 2616] - str w1, [x2, 92] - ldr w1, [x0, 2608] - str w1, [x2, 8] - ldr w1, [x0, 2596] - str w1, [x2, 12] - ldr w1, [x0, 2588] - str w1, [x2, 16] - ldr w1, [x0, 2604] - str w1, [x2, 20] - ldr w1, [x0, 2632] - str w1, [x2, 28] - ldr w1, [x0, 2640] - str w1, [x2, 32] - ldr w1, [x0, 2592] - str w1, [x2, 36] - ldr w1, [x0, 2600] - str w1, [x2, 40] - ldr w1, [x0, 2644] - ldr w0, [x0, 2648] - stp w1, w0, [x2, 44] - mov w1, 1 - mov w0, 0 - bl FtlVendorPartWrite - ldp x29, x30, [sp], 16 - ret -.L1261: - ret - .size Ftl_save_ext_data, .-Ftl_save_ext_data - .align 2 - .global FtlEctTblFlush - .type FtlEctTblFlush, %function -FtlEctTblFlush: - adrp x1, .LANCHOR3 - add x1, x1, :lo12:.LANCHOR3 - ldrh w2, [x1, 104] - cmp w2, 31 - bhi .L1268 - add w2, w2, 1 - strh w2, [x1, 104] - mov w2, 1 -.L1265: - adrp x1, .LANCHOR0 - cbnz w0, .L1266 - add x0, x1, :lo12:.LANCHOR0 - ldr x0, [x0, 4080] - ldr w3, [x0, 20] - ldr w0, [x0, 16] - add w2, w2, w3 - cmp w0, w2 - bcc .L1270 -.L1266: - add x0, x1, :lo12:.LANCHOR0 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - ldr x1, [x0, 4080] - ldr w2, [x1, 16] - str w2, [x1, 20] - mov w2, 17221 - movk w2, 0x4254, lsl 16 - str w2, [x1] - ldr x2, [x0, 4080] - ldrh w1, [x0, 4064] - lsl w3, w1, 9 - str wzr, [x2, 4] - str w3, [x2, 12] - ldr w3, [x2, 8] - add w3, w3, 1 - str w3, [x2, 8] - ldr x2, [x0, 4080] - mov w0, 64 - bl FtlVendorPartWrite - bl Ftl_save_ext_data - mov w0, 0 - ldp x29, x30, [sp], 16 - ret -.L1268: - mov w2, 32 - b .L1265 -.L1270: - mov w0, 0 - ret - .size FtlEctTblFlush, .-FtlEctTblFlush - .align 2 - .global sftl_vendor_write - .type sftl_vendor_write, %function -sftl_vendor_write: - stp x29, x30, [sp, -16]! - add w0, w0, 256 - add x29, sp, 0 - bl FtlVendorPartWrite - ldp x29, x30, [sp], 16 - ret - .size sftl_vendor_write, .-sftl_vendor_write - .align 2 - .global FtlVendorPartRead - .type FtlVendorPartRead, %function -FtlVendorPartRead: - stp x29, x30, [sp, -208]! - add x29, sp, 0 - stp x23, x24, [sp, 48] - mov w23, w0 - stp x25, x26, [sp, 64] - adrp x24, .LANCHOR0 - mov x26, x2 - add w2, w0, w1 - add x0, x24, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - stp x19, x20, [sp, 16] - mov w22, w1 - stp x27, x28, [sp, 80] - ldrh w1, [x0, 100] - cmp w2, w1 - bhi .L1283 - ldrh w21, [x0, 112] - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - mov w25, 0 - sub x0, x0, #112 - str x0, [x29, 104] - lsr w21, w23, w21 -.L1276: - cbnz w22, .L1282 -.L1274: - mov w0, w25 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 208 - ret -.L1282: - add x28, x24, :lo12:.LANCHOR0 - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldrh w19, [x28, 62] - ldr x0, [x0, -224] - udiv w20, w23, w19 - ldr w4, [x0, w21, uxtw 2] - and w0, w22, 65535 - msub w20, w20, w19, w23 - sub w19, w19, w20 - and w19, w19, 65535 - cmp w22, w19 - csel w19, w0, w19, cc - lsl w27, w19, 9 - cbz w4, .L1278 - ldr x0, [x28, 4056] - mov w2, 1 - str x0, [x29, 120] - add x0, x29, 144 - str w4, [x29, 100] - mov w1, w2 - str w4, [x29, 116] - str x0, [x29, 128] - add x0, x29, 112 - bl FlashReadPages - ldr w0, [x29, 112] - ldr w4, [x29, 100] - cmn w0, #1 - ldr w0, [x28, 3408] - csinv w25, w25, wzr, ne - cmp w0, 256 - bne .L1280 - mov w2, w4 - mov w1, w21 - adrp x0, .LC107 - add x0, x0, :lo12:.LC107 - bl sftl_printk - ldr x2, [x28, 4056] - mov w1, w21 - ldr x0, [x29, 104] - bl FtlMapWritePage -.L1280: - add x0, x24, :lo12:.LANCHOR0 - lsl w20, w20, 9 - asr w20, w20, 2 - mov w2, w27 - ldr x1, [x0, 4056] - mov x0, x26 - add x1, x1, x20, sxtw 2 - bl ftl_memcpy -.L1281: - add w21, w21, 1 - sub w22, w22, w19 - add w23, w23, w19 - add x26, x26, x27, sxtw - b .L1276 -.L1278: - mov w2, w27 - mov w1, 0 - mov x0, x26 - bl ftl_memset - b .L1281 -.L1283: - mov w25, -1 - b .L1274 - .size FtlVendorPartRead, .-FtlVendorPartRead - .align 2 - .global FtlLoadEctTbl - .type FtlLoadEctTbl, %function -FtlLoadEctTbl: - stp x29, x30, [sp, -32]! - mov w0, 64 - add x29, sp, 0 - str x19, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - ldrh w1, [x19, 4064] - ldr x2, [x19, 4080] - bl FtlVendorPartRead - ldr x0, [x19, 4080] - ldr w1, [x0] - mov w0, 17221 - movk w0, 0x4254, lsl 16 - cmp w1, w0 - beq .L1286 - adrp x1, .LC108 - adrp x0, .LC71 - add x1, x1, :lo12:.LC108 - add x0, x0, :lo12:.LC71 - bl sftl_printk - ldr x0, [x19, 4080] - mov w1, 0 - ldrh w2, [x19, 4064] - lsl w2, w2, 9 - bl ftl_memset -.L1286: - mov w0, 0 - ldr x19, [sp, 16] - ldp x29, x30, [sp], 32 - ret - .size FtlLoadEctTbl, .-FtlLoadEctTbl - .align 2 - .global Ftl_load_ext_data - .type Ftl_load_ext_data, %function -Ftl_load_ext_data: - stp x29, x30, [sp, -48]! - mov w1, 1 - mov w0, 0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x20, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - add x22, x20, 2720 - mov w21, 19539 - mov x2, x22 - bl FtlVendorPartRead - ldr w0, [x20, 2720] - movk w21, 0x4654, lsl 16 - cmp w0, w21 - beq .L1289 - mov w2, 512 - mov w1, 0 - mov x0, x22 - bl ftl_memset - str w21, [x20, 2720] -.L1289: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 19539 - movk w2, 0x4654, lsl 16 - ldr w3, [x0, 2720] - cmp w3, w2 - bne .L1290 - ldr w2, [x0, 2808] - str w2, [x0, 2612] - ldr w2, [x0, 2812] - str w2, [x0, 2616] - ldr w2, [x0, 2728] - str w2, [x0, 2608] - ldr w2, [x0, 2732] - str w2, [x0, 2596] - ldr w2, [x0, 2736] - str w2, [x0, 2588] - ldr w2, [x0, 2740] - str w2, [x0, 2604] - ldr w2, [x0, 2748] - str w2, [x0, 2632] - ldr w2, [x0, 2752] - str w2, [x0, 2640] - ldr w2, [x0, 2756] - str w2, [x0, 2592] - ldr w2, [x0, 2760] - ldr w1, [x0, 2768] - str w2, [x0, 2600] - ldr w2, [x0, 2764] - str w1, [x0, 2648] - str w2, [x0, 2644] -.L1290: - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x0, 2632] - ldrh w1, [x0, 96] - ldr w3, [x0, 2628] - madd w1, w1, w3, w2 - ldrh w2, [x0, 44] - udiv w1, w1, w2 - str w1, [x0, 2636] - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 48 - ret - .size Ftl_load_ext_data, .-Ftl_load_ext_data - .align 2 - .global sftl_vendor_read - .type sftl_vendor_read, %function -sftl_vendor_read: - stp x29, x30, [sp, -16]! - add w0, w0, 256 - add x29, sp, 0 - bl FtlVendorPartRead - ldp x29, x30, [sp], 16 - ret - .size sftl_vendor_read, .-sftl_vendor_read - .align 2 - .global FtlVpcTblFlush - .type FtlVpcTblFlush, %function -FtlVpcTblFlush: - stp x29, x30, [sp, -80]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - stp x23, x24, [sp, 48] - adrp x23, .LANCHOR0 - add x19, x23, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - stp x25, x26, [sp, 64] - add x20, x19, 2312 - add x25, x19, 3408 - mov w22, 0 - ldr x21, [x19, 3448] - mov w24, 65535 - ldr x0, [x19, 3440] - ldrh w1, [x19, 2656] - str x0, [x19, 3416] - str x21, [x19, 3424] - strh w1, [x21, 2] - mov w1, -3932 - strh w1, [x21] - str wzr, [x21, 12] - ldr w1, [x19, 2664] - stp w1, wzr, [x21, 4] - mov w1, 19539 - movk w1, 0x4654, lsl 16 - str w1, [x19, 2312] - mov w1, 69 - ldrb w2, [x19, 2430] - movk w1, 0x5000, lsl 16 - str w1, [x20, 4] - ldrh w1, [x19, 2424] - strh w1, [x20, 14] - ldrh w1, [x19, 2426] - ldrh w0, [x19, 2662] - strh w0, [x20, 8] - ldrh w0, [x19, 58] - orr w1, w2, w1, lsl 6 - strb w0, [x20, 10] - strh w1, [x20, 16] - ldrh w1, [x19, 2472] - ldrb w0, [x19, 2432] - strh w1, [x20, 18] - ldrb w2, [x19, 2478] - ldrh w1, [x19, 2474] - strb w0, [x20, 11] - ldrb w0, [x19, 2480] - strb w0, [x20, 12] - orr w1, w2, w1, lsl 6 - ldrb w0, [x19, 2528] - strb w0, [x20, 13] - ldr w0, [x19, 2628] - strh w1, [x20, 20] - str w0, [x20, 32] - ldrh w1, [x19, 2520] - ldr w0, [x19, 2620] - strh w1, [x20, 22] - ldrb w2, [x19, 2526] - str w0, [x20, 40] - ldrh w1, [x19, 2522] - ldr w0, [x19, 2624] - str w0, [x20, 36] - ldrh w0, [x19, 3320] - orr w1, w2, w1, lsl 6 - strh w0, [x20, 44] - ldrh w0, [x19, 3322] - strh w0, [x20, 46] - ldrh w2, [x19, 114] - ldr x0, [x19, 3416] - strh w1, [x20, 24] - mov w1, 255 - bl ftl_memset - ldr x0, [x19, 3416] - mov x1, x20 - mov w2, 48 - mov x20, x25 - adrp x25, .LANCHOR1 - add x25, x25, :lo12:.LANCHOR1 - add x25, x25, 536 - bl ftl_memcpy - ldr x1, [x19, 2376] - ldrh w2, [x19, 44] - ldr x0, [x19, 3416] - lsl w2, w2, 1 - add x0, x0, 48 - bl ftl_memcpy - ldrh w0, [x19, 44] - ldr x3, [x19, 3416] - ldr x1, [x19, 24] - lsr w2, w0, 3 - ubfiz x0, x0, 1, 16 - add x0, x0, 48 - add w2, w2, 4 - and x0, x0, -4 - add x0, x3, x0 - bl ftl_memcpy - mov w0, 0 - bl FtlUpdateVaildLpn -.L1295: - ldr x0, [x19, 3440] - mov w3, 1 - str x0, [x20, 8] - mov w2, w3 - ldr x0, [x19, 3448] - ldrh w1, [x19, 2658] - str x0, [x20, 16] - ldrh w0, [x19, 2656] - orr w0, w1, w0, lsl 10 - mov w1, w3 - str w0, [x20, 4] - mov x0, x20 - bl FlashProgPages - ldrh w0, [x19, 108] - ldrh w1, [x19, 2658] - sub w0, w0, #1 - cmp w1, w0 - blt .L1296 - ldrh w0, [x19, 2656] - ldrh w24, [x19, 2660] - strh wzr, [x19, 2658] - strh w0, [x19, 2660] - bl FtlFreeSysBlkQueueOut - strh w0, [x19, 2656] - ldr w1, [x19, 2620] - mov w3, 1 - str w1, [x19, 2664] - add w2, w1, 1 - str w2, [x19, 2620] - ubfiz w2, w0, 10, 16 - str w2, [x20, 4] - strh w0, [x21, 2] - mov w2, w3 - str w1, [x21, 4] - mov x0, x20 - mov w1, w3 - bl FlashProgPages -.L1296: - ldrh w0, [x19, 2658] - ldr w1, [x20] - add w0, w0, 1 - and w0, w0, 65535 - strh w0, [x19, 2658] - cmn w1, #1 - bne .L1297 - cmp w0, 1 - bne .L1298 - adrp x0, .LC1 - mov w2, 1169 - mov x1, x25 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1298: - ldrh w0, [x19, 2658] - cmp w0, 1 - bne .L1299 - ldrh w0, [x19, 108] - sub w0, w0, #1 - strh w0, [x19, 2658] -.L1299: - add w22, w22, 1 - and w22, w22, 65535 - cmp w22, 3 - bls .L1295 - add x23, x23, :lo12:.LANCHOR0 - adrp x0, .LC109 - mov w2, w22 - add x0, x0, :lo12:.LC109 - ldr w1, [x23, 3412] - bl sftl_printk -.L1301: - b .L1301 -.L1297: - cmp w0, 1 - beq .L1295 - cmp w1, 256 - beq .L1295 - mov w0, 65535 - cmp w24, w0 - beq .L1302 - mov w1, 1 - mov w0, w24 - bl FtlFreeSysBlkQueueIn -.L1302: - 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 FtlVpcTblFlush, .-FtlVpcTblFlush - .align 2 - .global FtlSysFlush - .type FtlSysFlush, %function -FtlSysFlush: - stp x29, x30, [sp, -16]! - add x29, sp, 0 - bl l2p_flush - mov w0, 1 - bl FtlEctTblFlush - bl FtlVpcTblFlush - mov w0, 0 - ldp x29, x30, [sp], 16 - ret - .size FtlSysFlush, .-FtlSysFlush - .align 2 - .global sftl_deinit - .type sftl_deinit, %function -sftl_deinit: - adrp x0, .LANCHOR2 - ldr w0, [x0, #:lo12:.LANCHOR2] - cmp w0, 1 - bne .L1315 - stp x29, x30, [sp, -16]! - add x29, sp, 0 - bl FtlSysFlush - mov w0, 0 - ldp x29, x30, [sp], 16 - ret -.L1315: - mov w0, 0 - ret - .size sftl_deinit, .-sftl_deinit - .align 2 - .global FtlDiscard - .type FtlDiscard, %function -FtlDiscard: - stp x29, x30, [sp, -64]! - add w3, w0, w1 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov w19, w1 - adrp x20, .LANCHOR0 - add x1, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - ldr w2, [x1, 144] - cmp w3, w2 - bhi .L1326 - cmp w19, 31 - bhi .L1320 -.L1334: - mov w0, 0 -.L1318: - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 - ret -.L1320: - ldrh w1, [x1, 62] - udiv w21, w0, w1 - msub w0, w1, w21, w0 - ands w0, w0, 65535 - beq .L1321 - sub w1, w1, w0 - add w21, w21, 1 - cmp w1, w19 - csel w1, w1, w19, ls - sub w19, w19, w1, uxth -.L1321: - adrp x22, .LANCHOR3 - add x20, x20, :lo12:.LANCHOR0 - add x22, x22, :lo12:.LANCHOR3 - mov w0, -1 - str w0, [x29, 60] -.L1322: - ldrh w0, [x20, 62] - cmp w19, w0 - bcs .L1324 - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldr w1, [x0, 108] - cmp w1, 32 - bls .L1334 - str wzr, [x0, 108] - bl l2p_flush - bl FtlVpcTblFlush - b .L1334 -.L1324: - mov w2, 0 - add x1, x29, 56 - mov w0, w21 - bl log2phys - ldr w0, [x29, 56] - cmn w0, #1 - beq .L1323 - ldr w0, [x22, 108] - mov w2, 1 - add x1, x29, 60 - add w0, w0, 1 - str w0, [x22, 108] - ldr w0, [x20, 2592] - add w0, w0, 1 - str w0, [x20, 2592] - mov w0, w21 - bl log2phys - ldr w0, [x29, 56] - lsr w0, w0, 10 - bl P2V_block_in_plane - bl decrement_vpc_count -.L1323: - ldrh w0, [x20, 62] - add w21, w21, 1 - sub w19, w19, w0 - b .L1322 -.L1326: - mov w0, -1 - b .L1318 - .size FtlDiscard, .-FtlDiscard - .align 2 - .global FtlVpcCheckAndModify - .type FtlVpcCheckAndModify, %function -FtlVpcCheckAndModify: - stp x29, x30, [sp, -80]! - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC97 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - add x19, x20, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - add x1, x1, 552 - add x0, x0, :lo12:.LC97 - str x23, [sp, 48] - bl sftl_printk - ldr x0, [x19, 4088] - mov w21, 0 - ldrh w2, [x19, 46] - mov w1, 0 - lsl w2, w2, 1 - bl ftl_memset -.L1336: - ldr w0, [x19, 2584] - cmp w21, w0 - bcc .L1338 - adrp x22, .LC110 - add x20, x20, :lo12:.LANCHOR0 - add x22, x22, :lo12:.LC110 - mov w19, 0 - mov w23, 65535 -.L1339: - ldrh w0, [x20, 44] - cmp w0, w19 - bhi .L1343 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldr x23, [sp, 48] - ldp x29, x30, [sp], 80 - ret -.L1338: - mov w2, 0 - add x1, x29, 76 - mov w0, w21 - bl log2phys - ldr w0, [x29, 76] - cmn w0, #1 - beq .L1337 - lsr w0, w0, 10 - bl P2V_block_in_plane - ldr x2, [x19, 4088] - ubfiz x0, x0, 1, 16 - ldrh w1, [x2, x0] - add w1, w1, 1 - strh w1, [x2, x0] -.L1337: - add w21, w21, 1 - b .L1336 -.L1343: - ldr x0, [x20, 2376] - ubfiz x21, x19, 1, 16 - ldrh w2, [x0, x21] - ldr x0, [x20, 4088] - ldrh w3, [x0, x21] - cmp w2, w3 - beq .L1341 - cmp w2, w23 - beq .L1341 - mov x0, x22 - mov w1, w19 - bl sftl_printk - ldrh w0, [x20, 2424] - cmp w0, w19 - beq .L1341 - ldrh w0, [x20, 2520] - cmp w0, w19 - beq .L1341 - ldrh w0, [x20, 2472] - cmp w0, w19 - beq .L1341 - ldr x0, [x20, 4088] - ldrh w1, [x0, x21] - ldr x0, [x20, 2376] - strh w1, [x0, x21] - mov w0, w19 - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L1341: - add w19, w19, 1 - and w19, w19, 65535 - b .L1339 - .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify - .align 2 - .global allocate_new_data_superblock - .type allocate_new_data_superblock, %function -allocate_new_data_superblock: - stp x29, x30, [sp, -48]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - stp x21, x22, [sp, 32] - mov x22, x0 - ldrh w21, [x0] - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 44] - cmp w0, w21 - bcs .L1349 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 2750 - add x1, x1, 576 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1349: - mov w0, 65535 - cmp w21, w0 - beq .L1350 - add x1, x19, :lo12:.LANCHOR0 - ubfiz x0, x21, 1, 16 - ldr x1, [x1, 2376] - ldrh w0, [x1, x0] - cbz w0, .L1351 - mov w0, w21 - bl INSERT_DATA_LIST -.L1350: - mov w0, 1 - adrp x1, .LANCHOR3 - strb w0, [x22, 8] - add x0, x1, :lo12:.LANCHOR3 - mov w2, 65535 - mov x20, x1 - ldrh w0, [x0, -48] - cmp w0, w2 - beq .L1352 - cmp w21, w0 - bne .L1353 - add x19, x19, :lo12:.LANCHOR0 - ubfiz x1, x0, 1, 16 - ldr x2, [x19, 2376] - ldrh w1, [x2, x1] - cbz w1, .L1354 -.L1353: - bl update_vpc_list -.L1354: - add x1, x20, :lo12:.LANCHOR3 - mov w0, -1 - strh w0, [x1, -48] -.L1352: - mov x0, x22 - bl allocate_data_superblock - bl l2p_flush - mov w0, 0 - bl FtlEctTblFlush - bl FtlVpcTblFlush - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 48 - ret -.L1351: - mov w0, w21 - bl INSERT_FREE_LIST - b .L1350 - .size allocate_new_data_superblock, .-allocate_new_data_superblock - .align 2 - .global FtlProgPages - .type FtlProgPages, %function -FtlProgPages: - stp x29, x30, [sp, -96]! - mov w2, 0 - add x29, sp, 0 - stp x19, x20, [sp, 16] - mov x19, x3 - stp x21, x22, [sp, 32] - mov w21, w1 - stp x23, x24, [sp, 48] - ubfiz x21, x21, 5, 32 - str x25, [sp, 64] - add x21, x21, 4 - add x24, x0, x21 - adrp x22, .LANCHOR0 - ldrb w3, [x3, 9] - adrp x25, .LANCHOR1 - add x21, x22, :lo12:.LANCHOR0 - add x25, x25, :lo12:.LANCHOR1 - add x20, x0, 4 - bl FlashProgPages -.L1360: - cmp x20, x24 - beq .L1367 - sub x23, x20, #4 - b .L1368 -.L1363: - ldr w0, [x20] - lsr w0, w0, 10 - bl P2V_block_in_plane - ldrh w1, [x19] - cmp w1, w0, uxth - bne .L1361 - ldr x2, [x21, 2376] - ubfiz x1, x1, 1, 16 - ldrh w3, [x19, 4] - ldrh w0, [x2, x1] - sub w0, w0, w3 - strh w0, [x2, x1] - strb wzr, [x19, 6] - ldrh w0, [x21, 106] - strh w0, [x19, 2] - strh wzr, [x19, 4] -.L1361: - ldrh w0, [x19, 4] - cbnz w0, .L1362 - mov x0, x19 - bl allocate_new_data_superblock -.L1362: - ldr w0, [x21, 2816] - add w0, w0, 1 - str w0, [x21, 2816] - ldr w0, [x20] - lsr w0, w0, 10 - bl FtlGcMarkBadPhyBlk - mov x0, x19 - bl get_new_active_ppa - str w0, [x20] - mov w2, 0 - str w0, [x29, 92] - mov w1, 1 - ldrb w3, [x19, 9] - mov x0, x23 - bl FlashProgPages -.L1368: - ldr w0, [x20, -4] - cmn w0, #1 - beq .L1363 - ldrb w1, [x19, 6] - ldrh w0, [x21, 36] - cmp w1, w0 - bcc .L1364 - adrp x0, .LC1 - mov w2, 941 - add x1, x25, 608 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1364: - add x1, x29, 96 - ldr w0, [x23, 4] - mov w2, 1 - str w0, [x1, -4]! - ldr w0, [x23, 24] - bl log2phys - ldr x0, [x23, 16] - ldr w4, [x0, 12] - lsr w0, w4, 10 - bl P2V_block_in_plane - and w1, w0, 65535 - mov w23, w1 - cmn w4, #1 - beq .L1365 - ldr x2, [x21, 2376] - ubfiz x0, x1, 1, 16 - ldrh w0, [x2, x0] - cbnz w0, .L1366 - adrp x0, .LC111 - mov w2, 0 - add x0, x0, :lo12:.LC111 - bl sftl_printk -.L1366: - mov w0, w23 - bl decrement_vpc_count -.L1365: - add x20, x20, 32 - b .L1360 -.L1367: - add x22, x22, :lo12:.LANCHOR0 - ldrb w1, [x19, 6] - ldrh w0, [x22, 36] - cmp w1, w0 - bcc .L1359 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 956 - add x1, x1, 608 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1359: - 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 - .size FtlProgPages, .-FtlProgPages - .align 2 - .global FtlGcFreeTempBlock - .type FtlGcFreeTempBlock, %function -FtlGcFreeTempBlock: - stp x29, x30, [sp, -96]! - mov w3, 65535 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x2, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - ldrh w20, [x2, 2520] - ldrh w1, [x2, 106] - cmp w20, w3 - bne .L1375 -.L1385: - adrp x0, .LANCHOR3-40 - mov w2, 65535 - str wzr, [x0, #:lo12:.LANCHOR3-40] - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 2520 - ldrh w3, [x0, 2520] - cmp w3, w2 - bne .L1398 -.L1401: - mov w0, 0 -.L1374: - 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 -.L1375: - cbz w0, .L1378 - adrp x0, .LANCHOR2 - add x0, x0, :lo12:.LANCHOR2 - ldrh w4, [x0, 4] - cmp w4, w3 - beq .L1379 -.L1380: - mov w1, 2 -.L1378: - add x21, x19, :lo12:.LANCHOR0 - add x0, x21, 2520 - bl FtlGcScanTempBlk - str w0, [x29, 92] - cmn w0, #1 - beq .L1381 - ldr x1, [x21, 2384] - ubfiz x20, x20, 1, 16 - ldrh w0, [x1, x20] - cmp w0, 4 - bls .L1382 - sub w0, w0, #5 - strh w0, [x1, x20] - mov w0, 1 - bl FtlEctTblFlush -.L1382: - adrp x0, .LANCHOR3 - add x1, x0, :lo12:.LANCHOR3 - mov x20, x0 - ldr w1, [x1, -40] - cbnz w1, .L1383 - add x19, x19, :lo12:.LANCHOR0 - ldr w0, [x19, 2816] - add w0, w0, 1 - str w0, [x19, 2816] - ldr w0, [x29, 92] - lsr w0, w0, 10 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush -.L1383: - add x0, x20, :lo12:.LANCHOR3 - str wzr, [x0, -40] -.L1394: - mov w0, 1 - b .L1374 -.L1379: - strh wzr, [x0, 4] - ldrh w0, [x2, 2416] - cmp w0, 17 - bhi .L1380 - b .L1378 -.L1381: - adrp x0, .LANCHOR2+4 - ldrh w1, [x0, #:lo12:.LANCHOR2+4] - mov w0, 65535 - cmp w1, w0 - bne .L1394 - b .L1385 -.L1398: - ldrh w2, [x0, 3304] - ldrb w1, [x1, 7] - ldrh w0, [x0, 106] - mul w0, w1, w0 - cmp w2, w0 - beq .L1386 - adrp x1, .LANCHOR1 - add x1, x1, :lo12:.LANCHOR1 - adrp x0, .LC1 - mov w2, 162 - add x1, x1, 624 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1386: - add x0, x19, :lo12:.LANCHOR0 - adrp x22, .LANCHOR1 - add x22, x22, :lo12:.LANCHOR1 - adrp x25, .LC1 - add x22, x22, 624 - add x25, x25, :lo12:.LC1 - ldrb w1, [x0, 2527] - mov w20, 0 - ldrh w4, [x0, 106] - ldr x2, [x0, 2376] - ldrh w3, [x0, 2520] - mul w1, w1, w4 - strh w1, [x2, x3, lsl 1] - ldr w2, [x0, 2608] - ldrh w1, [x0, 3304] - add w1, w1, w2 - str w1, [x0, 2608] -.L1387: - add x21, x19, :lo12:.LANCHOR0 - ldrh w0, [x21, 3304] - cmp w0, w20 - bhi .L1391 - mov w0, -1 - bl decrement_vpc_count - ldrh w0, [x21, 2520] - ldr x2, [x21, 2376] - ubfiz x1, x0, 1, 16 - ldrh w1, [x2, x1] - cbz w1, .L1392 - bl INSERT_DATA_LIST -.L1393: - add x19, x19, :lo12:.LANCHOR0 - mov w20, -1 - strh wzr, [x19, 3304] - strh w20, [x19, 2520] - strh wzr, [x19, 3292] - bl l2p_flush - bl FtlVpcTblFlush - ldrh w0, [x19, 2652] - ldrh w1, [x19, 2416] - add w0, w0, w0, lsl 1 - cmp w1, w0, lsr 2 - ble .L1401 - mov w0, 20 - strh w20, [x19, 2672] - strh w0, [x19, 3232] - b .L1401 -.L1391: - mov w24, 12 - ldr x26, [x21, 3312] - ldr w0, [x21, 2584] - umull x24, w20, w24 - add x23, x26, x24 - ldr w1, [x23, 8] - cmp w1, w0 - bcc .L1388 - mov w2, 168 - mov x1, x22 - mov x0, x25 - bl sftl_printk -.L1388: - ldr w0, [x23, 8] - add x1, x29, 92 - mov w2, 0 - bl log2phys - ldr w0, [x26, x24] - ldr w1, [x29, 92] - cmp w0, w1 - bne .L1389 - lsr w0, w0, 10 - bl P2V_block_in_plane - mov w21, w0 - ldr w0, [x23, 8] - mov w2, 1 - add x1, x23, 4 - bl log2phys - mov w0, w21 -.L1400: - bl decrement_vpc_count -.L1390: - add w20, w20, 1 - and w20, w20, 65535 - b .L1387 -.L1389: - ldr w0, [x23, 4] - cmp w1, w0 - beq .L1390 - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 2520] - b .L1400 -.L1392: - bl INSERT_FREE_LIST - b .L1393 - .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock - .align 2 - .global FtlGcPageRecovery - .type FtlGcPageRecovery, %function -FtlGcPageRecovery: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - add x20, x19, 2520 - mov x0, x20 - ldrh w1, [x19, 106] - bl FtlGcScanTempBlk - ldrh w1, [x19, 2522] - ldrh w0, [x19, 106] - cmp w1, w0 - bcc .L1402 - adrp x19, .LANCHOR3 - add x19, x19, :lo12:.LANCHOR3 - sub x0, x19, #184 - bl FtlMapBlkWriteDump_data - mov w0, 0 - bl FtlGcFreeTempBlock - str wzr, [x19, -40] -.L1402: - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 - ret - .size FtlGcPageRecovery, .-FtlGcPageRecovery - .align 2 - .global FtlPowerLostRecovery - .type FtlPowerLostRecovery, %function -FtlPowerLostRecovery: - stp x29, x30, [sp, -32]! - adrp x0, .LANCHOR3-28 - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x19, x19, :lo12:.LANCHOR0 - str wzr, [x0, #:lo12:.LANCHOR3-28] - add x20, x19, 2424 - add x19, x19, 2472 - mov x0, x20 - bl FtlRecoverySuperblock - mov x0, x20 - bl FtlSlcSuperblockCheck - mov x0, x19 - bl FtlRecoverySuperblock - mov x0, x19 - bl FtlSlcSuperblockCheck - bl FtlGcPageRecovery - mov w0, -1 - bl decrement_vpc_count - mov w0, 0 - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 - ret - .size FtlPowerLostRecovery, .-FtlPowerLostRecovery - .align 2 - .global Ftl_gc_temp_data_write_back - .type Ftl_gc_temp_data_write_back, %function -Ftl_gc_temp_data_write_back: - stp x29, x30, [sp, -32]! - adrp x11, .LANCHOR0 - mov w3, 0 - mov w2, 0 - add x29, sp, 0 - str x19, [sp, 16] - add x19, x11, :lo12:.LANCHOR0 - ldr w1, [x19, 3248] - ldr x0, [x19, 4032] - bl FlashProgPages - mov w10, 0 -.L1408: - ldr w1, [x19, 3248] - cmp w10, w1 - bcc .L1411 - ldr x0, [x19, 4032] - bl FtlGcBufFree - str wzr, [x19, 3248] - ldrh w0, [x19, 2524] - cbnz w0, .L1412 - mov w0, 1 - bl FtlGcFreeTempBlock - b .L1414 -.L1411: - ldr x0, [x19, 4032] - ubfiz x1, x10, 5, 16 - add x3, x0, x1 - ldr w0, [x0, x1] - cmn w0, #1 - bne .L1409 - ldrh w3, [x19, 2520] - ldr x2, [x19, 2376] - strh wzr, [x2, x3, lsl 1] - strh w0, [x19, 2520] - ldr w0, [x19, 2816] - add w0, w0, 1 - str w0, [x19, 2816] - ldr x0, [x19, 4032] - add x0, x0, x1 - ldr w0, [x0, 4] - lsr w0, w0, 10 - bl FtlBbmMapBadBlock - bl FtlBbmTblFlush - bl FtlGcPageVarInit -.L1414: - mov w0, 1 -.L1407: - ldr x19, [sp, 16] - ldp x29, x30, [sp], 32 - ret -.L1409: - ldr x0, [x3, 16] - ldr w1, [x3, 4] - ldp w2, w0, [x0, 8] - bl FtlGcUpdatePage - add w10, w10, 1 - and w10, w10, 65535 - b .L1408 -.L1412: - mov w0, 0 - b .L1407 - .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back - .align 2 - .global Ftl_get_new_temp_ppa - .type Ftl_get_new_temp_ppa, %function -Ftl_get_new_temp_ppa: - stp x29, x30, [sp, -32]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 2520 - ldrh w2, [x0, 2520] - mov w0, 65535 - cmp w2, w0 - beq .L1416 - ldrh w0, [x1, 4] - cbnz w0, .L1417 -.L1416: - add x20, x19, :lo12:.LANCHOR0 - mov w0, 0 - bl FtlGcFreeTempBlock - add x0, x20, 2520 - strb wzr, [x0, 8] - bl allocate_data_superblock - strh wzr, [x20, 3292] - strh wzr, [x20, 3304] - bl l2p_flush - mov w0, 0 - bl FtlEctTblFlush - bl FtlVpcTblFlush -.L1417: - add x0, x19, :lo12:.LANCHOR0 - add x0, x0, 2520 - bl get_new_active_ppa - ldp x19, x20, [sp, 16] - ldp x29, x30, [sp], 32 - ret - .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa - .align 2 - .global rk_ftl_garbage_collect - .type rk_ftl_garbage_collect, %function -rk_ftl_garbage_collect: - stp x29, x30, [sp, -128]! - add x29, sp, 0 - stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 - add x1, x19, :lo12:.LANCHOR0 - stp x21, x22, [sp, 32] - stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] - stp x27, x28, [sp, 80] - ldr w2, [x1, 4008] - cbnz w2, .L1490 - ldrh w2, [x1, 2400] - cmp w2, 47 - bls .L1490 - mov w23, w0 - adrp x0, .LANCHOR2+4 - ldrh w2, [x0, #:lo12:.LANCHOR2+4] - mov w0, 65535 - cmp w2, w0 - bne .L1421 -.L1424: - add x1, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldrh w4, [x1, 3322] - cmp w4, w2 - bne .L1422 -.L1423: - add x21, x19, :lo12:.LANCHOR0 - mov w20, 65535 - ldr w1, [x21, 3236] - ldrh w0, [x21, 2672] - add w1, w1, 1 - add w1, w1, w23, lsl 7 - str w1, [x21, 3236] - cmp w0, w20 - bne .L1425 - ldrh w20, [x21, 2520] - cmp w20, w0 - bne .L1493 - ldrh w22, [x21, 3320] - cmp w22, w20 - bne .L1425 - ldrh w0, [x21, 2416] - mov w2, 1024 - cmp w0, 24 - mov w0, 5120 - csel w0, w0, w2, cc - cmp w1, w0 - bls .L1496 - adrp x0, .LANCHOR3+112 - str wzr, [x21, 3236] - strh wzr, [x0, #:lo12:.LANCHOR3+112] - bl GetSwlReplaceBlock - and w20, w0, 65535 - cmp w20, w22 - bne .L1497 - ldrh w1, [x21, 2416] - ldrh w0, [x21, 3234] - cmp w1, w0 - bcs .L1428 - mov w0, 64 - bl List_get_gc_head_node - and w0, w0, 65535 - cmp w0, w20 - beq .L1430 - ldr x1, [x21, 2376] - ubfiz x0, x0, 1, 16 - ldrh w0, [x1, x0] - cmp w0, 7 - bhi .L1431 - mov w0, 0 - bl List_get_gc_head_node - and w22, w0, 65535 - mov w0, 128 - strh w0, [x21, 3234] - cmp w22, w20 - bne .L1427 -.L1430: - bl FtlGcReFreshBadBlk -.L1425: - cmp w23, 0 - mov w0, 65535 - ccmp w20, w0, 0, eq - bne .L1433 - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2416] - cmp w0, 24 - bhi .L1498 - cmp w0, 16 - ldrh w21, [x1, 106] - bls .L1435 - lsr w21, w21, 5 -.L1434: - add x1, x19, :lo12:.LANCHOR0 - ldrh w2, [x1, 3232] - cmp w2, w0 - bcs .L1438 - ldrh w0, [x1, 2520] - mov w2, 65535 - cmp w0, w2 - bne .L1439 - ldrh w2, [x1, 3320] - cmp w2, w0 - bne .L1439 - adrp x0, .LANCHOR3+112 - ldrh w0, [x0, #:lo12:.LANCHOR3+112] - cbnz w0, .L1440 - ldr w2, [x1, 2584] - ldr w3, [x1, 2580] - add w2, w2, w2, lsl 1 - cmp w3, w2, lsr 2 - bcs .L1441 -.L1440: - add x2, x19, :lo12:.LANCHOR0 - ldrh w1, [x2, 2652] - add w1, w1, w1, lsl 1 - asr w1, w1, 2 - strh w1, [x2, 3232] -.L1442: - add x19, x19, :lo12:.LANCHOR0 - str wzr, [x19, 3244] -.L1419: - 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 -.L1421: - ldrh w1, [x1, 2520] - cmp w1, w0 - beq .L1424 - mov w0, 1 - bl FtlGcFreeTempBlock - cbz w0, .L1424 - mov w0, 1 - b .L1419 -.L1422: - ldrh w0, [x1, 3320] - cmp w0, w2 - bne .L1423 - ldrh w3, [x1, 3324] - cmp w3, w0 - beq .L1423 - ldrh w2, [x1, 3326] - cmp w2, w0 - beq .L1423 - mov w0, -1 - strh w4, [x1, 3320] - strh w3, [x1, 3322] - strh w2, [x1, 3324] - strh w0, [x1, 3326] - b .L1423 -.L1431: - mov w0, 64 -.L1522: - strh w0, [x21, 3234] - b .L1430 -.L1428: - mov w0, 80 - b .L1522 -.L1497: - mov w22, w20 -.L1427: - add x0, x19, :lo12:.LANCHOR0 - ubfiz x1, x22, 1, 32 - mov w20, w22 - ldr x2, [x0, 2376] - ldr x3, [x0, 2384] - ldrh w5, [x0, 3232] - ldrh w4, [x3, x1] - ldrh w3, [x2, x1] - mov w1, w22 - ldrh w2, [x0, 2416] - adrp x0, .LC112 - add x0, x0, :lo12:.LC112 - bl sftl_printk - b .L1430 -.L1493: - mov w20, w0 - b .L1425 -.L1496: - mov w20, w22 - b .L1425 -.L1435: - cmp w0, 12 - bls .L1436 - lsr w21, w21, 4 - b .L1434 -.L1436: - mov w1, w21 - cmp w0, 9 - lsr w21, w21, 2 - csel w21, w21, w1, cs - b .L1434 -.L1498: - mov w21, 1 - b .L1434 -.L1441: - mov w2, 18 - strh w2, [x1, 3232] - b .L1442 -.L1439: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2652] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - strh w0, [x1, 3232] -.L1438: - add x0, x19, :lo12:.LANCHOR0 - ldrh w0, [x0, 3328] - cbz w0, .L1499 - add w21, w21, 32 - and w21, w21, 65535 -.L1499: - mov w20, 65535 -.L1444: - add x0, x19, :lo12:.LANCHOR0 - mov w2, 65535 - ldrh w1, [x0, 2672] - cmp w1, w2 - bne .L1453 - cmp w20, w1 - beq .L1454 - strh w20, [x0, 2672] -.L1455: - add x5, x19, :lo12:.LANCHOR0 - mov w1, 65535 - ldrh w0, [x5, 2672] - strb wzr, [x5, 2680] - cmp w0, w1 - beq .L1453 - bl IsBlkInGcList - cbz w0, .L1458 - mov w0, -1 - strh w0, [x5, 2672] -.L1458: - add x22, x19, :lo12:.LANCHOR0 - mov w0, 65535 - add x23, x22, 2672 - ldrh w1, [x22, 2672] - cmp w1, w0 - beq .L1453 - mov x0, x23 - bl make_superblock - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldrh w2, [x22, 2672] - ldr x1, [x22, 2376] - strh wzr, [x22, 2674] - strb wzr, [x22, 2678] - strh wzr, [x0, 114] - ldrh w1, [x1, x2, lsl 1] - strh w1, [x0, 116] -.L1453: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 2672] - ldrh w2, [x0, 2424] - cmp w2, w1 - beq .L1459 - ldrh w0, [x0, 2472] - cmp w0, w1 - beq .L1459 - adrp x24, .LANCHOR1 - add x24, x24, :lo12:.LANCHOR1 - add x24, x24, 648 -.L1460: - add x22, x19, :lo12:.LANCHOR0 - mov w0, 65535 - ldrh w23, [x22, 2672] - cmp w23, w0 - bne .L1461 - mov w25, 2 - str wzr, [x22, 3244] -.L1462: - ldrh w5, [x22, 3240] - mov w0, w5 - bl List_get_gc_head_node - and w6, w0, 65535 - strh w6, [x22, 2672] - cmp w6, w23 - bne .L1463 - strh wzr, [x22, 3240] - mov w0, 8 - b .L1419 -.L1433: - add x5, x19, :lo12:.LANCHOR0 - ldrh w1, [x5, 2520] - cmp w1, w0 - bne .L1502 - ldrh w0, [x5, 3320] - cmp w0, w1 - bne .L1502 - cmp w20, w0 - bne .L1502 - ldrh w0, [x5, 2672] - cmp w0, w20 - beq .L1445 -.L1502: - mov w21, 1 - b .L1444 -.L1445: - ldrh w7, [x5, 2416] - adrp x21, .LANCHOR3 - ldrh w0, [x5, 3232] - str wzr, [x5, 3244] - cmp w0, w7 - bcs .L1446 - add x0, x21, :lo12:.LANCHOR3 - ldrh w0, [x0, 112] - cbnz w0, .L1447 - ldr w0, [x5, 2584] - ldr w1, [x5, 2580] - add w0, w0, w0, lsl 1 - cmp w1, w0, lsr 2 - bcs .L1448 -.L1447: - add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x19, 2652] - add w0, w0, w0, lsl 1 - asr w0, w0, 2 - strh w0, [x19, 3232] -.L1449: - bl FtlReadRefresh -.L1523: - add x21, x21, :lo12:.LANCHOR3 - b .L1524 -.L1448: - mov w0, 18 - strh w0, [x5, 3232] - b .L1449 -.L1446: - add x21, x21, :lo12:.LANCHOR3 - ldrh w0, [x21, 112] - cbnz w0, .L1502 - ldrh w6, [x5, 2652] - add w0, w6, w6, lsl 1 - asr w0, w0, 2 - strh w0, [x5, 3232] - mov w0, 0 - bl List_get_gc_head_node - ldr x1, [x5, 2376] - ubfiz x0, x0, 1, 16 - ldrh w2, [x5, 36] - ldrh w1, [x1, x0] - ldrh w0, [x5, 108] - mul w0, w0, w2 - mov w2, 2 - sdiv w0, w0, w2 - cmp w1, w0 - ble .L1451 - sub w6, w6, #1 - cmp w7, w6 - blt .L1451 - bl FtlReadRefresh -.L1524: - ldrh w0, [x21, 112] - b .L1419 -.L1451: - cbnz w1, .L1502 - add x19, x19, :lo12:.LANCHOR0 - mov w0, -1 - bl decrement_vpc_count - ldrh w0, [x19, 2416] - add w0, w0, 1 - b .L1419 -.L1454: - ldrh w1, [x0, 3320] - cmp w1, w20 - beq .L1455 - ldr x2, [x0, 2376] - ubfiz x1, x1, 1, 16 - ldrh w1, [x2, x1] - cbnz w1, .L1456 - mov w1, -1 - strh w1, [x0, 3320] -.L1456: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 3320] - strh w1, [x0, 2672] - mov w1, -1 - strh w1, [x0, 3320] - b .L1455 -.L1459: - add x19, x19, :lo12:.LANCHOR0 - mov w0, -1 - strh w0, [x19, 2672] -.L1525: - adrp x0, .LANCHOR3+112 - ldrh w0, [x0, #:lo12:.LANCHOR3+112] - b .L1419 -.L1463: - mov w0, w6 - bl IsBlkInGcList - add w5, w5, 1 - cbz w0, .L1464 - strh w5, [x22, 3240] - b .L1462 -.L1464: - ldrh w4, [x22, 36] - ubfiz x1, x6, 1, 16 - ldrh w0, [x22, 106] - and w5, w5, 65535 - ldr x2, [x22, 2376] - strh w5, [x22, 3240] - mul w0, w0, w4 - ldrh w3, [x2, x1] - sdiv w4, w0, w25 - cmp w3, w4 - bgt .L1466 - cmp w5, 48 - bls .L1467 - cmp w3, 8 - bls .L1467 - ldrh w3, [x22, 3292] - cmp w3, 35 - bhi .L1467 -.L1466: - strh wzr, [x22, 3240] -.L1467: - ldrh w1, [x2, x1] - cmp w0, w1 - bgt .L1468 - cmp w20, w23 - bne .L1468 - add x19, x19, :lo12:.LANCHOR0 - mov w0, -1 - strh wzr, [x19, 3240] - strh w0, [x19, 2672] - b .L1525 -.L1468: - cbnz w1, .L1469 - mov w0, -1 - bl decrement_vpc_count - ldrh w0, [x22, 3240] - add w0, w0, 1 - strh w0, [x22, 3240] - b .L1462 -.L1469: - add x0, x19, :lo12:.LANCHOR0 - strb wzr, [x0, 2680] - ldrh w0, [x0, 2424] - cmp w0, w6 - bne .L1470 - adrp x0, .LC1 - mov w2, 665 - mov x1, x24 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1470: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 2672] - ldrh w0, [x0, 2472] - cmp w1, w0 - bne .L1471 - adrp x0, .LC1 - mov w2, 666 - mov x1, x24 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1471: - add x0, x19, :lo12:.LANCHOR0 - ldrh w1, [x0, 2672] - ldrh w0, [x0, 2520] - cmp w1, w0 - bne .L1472 - adrp x0, .LC1 - mov w2, 667 - mov x1, x24 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1472: - add x23, x19, :lo12:.LANCHOR0 - add x22, x23, 2672 - mov x0, x22 - bl make_superblock - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldrh w2, [x23, 2672] - ldr x1, [x23, 2376] - strh wzr, [x0, 114] - ldrh w1, [x1, x2, lsl 1] - strh w1, [x0, 116] - strh wzr, [x23, 2674] - strb wzr, [x23, 2678] -.L1461: - bl FtlReadRefresh - add x0, x19, :lo12:.LANCHOR0 - mov w1, 1 - ldrh w26, [x0, 106] - str w1, [x0, 4008] - ldrh w0, [x0, 2674] - add w1, w0, w21 - cmp w1, w26 - ble .L1473 - sub w21, w26, w0 - and w21, w21, 65535 -.L1473: - mov w25, 0 -.L1474: - cmp w21, w25, uxth - bls .L1482 - add x0, x19, :lo12:.LANCHOR0 - mov w23, 0 - add x3, x0, 2688 - mov w1, 0 - mov w6, 65535 - ldrh w4, [x0, 2674] - ldrh w7, [x0, 36] - add w4, w4, w25 - b .L1483 -.L1476: - ldrh w2, [x3] - cmp w2, w6 - beq .L1475 - ldr x5, [x0, 3280] - ubfiz x8, x23, 5, 16 - add w23, w23, 1 - orr w2, w4, w2, lsl 10 - add x5, x5, x8 - and w23, w23, 65535 - str w2, [x5, 4] -.L1475: - add w1, w1, 1 - add x3, x3, 2 - and w1, w1, 65535 -.L1483: - cmp w1, w7 - bne .L1476 - add x22, x19, :lo12:.LANCHOR0 - mov w1, w23 - mov x27, 0 - ldrb w2, [x22, 2680] - ldr x0, [x22, 3280] - bl FlashReadPages - ubfiz x0, x23, 5, 16 - str x0, [x29, 104] -.L1477: - ldr x0, [x29, 104] - cmp x27, x0 - bne .L1481 - add w25, w25, 1 - b .L1474 -.L1481: - ldr x0, [x22, 3280] - add x1, x0, x27 - ldr w0, [x0, x27] - cmn w0, #1 - beq .L1478 - ldr x23, [x1, 16] - mov w0, 61589 - ldrh w1, [x23] - cmp w1, w0 - bne .L1478 - ldr w28, [x23, 8] - cmn w28, #1 - bne .L1479 - adrp x0, .LC1 - mov w2, 703 - mov x1, x24 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1479: - mov w2, 0 - add x1, x29, 124 - mov w0, w28 - bl log2phys - ldr x0, [x22, 3280] - ldr w1, [x29, 124] - add x0, x0, x27 - ldr w2, [x0, 4] - cmp w2, w1 - bne .L1478 - adrp x28, .LANCHOR3 - add x2, x28, :lo12:.LANCHOR3 - ldr w0, [x0, 24] - ldrh w1, [x2, 114] - add w1, w1, 1 - strh w1, [x2, 114] - ldr x2, [x22, 4032] - ldr w1, [x22, 3248] - add x1, x2, x1, lsl 5 - str x1, [x29, 96] - str w0, [x1, 24] - bl Ftl_get_new_temp_ppa - ldr x1, [x29, 96] - str w0, [x1, 4] - ldr w0, [x22, 3248] - ldr x1, [x22, 4032] - add x0, x1, x0, lsl 5 - ldr x1, [x22, 3280] - add x1, x1, x27 - ldr x2, [x1, 8] - str x2, [x0, 8] - ldr x1, [x1, 16] - str x1, [x0, 16] - ldr w0, [x29, 124] - mov w1, 1 - str w0, [x23, 12] - ldrh w0, [x22, 2520] - strh w0, [x23, 2] - ldr w0, [x22, 2624] - str w0, [x23, 4] - ldr w0, [x22, 3248] - add w0, w0, 1 - str w0, [x22, 3248] - ldr x0, [x22, 3280] - add x0, x0, x27 - bl FtlGcBufAlloc - ldrb w1, [x22, 2527] - ldr w0, [x22, 3248] - cmp w1, w0 - beq .L1480 - ldrh w0, [x22, 2524] - cbnz w0, .L1478 -.L1480: - bl Ftl_gc_temp_data_write_back - cbz w0, .L1478 - add x19, x19, :lo12:.LANCHOR0 - add x28, x28, :lo12:.LANCHOR3 - str wzr, [x19, 4008] - ldrh w0, [x28, 112] - b .L1419 -.L1478: - add x27, x27, 32 - b .L1477 -.L1482: - add x22, x19, :lo12:.LANCHOR0 - ldrh w0, [x22, 2674] - add w21, w21, w0 - and w21, w21, 65535 - strh w21, [x22, 2674] - cmp w26, w21 - bhi .L1484 - ldr w0, [x22, 3248] - adrp x21, .LANCHOR3 - cbz w0, .L1485 - bl Ftl_gc_temp_data_write_back - cbz w0, .L1485 - str wzr, [x22, 4008] - b .L1523 -.L1485: - add x21, x21, :lo12:.LANCHOR3 - ldrh w0, [x21, 114] - cbnz w0, .L1486 - add x22, x19, :lo12:.LANCHOR0 - ldrh w1, [x22, 2672] - ldr x3, [x22, 2376] - ubfiz x2, x1, 1, 16 - ldrh w4, [x3, x2] - cbz w4, .L1486 - ldrh w5, [x21, 116] - mov w3, 0 - ldrh w2, [x22, 2674] - adrp x0, .LC113 - add x0, x0, :lo12:.LC113 - bl sftl_printk - ldrh w1, [x22, 2672] - ldr x0, [x22, 2376] - strh wzr, [x0, x1, lsl 1] - ldrh w0, [x22, 2672] - bl update_vpc_list - bl l2p_flush - bl FtlVpcTblFlush -.L1486: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 2672] -.L1484: - add x1, x19, :lo12:.LANCHOR0 - ldrh w0, [x1, 2416] - cmp w0, 2 - bhi .L1487 - ldrh w21, [x1, 106] - b .L1460 -.L1487: - str wzr, [x1, 4008] - adrp x1, .LANCHOR3+112 - ldrh w1, [x1, #:lo12:.LANCHOR3+112] - cmp w1, 0 - csinc w0, w1, w0, ne - b .L1419 -.L1490: - mov w0, 0 - b .L1419 - .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect - .align 2 - .global sftl_gc - .type sftl_gc, %function -sftl_gc: - stp x29, x30, [sp, -16]! - mov w1, 1 - mov w0, w1 - add x29, sp, 0 - bl rk_ftl_garbage_collect - ldp x29, x30, [sp], 16 - ret - .size sftl_gc, .-sftl_gc - .align 2 - .global FtlRead - .type FtlRead, %function -FtlRead: - sub sp, sp, #192 - and w0, w0, 255 - cmp w0, 16 - stp x29, x30, [sp, 16] - add x29, sp, 16 - stp x19, x20, [sp, 32] - mov w19, w1 - stp x23, x24, [sp, 64] - mov x23, x3 - stp x27, x28, [sp, 96] - mov w27, w2 - stp x21, x22, [sp, 48] - stp x25, x26, [sp, 80] - bne .L1529 - mov x2, x3 - mov w1, w27 - add w0, w19, 256 - bl FtlVendorPartRead - mov w21, w0 -.L1528: - mov w0, w21 - 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, 192 - ret -.L1529: - add w0, w1, w2 - str w0, [x29, 144] - adrp x0, .LANCHOR0 - add x8, x0, :lo12:.LANCHOR0 - add w2, w1, w2 - str x0, [x29, 112] - ldr w1, [x8, 144] - cmp w2, w1 - bhi .L1550 - adrp x0, .LANCHOR2 - ldr w21, [x0, #:lo12:.LANCHOR2] - cmn w21, #1 - beq .L1528 - ldrh w0, [x8, 62] - sub w24, w2, #1 - mov x25, x8 - mov w28, 0 - mov w21, 0 - stp wzr, wzr, [x29, 148] - str wzr, [x29, 156] - udiv w26, w19, w0 - udiv w24, w24, w0 - ldr w0, [x8, 2588] - mov w20, w26 - sub w22, w24, w26 - add w22, w22, 1 - add w0, w0, w22 - str w0, [x8, 2588] - adrp x0, .LC96 - add x0, x0, :lo12:.LC96 - str x0, [x29, 104] -.L1531: - cbnz w22, .L1548 - ldr x0, [x29, 112] - add x0, x0, :lo12:.LANCHOR0 - ldrh w1, [x0, 3328] - cbnz w1, .L1549 - ldrh w0, [x0, 2416] - cmp w0, 31 - bhi .L1528 -.L1549: - mov w1, 1 - mov w0, 0 - bl rk_ftl_garbage_collect - b .L1528 -.L1548: - add x1, x29, 172 - mov w2, 0 - mov w0, w20 - bl log2phys - ldr w1, [x29, 172] - cmn w1, #1 - bne .L1532 - mov w4, 0 -.L1533: - ldrh w0, [x25, 62] - cmp w4, w0 - bcc .L1535 -.L1536: - add w20, w20, 1 - subs w22, w22, #1 - beq .L1540 - ldrh w0, [x25, 36] - cmp w28, w0, lsl 2 - bne .L1531 -.L1540: - cbz w28, .L1531 - ldr x0, [x25, 4024] - mov w1, w28 - mov w2, 0 - bl FlashReadPages - ldr w0, [x29, 148] - lsl w0, w0, 9 - str w0, [x29, 128] - ldr w0, [x29, 156] - lsl w0, w0, 9 - str x0, [x29, 136] - ldr w0, [x29, 152] - lsl w0, w0, 9 - str w0, [x29, 132] - ubfiz x0, x28, 5, 32 - mov x28, 0 - str x0, [x29, 120] -.L1547: - ldr x0, [x25, 4024] - add x0, x0, x28 - ldr w1, [x0, 24] - cmp w26, w1 - bne .L1542 - ldr x1, [x0, 8] - ldr x0, [x25, 4000] - cmp x1, x0 - bne .L1543 - ldr x0, [x29, 136] - ldr w2, [x29, 132] - add x1, x1, x0 - mov x0, x23 -.L1560: - bl ftl_memcpy -.L1543: - ldr x0, [x25, 4024] - add x0, x0, x28 - ldr x1, [x0, 16] - ldr w2, [x0, 24] - ldr w1, [x1, 8] - cmp w2, w1 - beq .L1544 - ldr w1, [x25, 2792] - add w1, w1, 1 - str w1, [x25, 2792] - ldp x2, x1, [x0, 8] - ldr w3, [x2, 4] - str w3, [sp] - ldp w3, w4, [x1] - ldp w5, w6, [x1, 8] - ldr w7, [x2] - ldr w1, [x0, 24] - ldr w2, [x0, 4] - ldr x0, [x29, 104] - bl sftl_printk -.L1544: - ldr x0, [x25, 4024] - add x1, x0, x28 - ldr w2, [x0, x28] - cmn w2, #1 - bne .L1545 - ldr w0, [x25, 2792] - mov w21, w2 - add w0, w0, 1 - str w0, [x25, 2792] -.L1545: - ldr w0, [x1] - cmp w0, 256 - bne .L1546 - ldr w0, [x1, 4] - lsr w0, w0, 10 - bl P2V_block_in_plane - bl FtlGcRefreshBlock -.L1546: - ldr x0, [x29, 120] - add x28, x28, 32 - cmp x0, x28 - bne .L1547 - mov w28, 0 - b .L1531 -.L1535: - madd w0, w20, w0, w4 - cmp w19, w0 - bhi .L1534 - ldr w1, [x29, 144] - cmp w1, w0 - bls .L1534 - sub w0, w0, w19 - str w4, [x29, 136] - lsl w0, w0, 9 - mov w2, 512 - mov w1, 0 - add x0, x23, x0 - bl ftl_memset - ldr w4, [x29, 136] -.L1534: - add w4, w4, 1 - b .L1533 -.L1532: - ldr x0, [x25, 4024] - ubfiz x2, x28, 5, 32 - cmp w20, w26 - add x0, x0, x2 - str w1, [x0, 4] - ldrh w0, [x25, 62] - bne .L1537 - ldr x1, [x25, 4024] - ldr x4, [x25, 4000] - add x1, x1, x2 - str x4, [x1, 8] - udiv w4, w19, w0 - msub w3, w4, w0, w19 - str w3, [x29, 156] - sub w4, w0, w3 - cmp w27, w4 - csel w3, w27, w4, ls - str w3, [x29, 152] - cmp w3, w0 - bne .L1538 - str x23, [x1, 8] -.L1538: - ldr x0, [x25, 4024] - ldr x1, [x25, 3992] - add x2, x0, x2 - ldrh w0, [x25, 116] - str w20, [x2, 24] - mul w0, w0, w28 - add w28, w28, 1 - and x0, x0, 4294967292 - add x0, x1, x0 - str x0, [x2, 16] - b .L1536 -.L1537: - cmp w20, w24 - bne .L1539 - ldr x4, [x25, 4024] - ldr x1, [x25, 3984] - add x4, x4, x2 - ldr w3, [x29, 144] - str x1, [x4, 8] - mul w1, w20, w0 - sub w3, w3, w1 - str w3, [x29, 148] - cmp w0, w3 - bne .L1538 - sub w1, w1, w19 - lsl w1, w1, 9 - add x1, x23, x1 - str x1, [x4, 8] - b .L1538 -.L1539: - ldr x1, [x25, 4024] - mul w0, w0, w20 - add x1, x1, x2 - sub w0, w0, w19 - lsl w0, w0, 9 - add x0, x23, x0 - str x0, [x1, 8] - b .L1538 -.L1542: - cmp w24, w1 - bne .L1543 - ldr x1, [x0, 8] - ldr x0, [x25, 3984] - cmp x1, x0 - bne .L1543 - ldrh w0, [x25, 62] - ldr w2, [x29, 128] - mul w0, w0, w24 - sub w0, w0, w19 - lsl w0, w0, 9 - add x0, x23, x0 - b .L1560 -.L1550: - mov w21, -1 - b .L1528 - .size FtlRead, .-FtlRead - .align 2 - .global sftl_read - .type sftl_read, %function -sftl_read: - stp x29, x30, [sp, -16]! - mov x3, x2 - mov w2, w1 - mov w1, w0 - add x29, sp, 0 - mov w0, 0 - bl FtlRead - ldp x29, x30, [sp], 16 - ret - .size sftl_read, .-sftl_read - .align 2 - .global FtlWrite - .type FtlWrite, %function -FtlWrite: - stp x29, x30, [sp, -224]! - and w0, w0, 255 - cmp w0, 16 - add x29, sp, 0 - stp x23, x24, [sp, 48] - mov w24, w1 - stp x27, x28, [sp, 80] - mov x27, x3 - stp x19, x20, [sp, 16] - stp x21, x22, [sp, 32] - stp x25, x26, [sp, 64] - str w2, [x29, 156] - bne .L1564 - add w0, w1, 256 - ldr w1, [x29, 156] - mov x2, x3 - bl FtlVendorPartWrite -.L1563: - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 224 - ret -.L1564: - ldr w0, [x29, 156] - adrp x19, .LANCHOR0 - add x1, x19, :lo12:.LANCHOR0 - add w0, w24, w0 - str w0, [x29, 148] - ldr w0, [x1, 144] - ldr w2, [x29, 148] - cmp w2, w0 - bhi .L1599 - adrp x2, .LANCHOR2 - str x2, [x29, 136] - add x3, x2, :lo12:.LANCHOR2 - ldr w0, [x2, #:lo12:.LANCHOR2] - cmn w0, #1 - beq .L1563 - adrp x0, .LANCHOR3+120 - mov w2, 2048 - add x20, x1, 2424 - str w2, [x0, #:lo12:.LANCHOR3+120] - ldr w2, [x29, 148] - ldrh w0, [x1, 62] - sub w2, w2, #1 - udiv w26, w24, w0 - udiv w0, w2, w0 - str w0, [x29, 144] - sub w0, w0, w26 - add w25, w0, 1 - str w0, [x29, 132] - ldr w0, [x1, 2596] - add w0, w0, w25 - str w0, [x1, 2596] - ldr w0, [x3, 8] - cbz w0, .L1566 - ldrh w0, [x20, 4] - add x1, x1, 2472 - cmp w0, 0 - csel x20, x1, x20, eq -.L1566: - adrp x22, .LANCHOR1 - add x22, x22, :lo12:.LANCHOR1 - mov w21, w26 - add x22, x22, 672 -.L1567: - cbnz w25, .L1595 - ldr w1, [x29, 132] - add x19, x19, :lo12:.LANCHOR0 - mov w0, 0 - bl rk_ftl_garbage_collect - ldrh w0, [x19, 2416] - cmp w0, 15 - bls .L1596 -.L1598: - mov w0, 0 - b .L1563 -.L1595: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x20, 6] - ldrh w0, [x0, 36] - cmp w1, w0 - bcc .L1568 - adrp x0, .LC1 - mov w2, 996 - mov x1, x22 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1568: - ldrh w0, [x20, 4] - cbnz w0, .L1569 - add x0, x19, :lo12:.LANCHOR0 - add x1, x0, 2424 - cmp x20, x1 - bne .L1570 - add x0, x0, 2472 - ldrh w1, [x0, 4] - cbnz w1, .L1571 - bl allocate_new_data_superblock - ldr x0, [x29, 136] - add x0, x0, :lo12:.LANCHOR2 - str wzr, [x0, 8] -.L1571: - add x20, x19, :lo12:.LANCHOR0 - add x23, x20, 2424 - add x20, x20, 2472 - mov x0, x23 - bl allocate_new_data_superblock - ldr x0, [x29, 136] - add x0, x0, :lo12:.LANCHOR2 - ldr w0, [x0, 8] - cmp w0, 0 - csel x20, x20, x23, ne -.L1572: - ldrh w0, [x20, 4] - cbnz w0, .L1569 - mov x0, x20 - bl allocate_new_data_superblock -.L1569: - ldrh w0, [x20, 4] - ldrb w1, [x20, 7] - cmp w0, w25 - csel w0, w0, w25, ls - lsl w1, w1, 2 - cmp w1, w0 - csel w0, w1, w0, ls - str w0, [x29, 128] - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x20, 6] - ldrh w0, [x0, 36] - cmp w1, w0 - bcc .L1573 - adrp x0, .LC1 - mov w2, 1029 - mov x1, x22 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1573: - str xzr, [x29, 168] -.L1574: - ldr w1, [x29, 128] - ldr w23, [x29, 168] - cmp w23, w1 - bcc .L1593 - mov x23, x1 -.L1575: - add x0, x19, :lo12:.LANCHOR0 - mov x3, x20 - mov w2, 0 - mov w1, w23 - ldr x0, [x0, 4040] - bl FtlProgPages - cmp w25, w23 - bcs .L1594 - adrp x0, .LC1 - mov w2, 1106 - mov x1, x22 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1594: - sub w25, w25, w23 - b .L1567 -.L1570: - ldr x0, [x29, 136] - add x0, x0, :lo12:.LANCHOR2 - str wzr, [x0, 8] - ldrh w0, [x1, 4] - cbnz w0, .L1604 - mov x0, x20 - bl allocate_new_data_superblock - b .L1572 -.L1604: - mov x20, x1 - b .L1569 -.L1593: - ldrh w0, [x20, 4] - cbz w0, .L1575 - add x1, x29, 188 - mov w2, 0 - mov w0, w21 - bl log2phys - mov x0, x20 - bl get_new_active_ppa - add x4, x19, :lo12:.LANCHOR0 - ldr x1, [x29, 168] - str x4, [x29, 160] - lsl x28, x1, 5 - ldr x1, [x4, 4040] - ldrh w2, [x4, 116] - add x1, x1, x28 - str w0, [x1, 4] - mul w23, w23, w2 - ldr x0, [x4, 4040] - and x1, x23, 4294967292 - str x1, [x29, 120] - add x0, x0, x28 - ldr x1, [x4, 3992] - ldr x3, [x29, 120] - str x1, [x29, 112] - add x23, x1, x3 - str w21, [x0, 24] - str x23, [x0, 16] - mov w1, 0 - mov x0, x23 - bl ftl_memset - ldr w0, [x29, 144] - cmp w21, w26 - ldr x4, [x29, 160] - ccmp w21, w0, 4, ne - bne .L1576 - cmp w21, w26 - bne .L1577 - ldrh w2, [x4, 62] - udiv w0, w24, w2 - msub w0, w0, w2, w24 - str w0, [x29, 152] - sub w2, w2, w0 - ldr w0, [x29, 156] - cmp w2, w0 - csel w0, w2, w0, ls - str w0, [x29, 160] -.L1578: - add x0, x19, :lo12:.LANCHOR0 - ldr w2, [x29, 160] - ldrh w1, [x0, 62] - cmp w2, w1 - bne .L1579 - ldr x0, [x0, 4040] - cmp w21, w26 - add x3, x0, x28 - bne .L1580 - str x27, [x3, 8] -.L1581: - add x0, x19, :lo12:.LANCHOR0 - ldrb w1, [x20, 6] - ldrh w0, [x0, 36] - cmp w1, w0 - bcc .L1590 - adrp x0, .LC1 - mov w2, 1097 - mov x1, x22 - add x0, x0, :lo12:.LC1 - bl sftl_printk -.L1590: - ldp x1, x2, [x29, 112] - mov w0, -3947 - strh w0, [x1, x2] - add x1, x19, :lo12:.LANCHOR0 - ldr w0, [x1, 2624] - stp w0, w21, [x23, 4] - add w21, w21, 1 - add w0, w0, 1 - cmn w0, #1 - csel w0, w0, wzr, ne - str w0, [x1, 2624] - ldr w0, [x29, 188] - str w0, [x23, 12] - ldrh w0, [x20] - strh w0, [x23, 2] - ldr x0, [x29, 168] - add x0, x0, 1 - str x0, [x29, 168] - b .L1574 -.L1577: - ldr w0, [x29, 148] - ldrh w2, [x4, 62] - str wzr, [x29, 152] - msub w2, w21, w2, w0 - and w0, w2, 65535 - str w0, [x29, 160] - b .L1578 -.L1580: - ldr w0, [x29, 160] -.L1611: - mul w0, w0, w21 - sub w0, w0, w24 - lsl w0, w0, 9 - add x0, x27, x0 - str x0, [x3, 8] - b .L1581 -.L1579: - ldr x1, [x0, 4040] - cmp w21, w26 - add x1, x1, x28 - bne .L1582 - ldr x0, [x0, 4000] -.L1610: - str x0, [x1, 8] - ldr w0, [x29, 188] - cmn w0, #1 - beq .L1584 - add x4, x19, :lo12:.LANCHOR0 - str w0, [x29, 196] - str w21, [x29, 216] - mov w2, 0 - str x4, [x29, 104] - ldr x0, [x4, 4040] - add x0, x0, x28 - ldp x1, x0, [x0, 8] - stp x1, x0, [x29, 200] - mov w1, 1 - add x0, x29, 192 - bl FlashReadPages - ldr w0, [x29, 192] - ldr x4, [x29, 104] - cmn w0, #1 - bne .L1585 - ldr w0, [x4, 2792] - add w0, w0, 1 - str w0, [x4, 2792] -.L1588: - ldr w0, [x29, 160] - cmp w21, w26 - lsl w2, w0, 9 - add x0, x19, :lo12:.LANCHOR0 - bne .L1589 - ldr x0, [x0, 4040] - mov x1, x27 - add x3, x0, x28 - ldr w0, [x29, 152] - ldr x3, [x3, 8] - lsl w0, w0, 9 - add x0, x3, x0 -.L1612: - bl ftl_memcpy - b .L1581 -.L1582: - ldr x0, [x0, 3984] - b .L1610 -.L1585: - ldr w0, [x23, 8] - cmp w21, w0 - beq .L1587 - ldr w0, [x4, 2792] - mov w2, w21 - add w0, w0, 1 - str w0, [x4, 2792] - adrp x0, .LC114 - add x0, x0, :lo12:.LC114 - ldr w1, [x23, 8] - bl sftl_printk -.L1587: - ldr w0, [x23, 8] - cmp w21, w0 - beq .L1588 - mov w2, 1082 - mov x1, x22 - adrp x0, .LC1 - add x0, x0, :lo12:.LC1 - bl sftl_printk - b .L1588 -.L1584: - add x1, x19, :lo12:.LANCHOR0 - ldr x0, [x1, 4040] - ldrh w2, [x1, 114] - mov w1, 0 - add x0, x0, x28 - ldr x0, [x0, 8] - bl ftl_memset - b .L1588 -.L1589: - ldrh w1, [x0, 62] - ldr x0, [x0, 4040] - add x3, x0, x28 - mul w1, w1, w21 - sub w1, w1, w24 - ldr x0, [x3, 8] - lsl w1, w1, 9 - add x1, x27, x1 - b .L1612 -.L1576: - ldr x0, [x4, 4040] - add x3, x0, x28 - ldrh w0, [x4, 62] - b .L1611 -.L1596: - mov w21, 65535 - mov w20, 128 -.L1608: - ldrh w0, [x19, 2672] - cmp w0, w21 - bne .L1597 - ldrh w0, [x19, 3320] - cmp w0, w21 - bne .L1597 - mov w0, 0 - bl List_get_gc_head_node - bl FtlGcRefreshBlock -.L1597: - mov w1, 1 - strh w20, [x19, 3234] - mov w0, w1 - strh w20, [x19, 3232] - bl rk_ftl_garbage_collect - mov w1, 1 - mov w0, 0 - bl rk_ftl_garbage_collect - ldrh w0, [x19, 2416] - cmp w0, 8 - bls .L1608 - b .L1598 -.L1599: - mov w0, -1 - b .L1563 - .size FtlWrite, .-FtlWrite - .align 2 - .global sftl_write - .type sftl_write, %function -sftl_write: - stp x29, x30, [sp, -224]! - add w4, w0, w1 - sub w5, w4, #1 - add x29, sp, 0 - stp x21, x22, [sp, 32] - cmp w5, 63 - stp x23, x24, [sp, 48] - mov w22, w0 - stp x25, x26, [sp, 64] - mov w24, w1 - stp x19, x20, [sp, 16] - mov x25, x2 - stp x27, x28, [sp, 80] - bls .L1614 - cmp w0, 576 - bls .L1615 -.L1614: - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - ldr w0, [x0, 124] - cbz w0, .L1616 - adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 - mov w23, 512 - adrp x1, idb_buf - mov x5, -49148 - add x3, x1, :lo12:idb_buf - ldrh w26, [x0, 14] - mov x2, 0 - ldrh w0, [x0, 10] - mov x8, 262140 - and w21, w26, 255 - mov w6, 4097 - movk x5, 0xfffc, lsl 16 - mul w21, w21, w0 - mov w0, 0 - and w21, w21, 65535 - udiv w23, w23, w21 -.L1620: - add x4, x2, x8 - ldr w7, [x4, x3] - cbz w7, .L1617 -.L1621: - mul w0, w21, w23 - add x20, x20, :lo12:.LANCHOR0 - stp w0, wzr, [x29, 152] - mov w19, 0 - add x0, x1, :lo12:idb_buf - mov w27, 0 - str x0, [x29, 136] -.L1618: - adrp x5, gp_flash_check_buf - mov x2, 512 - add x0, x5, :lo12:gp_flash_check_buf - str x5, [x29, 104] - mov w1, 0 - bl memset - ldrh w3, [x20, 14] - add x4, x20, 3376 - ldrh w2, [x20, 10] - mov w0, 0 - and w28, w3, 255 - ldr x6, [x20, 3384] - str x4, [x29, 112] - udiv w1, w19, w3 - stp w3, w28, [x29, 124] - mul w2, w28, w2 - and w2, w2, 65535 - str w2, [x29, 144] - blr x6 - ldp x5, x4, [x29, 104] - ldr w2, [x29, 144] - str x5, [x29, 144] - ldr w3, [x29, 124] - cmp w2, 511 - bhi .L1622 - add w1, w2, w19 - ldr x4, [x4, 8] - str w2, [x29, 124] - mov w0, 0 - udiv w1, w1, w3 - blr x4 - ldr w2, [x29, 124] -.L1622: - udiv w5, w19, w2 - mov w4, 0 - mov w7, 61424 - msub w5, w5, w2, w19 - sub w6, w19, w5 -.L1623: - cmp w4, 511 - bls .L1624 - ldrh w4, [x20, 14] - mov w5, 0 - ldrh w0, [x20, 10] - and w28, w4, 255 - mov w4, w28 - mul w0, w28, w0 - and w0, w0, 65535 - udiv w6, w19, w0 - msub w6, w6, w0, w19 - and w1, w6, 65535 - sub w7, w19, w6 - sdiv w0, w1, w28 - msub w0, w0, w28, w1 - ldr x1, [x29, 144] - and w0, w0, 65535 - add x9, x1, :lo12:gp_flash_check_buf -.L1625: - cmp w5, 511 - bhi .L1629 - add w1, w6, w5 - sub w8, w4, w0 - add w0, w0, w7 - ldr x10, [x20, 3400] - and w8, w8, 65535 - ubfiz x2, x5, 9, 16 - udiv w1, w1, w28 - add x2, x9, x2 - stp w4, w5, [x29, 100] - add x3, x29, 160 - str w6, [x29, 112] - stp w8, w7, [x29, 120] - and w1, w1, 65535 - str x9, [x29, 128] - madd w1, w1, w28, w0 - mov w0, 0 - udiv w1, w1, w28 - blr x10 - cmn w0, #1 - ldp w4, w5, [x29, 100] - ldr w6, [x29, 112] - ldp w8, w7, [x29, 120] - ldr x9, [x29, 128] - bne .L1626 -.L1629: - ldr x0, [x29, 144] - mov x28, 0 - add x5, x0, :lo12:gp_flash_check_buf -.L1627: - ldr x1, [x29, 136] - lsl x0, x28, 2 - ldr w3, [x0, x1] - ldr w0, [x0, x5] - cmp w0, w3 - beq .L1630 - mov x2, 512 - mov w1, 0 - mov x0, x5 - stp w28, w3, [x29, 124] - str x5, [x29, 144] - bl memset - ldp w6, w3, [x29, 124] - mov w4, w28 - ldr x5, [x29, 144] - mov w1, w19 - adrp x0, .LC115 - add x0, x0, :lo12:.LC115 - ldr w2, [x5, w6, uxtw 2] - bl sftl_printk - udiv w1, w19, w26 - ldr x2, [x20, 3384] - mov w0, 0 - blr x2 - cmp w23, 1 - bls .L1631 - add w1, w21, w19 - ldr x2, [x20, 3384] - mov w0, 0 - udiv w1, w1, w26 - blr x2 -.L1631: - ldr w0, [x29, 152] - add w27, w27, w23 - cmp w27, 15 - add w19, w19, w0 - bls .L1618 -.L1636: - adrp x0, .LANCHOR3 - add x0, x0, :lo12:.LANCHOR3 - str wzr, [x0, 124] -.L1616: - mov x3, x25 - mov w2, w24 - mov w1, w22 - mov w0, 0 - bl FtlWrite - ldp x19, x20, [sp, 16] - ldp x21, x22, [sp, 32] - ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] - ldp x27, x28, [sp, 80] - ldp x29, x30, [sp], 224 - ret -.L1617: - ldr w7, [x3, w0, uxtw 2] - add w0, w0, 1 - str w7, [x4, x3] - cmp w0, w6 - sub x2, x2, #4 - csel w0, w0, wzr, cc - cmp x2, x5 - bne .L1620 - b .L1621 -.L1624: - add w0, w5, w4 - ubfiz x2, x4, 9, 16 - str w4, [x29, 112] - add x3, x29, 160 - ldr x4, [x29, 136] - udiv w0, w0, w28 - ldr x8, [x20, 3392] - str w7, [x29, 104] - add x2, x4, x2 - stp w5, w6, [x29, 120] - and w0, w0, 65535 - mul w1, w0, w28 - stp w1, w7, [x29, 160] - udiv w1, w6, w28 - add w1, w1, w0 - mov w0, 0 - blr x8 - ldr w4, [x29, 112] - ldr w0, [x29, 128] - ldr w7, [x29, 104] - add w4, w0, w4 - ldp w5, w6, [x29, 120] - and w4, w4, 65535 - b .L1623 -.L1626: - add w5, w8, w5 - mov w0, 0 - and w5, w5, 65535 - b .L1625 -.L1630: - add x28, x28, 1 - cmp x28, 65536 - bne .L1627 - ldr w0, [x29, 156] - add w0, w0, 1 - str w0, [x29, 156] - cmp w0, 5 - bls .L1631 - b .L1636 -.L1615: - cmp w0, 63 - adrp x3, idb_buf - bhi .L1633 - mov w1, 64 - sub w1, w1, w0 - sub w2, w24, w1 - ubfiz x1, x1, 9, 25 - add x1, x25, x1 - add x0, x3, :lo12:idb_buf -.L1634: - adrp x3, .LANCHOR3 - add x3, x3, :lo12:.LANCHOR3 - mov w6, 1 - cmp w5, 576 - str w6, [x3, 124] - bls .L1635 - sub w2, w2, w4 - sub w2, w2, #447 -.L1635: - lsl w2, w2, 9 - bl memcpy - b .L1616 -.L1633: - lsl w0, w0, 7 - add x3, x3, :lo12:idb_buf - sub w0, w0, #8192 - mov x1, x2 - add x0, x3, x0, lsl 2 - mov w2, w24 - b .L1634 - .size sftl_write, .-sftl_write - .align 2 .global FtlLoadSysInfo .type FtlLoadSysInfo, %function FtlLoadSysInfo: @@ -11571,11 +4814,11 @@ FtlLoadSysInfo: adrp x20, .LANCHOR0 add x19, x20, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - add x21, x19, 3408 + add x21, x19, 3712 stp x23, x24, [sp, 48] - ldr x0, [x19, 3440] - str x0, [x21, 8] ldr x0, [x19, 3448] + str x0, [x21, 8] + ldr x0, [x19, 3512] str x0, [x21, 16] ldr x0, [x19, 2376] ldrh w2, [x19, 44] @@ -11584,16 +4827,16 @@ FtlLoadSysInfo: ldrh w0, [x19, 2656] mov w1, 65535 cmp w0, w1 - bne .L1647 -.L1655: + bne .L697 +.L705: mov w0, -1 -.L1646: +.L696: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] ldp x29, x30, [sp], 64 ret -.L1647: +.L697: add x23, x19, 2656 mov w1, 1 bl FtlGetLastWrittenPage @@ -11603,44 +4846,44 @@ FtlLoadSysInfo: strh w0, [x23, 2] mov w23, 19539 movk w23, 0x4654, lsl 16 -.L1649: - tbz w22, #31, .L1652 +.L699: + tbz w22, #31, .L702 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 1482 - add x1, x1, 688 + mov w2, 1448 + add x1, x1, 320 add x0, x0, :lo12:.LC1 bl sftl_printk -.L1651: +.L701: add x1, x20, :lo12:.LANCHOR0 ldrh w0, [x1, 44] ldrh w1, [x1, 114] add x0, x0, 24 cmp x1, x0, lsl 1 - bcs .L1654 + bcs .L704 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 1484 - add x1, x1, 688 + mov w2, 1450 + add x1, x1, 320 add x0, x0, :lo12:.LC1 bl sftl_printk -.L1654: +.L704: add x19, x20, :lo12:.LANCHOR0 mov w2, 48 add x21, x19, 2312 mov x0, x21 - ldr x1, [x19, 3416] + ldr x1, [x19, 3720] bl ftl_memcpy ldr x0, [x19, 2376] ldrh w2, [x19, 44] - ldr x1, [x19, 3416] + ldr x1, [x19, 3720] lsl w2, w2, 1 add x1, x1, 48 bl ftl_memcpy ldrh w1, [x19, 44] - ldr x0, [x19, 3416] + ldr x0, [x19, 3720] lsr w2, w1, 3 ubfiz x1, x1, 1, 16 add x1, x1, 48 @@ -11653,18 +4896,17 @@ FtlLoadSysInfo: mov w0, 19539 movk w0, 0x4654, lsl 16 cmp w1, w0 - bne .L1655 + bne .L705 ldrh w1, [x19, 2320] ldrb w2, [x19, 2322] ldrh w0, [x19, 58] strh w1, [x19, 2662] cmp w2, w0 - bne .L1655 - adrp x0, .LANCHOR3+128 + bne .L705 + ldrh w0, [x19, 106] ldrh w2, [x19, 62] ldrh w3, [x19, 36] - str w1, [x0, #:lo12:.LANCHOR3+128] - ldrh w0, [x19, 106] + str w1, [x19, 3744] mul w0, w0, w1 str w0, [x19, 2584] mul w0, w2, w0 @@ -11676,15 +4918,15 @@ FtlLoadSysInfo: sub w0, w0, w1 udiv w0, w0, w3 strh w0, [x19, 2652] - bls .L1656 + bls .L706 adrp x1, .LANCHOR1 add x1, x1, :lo12:.LANCHOR1 adrp x0, .LC1 - mov w2, 1506 - add x1, x1, 688 + mov w2, 1472 + add x1, x1, 320 add x0, x0, :lo12:.LC1 bl sftl_printk -.L1656: +.L706: add x0, x20, :lo12:.LANCHOR0 mov w3, -1 ldrh w2, [x0, 2328] @@ -11730,109 +4972,4931 @@ FtlLoadSysInfo: ldr w2, [x0, 2620] str wzr, [x0, 2600] cmp w1, w2 - bls .L1657 + bls .L707 str w1, [x0, 2620] -.L1657: +.L707: add x0, x20, :lo12:.LANCHOR0 ldr w1, [x0, 2348] ldr w2, [x0, 2624] cmp w1, w2 - bls .L1658 + bls .L708 str w1, [x0, 2624] -.L1658: +.L708: mov w0, 65535 cmp w4, w0 - beq .L1659 + beq .L709 add x0, x20, :lo12:.LANCHOR0 add x0, x0, 2424 bl make_superblock -.L1659: +.L709: add x1, x20, :lo12:.LANCHOR0 add x0, x1, 2472 ldrh w2, [x1, 2472] mov w1, 65535 cmp w2, w1 - beq .L1660 + beq .L710 bl make_superblock -.L1660: +.L710: add x1, x20, :lo12:.LANCHOR0 add x0, x1, 2520 ldrh w2, [x1, 2520] mov w1, 65535 cmp w2, w1 - beq .L1661 + beq .L711 bl make_superblock -.L1661: +.L711: add x20, x20, :lo12:.LANCHOR0 mov w1, 65535 add x0, x20, 2672 ldrh w2, [x20, 2672] cmp w2, w1 - beq .L1662 + beq .L712 bl make_superblock -.L1662: +.L712: mov w0, 0 - b .L1646 -.L1652: + b .L696 +.L702: ldrh w0, [x19, 2656] mov w2, 1 mov w1, w2 orr w0, w22, w0, lsl 10 str w0, [x21, 4] - ldr x0, [x19, 3440] + ldr x0, [x19, 3448] str x0, [x21, 8] mov x0, x21 bl FlashReadPages ldr w0, [x21] cmn w0, #1 - beq .L1650 - ldr x0, [x19, 3440] + beq .L700 + ldr x0, [x19, 3448] ldr w0, [x0] cmp w0, w23 - bne .L1650 - ldr x0, [x19, 3448] + bne .L700 + ldr x0, [x19, 3512] ldrh w0, [x0] cmp w0, w24 - beq .L1651 -.L1650: + beq .L701 +.L700: sub w22, w22, #1 sxth w22, w22 - b .L1649 + b .L699 .size FtlLoadSysInfo, .-FtlLoadSysInfo .align 2 + .global FlashProgPages + .type FlashProgPages, %function +FlashProgPages: + stp x29, x30, [sp, -160]! + ubfiz x1, x1, 5, 32 + add x29, sp, 0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + stp x19, x20, [sp, 16] + add x22, x0, x1 + str w2, [x29, 108] + add x2, x21, :lo12:.LANCHOR0 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR1 + stp x27, x28, [sp, 80] + add x23, x23, :lo12:.LANCHOR1 + stp x25, x26, [sp, 64] + adrp x24, .LC1 + mov w27, w3 + mov x19, x0 + ldrh w25, [x2, 12] + mov x20, x0 + add x23, x23, 336 + add x24, x24, :lo12:.LC1 + lsl w28, w25, 3 +.L719: + cmp x20, x22 + bne .L732 + cbz w27, .L725 + adrp x20, .LC86 + adrp x23, .LC87 + add x20, x20, :lo12:.LC86 + add x23, x23, :lo12:.LC87 + b .L753 +.L732: + ldr x0, [x20, 8] + cbz x0, .L720 + ldr x0, [x20, 16] + cbnz x0, .L721 +.L720: + mov w2, 136 + mov x1, x23 + mov x0, x24 + bl sftl_printk +.L721: + ldr w0, [x20, 4] + add x2, x29, 120 + add x1, x29, 124 + bl l2p_addr_tran.isra.0 + ldr w0, [x29, 120] + cbnz w0, .L722 + ldr w0, [x29, 124] + cmp w28, w0 + bls .L722 + adrp x20, .LANCHOR1 + add x20, x20, :lo12:.LANCHOR1 + adrp x21, .LC80 + add x20, x20, 336 + add x21, x21, :lo12:.LC80 + b .L752 +.L724: + ldr w2, [x19, 4] + mov w0, -1 + str w0, [x19] + mov x1, x20 + mov x0, x21 + add x19, x19, 32 + bl sftl_printk + ldr x1, [x19, -24] + mov w3, 16 + mov w2, 4 + adrp x0, .LC81 + add x0, x0, :lo12:.LC81 + bl rknand_print_hex + ldr x1, [x19, -16] + mov w3, 4 + adrp x0, .LC82 + mov w2, w3 + add x0, x0, :lo12:.LC82 + bl rknand_print_hex +.L752: + cmp x19, x22 + bne .L724 + bl dump_stack +.L725: + 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 +.L722: + ldr x1, [x20, 8] + tst x1, 63 + beq .L739 + add x0, x21, :lo12:.LANCHOR0 + ldr x26, [x0, 3488] + cmp x1, x26 + beq .L726 + ldrh w2, [x0, 62] + mov x0, x26 + lsl w2, w2, 9 + bl ftl_memcpy +.L726: + add x0, x21, :lo12:.LANCHOR0 + ldr w1, [x29, 124] + ldr x3, [x20, 16] + mov x2, x26 + ldr x5, [x0, 3384] + ldrb w0, [x29, 120] + blr x5 + cbnz w0, .L727 + str wzr, [x20] +.L728: + add x0, x21, :lo12:.LANCHOR0 + ldrh w1, [x0, 14] + cmp w1, 4 + bne .L730 + ldr x5, [x0, 3384] + add x2, x26, 2048 + ldrb w0, [x29, 120] + ldr w1, [x29, 124] + ldr x3, [x20, 16] + add w1, w25, w1 + add x3, x3, 8 + blr x5 + cbz w0, .L730 + mov w0, -1 + str w0, [x20] +.L730: + add x20, x20, 32 + b .L719 +.L739: + mov x26, x1 + b .L726 +.L727: + mov w0, -1 + str w0, [x20] + b .L728 +.L737: + add x0, x21, :lo12:.LANCHOR0 + ldr w2, [x29, 108] + ldr x1, [x0, 3488] + str wzr, [x1] + ldr x1, [x0, 3504] + str wzr, [x1] + ldr w1, [x19, 4] + str w1, [x29, 132] + ldr x1, [x0, 3488] + ldr x0, [x0, 3504] + stp x1, x0, [x29, 136] + mov w1, 1 + add x0, x29, 128 + bl FlashReadPages + ldr w24, [x29, 128] + cmn w24, #1 + bne .L734 + ldr w1, [x19, 4] + mov x0, x20 + bl sftl_printk + str w24, [x19] +.L734: + ldr x0, [x19, 16] + cbz x0, .L735 + ldr w2, [x0] + add x0, x21, :lo12:.LANCHOR0 + ldr x0, [x0, 3504] + ldr w3, [x0] + cmp w2, w3 + beq .L735 + ldr w1, [x19, 4] + mov x0, x23 + bl sftl_printk + mov w0, -1 + str w0, [x19] +.L735: + ldr x0, [x19, 8] + cbz x0, .L736 + ldr w2, [x0] + add x0, x21, :lo12:.LANCHOR0 + ldr x0, [x0, 3488] + ldr w3, [x0] + cmp w2, w3 + beq .L736 + ldr w1, [x19, 4] + adrp x0, .LC88 + add x0, x0, :lo12:.LC88 + bl sftl_printk + mov w0, -1 + str w0, [x19] +.L736: + add x19, x19, 32 +.L753: + cmp x19, x22 + bne .L737 + b .L725 + .size FlashProgPages, .-FlashProgPages + .align 2 + .global FtlLowFormatEraseBlock + .type FtlLowFormatEraseBlock, %function +FtlLowFormatEraseBlock: + stp x29, x30, [sp, -112]! + mov w10, 0 + mov w9, 4 + add x29, sp, 0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x5, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + and w22, w1, 255 + stp x25, x26, [sp, 64] + add x8, x5, 64 + stp x27, x28, [sp, 80] + and w23, w0, 65535 + mov w20, 0 + mov w19, 0 + str w23, [x5, 3420] +.L756: + ldrh w0, [x5, 36] + cmp w0, w10 + bhi .L760 + cbz w20, .L755 + ldr x0, [x5, 3400] + mov w2, w20 + mov w1, 0 + ubfiz x20, x20, 5, 16 + mov x24, 0 + add x25, x21, :lo12:.LANCHOR0 + bl FlashEraseBlocks +.L764: + ldr x0, [x25, 3400] + add x1, x0, x24 + ldr w0, [x0, x24] + cmn w0, #1 + bne .L763 + ldr w0, [x1, 4] + add w19, w19, 1 + and w19, w19, 65535 + lsr w0, w0, 10 + bl FtlBbmMapBadBlock +.L763: + add x24, x24, 32 + cmp x24, x20 + bne .L764 + cbz w22, .L777 + add x0, x21, :lo12:.LANCHOR0 + mov w25, 1 + ldrh w26, [x0, 108] +.L765: + add x28, x21, :lo12:.LANCHOR0 + mov w24, 0 + add x0, x28, 64 + str x0, [x29, 104] +.L773: + mov w5, 0 + mov w20, 0 +.L766: + ldrh w0, [x28, 36] + cmp w0, w5 + bhi .L769 + cbz w20, .L755 + ldr x0, [x28, 3400] + mov w1, w20 + mov w3, 1 + mov w2, w25 + mov x27, 0 + bl FlashProgPages + ubfiz x1, x20, 5, 16 +.L772: + ldr x0, [x28, 3400] + add x3, x0, x27 + ldr w0, [x0, x27] + cbz w0, .L771 + ldr w0, [x3, 4] + add w19, w19, 1 + str x1, [x29, 96] + and w19, w19, 65535 + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + ldr x1, [x29, 96] +.L771: + add x27, x27, 32 + cmp x1, x27 + bne .L772 + add w24, w24, 1 + cmp w26, w24, uxth + bhi .L773 + add x26, x21, :lo12:.LANCHOR0 + mov x24, 0 +.L775: + cbz w22, .L774 + ldr x0, [x26, 3400] + add x1, x0, x24 + ldr w0, [x0, x24] + cbnz w0, .L774 + ldr w0, [x1, 4] + mov w1, 1 + lsr w0, w0, 10 + bl FtlFreeSysBlkQueueIn +.L774: + add x24, x24, 32 + cmp x24, x27 + bne .L775 + cmp w23, 63 + ccmp w22, 0, 0, hi + beq .L755 + add x21, x21, :lo12:.LANCHOR0 + mov w2, w20 + mov w1, w25 + ldr x0, [x21, 3400] + bl FlashEraseBlocks +.L755: + 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], 112 + ret +.L760: + ldr x1, [x5, 3400] + ubfiz x0, x10, 5, 16 + str wzr, [x1, x0] + mov w1, w23 + ldrb w0, [x8, w10, sxtw] + bl V2P_block + and w6, w0, 65535 + mov w7, w6 + cbz w22, .L757 + bl IsBlkInVendorPart + cbnz w0, .L758 +.L757: + mov w0, w7 + bl FtlBbmIsBadBlock + cbnz w0, .L759 + ldr x0, [x5, 3400] + ubfiz x2, x20, 5, 16 + lsl w6, w6, 10 + add x0, x0, x2 + str w6, [x0, 4] + ldr x1, [x5, 3400] + ldr x0, [x5, 3480] + add x1, x1, x2 + ldr x2, [x5, 3520] + str x0, [x1, 8] + ldrh w0, [x5, 116] + mul w0, w0, w20 + add w20, w20, 1 + and w20, w20, 65535 + sdiv w0, w0, w9 + add x0, x2, x0, sxtw 2 + str x0, [x1, 16] +.L758: + add w10, w10, 1 + and w10, w10, 65535 + b .L756 +.L759: + add w19, w19, 1 + and w19, w19, 65535 + b .L758 +.L777: + mov w25, 0 + mov w26, 2 + b .L765 +.L769: + ldr x1, [x28, 3400] + ubfiz x0, x5, 5, 16 + str wzr, [x1, x0] + mov w1, w23 + ldr x0, [x29, 104] + ldrb w0, [x0, w5, sxtw] + bl V2P_block + and w6, w0, 65535 + mov w7, w6 + cbz w22, .L767 + bl IsBlkInVendorPart + cbnz w0, .L768 +.L767: + mov w0, w7 + bl FtlBbmIsBadBlock + cbnz w0, .L768 + ldr x0, [x28, 3400] + ubfiz x2, x20, 5, 16 + add w6, w24, w6, lsl 10 + add x0, x0, x2 + str w6, [x0, 4] + ldr x1, [x28, 3400] + ldr x0, [x28, 3472] + add x1, x1, x2 + mov w2, 4 + str x0, [x1, 8] + ldrh w0, [x28, 116] + mul w0, w0, w20 + add w20, w20, 1 + and w20, w20, 65535 + sdiv w0, w0, w2 + ldr x2, [x28, 3480] + add x0, x2, x0, sxtw 2 + str x0, [x1, 16] +.L768: + add w5, w5, 1 + and w5, w5, 65535 + b .L766 + .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock + .align 2 + .global Ftl_write_map_blk_to_last_page + .type Ftl_write_map_blk_to_last_page, %function +Ftl_write_map_blk_to_last_page: + stp x29, x30, [sp, -64]! + mov w1, 65535 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + stp x21, x22, [sp, 32] + str x23, [sp, 48] + ldr x20, [x0, 16] + ldrh w0, [x0] + cmp w0, w1 + bne .L799 + ldrh w0, [x19, 8] + cbz w0, .L800 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 641 + add x1, x1, 352 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L800: + ldrh w0, [x19, 8] + add w0, w0, 1 + strh w0, [x19, 8] + bl FtlFreeSysBlkQueueOut + strh w0, [x20] + strh wzr, [x19, 2] + ldr w0, [x19, 48] + strh wzr, [x19] + add w0, w0, 1 + str w0, [x19, 48] +.L801: + mov w0, 0 + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 64 + ret +.L799: + ubfiz x0, x0, 1, 16 + adrp x21, .LANCHOR0 + ldr w1, [x19, 48] + ldr x23, [x19, 40] + ldrh w22, [x20, x0] + add x20, x21, :lo12:.LANCHOR0 + ldrh w0, [x19, 2] + orr w0, w0, w22, lsl 10 + str w0, [x20, 3716] + ldr x0, [x20, 3448] + str x0, [x20, 3720] + ldr x0, [x20, 3512] + str x0, [x20, 3728] + str w1, [x0, 4] + mov w1, -1291 + strh w1, [x0, 8] + ldrh w1, [x19, 4] + strh w1, [x0] + strh w22, [x0, 2] + mov w1, 255 + ldrh w2, [x20, 108] + ldr x0, [x20, 3448] + lsl w2, w2, 3 + bl ftl_memset + mov w0, 0 + mov w1, 0 +.L802: + ldrh w2, [x19, 6] + cmp w2, w1 + bhi .L804 + add x0, x21, :lo12:.LANCHOR0 + mov w2, 1 + mov w3, 0 + mov w1, w2 + add x0, x0, 3712 + bl FlashProgPages + ldrh w0, [x19, 2] + add w0, w0, 1 + strh w0, [x19, 2] + mov x0, x19 + bl ftl_map_blk_gc + b .L801 +.L804: + ubfiz x2, x1, 2, 16 + ldr w3, [x23, x2] + cmp w22, w3, lsr 10 + bne .L803 + add w0, w0, 1 + ldr x4, [x20, 3448] + and w0, w0, 65535 + ubfiz x3, x0, 3, 16 + str w1, [x4, x3] + ldr w4, [x23, x2] + ldr x2, [x20, 3448] + add x2, x2, x3 + str w4, [x2, 4] +.L803: + add w1, w1, 1 + and w1, w1, 65535 + b .L802 + .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page + .align 2 + .global FtlMapWritePage + .type FtlMapWritePage, %function +FtlMapWritePage: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR0 + add x24, x23, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + mov x19, x0 + stp x25, x26, [sp, 64] + adrp x22, .LANCHOR1 + stp x27, x28, [sp, 80] + mov w26, w1 + mov x27, x2 + mov x25, x23 + add x22, x22, :lo12:.LANCHOR1 + add x20, x24, 3712 + mov w21, 0 +.L810: + add x0, x23, :lo12:.LANCHOR0 + ldr w1, [x0, 2604] + add w1, w1, 1 + str w1, [x0, 2604] + ldrh w0, [x0, 108] + ldrh w1, [x19, 2] + sub w0, w0, #1 + cmp w1, w0 + bge .L811 + ldrh w1, [x19] + mov w0, 65535 + cmp w1, w0 + bne .L812 +.L811: + mov x0, x19 + bl Ftl_write_map_blk_to_last_page +.L812: + ldrh w1, [x19] + ldr x0, [x19, 16] + ldrh w0, [x0, x1, lsl 1] + cbnz w0, .L813 + adrp x0, .LC1 + mov w2, 699 + add x1, x22, 384 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L813: + ldrh w1, [x19] + ldrh w0, [x19, 10] + cmp w1, w0 + bcc .L814 + adrp x0, .LC1 + mov w2, 700 + add x1, x22, 384 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L814: + ldrh w1, [x19] + mov w2, 16 + ldr x0, [x19, 16] + ldrh w28, [x0, x1, lsl 1] + mov w1, 0 + ldrh w0, [x19, 2] + str x27, [x20, 8] + orr w0, w0, w28, lsl 10 + str w0, [x20, 4] + ldr x0, [x24, 3512] + str x0, [x20, 16] + bl ftl_memset + ldr x0, [x20, 16] + mov w3, 1 + ldr w1, [x19, 48] + mov w2, w3 + strh w26, [x0, 8] + str w1, [x0, 4] + ldrh w1, [x19, 4] + strh w1, [x0] + mov w1, w3 + strh w28, [x0, 2] + mov x0, x20 + bl FlashProgPages + ldrh w0, [x19, 2] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x19, 2] + ldr w1, [x20] + cmn w1, #1 + bne .L815 + ldr w1, [x20, 4] + adrp x0, .LC89 + add x0, x0, :lo12:.LC89 + add w21, w21, 1 + and w21, w21, 65535 + bl sftl_printk + ldrh w0, [x19, 2] + cmp w0, 2 + bhi .L816 + ldrh w0, [x24, 108] + sub w0, w0, #1 + strh w0, [x19, 2] +.L816: + cmp w21, 3 + bls .L817 + add x25, x25, :lo12:.LANCHOR0 + adrp x0, .LC90 + mov w2, w21 + add x0, x0, :lo12:.LC90 + ldr w1, [x25, 3716] + bl sftl_printk +.L818: + b .L818 +.L817: + ldr w0, [x19, 52] + cbz w0, .L810 +.L832: + b .L832 +.L815: + cmp w0, 1 + beq .L821 + cmp w1, 256 + beq .L821 + ldr w0, [x19, 56] + cbz w0, .L822 +.L821: + str wzr, [x19, 56] + b .L810 +.L822: + ldr x0, [x19, 40] + ldr w1, [x20, 4] + str w1, [x0, w26, uxtw 2] + 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 + .size FtlMapWritePage, .-FtlMapWritePage + .align 2 + .global load_l2p_region + .type load_l2p_region, %function +load_l2p_region: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x21, x22, [sp, 32] + and w22, w0, 65535 + adrp x21, .LANCHOR0 + add x0, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + and x19, x1, 65535 + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldrh w0, [x0, 140] + cmp w0, w22 + bcs .L835 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 485 + add x1, x1, 400 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L835: + add x20, x21, :lo12:.LANCHOR0 + ubfiz x0, x22, 2, 16 + ldr x1, [x20, 3600] + ldr w24, [x1, x0] + cbnz w24, .L836 + ldr x0, [x20, 2568] + lsl x19, x19, 4 + ldrh w2, [x20, 114] + mov w1, 255 + add x0, x0, x19 + ldr x0, [x0, 8] + bl ftl_memset + ldr x0, [x20, 2568] + strh w22, [x0, x19] + ldr x0, [x20, 2568] + add x19, x0, x19 + str wzr, [x19, 4] +.L837: + mov w0, 0 + ldr x25, [sp, 64] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x29, x30, [sp], 80 + ret +.L836: + ldr x0, [x20, 2568] + lsl x19, x19, 4 + add x23, x20, 3712 + mov w2, 1 + add x0, x0, x19 + mov w1, w2 + str w24, [x20, 3716] + ldr x0, [x0, 8] + str x0, [x20, 3720] + ldr x0, [x20, 3512] + str x0, [x20, 3728] + mov x0, x23 + bl FlashReadPages + ldr x25, [x20, 3728] + ldrh w0, [x25, 8] + cmp w0, w22 + beq .L838 + mov w2, w24 + mov w1, w22 + adrp x0, .LC91 + add x0, x0, :lo12:.LC91 + bl sftl_printk + ldr x1, [x20, 3728] + mov w3, 4 + adrp x0, .LC92 + mov w2, w3 + add x0, x0, :lo12:.LC92 + bl rknand_print_hex + ldrh w3, [x20, 140] + adrp x0, .LC93 + ldr x1, [x20, 3600] + mov w2, 4 + add x0, x0, :lo12:.LC93 + bl rknand_print_hex +.L839: + ldrh w0, [x25, 8] + cmp w0, w22 + beq .L840 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 508 + add x1, x1, 400 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L840: + add x21, x21, :lo12:.LANCHOR0 + ldr x0, [x21, 2568] + add x0, x0, x19 + str wzr, [x0, 4] + ldr x0, [x21, 2568] + strh w22, [x0, x19] + b .L837 +.L838: + ldr w0, [x20, 3712] + cmp w0, 256 + bne .L839 + mov w2, w24 + mov w1, w22 + adrp x0, .LC94 + add x0, x0, :lo12:.LC94 + bl sftl_printk + ldr x0, [x20, 2568] + mov w1, w22 + add x0, x0, x19 + ldr x2, [x0, 8] + add x0, x20, 3632 + bl FtlMapWritePage + b .L839 + .size load_l2p_region, .-load_l2p_region + .align 2 + .global ftl_map_blk_gc + .type ftl_map_blk_gc, %function +ftl_map_blk_gc: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + stp x21, x22, [sp, 32] + adrp x22, .LANCHOR0 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr x20, [x0, 16] + ldr x25, [x0, 40] + bl ftl_free_no_use_map_blk + ldrh w1, [x19, 10] + ldrh w2, [x19, 8] + sub w1, w1, #5 + cmp w2, w1 + blt .L843 + ubfiz x0, x0, 1, 16 + ldrh w26, [x20, x0] + cbz w26, .L843 + ldr w1, [x19, 52] + cbnz w1, .L843 + mov w1, 1 + str w1, [x19, 52] + strh wzr, [x20, x0] + ldrh w0, [x19, 8] + ldrh w1, [x19, 2] + sub w0, w0, #1 + strh w0, [x19, 8] + add x0, x22, :lo12:.LANCHOR0 + ldrh w0, [x0, 108] + cmp w1, w0 + bcc .L844 + mov x0, x19 + bl ftl_map_blk_alloc_new_blk +.L844: + add x27, x22, :lo12:.LANCHOR0 + adrp x23, .LANCHOR1 + add x23, x23, :lo12:.LANCHOR1 + add x21, x27, 3712 + add x23, x23, 416 + mov w20, 0 +.L845: + ldrh w0, [x19, 6] + cmp w0, w20 + bhi .L852 + mov w1, 1 + mov w0, w26 + bl FtlFreeSysBlkQueueIn + str wzr, [x19, 52] +.L843: + add x22, x22, :lo12:.LANCHOR0 + ldrh w1, [x19, 2] + ldrh w0, [x22, 108] + cmp w1, w0 + bcc .L853 + mov x0, x19 + bl ftl_map_blk_alloc_new_blk +.L853: + 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 +.L852: + ubfiz x0, x20, 2, 16 + add x28, x25, x0 + ldr w1, [x25, x0] + cmp w26, w1, lsr 10 + bne .L846 + ldr x1, [x27, 3456] + mov w2, 1 + ldr x24, [x27, 3512] + stp x1, x24, [x21, 8] + mov w1, w2 + ldr w0, [x25, x0] + str w0, [x21, 4] + mov x0, x21 + bl FlashReadPages + ldrh w0, [x24, 8] + cmp w0, w20 + beq .L847 + adrp x0, .LC1 + mov w2, 611 + mov x1, x23 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L847: + ldr w0, [x21] + cmn w0, #1 + bne .L848 +.L850: + str wzr, [x28] +.L849: + b .L849 +.L848: + ldrh w0, [x24, 8] + cmp w0, w20 + bne .L850 + ldrh w1, [x24] + ldrh w0, [x19, 4] + cmp w1, w0 + bne .L850 + ldr x2, [x21, 8] + mov w1, w20 + mov x0, x19 + bl FtlMapWritePage +.L846: + add w20, w20, 1 + and w20, w20, 65535 + b .L845 + .size ftl_map_blk_gc, .-ftl_map_blk_gc + .align 2 + .global FtlMapTblRecovery + .type FtlMapTblRecovery, %function +FtlMapTblRecovery: + stp x29, x30, [sp, -128]! + mov w1, 0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + mov w27, 0 + stp x23, x24, [sp, 48] + ldrh w24, [x0, 6] + ldr x0, [x0, 40] + str x0, [x29, 120] + ldrh w0, [x19, 8] + lsl w2, w24, 2 + str w0, [x29, 116] + ldr x0, [x29, 120] + ldp x23, x26, [x19, 16] + bl ftl_memset + stp wzr, wzr, [x19, 48] + add x3, x21, :lo12:.LANCHOR0 + add x20, x3, 3712 + mov x25, x3 + ldr x0, [x3, 3448] + ldr x22, [x3, 3512] + stp x0, x22, [x20, 8] + mov w0, -1 + strh w0, [x19] + strh w0, [x19, 2] + mov w0, 1 + str w0, [x19, 56] + ldr w0, [x29, 116] + sub w0, w0, #1 + str w0, [x29, 112] +.L860: + ldr w0, [x29, 116] + cmp w27, w0 + bge .L877 + ldr w0, [x29, 112] + sxtw x28, w27 + cmp w27, w0 + bne .L861 + lsl x0, x28, 1 + mov w1, 1 + add x20, x23, x0 + add x25, x21, :lo12:.LANCHOR0 + add x25, x25, 3712 + ldrh w0, [x23, x0] + mov w23, 0 + bl FtlGetLastWrittenPage + strh w27, [x19] + sxth w1, w0 + add w0, w0, 1 + strh w0, [x19, 2] + ldr w0, [x26, x28, lsl 2] + add w26, w1, 1 + str w0, [x19, 48] +.L862: + cmp w23, w26 + blt .L864 +.L877: + add x21, x21, :lo12:.LANCHOR0 + mov x0, x19 + bl ftl_free_no_use_map_blk + ldrh w1, [x19, 2] + ldrh w0, [x21, 108] + cmp w1, w0 + bne .L866 + mov x0, x19 + bl ftl_map_blk_alloc_new_blk +.L866: + mov x0, x19 + bl ftl_map_blk_gc + mov x0, x19 + bl ftl_map_blk_gc + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 128 + ret +.L864: + ldrh w0, [x20] + mov w2, 1 + mov w1, w2 + orr w0, w23, w0, lsl 10 + str w0, [x25, 4] + mov x0, x25 + bl FlashReadPages + ldr w0, [x25] + cmn w0, #1 + beq .L863 + ldrh w0, [x22, 8] + cmp w24, w0 + bls .L863 + ldrh w2, [x22] + ldrh w1, [x19, 4] + cmp w2, w1 + bne .L863 + ldr x2, [x29, 120] + ubfiz x0, x0, 2, 16 + ldr w1, [x25, 4] + str w1, [x2, x0] +.L863: + add w23, w23, 1 + sxth w23, w23 + b .L862 +.L861: + ldr x0, [x25, 3448] + mov w2, 1 + str x0, [x20, 8] + lsl x0, x28, 1 + ldrh w1, [x25, 108] + add x28, x23, x0 + ldrh w0, [x23, x0] + sub w1, w1, #1 + orr w0, w1, w0, lsl 10 + mov w1, w2 + str w0, [x20, 4] + mov x0, x20 + bl FlashReadPages + ldr w0, [x20] + cmn w0, #1 + beq .L879 + ldrh w1, [x22] + ldrh w0, [x19, 4] + cmp w1, w0 + bne .L879 + ldrh w1, [x22, 8] + mov w0, 64245 + cmp w1, w0 + beq .L868 +.L879: + mov w5, 0 +.L869: + ldrh w0, [x25, 108] + cmp w5, w0 + bge .L875 + ldrh w0, [x28] + mov w2, 1 + str w5, [x29, 108] + mov w1, w2 + orr w0, w5, w0, lsl 10 + str w0, [x20, 4] + mov x0, x20 + bl FlashReadPages + ldr w0, [x20] + ldr w5, [x29, 108] + cmn w0, #1 + beq .L873 + ldrh w0, [x22, 8] + cmp w24, w0 + bls .L873 + ldrh w2, [x22] + ldrh w1, [x19, 4] + cmp w2, w1 + bne .L873 + ldr x2, [x29, 120] + ubfiz x0, x0, 2, 16 + ldr w1, [x20, 4] + str w1, [x2, x0] +.L873: + add w5, w5, 1 + sxth w5, w5 + b .L869 +.L868: + mov w0, 0 +.L870: + ldrh w1, [x25, 108] + sub w1, w1, #1 + cmp w0, w1 + blt .L872 +.L875: + add w4, w27, 1 + sxth w27, w4 + b .L860 +.L872: + ldr x2, [x25, 3448] + sbfiz x5, x0, 3, 32 + ldrh w1, [x2, x5] + cmp w24, w1 + bls .L871 + add x2, x2, x5 + ldr x3, [x29, 120] + ubfiz x1, x1, 2, 16 + ldr w2, [x2, 4] + str w2, [x3, x1] +.L871: + add w0, w0, 1 + sxth w0, w0 + b .L870 + .size FtlMapTblRecovery, .-FtlMapTblRecovery + .align 2 + .global FtlLoadVonderInfo + .type FtlLoadVonderInfo, %function +FtlLoadVonderInfo: + adrp x1, .LANCHOR0 + add x1, x1, :lo12:.LANCHOR0 + stp x29, x30, [sp, -16]! + add x0, x1, 3752 + add x29, sp, 0 + ldrh w2, [x1, 124] + strh w2, [x0, 10] + mov w2, -3962 + strh w2, [x0, 4] + ldrh w2, [x1, 148] + strh w2, [x0, 8] + ldrh w2, [x1, 126] + strh w2, [x0, 6] + ldr x2, [x1, 152] + str x2, [x0, 16] + ldr x2, [x1, 3584] + str x2, [x0, 24] + ldr x2, [x1, 3576] + ldr x1, [x1, 3592] + stp x2, x1, [x0, 32] + bl FtlMapTblRecovery + mov w0, 0 + ldp x29, x30, [sp], 16 + ret + .size FtlLoadVonderInfo, .-FtlLoadVonderInfo + .align 2 + .global FtlLoadMapInfo + .type FtlLoadMapInfo, %function +FtlLoadMapInfo: + stp x29, x30, [sp, -16]! + add x29, sp, 0 + bl FtlL2PDataInit + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + add x0, x0, 3632 + bl FtlMapTblRecovery + mov w0, 0 + ldp x29, x30, [sp], 16 + ret + .size FtlLoadMapInfo, .-FtlLoadMapInfo + .align 2 + .global flush_l2p_region + .type flush_l2p_region, %function +flush_l2p_region: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ubfiz x20, x0, 4, 16 + ldr x0, [x19, 2568] + add x1, x0, x20 + ldr x2, [x1, 8] + ldrh w1, [x0, x20] + add x0, x19, 3632 + bl FtlMapWritePage + ldr x0, [x19, 2568] + add x0, x0, x20 + ldr w1, [x0, 4] + and w1, w1, 2147483647 + str w1, [x0, 4] + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret + .size flush_l2p_region, .-flush_l2p_region + .align 2 + .global log2phys + .type log2phys, %function +log2phys: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + stp x25, x26, [sp, 64] + mov w25, w0 + add x0, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + mov x22, x1 + mov w23, w2 + ldrh w24, [x0, 112] + ldr w0, [x0, 2584] + cmp w25, w0 + bcc .L894 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 811 + add x1, x1, 432 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L894: + add x0, x20, :lo12:.LANCHOR0 + ldr w1, [x0, 2584] + cmp w25, w1 + bcs .L895 + add w24, w24, 7 + ldrh w1, [x0, 142] + ldr x2, [x0, 2568] + mov x0, 0 + lsr w21, w25, w24 + and w21, w21, 65535 +.L896: + and x19, x0, 65535 + cmp w19, w1 + bcc .L901 + bl select_l2p_ram_region + and x19, x0, 65535 + add x2, x20, :lo12:.LANCHOR0 + ubfiz x1, x19, 4, 16 + mov w26, w0 + ldr x2, [x2, 2568] + add x3, x2, x1 + ldrh w2, [x2, x1] + mov w1, 65535 + cmp w2, w1 + beq .L902 + ldr w1, [x3, 4] + tbz w1, #31, .L902 + bl flush_l2p_region +.L902: + mov w1, w26 + mov w0, w21 + bl load_l2p_region + b .L898 +.L895: + mov w0, -1 + cbnz w23, .L893 + str w0, [x22] +.L893: + 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 +.L901: + add x0, x0, 1 + add x3, x2, x0, lsl 4 + ldrh w3, [x3, -16] + cmp w3, w21 + bne .L896 +.L898: + mov x0, 1 + lsl x0, x0, x24 + sub w0, w0, #1 + and w0, w0, w25 + and x0, x0, 65535 + cbnz w23, .L899 + add x1, x20, :lo12:.LANCHOR0 + ldr x1, [x1, 2568] + add x1, x1, x19, lsl 4 + ldr x1, [x1, 8] + ldr w0, [x1, x0, lsl 2] + str w0, [x22] +.L900: + add x20, x20, :lo12:.LANCHOR0 + ldr x0, [x20, 2568] + add x19, x0, x19, lsl 4 + ldr w0, [x19, 4] + cmn w0, #1 + beq .L904 + add w0, w0, 1 + str w0, [x19, 4] +.L904: + mov w0, 0 + b .L893 +.L899: + add x2, x20, :lo12:.LANCHOR0 + lsl x1, x19, 4 + ldr w4, [x22] + ldr x3, [x2, 2568] + add x3, x3, x1 + ldr x3, [x3, 8] + str w4, [x3, x0, lsl 2] + strh w21, [x2, 2576] + ldr x0, [x2, 2568] + add x0, x0, x1 + ldr w1, [x0, 4] + orr w1, w1, -2147483648 + str w1, [x0, 4] + b .L900 + .size log2phys, .-log2phys + .align 2 + .global FtlReUsePrevPpa + .type FtlReUsePrevPpa, %function +FtlReUsePrevPpa: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x21, x22, [sp, 32] + mov w21, w0 + stp x19, x20, [sp, 16] + lsr w0, w1, 10 + str w1, [x29, 76] + adrp x22, .LANCHOR0 + str x23, [sp, 48] + bl P2V_block_in_plane + add x2, x22, :lo12:.LANCHOR0 + and w0, w0, 65535 + ubfiz x20, x0, 1, 16 + ldr x3, [x2, 2376] + ldrh w1, [x3, x20] + cbnz w1, .L908 + ldr x19, [x2, 2408] + cbz x19, .L909 + ldrh w3, [x2, 2416] + mov x4, -6148914691236517206 + ldr x2, [x2, 2360] + movk x4, 0xaaab, lsl 0 + mov w5, 65535 + sub x19, x19, x2 + asr x19, x19, 1 + mul x19, x19, x4 + mov w4, 6 + and w19, w19, 65535 +.L910: + cmp w1, w3 + beq .L909 + cmp w19, w0 + bne .L911 + add x23, x22, :lo12:.LANCHOR0 + mov w1, w19 + add x0, x23, 2408 + bl List_remove_node + ldrh w0, [x23, 2416] + cbnz w0, .L912 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 1699 + add x1, x1, 448 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L912: + add x22, x22, :lo12:.LANCHOR0 + ldrh w0, [x22, 2416] + sub w0, w0, #1 + strh w0, [x22, 2416] + mov w0, w19 + bl INSERT_DATA_LIST + ldr x1, [x22, 2376] + ldrh w0, [x1, x20] + add w0, w0, 1 + strh w0, [x1, x20] +.L909: + 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 +.L911: + umull x19, w19, w4 + ldrh w19, [x2, x19] + cmp w19, w5 + beq .L909 + add w1, w1, 1 + and w1, w1, 65535 + b .L910 +.L908: + add w1, w1, 1 + strh w1, [x3, x20] + b .L909 + .size FtlReUsePrevPpa, .-FtlReUsePrevPpa + .align 2 + .global ftl_check_vpc + .type ftl_check_vpc, %function +ftl_check_vpc: + stp x29, x30, [sp, -128]! + adrp x0, .LC95 + add x0, x0, :lo12:.LC95 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + stp x23, x24, [sp, 48] + add x24, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + mov w23, 0 + adrp x21, .LANCHOR1 + add x1, x21, :lo12:.LANCHOR1 + add x1, x1, 464 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + adrp x22, check_vpc_table + bl sftl_printk + add x19, x22, :lo12:check_vpc_table + mov w2, 8192 + mov w1, 0 + mov x0, x19 + bl ftl_memset +.L919: + ldr w0, [x24, 2584] + cmp w23, w0 + bcc .L921 + adrp x25, .LC96 + add x23, x20, :lo12:.LANCHOR0 + add x26, x22, :lo12:check_vpc_table + add x25, x25, :lo12:.LC96 + mov w24, 0 + mov w19, 0 + mov w4, 65535 +.L922: + ldrh w0, [x23, 44] + cmp w0, w19 + bhi .L924 + ldr x19, [x23, 2408] + cbz x19, .L925 + ldr x0, [x23, 2360] + adrp x25, .LC97 + add x20, x20, :lo12:.LANCHOR0 + add x22, x22, :lo12:check_vpc_table + sub x19, x19, x0 + mov x0, -6148914691236517206 + asr x19, x19, 1 + movk x0, 0xaaab, lsl 0 + add x25, x25, :lo12:.LC97 + ldrh w26, [x23, 2416] + mov w27, 6 + mov w23, 0 + mul x19, x19, x0 + and w19, w19, 65535 +.L926: + cmp w23, w26 + bne .L928 +.L925: + cbz w24, .L918 + add x1, x21, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2343 + add x1, x1, 464 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L918: + 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 +.L921: + mov w2, 0 + add x1, x29, 124 + mov w0, w23 + bl log2phys + ldr w0, [x29, 124] + cmn w0, #1 + beq .L920 + 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] +.L920: + add w23, w23, 1 + b .L919 +.L924: + ldr x0, [x23, 2376] + ubfiz x28, x19, 1, 16 + sxtw x27, w19 + ldrh w2, [x0, x28] + ldrh w3, [x26, x27, lsl 1] + cmp w2, w3 + beq .L923 + mov x0, x25 + str w4, [x29, 108] + mov w1, w19 + bl sftl_printk + ldr x0, [x23, 2376] + ldr w4, [x29, 108] + ldrh w0, [x0, x28] + cmp w0, w4 + beq .L923 + ldrh w1, [x26, x27, lsl 1] + cmp w1, w0 + csinc w24, w24, wzr, ls +.L923: + add w19, w19, 1 + and w19, w19, 65535 + b .L922 +.L928: + ldr x1, [x20, 2376] + ubfiz x0, x19, 1, 16 + ldrh w2, [x1, x0] + cbz w2, .L927 + ldrh w3, [x22, w19, sxtw 1] + mov w24, 1 + mov w1, w19 + mov x0, x25 + bl sftl_printk +.L927: + ldr x0, [x20, 2360] + umull x19, w19, w27 + ldrh w19, [x0, x19] + mov w0, 65535 + cmp w19, w0 + beq .L925 + add w23, w23, 1 + and w23, w23, 65535 + b .L926 + .size ftl_check_vpc, .-ftl_check_vpc + .align 2 + .global ftl_scan_all_data + .type ftl_scan_all_data, %function +ftl_scan_all_data: + sub sp, sp, #96 + adrp x0, .LC98 + mov w1, 0 + add x0, x0, :lo12:.LC98 + stp x29, x30, [sp, 16] + add x29, sp, 16 + stp x21, x22, [sp, 48] + adrp x22, .LANCHOR0 + add x21, x22, :lo12:.LANCHOR0 + stp x19, x20, [sp, 32] + str x23, [sp, 64] + mov w20, 0 + add x19, x21, 3712 + bl sftl_printk +.L944: + add x0, x22, :lo12:.LANCHOR0 + ldr w0, [x0, 2584] + cmp w20, w0 + bcc .L950 + ldp x19, x20, [sp, 32] + ldp x21, x22, [sp, 48] + ldp x29, x30, [sp, 16] + ldr x23, [sp, 64] + add sp, sp, 96 + ret +.L950: + mov w2, 0 + add x1, x29, 76 + mov w0, w20 + bl log2phys + tst x20, 2047 + bne .L945 + ldr w2, [x29, 76] + adrp x0, .LC99 + mov w1, w20 + add x0, x0, :lo12:.LC99 + bl sftl_printk +.L945: + ldr w0, [x29, 76] + cmn w0, #1 + beq .L947 + ldr x23, [x21, 3512] + mov w2, 0 + stp wzr, w0, [x19] + mov w1, 1 + ldr x0, [x21, 3448] + str x0, [x19, 8] + mov x0, x19 + str x23, [x19, 16] + str w20, [x19, 24] + bl FlashReadPages + ldr w0, [x19] + cmp w0, 256 + ccmn w0, #1, 4, ne + beq .L948 + ldr w0, [x23, 8] + cmp w20, w0 + beq .L947 +.L948: + ldp x1, x0, [x19, 8] + ldr w2, [x1, 4] + str w2, [sp] + ldp w3, w4, [x0] + ldp w5, w6, [x0, 8] + adrp x0, .LC100 + ldr w7, [x1] + add x0, x0, :lo12:.LC100 + ldr w2, [x19, 4] + mov w1, w20 + bl sftl_printk +.L947: + add w20, w20, 1 + b .L944 + .size ftl_scan_all_data, .-ftl_scan_all_data + .align 2 + .global FtlGcScanTempBlk + .type FtlGcScanTempBlk, %function +FtlGcScanTempBlk: + stp x29, x30, [sp, -160]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR2 + add x0, x23, :lo12:.LANCHOR2 + stp x25, x26, [sp, 64] + stp x21, x22, [sp, 32] + mov w25, w1 + stp x27, x28, [sp, 80] + ldrh w21, [x0, 4] + mov w0, 65535 + cmp w21, w0 + beq .L975 + cbnz w21, .L953 +.L954: + bl FtlGcPageVarInit + b .L955 +.L975: + mov w21, 0 +.L953: + adrp x0, .LANCHOR0+106 + ldrh w0, [x0, #:lo12:.LANCHOR0+106] + cmp w0, w25 + beq .L954 +.L955: + adrp x26, .LANCHOR0 + add x20, x26, :lo12:.LANCHOR0 + mov w24, 0 +.L956: + ldrh w1, [x19] + mov w0, 65535 + strb wzr, [x19, 8] + cmp w1, w0 + beq .L957 +.L972: + add x0, x26, :lo12:.LANCHOR0 + add x2, x19, 16 + mov w22, 0 + mov w9, 65535 + mov w5, 4 + ldrh w7, [x0, 114] + ldrh w8, [x0, 116] + ldrh w0, [x0, 36] + add x0, x0, 8 + add x0, x19, x0, lsl 1 +.L958: + cmp x0, x2 + bne .L960 + ldr x0, [x20, 3424] + mov w1, w22 + mov w2, 0 + ubfiz x22, x22, 5, 16 + mov x27, 0 + bl FlashReadPages +.L961: + cmp x27, x22 + bne .L970 + add w21, w21, 1 + add w24, w24, 1 + and w21, w21, 65535 + cmp w25, w24 + bls .L971 +.L973: + ldrh w0, [x20, 106] + cmp w0, w21 + bhi .L972 +.L957: + add x23, x23, :lo12:.LANCHOR2 + strh w21, [x19, 2] + strb wzr, [x19, 6] + mov w0, -1 + mov w2, 0 + mov w1, w21 + strh w0, [x23, 4] + mov x0, x19 + bl ftl_sb_update_avl_pages + b .L974 +.L960: + ldrh w1, [x2] + cmp w1, w9 + beq .L959 + ldr x4, [x20, 3424] + ubfiz x6, x22, 5, 16 + orr w1, w21, w1, lsl 10 + add x4, x4, x6 + str w1, [x4, 4] + mul w1, w22, w7 + ldr x3, [x20, 3424] + ldr x4, [x20, 3264] + sdiv w1, w1, w5 + add x3, x3, x6 + add x1, x4, x1, sxtw 2 + str x1, [x3, 8] + mul w1, w22, w8 + ldr x4, [x20, 3272] + add w22, w22, 1 + and w22, w22, 65535 + sdiv w1, w1, w5 + add x1, x4, x1, sxtw 2 + str x1, [x3, 16] +.L959: + add x2, x2, 2 + b .L958 +.L970: + ldr x1, [x20, 3424] + add x0, x1, x27 + ldr w1, [x1, x27] + ldr w2, [x0, 4] + str w2, [x29, 108] + cbnz w1, .L962 + ldr x28, [x0, 16] + mov w1, 65535 + ldrh w0, [x28] + cmp w0, w1 + bne .L963 +.L962: + ldrh w1, [x19] + mov w21, 0 + ldr x0, [x20, 2376] + strh wzr, [x0, x1, lsl 1] + ldrh w0, [x19] + bl INSERT_FREE_LIST + mov w0, -1 + strh w0, [x19] + bl FtlGcPageVarInit + b .L956 +.L963: + ldr w0, [x28, 8] + add x1, x29, 124 + mov w2, 0 + bl log2phys + ldr w0, [x28, 12] + ldr w1, [x29, 124] + cmp w0, w1 + beq .L965 +.L968: + ldp w2, w0, [x28, 8] + add x27, x27, 32 + ldr w1, [x29, 108] + bl FtlGcUpdatePage + b .L961 +.L965: + str w0, [x29, 132] + mov w2, 0 + ldr x0, [x20, 3480] + mov w1, 1 + str x0, [x29, 136] + ldr x0, [x20, 3520] + str x0, [x29, 144] + add x0, x29, 128 + bl FlashReadPages + ldrh w1, [x20, 62] + mov x0, 0 + ldr x2, [x20, 3424] + ldr x5, [x29, 136] + ubfiz x1, x1, 9, 16 + add x2, x2, x27 +.L966: + cmp x0, x1 + beq .L968 + ldr x6, [x2, 8] + ldr w7, [x6, x0] + add x0, x0, 4 + add x6, x5, x0 + ldr w6, [x6, -4] + cmp w7, w6 + beq .L966 + ldrh w1, [x19] + adrp x0, .LC101 + ldr w2, [x29, 132] + add x0, x0, :lo12:.LC101 + bl sftl_printk + b .L962 +.L971: + add x1, x23, :lo12:.LANCHOR2 + mov w2, 65535 + ldrh w0, [x1, 4] + cmp w0, w2 + beq .L973 + add w0, w0, w24 + strh w0, [x1, 4] + ldrh w0, [x20, 106] + cmp w0, w21 + bls .L973 +.L974: + ldp x19, x20, [sp, 16] + mov w0, -1 + 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 + .size FtlGcScanTempBlk, .-FtlGcScanTempBlk + .align 2 + .global FtlReadRefresh + .type FtlReadRefresh, %function +FtlReadRefresh: + adrp x1, .LANCHOR0 + add x0, x1, :lo12:.LANCHOR0 + add x2, x0, 2720 + ldr w3, [x2, 80] + cbz w3, .L983 + ldr w1, [x0, 2584] + ldr w3, [x2, 84] + cmp w3, w1 + bcs .L984 + stp x29, x30, [sp, -160]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + mov w20, 2048 + str x21, [sp, 32] +.L989: + ldr w1, [x19, 2584] + ldr w0, [x19, 2804] + cmp w0, w1 + bcs .L986 + add x1, x29, 60 + mov w2, 0 + bl log2phys + ldr w0, [x19, 2804] + ldr w1, [x29, 60] + add w0, w0, 1 + str w0, [x19, 2804] + cmn w1, #1 + beq .L987 + str w0, [x29, 88] + mov w2, 0 + ldr x0, [x19, 3496] + str x0, [x29, 72] + add x0, x29, 96 + str x0, [x29, 80] + add x0, x29, 160 + str w1, [x29, 68] + mov w1, 1 + str wzr, [x0, -96]! + bl FlashReadPages + ldr w0, [x29, 64] + cmp w0, 256 + bne .L986 + ldr w0, [x29, 60] + lsr w0, w0, 10 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L986: + ldp x19, x20, [sp, 16] + mov w0, -1 + ldr x21, [sp, 32] + ldp x29, x30, [sp], 160 + ret +.L987: + subs w20, w20, #1 + bne .L989 + b .L986 +.L984: + ldr w0, [x0, 2588] + stp w0, wzr, [x2, 76] + str wzr, [x2, 84] +.L993: + mov w0, 0 + ret +.L983: + ldr w3, [x0, 2588] + ldr w5, [x2, 76] + add w2, w3, 1048576 + cmp w5, w2 + bhi .L992 + ldr w2, [x0, 2644] + lsr w4, w2, 10 + mov w2, 33554432 + asr w2, w2, w4 + add w2, w2, w5 + cmp w3, w2 + bhi .L992 + ldrb w0, [x0, 2340] + cbnz w0, .L993 +.L992: + add x0, x1, :lo12:.LANCHOR0 + mov w1, 1 + str w3, [x0, 2796] + str w1, [x0, 2800] + str wzr, [x0, 2804] + b .L993 + .size FtlReadRefresh, .-FtlReadRefresh + .align 2 + .global FtlMapBlkWriteDump_data + .type FtlMapBlkWriteDump_data, %function +FtlMapBlkWriteDump_data: + ldr w1, [x0, 56] + cbz w1, .L1007 + stp x29, x30, [sp, -48]! + adrp x1, .LANCHOR0 + add x2, x1, :lo12:.LANCHOR0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + str x21, [sp, 32] + add x0, x2, 3712 + mov x21, x1 + ldrh w20, [x19, 6] + ldr x4, [x2, 3512] + sub w20, w20, #1 + ldr x3, [x2, 3456] + and w20, w20, 65535 + ldr x5, [x19, 40] + stp x3, x4, [x0, 8] + ubfiz x4, x20, 2, 16 + str wzr, [x19, 56] + ldr w4, [x5, x4] + str w4, [x0, 4] + cbz w4, .L1001 + mov w2, 1 + mov w1, w2 + bl FlashReadPages +.L1002: + add x1, x21, :lo12:.LANCHOR0 + mov x0, x19 + ldr x2, [x1, 3720] + mov w1, w20 + bl FtlMapWritePage + ldr x21, [sp, 32] + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 + ret +.L1001: + ldrh w2, [x2, 114] + mov w1, 255 + mov x0, x3 + bl ftl_memset + b .L1002 +.L1007: + ret + .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data + .align 2 + .global FlashTestBlk + .type FlashTestBlk, %function +FlashTestBlk: + stp x29, x30, [sp, -128]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + and w19, w0, 65535 + cmp w19, 11 + bls .L1012 + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + mov w2, 32 + mov w1, 165 + lsl w19, w19, 10 + ldr x0, [x20, 3496] + str x0, [x29, 40] + add x0, x29, 64 + str x0, [x29, 48] + bl ftl_memset + ldr x0, [x20, 3496] + mov w2, 8 + mov w1, 90 + bl ftl_memset + str w19, [x29, 36] + mov w2, 1 + add x0, x29, 32 + mov w1, w2 + bl FlashEraseBlocks + mov w3, 1 + add x0, x29, 32 + mov w2, w3 + mov w1, w3 + bl FlashProgPages + ldr w0, [x29, 32] + mov w2, 1 + mov w1, 0 + cmp w0, 0 + add x0, x29, 32 + csetm w19, ne + bl FlashEraseBlocks +.L1010: + mov w0, w19 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 128 + ret +.L1012: + mov w19, 0 + b .L1010 + .size FlashTestBlk, .-FlashTestBlk + .align 2 + .global FtlBbmTblFlush + .type FtlBbmTblFlush, %function +FtlBbmTblFlush: + stp x29, x30, [sp, -80]! + mov w1, 0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov w19, 0 + stp x25, x26, [sp, 64] + adrp x25, .LANCHOR0 + add x20, x25, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + add x21, x20, 192 + ldr x2, [x20, 3512] + ldr x0, [x20, 3448] + str x2, [x20, 3728] + ldrh w2, [x20, 114] + str x0, [x20, 3720] + bl ftl_memset +.L1015: + ldrh w0, [x20, 58] + add x1, x20, 3712 + cmp w19, w0 + blt .L1016 + ldr x26, [x1, 16] + add x19, x20, 160 + mov w2, 16 + mov w1, 255 + mov x0, x26 + bl ftl_memset + mov w0, -3887 + adrp x22, .LC102 + strh w0, [x26] + add x25, x25, :lo12:.LANCHOR0 + add x22, x22, :lo12:.LC102 + mov w21, 0 + ldr w0, [x19, 8] + mov w23, 0 + str w0, [x26, 4] + adrp x24, .LC103 + ldrh w0, [x20, 160] + strh w0, [x26, 2] + ldrh w0, [x19, 4] + strh w0, [x26, 8] + ldrh w0, [x19, 6] + strh w0, [x26, 10] + ldr w0, [x20, 32] + strh w0, [x26, 12] +.L1017: + ldr x0, [x25, 3448] + str x0, [x25, 3720] + ldr x0, [x25, 3512] + str x0, [x25, 3728] + ldrh w1, [x19] + ldrh w2, [x19, 2] + ldrh w3, [x19, 4] + ldrh w4, [x26, 10] + orr w0, w2, w1, lsl 10 + str wzr, [x25, 3712] + str w0, [x25, 3716] + mov x0, x22 + bl sftl_printk + ldrh w0, [x25, 108] + ldrh w1, [x19, 2] + sub w0, w0, #1 + cmp w1, w0 + blt .L1018 + ldr w0, [x19, 8] + mov w2, 1 + ldrh w1, [x19] + add w0, w0, 1 + str w0, [x19, 8] + str w0, [x26, 4] + strh w1, [x26, 8] + ldrh w0, [x19, 4] + strh w1, [x19, 4] + ldr x1, [x25, 3400] + strh w0, [x19] + lsl w0, w0, 10 + str w0, [x25, 3716] + strh wzr, [x19, 2] + str w0, [x1, 4] + mov w1, w2 + ldr x0, [x25, 3400] + bl FlashEraseBlocks +.L1018: + add x20, x25, 3712 + 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, [x25, 3712] + cmn w0, #1 + bne .L1019 + ldr w1, [x25, 3716] + add w21, w21, 1 + add x0, x24, :lo12:.LC103 + and w21, w21, 65535 + bl sftl_printk + cmp w21, 3 + bls .L1017 + ldr w1, [x25, 3716] + adrp x0, .LC104 + mov w2, w21 + add x0, x0, :lo12:.LC104 + bl sftl_printk +.L1021: + b .L1021 +.L1016: + ldrh w2, [x20, 3624] + ldr x0, [x1, 8] + ldr x1, [x21], 8 + mul w3, w19, w2 + lsl w2, w2, 2 + add w19, w19, 1 + add x0, x0, x3, sxtw 2 + bl ftl_memcpy + b .L1015 +.L1022: + mov w23, 1 + b .L1017 +.L1019: + cbz w23, .L1022 + 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 FtlBbmTblFlush, .-FtlBbmTblFlush + .align 2 + .global allocate_data_superblock + .type allocate_data_superblock, %function +allocate_data_superblock: + stp x29, x30, [sp, -112]! + add x29, sp, 0 + stp x21, x22, [sp, 32] + adrp x21, .LANCHOR0 + add x22, x21, :lo12:.LANCHOR0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + mov x20, x0 + mov x19, x22 + add x23, x22, 2520 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] +.L1025: + ldrh w1, [x22, 2400] + ldrh w0, [x22, 2416] + add w0, w0, w1 + ldrh w1, [x22, 44] + cmp w0, w1 + ble .L1026 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2615 + add x1, x1, 480 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1026: + cmp x20, x23 + bne .L1052 + ldrh w0, [x19, 2416] + ldr w1, [x19, 3244] + mul w1, w0, w1 + lsr w0, w0, 1 + add w0, w0, 1 + add w1, w0, w1, lsr 2 + ands w1, w1, 65535 + beq .L1027 + sub w1, w1, #1 + and w1, w1, 65535 +.L1027: + add x0, x19, 2408 + bl List_pop_index_node + and w25, w0, 65535 + ldrh w0, [x19, 2416] + cbnz w0, .L1028 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2624 + add x1, x1, 480 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1028: + ldrh w0, [x19, 2416] + sub w0, w0, #1 + strh w0, [x19, 2416] + ldrh w0, [x19, 44] + cmp w0, w25 + bls .L1025 + ldr x0, [x19, 2376] + ubfiz x26, x25, 1, 16 + ldrh w24, [x0, x26] + cbnz w24, .L1025 + strh w25, [x20] + mov x0, x20 + bl make_superblock + ldrb w0, [x20, 7] + cbnz w0, .L1030 + ldr x0, [x19, 2376] + mov w1, -1 + strh w1, [x0, x26] + mov w0, w25 + bl INSERT_DATA_LIST + ldrh w1, [x19, 2400] + ldrh w0, [x19, 2416] + add w0, w0, w1 + ldrh w1, [x19, 44] + cmp w0, w1 + ble .L1025 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + mov w2, 2638 + add x1, x1, 480 + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 + bl sftl_printk + b .L1025 +.L1052: + mov w1, 0 + b .L1027 +.L1030: + ldrh w1, [x19, 2400] + ldrh w0, [x19, 2416] + add w0, w0, w1 + ldrh w1, [x19, 44] + cmp w0, w1 + ble .L1032 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2641 + add x1, x1, 480 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1032: + add x27, x20, 16 + ldrh w4, [x19, 36] + mov x3, x27 + mov x0, 0 + mov w5, 65535 +.L1033: + cmp w4, w0, uxth + bhi .L1035 + cbnz w24, .L1036 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2652 + add x1, x1, 480 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1036: + ldrh w0, [x19, 2672] + cmp w0, w25 + bne .L1037 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2654 + add x1, x1, 480 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1037: + ldrb w0, [x20, 8] + ldr x1, [x19, 2384] + cbnz w0, .L1038 + ldrh w0, [x1, x26] + cbz w0, .L1039 + ldrh w2, [x19, 96] + add w0, w0, w2 +.L1060: + strh w0, [x1, x26] + mov w1, 0 + ldr w0, [x19, 2628] + add w0, w0, 1 + str w0, [x19, 2628] + mov w0, w25 + bl ftl_set_blk_mode +.L1041: + ldr x0, [x19, 2384] + ldr w1, [x19, 2644] + ldrh w0, [x0, x26] + cmp w0, w1 + bls .L1042 + str w0, [x19, 2644] +.L1042: + ldr w1, [x19, 2632] + ubfiz x3, x24, 5, 16 + ldrh w0, [x19, 96] + ldr w2, [x19, 2628] + madd w0, w0, w2, w1 + ldrh w1, [x19, 44] + udiv w0, w0, w1 + ldr x1, [x19, 3544] + str w0, [x19, 2636] + ldr w0, [x1, 16] + add w0, w0, 1 + str w0, [x1, 16] + mov x0, 0 +.L1043: + cmp x3, x0 + bne .L1044 + ldrb w1, [x20, 8] + mov w2, w24 + ldr x0, [x19, 3400] + mov x28, 0 + bl FlashEraseBlocks + mov w1, 0 +.L1045: + cmp w24, w28, uxth + bhi .L1047 + cmp w1, 0 + ble .L1048 + mov w0, w25 + bl update_multiplier_value + bl FtlBbmTblFlush +.L1048: + ldrb w0, [x20, 7] + cbnz w0, .L1049 + ldr x0, [x19, 2376] + mov w1, -1 + strh w1, [x0, x26] + b .L1025 +.L1035: + ldr x1, [x19, 3400] + add x2, x1, x0, lsl 5 + stp xzr, xzr, [x2, 8] + ldrh w2, [x3] + cmp w2, w5 + beq .L1034 + ubfiz x6, x24, 5, 16 + add w24, w24, 1 + add x1, x1, x6 + and w24, w24, 65535 + lsl w2, w2, 10 + str w2, [x1, 4] +.L1034: + add x0, x0, 1 + add x3, x3, 2 + b .L1033 +.L1039: + mov w0, 2 + b .L1060 +.L1038: + ldrh w0, [x1, x26] + add w0, w0, 1 + strh w0, [x1, x26] + ldr w0, [x19, 2632] + add w0, w0, 1 + str w0, [x19, 2632] + mov w0, w25 + bl ftl_set_blk_mode.part.7 + b .L1041 +.L1044: + ldr x1, [x19, 3400] + add x1, x1, x0 + add x0, x0, 32 + ldr w2, [x1, 4] + and w2, w2, -1024 + str w2, [x1, 4] + b .L1043 +.L1047: + ldr x2, [x19, 3400] + lsl x0, x28, 5 + add x3, x2, x0 + ldr w2, [x2, x0] + cmn w2, #1 + bne .L1046 + add w1, w1, 1 + ldr w0, [x3, 4] + stp w2, w1, [x29, 104] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + ldp w2, w1, [x29, 104] + strh w2, [x27] + ldrb w0, [x20, 7] + sub w0, w0, #1 + strb w0, [x20, 7] +.L1046: + add x28, x28, 1 + add x27, x27, 2 + b .L1045 +.L1049: + add x21, x21, :lo12:.LANCHOR0 + strh wzr, [x20, 2] + strb wzr, [x20, 6] + ldrh w1, [x21, 106] + strh w25, [x20] + mul w0, w0, w1 + ldr w1, [x21, 2620] + str w1, [x20, 12] + and w0, w0, 65535 + add w1, w1, 1 + strh w0, [x20, 4] + str w1, [x21, 2620] + ldr x1, [x21, 2376] + ldrh w2, [x20] + strh w0, [x1, x2, lsl 1] + ldrh w0, [x20, 4] + cbz w0, .L1050 + ldrb w0, [x20, 7] + cbnz w0, .L1051 +.L1050: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2707 + add x1, x1, 480 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1051: + ldp x19, x20, [sp, 16] + mov w0, 0 + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 112 + ret + .size allocate_data_superblock, .-allocate_data_superblock + .align 2 + .global FtlGcFreeBadSuperBlk + .type FtlGcFreeBadSuperBlk, %function +FtlGcFreeBadSuperBlk: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + and w22, w0, 65535 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + ldrh w0, [x19, 3324] + str x27, [sp, 80] + cbz w0, .L1062 + add x23, x19, 64 + add x24, x19, 3328 + mov w21, 0 +.L1063: + ldrh w0, [x19, 36] + cmp w0, w21 + bhi .L1069 + bl FtlGcReFreshBadBlk +.L1062: + 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 +.L1069: + ldrb w0, [x23, w21, sxtw] + mov w1, w22 + adrp x26, .LC105 + add x26, x26, :lo12:.LC105 + mov w20, 0 + bl V2P_block + and w25, w0, 65535 +.L1064: + ldrh w0, [x19, 3324] + cmp w0, w20 + bhi .L1068 + add w21, w21, 1 + and w21, w21, 65535 + b .L1063 +.L1068: + ldrh w0, [x24, w20, sxtw 1] + add w27, w20, 1 + cmp w0, w25 + bne .L1065 + mov w1, w25 + mov x0, x26 + bl sftl_printk + mov w0, w25 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + ldrh w0, [x19, 3324] + mov w1, w27 +.L1066: + cmp w20, w0 + bcc .L1067 + sub w0, w0, #1 + strh w0, [x19, 3324] +.L1065: + and w20, w27, 65535 + b .L1064 +.L1067: + sub w2, w1, #1 + ldrh w3, [x24, w1, sxtw 1] + add w20, w20, 1 + add w1, w1, 1 + and w20, w20, 65535 + strh w3, [x24, w2, sxtw 1] + b .L1066 + .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk + .align 2 + .global update_vpc_list + .type update_vpc_list, %function +update_vpc_list: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + and w19, w0, 65535 + adrp x20, .LANCHOR0 + add x0, x20, :lo12:.LANCHOR0 + str x21, [sp, 32] + ubfiz x1, x19, 1, 16 + ldr x2, [x0, 2376] + ldrh w1, [x2, x1] + cbnz w1, .L1075 + ldrh w1, [x0, 2672] + cmp w1, w19 + bne .L1076 + mov w1, -1 + strh w1, [x0, 2672] +.L1077: + add x21, x20, :lo12:.LANCHOR0 + mov w1, w19 + add x0, x21, 2368 + bl List_remove_node + ldrh w0, [x21, 2400] + cbnz w0, .L1079 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2777 + add x1, x1, 512 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1079: + add x20, x20, :lo12:.LANCHOR0 + ldrh w0, [x20, 2400] + sub w0, w0, #1 + strh w0, [x20, 2400] + mov w0, w19 + bl free_data_superblock + mov w0, w19 + bl FtlGcFreeBadSuperBlk + ldrh w1, [x20, 2400] + ldrh w0, [x20, 2416] + add w0, w0, w1 + ldrh w1, [x20, 44] + cmp w0, w1 + ble .L1083 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2780 + add x1, x1, 512 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1083: + mov w0, 1 + b .L1074 +.L1076: + ldrh w1, [x0, 2424] + cmp w1, w19 + beq .L1082 + ldrh w1, [x0, 2472] + cmp w1, w19 + beq .L1082 + ldrh w0, [x0, 2520] + cmp w0, w19 + bne .L1077 +.L1082: + mov w0, 0 +.L1074: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L1075: + mov w0, w19 + bl List_update_data_list + b .L1082 + .size update_vpc_list, .-update_vpc_list + .align 2 + .global decrement_vpc_count + .type decrement_vpc_count, %function +decrement_vpc_count: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + and w20, w0, 65535 + stp x21, x22, [sp, 32] + mov w0, 65535 + adrp x19, .LANCHOR0 + cmp w20, w0 + beq .L1086 + add x22, x19, :lo12:.LANCHOR0 + ubfiz x21, x20, 1, 16 + ldr x1, [x22, 2376] + ldrh w0, [x1, x21] + cbnz w0, .L1087 + mov w2, 0 + mov w1, w20 + adrp x0, .LC106 + add x0, x0, :lo12:.LC106 + bl sftl_printk + ldr x0, [x22, 2376] + ldrh w0, [x0, x21] + cbz w0, .L1088 +.L1093: + mov w21, 0 +.L1085: + mov w0, w21 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret +.L1088: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + mov w2, 2795 + add x1, x1, 528 + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 + bl sftl_printk + b .L1093 +.L1087: + sub w0, w0, #1 + strh w0, [x1, x21] +.L1086: + add x19, x19, :lo12:.LANCHOR0 + mov w1, 65535 + ldrh w0, [x19, 3698] + cmp w0, w1 + bne .L1090 + strh w20, [x19, 3698] + b .L1093 +.L1090: + cmp w20, w0 + beq .L1093 + bl update_vpc_list + cmp w0, 0 + ldr x1, [x19, 2360] + cset w21, ne + ldr x0, [x19, 2368] + strh w20, [x19, 3698] + sub x0, x0, x1 + mov x1, -6148914691236517206 + asr x0, x0, 1 + movk x1, 0xaaab, lsl 0 + mul x0, x0, x1 + ldr x1, [x19, 2376] + and x2, x0, 65535 + ldrh w1, [x1, x2, lsl 1] + cbnz w1, .L1085 + cmp w20, w0, uxth + beq .L1085 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + mov w2, 2811 + add x1, x1, 528 + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 + bl sftl_printk + b .L1085 + .size decrement_vpc_count, .-decrement_vpc_count + .align 2 + .global FtlRecoverySuperblock + .type FtlRecoverySuperblock, %function +FtlRecoverySuperblock: + stp x29, x30, [sp, -160]! + mov w1, 65535 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x20, x0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrh w0, [x0] + cmp w0, w1 + beq .L1211 + ldrb w0, [x20, 6] + adrp x19, .LANCHOR0 + str w0, [x29, 140] + add x0, x19, :lo12:.LANCHOR0 + ldrh w26, [x20, 2] + ldrh w0, [x0, 106] + cmp w0, w26 + bne .L1097 + strh wzr, [x20, 4] +.L1217: + strb wzr, [x20, 6] +.L1211: + 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 +.L1097: + ldrh w0, [x20, 16] + mov w21, 0 +.L1098: + cmp w0, w1 + beq .L1099 + mov w1, 1 + bl FtlGetLastWrittenPage + mov w23, w0 + cmn w0, #1 + beq .L1100 + add x0, x19, :lo12:.LANCHOR0 + add x28, x20, 16 + mov x5, x28 + mov w22, 0 + mov w10, 65535 + mov w6, 4 + ldrh w1, [x0, 36] + ldrh w8, [x0, 114] + add x1, x1, 8 + ldrh w9, [x0, 116] + add x1, x20, x1, lsl 1 +.L1101: + cmp x5, x1 + bne .L1105 + add x24, x19, :lo12:.LANCHOR0 + mov w2, 0 + mov w1, w22 + ldr x0, [x24, 3424] + bl FlashReadPages + ldr w21, [x24, 2624] + ldr x4, [x24, 3424] + and w9, w23, 65535 + sub w21, w21, #1 + mov w7, 65535 + mov x6, x4 + mov w3, 0 +.L1106: + cmp w22, w3 + bne .L1111 + add w22, w23, 1 + ldr w0, [x4, 4] + and w22, w22, 65535 +.L1213: + lsr w0, w0, 10 + bl P2V_plane + and w27, w0, 65535 + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0, 106] + cmp w0, w22 + bne .L1113 + strh w22, [x20, 2] + strb wzr, [x20, 6] + strh wzr, [x20, 4] +.L1113: + ldr w0, [x29, 140] + cmp w22, w26 + ccmp w27, w0, 0, eq + bne .L1114 +.L1218: + mov w2, w27 + mov w1, w22 + mov x0, x20 + bl ftl_sb_update_avl_pages + b .L1211 +.L1099: + add w21, w21, 1 + and w21, w21, 65535 + add x0, x20, x21, sxtw 1 + ldrh w0, [x0, 16] + b .L1098 +.L1100: + cbz w26, .L1102 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 1766 + add x1, x1, 552 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1102: + ldr w0, [x29, 140] + cmp w0, 0 + ccmp w21, w0, 4, ne + beq .L1103 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 1767 + add x1, x1, 552 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1103: + strh wzr, [x20, 2] + b .L1217 +.L1105: + ldrh w2, [x5] + cmp w2, w10 + beq .L1104 + ldr x4, [x0, 3424] + ubfiz x7, x22, 5, 16 + orr w2, w23, w2, lsl 10 + add x4, x4, x7 + str w2, [x4, 4] + mul w2, w22, w8 + ldr x3, [x0, 3424] + ldr x4, [x0, 3264] + sdiv w2, w2, w6 + add x3, x3, x7 + add x2, x4, x2, sxtw 2 + str x2, [x3, 8] + mul w2, w22, w9 + ldr x4, [x0, 3272] + add w22, w22, 1 + and w22, w22, 65535 + sdiv w2, w2, w6 + add x2, x4, x2, sxtw 2 + str x2, [x3, 16] +.L1104: + add x5, x5, 2 + b .L1101 +.L1111: + ldr w0, [x6] + cbnz w0, .L1107 + ldr x8, [x6, 16] + ldr w5, [x8, 4] + cmn w5, #1 + beq .L1108 + ldr w1, [x24, 2624] + mov w0, w5 + bl ftl_cmp_data_ver + cbz w0, .L1108 + add w5, w5, 1 + str w5, [x24, 2624] +.L1108: + ldr w0, [x8] + cmn w0, #1 + bne .L1110 + ubfiz x3, x3, 5, 16 + and w22, w23, 65535 + add x3, x4, x3 + ldr w0, [x3, 4] + b .L1213 +.L1107: + mov w7, w9 +.L1110: + add w3, w3, 1 + add x6, x6, 32 + and w3, w3, 65535 + b .L1106 +.L1114: + mov w0, 65535 + cmp w7, w0 + bne .L1115 + ldrb w0, [x20, 8] + cbnz w0, .L1116 +.L1115: + add x0, x19, :lo12:.LANCHOR0 + and w3, w23, 65535 + ldr w1, [x0, 3708] + cmn w1, #1 + bne .L1117 + str w21, [x0, 3708] +.L1117: + add w0, w26, 7 + cmp w0, w23, uxth + bge .L1164 + sub w24, w3, #7 + and w24, w24, 65535 +.L1118: + add x25, x19, :lo12:.LANCHOR0 + mov w4, 65535 +.L1119: + cmp w24, w3 + bhi .L1126 + ldrh w0, [x25, 36] + mov x1, x28 + mov w23, 0 + add x0, x0, 8 + add x0, x20, x0, lsl 1 + b .L1127 +.L1164: + mov w24, w26 + b .L1118 +.L1121: + ldrh w2, [x1] + cmp w2, w4 + beq .L1120 + ldr x5, [x25, 3424] + ubfiz x6, x23, 5, 16 + add w23, w23, 1 + orr w2, w24, w2, lsl 10 + add x5, x5, x6 + and w23, w23, 65535 + str w2, [x5, 4] +.L1120: + add x1, x1, 2 +.L1127: + cmp x0, x1 + bne .L1121 + ldr x0, [x25, 3424] + mov w1, w23 + str w4, [x29, 120] + mov w2, 0 + str w3, [x29, 128] + ubfiz x23, x23, 5, 16 + add x23, x23, 16 + bl FlashReadPages + ldr x1, [x25, 3424] + ldr w4, [x29, 120] + ldr w3, [x29, 128] + add x0, x1, 16 + add x23, x1, x23 +.L1122: + cmp x23, x0 + bne .L1125 + add w24, w24, 1 + and w24, w24, 65535 + b .L1119 +.L1125: + ldr w1, [x0, -16] + cbnz w1, .L1116 + ldr x1, [x0] + ldrh w2, [x1] + cmp w2, w4 + beq .L1124 + ldr w1, [x1, 4] + cmn w1, #1 + beq .L1124 + str w1, [x25, 3708] +.L1124: + add x0, x0, 32 + b .L1122 +.L1126: + add x0, x19, :lo12:.LANCHOR0 + mov w1, -1 + str w1, [x0, 3708] +.L1116: + add x19, x19, :lo12:.LANCHOR0 + mov w0, 1 + mov w24, w26 + strh w0, [x19, 3816] + add x0, x19, 3824 + str x0, [x29, 104] +.L1128: + ldrh w0, [x19, 36] + mov x1, x28 + mov w23, 0 + mov w4, 65535 + add x0, x0, 8 + add x0, x20, x0, lsl 1 +.L1129: + cmp x0, x1 + bne .L1131 + ldr x0, [x19, 3424] + mov w1, w23 + mov w2, 0 + bl FlashReadPages + ubfiz x0, x23, 5, 16 + str x0, [x29, 112] + adrp x0, .LANCHOR1 + add x0, x0, :lo12:.LANCHOR1 + add x0, x0, 552 + mov x23, 0 + str x0, [x29, 120] +.L1132: + ldr x0, [x29, 112] + cmp x0, x23 + bne .L1158 + add w24, w24, 1 + ldrh w0, [x19, 106] + and w24, w24, 65535 + cmp w0, w24 + bne .L1128 + ldrh w1, [x19, 36] + mov w0, 0 + strh w24, [x20, 2] + mov w2, 65535 + strh wzr, [x20, 4] +.L1159: + cmp w0, w1 + beq .L1211 + ldrh w3, [x28], 2 + cmp w3, w2 + beq .L1160 + strb w0, [x20, 6] + b .L1211 +.L1131: + ldrh w2, [x1] + cmp w2, w4 + beq .L1130 + ldr x3, [x19, 3424] + ubfiz x5, x23, 5, 16 + add w23, w23, 1 + orr w2, w24, w2, lsl 10 + add x3, x3, x5 + and w23, w23, 65535 + str w2, [x3, 4] +.L1130: + add x1, x1, 2 + b .L1129 +.L1158: + ldr x4, [x19, 3424] + add x4, x4, x23 + ldr w5, [x4, 4] + str w5, [x29, 156] + lsr w0, w5, 10 + bl P2V_plane + and w0, w0, 65535 + cmp w24, w26 + bcc .L1133 + ldr w1, [x29, 140] + ccmp w1, w0, 0, eq + bhi .L1133 + cmp w24, w22 + ccmp w27, w0, 0, eq + beq .L1134 + ldr w0, [x4] + cmn w0, #1 + beq .L1135 + ldr x3, [x4, 16] + mov w0, 61589 + ldrh w1, [x3] + cmp w1, w0 + beq .L1136 + ldrh w0, [x20] +.L1215: + bl decrement_vpc_count + b .L1133 +.L1136: + ldr w21, [x3, 4] + cmn w21, #1 + beq .L1137 + ldr w1, [x19, 2624] + mov w0, w21 + str x3, [x29, 128] + bl ftl_cmp_data_ver + ldr x3, [x29, 128] + cbz w0, .L1137 + add w0, w21, 1 + str w0, [x19, 2624] +.L1137: + ldrh w1, [x3] + mov w0, 61589 + cmp w1, w0 + beq .L1138 + ldr x1, [x29, 120] + mov w2, 1918 + str x3, [x29, 128] + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 + bl sftl_printk + ldr x3, [x29, 128] +.L1138: + ldp w25, w0, [x3, 8] + add x1, x29, 152 + str w0, [x29, 148] + mov w2, 0 + mov w0, w25 + bl log2phys + ldr w1, [x19, 3708] + cmn w1, #1 + beq .L1139 + mov w0, w21 + bl ftl_cmp_data_ver + cbz w0, .L1139 + ldr w1, [x29, 148] + cmn w1, #1 + beq .L1140 + ldr x0, [x19, 3424] + mov w2, 0 + add x0, x0, x23 + ldr x4, [x0, 16] + str w1, [x0, 4] + mov w1, 1 + str x4, [x29, 128] + ldr x0, [x19, 3424] + add x0, x0, x23 + bl FlashReadPages + ldr x0, [x19, 3424] + ldr x4, [x29, 128] + add x3, x0, x23 + ldr w0, [x0, x23] + cmn w0, #1 + bne .L1141 +.L1142: + mov w0, -1 + str w0, [x29, 148] +.L1149: + ldr w4, [x29, 148] + cmn w4, #1 + beq .L1133 +.L1163: + lsr w0, w4, 10 + bl P2V_block_in_plane + and w25, w0, 65535 + ldrh w0, [x19, 44] + mov w3, w25 + cmp w0, w25 + bhi .L1154 + ldr x1, [x29, 120] + mov w2, 2019 + adrp x0, .LC1 + str w25, [x29, 128] + add x0, x0, :lo12:.LC1 + bl sftl_printk + ldr w3, [x29, 128] +.L1154: + ldr x1, [x19, 2376] + ubfiz x0, x25, 1, 16 + ldrh w0, [x1, x0] + cbz w0, .L1155 + mov w0, w3 + b .L1215 +.L1140: + ldp w1, w0, [x29, 152] + cmp w1, w0 + bne .L1133 + mov w2, 1 + add x1, x29, 148 + mov w0, w25 + bl log2phys +.L1133: + add x23, x23, 32 + b .L1132 +.L1141: + ldr w0, [x4, 8] + cmp w25, w0 + bne .L1142 + ldr w0, [x4, 4] + str w0, [x29, 128] + str x4, [x29, 96] + uxtw x1, w0 + ldr w0, [x19, 3708] + bl ftl_cmp_data_ver + cbz w0, .L1142 + ldp w0, w1, [x29, 152] + ldr x4, [x29, 96] + cmp w0, w1 + ldr w1, [x29, 148] + bne .L1144 +.L1214: + mov w0, w25 + bl FtlReUsePrevPpa + b .L1142 +.L1144: + cmp w0, w1 + beq .L1142 + cmn w0, #1 + beq .L1145 + ldr x4, [x3, 16] + mov w2, 0 + str w0, [x3, 4] + mov w1, 1 + str x4, [x29, 96] + ldr x0, [x19, 3424] + add x0, x0, x23 + bl FlashReadPages + ldr x4, [x29, 96] +.L1146: + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + ldr x1, [x0, 3424] + ldr w1, [x1, x23] + cmn w1, #1 + beq .L1147 + ldr w3, [x4, 4] + ldr w0, [x0, 3708] + mov w1, w3 + bl ftl_cmp_data_ver + cbz w0, .L1147 + ldr w0, [x29, 128] + mov w1, w3 + bl ftl_cmp_data_ver + cbz w0, .L1142 +.L1147: + ldr w1, [x29, 148] + b .L1214 +.L1145: + str w0, [x3] + b .L1146 +.L1139: + ldp w1, w0, [x29, 152] + cmp w1, w0 + beq .L1149 + mov w2, 1 + add x1, x29, 156 + mov w0, w25 + bl log2phys + ldr w4, [x29, 152] + cmn w4, #1 + beq .L1149 + ldr w0, [x29, 148] + cmp w4, w0 + beq .L1163 + lsr w0, w4, 10 + bl P2V_block_in_plane + ldrh w1, [x19, 2424] + and w0, w0, 65535 + cmp w1, w0 + beq .L1153 + ldrh w1, [x19, 2472] + cmp w1, w0 + beq .L1153 + ldrh w1, [x19, 2520] + cmp w1, w0 + bne .L1149 +.L1153: + ldr x0, [x19, 3424] + mov w2, 0 + mov w1, 1 + str w4, [x0, 4] + ldr x3, [x0, 16] + ldr x0, [x19, 3424] + str x3, [x29, 128] + bl FlashReadPages + ldr x0, [x19, 3424] + ldr w0, [x0] + cmn w0, #1 + beq .L1149 + ldr x3, [x29, 128] + mov w0, w21 + ldr w1, [x3, 4] + bl ftl_cmp_data_ver + cbnz w0, .L1149 + mov w2, 1 + add x1, x29, 152 + mov w0, w25 + bl log2phys + b .L1149 +.L1155: + mov w1, w25 + adrp x0, .LC107 + add x0, x0, :lo12:.LC107 + bl sftl_printk + b .L1133 +.L1135: + ldr w0, [x19, 3820] + cmp w0, 31 + bhi .L1156 + ldr x1, [x29, 104] + str w5, [x1, w0, uxtw 2] + add w0, w0, 1 + str w0, [x19, 3820] +.L1156: + ldrh w0, [x20] + bl decrement_vpc_count + ldr w0, [x19, 3708] + cmn w0, #1 + bne .L1157 +.L1216: + str w21, [x19, 3708] + b .L1133 +.L1157: + cmp w21, w0 + bcs .L1133 + b .L1216 +.L1160: + add w0, w0, 1 + and w0, w0, 65535 + b .L1159 +.L1134: + strb w27, [x20, 6] + strh w22, [x20, 2] + b .L1218 + .size FtlRecoverySuperblock, .-FtlRecoverySuperblock + .align 2 + .global FtlWriteDump_data + .type FtlWriteDump_data, %function +FtlWriteDump_data: + stp x29, x30, [sp, -128]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x20, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + str x25, [sp, 64] + ldrh w2, [x20, 2428] + cbz w2, .L1220 + ldrb w1, [x20, 2432] + cbnz w1, .L1220 + ldrb w1, [x20, 2431] + ldrh w3, [x20, 106] + mul w1, w1, w3 + cmp w2, w1 + beq .L1220 + ldrb w0, [x20, 2434] + cbnz w0, .L1219 + ldr w22, [x20, 2584] + add x1, x29, 92 + ldrh w24, [x20, 36] + mov w2, 0 + sub w22, w22, #1 + mov w0, w22 + bl log2phys + ldr x21, [x20, 3512] + ldr w0, [x29, 92] + ldr x1, [x20, 3448] + str w0, [x29, 100] + cmn w0, #1 + stp x1, x21, [x29, 104] + str w22, [x29, 120] + str wzr, [x21, 4] + beq .L1222 + mov w2, 0 + mov w1, 1 + add x0, x29, 96 + bl FlashReadPages +.L1223: + add x25, x19, :lo12:.LANCHOR0 + lsl w24, w24, 2 + add x20, x25, 2424 + mov w0, -3947 + mov w23, 0 + strh w0, [x21] +.L1224: + cmp w24, w23 + bne .L1228 +.L1225: + add x19, x19, :lo12:.LANCHOR0 + mov w0, 1 + strb w0, [x19, 2434] +.L1219: + 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 +.L1222: + ldrh w2, [x20, 114] + mov w1, 255 + ldr x0, [x20, 3448] + bl ftl_memset + b .L1223 +.L1228: + ldrh w0, [x20, 4] + cbz w0, .L1225 + ldr w0, [x29, 100] + add w23, w23, 1 + stp w22, w0, [x21, 8] + ldrh w0, [x20] + strh w0, [x21, 2] + mov x0, x20 + bl get_new_active_ppa + str w0, [x29, 100] + ldr w0, [x25, 2624] + mov w3, 0 + str w0, [x21, 4] + mov w2, 0 + add w0, w0, 1 + mov w1, 1 + cmn w0, #1 + csel w0, w0, wzr, ne + str w0, [x25, 2624] + add x0, x29, 96 + bl FlashProgPages + ldrh w0, [x20] + bl decrement_vpc_count + b .L1224 +.L1220: + add x19, x19, :lo12:.LANCHOR0 + strb wzr, [x19, 2434] + b .L1219 + .size FtlWriteDump_data, .-FtlWriteDump_data + .align 2 + .global l2p_flush + .type l2p_flush, %function +l2p_flush: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + add x20, x20, :lo12:.LANCHOR0 + mov w19, 0 + bl FtlWriteDump_data +.L1238: + ldrh w0, [x20, 142] + cmp w0, w19 + bhi .L1240 + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L1240: + ldr x1, [x20, 2568] + ubfiz x0, x19, 4, 16 + add x0, x1, x0 + ldr w0, [x0, 4] + tbz w0, #31, .L1239 + mov w0, w19 + bl flush_l2p_region +.L1239: + add w19, w19, 1 + and w19, w19, 65535 + b .L1238 + .size l2p_flush, .-l2p_flush + .align 2 + .global FtlSuperblockPowerLostFix + .type FtlSuperblockPowerLostFix, %function +FtlSuperblockPowerLostFix: + stp x29, x30, [sp, -96]! + mov w2, 61589 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x0 + mov w0, -1 + stp x21, x22, [sp, 32] + str w0, [x29, 88] + adrp x21, .LANCHOR0 + add x0, x21, :lo12:.LANCHOR0 + str x23, [sp, 48] + mov x20, x0 + ldr x23, [x0, 3512] + ldr x1, [x0, 3448] + stp x1, x23, [x29, 72] + mov w1, -3 + str w1, [x23, 8] + mov w1, -2 + str w1, [x23, 12] + ldrh w1, [x19] + strh w1, [x23, 2] + strh wzr, [x23] + ldr x1, [x0, 3448] + str w2, [x1] + mov w2, 22136 + movk w2, 0x1234, lsl 16 + ldr x1, [x0, 3448] + str w2, [x1, 4] + ldrh w22, [x19, 4] + and w22, w22, 1 + add w22, w22, 6 +.L1248: + ldrh w0, [x19, 4] + cbnz w0, .L1244 +.L1245: + add x21, x21, :lo12:.LANCHOR0 + ldrh w0, [x19] + ldrh w3, [x19, 4] + ldr x2, [x21, 2376] + lsl x0, x0, 1 + ldrh w1, [x2, x0] + sub w1, w1, w3 + strh w1, [x2, x0] + strb wzr, [x19, 6] + ldrh w0, [x21, 106] + strh w0, [x19, 2] + strh wzr, [x19, 4] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldr x23, [sp, 48] + ldp x29, x30, [sp], 96 + ret +.L1244: + mov x0, x19 + bl get_new_active_ppa + str w0, [x29, 68] + cmn w0, #1 + beq .L1245 + ldr w0, [x20, 2624] + mov w3, 0 + str w0, [x23, 4] + mov w2, 0 + add w0, w0, 1 + mov w1, 1 + cmn w0, #1 + csel w0, w0, wzr, ne + str w0, [x20, 2624] + add x0, x29, 64 + bl FlashProgPages + ldrh w0, [x19] + bl decrement_vpc_count + subs w22, w22, #1 + bne .L1248 + b .L1245 + .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix + .align 2 + .global FtlVendorPartWrite + .type FtlVendorPartWrite, %function +FtlVendorPartWrite: + stp x29, x30, [sp, -208]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x27, x28, [sp, 80] + mov w22, w1 + mov w28, w0 + add w1, w0, w1 + stp x23, x24, [sp, 48] + ldrh w0, [x19, 100] + stp x25, x26, [sp, 64] + cmp w1, w0 + bhi .L1264 + ldrh w23, [x19, 112] + mov x25, x2 + add x26, x29, 144 + add x27, x19, 3752 + mov w24, 0 + lsr w23, w28, w23 +.L1258: + cbnz w22, .L1263 +.L1256: + mov w0, w24 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 208 + ret +.L1263: + ldrh w1, [x19, 62] + ldr x0, [x19, 3592] + udiv w21, w28, w1 + ldr w2, [x0, w23, uxtw 2] + and w0, w22, 65535 + msub w21, w21, w1, w28 + sub w20, w1, w21 + and w20, w20, 65535 + cmp w22, w20 + csel w20, w0, w20, cc + cbz w2, .L1260 + cmp w20, w1 + beq .L1260 + ldr x0, [x19, 3464] + str w2, [x29, 116] + mov w2, 1 + stp x0, x26, [x29, 120] + mov w1, w2 + add x0, x29, 112 + bl FlashReadPages +.L1261: + lsl w3, w20, 9 + ldr x0, [x19, 3464] + lsl w21, w21, 9 + mov w2, w3 + asr w21, w21, 2 + mov x1, x25 + str w3, [x29, 108] + add x0, x0, x21, sxtw 2 + bl ftl_memcpy + sub w22, w22, w20 + ldr x2, [x19, 3464] + mov w1, w23 + mov x0, x27 + add w28, w28, w20 + add w23, w23, 1 + bl FtlMapWritePage + cmn w0, #1 + ldr w3, [x29, 108] + csinv w24, w24, wzr, ne + add x25, x25, x3, sxtw + b .L1258 +.L1260: + ldrh w2, [x19, 114] + mov w1, 0 + ldr x0, [x19, 3464] + bl ftl_memset + b .L1261 +.L1264: + mov w24, -1 + b .L1256 + .size FtlVendorPartWrite, .-FtlVendorPartWrite + .align 2 + .global Ftl_save_ext_data + .type Ftl_save_ext_data, %function +Ftl_save_ext_data: + adrp x0, .LANCHOR0 + add x0, x0, :lo12:.LANCHOR0 + mov w1, 19539 + movk w1, 0x4654, lsl 16 + ldr w3, [x0, 2720] + cmp w3, w1 + bne .L1272 + stp x29, x30, [sp, -16]! + add x2, x0, 2720 + mov w1, 72 + add x29, sp, 0 + movk w1, 0x5000, lsl 16 + str w1, [x2, 4] + ldr w1, [x0, 2612] + str w1, [x2, 88] + ldr w1, [x0, 2616] + str w1, [x2, 92] + ldr w1, [x0, 2608] + str w1, [x2, 8] + ldr w1, [x0, 2596] + str w1, [x2, 12] + ldr w1, [x0, 2588] + str w1, [x2, 16] + ldr w1, [x0, 2604] + str w1, [x2, 20] + ldr w1, [x0, 2632] + str w1, [x2, 28] + ldr w1, [x0, 2640] + str w1, [x2, 32] + ldr w1, [x0, 2592] + str w1, [x2, 36] + ldr w1, [x0, 2600] + str w1, [x2, 40] + ldr w1, [x0, 2644] + ldr w0, [x0, 2648] + stp w1, w0, [x2, 44] + mov w1, 1 + mov w0, 0 + bl FtlVendorPartWrite + ldp x29, x30, [sp], 16 + ret +.L1272: + ret + .size Ftl_save_ext_data, .-Ftl_save_ext_data + .align 2 + .global FtlEctTblFlush + .type FtlEctTblFlush, %function +FtlEctTblFlush: + adrp x1, .LANCHOR0 + add x3, x1, :lo12:.LANCHOR0 + ldrh w2, [x3, 3952] + cmp w2, 31 + bhi .L1279 + add w2, w2, 1 + strh w2, [x3, 3952] + mov w2, 1 +.L1276: + cbnz w0, .L1277 + add x0, x1, :lo12:.LANCHOR0 + ldr x0, [x0, 3544] + ldr w3, [x0, 20] + ldr w0, [x0, 16] + add w2, w2, w3 + cmp w0, w2 + bcc .L1281 +.L1277: + add x0, x1, :lo12:.LANCHOR0 + stp x29, x30, [sp, -16]! + add x29, sp, 0 + ldr x1, [x0, 3544] + ldr w2, [x1, 16] + str w2, [x1, 20] + mov w2, 17221 + movk w2, 0x4254, lsl 16 + str w2, [x1] + ldr x2, [x0, 3544] + ldrh w1, [x0, 3528] + lsl w3, w1, 9 + str wzr, [x2, 4] + str w3, [x2, 12] + ldr w3, [x2, 8] + add w3, w3, 1 + str w3, [x2, 8] + ldr x2, [x0, 3544] + mov w0, 64 + bl FtlVendorPartWrite + bl Ftl_save_ext_data + mov w0, 0 + ldp x29, x30, [sp], 16 + ret +.L1279: + mov w2, 32 + b .L1276 +.L1281: + mov w0, 0 + ret + .size FtlEctTblFlush, .-FtlEctTblFlush + .align 2 + .global sftl_vendor_write + .type sftl_vendor_write, %function +sftl_vendor_write: + stp x29, x30, [sp, -16]! + add w0, w0, 256 + add x29, sp, 0 + bl FtlVendorPartWrite + ldp x29, x30, [sp], 16 + ret + .size sftl_vendor_write, .-sftl_vendor_write + .align 2 + .global FtlVendorPartRead + .type FtlVendorPartRead, %function +FtlVendorPartRead: + stp x29, x30, [sp, -208]! + adrp x3, .LANCHOR0 + add x3, x3, :lo12:.LANCHOR0 + add x29, sp, 0 + stp x21, x22, [sp, 32] + mov w22, w1 + stp x23, x24, [sp, 48] + add w1, w0, w1 + stp x19, x20, [sp, 16] + mov w23, w0 + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldrh w0, [x3, 100] + cmp w1, w0 + bhi .L1294 + ldrh w21, [x3, 112] + adrp x26, .LC108 + mov x25, x2 + mov x28, x3 + add x26, x26, :lo12:.LC108 + mov w24, 0 + lsr w21, w23, w21 +.L1287: + cbnz w22, .L1293 +.L1285: + mov w0, w24 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 208 + ret +.L1293: + ldrh w19, [x28, 62] + ldr x0, [x28, 3592] + udiv w20, w23, w19 + ldr w4, [x0, w21, uxtw 2] + and w0, w22, 65535 + msub w20, w20, w19, w23 + sub w19, w19, w20 + and w19, w19, 65535 + cmp w22, w19 + csel w19, w0, w19, cc + lsl w27, w19, 9 + cbz w4, .L1289 + ldr x0, [x28, 3464] + mov w2, 1 + str x0, [x29, 120] + add x0, x29, 144 + str w4, [x29, 108] + mov w1, w2 + str w4, [x29, 116] + str x0, [x29, 128] + add x0, x29, 112 + bl FlashReadPages + ldp w4, w0, [x29, 108] + cmn w0, #1 + ldr w0, [x28, 3712] + csinv w24, w24, wzr, ne + cmp w0, 256 + bne .L1291 + mov w2, w4 + mov w1, w21 + mov x0, x26 + bl sftl_printk + ldr x2, [x28, 3464] + mov w1, w21 + add x0, x28, 3752 + bl FtlMapWritePage +.L1291: + ldr x1, [x28, 3464] + lsl w20, w20, 9 + asr w20, w20, 2 + mov w2, w27 + mov x0, x25 + add x1, x1, x20, sxtw 2 + bl ftl_memcpy +.L1292: + add w21, w21, 1 + sub w22, w22, w19 + add w23, w23, w19 + add x25, x25, x27, sxtw + b .L1287 +.L1289: + mov w2, w27 + mov w1, 0 + mov x0, x25 + bl ftl_memset + b .L1292 +.L1294: + mov w24, -1 + b .L1285 + .size FtlVendorPartRead, .-FtlVendorPartRead + .align 2 + .global FtlLoadEctTbl + .type FtlLoadEctTbl, %function +FtlLoadEctTbl: + stp x29, x30, [sp, -32]! + mov w0, 64 + add x29, sp, 0 + str x19, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + ldrh w1, [x19, 3528] + ldr x2, [x19, 3544] + bl FtlVendorPartRead + ldr x0, [x19, 3544] + ldr w1, [x0] + mov w0, 17221 + movk w0, 0x4254, lsl 16 + cmp w1, w0 + beq .L1297 + adrp x1, .LC109 + adrp x0, .LC71 + add x1, x1, :lo12:.LC109 + add x0, x0, :lo12:.LC71 + bl sftl_printk + ldr x0, [x19, 3544] + mov w1, 0 + ldrh w2, [x19, 3528] + lsl w2, w2, 9 + bl ftl_memset +.L1297: + mov w0, 0 + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + ret + .size FtlLoadEctTbl, .-FtlLoadEctTbl + .align 2 + .global Ftl_load_ext_data + .type Ftl_load_ext_data, %function +Ftl_load_ext_data: + stp x29, x30, [sp, -48]! + mov w1, 1 + mov w0, 0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x20, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + add x22, x20, 2720 + mov w21, 19539 + mov x2, x22 + bl FtlVendorPartRead + ldr w0, [x20, 2720] + movk w21, 0x4654, lsl 16 + cmp w0, w21 + beq .L1300 + mov w2, 512 + mov w1, 0 + mov x0, x22 + bl ftl_memset + str w21, [x20, 2720] +.L1300: + add x0, x19, :lo12:.LANCHOR0 + mov w2, 19539 + movk w2, 0x4654, lsl 16 + ldr w3, [x0, 2720] + cmp w3, w2 + bne .L1301 + ldr w2, [x0, 2808] + str w2, [x0, 2612] + ldr w2, [x0, 2812] + str w2, [x0, 2616] + ldr w2, [x0, 2728] + str w2, [x0, 2608] + ldr w2, [x0, 2732] + str w2, [x0, 2596] + ldr w2, [x0, 2736] + str w2, [x0, 2588] + ldr w2, [x0, 2740] + str w2, [x0, 2604] + ldr w2, [x0, 2748] + str w2, [x0, 2632] + ldr w2, [x0, 2752] + str w2, [x0, 2640] + ldr w2, [x0, 2756] + str w2, [x0, 2592] + ldr w2, [x0, 2760] + ldr w1, [x0, 2768] + str w2, [x0, 2600] + ldr w2, [x0, 2764] + str w1, [x0, 2648] + str w2, [x0, 2644] +.L1301: + add x0, x19, :lo12:.LANCHOR0 + ldr w2, [x0, 2632] + ldrh w1, [x0, 96] + ldr w3, [x0, 2628] + madd w1, w1, w3, w2 + ldrh w2, [x0, 44] + udiv w1, w1, w2 + str w1, [x0, 2636] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret + .size Ftl_load_ext_data, .-Ftl_load_ext_data + .align 2 + .global sftl_vendor_read + .type sftl_vendor_read, %function +sftl_vendor_read: + stp x29, x30, [sp, -16]! + add w0, w0, 256 + add x29, sp, 0 + bl FtlVendorPartRead + ldp x29, x30, [sp], 16 + ret + .size sftl_vendor_read, .-sftl_vendor_read + .align 2 + .global FtlVpcTblFlush + .type FtlVpcTblFlush, %function +FtlVpcTblFlush: + stp x29, x30, [sp, -80]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + stp x23, x24, [sp, 48] + adrp x23, .LANCHOR0 + add x19, x23, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x25, x26, [sp, 64] + add x20, x19, 2312 + add x25, x19, 2656 + mov w22, 0 + ldr x21, [x19, 3512] + mov w24, 65535 + ldr x0, [x19, 3448] + str x0, [x19, 3720] + ldrh w0, [x19, 2656] + str x21, [x19, 3728] + strh w0, [x21, 2] + mov w0, -3932 + strh w0, [x21] + str wzr, [x21, 12] + ldr w0, [x19, 2664] + stp w0, wzr, [x21, 4] + mov w0, 19539 + ldrh w1, [x19, 2424] + movk w0, 0x4654, lsl 16 + str w0, [x19, 2312] + mov w0, 72 + ldrb w2, [x19, 2430] + strh w1, [x19, 2326] + movk w0, 0x5000, lsl 16 + ldrh w1, [x19, 2426] + str w0, [x19, 2316] + ldrh w0, [x19, 2662] + strh w0, [x19, 2320] + orr w1, w2, w1, lsl 6 + ldrh w0, [x19, 58] + strb w0, [x19, 2322] + strh w1, [x19, 2328] + ldrh w1, [x19, 2472] + ldrb w2, [x19, 2478] + strh w1, [x19, 2330] + ldrh w1, [x19, 2474] + ldrb w0, [x19, 2432] + strb w0, [x19, 2323] + orr w1, w2, w1, lsl 6 + ldrb w0, [x19, 2480] + strh w1, [x19, 2332] + strb w0, [x19, 2324] + ldrh w1, [x19, 2520] + ldrb w0, [x19, 2528] + ldrb w2, [x19, 2526] + strh w1, [x19, 2334] + strb w0, [x19, 2325] + ldrh w1, [x19, 2522] + ldr w0, [x19, 2628] + str w0, [x19, 2344] + ldr w0, [x19, 2620] + orr w1, w2, w1, lsl 6 + str w0, [x19, 2352] + ldr w0, [x19, 2624] + ldrh w2, [x19, 114] + str w0, [x19, 2348] + ldr x0, [x19, 3720] + strh w1, [x19, 2336] + mov w1, 255 + bl ftl_memset + ldr x0, [x19, 3720] + mov x1, x20 + mov w2, 48 + mov x20, x25 + adrp x25, .LANCHOR1 + add x25, x25, :lo12:.LANCHOR1 + add x25, x25, 576 + bl ftl_memcpy + ldr x1, [x19, 2376] + ldrh w2, [x19, 44] + ldr x0, [x19, 3720] + lsl w2, w2, 1 + add x0, x0, 48 + bl ftl_memcpy + ldrh w0, [x19, 44] + ldr x3, [x19, 3720] + ldr x1, [x19, 24] + lsr w2, w0, 3 + ubfiz x0, x0, 1, 16 + add x0, x0, 48 + add w2, w2, 4 + and x0, x0, -4 + add x0, x3, x0 + bl ftl_memcpy + mov w0, 0 + bl FtlUpdateVaildLpn +.L1306: + ldrh w2, [x20, 2] + ldrh w1, [x20] + ldr x0, [x19, 3448] + str x0, [x19, 3720] + ldr x0, [x19, 3512] + str x0, [x19, 3728] + orr w0, w2, w1, lsl 10 + str w0, [x19, 3716] + ldrh w0, [x19, 108] + sub w0, w0, #1 + cmp w2, w0 + blt .L1307 + ldrh w24, [x20, 4] + strh wzr, [x20, 2] + strh w1, [x20, 4] + bl FtlFreeSysBlkQueueOut + ldr w1, [x19, 2620] + str w1, [x20, 8] + add w2, w1, 1 + str w2, [x19, 2620] + ubfiz w2, w0, 10, 16 + str w2, [x19, 3716] + strh w0, [x20] + strh w0, [x21, 2] + str w1, [x21, 4] +.L1307: + mov w3, 1 + add x0, x19, 3712 + mov w1, w3 + mov w2, w3 + bl FlashProgPages + ldrh w0, [x20, 2] + ldr w1, [x19, 3712] + add w0, w0, 1 + and w0, w0, 65535 + strh w0, [x20, 2] + cmn w1, #1 + bne .L1308 + cmp w0, 1 + bne .L1309 + adrp x0, .LC1 + mov w2, 1135 + mov x1, x25 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1309: + ldrh w0, [x20, 2] + cmp w0, 1 + bne .L1310 + ldrh w0, [x19, 108] + sub w0, w0, #1 + strh w0, [x20, 2] +.L1310: + add w22, w22, 1 + and w22, w22, 65535 + cmp w22, 3 + bls .L1306 + add x23, x23, :lo12:.LANCHOR0 + adrp x0, .LC110 + mov w2, w22 + add x0, x0, :lo12:.LC110 + ldr w1, [x23, 3716] + bl sftl_printk +.L1312: + b .L1312 +.L1308: + cmp w0, 1 + beq .L1306 + cmp w1, 256 + beq .L1306 + mov w0, 65535 + cmp w24, w0 + beq .L1313 + mov w1, 1 + mov w0, w24 + bl FtlFreeSysBlkQueueIn +.L1313: + 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 FtlVpcTblFlush, .-FtlVpcTblFlush + .align 2 + .global FtlSysFlush + .type FtlSysFlush, %function +FtlSysFlush: + stp x29, x30, [sp, -16]! + add x29, sp, 0 + bl l2p_flush + mov w0, 1 + bl FtlEctTblFlush + bl FtlVpcTblFlush + mov w0, 0 + ldp x29, x30, [sp], 16 + ret + .size FtlSysFlush, .-FtlSysFlush + .align 2 + .global sftl_deinit + .type sftl_deinit, %function +sftl_deinit: + adrp x0, .LANCHOR2 + ldr w0, [x0, #:lo12:.LANCHOR2] + cmp w0, 1 + bne .L1326 + stp x29, x30, [sp, -16]! + add x29, sp, 0 + bl FtlSysFlush + mov w0, 0 + ldp x29, x30, [sp], 16 + ret +.L1326: + mov w0, 0 + ret + .size sftl_deinit, .-sftl_deinit + .align 2 + .global FtlDiscard + .type FtlDiscard, %function +FtlDiscard: + stp x29, x30, [sp, -64]! + add w3, w0, w1 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov w20, w1 + adrp x19, .LANCHOR0 + add x1, x19, :lo12:.LANCHOR0 + str x21, [sp, 32] + ldr w2, [x1, 144] + cmp w3, w2 + bhi .L1337 + cmp w20, 31 + bhi .L1331 +.L1345: + mov w0, 0 +.L1329: + ldp x19, x20, [sp, 16] + ldr x21, [sp, 32] + ldp x29, x30, [sp], 64 + ret +.L1331: + ldrh w1, [x1, 62] + udiv w21, w0, w1 + msub w0, w1, w21, w0 + ands w0, w0, 65535 + beq .L1332 + sub w1, w1, w0 + add w21, w21, 1 + cmp w1, w20 + csel w1, w1, w20, ls + sub w20, w20, w1, uxth +.L1332: + add x19, x19, :lo12:.LANCHOR0 + mov w0, -1 + str w0, [x29, 60] +.L1333: + ldrh w0, [x19, 62] + cmp w20, w0 + bcs .L1335 + ldr w0, [x19, 3956] + cmp w0, 32 + bls .L1345 + str wzr, [x19, 3956] + bl l2p_flush + bl FtlVpcTblFlush + b .L1345 +.L1335: + mov w2, 0 + add x1, x29, 56 + mov w0, w21 + bl log2phys + ldr w0, [x29, 56] + cmn w0, #1 + beq .L1334 + ldr w0, [x19, 3956] + mov w2, 1 + add x1, x29, 60 + add w0, w0, 1 + str w0, [x19, 3956] + ldr w0, [x19, 2592] + add w0, w0, 1 + str w0, [x19, 2592] + mov w0, w21 + bl log2phys + ldr w0, [x29, 56] + lsr w0, w0, 10 + bl P2V_block_in_plane + bl decrement_vpc_count +.L1334: + ldrh w0, [x19, 62] + add w21, w21, 1 + sub w20, w20, w0 + b .L1333 +.L1337: + mov w0, -1 + b .L1329 + .size FtlDiscard, .-FtlDiscard + .align 2 + .global FtlVpcCheckAndModify + .type FtlVpcCheckAndModify, %function +FtlVpcCheckAndModify: + stp x29, x30, [sp, -80]! + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC95 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + add x19, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + add x1, x1, 592 + add x0, x0, :lo12:.LC95 + str x23, [sp, 48] + bl sftl_printk + ldr x0, [x19, 3552] + mov w21, 0 + ldrh w2, [x19, 46] + mov w1, 0 + lsl w2, w2, 1 + bl ftl_memset +.L1347: + ldr w0, [x19, 2584] + cmp w21, w0 + bcc .L1349 + adrp x22, .LC111 + add x20, x20, :lo12:.LANCHOR0 + add x22, x22, :lo12:.LC111 + mov w19, 0 + mov w23, 65535 +.L1350: + ldrh w0, [x20, 44] + cmp w0, w19 + bhi .L1355 + bl l2p_flush + bl FtlVpcTblFlush + ldr x23, [sp, 48] + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 80 + ret +.L1349: + mov w2, 0 + add x1, x29, 76 + mov w0, w21 + bl log2phys + ldr w0, [x29, 76] + cmn w0, #1 + beq .L1348 + lsr w0, w0, 10 + bl P2V_block_in_plane + ldr x2, [x19, 3552] + ubfiz x0, x0, 1, 16 + ldrh w1, [x2, x0] + add w1, w1, 1 + strh w1, [x2, x0] +.L1348: + add w21, w21, 1 + b .L1347 +.L1355: + ldr x0, [x20, 2376] + ubfiz x21, x19, 1, 16 + ldrh w2, [x0, x21] + ldr x0, [x20, 3552] + ldrh w3, [x0, x21] + cmp w2, w3 + beq .L1352 + cmp w2, w23 + beq .L1352 + mov x0, x22 + mov w1, w19 + bl sftl_printk + ldrh w0, [x20, 2424] + cmp w0, w19 + beq .L1352 + ldrh w0, [x20, 2520] + cmp w0, w19 + beq .L1352 + ldrh w0, [x20, 2472] + cmp w0, w19 + beq .L1352 + ldr x0, [x20, 2376] + ldrh w1, [x0, x21] + cbnz w1, .L1354 + ldr x1, [x20, 3552] + ldrh w1, [x1, x21] + strh w1, [x0, x21] +.L1352: + add w19, w19, 1 + and w19, w19, 65535 + b .L1350 +.L1354: + ldr x1, [x20, 3552] + ldrh w1, [x1, x21] + strh w1, [x0, x21] + mov w0, w19 + bl update_vpc_list + b .L1352 + .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify + .align 2 + .global allocate_new_data_superblock + .type allocate_new_data_superblock, %function +allocate_new_data_superblock: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + str x21, [sp, 32] + mov x21, x0 + ldrh w20, [x0] + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0, 44] + cmp w0, w20 + bcs .L1361 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 2714 + add x1, x1, 616 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1361: + mov w0, 65535 + cmp w20, w0 + beq .L1362 + add x1, x19, :lo12:.LANCHOR0 + ubfiz x0, x20, 1, 16 + ldr x1, [x1, 2376] + ldrh w0, [x1, x0] + cbz w0, .L1363 + mov w0, w20 + bl INSERT_DATA_LIST +.L1362: + add x2, x19, :lo12:.LANCHOR0 + mov w0, 1 + strb w0, [x21, 8] + mov w1, 65535 + ldrh w0, [x2, 3698] + cmp w0, w1 + beq .L1364 + cmp w20, w0 + bne .L1365 + ldr x2, [x2, 2376] + ubfiz x1, x0, 1, 16 + ldrh w1, [x2, x1] + cbz w1, .L1366 +.L1365: + bl update_vpc_list +.L1366: + add x19, x19, :lo12:.LANCHOR0 + mov w0, -1 + strh w0, [x19, 3698] +.L1364: + mov x0, x21 + bl allocate_data_superblock + bl l2p_flush + mov w0, 0 + bl FtlEctTblFlush + bl FtlVpcTblFlush + ldr x21, [sp, 32] + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 48 + ret +.L1363: + mov w0, w20 + bl INSERT_FREE_LIST + b .L1362 + .size allocate_new_data_superblock, .-allocate_new_data_superblock + .align 2 + .global FtlProgPages + .type FtlProgPages, %function +FtlProgPages: + stp x29, x30, [sp, -96]! + mov w2, 0 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov x19, x3 + stp x21, x22, [sp, 32] + mov w21, w1 + stp x23, x24, [sp, 48] + ubfiz x21, x21, 5, 32 + str x25, [sp, 64] + add x21, x21, 4 + add x24, x0, x21 + adrp x22, .LANCHOR0 + ldrb w3, [x3, 9] + adrp x25, .LANCHOR1 + add x21, x22, :lo12:.LANCHOR0 + add x25, x25, :lo12:.LANCHOR1 + add x20, x0, 4 + bl FlashProgPages +.L1372: + cmp x20, x24 + beq .L1379 + sub x23, x20, #4 + b .L1380 +.L1375: + ldr w0, [x20] + lsr w0, w0, 10 + bl P2V_block_in_plane + ldrh w1, [x19] + cmp w1, w0, uxth + bne .L1373 + ldr x2, [x21, 2376] + ubfiz x1, x1, 1, 16 + ldrh w3, [x19, 4] + ldrh w0, [x2, x1] + sub w0, w0, w3 + strh w0, [x2, x1] + strb wzr, [x19, 6] + ldrh w0, [x21, 106] + strh w0, [x19, 2] + strh wzr, [x19, 4] +.L1373: + ldrh w0, [x19, 4] + cbnz w0, .L1374 + mov x0, x19 + bl allocate_new_data_superblock +.L1374: + ldr w0, [x21, 2816] + add w0, w0, 1 + str w0, [x21, 2816] + ldr w0, [x20] + lsr w0, w0, 10 + bl FtlGcMarkBadPhyBlk + mov x0, x19 + bl get_new_active_ppa + str w0, [x20] + mov w2, 0 + str w0, [x29, 92] + mov w1, 1 + ldrb w3, [x19, 9] + mov x0, x23 + bl FlashProgPages +.L1380: + ldr w0, [x20, -4] + cmn w0, #1 + beq .L1375 + ldrb w1, [x19, 6] + ldrh w0, [x21, 36] + cmp w1, w0 + bcc .L1376 + adrp x0, .LC1 + mov w2, 955 + add x1, x25, 648 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1376: + add x1, x29, 96 + ldr w0, [x23, 4] + mov w2, 1 + str w0, [x1, -4]! + ldr w0, [x23, 24] + bl log2phys + ldr x0, [x23, 16] + ldr w4, [x0, 12] + lsr w0, w4, 10 + bl P2V_block_in_plane + and w1, w0, 65535 + mov w23, w1 + cmn w4, #1 + beq .L1377 + ldr x2, [x21, 2376] + ubfiz x0, x1, 1, 16 + ldrh w0, [x2, x0] + cbnz w0, .L1378 + adrp x0, .LC112 + mov w2, 0 + add x0, x0, :lo12:.LC112 + bl sftl_printk +.L1378: + mov w0, w23 + bl decrement_vpc_count +.L1377: + add x20, x20, 32 + b .L1372 +.L1379: + add x22, x22, :lo12:.LANCHOR0 + ldrb w1, [x19, 6] + ldrh w0, [x22, 36] + cmp w1, w0 + bcc .L1371 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 970 + add x1, x1, 648 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1371: + 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 + .size FtlProgPages, .-FtlProgPages + .align 2 + .global FtlGcFreeTempBlock + .type FtlGcFreeTempBlock, %function +FtlGcFreeTempBlock: + stp x29, x30, [sp, -96]! + mov w3, 65535 + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x2, x19, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + ldrh w20, [x2, 2520] + ldrh w1, [x2, 106] + cmp w20, w3 + bne .L1387 +.L1397: + add x0, x19, :lo12:.LANCHOR0 + mov w2, 65535 + add x1, x0, 2520 + ldrh w3, [x0, 2520] + str wzr, [x0, 3704] + cmp w3, w2 + bne .L1410 +.L1413: + mov w0, 0 +.L1386: + 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 +.L1387: + cbz w0, .L1390 + adrp x0, .LANCHOR2 + add x0, x0, :lo12:.LANCHOR2 + ldrh w4, [x0, 4] + cmp w4, w3 + beq .L1391 +.L1392: + mov w1, 2 +.L1390: + add x21, x19, :lo12:.LANCHOR0 + add x0, x21, 2520 + bl FtlGcScanTempBlk + str w0, [x29, 92] + cmn w0, #1 + beq .L1393 + ldr x1, [x21, 2384] + ubfiz x20, x20, 1, 16 + ldrh w0, [x1, x20] + cmp w0, 4 + bls .L1394 + sub w0, w0, #5 + strh w0, [x1, x20] + mov w0, 1 + bl FtlEctTblFlush +.L1394: + add x0, x19, :lo12:.LANCHOR0 + ldr w1, [x0, 3704] + cbnz w1, .L1395 + ldr w1, [x0, 2816] + add w1, w1, 1 + str w1, [x0, 2816] + ldr w0, [x29, 92] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush +.L1395: + add x19, x19, :lo12:.LANCHOR0 + str wzr, [x19, 3704] +.L1406: + mov w0, 1 + b .L1386 +.L1391: + strh wzr, [x0, 4] + ldrh w0, [x2, 2416] + cmp w0, 17 + bhi .L1392 + b .L1390 +.L1393: + adrp x0, .LANCHOR2+4 + ldrh w1, [x0, #:lo12:.LANCHOR2+4] + mov w0, 65535 + cmp w1, w0 + bne .L1406 + b .L1397 +.L1410: + ldrh w2, [x0, 3304] + ldrb w1, [x1, 7] + ldrh w0, [x0, 106] + mul w0, w1, w0 + cmp w2, w0 + beq .L1398 + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + adrp x0, .LC1 + mov w2, 162 + add x1, x1, 664 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1398: + add x0, x19, :lo12:.LANCHOR0 + adrp x22, .LANCHOR1 + add x22, x22, :lo12:.LANCHOR1 + adrp x25, .LC1 + add x22, x22, 664 + add x25, x25, :lo12:.LC1 + ldrb w1, [x0, 2527] + mov w20, 0 + ldrh w4, [x0, 106] + ldr x2, [x0, 2376] + ldrh w3, [x0, 2520] + mul w1, w1, w4 + strh w1, [x2, x3, lsl 1] + ldr w2, [x0, 2608] + ldrh w1, [x0, 3304] + add w1, w1, w2 + str w1, [x0, 2608] +.L1399: + add x21, x19, :lo12:.LANCHOR0 + ldrh w0, [x21, 3304] + cmp w0, w20 + bhi .L1403 + mov w0, -1 + bl decrement_vpc_count + ldrh w0, [x21, 2520] + ldr x2, [x21, 2376] + ubfiz x1, x0, 1, 16 + ldrh w1, [x2, x1] + cbz w1, .L1404 + bl INSERT_DATA_LIST +.L1405: + add x19, x19, :lo12:.LANCHOR0 + mov w20, -1 + strh wzr, [x19, 3304] + strh w20, [x19, 2520] + strh wzr, [x19, 3292] + bl l2p_flush + bl FtlVpcTblFlush + strh w20, [x19, 2672] + ldrh w0, [x19, 2652] + ldrh w1, [x19, 2416] + add w0, w0, w0, lsl 1 + cmp w1, w0, lsr 2 + ble .L1413 + mov w0, 20 + strh w0, [x19, 3232] + b .L1413 +.L1403: + mov w24, 12 + ldr x26, [x21, 3312] + ldr w0, [x21, 2584] + umull x24, w20, w24 + add x23, x26, x24 + ldr w1, [x23, 8] + cmp w1, w0 + bcc .L1400 + mov w2, 168 + mov x1, x22 + mov x0, x25 + bl sftl_printk +.L1400: + ldr w0, [x23, 8] + add x1, x29, 92 + mov w2, 0 + bl log2phys + ldr w0, [x26, x24] + ldr w1, [x29, 92] + cmp w0, w1 + bne .L1401 + lsr w0, w0, 10 + bl P2V_block_in_plane + mov w21, w0 + ldr w0, [x23, 8] + mov w2, 1 + add x1, x23, 4 + bl log2phys + mov w0, w21 +.L1412: + bl decrement_vpc_count +.L1402: + add w20, w20, 1 + and w20, w20, 65535 + b .L1399 +.L1401: + ldr w0, [x23, 4] + cmp w1, w0 + beq .L1402 + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0, 2520] + b .L1412 +.L1404: + bl INSERT_FREE_LIST + b .L1405 + .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock + .align 2 + .global FtlGcPageRecovery + .type FtlGcPageRecovery, %function +FtlGcPageRecovery: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + add x20, x19, 2520 + mov x0, x20 + ldrh w1, [x19, 106] + bl FtlGcScanTempBlk + ldrh w1, [x19, 2522] + ldrh w0, [x19, 106] + cmp w1, w0 + bcc .L1414 + add x0, x19, 3632 + bl FtlMapBlkWriteDump_data + mov w0, 0 + bl FtlGcFreeTempBlock + str wzr, [x19, 3704] +.L1414: + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret + .size FtlGcPageRecovery, .-FtlGcPageRecovery + .align 2 + .global FtlPowerLostRecovery + .type FtlPowerLostRecovery, %function +FtlPowerLostRecovery: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x19, x19, :lo12:.LANCHOR0 + add x20, x19, 2424 + add x19, x19, 2472 + mov x0, x20 + str wzr, [x19, 1348] + bl FtlRecoverySuperblock + mov x0, x20 + bl FtlSlcSuperblockCheck + mov x0, x19 + bl FtlRecoverySuperblock + mov x0, x19 + bl FtlSlcSuperblockCheck + bl FtlGcPageRecovery + mov w0, -1 + bl decrement_vpc_count + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret + .size FtlPowerLostRecovery, .-FtlPowerLostRecovery + .align 2 + .global Ftl_gc_temp_data_write_back + .type Ftl_gc_temp_data_write_back, %function +Ftl_gc_temp_data_write_back: + stp x29, x30, [sp, -32]! + adrp x11, .LANCHOR0 + mov w3, 0 + mov w2, 0 + add x29, sp, 0 + str x19, [sp, 16] + add x19, x11, :lo12:.LANCHOR0 + ldr w1, [x19, 3248] + ldr x0, [x19, 3432] + bl FlashProgPages + mov w10, 0 +.L1420: + ldr w1, [x19, 3248] + cmp w10, w1 + bcc .L1423 + ldr x0, [x19, 3432] + bl FtlGcBufFree + str wzr, [x19, 3248] + ldrh w0, [x19, 2524] + cbnz w0, .L1424 + mov w0, 1 + bl FtlGcFreeTempBlock + b .L1426 +.L1423: + ldr x0, [x19, 3432] + ubfiz x1, x10, 5, 16 + add x3, x0, x1 + ldr w0, [x0, x1] + cmn w0, #1 + bne .L1421 + ldrh w3, [x19, 2520] + ldr x2, [x19, 2376] + strh wzr, [x2, x3, lsl 1] + strh w0, [x19, 2520] + ldr w0, [x19, 2816] + add w0, w0, 1 + str w0, [x19, 2816] + ldr x0, [x19, 3432] + add x0, x0, x1 + ldr w0, [x0, 4] + lsr w0, w0, 10 + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + bl FtlGcPageVarInit +.L1426: + mov w0, 1 +.L1419: + ldr x19, [sp, 16] + ldp x29, x30, [sp], 32 + ret +.L1421: + ldr x0, [x3, 16] + ldr w1, [x3, 4] + ldp w2, w0, [x0, 8] + bl FtlGcUpdatePage + add w10, w10, 1 + and w10, w10, 65535 + b .L1420 +.L1424: + mov w0, 0 + b .L1419 + .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back + .align 2 + .global Ftl_get_new_temp_ppa + .type Ftl_get_new_temp_ppa, %function +Ftl_get_new_temp_ppa: + stp x29, x30, [sp, -32]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + add x0, x19, :lo12:.LANCHOR0 + add x1, x0, 2520 + ldrh w2, [x0, 2520] + mov w0, 65535 + cmp w2, w0 + beq .L1428 + ldrh w0, [x1, 4] + cbnz w0, .L1429 +.L1428: + add x20, x19, :lo12:.LANCHOR0 + mov w0, 0 + bl FtlGcFreeTempBlock + add x0, x20, 2520 + strb wzr, [x0, 8] + bl allocate_data_superblock + strh wzr, [x20, 3292] + strh wzr, [x20, 3304] + bl l2p_flush + mov w0, 0 + bl FtlEctTblFlush + bl FtlVpcTblFlush +.L1429: + add x0, x19, :lo12:.LANCHOR0 + add x0, x0, 2520 + bl get_new_active_ppa + ldp x19, x20, [sp, 16] + ldp x29, x30, [sp], 32 + ret + .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa + .align 2 .global FtlSysBlkInit .type FtlSysBlkInit, %function FtlSysBlkInit: stp x29, x30, [sp, -64]! add x29, sp, 0 stp x19, x20, [sp, 16] - adrp x19, .LANCHOR0 + adrp x20, .LANCHOR0 stp x21, x22, [sp, 32] - add x20, x19, :lo12:.LANCHOR0 - adrp x21, .LANCHOR3 - add x0, x21, :lo12:.LANCHOR3 + add x21, x20, :lo12:.LANCHOR0 str x23, [sp, 48] - strh wzr, [x0, -32] - ldrh w0, [x20, 40] + ldrh w0, [x21, 40] + strh wzr, [x21, 3816] bl FtlFreeSysBlkQueueInit bl FtlScanSysBlk - ldrh w1, [x20, 2656] + ldrh w1, [x21, 2656] mov w0, 65535 cmp w1, w0 - bne .L1669 -.L1671: - mov w22, -1 -.L1668: - mov w0, w22 + bne .L1432 +.L1434: + mov w23, -1 +.L1431: + mov w0, w23 ldr x23, [sp, 48] ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 64 ret -.L1669: +.L1432: bl FtlLoadSysInfo - mov w22, w0 - cbnz w0, .L1671 + mov w23, w0 + cbnz w0, .L1434 bl FtlLoadMapInfo bl FtlLoadVonderInfo bl Ftl_load_ext_data @@ -11842,386 +9906,770 @@ FtlSysBlkInit: bl FtlPowerLostRecovery mov w0, 1 bl FtlUpdateVaildLpn - ldr x1, [x20, 2568] + ldr x1, [x21, 2568] mov w0, 0 - ldrh w3, [x20, 142] + ldrh w3, [x21, 142] add x1, x1, 4 -.L1672: +.L1435: cmp w0, w3 - bge .L1677 + bge .L1440 ldr w2, [x1], 16 - tbz w2, #31, .L1673 -.L1677: - add x1, x19, :lo12:.LANCHOR0 + tbz w2, #31, .L1436 +.L1440: + add x2, x20, :lo12:.LANCHOR0 cmp w0, w3 - ldrh w2, [x1, 2340] - add w2, w2, 1 - strh w2, [x1, 2340] - bge .L1691 -.L1674: - add x20, x19, :lo12:.LANCHOR0 - add x21, x21, :lo12:.LANCHOR3 - sub x0, x21, #184 - ldrh w1, [x20, 2424] - ldr x3, [x20, 2376] - ldrh w4, [x20, 2428] - lsl x1, x1, 1 - ldrh w2, [x3, x1] - sub w2, w2, w4 - strh w2, [x3, x1] - strb wzr, [x20, 2430] - ldrh w1, [x20, 106] - strh w1, [x20, 2426] - ldrh w1, [x20, 2472] - ldr x3, [x20, 2376] - strh wzr, [x20, 2428] - lsl x1, x1, 1 - ldrh w4, [x20, 2476] - ldrh w2, [x3, x1] - sub w2, w2, w4 - strh w2, [x3, x1] - strb wzr, [x20, 2478] - ldrh w1, [x20, 106] - strh w1, [x20, 2474] - strh wzr, [x20, 2476] - bl FtlMapBlkWriteDump_data - sub x0, x21, #112 - bl FtlMapBlkWriteDump_data - ldrh w0, [x20, 2342] + ldrh w1, [x2, 2340] + add w1, w1, 1 + strh w1, [x2, 2340] + bge .L1445 +.L1437: + add x19, x20, :lo12:.LANCHOR0 + add x22, x19, 2424 + add x21, x19, 2472 + mov x0, x22 + bl FtlSuperblockPowerLostFix + mov x0, x21 + bl FtlSuperblockPowerLostFix + ldrh w0, [x19, 2424] + ldr x2, [x19, 2376] + ldrh w3, [x19, 2428] + lsl x0, x0, 1 + ldrh w1, [x2, x0] + sub w1, w1, w3 + strh w1, [x2, x0] + strb wzr, [x19, 2430] + ldrh w0, [x19, 106] + strh w0, [x19, 2426] + ldrh w0, [x19, 2472] + ldr x2, [x19, 2376] + strh wzr, [x19, 2428] + lsl x0, x0, 1 + ldrh w3, [x19, 2476] + ldrh w1, [x2, x0] + sub w1, w1, w3 + strh w1, [x2, x0] + strb wzr, [x19, 2478] + ldrh w0, [x19, 106] + strh w0, [x19, 2474] + ldrh w0, [x19, 2342] + strh wzr, [x19, 2476] add w0, w0, 1 - strh w0, [x20, 2342] + strh w0, [x19, 2342] bl l2p_flush bl FtlVpcTblFlush bl FtlVpcTblFlush - b .L1678 -.L1673: + b .L1441 +.L1436: add w0, w0, 1 - b .L1672 -.L1691: - add x0, x21, :lo12:.LANCHOR3 - ldrh w0, [x0, -32] - cbnz w0, .L1674 -.L1678: - add x7, x19, :lo12:.LANCHOR0 - mov w0, 65533 - ldrh w6, [x7, 2356] - sub w1, w6, #1 - cmp w0, w1, uxth - bcc .L1680 - strh w6, [x7, 3320] - mov w1, w6 - add x0, x7, 2408 - bl test_node_in_list - cbnz w0, .L1681 - ldrh w0, [x7, 44] - cmp w0, w6 - bls .L1681 - ldr x0, [x7, 2376] - ubfiz x6, x6, 1, 16 - ldrh w0, [x0, x6] - cbnz w0, .L1680 -.L1681: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 3320] -.L1680: - add x7, x19, :lo12:.LANCHOR0 - mov w0, 65533 - ldrh w6, [x7, 2358] - sub w1, w6, #1 - cmp w0, w1, uxth - bcc .L1684 - strh w6, [x7, 3322] - mov w1, w6 - add x0, x7, 2408 - bl test_node_in_list - cbnz w0, .L1685 - ldrh w0, [x7, 44] - cmp w0, w6 - bls .L1685 - ldr x0, [x7, 2376] - ubfiz x6, x6, 1, 16 - ldrh w0, [x0, x6] - cbnz w0, .L1684 -.L1685: - add x0, x19, :lo12:.LANCHOR0 - mov w1, -1 - strh w1, [x0, 3322] -.L1684: - add x20, x19, :lo12:.LANCHOR0 + b .L1435 +.L1445: + ldrh w0, [x2, 3816] + cbnz w0, .L1437 +.L1441: + add x19, x20, :lo12:.LANCHOR0 + bl FtlVpcCheckAndModify mov w1, 65535 - add x23, x20, 2424 - ldrh w0, [x20, 2424] + add x21, x19, 2424 + ldrh w0, [x19, 2424] cmp w0, w1 - beq .L1687 - ldrh w1, [x20, 2428] - cbnz w1, .L1687 - ldrh w1, [x20, 2476] - add x21, x20, 2472 - cbnz w1, .L1687 + beq .L1431 + ldrh w1, [x19, 2428] + cbnz w1, .L1431 + ldrh w1, [x19, 2476] + add x20, x19, 2472 + cbnz w1, .L1431 bl FtlGcRefreshBlock - ldrh w0, [x20, 2472] + ldrh w0, [x19, 2472] bl FtlGcRefreshBlock bl FtlVpcTblFlush - mov x0, x23 - bl allocate_new_data_superblock mov x0, x21 bl allocate_new_data_superblock -.L1687: - add x19, x19, :lo12:.LANCHOR0 - ldrh w0, [x19, 2340] - tst x0, 31 - bne .L1668 - bl FtlVpcCheckAndModify - b .L1668 + mov x0, x20 + bl allocate_new_data_superblock + b .L1431 .size FtlSysBlkInit, .-FtlSysBlkInit .align 2 - .global ftl_low_format - .type ftl_low_format, %function -ftl_low_format: - stp x29, x30, [sp, -64]! + .global rk_ftl_garbage_collect + .type rk_ftl_garbage_collect, %function +rk_ftl_garbage_collect: + stp x29, x30, [sp, -128]! add x29, sp, 0 stp x19, x20, [sp, 16] - adrp x20, .LANCHOR0 - add x0, x20, :lo12:.LANCHOR0 + adrp x19, .LANCHOR0 + add x1, x19, :lo12:.LANCHOR0 stp x21, x22, [sp, 32] - str x23, [sp, 48] - str wzr, [x0, 2620] - str wzr, [x0, 2624] - ldrh w0, [x0, 40] - bl FtlFreeSysBlkQueueInit - bl FtlLoadBbt - cbz w0, .L1694 - bl FtlMakeBbt -.L1694: - mov w4, 23752 - add x1, x20, :lo12:.LANCHOR0 - mov w0, 0 - movk w4, 0xa0f, lsl 16 -.L1695: - ldrh w2, [x1, 62] - cmp w0, w2, lsl 7 - blt .L1696 - ldrh w21, [x1, 44] - add x22, x20, :lo12:.LANCHOR0 - mov w19, 0 -.L1697: - ldrh w0, [x22, 46] - cmp w0, w21 - bhi .L1698 - ldrh w0, [x22, 36] - sub w1, w19, #3 - cmp w1, w0, lsl 1 - bge .L1699 -.L1703: - add x19, x20, :lo12:.LANCHOR0 - mov w21, 0 - mov w22, 0 -.L1700: - ldrh w0, [x19, 44] - cmp w0, w22 - bhi .L1704 - ldrh w2, [x19, 36] - ldr w1, [x19, 48] - ldrh w0, [x19, 46] - str w0, [x19, 3976] - udiv w4, w1, w2 - ubfx x3, x4, 5, 16 - str w4, [x19, 2584] - add w0, w3, 36 - strh w0, [x19, 2652] - mov w0, 24 - mul w0, w2, w0 - cmp w21, w0 - ble .L1705 - sub w1, w1, w21 - udiv w1, w1, w2 - str w1, [x19, 2584] - lsr w1, w1, 5 - add w1, w1, 24 - strh w1, [x19, 2652] -.L1705: - add x0, x20, :lo12:.LANCHOR0 - ldrh w1, [x0, 98] - cbz w1, .L1707 - ldrh w5, [x0, 2652] - add w5, w5, w1, lsr 1 - strh w5, [x0, 2652] - mul w5, w1, w2 - cmp w21, w5 - bge .L1707 - add w1, w1, 32 - str w4, [x0, 2584] - add w1, w3, w1 - strh w1, [x0, 2652] -.L1707: - add x19, x20, :lo12:.LANCHOR0 - adrp x22, .LANCHOR3 - add x21, x19, 2424 - mov w23, -1 - ldrh w1, [x19, 2652] - ldr w0, [x19, 2584] - sub w0, w0, w1 - add x1, x22, :lo12:.LANCHOR3 - mul w0, w0, w2 - str w0, [x1, 128] - ldrh w1, [x19, 106] - mul w0, w1, w0 - ldrh w1, [x19, 62] - str w0, [x19, 2584] - mul w0, w1, w0 - str w0, [x19, 144] - bl FtlBbmTblFlush - ldr x0, [x19, 2376] - mov w1, 0 - ldrh w2, [x19, 46] - lsl w2, w2, 1 - bl ftl_memset - mov w0, 1 - strb w0, [x21, 8] - ldr x0, [x19, 24] - mov w1, 255 - ldrh w2, [x19, 44] - strh w23, [x19, 2672] - strh wzr, [x19, 2674] - strb wzr, [x19, 2678] - lsr w2, w2, 3 - strb wzr, [x19, 2680] - strh wzr, [x21, 2] - strb wzr, [x21, 6] - strh wzr, [x19, 2424] - str wzr, [x19, 2580] - bl ftl_memset -.L1709: - mov x0, x21 - bl make_superblock - ldrb w1, [x21, 7] - ldrh w0, [x21] - cbnz w1, .L1710 - ldr x1, [x19, 2376] - ubfiz x0, x0, 1, 16 - strh w23, [x1, x0] - ldrh w0, [x21] - add w0, w0, 1 - strh w0, [x21] - b .L1709 -.L1696: - ldr x5, [x1, 4000] - ubfiz x3, x0, 2, 16 - mvn w2, w0 - orr w2, w0, w2, lsl 16 + stp x23, x24, [sp, 48] + stp x25, x26, [sp, 64] + stp x27, x28, [sp, 80] + ldr w2, [x1, 3408] + cbnz w2, .L1520 + ldrh w2, [x1, 2400] + cmp w2, 47 + bls .L1520 + mov w23, w0 + adrp x0, .LANCHOR2+4 + ldrh w2, [x0, #:lo12:.LANCHOR2+4] + mov w0, 65535 + cmp w2, w0 + bne .L1449 +.L1452: + add x0, x19, :lo12:.LANCHOR0 + mov w2, 65535 + ldrh w1, [x0, 3322] + cmp w1, w2 + bne .L1450 +.L1451: + add x20, x19, :lo12:.LANCHOR0 + bl FtlReadRefresh + mov w21, 65535 + ldr w0, [x20, 3236] + ldrh w1, [x20, 2672] add w0, w0, 1 + add w0, w0, w23, lsl 7 + str w0, [x20, 3236] + cmp w1, w21 + bne .L1453 + ldrh w21, [x20, 2520] + cmp w21, w1 + bne .L1523 + ldrh w22, [x20, 3320] + cmp w22, w21 + bne .L1453 + ldrh w1, [x20, 2416] + mov w2, 1024 + cmp w1, 24 + mov w1, 5120 + csel w1, w1, w2, cc + cmp w0, w1 + bls .L1526 + strh wzr, [x20, 3960] + str wzr, [x20, 3236] + bl GetSwlReplaceBlock + and w21, w0, 65535 + cmp w21, w22 + bne .L1527 + ldrh w1, [x20, 2416] + ldrh w0, [x20, 3234] + cmp w1, w0 + bcs .L1456 + mov w0, 64 + bl List_get_gc_head_node and w0, w0, 65535 - str w2, [x5, x3] - ldr x2, [x1, 3984] - str w4, [x2, x3] - b .L1695 -.L1698: - mov w0, w21 - mov w1, 1 - add w21, w21, 1 - bl FtlLowFormatEraseBlock - add w19, w19, w0 - and w21, w21, 65535 - and w19, w19, 65535 - b .L1697 -.L1699: - udiv w0, w19, w0 - ldr w19, [x22, 136] - add x21, x20, :lo12:.LANCHOR0 - add w0, w0, w19 - bl FtlSysBlkNumInit - ldrh w0, [x22, 40] - bl FtlFreeSysBlkQueueInit - ldrh w19, [x22, 44] -.L1701: - ldrh w0, [x21, 46] - cmp w0, w19 - bls .L1703 - mov w0, w19 - add w19, w19, 1 - mov w1, 1 - and w19, w19, 65535 - bl FtlLowFormatEraseBlock - b .L1701 -.L1704: - mov w0, w22 - mov w1, 0 - add w22, w22, 1 - bl FtlLowFormatEraseBlock - add w21, w21, w0 - and w22, w22, 65535 - and w21, w21, 65535 - b .L1700 -.L1710: - ldr w1, [x19, 2620] + cmp w0, w21 + beq .L1458 + ldr x1, [x20, 2376] ubfiz x0, x0, 1, 16 - str w1, [x21, 12] - add w1, w1, 1 - str w1, [x19, 2620] - ldr x1, [x19, 2376] - ldrh w2, [x21, 4] - strh w2, [x1, x0] - add x0, x19, 2472 - strh wzr, [x19, 2474] - ldrh w1, [x21] - mov w21, -1 - strb wzr, [x19, 2478] - add w1, w1, 1 - strh w1, [x19, 2472] - mov w1, 1 - strb w1, [x19, 2480] - add x19, x20, :lo12:.LANCHOR0 - mov x20, x0 -.L1711: - mov x0, x20 - bl make_superblock - ldrb w1, [x20, 7] - ldrh w0, [x20] - cbnz w1, .L1712 - ldr x1, [x19, 2376] - ubfiz x0, x0, 1, 16 - strh w21, [x1, x0] - ldrh w0, [x20] - add w0, w0, 1 - strh w0, [x20] - b .L1711 -.L1712: - ldr w1, [x19, 2620] - ubfiz x0, x0, 1, 16 - str w1, [x20, 12] - add x22, x22, :lo12:.LANCHOR3 - add w1, w1, 1 - str w1, [x19, 2620] - ldr x1, [x19, 2376] - ldrh w2, [x20, 4] - mov w20, -1 - strh w2, [x1, x0] - strh w20, [x19, 2520] - bl FtlFreeSysBlkQueueOut - strh w0, [x19, 2656] - ldr w0, [x22, 128] - strh w0, [x19, 2662] - ldr w0, [x19, 2620] - str w0, [x19, 2664] - add w0, w0, 1 - strh wzr, [x19, 2658] - strh w20, [x19, 2660] - str w0, [x19, 2620] - bl FtlVpcTblFlush - bl FtlSysBlkInit - cbnz w0, .L1713 - adrp x0, .LANCHOR2 - mov w1, 1 - str w1, [x0, #:lo12:.LANCHOR2] -.L1713: + ldrh w0, [x1, x0] + cmp w0, 7 + bhi .L1459 mov w0, 0 - ldr x23, [sp, 48] + bl List_get_gc_head_node + and w22, w0, 65535 + mov w0, 128 + strh w0, [x20, 3234] + cmp w22, w21 + bne .L1455 +.L1458: + bl FtlGcReFreshBadBlk +.L1453: + cmp w23, 0 + mov w0, 65535 + add x1, x19, :lo12:.LANCHOR0 + ccmp w21, w0, 0, eq + bne .L1461 + ldrh w0, [x1, 2416] + cmp w0, 24 + bhi .L1528 + cmp w0, 16 + ldrh w20, [x1, 106] + bls .L1463 + lsr w20, w20, 5 +.L1462: + add x1, x19, :lo12:.LANCHOR0 + ldrh w2, [x1, 3232] + cmp w2, w0 + bcs .L1466 + ldrh w0, [x1, 2520] + mov w2, 65535 + cmp w0, w2 + bne .L1467 + ldrh w2, [x1, 3320] + cmp w2, w0 + bne .L1467 + ldrh w0, [x1, 3960] + cbnz w0, .L1468 + ldr w2, [x1, 2584] + ldr w3, [x1, 2580] + add w2, w2, w2, lsl 1 + cmp w3, w2, lsr 2 + bcs .L1469 +.L1468: + add x2, x19, :lo12:.LANCHOR0 + ldrh w1, [x2, 2652] + add w1, w1, w1, lsl 1 + asr w1, w1, 2 + strh w1, [x2, 3232] +.L1470: + add x19, x19, :lo12:.LANCHOR0 + str wzr, [x19, 3244] +.L1447: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] - ldp x29, x30, [sp], 64 + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 128 ret - .size ftl_low_format, .-ftl_low_format +.L1449: + ldrh w1, [x1, 2520] + cmp w1, w0 + beq .L1452 + mov w0, 1 + bl FtlGcFreeTempBlock + cbz w0, .L1452 + mov w0, 1 + b .L1447 +.L1450: + ldrh w3, [x0, 3320] + cmp w3, w2 + bne .L1451 + strh w1, [x0, 3320] + mov w1, -1 + strh w1, [x0, 3322] + b .L1451 +.L1459: + mov w0, 64 +.L1555: + strh w0, [x20, 3234] + b .L1458 +.L1456: + mov w0, 80 + b .L1555 +.L1527: + mov w22, w21 +.L1455: + add x0, x19, :lo12:.LANCHOR0 + ubfiz x1, x22, 1, 32 + mov w21, w22 + ldr x2, [x0, 2376] + ldr x3, [x0, 2384] + ldrh w5, [x0, 3232] + ldrh w4, [x3, x1] + ldrh w3, [x2, x1] + mov w1, w22 + ldrh w2, [x0, 2416] + adrp x0, .LC113 + add x0, x0, :lo12:.LC113 + bl sftl_printk + b .L1458 +.L1523: + mov w21, w1 + b .L1453 +.L1526: + mov w21, w22 + b .L1453 +.L1463: + cmp w0, 12 + bls .L1464 + lsr w20, w20, 4 + b .L1462 +.L1464: + mov w1, w20 + cmp w0, 9 + lsr w20, w20, 2 + csel w20, w20, w1, cs + b .L1462 +.L1528: + mov w20, 1 + b .L1462 +.L1469: + mov w2, 18 + strh w2, [x1, 3232] + b .L1470 +.L1467: + add x1, x19, :lo12:.LANCHOR0 + ldrh w0, [x1, 2652] + add w0, w0, w0, lsl 1 + asr w0, w0, 2 + strh w0, [x1, 3232] +.L1466: + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0, 3324] + cbz w0, .L1529 + add w20, w20, 32 + and w20, w20, 65535 +.L1529: + mov w21, 65535 +.L1472: + add x0, x19, :lo12:.LANCHOR0 + mov w2, 65535 + ldrh w1, [x0, 2672] + cmp w1, w2 + bne .L1481 + cmp w21, w1 + beq .L1482 + strh w21, [x0, 2672] +.L1483: + add x5, x19, :lo12:.LANCHOR0 + mov w1, 65535 + ldrh w0, [x5, 2672] + strb wzr, [x5, 2680] + cmp w0, w1 + beq .L1481 + bl IsBlkInGcList + cbz w0, .L1486 + mov w0, -1 + strh w0, [x5, 2672] +.L1486: + add x22, x19, :lo12:.LANCHOR0 + mov w0, 65535 + add x24, x22, 2672 + ldrh w1, [x22, 2672] + cmp w1, w0 + beq .L1481 + mov x0, x24 + bl make_superblock + ldrh w1, [x22, 2672] + ldr x0, [x22, 2376] + strh wzr, [x22, 2674] + strb wzr, [x22, 2678] + strh wzr, [x22, 3962] + ldrh w0, [x0, x1, lsl 1] + strh w0, [x22, 3964] +.L1481: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 2672] + ldrh w2, [x0, 2424] + cmp w2, w1 + beq .L1487 + ldrh w0, [x0, 2472] + cmp w0, w1 + bne .L1488 +.L1487: + add x0, x19, :lo12:.LANCHOR0 + mov w1, -1 + strh w1, [x0, 2672] +.L1488: + adrp x25, .LANCHOR1 + add x25, x25, :lo12:.LANCHOR1 + add x25, x25, 688 +.L1517: + add x22, x19, :lo12:.LANCHOR0 + mov w0, 65535 + ldrh w24, [x22, 2672] + cmp w24, w0 + bne .L1489 + mov w26, 2 + str wzr, [x22, 3244] +.L1490: + ldrh w5, [x22, 3240] + mov w0, w5 + bl List_get_gc_head_node + and w6, w0, 65535 + strh w6, [x22, 2672] + cmp w6, w24 + bne .L1491 + strh wzr, [x22, 3240] + mov w0, 8 + b .L1447 +.L1461: + ldrh w2, [x1, 2520] + cmp w2, w0 + bne .L1532 + ldrh w0, [x1, 3320] + cmp w0, w2 + bne .L1532 + cmp w21, w0 + bne .L1532 + ldrh w0, [x1, 2672] + cmp w0, w21 + beq .L1473 +.L1532: + mov w20, 1 + b .L1472 +.L1473: + ldrh w2, [x1, 2416] + ldrh w0, [x1, 3232] + str wzr, [x1, 3244] + cmp w2, w0 + bls .L1474 + ldrh w0, [x1, 3960] + cbnz w0, .L1475 + ldr w0, [x1, 2584] + ldr w2, [x1, 2580] + add w0, w0, w0, lsl 1 + cmp w2, w0, lsr 2 + bcs .L1476 +.L1475: + add x1, x19, :lo12:.LANCHOR0 + ldrh w0, [x1, 2652] + add w0, w0, w0, lsl 1 + asr w0, w0, 2 +.L1556: + strh w0, [x1, 3232] + bl FtlReadRefresh + mov w0, 0 + bl List_get_gc_head_node + add x1, x19, :lo12:.LANCHOR0 + ubfiz x0, x0, 1, 16 + ldr x2, [x1, 2376] + ldrh w0, [x2, x0] + cmp w0, 4 + bls .L1474 + ldrh w0, [x1, 3960] + b .L1447 +.L1476: + mov w0, 18 + b .L1556 +.L1474: + add x20, x19, :lo12:.LANCHOR0 + ldrh w0, [x20, 3960] + cbnz w0, .L1532 + ldrh w5, [x20, 2652] + add w0, w5, w5, lsl 1 + asr w0, w0, 2 + strh w0, [x20, 3232] + mov w0, 0 + bl List_get_gc_head_node + ldr x1, [x20, 2376] + ubfiz x0, x0, 1, 16 + ldrh w2, [x20, 36] + ldrh w1, [x1, x0] + ldrh w0, [x20, 108] + mul w0, w0, w2 + mov w2, 2 + sdiv w0, w0, w2 + cmp w1, w0 + ble .L1479 + ldrh w0, [x20, 2416] + sub w5, w5, #1 + cmp w0, w5 + blt .L1479 + bl FtlReadRefresh + ldrh w0, [x20, 3960] + b .L1447 +.L1479: + cbnz w1, .L1532 + add x19, x19, :lo12:.LANCHOR0 + mov w0, -1 + bl decrement_vpc_count + ldrh w0, [x19, 2416] + add w0, w0, 1 + b .L1447 +.L1482: + ldrh w1, [x0, 3320] + cmp w1, w21 + beq .L1483 + ldr x2, [x0, 2376] + ubfiz x1, x1, 1, 16 + ldrh w1, [x2, x1] + cbnz w1, .L1484 + mov w1, -1 + strh w1, [x0, 3320] +.L1484: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 3320] + strh w1, [x0, 2672] + mov w1, -1 + strh w1, [x0, 3320] + b .L1483 +.L1491: + mov w0, w6 + bl IsBlkInGcList + add w5, w5, 1 + cbz w0, .L1492 + strh w5, [x22, 3240] + b .L1490 +.L1492: + ldrh w4, [x22, 36] + ubfiz x1, x6, 1, 16 + ldrh w0, [x22, 106] + and w5, w5, 65535 + ldr x2, [x22, 2376] + strh w5, [x22, 3240] + mul w0, w0, w4 + ldrh w3, [x2, x1] + sdiv w4, w0, w26 + cmp w3, w4 + bgt .L1494 + cmp w5, 48 + bls .L1495 + cmp w3, 8 + bls .L1495 + ldrh w3, [x22, 3292] + cmp w3, 35 + bhi .L1495 +.L1494: + strh wzr, [x22, 3240] +.L1495: + ldrh w1, [x2, x1] + cmp w0, w1 + bgt .L1496 + cmp w21, w24 + bne .L1496 + ldrh w0, [x22, 3240] + cmp w0, 3 + bhi .L1496 + mov w0, -1 + strh wzr, [x22, 3240] + strh w0, [x22, 2672] +.L1557: + ldrh w0, [x22, 3960] + b .L1447 +.L1496: + cbnz w1, .L1497 + mov w0, -1 + bl decrement_vpc_count + ldrh w0, [x22, 3240] + add w0, w0, 1 + strh w0, [x22, 3240] + b .L1490 +.L1497: + add x0, x19, :lo12:.LANCHOR0 + strb wzr, [x0, 2680] + ldrh w0, [x0, 2424] + cmp w0, w6 + bne .L1498 + adrp x0, .LC1 + mov w2, 700 + mov x1, x25 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1498: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 2672] + ldrh w0, [x0, 2472] + cmp w1, w0 + bne .L1499 + adrp x0, .LC1 + mov w2, 701 + mov x1, x25 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1499: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 2672] + ldrh w0, [x0, 2520] + cmp w1, w0 + bne .L1500 + adrp x0, .LC1 + mov w2, 702 + mov x1, x25 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1500: + add x22, x19, :lo12:.LANCHOR0 + add x24, x22, 2672 + mov x0, x24 + bl make_superblock + ldrh w1, [x22, 2672] + ldr x0, [x22, 2376] + strh wzr, [x22, 3962] + ldrh w0, [x0, x1, lsl 1] + strh w0, [x22, 3964] + strh wzr, [x22, 2674] + strb wzr, [x22, 2678] +.L1489: + add x1, x19, :lo12:.LANCHOR0 + mov w0, 1 + str w0, [x1, 3408] + ldrh w26, [x1, 106] + cbz w23, .L1501 + ldrh w0, [x1, 36] + ldrh w2, [x1, 2672] + ldr x1, [x1, 2376] + mul w0, w0, w26 + ldrh w1, [x1, x2, lsl 1] + sub w0, w0, w1 + mov w1, 4 + sdiv w0, w0, w1 + add w20, w20, w0 + and w20, w20, 65535 +.L1501: + add x0, x19, :lo12:.LANCHOR0 + ldrh w0, [x0, 2674] + add w1, w0, w20 + cmp w1, w26 + ble .L1502 + sub w20, w26, w0 + and w20, w20, 65535 +.L1502: + mov w27, 0 +.L1503: + cmp w20, w27, uxth + bls .L1511 + add x0, x19, :lo12:.LANCHOR0 + mov w24, 0 + add x3, x0, 2688 + mov w1, 0 + mov w6, 65535 + ldrh w4, [x0, 2674] + ldrh w7, [x0, 36] + add w4, w4, w27 + b .L1512 +.L1505: + ldrh w2, [x3] + cmp w2, w6 + beq .L1504 + ldr x5, [x0, 3280] + ubfiz x8, x24, 5, 16 + add w24, w24, 1 + orr w2, w4, w2, lsl 10 + add x5, x5, x8 + and w24, w24, 65535 + str w2, [x5, 4] +.L1504: + add w1, w1, 1 + add x3, x3, 2 + and w1, w1, 65535 +.L1512: + cmp w1, w7 + bne .L1505 + add x22, x19, :lo12:.LANCHOR0 + mov w1, w24 + mov x28, 0 + ldrb w2, [x22, 2680] + ldr x0, [x22, 3280] + bl FlashReadPages + ubfiz x0, x24, 5, 16 + str x0, [x29, 104] +.L1506: + ldr x0, [x29, 104] + cmp x0, x28 + bne .L1510 + add w27, w27, 1 + b .L1503 +.L1510: + ldr x0, [x22, 3280] + add x1, x0, x28 + ldr w0, [x0, x28] + cmn w0, #1 + beq .L1507 + ldr x24, [x1, 16] + mov w0, 61589 + ldrh w1, [x24] + cmp w1, w0 + bne .L1507 + ldr w4, [x24, 8] + cmn w4, #1 + bne .L1508 + str w4, [x29, 96] + mov w2, 736 + mov x1, x25 + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 + bl sftl_printk + ldr w4, [x29, 96] +.L1508: + mov w2, 0 + add x1, x29, 124 + mov w0, w4 + bl log2phys + ldr x0, [x22, 3280] + ldr w1, [x29, 124] + add x0, x0, x28 + ldr w2, [x0, 4] + cmp w2, w1 + bne .L1507 + ldrh w1, [x22, 3962] + ldr x2, [x22, 3432] + add w1, w1, 1 + strh w1, [x22, 3962] + ldr w1, [x22, 3248] + ldr w0, [x0, 24] + add x1, x2, x1, lsl 5 + str x1, [x29, 96] + str w0, [x1, 24] + bl Ftl_get_new_temp_ppa + ldr x1, [x29, 96] + str w0, [x1, 4] + ldr w0, [x22, 3248] + ldr x1, [x22, 3432] + add x0, x1, x0, lsl 5 + ldr x1, [x22, 3280] + add x1, x1, x28 + ldr x2, [x1, 8] + str x2, [x0, 8] + ldr x1, [x1, 16] + str x1, [x0, 16] + ldr w0, [x29, 124] + mov w1, 1 + str w0, [x24, 12] + ldrh w0, [x22, 2520] + strh w0, [x24, 2] + ldr w0, [x22, 2624] + str w0, [x24, 4] + ldr w0, [x22, 3248] + add w0, w0, 1 + str w0, [x22, 3248] + ldr x0, [x22, 3280] + add x0, x0, x28 + bl FtlGcBufAlloc + ldrb w1, [x22, 2527] + ldr w0, [x22, 3248] + cmp w1, w0 + beq .L1509 + ldrh w0, [x22, 2524] + cbnz w0, .L1507 +.L1509: + bl Ftl_gc_temp_data_write_back + cbz w0, .L1507 + add x19, x19, :lo12:.LANCHOR0 + ldrh w0, [x19, 3960] + str wzr, [x19, 3408] + b .L1447 +.L1507: + add x28, x28, 32 + b .L1506 +.L1511: + add x22, x19, :lo12:.LANCHOR0 + ldrh w0, [x22, 2674] + add w20, w20, w0 + and w20, w20, 65535 + strh w20, [x22, 2674] + cmp w26, w20 + bhi .L1513 + ldr w0, [x22, 3248] + cbz w0, .L1514 + bl Ftl_gc_temp_data_write_back + cbz w0, .L1514 + str wzr, [x22, 3408] + b .L1557 +.L1514: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 3962] + cbnz w1, .L1515 + ldrh w1, [x0, 2672] + ldr x2, [x0, 2376] + lsl x1, x1, 1 + ldrh w3, [x2, x1] + cbz w3, .L1515 + strh wzr, [x2, x1] + ldrh w0, [x0, 2672] + bl update_vpc_list + bl l2p_flush + bl FtlVpcTblFlush +.L1515: + add x0, x19, :lo12:.LANCHOR0 + mov w1, -1 + strh w1, [x0, 2672] +.L1513: + add x0, x19, :lo12:.LANCHOR0 + ldrh w1, [x0, 2416] + str wzr, [x0, 3408] + cmp w1, 2 + bhi .L1516 + ldrh w20, [x0, 106] + b .L1517 +.L1516: + ldrh w0, [x0, 3960] + cmp w0, 0 + csinc w0, w0, w1, ne + b .L1447 +.L1520: + mov w0, 0 + b .L1447 + .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect .align 2 .global sftl_init .type sftl_init, %function @@ -12246,28 +10694,1492 @@ sftl_init: ldrh w0, [x19, 40] bl FtlFreeSysBlkQueueInit bl FtlLoadBbt - cbnz w0, .L1722 + cbnz w0, .L1562 bl FtlSysBlkInit - cbnz w0, .L1722 + cbnz w0, .L1562 mov w0, 1 str w0, [x20, #:lo12:.LANCHOR2] ldrh w0, [x19, 2416] cmp w0, 15 - bhi .L1722 + bhi .L1562 mov w19, 8129 -.L1721: +.L1561: mov w1, 1 mov w0, 0 bl rk_ftl_garbage_collect subs w19, w19, #1 - bne .L1721 -.L1722: + bne .L1561 +.L1562: mov w0, 0 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 32 ret .size sftl_init, .-sftl_init .align 2 + .global sftl_gc + .type sftl_gc, %function +sftl_gc: + stp x29, x30, [sp, -16]! + mov w1, 1 + mov w0, w1 + add x29, sp, 0 + bl rk_ftl_garbage_collect + ldp x29, x30, [sp], 16 + ret + .size sftl_gc, .-sftl_gc + .align 2 + .global FtlRead + .type FtlRead, %function +FtlRead: + stp x29, x30, [sp, -160]! + and w0, w0, 255 + cmp w0, 16 + add x29, sp, 0 + stp x19, x20, [sp, 16] + mov w19, w1 + stp x23, x24, [sp, 48] + mov x23, x3 + stp x25, x26, [sp, 64] + mov w25, w2 + stp x21, x22, [sp, 32] + stp x27, x28, [sp, 80] + bne .L1568 + mov x2, x3 + mov w1, w25 + add w0, w19, 256 + bl FtlVendorPartRead + mov w21, w0 +.L1567: + 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], 160 + ret +.L1568: + add w0, w1, w2 + str w0, [x29, 128] + adrp x0, .LANCHOR0 + add x3, x0, :lo12:.LANCHOR0 + add w2, w1, w2 + str x0, [x29, 96] + ldr w1, [x3, 144] + cmp w2, w1 + bhi .L1589 + adrp x0, .LANCHOR2 + ldr w21, [x0, #:lo12:.LANCHOR2] + cmn w21, #1 + beq .L1567 + ldrh w0, [x3, 62] + sub w24, w2, #1 + mov x26, x3 + mov w28, 0 + mov w21, 0 + stp wzr, wzr, [x29, 132] + str wzr, [x29, 140] + udiv w27, w19, w0 + udiv w24, w24, w0 + ldr w0, [x3, 2616] + add w0, w0, w25 + str w0, [x3, 2616] + ldr w0, [x3, 2588] + mov w20, w27 + sub w22, w24, w27 + add w22, w22, 1 + add w0, w0, w22 + str w0, [x3, 2588] +.L1570: + cbnz w22, .L1587 + ldr x0, [x29, 96] + add x0, x0, :lo12:.LANCHOR0 + ldrh w1, [x0, 3324] + cbnz w1, .L1588 + ldrh w0, [x0, 2416] + cmp w0, 31 + bhi .L1567 +.L1588: + mov w1, 1 + mov w0, 0 + bl rk_ftl_garbage_collect + b .L1567 +.L1587: + add x1, x29, 156 + mov w2, 0 + mov w0, w20 + bl log2phys + ldr w1, [x29, 156] + cmn w1, #1 + bne .L1571 + mov w5, 0 +.L1572: + ldrh w0, [x26, 62] + cmp w5, w0 + bcc .L1574 +.L1575: + add w20, w20, 1 + subs w22, w22, #1 + beq .L1579 + ldrh w0, [x26, 36] + cmp w28, w0, lsl 2 + bne .L1570 +.L1579: + cbz w28, .L1570 + ldr x0, [x26, 3424] + mov w1, w28 + mov w2, 0 + bl FlashReadPages + ldr w0, [x29, 132] + lsl w0, w0, 9 + str w0, [x29, 112] + ldr w0, [x29, 140] + lsl w0, w0, 9 + str x0, [x29, 120] + ldr w0, [x29, 136] + lsl w0, w0, 9 + str w0, [x29, 116] + ubfiz x0, x28, 5, 32 + mov x28, 0 + str x0, [x29, 104] +.L1586: + ldr x0, [x26, 3424] + add x0, x0, x28 + ldr w1, [x0, 24] + cmp w27, w1 + bne .L1581 + ldr x1, [x0, 8] + ldr x0, [x26, 3472] + cmp x1, x0 + bne .L1582 + ldr x0, [x29, 120] + ldr w2, [x29, 116] + add x1, x1, x0 + mov x0, x23 +.L1599: + bl ftl_memcpy +.L1582: + ldr x0, [x26, 3424] + add x0, x0, x28 + ldr x1, [x0, 16] + ldr w2, [x0, 24] + ldr w1, [x1, 8] + cmp w2, w1 + beq .L1583 + ldr w1, [x26, 2792] + add w1, w1, 1 + str w1, [x26, 2792] +.L1583: + ldr w2, [x0] + cmn w2, #1 + bne .L1584 + ldr w1, [x26, 2792] + mov w21, w2 + add w1, w1, 1 + str w1, [x26, 2792] +.L1584: + ldr w1, [x0] + cmp w1, 256 + bne .L1585 + ldr w0, [x0, 4] + lsr w0, w0, 10 + bl P2V_block_in_plane + bl FtlGcRefreshBlock +.L1585: + ldr x0, [x29, 104] + add x28, x28, 32 + cmp x0, x28 + bne .L1586 + mov w28, 0 + b .L1570 +.L1574: + madd w0, w20, w0, w5 + cmp w19, w0 + bhi .L1573 + ldr w1, [x29, 128] + cmp w1, w0 + bls .L1573 + sub w0, w0, w19 + str w5, [x29, 120] + lsl w0, w0, 9 + mov w2, 512 + mov w1, 0 + add x0, x23, x0 + bl ftl_memset + ldr w5, [x29, 120] +.L1573: + add w5, w5, 1 + b .L1572 +.L1571: + ldr x0, [x26, 3424] + ubfiz x2, x28, 5, 32 + cmp w20, w27 + add x0, x0, x2 + str w1, [x0, 4] + ldrh w0, [x26, 62] + bne .L1576 + ldr x1, [x26, 3424] + ldr x5, [x26, 3472] + add x1, x1, x2 + str x5, [x1, 8] + udiv w5, w19, w0 + msub w3, w5, w0, w19 + str w3, [x29, 140] + sub w5, w0, w3 + cmp w25, w5 + csel w3, w25, w5, ls + str w3, [x29, 136] + cmp w3, w0 + bne .L1577 + str x23, [x1, 8] +.L1577: + ldr x0, [x26, 3424] + ldr x1, [x26, 3520] + add x2, x0, x2 + ldrh w0, [x26, 116] + str w20, [x2, 24] + mul w0, w0, w28 + add w28, w28, 1 + and x0, x0, 4294967292 + add x0, x1, x0 + str x0, [x2, 16] + b .L1575 +.L1576: + cmp w20, w24 + bne .L1578 + ldr x5, [x26, 3424] + ldr x1, [x26, 3480] + add x5, x5, x2 + ldr w3, [x29, 128] + str x1, [x5, 8] + mul w1, w20, w0 + sub w3, w3, w1 + str w3, [x29, 132] + cmp w0, w3 + bne .L1577 + sub w1, w1, w19 + lsl w1, w1, 9 + add x1, x23, x1 + str x1, [x5, 8] + b .L1577 +.L1578: + ldr x1, [x26, 3424] + mul w0, w0, w20 + add x1, x1, x2 + sub w0, w0, w19 + lsl w0, w0, 9 + add x0, x23, x0 + str x0, [x1, 8] + b .L1577 +.L1581: + cmp w24, w1 + bne .L1582 + ldr x1, [x0, 8] + ldr x0, [x26, 3480] + cmp x1, x0 + bne .L1582 + ldrh w0, [x26, 62] + ldr w2, [x29, 112] + mul w0, w0, w24 + sub w0, w0, w19 + lsl w0, w0, 9 + add x0, x23, x0 + b .L1599 +.L1589: + mov w21, -1 + b .L1567 + .size FtlRead, .-FtlRead + .align 2 + .global sftl_read + .type sftl_read, %function +sftl_read: + stp x29, x30, [sp, -16]! + mov x3, x2 + mov w2, w1 + mov w1, w0 + add x29, sp, 0 + mov w0, 0 + bl FtlRead + ldp x29, x30, [sp], 16 + ret + .size sftl_read, .-sftl_read + .align 2 + .global FtlWrite + .type FtlWrite, %function +FtlWrite: + stp x29, x30, [sp, -224]! + and w0, w0, 255 + cmp w0, 16 + add x29, sp, 0 + stp x23, x24, [sp, 48] + mov w23, w1 + stp x25, x26, [sp, 64] + mov x26, x3 + stp x19, x20, [sp, 16] + stp x21, x22, [sp, 32] + stp x27, x28, [sp, 80] + str w2, [x29, 172] + bne .L1603 + add w0, w1, 256 + ldr w1, [x29, 172] + mov x2, x3 + bl FtlVendorPartWrite +.L1602: + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 224 + ret +.L1603: + ldr w0, [x29, 172] + adrp x19, .LANCHOR0 + add x1, x19, :lo12:.LANCHOR0 + add w0, w23, w0 + str w0, [x29, 148] + ldr w0, [x1, 144] + ldr w2, [x29, 148] + cmp w2, w0 + bhi .L1639 + adrp x2, .LANCHOR2 + str x2, [x29, 136] + add x3, x2, :lo12:.LANCHOR2 + ldr w0, [x2, #:lo12:.LANCHOR2] + cmn w0, #1 + beq .L1602 + mov w0, 2048 + ldr w2, [x29, 148] + str w0, [x1, 3968] + add x20, x1, 2424 + ldrh w0, [x1, 62] + sub w2, w2, #1 + udiv w25, w23, w0 + udiv w0, w2, w0 + ldr w2, [x29, 172] + str w0, [x29, 144] + sub w0, w0, w25 + add w24, w0, 1 + str w0, [x29, 132] + ldr w0, [x1, 2612] + add w0, w0, w2 + str w0, [x1, 2612] + ldr w0, [x1, 2596] + add w0, w0, w24 + str w0, [x1, 2596] + ldr w0, [x3, 8] + cbz w0, .L1605 + ldrh w0, [x20, 4] + add x1, x1, 2472 + cmp w0, 0 + csel x20, x1, x20, eq +.L1605: + adrp x0, .LANCHOR1 + mov w21, w25 + add x0, x0, :lo12:.LANCHOR1 + add x0, x0, 712 + str x0, [x29, 160] +.L1606: + cbnz w24, .L1634 + ldr w1, [x29, 132] + add x19, x19, :lo12:.LANCHOR0 + mov w0, 0 + bl rk_ftl_garbage_collect + ldrh w0, [x19, 2416] + cmp w0, 5 + bls .L1635 +.L1637: + mov w0, 0 + b .L1602 +.L1634: + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x20, 6] + ldrh w0, [x0, 36] + cmp w1, w0 + bcc .L1607 + ldr x1, [x29, 160] + adrp x0, .LC1 + mov w2, 1011 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1607: + ldrh w0, [x20, 4] + cbnz w0, .L1608 + add x0, x19, :lo12:.LANCHOR0 + add x1, x0, 2424 + cmp x20, x1 + bne .L1609 + add x0, x0, 2472 + ldrh w1, [x0, 4] + cbnz w1, .L1610 + bl allocate_new_data_superblock + ldr x0, [x29, 136] + add x0, x0, :lo12:.LANCHOR2 + str wzr, [x0, 8] +.L1610: + add x20, x19, :lo12:.LANCHOR0 + add x22, x20, 2424 + add x20, x20, 2472 + mov x0, x22 + bl allocate_new_data_superblock + ldr x0, [x29, 136] + add x0, x0, :lo12:.LANCHOR2 + ldr w0, [x0, 8] + cmp w0, 0 + csel x20, x20, x22, ne +.L1611: + ldrh w0, [x20, 4] + cbnz w0, .L1608 + mov x0, x20 + bl allocate_new_data_superblock +.L1608: + ldrh w0, [x20, 4] + ldrb w1, [x20, 7] + cmp w0, w24 + csel w0, w0, w24, ls + lsl w1, w1, 2 + cmp w0, w1 + csel w0, w0, w1, ls + str w0, [x29, 128] + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x20, 6] + ldrh w0, [x0, 36] + cmp w1, w0 + bcc .L1612 + ldr x1, [x29, 160] + adrp x0, .LC1 + mov w2, 1044 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1612: + mov x28, 0 +.L1613: + ldr w0, [x29, 128] + mov w22, w28 + cmp w28, w0 + bcc .L1632 + mov x22, x0 +.L1614: + add x0, x19, :lo12:.LANCHOR0 + mov x3, x20 + mov w2, 0 + mov w1, w22 + ldr x0, [x0, 3440] + bl FtlProgPages + cmp w24, w22 + bcs .L1633 + ldr x1, [x29, 160] + adrp x0, .LC1 + mov w2, 1121 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1633: + sub w24, w24, w22 + b .L1606 +.L1609: + ldr x0, [x29, 136] + add x0, x0, :lo12:.LANCHOR2 + str wzr, [x0, 8] + ldrh w0, [x1, 4] + cbnz w0, .L1644 + mov x0, x20 + bl allocate_new_data_superblock + b .L1611 +.L1644: + mov x20, x1 + b .L1608 +.L1632: + ldrh w0, [x20, 4] + cbz w0, .L1614 + add x1, x29, 188 + mov w2, 0 + mov w0, w21 + bl log2phys + mov x0, x20 + lsl x27, x28, 5 + bl get_new_active_ppa + add x4, x19, :lo12:.LANCHOR0 + str x4, [x29, 152] + ldr x1, [x4, 3440] + ldrh w2, [x4, 116] + add x1, x1, x27 + str w0, [x1, 4] + mul w22, w22, w2 + ldr x0, [x4, 3440] + and x1, x22, 4294967292 + str x1, [x29, 120] + add x0, x0, x27 + ldr x1, [x4, 3520] + ldr x3, [x29, 120] + str x1, [x29, 112] + add x22, x1, x3 + str w21, [x0, 24] + str x22, [x0, 16] + mov w1, 0 + mov x0, x22 + bl ftl_memset + ldr w0, [x29, 144] + cmp w21, w25 + ldr x4, [x29, 152] + ccmp w21, w0, 4, ne + bne .L1615 + cmp w21, w25 + bne .L1616 + ldrh w2, [x4, 62] + udiv w0, w23, w2 + msub w0, w0, w2, w23 + str w0, [x29, 168] + sub w2, w2, w0 + ldr w0, [x29, 172] + cmp w2, w0 + csel w0, w2, w0, ls + str w0, [x29, 152] +.L1617: + add x0, x19, :lo12:.LANCHOR0 + ldr w2, [x29, 152] + ldrh w1, [x0, 62] + cmp w2, w1 + bne .L1618 + ldr x0, [x0, 3440] + cmp w21, w25 + add x3, x0, x27 + bne .L1619 + str x26, [x3, 8] +.L1620: + add x0, x19, :lo12:.LANCHOR0 + ldrb w1, [x20, 6] + ldrh w0, [x0, 36] + cmp w1, w0 + bcc .L1629 + ldr x1, [x29, 160] + adrp x0, .LC1 + mov w2, 1112 + add x0, x0, :lo12:.LC1 + bl sftl_printk +.L1629: + ldp x1, x2, [x29, 112] + mov w0, -3947 + add x28, x28, 1 + strh w0, [x1, x2] + add x1, x19, :lo12:.LANCHOR0 + ldr w0, [x1, 2624] + stp w0, w21, [x22, 4] + add w21, w21, 1 + add w0, w0, 1 + cmn w0, #1 + csel w0, w0, wzr, ne + str w0, [x1, 2624] + ldr w0, [x29, 188] + str w0, [x22, 12] + ldrh w0, [x20] + strh w0, [x22, 2] + b .L1613 +.L1616: + ldr w0, [x29, 148] + ldrh w2, [x4, 62] + str wzr, [x29, 168] + msub w2, w21, w2, w0 + and w0, w2, 65535 + str w0, [x29, 152] + b .L1617 +.L1619: + ldr w0, [x29, 152] +.L1651: + mul w0, w0, w21 + sub w0, w0, w23 + lsl w0, w0, 9 + add x0, x26, x0 + str x0, [x3, 8] + b .L1620 +.L1618: + ldr x1, [x0, 3440] + cmp w21, w25 + add x1, x1, x27 + bne .L1621 + ldr x0, [x0, 3472] +.L1650: + str x0, [x1, 8] + ldr w0, [x29, 188] + cmn w0, #1 + beq .L1623 + add x4, x19, :lo12:.LANCHOR0 + str w0, [x29, 196] + str w21, [x29, 216] + mov w2, 0 + str x4, [x29, 104] + ldr x0, [x4, 3440] + add x0, x0, x27 + ldp x1, x0, [x0, 8] + stp x1, x0, [x29, 200] + mov w1, 1 + add x0, x29, 192 + bl FlashReadPages + ldr w0, [x29, 192] + ldr x4, [x29, 104] + cmn w0, #1 + bne .L1624 + ldr w0, [x4, 2792] + add w0, w0, 1 + str w0, [x4, 2792] +.L1627: + ldr w0, [x29, 152] + cmp w21, w25 + lsl w2, w0, 9 + add x0, x19, :lo12:.LANCHOR0 + bne .L1628 + ldr x0, [x0, 3440] + mov x1, x26 + add x3, x0, x27 + ldr w0, [x29, 168] + ldr x3, [x3, 8] + lsl w0, w0, 9 + add x0, x3, x0 +.L1652: + bl ftl_memcpy + b .L1620 +.L1621: + ldr x0, [x0, 3480] + b .L1650 +.L1624: + ldr w0, [x22, 8] + cmp w21, w0 + beq .L1626 + ldr w0, [x4, 2792] + mov w2, w21 + add w0, w0, 1 + str w0, [x4, 2792] + adrp x0, .LC114 + add x0, x0, :lo12:.LC114 + ldr w1, [x22, 8] + bl sftl_printk +.L1626: + ldr w0, [x22, 8] + cmp w21, w0 + beq .L1627 + ldr x1, [x29, 160] + mov w2, 1097 + adrp x0, .LC1 + add x0, x0, :lo12:.LC1 + bl sftl_printk + b .L1627 +.L1623: + add x1, x19, :lo12:.LANCHOR0 + ldr x0, [x1, 3440] + ldrh w2, [x1, 114] + mov w1, 0 + add x0, x0, x27 + ldr x0, [x0, 8] + bl ftl_memset + b .L1627 +.L1628: + ldrh w1, [x0, 62] + ldr x0, [x0, 3440] + add x3, x0, x27 + mul w1, w1, w21 + sub w1, w1, w23 + ldr x0, [x3, 8] + lsl w1, w1, 9 + add x1, x26, x1 + b .L1652 +.L1615: + ldr x0, [x4, 3440] + add x3, x0, x27 + ldrh w0, [x4, 62] + b .L1651 +.L1635: + mov w20, 256 + mov w21, 65535 + mov w22, 128 +.L1638: + ldrh w0, [x19, 2672] + cmp w0, w21 + bne .L1636 + ldrh w0, [x19, 3320] + cmp w0, w21 + bne .L1636 + mov w0, 0 + bl List_get_gc_head_node + bl FtlGcRefreshBlock +.L1636: + mov w1, 1 + strh w22, [x19, 3234] + mov w0, w1 + strh w22, [x19, 3232] + bl rk_ftl_garbage_collect + mov w1, 1 + mov w0, 0 + bl rk_ftl_garbage_collect + ldrh w0, [x19, 2416] + cmp w0, 2 + bhi .L1637 + subs w20, w20, #1 + bne .L1638 + b .L1637 +.L1639: + mov w0, -1 + b .L1602 + .size FtlWrite, .-FtlWrite + .align 2 + .global sftl_write + .type sftl_write, %function +sftl_write: + stp x29, x30, [sp, -224]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + add w19, w0, w1 + stp x27, x28, [sp, 80] + adrp x20, .LANCHOR0 + stp x21, x22, [sp, 32] + sub w21, w19, #1 + stp x23, x24, [sp, 48] + mov w27, w1 + stp x25, x26, [sp, 64] + mov w24, w0 + mov x28, x2 + cmp w21, 63 + bls .L1654 + cmp w0, 576 + bls .L1655 +.L1654: + add x0, x20, :lo12:.LANCHOR0 + ldr w1, [x0, 3972] + cbz w1, .L1656 + ldr x26, [x0, 3976] + mov w1, 35899 + movk w1, 0xfcdc, lsl 16 + ldr w2, [x26] + cmp w2, w1 + beq .L1657 +.L1674: + add x20, x20, :lo12:.LANCHOR0 + ldr x0, [x20, 3976] + str wzr, [x20, 3972] + bl kfree + ldr x0, [x20, 3984] + bl kfree +.L1656: + mov x3, x28 + mov w2, w27 + mov w1, w24 + mov w0, 0 + bl FtlWrite + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 224 + ret +.L1657: + ldrh w19, [x0, 14] + mov w2, 65535 + ldrh w22, [x0, 10] + mov x0, 262140 + mov w4, 4097 + add x3, x26, x0 + mov w0, 0 +.L1661: + ldr w1, [x3] + cbnz w1, .L1658 + ldr w1, [x26, w0, uxtw 2] + add w0, w0, 1 + str w1, [x3], -4 + cmp w0, w4 + sub w2, w2, #1 + csel w0, w0, wzr, cc + cmp w2, 4096 + bne .L1661 + mov w25, 512 + b .L1660 +.L1658: + add w25, w2, 127 + adrp x0, .LC115 + lsr w25, w25, 7 + add x0, x0, :lo12:.LC115 + mov w3, w25 + bl sftl_printk +.L1660: + and w19, w19, 255 + add x21, x20, :lo12:.LANCHOR0 + mul w22, w22, w19 + mov w19, 0 + and w22, w22, 65535 + sub w23, w22, #1 + add w23, w23, w25 + udiv w23, w23, w22 + mul w0, w22, w23 + str w23, [x29, 140] + stp wzr, w0, [x29, 152] + lsl w0, w25, 7 + str w0, [x29, 136] + b .L1673 +.L1681: + str w0, [x29, 140] +.L1673: + ldr x0, [x21, 3984] + mov x2, 512 + mov w1, 0 + bl memset + ldrh w3, [x21, 14] + add x4, x21, 3368 + ldrh w2, [x21, 10] + and w0, w3, 255 + ldr x5, [x21, 3376] + str x4, [x29, 112] + udiv w1, w19, w3 + str w3, [x29, 120] + mul w2, w0, w2 + str w0, [x29, 128] + str w0, [x29, 144] + mov w0, 0 + and w2, w2, 65535 + str w2, [x29, 108] + blr x5 + ldr w2, [x29, 108] + ldr w0, [x29, 156] + ldr w3, [x29, 120] + cmp w0, w2 + ldr x4, [x29, 112] + bls .L1662 + add w1, w2, w19 + ldr x4, [x4, 8] + str w2, [x29, 120] + mov w0, 0 + udiv w1, w1, w3 + blr x4 + ldr w2, [x29, 120] +.L1662: + udiv w5, w19, w2 + mov w4, 0 + mov w7, 61424 + msub w5, w5, w2, w19 + sub w6, w19, w5 +.L1663: + ldr w0, [x29, 156] + cmp w0, w4 + bhi .L1664 + ldrh w5, [x21, 14] + mov w9, 0 + ldrh w0, [x21, 10] + and w4, w5, 255 + ldr x6, [x21, 3984] + mov w5, w4 + mul w0, w4, w0 + and w0, w0, 65535 + udiv w7, w19, w0 + msub w7, w7, w0, w19 + and w1, w7, 65535 + sub w8, w19, w7 + sdiv w0, w1, w4 + msub w0, w0, w4, w1 + and w0, w0, 65535 +.L1665: + cmp w9, w25 + bcs .L1669 + add w1, w7, w9 + sub w10, w5, w0 + add w0, w0, w8 + ldr x11, [x21, 3392] + and w10, w10, 65535 + ubfiz x2, x9, 9, 16 + udiv w1, w1, w4 + add x2, x6, x2 + stp w5, w10, [x29, 100] + add x3, x29, 160 + stp w9, w7, [x29, 108] + str w8, [x29, 120] + and w1, w1, 65535 + str x6, [x29, 128] + str w4, [x29, 144] + madd w1, w1, w4, w0 + mov w0, 0 + udiv w1, w1, w4 + blr x11 + cmn w0, #1 + ldp w5, w10, [x29, 100] + ldp w9, w7, [x29, 108] + ldr w8, [x29, 120] + ldr w4, [x29, 144] + ldr x6, [x29, 128] + bne .L1666 +.L1669: + ldr x0, [x21, 3984] + mov x2, x26 + mov w4, 0 + mov x1, x0 +.L1667: + mov x5, x1 + mov x3, x2 + add x1, x1, 4 + add x2, x2, 4 + ldr w6, [x3] + ldr w7, [x5] + cmp w7, w6 + beq .L1670 + mov x2, 512 + mov w1, 0 + stp x3, x5, [x29, 120] + str w4, [x29, 144] + bl memset + ldp x3, x5, [x29, 120] + mov w1, w19 + ldr w4, [x29, 144] + adrp x0, .LC116 + add x0, x0, :lo12:.LC116 + ldr w2, [x5] + ldr w3, [x3] + bl sftl_printk + ldr x3, [x21, 3376] + add x2, x21, 3368 + mov w1, w19 + mov w0, 0 + str x2, [x29, 144] + blr x3 + cmp w23, 1 + bls .L1680 + ldr x2, [x29, 144] + add w1, w22, w19 + mov w0, 0 + ldr x2, [x2, 8] + blr x2 +.L1680: + ldr w1, [x29, 156] + ldr w0, [x29, 140] + add w19, w19, w1 + ldr w1, [x29, 140] + add w0, w23, w0 + cmp w1, 15 + bls .L1681 + b .L1674 +.L1664: + ldr w1, [x29, 144] + add w0, w5, w4 + ldr x8, [x21, 3384] + ubfiz x2, x4, 9, 16 + stp w5, w7, [x29, 104] + add x3, x29, 160 + str w4, [x29, 112] + add x2, x26, x2 + udiv w0, w0, w1 + str w6, [x29, 120] + and w0, w0, 65535 + mul w1, w0, w1 + stp w1, w7, [x29, 160] + ldr w1, [x29, 144] + udiv w1, w6, w1 + add w1, w1, w0 + mov w0, 0 + blr x8 + ldr w4, [x29, 112] + ldr w0, [x29, 128] + ldp w5, w7, [x29, 104] + add w4, w0, w4 + ldr w6, [x29, 120] + and w4, w4, 65535 + b .L1663 +.L1666: + add w9, w10, w9 + mov w0, 0 + and w9, w9, 65535 + b .L1665 +.L1670: + ldr w3, [x29, 136] + add w4, w4, 1 + cmp w4, w3 + bne .L1667 + ldr w0, [x29, 152] + add w0, w0, 1 + str w0, [x29, 152] + cmp w0, 5 + bls .L1680 + b .L1674 +.L1655: + cmp w0, 64 + bne .L1675 + add x22, x20, :lo12:.LANCHOR0 + mov w0, 262144 + bl ftl_malloc + str x0, [x22, 3976] + mov w0, 262144 + bl ftl_malloc + mov x1, x0 + ldr x0, [x22, 3976] + str x1, [x22, 3984] + cbz x0, .L1676 + cbz x1, .L1676 + mov w1, 1 + mov w2, 262144 + str w1, [x22, 3972] + mov w1, 0 + bl ftl_memset +.L1675: + add x20, x20, :lo12:.LANCHOR0 + cmp w24, 63 + ldr x0, [x20, 3976] + bhi .L1677 + mov w1, 64 + sub w1, w1, w24 + sub w2, w27, w1 + ubfiz x1, x1, 9, 25 + add x1, x28, x1 +.L1678: + cmp w21, 576 + bls .L1679 + sub w2, w2, w19 + sub w2, w2, #447 +.L1679: + lsl w2, w2, 9 + bl ftl_memcpy + b .L1656 +.L1676: + adrp x1, .LANCHOR1 + add x1, x1, :lo12:.LANCHOR1 + add x1, x1, 728 + adrp x0, .LC117 + add x0, x0, :lo12:.LC117 + bl sftl_printk + b .L1675 +.L1677: + lsl w1, w24, 7 + mov w2, w27 + sub w1, w1, #8192 + add x0, x0, x1, lsl 2 + mov x1, x28 + b .L1678 + .size sftl_write, .-sftl_write + .align 2 + .global FtlMakeBbt + .type FtlMakeBbt, %function +FtlMakeBbt: + stp x29, x30, [sp, -96]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x19, .LANCHOR0 + stp x25, x26, [sp, 64] + stp x21, x22, [sp, 32] + mov x21, x19 + stp x23, x24, [sp, 48] + mov w24, 0 + stp x27, x28, [sp, 80] + bl FtlBbtMemInit + bl FtlLoadFactoryBbt + mov w28, -3872 + add x0, x19, :lo12:.LANCHOR0 + add x26, x0, 192 + add x25, x0, 172 + mov x19, x0 + add x20, x0, 3712 +.L1698: + ldrh w0, [x19, 58] + cmp w24, w0 + bcc .L1704 + add x20, x21, :lo12:.LANCHOR0 + mov w19, 0 +.L1705: + ldrh w0, [x20, 118] + cmp w0, w19 + bhi .L1706 + add x20, x20, 160 + ldrh w19, [x20, 12] + mov w22, 65535 + sub w19, w19, #1 + and w19, w19, 65535 +.L1707: + ldrh w0, [x20, 12] + sub w0, w0, #48 + cmp w19, w0 + ble .L1711 + mov w0, w19 + bl FtlBbmIsBadBlock + cmp w0, 1 + beq .L1708 + mov w0, w19 + bl FlashTestBlk + cbz w0, .L1709 + mov w0, w19 + bl FtlBbmMapBadBlock +.L1708: + sub w19, w19, #1 + and w19, w19, 65535 + b .L1707 +.L1704: + ldr x0, [x19, 3448] + mov w2, 65535 + ldr x27, [x19, 3512] + ldrh w1, [x25] + stp x0, x27, [x20, 8] + cmp w1, w2 + beq .L1699 + ldrh w23, [x19, 102] + mov w2, 1 + madd w23, w23, w24, w1 + mov w1, w2 + lsl w0, w23, 10 + str w0, [x20, 4] + mov x0, x20 + bl FlashReadPages + ldr x1, [x20, 8] + ldr x0, [x26] + ldrh w2, [x19, 102] + add w2, w2, 7 + lsr w2, w2, 3 + bl ftl_memcpy +.L1700: + mov w0, w23 + add w24, w24, 1 + bl FtlBbmMapBadBlock + add x26, x26, 8 + add x25, x25, 2 + b .L1698 +.L1699: + mov w1, w24 + bl FlashGetBadBlockList + ldr x0, [x20, 8] + ldr x1, [x26] + bl FtlBbt2Bitmap + ldrh w22, [x19, 102] +.L1702: + sub w22, w22, #1 + and w22, w22, 65535 +.L1701: + ldrh w0, [x19, 102] + madd w0, w24, w0, w22 + bl FtlBbmIsBadBlock + cmp w0, 1 + beq .L1702 + ldr x0, [x19, 3512] + mov w2, 16 + strh w22, [x25] + mov w1, 0 + bl ftl_memset + ldr x0, [x19, 3448] + mov w2, 4096 + mov w1, 0 + bl ftl_memset + strh w28, [x27] + str wzr, [x27, 4] + ldrh w23, [x19, 102] + ldrh w0, [x25] + strh w0, [x27, 2] + ldrh w2, [x19, 3624] + ldrh w0, [x25] + ldr x1, [x26] + lsl w2, w2, 2 + madd w23, w23, w24, w0 + lsl w0, w23, 10 + str w0, [x20, 4] + ldr x0, [x20, 8] + bl ftl_memcpy + mov w2, 1 + mov x0, x20 + mov w1, w2 + bl FlashEraseBlocks + mov w3, 1 + mov x0, x20 + mov w2, w3 + mov w1, w3 + bl FlashProgPages + ldr w0, [x20] + cmn w0, #1 + bne .L1700 + mov w0, w23 + bl FtlBbmMapBadBlock + b .L1701 +.L1706: + mov w0, w19 + add w19, w19, 1 + bl FtlBbmMapBadBlock + and w19, w19, 65535 + b .L1705 +.L1709: + ldrh w0, [x20] + cmp w0, w22 + bne .L1710 + strh w19, [x20] + b .L1708 +.L1710: + strh w19, [x20, 4] +.L1711: + add x21, x21, :lo12:.LANCHOR0 + mov w2, 2 + ldr x1, [x21, 3400] + ldrh w0, [x21, 160] + str wzr, [x21, 168] + strh wzr, [x21, 162] + lsl w0, w0, 10 + str w0, [x1, 4] + ldr x0, [x21, 3400] + ldrh w1, [x21, 164] + lsl w1, w1, 10 + str w1, [x0, 36] + mov w1, 1 + bl FlashEraseBlocks + ldrh w0, [x21, 160] + bl FtlBbmMapBadBlock + ldrh w0, [x21, 164] + bl FtlBbmMapBadBlock + bl FtlBbmTblFlush + strh wzr, [x21, 162] + ldr w0, [x21, 168] + ldrh w1, [x21, 164] + add w0, w0, 1 + str w0, [x21, 168] + ldrh w0, [x21, 160] + strh w0, [x21, 164] + strh w1, [x21, 160] + bl FtlBbmTblFlush + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x23, x24, [sp, 48] + ldp x25, x26, [sp, 64] + ldp x27, x28, [sp, 80] + ldp x29, x30, [sp], 96 + ret + .size FtlMakeBbt, .-FtlMakeBbt + .align 2 + .global ftl_low_format + .type ftl_low_format, %function +ftl_low_format: + stp x29, x30, [sp, -48]! + add x29, sp, 0 + stp x19, x20, [sp, 16] + adrp x20, .LANCHOR0 + add x0, x20, :lo12:.LANCHOR0 + stp x21, x22, [sp, 32] + str wzr, [x0, 2620] + str wzr, [x0, 2624] + ldrh w0, [x0, 40] + bl FtlFreeSysBlkQueueInit + bl FtlLoadBbt + cbz w0, .L1718 + bl FtlMakeBbt +.L1718: + mov w4, 23752 + add x1, x20, :lo12:.LANCHOR0 + mov w0, 0 + movk w4, 0xa0f, lsl 16 +.L1719: + ldrh w2, [x1, 62] + cmp w0, w2, lsl 7 + blt .L1720 + ldrh w21, [x1, 44] + add x22, x20, :lo12:.LANCHOR0 + mov w19, 0 +.L1721: + ldrh w0, [x22, 46] + cmp w0, w21 + bhi .L1722 + ldrh w0, [x22, 36] + sub w1, w19, #3 + cmp w1, w0, lsl 1 + bge .L1723 +.L1727: + add x19, x20, :lo12:.LANCHOR0 + mov w21, 0 + mov w22, 0 +.L1724: + ldrh w0, [x19, 44] + cmp w0, w22 + bhi .L1728 + ldrh w2, [x19, 36] + ldr w1, [x19, 48] + ldrh w0, [x19, 46] + str w0, [x19, 3420] + udiv w4, w1, w2 + ubfx x3, x4, 5, 16 + str w4, [x19, 2584] + add w0, w3, 36 + strh w0, [x19, 2652] + mov w0, 24 + mul w0, w2, w0 + cmp w21, w0 + ble .L1729 + sub w1, w1, w21 + udiv w1, w1, w2 + str w1, [x19, 2584] + lsr w1, w1, 5 + add w1, w1, 24 + strh w1, [x19, 2652] +.L1729: + add x0, x20, :lo12:.LANCHOR0 + ldrh w1, [x0, 98] + cbz w1, .L1731 + ldrh w5, [x0, 2652] + add w5, w5, w1, lsr 1 + strh w5, [x0, 2652] + mul w5, w1, w2 + cmp w21, w5 + bge .L1731 + add w1, w1, 32 + str w4, [x0, 2584] + add w1, w3, w1 + strh w1, [x0, 2652] +.L1731: + add x19, x20, :lo12:.LANCHOR0 + mov w22, -1 + add x21, x19, 2424 + ldrh w1, [x19, 2652] + ldr w0, [x19, 2584] + sub w0, w0, w1 + ldrh w1, [x19, 106] + mul w0, w0, w2 + str w0, [x19, 3744] + mul w0, w1, w0 + ldrh w1, [x19, 62] + str w0, [x19, 2584] + mul w0, w1, w0 + str w0, [x19, 144] + bl FtlBbmTblFlush + ldr x0, [x19, 2376] + mov w1, 0 + ldrh w2, [x19, 46] + lsl w2, w2, 1 + bl ftl_memset + mov w0, 1 + strb w0, [x21, 8] + ldr x0, [x19, 24] + mov w1, 255 + ldrh w2, [x19, 44] + strh w22, [x19, 2672] + strh wzr, [x19, 2674] + strb wzr, [x19, 2678] + lsr w2, w2, 3 + strb wzr, [x19, 2680] + strh wzr, [x21, 2] + strb wzr, [x21, 6] + strh wzr, [x19, 2424] + str wzr, [x19, 2580] + bl ftl_memset +.L1733: + mov x0, x21 + bl make_superblock + ldrb w1, [x21, 7] + ldrh w0, [x21] + cbnz w1, .L1734 + ldr x1, [x19, 2376] + ubfiz x0, x0, 1, 16 + strh w22, [x1, x0] + ldrh w0, [x21] + add w0, w0, 1 + strh w0, [x21] + b .L1733 +.L1720: + ldr x5, [x1, 3472] + ubfiz x3, x0, 2, 16 + mvn w2, w0 + orr w2, w0, w2, lsl 16 + add w0, w0, 1 + and w0, w0, 65535 + str w2, [x5, x3] + ldr x2, [x1, 3480] + str w4, [x2, x3] + b .L1719 +.L1722: + mov w0, w21 + mov w1, 1 + add w21, w21, 1 + bl FtlLowFormatEraseBlock + add w19, w19, w0 + and w21, w21, 65535 + and w19, w19, 65535 + b .L1721 +.L1723: + udiv w0, w19, w0 + ldr w19, [x22, 136] + add x21, x20, :lo12:.LANCHOR0 + add w0, w0, w19 + bl FtlSysBlkNumInit + ldrh w0, [x22, 40] + bl FtlFreeSysBlkQueueInit + ldrh w19, [x22, 44] +.L1725: + ldrh w0, [x21, 46] + cmp w0, w19 + bls .L1727 + mov w0, w19 + add w19, w19, 1 + mov w1, 1 + and w19, w19, 65535 + bl FtlLowFormatEraseBlock + b .L1725 +.L1728: + mov w0, w22 + mov w1, 0 + add w22, w22, 1 + bl FtlLowFormatEraseBlock + add w21, w21, w0 + and w22, w22, 65535 + and w21, w21, 65535 + b .L1724 +.L1734: + ldr w1, [x19, 2620] + ubfiz x0, x0, 1, 16 + str w1, [x21, 12] + add w1, w1, 1 + str w1, [x19, 2620] + ldr x1, [x19, 2376] + ldrh w2, [x21, 4] + strh w2, [x1, x0] + add x0, x19, 2472 + strh wzr, [x19, 2474] + ldrh w1, [x21] + mov w21, -1 + strb wzr, [x19, 2478] + add w1, w1, 1 + strh w1, [x19, 2472] + mov w1, 1 + strb w1, [x19, 2480] + add x19, x20, :lo12:.LANCHOR0 + mov x20, x0 +.L1735: + mov x0, x20 + bl make_superblock + ldrb w1, [x20, 7] + ldrh w0, [x20] + cbnz w1, .L1736 + ldr x1, [x19, 2376] + ubfiz x0, x0, 1, 16 + strh w21, [x1, x0] + ldrh w0, [x20] + add w0, w0, 1 + strh w0, [x20] + b .L1735 +.L1736: + ldr w1, [x19, 2620] + ubfiz x0, x0, 1, 16 + str w1, [x20, 12] + add w1, w1, 1 + str w1, [x19, 2620] + ldr x1, [x19, 2376] + ldrh w2, [x20, 4] + mov w20, -1 + strh w2, [x1, x0] + strh w20, [x19, 2520] + bl FtlFreeSysBlkQueueOut + strh w0, [x19, 2656] + ldr w0, [x19, 3744] + strh w0, [x19, 2662] + ldr w0, [x19, 2620] + str w0, [x19, 2664] + add w0, w0, 1 + strh wzr, [x19, 2658] + strh w20, [x19, 2660] + str w0, [x19, 2620] + bl FtlVpcTblFlush + bl FtlSysBlkInit + cbnz w0, .L1737 + adrp x0, .LANCHOR2 + mov w1, 1 + str w1, [x0, #:lo12:.LANCHOR2] +.L1737: + mov w0, 0 + ldp x19, x20, [sp, 16] + ldp x21, x22, [sp, 32] + ldp x29, x30, [sp], 48 + ret + .size ftl_low_format, .-ftl_low_format + .align 2 .global ftl_memcmp .type ftl_memcmp, %function ftl_memcmp: @@ -12282,14 +12194,15 @@ ftl_memcmp: .global rk_sftl_vendor_dev_ops_register .type rk_sftl_vendor_dev_ops_register, %function rk_sftl_vendor_dev_ops_register: - adrp x2, .LANCHOR3 - add x2, x2, :lo12:.LANCHOR3 - ldr x3, [x2, 136] - cbnz x3, .L1729 - stp x0, x1, [x2, 136] + adrp x2, .LANCHOR0 + add x2, x2, :lo12:.LANCHOR0 + ldr x3, [x2, 3992] + cbnz x3, .L1746 + str x0, [x2, 3992] mov w0, 0 + str x1, [x2, 4000] ret -.L1729: +.L1746: mov w0, -1 ret .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register @@ -12301,61 +12214,61 @@ rk_sftl_vendor_storage_init: mov w0, 65536 add x29, sp, 0 stp x19, x20, [sp, 16] - adrp x20, .LANCHOR3 + adrp x20, .LANCHOR0 stp x21, x22, [sp, 32] - add x22, x20, :lo12:.LANCHOR3 + add x22, x20, :lo12:.LANCHOR0 stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] bl ftl_malloc - str x0, [x22, 152] - cbz x0, .L1736 + str x0, [x22, 4008] + cbz x0, .L1753 mov w26, 22084 mov w25, 0 mov w24, 0 mov w23, 0 movk w26, 0x524b, lsl 16 -.L1734: - ldr x3, [x22, 136] +.L1751: + ldr x3, [x22, 3992] mov w1, 128 - ldr x2, [x22, 152] + ldr x2, [x22, 4008] lsl w0, w23, 7 blr x3 mov w21, w0 - cbnz w0, .L1732 - ldr x19, [x22, 152] + cbnz w0, .L1749 + ldr x19, [x22, 4008] ldr w0, [x19] cmp w0, w26 - bne .L1733 + bne .L1750 add x0, x19, 61440 ldr w1, [x19, 4] ldr w0, [x0, 4092] cmp w0, w1 - bne .L1733 + bne .L1750 cmp w0, w24 - bls .L1733 + bls .L1750 mov w25, w23 mov w24, w0 -.L1733: +.L1750: add w23, w23, 1 cmp w23, 2 - bne .L1734 - cbz w24, .L1735 - add x0, x20, :lo12:.LANCHOR3 + bne .L1751 + cbz w24, .L1752 + add x0, x20, :lo12:.LANCHOR0 mov x2, x19 mov w1, 128 - ldr x3, [x0, 136] + ldr x3, [x0, 3992] lsl w0, w25, 7 blr x3 mov w21, w0 - cbz w0, .L1730 -.L1732: - add x20, x20, :lo12:.LANCHOR3 + cbz w0, .L1747 +.L1749: + add x20, x20, :lo12:.LANCHOR0 mov w21, -1 - ldr x0, [x20, 152] + ldr x0, [x20, 4008] bl kfree - str xzr, [x20, 152] - b .L1730 -.L1735: + str xzr, [x20, 4008] + b .L1747 +.L1752: mov w1, 0 mov x2, 65536 mov x0, x19 @@ -12368,7 +12281,7 @@ rk_sftl_vendor_storage_init: str w0, [x1, 4092] mov w0, -1032 strh w0, [x19, 14] -.L1730: +.L1747: mov w0, w21 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] @@ -12376,30 +12289,30 @@ rk_sftl_vendor_storage_init: ldp x25, x26, [sp, 64] ldp x29, x30, [sp], 80 ret -.L1736: +.L1753: mov w21, -12 - b .L1730 + b .L1747 .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init .align 2 .global rk_sftl_vendor_read .type rk_sftl_vendor_read, %function rk_sftl_vendor_read: - adrp x3, .LANCHOR3+152 - ldr x4, [x3, #:lo12:.LANCHOR3+152] - cbz x4, .L1744 + adrp x3, .LANCHOR0+4008 + ldr x4, [x3, #:lo12:.LANCHOR0+4008] + cbz x4, .L1761 ldrh w6, [x4, 10] add x5, x4, 16 mov w3, 0 -.L1741: +.L1758: cmp w3, w6 - bcc .L1743 -.L1744: + bcc .L1760 +.L1761: mov w0, -1 ret -.L1743: +.L1760: ldrh w7, [x5], 8 cmp w7, w0 - bne .L1742 + bne .L1759 stp x29, x30, [sp, -32]! add x3, x4, x3, uxtw 3 mov x0, x1 @@ -12417,9 +12330,9 @@ rk_sftl_vendor_read: ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret -.L1742: +.L1759: add w3, w3, 1 - b .L1741 + b .L1758 .size rk_sftl_vendor_read, .-rk_sftl_vendor_read .align 2 .global rk_sftl_vendor_write @@ -12428,14 +12341,14 @@ rk_sftl_vendor_write: stp x29, x30, [sp, -128]! add x29, sp, 0 stp x23, x24, [sp, 48] - adrp x23, .LANCHOR3 - add x3, x23, :lo12:.LANCHOR3 + adrp x23, .LANCHOR0 + add x3, x23, :lo12:.LANCHOR0 stp x19, x20, [sp, 16] stp x21, x22, [sp, 32] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] - ldr x19, [x3, 152] - cbz x19, .L1764 + ldr x19, [x3, 4008] + cbz x19, .L1781 add w21, w2, 63 ldrh w3, [x19, 10] ldrh w24, [x19, 8] @@ -12444,12 +12357,12 @@ rk_sftl_vendor_write: and w21, w21, -64 add x1, x19, 16 mov w20, 0 -.L1751: +.L1768: cmp w20, w3 - bcc .L1759 + bcc .L1776 ldrh w1, [x19, 14] cmp w21, w1 - bhi .L1764 + bhi .L1781 add x3, x19, x3, uxth 3 and w21, w21, 65535 uxtw x2, w28 @@ -12469,11 +12382,11 @@ rk_sftl_vendor_write: ldrh w0, [x19, 10] add w0, w0, 1 strh w0, [x19, 10] - b .L1766 -.L1759: + b .L1783 +.L1776: ldrh w6, [x1], 8 cmp w6, w0 - bne .L1752 + bne .L1769 uxtw x27, w20 add x5, x19, 1024 add x22, x19, x27, lsl 3 @@ -12481,17 +12394,17 @@ rk_sftl_vendor_write: add w25, w25, 63 and w25, w25, -64 cmp w28, w25 - bls .L1753 + bls .L1770 ldrh w0, [x19, 14] cmp w21, w0 - bhi .L1764 + bhi .L1781 add x27, x27, 2 ldrh w22, [x22, 18] add x27, x19, x27, lsl 3 sub w26, w3, #1 -.L1754: +.L1771: cmp w20, w26 - bcc .L1755 + bcc .L1772 add x20, x19, x20, uxtw 3 and w22, w22, 65535 add x0, x5, x22, uxth @@ -12508,16 +12421,16 @@ rk_sftl_vendor_write: sub w21, w0, w21 add w25, w21, w25 strh w25, [x19, 14] -.L1766: +.L1783: ldr w0, [x19, 4] add x1, x19, 61440 - add x23, x23, :lo12:.LANCHOR3 + add x23, x23, :lo12:.LANCHOR0 mov x2, x19 add w0, w0, 1 str w0, [x19, 4] str w0, [x1, 4092] mov w1, 128 - ldr x3, [x23, 144] + ldr x3, [x23, 4000] ldrh w0, [x19, 8] add w0, w0, 1 and w0, w0, 65535 @@ -12527,7 +12440,7 @@ rk_sftl_vendor_write: lsl w0, w24, 7 blr x3 mov w0, 0 -.L1749: +.L1766: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] @@ -12535,7 +12448,7 @@ rk_sftl_vendor_write: ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 128 ret -.L1755: +.L1772: add w20, w20, 1 str x4, [x29, 104] add x0, x19, x20, uxtw 3 @@ -12559,21 +12472,21 @@ rk_sftl_vendor_write: ldr x4, [x29, 104] add w22, w22, w3 ldr x5, [x29, 120] - b .L1754 -.L1753: + b .L1771 +.L1770: ldrh w0, [x22, 18] uxtw x2, w28 mov x1, x4 add x0, x5, x0 bl memcpy strh w28, [x22, 20] - b .L1766 -.L1752: + b .L1783 +.L1769: add w20, w20, 1 - b .L1751 -.L1764: + b .L1768 +.L1781: mov w0, -1 - b .L1749 + b .L1766 .size rk_sftl_vendor_write, .-rk_sftl_vendor_write .align 2 .global rk_sftl_vendor_storage_ioctl @@ -12587,19 +12500,19 @@ rk_sftl_vendor_storage_ioctl: str x21, [sp, 32] mov w21, w1 bl ftl_malloc - cbz x0, .L1781 + cbz x0, .L1798 mov w1, 30209 mov x19, x0 movk w1, 0x4004, lsl 16 cmp w21, w1 - beq .L1770 + beq .L1787 add w1, w1, 1 cmp w21, w1 - beq .L1771 -.L1791: + beq .L1788 +.L1808: mov x20, -14 - b .L1769 -.L1770: + b .L1786 +.L1787: #APP // 21 "./arch/arm64/include/asm/current.h" 1 mrs x21, sp_el0 @@ -12612,34 +12525,34 @@ rk_sftl_vendor_storage_ioctl: adds x1, x1, 8; ccmp x1, x2, #2, cc; cset x3, ls // 0 "" 2 #NO_APP - cbz x3, .L1777 + cbz x3, .L1794 mov x2, 8 mov x1, x20 bl __arch_copy_from_user - cbnz x0, .L1791 + cbnz x0, .L1808 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - beq .L1775 -.L1776: + beq .L1792 +.L1793: mov x20, -1 -.L1769: +.L1786: mov x0, x19 bl kfree -.L1767: +.L1784: mov x0, x20 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret -.L1775: +.L1792: ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_sftl_vendor_read cmn w0, #1 - beq .L1776 + beq .L1793 strh w0, [x19, 6] and x2, x0, 65535 add x2, x2, 8 @@ -12650,14 +12563,14 @@ rk_sftl_vendor_storage_ioctl: adds x0, x0, x2; ccmp x0, x1, #2, cc; cset x3, ls // 0 "" 2 #NO_APP - cbz x3, .L1791 + cbz x3, .L1808 mov x0, x20 mov x1, x19 mov x20, 0 bl __arch_copy_to_user - cbz x0, .L1769 - b .L1791 -.L1771: + cbz x0, .L1786 + b .L1808 +.L1788: #APP // 21 "./arch/arm64/include/asm/current.h" 1 mrs x21, sp_el0 @@ -12670,19 +12583,19 @@ rk_sftl_vendor_storage_ioctl: adds x1, x1, 8; ccmp x1, x2, #2, cc; cset x3, ls // 0 "" 2 #NO_APP - cbz x3, .L1777 + cbz x3, .L1794 mov x2, 8 mov x1, x20 bl __arch_copy_from_user - cbnz x0, .L1791 + cbnz x0, .L1808 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - bne .L1776 + bne .L1793 ldrh w2, [x19, 6] cmp w2, 4087 - bhi .L1776 + bhi .L1793 add w2, w2, 8 mov x0, x20 sxtw x2, w2 @@ -12692,28 +12605,28 @@ rk_sftl_vendor_storage_ioctl: adds x0, x0, x2; ccmp x0, x1, #2, cc; cset x3, ls // 0 "" 2 #NO_APP - cbz x3, .L1779 + cbz x3, .L1796 mov x1, x20 mov x0, x19 bl __arch_copy_from_user - cbnz x0, .L1791 + cbnz x0, .L1808 ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_sftl_vendor_write sxtw x20, w0 - b .L1769 -.L1777: + b .L1786 +.L1794: str xzr, [x19] - b .L1791 -.L1779: + b .L1808 +.L1796: mov w1, 0 mov x0, x19 bl memset - b .L1791 -.L1781: + b .L1808 +.L1798: mov x20, -1 - b .L1767 + b .L1784 .size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl .align 2 .global rk_sftl_vendor_register @@ -12728,7 +12641,6 @@ rk_sftl_vendor_register: ldp x29, x30, [sp], 16 ret .size rk_sftl_vendor_register, .-rk_sftl_vendor_register - .global ftl_temp_buf .global g_nand_ops .global g_nand_phy_info .global gc_ink_free_return_value @@ -12743,6 +12655,9 @@ rk_sftl_vendor_register: .global g_recovery_ppa_tbl .global g_recovery_page_min_ver .global g_recovery_page_num + .global sftl_nand_check_spare_buf + .global sftl_temp_buf + .global sftl_nand_check_buf .global g_cur_erase_blk .global g_gc_skip_write_count .global g_gc_head_data_block_count @@ -12771,8 +12686,6 @@ rk_sftl_vendor_register: .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 @@ -12880,171 +12793,181 @@ rk_sftl_vendor_register: .section .rodata .align 3 .set .LANCHOR1,. + 0 - .type __func__.3844, %object - .size __func__.3844, 17 -__func__.3844: + .type __func__.3845, %object + .size __func__.3845, 17 +__func__.3845: .string "INSERT_DATA_LIST" .zero 7 - .type __func__.3839, %object - .size __func__.3839, 17 -__func__.3839: + .type __func__.3840, %object + .size __func__.3840, 17 +__func__.3840: .string "INSERT_FREE_LIST" .zero 7 - .type __func__.3882, %object - .size __func__.3882, 17 -__func__.3882: + .type __func__.3876, %object + .size __func__.3876, 17 +__func__.3876: .string "List_remove_node" .zero 7 - .type __func__.3914, %object - .size __func__.3914, 22 -__func__.3914: + .type __func__.3908, %object + .size __func__.3908, 22 +__func__.3908: .string "List_update_data_list" .zero 2 - .type __func__.4025, %object - .size __func__.4025, 22 -__func__.4025: + .type __func__.4015, %object + .size __func__.4015, 22 +__func__.4015: .string "select_l2p_ram_region" .zero 2 - .type __func__.4348, %object - .size __func__.4348, 16 -__func__.4348: + .type __func__.4338, %object + .size __func__.4338, 16 +__func__.4338: .string "make_superblock" - .type __func__.4523, %object - .size __func__.4523, 19 -__func__.4523: + .type __func__.4513, %object + .size __func__.4513, 19 +__func__.4513: .string "get_new_active_ppa" .zero 5 - .type __func__.16106, %object - .size __func__.16106, 15 -__func__.16106: - .string "FlashReadPages" - .zero 1 - .type __func__.16123, %object - .size __func__.16123, 15 -__func__.16123: - .string "FlashProgPages" - .zero 1 - .type __func__.3956, %object - .size __func__.3956, 26 -__func__.3956: + .type __func__.16152, %object + .size __func__.16152, 17 +__func__.16152: + .string "FlashEraseBlocks" + .zero 7 + .type __func__.3950, %object + .size __func__.3950, 26 +__func__.3950: .string "ftl_map_blk_alloc_new_blk" .zero 6 - .type __func__.3381, %object - .size __func__.3381, 11 -__func__.3381: + .type __func__.3383, %object + .size __func__.3383, 11 +__func__.3383: .string "FtlMemInit" .zero 5 - .type __func__.3679, %object - .size __func__.3679, 14 -__func__.3679: + .type __func__.3682, %object + .size __func__.3682, 14 +__func__.3682: .string "FtlBbt2Bitmap" .zero 2 - .type __func__.3986, %object - .size __func__.3986, 31 -__func__.3986: - .string "Ftl_write_map_blk_to_last_page" - .zero 1 - .type __func__.4000, %object - .size __func__.4000, 16 -__func__.4000: - .string "FtlMapWritePage" - .type __func__.3923, %object - .size __func__.3923, 16 -__func__.3923: - .string "load_l2p_region" - .type __func__.3971, %object - .size __func__.3971, 15 -__func__.3971: - .string "ftl_map_blk_gc" - .zero 1 - .type __func__.4042, %object - .size __func__.4042, 9 -__func__.4042: - .string "log2phys" - .zero 7 - .type __func__.4257, %object - .size __func__.4257, 16 -__func__.4257: - .string "FtlReUsePrevPpa" - .type __func__.4137, %object - .size __func__.4137, 14 -__func__.4137: - .string "FtlScanSysBlk" - .zero 2 - .type __func__.4369, %object - .size __func__.4369, 18 -__func__.4369: + .type __func__.4359, %object + .size __func__.4359, 18 +__func__.4359: .string "SupperBlkListInit" .zero 6 - .type __func__.4410, %object - .size __func__.4410, 14 -__func__.4410: - .string "ftl_check_vpc" + .type __func__.16111, %object + .size __func__.16111, 15 +__func__.16111: + .string "FlashReadPages" + .zero 1 + .type __func__.4127, %object + .size __func__.4127, 14 +__func__.4127: + .string "FtlScanSysBlk" .zero 2 - .type __func__.4495, %object - .size __func__.4495, 25 -__func__.4495: - .string "allocate_data_superblock" - .zero 7 - .type __func__.4536, %object - .size __func__.4536, 16 -__func__.4536: - .string "update_vpc_list" - .type __func__.4543, %object - .size __func__.4543, 20 -__func__.4543: - .string "decrement_vpc_count" - .zero 4 - .type __func__.4291, %object - .size __func__.4291, 22 -__func__.4291: - .string "FtlRecoverySuperblock" - .zero 2 - .type __func__.3722, %object - .size __func__.3722, 11 -__func__.3722: + .type __func__.3725, %object + .size __func__.3725, 11 +__func__.3725: .string "FtlLoadBbt" .zero 5 - .type __func__.4115, %object - .size __func__.4115, 15 -__func__.4115: - .string "FtlVpcTblFlush" - .zero 1 - .type __func__.4394, %object - .size __func__.4394, 21 -__func__.4394: - .string "FtlVpcCheckAndModify" - .zero 3 - .type __func__.4516, %object - .size __func__.4516, 29 -__func__.4516: - .string "allocate_new_data_superblock" - .zero 3 - .type __func__.3505, %object - .size __func__.3505, 13 -__func__.3505: - .string "FtlProgPages" - .zero 3 - .type __func__.4614, %object - .size __func__.4614, 19 -__func__.4614: - .string "FtlGcFreeTempBlock" - .zero 5 - .type __func__.4720, %object - .size __func__.4720, 23 -__func__.4720: - .string "rk_ftl_garbage_collect" - .zero 1 - .type __func__.3533, %object - .size __func__.3533, 9 -__func__.3533: - .string "FtlWrite" - .zero 7 - .type __func__.4194, %object - .size __func__.4194, 15 -__func__.4194: + .type __func__.4184, %object + .size __func__.4184, 15 +__func__.4184: .string "FtlLoadSysInfo" .zero 1 + .type __func__.16129, %object + .size __func__.16129, 15 +__func__.16129: + .string "FlashProgPages" + .zero 1 + .type __func__.3976, %object + .size __func__.3976, 31 +__func__.3976: + .string "Ftl_write_map_blk_to_last_page" + .zero 1 + .type __func__.3990, %object + .size __func__.3990, 16 +__func__.3990: + .string "FtlMapWritePage" + .type __func__.3917, %object + .size __func__.3917, 16 +__func__.3917: + .string "load_l2p_region" + .type __func__.3961, %object + .size __func__.3961, 15 +__func__.3961: + .string "ftl_map_blk_gc" + .zero 1 + .type __func__.4032, %object + .size __func__.4032, 9 +__func__.4032: + .string "log2phys" + .zero 7 + .type __func__.4247, %object + .size __func__.4247, 16 +__func__.4247: + .string "FtlReUsePrevPpa" + .type __func__.4400, %object + .size __func__.4400, 14 +__func__.4400: + .string "ftl_check_vpc" + .zero 2 + .type __func__.4485, %object + .size __func__.4485, 25 +__func__.4485: + .string "allocate_data_superblock" + .zero 7 + .type __func__.4526, %object + .size __func__.4526, 16 +__func__.4526: + .string "update_vpc_list" + .type __func__.4533, %object + .size __func__.4533, 20 +__func__.4533: + .string "decrement_vpc_count" + .zero 4 + .type __func__.4281, %object + .size __func__.4281, 22 +__func__.4281: + .string "FtlRecoverySuperblock" + .zero 2 + .type __func__.4105, %object + .size __func__.4105, 15 +__func__.4105: + .string "FtlVpcTblFlush" + .zero 1 + .type __func__.4384, %object + .size __func__.4384, 21 +__func__.4384: + .string "FtlVpcCheckAndModify" + .zero 3 + .type __func__.4506, %object + .size __func__.4506, 29 +__func__.4506: + .string "allocate_new_data_superblock" + .zero 3 + .type __func__.3507, %object + .size __func__.3507, 13 +__func__.3507: + .string "FtlProgPages" + .zero 3 + .type __func__.4603, %object + .size __func__.4603, 19 +__func__.4603: + .string "FtlGcFreeTempBlock" + .zero 5 + .type __func__.4714, %object + .size __func__.4714, 23 +__func__.4714: + .string "rk_ftl_garbage_collect" + .zero 1 + .type __func__.3535, %object + .size __func__.3535, 9 +__func__.3535: + .string "FtlWrite" + .zero 7 + .type __func__.3641, %object + .size __func__.3641, 14 +__func__.3641: + .string "FtlWriteToIDB" + .zero 2 .type rk_sftl_vendor_storage_fops, %object .size rk_sftl_vendor_storage_fops, 216 rk_sftl_vendor_storage_fops: @@ -13074,13 +12997,12 @@ power_up_flag: rkflash_vender_storage_dev: .word 255 .zero 4 - .xword .LC116 + .xword .LC118 .xword rk_sftl_vendor_storage_fops .zero 56 .bss .align 3 .set .LANCHOR0,. + 0 - .set .LANCHOR3,. + 4352 .type g_nand_phy_info, %object .size g_nand_phy_info, 24 g_nand_phy_info: @@ -13463,20 +13385,12 @@ g_gc_next_blk: .type g_gc_next_blk_1, %object .size g_gc_next_blk_1, 2 g_gc_next_blk_1: - .zero 2 - .type g_gc_next_blk_2, %object - .size g_gc_next_blk_2, 2 -g_gc_next_blk_2: - .zero 2 - .type g_gc_next_blk_3, %object - .size g_gc_next_blk_3, 2 -g_gc_next_blk_3: .zero 2 .type g_gc_bad_block_temp_num, %object .size g_gc_bad_block_temp_num, 2 g_gc_bad_block_temp_num: .zero 2 - .zero 6 + .zero 2 .type g_gc_bad_block_temp_tbl, %object .size g_gc_bad_block_temp_tbl, 34 g_gc_bad_block_temp_tbl: @@ -13490,42 +13404,9 @@ g_gc_bad_block_gc_index: .size g_nand_ops, 32 g_nand_ops: .zero 32 - .type req_sys, %object - .size req_sys, 32 -req_sys: - .zero 32 - .type p_sys_data_buf, %object - .size p_sys_data_buf, 8 -p_sys_data_buf: - .zero 8 - .type p_sys_spare_buf, %object - .size p_sys_spare_buf, 8 -p_sys_spare_buf: - .zero 8 - .type check_spare_buf, %object - .size check_spare_buf, 512 -check_spare_buf: - .zero 512 .type req_erase, %object .size req_erase, 8 req_erase: - .zero 8 - .type g_cur_erase_blk, %object - .size g_cur_erase_blk, 4 -g_cur_erase_blk: - .zero 4 - .zero 4 - .type p_io_data_buf_1, %object - .size p_io_data_buf_1, 8 -p_io_data_buf_1: - .zero 8 - .type p_io_spare_buf, %object - .size p_io_spare_buf, 8 -p_io_spare_buf: - .zero 8 - .type p_io_data_buf_0, %object - .size p_io_data_buf_0, 8 -p_io_data_buf_0: .zero 8 .type g_in_gc_progress, %object .size g_in_gc_progress, 4 @@ -13539,6 +13420,9 @@ g_gc_head_data_block: .size g_gc_head_data_block_count, 4 g_gc_head_data_block_count: .zero 4 + .type g_cur_erase_blk, %object + .size g_cur_erase_blk, 4 +g_cur_erase_blk: .zero 4 .type req_read, %object .size req_read, 8 @@ -13551,6 +13435,10 @@ req_gc_dst: .type req_prgm, %object .size req_prgm, 8 req_prgm: + .zero 8 + .type p_sys_data_buf, %object + .size p_sys_data_buf, 8 +p_sys_data_buf: .zero 8 .type p_sys_data_buf_1, %object .size p_sys_data_buf_1, 8 @@ -13559,6 +13447,34 @@ p_sys_data_buf_1: .type p_vendor_data_buf, %object .size p_vendor_data_buf, 8 p_vendor_data_buf: + .zero 8 + .type p_io_data_buf_0, %object + .size p_io_data_buf_0, 8 +p_io_data_buf_0: + .zero 8 + .type p_io_data_buf_1, %object + .size p_io_data_buf_1, 8 +p_io_data_buf_1: + .zero 8 + .type sftl_nand_check_buf, %object + .size sftl_nand_check_buf, 8 +sftl_nand_check_buf: + .zero 8 + .type sftl_temp_buf, %object + .size sftl_temp_buf, 8 +sftl_temp_buf: + .zero 8 + .type sftl_nand_check_spare_buf, %object + .size sftl_nand_check_spare_buf, 8 +sftl_nand_check_spare_buf: + .zero 8 + .type p_sys_spare_buf, %object + .size p_sys_spare_buf, 8 +p_sys_spare_buf: + .zero 8 + .type p_io_spare_buf, %object + .size p_io_spare_buf, 8 +p_io_spare_buf: .zero 8 .type g_ect_tbl_info_size, %object .size g_ect_tbl_info_size, 2 @@ -13622,15 +13538,9 @@ gL2pMapInfo: .size g_totle_map_block, 2 g_totle_map_block: .zero 2 - .zero 6 - .type gVendorBlkInfo, %object - .size gVendorBlkInfo, 64 -gVendorBlkInfo: - .zero 64 .type g_tmp_data_superblock_id, %object .size g_tmp_data_superblock_id, 2 g_tmp_data_superblock_id: - .zero 2 .zero 2 .type g_totle_swl_count, %object .size g_totle_swl_count, 4 @@ -13644,6 +13554,19 @@ ftl_gc_temp_power_lost_recovery_flag: .size g_recovery_page_min_ver, 4 g_recovery_page_min_ver: .zero 4 + .type req_sys, %object + .size req_sys, 32 +req_sys: + .zero 32 + .type g_MaxLbn, %object + .size g_MaxLbn, 4 +g_MaxLbn: + .zero 4 + .zero 4 + .type gVendorBlkInfo, %object + .size gVendorBlkInfo, 64 +gVendorBlkInfo: + .zero 64 .type g_power_lost_recovery_flag, %object .size g_power_lost_recovery_flag, 2 g_power_lost_recovery_flag: @@ -13687,11 +13610,14 @@ g_ftl_nand_free_count: .size idb_need_write_back, 4 idb_need_write_back: .zero 4 - .type g_MaxLbn, %object - .size g_MaxLbn, 4 -g_MaxLbn: - .zero 4 - .zero 4 + .type idb_buf, %object + .size idb_buf, 8 +idb_buf: + .zero 8 + .type gp_flash_check_buf, %object + .size gp_flash_check_buf, 8 +gp_flash_check_buf: + .zero 8 .type _flash_read, %object .size _flash_read, 8 _flash_read: @@ -13704,26 +13630,10 @@ _flash_write: .size g_vendor, 8 g_vendor: .zero 8 - .type ftl_temp_buf, %object - .size ftl_temp_buf, 4096 -ftl_temp_buf: - .zero 4096 - .type check_buf, %object - .size check_buf, 4096 -check_buf: - .zero 4096 .type check_vpc_table, %object .size check_vpc_table, 16384 check_vpc_table: .zero 16384 - .type gp_flash_check_buf, %object - .size gp_flash_check_buf, 262144 -gp_flash_check_buf: - .zero 262144 - .type idb_buf, %object - .size idb_buf, 262144 -idb_buf: - .zero 262144 .type gp_last_act_superblock, %object .size gp_last_act_superblock, 8 gp_last_act_superblock: @@ -13870,7 +13780,7 @@ gp_last_act_superblock: .LC69: .string "free %d. [0x%x] 0x%x 0x%x\n" .LC70: - .string "SFTL version: 5.0.45 20180810" + .string "SFTL version: 5.0.48 20180930" .LC71: .string "%s\n" .LC72: @@ -13890,76 +13800,80 @@ gp_last_act_superblock: .LC79: .string "\n" .LC80: - .string "prog read error: = %x\n" + .string "%s: addr: %x is in id block!!!!!!!!!!\n" .LC81: - .string "prog read s error: = %x %x %x\n" + .string "not free: w: d:" .LC82: - .string "prog read d error: = %x %x %x\n" + .string "not free: w: s:" .LC83: - .string "FtlFreeSysBlkQueueOut free count = %d\n" -.LC84: .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" -.LC85: +.LC84: .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" -.LC86: +.LC85: .string "%s error allocating memory. return -1\n" +.LC86: + .string "prog read error: = %x\n" .LC87: - .string "FtlMapWritePage error = %x \n" + .string "prog read s error: = %x %x %x\n" .LC88: - .string "FtlMapWritePage error = %x error count = %d\n" + .string "prog read d error: = %x %x %x\n" .LC89: - .string "load_l2p_region refresh = %x phyAddr = %x\n" + .string "FtlMapWritePage error = %x \n" .LC90: - .string "region_id = %x phyAddr = %x\n" + .string "FtlMapWritePage error = %x error count = %d\n" .LC91: - .string "spare:" + .string "region_id = %x phyAddr = %x\n" .LC92: - .string "map_ppn:" + .string "spare:" .LC93: - .string "ftl_map_blk_gc blk info: %x %x %x\n" + .string "map_ppn:" .LC94: - .string "ftl_scan_all_data = %x\n" + .string "load_l2p_region refresh = %x phyAddr = %x\n" .LC95: - .string "scan lpa = %x ppa= %x\n" -.LC96: - .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" -.LC97: .string "...%s enter...\n" -.LC98: +.LC96: .string "FtlCheckVpc2 %x = %x %x\n" -.LC99: +.LC97: .string "free blk vpc error %x = %x %x\n" +.LC98: + .string "ftl_scan_all_data = %x\n" +.LC99: + .string "scan lpa = %x ppa= %x\n" .LC100: - .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" + .string "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" .LC101: - .string "FtlBbmTblFlush error:%x\n" + .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" .LC102: - .string "FtlBbmTblFlush error = %x error count = %d\n" + .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" .LC103: - .string "FtlGcFreeBadSuperBlk 0x%x\n" + .string "FtlBbmTblFlush error:%x\n" .LC104: - .string "decrement_vpc_count %x = %d\n" + .string "FtlBbmTblFlush error = %x error count = %d\n" .LC105: - .string "decrement_vpc_count %x = %d in free list\n" + .string "FtlGcFreeBadSuperBlk 0x%x\n" .LC106: - .string "spuer block %x vpn is 0\n " + .string "decrement_vpc_count %x = %d\n" .LC107: - .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" + .string "spuer block %x vpn is 0\n " .LC108: - .string "no ect" + .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" .LC109: - .string "FtlVpcTblFlush error = %x error count = %d\n" + .string "no ect" .LC110: - .string "FtlCheckVpc %x = %x %x\n" + .string "FtlVpcTblFlush error = %x error count = %d\n" .LC111: - .string "Ftlwrite decrement_vpc_count %x = %d\n" + .string "FtlCheckVpc %x = %x %x\n" .LC112: - .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" + .string "Ftlwrite decrement_vpc_count %x = %d\n" .LC113: - .string "g_gc_superblock_free %x %x %x %x %x\n" + .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" .LC114: .string "FtlWrite: lpa error:%x %x\n" .LC115: - .string "write_idblock fail! %x %x %x %x\n" + .string "write_idblock fix data %x %x %x\n" .LC116: + .string "write_idblock fail! %x %x %x %x\n" +.LC117: + .string "%s idb buffer alloc fail\n" +.LC118: .string "vendor_storage" diff --git a/drivers/rkflash/rkflash_api.h b/drivers/rkflash/rkflash_api.h index 35722fc0ab13..f1bdb7b33f1e 100644 --- a/drivers/rkflash/rkflash_api.h +++ b/drivers/rkflash/rkflash_api.h @@ -16,6 +16,7 @@ unsigned int sftl_flash_get_capacity(void); void sftl_flash_deinit(void); int sftl_flash_resume(void __iomem *reg_addr); void sftl_flash_clean_irq(void); +int sftl_flash_gc(void); #endif #ifdef CONFIG_RK_SFC_NOR @@ -28,6 +29,7 @@ void snor_deinit(void); int snor_resume(void __iomem *reg_addr); int snor_vendor_read(unsigned int sec, unsigned int n_sec, void *p_data); int snor_vendor_write(unsigned int sec, unsigned int n_sec, void *p_data); +int snor_gc(void); #endif #ifdef CONFIG_RK_SFC_NAND @@ -40,6 +42,7 @@ unsigned int snand_get_capacity(void); void snand_deinit(void); int snand_resume(void __iomem *reg_addr); void sfc_clean_irq(void); +int snand_gc(void); #endif #endif diff --git a/drivers/rkflash/rkflash_blk.c b/drivers/rkflash/rkflash_blk.c index 4baae8e78e56..72caaf94e89c 100644 --- a/drivers/rkflash/rkflash_blk.c +++ b/drivers/rkflash/rkflash_blk.c @@ -53,8 +53,9 @@ static struct flash_boot_ops nandc_nand_ops = { sftl_flash_resume, sftl_flash_vendor_read, sftl_flash_vendor_write, + sftl_flash_gc, #else - -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, #endif }; @@ -69,8 +70,9 @@ static struct flash_boot_ops sfc_nor_ops = { snor_resume, snor_vendor_read, snor_vendor_write, + snor_gc, #else - -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, #endif }; @@ -85,8 +87,9 @@ static struct flash_boot_ops sfc_nand_ops = { snand_resume, snand_vendor_read, snand_vendor_write, + snand_gc, #else - -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, #endif }; @@ -149,16 +152,31 @@ int rkflash_vendor_write(u32 sec, u32 n_sec, void *p_data) return ret; } +static int rkflash_flash_gc(void) +{ + int ret; + + if (g_boot_ops[g_flash_type]->gc) { + mutex_lock(&g_flash_ops_mutex); + ret = g_boot_ops[g_flash_type]->gc(); + mutex_unlock(&g_flash_ops_mutex); + } else { + ret = -EPERM; + } + + return ret; +} + static unsigned int rk_partition_init(struct flash_part *part) { int i, part_num = 0; - int desity; + u32 desity; struct STRUCT_PART_INFO *g_part; /* size 2KB */ g_part = kmalloc(sizeof(*g_part), GFP_KERNEL | GFP_DMA); if (!g_part) return 0; - + mutex_lock(&g_flash_ops_mutex); if (g_boot_ops[g_flash_type]->read(0, 4, g_part) == 0) { if (g_part->hdr.ui_fw_tag == RK_PARTITION_TAG) { part_num = g_part->hdr.ui_part_entry_count; @@ -172,9 +190,14 @@ static unsigned int rk_partition_init(struct flash_part *part) part[i].type = 0; if (part[i].size == UINT_MAX) part[i].size = desity - part[i].offset; + if (part[i].offset + part[i].size > desity) { + part[i].size = desity - part[i].offset; + break; + } } } } + mutex_unlock(&g_flash_ops_mutex); kfree(g_part); memset(&fw_header_p, 0x0, sizeof(fw_header_p)); @@ -325,6 +348,7 @@ static int rkflash_blktrans_thread(void *arg) set_current_state(TASK_INTERRUPTIBLE); spin_unlock_irq(rq->queue_lock); rkflash_req_jiffies = HZ / 10; + rkflash_flash_gc(); wait_event_timeout(blk_ops->thread_wq, blk_ops->quit || rknand_req_do, rkflash_req_jiffies); diff --git a/drivers/rkflash/rkflash_blk.h b/drivers/rkflash/rkflash_blk.h index 90de34f7581e..e3dc37efdcc5 100644 --- a/drivers/rkflash/rkflash_blk.h +++ b/drivers/rkflash/rkflash_blk.h @@ -25,6 +25,7 @@ enum flash_type { struct flash_boot_ops { int id; + int (*init)(void __iomem *reg_addr); int (*read)(u32 sec, u32 n_sec, void *p_data); int (*write)(u32 sec, u32 n_sec, void *p_data); @@ -33,6 +34,7 @@ struct flash_boot_ops { int (*resume)(void __iomem *reg_addr); int (*vendor_read)(u32 sec, u32 n_sec, void *p_data); int (*vendor_write)(u32 sec, u32 n_sec, void *p_data); + int (*gc)(void); }; struct flash_part { diff --git a/drivers/rkflash/sfc_nand_boot.c b/drivers/rkflash/sfc_nand_boot.c index b981ded2299f..1f0ecea4ef90 100644 --- a/drivers/rkflash/sfc_nand_boot.c +++ b/drivers/rkflash/sfc_nand_boot.c @@ -48,6 +48,11 @@ int snand_vendor_write(u32 sec, u32 n_sec, void *p_data) return sftl_vendor_write(sec, n_sec, p_data); } +int snand_gc(void) +{ + return sftl_gc(); +} + void snand_deinit(void) { sftl_deinit(); diff --git a/drivers/rkflash/sfc_nor_boot.c b/drivers/rkflash/sfc_nor_boot.c index 2bc2da22ad92..519ddc9fb625 100644 --- a/drivers/rkflash/sfc_nor_boot.c +++ b/drivers/rkflash/sfc_nor_boot.c @@ -94,6 +94,11 @@ int snor_vendor_write(u32 sec, u32 n_sec, void *p_data) return (u32)ret == n_sec ? 0 : ret; } +int snor_gc(void) +{ + return 0; +} + unsigned int snor_capacity(void) { return snor_get_capacity(&sfnor_dev);