1/* 2 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd 3 * 4 * SPDX-License-Identifier: GPL-2.0 5 * date: 2018-08-02 6 */ 7 .arch armv7-a 8 .eabi_attribute 20, 1 9 .eabi_attribute 21, 1 10 .eabi_attribute 23, 3 11 .eabi_attribute 24, 1 12 .eabi_attribute 25, 1 13 .eabi_attribute 26, 2 14 .eabi_attribute 30, 4 15 .eabi_attribute 34, 0 16 .eabi_attribute 18, 2 17 .file "rk_sftl.c" 18 .global __aeabi_uidiv 19 .section .text.l2p_addr_tran.isra.0,"ax",%progbits 20 .align 1 21 .syntax unified 22 .thumb 23 .thumb_func 24 .fpu softvfp 25 .type l2p_addr_tran.isra.0, %function 26l2p_addr_tran.isra.0: 27 @ args = 0, pretend = 0, frame = 0 28 @ frame_needed = 0, uses_anonymous_args = 0 29 push {r3, r4, r5, r6, r7, r8, r10, lr} 30 lsrs r7, r0, #10 31 ldr r3, .L3 32 mov r8, r1 33 mov r6, r0 34 uxth r0, r7 35 mov r10, r2 36 uxth r7, r7 37 ldrh r4, [r3, #8] 38 ubfx r6, r6, #0, #10 39 ldrh r5, [r3, #10] 40 ldrh r3, [r3, #14] 41 cmp r3, #4 42 itt eq 43 lsreq r4, r4, #1 44 lsleq r5, r5, #1 45 mov r1, r4 46 it eq 47 uxtheq r5, r5 48 bl __aeabi_uidiv 49 uxth r0, r0 50 mls r4, r0, r4, r7 51 mla r4, r5, r4, r6 52 str r4, [r8] 53 str r0, [r10] 54 movs r0, #0 55 pop {r3, r4, r5, r6, r7, r8, r10, pc} 56.L4: 57 .align 2 58.L3: 59 .word .LANCHOR0 60 .size l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0 61 .section .text.ftl_set_blk_mode.part.6,"ax",%progbits 62 .align 1 63 .syntax unified 64 .thumb 65 .thumb_func 66 .fpu softvfp 67 .type ftl_set_blk_mode.part.6, %function 68ftl_set_blk_mode.part.6: 69 @ args = 0, pretend = 0, frame = 0 70 @ frame_needed = 0, uses_anonymous_args = 0 71 @ link register save eliminated. 72 ldr r3, .L6 73 lsrs r1, r0, #5 74 and r0, r0, #31 75 ldr r2, [r3] 76 movs r3, #1 77 lsl r0, r3, r0 78 ldr r3, [r2, r1, lsl #2] 79 orrs r3, r3, r0 80 str r3, [r2, r1, lsl #2] 81 bx lr 82.L7: 83 .align 2 84.L6: 85 .word .LANCHOR1 86 .size ftl_set_blk_mode.part.6, .-ftl_set_blk_mode.part.6 87 .section .text.Ftl_log2,"ax",%progbits 88 .align 1 89 .global Ftl_log2 90 .syntax unified 91 .thumb 92 .thumb_func 93 .fpu softvfp 94 .type Ftl_log2, %function 95Ftl_log2: 96 @ args = 0, pretend = 0, frame = 0 97 @ frame_needed = 0, uses_anonymous_args = 0 98 @ link register save eliminated. 99 movs r1, #0 100 movs r2, #1 101.L9: 102 cmp r2, r0 103 uxth r3, r1 104 add r1, r1, #1 105 bls .L10 106 subs r0, r3, #1 107 uxth r0, r0 108 bx lr 109.L10: 110 lsls r2, r2, #1 111 b .L9 112 .size Ftl_log2, .-Ftl_log2 113 .section .text.FtlPrintInfo,"ax",%progbits 114 .align 1 115 .global FtlPrintInfo 116 .syntax unified 117 .thumb 118 .thumb_func 119 .fpu softvfp 120 .type FtlPrintInfo, %function 121FtlPrintInfo: 122 @ args = 0, pretend = 0, frame = 0 123 @ frame_needed = 0, uses_anonymous_args = 0 124 @ link register save eliminated. 125 bx lr 126 .size FtlPrintInfo, .-FtlPrintInfo 127 .section .text.FtlSysBlkNumInit,"ax",%progbits 128 .align 1 129 .global FtlSysBlkNumInit 130 .syntax unified 131 .thumb 132 .thumb_func 133 .fpu softvfp 134 .type FtlSysBlkNumInit, %function 135FtlSysBlkNumInit: 136 @ args = 0, pretend = 0, frame = 0 137 @ frame_needed = 0, uses_anonymous_args = 0 138 @ link register save eliminated. 139 ldr r3, .L13 140 cmp r0, #24 141 it cc 142 movcc r0, #24 143 ldr r2, .L13+4 144 str r0, [r3] 145 ldr r3, .L13+8 146 ldrh r3, [r3] 147 muls r3, r0, r3 148 str r3, [r2] 149 ldr r2, .L13+12 150 ldrh r2, [r2] 151 subs r0, r2, r0 152 ldr r2, .L13+16 153 strh r0, [r2] @ movhi 154 movs r0, #0 155 ldr r2, .L13+20 156 ldr r2, [r2] 157 subs r3, r2, r3 158 ldr r2, .L13+24 159 str r3, [r2] 160 bx lr 161.L14: 162 .align 2 163.L13: 164 .word .LANCHOR2 165 .word .LANCHOR4 166 .word .LANCHOR3 167 .word .LANCHOR6 168 .word .LANCHOR5 169 .word .LANCHOR8 170 .word .LANCHOR7 171 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit 172 .global __aeabi_idiv 173 .section .text.FtlConstantsInit,"ax",%progbits 174 .align 1 175 .global FtlConstantsInit 176 .syntax unified 177 .thumb 178 .thumb_func 179 .fpu softvfp 180 .type FtlConstantsInit, %function 181FtlConstantsInit: 182 @ args = 0, pretend = 0, frame = 0 183 @ frame_needed = 0, uses_anonymous_args = 0 184 ldrh r1, [r0] 185 ldr r2, .L25 186 push {r4, r5, r6, r7, r8, r10, fp, lr} 187 mov r7, r0 188 ldrh r5, [r0, #2] 189 strh r1, [r2] @ movhi 190 ldr r2, .L25+4 191 ldrh r0, [r0, #4] 192 strh r5, [r2] @ movhi 193 ldr r2, .L25+8 194 strh r0, [r2] @ movhi 195 ldrh r2, [r7, #14] 196 cmp r2, #4 197 bne .L16 198 ldrh r2, [r7, #6] 199 ldr r4, .L25+12 200 lsrs r2, r2, #1 201 strh r2, [r4] @ movhi 202 movs r4, #8 203 ldr r2, .L25+16 204 strh r4, [r2] @ movhi 205.L16: 206 ldr r4, .L25+20 207 movs r2, #0 208.L17: 209 strb r2, [r2, r4] 210 adds r2, r2, #1 211 cmp r2, #32 212 bne .L17 213 ldr r2, .L25+24 214 cmp r1, #1 215 mov r4, #5 216 smulbb r5, r5, r0 217 mov r6, #0 218 strh r4, [r2] @ movhi 219 it eq 220 strheq r1, [r2] @ movhi 221 mov r1, #640 222 ldr r2, .L25+28 223 uxth r5, r5 224 ldr r4, .L25+32 225 strh r1, [r2] @ movhi 226 ldr r2, .L25+36 227 strh r6, [r4] @ movhi 228 ldr r6, .L25+40 229 strh r5, [r2] @ movhi 230 ldr r2, .L25+12 231 ldrh r4, [r2] 232 ldr r2, .L25+44 233 smulbb r0, r0, r4 234 uxth r0, r0 235 strh r0, [r2] @ movhi 236 bl Ftl_log2 237 ldr r2, .L25+48 238 ldrh r8, [r7, #12] 239 ldr r3, .L25+52 240 strh r0, [r2] @ movhi 241 ldr r2, .L25+56 242 smulbb r1, r5, r8 243 strh r8, [r3] @ movhi 244 strh r8, [r2] @ movhi 245 ldr r2, .L25+60 246 strh r1, [r2] @ movhi 247 ldr r2, .L25+16 248 ldrh fp, [r2] 249 mov r0, fp 250 bl Ftl_log2 251 lsl r2, fp, #9 252 ldr r1, .L25+64 253 ldr r3, .L25+68 254 mov r10, r0 255 uxth r2, r2 256 strh r0, [r6] @ movhi 257 mov r0, #5120 258 strh r2, [r1] @ movhi 259 lsrs r2, r2, #8 260 ldr r1, .L25+72 261 strh r2, [r1] @ movhi 262 mul r1, r8, fp 263 ldrh r2, [r7, #20] 264 ldr r7, .L25+52 265 strh r2, [r3] @ movhi 266 mul r3, r4, r5 267 ldr r2, .L25+76 268 lsls r4, r4, #6 269 str r3, [r2] 270 mul r3, fp, r3 271 ldr r2, .L25+80 272 mul r3, r8, r3 273 ldr r8, .L25+116 274 asrs r3, r3, #11 275 str r3, [r2] 276 bl __aeabi_idiv 277 uxth r0, r0 278 ldr r2, .L25+84 279 mov r1, r5 280 cmp r0, #4 281 itet ls 282 movls r3, #4 283 strhhi r0, [r8] @ movhi 284 strhls r3, [r8] @ movhi 285 mov r3, #640 286 asr r3, r3, r10 287 add r10, r10, #9 288 asr r4, r4, r10 289 ldr r10, .L25+120 290 adds r3, r3, #2 291 ldrh r0, [r8] 292 strh r3, [r2] @ movhi 293 ldr r3, .L25+88 294 strh r4, [r3] @ movhi 295 uxth r4, r4 296 mul r3, r5, r4 297 adds r4, r4, #8 298 str r3, [r10] 299 bl __aeabi_uidiv 300 uxtah r0, r4, r0 301 ldr r4, .L25+92 302 cmp r5, #1 303 it eq 304 addeq r0, r0, #4 305 str r0, [r4] 306 ldrh r0, [r4] 307 bl FtlSysBlkNumInit 308 ldr r2, [r4] 309 movs r0, #0 310 ldr r3, .L25+96 311 str r2, [r3] 312 ldr r3, .L25+100 313 ldr r2, [r3] 314 ldrh r3, [r7] 315 lsls r2, r2, #2 316 muls r3, r2, r3 317 ldrh r2, [r6] 318 adds r2, r2, #9 319 lsrs r3, r3, r2 320 ldr r2, .L25+104 321 adds r3, r3, #2 322 strh r3, [r2] @ movhi 323 movs r2, #32 324 ldr r3, .L25+108 325 strh r2, [r3] @ movhi 326 ldr r3, .L25+112 327 str r0, [r3] 328 ldrh r3, [r8] 329 adds r3, r3, #3 330 strh r3, [r8] @ movhi 331 ldr r3, [r10] 332 adds r3, r3, #3 333 str r3, [r10] 334 pop {r4, r5, r6, r7, r8, r10, fp, pc} 335.L26: 336 .align 2 337.L25: 338 .word .LANCHOR9 339 .word .LANCHOR10 340 .word .LANCHOR11 341 .word .LANCHOR6 342 .word .LANCHOR12 343 .word .LANCHOR13 344 .word .LANCHOR14 345 .word .LANCHOR16 346 .word .LANCHOR15 347 .word .LANCHOR3 348 .word .LANCHOR22 349 .word .LANCHOR17 350 .word .LANCHOR18 351 .word .LANCHOR19 352 .word .LANCHOR20 353 .word .LANCHOR21 354 .word .LANCHOR23 355 .word .LANCHOR25 356 .word .LANCHOR24 357 .word .LANCHOR8 358 .word .LANCHOR26 359 .word .LANCHOR28 360 .word .LANCHOR29 361 .word .LANCHOR2 362 .word .LANCHOR31 363 .word .LANCHOR7 364 .word .LANCHOR32 365 .word .LANCHOR33 366 .word .LANCHOR34 367 .word .LANCHOR27 368 .word .LANCHOR30 369 .size FtlConstantsInit, .-FtlConstantsInit 370 .section .text.IsBlkInVendorPart,"ax",%progbits 371 .align 1 372 .global IsBlkInVendorPart 373 .syntax unified 374 .thumb 375 .thumb_func 376 .fpu softvfp 377 .type IsBlkInVendorPart, %function 378IsBlkInVendorPart: 379 @ args = 0, pretend = 0, frame = 0 380 @ frame_needed = 0, uses_anonymous_args = 0 381 @ link register save eliminated. 382 ldr r3, .L34 383 ldrh r3, [r3] 384 cbz r3, .L33 385 ldr r3, .L34+4 386 ldr r2, .L34+8 387 ldr r3, [r3] 388 ldrh r2, [r2] 389 add r2, r3, r2, lsl #1 390.L29: 391 cmp r3, r2 392 bne .L30 393.L33: 394 movs r0, #0 395 bx lr 396.L30: 397 ldrh r1, [r3], #2 398 cmp r0, r1 399 bne .L29 400 movs r0, #1 401 bx lr 402.L35: 403 .align 2 404.L34: 405 .word .LANCHOR35 406 .word .LANCHOR36 407 .word .LANCHOR27 408 .size IsBlkInVendorPart, .-IsBlkInVendorPart 409 .section .text.FtlCacheWriteBack,"ax",%progbits 410 .align 1 411 .global FtlCacheWriteBack 412 .syntax unified 413 .thumb 414 .thumb_func 415 .fpu softvfp 416 .type FtlCacheWriteBack, %function 417FtlCacheWriteBack: 418 @ args = 0, pretend = 0, frame = 0 419 @ frame_needed = 0, uses_anonymous_args = 0 420 @ link register save eliminated. 421 movs r0, #0 422 bx lr 423 .size FtlCacheWriteBack, .-FtlCacheWriteBack 424 .section .text.sftl_get_density,"ax",%progbits 425 .align 1 426 .global sftl_get_density 427 .syntax unified 428 .thumb 429 .thumb_func 430 .fpu softvfp 431 .type sftl_get_density, %function 432sftl_get_density: 433 @ args = 0, pretend = 0, frame = 0 434 @ frame_needed = 0, uses_anonymous_args = 0 435 @ link register save eliminated. 436 ldr r3, .L38 437 ldr r0, [r3] 438 bx lr 439.L39: 440 .align 2 441.L38: 442 .word .LANCHOR34 443 .size sftl_get_density, .-sftl_get_density 444 .global __aeabi_uidivmod 445 .section .text.FtlBbmMapBadBlock,"ax",%progbits 446 .align 1 447 .global FtlBbmMapBadBlock 448 .syntax unified 449 .thumb 450 .thumb_func 451 .fpu softvfp 452 .type FtlBbmMapBadBlock, %function 453FtlBbmMapBadBlock: 454 @ args = 0, pretend = 0, frame = 0 455 @ frame_needed = 0, uses_anonymous_args = 0 456 ldr r3, .L41 457 push {r0, r1, r2, r4, r5, r6, r7, lr} 458 mov r5, r0 459 ldrh r4, [r3] 460 mov r1, r4 461 bl __aeabi_uidiv 462 mov r1, r4 463 ldr r4, .L41+4 464 uxth r6, r0 465 mov r0, r5 466 bl __aeabi_uidivmod 467 add r2, r4, r6, lsl #2 468 uxth r3, r1 469 ldr r2, [r2, #28] 470 lsrs r1, r3, #5 471 and r7, r3, #31 472 movs r0, #1 473 lsls r0, r0, r7 474 ldr r7, [r2, r1, lsl #2] 475 orrs r0, r0, r7 476 str r0, [r2, r1, lsl #2] 477 mov r2, r6 478 str r0, [sp] 479 mov r1, r5 480 ldr r0, .L41+8 481 bl printf 482 ldrh r3, [r4, #6] 483 movs r0, #0 484 adds r3, r3, #1 485 strh r3, [r4, #6] @ movhi 486 add sp, sp, #12 487 @ sp needed 488 pop {r4, r5, r6, r7, pc} 489.L42: 490 .align 2 491.L41: 492 .word .LANCHOR17 493 .word .LANCHOR37 494 .word .LC0 495 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock 496 .section .text.FtlBbmIsBadBlock,"ax",%progbits 497 .align 1 498 .global FtlBbmIsBadBlock 499 .syntax unified 500 .thumb 501 .thumb_func 502 .fpu softvfp 503 .type FtlBbmIsBadBlock, %function 504FtlBbmIsBadBlock: 505 @ args = 0, pretend = 0, frame = 0 506 @ frame_needed = 0, uses_anonymous_args = 0 507 ldr r3, .L44 508 push {r4, r5, r6, lr} 509 mov r6, r0 510 ldrh r5, [r3] 511 mov r1, r5 512 bl __aeabi_uidivmod 513 mov r0, r6 514 uxth r4, r1 515 mov r1, r5 516 bl __aeabi_uidiv 517 ldr r3, .L44+4 518 uxth r0, r0 519 lsrs r2, r4, #5 520 and r4, r4, #31 521 add r0, r3, r0, lsl #2 522 ldr r3, [r0, #28] 523 ldr r0, [r3, r2, lsl #2] 524 lsrs r0, r0, r4 525 and r0, r0, #1 526 pop {r4, r5, r6, pc} 527.L45: 528 .align 2 529.L44: 530 .word .LANCHOR17 531 .word .LANCHOR37 532 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock 533 .section .text.FtlBbtInfoPrint,"ax",%progbits 534 .align 1 535 .global FtlBbtInfoPrint 536 .syntax unified 537 .thumb 538 .thumb_func 539 .fpu softvfp 540 .type FtlBbtInfoPrint, %function 541FtlBbtInfoPrint: 542 @ args = 0, pretend = 0, frame = 0 543 @ frame_needed = 0, uses_anonymous_args = 0 544 @ link register save eliminated. 545 bx lr 546 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint 547 .section .text.FtlBbtCalcTotleCnt,"ax",%progbits 548 .align 1 549 .global FtlBbtCalcTotleCnt 550 .syntax unified 551 .thumb 552 .thumb_func 553 .fpu softvfp 554 .type FtlBbtCalcTotleCnt, %function 555FtlBbtCalcTotleCnt: 556 @ args = 0, pretend = 0, frame = 0 557 @ frame_needed = 0, uses_anonymous_args = 0 558 ldr r3, .L54 559 ldr r2, .L54+4 560 push {r4, r5, r6, lr} 561 movs r5, #0 562 ldrh r3, [r3] 563 mov r4, r5 564 ldrh r6, [r2] 565 muls r6, r3, r6 566.L48: 567 uxth r0, r5 568 cmp r0, r6 569 blt .L50 570 mov r0, r4 571 pop {r4, r5, r6, pc} 572.L50: 573 bl FtlBbmIsBadBlock 574 cbz r0, .L49 575 adds r4, r4, #1 576 uxth r4, r4 577.L49: 578 adds r5, r5, #1 579 b .L48 580.L55: 581 .align 2 582.L54: 583 .word .LANCHOR17 584 .word .LANCHOR10 585 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt 586 .section .text.V2P_block,"ax",%progbits 587 .align 1 588 .global V2P_block 589 .syntax unified 590 .thumb 591 .thumb_func 592 .fpu softvfp 593 .type V2P_block, %function 594V2P_block: 595 @ args = 0, pretend = 0, frame = 0 596 @ frame_needed = 0, uses_anonymous_args = 0 597 push {r3, r4, r5, r6, r7, lr} 598 mov r5, r1 599 ldr r3, .L57 600 mov r7, r0 601 ldrh r6, [r3] 602 mov r1, r6 603 bl __aeabi_uidiv 604 ldr r3, .L57+4 605 smulbb r5, r6, r5 606 mov r1, r6 607 ldrh r4, [r3] 608 smulbb r4, r4, r0 609 mov r0, r7 610 bl __aeabi_uidivmod 611 adds r0, r5, r1 612 add r0, r0, r4 613 uxth r0, r0 614 pop {r3, r4, r5, r6, r7, pc} 615.L58: 616 .align 2 617.L57: 618 .word .LANCHOR11 619 .word .LANCHOR17 620 .size V2P_block, .-V2P_block 621 .section .text.P2V_plane,"ax",%progbits 622 .align 1 623 .global P2V_plane 624 .syntax unified 625 .thumb 626 .thumb_func 627 .fpu softvfp 628 .type P2V_plane, %function 629P2V_plane: 630 @ args = 0, pretend = 0, frame = 0 631 @ frame_needed = 0, uses_anonymous_args = 0 632 ldr r3, .L60 633 push {r4, r5, r6, lr} 634 mov r6, r0 635 ldrh r5, [r3] 636 ldr r3, .L60+4 637 ldrh r1, [r3] 638 bl __aeabi_uidiv 639 smulbb r4, r0, r5 640 mov r1, r5 641 mov r0, r6 642 bl __aeabi_uidivmod 643 add r1, r1, r4 644 uxth r0, r1 645 pop {r4, r5, r6, pc} 646.L61: 647 .align 2 648.L60: 649 .word .LANCHOR11 650 .word .LANCHOR17 651 .size P2V_plane, .-P2V_plane 652 .section .text.P2V_block_in_plane,"ax",%progbits 653 .align 1 654 .global P2V_block_in_plane 655 .syntax unified 656 .thumb 657 .thumb_func 658 .fpu softvfp 659 .type P2V_block_in_plane, %function 660P2V_block_in_plane: 661 @ args = 0, pretend = 0, frame = 0 662 @ frame_needed = 0, uses_anonymous_args = 0 663 push {r3, lr} 664 ldr r3, .L63 665 ldrh r1, [r3] 666 bl __aeabi_uidivmod 667 ldr r3, .L63+4 668 uxth r0, r1 669 ldrh r1, [r3] 670 bl __aeabi_uidiv 671 uxth r0, r0 672 pop {r3, pc} 673.L64: 674 .align 2 675.L63: 676 .word .LANCHOR17 677 .word .LANCHOR11 678 .size P2V_block_in_plane, .-P2V_block_in_plane 679 .section .text.ftl_cmp_data_ver,"ax",%progbits 680 .align 1 681 .global ftl_cmp_data_ver 682 .syntax unified 683 .thumb 684 .thumb_func 685 .fpu softvfp 686 .type ftl_cmp_data_ver, %function 687ftl_cmp_data_ver: 688 @ args = 0, pretend = 0, frame = 0 689 @ frame_needed = 0, uses_anonymous_args = 0 690 @ link register save eliminated. 691 cmp r0, r1 692 bls .L66 693 subs r0, r0, r1 694 cmp r0, #-2147483648 695 ite hi 696 movhi r0, #0 697 movls r0, #1 698 bx lr 699.L66: 700 subs r0, r1, r0 701 cmp r0, #-2147483648 702 ite ls 703 movls r0, #0 704 movhi r0, #1 705 bx lr 706 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver 707 .section .text.FtlFreeSysBlkQueueEmpty,"ax",%progbits 708 .align 1 709 .global FtlFreeSysBlkQueueEmpty 710 .syntax unified 711 .thumb 712 .thumb_func 713 .fpu softvfp 714 .type FtlFreeSysBlkQueueEmpty, %function 715FtlFreeSysBlkQueueEmpty: 716 @ args = 0, pretend = 0, frame = 0 717 @ frame_needed = 0, uses_anonymous_args = 0 718 @ link register save eliminated. 719 ldr r3, .L69 720 ldrh r0, [r3, #6] 721 clz r0, r0 722 lsrs r0, r0, #5 723 bx lr 724.L70: 725 .align 2 726.L69: 727 .word .LANCHOR38 728 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty 729 .section .text.FtlFreeSysBlkQueueFull,"ax",%progbits 730 .align 1 731 .global FtlFreeSysBlkQueueFull 732 .syntax unified 733 .thumb 734 .thumb_func 735 .fpu softvfp 736 .type FtlFreeSysBlkQueueFull, %function 737FtlFreeSysBlkQueueFull: 738 @ args = 0, pretend = 0, frame = 0 739 @ frame_needed = 0, uses_anonymous_args = 0 740 @ link register save eliminated. 741 ldr r3, .L72 742 ldrh r0, [r3, #6] 743 sub r3, r0, #1024 744 rsbs r0, r3, #0 745 adcs r0, r0, r3 746 bx lr 747.L73: 748 .align 2 749.L72: 750 .word .LANCHOR38 751 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull 752 .section .text.FtlFreeSysBLkSort,"ax",%progbits 753 .align 1 754 .global FtlFreeSysBLkSort 755 .syntax unified 756 .thumb 757 .thumb_func 758 .fpu softvfp 759 .type FtlFreeSysBLkSort, %function 760FtlFreeSysBLkSort: 761 @ args = 0, pretend = 0, frame = 0 762 @ frame_needed = 0, uses_anonymous_args = 0 763 ldr r3, .L83 764 push {r4, r5, r6, lr} 765 ldrh r2, [r3, #6] 766 cbz r2, .L74 767 ldr r2, .L83+4 768 movs r6, #0 769 ldrh r1, [r3, #2] 770 mov r5, r6 771 ldrh r4, [r2, #28] 772 ldrh r2, [r3, #4] 773 and r4, r4, #31 774.L76: 775 uxth r0, r6 776 adds r6, r6, #1 777 cmp r4, r0 778 bgt .L77 779 cbz r5, .L74 780 strh r1, [r3, #2] @ movhi 781 strh r2, [r3, #4] @ movhi 782.L74: 783 pop {r4, r5, r6, pc} 784.L77: 785 adds r0, r1, #4 786 adds r1, r1, #1 787 ldrh r5, [r3, r0, lsl #1] 788 adds r0, r2, #4 789 ubfx r1, r1, #0, #10 790 strh r5, [r3, r0, lsl #1] @ movhi 791 movs r5, #1 792 add r2, r2, r5 793 ubfx r2, r2, #0, #10 794 b .L76 795.L84: 796 .align 2 797.L83: 798 .word .LANCHOR38 799 .word .LANCHOR39 800 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort 801 .section .text.IsInFreeQueue,"ax",%progbits 802 .align 1 803 .global IsInFreeQueue 804 .syntax unified 805 .thumb 806 .thumb_func 807 .fpu softvfp 808 .type IsInFreeQueue, %function 809IsInFreeQueue: 810 @ args = 0, pretend = 0, frame = 0 811 @ frame_needed = 0, uses_anonymous_args = 0 812 ldr r3, .L91 813 push {r4, r5, lr} 814 ldrh r4, [r3, #6] 815 cmp r4, #1024 816 beq .L89 817 ldrh r5, [r3, #2] 818 movs r1, #0 819.L87: 820 cmp r1, r4 821 bcc .L88 822.L89: 823 movs r0, #0 824 pop {r4, r5, pc} 825.L88: 826 adds r2, r1, r5 827 ubfx r2, r2, #0, #10 828 adds r2, r2, #4 829 ldrh r2, [r3, r2, lsl #1] 830 cmp r2, r0 831 beq .L90 832 adds r1, r1, #1 833 b .L87 834.L90: 835 movs r0, #1 836 pop {r4, r5, pc} 837.L92: 838 .align 2 839.L91: 840 .word .LANCHOR38 841 .size IsInFreeQueue, .-IsInFreeQueue 842 .section .text.insert_data_list,"ax",%progbits 843 .align 1 844 .global insert_data_list 845 .syntax unified 846 .thumb 847 .thumb_func 848 .fpu softvfp 849 .type insert_data_list, %function 850insert_data_list: 851 @ args = 0, pretend = 0, frame = 16 852 @ frame_needed = 0, uses_anonymous_args = 0 853 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 854 ldr r3, .L109 855 ldrh lr, [r3] 856 cmp lr, r0 857 bls .L95 858 ldr r3, .L109+4 859 movs r5, #6 860 ldr r4, [r3] 861 mul r3, r5, r0 862 str r3, [sp, #4] 863 adds r1, r4, r3 864 ldr r2, [sp, #4] 865 movw r3, #65535 866 strh r3, [r1, #2] @ movhi 867 strh r3, [r4, r2] @ movhi 868 ldr r3, .L109+8 869 ldr ip, [r3] 870 cmp ip, #0 871 bne .L96 872.L108: 873 str r1, [r3] 874.L95: 875 movs r0, #0 876 add sp, sp, #16 877 @ sp needed 878 pop {r4, r5, r6, r7, r8, r10, fp, pc} 879.L96: 880 ldr r3, .L109+12 881 lsls r2, r0, #1 882 ldr r3, [r3] 883 str r3, [sp, #8] 884 ldrh r6, [r3, r0, lsl #1] 885 ldrh r3, [r1, #4] 886 cbz r3, .L106 887 mul fp, r3, r6 888.L97: 889 sub r3, ip, r4 890 asrs r6, r3, #1 891 ldr r3, .L109+16 892 muls r3, r6, r3 893 ldr r6, .L109+20 894 ldr r8, [r6] 895 movs r6, #0 896 uxth r3, r3 897 add r2, r8, r2 898 str r2, [sp, #12] 899 mov r2, ip 900.L104: 901 adds r6, r6, #1 902 uxth r6, r6 903 cmp lr, r6 904 bcc .L95 905 cmp r3, r0 906 beq .L95 907 ldr r7, [sp, #8] 908 lsl r10, r3, #1 909 ldrh r7, [r7, r3, lsl #1] 910 mov r5, r7 911 ldrh r7, [r2, #4] 912 cbz r7, .L107 913 muls r7, r5, r7 914.L99: 915 cmp fp, r7 916 bne .L100 917 ldr r5, [sp, #12] 918 ldrh r10, [r8, r10] 919 ldrh r7, [r5] 920 cmp r10, r7 921 bcc .L102 922.L101: 923 ldr r5, [sp, #4] 924 cmp r2, ip 925 strh r3, [r4, r5] @ movhi 926 ldrh r3, [r2, #2] 927 strh r3, [r1, #2] @ movhi 928 bne .L105 929 strh r0, [r2, #2] @ movhi 930 ldr r3, .L109+8 931 b .L108 932.L106: 933 mov fp, #-1 934 b .L97 935.L107: 936 mov r7, #-1 937 b .L99 938.L100: 939 bcc .L101 940.L102: 941 ldrh r7, [r2] 942 movw r5, #65535 943 cmp r7, r5 944 bne .L103 945 strh r3, [r1, #2] @ movhi 946 strh r0, [r2] @ movhi 947 ldr r3, .L109+24 948 b .L108 949.L103: 950 movs r3, #6 951 mla r2, r3, r7, r4 952 mov r3, r7 953 b .L104 954.L105: 955 ldrh r1, [r2, #2] 956 movs r3, #6 957 muls r3, r1, r3 958 strh r0, [r4, r3] @ movhi 959 strh r0, [r2, #2] @ movhi 960 b .L95 961.L110: 962 .align 2 963.L109: 964 .word .LANCHOR5 965 .word .LANCHOR40 966 .word .LANCHOR41 967 .word .LANCHOR42 968 .word -1431655765 969 .word .LANCHOR43 970 .word .LANCHOR44 971 .size insert_data_list, .-insert_data_list 972 .section .text.INSERT_DATA_LIST,"ax",%progbits 973 .align 1 974 .global INSERT_DATA_LIST 975 .syntax unified 976 .thumb 977 .thumb_func 978 .fpu softvfp 979 .type INSERT_DATA_LIST, %function 980INSERT_DATA_LIST: 981 @ args = 0, pretend = 0, frame = 0 982 @ frame_needed = 0, uses_anonymous_args = 0 983 push {r3, lr} 984 bl insert_data_list 985 ldr r2, .L113 986 ldrh r3, [r2] 987 adds r3, r3, #1 988 uxth r3, r3 989 strh r3, [r2] @ movhi 990 ldr r2, .L113+4 991 ldrh r2, [r2] 992 cmp r2, r3 993 bcs .L111 994 movs r2, #221 995 ldr r1, .L113+8 996 ldr r0, .L113+12 997 pop {r3, lr} 998 b printf 999.L111: 1000 pop {r3, pc} 1001.L114: 1002 .align 2 1003.L113: 1004 .word .LANCHOR45 1005 .word .LANCHOR5 1006 .word .LANCHOR46 1007 .word .LC1 1008 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST 1009 .section .text.insert_free_list,"ax",%progbits 1010 .align 1 1011 .global insert_free_list 1012 .syntax unified 1013 .thumb 1014 .thumb_func 1015 .fpu softvfp 1016 .type insert_free_list, %function 1017insert_free_list: 1018 @ args = 0, pretend = 0, frame = 0 1019 @ frame_needed = 0, uses_anonymous_args = 0 1020 movw r1, #65535 1021 push {r4, r5, r6, r7, r8, r10, fp, lr} 1022 cmp r0, r1 1023 beq .L116 1024 ldr r3, .L122 1025 mov r10, #6 1026 mul r7, r10, r0 1027 ldr r4, [r3] 1028 ldr r3, .L122+4 1029 adds r5, r4, r7 1030 ldr r6, [r3] 1031 mov lr, r3 1032 strh r1, [r5, #2] @ movhi 1033 strh r1, [r4, r7] @ movhi 1034 cbnz r6, .L117 1035 str r5, [r3] 1036.L116: 1037 movs r0, #0 1038 pop {r4, r5, r6, r7, r8, r10, fp, pc} 1039.L117: 1040 ldr r3, .L122+8 1041 subs r2, r6, r4 1042 mov fp, r1 1043 ldr ip, [r3] 1044 asrs r3, r2, #1 1045 ldr r2, .L122+12 1046 ldrh r8, [ip, r0, lsl #1] 1047 muls r2, r3, r2 1048 mov r3, r6 1049 uxth r2, r2 1050.L120: 1051 ldrh r1, [ip, r2, lsl #1] 1052 cmp r1, r8 1053 bcs .L118 1054 ldrh r1, [r3] 1055 cmp r1, fp 1056 bne .L119 1057 strh r2, [r5, #2] @ movhi 1058 strh r0, [r3] @ movhi 1059 b .L116 1060.L119: 1061 mla r3, r10, r1, r4 1062 mov r2, r1 1063 b .L120 1064.L118: 1065 ldrh r1, [r3, #2] 1066 cmp r3, r6 1067 strh r1, [r5, #2] @ movhi 1068 it ne 1069 ldrhne r1, [r3, #2] 1070 strh r2, [r4, r7] @ movhi 1071 iteet ne 1072 movne r2, #6 1073 strheq r0, [r3, #2] @ movhi 1074 streq r5, [lr] 1075 mulne r2, r2, r1 1076 itt ne 1077 strhne r0, [r4, r2] @ movhi 1078 strhne r0, [r3, #2] @ movhi 1079 b .L116 1080.L123: 1081 .align 2 1082.L122: 1083 .word .LANCHOR40 1084 .word .LANCHOR47 1085 .word .LANCHOR43 1086 .word -1431655765 1087 .size insert_free_list, .-insert_free_list 1088 .section .text.INSERT_FREE_LIST,"ax",%progbits 1089 .align 1 1090 .global INSERT_FREE_LIST 1091 .syntax unified 1092 .thumb 1093 .thumb_func 1094 .fpu softvfp 1095 .type INSERT_FREE_LIST, %function 1096INSERT_FREE_LIST: 1097 @ args = 0, pretend = 0, frame = 0 1098 @ frame_needed = 0, uses_anonymous_args = 0 1099 push {r3, lr} 1100 bl insert_free_list 1101 ldr r2, .L126 1102 ldrh r3, [r2] 1103 adds r3, r3, #1 1104 uxth r3, r3 1105 strh r3, [r2] @ movhi 1106 ldr r2, .L126+4 1107 ldrh r2, [r2] 1108 cmp r2, r3 1109 bcs .L124 1110 movs r2, #214 1111 ldr r1, .L126+8 1112 ldr r0, .L126+12 1113 pop {r3, lr} 1114 b printf 1115.L124: 1116 pop {r3, pc} 1117.L127: 1118 .align 2 1119.L126: 1120 .word .LANCHOR48 1121 .word .LANCHOR5 1122 .word .LANCHOR49 1123 .word .LC1 1124 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST 1125 .section .text.List_remove_node,"ax",%progbits 1126 .align 1 1127 .global List_remove_node 1128 .syntax unified 1129 .thumb 1130 .thumb_func 1131 .fpu softvfp 1132 .type List_remove_node, %function 1133List_remove_node: 1134 @ args = 0, pretend = 0, frame = 0 1135 @ frame_needed = 0, uses_anonymous_args = 0 1136 push {r4, r5, r6, r7, r8, lr} 1137 movs r6, #6 1138 ldr r5, .L134 1139 muls r6, r1, r6 1140 movw r3, #65535 1141 mov r8, r0 1142 ldr r7, [r5] 1143 adds r4, r7, r6 1144 ldrh r2, [r4, #2] 1145 cmp r2, r3 1146 bne .L129 1147 ldr r3, [r0] 1148 cmp r4, r3 1149 beq .L129 1150 movw r2, #379 1151 ldr r1, .L134+4 1152 ldr r0, .L134+8 1153 bl printf 1154.L129: 1155 ldr r3, [r8] 1156 movw r1, #65535 1157 cmp r4, r3 1158 ldrh r3, [r7, r6] 1159 bne .L130 1160 cmp r3, r1 1161 ittee ne 1162 ldrne r0, [r5] 1163 movne r2, #6 1164 moveq r3, #0 1165 streq r3, [r8] 1166 ittt ne 1167 mlane r3, r2, r3, r0 1168 strne r3, [r8] 1169 strhne r1, [r3, #2] @ movhi 1170.L132: 1171 movw r3, #65535 1172 movs r0, #0 1173 strh r3, [r7, r6] @ movhi 1174 strh r3, [r4, #2] @ movhi 1175 pop {r4, r5, r6, r7, r8, pc} 1176.L130: 1177 cmp r3, r1 1178 ldrh r1, [r4, #2] 1179 bne .L133 1180 cmp r1, r3 1181 beq .L132 1182 movs r2, #6 1183 ldr r0, [r5] 1184 muls r1, r2, r1 1185 strh r3, [r0, r1] @ movhi 1186 b .L132 1187.L133: 1188 ldr r0, [r5] 1189 movs r2, #6 1190 mla r5, r2, r3, r0 1191 strh r1, [r5, #2] @ movhi 1192 ldrh r1, [r4, #2] 1193 muls r2, r1, r2 1194 strh r3, [r0, r2] @ movhi 1195 b .L132 1196.L135: 1197 .align 2 1198.L134: 1199 .word .LANCHOR40 1200 .word .LANCHOR50 1201 .word .LC1 1202 .size List_remove_node, .-List_remove_node 1203 .section .text.List_pop_index_node,"ax",%progbits 1204 .align 1 1205 .global List_pop_index_node 1206 .syntax unified 1207 .thumb 1208 .thumb_func 1209 .fpu softvfp 1210 .type List_pop_index_node, %function 1211List_pop_index_node: 1212 @ args = 0, pretend = 0, frame = 0 1213 @ frame_needed = 0, uses_anonymous_args = 0 1214 ldr r3, [r0] 1215 push {r4, r5, r6, lr} 1216 cbz r3, .L142 1217 ldr r2, .L143 1218 movw r5, #65535 1219 movs r6, #6 1220 ldr r2, [r2] 1221.L138: 1222 cbnz r1, .L139 1223.L141: 1224 ldr r4, .L143+4 1225 subs r3, r3, r2 1226 asrs r3, r3, #1 1227 muls r4, r3, r4 1228 uxth r1, r4 1229 bl List_remove_node 1230 uxth r0, r4 1231 pop {r4, r5, r6, pc} 1232.L139: 1233 ldrh r4, [r3] 1234 cmp r4, r5 1235 beq .L141 1236 subs r1, r1, #1 1237 mla r3, r6, r4, r2 1238 uxth r1, r1 1239 b .L138 1240.L142: 1241 movw r0, #65535 1242 pop {r4, r5, r6, pc} 1243.L144: 1244 .align 2 1245.L143: 1246 .word .LANCHOR40 1247 .word -1431655765 1248 .size List_pop_index_node, .-List_pop_index_node 1249 .section .text.List_pop_head_node,"ax",%progbits 1250 .align 1 1251 .global List_pop_head_node 1252 .syntax unified 1253 .thumb 1254 .thumb_func 1255 .fpu softvfp 1256 .type List_pop_head_node, %function 1257List_pop_head_node: 1258 @ args = 0, pretend = 0, frame = 0 1259 @ frame_needed = 0, uses_anonymous_args = 0 1260 @ link register save eliminated. 1261 movs r1, #0 1262 b List_pop_index_node 1263 .size List_pop_head_node, .-List_pop_head_node 1264 .section .text.List_get_gc_head_node,"ax",%progbits 1265 .align 1 1266 .global List_get_gc_head_node 1267 .syntax unified 1268 .thumb 1269 .thumb_func 1270 .fpu softvfp 1271 .type List_get_gc_head_node, %function 1272List_get_gc_head_node: 1273 @ args = 0, pretend = 0, frame = 0 1274 @ frame_needed = 0, uses_anonymous_args = 0 1275 ldr r3, .L152 1276 push {r4, lr} 1277 ldr r3, [r3] 1278 cbz r3, .L151 1279 ldr r2, .L152+4 1280 movs r4, #6 1281 ldr r1, [r2] 1282 movw r2, #65535 1283.L148: 1284 cbz r0, .L149 1285 ldrh r3, [r3] 1286 cmp r3, r2 1287 bne .L150 1288.L151: 1289 movw r0, #65535 1290 pop {r4, pc} 1291.L150: 1292 subs r0, r0, #1 1293 mla r3, r4, r3, r1 1294 uxth r0, r0 1295 b .L148 1296.L149: 1297 ldr r0, .L152+8 1298 subs r3, r3, r1 1299 asrs r3, r3, #1 1300 muls r3, r0, r3 1301 uxth r0, r3 1302 pop {r4, pc} 1303.L153: 1304 .align 2 1305.L152: 1306 .word .LANCHOR41 1307 .word .LANCHOR40 1308 .word -1431655765 1309 .size List_get_gc_head_node, .-List_get_gc_head_node 1310 .section .text.List_update_data_list,"ax",%progbits 1311 .align 1 1312 .global List_update_data_list 1313 .syntax unified 1314 .thumb 1315 .thumb_func 1316 .fpu softvfp 1317 .type List_update_data_list, %function 1318List_update_data_list: 1319 @ args = 0, pretend = 0, frame = 0 1320 @ frame_needed = 0, uses_anonymous_args = 0 1321 ldr r3, .L165 1322 push {r4, r5, r6, r7, r8, r10, fp, lr} 1323 mov r4, r0 1324 ldrh r3, [r3] 1325 cmp r3, r0 1326 beq .L156 1327 ldr r3, .L165+4 1328 ldrh r3, [r3] 1329 cmp r3, r0 1330 beq .L156 1331 ldr r3, .L165+8 1332 ldrh r3, [r3] 1333 cmp r3, r0 1334 beq .L156 1335 ldr r7, .L165+12 1336 movs r6, #6 1337 ldr r3, .L165+16 1338 muls r6, r0, r6 1339 ldr fp, [r7] 1340 ldr r3, [r3] 1341 add r10, fp, r6 1342 cmp r10, r3 1343 beq .L156 1344 ldr r3, .L165+20 1345 ldrh r5, [r10, #4] 1346 ldr r2, [r3] 1347 mov r8, r3 1348 ldrh r2, [r2, r0, lsl #1] 1349 cmp r5, #0 1350 beq .L163 1351 muls r5, r2, r5 1352.L158: 1353 ldrh r3, [r10, #2] 1354 movw r2, #65535 1355 cmp r3, r2 1356 bne .L159 1357 ldrh r2, [fp, r6] 1358 cmp r2, r3 1359 bne .L159 1360 mov r2, #470 1361 ldr r1, .L165+24 1362 ldr r0, .L165+28 1363 bl printf 1364.L159: 1365 ldrh r3, [r10, #2] 1366 movw r2, #65535 1367 cmp r3, r2 1368 bne .L160 1369 ldrh r2, [fp, r6] 1370 cmp r2, r3 1371 beq .L156 1372.L160: 1373 movs r2, #6 1374 muls r2, r3, r2 1375 ldr r3, .L165+32 1376 asrs r1, r2, #1 1377 muls r3, r1, r3 1378 ldr r1, [r8] 1379 ldrh r0, [r1, r3, lsl #1] 1380 ldr r1, [r7] 1381 add r2, r2, r1 1382 ldrh r3, [r2, #4] 1383 cbz r3, .L164 1384 muls r3, r0, r3 1385.L161: 1386 cmp r5, r3 1387 bcs .L156 1388 ldr r5, .L165+36 1389 mov r1, r4 1390 ldr r0, .L165+16 1391 bl List_remove_node 1392 ldrh r3, [r5] 1393 cbnz r3, .L162 1394 movw r2, #481 1395 ldr r1, .L165+24 1396 ldr r0, .L165+28 1397 bl printf 1398.L162: 1399 ldrh r3, [r5] 1400 mov r0, r4 1401 subs r3, r3, #1 1402 strh r3, [r5] @ movhi 1403 bl INSERT_DATA_LIST 1404.L156: 1405 movs r0, #0 1406 pop {r4, r5, r6, r7, r8, r10, fp, pc} 1407.L163: 1408 mov r5, #-1 1409 b .L158 1410.L164: 1411 mov r3, #-1 1412 b .L161 1413.L166: 1414 .align 2 1415.L165: 1416 .word .LANCHOR51 1417 .word .LANCHOR52 1418 .word .LANCHOR53 1419 .word .LANCHOR40 1420 .word .LANCHOR41 1421 .word .LANCHOR42 1422 .word .LANCHOR54 1423 .word .LC1 1424 .word -1431655765 1425 .word .LANCHOR45 1426 .size List_update_data_list, .-List_update_data_list 1427 .section .text.select_l2p_ram_region,"ax",%progbits 1428 .align 1 1429 .global select_l2p_ram_region 1430 .syntax unified 1431 .thumb 1432 .thumb_func 1433 .fpu softvfp 1434 .type select_l2p_ram_region, %function 1435select_l2p_ram_region: 1436 @ args = 0, pretend = 0, frame = 0 1437 @ frame_needed = 0, uses_anonymous_args = 0 1438 push {r3, r4, r5, r6, r7, lr} 1439 movs r1, #0 1440 ldr r3, .L177 1441 movs r0, #12 1442 movw r5, #65535 1443 ldrh r2, [r3] 1444 ldr r3, .L177+4 1445 ldr r3, [r3] 1446.L168: 1447 uxth r4, r1 1448 cmp r4, r2 1449 bcc .L170 1450 mov r4, r2 1451 movs r1, #0 1452 mov r6, #-2147483648 1453 movs r7, #12 1454.L171: 1455 uxth r5, r1 1456 cmp r5, r2 1457 bcc .L173 1458 cmp r4, r2 1459 bcc .L169 1460 ldr r1, .L177+8 1461 mov r4, r2 1462 mov r0, #-1 1463 ldrh r7, [r1] 1464 movs r1, #0 1465.L174: 1466 uxth r5, r1 1467 cmp r5, r2 1468 bcc .L176 1469 cmp r4, r2 1470 bcc .L169 1471 mov r2, #784 1472 ldr r1, .L177+12 1473 ldr r0, .L177+16 1474 bl printf 1475 b .L169 1476.L170: 1477 adds r1, r1, #1 1478 mla r6, r0, r1, r3 1479 ldrh r6, [r6, #-12] 1480 cmp r6, r5 1481 bne .L168 1482.L169: 1483 mov r0, r4 1484 pop {r3, r4, r5, r6, r7, pc} 1485.L173: 1486 mla r0, r7, r1, r3 1487 ldr r0, [r0, #4] 1488 cmp r0, #0 1489 blt .L172 1490 cmp r6, r0 1491 itt hi 1492 movhi r6, r0 1493 movhi r4, r5 1494.L172: 1495 adds r1, r1, #1 1496 b .L171 1497.L176: 1498 ldr r6, [r3, #4] 1499 cmp r0, r6 1500 bls .L175 1501 ldrh ip, [r3] 1502 cmp ip, r7 1503 itt ne 1504 movne r0, r6 1505 movne r4, r5 1506.L175: 1507 adds r1, r1, #1 1508 adds r3, r3, #12 1509 b .L174 1510.L178: 1511 .align 2 1512.L177: 1513 .word .LANCHOR33 1514 .word .LANCHOR55 1515 .word .LANCHOR56 1516 .word .LANCHOR57 1517 .word .LC1 1518 .size select_l2p_ram_region, .-select_l2p_ram_region 1519 .section .text.FtlUpdateVaildLpn,"ax",%progbits 1520 .align 1 1521 .global FtlUpdateVaildLpn 1522 .syntax unified 1523 .thumb 1524 .thumb_func 1525 .fpu softvfp 1526 .type FtlUpdateVaildLpn, %function 1527FtlUpdateVaildLpn: 1528 @ args = 0, pretend = 0, frame = 0 1529 @ frame_needed = 0, uses_anonymous_args = 0 1530 ldr r2, .L189 1531 push {r4, r5, r6, lr} 1532 mov r1, r2 1533 ldrh r3, [r2] 1534 cmp r3, #4 1535 bhi .L180 1536 cbnz r0, .L180 1537 adds r3, r3, #1 1538 strh r3, [r2] @ movhi 1539 pop {r4, r5, r6, pc} 1540.L180: 1541 movs r3, #0 1542 ldr r0, .L189+4 1543 strh r3, [r1] @ movhi 1544 movw r6, #65535 1545 ldr r1, .L189+8 1546 ldrh r4, [r0] 1547 mov r0, r3 1548 ldr r2, .L189+12 1549 ldr r1, [r1] 1550 str r3, [r2] 1551 add r4, r1, r4, lsl #1 1552.L181: 1553 cmp r1, r4 1554 bne .L183 1555 cbz r3, .L179 1556 str r0, [r2] 1557.L179: 1558 pop {r4, r5, r6, pc} 1559.L183: 1560 ldrh r5, [r1], #2 1561 cmp r5, r6 1562 itt ne 1563 addne r0, r0, r5 1564 movne r3, #1 1565 b .L181 1566.L190: 1567 .align 2 1568.L189: 1569 .word .LANCHOR58 1570 .word .LANCHOR5 1571 .word .LANCHOR42 1572 .word .LANCHOR59 1573 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn 1574 .section .text.ftl_set_blk_mode,"ax",%progbits 1575 .align 1 1576 .global ftl_set_blk_mode 1577 .syntax unified 1578 .thumb 1579 .thumb_func 1580 .fpu softvfp 1581 .type ftl_set_blk_mode, %function 1582ftl_set_blk_mode: 1583 @ args = 0, pretend = 0, frame = 0 1584 @ frame_needed = 0, uses_anonymous_args = 0 1585 @ link register save eliminated. 1586 mov r3, r0 1587 cbz r1, .L192 1588 b ftl_set_blk_mode.part.6 1589.L192: 1590 ldr r2, .L193 1591 lsrs r0, r0, #5 1592 and r3, r3, #31 1593 ldr r1, [r2] 1594 movs r2, #1 1595 lsl r3, r2, r3 1596 ldr r2, [r1, r0, lsl #2] 1597 bic r2, r2, r3 1598 str r2, [r1, r0, lsl #2] 1599 bx lr 1600.L194: 1601 .align 2 1602.L193: 1603 .word .LANCHOR1 1604 .size ftl_set_blk_mode, .-ftl_set_blk_mode 1605 .section .text.ftl_get_blk_mode,"ax",%progbits 1606 .align 1 1607 .global ftl_get_blk_mode 1608 .syntax unified 1609 .thumb 1610 .thumb_func 1611 .fpu softvfp 1612 .type ftl_get_blk_mode, %function 1613ftl_get_blk_mode: 1614 @ args = 0, pretend = 0, frame = 0 1615 @ frame_needed = 0, uses_anonymous_args = 0 1616 @ link register save eliminated. 1617 ldr r3, .L196 1618 lsrs r2, r0, #5 1619 and r0, r0, #31 1620 ldr r3, [r3] 1621 ldr r3, [r3, r2, lsl #2] 1622 lsr r0, r3, r0 1623 and r0, r0, #1 1624 bx lr 1625.L197: 1626 .align 2 1627.L196: 1628 .word .LANCHOR1 1629 .size ftl_get_blk_mode, .-ftl_get_blk_mode 1630 .section .text.ftl_sb_update_avl_pages,"ax",%progbits 1631 .align 1 1632 .global ftl_sb_update_avl_pages 1633 .syntax unified 1634 .thumb 1635 .thumb_func 1636 .fpu softvfp 1637 .type ftl_sb_update_avl_pages, %function 1638ftl_sb_update_avl_pages: 1639 @ args = 0, pretend = 0, frame = 0 1640 @ frame_needed = 0, uses_anonymous_args = 0 1641 movs r3, #0 1642 push {r4, r5, r6, lr} 1643 strh r3, [r0, #4] @ movhi 1644 movw r6, #65535 1645 ldr r3, .L205 1646 ldrh r4, [r3] 1647 add r3, r0, r2, lsl #1 1648 adds r3, r3, #14 1649.L199: 1650 cmp r2, r4 1651 bcc .L201 1652 ldr r3, .L205+4 1653 add r5, r0, #16 1654 movw r6, #65535 1655 ldrh r3, [r3] 1656 subs r3, r3, #1 1657 subs r1, r3, r1 1658 movs r3, #0 1659 uxth r1, r1 1660.L202: 1661 uxth r2, r3 1662 cmp r4, r2 1663 bhi .L204 1664 pop {r4, r5, r6, pc} 1665.L201: 1666 ldrh r5, [r3, #2]! 1667 adds r2, r2, #1 1668 uxth r2, r2 1669 cmp r5, r6 1670 ittt ne 1671 ldrhne r5, [r0, #4] 1672 addne r5, r5, #1 1673 strhne r5, [r0, #4] @ movhi 1674 b .L199 1675.L204: 1676 ldrh r2, [r5], #2 1677 adds r3, r3, #1 1678 cmp r2, r6 1679 ittt ne 1680 ldrhne r2, [r0, #4] 1681 addne r2, r2, r1 1682 strhne r2, [r0, #4] @ movhi 1683 b .L202 1684.L206: 1685 .align 2 1686.L205: 1687 .word .LANCHOR3 1688 .word .LANCHOR19 1689 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages 1690 .section .text.FtlSlcSuperblockCheck,"ax",%progbits 1691 .align 1 1692 .global FtlSlcSuperblockCheck 1693 .syntax unified 1694 .thumb 1695 .thumb_func 1696 .fpu softvfp 1697 .type FtlSlcSuperblockCheck, %function 1698FtlSlcSuperblockCheck: 1699 @ args = 0, pretend = 0, frame = 0 1700 @ frame_needed = 0, uses_anonymous_args = 0 1701 ldrh r3, [r0, #4] 1702 push {r4, r5, lr} 1703 cbz r3, .L207 1704 ldrh r2, [r0] 1705 movw r3, #65535 1706 cmp r2, r3 1707 beq .L207 1708 ldrb r2, [r0, #6] @ zero_extendqisi2 1709 movs r5, #0 1710 adds r2, r2, #8 1711 ldrh r1, [r0, r2, lsl #1] 1712 ldr r2, .L213 1713 ldrh r4, [r2] 1714 mov r2, r3 1715.L210: 1716 cmp r1, r2 1717 beq .L212 1718.L207: 1719 pop {r4, r5, pc} 1720.L212: 1721 ldrb r3, [r0, #6] @ zero_extendqisi2 1722 adds r3, r3, #1 1723 uxtb r3, r3 1724 cmp r3, r4 1725 strb r3, [r0, #6] 1726 itttt eq 1727 ldrheq r3, [r0, #2] 1728 strbeq r5, [r0, #6] 1729 addeq r3, r3, #1 1730 strheq r3, [r0, #2] @ movhi 1731 ldrb r3, [r0, #6] @ zero_extendqisi2 1732 adds r3, r3, #8 1733 ldrh r1, [r0, r3, lsl #1] 1734 b .L210 1735.L214: 1736 .align 2 1737.L213: 1738 .word .LANCHOR3 1739 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck 1740 .section .text.make_superblock,"ax",%progbits 1741 .align 1 1742 .global make_superblock 1743 .syntax unified 1744 .thumb 1745 .thumb_func 1746 .fpu softvfp 1747 .type make_superblock, %function 1748make_superblock: 1749 @ args = 0, pretend = 0, frame = 0 1750 @ frame_needed = 0, uses_anonymous_args = 0 1751 ldr r3, .L220 1752 ldrh r2, [r0] 1753 push {r4, r5, r6, r7, r8, r10, fp, lr} 1754 mov r4, r0 1755 ldrh r3, [r3] 1756 cmp r2, r3 1757 bcc .L216 1758 movw r2, #2097 1759 ldr r1, .L220+4 1760 ldr r0, .L220+8 1761 bl printf 1762.L216: 1763 ldr r3, .L220+12 1764 add r6, r4, #16 1765 ldr r10, .L220+20 1766 movw r7, #65535 1767 movs r5, #0 1768 ldrh r8, [r3] 1769 strh r5, [r4, #4] @ movhi 1770 strb r5, [r4, #7] 1771.L217: 1772 uxth r3, r5 1773 cmp r8, r3 1774 bhi .L219 1775 ldr r2, .L220+16 1776 movs r0, #0 1777 ldrb r3, [r4, #7] @ zero_extendqisi2 1778 ldrh r2, [r2] 1779 smulbb r3, r3, r2 1780 strh r3, [r4, #4] @ movhi 1781 movs r3, #1 1782 strb r3, [r4, #9] 1783 pop {r4, r5, r6, r7, r8, r10, fp, pc} 1784.L219: 1785 ldrh r1, [r4] 1786 ldrb r0, [r10, r5] @ zero_extendqisi2 1787 bl V2P_block 1788 strh r7, [r6] @ movhi 1789 mov fp, r0 1790 bl FtlBbmIsBadBlock 1791 cbnz r0, .L218 1792 strh fp, [r6] @ movhi 1793 ldrb r3, [r4, #7] @ zero_extendqisi2 1794 adds r3, r3, #1 1795 strb r3, [r4, #7] 1796.L218: 1797 adds r5, r5, #1 1798 adds r6, r6, #2 1799 b .L217 1800.L221: 1801 .align 2 1802.L220: 1803 .word .LANCHOR5 1804 .word .LANCHOR60 1805 .word .LC1 1806 .word .LANCHOR3 1807 .word .LANCHOR19 1808 .word .LANCHOR13 1809 .size make_superblock, .-make_superblock 1810 .section .text.update_multiplier_value,"ax",%progbits 1811 .align 1 1812 .global update_multiplier_value 1813 .syntax unified 1814 .thumb 1815 .thumb_func 1816 .fpu softvfp 1817 .type update_multiplier_value, %function 1818update_multiplier_value: 1819 @ args = 0, pretend = 0, frame = 0 1820 @ frame_needed = 0, uses_anonymous_args = 0 1821 push {r3, r4, r5, r6, r7, r8, r10, lr} 1822 movs r5, #0 1823 ldr r3, .L228 1824 mov r6, r0 1825 mov r4, r5 1826 ldr r10, .L228+12 1827 ldrh r7, [r3] 1828 ldr r3, .L228+4 1829 ldrh r8, [r3] 1830.L223: 1831 uxth r3, r5 1832 cmp r7, r3 1833 bhi .L225 1834 cbz r4, .L227 1835 mov r1, r4 1836 mov r0, #32768 1837 bl __aeabi_idiv 1838.L226: 1839 ldr r3, .L228+8 1840 movs r2, #6 1841 ldr r3, [r3] 1842 mla r6, r2, r6, r3 1843 strh r0, [r6, #4] @ movhi 1844 movs r0, #0 1845 pop {r3, r4, r5, r6, r7, r8, r10, pc} 1846.L225: 1847 mov r1, r6 1848 ldrb r0, [r10, r5] @ zero_extendqisi2 1849 bl V2P_block 1850 bl FtlBbmIsBadBlock 1851 cbnz r0, .L224 1852 add r4, r4, r8 1853 uxth r4, r4 1854.L224: 1855 adds r5, r5, #1 1856 b .L223 1857.L227: 1858 mov r0, r4 1859 b .L226 1860.L229: 1861 .align 2 1862.L228: 1863 .word .LANCHOR3 1864 .word .LANCHOR19 1865 .word .LANCHOR40 1866 .word .LANCHOR13 1867 .size update_multiplier_value, .-update_multiplier_value 1868 .section .text.GetFreeBlockMinEraseCount,"ax",%progbits 1869 .align 1 1870 .global GetFreeBlockMinEraseCount 1871 .syntax unified 1872 .thumb 1873 .thumb_func 1874 .fpu softvfp 1875 .type GetFreeBlockMinEraseCount, %function 1876GetFreeBlockMinEraseCount: 1877 @ args = 0, pretend = 0, frame = 0 1878 @ frame_needed = 0, uses_anonymous_args = 0 1879 @ link register save eliminated. 1880 ldr r3, .L233 1881 ldr r0, [r3] 1882 cbz r0, .L231 1883 ldr r3, .L233+4 1884 ldr r3, [r3] 1885 subs r0, r0, r3 1886 ldr r3, .L233+8 1887 asrs r0, r0, #1 1888 muls r0, r3, r0 1889 ldr r3, .L233+12 1890 ldr r3, [r3] 1891 uxth r0, r0 1892 ldrh r0, [r3, r0, lsl #1] 1893.L231: 1894 bx lr 1895.L234: 1896 .align 2 1897.L233: 1898 .word .LANCHOR47 1899 .word .LANCHOR40 1900 .word -1431655765 1901 .word .LANCHOR43 1902 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount 1903 .section .text.GetFreeBlockMaxEraseCount,"ax",%progbits 1904 .align 1 1905 .global GetFreeBlockMaxEraseCount 1906 .syntax unified 1907 .thumb 1908 .thumb_func 1909 .fpu softvfp 1910 .type GetFreeBlockMaxEraseCount, %function 1911GetFreeBlockMaxEraseCount: 1912 @ args = 0, pretend = 0, frame = 0 1913 @ frame_needed = 0, uses_anonymous_args = 0 1914 ldr r3, .L243 1915 push {r4, r5, r6, lr} 1916 ldr r3, [r3] 1917 cbz r3, .L241 1918 ldr r2, .L243+4 1919 movs r5, #6 1920 movw r6, #65535 1921 ldrh r2, [r2] 1922 rsb r2, r2, r2, lsl #3 1923 asrs r2, r2, #3 1924 cmp r0, r2 1925 it gt 1926 uxthgt r0, r2 1927 ldr r2, .L243+8 1928 ldr r1, [r2] 1929 ldr r2, .L243+12 1930 subs r3, r3, r1 1931 asrs r3, r3, #1 1932 muls r3, r2, r3 1933 movs r2, #0 1934 uxth r3, r3 1935.L238: 1936 uxth r4, r2 1937 cmp r0, r4 1938 bls .L240 1939 mul r4, r5, r3 1940 adds r2, r2, #1 1941 ldrh r4, [r1, r4] 1942 cmp r4, r6 1943 bne .L242 1944.L240: 1945 ldr r2, .L243+16 1946 ldr r2, [r2] 1947 ldrh r0, [r2, r3, lsl #1] 1948 pop {r4, r5, r6, pc} 1949.L242: 1950 mov r3, r4 1951 b .L238 1952.L241: 1953 mov r0, r3 1954 pop {r4, r5, r6, pc} 1955.L244: 1956 .align 2 1957.L243: 1958 .word .LANCHOR47 1959 .word .LANCHOR48 1960 .word .LANCHOR40 1961 .word -1431655765 1962 .word .LANCHOR43 1963 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount 1964 .section .text.FtlPrintInfo2buf,"ax",%progbits 1965 .align 1 1966 .global FtlPrintInfo2buf 1967 .syntax unified 1968 .thumb 1969 .thumb_func 1970 .fpu softvfp 1971 .type FtlPrintInfo2buf, %function 1972FtlPrintInfo2buf: 1973 @ args = 0, pretend = 0, frame = 0 1974 @ frame_needed = 0, uses_anonymous_args = 0 1975 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 1976 mov r8, r0 1977 ldr r1, .L257 1978 bl sprintf 1979 ldr r3, .L257+4 1980 add r5, r8, r0 1981 ldr r1, .L257+8 1982 mov r0, r5 1983 ldr r4, .L257+12 1984 ldr r2, [r3] 1985 bl sprintf 1986 add r5, r5, r0 1987 ldr r1, .L257+16 1988 mov r0, r5 1989 ldr r10, .L257+352 1990 bl sprintf 1991 ldr r3, .L257+20 1992 add r5, r5, r0 1993 ldr r1, .L257+24 1994 mov r0, r5 1995 ldr r6, .L257+28 1996 ldr r2, [r3] 1997 bl sprintf 1998 ldr r3, .L257+32 1999 add r5, r5, r0 2000 ldr r1, .L257+36 2001 mov r0, r5 2002 ldr r7, .L257+40 2003 ldr r2, [r3] 2004 bl sprintf 2005 ldr r3, .L257+44 2006 add r5, r5, r0 2007 ldr r1, .L257+48 2008 mov r0, r5 2009 ldr fp, .L257+356 2010 ldr r2, [r3] 2011 bl sprintf 2012 ldr r3, .L257+52 2013 add r5, r5, r0 2014 ldr r1, .L257+56 2015 mov r0, r5 2016 ldr r2, [r3] 2017 bl sprintf 2018 ldr r3, .L257+60 2019 add r5, r5, r0 2020 ldr r1, .L257+64 2021 mov r0, r5 2022 ldr r2, [r3] 2023 bl sprintf 2024 ldr r3, .L257+68 2025 add r5, r5, r0 2026 ldr r1, .L257+72 2027 mov r0, r5 2028 ldr r2, [r3] 2029 bl sprintf 2030 ldr r3, .L257+76 2031 add r5, r5, r0 2032 ldr r1, .L257+80 2033 mov r0, r5 2034 ldr r2, [r3] 2035 bl sprintf 2036 ldr r3, .L257+84 2037 add r5, r5, r0 2038 ldr r1, .L257+88 2039 mov r0, r5 2040 ldr r2, [r3] 2041 bl sprintf 2042 ldr r3, .L257+92 2043 add r5, r5, r0 2044 ldr r1, .L257+96 2045 mov r0, r5 2046 ldr r2, [r3] 2047 lsrs r2, r2, #11 2048 bl sprintf 2049 ldr r3, .L257+100 2050 add r5, r5, r0 2051 ldr r1, .L257+104 2052 mov r0, r5 2053 ldr r2, [r3] 2054 lsrs r2, r2, #11 2055 bl sprintf 2056 ldr r3, .L257+108 2057 add r5, r5, r0 2058 ldr r1, .L257+112 2059 mov r0, r5 2060 ldr r2, [r3] 2061 bl sprintf 2062 ldr r3, .L257+116 2063 add r5, r5, r0 2064 ldr r1, .L257+120 2065 mov r0, r5 2066 ldr r2, [r3] 2067 bl sprintf 2068 add r5, r5, r0 2069 ldrh r2, [r4, #6] 2070 ldr r1, .L257+124 2071 mov r0, r5 2072 bl sprintf 2073 add r5, r5, r0 2074 ldrh r2, [r10] 2075 ldr r1, .L257+128 2076 mov r0, r5 2077 bl sprintf 2078 ldr r3, .L257+132 2079 add r5, r5, r0 2080 ldr r1, .L257+136 2081 mov r0, r5 2082 ldr r2, [r3] 2083 bl sprintf 2084 ldr r3, .L257+140 2085 add r5, r5, r0 2086 ldr r1, .L257+144 2087 mov r0, r5 2088 ldr r2, [r3] 2089 bl sprintf 2090 ldr r3, .L257+148 2091 add r5, r5, r0 2092 ldr r1, .L257+152 2093 mov r0, r5 2094 ldr r2, [r3] 2095 bl sprintf 2096 ldr r3, .L257+156 2097 add r5, r5, r0 2098 ldr r1, .L257+160 2099 mov r0, r5 2100 ldr r2, [r3] 2101 bl sprintf 2102 ldr r3, .L257+164 2103 add r5, r5, r0 2104 ldr r1, .L257+168 2105 mov r0, r5 2106 ldr r2, [r3] 2107 bl sprintf 2108 ldr r3, .L257+172 2109 add r5, r5, r0 2110 ldr r1, .L257+176 2111 mov r0, r5 2112 ldr r2, [r3] 2113 bl sprintf 2114 add r5, r5, r0 2115 ldrh r2, [r6, #30] 2116 ldr r1, .L257+180 2117 mov r0, r5 2118 bl sprintf 2119 add r5, r5, r0 2120 ldrh r2, [r6, #28] 2121 ldr r1, .L257+184 2122 mov r0, r5 2123 bl sprintf 2124 ldr r3, .L257+188 2125 add r5, r5, r0 2126 ldr r1, .L257+192 2127 mov r0, r5 2128 ldr r6, .L257+196 2129 ldr r2, [r3] 2130 bl sprintf 2131 ldr r3, .L257+200 2132 add r5, r5, r0 2133 ldr r1, .L257+204 2134 mov r0, r5 2135 ldr r2, [r3] 2136 bl sprintf 2137 ldr r3, .L257+208 2138 add r5, r5, r0 2139 ldr r1, .L257+212 2140 mov r0, r5 2141 ldr r2, [r3] 2142 bl sprintf 2143 ldr r3, .L257+216 2144 add r5, r5, r0 2145 ldr r1, .L257+220 2146 mov r0, r5 2147 ldrh r2, [r3, #6] 2148 bl sprintf 2149 ldr r3, .L257+224 2150 add r5, r5, r0 2151 ldr r1, .L257+228 2152 mov r0, r5 2153 ldrh r2, [r3] 2154 bl sprintf 2155 ldr r3, .L257+232 2156 add r5, r5, r0 2157 ldr r1, .L257+236 2158 mov r0, r5 2159 ldrh r2, [r3] 2160 bl sprintf 2161 ldr r3, .L257+240 2162 add r5, r5, r0 2163 ldr r1, .L257+244 2164 mov r0, r5 2165 ldr r2, [r3] 2166 bl sprintf 2167 ldr r3, .L257+248 2168 add r5, r5, r0 2169 ldr r1, .L257+252 2170 mov r0, r5 2171 ldrh r2, [r3] 2172 bl sprintf 2173 ldrh r2, [r4] 2174 add r5, r5, r0 2175 ldr r4, .L257+256 2176 mov r0, r5 2177 ldr r1, .L257+260 2178 bl sprintf 2179 add r5, r5, r0 2180 ldrh r2, [r4, #2] 2181 ldr r1, .L257+264 2182 mov r0, r5 2183 bl sprintf 2184 add r5, r5, r0 2185 ldrb r2, [r4, #6] @ zero_extendqisi2 2186 ldr r1, .L257+268 2187 mov r0, r5 2188 bl sprintf 2189 add r5, r5, r0 2190 ldrh r2, [r4] 2191 ldr r1, .L257+272 2192 mov r0, r5 2193 bl sprintf 2194 add r5, r5, r0 2195 ldrb r2, [r4, #8] @ zero_extendqisi2 2196 ldr r1, .L257+276 2197 mov r0, r5 2198 bl sprintf 2199 add r5, r5, r0 2200 ldrh r2, [r4, #4] 2201 ldr r1, .L257+280 2202 mov r0, r5 2203 bl sprintf 2204 ldr r3, [r6] 2205 add r5, r5, r0 2206 ldrh r2, [r4] 2207 mov r0, r5 2208 ldr r4, .L257+284 2209 ldr r1, .L257+288 2210 ldrh r2, [r3, r2, lsl #1] 2211 bl sprintf 2212 add r5, r5, r0 2213 ldrh r2, [r4, #2] 2214 ldr r1, .L257+292 2215 mov r0, r5 2216 bl sprintf 2217 add r5, r5, r0 2218 ldrb r2, [r4, #6] @ zero_extendqisi2 2219 ldr r1, .L257+296 2220 mov r0, r5 2221 bl sprintf 2222 add r5, r5, r0 2223 ldrh r2, [r4] 2224 ldr r1, .L257+300 2225 mov r0, r5 2226 bl sprintf 2227 add r5, r5, r0 2228 ldrb r2, [r4, #8] @ zero_extendqisi2 2229 ldr r1, .L257+304 2230 mov r0, r5 2231 bl sprintf 2232 add r5, r5, r0 2233 ldrh r2, [r4, #4] 2234 ldr r1, .L257+308 2235 mov r0, r5 2236 bl sprintf 2237 ldr r3, [r6] 2238 add r5, r5, r0 2239 ldrh r2, [r4] 2240 mov r0, r5 2241 ldr r4, .L257+312 2242 ldr r1, .L257+316 2243 ldrh r2, [r3, r2, lsl #1] 2244 bl sprintf 2245 add r5, r5, r0 2246 ldrh r2, [r4, #2] 2247 ldr r1, .L257+320 2248 mov r0, r5 2249 bl sprintf 2250 add r5, r5, r0 2251 ldrb r2, [r4, #6] @ zero_extendqisi2 2252 ldr r1, .L257+324 2253 mov r0, r5 2254 bl sprintf 2255 add r5, r5, r0 2256 ldrh r2, [r4] 2257 ldr r1, .L257+328 2258 mov r0, r5 2259 bl sprintf 2260 add r5, r5, r0 2261 ldrb r2, [r4, #8] @ zero_extendqisi2 2262 ldr r1, .L257+332 2263 mov r0, r5 2264 bl sprintf 2265 add r5, r5, r0 2266 ldrh r2, [r4, #4] 2267 ldr r1, .L257+336 2268 mov r0, r5 2269 bl sprintf 2270 add r5, r5, r0 2271 ldrh r2, [r7, #2] 2272 ldr r1, .L257+340 2273 mov r0, r5 2274 bl sprintf 2275 add r5, r5, r0 2276 ldrb r2, [r7, #6] @ zero_extendqisi2 2277 ldr r1, .L257+344 2278 mov r0, r5 2279 bl sprintf 2280 add r5, r5, r0 2281 ldrh r2, [r7] 2282 ldr r1, .L257+348 2283 mov r0, r5 2284 b .L258 2285.L259: 2286 .align 2 2287.L257: 2288 .word .LC2 2289 .word .LANCHOR26 2290 .word .LC3 2291 .word .LANCHOR37 2292 .word .LC4 2293 .word .LANCHOR61 2294 .word .LC5 2295 .word .LANCHOR39 2296 .word .LANCHOR59 2297 .word .LC6 2298 .word .LANCHOR80 2299 .word .LANCHOR62 2300 .word .LC7 2301 .word .LANCHOR63 2302 .word .LC8 2303 .word .LANCHOR64 2304 .word .LC9 2305 .word .LANCHOR65 2306 .word .LC10 2307 .word .LANCHOR66 2308 .word .LC11 2309 .word .LANCHOR67 2310 .word .LC12 2311 .word .LANCHOR68 2312 .word .LC13 2313 .word .LANCHOR69 2314 .word .LC14 2315 .word .LANCHOR70 2316 .word .LC15 2317 .word .LANCHOR71 2318 .word .LC16 2319 .word .LC17 2320 .word .LC18 2321 .word .LANCHOR72 2322 .word .LC19 2323 .word .LANCHOR73 2324 .word .LC20 2325 .word .LANCHOR74 2326 .word .LC21 2327 .word .LANCHOR75 2328 .word .LC22 2329 .word .LANCHOR76 2330 .word .LC23 2331 .word .LANCHOR77 2332 .word .LC24 2333 .word .LC25 2334 .word .LC26 2335 .word .LANCHOR34 2336 .word .LC27 2337 .word .LANCHOR42 2338 .word .LANCHOR31 2339 .word .LC28 2340 .word .LANCHOR2 2341 .word .LC29 2342 .word .LANCHOR38 2343 .word .LC30 2344 .word .LANCHOR5 2345 .word .LC31 2346 .word .LANCHOR78 2347 .word .LC32 2348 .word .LANCHOR7 2349 .word .LC33 2350 .word .LANCHOR79 2351 .word .LC34 2352 .word .LANCHOR51 2353 .word .LC35 2354 .word .LC36 2355 .word .LC37 2356 .word .LC38 2357 .word .LC39 2358 .word .LC40 2359 .word .LANCHOR52 2360 .word .LC41 2361 .word .LC42 2362 .word .LC43 2363 .word .LC44 2364 .word .LC45 2365 .word .LC46 2366 .word .LANCHOR53 2367 .word .LC47 2368 .word .LC48 2369 .word .LC49 2370 .word .LC50 2371 .word .LC51 2372 .word .LC52 2373 .word .LC53 2374 .word .LC54 2375 .word .LC55 2376 .word .LANCHOR48 2377 .word .LANCHOR81 2378.L258: 2379 bl sprintf 2380 add r5, r5, r0 2381 ldrb r2, [r7, #8] @ zero_extendqisi2 2382 ldr r1, .L260 2383 mov r0, r5 2384 bl sprintf 2385 add r5, r5, r0 2386 ldrh r2, [r7, #4] 2387 ldr r1, .L260+4 2388 mov r0, r5 2389 bl sprintf 2390 ldr r3, [fp, #76] 2391 add r5, r5, r0 2392 ldr r1, .L260+8 2393 mov r0, r5 2394 str r3, [sp] 2395 ldr r3, [fp, #84] 2396 ldr r2, [fp, #80] 2397 bl sprintf 2398 adds r4, r5, r0 2399 ldr r2, [fp, #72] 2400 ldr r1, .L260+12 2401 mov r0, r4 2402 bl sprintf 2403 add r4, r4, r0 2404 ldr r2, [fp, #96] 2405 ldr r1, .L260+16 2406 mov r0, r4 2407 bl sprintf 2408 ldr r3, .L260+20 2409 add r4, r4, r0 2410 ldr r1, .L260+24 2411 mov r0, r4 2412 ldrh r2, [r3] 2413 bl sprintf 2414 ldr r3, .L260+28 2415 add r4, r4, r0 2416 ldr r1, .L260+32 2417 mov r0, r4 2418 ldrh r2, [r3] 2419 bl sprintf 2420 ldr r3, .L260+36 2421 add r4, r4, r0 2422 ldr r1, .L260+40 2423 mov r0, r4 2424 ldr r2, [r3] 2425 bl sprintf 2426 ldr r3, .L260+44 2427 add r4, r4, r0 2428 ldr r1, .L260+48 2429 mov r0, r4 2430 ldrh r2, [r3] 2431 bl sprintf 2432 add r4, r4, r0 2433 bl GetFreeBlockMinEraseCount 2434 ldr r1, .L260+52 2435 mov r2, r0 2436 mov r0, r4 2437 bl sprintf 2438 add r4, r4, r0 2439 ldrh r0, [r10] 2440 bl GetFreeBlockMaxEraseCount 2441 ldr r1, .L260+56 2442 mov r2, r0 2443 mov r0, r4 2444 bl sprintf 2445 ldr r3, .L260+60 2446 add r4, r4, r0 2447 ldr r3, [r3] 2448 cmp r3, #1 2449 beq .L246 2450.L251: 2451 sub r0, r4, r8 2452 add sp, sp, #16 2453 @ sp needed 2454 pop {r4, r5, r6, r7, r8, r10, fp, pc} 2455.L246: 2456 ldrh r3, [r7] 2457 movw r2, #65535 2458 cmp r3, r2 2459 beq .L248 2460 ldr r2, [r6] 2461 mov r0, r4 2462 ldr r1, .L260+64 2463 ldrh r2, [r2, r3, lsl #1] 2464 bl sprintf 2465 add r4, r4, r0 2466.L248: 2467 movs r0, #0 2468 ldr r5, .L260+68 2469 ldr fp, .L260+84 2470 movs r7, #0 2471 bl List_get_gc_head_node 2472 uxth r3, r0 2473.L250: 2474 movw r2, #65535 2475 cmp r3, r2 2476 beq .L249 2477 ldr r2, [fp] 2478 mov r10, #6 2479 mul r10, r10, r3 2480 mov r0, r4 2481 ldr r1, .L260+72 2482 ldrh r2, [r2, r3, lsl #1] 2483 str r2, [sp, #8] 2484 ldr r2, [r5] 2485 add r2, r2, r10 2486 ldrh r2, [r2, #4] 2487 str r2, [sp, #4] 2488 ldr r2, [r6] 2489 ldrh r2, [r2, r3, lsl #1] 2490 str r2, [sp] 2491 mov r2, r7 2492 bl sprintf 2493 adds r7, r7, #1 2494 ldr r3, [r5] 2495 cmp r7, #16 2496 add r4, r4, r0 2497 ldrh r3, [r3, r10] 2498 bne .L250 2499.L249: 2500 ldr r3, .L260+76 2501 movs r7, #0 2502 ldr r2, [r5] 2503 ldr r10, .L260+84 2504 ldr r3, [r3] 2505 ldr fp, .L260+88 2506 subs r3, r3, r2 2507 ldr r2, .L260+80 2508 asrs r3, r3, #1 2509 muls r3, r2, r3 2510 uxth r3, r3 2511.L252: 2512 movw r2, #65535 2513 cmp r3, r2 2514 beq .L251 2515 ldr r2, [r10] 2516 movs r6, #6 2517 muls r6, r3, r6 2518 mov r0, r4 2519 mov r1, fp 2520 ldrh r2, [r2, r3, lsl #1] 2521 str r2, [sp, #4] 2522 ldr r2, [r5] 2523 add r2, r2, r6 2524 ldrh r2, [r2, #4] 2525 str r2, [sp] 2526 mov r2, r7 2527 adds r7, r7, #1 2528 bl sprintf 2529 cmp r7, #4 2530 add r4, r4, r0 2531 beq .L251 2532 ldr r3, [r5] 2533 ldrh r3, [r3, r6] 2534 b .L252 2535.L261: 2536 .align 2 2537.L260: 2538 .word .LC56 2539 .word .LC57 2540 .word .LC58 2541 .word .LC59 2542 .word .LC60 2543 .word .LANCHOR82 2544 .word .LC61 2545 .word .LANCHOR83 2546 .word .LC62 2547 .word .LANCHOR84 2548 .word .LC63 2549 .word .LANCHOR85 2550 .word .LC64 2551 .word .LC65 2552 .word .LC66 2553 .word .LANCHOR86 2554 .word .LC67 2555 .word .LANCHOR40 2556 .word .LC68 2557 .word .LANCHOR47 2558 .word -1431655765 2559 .word .LANCHOR43 2560 .word .LC69 2561 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf 2562 .section .text.rknand_proc_ftlread,"ax",%progbits 2563 .align 1 2564 .global rknand_proc_ftlread 2565 .syntax unified 2566 .thumb 2567 .thumb_func 2568 .fpu softvfp 2569 .type rknand_proc_ftlread, %function 2570rknand_proc_ftlread: 2571 @ args = 0, pretend = 0, frame = 0 2572 @ frame_needed = 0, uses_anonymous_args = 0 2573 push {r3, r4, r5, lr} 2574 mov r5, r0 2575 ldr r2, .L263 2576 ldr r1, .L263+4 2577 bl sprintf 2578 adds r4, r5, r0 2579 mov r0, r4 2580 bl FtlPrintInfo2buf 2581 add r0, r0, r4 2582 subs r0, r0, r5 2583 pop {r3, r4, r5, pc} 2584.L264: 2585 .align 2 2586.L263: 2587 .word .LC70 2588 .word .LC71 2589 .size rknand_proc_ftlread, .-rknand_proc_ftlread 2590 .section .text.GetSwlReplaceBlock,"ax",%progbits 2591 .align 1 2592 .global GetSwlReplaceBlock 2593 .syntax unified 2594 .thumb 2595 .thumb_func 2596 .fpu softvfp 2597 .type GetSwlReplaceBlock, %function 2598GetSwlReplaceBlock: 2599 @ args = 0, pretend = 0, frame = 8 2600 @ frame_needed = 0, uses_anonymous_args = 0 2601 push {r4, r5, r6, r7, r8, r10, fp, lr} 2602 sub sp, sp, #24 2603 ldr r3, .L293 2604 ldr r6, .L293+4 2605 ldr r5, [r3] 2606 mov r10, r3 2607 ldr r1, [r6] 2608 cmp r1, r5 2609 bcs .L266 2610 ldr r2, .L293+8 2611 movs r3, #0 2612 ldr r4, .L293+12 2613 mov r0, r3 2614 ldrh r1, [r2] 2615 ldr r2, .L293+16 2616 str r3, [r4] 2617 ldr r7, [r2] 2618 mov r2, r3 2619.L267: 2620 cmp r2, r1 2621 bcc .L268 2622 cbz r3, .L269 2623 str r0, [r4] 2624.L269: 2625 ldr r7, [r4] 2626 mov r0, r7 2627 bl __aeabi_uidiv 2628 ldr r3, .L293+20 2629 str r0, [r6] 2630 ldr r0, [r3] 2631 ldr r3, .L293+24 2632 subs r0, r7, r0 2633 ldrh r1, [r3] 2634 bl __aeabi_uidiv 2635 str r0, [r4] 2636.L270: 2637 ldr r6, [r6] 2638 add r3, r5, #256 2639 cmp r3, r6 2640 bls .L275 2641 ldr r2, .L293+28 2642 add r3, r5, #768 2643 ldr r2, [r2] 2644 cmp r3, r2 2645 bls .L275 2646.L277: 2647 movw r4, #65535 2648.L276: 2649 mov r0, r4 2650 add sp, sp, #24 2651 @ sp needed 2652 pop {r4, r5, r6, r7, r8, r10, fp, pc} 2653.L268: 2654 ldrh r3, [r7, r2, lsl #1] 2655 adds r2, r2, #1 2656 add r0, r0, r3 2657 movs r3, #1 2658 b .L267 2659.L266: 2660 ldr r2, .L293+28 2661 ldr r3, [r2] 2662 cmp r1, r3 2663 bls .L270 2664 adds r3, r3, #1 2665 ldr r0, .L293+8 2666 str r3, [r2] 2667 movs r2, #0 2668 ldr r3, .L293+16 2669 ldr r3, [r3] 2670 subs r3, r3, #2 2671.L272: 2672 ldrh r1, [r0] 2673 cmp r2, r1 2674 bcs .L270 2675 ldrh r1, [r3, #2] 2676 adds r2, r2, #1 2677 adds r1, r1, #1 2678 strh r1, [r3, #2]! @ movhi 2679 b .L272 2680.L275: 2681 ldr r3, .L293+32 2682 ldrh r0, [r3] 2683 add r0, r0, r0, lsl #1 2684 ubfx r0, r0, #2, #16 2685 bl GetFreeBlockMaxEraseCount 2686 add r3, r5, #64 2687 mov r2, r0 2688 cmp r0, r3 2689 bcc .L277 2690 ldr r3, .L293+36 2691 ldr r3, [r3] 2692 cmp r3, #0 2693 beq .L277 2694 ldr r1, .L293+8 2695 movs r0, #0 2696 mov fp, #6 2697 ldrh r1, [r1] 2698 str r1, [sp, #20] 2699 ldr r1, .L293+40 2700 ldr r8, [r1] 2701 ldr r1, .L293+16 2702 ldr r7, [r1] 2703 movw r1, #65535 2704 mov ip, r1 2705.L278: 2706 ldrh lr, [r3] 2707 movw r4, #65535 2708 cmp lr, r4 2709 bne .L281 2710 mov r4, ip 2711.L280: 2712 movw r3, #65535 2713 cmp r4, r3 2714 beq .L277 2715 ldrh r7, [r7, r4, lsl #1] 2716 lsl r8, r4, #1 2717 cmp r5, r7 2718 bcs .L282 2719 bl GetFreeBlockMinEraseCount 2720 cmp r5, r0 2721 it cc 2722 strcc r1, [r10] 2723.L282: 2724 cmp r6, r7 2725 bls .L277 2726 add r3, r7, #128 2727 cmp r2, r3 2728 ble .L277 2729 add r3, r7, #256 2730 ldr r0, .L293+28 2731 cmp r6, r3 2732 bhi .L283 2733 ldr r1, [r0] 2734 add r3, r7, #768 2735 cmp r3, r1 2736 bcs .L277 2737.L283: 2738 ldr r3, .L293+44 2739 mov r1, r4 2740 str r2, [sp, #8] 2741 mov r2, r6 2742 str r7, [sp, #4] 2743 ldr r3, [r3] 2744 ldrh r3, [r3, r8] 2745 str r3, [sp] 2746 ldr r3, [r0] 2747 ldr r0, .L293+48 2748 bl printf 2749 ldr r3, .L293+52 2750 movs r2, #1 2751 str r2, [r3] 2752 b .L276 2753.L281: 2754 adds r0, r0, #1 2755 ldr r4, [sp, #20] 2756 uxth r0, r0 2757 cmp r0, r4 2758 bhi .L277 2759 ldrh r4, [r3, #4] 2760 cbz r4, .L279 2761 ldr r4, .L293+56 2762 sub r3, r3, r8 2763 asrs r3, r3, #1 2764 muls r3, r4, r3 2765 uxth r4, r3 2766 ldrh r3, [r7, r4, lsl #1] 2767 cmp r5, r3 2768 bcs .L280 2769 cmp r1, r3 2770 itt hi 2771 movhi r1, r3 2772 movhi ip, r4 2773.L279: 2774 mla r3, fp, lr, r8 2775 b .L278 2776.L294: 2777 .align 2 2778.L293: 2779 .word .LANCHOR77 2780 .word .LANCHOR74 2781 .word .LANCHOR5 2782 .word .LANCHOR72 2783 .word .LANCHOR43 2784 .word .LANCHOR73 2785 .word .LANCHOR14 2786 .word .LANCHOR76 2787 .word .LANCHOR48 2788 .word .LANCHOR41 2789 .word .LANCHOR40 2790 .word .LANCHOR42 2791 .word .LC72 2792 .word .LANCHOR87 2793 .word -1431655765 2794 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock 2795 .section .text.free_data_superblock,"ax",%progbits 2796 .align 1 2797 .global free_data_superblock 2798 .syntax unified 2799 .thumb 2800 .thumb_func 2801 .fpu softvfp 2802 .type free_data_superblock, %function 2803free_data_superblock: 2804 @ args = 0, pretend = 0, frame = 0 2805 @ frame_needed = 0, uses_anonymous_args = 0 2806 movw r2, #65535 2807 push {r3, lr} 2808 cmp r0, r2 2809 beq .L296 2810 ldr r2, .L297 2811 movs r1, #0 2812 ldr r2, [r2] 2813 strh r1, [r2, r0, lsl #1] @ movhi 2814 bl INSERT_FREE_LIST 2815.L296: 2816 movs r0, #0 2817 pop {r3, pc} 2818.L298: 2819 .align 2 2820.L297: 2821 .word .LANCHOR42 2822 .size free_data_superblock, .-free_data_superblock 2823 .section .text.get_new_active_ppa,"ax",%progbits 2824 .align 1 2825 .global get_new_active_ppa 2826 .syntax unified 2827 .thumb 2828 .thumb_func 2829 .fpu softvfp 2830 .type get_new_active_ppa, %function 2831get_new_active_ppa: 2832 @ args = 0, pretend = 0, frame = 0 2833 @ frame_needed = 0, uses_anonymous_args = 0 2834 ldrh r2, [r0] 2835 push {r3, r4, r5, r6, r7, lr} 2836 movw r3, #65535 2837 mov r4, r0 2838 cmp r2, r3 2839 bne .L300 2840 movw r2, #2710 2841 ldr r1, .L313 2842 ldr r0, .L313+4 2843 bl printf 2844.L300: 2845 ldr r5, .L313+8 2846 ldrh r2, [r4, #2] 2847 ldrh r3, [r5] 2848 cmp r2, r3 2849 bne .L301 2850 movw r2, #2711 2851 ldr r1, .L313 2852 ldr r0, .L313+4 2853 bl printf 2854.L301: 2855 ldrh r3, [r4, #4] 2856 cbnz r3, .L302 2857 movw r2, #2712 2858 ldr r1, .L313 2859 ldr r0, .L313+4 2860 bl printf 2861.L302: 2862 ldrb r2, [r4, #6] @ zero_extendqisi2 2863 movs r3, #0 2864 strb r3, [r4, #10] 2865 movw r6, #65535 2866 adds r2, r2, #8 2867 ldrh r0, [r4, r2, lsl #1] 2868 ldr r2, .L313+12 2869 ldrh r1, [r2] 2870 mov r2, r3 2871.L303: 2872 cmp r0, r6 2873 ldrb r3, [r4, #6] @ zero_extendqisi2 2874 beq .L305 2875 ldrh r2, [r4, #4] 2876 ldrh r6, [r4, #2] 2877 subs r2, r2, #1 2878 uxth r2, r2 2879 orr r6, r6, r0, lsl #10 2880 movw r0, #65535 2881 strh r2, [r4, #4] @ movhi 2882.L307: 2883 adds r3, r3, #1 2884 uxtb r3, r3 2885 cmp r1, r3 2886 itttt eq 2887 ldrheq r3, [r4, #2] 2888 addeq r3, r3, #1 2889 strheq r3, [r4, #2] @ movhi 2890 moveq r3, #0 2891 add r7, r3, #8 2892 ldrh r7, [r4, r7, lsl #1] 2893 cmp r7, r0 2894 beq .L307 2895 strb r3, [r4, #6] 2896 ldrh r1, [r4, #2] 2897 ldrh r3, [r5] 2898 cmp r1, r3 2899 bne .L299 2900 cbz r2, .L299 2901 movw r2, #2733 2902 ldr r1, .L313 2903 ldr r0, .L313+4 2904 bl printf 2905.L299: 2906 mov r0, r6 2907 pop {r3, r4, r5, r6, r7, pc} 2908.L305: 2909 adds r3, r3, #1 2910 uxtb r3, r3 2911 cmp r3, r1 2912 strb r3, [r4, #6] 2913 itttt eq 2914 ldrheq r3, [r4, #2] 2915 strbeq r2, [r4, #6] 2916 addeq r3, r3, #1 2917 strheq r3, [r4, #2] @ movhi 2918 ldrb r3, [r4, #6] @ zero_extendqisi2 2919 adds r3, r3, #8 2920 ldrh r0, [r4, r3, lsl #1] 2921 b .L303 2922.L314: 2923 .align 2 2924.L313: 2925 .word .LANCHOR88 2926 .word .LC1 2927 .word .LANCHOR19 2928 .word .LANCHOR3 2929 .size get_new_active_ppa, .-get_new_active_ppa 2930 .section .text.FtlGcBufInit,"ax",%progbits 2931 .align 1 2932 .global FtlGcBufInit 2933 .syntax unified 2934 .thumb 2935 .thumb_func 2936 .fpu softvfp 2937 .type FtlGcBufInit, %function 2938FtlGcBufInit: 2939 @ args = 0, pretend = 0, frame = 8 2940 @ frame_needed = 0, uses_anonymous_args = 0 2941 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 2942 movs r3, #0 2943 ldr r1, .L320 2944 mov fp, #1 2945 ldr r2, .L320+4 2946 ldr r5, [r1] 2947 ldr r1, .L320+8 2948 str r3, [r2] 2949 ldr r2, .L320+12 2950 mov r0, r5 2951 ldr r1, [r1] 2952 ldrh r2, [r2] 2953 str r1, [sp, #4] 2954 ldr r1, .L320+16 2955 ldrh r1, [r1] 2956 str r1, [sp] 2957 ldr r1, .L320+20 2958 ldr r10, [r1] 2959 ldr r1, .L320+24 2960 ldrh r7, [r1] 2961 ldr r1, .L320+28 2962 ldr r4, [r1] 2963 movs r1, #12 2964 mla r1, r2, r1, r1 2965 adds r4, r4, #8 2966 add r8, r5, r1 2967 mov r1, r3 2968.L316: 2969 adds r0, r0, #12 2970 ldr r6, [sp] 2971 cmp r0, r8 2972 add ip, r3, r7 2973 add r4, r4, #20 2974 add lr, r1, r6 2975 bne .L317 2976 ldr r3, .L320+32 2977 mov lr, #12 2978 mov r8, #0 2979 ldr r0, [r3] 2980 ldr r3, .L320+8 2981 ldr r4, [r3] 2982 ldr r3, .L320+20 2983 ldr ip, [r3] 2984.L318: 2985 cmp r2, r0 2986 bcc .L319 2987 add sp, sp, #8 2988 @ sp needed 2989 pop {r4, r5, r6, r7, r8, r10, fp, pc} 2990.L317: 2991 bic r1, r1, #3 2992 bic r3, r3, #3 2993 mov r6, r1 2994 ldr r1, [sp, #4] 2995 add r3, r3, r10 2996 str fp, [r0, #-4] 2997 str r3, [r0, #-8] 2998 add r6, r6, r1 2999 mov r1, lr 3000 str r6, [r0, #-12] 3001 str r3, [r4, #-16] 3002 mov r3, ip 3003 str r6, [r4, #-20] 3004 b .L316 3005.L319: 3006 ldr r3, [sp] 3007 mul r10, lr, r2 3008 muls r3, r2, r3 3009 add r1, r5, r10 3010 str r8, [r1, #8] 3011 bic r3, r3, #3 3012 add r3, r3, r4 3013 str r3, [r5, r10] 3014 mul r3, r2, r7 3015 adds r2, r2, #1 3016 uxth r2, r2 3017 bic r3, r3, #3 3018 add r3, r3, ip 3019 str r3, [r1, #4] 3020 b .L318 3021.L321: 3022 .align 2 3023.L320: 3024 .word .LANCHOR90 3025 .word .LANCHOR89 3026 .word .LANCHOR91 3027 .word .LANCHOR3 3028 .word .LANCHOR23 3029 .word .LANCHOR92 3030 .word .LANCHOR24 3031 .word .LANCHOR93 3032 .word .LANCHOR94 3033 .size FtlGcBufInit, .-FtlGcBufInit 3034 .section .text.FtlGcBufFree,"ax",%progbits 3035 .align 1 3036 .global FtlGcBufFree 3037 .syntax unified 3038 .thumb 3039 .thumb_func 3040 .fpu softvfp 3041 .type FtlGcBufFree, %function 3042FtlGcBufFree: 3043 @ args = 0, pretend = 0, frame = 0 3044 @ frame_needed = 0, uses_anonymous_args = 0 3045 ldr r3, .L329 3046 mov ip, #12 3047 push {r4, r5, r6, r7, r8, r10, fp, lr} 3048 movs r4, #0 3049 mov fp, #20 3050 mov lr, r4 3051 ldr r7, [r3] 3052 ldr r3, .L329+4 3053 ldr r5, [r3] 3054.L323: 3055 uxth r3, r4 3056 cmp r1, r3 3057 bls .L322 3058 mla r8, fp, r3, r0 3059 movs r2, #0 3060.L324: 3061 uxth r3, r2 3062 cmp r7, r3 3063 bls .L325 3064 mul r3, ip, r3 3065 ldr r6, [r8, #8] 3066 adds r2, r2, #1 3067 add r10, r5, r3 3068 ldr r3, [r5, r3] 3069 cmp r3, r6 3070 bne .L324 3071 str lr, [r10, #8] 3072.L325: 3073 adds r4, r4, #1 3074 b .L323 3075.L322: 3076 pop {r4, r5, r6, r7, r8, r10, fp, pc} 3077.L330: 3078 .align 2 3079.L329: 3080 .word .LANCHOR94 3081 .word .LANCHOR90 3082 .size FtlGcBufFree, .-FtlGcBufFree 3083 .section .text.FtlGcBufAlloc,"ax",%progbits 3084 .align 1 3085 .global FtlGcBufAlloc 3086 .syntax unified 3087 .thumb 3088 .thumb_func 3089 .fpu softvfp 3090 .type FtlGcBufAlloc, %function 3091FtlGcBufAlloc: 3092 @ args = 0, pretend = 0, frame = 0 3093 @ frame_needed = 0, uses_anonymous_args = 0 3094 ldr r3, .L338 3095 movs r2, #0 3096 push {r4, r5, r6, r7, r8, r10, lr} 3097 mov ip, #12 3098 movs r7, #1 3099 mov lr, #20 3100 ldr r4, [r3] 3101 ldr r3, .L338+4 3102 ldr r5, [r3] 3103.L332: 3104 uxth r8, r2 3105 cmp r1, r8 3106 bhi .L336 3107 pop {r4, r5, r6, r7, r8, r10, pc} 3108.L336: 3109 mov r10, #0 3110.L333: 3111 uxth r3, r10 3112 cmp r4, r3 3113 bls .L334 3114 mla r3, ip, r3, r5 3115 add r10, r10, #1 3116 ldr r6, [r3, #8] 3117 cmp r6, #0 3118 bne .L333 3119 mla r8, lr, r8, r0 3120 str r7, [r3, #8] 3121 ldr r6, [r3] 3122 ldr r3, [r3, #4] 3123 str r6, [r8, #8] 3124 str r3, [r8, #12] 3125.L334: 3126 adds r2, r2, #1 3127 b .L332 3128.L339: 3129 .align 2 3130.L338: 3131 .word .LANCHOR94 3132 .word .LANCHOR90 3133 .size FtlGcBufAlloc, .-FtlGcBufAlloc 3134 .section .text.IsBlkInGcList,"ax",%progbits 3135 .align 1 3136 .global IsBlkInGcList 3137 .syntax unified 3138 .thumb 3139 .thumb_func 3140 .fpu softvfp 3141 .type IsBlkInGcList, %function 3142IsBlkInGcList: 3143 @ args = 0, pretend = 0, frame = 0 3144 @ frame_needed = 0, uses_anonymous_args = 0 3145 @ link register save eliminated. 3146 ldr r3, .L345 3147 ldr r2, .L345+4 3148 ldr r3, [r3] 3149 ldrh r2, [r2] 3150 add r2, r3, r2, lsl #1 3151.L341: 3152 cmp r3, r2 3153 bne .L343 3154 movs r0, #0 3155 bx lr 3156.L343: 3157 ldrh r1, [r3], #2 3158 cmp r1, r0 3159 bne .L341 3160 movs r0, #1 3161 bx lr 3162.L346: 3163 .align 2 3164.L345: 3165 .word .LANCHOR95 3166 .word .LANCHOR96 3167 .size IsBlkInGcList, .-IsBlkInGcList 3168 .section .text.FtlGcUpdatePage,"ax",%progbits 3169 .align 1 3170 .global FtlGcUpdatePage 3171 .syntax unified 3172 .thumb 3173 .thumb_func 3174 .fpu softvfp 3175 .type FtlGcUpdatePage, %function 3176FtlGcUpdatePage: 3177 @ args = 0, pretend = 0, frame = 0 3178 @ frame_needed = 0, uses_anonymous_args = 0 3179 push {r3, r4, r5, r6, r7, lr} 3180 mov r5, r0 3181 ldr r4, .L351 3182 ubfx r0, r0, #10, #16 3183 mov r6, r1 3184 mov r7, r2 3185 bl P2V_block_in_plane 3186 ldr r3, .L351+4 3187 ldrh r1, [r4] 3188 ldr r2, [r3] 3189 movs r3, #0 3190.L348: 3191 uxth ip, r3 3192 cmp ip, r1 3193 bcc .L350 3194 bne .L349 3195 strh r0, [r2, ip, lsl #1] @ movhi 3196 ldrh r3, [r4] 3197 adds r3, r3, #1 3198 strh r3, [r4] @ movhi 3199 b .L349 3200.L350: 3201 adds r3, r3, #1 3202 add ip, r2, r3, lsl #1 3203 ldrh ip, [ip, #-2] 3204 cmp ip, r0 3205 bne .L348 3206.L349: 3207 ldr r2, .L351+8 3208 movs r0, #12 3209 ldr r1, .L351+12 3210 ldrh r3, [r2] 3211 ldr r1, [r1] 3212 muls r0, r3, r0 3213 adds r3, r3, #1 3214 adds r4, r1, r0 3215 str r6, [r4, #4] 3216 str r7, [r4, #8] 3217 str r5, [r1, r0] 3218 strh r3, [r2] @ movhi 3219 pop {r3, r4, r5, r6, r7, pc} 3220.L352: 3221 .align 2 3222.L351: 3223 .word .LANCHOR96 3224 .word .LANCHOR95 3225 .word .LANCHOR97 3226 .word .LANCHOR98 3227 .size FtlGcUpdatePage, .-FtlGcUpdatePage 3228 .section .text.FtlGcRefreshBlock,"ax",%progbits 3229 .align 1 3230 .global FtlGcRefreshBlock 3231 .syntax unified 3232 .thumb 3233 .thumb_func 3234 .fpu softvfp 3235 .type FtlGcRefreshBlock, %function 3236FtlGcRefreshBlock: 3237 @ args = 0, pretend = 0, frame = 0 3238 @ frame_needed = 0, uses_anonymous_args = 0 3239 push {r3, r4, r5, lr} 3240 mov r1, r0 3241 mov r4, r0 3242 ldr r0, .L356 3243 bl printf 3244 ldr r0, .L356+4 3245 ldrh r5, [r0] 3246 cmp r4, r5 3247 beq .L354 3248 ldr r3, .L356+8 3249 ldrh r1, [r3] 3250 cmp r4, r1 3251 beq .L354 3252 movw r2, #65535 3253 cmp r5, r2 3254 bne .L355 3255 strh r4, [r0] @ movhi 3256.L354: 3257 movs r0, #0 3258 pop {r3, r4, r5, pc} 3259.L355: 3260 cmp r1, r2 3261 it eq 3262 strheq r4, [r3] @ movhi 3263 b .L354 3264.L357: 3265 .align 2 3266.L356: 3267 .word .LC73 3268 .word .LANCHOR99 3269 .word .LANCHOR100 3270 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock 3271 .section .text.FtlGcMarkBadPhyBlk,"ax",%progbits 3272 .align 1 3273 .global FtlGcMarkBadPhyBlk 3274 .syntax unified 3275 .thumb 3276 .thumb_func 3277 .fpu softvfp 3278 .type FtlGcMarkBadPhyBlk, %function 3279FtlGcMarkBadPhyBlk: 3280 @ args = 0, pretend = 0, frame = 0 3281 @ frame_needed = 0, uses_anonymous_args = 0 3282 push {r4, r5, r6, lr} 3283 mov r5, r0 3284 ldr r4, .L362 3285 bl P2V_block_in_plane 3286 mov r2, r5 3287 mov r6, r0 3288 ldrh r1, [r4] 3289 ldr r0, .L362+4 3290 bl printf 3291 mov r0, r6 3292 bl FtlGcRefreshBlock 3293 ldrh r3, [r4] 3294 movs r2, #0 3295 ldr r0, .L362+8 3296.L359: 3297 uxth r1, r2 3298 cmp r3, r1 3299 bhi .L361 3300 cmp r3, #15 3301 itttt ls 3302 addls r2, r3, #1 3303 strhls r2, [r4] @ movhi 3304 ldrls r2, .L362+8 3305 strhls r5, [r2, r3, lsl #1] @ movhi 3306 b .L360 3307.L361: 3308 adds r2, r2, #1 3309 add r1, r0, r2, lsl #1 3310 ldrh r1, [r1, #-2] 3311 cmp r1, r5 3312 bne .L359 3313.L360: 3314 movs r0, #0 3315 pop {r4, r5, r6, pc} 3316.L363: 3317 .align 2 3318.L362: 3319 .word .LANCHOR101 3320 .word .LC74 3321 .word .LANCHOR102 3322 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk 3323 .section .text.FtlGcReFreshBadBlk,"ax",%progbits 3324 .align 1 3325 .global FtlGcReFreshBadBlk 3326 .syntax unified 3327 .thumb 3328 .thumb_func 3329 .fpu softvfp 3330 .type FtlGcReFreshBadBlk, %function 3331FtlGcReFreshBadBlk: 3332 @ args = 0, pretend = 0, frame = 0 3333 @ frame_needed = 0, uses_anonymous_args = 0 3334 ldr r3, .L370 3335 push {r4, lr} 3336 ldrh r3, [r3] 3337 cbz r3, .L365 3338 ldr r2, .L370+4 3339 ldrh r1, [r2] 3340 movw r2, #65535 3341 cmp r1, r2 3342 bne .L365 3343 ldr r4, .L370+8 3344 ldrh r2, [r4] 3345 cmp r2, r3 3346 itt cs 3347 movcs r3, #0 3348 strhcs r3, [r4] @ movhi 3349 ldr r3, .L370+12 3350 ldrh r2, [r4] 3351 ldrh r0, [r3, r2, lsl #1] 3352 bl P2V_block_in_plane 3353 bl FtlGcRefreshBlock 3354 ldrh r3, [r4] 3355 adds r3, r3, #1 3356 strh r3, [r4] @ movhi 3357.L365: 3358 movs r0, #0 3359 pop {r4, pc} 3360.L371: 3361 .align 2 3362.L370: 3363 .word .LANCHOR101 3364 .word .LANCHOR99 3365 .word .LANCHOR103 3366 .word .LANCHOR102 3367 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk 3368 .section .text.ftl_malloc,"ax",%progbits 3369 .align 1 3370 .global ftl_malloc 3371 .syntax unified 3372 .thumb 3373 .thumb_func 3374 .fpu softvfp 3375 .type ftl_malloc, %function 3376ftl_malloc: 3377 @ args = 0, pretend = 0, frame = 0 3378 @ frame_needed = 0, uses_anonymous_args = 0 3379 @ link register save eliminated. 3380 movs r1, #0 3381 b kmalloc 3382 .size ftl_malloc, .-ftl_malloc 3383 .section .text.ftl_free,"ax",%progbits 3384 .align 1 3385 .global ftl_free 3386 .syntax unified 3387 .thumb 3388 .thumb_func 3389 .fpu softvfp 3390 .type ftl_free, %function 3391ftl_free: 3392 @ args = 0, pretend = 0, frame = 0 3393 @ frame_needed = 0, uses_anonymous_args = 0 3394 @ link register save eliminated. 3395 b free 3396 .size ftl_free, .-ftl_free 3397 .section .text.rknand_print_hex,"ax",%progbits 3398 .align 1 3399 .global rknand_print_hex 3400 .syntax unified 3401 .thumb 3402 .thumb_func 3403 .fpu softvfp 3404 .type rknand_print_hex, %function 3405rknand_print_hex: 3406 @ args = 0, pretend = 0, frame = 0 3407 @ frame_needed = 0, uses_anonymous_args = 0 3408 push {r4, r5, r6, r7, r8, r10, fp, lr} 3409 movs r6, #0 3410 mov fp, r0 3411 mov r7, r1 3412 mov r8, r2 3413 mov r10, r3 3414 mov r5, r6 3415 mov r4, r6 3416.L375: 3417 cmp r4, r10 3418 bcc .L381 3419 ldr r0, .L384 3420 pop {r4, r5, r6, r7, r8, r10, fp, lr} 3421 b printf 3422.L381: 3423 cbnz r5, .L376 3424 mov r2, r6 3425 mov r1, fp 3426 ldr r0, .L384+4 3427 bl printf 3428.L376: 3429 cmp r8, #4 3430 bne .L377 3431 ldr r1, [r7, r4, lsl #2] 3432.L383: 3433 ldr r0, .L384+8 3434.L382: 3435 adds r5, r5, #1 3436 bl printf 3437 cmp r5, #15 3438 bls .L380 3439 movs r5, #0 3440 ldr r0, .L384 3441 bl printf 3442.L380: 3443 adds r4, r4, #1 3444 add r6, r6, r8 3445 b .L375 3446.L377: 3447 cmp r8, #2 3448 bne .L379 3449 ldrsh r1, [r7, r4, lsl #1] 3450 b .L383 3451.L379: 3452 ldrb r1, [r7, r4] @ zero_extendqisi2 3453 ldr r0, .L384+12 3454 b .L382 3455.L385: 3456 .align 2 3457.L384: 3458 .word .LC78 3459 .word .LC75 3460 .word .LC76 3461 .word .LC77 3462 .size rknand_print_hex, .-rknand_print_hex 3463 .section .text.FlashReadPages,"ax",%progbits 3464 .align 1 3465 .global FlashReadPages 3466 .syntax unified 3467 .thumb 3468 .thumb_func 3469 .fpu softvfp 3470 .type FlashReadPages, %function 3471FlashReadPages: 3472 @ args = 0, pretend = 0, frame = 16 3473 @ frame_needed = 0, uses_anonymous_args = 0 3474 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 3475 mov r8, r1 3476 ldr r3, .L404 3477 mov r4, r0 3478 movs r5, #0 3479 ldr fp, .L404+12 3480 ldrh r2, [r3, #12] 3481 mov r10, r3 3482 str r2, [sp, #4] 3483.L387: 3484 cmp r5, r8 3485 bne .L394 3486 movs r0, #0 3487 add sp, sp, #16 3488 @ sp needed 3489 pop {r4, r5, r6, r7, r8, r10, fp, pc} 3490.L394: 3491 ldr r3, [r4, #8] 3492 cbz r3, .L388 3493 ldr r3, [r4, #12] 3494 cbnz r3, .L389 3495.L388: 3496 movs r2, #96 3497 ldr r1, .L404+4 3498 mov r0, fp 3499 bl printf 3500.L389: 3501 ldr r6, .L404+8 3502 add r2, sp, #8 3503 add r1, sp, #12 3504 ldr r0, [r4, #4] 3505 bl l2p_addr_tran.isra.0 3506 ldr r3, [r4, #12] 3507 ldr r2, [r4, #8] 3508 ldr r1, [sp, #12] 3509 ldrb r0, [sp, #8] @ zero_extendqisi2 3510 ldr r7, [r6, #12] 3511 blx r7 3512 ldrh r3, [r10, #14] 3513 str r0, [r4] 3514 cmp r3, #4 3515 bne .L391 3516 ldr r0, [sp, #4] 3517 ldr r3, [r4, #12] 3518 ldr r2, [r4, #8] 3519 ldr r1, [sp, #12] 3520 ldr r6, [r6, #12] 3521 adds r3, r3, #8 3522 add r2, r2, #2048 3523 add r1, r1, r0 3524 ldrb r0, [sp, #8] @ zero_extendqisi2 3525 blx r6 3526 adds r0, r0, #1 3527 beq .L392 3528 ldr r3, [r4, #12] 3529 ldr r2, [r3, #12] 3530 adds r2, r2, #1 3531 bne .L391 3532 ldr r2, [r3, #8] 3533 adds r2, r2, #1 3534 bne .L391 3535 ldr r3, [r3] 3536 adds r3, r3, #1 3537 beq .L391 3538.L392: 3539 mov r3, #-1 3540 str r3, [r4] 3541.L391: 3542 adds r5, r5, #1 3543 adds r4, r4, #20 3544 b .L387 3545.L405: 3546 .align 2 3547.L404: 3548 .word .LANCHOR0 3549 .word .LANCHOR104 3550 .word .LANCHOR105 3551 .word .LC1 3552 .size FlashReadPages, .-FlashReadPages 3553 .section .text.FtlLoadFactoryBbt,"ax",%progbits 3554 .align 1 3555 .global FtlLoadFactoryBbt 3556 .syntax unified 3557 .thumb 3558 .thumb_func 3559 .fpu softvfp 3560 .type FtlLoadFactoryBbt, %function 3561FtlLoadFactoryBbt: 3562 @ args = 0, pretend = 0, frame = 0 3563 @ frame_needed = 0, uses_anonymous_args = 0 3564 ldr r3, .L416 3565 push {r4, r5, r6, r7, r8, r10, fp, lr} 3566 movs r6, #0 3567 ldr r5, .L416+4 3568 ldr r3, [r3] 3569 ldr r7, .L416+8 3570 ldr r10, .L416+20 3571 str r3, [r5, #8] 3572 ldr r3, .L416+12 3573 ldr r8, [r3] 3574 str r8, [r5, #12] 3575.L407: 3576 ldr r3, .L416+16 3577 ldrh r3, [r3] 3578 cmp r6, r3 3579 bcc .L412 3580 movs r0, #0 3581 pop {r4, r5, r6, r7, r8, r10, fp, pc} 3582.L412: 3583 ldrh r4, [r10] 3584 movw r3, #65535 3585 ldr fp, .L416+4 3586 strh r3, [r7, #2]! @ movhi 3587 subs r4, r4, #1 3588 uxth r4, r4 3589.L408: 3590 ldrh r3, [r10] 3591 sub r2, r3, #15 3592 cmp r2, r4 3593 bgt .L410 3594 mla r3, r6, r3, r4 3595 movs r2, #1 3596 mov r1, r2 3597 mov r0, fp 3598 lsls r3, r3, #10 3599 str r3, [r5, #4] 3600 bl FlashReadPages 3601 ldr r3, [r5] 3602 adds r3, r3, #1 3603 beq .L409 3604 ldrh r2, [r8] 3605 movw r3, #61664 3606 cmp r2, r3 3607 bne .L409 3608 strh r4, [r7] @ movhi 3609.L410: 3610 adds r6, r6, #1 3611 b .L407 3612.L409: 3613 subs r4, r4, #1 3614 uxth r4, r4 3615 b .L408 3616.L417: 3617 .align 2 3618.L416: 3619 .word .LANCHOR107 3620 .word .LANCHOR106 3621 .word .LANCHOR37+10 3622 .word .LANCHOR108 3623 .word .LANCHOR10 3624 .word .LANCHOR17 3625 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt 3626 .section .text.FtlGetLastWrittenPage,"ax",%progbits 3627 .align 1 3628 .global FtlGetLastWrittenPage 3629 .syntax unified 3630 .thumb 3631 .thumb_func 3632 .fpu softvfp 3633 .type FtlGetLastWrittenPage, %function 3634FtlGetLastWrittenPage: 3635 @ args = 0, pretend = 0, frame = 88 3636 @ frame_needed = 0, uses_anonymous_args = 0 3637 cmp r1, #1 3638 push {r4, r5, r6, r7, r8, lr} 3639 it eq 3640 ldreq r3, .L427 3641 sub sp, sp, #88 3642 lsl r7, r0, #10 3643 mov r2, r1 3644 it ne 3645 ldrne r3, .L427+4 3646 mov r6, r1 3647 add r0, sp, #4 3648 movs r1, #1 3649 ldrh r5, [r3] 3650 ldr r3, .L427+8 3651 subs r5, r5, #1 3652 sxth r5, r5 3653 str r3, [sp, #12] 3654 add r3, sp, #24 3655 str r3, [sp, #16] 3656 orr r3, r5, r7 3657 str r3, [sp, #8] 3658 bl FlashReadPages 3659 ldr r3, [sp, #24] 3660 adds r3, r3, #1 3661 bne .L421 3662 mov r8, #0 3663.L422: 3664 cmp r8, r5 3665 ble .L425 3666.L421: 3667 mov r0, r5 3668 add sp, sp, #88 3669 @ sp needed 3670 pop {r4, r5, r6, r7, r8, pc} 3671.L425: 3672 add r3, r8, r5 3673 mov r2, r6 3674 add r3, r3, r3, lsr #31 3675 movs r1, #1 3676 add r0, sp, #4 3677 asrs r4, r3, #1 3678 sxth r3, r4 3679 orrs r3, r3, r7 3680 str r3, [sp, #8] 3681 bl FlashReadPages 3682 ldr r3, [sp, #24] 3683 adds r3, r3, #1 3684 bne .L423 3685 ldr r3, [sp, #28] 3686 adds r3, r3, #1 3687 bne .L423 3688 subs r4, r4, #1 3689 sxth r5, r4 3690 b .L422 3691.L423: 3692 adds r4, r4, #1 3693 sxth r8, r4 3694 b .L422 3695.L428: 3696 .align 2 3697.L427: 3698 .word .LANCHOR20 3699 .word .LANCHOR19 3700 .word ftl_temp_buf 3701 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage 3702 .section .text.FlashProgPages,"ax",%progbits 3703 .align 1 3704 .global FlashProgPages 3705 .syntax unified 3706 .thumb 3707 .thumb_func 3708 .fpu softvfp 3709 .type FlashProgPages, %function 3710FlashProgPages: 3711 @ args = 0, pretend = 0, frame = 40 3712 @ frame_needed = 0, uses_anonymous_args = 0 3713 push {r4, r5, r6, r7, r8, r10, fp, lr} 3714 sub sp, sp, #40 3715 str r3, [sp] 3716 mov r10, r1 3717 mov r7, r2 3718 mov r4, r0 3719 ldr r3, .L459 3720 mov r5, r0 3721 movs r6, #0 3722 ldrh r8, [r3, #12] 3723 str r3, [sp, #4] 3724.L430: 3725 cmp r6, r10 3726 bne .L438 3727 ldr r3, [sp] 3728 cmp r3, #0 3729 bne .L445 3730.L458: 3731 movs r0, #0 3732 add sp, sp, #40 3733 @ sp needed 3734 pop {r4, r5, r6, r7, r8, r10, fp, pc} 3735.L438: 3736 ldr r3, [r5, #8] 3737 cbz r3, .L431 3738 ldr r3, [r5, #12] 3739 cbnz r3, .L432 3740.L431: 3741 movs r2, #126 3742 ldr r1, .L459+4 3743 ldr r0, .L459+8 3744 bl printf 3745.L432: 3746 add r2, sp, #12 3747 add r1, sp, #16 3748 ldr r0, [r5, #4] 3749 bl l2p_addr_tran.isra.0 3750 ldr r3, .L459+12 3751 ldr r2, [r5, #8] 3752 ldr r1, [sp, #16] 3753 ldr fp, [r3, #8] 3754 ldrb r0, [sp, #12] @ zero_extendqisi2 3755 ldr r3, [r5, #12] 3756 blx fp 3757 cbnz r0, .L433 3758 str r0, [r5] 3759.L434: 3760 ldr r3, [sp, #4] 3761 ldrh r3, [r3, #14] 3762 cmp r3, #4 3763 bne .L436 3764 ldr r1, .L459+12 3765 ldr r3, [r5, #12] 3766 ldr r2, [r5, #8] 3767 ldr fp, [r1, #8] 3768 ldr r1, [sp, #16] 3769 adds r3, r3, #8 3770 add r2, r2, #2048 3771 ldrb r0, [sp, #12] @ zero_extendqisi2 3772 add r1, r1, r8 3773 blx fp 3774 cbz r0, .L436 3775 mov r3, #-1 3776 str r3, [r5] 3777.L436: 3778 adds r6, r6, #1 3779 adds r5, r5, #20 3780 b .L430 3781.L433: 3782 mov r3, #-1 3783 str r3, [r5] 3784 b .L434 3785.L443: 3786 movs r3, #0 3787 mov r2, r7 3788 str r3, [r8] 3789 movs r1, #1 3790 str r3, [r10] 3791 add r0, sp, #20 3792 ldr r3, [r4, #4] 3793 str r8, [sp, #28] 3794 str r10, [sp, #32] 3795 str r3, [sp, #24] 3796 bl FlashReadPages 3797 ldr fp, [sp, #20] 3798 cmp fp, #-1 3799 bne .L440 3800 ldr r1, [r4, #4] 3801 ldr r0, .L459+16 3802 bl printf 3803 str fp, [r4] 3804.L440: 3805 ldr r3, [r4, #12] 3806 cbz r3, .L441 3807 ldr r2, [r3] 3808 ldr r3, [r10] 3809 cmp r2, r3 3810 beq .L441 3811 ldr r1, [r4, #4] 3812 ldr r0, .L459+20 3813 bl printf 3814 mov r3, #-1 3815 str r3, [r4] 3816.L441: 3817 ldr r3, [r4, #8] 3818 cbz r3, .L442 3819 ldr r2, [r3] 3820 ldr r3, [r8] 3821 cmp r2, r3 3822 beq .L442 3823 ldr r1, [r4, #4] 3824 ldr r0, .L459+24 3825 bl printf 3826 mov r3, #-1 3827 str r3, [r4] 3828.L442: 3829 adds r5, r5, #1 3830 adds r4, r4, #20 3831.L439: 3832 cmp r6, r5 3833 bne .L443 3834 b .L458 3835.L445: 3836 movs r5, #0 3837 ldr r8, .L459+28 3838 ldr r10, .L459+32 3839 b .L439 3840.L460: 3841 .align 2 3842.L459: 3843 .word .LANCHOR0 3844 .word .LANCHOR109 3845 .word .LC1 3846 .word .LANCHOR105 3847 .word .LC79 3848 .word .LC80 3849 .word .LC81 3850 .word check_buf 3851 .word .LANCHOR110 3852 .size FlashProgPages, .-FlashProgPages 3853 .section .text.FlashEraseBlocks,"ax",%progbits 3854 .align 1 3855 .global FlashEraseBlocks 3856 .syntax unified 3857 .thumb 3858 .thumb_func 3859 .fpu softvfp 3860 .type FlashEraseBlocks, %function 3861FlashEraseBlocks: 3862 @ args = 0, pretend = 0, frame = 8 3863 @ frame_needed = 0, uses_anonymous_args = 0 3864 push {r0, r1, r2, r4, r5, r6, r7, r8, r10, lr} 3865 mov r7, r2 3866 ldr r5, .L472 3867 adds r4, r0, #4 3868 movs r6, #0 3869 ldr r10, .L472+4 3870 ldrh r8, [r5, #12] 3871.L462: 3872 cmp r6, r7 3873 bne .L468 3874 movs r0, #0 3875 add sp, sp, #12 3876 @ sp needed 3877 pop {r4, r5, r6, r7, r8, r10, pc} 3878.L468: 3879 add r1, sp, #4 3880 mov r2, sp 3881 ldr r0, [r4] 3882 bl l2p_addr_tran.isra.0 3883 ldr r3, [r10, #4] 3884 ldr r1, [sp, #4] 3885 ldrb r0, [sp] @ zero_extendqisi2 3886 blx r3 3887 cbnz r0, .L463 3888 str r0, [r4, #-4] 3889.L464: 3890 ldrh r3, [r5, #14] 3891 cmp r3, #4 3892 bne .L466 3893 ldr r1, [sp, #4] 3894 ldr r3, [r10, #4] 3895 ldrb r0, [sp] @ zero_extendqisi2 3896 add r1, r1, r8 3897 blx r3 3898 cbz r0, .L466 3899 mov r3, #-1 3900 str r3, [r4, #-4] 3901.L466: 3902 adds r6, r6, #1 3903 adds r4, r4, #20 3904 b .L462 3905.L463: 3906 mov r3, #-1 3907 str r3, [r4, #-4] 3908 b .L464 3909.L473: 3910 .align 2 3911.L472: 3912 .word .LANCHOR0 3913 .word .LANCHOR105 3914 .size FlashEraseBlocks, .-FlashEraseBlocks 3915 .section .text.FtlFreeSysBlkQueueIn,"ax",%progbits 3916 .align 1 3917 .global FtlFreeSysBlkQueueIn 3918 .syntax unified 3919 .thumb 3920 .thumb_func 3921 .fpu softvfp 3922 .type FtlFreeSysBlkQueueIn, %function 3923FtlFreeSysBlkQueueIn: 3924 @ args = 0, pretend = 0, frame = 0 3925 @ frame_needed = 0, uses_anonymous_args = 0 3926 subs r3, r0, #1 3927 movw r2, #65533 3928 uxth r3, r3 3929 push {r4, r5, r6, lr} 3930 mov r5, r0 3931 cmp r3, r2 3932 bhi .L474 3933 ldr r4, .L483 3934 ldrh r3, [r4, #6] 3935 cmp r3, #1024 3936 beq .L474 3937 cbz r1, .L476 3938 bl P2V_block_in_plane 3939 ldr r3, .L483+4 3940 mov r6, r0 3941 movs r2, #1 3942 mov r1, r2 3943 ldr r0, [r3] 3944 lsls r3, r5, #10 3945 str r3, [r0, #4] 3946 bl FlashEraseBlocks 3947 ldr r3, .L483+8 3948 ldr r2, [r3] 3949 ldrh r3, [r2, r6, lsl #1] 3950 adds r3, r3, #1 3951 strh r3, [r2, r6, lsl #1] @ movhi 3952 ldr r2, .L483+12 3953 ldr r3, [r2] 3954 adds r3, r3, #1 3955 str r3, [r2] 3956.L476: 3957 ldrh r3, [r4, #6] 3958 adds r3, r3, #1 3959 strh r3, [r4, #6] @ movhi 3960 ldrh r3, [r4, #4] 3961 adds r2, r3, #4 3962 adds r3, r3, #1 3963 ubfx r3, r3, #0, #10 3964 strh r5, [r4, r2, lsl #1] @ movhi 3965 strh r3, [r4, #4] @ movhi 3966.L474: 3967 pop {r4, r5, r6, pc} 3968.L484: 3969 .align 2 3970.L483: 3971 .word .LANCHOR38 3972 .word .LANCHOR111 3973 .word .LANCHOR43 3974 .word .LANCHOR75 3975 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn 3976 .section .text.FtlLowFormatEraseBlock,"ax",%progbits 3977 .align 1 3978 .global FtlLowFormatEraseBlock 3979 .syntax unified 3980 .thumb 3981 .thumb_func 3982 .fpu softvfp 3983 .type FtlLowFormatEraseBlock, %function 3984FtlLowFormatEraseBlock: 3985 @ args = 0, pretend = 0, frame = 32 3986 @ frame_needed = 0, uses_anonymous_args = 0 3987 ldr r3, .L528 3988 push {r4, r5, r6, r7, r8, r10, fp, lr} 3989 sub sp, sp, #32 3990 ldr r6, .L528+4 3991 mov fp, #0 3992 mov r5, fp 3993 mov r4, fp 3994 str r0, [r3] 3995 mov r10, #20 3996 ldr r3, .L528+8 3997 ldr r8, [r6] 3998 str r0, [sp, #4] 3999 ldrh r3, [r3] 4000 str r1, [sp] 4001 str r3, [sp, #8] 4002 ldr r3, .L528+12 4003 ldr r3, [r3] 4004 str r3, [sp, #12] 4005 ldr r3, .L528+16 4006 ldr r3, [r3] 4007 str r3, [sp, #16] 4008 ldr r3, .L528+20 4009 ldrh r3, [r3] 4010 str r3, [sp, #20] 4011.L486: 4012 ldr r3, [sp, #8] 4013 uxth r2, fp 4014 cmp r3, r2 4015 bhi .L490 4016 cmp r5, #0 4017 beq .L485 4018 mov r0, r8 4019 movs r7, #0 4020 mov r8, #20 4021 mov r2, r5 4022 movs r1, #0 4023 bl FlashEraseBlocks 4024.L493: 4025 uxth r3, r7 4026 cmp r5, r3 4027 bhi .L495 4028 ldr r3, [sp] 4029 cmp r3, #0 4030 beq .L511 4031 ldr r3, .L528+24 4032 mov r8, #1 4033 ldrh r10, [r3] 4034 lsr r3, r10, #2 4035 str r3, [sp, #12] 4036.L496: 4037 movs r6, #0 4038.L505: 4039 ldr r3, .L528+8 4040 mov fp, #0 4041 mov r5, fp 4042 ldrh r3, [r3] 4043 str r3, [sp, #16] 4044 ldr r3, .L528+4 4045 ldr r3, [r3] 4046 str r3, [sp, #8] 4047 ldr r3, .L528+28 4048 ldr r3, [r3] 4049 str r3, [sp, #20] 4050 ldr r3, .L528+12 4051 ldr r3, [r3] 4052 str r3, [sp, #24] 4053 ldr r3, .L528+20 4054 ldrh r3, [r3] 4055 str r3, [sp, #28] 4056.L497: 4057 ldr r3, [sp, #16] 4058 uxth r2, fp 4059 cmp r3, r2 4060 bhi .L500 4061 cbz r5, .L485 4062 ldr fp, .L528+4 4063 movs r3, #1 4064 mov r2, r8 4065 mov r1, r5 4066 ldr r0, [sp, #8] 4067 movs r7, #0 4068 bl FlashProgPages 4069 movs r3, #20 4070.L502: 4071 uxth r2, r7 4072 cmp r5, r2 4073 bhi .L504 4074 ldr r3, [sp, #12] 4075 add r6, r6, r3 4076 uxth r6, r6 4077 cmp r10, r6 4078 bhi .L505 4079 ldr r7, .L528+4 4080 movs r6, #0 4081 mov r10, #20 4082.L506: 4083 uxth r3, r6 4084 cmp r5, r3 4085 bhi .L508 4086 ldr r3, [sp, #4] 4087 cmp r3, #63 4088 bls .L509 4089 ldr r3, [sp] 4090 cbz r3, .L485 4091.L509: 4092 ldr r3, .L528+4 4093 mov r2, r5 4094 mov r1, r8 4095 ldr r0, [r3] 4096 bl FlashEraseBlocks 4097.L485: 4098 mov r0, r4 4099 add sp, sp, #32 4100 @ sp needed 4101 pop {r4, r5, r6, r7, r8, r10, fp, pc} 4102.L490: 4103 mul r2, r10, fp 4104 movs r3, #0 4105 ldr r1, [sp, #4] 4106 str r3, [r8, r2] 4107 ldr r3, .L528+32 4108 ldrb r0, [r3, fp] @ zero_extendqisi2 4109 bl V2P_block 4110 ldr r3, [sp] 4111 mov r7, r0 4112 cbz r3, .L487 4113 bl IsBlkInVendorPart 4114 cbnz r0, .L488 4115.L487: 4116 mov r0, r7 4117 bl FtlBbmIsBadBlock 4118 cbnz r0, .L489 4119 mla r1, r10, r5, r8 4120 ldr r3, [sp, #12] 4121 lsls r7, r7, #10 4122 str r3, [r1, #8] 4123 ldr r3, [sp, #20] 4124 str r7, [r1, #4] 4125 mul r2, r3, r5 4126 ldr r3, [sp, #16] 4127 adds r5, r5, #1 4128 uxth r5, r5 4129 bic r2, r2, #3 4130 add r2, r2, r3 4131 str r2, [r1, #12] 4132.L488: 4133 add fp, fp, #1 4134 b .L486 4135.L489: 4136 adds r4, r4, #1 4137 uxth r4, r4 4138 b .L488 4139.L495: 4140 mul r3, r8, r7 4141 ldr r2, [r6] 4142 adds r1, r2, r3 4143 ldr r3, [r2, r3] 4144 adds r3, r3, #1 4145 bne .L494 4146 ldr r0, [r1, #4] 4147 adds r4, r4, #1 4148 uxth r4, r4 4149 ubfx r0, r0, #10, #16 4150 bl FtlBbmMapBadBlock 4151.L494: 4152 adds r7, r7, #1 4153 b .L493 4154.L511: 4155 movs r3, #6 4156 ldr r8, [sp] 4157 str r3, [sp, #12] 4158 mov r10, #1 4159 b .L496 4160.L500: 4161 movs r3, #20 4162 mul r2, r3, fp 4163 ldr r3, [sp, #8] 4164 mov r1, r3 4165 movs r3, #0 4166 str r3, [r1, r2] 4167 ldr r3, .L528+32 4168 ldr r1, [sp, #4] 4169 ldrb r0, [r3, fp] @ zero_extendqisi2 4170 bl V2P_block 4171 ldr r3, [sp] 4172 mov r7, r0 4173 cbz r3, .L498 4174 bl IsBlkInVendorPart 4175 cbnz r0, .L499 4176.L498: 4177 mov r0, r7 4178 bl FtlBbmIsBadBlock 4179 cbnz r0, .L499 4180 ldr r3, [sp, #8] 4181 movs r2, #20 4182 add r7, r6, r7, lsl #10 4183 mla r1, r2, r5, r3 4184 ldr r3, [sp, #20] 4185 str r3, [r1, #8] 4186 ldr r3, [sp, #28] 4187 str r7, [r1, #4] 4188 mul r2, r3, r5 4189 ldr r3, [sp, #24] 4190 adds r5, r5, #1 4191 uxth r5, r5 4192 bic r2, r2, #3 4193 add r2, r2, r3 4194 str r2, [r1, #12] 4195.L499: 4196 add fp, fp, #1 4197 b .L497 4198.L504: 4199 mul r2, r3, r7 4200 ldr r1, [fp] 4201 adds r0, r1, r2 4202 ldr r2, [r1, r2] 4203 cbz r2, .L503 4204 ldr r0, [r0, #4] 4205 adds r4, r4, #1 4206 str r3, [sp, #8] 4207 uxth r4, r4 4208 ubfx r0, r0, #10, #16 4209 bl FtlBbmMapBadBlock 4210 ldr r3, [sp, #8] 4211.L503: 4212 adds r7, r7, #1 4213 b .L502 4214.L508: 4215 ldr r3, [sp] 4216 cbz r3, .L507 4217 mul r3, r10, r6 4218 ldr r2, [r7] 4219 adds r1, r2, r3 4220 ldr r3, [r2, r3] 4221 cbnz r3, .L507 4222 ldr r0, [r1, #4] 4223 movs r1, #1 4224 ubfx r0, r0, #10, #16 4225 bl FtlFreeSysBlkQueueIn 4226.L507: 4227 adds r6, r6, #1 4228 b .L506 4229.L529: 4230 .align 2 4231.L528: 4232 .word .LANCHOR112 4233 .word .LANCHOR111 4234 .word .LANCHOR3 4235 .word .LANCHOR113 4236 .word .LANCHOR114 4237 .word .LANCHOR24 4238 .word .LANCHOR20 4239 .word .LANCHOR115 4240 .word .LANCHOR13 4241 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock 4242 .section .text.FtlFreeSysBlkQueueOut,"ax",%progbits 4243 .align 1 4244 .global FtlFreeSysBlkQueueOut 4245 .syntax unified 4246 .thumb 4247 .thumb_func 4248 .fpu softvfp 4249 .type FtlFreeSysBlkQueueOut, %function 4250FtlFreeSysBlkQueueOut: 4251 @ args = 0, pretend = 0, frame = 0 4252 @ frame_needed = 0, uses_anonymous_args = 0 4253 push {r3, r4, r5, r6, r7, lr} 4254 ldr r4, .L537 4255 ldr r6, .L537+4 4256.L531: 4257 ldrh r1, [r4, #6] 4258 cbz r1, .L532 4259 ldrh r3, [r4, #2] 4260 subs r1, r1, #1 4261 strh r1, [r4, #6] @ movhi 4262 adds r2, r3, #4 4263 adds r3, r3, #1 4264 ldrh r5, [r4, r2, lsl #1] 4265 ubfx r3, r3, #0, #10 4266 strh r3, [r4, #2] @ movhi 4267 mov r0, r5 4268 bl P2V_block_in_plane 4269 mov r7, r0 4270 ldr r0, [r6] 4271 lsls r3, r5, #10 4272 movs r2, #1 4273 mov r1, r2 4274 str r3, [r0, #4] 4275 bl FlashEraseBlocks 4276 ldr r3, .L537+8 4277 ldr r2, [r3] 4278 ldrh r3, [r2, r7, lsl #1] 4279 adds r3, r3, #1 4280 strh r3, [r2, r7, lsl #1] @ movhi 4281 ldr r2, .L537+12 4282 ldr r3, [r2] 4283 adds r3, r3, #1 4284 str r3, [r2] 4285 subs r3, r5, #1 4286 uxth r3, r3 4287 movw r2, #65533 4288 cmp r3, r2 4289 bhi .L533 4290 mov r0, r5 4291 pop {r3, r4, r5, r6, r7, pc} 4292.L532: 4293 ldr r0, .L537+16 4294 bl printf 4295.L535: 4296 b .L535 4297.L533: 4298 ldrh r2, [r4, #6] 4299 mov r1, r5 4300 ldr r0, .L537+20 4301 bl printf 4302 b .L531 4303.L538: 4304 .align 2 4305.L537: 4306 .word .LANCHOR38 4307 .word .LANCHOR111 4308 .word .LANCHOR43 4309 .word .LANCHOR75 4310 .word .LC82 4311 .word .LC83 4312 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut 4313 .section .text.ftl_map_blk_alloc_new_blk,"ax",%progbits 4314 .align 1 4315 .global ftl_map_blk_alloc_new_blk 4316 .syntax unified 4317 .thumb 4318 .thumb_func 4319 .fpu softvfp 4320 .type ftl_map_blk_alloc_new_blk, %function 4321ftl_map_blk_alloc_new_blk: 4322 @ args = 0, pretend = 0, frame = 0 4323 @ frame_needed = 0, uses_anonymous_args = 0 4324 ldrh r1, [r0, #10] 4325 ldr r2, [r0, #12] 4326 push {r3, r4, r5, r6, r7, lr} 4327 mov r4, r0 4328 movs r3, #0 4329.L540: 4330 uxth r5, r3 4331 cmp r5, r1 4332 bcs .L543 4333 mov r7, r2 4334 adds r3, r3, #1 4335 ldrh r6, [r7] 4336 adds r2, r2, #2 4337 cmp r6, #0 4338 bne .L540 4339 bl FtlFreeSysBlkQueueOut 4340 subs r3, r0, #1 4341 movw r2, #65533 4342 uxth r3, r3 4343 mov r1, r0 4344 strh r0, [r7] @ movhi 4345 cmp r3, r2 4346 bls .L541 4347 ldr r3, .L547 4348 ldr r0, .L547+4 4349 ldrh r2, [r3, #6] 4350 bl printf 4351.L542: 4352 b .L542 4353.L541: 4354 ldr r3, [r4, #28] 4355 strh r6, [r4, #2] @ movhi 4356 strh r5, [r4] @ movhi 4357 adds r3, r3, #1 4358 str r3, [r4, #28] 4359 ldrh r3, [r4, #8] 4360 adds r3, r3, #1 4361 strh r3, [r4, #8] @ movhi 4362.L543: 4363 ldrh r3, [r4, #10] 4364 cmp r3, r5 4365 bhi .L545 4366 movw r2, #581 4367 ldr r1, .L547+8 4368 ldr r0, .L547+12 4369 bl printf 4370.L545: 4371 movs r0, #0 4372 pop {r3, r4, r5, r6, r7, pc} 4373.L548: 4374 .align 2 4375.L547: 4376 .word .LANCHOR38 4377 .word .LC84 4378 .word .LANCHOR116 4379 .word .LC1 4380 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk 4381 .section .text.ftl_memset,"ax",%progbits 4382 .align 1 4383 .global ftl_memset 4384 .syntax unified 4385 .thumb 4386 .thumb_func 4387 .fpu softvfp 4388 .type ftl_memset, %function 4389ftl_memset: 4390 @ args = 0, pretend = 0, frame = 0 4391 @ frame_needed = 0, uses_anonymous_args = 0 4392 @ link register save eliminated. 4393 b memset 4394 .size ftl_memset, .-ftl_memset 4395 .section .text.FtlMemInit,"ax",%progbits 4396 .align 1 4397 .global FtlMemInit 4398 .syntax unified 4399 .thumb 4400 .thumb_func 4401 .fpu softvfp 4402 .type FtlMemInit, %function 4403FtlMemInit: 4404 @ args = 0, pretend = 0, frame = 16 4405 @ frame_needed = 0, uses_anonymous_args = 0 4406 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 4407 movs r1, #0 4408 ldr r3, .L651 4409 mov r8, #12 4410 ldr r2, .L651+4 4411 str r1, [r3] 4412 ldr r3, .L651+8 4413 ldr r4, .L651+12 4414 str r1, [sp, #4] 4415 str r1, [r3] 4416 ldr r3, .L651+16 4417 ldrh r0, [r4] 4418 ldr fp, .L651+288 4419 str r1, [r3] 4420 ldr r3, .L651+20 4421 lsls r0, r0, #1 4422 ldr r10, .L651+292 4423 ldr r5, .L651+24 4424 str r1, [r3] 4425 ldr r3, .L651+28 4426 ldr r7, .L651+32 4427 str r1, [r3] 4428 ldr r3, .L651+36 4429 str r1, [r3] 4430 ldr r3, .L651+40 4431 str r1, [r3] 4432 ldr r3, .L651+44 4433 str r1, [r3] 4434 ldr r3, .L651+48 4435 str r1, [r3] 4436 ldr r3, .L651+52 4437 str r1, [r3] 4438 ldr r3, .L651+56 4439 str r1, [r3] 4440 ldr r3, .L651+60 4441 str r1, [r3] 4442 ldr r3, .L651+64 4443 str r1, [r3] 4444 ldr r3, .L651+68 4445 str r1, [r3] 4446 ldr r3, .L651+72 4447 str r1, [r3] 4448 movw r3, #65535 4449 str r3, [r2] 4450 ldr r2, .L651+76 4451 str r1, [r2] 4452 ldr r2, .L651+80 4453 str r1, [r2] 4454 ldr r2, .L651+84 4455 str r1, [r2] 4456 ldr r2, .L651+88 4457 strh r3, [r2] @ movhi 4458 ldr r2, .L651+92 4459 strh r3, [r2] @ movhi 4460 movs r2, #32 4461 ldr r3, .L651+96 4462 strh r2, [r3] @ movhi 4463 movs r2, #128 4464 ldr r3, .L651+100 4465 strh r2, [r3] @ movhi 4466 ldr r3, .L651+104 4467 strh r1, [r3] @ movhi 4468 ldr r3, .L651+108 4469 strh r1, [r3] @ movhi 4470 ldr r3, .L651+112 4471 strh r1, [r3] @ movhi 4472 bl ftl_malloc 4473 ldr r3, .L651+116 4474 str r0, [r3] 4475 ldrh r0, [r4] 4476 movs r4, #20 4477 mul r0, r8, r0 4478 bl ftl_malloc 4479 ldrh r2, [fp] 4480 ldr r3, .L651+120 4481 muls r4, r2, r4 4482 str r0, [r3] 4483 lsls r6, r4, #2 4484 mov r0, r6 4485 bl ftl_malloc 4486 ldr r3, .L651+124 4487 str r0, [r3] 4488 mov r0, r4 4489 bl ftl_malloc 4490 ldr r3, .L651+128 4491 str r0, [r3] 4492 mov r0, r6 4493 bl ftl_malloc 4494 ldr r3, .L651+132 4495 ldr r6, .L651+136 4496 str r0, [r3] 4497 mov r0, r4 4498 bl ftl_malloc 4499 str r0, [r10] 4500 mov r0, r4 4501 bl ftl_malloc 4502 ldr r3, .L651+140 4503 ldrh r2, [fp] 4504 str r0, [r3] 4505 ldr r3, .L651+144 4506 lsls r2, r2, #1 4507 ldrh r4, [r3] 4508 adds r2, r2, #1 4509 str r2, [r5] 4510 mov r0, r4 4511 bl ftl_malloc 4512 ldr r3, .L651+148 4513 str r0, [r3] 4514 mov r0, r4 4515 bl ftl_malloc 4516 ldr r3, .L651+152 4517 str r0, [r3] 4518 mov r0, r4 4519 bl ftl_malloc 4520 str r0, [r7] 4521 ldr r0, [r5] 4522 muls r0, r4, r0 4523 bl ftl_malloc 4524 str r0, [r6] 4525 mov r0, r4 4526 bl ftl_malloc 4527 ldr r2, .L651+156 4528 str r0, [r2] 4529 mov r0, r4 4530 bl ftl_malloc 4531 ldr r2, .L651+160 4532 ldr r4, .L651+164 4533 str r0, [r2] 4534 ldr r0, [r5] 4535 mul r0, r8, r0 4536 bl ftl_malloc 4537 ldr r2, .L651+168 4538 ldrh r3, [fp] 4539 str r0, [r2] 4540 ldrh r2, [r4] 4541 mul fp, r3, r2 4542 mov r0, fp 4543 bl ftl_malloc 4544 ldr r2, .L651+172 4545 str r0, [r2] 4546 lsl r0, fp, #2 4547 bl ftl_malloc 4548 ldr r3, .L651+176 4549 str r0, [r3] 4550 ldrh r3, [r4] 4551 ldr r0, [r5] 4552 ldr r4, .L651+180 4553 ldr r5, .L651+184 4554 muls r0, r3, r0 4555 bl ftl_malloc 4556 ldr r3, .L651+188 4557 str r0, [r3] 4558 ldrh r0, [r4] 4559 lsls r0, r0, #1 4560 uxth r0, r0 4561 strh r0, [r5] @ movhi 4562 bl ftl_malloc 4563 ldr r3, .L651+192 4564 str r0, [r3] 4565 ldrh r3, [r5] 4566 ldr r0, .L651+196 4567 addw r3, r3, #547 4568 lsrs r3, r3, #9 4569 and r0, r0, r3, lsl #9 4570 strh r3, [r5] @ movhi 4571 bl ftl_malloc 4572 ldrh fp, [r4] 4573 ldr r3, .L651+200 4574 str r0, [r3] 4575 lsl fp, fp, #1 4576 ldr r3, .L651+204 4577 adds r0, r0, #32 4578 str r0, [r3] 4579 mov r0, fp 4580 bl ftl_malloc 4581 ldr r3, .L651+208 4582 str r0, [r3] 4583 mov r0, fp 4584 bl ftl_malloc 4585 ldr fp, .L651+296 4586 ldr r3, .L651+212 4587 str r0, [r3] 4588 ldr r3, [fp] 4589 lsls r5, r3, #1 4590 mov r0, r5 4591 bl ftl_malloc 4592 ldr r2, .L651+216 4593 str r0, [r2] 4594 mov r0, r5 4595 bl ftl_malloc 4596 ldr r3, .L651+220 4597 ldr r5, .L651+224 4598 str r0, [r3] 4599 ldrh r0, [r4] 4600 lsrs r0, r0, #3 4601 adds r0, r0, #4 4602 bl ftl_malloc 4603 ldr r3, .L651+228 4604 str r0, [r3] 4605 ldrh r0, [r5] 4606 lsls r0, r0, #1 4607 bl ftl_malloc 4608 ldr r2, .L651+232 4609 str r0, [r2] 4610 ldrh r0, [r5] 4611 lsls r0, r0, #1 4612 bl ftl_malloc 4613 ldr r2, .L651+236 4614 str r0, [r2] 4615 ldrh r0, [r5] 4616 ldr r5, .L651+120 4617 lsls r0, r0, #2 4618 bl ftl_malloc 4619 ldr r3, .L651+240 4620 str r0, [r3] 4621 ldr r3, .L651+244 4622 ldrh r0, [r3] 4623 str r3, [sp] 4624 lsls r0, r0, #2 4625 bl ftl_malloc 4626 ldr r3, [sp] 4627 ldr r2, .L651+248 4628 ldr r1, [sp, #4] 4629 str r0, [r2] 4630 ldrh r2, [r3] 4631 lsls r2, r2, #2 4632 bl ftl_memset 4633 ldr r3, .L651+252 4634 ldrh r0, [r3] 4635 lsls r0, r0, #2 4636 bl ftl_malloc 4637 ldr r3, .L651+256 4638 str r0, [r3] 4639 ldr r0, [fp] 4640 ldr fp, .L651+300 4641 lsls r0, r0, #2 4642 bl ftl_malloc 4643 ldr r3, .L651+260 4644 str r0, [r3] 4645 ldrh r0, [fp] 4646 mul r0, r8, r0 4647 ldr r8, .L651+304 4648 bl ftl_malloc 4649 ldr r2, .L651+144 4650 ldr r3, .L651+264 4651 str r0, [r3] 4652 ldrh r0, [r2] 4653 ldrh r3, [fp] 4654 ldr fp, .L651+132 4655 muls r0, r3, r0 4656 bl ftl_malloc 4657 ldr r3, .L651+268 4658 str r0, [r3] 4659 movs r0, #6 4660 ldrh r3, [r4] 4661 ldr r4, .L651+272 4662 muls r0, r3, r0 4663 bl ftl_malloc 4664 ldr r3, .L651+276 4665 str r0, [r3] 4666 ldr r3, .L651+280 4667 ldrh r0, [r3] 4668 ldrh r3, [r8] 4669 adds r0, r0, #31 4670 asrs r0, r0, #5 4671 strh r0, [r4] @ movhi 4672 muls r0, r3, r0 4673 lsls r0, r0, #2 4674 bl ftl_malloc 4675 ldr r2, .L651+284 4676 str r5, [sp, #4] 4677 ldr r5, .L651+124 4678 mov r1, r2 4679 ldrh r3, [r8] 4680 str r0, [r1, #28]! 4681 ldrh r0, [r4] 4682 ldr r8, .L651+140 4683 ldr lr, .L651+148 4684 b .L652 4685.L653: 4686 .align 2 4687.L651: 4688 .word .LANCHOR70 4689 .word .LANCHOR118 4690 .word .LANCHOR71 4691 .word .LANCHOR21 4692 .word .LANCHOR67 4693 .word .LANCHOR64 4694 .word .LANCHOR94 4695 .word .LANCHOR63 4696 .word .LANCHOR124 4697 .word .LANCHOR65 4698 .word .LANCHOR66 4699 .word .LANCHOR62 4700 .word .LANCHOR72 4701 .word .LANCHOR73 4702 .word .LANCHOR75 4703 .word .LANCHOR76 4704 .word .LANCHOR77 4705 .word .LANCHOR117 4706 .word .LANCHOR87 4707 .word .LANCHOR119 4708 .word .LANCHOR84 4709 .word .LANCHOR112 4710 .word .LANCHOR99 4711 .word .LANCHOR100 4712 .word .LANCHOR82 4713 .word .LANCHOR83 4714 .word .LANCHOR85 4715 .word .LANCHOR101 4716 .word .LANCHOR103 4717 .word .LANCHOR95 4718 .word .LANCHOR98 4719 .word .LANCHOR120 4720 .word .LANCHOR121 4721 .word .LANCHOR122 4722 .word .LANCHOR91 4723 .word .LANCHOR93 4724 .word .LANCHOR23 4725 .word .LANCHOR107 4726 .word .LANCHOR123 4727 .word .LANCHOR115 4728 .word .LANCHOR113 4729 .word .LANCHOR24 4730 .word .LANCHOR90 4731 .word .LANCHOR108 4732 .word .LANCHOR114 4733 .word .LANCHOR6 4734 .word .LANCHOR125 4735 .word .LANCHOR92 4736 .word .LANCHOR126 4737 .word 33553920 4738 .word .LANCHOR127 4739 .word .LANCHOR43 4740 .word .LANCHOR128 4741 .word .LANCHOR42 4742 .word .LANCHOR129 4743 .word .LANCHOR130 4744 .word .LANCHOR27 4745 .word .LANCHOR1 4746 .word .LANCHOR36 4747 .word .LANCHOR131 4748 .word .LANCHOR132 4749 .word .LANCHOR28 4750 .word .LANCHOR133 4751 .word .LANCHOR32 4752 .word .LANCHOR134 4753 .word .LANCHOR135 4754 .word .LANCHOR55 4755 .word .LANCHOR136 4756 .word .LANCHOR137 4757 .word .LANCHOR40 4758 .word .LANCHOR17 4759 .word .LANCHOR37 4760 .word .LANCHOR3 4761 .word .LANCHOR111 4762 .word .LANCHOR30 4763 .word .LANCHOR33 4764 .word .LANCHOR10 4765.L652: 4766 ldr ip, .L654+100 4767 lsls r0, r0, #2 4768 str r5, [sp, #8] 4769 ldr r5, .L654 4770 str r3, [sp] 4771 mov r4, r0 4772 movs r3, #1 4773 str r5, [sp, #12] 4774.L551: 4775 ldr r5, [sp] 4776 cmp r3, r5 4777 bcc .L552 4778 add r3, r2, r3, lsl #2 4779 ldr r1, .L654+4 4780 movs r0, #0 4781 adds r3, r3, #24 4782.L553: 4783 cmp r1, r3 4784 bne .L554 4785 ldr r3, .L654+8 4786 ldr r3, [r3] 4787 cbnz r3, .L555 4788.L557: 4789 ldr r1, .L654+12 4790 ldr r0, .L654+16 4791 bl printf 4792 mov r0, #-1 4793.L550: 4794 add sp, sp, #16 4795 @ sp needed 4796 pop {r4, r5, r6, r7, r8, r10, fp, pc} 4797.L552: 4798 ldr r5, [r2, #28] 4799 adds r3, r3, #1 4800 add r5, r5, r4 4801 add r4, r4, r0 4802 str r5, [r1, #4]! 4803 b .L551 4804.L554: 4805 str r0, [r3, #4]! 4806 b .L553 4807.L555: 4808 ldr r3, .L654+20 4809 ldr r3, [r3] 4810 cmp r3, #0 4811 beq .L557 4812 ldr r3, .L654+24 4813 ldr r3, [r3] 4814 cmp r3, #0 4815 beq .L557 4816 ldr r3, .L654+28 4817 ldr r3, [r3] 4818 cmp r3, #0 4819 beq .L557 4820 ldr r3, .L654+32 4821 ldr r3, [r3] 4822 cmp r3, #0 4823 beq .L557 4824 ldr r3, .L654+36 4825 ldr r3, [r3] 4826 cmp r3, #0 4827 beq .L557 4828 ldr r3, .L654+40 4829 ldr r3, [r3] 4830 cmp r3, #0 4831 beq .L557 4832 ldr r3, [r2, #28] 4833 cmp r3, #0 4834 beq .L557 4835 ldr r3, .L654+44 4836 ldr r3, [r3] 4837 cmp r3, #0 4838 beq .L557 4839 ldr r3, .L654+48 4840 ldr r3, [r3] 4841 cmp r3, #0 4842 beq .L557 4843 ldr r3, [sp, #4] 4844 ldr r3, [r3] 4845 cmp r3, #0 4846 beq .L557 4847 ldr r3, [sp, #8] 4848 ldr r3, [r3] 4849 cmp r3, #0 4850 beq .L557 4851 ldr r3, [fp] 4852 cmp r3, #0 4853 beq .L557 4854 ldr r3, [r10] 4855 cmp r3, #0 4856 beq .L557 4857 ldr r3, [r8] 4858 cmp r3, #0 4859 beq .L557 4860 ldr r3, [sp, #12] 4861 ldr r3, [r3] 4862 cmp r3, #0 4863 beq .L557 4864 ldr r3, [lr] 4865 cmp r3, #0 4866 beq .L557 4867 ldr r3, [ip] 4868 cmp r3, #0 4869 beq .L557 4870 ldr r3, [r7] 4871 cmp r3, #0 4872 beq .L557 4873 ldr r3, [r6] 4874 cmp r3, #0 4875 beq .L557 4876 ldr r3, .L654+52 4877 ldr r3, [r3] 4878 cmp r3, #0 4879 beq .L557 4880 ldr r3, .L654+56 4881 ldr r3, [r3] 4882 cmp r3, #0 4883 beq .L557 4884 ldr r3, .L654+60 4885 ldr r3, [r3] 4886 cmp r3, #0 4887 beq .L557 4888 ldr r3, .L654+64 4889 ldr r3, [r3] 4890 cmp r3, #0 4891 beq .L557 4892 ldr r3, .L654+68 4893 ldr r3, [r3] 4894 cmp r3, #0 4895 beq .L557 4896 ldr r3, .L654+72 4897 ldr r3, [r3] 4898 cmp r3, #0 4899 beq .L557 4900 ldr r3, .L654+76 4901 ldr r3, [r3] 4902 cmp r3, #0 4903 beq .L557 4904 ldr r3, .L654+80 4905 ldr r3, [r3] 4906 cmp r3, #0 4907 beq .L557 4908 ldr r3, .L654+84 4909 ldr r3, [r3] 4910 cmp r3, #0 4911 beq .L557 4912 ldr r3, .L654+88 4913 ldr r3, [r3] 4914 cmp r3, #0 4915 beq .L557 4916 ldr r3, .L654+92 4917 ldr r3, [r3] 4918 cmp r3, #0 4919 beq .L557 4920 ldr r3, .L654+96 4921 ldr r3, [r3] 4922 cmp r3, #0 4923 beq .L557 4924 movs r0, #0 4925 b .L550 4926.L655: 4927 .align 2 4928.L654: 4929 .word .LANCHOR121 4930 .word .LANCHOR37+56 4931 .word .LANCHOR129 4932 .word .LANCHOR138 4933 .word .LC85 4934 .word .LANCHOR130 4935 .word .LANCHOR134 4936 .word .LANCHOR135 4937 .word .LANCHOR55 4938 .word .LANCHOR136 4939 .word .LANCHOR40 4940 .word .LANCHOR42 4941 .word .LANCHOR95 4942 .word .LANCHOR115 4943 .word .LANCHOR113 4944 .word .LANCHOR90 4945 .word .LANCHOR108 4946 .word .LANCHOR114 4947 .word .LANCHOR92 4948 .word .LANCHOR43 4949 .word .LANCHOR126 4950 .word .LANCHOR36 4951 .word .LANCHOR131 4952 .word .LANCHOR132 4953 .word .LANCHOR133 4954 .word .LANCHOR123 4955 .size FtlMemInit, .-FtlMemInit 4956 .section .text.FtlBbt2Bitmap,"ax",%progbits 4957 .align 1 4958 .global FtlBbt2Bitmap 4959 .syntax unified 4960 .thumb 4961 .thumb_func 4962 .fpu softvfp 4963 .type FtlBbt2Bitmap, %function 4964FtlBbt2Bitmap: 4965 @ args = 0, pretend = 0, frame = 0 4966 @ frame_needed = 0, uses_anonymous_args = 0 4967 ldr r3, .L662 4968 push {r4, r5, r6, r7, r8, lr} 4969 mov r5, r0 4970 ldr r7, .L662+4 4971 mov r6, r1 4972 subs r4, r5, #2 4973 addw r5, r5, #1022 4974 ldrh r2, [r3] 4975 movs r1, #0 4976 ldr r8, .L662+12 4977 mov r0, r6 4978 lsls r2, r2, #2 4979 bl ftl_memset 4980.L659: 4981 ldrh r3, [r4, #2] 4982 movw r2, #65535 4983 cmp r3, r2 4984 beq .L656 4985 ldrh r2, [r7] 4986 cmp r2, r3 4987 bhi .L658 4988 movs r2, #74 4989 mov r1, r8 4990 ldr r0, .L662+8 4991 bl printf 4992.L658: 4993 ldrh r3, [r4, #2]! 4994 movs r2, #1 4995 cmp r5, r4 4996 lsr r1, r3, #5 4997 and r3, r3, #31 4998 lsl r3, r2, r3 4999 ldr r2, [r6, r1, lsl #2] 5000 orr r2, r2, r3 5001 str r2, [r6, r1, lsl #2] 5002 bne .L659 5003.L656: 5004 pop {r4, r5, r6, r7, r8, pc} 5005.L663: 5006 .align 2 5007.L662: 5008 .word .LANCHOR137 5009 .word .LANCHOR17 5010 .word .LC1 5011 .word .LANCHOR139 5012 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap 5013 .section .text.FtlBbtMemInit,"ax",%progbits 5014 .align 1 5015 .global FtlBbtMemInit 5016 .syntax unified 5017 .thumb 5018 .thumb_func 5019 .fpu softvfp 5020 .type FtlBbtMemInit, %function 5021FtlBbtMemInit: 5022 @ args = 0, pretend = 0, frame = 0 5023 @ frame_needed = 0, uses_anonymous_args = 0 5024 @ link register save eliminated. 5025 ldr r0, .L665 5026 movw r3, #65535 5027 movs r2, #16 5028 movs r1, #255 5029 strh r3, [r0] @ movhi 5030 movs r3, #0 5031 strh r3, [r0, #6] @ movhi 5032 adds r0, r0, #12 5033 b ftl_memset 5034.L666: 5035 .align 2 5036.L665: 5037 .word .LANCHOR37 5038 .size FtlBbtMemInit, .-FtlBbtMemInit 5039 .section .text.FtlFreeSysBlkQueueInit,"ax",%progbits 5040 .align 1 5041 .global FtlFreeSysBlkQueueInit 5042 .syntax unified 5043 .thumb 5044 .thumb_func 5045 .fpu softvfp 5046 .type FtlFreeSysBlkQueueInit, %function 5047FtlFreeSysBlkQueueInit: 5048 @ args = 0, pretend = 0, frame = 0 5049 @ frame_needed = 0, uses_anonymous_args = 0 5050 ldr r3, .L668 5051 mov r2, #2048 5052 push {r4, lr} 5053 movs r4, #0 5054 mov r1, r4 5055 strh r4, [r3, #2] @ movhi 5056 strh r4, [r3, #4] @ movhi 5057 strh r4, [r3, #6] @ movhi 5058 strh r0, [r3], #8 @ movhi 5059 mov r0, r3 5060 bl ftl_memset 5061 mov r0, r4 5062 pop {r4, pc} 5063.L669: 5064 .align 2 5065.L668: 5066 .word .LANCHOR38 5067 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit 5068 .section .text.load_l2p_region,"ax",%progbits 5069 .align 1 5070 .global load_l2p_region 5071 .syntax unified 5072 .thumb 5073 .thumb_func 5074 .fpu softvfp 5075 .type load_l2p_region, %function 5076load_l2p_region: 5077 @ args = 0, pretend = 0, frame = 8 5078 @ frame_needed = 0, uses_anonymous_args = 0 5079 ldr r3, .L676 5080 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 5081 mov r5, r0 5082 mov r10, r1 5083 ldrh r2, [r3] 5084 str r3, [sp, #4] 5085 cmp r2, r0 5086 bcs .L671 5087 mov r2, #492 5088 ldr r1, .L676+4 5089 ldr r0, .L676+8 5090 bl printf 5091.L671: 5092 ldr fp, .L676+40 5093 movs r4, #12 5094 ldr r7, .L676+12 5095 ldr r3, [fp] 5096 ldr r8, [r3, r5, lsl #2] 5097 cmp r8, #0 5098 bne .L672 5099 mul r4, r4, r10 5100 ldr r2, [r7] 5101 movs r1, #255 5102 adds r0, r2, r4 5103 ldr r2, .L676+16 5104 ldr r0, [r0, #8] 5105 ldrh r2, [r2] 5106 bl ftl_memset 5107 ldr r2, [r7] 5108 adds r1, r2, r4 5109 strh r5, [r2, r4] @ movhi 5110 str r8, [r1, #4] 5111.L673: 5112 movs r0, #0 5113 add sp, sp, #8 5114 @ sp needed 5115 pop {r4, r5, r6, r7, r8, r10, fp, pc} 5116.L672: 5117 mul r4, r4, r10 5118 ldr r2, [r7] 5119 ldr r6, .L676+20 5120 add r2, r2, r4 5121 mov r0, r6 5122 ldr r2, [r2, #8] 5123 str r8, [r6, #4] 5124 str r2, [r6, #8] 5125 ldr r2, .L676+24 5126 ldr r2, [r2] 5127 str r2, [r6, #12] 5128 movs r2, #1 5129 mov r1, r2 5130 bl FlashReadPages 5131 ldr r10, [r6, #12] 5132 ldrh r2, [r10, #8] 5133 cmp r2, r5 5134 beq .L674 5135 mov r2, r8 5136 mov r1, r5 5137 ldr r0, .L676+28 5138 bl printf 5139 movs r3, #4 5140 ldr r1, [r6, #12] 5141 mov r2, r3 5142 ldr r0, .L676+32 5143 bl rknand_print_hex 5144 ldr r3, [sp, #4] 5145 movs r2, #4 5146 ldr r1, [fp] 5147 ldr r0, .L676+36 5148 ldrh r3, [r3] 5149 bl rknand_print_hex 5150.L674: 5151 ldrh r3, [r10, #8] 5152 cmp r3, r5 5153 beq .L675 5154 movw r2, #513 5155 ldr r1, .L676+4 5156 ldr r0, .L676+8 5157 bl printf 5158.L675: 5159 ldr r3, [r7] 5160 movs r1, #0 5161 adds r2, r3, r4 5162 str r1, [r2, #4] 5163 strh r5, [r3, r4] @ movhi 5164 b .L673 5165.L677: 5166 .align 2 5167.L676: 5168 .word .LANCHOR32 5169 .word .LANCHOR140 5170 .word .LC1 5171 .word .LANCHOR55 5172 .word .LANCHOR23 5173 .word .LANCHOR106 5174 .word .LANCHOR108 5175 .word .LC86 5176 .word .LC87 5177 .word .LC88 5178 .word .LANCHOR134 5179 .size load_l2p_region, .-load_l2p_region 5180 .section .text.ftl_free_no_use_map_blk,"ax",%progbits 5181 .align 1 5182 .global ftl_free_no_use_map_blk 5183 .syntax unified 5184 .thumb 5185 .thumb_func 5186 .fpu softvfp 5187 .type ftl_free_no_use_map_blk, %function 5188ftl_free_no_use_map_blk: 5189 @ args = 0, pretend = 0, frame = 8 5190 @ frame_needed = 0, uses_anonymous_args = 0 5191 ldrh r2, [r0, #10] 5192 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 5193 mov r4, r0 5194 ldr r5, [r0, #20] 5195 movs r1, #0 5196 ldr r10, [r0, #12] 5197 lsls r2, r2, #1 5198 ldr r6, [r0, #24] 5199 mov r0, r5 5200 bl ftl_memset 5201 movs r3, #0 5202.L679: 5203 ldrh r1, [r4, #6] 5204 uxth r2, r3 5205 cmp r1, r2 5206 bhi .L683 5207 ldrh r3, [r5] 5208 movs r6, #0 5209 ldr r2, .L692 5210 mov fp, r6 5211.L684: 5212 ldrh r0, [r4, #10] 5213 uxth r1, r6 5214 cmp r0, r1 5215 bhi .L688 5216 mov r0, fp 5217 add sp, sp, #8 5218 @ sp needed 5219 pop {r4, r5, r6, r7, r8, r10, fp, pc} 5220.L683: 5221 uxth r2, r3 5222 ldr r1, [r6, r2, lsl #2] 5223 movs r2, #0 5224 ubfx r1, r1, #10, #16 5225.L680: 5226 ldrh r7, [r4, #10] 5227 uxth r0, r2 5228 cmp r7, r0 5229 bhi .L682 5230 adds r3, r3, #1 5231 b .L679 5232.L682: 5233 uxth r0, r2 5234 adds r2, r2, #1 5235 ldrh r7, [r10, r0, lsl #1] 5236 cmp r7, r1 5237 ittt eq 5238 ldrheq r7, [r5, r0, lsl #1] 5239 addeq r7, r7, #1 5240 strheq r7, [r5, r0, lsl #1] @ movhi 5241 b .L680 5242.L688: 5243 ldrh r0, [r4] 5244 uxth r7, r6 5245 cmp r0, r1 5246 bne .L685 5247 ldrh r0, [r2] 5248 ldrh ip, [r4, #2] 5249 cmp ip, r0 5250 it cc 5251 strhcc r0, [r5, r7, lsl #1] @ movhi 5252.L685: 5253 ldrh r8, [r5, r7, lsl #1] 5254 cmp r3, r8 5255 itt hi 5256 movhi fp, r1 5257 movhi r3, r8 5258 cmp r8, #0 5259 bne .L687 5260 ldrh r0, [r10, r7, lsl #1] 5261 cbz r0, .L687 5262 movs r1, #1 5263 str r2, [sp, #4] 5264 str r3, [sp] 5265 bl FtlFreeSysBlkQueueIn 5266 strh r8, [r10, r7, lsl #1] @ movhi 5267 ldr r2, [sp, #4] 5268 ldrh r1, [r4, #8] 5269 ldr r3, [sp] 5270 subs r1, r1, #1 5271 strh r1, [r4, #8] @ movhi 5272.L687: 5273 adds r6, r6, #1 5274 b .L684 5275.L693: 5276 .align 2 5277.L692: 5278 .word .LANCHOR20 5279 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk 5280 .section .text.Ftl_write_map_blk_to_last_page,"ax",%progbits 5281 .align 1 5282 .global Ftl_write_map_blk_to_last_page 5283 .syntax unified 5284 .thumb 5285 .thumb_func 5286 .fpu softvfp 5287 .type Ftl_write_map_blk_to_last_page, %function 5288Ftl_write_map_blk_to_last_page: 5289 @ args = 0, pretend = 0, frame = 0 5290 @ frame_needed = 0, uses_anonymous_args = 0 5291 push {r3, r4, r5, r6, r7, lr} 5292 movw r2, #65535 5293 ldrh r3, [r0] 5294 mov r4, r0 5295 ldr r5, [r0, #12] 5296 cmp r3, r2 5297 bne .L695 5298 ldrh r3, [r0, #8] 5299 cbz r3, .L696 5300 movw r2, #641 5301 ldr r1, .L704 5302 ldr r0, .L704+4 5303 bl printf 5304.L696: 5305 ldrh r3, [r4, #8] 5306 adds r3, r3, #1 5307 strh r3, [r4, #8] @ movhi 5308 bl FtlFreeSysBlkQueueOut 5309 movs r3, #0 5310 strh r0, [r5] @ movhi 5311 strh r3, [r4, #2] @ movhi 5312 strh r3, [r4] @ movhi 5313 ldr r3, [r4, #28] 5314 adds r3, r3, #1 5315 str r3, [r4, #28] 5316.L697: 5317 movs r0, #0 5318 pop {r3, r4, r5, r6, r7, pc} 5319.L695: 5320 ldrh r5, [r5, r3, lsl #1] 5321 movs r1, #255 5322 ldrh r3, [r0, #2] 5323 ldr r2, .L704+8 5324 ldr r7, .L704+12 5325 ldr r6, [r0, #24] 5326 orr r3, r3, r5, lsl #10 5327 ldr r0, [r7] 5328 str r3, [r2, #4] 5329 ldr r3, .L704+16 5330 str r0, [r2, #8] 5331 ldr r3, [r3] 5332 str r3, [r2, #12] 5333 ldr r2, [r4, #28] 5334 str r2, [r3, #4] 5335 movw r2, #64245 5336 strh r2, [r3, #8] @ movhi 5337 ldrh r2, [r4, #4] 5338 strh r5, [r3, #2] @ movhi 5339 strh r2, [r3] @ movhi 5340 ldr r3, .L704+20 5341 ldrh r2, [r3] 5342 lsls r2, r2, #3 5343 bl ftl_memset 5344 ldrh ip, [r4, #6] 5345 movs r3, #0 5346 ldr r1, [r7] 5347 mov r2, r3 5348.L698: 5349 uxth r0, r3 5350 cmp ip, r0 5351 bhi .L700 5352 movs r2, #1 5353 movs r3, #0 5354 mov r1, r2 5355 ldr r0, .L704+8 5356 bl FlashProgPages 5357 ldrh r3, [r4, #2] 5358 mov r0, r4 5359 adds r3, r3, #1 5360 strh r3, [r4, #2] @ movhi 5361 bl ftl_map_blk_gc 5362 b .L697 5363.L700: 5364 ldr r0, [r6, r3, lsl #2] 5365 cmp r5, r0, lsr #10 5366 bne .L699 5367 adds r2, r2, #1 5368 uxth r2, r2 5369 str r3, [r1, r2, lsl #3] 5370 add r7, r1, r2, lsl #3 5371 ldr r0, [r6, r3, lsl #2] 5372 str r0, [r7, #4] 5373.L699: 5374 adds r3, r3, #1 5375 b .L698 5376.L705: 5377 .align 2 5378.L704: 5379 .word .LANCHOR141 5380 .word .LC1 5381 .word .LANCHOR106 5382 .word .LANCHOR107 5383 .word .LANCHOR108 5384 .word .LANCHOR20 5385 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page 5386 .section .text.FtlMapWritePage,"ax",%progbits 5387 .align 1 5388 .global FtlMapWritePage 5389 .syntax unified 5390 .thumb 5391 .thumb_func 5392 .fpu softvfp 5393 .type FtlMapWritePage, %function 5394FtlMapWritePage: 5395 @ args = 0, pretend = 0, frame = 8 5396 @ frame_needed = 0, uses_anonymous_args = 0 5397 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 5398 mov r4, r0 5399 ldr r8, .L725+28 5400 mov r7, r1 5401 movs r6, #0 5402 str r2, [sp, #4] 5403 mov fp, r8 5404.L707: 5405 ldr r2, .L725 5406 ldr r3, [r2] 5407 adds r3, r3, #1 5408 str r3, [r2] 5409 ldrh r3, [r8] 5410 ldrh r2, [r4, #2] 5411 subs r3, r3, #1 5412 cmp r2, r3 5413 bge .L708 5414 ldrh r2, [r4] 5415 movw r3, #65535 5416 cmp r2, r3 5417 bne .L709 5418.L708: 5419 mov r0, r4 5420 bl Ftl_write_map_blk_to_last_page 5421.L709: 5422 ldrh r2, [r4] 5423 ldr r3, [r4, #12] 5424 ldrh r3, [r3, r2, lsl #1] 5425 cbnz r3, .L710 5426 movw r2, #699 5427 ldr r1, .L725+4 5428 ldr r0, .L725+8 5429 bl printf 5430.L710: 5431 ldrh r2, [r4] 5432 ldrh r3, [r4, #10] 5433 cmp r2, r3 5434 bcc .L711 5435 mov r2, #700 5436 ldr r1, .L725+4 5437 ldr r0, .L725+8 5438 bl printf 5439.L711: 5440 ldrh r2, [r4] 5441 movs r1, #0 5442 ldr r3, [r4, #12] 5443 ldr r5, .L725+12 5444 ldrh r10, [r3, r2, lsl #1] 5445 ldrh r2, [r4, #2] 5446 ldr r3, [sp, #4] 5447 orr r2, r2, r10, lsl #10 5448 str r3, [r5, #8] 5449 str r2, [r5, #4] 5450 ldr r2, .L725+16 5451 ldr r0, [r2] 5452 movs r2, #16 5453 str r0, [r5, #12] 5454 bl ftl_memset 5455 ldr r2, [r5, #12] 5456 movs r3, #1 5457 ldr r1, [r4, #28] 5458 mov r0, r5 5459 strh r7, [r2, #8] @ movhi 5460 str r1, [r2, #4] 5461 ldrh r1, [r4, #4] 5462 strh r10, [r2, #2] @ movhi 5463 strh r1, [r2] @ movhi 5464 mov r2, r3 5465 mov r1, r3 5466 bl FlashProgPages 5467 ldrh r2, [r4, #2] 5468 ldr r3, [r5] 5469 adds r2, r2, #1 5470 uxth r2, r2 5471 adds r3, r3, #1 5472 strh r2, [r4, #2] @ movhi 5473 bne .L712 5474 ldr r1, [r5, #4] 5475 adds r6, r6, #1 5476 ldr r0, .L725+20 5477 uxth r6, r6 5478 bl printf 5479 ldrh r2, [r4, #2] 5480 cmp r2, #2 5481 ittt ls 5482 ldrhls r2, [fp] 5483 addls r2, r2, #-1 5484 strhls r2, [r4, #2] @ movhi 5485 cmp r6, #3 5486 bls .L714 5487 mov r2, r6 5488 ldr r1, [r5, #4] 5489 ldr r0, .L725+24 5490 bl printf 5491.L715: 5492 b .L715 5493.L714: 5494 ldr r3, [r4, #32] 5495 cmp r3, #0 5496 beq .L707 5497.L724: 5498 b .L724 5499.L712: 5500 cmp r2, #1 5501 beq .L707 5502 ldr r2, [r5, #4] 5503 movs r0, #0 5504 ldr r3, [r4, #24] 5505 str r2, [r3, r7, lsl #2] 5506 add sp, sp, #8 5507 @ sp needed 5508 pop {r4, r5, r6, r7, r8, r10, fp, pc} 5509.L726: 5510 .align 2 5511.L725: 5512 .word .LANCHOR66 5513 .word .LANCHOR142 5514 .word .LC1 5515 .word .LANCHOR106 5516 .word .LANCHOR108 5517 .word .LC89 5518 .word .LC90 5519 .word .LANCHOR20 5520 .size FtlMapWritePage, .-FtlMapWritePage 5521 .section .text.ftl_map_blk_gc,"ax",%progbits 5522 .align 1 5523 .global ftl_map_blk_gc 5524 .syntax unified 5525 .thumb 5526 .thumb_func 5527 .fpu softvfp 5528 .type ftl_map_blk_gc, %function 5529ftl_map_blk_gc: 5530 @ args = 0, pretend = 0, frame = 8 5531 @ frame_needed = 0, uses_anonymous_args = 0 5532 ldr r3, [r0, #24] 5533 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 5534 mov r4, r0 5535 ldr r5, [r0, #12] 5536 str r3, [sp] 5537 bl ftl_free_no_use_map_blk 5538 ldrh r3, [r4, #10] 5539 ldrh r2, [r4, #8] 5540 subs r3, r3, #4 5541 cmp r2, r3 5542 blt .L728 5543 uxth r0, r0 5544 ldrh r7, [r5, r0, lsl #1] 5545 cbz r7, .L728 5546 ldr r3, [r4, #32] 5547 cbnz r3, .L728 5548 movs r2, #1 5549 str r2, [r4, #32] 5550 strh r3, [r5, r0, lsl #1] @ movhi 5551 ldrh r3, [r4, #8] 5552 ldrh r2, [r4, #2] 5553 subs r3, r3, #1 5554 strh r3, [r4, #8] @ movhi 5555 ldr r3, .L739 5556 ldrh r3, [r3] 5557 cmp r2, r3 5558 bcc .L729 5559 mov r0, r4 5560 bl ftl_map_blk_alloc_new_blk 5561.L729: 5562 ldr r5, .L739+4 5563 movs r6, #0 5564 ldr fp, .L739+20 5565.L730: 5566 ldrh r3, [r4, #6] 5567 uxth r10, r6 5568 cmp r3, r10 5569 bhi .L734 5570 movs r1, #1 5571 mov r0, r7 5572 bl FtlFreeSysBlkQueueIn 5573 movs r3, #0 5574 str r3, [r4, #32] 5575.L728: 5576 ldr r3, .L739 5577 ldrh r2, [r4, #2] 5578 ldrh r3, [r3] 5579 cmp r2, r3 5580 bcc .L735 5581 mov r0, r4 5582 bl ftl_map_blk_alloc_new_blk 5583.L735: 5584 movs r0, #0 5585 add sp, sp, #8 5586 @ sp needed 5587 pop {r4, r5, r6, r7, r8, r10, fp, pc} 5588.L734: 5589 ldr r3, [sp] 5590 uxth r8, r6 5591 ldr r2, [r3, r8, lsl #2] 5592 cmp r7, r2, lsr #10 5593 bne .L731 5594 ldr r3, [fp] 5595 str r2, [r5, #4] 5596 movs r2, #1 5597 mov r1, r2 5598 ldr r0, .L739+4 5599 str r3, [r5, #8] 5600 ldr r3, .L739+8 5601 ldr r3, [r3] 5602 str r3, [r5, #12] 5603 str r3, [sp, #4] 5604 bl FlashReadPages 5605 ldr r3, [sp, #4] 5606 ldrh r3, [r3, #8] 5607 cmp r3, r10 5608 beq .L732 5609 movw r2, #613 5610 ldr r1, .L739+12 5611 ldr r0, .L739+16 5612 bl printf 5613.L732: 5614 ldr r3, [r5] 5615 adds r3, r3, #1 5616 bne .L733 5617 ldr r2, [sp] 5618 movs r3, #0 5619 str r3, [r2, r8, lsl #2] 5620.L731: 5621 adds r6, r6, #1 5622 b .L730 5623.L733: 5624 ldr r2, [r5, #8] 5625 mov r1, r8 5626 mov r0, r4 5627 bl FtlMapWritePage 5628 b .L731 5629.L740: 5630 .align 2 5631.L739: 5632 .word .LANCHOR20 5633 .word .LANCHOR106 5634 .word .LANCHOR108 5635 .word .LANCHOR143 5636 .word .LC1 5637 .word .LANCHOR123 5638 .size ftl_map_blk_gc, .-ftl_map_blk_gc 5639 .section .text.flush_l2p_region,"ax",%progbits 5640 .align 1 5641 .global flush_l2p_region 5642 .syntax unified 5643 .thumb 5644 .thumb_func 5645 .fpu softvfp 5646 .type flush_l2p_region, %function 5647flush_l2p_region: 5648 @ args = 0, pretend = 0, frame = 0 5649 @ frame_needed = 0, uses_anonymous_args = 0 5650 push {r3, r4, r5, lr} 5651 movs r4, #12 5652 ldr r5, .L742 5653 muls r4, r0, r4 5654 ldr r0, .L742+4 5655 ldr r3, [r5] 5656 adds r2, r3, r4 5657 ldrh r1, [r3, r4] 5658 ldr r2, [r2, #8] 5659 bl FtlMapWritePage 5660 ldr r3, [r5] 5661 movs r0, #0 5662 add r4, r4, r3 5663 ldr r3, [r4, #4] 5664 bic r3, r3, #-2147483648 5665 str r3, [r4, #4] 5666 pop {r3, r4, r5, pc} 5667.L743: 5668 .align 2 5669.L742: 5670 .word .LANCHOR55 5671 .word .LANCHOR144 5672 .size flush_l2p_region, .-flush_l2p_region 5673 .section .text.log2phys,"ax",%progbits 5674 .align 1 5675 .global log2phys 5676 .syntax unified 5677 .thumb 5678 .thumb_func 5679 .fpu softvfp 5680 .type log2phys, %function 5681log2phys: 5682 @ args = 0, pretend = 0, frame = 0 5683 @ frame_needed = 0, uses_anonymous_args = 0 5684 ldr r3, .L758 5685 push {r4, r5, r6, r7, r8, r10, fp, lr} 5686 mov r7, r1 5687 mov r10, r2 5688 ldrh r4, [r3] 5689 adds r3, r4, #7 5690 movs r4, #1 5691 lsr r8, r0, r3 5692 lsls r4, r4, r3 5693 ldr r3, .L758+4 5694 subs r4, r4, #1 5695 uxth r8, r8 5696 ands r4, r4, r0 5697 ldr r3, [r3] 5698 uxth r4, r4 5699 cmp r0, r3 5700 bcc .L745 5701 mov r2, #808 5702 ldr r1, .L758+8 5703 ldr r0, .L758+12 5704 bl printf 5705.L745: 5706 ldr r6, .L758+16 5707 mov fp, #12 5708 ldr r3, .L758+20 5709 ldr r1, [r6] 5710 ldrh r2, [r3] 5711 movs r3, #0 5712.L746: 5713 uxth r5, r3 5714 cmp r5, r2 5715 bcc .L751 5716 bl select_l2p_ram_region 5717 mul fp, fp, r0 5718 ldr r3, [r6] 5719 mov r5, r0 5720 ldrh r1, [r3, fp] 5721 add r2, r3, fp 5722 movw r3, #65535 5723 cmp r1, r3 5724 beq .L752 5725 ldr r3, [r2, #4] 5726 cmp r3, #0 5727 bge .L752 5728 bl flush_l2p_region 5729.L752: 5730 mov r1, r5 5731 mov r0, r8 5732 bl load_l2p_region 5733 b .L747 5734.L751: 5735 adds r3, r3, #1 5736 mla r0, fp, r3, r1 5737 ldrh r0, [r0, #-12] 5738 cmp r0, r8 5739 bne .L746 5740.L747: 5741 ldr r2, [r6] 5742 movs r3, #12 5743 mla r3, r3, r5, r2 5744 cmp r10, #0 5745 bne .L748 5746 ldr r3, [r3, #8] 5747 ldr r3, [r3, r4, lsl #2] 5748 str r3, [r7] 5749.L749: 5750 ldr r2, [r6] 5751 movs r3, #12 5752 mla r5, r3, r5, r2 5753 ldr r3, [r5, #4] 5754 adds r2, r3, #1 5755 beq .L755 5756 adds r3, r3, #1 5757 str r3, [r5, #4] 5758.L755: 5759 movs r0, #0 5760 pop {r4, r5, r6, r7, r8, r10, fp, pc} 5761.L748: 5762 ldr r1, [r7] 5763 ldr r2, [r3, #8] 5764 str r1, [r2, r4, lsl #2] 5765 ldr r2, [r3, #4] 5766 orr r2, r2, #-2147483648 5767 str r2, [r3, #4] 5768 ldr r3, .L758+24 5769 strh r8, [r3] @ movhi 5770 b .L749 5771.L759: 5772 .align 2 5773.L758: 5774 .word .LANCHOR22 5775 .word .LANCHOR61 5776 .word .LANCHOR145 5777 .word .LC1 5778 .word .LANCHOR55 5779 .word .LANCHOR33 5780 .word .LANCHOR56 5781 .size log2phys, .-log2phys 5782 .section .text.FtlReUsePrevPpa,"ax",%progbits 5783 .align 1 5784 .global FtlReUsePrevPpa 5785 .syntax unified 5786 .thumb 5787 .thumb_func 5788 .fpu softvfp 5789 .type FtlReUsePrevPpa, %function 5790FtlReUsePrevPpa: 5791 @ args = 0, pretend = 0, frame = 8 5792 @ frame_needed = 0, uses_anonymous_args = 0 5793 push {r0, r1, r4, r5, r6, r7, r8, lr} 5794 mov r6, r0 5795 ldr r5, .L770 5796 ubfx r0, r1, #10, #16 5797 str r1, [sp, #4] 5798 bl P2V_block_in_plane 5799 ldr r2, [r5] 5800 mov r7, r0 5801 ldrh r3, [r2, r0, lsl #1] 5802 cbnz r3, .L761 5803 ldr r2, .L770+4 5804 ldr r4, [r2] 5805 cmp r4, #0 5806 beq .L762 5807 ldr r2, .L770+8 5808 movw lr, #65535 5809 ldr ip, .L770+24 5810 ldr r0, .L770+12 5811 ldr r2, [r2] 5812 ldrh r1, [r0] 5813 mov r8, r0 5814 subs r4, r4, r2 5815 asrs r4, r4, #1 5816 mul r4, ip, r4 5817 mov ip, #6 5818 uxth r4, r4 5819.L763: 5820 uxth r0, r3 5821 cmp r1, r0 5822 bls .L762 5823 cmp r4, r7 5824 bne .L764 5825 mov r1, r4 5826 ldr r0, .L770+4 5827 bl List_remove_node 5828 ldrh r3, [r8] 5829 cbnz r3, .L765 5830 mov r2, #1688 5831 ldr r1, .L770+16 5832 ldr r0, .L770+20 5833 bl printf 5834.L765: 5835 ldrh r3, [r8] 5836 mov r0, r4 5837 subs r3, r3, #1 5838 strh r3, [r8] @ movhi 5839 bl INSERT_DATA_LIST 5840 ldr r2, [r5] 5841 ldrh r3, [r2, r7, lsl #1] 5842.L761: 5843 adds r3, r3, #1 5844 strh r3, [r2, r7, lsl #1] @ movhi 5845 b .L762 5846.L764: 5847 mul r4, ip, r4 5848 adds r3, r3, #1 5849 ldrh r4, [r2, r4] 5850 cmp r4, lr 5851 bne .L763 5852.L762: 5853 movs r2, #1 5854 add r1, sp, #4 5855 mov r0, r6 5856 bl log2phys 5857 add sp, sp, #8 5858 @ sp needed 5859 pop {r4, r5, r6, r7, r8, pc} 5860.L771: 5861 .align 2 5862.L770: 5863 .word .LANCHOR42 5864 .word .LANCHOR47 5865 .word .LANCHOR40 5866 .word .LANCHOR48 5867 .word .LANCHOR146 5868 .word .LC1 5869 .word -1431655765 5870 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa 5871 .section .text.ftl_scan_all_data,"ax",%progbits 5872 .align 1 5873 .global ftl_scan_all_data 5874 .syntax unified 5875 .thumb 5876 .thumb_func 5877 .fpu softvfp 5878 .type ftl_scan_all_data, %function 5879ftl_scan_all_data: 5880 @ args = 0, pretend = 0, frame = 8 5881 @ frame_needed = 0, uses_anonymous_args = 0 5882 push {r4, r5, r6, r7, r8, lr} 5883 movs r5, #0 5884 ldr r7, .L786 5885 sub sp, sp, #32 5886 movs r1, #0 5887 ldr r8, .L786+24 5888 ldr r0, .L786+4 5889 bl printf 5890.L773: 5891 ldr r3, [r7] 5892 cmp r5, r3 5893 bcc .L779 5894 add sp, sp, #32 5895 @ sp needed 5896 pop {r4, r5, r6, r7, r8, pc} 5897.L779: 5898 movs r2, #0 5899 add r1, sp, #28 5900 mov r0, r5 5901 bl log2phys 5902 ubfx r3, r5, #0, #11 5903 cbnz r3, .L774 5904 ldr r2, [sp, #28] 5905 mov r1, r5 5906 mov r0, r8 5907 bl printf 5908.L774: 5909 ldr r3, [sp, #28] 5910 adds r2, r3, #1 5911 beq .L776 5912 ldr r4, .L786+8 5913 movs r2, #0 5914 movs r1, #1 5915 str r3, [r4, #4] 5916 mov r0, r4 5917 ldr r3, .L786+12 5918 str r5, [r4, #16] 5919 str r2, [r4] 5920 ldr r3, [r3] 5921 str r3, [r4, #8] 5922 ldr r3, .L786+16 5923 ldr r6, [r3] 5924 str r6, [r4, #12] 5925 bl FlashReadPages 5926 ldr r3, [r4] 5927 cmp r3, #256 5928 beq .L777 5929 adds r3, r3, #1 5930 beq .L777 5931 ldr r3, [r6, #8] 5932 cmp r5, r3 5933 beq .L776 5934.L777: 5935 ldr r2, [r4, #8] 5936 ldr r3, [r4, #12] 5937 ldr r0, .L786+20 5938 ldr r1, [r2, #4] 5939 str r1, [sp, #16] 5940 mov r1, r5 5941 ldr r2, [r2] 5942 str r2, [sp, #12] 5943 ldr r2, [r3, #12] 5944 str r2, [sp, #8] 5945 ldr r2, [r3, #8] 5946 str r2, [sp, #4] 5947 ldr r2, [r3, #4] 5948 str r2, [sp] 5949 ldr r2, [r4, #4] 5950 ldr r3, [r3] 5951 bl printf 5952.L776: 5953 adds r5, r5, #1 5954 b .L773 5955.L787: 5956 .align 2 5957.L786: 5958 .word .LANCHOR61 5959 .word .LC91 5960 .word .LANCHOR106 5961 .word .LANCHOR107 5962 .word .LANCHOR108 5963 .word .LC93 5964 .word .LC92 5965 .size ftl_scan_all_data, .-ftl_scan_all_data 5966 .section .text.FtlReadRefresh,"ax",%progbits 5967 .align 1 5968 .global FtlReadRefresh 5969 .syntax unified 5970 .thumb 5971 .thumb_func 5972 .fpu softvfp 5973 .type FtlReadRefresh, %function 5974FtlReadRefresh: 5975 @ args = 0, pretend = 0, frame = 88 5976 @ frame_needed = 0, uses_anonymous_args = 0 5977 ldr r3, .L801 5978 push {r4, r5, r6, lr} 5979 sub sp, sp, #88 5980 mov r4, r3 5981 ldr r0, [r3, #80] 5982 cmp r0, #0 5983 beq .L789 5984 ldr r6, .L801+4 5985 ldr r0, [r3, #84] 5986 ldr r1, [r6] 5987 cmp r0, r1 5988 bcs .L790 5989 mov r5, #2048 5990.L795: 5991 ldr r0, [r4, #84] 5992 ldr r3, [r6] 5993 cmp r0, r3 5994 bcs .L792 5995 movs r2, #0 5996 mov r1, sp 5997 bl log2phys 5998 ldr r2, [sp] 5999 ldr r3, [r4, #84] 6000 adds r1, r2, #1 6001 add r3, r3, #1 6002 str r3, [r4, #84] 6003 beq .L793 6004 str r3, [sp, #20] 6005 add r0, sp, #88 6006 ldr r3, .L801+8 6007 movs r1, #1 6008 str r2, [sp, #8] 6009 movs r2, #0 6010 str r2, [r0, #-84]! 6011 str r3, [sp, #12] 6012 add r3, sp, #24 6013 str r3, [sp, #16] 6014 bl FlashReadPages 6015 ldr r3, [sp, #4] 6016 cmp r3, #256 6017 bne .L792 6018 ldr r0, [sp] 6019 ubfx r0, r0, #10, #16 6020 bl P2V_block_in_plane 6021 bl FtlGcRefreshBlock 6022.L792: 6023 mov r0, #-1 6024.L788: 6025 add sp, sp, #88 6026 @ sp needed 6027 pop {r4, r5, r6, pc} 6028.L793: 6029 subs r5, r5, #1 6030 bne .L795 6031 b .L792 6032.L790: 6033 ldr r2, .L801+12 6034 movs r0, #0 6035 str r0, [r3, #80] 6036 str r0, [r3, #84] 6037 ldr r2, [r2] 6038 str r2, [r3, #76] 6039 b .L788 6040.L789: 6041 ldr r1, [r3, #76] 6042 ldr r3, .L801+12 6043 ldr r5, [r3] 6044 add r3, r5, #1048576 6045 cmp r1, r3 6046 bhi .L798 6047 ldr r3, .L801+16 6048 ldr r2, [r3] 6049 mov r3, #33554432 6050 lsrs r2, r2, #10 6051 asrs r3, r3, r2 6052 add r3, r3, r1 6053 cmp r5, r3 6054 bhi .L798 6055 ldr r3, .L801+20 6056 ldrb r3, [r3, #28] @ zero_extendqisi2 6057 cmp r3, #0 6058 bne .L788 6059.L798: 6060 movs r3, #1 6061 movs r0, #0 6062 str r3, [r4, #80] 6063 str r0, [r4, #84] 6064 str r5, [r4, #76] 6065 b .L788 6066.L802: 6067 .align 2 6068.L801: 6069 .word .LANCHOR81 6070 .word .LANCHOR61 6071 .word ftl_temp_buf 6072 .word .LANCHOR62 6073 .word .LANCHOR76 6074 .word .LANCHOR39 6075 .size FtlReadRefresh, .-FtlReadRefresh 6076 .section .text.FtlMapBlkWriteDump_data,"ax",%progbits 6077 .align 1 6078 .global FtlMapBlkWriteDump_data 6079 .syntax unified 6080 .thumb 6081 .thumb_func 6082 .fpu softvfp 6083 .type FtlMapBlkWriteDump_data, %function 6084FtlMapBlkWriteDump_data: 6085 @ args = 0, pretend = 0, frame = 0 6086 @ frame_needed = 0, uses_anonymous_args = 0 6087 ldr r3, [r0, #36] 6088 push {r4, r5, r6, lr} 6089 mov r6, r0 6090 cbz r3, .L803 6091 ldrh r5, [r0, #6] 6092 movs r3, #0 6093 ldr r2, [r0, #24] 6094 str r3, [r0, #36] 6095 subs r5, r5, #1 6096 ldr r3, .L807 6097 ldr r1, .L807+4 6098 uxth r5, r5 6099 ldr r4, .L807+8 6100 ldr r2, [r2, r5, lsl #2] 6101 ldr r0, [r3] 6102 ldr r1, [r1] 6103 str r2, [r4, #4] 6104 str r0, [r4, #8] 6105 str r1, [r4, #12] 6106 cbz r2, .L805 6107 movs r2, #1 6108 mov r0, r4 6109 mov r1, r2 6110 bl FlashReadPages 6111.L806: 6112 ldr r2, [r4, #8] 6113 mov r1, r5 6114 mov r0, r6 6115 pop {r4, r5, r6, lr} 6116 b FtlMapWritePage 6117.L805: 6118 ldr r3, .L807+12 6119 movs r1, #255 6120 ldrh r2, [r3] 6121 bl ftl_memset 6122 b .L806 6123.L803: 6124 pop {r4, r5, r6, pc} 6125.L808: 6126 .align 2 6127.L807: 6128 .word .LANCHOR123 6129 .word .LANCHOR108 6130 .word .LANCHOR106 6131 .word .LANCHOR23 6132 .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data 6133 .section .text.FtlScanSysBlk,"ax",%progbits 6134 .align 1 6135 .global FtlScanSysBlk 6136 .syntax unified 6137 .thumb 6138 .thumb_func 6139 .fpu softvfp 6140 .type FtlScanSysBlk, %function 6141FtlScanSysBlk: 6142 @ args = 0, pretend = 0, frame = 32 6143 @ frame_needed = 0, uses_anonymous_args = 0 6144 push {r4, r5, r6, r7, r8, r10, fp, lr} 6145 movs r4, #0 6146 ldr r5, .L889 6147 sub sp, sp, #32 6148 mov r1, r4 6149 ldr r3, .L889+4 6150 ldr r2, [r5] 6151 ldr r6, .L889+8 6152 strh r4, [r3] @ movhi 6153 ldr r3, .L889+12 6154 lsls r2, r2, #2 6155 strh r4, [r6] @ movhi 6156 ldr r7, .L889+16 6157 ldr r0, [r3] 6158 bl ftl_memset 6159 ldr r2, [r5] 6160 mov r1, r4 6161 ldr r3, .L889+20 6162 lsls r2, r2, #1 6163 ldr r0, [r3] 6164 bl ftl_memset 6165 ldrh r2, [r7] 6166 mov r1, r4 6167 ldr r3, .L889+24 6168 lsls r2, r2, #2 6169 ldr r0, [r3] 6170 bl ftl_memset 6171 ldrh r2, [r7] 6172 mov r1, r4 6173 ldr r3, .L889+28 6174 lsls r2, r2, #1 6175 ldr r0, [r3] 6176 bl ftl_memset 6177 movs r2, #12 6178 movs r1, #255 6179 ldr r0, .L889+32 6180 bl ftl_memset 6181 ldr r3, .L889+36 6182 str r6, [sp, #12] 6183 str r5, [sp, #16] 6184 ldrh r3, [r3] 6185 str r3, [sp, #4] 6186.L810: 6187 ldr r3, .L889+40 6188 ldr r2, [sp, #4] 6189 ldrh r3, [r3] 6190 cmp r3, r2 6191 bls .L851 6192 ldr r3, .L889+44 6193 movs r5, #0 6194 ldr r1, .L889+48 6195 mov fp, r5 6196 movs r7, #20 6197 ldrh r8, [r3] 6198 ldr r3, .L889+52 6199 ldr r2, [r1] 6200 ldr r1, .L889+56 6201 ldr r6, [r3] 6202 ldr r3, .L889+60 6203 str r2, [sp, #8] 6204 ldrh r10, [r1] 6205 ldr r3, [r3] 6206 ldr r2, .L889+64 6207 b .L852 6208.L812: 6209 ldrb r0, [r2, r5] @ zero_extendqisi2 6210 ldr r1, [sp, #4] 6211 str r3, [sp, #28] 6212 str r2, [sp, #24] 6213 bl V2P_block 6214 str r0, [sp, #20] 6215 bl FtlBbmIsBadBlock 6216 ldr r2, [sp, #24] 6217 ldr r3, [sp, #28] 6218 cbnz r0, .L811 6219 ldr r1, [sp, #20] 6220 mla r0, r7, fp, r6 6221 ldr r4, [sp, #8] 6222 lsls r1, r1, #10 6223 str r3, [r0, #8] 6224 str r1, [r0, #4] 6225 mul r1, r10, fp 6226 bic r1, r1, #3 6227 add r1, r1, r4 6228 str r1, [r0, #12] 6229 add r1, fp, #1 6230 uxth fp, r1 6231.L811: 6232 adds r5, r5, #1 6233.L852: 6234 uxth r1, r5 6235 cmp r8, r1 6236 bhi .L812 6237 cmp fp, #0 6238 bne .L813 6239.L850: 6240 ldr r3, [sp, #4] 6241 adds r3, r3, #1 6242 uxth r3, r3 6243 str r3, [sp, #4] 6244 b .L810 6245.L813: 6246 movs r7, #0 6247 movs r2, #1 6248 mov r1, fp 6249 mov r0, r6 6250 bl FlashReadPages 6251.L814: 6252 uxth r3, r7 6253 cmp fp, r3 6254 bls .L850 6255 ldr r3, .L889+52 6256 mov r8, #20 6257 mul r8, r8, r7 6258 ldr r3, [r3] 6259 add r2, r3, r8 6260 ldr r3, [r3, r8] 6261 ldr r5, [r2, #4] 6262 ldr r6, [r2, #12] 6263 adds r3, r3, #1 6264 ubfx r5, r5, #10, #16 6265 bne .L817 6266 mov r10, #16 6267.L819: 6268 ldr r3, .L889+52 6269 movs r2, #1 6270 mov r1, r2 6271 ldr r0, [r3] 6272 add r0, r0, r8 6273 ldr r3, [r0, #4] 6274 adds r3, r3, #1 6275 str r3, [r0, #4] 6276 bl FlashReadPages 6277 ldrh r2, [r6] 6278 movw r3, #65535 6279 cmp r2, r3 6280 ldr r3, .L889+52 6281 ldr r3, [r3] 6282 bne .L816 6283 mov r2, #-1 6284 str r2, [r3, r8] 6285 ldr r3, .L889+52 6286 ldr r3, [r3] 6287 ldr r3, [r3, r8] 6288 cmp r3, r2 6289 bne .L817 6290.L818: 6291 movs r1, #0 6292 mov r0, r5 6293 bl FtlFreeSysBlkQueueIn 6294 b .L822 6295.L816: 6296 ldr r3, [r3, r8] 6297 adds r3, r3, #1 6298 bne .L817 6299 add r10, r10, #-1 6300 uxth r10, r10 6301 cmp r10, #0 6302 bne .L819 6303 b .L818 6304.L817: 6305 ldr r3, .L889+68 6306 ldr r2, [r3] 6307 ldr r3, [r6, #4] 6308 adds r1, r2, #1 6309 beq .L820 6310 cmp r2, r3 6311 bhi .L821 6312.L820: 6313 adds r2, r3, #1 6314 ittt ne 6315 ldrne r1, .L889+68 6316 addne r2, r3, #1 6317 strne r2, [r1] 6318.L821: 6319 ldrh r2, [r6] 6320 movw r1, #61604 6321 cmp r2, r1 6322 beq .L823 6323 bhi .L824 6324 movw r3, #61574 6325 cmp r2, r3 6326 beq .L825 6327.L822: 6328 adds r7, r7, #1 6329 b .L814 6330.L824: 6331 movw r3, #61634 6332 cmp r2, r3 6333 beq .L826 6334 movw r3, #65535 6335 cmp r2, r3 6336 beq .L818 6337 b .L822 6338.L826: 6339 ldr r3, .L889+8 6340 ldrh r2, [r3] 6341 ldr r3, .L889 6342 ldr r3, [r3] 6343 cmp r2, r3 6344 bls .L828 6345 movw r2, #1211 6346 ldr r1, .L889+72 6347 ldr r0, .L889+76 6348 bl printf 6349.L828: 6350 ldr r3, [sp, #16] 6351 ldr r2, [sp, #12] 6352 ldr r1, [r3] 6353 ldrh r0, [r2] 6354 ldr r2, .L889+12 6355 uxth r10, r1 6356 ldr ip, [r2] 6357 add r3, r10, #-1 6358 sub r10, r10, r0 6359 add r10, r10, #-1 6360 sxth r3, r3 6361 sxth r10, r10 6362.L829: 6363 cmp r3, r10 6364 bgt .L835 6365 cmp r3, #0 6366 bge .L867 6367 b .L822 6368.L835: 6369 ldr r2, [ip, r3, lsl #2] 6370 add r8, ip, r3, lsl #2 6371 ldr r4, [r6, #4] 6372 cmp r4, r2 6373 bls .L830 6374 ldr r2, [ip] 6375 cbnz r2, .L831 6376 cmp r1, r0 6377 ittt ne 6378 ldrne r2, .L889+8 6379 addne r0, r0, #1 6380 strhne r0, [r2] @ movhi 6381.L831: 6382 ldr r2, .L889+20 6383 uxth r10, r3 6384 ldr r0, [r2] 6385 movs r2, #0 6386.L832: 6387 uxth lr, r2 6388 sxth r1, r2 6389 cmp r10, lr 6390 bhi .L833 6391 ldr r2, [r6, #4] 6392 cmp r3, #0 6393 str r2, [r8] 6394 strh r5, [r0, r3, lsl #1] @ movhi 6395 blt .L822 6396 ldr r2, .L889+8 6397 ldrh r0, [r2] 6398 ldr r2, .L889 6399 ldr r2, [r2] 6400 subs r2, r2, r0 6401 subs r2, r2, #1 6402 sxth r2, r2 6403 cmp r3, r2 6404 bgt .L822 6405.L867: 6406 ldr r2, .L889+8 6407 adds r0, r0, #1 6408 strh r0, [r2] @ movhi 6409 ldr r2, [r6, #4] 6410 str r2, [ip, r3, lsl #2] 6411 ldr r2, .L889+20 6412.L887: 6413 ldr r2, [r2] 6414 strh r5, [r2, r3, lsl #1] @ movhi 6415 b .L822 6416.L833: 6417 add lr, ip, r1, lsl #2 6418 adds r2, r2, #1 6419 ldr r4, [lr, #4] 6420 add lr, r0, r1, lsl #1 6421 ldrh lr, [lr, #2] 6422 str r4, [ip, r1, lsl #2] 6423 strh lr, [r0, r1, lsl #1] @ movhi 6424 b .L832 6425.L830: 6426 subs r3, r3, #1 6427 sxth r3, r3 6428 b .L829 6429.L890: 6430 .align 2 6431.L889: 6432 .word .LANCHOR30 6433 .word .LANCHOR35 6434 .word .LANCHOR147 6435 .word .LANCHOR135 6436 .word .LANCHOR27 6437 .word .LANCHOR129 6438 .word .LANCHOR132 6439 .word .LANCHOR36 6440 .word .LANCHOR79 6441 .word .LANCHOR5 6442 .word .LANCHOR6 6443 .word .LANCHOR3 6444 .word .LANCHOR92 6445 .word .LANCHOR120 6446 .word .LANCHOR24 6447 .word .LANCHOR91 6448 .word .LANCHOR13 6449 .word .LANCHOR70 6450 .word .LANCHOR148 6451 .word .LC1 6452.L825: 6453 ldr r8, .L891+12 6454 ldr r10, .L891+20 6455 ldrh r2, [r8] 6456 ldrh r3, [r10] 6457 cmp r2, r3 6458 bls .L838 6459 movw r2, #1252 6460 ldr r1, .L891 6461 ldr r0, .L891+4 6462 bl printf 6463.L838: 6464 ldr r2, .L891+8 6465 ldrh lr, [r10] 6466 ldrh ip, [r8] 6467 ldr r0, [r2] 6468 add r10, lr, #-1 6469 sxth r3, r10 6470 sub r10, r10, ip 6471.L839: 6472 cmp r3, r10 6473 ble .L844 6474 ldr r1, [r6, #4] 6475 add r8, r0, r3, lsl #2 6476 ldr r2, [r0, r3, lsl #2] 6477 cmp r1, r2 6478 bls .L840 6479 ldr r2, [r0] 6480 cbnz r2, .L841 6481 cmp lr, ip 6482 ittt ne 6483 ldrne r2, .L891+12 6484 addne ip, ip, #1 6485 strhne ip, [r2] @ movhi 6486.L841: 6487 ldr r2, .L891+16 6488 uxth r10, r3 6489 ldr ip, [r2] 6490 movs r2, #0 6491.L842: 6492 uxth lr, r2 6493 sxth r1, r2 6494 cmp r10, lr 6495 bhi .L843 6496 ldr r2, [r6, #4] 6497 str r2, [r8] 6498 strh r5, [ip, r3, lsl #1] @ movhi 6499.L844: 6500 cmp r3, #0 6501 blt .L822 6502 ldr r2, .L891+20 6503 ldr ip, .L891+12 6504 ldrh r2, [r2] 6505 ldrh r1, [ip] 6506 subs r2, r2, #1 6507 subs r2, r2, r1 6508 sxth r2, r2 6509 cmp r3, r2 6510 bgt .L822 6511 ldr r2, [r6, #4] 6512 adds r1, r1, #1 6513 strh r1, [ip] @ movhi 6514 str r2, [r0, r3, lsl #2] 6515 ldr r2, .L891+16 6516 b .L887 6517.L843: 6518 add lr, r0, r1, lsl #2 6519 adds r2, r2, #1 6520 ldr r4, [lr, #4] 6521 add lr, ip, r1, lsl #1 6522 ldrh lr, [lr, #2] 6523 str r4, [r0, r1, lsl #2] 6524 strh lr, [ip, r1, lsl #1] @ movhi 6525 b .L842 6526.L840: 6527 subs r3, r3, #1 6528 sxth r3, r3 6529 b .L839 6530.L823: 6531 ldr r8, .L891+40 6532 movw r2, #65535 6533 ldrh r1, [r8] 6534 cmp r1, r2 6535 bne .L846 6536.L888: 6537 strh r5, [r8] @ movhi 6538 str r3, [r8, #8] 6539 b .L822 6540.L846: 6541 ldrh r0, [r8, #4] 6542 cmp r0, r2 6543 beq .L847 6544 movs r1, #1 6545 bl FtlFreeSysBlkQueueIn 6546.L847: 6547 ldr r3, [r6, #4] 6548 ldr r2, [r8, #8] 6549 cmp r2, r3 6550 bcs .L848 6551 ldrh r2, [r8] 6552 strh r2, [r8, #4] @ movhi 6553 b .L888 6554.L848: 6555 strh r5, [r8, #4] @ movhi 6556 b .L822 6557.L851: 6558 ldr r3, .L891+24 6559 ldr r2, [r3] 6560 ldrh r3, [r2] 6561 cbz r3, .L853 6562.L856: 6563 ldr r3, .L891+16 6564 ldr r4, [r3] 6565 ldrh r2, [r4] 6566 cmp r2, #0 6567 beq .L854 6568.L855: 6569 ldr r3, .L891+28 6570 ldrh r2, [r3] 6571 ldr r3, .L891+32 6572 ldr r3, [r3] 6573 cmp r2, r3 6574 bls .L886 6575 movw r2, #1377 6576 ldr r1, .L891 6577 ldr r0, .L891+4 6578 bl printf 6579.L886: 6580 movs r0, #0 6581 add sp, sp, #32 6582 @ sp needed 6583 pop {r4, r5, r6, r7, r8, r10, fp, pc} 6584.L853: 6585 ldr r1, .L891+28 6586 ldrh r1, [r1] 6587 cmp r1, #0 6588 beq .L856 6589 ldr r5, .L891+32 6590 ldr r0, [r5] 6591.L857: 6592 sxth r1, r3 6593 cmp r1, r0 6594 bcs .L856 6595 ldrh r4, [r2, r1, lsl #1] 6596 adds r3, r3, #1 6597 cmp r4, #0 6598 beq .L857 6599 ldr r3, .L891+36 6600 movs r6, #0 6601 ldr r0, [r3] 6602 mov r3, r1 6603.L858: 6604 ldr r4, [r5] 6605 cmp r3, r4 6606 bcs .L856 6607 ldrh r7, [r2, r3, lsl #1] 6608 subs r4, r3, r1 6609 strh r7, [r2, r4, lsl #1] @ movhi 6610 ldr r7, [r0, r3, lsl #2] 6611 str r7, [r0, r4, lsl #2] 6612 strh r6, [r2, r3, lsl #1] @ movhi 6613 adds r3, r3, #1 6614 sxth r3, r3 6615 b .L858 6616.L854: 6617 ldr r3, .L891+12 6618 ldrh r3, [r3] 6619 cmp r3, #0 6620 beq .L855 6621 ldr r5, .L891+20 6622 ldrh r1, [r5] 6623.L863: 6624 sxth r3, r2 6625 cmp r3, r1 6626 mov r6, r3 6627 bge .L855 6628 ldrh r0, [r4, r3, lsl #1] 6629 adds r2, r2, #1 6630 cmp r0, #0 6631 beq .L863 6632 ldr r2, .L891+8 6633 movs r0, #0 6634 ldr r2, [r2] 6635.L864: 6636 ldrh r1, [r5] 6637 cmp r3, r1 6638 bge .L855 6639 ldrh r7, [r4, r3, lsl #1] 6640 subs r1, r3, r6 6641 strh r7, [r4, r1, lsl #1] @ movhi 6642 ldr r7, [r2, r3, lsl #2] 6643 str r7, [r2, r1, lsl #2] 6644 adds r1, r3, #1 6645 strh r0, [r4, r3, lsl #1] @ movhi 6646 sxth r3, r1 6647 b .L864 6648.L892: 6649 .align 2 6650.L891: 6651 .word .LANCHOR148 6652 .word .LC1 6653 .word .LANCHOR132 6654 .word .LANCHOR35 6655 .word .LANCHOR36 6656 .word .LANCHOR27 6657 .word .LANCHOR129 6658 .word .LANCHOR147 6659 .word .LANCHOR30 6660 .word .LANCHOR135 6661 .word .LANCHOR79 6662 .size FtlScanSysBlk, .-FtlScanSysBlk 6663 .section .text.FtlMapTblRecovery,"ax",%progbits 6664 .align 1 6665 .global FtlMapTblRecovery 6666 .syntax unified 6667 .thumb 6668 .thumb_func 6669 .fpu softvfp 6670 .type FtlMapTblRecovery, %function 6671FtlMapTblRecovery: 6672 @ args = 0, pretend = 0, frame = 24 6673 @ frame_needed = 0, uses_anonymous_args = 0 6674 ldr r3, [r0, #16] 6675 movs r1, #0 6676 push {r4, r5, r6, r7, r8, r10, fp, lr} 6677 sub sp, sp, #24 6678 ldrh fp, [r0, #6] 6679 mov r4, r0 6680 movs r6, #0 6681 ldr r8, [r0, #24] 6682 str r3, [sp, #12] 6683 ldrh r3, [r0, #8] 6684 lsl r2, fp, #2 6685 ldr r10, [r0, #12] 6686 mov r0, r8 6687 ldr r5, .L920 6688 str r3, [sp, #4] 6689 bl ftl_memset 6690 ldr r3, .L920+4 6691 str r6, [r4, #32] 6692 str r6, [r4, #28] 6693 ldr r2, [r3] 6694 str r3, [sp, #8] 6695 str r2, [r5, #8] 6696 ldr r2, .L920+8 6697 ldr r7, [r2] 6698 movw r2, #65535 6699 str r7, [r5, #12] 6700 strh r2, [r4] @ movhi 6701 strh r2, [r4, #2] @ movhi 6702 movs r2, #1 6703 str r2, [r4, #36] 6704.L894: 6705 ldr r2, [sp, #4] 6706 sxth r3, r6 6707 cmp r3, r2 6708 bge .L911 6709 ldr r2, [sp, #4] 6710 subs r2, r2, #1 6711 cmp r3, r2 6712 lsl r2, r3, #1 6713 bne .L895 6714 ldrh r0, [r10, r3, lsl #1] 6715 movs r1, #1 6716 add r5, r10, r2 6717 str r3, [sp, #4] 6718 bl FtlGetLastWrittenPage 6719 ldr r3, [sp, #12] 6720 sxth r10, r0 6721 strh r6, [r4] @ movhi 6722 movs r6, #0 6723 adds r0, r0, #1 6724 mov r2, r3 6725 ldr r3, [sp, #4] 6726 strh r0, [r4, #2] @ movhi 6727 ldr r3, [r2, r3, lsl #2] 6728 str r3, [r4, #28] 6729 ldr r3, .L920 6730.L896: 6731 sxth r2, r6 6732 cmp r2, r10 6733 ble .L898 6734.L911: 6735 mov r0, r4 6736 bl ftl_free_no_use_map_blk 6737 ldr r3, .L920+12 6738 ldrh r2, [r4, #2] 6739 ldrh r3, [r3] 6740 cmp r2, r3 6741 bne .L900 6742 mov r0, r4 6743 bl ftl_map_blk_alloc_new_blk 6744.L900: 6745 mov r0, r4 6746 bl ftl_map_blk_gc 6747 mov r0, r4 6748 bl ftl_map_blk_gc 6749 movs r0, #0 6750 add sp, sp, #24 6751 @ sp needed 6752 pop {r4, r5, r6, r7, r8, r10, fp, pc} 6753.L898: 6754 ldrh r1, [r5] 6755 ldr r0, .L920 6756 str r3, [sp, #4] 6757 orr r2, r2, r1, lsl #10 6758 str r2, [r3, #4] 6759 movs r2, #1 6760 mov r1, r2 6761 bl FlashReadPages 6762 ldr r3, [sp, #4] 6763 ldr r2, [r3] 6764 adds r2, r2, #1 6765 beq .L897 6766 ldrh r2, [r7, #8] 6767 cmp fp, r2 6768 bls .L897 6769 ldrh r1, [r4, #4] 6770 ldrh r0, [r7] 6771 cmp r0, r1 6772 itt eq 6773 ldreq r1, [r3, #4] 6774 streq r1, [r8, r2, lsl #2] 6775.L897: 6776 adds r6, r6, #1 6777 b .L896 6778.L895: 6779 ldr r1, [sp, #8] 6780 add r2, r10, r2 6781 str r2, [sp, #16] 6782 ldr r0, .L920 6783 ldr r1, [r1] 6784 str r1, [r5, #8] 6785 ldrh r1, [r10, r3, lsl #1] 6786 ldr r3, .L920+12 6787 ldrh r2, [r3] 6788 str r3, [sp, #20] 6789 subs r2, r2, #1 6790 orr r2, r2, r1, lsl #10 6791 str r2, [r5, #4] 6792 movs r2, #1 6793 mov r1, r2 6794 bl FlashReadPages 6795 ldr r2, [r5] 6796 adds r2, r2, #1 6797 beq .L913 6798 ldrh r1, [r7] 6799 ldrh r2, [r4, #4] 6800 ldr r3, [sp, #20] 6801 cmp r1, r2 6802 bne .L913 6803 ldrh r1, [r7, #8] 6804 movw r2, #64245 6805 cmp r1, r2 6806 beq .L902 6807.L913: 6808 movs r3, #0 6809.L903: 6810 ldr r1, .L920+12 6811 sxth r2, r3 6812 ldrh r1, [r1] 6813 cmp r2, r1 6814 bge .L909 6815 str r3, [sp, #20] 6816 ldr r3, [sp, #16] 6817 ldr r0, .L920 6818 ldrh r1, [r3] 6819 orr r2, r2, r1, lsl #10 6820 str r2, [r5, #4] 6821 movs r2, #1 6822 mov r1, r2 6823 bl FlashReadPages 6824 ldr r2, [r5] 6825 ldr r3, [sp, #20] 6826 adds r2, r2, #1 6827 beq .L907 6828 ldrh r2, [r7, #8] 6829 cmp fp, r2 6830 bls .L907 6831 ldrh r1, [r4, #4] 6832 ldrh r0, [r7] 6833 cmp r0, r1 6834 itt eq 6835 ldreq r1, [r5, #4] 6836 streq r1, [r8, r2, lsl #2] 6837.L907: 6838 adds r3, r3, #1 6839 b .L903 6840.L902: 6841 ldrh r2, [r3] 6842 movs r1, #0 6843 ldr r3, [sp, #8] 6844 subs r2, r2, #1 6845 ldr ip, [r3] 6846.L904: 6847 sxth r3, r1 6848 cmp r3, r2 6849 blt .L906 6850.L909: 6851 adds r6, r6, #1 6852 b .L894 6853.L906: 6854 lsls r0, r3, #3 6855 ldr r3, [ip, r3, lsl #3] 6856 adds r1, r1, #1 6857 uxth lr, r3 6858 cmp fp, lr 6859 itttt hi 6860 addhi r0, r0, ip 6861 movhi r3, lr 6862 ldrhi r0, [r0, #4] 6863 strhi r0, [r8, r3, lsl #2] 6864 b .L904 6865.L921: 6866 .align 2 6867.L920: 6868 .word .LANCHOR106 6869 .word .LANCHOR107 6870 .word .LANCHOR108 6871 .word .LANCHOR20 6872 .size FtlMapTblRecovery, .-FtlMapTblRecovery 6873 .section .text.FtlLoadVonderInfo,"ax",%progbits 6874 .align 1 6875 .global FtlLoadVonderInfo 6876 .syntax unified 6877 .thumb 6878 .thumb_func 6879 .fpu softvfp 6880 .type FtlLoadVonderInfo, %function 6881FtlLoadVonderInfo: 6882 @ args = 0, pretend = 0, frame = 0 6883 @ frame_needed = 0, uses_anonymous_args = 0 6884 push {r3, lr} 6885 ldr r3, .L923 6886 ldr r0, .L923+4 6887 ldrh r3, [r3] 6888 strh r3, [r0, #10] @ movhi 6889 movw r3, #61574 6890 strh r3, [r0, #4] @ movhi 6891 ldr r3, .L923+8 6892 ldrh r3, [r3] 6893 strh r3, [r0, #8] @ movhi 6894 ldr r3, .L923+12 6895 ldrh r3, [r3] 6896 strh r3, [r0, #6] @ movhi 6897 ldr r3, .L923+16 6898 ldr r3, [r3] 6899 str r3, [r0, #12] 6900 ldr r3, .L923+20 6901 ldr r3, [r3] 6902 str r3, [r0, #16] 6903 ldr r3, .L923+24 6904 ldr r3, [r3] 6905 str r3, [r0, #20] 6906 ldr r3, .L923+28 6907 ldr r3, [r3] 6908 str r3, [r0, #24] 6909 bl FtlMapTblRecovery 6910 movs r0, #0 6911 pop {r3, pc} 6912.L924: 6913 .align 2 6914.L923: 6915 .word .LANCHOR27 6916 .word .LANCHOR149 6917 .word .LANCHOR35 6918 .word .LANCHOR28 6919 .word .LANCHOR36 6920 .word .LANCHOR132 6921 .word .LANCHOR131 6922 .word .LANCHOR133 6923 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo 6924 .section .text.FtlL2PDataInit,"ax",%progbits 6925 .align 1 6926 .global FtlL2PDataInit 6927 .syntax unified 6928 .thumb 6929 .thumb_func 6930 .fpu softvfp 6931 .type FtlL2PDataInit, %function 6932FtlL2PDataInit: 6933 @ args = 0, pretend = 0, frame = 0 6934 @ frame_needed = 0, uses_anonymous_args = 0 6935 push {r4, r5, r6, r7, r8, lr} 6936 movs r1, #0 6937 ldr r5, .L928 6938 ldr r4, .L928+4 6939 ldr r2, [r5] 6940 ldr r7, .L928+8 6941 ldr r6, .L928+12 6942 ldr r0, [r4] 6943 lsls r2, r2, #1 6944 ldr r8, .L928+44 6945 bl ftl_memset 6946 ldrh r3, [r7] 6947 movs r1, #255 6948 ldrh r2, [r6] 6949 ldr r0, [r8] 6950 muls r2, r3, r2 6951 bl ftl_memset 6952 ldr r3, .L928+16 6953 movw r0, #65535 6954 ldrh r1, [r6] 6955 ldr ip, [r8] 6956 ldr r2, [r3] 6957 movs r3, #12 6958 ldrh r7, [r7] 6959 mla r3, r1, r3, r3 6960 adds r1, r2, r3 6961 movs r3, #0 6962 mov lr, r3 6963.L926: 6964 adds r2, r2, #12 6965 adds r6, r3, r7 6966 cmp r2, r1 6967 bne .L927 6968 ldr r3, .L928+20 6969 ldr r2, [r5] 6970 strh r0, [r3, #2] @ movhi 6971 strh r2, [r3, #10] @ movhi 6972 movw r2, #61634 6973 strh r2, [r3, #4] @ movhi 6974 ldr r2, .L928+24 6975 strh r0, [r3] @ movhi 6976 ldrh r2, [r2] 6977 strh r2, [r3, #8] @ movhi 6978 ldr r2, .L928+28 6979 ldrh r2, [r2] 6980 strh r2, [r3, #6] @ movhi 6981 ldr r2, .L928+32 6982 ldr r2, [r2] 6983 str r2, [r3, #12] 6984 ldr r2, .L928+36 6985 ldr r2, [r2] 6986 str r2, [r3, #16] 6987 ldr r2, [r4] 6988 str r2, [r3, #20] 6989 ldr r2, .L928+40 6990 ldr r2, [r2] 6991 str r2, [r3, #24] 6992 pop {r4, r5, r6, r7, r8, pc} 6993.L927: 6994 bic r3, r3, #3 6995 str lr, [r2, #-8] 6996 add r3, r3, ip 6997 strh r0, [r2, #-12] @ movhi 6998 str r3, [r2, #-4] 6999 mov r3, r6 7000 b .L926 7001.L929: 7002 .align 2 7003.L928: 7004 .word .LANCHOR30 7005 .word .LANCHOR130 7006 .word .LANCHOR23 7007 .word .LANCHOR33 7008 .word .LANCHOR55 7009 .word .LANCHOR144 7010 .word .LANCHOR147 7011 .word .LANCHOR32 7012 .word .LANCHOR129 7013 .word .LANCHOR135 7014 .word .LANCHOR134 7015 .word .LANCHOR136 7016 .size FtlL2PDataInit, .-FtlL2PDataInit 7017 .section .text.FtlLoadMapInfo,"ax",%progbits 7018 .align 1 7019 .global FtlLoadMapInfo 7020 .syntax unified 7021 .thumb 7022 .thumb_func 7023 .fpu softvfp 7024 .type FtlLoadMapInfo, %function 7025FtlLoadMapInfo: 7026 @ args = 0, pretend = 0, frame = 0 7027 @ frame_needed = 0, uses_anonymous_args = 0 7028 push {r3, lr} 7029 bl FtlL2PDataInit 7030 ldr r0, .L931 7031 bl FtlMapTblRecovery 7032 movs r0, #0 7033 pop {r3, pc} 7034.L932: 7035 .align 2 7036.L931: 7037 .word .LANCHOR144 7038 .size FtlLoadMapInfo, .-FtlLoadMapInfo 7039 .section .text.FtlVariablesInit,"ax",%progbits 7040 .align 1 7041 .global FtlVariablesInit 7042 .syntax unified 7043 .thumb 7044 .thumb_func 7045 .fpu softvfp 7046 .type FtlVariablesInit, %function 7047FtlVariablesInit: 7048 @ args = 0, pretend = 0, frame = 0 7049 @ frame_needed = 0, uses_anonymous_args = 0 7050 push {r3, r4, r5, lr} 7051 movw r2, #65535 7052 ldr r3, .L934 7053 movs r4, #0 7054 mov r1, r4 7055 ldr r5, .L934+4 7056 strh r2, [r3] @ movhi 7057 mov r2, #-1 7058 ldr r3, .L934+8 7059 str r4, [r3] 7060 ldr r3, .L934+12 7061 str r4, [r3] 7062 ldr r3, .L934+16 7063 str r2, [r3] 7064 ldr r3, .L934+20 7065 strh r4, [r3] @ movhi 7066 ldr r3, .L934+24 7067 ldrh r2, [r3] 7068 ldr r3, .L934+28 7069 lsls r2, r2, #1 7070 ldr r0, [r3] 7071 bl ftl_memset 7072 ldrh r2, [r5] 7073 mov r1, r4 7074 ldr r3, .L934+32 7075 lsls r2, r2, #1 7076 ldr r0, [r3] 7077 bl ftl_memset 7078 ldrh r2, [r5] 7079 mov r1, r4 7080 ldr r3, .L934+36 7081 lsls r2, r2, #1 7082 ldr r0, [r3] 7083 bl ftl_memset 7084 mov r1, r4 7085 movs r2, #48 7086 ldr r0, .L934+40 7087 bl ftl_memset 7088 mov r2, #512 7089 mov r1, r4 7090 ldr r0, .L934+44 7091 bl ftl_memset 7092 bl FtlGcBufInit 7093 bl FtlL2PDataInit 7094 mov r0, r4 7095 pop {r3, r4, r5, pc} 7096.L935: 7097 .align 2 7098.L934: 7099 .word .LANCHOR150 7100 .word .LANCHOR6 7101 .word .LANCHOR151 7102 .word .LANCHOR152 7103 .word .LANCHOR153 7104 .word .LANCHOR35 7105 .word .LANCHOR27 7106 .word .LANCHOR36 7107 .word .LANCHOR43 7108 .word .LANCHOR126 7109 .word .LANCHOR39 7110 .word .LANCHOR81 7111 .size FtlVariablesInit, .-FtlVariablesInit 7112 .section .text.SupperBlkListInit,"ax",%progbits 7113 .align 1 7114 .global SupperBlkListInit 7115 .syntax unified 7116 .thumb 7117 .thumb_func 7118 .fpu softvfp 7119 .type SupperBlkListInit, %function 7120SupperBlkListInit: 7121 @ args = 0, pretend = 0, frame = 16 7122 @ frame_needed = 0, uses_anonymous_args = 0 7123 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 7124 movs r2, #6 7125 ldr r3, .L947 7126 movs r1, #0 7127 movs r4, #0 7128 ldr r5, .L947+4 7129 mov r8, r4 7130 ldrh r3, [r3] 7131 mov r6, r4 7132 ldr r0, [r5] 7133 mov r10, r5 7134 muls r2, r3, r2 7135 bl ftl_memset 7136 ldr r3, .L947+8 7137 ldr r2, .L947+12 7138 str r4, [r3] 7139 ldr r3, .L947+16 7140 strh r4, [r2] @ movhi 7141 str r2, [sp, #4] 7142 str r4, [r3] 7143 ldr r3, .L947+20 7144 str r4, [r3] 7145 ldr r3, .L947+24 7146 mov fp, r3 7147 strh r4, [r3] @ movhi 7148.L937: 7149 ldr r3, .L947+28 7150 uxth r7, r4 7151 ldrh r3, [r3] 7152 cmp r7, r3 7153 bcs .L943 7154 ldr r3, .L947+32 7155 ldrh r2, [r3] 7156 ldr r3, .L947+36 7157 ldrh r3, [r3] 7158 str r3, [sp] 7159 movs r3, #0 7160 mov r5, r3 7161 b .L944 7162.L939: 7163 str r2, [sp, #12] 7164 mov r1, r7 7165 ldr r2, .L947+40 7166 str r3, [sp, #8] 7167 ldrb r0, [r2, r3] @ zero_extendqisi2 7168 bl V2P_block 7169 bl FtlBbmIsBadBlock 7170 ldr r3, [sp, #8] 7171 ldr r2, [sp, #12] 7172 cbnz r0, .L938 7173 ldr r1, [sp] 7174 add r5, r5, r1 7175 uxth r5, r5 7176.L938: 7177 adds r3, r3, #1 7178.L944: 7179 uxth r1, r3 7180 cmp r2, r1 7181 bhi .L939 7182 cbz r5, .L946 7183 mov r1, r5 7184 mov r0, #32768 7185 bl __aeabi_idiv 7186.L940: 7187 ldr r1, [r10] 7188 uxth r2, r4 7189 movs r3, #6 7190 mla r3, r3, r2, r1 7191 strh r0, [r3, #4] @ movhi 7192 ldr r3, .L947+44 7193 ldrh r3, [r3] 7194 cmp r3, r7 7195 beq .L941 7196 ldr r3, .L947+48 7197 ldrh r3, [r3] 7198 cmp r3, r7 7199 beq .L941 7200 ldr r3, .L947+52 7201 ldrh r3, [r3] 7202 cmp r3, r7 7203 beq .L941 7204 ldr r3, .L947+56 7205 ldr r3, [r3] 7206 ldrh r3, [r3, r2, lsl #1] 7207 cbnz r3, .L942 7208 add r8, r8, #1 7209 mov r0, r7 7210 uxth r8, r8 7211 bl INSERT_FREE_LIST 7212.L941: 7213 adds r4, r4, #1 7214 b .L937 7215.L946: 7216 mov r0, r5 7217 b .L940 7218.L942: 7219 adds r6, r6, #1 7220 mov r0, r7 7221 uxth r6, r6 7222 bl INSERT_DATA_LIST 7223 b .L941 7224.L943: 7225 ldr r2, [sp, #4] 7226 strh r8, [fp] @ movhi 7227 strh r6, [r2] @ movhi 7228 add r6, r6, r8 7229 cmp r6, r3 7230 ble .L945 7231 movw r2, #2154 7232 ldr r1, .L947+60 7233 ldr r0, .L947+64 7234 bl printf 7235.L945: 7236 movs r0, #0 7237 add sp, sp, #16 7238 @ sp needed 7239 pop {r4, r5, r6, r7, r8, r10, fp, pc} 7240.L948: 7241 .align 2 7242.L947: 7243 .word .LANCHOR6 7244 .word .LANCHOR40 7245 .word .LANCHOR47 7246 .word .LANCHOR45 7247 .word .LANCHOR41 7248 .word .LANCHOR44 7249 .word .LANCHOR48 7250 .word .LANCHOR5 7251 .word .LANCHOR3 7252 .word .LANCHOR19 7253 .word .LANCHOR13 7254 .word .LANCHOR51 7255 .word .LANCHOR52 7256 .word .LANCHOR53 7257 .word .LANCHOR42 7258 .word .LANCHOR154 7259 .word .LC1 7260 .size SupperBlkListInit, .-SupperBlkListInit 7261 .section .text.ftl_check_vpc,"ax",%progbits 7262 .align 1 7263 .global ftl_check_vpc 7264 .syntax unified 7265 .thumb 7266 .thumb_func 7267 .fpu softvfp 7268 .type ftl_check_vpc, %function 7269ftl_check_vpc: 7270 @ args = 0, pretend = 0, frame = 8 7271 @ frame_needed = 0, uses_anonymous_args = 0 7272 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 7273 movs r4, #0 7274 ldr r6, .L973 7275 ldr r5, .L973+4 7276 ldr r1, .L973+8 7277 ldr r0, .L973+12 7278 bl printf 7279 mov r2, #8192 7280 movs r1, #0 7281 ldr r0, .L973+4 7282 bl ftl_memset 7283.L950: 7284 ldr r3, [r6] 7285 cmp r4, r3 7286 bcc .L952 7287 ldr r10, .L973+48 7288 movs r4, #0 7289 ldr r7, .L973+16 7290 mov r6, r4 7291.L953: 7292 ldrh r2, [r10] 7293 uxth r3, r4 7294 cmp r2, r3 7295 bhi .L955 7296 ldr r3, .L973+20 7297 ldr r4, [r3] 7298 cbz r4, .L956 7299 ldr r3, .L973+24 7300 mov r8, #0 7301 ldr r5, .L973+28 7302 ldr r10, .L973+16 7303 ldrh r7, [r3] 7304 ldr r3, [r5] 7305 ldr fp, .L973+4 7306 subs r4, r4, r3 7307 ldr r3, .L973+32 7308 asrs r4, r4, #1 7309 muls r4, r3, r4 7310 uxth r4, r4 7311.L957: 7312 uxth r3, r8 7313 cmp r7, r3 7314 bls .L956 7315 ldr r3, [r10] 7316 ldrh r2, [r3, r4, lsl #1] 7317 cbz r2, .L958 7318 movs r6, #1 7319 ldrh r3, [fp, r4, lsl #1] 7320 mov r1, r4 7321 ldr r0, .L973+36 7322 bl printf 7323.L958: 7324 movs r3, #6 7325 ldr r2, [r5] 7326 muls r4, r3, r4 7327 movw r3, #65535 7328 add r8, r8, #1 7329 ldrh r4, [r2, r4] 7330 cmp r4, r3 7331 bne .L957 7332.L956: 7333 cbz r6, .L949 7334 movw r2, #2321 7335 ldr r1, .L973+8 7336 ldr r0, .L973+40 7337 bl printf 7338.L949: 7339 add sp, sp, #8 7340 @ sp needed 7341 pop {r4, r5, r6, r7, r8, r10, fp, pc} 7342.L952: 7343 movs r2, #0 7344 add r1, sp, #4 7345 mov r0, r4 7346 bl log2phys 7347 ldr r0, [sp, #4] 7348 adds r3, r0, #1 7349 beq .L951 7350 ubfx r0, r0, #10, #16 7351 bl P2V_block_in_plane 7352 ldrh r3, [r5, r0, lsl #1] 7353 adds r3, r3, #1 7354 strh r3, [r5, r0, lsl #1] @ movhi 7355.L951: 7356 adds r4, r4, #1 7357 b .L950 7358.L955: 7359 ldr r3, [r7] 7360 uxth r5, r4 7361 ldr r8, .L973+4 7362 ldrh r2, [r3, r5, lsl #1] 7363 ldrh r3, [r8, r5, lsl #1] 7364 cmp r2, r3 7365 beq .L954 7366 mov r1, r5 7367 ldr r0, .L973+44 7368 bl printf 7369 ldr r3, [r7] 7370 movw r2, #65535 7371 ldrh r3, [r3, r5, lsl #1] 7372 cmp r3, r2 7373 beq .L954 7374 ldrh r2, [r8, r5, lsl #1] 7375 cmp r2, r3 7376 it hi 7377 movhi r6, #1 7378.L954: 7379 adds r4, r4, #1 7380 b .L953 7381.L974: 7382 .align 2 7383.L973: 7384 .word .LANCHOR61 7385 .word check_vpc_table 7386 .word .LANCHOR155 7387 .word .LC94 7388 .word .LANCHOR42 7389 .word .LANCHOR47 7390 .word .LANCHOR48 7391 .word .LANCHOR40 7392 .word -1431655765 7393 .word .LC96 7394 .word .LC1 7395 .word .LC95 7396 .word .LANCHOR5 7397 .size ftl_check_vpc, .-ftl_check_vpc 7398 .section .text.FtlGcPageVarInit,"ax",%progbits 7399 .align 1 7400 .global FtlGcPageVarInit 7401 .syntax unified 7402 .thumb 7403 .thumb_func 7404 .fpu softvfp 7405 .type FtlGcPageVarInit, %function 7406FtlGcPageVarInit: 7407 @ args = 0, pretend = 0, frame = 0 7408 @ frame_needed = 0, uses_anonymous_args = 0 7409 ldr r2, .L976 7410 movs r3, #0 7411 push {r4, lr} 7412 movs r1, #255 7413 ldr r4, .L976+4 7414 strh r3, [r2] @ movhi 7415 ldr r2, .L976+8 7416 strh r3, [r2] @ movhi 7417 ldrh r2, [r4] 7418 ldr r3, .L976+12 7419 lsls r2, r2, #1 7420 ldr r0, [r3] 7421 bl ftl_memset 7422 ldrh r3, [r4] 7423 movs r2, #12 7424 movs r1, #255 7425 muls r2, r3, r2 7426 ldr r3, .L976+16 7427 ldr r0, [r3] 7428 bl ftl_memset 7429 pop {r4, lr} 7430 b FtlGcBufInit 7431.L977: 7432 .align 2 7433.L976: 7434 .word .LANCHOR96 7435 .word .LANCHOR21 7436 .word .LANCHOR97 7437 .word .LANCHOR95 7438 .word .LANCHOR98 7439 .size FtlGcPageVarInit, .-FtlGcPageVarInit 7440 .section .text.FtlGcScanTempBlk,"ax",%progbits 7441 .align 1 7442 .global FtlGcScanTempBlk 7443 .syntax unified 7444 .thumb 7445 .thumb_func 7446 .fpu softvfp 7447 .type FtlGcScanTempBlk, %function 7448FtlGcScanTempBlk: 7449 @ args = 0, pretend = 0, frame = 24 7450 @ frame_needed = 0, uses_anonymous_args = 0 7451 ldr r3, .L1001 7452 push {r4, r5, r6, r7, r8, r10, fp, lr} 7453 sub sp, sp, #24 7454 mov r5, r0 7455 str r1, [sp, #8] 7456 ldrh r4, [r3] 7457 movw r3, #65535 7458 cmp r4, r3 7459 beq .L995 7460 cbnz r4, .L979 7461.L980: 7462 bl FtlGcPageVarInit 7463 b .L981 7464.L995: 7465 movs r4, #0 7466.L979: 7467 ldr r3, .L1001+4 7468 ldr r2, [sp, #8] 7469 ldrh r3, [r3] 7470 cmp r3, r2 7471 beq .L980 7472.L981: 7473 movs r7, #0 7474.L989: 7475 ldrh r2, [r5] 7476 movw r3, #65535 7477 movs r0, #0 7478 strb r0, [r5, #8] 7479 cmp r2, r3 7480 beq .L982 7481.L992: 7482 ldr r3, .L1001+8 7483 movs r2, #0 7484 add ip, r5, #16 7485 mov r6, r2 7486 movw lr, #65535 7487 mov r8, #20 7488 ldrh fp, [r3] 7489 ldr r3, .L1001+12 7490 ldr r3, [r3] 7491 str r3, [sp, #4] 7492 ldr r3, .L1001+16 7493 ldr r3, [r3] 7494 str r3, [sp, #12] 7495 ldr r3, .L1001+20 7496 ldrh r3, [r3] 7497 str r3, [sp, #16] 7498 ldr r3, .L1001+24 7499 ldr r3, [r3] 7500 str r3, [sp, #20] 7501 ldr r3, .L1001+28 7502 ldrh r10, [r3] 7503.L983: 7504 uxth r3, r2 7505 cmp fp, r3 7506 bhi .L985 7507 mov r8, #0 7508 mov fp, #20 7509 movs r2, #0 7510 mov r1, r6 7511 ldr r0, [sp, #4] 7512 bl FlashReadPages 7513.L986: 7514 uxth r3, r8 7515 cmp r6, r3 7516 bhi .L990 7517 ldr r3, [sp, #8] 7518 adds r7, r7, #1 7519 adds r4, r4, #1 7520 ldr r2, .L1001+4 7521 uxth r4, r4 7522 cmp r3, r7 7523 bls .L991 7524.L993: 7525 ldrh r3, [r2] 7526 cmp r3, r4 7527 bhi .L992 7528 movs r0, #0 7529 b .L982 7530.L985: 7531 ldrh r3, [ip], #2 7532 cmp r3, lr 7533 beq .L984 7534 ldr r1, [sp, #4] 7535 orr r3, r4, r3, lsl #10 7536 ldr r0, [sp, #12] 7537 mla r1, r8, r6, r1 7538 str r3, [r1, #4] 7539 ldr r3, [sp, #16] 7540 muls r3, r6, r3 7541 bic r3, r3, #3 7542 add r3, r3, r0 7543 ldr r0, [sp, #20] 7544 str r3, [r1, #8] 7545 mul r3, r10, r6 7546 adds r6, r6, #1 7547 uxth r6, r6 7548 bic r3, r3, #3 7549 add r3, r3, r0 7550 str r3, [r1, #12] 7551.L984: 7552 adds r2, r2, #1 7553 b .L983 7554.L990: 7555 ldr r3, .L1001+12 7556 mul r10, fp, r8 7557 ldr r2, [r3] 7558 add r3, r2, r10 7559 str r2, [sp, #16] 7560 ldr r1, [r3, #4] 7561 str r3, [sp, #12] 7562 ubfx r0, r1, #10, #16 7563 str r1, [sp, #4] 7564 bl P2V_plane 7565 ldr r2, [sp, #16] 7566 ldr r2, [r2, r10] 7567 cbnz r2, .L987 7568 ldr r3, [sp, #12] 7569 movw r2, #65535 7570 add r8, r8, #1 7571 ldr r1, [sp, #4] 7572 ldr r3, [r3, #12] 7573 ldrh ip, [r3] 7574 cmp ip, r2 7575 bne .L988 7576 ldr r3, .L1001+32 7577 movs r2, #1 7578 str r2, [r3] 7579.L982: 7580 ldr r3, .L1001 7581 movw r2, #65535 7582 strb r0, [r5, #6] 7583 mov r1, r4 7584 strh r4, [r5, #2] @ movhi 7585 strh r2, [r3] @ movhi 7586 mov r2, r0 7587 mov r0, r5 7588 bl ftl_sb_update_avl_pages 7589 b .L994 7590.L988: 7591 ldr r2, [r3, #8] 7592 ldr r0, [r3, #12] 7593 bl FtlGcUpdatePage 7594 b .L986 7595.L987: 7596 ldr r3, .L1001+36 7597 movs r4, #0 7598 ldrh r2, [r5] 7599 ldr r3, [r3] 7600 strh r4, [r3, r2, lsl #1] @ movhi 7601 ldrh r0, [r5] 7602 bl INSERT_FREE_LIST 7603 movw r3, #65535 7604 strh r3, [r5] @ movhi 7605 bl FtlGcPageVarInit 7606 b .L989 7607.L991: 7608 ldr r1, .L1001 7609 movw r0, #65535 7610 ldrh r3, [r1] 7611 cmp r3, r0 7612 beq .L993 7613 add r3, r3, r7 7614 strh r3, [r1] @ movhi 7615 ldrh r3, [r2] 7616 cmp r3, r4 7617 bls .L993 7618.L994: 7619 mov r0, #-1 7620 add sp, sp, #24 7621 @ sp needed 7622 pop {r4, r5, r6, r7, r8, r10, fp, pc} 7623.L1002: 7624 .align 2 7625.L1001: 7626 .word .LANCHOR156 7627 .word .LANCHOR19 7628 .word .LANCHOR3 7629 .word .LANCHOR120 7630 .word .LANCHOR91 7631 .word .LANCHOR23 7632 .word .LANCHOR92 7633 .word .LANCHOR24 7634 .word .LANCHOR152 7635 .word .LANCHOR42 7636 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk 7637 .section .text.FlashTestBlk,"ax",%progbits 7638 .align 1 7639 .global FlashTestBlk 7640 .syntax unified 7641 .thumb 7642 .thumb_func 7643 .fpu softvfp 7644 .type FlashTestBlk, %function 7645FlashTestBlk: 7646 @ args = 0, pretend = 0, frame = 88 7647 @ frame_needed = 0, uses_anonymous_args = 0 7648 cmp r0, #11 7649 push {r4, r5, lr} 7650 mov r4, r0 7651 sub sp, sp, #92 7652 bls .L1005 7653 ldr r5, .L1006 7654 add r0, sp, #24 7655 movs r2, #32 7656 movs r1, #165 7657 str r0, [sp, #16] 7658 lsls r4, r4, #10 7659 str r5, [sp, #12] 7660 bl ftl_memset 7661 movs r2, #8 7662 movs r1, #90 7663 mov r0, r5 7664 bl ftl_memset 7665 movs r2, #1 7666 add r0, sp, #4 7667 mov r1, r2 7668 str r4, [sp, #8] 7669 bl FlashEraseBlocks 7670 movs r3, #1 7671 add r0, sp, #4 7672 mov r2, r3 7673 mov r1, r3 7674 bl FlashProgPages 7675 ldr r4, [sp, #4] 7676 movs r2, #1 7677 movs r1, #0 7678 add r0, sp, #4 7679 adds r4, r4, #0 7680 it ne 7681 movne r4, #1 7682 negs r4, r4 7683 bl FlashEraseBlocks 7684.L1003: 7685 mov r0, r4 7686 add sp, sp, #92 7687 @ sp needed 7688 pop {r4, r5, pc} 7689.L1005: 7690 movs r4, #0 7691 b .L1003 7692.L1007: 7693 .align 2 7694.L1006: 7695 .word ftl_temp_buf 7696 .size FlashTestBlk, .-FlashTestBlk 7697 .section .text.FlashGetBadBlockList,"ax",%progbits 7698 .align 1 7699 .global FlashGetBadBlockList 7700 .syntax unified 7701 .thumb 7702 .thumb_func 7703 .fpu softvfp 7704 .type FlashGetBadBlockList, %function 7705FlashGetBadBlockList: 7706 @ args = 0, pretend = 0, frame = 0 7707 @ frame_needed = 0, uses_anonymous_args = 0 7708 push {r3, r4, r5, lr} 7709 mov r2, #256 7710 mov r5, r1 7711 movs r1, #255 7712 mov r4, r0 7713 bl ftl_memset 7714 ldr r3, .L1015 7715 mov r1, r5 7716 mov r0, r4 7717 ldr r3, [r3] 7718 blx r3 7719 uxth r0, r0 7720 cmp r0, #50 7721 bls .L1009 7722 mov r2, #256 7723 movs r1, #255 7724 mov r0, r4 7725 bl ftl_memset 7726 movs r0, #0 7727.L1009: 7728 ldr r3, .L1015+4 7729 ldrh r3, [r3, #14] 7730 cmp r3, #4 7731 bne .L1014 7732 add r1, r4, r0, lsl #1 7733 mov r3, r4 7734.L1011: 7735 cmp r3, r1 7736 bne .L1012 7737.L1014: 7738 pop {r3, r4, r5, pc} 7739.L1012: 7740 ldrh r2, [r3] 7741 lsrs r2, r2, #1 7742 strh r2, [r3], #2 @ movhi 7743 b .L1011 7744.L1016: 7745 .align 2 7746.L1015: 7747 .word .LANCHOR105 7748 .word .LANCHOR0 7749 .size FlashGetBadBlockList, .-FlashGetBadBlockList 7750 .section .text.ftl_memcpy,"ax",%progbits 7751 .align 1 7752 .global ftl_memcpy 7753 .syntax unified 7754 .thumb 7755 .thumb_func 7756 .fpu softvfp 7757 .type ftl_memcpy, %function 7758ftl_memcpy: 7759 @ args = 0, pretend = 0, frame = 0 7760 @ frame_needed = 0, uses_anonymous_args = 0 7761 @ link register save eliminated. 7762 b memcpy 7763 .size ftl_memcpy, .-ftl_memcpy 7764 .section .text.FtlBbmTblFlush,"ax",%progbits 7765 .align 1 7766 .global FtlBbmTblFlush 7767 .syntax unified 7768 .thumb 7769 .thumb_func 7770 .fpu softvfp 7771 .type FtlBbmTblFlush, %function 7772FtlBbmTblFlush: 7773 @ args = 0, pretend = 0, frame = 8 7774 @ frame_needed = 0, uses_anonymous_args = 0 7775 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 7776 movs r4, #0 7777 ldr r7, .L1027 7778 movs r1, #0 7779 ldr r5, .L1027+4 7780 ldr r3, [r7] 7781 mov fp, r7 7782 ldr r8, .L1027+48 7783 ldr r6, .L1027+8 7784 str r3, [r5, #12] 7785 ldr r7, .L1027+12 7786 ldr r3, .L1027+16 7787 ldr r10, .L1027+52 7788 ldr r0, [r8] 7789 ldrh r2, [r3] 7790 str r0, [r5, #8] 7791 bl ftl_memset 7792.L1019: 7793 ldrh r3, [r7] 7794 cmp r4, r3 7795 blt .L1020 7796 ldr r6, [r5, #12] 7797 movs r2, #16 7798 ldr r4, .L1027+20 7799 movs r1, #255 7800 movs r7, #0 7801 mov r0, r6 7802 bl ftl_memset 7803 movw r3, #61649 7804 mov r10, r4 7805 strh r3, [r6] @ movhi 7806 ldr r3, [r4, #8] 7807 str r7, [sp, #12] 7808 str r3, [r6, #4] 7809 ldrh r3, [r4] 7810 strh r3, [r6, #2] @ movhi 7811 ldrh r3, [r4, #4] 7812 strh r3, [r6, #8] @ movhi 7813 ldrh r3, [r4, #6] 7814 strh r3, [r6, #10] @ movhi 7815 ldr r3, .L1027+24 7816 ldr r3, [r3] 7817 strh r3, [r6, #12] @ movhi 7818.L1021: 7819 ldr r3, [r8] 7820 ldrh r1, [r4] 7821 ldrh r2, [r4, #2] 7822 str r3, [r5, #8] 7823 ldr r3, [fp] 7824 ldrh r0, [r6, #10] 7825 str r3, [r5, #12] 7826 movs r3, #0 7827 str r3, [r5] 7828 orr r3, r2, r1, lsl #10 7829 str r3, [r5, #4] 7830 ldrh r3, [r4, #4] 7831 str r0, [sp] 7832 ldr r0, .L1027+28 7833 bl printf 7834 movs r3, #1 7835 ldr r0, .L1027+4 7836 mov r2, r3 7837 mov r1, r3 7838 bl FlashProgPages 7839 ldr r3, .L1027+32 7840 ldrh r2, [r4, #2] 7841 ldrh r3, [r3] 7842 subs r3, r3, #1 7843 cmp r2, r3 7844 blt .L1022 7845 ldr r3, [r4, #8] 7846 mov r1, #0 @ movhi 7847 ldrh r2, [r4] 7848 strh r1, [r4, #2] @ movhi 7849 adds r3, r3, #1 7850 str r3, [r4, #8] 7851 str r3, [r6, #4] 7852 strh r2, [r6, #8] @ movhi 7853 ldrh r3, [r4, #4] 7854 strh r2, [r4, #4] @ movhi 7855 ldr r2, .L1027+36 7856 strh r3, [r4] @ movhi 7857 lsls r3, r3, #10 7858 ldr r0, [r2] 7859 movs r2, #1 7860 str r3, [r5, #4] 7861 mov r1, r2 7862 str r3, [r0, #4] 7863 bl FlashEraseBlocks 7864 movs r3, #1 7865 ldr r0, .L1027+4 7866 mov r2, r3 7867 mov r1, r3 7868 bl FlashProgPages 7869.L1022: 7870 ldrh r3, [r10, #2] 7871 adds r3, r3, #1 7872 strh r3, [r10, #2] @ movhi 7873 ldr r3, [r5] 7874 adds r3, r3, #1 7875 bne .L1023 7876 adds r7, r7, #1 7877 ldr r1, [r5, #4] 7878 uxth r7, r7 7879 ldr r0, .L1027+40 7880 bl printf 7881 cmp r7, #3 7882 bls .L1021 7883 mov r2, r7 7884 ldr r1, [r5, #4] 7885 ldr r0, .L1027+44 7886 bl printf 7887.L1025: 7888 b .L1025 7889.L1020: 7890 ldrh r2, [r10] 7891 ldr r3, [r5, #8] 7892 ldr r1, [r6, #4]! 7893 mul r0, r2, r4 7894 lsls r2, r2, #2 7895 adds r4, r4, #1 7896 add r0, r3, r0, lsl #2 7897 bl ftl_memcpy 7898 b .L1019 7899.L1026: 7900 movs r3, #1 7901 str r3, [sp, #12] 7902 b .L1021 7903.L1023: 7904 ldr r3, [sp, #12] 7905 cmp r3, #0 7906 beq .L1026 7907 movs r0, #0 7908 add sp, sp, #16 7909 @ sp needed 7910 pop {r4, r5, r6, r7, r8, r10, fp, pc} 7911.L1028: 7912 .align 2 7913.L1027: 7914 .word .LANCHOR108 7915 .word .LANCHOR106 7916 .word .LANCHOR37+24 7917 .word .LANCHOR10 7918 .word .LANCHOR23 7919 .word .LANCHOR37 7920 .word .LANCHOR2 7921 .word .LC97 7922 .word .LANCHOR20 7923 .word .LANCHOR111 7924 .word .LC98 7925 .word .LC99 7926 .word .LANCHOR107 7927 .word .LANCHOR137 7928 .size FtlBbmTblFlush, .-FtlBbmTblFlush 7929 .section .text.allocate_data_superblock,"ax",%progbits 7930 .align 1 7931 .global allocate_data_superblock 7932 .syntax unified 7933 .thumb 7934 .thumb_func 7935 .fpu softvfp 7936 .type allocate_data_superblock, %function 7937allocate_data_superblock: 7938 @ args = 0, pretend = 0, frame = 16 7939 @ frame_needed = 0, uses_anonymous_args = 0 7940 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 7941 mov r4, r0 7942 ldr r8, .L1067 7943.L1030: 7944 ldr r3, .L1067 7945 ldr r6, .L1067+4 7946 ldr fp, .L1067+76 7947 ldrh r3, [r3] 7948 ldrh r2, [r6] 7949 add r3, r3, r2 7950 ldrh r2, [fp] 7951 cmp r3, r2 7952 ble .L1031 7953 movw r2, #2588 7954 ldr r1, .L1067+8 7955 ldr r0, .L1067+12 7956 bl printf 7957.L1031: 7958 ldr r3, .L1067+16 7959 cmp r4, r3 7960 bne .L1056 7961 ldr r2, .L1067+20 7962 ldrh r3, [r8] 7963 ldr r2, [r2] 7964 lsrs r1, r3, #1 7965 muls r2, r3, r2 7966 adds r1, r1, #1 7967 add r1, r1, r2, lsr #2 7968 uxth r1, r1 7969 cbz r1, .L1032 7970 subs r1, r1, #1 7971 uxth r1, r1 7972.L1032: 7973 ldr r0, .L1067+24 7974 bl List_pop_index_node 7975 ldrh r3, [r8] 7976 mov r5, r0 7977 uxth r7, r0 7978 cbnz r3, .L1033 7979 movw r2, #2597 7980 ldr r1, .L1067+8 7981 ldr r0, .L1067+12 7982 bl printf 7983.L1033: 7984 ldrh r3, [r8] 7985 mov r0, r4 7986 subs r3, r3, #1 7987 strh r3, [r8] @ movhi 7988 strh r7, [r4] @ movhi 7989 bl make_superblock 7990 ldrb r3, [r4, #7] @ zero_extendqisi2 7991 cbnz r3, .L1034 7992 ldr r3, .L1067+28 7993 uxth r5, r5 7994 movw r2, #65535 7995 mov r0, r7 7996 ldr r3, [r3] 7997 strh r2, [r3, r5, lsl #1] @ movhi 7998 bl INSERT_DATA_LIST 7999 ldrh r2, [r6] 8000 ldrh r3, [r8] 8001 add r3, r3, r2 8002 ldrh r2, [fp] 8003 cmp r3, r2 8004 ble .L1030 8005 mov r2, #2608 8006 ldr r1, .L1067+8 8007 ldr r0, .L1067+12 8008 bl printf 8009 b .L1030 8010.L1056: 8011 movs r1, #0 8012 b .L1032 8013.L1034: 8014 ldrh r2, [r6] 8015 ldrh r3, [r8] 8016 add r3, r3, r2 8017 ldrh r2, [fp] 8018 cmp r3, r2 8019 ble .L1036 8020 movw r2, #2611 8021 ldr r1, .L1067+8 8022 ldr r0, .L1067+12 8023 bl printf 8024.L1036: 8025 ldr r3, .L1067+32 8026 movs r6, #0 8027 ldr r2, .L1067+36 8028 add ip, r4, #16 8029 mov lr, r6 8030 movw r10, #65535 8031 ldr r0, [r3] 8032 ldrh r1, [r2] 8033 movs r2, #20 8034 str r2, [sp, #4] 8035 mov r3, r0 8036 mla r1, r2, r1, r0 8037 str r1, [sp] 8038.L1037: 8039 ldr r2, [sp] 8040 cmp r2, r3 8041 bne .L1039 8042 cbnz r6, .L1040 8043 movw r2, #2622 8044 ldr r1, .L1067+8 8045 ldr r0, .L1067+12 8046 bl printf 8047.L1040: 8048 ldr r3, .L1067+40 8049 ldrh r3, [r3] 8050 cmp r3, r7 8051 bne .L1041 8052 mov r2, #2624 8053 ldr r1, .L1067+8 8054 ldr r0, .L1067+12 8055 bl printf 8056.L1041: 8057 ldrb r1, [r4, #8] @ zero_extendqisi2 8058 uxth r5, r5 8059 ldr r2, .L1067+44 8060 ldr r3, .L1067+48 8061 ldr r10, .L1067+80 8062 cmp r1, #0 8063 bne .L1042 8064 ldr r0, [r2] 8065 ldrh lr, [r0, r5, lsl #1] 8066 cmp lr, #0 8067 beq .L1043 8068 ldr r1, .L1067+52 8069 ldrh ip, [r1] 8070 add r1, lr, ip 8071.L1066: 8072 strh r1, [r0, r5, lsl #1] @ movhi 8073 mov r0, r7 8074 ldr r1, [r3] 8075 str r2, [sp, #4] 8076 str r3, [sp] 8077 adds r1, r1, #1 8078 str r1, [r3] 8079 movs r1, #0 8080 bl ftl_set_blk_mode 8081 ldr r3, [sp] 8082 ldr r2, [sp, #4] 8083.L1045: 8084 ldr r2, [r2] 8085 lsls r1, r5, #1 8086 str r1, [sp] 8087 ldrh r0, [r2, r5, lsl #1] 8088 ldr r2, .L1067+56 8089 ldr r1, [r2] 8090 cmp r0, r1 8091 ldrh r1, [fp] 8092 it hi 8093 strhi r0, [r2] 8094 ldr r2, .L1067+52 8095 ldr r0, [r3] 8096 ldr r3, [r10] 8097 ldrh r2, [r2] 8098 mla r0, r0, r2, r3 8099 bl __aeabi_uidiv 8100 ldr r3, .L1067+60 8101 ldr ip, .L1067+84 8102 str r0, [r3] 8103 ldr r3, .L1067+64 8104 ldr r2, [r3] 8105 ldr r3, [r2, #16] 8106 adds r3, r3, #1 8107 str r3, [r2, #16] 8108 movs r2, #20 8109 ldr r3, .L1067+32 8110 ldr r0, [r3] 8111 adds r3, r0, #4 8112 mla r2, r2, r6, r0 8113 adds r2, r2, #24 8114.L1047: 8115 adds r3, r3, #20 8116 cmp r2, r3 8117 bne .L1048 8118 ldrb r1, [r4, #8] @ zero_extendqisi2 8119 mov r2, r6 8120 mov r10, #0 8121 bl FlashEraseBlocks 8122 mov r3, r10 8123 movs r1, #20 8124.L1049: 8125 uxth r2, r10 8126 cmp r6, r2 8127 bhi .L1051 8128 cbz r3, .L1052 8129 mov r0, r7 8130 bl update_multiplier_value 8131 bl FtlBbmTblFlush 8132.L1052: 8133 ldrb r2, [r4, #7] @ zero_extendqisi2 8134 ldr r1, .L1067+28 8135 cmp r2, #0 8136 bne .L1053 8137 ldr r3, [r1] 8138 movw r2, #65535 8139 mov r0, r7 8140 strh r2, [r3, r5, lsl #1] @ movhi 8141 bl INSERT_DATA_LIST 8142 b .L1030 8143.L1039: 8144 ldrh r1, [ip], #2 8145 str lr, [r3, #8] 8146 str lr, [r3, #12] 8147 cmp r1, r10 8148 beq .L1038 8149 ldr r2, [sp, #4] 8150 lsls r1, r1, #10 8151 mla r2, r2, r6, r0 8152 adds r6, r6, #1 8153 uxth r6, r6 8154 str r1, [r2, #4] 8155.L1038: 8156 adds r3, r3, #20 8157 b .L1037 8158.L1043: 8159 movs r1, #2 8160 b .L1066 8161.L1042: 8162 ldr r0, [r2] 8163 str r3, [sp, #4] 8164 str r2, [sp] 8165 ldrh r1, [r0, r5, lsl #1] 8166 adds r1, r1, #1 8167 strh r1, [r0, r5, lsl #1] @ movhi 8168 mov r0, r7 8169 ldr r1, [r10] 8170 adds r1, r1, #1 8171 str r1, [r10] 8172 bl ftl_set_blk_mode.part.6 8173 ldm sp, {r2, r3} 8174 b .L1045 8175.L1048: 8176 ldr r1, [r3, #-20] 8177 and r1, r1, ip 8178 str r1, [r3, #-20] 8179 b .L1047 8180.L1051: 8181 ldr r0, .L1067+32 8182 mul r2, r1, r10 8183 ldr r0, [r0] 8184 add ip, r0, r2 8185 ldr r2, [r0, r2] 8186 adds r0, r2, #1 8187 bne .L1050 8188 ldr r0, [ip, #4] 8189 adds r3, r3, #1 8190 str r1, [sp, #12] 8191 str r2, [sp, #8] 8192 ubfx r0, r0, #10, #16 8193 str r3, [sp, #4] 8194 bl FtlBbmMapBadBlock 8195 ldr r2, [sp, #8] 8196 add r0, r4, r10, lsl #1 8197 ldr r1, [sp, #12] 8198 ldr r3, [sp, #4] 8199 strh r2, [r0, #16] @ movhi 8200 ldrb r2, [r4, #7] @ zero_extendqisi2 8201 subs r2, r2, #1 8202 strb r2, [r4, #7] 8203.L1050: 8204 add r10, r10, #1 8205 b .L1049 8206.L1053: 8207 ldr r3, .L1067+68 8208 ldr r0, .L1067+72 8209 ldrh r3, [r3] 8210 strh r7, [r4] @ movhi 8211 smulbb r3, r3, r2 8212 movs r2, #0 8213 strh r2, [r4, #2] @ movhi 8214 strb r2, [r4, #6] 8215 ldr r2, [r0] 8216 uxth r3, r3 8217 strh r3, [r4, #4] @ movhi 8218 str r2, [r4, #12] 8219 adds r2, r2, #1 8220 str r2, [r0] 8221 ldr r2, [r1] 8222 ldr r1, [sp] 8223 strh r3, [r2, r1] @ movhi 8224 ldrh r3, [r4, #4] 8225 cbz r3, .L1054 8226 ldrb r3, [r4, #7] @ zero_extendqisi2 8227 cbnz r3, .L1055 8228.L1054: 8229 movw r2, #2677 8230 ldr r1, .L1067+8 8231 ldr r0, .L1067+12 8232 bl printf 8233.L1055: 8234 movs r0, #0 8235 add sp, sp, #16 8236 @ sp needed 8237 pop {r4, r5, r6, r7, r8, r10, fp, pc} 8238.L1068: 8239 .align 2 8240.L1067: 8241 .word .LANCHOR48 8242 .word .LANCHOR45 8243 .word .LANCHOR157 8244 .word .LC1 8245 .word .LANCHOR53 8246 .word .LANCHOR87 8247 .word .LANCHOR47 8248 .word .LANCHOR42 8249 .word .LANCHOR111 8250 .word .LANCHOR3 8251 .word .LANCHOR80 8252 .word .LANCHOR43 8253 .word .LANCHOR72 8254 .word .LANCHOR14 8255 .word .LANCHOR76 8256 .word .LANCHOR74 8257 .word .LANCHOR127 8258 .word .LANCHOR19 8259 .word .LANCHOR70 8260 .word .LANCHOR5 8261 .word .LANCHOR73 8262 .word -1024 8263 .size allocate_data_superblock, .-allocate_data_superblock 8264 .section .text.FtlGcFreeBadSuperBlk,"ax",%progbits 8265 .align 1 8266 .global FtlGcFreeBadSuperBlk 8267 .syntax unified 8268 .thumb 8269 .thumb_func 8270 .fpu softvfp 8271 .type FtlGcFreeBadSuperBlk, %function 8272FtlGcFreeBadSuperBlk: 8273 @ args = 0, pretend = 0, frame = 8 8274 @ frame_needed = 0, uses_anonymous_args = 0 8275 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 8276 mov r10, r0 8277 ldr r4, .L1081 8278 ldrh r3, [r4] 8279 cbz r3, .L1070 8280 ldr r8, .L1081+16 8281 movs r6, #0 8282.L1071: 8283 ldr r3, .L1081+4 8284 ldrh r2, [r3] 8285 uxth r3, r6 8286 cmp r2, r3 8287 bhi .L1077 8288 bl FtlGcReFreshBadBlk 8289.L1070: 8290 movs r0, #0 8291 add sp, sp, #8 8292 @ sp needed 8293 pop {r4, r5, r6, r7, r8, r10, fp, pc} 8294.L1077: 8295 ldr r2, .L1081+8 8296 uxth r3, r6 8297 mov r1, r10 8298 movs r7, #0 8299 ldrb r0, [r2, r3] @ zero_extendqisi2 8300 bl V2P_block 8301 ldr r2, .L1081+12 8302 mov fp, r0 8303.L1072: 8304 ldrh r3, [r4] 8305 uxth r5, r7 8306 cmp r3, r5 8307 bhi .L1076 8308 adds r6, r6, #1 8309 b .L1071 8310.L1076: 8311 uxth r3, r7 8312 ldrh r1, [r8, r3, lsl #1] 8313 cmp r1, fp 8314 bne .L1073 8315 mov r1, fp 8316 mov r0, r2 8317 str r3, [sp, #4] 8318 str r2, [sp] 8319 bl printf 8320 mov r0, fp 8321 bl FtlBbmMapBadBlock 8322 bl FtlBbmTblFlush 8323 ldr r3, [sp, #4] 8324 ldrh r1, [r4] 8325 ldr r2, [sp] 8326 add r3, r8, r3, lsl #1 8327.L1074: 8328 cmp r5, r1 8329 bcc .L1075 8330 subs r1, r1, #1 8331 strh r1, [r4] @ movhi 8332.L1073: 8333 adds r7, r7, #1 8334 b .L1072 8335.L1075: 8336 ldrh r0, [r3, #2]! 8337 adds r5, r5, #1 8338 uxth r5, r5 8339 strh r0, [r3, #-2] @ movhi 8340 b .L1074 8341.L1082: 8342 .align 2 8343.L1081: 8344 .word .LANCHOR101 8345 .word .LANCHOR3 8346 .word .LANCHOR13 8347 .word .LC100 8348 .word .LANCHOR102 8349 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk 8350 .section .text.update_vpc_list,"ax",%progbits 8351 .align 1 8352 .global update_vpc_list 8353 .syntax unified 8354 .thumb 8355 .thumb_func 8356 .fpu softvfp 8357 .type update_vpc_list, %function 8358update_vpc_list: 8359 @ args = 0, pretend = 0, frame = 0 8360 @ frame_needed = 0, uses_anonymous_args = 0 8361 push {r3, r4, r5, lr} 8362 mov r4, r0 8363 ldr r3, .L1093 8364 ldr r3, [r3] 8365 ldrh r3, [r3, r0, lsl #1] 8366 cmp r3, #0 8367 bne .L1084 8368 ldr r2, .L1093+4 8369 ldrh r1, [r2] 8370 cmp r1, r0 8371 bne .L1085 8372 movw r3, #65535 8373 strh r3, [r2] @ movhi 8374.L1086: 8375 ldr r5, .L1093+8 8376 mov r1, r4 8377 ldr r0, .L1093+12 8378 bl List_remove_node 8379 ldrh r3, [r5] 8380 cbnz r3, .L1088 8381 movw r2, #2747 8382 ldr r1, .L1093+16 8383 ldr r0, .L1093+20 8384 bl printf 8385.L1088: 8386 ldrh r3, [r5] 8387 mov r0, r4 8388 subs r3, r3, #1 8389 strh r3, [r5] @ movhi 8390 bl free_data_superblock 8391 mov r0, r4 8392 bl FtlGcFreeBadSuperBlk 8393 ldr r3, .L1093+24 8394 ldrh r2, [r5] 8395 ldrh r3, [r3] 8396 add r3, r3, r2 8397 ldr r2, .L1093+28 8398 ldrh r2, [r2] 8399 cmp r3, r2 8400 ble .L1092 8401 movw r2, #2750 8402 ldr r1, .L1093+16 8403 ldr r0, .L1093+20 8404 bl printf 8405.L1092: 8406 movs r3, #1 8407 b .L1083 8408.L1085: 8409 ldr r2, .L1093+32 8410 ldrh r2, [r2] 8411 cmp r2, r0 8412 beq .L1083 8413 ldr r2, .L1093+36 8414 ldrh r2, [r2] 8415 cmp r2, r0 8416 beq .L1083 8417 ldr r2, .L1093+40 8418 ldrh r2, [r2] 8419 cmp r2, r0 8420 bne .L1086 8421.L1083: 8422 mov r0, r3 8423 pop {r3, r4, r5, pc} 8424.L1084: 8425 bl List_update_data_list 8426 movs r3, #0 8427 b .L1083 8428.L1094: 8429 .align 2 8430.L1093: 8431 .word .LANCHOR42 8432 .word .LANCHOR80 8433 .word .LANCHOR45 8434 .word .LANCHOR41 8435 .word .LANCHOR158 8436 .word .LC1 8437 .word .LANCHOR48 8438 .word .LANCHOR5 8439 .word .LANCHOR51 8440 .word .LANCHOR52 8441 .word .LANCHOR53 8442 .size update_vpc_list, .-update_vpc_list 8443 .section .text.decrement_vpc_count,"ax",%progbits 8444 .align 1 8445 .global decrement_vpc_count 8446 .syntax unified 8447 .thumb 8448 .thumb_func 8449 .fpu softvfp 8450 .type decrement_vpc_count, %function 8451decrement_vpc_count: 8452 @ args = 0, pretend = 0, frame = 0 8453 @ frame_needed = 0, uses_anonymous_args = 0 8454 movw r3, #65535 8455 push {r4, r5, r6, lr} 8456 cmp r0, r3 8457 mov r4, r0 8458 beq .L1096 8459 ldr r5, .L1104 8460 ldr r3, [r5] 8461 ldrh r2, [r3, r0, lsl #1] 8462 cbnz r2, .L1097 8463 mov r1, r0 8464 ldr r0, .L1104+4 8465 bl printf 8466 ldr r3, [r5] 8467 ldrh r5, [r3, r4, lsl #1] 8468 cbz r5, .L1098 8469.L1102: 8470 movs r5, #0 8471.L1095: 8472 mov r0, r5 8473 pop {r4, r5, r6, pc} 8474.L1098: 8475 movw r2, #2765 8476.L1103: 8477 ldr r1, .L1104+8 8478 ldr r0, .L1104+12 8479 bl printf 8480 b .L1095 8481.L1097: 8482 subs r2, r2, #1 8483 strh r2, [r3, r0, lsl #1] @ movhi 8484.L1096: 8485 ldr r6, .L1104+16 8486 movw r3, #65535 8487 ldrh r0, [r6] 8488 cmp r0, r3 8489 bne .L1100 8490 strh r4, [r6] @ movhi 8491 b .L1102 8492.L1100: 8493 cmp r4, r0 8494 beq .L1102 8495 bl update_vpc_list 8496 ldr r3, .L1104+20 8497 adds r5, r0, #0 8498 ldr r2, .L1104+24 8499 it ne 8500 movne r5, #1 8501 strh r4, [r6] @ movhi 8502 ldr r3, [r3] 8503 ldr r2, [r2] 8504 subs r3, r3, r2 8505 asrs r2, r3, #1 8506 ldr r3, .L1104+28 8507 muls r3, r2, r3 8508 ldr r2, .L1104 8509 ldr r2, [r2] 8510 uxth r1, r3 8511 ldrh r2, [r2, r1, lsl #1] 8512 cmp r2, #0 8513 bne .L1095 8514 cmp r4, r1 8515 beq .L1095 8516 movw r2, #2781 8517 b .L1103 8518.L1105: 8519 .align 2 8520.L1104: 8521 .word .LANCHOR42 8522 .word .LC101 8523 .word .LANCHOR159 8524 .word .LC1 8525 .word .LANCHOR150 8526 .word .LANCHOR41 8527 .word .LANCHOR40 8528 .word -1431655765 8529 .size decrement_vpc_count, .-decrement_vpc_count 8530 .section .text.FtlWriteDump_data,"ax",%progbits 8531 .align 1 8532 .global FtlWriteDump_data 8533 .syntax unified 8534 .thumb 8535 .thumb_func 8536 .fpu softvfp 8537 .type FtlWriteDump_data, %function 8538FtlWriteDump_data: 8539 @ args = 0, pretend = 0, frame = 24 8540 @ frame_needed = 0, uses_anonymous_args = 0 8541 push {r4, r5, r6, r7, r8, r10, fp, lr} 8542 sub sp, sp, #24 8543 ldr r4, .L1125 8544 ldrh r2, [r4, #4] 8545 cmp r2, #0 8546 beq .L1107 8547 ldrb r3, [r4, #8] @ zero_extendqisi2 8548 cmp r3, #0 8549 bne .L1107 8550 ldr r3, .L1125+4 8551 ldrb r1, [r4, #7] @ zero_extendqisi2 8552 ldrh r3, [r3] 8553 muls r3, r1, r3 8554 cmp r2, r3 8555 beq .L1107 8556 ldrb r7, [r4, #10] @ zero_extendqisi2 8557 cbnz r7, .L1106 8558 ldr r3, .L1125+8 8559 mov r2, r7 8560 mov r1, sp 8561 ldr r6, [r3] 8562 ldr r3, .L1125+12 8563 subs r6, r6, #1 8564 mov r0, r6 8565 ldrh r8, [r3] 8566 bl log2phys 8567 ldr r2, .L1125+16 8568 ldr r3, [sp] 8569 str r6, [sp, #20] 8570 ldr r0, [r2] 8571 ldr r2, .L1125+20 8572 str r3, [sp, #8] 8573 adds r3, r3, #1 8574 str r0, [sp, #12] 8575 ldr r5, [r2] 8576 str r5, [sp, #16] 8577 str r7, [r5, #4] 8578 beq .L1109 8579 mov r2, r7 8580 movs r1, #1 8581 add r0, sp, #4 8582 bl FlashReadPages 8583.L1110: 8584 ldr fp, .L1125 8585 lsl r8, r8, #2 8586 ldr r10, .L1125+28 8587 movs r7, #0 8588 movw r3, #61589 8589 strh r3, [r5] @ movhi 8590.L1111: 8591 cmp r8, r7 8592 bne .L1115 8593.L1112: 8594 movs r3, #1 8595.L1124: 8596 strb r3, [r4, #10] 8597.L1106: 8598 add sp, sp, #24 8599 @ sp needed 8600 pop {r4, r5, r6, r7, r8, r10, fp, pc} 8601.L1109: 8602 ldr r3, .L1125+24 8603 movs r1, #255 8604 ldrh r2, [r3] 8605 bl ftl_memset 8606 b .L1110 8607.L1115: 8608 ldrh r3, [r4, #4] 8609 cmp r3, #0 8610 beq .L1112 8611 ldr r3, [sp, #8] 8612 mov r0, fp 8613 str r6, [r5, #8] 8614 adds r7, r7, #1 8615 str r3, [r5, #12] 8616 ldrh r3, [r4] 8617 strh r3, [r5, #2] @ movhi 8618 bl get_new_active_ppa 8619 ldr r3, [r10] 8620 movs r1, #1 8621 str r0, [sp, #8] 8622 add r0, sp, #4 8623 str r3, [r5, #4] 8624 adds r3, r3, #1 8625 adds r2, r3, #1 8626 it eq 8627 moveq r3, #0 8628 str r3, [r10] 8629 movs r3, #0 8630 mov r2, r3 8631 bl FlashProgPages 8632 ldrh r0, [r4] 8633 bl decrement_vpc_count 8634 b .L1111 8635.L1107: 8636 movs r3, #0 8637 b .L1124 8638.L1126: 8639 .align 2 8640.L1125: 8641 .word .LANCHOR51 8642 .word .LANCHOR19 8643 .word .LANCHOR61 8644 .word .LANCHOR3 8645 .word .LANCHOR107 8646 .word .LANCHOR108 8647 .word .LANCHOR23 8648 .word .LANCHOR71 8649 .size FtlWriteDump_data, .-FtlWriteDump_data 8650 .section .text.l2p_flush,"ax",%progbits 8651 .align 1 8652 .global l2p_flush 8653 .syntax unified 8654 .thumb 8655 .thumb_func 8656 .fpu softvfp 8657 .type l2p_flush, %function 8658l2p_flush: 8659 @ args = 0, pretend = 0, frame = 0 8660 @ frame_needed = 0, uses_anonymous_args = 0 8661 push {r4, r5, r6, lr} 8662 movs r4, #0 8663 ldr r5, .L1131 8664 ldr r6, .L1131+4 8665 bl FtlWriteDump_data 8666.L1128: 8667 ldrh r3, [r5] 8668 uxth r0, r4 8669 cmp r3, r0 8670 bhi .L1130 8671 movs r0, #0 8672 pop {r4, r5, r6, pc} 8673.L1130: 8674 ldr r2, [r6] 8675 uxth r3, r4 8676 movs r1, #12 8677 mla r3, r1, r3, r2 8678 ldr r3, [r3, #4] 8679 cmp r3, #0 8680 bge .L1129 8681 bl flush_l2p_region 8682.L1129: 8683 adds r4, r4, #1 8684 b .L1128 8685.L1132: 8686 .align 2 8687.L1131: 8688 .word .LANCHOR33 8689 .word .LANCHOR55 8690 .size l2p_flush, .-l2p_flush 8691 .section .text.FtlRecoverySuperblock,"ax",%progbits 8692 .align 1 8693 .global FtlRecoverySuperblock 8694 .syntax unified 8695 .thumb 8696 .thumb_func 8697 .fpu softvfp 8698 .type FtlRecoverySuperblock, %function 8699FtlRecoverySuperblock: 8700 @ args = 0, pretend = 0, frame = 48 8701 @ frame_needed = 0, uses_anonymous_args = 0 8702 ldrh r3, [r0] 8703 movw r2, #65535 8704 push {r4, r5, r6, r7, r8, r10, fp, lr} 8705 mov r8, r0 8706 sub sp, sp, #48 8707 cmp r3, r2 8708 beq .L1262 8709 ldrh r3, [r0, #2] 8710 str r3, [sp, #4] 8711 ldrb r3, [r0, #6] @ zero_extendqisi2 8712 ldr r1, [sp, #4] 8713 str r3, [sp, #20] 8714 ldr r3, .L1270 8715 ldrh r3, [r3] 8716 cmp r3, r1 8717 mov r3, #0 8718 bne .L1136 8719 strh r3, [r0, #4] @ movhi 8720.L1268: 8721 strb r3, [r8, #6] 8722.L1262: 8723 movs r0, #0 8724 add sp, sp, #48 8725 @ sp needed 8726 pop {r4, r5, r6, r7, r8, r10, fp, pc} 8727.L1136: 8728 ldrh r0, [r0, #16] 8729.L1137: 8730 cmp r0, r2 8731 uxth r5, r3 8732 add r3, r3, #1 8733 beq .L1138 8734 movs r1, #1 8735 bl FtlGetLastWrittenPage 8736 mov r4, r0 8737 adds r0, r0, #1 8738 beq .L1139 8739 ldr r3, .L1270+4 8740 movs r2, #0 8741 mov r5, r2 8742 movw fp, #65535 8743 mov r10, #20 8744 ldrh ip, [r3] 8745 ldr r3, .L1270+8 8746 ldr r0, [r3] 8747 ldr r3, .L1270+12 8748 ldr r3, [r3] 8749 str r3, [sp, #8] 8750 ldr r3, .L1270+16 8751 ldrh r7, [r3] 8752 ldr r3, .L1270+20 8753 ldr r3, [r3] 8754 str r3, [sp, #12] 8755 ldr r3, .L1270+24 8756 ldrh lr, [r3] 8757 add r3, r8, #16 8758 str r3, [sp, #16] 8759 str r3, [sp] 8760.L1140: 8761 uxth r3, r2 8762 cmp ip, r3 8763 bhi .L1144 8764 movs r2, #0 8765 mov r1, r5 8766 bl FlashReadPages 8767 ldr r2, .L1270+28 8768 uxth r1, r4 8769 movw fp, #65535 8770 str r1, [sp, #12] 8771 ldr r3, [r2] 8772 subs r3, r3, #1 8773 str r3, [sp] 8774 ldr r3, .L1270+8 8775 ldr r10, [r3] 8776 movs r3, #0 8777 mov r7, r10 8778.L1145: 8779 uxth r1, r3 8780 cmp r5, r1 8781 bhi .L1150 8782 bne .L1148 8783 adds r3, r4, #1 8784 uxth r3, r3 8785 str r3, [sp, #8] 8786.L1263: 8787 ldr r0, [r10, #4] 8788 ubfx r0, r0, #10, #16 8789 bl P2V_plane 8790 ldr r3, .L1270 8791 mov r10, r0 8792 ldr r2, [sp, #8] 8793 ldrh r3, [r3] 8794 cmp r3, r2 8795 bne .L1152 8796 ldrh r3, [sp, #8] 8797 strh r3, [r8, #2] @ movhi 8798 movs r3, #0 8799 strb r3, [r8, #6] 8800 strh r3, [r8, #4] @ movhi 8801.L1152: 8802 ldr r3, [sp, #8] 8803 ldr r2, [sp, #4] 8804 cmp r3, r2 8805 bne .L1153 8806 ldr r3, [sp, #20] 8807 cmp r10, r3 8808 bne .L1153 8809 ldr r1, [sp, #8] 8810 mov r2, r10 8811.L1269: 8812 mov r0, r8 8813 bl ftl_sb_update_avl_pages 8814 b .L1262 8815.L1138: 8816 uxth r1, r3 8817 adds r1, r1, #8 8818 ldrh r0, [r8, r1, lsl #1] 8819 b .L1137 8820.L1139: 8821 ldr r3, [sp, #4] 8822 cbz r3, .L1141 8823 movw r2, #1755 8824 ldr r1, .L1270+32 8825 ldr r0, .L1270+36 8826 bl printf 8827.L1141: 8828 ldr r3, [sp, #20] 8829 cbz r3, .L1142 8830 cmp r5, r3 8831 beq .L1142 8832 movw r2, #1756 8833 ldr r1, .L1270+32 8834 ldr r0, .L1270+36 8835 bl printf 8836.L1142: 8837 movs r3, #0 8838 strh r3, [r8, #2] @ movhi 8839 b .L1268 8840.L1144: 8841 ldr r1, [sp] 8842 ldrh r3, [r1], #2 8843 cmp r3, fp 8844 str r1, [sp] 8845 beq .L1143 8846 mla r1, r10, r5, r0 8847 ldr r6, [sp, #8] 8848 orr r3, r4, r3, lsl #10 8849 str r3, [r1, #4] 8850 mul r3, r7, r5 8851 bic r3, r3, #3 8852 add r3, r3, r6 8853 ldr r6, [sp, #12] 8854 str r3, [r1, #8] 8855 mul r3, lr, r5 8856 adds r5, r5, #1 8857 uxth r5, r5 8858 bic r3, r3, #3 8859 add r3, r3, r6 8860 str r3, [r1, #12] 8861.L1143: 8862 adds r2, r2, #1 8863 b .L1140 8864.L1150: 8865 ldr r1, [r7] 8866 cbnz r1, .L1146 8867 ldr r1, [r7, #12] 8868 ldr r6, [r1, #4] 8869 str r1, [sp, #8] 8870 adds r1, r6, #1 8871 beq .L1147 8872 ldr r1, [r2] 8873 mov r0, r6 8874 bl ftl_cmp_data_ver 8875 cbz r0, .L1147 8876 adds r6, r6, #1 8877 str r6, [r2] 8878.L1147: 8879 ldr r1, [sp, #8] 8880 ldr r1, [r1] 8881 adds r1, r1, #1 8882 bne .L1149 8883.L1148: 8884 uxth r2, r4 8885 uxth r3, r3 8886 str r2, [sp, #8] 8887 movs r2, #20 8888 mla r10, r2, r3, r10 8889 b .L1263 8890.L1146: 8891 ldr fp, [sp, #12] 8892.L1149: 8893 adds r3, r3, #1 8894 adds r7, r7, #20 8895 b .L1145 8896.L1153: 8897 movw r3, #65535 8898 cmp fp, r3 8899 bne .L1154 8900 ldrb r3, [r8, #8] @ zero_extendqisi2 8901 cmp r3, #0 8902 bne .L1155 8903.L1154: 8904 ldr r3, .L1270+40 8905 uxth r6, r4 8906 uxth r4, r4 8907 ldr r7, .L1270+8 8908 ldr r2, [r3] 8909 adds r2, r2, #1 8910 itt eq 8911 ldreq r2, [sp] 8912 streq r2, [r3] 8913 ldr r3, [sp, #4] 8914 adds r3, r3, #7 8915 cmp r4, r3 8916 itet gt 8917 subgt r4, r6, #7 8918 ldrle r4, [sp, #4] 8919 uxthgt r4, r4 8920.L1158: 8921 cmp r4, r6 8922 bhi .L1168 8923 ldr r3, .L1270+4 8924 movw lr, #65535 8925 ldr r0, [r7] 8926 mov ip, #20 8927 ldrh fp, [r3] 8928 ldr r3, [sp, #16] 8929 str r3, [sp, #12] 8930 movs r3, #0 8931 mov r5, r3 8932 b .L1169 8933.L1160: 8934 ldr r1, [sp, #12] 8935 ldrh r2, [r1], #2 8936 cmp r2, lr 8937 str r1, [sp, #12] 8938 beq .L1159 8939 mla r1, ip, r5, r0 8940 adds r5, r5, #1 8941 orr r2, r4, r2, lsl #10 8942 uxth r5, r5 8943 str r2, [r1, #4] 8944.L1159: 8945 adds r3, r3, #1 8946.L1169: 8947 uxth r2, r3 8948 cmp fp, r2 8949 bhi .L1160 8950 mov r1, r5 8951 movs r2, #0 8952 bl FlashReadPages 8953 ldr r3, .L1270+40 8954 movs r1, #20 8955 movs r0, #0 8956 movw ip, #65535 8957 ldr r2, [r3] 8958 ldr r3, [r7] 8959 mla r5, r1, r5, r3 8960.L1161: 8961 cmp r3, r5 8962 bne .L1166 8963 cbz r0, .L1167 8964 ldr r3, .L1270+40 8965 str r2, [r3] 8966.L1167: 8967 adds r4, r4, #1 8968 uxth r4, r4 8969 b .L1158 8970.L1271: 8971 .align 2 8972.L1270: 8973 .word .LANCHOR19 8974 .word .LANCHOR3 8975 .word .LANCHOR120 8976 .word .LANCHOR91 8977 .word .LANCHOR23 8978 .word .LANCHOR92 8979 .word .LANCHOR24 8980 .word .LANCHOR71 8981 .word .LANCHOR160 8982 .word .LC1 8983 .word .LANCHOR153 8984.L1166: 8985 ldr r1, [r3] 8986 cmp r1, #0 8987 beq .L1162 8988 cbz r0, .L1155 8989.L1264: 8990 ldr r3, .L1272 8991 str r2, [r3] 8992.L1155: 8993 ldr r3, .L1272+4 8994 movs r2, #1 8995 ldr r0, .L1272+8 8996 ldr r6, .L1272+12 8997 strh r2, [r3] @ movhi 8998 bl FtlMapBlkWriteDump_data 8999 ldr fp, [sp, #4] 9000.L1170: 9001 ldr r3, .L1272+16 9002 movw lr, #65535 9003 ldr r0, [r6] 9004 movs r7, #20 9005 ldr r1, [sp, #16] 9006 ldrh r4, [r3] 9007 movs r3, #0 9008 str r3, [sp, #12] 9009.L1171: 9010 uxth r2, r3 9011 cmp r2, r4 9012 bcc .L1173 9013 movs r2, #0 9014 ldr r1, [sp, #12] 9015 bl FlashReadPages 9016 movs r3, #0 9017.L1267: 9018 str r3, [sp, #24] 9019 ldr r2, [sp, #12] 9020 ldrh r3, [sp, #24] 9021 cmp r2, r3 9022 bhi .L1202 9023 ldr r3, .L1272+20 9024 add fp, fp, #1 9025 uxth fp, fp 9026 ldrh r3, [r3] 9027 cmp r3, fp 9028 bne .L1170 9029 ldr r2, .L1272+16 9030 movw r0, #65535 9031 movs r3, #0 9032 strh fp, [r8, #2] @ movhi 9033 strh r3, [r8, #4] @ movhi 9034 ldrh r2, [r2] 9035.L1203: 9036 uxth r1, r3 9037 cmp r1, r2 9038 bcs .L1262 9039 ldr r1, [sp, #16] 9040 ldrh r4, [r1], #2 9041 cmp r4, r0 9042 str r1, [sp, #16] 9043 add r1, r3, #1 9044 bne .L1268 9045 mov r3, r1 9046 b .L1203 9047.L1162: 9048 ldr r1, [r3, #12] 9049 ldrh lr, [r1] 9050 cmp lr, ip 9051 beq .L1165 9052 ldr r1, [r1, #4] 9053 cmp r1, #-1 9054 itt ne 9055 movne r2, r1 9056 movne r0, #1 9057.L1165: 9058 adds r3, r3, #20 9059 b .L1161 9060.L1168: 9061 mov r2, #-1 9062 b .L1264 9063.L1173: 9064 ldrh r2, [r1], #2 9065 cmp r2, lr 9066 beq .L1172 9067 ldr r5, [sp, #12] 9068 orr r2, fp, r2, lsl #10 9069 mla ip, r7, r5, r0 9070 str r2, [ip, #4] 9071 mov r2, r5 9072 adds r2, r2, #1 9073 uxth r2, r2 9074 str r2, [sp, #12] 9075.L1172: 9076 adds r3, r3, #1 9077 b .L1171 9078.L1202: 9079 ldr r3, [sp, #24] 9080 movs r5, #20 9081 muls r5, r3, r5 9082 ldr r3, [r6] 9083 str r3, [sp, #28] 9084 adds r7, r3, r5 9085 ldr r4, [r7, #4] 9086 ubfx r0, r4, #10, #16 9087 str r4, [sp, #44] 9088 bl P2V_plane 9089 ldr r3, [sp, #4] 9090 cmp fp, r3 9091 bcc .L1175 9092 ldr r3, [sp, #28] 9093 bne .L1176 9094 ldr r2, [sp, #20] 9095 cmp r2, r0 9096 bhi .L1175 9097.L1176: 9098 ldr r2, [sp, #8] 9099 cmp fp, r2 9100 bne .L1177 9101 cmp r10, r0 9102 beq .L1178 9103.L1177: 9104 ldr r3, [r3, r5] 9105 adds r3, r3, #1 9106 beq .L1179 9107 ldr r3, [r7, #12] 9108 movw r2, #61589 9109 ldrh r1, [r3] 9110 cmp r1, r2 9111 beq .L1180 9112.L1186: 9113 ldrh r0, [r8] 9114.L1266: 9115 bl decrement_vpc_count 9116.L1175: 9117 ldr r3, [sp, #24] 9118 adds r3, r3, #1 9119 b .L1267 9120.L1180: 9121 ldr r2, [r3, #4] 9122 str r2, [sp] 9123 adds r2, r2, #1 9124 beq .L1181 9125 ldr r2, .L1272+24 9126 ldr r0, [sp] 9127 ldr r1, [r2] 9128 bl ftl_cmp_data_ver 9129 cbz r0, .L1181 9130 ldr r1, [sp] 9131 adds r1, r1, #1 9132 str r1, [r2] 9133.L1181: 9134 ldr r4, [r3, #8] 9135 add r1, sp, #40 9136 ldr r3, [r3, #12] 9137 movs r2, #0 9138 mov r0, r4 9139 str r3, [sp, #36] 9140 bl log2phys 9141 ldr r3, .L1272 9142 ldr r1, [r3] 9143 adds r3, r1, #1 9144 beq .L1182 9145 ldr r0, [sp] 9146 bl ftl_cmp_data_ver 9147 cmp r0, #0 9148 beq .L1182 9149 ldr r3, [sp, #36] 9150 adds r7, r3, #1 9151 beq .L1183 9152 ldr r0, [r6] 9153 movs r2, #0 9154 movs r1, #1 9155 add r0, r0, r5 9156 str r3, [r0, #4] 9157 ldr r7, [r0, #12] 9158 bl FlashReadPages 9159 ldr r2, [r6] 9160 ldr r1, [r2, r5] 9161 adds r3, r2, r5 9162 adds r1, r1, #1 9163 bne .L1184 9164.L1185: 9165 mov r3, #-1 9166 ldrh r0, [r8] 9167 str r3, [sp, #36] 9168 bl decrement_vpc_count 9169.L1193: 9170 ldr r7, [sp, #36] 9171 adds r0, r7, #1 9172 beq .L1175 9173.L1206: 9174 ubfx r0, r7, #10, #16 9175 bl P2V_block_in_plane 9176 ldr r3, .L1272+28 9177 mov r4, r0 9178 ldrh r3, [r3] 9179 cmp r3, r0 9180 bhi .L1198 9181 movw r2, #2006 9182 ldr r1, .L1272+32 9183 ldr r0, .L1272+36 9184 bl printf 9185.L1198: 9186 ldr r3, .L1272+40 9187 ldr r3, [r3] 9188 ldrh r3, [r3, r4, lsl #1] 9189 cmp r3, #0 9190 beq .L1199 9191 mov r0, r4 9192 b .L1266 9193.L1183: 9194 ldr r3, [sp, #44] 9195 ldr r2, [sp, #40] 9196 cmp r2, r3 9197 bne .L1186 9198 movs r2, #1 9199 add r1, sp, #36 9200 mov r0, r4 9201 bl log2phys 9202 b .L1186 9203.L1184: 9204 ldr r1, [r7, #8] 9205 cmp r4, r1 9206 bne .L1185 9207 ldr r0, .L1272 9208 ldr r1, [r7, #4] 9209 ldr r0, [r0] 9210 str r1, [sp, #28] 9211 bl ftl_cmp_data_ver 9212 cmp r0, #0 9213 beq .L1185 9214 ldr r1, [sp, #40] 9215 ldr r0, [sp, #44] 9216 cmp r1, r0 9217 bne .L1188 9218.L1191: 9219 ldr r1, [sp, #36] 9220 mov r0, r4 9221 bl FtlReUsePrevPpa 9222 b .L1185 9223.L1188: 9224 ldr r0, [sp, #36] 9225 cmp r1, r0 9226 beq .L1185 9227 adds r0, r1, #1 9228 beq .L1189 9229 str r1, [r3, #4] 9230 movs r2, #0 9231 movs r1, #1 9232 mov r0, r3 9233 ldr r7, [r3, #12] 9234 bl FlashReadPages 9235.L1190: 9236 ldr r3, [r6] 9237 ldr r3, [r3, r5] 9238 adds r3, r3, #1 9239 beq .L1191 9240 ldr r3, [r7, #4] 9241 ldr r2, .L1272 9242 mov r1, r3 9243 ldr r0, [r2] 9244 bl ftl_cmp_data_ver 9245 cmp r0, #0 9246 beq .L1191 9247 mov r1, r3 9248 ldr r0, [sp, #28] 9249 bl ftl_cmp_data_ver 9250 cmp r0, #0 9251 beq .L1185 9252 b .L1191 9253.L1189: 9254 str r1, [r2, r5] 9255 b .L1190 9256.L1273: 9257 .align 2 9258.L1272: 9259 .word .LANCHOR153 9260 .word .LANCHOR161 9261 .word .LANCHOR144 9262 .word .LANCHOR120 9263 .word .LANCHOR3 9264 .word .LANCHOR19 9265 .word .LANCHOR71 9266 .word .LANCHOR5 9267 .word .LANCHOR160 9268 .word .LC1 9269 .word .LANCHOR42 9270.L1182: 9271 ldr r3, [sp, #44] 9272 ldr r2, [sp, #40] 9273 cmp r2, r3 9274 beq .L1193 9275 movs r2, #1 9276 add r1, sp, #44 9277 mov r0, r4 9278 bl log2phys 9279 ldr r7, [sp, #40] 9280 adds r5, r7, #1 9281 beq .L1193 9282 ldr r3, [sp, #36] 9283 cmp r7, r3 9284 beq .L1206 9285 ubfx r0, r7, #10, #16 9286 bl P2V_block_in_plane 9287 ldr r3, .L1274 9288 ldrh r3, [r3] 9289 cmp r3, r0 9290 beq .L1197 9291 ldr r3, .L1274+4 9292 ldrh r3, [r3] 9293 cmp r3, r0 9294 beq .L1197 9295 ldr r3, .L1274+8 9296 ldrh r3, [r3] 9297 cmp r3, r0 9298 bne .L1193 9299.L1197: 9300 ldr r0, [r6] 9301 movs r2, #0 9302 movs r1, #1 9303 str r7, [r0, #4] 9304 ldr r5, [r0, #12] 9305 bl FlashReadPages 9306 ldr r3, [r6] 9307 ldr r3, [r3] 9308 adds r3, r3, #1 9309 beq .L1193 9310 ldr r1, [r5, #4] 9311 ldr r0, [sp] 9312 bl ftl_cmp_data_ver 9313 cmp r0, #0 9314 bne .L1193 9315 movs r2, #1 9316 add r1, sp, #40 9317 mov r0, r4 9318 bl log2phys 9319 b .L1193 9320.L1199: 9321 mov r1, r4 9322 ldr r0, .L1274+12 9323 bl printf 9324 b .L1175 9325.L1179: 9326 ldr r3, .L1274+16 9327 ldr r3, [r3] 9328 cmp r3, #31 9329 bhi .L1200 9330 ldr r2, .L1274+20 9331 str r4, [r2, r3, lsl #2] 9332 adds r3, r3, #1 9333 ldr r2, .L1274+16 9334 str r3, [r2] 9335.L1200: 9336 ldrh r0, [r8] 9337 bl decrement_vpc_count 9338 ldr r3, .L1274+24 9339 ldr r2, [r3] 9340 adds r1, r2, #1 9341 bne .L1201 9342 ldr r2, [sp] 9343.L1265: 9344 str r2, [r3] 9345 b .L1175 9346.L1201: 9347 ldr r1, [sp] 9348 cmp r1, r2 9349 bcs .L1175 9350 mov r2, r1 9351 b .L1265 9352.L1178: 9353 strb r10, [r8, #6] 9354 mov r2, r10 9355 strh fp, [r8, #2] @ movhi 9356 mov r1, fp 9357 b .L1269 9358.L1275: 9359 .align 2 9360.L1274: 9361 .word .LANCHOR51 9362 .word .LANCHOR52 9363 .word .LANCHOR53 9364 .word .LC102 9365 .word .LANCHOR162 9366 .word .LANCHOR163 9367 .word .LANCHOR153 9368 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock 9369 .section .text.FtlSuperblockPowerLostFix,"ax",%progbits 9370 .align 1 9371 .global FtlSuperblockPowerLostFix 9372 .syntax unified 9373 .thumb 9374 .thumb_func 9375 .fpu softvfp 9376 .type FtlSuperblockPowerLostFix, %function 9377FtlSuperblockPowerLostFix: 9378 @ args = 0, pretend = 0, frame = 24 9379 @ frame_needed = 0, uses_anonymous_args = 0 9380 push {r4, r5, r6, r7, r8, lr} 9381 mov r3, #-1 9382 sub sp, sp, #24 9383 ldr r2, .L1287 9384 movs r6, #0 9385 mov r4, r0 9386 str r3, [sp, #20] 9387 movs r7, #7 9388 ldr r3, .L1287+4 9389 ldr r5, [r2] 9390 mvn r2, #2 9391 ldr r8, .L1287+16 9392 ldr r3, [r3] 9393 str r5, [sp, #16] 9394 str r3, [sp, #12] 9395 str r2, [r5, #8] 9396 mvn r2, #1 9397 str r2, [r5, #12] 9398 ldrh r2, [r0] 9399 strh r6, [r5] @ movhi 9400 strh r2, [r5, #2] @ movhi 9401 movw r2, #61589 9402 str r2, [r3] 9403 add r2, r2, #304087040 9404 add r2, r2, #1269760 9405 addw r2, r2, #1507 9406 str r2, [r3, #4] 9407.L1277: 9408 subs r7, r7, #1 9409 beq .L1279 9410 ldrh r3, [r4, #4] 9411 cbnz r3, .L1278 9412.L1279: 9413 ldr r3, .L1287+8 9414 ldrh r1, [r4] 9415 ldrh r0, [r4, #4] 9416 ldr r2, [r3] 9417 ldrh r3, [r2, r1, lsl #1] 9418 subs r3, r3, r0 9419 strh r3, [r2, r1, lsl #1] @ movhi 9420 ldr r3, .L1287+12 9421 ldrh r3, [r3] 9422 strh r3, [r4, #2] @ movhi 9423 movs r3, #0 9424 strb r3, [r4, #6] 9425 strh r3, [r4, #4] @ movhi 9426 add sp, sp, #24 9427 @ sp needed 9428 pop {r4, r5, r6, r7, r8, pc} 9429.L1278: 9430 mov r0, r4 9431 bl get_new_active_ppa 9432 str r0, [sp, #8] 9433 adds r0, r0, #1 9434 beq .L1279 9435 ldr r3, [r8] 9436 movs r1, #1 9437 add r0, sp, #4 9438 str r3, [r5, #4] 9439 adds r3, r3, #1 9440 adds r2, r3, #1 9441 it eq 9442 moveq r3, r6 9443 str r3, [r8] 9444 movs r3, #0 9445 mov r2, r3 9446 bl FlashProgPages 9447 ldrh r0, [r4] 9448 bl decrement_vpc_count 9449 b .L1277 9450.L1288: 9451 .align 2 9452.L1287: 9453 .word .LANCHOR108 9454 .word .LANCHOR107 9455 .word .LANCHOR42 9456 .word .LANCHOR19 9457 .word .LANCHOR71 9458 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix 9459 .section .text.FtlLoadBbt,"ax",%progbits 9460 .align 1 9461 .global FtlLoadBbt 9462 .syntax unified 9463 .thumb 9464 .thumb_func 9465 .fpu softvfp 9466 .type FtlLoadBbt, %function 9467FtlLoadBbt: 9468 @ args = 0, pretend = 0, frame = 0 9469 @ frame_needed = 0, uses_anonymous_args = 0 9470 push {r3, r4, r5, r6, r7, r8, r10, lr} 9471 ldr r8, .L1318+40 9472 ldr r4, .L1318 9473 ldr r3, [r8] 9474 ldr r7, .L1318+4 9475 mov r10, r4 9476 str r3, [r4, #8] 9477 ldr r3, .L1318+8 9478 ldr r6, [r3] 9479 str r6, [r4, #12] 9480 bl FtlBbtMemInit 9481 ldrh r5, [r7] 9482 subs r5, r5, #1 9483 uxth r5, r5 9484.L1290: 9485 ldrh r3, [r7] 9486 subs r3, r3, #15 9487 cmp r3, r5 9488 bgt .L1293 9489 lsls r3, r5, #10 9490 movs r2, #1 9491 mov r1, r2 9492 mov r0, r10 9493 str r3, [r4, #4] 9494 bl FlashReadPages 9495 ldr r3, [r4] 9496 adds r3, r3, #1 9497 bne .L1291 9498 ldr r3, [r4, #4] 9499 movs r2, #1 9500 mov r1, r2 9501 mov r0, r10 9502 adds r3, r3, #1 9503 str r3, [r4, #4] 9504 bl FlashReadPages 9505.L1291: 9506 ldr r3, [r4] 9507 adds r3, r3, #1 9508 beq .L1292 9509 ldrh r2, [r6] 9510 movw r3, #61649 9511 cmp r2, r3 9512 bne .L1292 9513 ldr r3, .L1318+12 9514 ldr r2, [r6, #4] 9515 strh r5, [r3] @ movhi 9516 str r2, [r3, #8] 9517 ldrh r2, [r6, #8] 9518 strh r2, [r3, #4] @ movhi 9519.L1293: 9520 ldr r5, .L1318+12 9521 movw r2, #65535 9522 ldrh r3, [r5] 9523 cmp r3, r2 9524 beq .L1307 9525 ldrh r3, [r5, #4] 9526 cmp r3, r2 9527 beq .L1297 9528 lsls r3, r3, #10 9529 movs r2, #1 9530 mov r1, r2 9531 ldr r0, .L1318 9532 str r3, [r4, #4] 9533 bl FlashReadPages 9534 ldr r3, [r4] 9535 adds r3, r3, #1 9536 beq .L1297 9537 ldrh r2, [r6] 9538 movw r3, #61649 9539 cmp r2, r3 9540 bne .L1297 9541 ldr r3, [r6, #4] 9542 ldr r2, [r5, #8] 9543 cmp r3, r2 9544 bls .L1297 9545 ldrh r2, [r5, #4] 9546 str r3, [r5, #8] 9547 ldrh r3, [r6, #8] 9548 strh r2, [r5] @ movhi 9549 strh r3, [r5, #4] @ movhi 9550.L1297: 9551 ldr r10, .L1318 9552 movs r1, #1 9553 ldrh r0, [r5] 9554 bl FtlGetLastWrittenPage 9555 sxth r7, r0 9556 adds r0, r0, #1 9557 strh r0, [r5, #2] @ movhi 9558.L1299: 9559 cmp r7, #0 9560 bge .L1302 9561 movs r2, #254 9562 ldr r1, .L1318+16 9563 ldr r0, .L1318+20 9564 bl printf 9565.L1301: 9566 ldrh r3, [r6, #10] 9567 ldrh r0, [r6, #12] 9568 strh r3, [r5, #6] @ movhi 9569 movw r3, #65535 9570 cmp r0, r3 9571 beq .L1304 9572 ldr r3, .L1318+24 9573 ldr r2, [r3] 9574 cmp r0, r2 9575 beq .L1304 9576 ldr r3, .L1318+28 9577 ldrh r3, [r3] 9578 lsrs r3, r3, #2 9579 cmp r2, r3 9580 bcs .L1304 9581 cmp r0, r3 9582 bcs .L1304 9583 bl FtlSysBlkNumInit 9584.L1304: 9585 ldr r6, .L1318+32 9586 movs r5, #0 9587 ldr r7, .L1318+36 9588 ldr r8, .L1318+44 9589.L1305: 9590 ldrh r3, [r7] 9591 cmp r5, r3 9592 bcc .L1306 9593 movs r0, #0 9594 pop {r3, r4, r5, r6, r7, r8, r10, pc} 9595.L1292: 9596 subs r5, r5, #1 9597 uxth r5, r5 9598 b .L1290 9599.L1302: 9600 ldrh r3, [r5] 9601 movs r2, #1 9602 mov r1, r2 9603 mov r0, r10 9604 orr r3, r7, r3, lsl #10 9605 str r3, [r4, #4] 9606 ldr r3, [r8] 9607 str r3, [r4, #8] 9608 bl FlashReadPages 9609 ldr r3, [r4] 9610 adds r3, r3, #1 9611 beq .L1300 9612 ldrh r2, [r6] 9613 movw r3, #61649 9614 cmp r2, r3 9615 beq .L1301 9616.L1300: 9617 subs r7, r7, #1 9618 sxth r7, r7 9619 b .L1299 9620.L1306: 9621 ldrh r2, [r8] 9622 ldr r1, [r4, #8] 9623 ldr r0, [r6, #4]! 9624 lsls r2, r2, #2 9625 mla r1, r5, r2, r1 9626 adds r5, r5, #1 9627 bl ftl_memcpy 9628 b .L1305 9629.L1307: 9630 mov r0, #-1 9631 pop {r3, r4, r5, r6, r7, r8, r10, pc} 9632.L1319: 9633 .align 2 9634.L1318: 9635 .word .LANCHOR106 9636 .word .LANCHOR17 9637 .word .LANCHOR108 9638 .word .LANCHOR37 9639 .word .LANCHOR164 9640 .word .LC1 9641 .word .LANCHOR2 9642 .word .LANCHOR6 9643 .word .LANCHOR37+24 9644 .word .LANCHOR10 9645 .word .LANCHOR107 9646 .word .LANCHOR137 9647 .size FtlLoadBbt, .-FtlLoadBbt 9648 .section .text.FtlMakeBbt,"ax",%progbits 9649 .align 1 9650 .global FtlMakeBbt 9651 .syntax unified 9652 .thumb 9653 .thumb_func 9654 .fpu softvfp 9655 .type FtlMakeBbt, %function 9656FtlMakeBbt: 9657 @ args = 0, pretend = 0, frame = 8 9658 @ frame_needed = 0, uses_anonymous_args = 0 9659 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 9660 movs r6, #0 9661 ldr r7, .L1339 9662 bl FtlBbtMemInit 9663 sub r8, r7, #18 9664 bl FtlLoadFactoryBbt 9665.L1321: 9666 ldr r3, .L1339+4 9667 ldrh r3, [r3] 9668 cmp r6, r3 9669 bcc .L1327 9670 ldr r5, .L1339+8 9671 movs r4, #0 9672.L1328: 9673 ldrh r3, [r5] 9674 uxth r0, r4 9675 adds r4, r4, #1 9676 cmp r3, r0 9677 bhi .L1329 9678 ldr r4, .L1339+12 9679 movw r6, #65535 9680 ldrh r5, [r4, #12] 9681 subs r5, r5, #1 9682 uxth r5, r5 9683.L1330: 9684 ldrh r3, [r4, #12] 9685 subs r3, r3, #47 9686 cmp r3, r5 9687 bgt .L1334 9688 mov r0, r5 9689 bl FtlBbmIsBadBlock 9690 cmp r0, #1 9691 beq .L1331 9692 mov r0, r5 9693 bl FlashTestBlk 9694 cmp r0, #0 9695 beq .L1332 9696 mov r0, r5 9697 bl FtlBbmMapBadBlock 9698.L1331: 9699 subs r5, r5, #1 9700 uxth r5, r5 9701 b .L1330 9702.L1327: 9703 ldr r3, .L1339+16 9704 ldr r5, .L1339+20 9705 ldrh r2, [r8, #2]! 9706 ldr r4, .L1339+24 9707 ldr r0, [r3] 9708 movw r3, #65535 9709 ldr r10, [r5] 9710 cmp r2, r3 9711 mov fp, r4 9712 ldr r3, .L1339+28 9713 str r0, [r4, #8] 9714 str r10, [r4, #12] 9715 beq .L1322 9716 ldrh r5, [r3] 9717 mov r0, r4 9718 str r3, [sp] 9719 mla r5, r6, r5, r2 9720 lsls r2, r5, #10 9721 str r2, [r4, #4] 9722 movs r2, #1 9723 mov r1, r2 9724 bl FlashReadPages 9725 ldr r3, [sp] 9726 ldr r1, [r4, #8] 9727 ldr r0, [r7] 9728 ldrh r2, [r3] 9729 adds r2, r2, #7 9730 asrs r2, r2, #3 9731 bl ftl_memcpy 9732.L1323: 9733 uxth r0, r5 9734 adds r6, r6, #1 9735 adds r7, r7, #4 9736 bl FtlBbmMapBadBlock 9737 b .L1321 9738.L1322: 9739 mov r1, r6 9740 str r3, [sp] 9741 bl FlashGetBadBlockList 9742 ldr r0, [r4, #8] 9743 ldr r1, [r7] 9744 bl FtlBbt2Bitmap 9745 ldr r3, [sp] 9746 str r5, [sp, #4] 9747 ldrh r4, [r3] 9748 subs r4, r4, #1 9749 uxth r4, r4 9750.L1324: 9751 ldr r3, [sp] 9752 ldrh r0, [r3] 9753 smlabb r0, r0, r6, r4 9754 uxth r0, r0 9755 bl FtlBbmIsBadBlock 9756 cmp r0, #1 9757 beq .L1325 9758 ldr r3, [sp, #4] 9759 movs r2, #16 9760 movs r1, #0 9761 strh r4, [r8] @ movhi 9762 ldr r0, [r3] 9763 bl ftl_memset 9764 ldr r3, .L1339+16 9765 mov r2, #4096 9766 movs r1, #0 9767 ldr r0, [r3] 9768 bl ftl_memset 9769 ldr r2, [sp] 9770 movw r3, #61664 9771 strh r3, [r10] @ movhi 9772 movs r3, #0 9773 str r3, [r10, #4] 9774 ldrh r5, [r2] 9775 ldrh r3, [r8] 9776 ldr r1, [r7] 9777 ldr r0, [fp, #8] 9778 strh r3, [r10, #2] @ movhi 9779 mla r5, r6, r5, r3 9780 lsls r3, r5, #10 9781 str r3, [fp, #4] 9782 ldr r3, .L1339+32 9783 ldrh r2, [r3] 9784 lsls r2, r2, #2 9785 bl ftl_memcpy 9786 movs r2, #1 9787 ldr r0, .L1339+24 9788 mov r1, r2 9789 bl FlashEraseBlocks 9790 movs r3, #1 9791 ldr r0, .L1339+24 9792 mov r2, r3 9793 mov r1, r3 9794 bl FlashProgPages 9795 ldr r3, [fp] 9796 adds r3, r3, #1 9797 bne .L1323 9798 uxth r0, r5 9799 bl FtlBbmMapBadBlock 9800 b .L1324 9801.L1325: 9802 subs r4, r4, #1 9803 uxth r4, r4 9804 b .L1324 9805.L1329: 9806 bl FtlBbmMapBadBlock 9807 b .L1328 9808.L1332: 9809 ldrh r3, [r4] 9810 cmp r3, r6 9811 bne .L1333 9812 strh r5, [r4] @ movhi 9813 b .L1331 9814.L1333: 9815 strh r5, [r4, #4] @ movhi 9816.L1334: 9817 ldr r3, .L1339+36 9818 movs r5, #0 9819 str r5, [r4, #8] 9820 movs r1, #1 9821 movs r2, #2 9822 strh r5, [r4, #2] @ movhi 9823 ldr r0, [r3] 9824 ldrh r3, [r4] 9825 lsls r3, r3, #10 9826 str r3, [r0, #4] 9827 ldrh r3, [r4, #4] 9828 lsls r3, r3, #10 9829 str r3, [r0, #24] 9830 bl FlashEraseBlocks 9831 ldrh r0, [r4] 9832 bl FtlBbmMapBadBlock 9833 ldrh r0, [r4, #4] 9834 bl FtlBbmMapBadBlock 9835 bl FtlBbmTblFlush 9836 ldr r3, [r4, #8] 9837 ldrh r2, [r4, #4] 9838 strh r5, [r4, #2] @ movhi 9839 adds r3, r3, #1 9840 str r3, [r4, #8] 9841 ldrh r3, [r4] 9842 strh r2, [r4] @ movhi 9843 strh r3, [r4, #4] @ movhi 9844 bl FtlBbmTblFlush 9845 mov r0, r5 9846 add sp, sp, #8 9847 @ sp needed 9848 pop {r4, r5, r6, r7, r8, r10, fp, pc} 9849.L1340: 9850 .align 2 9851.L1339: 9852 .word .LANCHOR37+28 9853 .word .LANCHOR10 9854 .word .LANCHOR25 9855 .word .LANCHOR37 9856 .word .LANCHOR107 9857 .word .LANCHOR108 9858 .word .LANCHOR106 9859 .word .LANCHOR17 9860 .word .LANCHOR137 9861 .word .LANCHOR111 9862 .size FtlMakeBbt, .-FtlMakeBbt 9863 .section .text.FtlVendorPartWrite,"ax",%progbits 9864 .align 1 9865 .global FtlVendorPartWrite 9866 .syntax unified 9867 .thumb 9868 .thumb_func 9869 .fpu softvfp 9870 .type FtlVendorPartWrite, %function 9871FtlVendorPartWrite: 9872 @ args = 0, pretend = 0, frame = 104 9873 @ frame_needed = 0, uses_anonymous_args = 0 9874 ldr r3, .L1353 9875 push {r4, r5, r6, r7, r8, r10, fp, lr} 9876 sub sp, sp, #104 9877 str r2, [sp] 9878 adds r2, r0, r1 9879 mov r7, r0 9880 mov r5, r1 9881 ldrh r3, [r3] 9882 cmp r2, r3 9883 bhi .L1349 9884 ldr r3, .L1353+4 9885 mov r8, #0 9886 ldrh r6, [r3] 9887 lsr r6, r0, r6 9888 lsl fp, r6, #2 9889.L1343: 9890 cbnz r5, .L1348 9891.L1341: 9892 mov r0, r8 9893 add sp, sp, #104 9894 @ sp needed 9895 pop {r4, r5, r6, r7, r8, r10, fp, pc} 9896.L1348: 9897 ldr r3, .L1353+8 9898 mov r0, r7 9899 ldr r10, .L1353+24 9900 ldr r3, [r3] 9901 ldr r2, [r3, fp] 9902 ldr r3, .L1353+12 9903 str r2, [sp, #12] 9904 ldrh r3, [r3] 9905 mov r1, r3 9906 str r3, [sp, #8] 9907 bl __aeabi_uidivmod 9908 ldr r3, [sp, #8] 9909 ldr r2, [sp, #12] 9910 str r1, [sp, #4] 9911 subs r4, r3, r1 9912 uxth r4, r4 9913 cmp r5, r4 9914 it cc 9915 uxthcc r4, r5 9916 cbz r2, .L1345 9917 cmp r4, r3 9918 beq .L1345 9919 ldr r3, [r10] 9920 add r0, sp, #20 9921 str r2, [sp, #24] 9922 movs r2, #1 9923 mov r1, r2 9924 str r3, [sp, #28] 9925 add r3, sp, #40 9926 str r3, [sp, #32] 9927 bl FlashReadPages 9928.L1346: 9929 lsls r3, r4, #9 9930 ldr r0, [r10] 9931 subs r5, r5, r4 9932 mov r2, r3 9933 str r3, [sp, #8] 9934 ldm sp, {r1, r3} 9935 add r7, r7, r4 9936 add fp, fp, #4 9937 add r0, r0, r3, lsl #9 9938 bl ftl_memcpy 9939 ldr r2, [r10] 9940 mov r1, r6 9941 ldr r0, .L1353+16 9942 adds r6, r6, #1 9943 bl FtlMapWritePage 9944 ldr r3, [sp] 9945 adds r0, r0, #1 9946 it eq 9947 moveq r8, #-1 9948 mov r2, r3 9949 ldr r3, [sp, #8] 9950 add r2, r2, r3 9951 str r2, [sp] 9952 b .L1343 9953.L1345: 9954 ldr r3, .L1353+20 9955 movs r1, #0 9956 ldr r0, [r10] 9957 ldrh r2, [r3] 9958 bl ftl_memset 9959 b .L1346 9960.L1349: 9961 mov r8, #-1 9962 b .L1341 9963.L1354: 9964 .align 2 9965.L1353: 9966 .word .LANCHOR16 9967 .word .LANCHOR22 9968 .word .LANCHOR133 9969 .word .LANCHOR12 9970 .word .LANCHOR149 9971 .word .LANCHOR23 9972 .word .LANCHOR124 9973 .size FtlVendorPartWrite, .-FtlVendorPartWrite 9974 .section .text.Ftl_save_ext_data,"ax",%progbits 9975 .align 1 9976 .global Ftl_save_ext_data 9977 .syntax unified 9978 .thumb 9979 .thumb_func 9980 .fpu softvfp 9981 .type Ftl_save_ext_data, %function 9982Ftl_save_ext_data: 9983 @ args = 0, pretend = 0, frame = 0 9984 @ frame_needed = 0, uses_anonymous_args = 0 9985 @ link register save eliminated. 9986 ldr r2, .L1357 9987 ldr r3, .L1357+4 9988 ldr r1, [r2] 9989 cmp r1, r3 9990 bne .L1355 9991 ldr r3, .L1357+8 9992 movs r1, #1 9993 movs r0, #0 9994 str r3, [r2, #4] 9995 ldr r3, .L1357+12 9996 ldr r3, [r3] 9997 str r3, [r2, #88] 9998 ldr r3, .L1357+16 9999 ldr r3, [r3] 10000 str r3, [r2, #92] 10001 ldr r3, .L1357+20 10002 ldr r3, [r3] 10003 str r3, [r2, #8] 10004 ldr r3, .L1357+24 10005 ldr r3, [r3] 10006 str r3, [r2, #12] 10007 ldr r3, .L1357+28 10008 ldr r3, [r3] 10009 str r3, [r2, #16] 10010 ldr r3, .L1357+32 10011 ldr r3, [r3] 10012 str r3, [r2, #20] 10013 ldr r3, .L1357+36 10014 ldr r3, [r3] 10015 str r3, [r2, #28] 10016 ldr r3, .L1357+40 10017 ldr r3, [r3] 10018 str r3, [r2, #32] 10019 ldr r3, .L1357+44 10020 ldr r3, [r3] 10021 str r3, [r2, #36] 10022 ldr r3, .L1357+48 10023 ldr r3, [r3] 10024 str r3, [r2, #40] 10025 ldr r3, .L1357+52 10026 ldr r3, [r3] 10027 str r3, [r2, #44] 10028 ldr r3, .L1357+56 10029 ldr r3, [r3] 10030 str r3, [r2, #48] 10031 b FtlVendorPartWrite 10032.L1355: 10033 bx lr 10034.L1358: 10035 .align 2 10036.L1357: 10037 .word .LANCHOR81 10038 .word 1179929683 10039 .word 1342177348 10040 .word .LANCHOR68 10041 .word .LANCHOR69 10042 .word .LANCHOR67 10043 .word .LANCHOR64 10044 .word .LANCHOR62 10045 .word .LANCHOR66 10046 .word .LANCHOR73 10047 .word .LANCHOR75 10048 .word .LANCHOR63 10049 .word .LANCHOR65 10050 .word .LANCHOR76 10051 .word .LANCHOR77 10052 .size Ftl_save_ext_data, .-Ftl_save_ext_data 10053 .section .text.FtlEctTblFlush,"ax",%progbits 10054 .align 1 10055 .global FtlEctTblFlush 10056 .syntax unified 10057 .thumb 10058 .thumb_func 10059 .fpu softvfp 10060 .type FtlEctTblFlush, %function 10061FtlEctTblFlush: 10062 @ args = 0, pretend = 0, frame = 0 10063 @ frame_needed = 0, uses_anonymous_args = 0 10064 ldr r2, .L1364 10065 push {r3, lr} 10066 ldrh r3, [r2] 10067 cmp r3, #31 10068 itett ls 10069 addls r3, r3, #1 10070 movhi r3, #32 10071 strhls r3, [r2] @ movhi 10072 movls r3, #1 10073 ldr r2, .L1364+4 10074 cbnz r0, .L1361 10075 ldr r1, [r2] 10076 ldr r0, [r1, #20] 10077 ldr r1, [r1, #16] 10078 add r3, r3, r0 10079 cmp r1, r3 10080 bcc .L1362 10081.L1361: 10082 ldr r2, [r2] 10083 movs r0, #64 10084 ldr r3, [r2, #16] 10085 str r3, [r2, #20] 10086 ldr r3, .L1364+8 10087 str r3, [r2] 10088 ldr r3, .L1364+12 10089 ldrh r1, [r3] 10090 lsls r3, r1, #9 10091 str r3, [r2, #12] 10092 ldr r3, [r2, #8] 10093 adds r3, r3, #1 10094 str r3, [r2, #8] 10095 movs r3, #0 10096 str r3, [r2, #4] 10097 bl FtlVendorPartWrite 10098 bl Ftl_save_ext_data 10099.L1362: 10100 movs r0, #0 10101 pop {r3, pc} 10102.L1365: 10103 .align 2 10104.L1364: 10105 .word .LANCHOR165 10106 .word .LANCHOR127 10107 .word 1112818501 10108 .word .LANCHOR125 10109 .size FtlEctTblFlush, .-FtlEctTblFlush 10110 .section .text.sftl_vendor_write,"ax",%progbits 10111 .align 1 10112 .global sftl_vendor_write 10113 .syntax unified 10114 .thumb 10115 .thumb_func 10116 .fpu softvfp 10117 .type sftl_vendor_write, %function 10118sftl_vendor_write: 10119 @ args = 0, pretend = 0, frame = 0 10120 @ frame_needed = 0, uses_anonymous_args = 0 10121 @ link register save eliminated. 10122 add r0, r0, #256 10123 b FtlVendorPartWrite 10124 .size sftl_vendor_write, .-sftl_vendor_write 10125 .section .text.FtlVendorPartRead,"ax",%progbits 10126 .align 1 10127 .global FtlVendorPartRead 10128 .syntax unified 10129 .thumb 10130 .thumb_func 10131 .fpu softvfp 10132 .type FtlVendorPartRead, %function 10133FtlVendorPartRead: 10134 @ args = 0, pretend = 0, frame = 104 10135 @ frame_needed = 0, uses_anonymous_args = 0 10136 ldr r3, .L1376 10137 push {r4, r5, r6, r7, r8, r10, fp, lr} 10138 mov r8, r2 10139 adds r2, r0, r1 10140 sub sp, sp, #104 10141 mov r6, r0 10142 mov r5, r1 10143 ldrh r3, [r3] 10144 cmp r2, r3 10145 bhi .L1375 10146 ldr r3, .L1376+4 10147 movs r7, #0 10148 ldr fp, .L1376+16 10149 ldrh r3, [r3] 10150 lsr r3, r0, r3 10151 lsls r3, r3, #2 10152 str r3, [sp, #4] 10153.L1369: 10154 cbnz r5, .L1374 10155.L1367: 10156 mov r0, r7 10157 add sp, sp, #104 10158 @ sp needed 10159 pop {r4, r5, r6, r7, r8, r10, fp, pc} 10160.L1374: 10161 ldr r3, .L1376+8 10162 mov r0, r6 10163 ldr r2, [sp, #4] 10164 ldr r3, [r3] 10165 ldr r3, [r3, r2] 10166 ldr r2, .L1376+12 10167 str r3, [sp, #12] 10168 ldrh r4, [r2] 10169 mov r1, r4 10170 bl __aeabi_uidivmod 10171 subs r4, r4, r1 10172 ldr r3, [sp, #12] 10173 uxth r4, r4 10174 str r1, [sp, #8] 10175 cmp r5, r4 10176 it cc 10177 uxthcc r4, r5 10178 lsl r10, r4, #9 10179 cbz r3, .L1371 10180 str r3, [sp, #24] 10181 movs r2, #1 10182 ldr r3, [fp] 10183 mov r1, r2 10184 add r0, sp, #20 10185 str r3, [sp, #28] 10186 add r3, sp, #40 10187 str r3, [sp, #32] 10188 bl FlashReadPages 10189 ldr r3, [sp, #20] 10190 mov r2, r10 10191 ldr r1, [fp] 10192 mov r0, r8 10193 adds r3, r3, #1 10194 ldr r3, [sp, #8] 10195 it eq 10196 moveq r7, #-1 10197 add r1, r1, r3, lsl #9 10198 bl ftl_memcpy 10199.L1373: 10200 ldr r3, [sp, #4] 10201 subs r5, r5, r4 10202 add r6, r6, r4 10203 add r8, r8, r10 10204 adds r3, r3, #4 10205 str r3, [sp, #4] 10206 b .L1369 10207.L1371: 10208 mov r2, r10 10209 mov r1, r3 10210 mov r0, r8 10211 bl ftl_memset 10212 b .L1373 10213.L1375: 10214 mov r7, #-1 10215 b .L1367 10216.L1377: 10217 .align 2 10218.L1376: 10219 .word .LANCHOR16 10220 .word .LANCHOR22 10221 .word .LANCHOR133 10222 .word .LANCHOR12 10223 .word .LANCHOR124 10224 .size FtlVendorPartRead, .-FtlVendorPartRead 10225 .section .text.FtlLoadEctTbl,"ax",%progbits 10226 .align 1 10227 .global FtlLoadEctTbl 10228 .syntax unified 10229 .thumb 10230 .thumb_func 10231 .fpu softvfp 10232 .type FtlLoadEctTbl, %function 10233FtlLoadEctTbl: 10234 @ args = 0, pretend = 0, frame = 0 10235 @ frame_needed = 0, uses_anonymous_args = 0 10236 push {r3, r4, r5, lr} 10237 movs r0, #64 10238 ldr r4, .L1380 10239 ldr r5, .L1380+4 10240 ldr r2, [r4] 10241 ldrh r1, [r5] 10242 bl FtlVendorPartRead 10243 ldr r3, [r4] 10244 ldr r2, [r3] 10245 ldr r3, .L1380+8 10246 cmp r2, r3 10247 beq .L1379 10248 ldr r1, .L1380+12 10249 ldr r0, .L1380+16 10250 bl printf 10251 ldrh r2, [r5] 10252 movs r1, #0 10253 ldr r0, [r4] 10254 lsls r2, r2, #9 10255 bl ftl_memset 10256.L1379: 10257 movs r0, #0 10258 pop {r3, r4, r5, pc} 10259.L1381: 10260 .align 2 10261.L1380: 10262 .word .LANCHOR127 10263 .word .LANCHOR125 10264 .word 1112818501 10265 .word .LC103 10266 .word .LC71 10267 .size FtlLoadEctTbl, .-FtlLoadEctTbl 10268 .section .text.Ftl_load_ext_data,"ax",%progbits 10269 .align 1 10270 .global Ftl_load_ext_data 10271 .syntax unified 10272 .thumb 10273 .thumb_func 10274 .fpu softvfp 10275 .type Ftl_load_ext_data, %function 10276Ftl_load_ext_data: 10277 @ args = 0, pretend = 0, frame = 0 10278 @ frame_needed = 0, uses_anonymous_args = 0 10279 push {r3, r4, r5, lr} 10280 movs r1, #1 10281 ldr r4, .L1385 10282 movs r0, #0 10283 ldr r5, .L1385+4 10284 mov r2, r4 10285 bl FtlVendorPartRead 10286 ldr r3, [r4] 10287 cmp r3, r5 10288 beq .L1383 10289 mov r2, #512 10290 movs r1, #0 10291 mov r0, r4 10292 bl ftl_memset 10293 str r5, [r4] 10294.L1383: 10295 ldr r3, [r4] 10296 cmp r3, r5 10297 ldr r3, .L1385+8 10298 bne .L1384 10299 ldr r1, [r4, #88] 10300 ldr r2, .L1385+12 10301 str r1, [r2] 10302 ldr r1, [r4, #92] 10303 ldr r2, .L1385+16 10304 str r1, [r2] 10305 ldr r1, [r4, #8] 10306 ldr r2, .L1385+20 10307 str r1, [r2] 10308 ldr r1, [r4, #12] 10309 ldr r2, .L1385+24 10310 str r1, [r2] 10311 ldr r1, [r4, #16] 10312 ldr r2, .L1385+28 10313 str r1, [r2] 10314 ldr r1, [r4, #20] 10315 ldr r2, .L1385+32 10316 str r1, [r2] 10317 ldr r2, [r4, #28] 10318 ldr r1, [r4, #32] 10319 str r2, [r3] 10320 ldr r2, .L1385+36 10321 str r1, [r2] 10322 ldr r1, [r4, #36] 10323 ldr r2, .L1385+40 10324 str r1, [r2] 10325 ldr r1, [r4, #40] 10326 ldr r2, .L1385+44 10327 str r1, [r2] 10328 ldr r1, [r4, #44] 10329 ldr r2, .L1385+48 10330 str r1, [r2] 10331 ldr r1, [r4, #48] 10332 ldr r2, .L1385+52 10333 str r1, [r2] 10334.L1384: 10335 ldr r1, .L1385+56 10336 ldr r2, .L1385+60 10337 ldr r3, [r3] 10338 ldr r0, [r1] 10339 ldrh r2, [r2] 10340 ldr r1, .L1385+64 10341 mla r0, r0, r2, r3 10342 ldrh r1, [r1] 10343 bl __aeabi_uidiv 10344 ldr r3, .L1385+68 10345 str r0, [r3] 10346 pop {r3, r4, r5, pc} 10347.L1386: 10348 .align 2 10349.L1385: 10350 .word .LANCHOR81 10351 .word 1179929683 10352 .word .LANCHOR73 10353 .word .LANCHOR68 10354 .word .LANCHOR69 10355 .word .LANCHOR67 10356 .word .LANCHOR64 10357 .word .LANCHOR62 10358 .word .LANCHOR66 10359 .word .LANCHOR75 10360 .word .LANCHOR63 10361 .word .LANCHOR65 10362 .word .LANCHOR76 10363 .word .LANCHOR77 10364 .word .LANCHOR72 10365 .word .LANCHOR14 10366 .word .LANCHOR5 10367 .word .LANCHOR74 10368 .size Ftl_load_ext_data, .-Ftl_load_ext_data 10369 .section .text.sftl_vendor_read,"ax",%progbits 10370 .align 1 10371 .global sftl_vendor_read 10372 .syntax unified 10373 .thumb 10374 .thumb_func 10375 .fpu softvfp 10376 .type sftl_vendor_read, %function 10377sftl_vendor_read: 10378 @ args = 0, pretend = 0, frame = 0 10379 @ frame_needed = 0, uses_anonymous_args = 0 10380 @ link register save eliminated. 10381 add r0, r0, #256 10382 b FtlVendorPartRead 10383 .size sftl_vendor_read, .-sftl_vendor_read 10384 .section .text.FtlVpcTblFlush,"ax",%progbits 10385 .align 1 10386 .global FtlVpcTblFlush 10387 .syntax unified 10388 .thumb 10389 .thumb_func 10390 .fpu softvfp 10391 .type FtlVpcTblFlush, %function 10392FtlVpcTblFlush: 10393 @ args = 0, pretend = 0, frame = 8 10394 @ frame_needed = 0, uses_anonymous_args = 0 10395 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 10396 movs r6, #0 10397 ldr r3, .L1400 10398 movw fp, #65535 10399 ldr r8, .L1400+80 10400 ldr r10, .L1400+84 10401 ldrh r2, [r3] 10402 ldr r0, [r8] 10403 ldr r7, [r10] 10404 ldr r5, .L1400+4 10405 ldr r4, .L1400+8 10406 ldr r1, .L1400+12 10407 str r0, [r5, #8] 10408 str r7, [r5, #12] 10409 strh r2, [r7, #2] @ movhi 10410 movw r2, #61604 10411 strh r2, [r7] @ movhi 10412 ldr r2, [r3, #8] 10413 str r6, [r7, #8] 10414 str r6, [r7, #12] 10415 str r2, [r7, #4] 10416 ldr r2, .L1400+16 10417 str r3, [sp, #4] 10418 stm r4, {r1, r2} 10419 ldrh r2, [r3, #6] 10420 strh r2, [r4, #8] @ movhi 10421 ldr r2, .L1400+20 10422 ldrh r2, [r2] 10423 strb r2, [r4, #10] 10424 ldr r2, .L1400+24 10425 ldrh r1, [r2] 10426 ldrh ip, [r2, #2] 10427 strh r1, [r4, #14] @ movhi 10428 ldrb r1, [r2, #6] @ zero_extendqisi2 10429 ldrb r2, [r2, #8] @ zero_extendqisi2 10430 strb r2, [r4, #11] 10431 orr r1, r1, ip, lsl #6 10432 ldr r2, .L1400+28 10433 strh r1, [r4, #16] @ movhi 10434 ldrh r1, [r2] 10435 ldrh ip, [r2, #2] 10436 strh r1, [r4, #18] @ movhi 10437 ldrb r1, [r2, #6] @ zero_extendqisi2 10438 ldrb r2, [r2, #8] @ zero_extendqisi2 10439 orr r1, r1, ip, lsl #6 10440 strh r1, [r4, #20] @ movhi 10441 strb r2, [r4, #12] 10442 ldr r2, .L1400+32 10443 ldrh r1, [r2] 10444 ldrh ip, [r2, #2] 10445 strh r1, [r4, #22] @ movhi 10446 ldrb r1, [r2, #6] @ zero_extendqisi2 10447 ldrb r2, [r2, #8] @ zero_extendqisi2 10448 strb r2, [r4, #13] 10449 orr r1, r1, ip, lsl #6 10450 ldr r2, .L1400+36 10451 strh r1, [r4, #24] @ movhi 10452 movs r1, #255 10453 ldr r2, [r2] 10454 str r2, [r4, #32] 10455 ldr r2, .L1400+40 10456 ldr r2, [r2] 10457 str r2, [r4, #40] 10458 ldr r2, .L1400+44 10459 ldr r2, [r2] 10460 str r2, [r4, #36] 10461 ldr r2, .L1400+48 10462 ldrh r2, [r2] 10463 bl ftl_memset 10464 mov r1, r4 10465 ldr r4, .L1400+52 10466 movs r2, #48 10467 ldr r0, [r5, #8] 10468 bl ftl_memcpy 10469 ldrh r2, [r4] 10470 ldr r0, [r5, #8] 10471 ldr r1, .L1400+56 10472 lsls r2, r2, #1 10473 adds r0, r0, #48 10474 ldr r1, [r1] 10475 bl ftl_memcpy 10476 ldrh r0, [r4] 10477 ldr r1, .L1400+60 10478 ldr r4, [r5, #8] 10479 lsrs r2, r0, #3 10480 adds r0, r0, #24 10481 lsls r0, r0, #1 10482 ldr r1, [r1] 10483 adds r2, r2, #4 10484 bic r0, r0, #3 10485 add r0, r0, r4 10486 bl ftl_memcpy 10487 mov r0, r6 10488 bl FtlUpdateVaildLpn 10489 ldr r3, [sp, #4] 10490 mov r4, r3 10491.L1389: 10492 ldr r3, [r8] 10493 ldrh r2, [r4] 10494 ldr r0, .L1400+4 10495 str r3, [r5, #8] 10496 ldr r3, [r10] 10497 str r3, [r5, #12] 10498 ldrh r3, [r4, #2] 10499 orr r3, r3, r2, lsl #10 10500 str r3, [r5, #4] 10501 movs r3, #1 10502 mov r2, r3 10503 mov r1, r3 10504 bl FlashProgPages 10505 ldr r3, .L1400+64 10506 ldrh r2, [r4, #2] 10507 ldrh r3, [r3] 10508 subs r3, r3, #1 10509 cmp r2, r3 10510 blt .L1390 10511 ldrh r3, [r4] 10512 ldrh fp, [r4, #4] 10513 strh r3, [r4, #4] @ movhi 10514 movs r3, #0 10515 strh r3, [r4, #2] @ movhi 10516 bl FtlFreeSysBlkQueueOut 10517 ldr r2, .L1400+40 10518 strh r0, [r4] @ movhi 10519 ldr r3, [r2] 10520 adds r1, r3, #1 10521 str r3, [r4, #8] 10522 str r1, [r2] 10523 lsls r2, r0, #10 10524 str r2, [r5, #4] 10525 str r3, [r7, #4] 10526 movs r3, #1 10527 strh r0, [r7, #2] @ movhi 10528 mov r2, r3 10529 mov r1, r3 10530 ldr r0, .L1400+4 10531 bl FlashProgPages 10532.L1390: 10533 ldrh r3, [r4, #2] 10534 ldr r2, [r5] 10535 adds r3, r3, #1 10536 uxth r3, r3 10537 adds r2, r2, #1 10538 strh r3, [r4, #2] @ movhi 10539 bne .L1391 10540 cmp r3, #1 10541 bne .L1392 10542 movw r2, #1124 10543 ldr r1, .L1400+68 10544 ldr r0, .L1400+72 10545 bl printf 10546.L1392: 10547 ldrh r3, [r4, #2] 10548 adds r6, r6, #1 10549 uxth r6, r6 10550 cmp r3, #1 10551 itttt eq 10552 ldreq r3, .L1400+64 10553 ldrheq r3, [r3] 10554 addeq r3, r3, #-1 10555 strheq r3, [r4, #2] @ movhi 10556 cmp r6, #3 10557 bls .L1389 10558 mov r2, r6 10559 ldr r1, [r5, #4] 10560 ldr r0, .L1400+76 10561 bl printf 10562.L1395: 10563 b .L1395 10564.L1391: 10565 cmp r3, #1 10566 beq .L1389 10567 movw r3, #65535 10568 cmp fp, r3 10569 beq .L1396 10570 movs r1, #1 10571 mov r0, fp 10572 bl FtlFreeSysBlkQueueIn 10573.L1396: 10574 movs r0, #0 10575 add sp, sp, #8 10576 @ sp needed 10577 pop {r4, r5, r6, r7, r8, r10, fp, pc} 10578.L1401: 10579 .align 2 10580.L1400: 10581 .word .LANCHOR79 10582 .word .LANCHOR106 10583 .word .LANCHOR39 10584 .word 1179929683 10585 .word 1342177348 10586 .word .LANCHOR10 10587 .word .LANCHOR51 10588 .word .LANCHOR52 10589 .word .LANCHOR53 10590 .word .LANCHOR72 10591 .word .LANCHOR70 10592 .word .LANCHOR71 10593 .word .LANCHOR23 10594 .word .LANCHOR5 10595 .word .LANCHOR42 10596 .word .LANCHOR1 10597 .word .LANCHOR20 10598 .word .LANCHOR166 10599 .word .LC1 10600 .word .LC104 10601 .word .LANCHOR107 10602 .word .LANCHOR108 10603 .size FtlVpcTblFlush, .-FtlVpcTblFlush 10604 .section .text.FtlSysFlush,"ax",%progbits 10605 .align 1 10606 .global FtlSysFlush 10607 .syntax unified 10608 .thumb 10609 .thumb_func 10610 .fpu softvfp 10611 .type FtlSysFlush, %function 10612FtlSysFlush: 10613 @ args = 0, pretend = 0, frame = 0 10614 @ frame_needed = 0, uses_anonymous_args = 0 10615 push {r3, lr} 10616 bl l2p_flush 10617 movs r0, #1 10618 bl FtlEctTblFlush 10619 bl FtlVpcTblFlush 10620 movs r0, #0 10621 pop {r3, pc} 10622 .size FtlSysFlush, .-FtlSysFlush 10623 .section .text.sftl_deinit,"ax",%progbits 10624 .align 1 10625 .global sftl_deinit 10626 .syntax unified 10627 .thumb 10628 .thumb_func 10629 .fpu softvfp 10630 .type sftl_deinit, %function 10631sftl_deinit: 10632 @ args = 0, pretend = 0, frame = 0 10633 @ frame_needed = 0, uses_anonymous_args = 0 10634 push {r3, lr} 10635 ldr r3, .L1405 10636 ldr r3, [r3] 10637 cmp r3, #1 10638 bne .L1404 10639 bl FtlSysFlush 10640.L1404: 10641 movs r0, #0 10642 pop {r3, pc} 10643.L1406: 10644 .align 2 10645.L1405: 10646 .word .LANCHOR86 10647 .size sftl_deinit, .-sftl_deinit 10648 .section .text.FtlDiscard,"ax",%progbits 10649 .align 1 10650 .global FtlDiscard 10651 .syntax unified 10652 .thumb 10653 .thumb_func 10654 .fpu softvfp 10655 .type FtlDiscard, %function 10656FtlDiscard: 10657 @ args = 0, pretend = 0, frame = 8 10658 @ frame_needed = 0, uses_anonymous_args = 0 10659 ldr r3, .L1422 10660 adds r2, r0, r1 10661 push {r0, r1, r4, r5, r6, r7, r8, lr} 10662 mov r7, r0 10663 mov r5, r1 10664 ldr r3, [r3] 10665 cmp r2, r3 10666 bhi .L1415 10667 cmp r1, #31 10668 bhi .L1409 10669.L1414: 10670 movs r0, #0 10671.L1407: 10672 add sp, sp, #8 10673 @ sp needed 10674 pop {r4, r5, r6, r7, r8, pc} 10675.L1409: 10676 ldr r8, .L1422+12 10677 ldrh r4, [r8] 10678 mov r1, r4 10679 bl __aeabi_uidiv 10680 smulbb r3, r0, r4 10681 mov r6, r0 10682 subs r7, r7, r3 10683 uxth r7, r7 10684 cbz r7, .L1410 10685 subs r4, r4, r7 10686 adds r6, r6, #1 10687 cmp r4, r5 10688 it cs 10689 movcs r4, r5 10690 uxth r4, r4 10691 subs r5, r5, r4 10692.L1410: 10693 ldr r4, .L1422+4 10694 mov r3, #-1 10695 ldr r7, .L1422+8 10696 str r3, [sp, #4] 10697.L1411: 10698 ldrh r3, [r8] 10699 cmp r5, r3 10700 bcs .L1413 10701 ldr r3, .L1422+4 10702 ldr r2, [r3] 10703 cmp r2, #32 10704 bls .L1414 10705 movs r4, #0 10706 str r4, [r3] 10707 bl l2p_flush 10708 bl FtlVpcTblFlush 10709 b .L1414 10710.L1413: 10711 movs r2, #0 10712 mov r1, sp 10713 mov r0, r6 10714 bl log2phys 10715 ldr r3, [sp] 10716 adds r3, r3, #1 10717 beq .L1412 10718 ldr r3, [r4] 10719 movs r2, #1 10720 add r1, sp, #4 10721 mov r0, r6 10722 adds r3, r3, #1 10723 str r3, [r4] 10724 ldr r3, [r7] 10725 adds r3, r3, #1 10726 str r3, [r7] 10727 bl log2phys 10728 ldr r0, [sp] 10729 ubfx r0, r0, #10, #16 10730 bl P2V_block_in_plane 10731 bl decrement_vpc_count 10732.L1412: 10733 ldrh r3, [r8] 10734 adds r6, r6, #1 10735 subs r5, r5, r3 10736 b .L1411 10737.L1415: 10738 mov r0, #-1 10739 b .L1407 10740.L1423: 10741 .align 2 10742.L1422: 10743 .word .LANCHOR34 10744 .word .LANCHOR167 10745 .word .LANCHOR63 10746 .word .LANCHOR12 10747 .size FtlDiscard, .-FtlDiscard 10748 .section .text.FtlVpcCheckAndModify,"ax",%progbits 10749 .align 1 10750 .global FtlVpcCheckAndModify 10751 .syntax unified 10752 .thumb 10753 .thumb_func 10754 .fpu softvfp 10755 .type FtlVpcCheckAndModify, %function 10756FtlVpcCheckAndModify: 10757 @ args = 0, pretend = 0, frame = 8 10758 @ frame_needed = 0, uses_anonymous_args = 0 10759 push {r0, r1, r2, r4, r5, r6, r7, r8, r10, lr} 10760 movs r5, #0 10761 ldr r1, .L1436 10762 ldr r0, .L1436+4 10763 bl printf 10764 ldr r3, .L1436+8 10765 movs r1, #0 10766 ldr r4, .L1436+12 10767 ldr r6, .L1436+16 10768 ldrh r2, [r3] 10769 ldr r0, [r4] 10770 lsls r2, r2, #1 10771 bl ftl_memset 10772.L1425: 10773 ldr r3, [r6] 10774 cmp r5, r3 10775 bcc .L1427 10776 ldr r10, .L1436+36 10777 movs r7, #0 10778 ldr r8, .L1436+40 10779.L1428: 10780 ldrh r3, [r10] 10781 uxth r5, r7 10782 cmp r3, r5 10783 bhi .L1432 10784 add sp, sp, #12 10785 @ sp needed 10786 pop {r4, r5, r6, r7, r8, r10, pc} 10787.L1427: 10788 movs r2, #0 10789 add r1, sp, #4 10790 mov r0, r5 10791 bl log2phys 10792 ldr r0, [sp, #4] 10793 adds r3, r0, #1 10794 beq .L1426 10795 ubfx r0, r0, #10, #16 10796 bl P2V_block_in_plane 10797 ldr r2, [r4] 10798 ldrh r3, [r2, r0, lsl #1] 10799 adds r3, r3, #1 10800 strh r3, [r2, r0, lsl #1] @ movhi 10801.L1426: 10802 adds r5, r5, #1 10803 b .L1425 10804.L1432: 10805 ldr r3, [r8] 10806 uxth r6, r7 10807 ldrh r2, [r3, r6, lsl #1] 10808 ldr r3, [r4] 10809 ldrh r3, [r3, r6, lsl #1] 10810 cmp r2, r3 10811 beq .L1430 10812 movw r1, #65535 10813 cmp r2, r1 10814 beq .L1430 10815 mov r1, r6 10816 ldr r0, .L1436+20 10817 bl printf 10818 ldr r3, .L1436+24 10819 ldrh r3, [r3] 10820 cmp r3, r5 10821 beq .L1430 10822 ldr r3, .L1436+28 10823 ldrh r3, [r3] 10824 cmp r3, r5 10825 beq .L1430 10826 ldr r3, .L1436+32 10827 ldrh r3, [r3] 10828 cmp r3, r5 10829 beq .L1430 10830 ldr r3, [r4] 10831 mov r0, r5 10832 ldrh r2, [r3, r6, lsl #1] 10833 ldr r3, [r8] 10834 strh r2, [r3, r6, lsl #1] @ movhi 10835 bl update_vpc_list 10836 bl l2p_flush 10837 bl FtlVpcTblFlush 10838.L1430: 10839 adds r7, r7, #1 10840 b .L1428 10841.L1437: 10842 .align 2 10843.L1436: 10844 .word .LANCHOR168 10845 .word .LC94 10846 .word .LANCHOR6 10847 .word .LANCHOR128 10848 .word .LANCHOR61 10849 .word .LC105 10850 .word .LANCHOR51 10851 .word .LANCHOR53 10852 .word .LANCHOR52 10853 .word .LANCHOR5 10854 .word .LANCHOR42 10855 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify 10856 .section .text.allocate_new_data_superblock,"ax",%progbits 10857 .align 1 10858 .global allocate_new_data_superblock 10859 .syntax unified 10860 .thumb 10861 .thumb_func 10862 .fpu softvfp 10863 .type allocate_new_data_superblock, %function 10864allocate_new_data_superblock: 10865 @ args = 0, pretend = 0, frame = 0 10866 @ frame_needed = 0, uses_anonymous_args = 0 10867 ldr r3, .L1448 10868 push {r4, r5, r6, lr} 10869 mov r6, r0 10870 ldrh r4, [r0] 10871 ldrh r3, [r3] 10872 cmp r3, r4 10873 bcs .L1439 10874 movw r2, #2684 10875 ldr r1, .L1448+4 10876 ldr r0, .L1448+8 10877 bl printf 10878.L1439: 10879 movw r3, #65535 10880 cmp r4, r3 10881 beq .L1440 10882 ldr r3, .L1448+12 10883 mov r0, r4 10884 ldr r3, [r3] 10885 ldrh r3, [r3, r4, lsl #1] 10886 cbz r3, .L1441 10887 bl INSERT_DATA_LIST 10888.L1440: 10889 ldr r5, .L1448+16 10890 movw r2, #65535 10891 movs r3, #1 10892 strb r3, [r6, #8] 10893 ldrh r0, [r5] 10894 cmp r0, r2 10895 beq .L1442 10896 cmp r4, r0 10897 bne .L1443 10898 ldr r3, .L1448+12 10899 ldr r3, [r3] 10900 ldrh r3, [r3, r0, lsl #1] 10901 cbz r3, .L1444 10902.L1443: 10903 bl update_vpc_list 10904.L1444: 10905 movw r3, #65535 10906 strh r3, [r5] @ movhi 10907.L1442: 10908 mov r0, r6 10909 bl allocate_data_superblock 10910 bl l2p_flush 10911 movs r0, #0 10912 bl FtlEctTblFlush 10913 bl FtlVpcTblFlush 10914 movs r0, #0 10915 pop {r4, r5, r6, pc} 10916.L1441: 10917 bl INSERT_FREE_LIST 10918 b .L1440 10919.L1449: 10920 .align 2 10921.L1448: 10922 .word .LANCHOR5 10923 .word .LANCHOR169 10924 .word .LC1 10925 .word .LANCHOR42 10926 .word .LANCHOR150 10927 .size allocate_new_data_superblock, .-allocate_new_data_superblock 10928 .section .text.FtlProgPages,"ax",%progbits 10929 .align 1 10930 .global FtlProgPages 10931 .syntax unified 10932 .thumb 10933 .thumb_func 10934 .fpu softvfp 10935 .type FtlProgPages, %function 10936FtlProgPages: 10937 @ args = 0, pretend = 0, frame = 8 10938 @ frame_needed = 0, uses_anonymous_args = 0 10939 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 10940 movs r6, #0 10941 ldr r8, .L1464+24 10942 mov r4, r3 10943 movs r2, #0 10944 mov r5, r0 10945 ldrb r3, [r3, #9] @ zero_extendqisi2 10946 mov r10, r1 10947 bl FlashProgPages 10948.L1451: 10949 cmp r6, r10 10950 beq .L1458 10951 ldr r7, .L1464 10952 b .L1459 10953.L1454: 10954 ldr r0, [r5, #4] 10955 ubfx r0, r0, #10, #16 10956 bl P2V_block_in_plane 10957 ldrh r3, [r4] 10958 cmp r3, r0 10959 bne .L1452 10960 ldr r1, [r8] 10961 ldrh r0, [r4, #4] 10962 ldrh r2, [r1, r3, lsl #1] 10963 subs r2, r2, r0 10964 strh r2, [r1, r3, lsl #1] @ movhi 10965 ldrh r3, [r7] 10966 strh r3, [r4, #2] @ movhi 10967 movs r3, #0 10968 strb r3, [r4, #6] 10969 strh r3, [r4, #4] @ movhi 10970.L1452: 10971 ldrh r3, [r4, #4] 10972 cbnz r3, .L1453 10973 mov r0, r4 10974 bl allocate_new_data_superblock 10975.L1453: 10976 ldr r2, .L1464+4 10977 ldr r3, [r2, #96] 10978 adds r3, r3, #1 10979 str r3, [r2, #96] 10980 ldr r0, [r5, #4] 10981 ubfx r0, r0, #10, #16 10982 bl FtlGcMarkBadPhyBlk 10983 mov r0, r4 10984 bl get_new_active_ppa 10985 movs r2, #0 10986 str r0, [r5, #4] 10987 str r0, [sp, #4] 10988 movs r1, #1 10989 ldrb r3, [r4, #9] @ zero_extendqisi2 10990 mov r0, r5 10991 bl FlashProgPages 10992.L1459: 10993 ldr r3, [r5] 10994 adds r3, r3, #1 10995 beq .L1454 10996 ldr r3, .L1464+8 10997 ldrb r2, [r4, #6] @ zero_extendqisi2 10998 ldrh r3, [r3] 10999 cmp r2, r3 11000 bcc .L1455 11001 movw r2, #933 11002 ldr r1, .L1464+12 11003 ldr r0, .L1464+16 11004 bl printf 11005.L1455: 11006 ldr r3, [r5, #4] 11007 add r1, sp, #8 11008 movs r2, #1 11009 ldr r0, [r5, #16] 11010 str r3, [r1, #-4]! 11011 bl log2phys 11012 ldr r3, [r5, #12] 11013 ldr fp, [r3, #12] 11014 ubfx r0, fp, #10, #16 11015 bl P2V_block_in_plane 11016 cmp fp, #-1 11017 mov r7, r0 11018 beq .L1456 11019 ldr r3, [r8] 11020 ldrh r2, [r3, r0, lsl #1] 11021 cbnz r2, .L1457 11022 mov r1, r0 11023 ldr r0, .L1464+20 11024 bl printf 11025.L1457: 11026 mov r0, r7 11027 bl decrement_vpc_count 11028.L1456: 11029 adds r6, r6, #1 11030 adds r5, r5, #20 11031 b .L1451 11032.L1458: 11033 ldr r3, .L1464+8 11034 ldrb r2, [r4, #6] @ zero_extendqisi2 11035 ldrh r3, [r3] 11036 cmp r2, r3 11037 bcc .L1450 11038 mov r2, #948 11039 ldr r1, .L1464+12 11040 ldr r0, .L1464+16 11041 bl printf 11042.L1450: 11043 add sp, sp, #8 11044 @ sp needed 11045 pop {r4, r5, r6, r7, r8, r10, fp, pc} 11046.L1465: 11047 .align 2 11048.L1464: 11049 .word .LANCHOR19 11050 .word .LANCHOR81 11051 .word .LANCHOR3 11052 .word .LANCHOR170 11053 .word .LC1 11054 .word .LC106 11055 .word .LANCHOR42 11056 .size FtlProgPages, .-FtlProgPages 11057 .section .text.FtlGcFreeTempBlock,"ax",%progbits 11058 .align 1 11059 .global FtlGcFreeTempBlock 11060 .syntax unified 11061 .thumb 11062 .thumb_func 11063 .fpu softvfp 11064 .type FtlGcFreeTempBlock, %function 11065FtlGcFreeTempBlock: 11066 @ args = 0, pretend = 0, frame = 16 11067 @ frame_needed = 0, uses_anonymous_args = 0 11068 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 11069 movw r2, #65535 11070 ldr r4, .L1492 11071 ldr r6, .L1492+4 11072 ldrh r5, [r4] 11073 ldrh r1, [r6] 11074 cmp r5, r2 11075 bne .L1467 11076.L1477: 11077 ldr r3, .L1492+8 11078 movs r2, #0 11079 str r2, [r3] 11080 movw r3, #65535 11081 ldrh r2, [r4] 11082 cmp r2, r3 11083 bne .L1490 11084.L1468: 11085 movs r0, #0 11086.L1466: 11087 add sp, sp, #16 11088 @ sp needed 11089 pop {r4, r5, r6, r7, r8, r10, fp, pc} 11090.L1467: 11091 cbz r0, .L1470 11092 ldr r3, .L1492+12 11093 ldrh r0, [r3] 11094 cmp r0, r2 11095 beq .L1471 11096.L1472: 11097 movs r1, #2 11098.L1470: 11099 ldr r0, .L1492 11100 bl FtlGcScanTempBlk 11101 str r0, [sp, #12] 11102 adds r0, r0, #1 11103 beq .L1473 11104 ldr r3, .L1492+16 11105 ldr r2, [r3] 11106 ldrh r3, [r2, r5, lsl #1] 11107 cmp r3, #4 11108 bls .L1474 11109 subs r3, r3, #5 11110 movs r0, #1 11111 strh r3, [r2, r5, lsl #1] @ movhi 11112 bl FtlEctTblFlush 11113.L1474: 11114 ldr r4, .L1492+8 11115 ldr r2, [r4] 11116 cbnz r2, .L1475 11117 ldr r2, .L1492+20 11118 ldr r0, [sp, #12] 11119 ldr r3, [r2, #96] 11120 ubfx r0, r0, #10, #16 11121 adds r3, r3, #1 11122 str r3, [r2, #96] 11123 bl FtlBbmMapBadBlock 11124 bl FtlBbmTblFlush 11125.L1475: 11126 movs r3, #0 11127 str r3, [r4] 11128.L1486: 11129 movs r0, #1 11130 b .L1466 11131.L1471: 11132 movs r2, #0 11133 strh r2, [r3] @ movhi 11134 ldr r3, .L1492+24 11135 ldrh r3, [r3] 11136 cmp r3, #17 11137 bhi .L1472 11138 b .L1470 11139.L1473: 11140 ldr r3, .L1492+12 11141 ldrh r2, [r3] 11142 movw r3, #65535 11143 cmp r2, r3 11144 bne .L1486 11145 b .L1477 11146.L1490: 11147 ldrb r1, [r4, #7] @ zero_extendqisi2 11148 ldrh r3, [r6] 11149 ldr r5, .L1492+28 11150 muls r3, r1, r3 11151 ldrh r2, [r5] 11152 cmp r2, r3 11153 beq .L1478 11154 movs r2, #162 11155 ldr r1, .L1492+32 11156 ldr r0, .L1492+36 11157 bl printf 11158.L1478: 11159 ldrh r6, [r6] 11160 ldrb r3, [r4, #7] @ zero_extendqisi2 11161 ldr r2, .L1492+40 11162 ldrh r0, [r4] 11163 ldr fp, .L1492+68 11164 smulbb r3, r3, r6 11165 ldr r1, [r2] 11166 movs r6, #0 11167 str r2, [sp, #4] 11168 strh r3, [r1, r0, lsl #1] @ movhi 11169 ldr r1, .L1492+44 11170 ldrh r3, [r5] 11171 ldr r0, [r1] 11172 add r3, r3, r0 11173 str r3, [r1] 11174.L1479: 11175 ldrh r2, [r5] 11176 uxth r3, r6 11177 cmp r2, r3 11178 bhi .L1483 11179 movw r0, #65535 11180 bl decrement_vpc_count 11181 ldr r3, [sp, #4] 11182 ldrh r0, [r4] 11183 ldr r3, [r3] 11184 ldrh r3, [r3, r0, lsl #1] 11185 cmp r3, #0 11186 beq .L1484 11187 bl INSERT_DATA_LIST 11188.L1485: 11189 ldr r3, .L1492+48 11190 movw r6, #65535 11191 strh r6, [r4] @ movhi 11192 movs r4, #0 11193 strh r4, [r5] @ movhi 11194 strh r4, [r3] @ movhi 11195 bl l2p_flush 11196 bl FtlVpcTblFlush 11197 ldr r3, .L1492+24 11198 ldrh r2, [r3] 11199 ldr r3, .L1492+52 11200 ldrh r3, [r3] 11201 add r3, r3, r3, lsl #1 11202 cmp r2, r3, asr #2 11203 ble .L1468 11204 ldr r3, .L1492+56 11205 movs r2, #20 11206 strh r6, [r3] @ movhi 11207 ldr r3, .L1492+60 11208 strh r2, [r3] @ movhi 11209 b .L1468 11210.L1483: 11211 uxth r3, r6 11212 movs r7, #12 11213 ldr r2, [fp] 11214 muls r7, r3, r7 11215 ldr r3, .L1492+64 11216 ldr r8, [r3] 11217 add r10, r8, r7 11218 ldr r1, [r10, #8] 11219 cmp r1, r2 11220 bcc .L1480 11221 movs r2, #168 11222 ldr r1, .L1492+32 11223 ldr r0, .L1492+36 11224 bl printf 11225.L1480: 11226 movs r2, #0 11227 add r1, sp, #12 11228 ldr r0, [r10, #8] 11229 bl log2phys 11230 ldr r2, [sp, #12] 11231 ldr r0, [r8, r7] 11232 cmp r0, r2 11233 bne .L1481 11234 ubfx r0, r0, #10, #16 11235 bl P2V_block_in_plane 11236 movs r2, #1 11237 mov r7, r0 11238 add r1, r10, #4 11239 ldr r0, [r10, #8] 11240 bl log2phys 11241 mov r0, r7 11242.L1491: 11243 bl decrement_vpc_count 11244.L1482: 11245 adds r6, r6, #1 11246 b .L1479 11247.L1481: 11248 ldr r3, [r10, #4] 11249 cmp r2, r3 11250 beq .L1482 11251 ldrh r0, [r4] 11252 b .L1491 11253.L1484: 11254 bl INSERT_FREE_LIST 11255 b .L1485 11256.L1493: 11257 .align 2 11258.L1492: 11259 .word .LANCHOR53 11260 .word .LANCHOR19 11261 .word .LANCHOR152 11262 .word .LANCHOR156 11263 .word .LANCHOR43 11264 .word .LANCHOR81 11265 .word .LANCHOR48 11266 .word .LANCHOR97 11267 .word .LANCHOR171 11268 .word .LC1 11269 .word .LANCHOR42 11270 .word .LANCHOR67 11271 .word .LANCHOR96 11272 .word .LANCHOR78 11273 .word .LANCHOR80 11274 .word .LANCHOR82 11275 .word .LANCHOR98 11276 .word .LANCHOR61 11277 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock 11278 .section .text.FtlGcPageRecovery,"ax",%progbits 11279 .align 1 11280 .global FtlGcPageRecovery 11281 .syntax unified 11282 .thumb 11283 .thumb_func 11284 .fpu softvfp 11285 .type FtlGcPageRecovery, %function 11286FtlGcPageRecovery: 11287 @ args = 0, pretend = 0, frame = 0 11288 @ frame_needed = 0, uses_anonymous_args = 0 11289 push {r3, r4, r5, lr} 11290 ldr r4, .L1496 11291 ldr r5, .L1496+4 11292 ldrh r1, [r4] 11293 mov r0, r5 11294 bl FtlGcScanTempBlk 11295 ldrh r2, [r5, #2] 11296 ldrh r3, [r4] 11297 cmp r2, r3 11298 bcc .L1494 11299 ldr r0, .L1496+8 11300 bl FtlMapBlkWriteDump_data 11301 movs r0, #0 11302 bl FtlGcFreeTempBlock 11303 ldr r3, .L1496+12 11304 movs r2, #0 11305 str r2, [r3] 11306.L1494: 11307 pop {r3, r4, r5, pc} 11308.L1497: 11309 .align 2 11310.L1496: 11311 .word .LANCHOR19 11312 .word .LANCHOR53 11313 .word .LANCHOR144 11314 .word .LANCHOR152 11315 .size FtlGcPageRecovery, .-FtlGcPageRecovery 11316 .section .text.FtlPowerLostRecovery,"ax",%progbits 11317 .align 1 11318 .global FtlPowerLostRecovery 11319 .syntax unified 11320 .thumb 11321 .thumb_func 11322 .fpu softvfp 11323 .type FtlPowerLostRecovery, %function 11324FtlPowerLostRecovery: 11325 @ args = 0, pretend = 0, frame = 0 11326 @ frame_needed = 0, uses_anonymous_args = 0 11327 push {r3, r4, r5, lr} 11328 movs r4, #0 11329 ldr r5, .L1499 11330 ldr r3, .L1499+4 11331 mov r0, r5 11332 str r4, [r3] 11333 bl FtlRecoverySuperblock 11334 mov r0, r5 11335 ldr r5, .L1499+8 11336 bl FtlSlcSuperblockCheck 11337 mov r0, r5 11338 bl FtlRecoverySuperblock 11339 mov r0, r5 11340 bl FtlSlcSuperblockCheck 11341 bl FtlGcPageRecovery 11342 movw r0, #65535 11343 bl decrement_vpc_count 11344 mov r0, r4 11345 pop {r3, r4, r5, pc} 11346.L1500: 11347 .align 2 11348.L1499: 11349 .word .LANCHOR51 11350 .word .LANCHOR162 11351 .word .LANCHOR52 11352 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery 11353 .section .text.Ftl_gc_temp_data_write_back,"ax",%progbits 11354 .align 1 11355 .global Ftl_gc_temp_data_write_back 11356 .syntax unified 11357 .thumb 11358 .thumb_func 11359 .fpu softvfp 11360 .type Ftl_gc_temp_data_write_back, %function 11361Ftl_gc_temp_data_write_back: 11362 @ args = 0, pretend = 0, frame = 0 11363 @ frame_needed = 0, uses_anonymous_args = 0 11364 push {r3, r4, r5, r6, r7, lr} 11365 movs r3, #0 11366 ldr r4, .L1508 11367 movs r6, #0 11368 movs r7, #20 11369 mov r2, r3 11370 ldr r5, .L1508+4 11371 ldr r1, [r4] 11372 ldr r0, [r5] 11373 bl FlashProgPages 11374.L1502: 11375 ldr r1, [r4] 11376 uxth r3, r6 11377 cmp r1, r3 11378 bhi .L1505 11379 ldr r0, [r5] 11380 bl FtlGcBufFree 11381 ldr r3, .L1508+8 11382 movs r0, #0 11383 str r0, [r4] 11384 ldrh r3, [r3, #4] 11385 cbnz r3, .L1501 11386 movs r0, #1 11387 bl FtlGcFreeTempBlock 11388 b .L1507 11389.L1505: 11390 muls r3, r7, r3 11391 ldr r2, [r5] 11392 adds r6, r6, #1 11393 adds r1, r2, r3 11394 ldr r2, [r2, r3] 11395 adds r3, r2, #1 11396 bne .L1503 11397 ldr r3, .L1508+8 11398 movs r5, #0 11399 ldr r0, .L1508+12 11400 ldrh r4, [r3] 11401 ldr r0, [r0] 11402 strh r5, [r0, r4, lsl #1] @ movhi 11403 strh r2, [r3] @ movhi 11404 ldr r2, .L1508+16 11405 ldr r0, [r1, #4] 11406 ldr r3, [r2, #96] 11407 ubfx r0, r0, #10, #16 11408 adds r3, r3, #1 11409 str r3, [r2, #96] 11410 bl FtlBbmMapBadBlock 11411 bl FtlBbmTblFlush 11412 bl FtlGcPageVarInit 11413.L1507: 11414 movs r0, #1 11415.L1501: 11416 pop {r3, r4, r5, r6, r7, pc} 11417.L1503: 11418 ldr r3, [r1, #12] 11419 ldr r1, [r1, #4] 11420 ldr r2, [r3, #8] 11421 ldr r0, [r3, #12] 11422 bl FtlGcUpdatePage 11423 b .L1502 11424.L1509: 11425 .align 2 11426.L1508: 11427 .word .LANCHOR89 11428 .word .LANCHOR121 11429 .word .LANCHOR53 11430 .word .LANCHOR42 11431 .word .LANCHOR81 11432 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back 11433 .section .text.Ftl_get_new_temp_ppa,"ax",%progbits 11434 .align 1 11435 .global Ftl_get_new_temp_ppa 11436 .syntax unified 11437 .thumb 11438 .thumb_func 11439 .fpu softvfp 11440 .type Ftl_get_new_temp_ppa, %function 11441Ftl_get_new_temp_ppa: 11442 @ args = 0, pretend = 0, frame = 0 11443 @ frame_needed = 0, uses_anonymous_args = 0 11444 push {r3, r4, r5, lr} 11445 movw r3, #65535 11446 ldr r4, .L1513 11447 ldrh r2, [r4] 11448 cmp r2, r3 11449 beq .L1511 11450 ldrh r3, [r4, #4] 11451 cbnz r3, .L1512 11452.L1511: 11453 movs r0, #0 11454 movs r5, #0 11455 bl FtlGcFreeTempBlock 11456 ldr r0, .L1513 11457 strb r5, [r4, #8] 11458 bl allocate_data_superblock 11459 ldr r3, .L1513+4 11460 strh r5, [r3] @ movhi 11461 ldr r3, .L1513+8 11462 strh r5, [r3] @ movhi 11463 bl l2p_flush 11464 mov r0, r5 11465 bl FtlEctTblFlush 11466 bl FtlVpcTblFlush 11467.L1512: 11468 ldr r0, .L1513 11469 pop {r3, r4, r5, lr} 11470 b get_new_active_ppa 11471.L1514: 11472 .align 2 11473.L1513: 11474 .word .LANCHOR53 11475 .word .LANCHOR96 11476 .word .LANCHOR97 11477 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa 11478 .section .text.rk_ftl_garbage_collect,"ax",%progbits 11479 .align 1 11480 .global rk_ftl_garbage_collect 11481 .syntax unified 11482 .thumb 11483 .thumb_func 11484 .fpu softvfp 11485 .type rk_ftl_garbage_collect, %function 11486rk_ftl_garbage_collect: 11487 @ args = 0, pretend = 0, frame = 40 11488 @ frame_needed = 0, uses_anonymous_args = 0 11489 ldr r3, .L1633 11490 push {r4, r5, r6, r7, r8, r10, fp, lr} 11491 mov r7, r0 11492 sub sp, sp, #48 11493 ldr r0, [r3] 11494 cmp r0, #0 11495 bne .L1590 11496 ldr r3, .L1633+4 11497 ldrh r3, [r3] 11498 cmp r3, #47 11499 bls .L1515 11500 ldr r3, .L1633+8 11501 ldrh r2, [r3] 11502 movw r3, #65535 11503 cmp r2, r3 11504 bne .L1517 11505.L1520: 11506 ldr r3, .L1633+12 11507 movw r4, #65535 11508 ldrh r0, [r3] 11509 cmp r0, r4 11510 bne .L1518 11511.L1519: 11512 ldr r2, .L1633+16 11513 movw r5, #65535 11514 ldr r6, .L1633+20 11515 ldr r3, [r2] 11516 ldrh r0, [r6] 11517 adds r3, r3, #1 11518 add r3, r3, r7, lsl #7 11519 cmp r0, r5 11520 str r3, [r2] 11521 bne .L1521 11522 ldr r1, .L1633+24 11523 ldrh r1, [r1] 11524 cmp r1, r0 11525 bne .L1522 11526 ldr r0, .L1633+28 11527 ldrh r10, [r0] 11528 cmp r10, r1 11529 bne .L1523 11530 ldr r1, .L1633+32 11531 ldrh r0, [r1] 11532 mov r8, r1 11533 cmp r0, #24 11534 ite cc 11535 movcc r1, #5120 11536 movcs r1, #1024 11537 cmp r3, r1 11538 bls .L1523 11539 ldr r3, .L1633+36 11540 movs r4, #0 11541 str r4, [r2] 11542 strh r4, [r3] @ movhi 11543 bl GetSwlReplaceBlock 11544 cmp r0, r10 11545 mov r5, r0 11546 bne .L1594 11547 ldr r10, .L1633+96 11548 ldrh r2, [r8] 11549 ldrh r3, [r10] 11550 cmp r2, r3 11551 bcs .L1526 11552 movs r0, #64 11553 bl List_get_gc_head_node 11554 uxth r3, r0 11555 cmp r3, r5 11556 beq .L1528 11557 mov r0, r3 11558 ldr r3, .L1633+40 11559 ldr r3, [r3] 11560 ldrh r3, [r3, r0, lsl #1] 11561 cmp r3, #7 11562 bhi .L1529 11563 mov r0, r4 11564 bl List_get_gc_head_node 11565 uxth r4, r0 11566 movs r3, #128 11567 strh r3, [r10] @ movhi 11568 cmp r4, r5 11569 bne .L1525 11570.L1528: 11571 bl FtlGcReFreshBadBlk 11572 cmp r7, #0 11573 bne .L1531 11574 movw r3, #65535 11575 cmp r5, r3 11576 bne .L1531 11577.L1588: 11578 ldr r3, .L1633+32 11579 ldrh r3, [r3] 11580 cmp r3, #24 11581 bhi .L1595 11582 ldr r2, .L1633+44 11583 cmp r3, #16 11584 ldrh r4, [r2] 11585 bls .L1533 11586 lsrs r4, r4, #5 11587.L1532: 11588 ldr r2, .L1633+48 11589 ldrh r1, [r2] 11590 cmp r1, r3 11591 mov r1, r2 11592 bcs .L1536 11593 ldr r3, .L1633+24 11594 movw r0, #65535 11595 ldrh r3, [r3] 11596 cmp r3, r0 11597 bne .L1537 11598 ldr r0, .L1633+28 11599 ldrh r0, [r0] 11600 cmp r0, r3 11601 bne .L1537 11602 ldr r3, .L1633+36 11603 ldrh r0, [r3] 11604 cbnz r0, .L1538 11605 ldr r3, .L1633+52 11606 ldr r4, .L1633+56 11607 ldr r3, [r3] 11608 ldr r4, [r4] 11609 add r3, r3, r3, lsl #1 11610 cmp r4, r3, lsr #2 11611 bcs .L1539 11612.L1538: 11613 ldr r3, .L1633+60 11614 ldrh r3, [r3] 11615 add r3, r3, r3, lsl #1 11616 asrs r3, r3, #2 11617 strh r3, [r1] @ movhi 11618.L1540: 11619 ldr r3, .L1633+64 11620 movs r2, #0 11621 str r2, [r3] 11622.L1515: 11623 add sp, sp, #48 11624 @ sp needed 11625 pop {r4, r5, r6, r7, r8, r10, fp, pc} 11626.L1517: 11627 ldr r2, .L1633+24 11628 ldrh r2, [r2] 11629 cmp r2, r3 11630 beq .L1520 11631 movs r0, #1 11632 bl FtlGcFreeTempBlock 11633 cmp r0, #0 11634 beq .L1520 11635 movs r0, #1 11636 b .L1515 11637.L1518: 11638 ldr r1, .L1633+28 11639 ldrh r2, [r1] 11640 cmp r2, r4 11641 itt eq 11642 strheq r0, [r1] @ movhi 11643 strheq r2, [r3] @ movhi 11644 b .L1519 11645.L1529: 11646 movs r3, #64 11647.L1627: 11648 strh r3, [r10] @ movhi 11649 b .L1528 11650.L1526: 11651 movs r3, #80 11652 b .L1627 11653.L1594: 11654 mov r4, r0 11655.L1525: 11656 ldr r3, .L1633+40 11657 mov r5, r4 11658 ldr r1, .L1633+48 11659 ldrh r2, [r8] 11660 ldr r3, [r3] 11661 ldrh r1, [r1] 11662 ldr r0, .L1633+68 11663 ldrh r3, [r3, r4, lsl #1] 11664 str r1, [sp, #4] 11665 ldr r1, .L1633+72 11666 ldr r1, [r1] 11667 ldrh r1, [r1, r4, lsl #1] 11668 str r1, [sp] 11669 mov r1, r4 11670 bl printf 11671 b .L1528 11672.L1533: 11673 cmp r3, #12 11674 bls .L1534 11675 lsrs r4, r4, #4 11676 b .L1532 11677.L1534: 11678 cmp r3, #8 11679 bls .L1532 11680 lsrs r4, r4, #2 11681 b .L1532 11682.L1595: 11683 movs r4, #1 11684 b .L1532 11685.L1539: 11686 movs r3, #18 11687 strh r3, [r2] @ movhi 11688 b .L1540 11689.L1537: 11690 ldr r3, .L1633+60 11691 ldrh r3, [r3] 11692 add r3, r3, r3, lsl #1 11693 asrs r3, r3, #2 11694 strh r3, [r1] @ movhi 11695.L1536: 11696 ldr r3, .L1633+76 11697 ldrh r3, [r3] 11698 cbz r3, .L1596 11699 adds r4, r4, #32 11700 uxth r4, r4 11701.L1596: 11702 movw r5, #65535 11703.L1542: 11704 ldrh r3, [r6] 11705 movw r2, #65535 11706 cmp r3, r2 11707 bne .L1551 11708 cmp r5, r3 11709 beq .L1552 11710 strh r5, [r6] @ movhi 11711.L1553: 11712 ldrh r0, [r6] 11713 movw r7, #65535 11714 movs r3, #0 11715 strb r3, [r6, #8] 11716 cmp r0, r7 11717 beq .L1551 11718 bl IsBlkInGcList 11719 cbz r0, .L1556 11720 strh r7, [r6] @ movhi 11721.L1556: 11722 ldrh r2, [r6] 11723 movw r3, #65535 11724 cmp r2, r3 11725 beq .L1551 11726 ldr r0, .L1633+20 11727 bl make_superblock 11728 ldr r2, .L1633+80 11729 movs r3, #0 11730 strh r3, [r6, #2] @ movhi 11731 strb r3, [r6, #6] 11732 strh r3, [r2] @ movhi 11733 ldr r3, .L1633+40 11734 ldrh r2, [r6] 11735 ldr r3, [r3] 11736 ldrh r2, [r3, r2, lsl #1] 11737 ldr r3, .L1633+84 11738 strh r2, [r3] @ movhi 11739.L1551: 11740 ldr r2, .L1633+88 11741 ldrh r3, [r6] 11742 ldrh r2, [r2] 11743 cmp r2, r3 11744 beq .L1557 11745 ldr r2, .L1633+92 11746 ldrh r2, [r2] 11747 cmp r2, r3 11748 beq .L1557 11749 ldr r6, .L1633+20 11750 mov fp, r6 11751.L1558: 11752 ldrh r2, [r6] 11753 movw r3, #65535 11754 cmp r2, r3 11755 bne .L1559 11756 ldr r8, .L1633+100 11757 movs r2, #0 11758 ldr r3, .L1633+64 11759 str r2, [r3] 11760.L1560: 11761 ldrh r7, [r8] 11762 mov r0, r7 11763 bl List_get_gc_head_node 11764 uxth r3, r0 11765 movw r1, #65535 11766 cmp r3, r1 11767 strh r3, [fp] @ movhi 11768 bne .L1561 11769 movs r3, #0 11770 movs r0, #8 11771 strh r3, [r8] @ movhi 11772 b .L1515 11773.L1543: 11774 ldr r3, .L1633+64 11775 movs r2, #0 11776 ldr r1, .L1633+48 11777 ldr r4, .L1633+32 11778 str r2, [r3] 11779 ldrh r3, [r1] 11780 mov r2, r1 11781 ldrh r8, [r4] 11782 ldr r5, .L1633+36 11783 cmp r3, r8 11784 bcs .L1544 11785 ldrh r3, [r5] 11786 cbnz r3, .L1545 11787 ldr r3, .L1633+52 11788 ldr r0, .L1633+56 11789 ldr r3, [r3] 11790 ldr r0, [r0] 11791 add r3, r3, r3, lsl #1 11792 cmp r0, r3, lsr #2 11793 bcs .L1546 11794.L1545: 11795 ldr r3, .L1633+60 11796 ldrh r3, [r3] 11797 add r3, r3, r3, lsl #1 11798 asrs r3, r3, #2 11799 strh r3, [r2] @ movhi 11800.L1630: 11801 bl FtlReadRefresh 11802 ldrh r0, [r5] 11803 b .L1515 11804.L1634: 11805 .align 2 11806.L1633: 11807 .word .LANCHOR117 11808 .word .LANCHOR45 11809 .word .LANCHOR156 11810 .word .LANCHOR100 11811 .word .LANCHOR84 11812 .word .LANCHOR80 11813 .word .LANCHOR53 11814 .word .LANCHOR99 11815 .word .LANCHOR48 11816 .word .LANCHOR172 11817 .word .LANCHOR42 11818 .word .LANCHOR19 11819 .word .LANCHOR82 11820 .word .LANCHOR61 11821 .word .LANCHOR59 11822 .word .LANCHOR78 11823 .word .LANCHOR87 11824 .word .LC107 11825 .word .LANCHOR43 11826 .word .LANCHOR101 11827 .word .LANCHOR173 11828 .word .LANCHOR174 11829 .word .LANCHOR51 11830 .word .LANCHOR52 11831 .word .LANCHOR83 11832 .word .LANCHOR85 11833.L1546: 11834 movs r3, #18 11835 strh r3, [r1] @ movhi 11836 b .L1630 11837.L1544: 11838 ldrh r0, [r5] 11839 cmp r0, #0 11840 bne .L1548 11841 ldr r3, .L1635 11842 ldrh r7, [r3] 11843 add r2, r7, r7, lsl #1 11844 asrs r2, r2, #2 11845 strh r2, [r1] @ movhi 11846 bl List_get_gc_head_node 11847 ldr r3, .L1635+4 11848 uxth r0, r0 11849 ldr r2, .L1635+8 11850 ldr r3, [r3] 11851 ldrh r2, [r2] 11852 ldrh r1, [r3, r0, lsl #1] 11853 ldr r3, .L1635+12 11854 ldrh r3, [r3] 11855 muls r2, r3, r2 11856 cmp r1, r2, asr #1 11857 ble .L1549 11858 subs r3, r7, #1 11859 cmp r8, r3 11860 bge .L1630 11861.L1549: 11862 cmp r1, #0 11863 bne .L1548 11864 movw r0, #65535 11865 bl decrement_vpc_count 11866 ldrh r0, [r4] 11867 adds r0, r0, #1 11868 b .L1515 11869.L1552: 11870 ldr r3, .L1635+16 11871 ldrh r2, [r3] 11872 cmp r2, r5 11873 beq .L1553 11874 ldr r1, .L1635+4 11875 ldr r1, [r1] 11876 ldrh r2, [r1, r2, lsl #1] 11877 cbnz r2, .L1554 11878 strh r5, [r3] @ movhi 11879.L1554: 11880 ldrh r2, [r3] 11881 strh r2, [r6] @ movhi 11882 movw r2, #65535 11883 strh r2, [r3] @ movhi 11884 b .L1553 11885.L1557: 11886 movw r3, #65535 11887 strh r3, [r6] @ movhi 11888.L1631: 11889 ldr r3, .L1635+20 11890 ldrh r0, [r3] 11891 b .L1515 11892.L1561: 11893 str r0, [sp, #16] 11894 mov r0, r3 11895 str r3, [sp, #12] 11896 adds r7, r7, #1 11897 bl IsBlkInGcList 11898 ldr r3, [sp, #12] 11899 ldr r2, [sp, #16] 11900 cbz r0, .L1562 11901 strh r7, [r8] @ movhi 11902 b .L1560 11903.L1562: 11904 uxth r0, r2 11905 ldr r2, .L1635+24 11906 ldr r10, .L1635+4 11907 uxth r7, r7 11908 ldrh lr, [r2] 11909 ldr r2, .L1635+8 11910 ldr r1, [r10] 11911 strh r7, [r8] @ movhi 11912 ldrh r2, [r2] 11913 ldrh ip, [r1, r0, lsl #1] 11914 mul lr, r2, lr 11915 cmp ip, lr, asr #1 11916 bgt .L1564 11917 cmp r7, #48 11918 bls .L1565 11919 cmp ip, #8 11920 bls .L1565 11921 ldr r7, .L1635+28 11922 ldrh r7, [r7] 11923 cmp r7, #35 11924 bhi .L1565 11925.L1564: 11926 ldr r2, .L1635+32 11927 movs r7, #0 11928 strh r7, [r2] @ movhi 11929.L1565: 11930 ldrh r1, [r1, r0, lsl #1] 11931 cmp lr, r1 11932 bgt .L1566 11933 movw r2, #65535 11934 cmp r5, r2 11935 bne .L1566 11936 ldr r2, .L1635+32 11937 movs r3, #0 11938 strh r5, [fp] @ movhi 11939 strh r3, [r2] @ movhi 11940 b .L1631 11941.L1566: 11942 cbnz r1, .L1567 11943 movw r0, #65535 11944 bl decrement_vpc_count 11945 ldr r3, .L1635+32 11946 ldr r2, .L1635+32 11947 ldrh r3, [r3] 11948 adds r3, r3, #1 11949 strh r3, [r2] @ movhi 11950 b .L1560 11951.L1567: 11952 movs r2, #0 11953 strb r2, [fp, #8] 11954 ldr r2, .L1635+36 11955 ldrh r2, [r2] 11956 cmp r2, r3 11957 bne .L1568 11958 movw r2, #658 11959 ldr r1, .L1635+40 11960 ldr r0, .L1635+44 11961 bl printf 11962.L1568: 11963 ldr r3, .L1635+48 11964 ldrh r2, [fp] 11965 ldrh r3, [r3] 11966 cmp r2, r3 11967 bne .L1569 11968 movw r2, #659 11969 ldr r1, .L1635+40 11970 ldr r0, .L1635+44 11971 bl printf 11972.L1569: 11973 ldr r3, .L1635+52 11974 ldrh r2, [fp] 11975 ldrh r3, [r3] 11976 cmp r2, r3 11977 bne .L1570 11978 mov r2, #660 11979 ldr r1, .L1635+40 11980 ldr r0, .L1635+44 11981 bl printf 11982.L1570: 11983 mov r0, r6 11984 bl make_superblock 11985 ldr r2, .L1635+56 11986 movs r3, #0 11987 ldrh r1, [fp] 11988 strh r3, [r2] @ movhi 11989 ldr r2, [r10] 11990 ldrh r1, [r2, r1, lsl #1] 11991 ldr r2, .L1635+60 11992 strh r3, [fp, #2] @ movhi 11993 strb r3, [fp, #6] 11994 strh r1, [r2] @ movhi 11995.L1559: 11996 bl FtlReadRefresh 11997 ldr r3, .L1635+64 11998 movs r2, #1 11999 str r2, [r3] 12000 ldr r3, .L1635+24 12001 ldrh r3, [r3] 12002 str r3, [sp, #28] 12003 ldrh r3, [fp, #2] 12004 ldr r1, [sp, #28] 12005 adds r2, r3, r4 12006 cmp r2, r1 12007 itt gt 12008 movgt r2, r1 12009 subgt r4, r2, r3 12010 mov r3, #0 12011 it gt 12012 uxthgt r4, r4 12013.L1629: 12014 str r3, [sp, #24] 12015 ldrh r3, [sp, #24] 12016 cmp r4, r3 12017 bls .L1580 12018 ldr r3, .L1635+8 12019 movw r10, #65535 12020 ldrh r8, [r6, #2] 12021 ldr r1, .L1635+68 12022 ldrh ip, [r3] 12023 ldr r3, .L1635+72 12024 ldr r0, [r3] 12025 ldr r3, [sp, #24] 12026 add r8, r8, r3 12027 movs r3, #0 12028 str r3, [sp, #12] 12029 b .L1581 12030.L1574: 12031 ldrh r2, [r1, #2]! 12032 cmp r2, r10 12033 beq .L1573 12034 ldr r7, [sp, #12] 12035 mov lr, #20 12036 orr r2, r8, r2, lsl #10 12037 mla lr, lr, r7, r0 12038 str r2, [lr, #4] 12039 mov r2, r7 12040 adds r2, r2, #1 12041 uxth r2, r2 12042 str r2, [sp, #12] 12043.L1573: 12044 adds r3, r3, #1 12045.L1581: 12046 uxth r2, r3 12047 cmp ip, r2 12048 bhi .L1574 12049 ldrb r2, [r6, #8] @ zero_extendqisi2 12050 ldr r1, [sp, #12] 12051 bl FlashReadPages 12052 movs r3, #0 12053.L1628: 12054 str r3, [sp, #20] 12055 ldr r2, [sp, #12] 12056 ldrh r3, [sp, #20] 12057 cmp r2, r3 12058 bhi .L1579 12059 ldr r3, [sp, #24] 12060 adds r3, r3, #1 12061 b .L1629 12062.L1636: 12063 .align 2 12064.L1635: 12065 .word .LANCHOR78 12066 .word .LANCHOR42 12067 .word .LANCHOR3 12068 .word .LANCHOR20 12069 .word .LANCHOR99 12070 .word .LANCHOR172 12071 .word .LANCHOR19 12072 .word .LANCHOR96 12073 .word .LANCHOR85 12074 .word .LANCHOR51 12075 .word .LANCHOR175 12076 .word .LC1 12077 .word .LANCHOR52 12078 .word .LANCHOR53 12079 .word .LANCHOR173 12080 .word .LANCHOR174 12081 .word .LANCHOR117 12082 .word .LANCHOR80+14 12083 .word .LANCHOR93 12084.L1579: 12085 ldr r3, [sp, #20] 12086 movs r7, #20 12087 muls r7, r3, r7 12088 ldr r3, .L1637 12089 ldr r3, [r3] 12090 adds r2, r3, r7 12091 ldr r3, [r3, r7] 12092 adds r3, r3, #1 12093 beq .L1576 12094 ldr r3, [r2, #12] 12095 ldrh r2, [r3] 12096 str r3, [sp, #16] 12097 movw r3, #61589 12098 cmp r2, r3 12099 bne .L1576 12100 ldr r3, [sp, #16] 12101 ldr r8, [r3, #8] 12102 cmp r8, #-1 12103 bne .L1577 12104 mov r2, #696 12105 ldr r1, .L1637+4 12106 ldr r0, .L1637+8 12107 bl printf 12108.L1577: 12109 movs r2, #0 12110 add r1, sp, #44 12111 mov r0, r8 12112 bl log2phys 12113 ldr r3, .L1637 12114 ldr r1, [r3] 12115 ldr r3, [sp, #44] 12116 add r1, r1, r7 12117 ldr r2, [r1, #4] 12118 cmp r2, r3 12119 bne .L1576 12120 ldr r2, .L1637+12 12121 mov r10, #20 12122 ldr r8, .L1637+36 12123 ldr r1, [r1, #16] 12124 ldrh r3, [r2] 12125 adds r3, r3, #1 12126 strh r3, [r2] @ movhi 12127 ldr r2, .L1637+16 12128 ldr r3, [r8] 12129 ldr r0, [r2] 12130 str r2, [sp, #36] 12131 mla r3, r10, r3, r0 12132 str r1, [r3, #16] 12133 str r3, [sp, #32] 12134 bl Ftl_get_new_temp_ppa 12135 ldr r3, [sp, #32] 12136 ldr r2, [sp, #36] 12137 ldr r1, [sp, #16] 12138 str r0, [r3, #4] 12139 ldr r2, [r2] 12140 ldr r3, [r8] 12141 mla r10, r10, r3, r2 12142 ldr r2, .L1637 12143 adds r3, r3, #1 12144 ldr r0, [r2] 12145 add r0, r0, r7 12146 ldr r7, .L1637+20 12147 ldr r2, [r0, #8] 12148 str r2, [r10, #8] 12149 ldr r2, [r0, #12] 12150 str r2, [r10, #12] 12151 ldr r2, [sp, #44] 12152 str r2, [r1, #12] 12153 ldrh r2, [r7] 12154 strh r2, [r1, #2] @ movhi 12155 ldr r2, .L1637+24 12156 str r3, [r8] 12157 ldr r2, [r2] 12158 str r2, [r1, #4] 12159 movs r1, #1 12160 bl FtlGcBufAlloc 12161 ldrb r2, [r7, #7] @ zero_extendqisi2 12162 ldr r3, [r8] 12163 cmp r2, r3 12164 beq .L1578 12165 ldrh r3, [r7, #4] 12166 cbnz r3, .L1576 12167.L1578: 12168 bl Ftl_gc_temp_data_write_back 12169 cbz r0, .L1576 12170.L1632: 12171 ldr r3, .L1637+28 12172 movs r2, #0 12173 str r2, [r3] 12174 b .L1631 12175.L1576: 12176 ldr r3, [sp, #20] 12177 adds r3, r3, #1 12178 b .L1628 12179.L1580: 12180 ldrh r3, [r6, #2] 12181 add r4, r4, r3 12182 ldr r3, [sp, #28] 12183 uxth r4, r4 12184 cmp r3, r4 12185 strh r4, [r6, #2] @ movhi 12186 bls .L1582 12187 ldr r3, .L1637+12 12188 ldrh r2, [r3] 12189 ldr r3, .L1637+32 12190 ldrh r3, [r3] 12191 cmp r2, r3 12192 bne .L1583 12193.L1582: 12194 ldr r3, .L1637+36 12195 ldr r3, [r3] 12196 cbz r3, .L1584 12197 bl Ftl_gc_temp_data_write_back 12198 cmp r0, #0 12199 bne .L1632 12200.L1584: 12201 ldr r3, .L1637+12 12202 ldrh r1, [r3] 12203 cbnz r1, .L1585 12204 ldr r3, .L1637+40 12205 ldrh r2, [r6] 12206 ldr r3, [r3] 12207 ldrh r0, [r3, r2, lsl #1] 12208 cbz r0, .L1585 12209 strh r1, [r3, r2, lsl #1] @ movhi 12210 ldrh r0, [r6] 12211 bl update_vpc_list 12212 bl l2p_flush 12213 bl FtlVpcTblFlush 12214.L1585: 12215 movw r3, #65535 12216 strh r3, [r6] @ movhi 12217.L1583: 12218 ldr r3, .L1637+44 12219 ldrh r3, [r3] 12220 cmp r3, #2 12221 bhi .L1586 12222 ldr r3, .L1637+48 12223 ldrh r4, [r3] 12224 b .L1558 12225.L1586: 12226 ldr r2, .L1637+28 12227 movs r1, #0 12228 str r1, [r2] 12229 ldr r2, .L1637+52 12230 ldrh r0, [r2] 12231 cmp r0, #0 12232 bne .L1515 12233 adds r0, r3, #1 12234 b .L1515 12235.L1590: 12236 movs r0, #0 12237 b .L1515 12238.L1521: 12239 cmp r7, #0 12240 beq .L1588 12241.L1531: 12242 ldr r3, .L1637+20 12243 ldrh r2, [r3] 12244 movw r3, #65535 12245 cmp r2, r3 12246 bne .L1599 12247.L1589: 12248 ldr r3, .L1637+56 12249 movw r2, #65535 12250 ldrh r3, [r3] 12251 cmp r3, r2 12252 bne .L1599 12253 cmp r5, r3 12254 bne .L1599 12255 ldrh r3, [r6] 12256 cmp r3, r5 12257 beq .L1543 12258.L1548: 12259 movw r5, #65535 12260.L1599: 12261 movs r4, #1 12262 b .L1542 12263.L1523: 12264 cmp r7, #0 12265 beq .L1588 12266 movw r5, #65535 12267 b .L1589 12268.L1522: 12269 cmp r7, #0 12270 bne .L1548 12271 b .L1588 12272.L1638: 12273 .align 2 12274.L1637: 12275 .word .LANCHOR93 12276 .word .LANCHOR175 12277 .word .LC1 12278 .word .LANCHOR173 12279 .word .LANCHOR121 12280 .word .LANCHOR53 12281 .word .LANCHOR71 12282 .word .LANCHOR117 12283 .word .LANCHOR174 12284 .word .LANCHOR89 12285 .word .LANCHOR42 12286 .word .LANCHOR48 12287 .word .LANCHOR19 12288 .word .LANCHOR172 12289 .word .LANCHOR99 12290 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect 12291 .section .text.sftl_gc,"ax",%progbits 12292 .align 1 12293 .global sftl_gc 12294 .syntax unified 12295 .thumb 12296 .thumb_func 12297 .fpu softvfp 12298 .type sftl_gc, %function 12299sftl_gc: 12300 @ args = 0, pretend = 0, frame = 0 12301 @ frame_needed = 0, uses_anonymous_args = 0 12302 @ link register save eliminated. 12303 movs r1, #1 12304 mov r0, r1 12305 b rk_ftl_garbage_collect 12306 .size sftl_gc, .-sftl_gc 12307 .section .text.FtlRead,"ax",%progbits 12308 .align 1 12309 .global FtlRead 12310 .syntax unified 12311 .thumb 12312 .thumb_func 12313 .fpu softvfp 12314 .type FtlRead, %function 12315FtlRead: 12316 @ args = 0, pretend = 0, frame = 56 12317 @ frame_needed = 0, uses_anonymous_args = 0 12318 cmp r0, #16 12319 push {r4, r5, r6, r7, r8, r10, fp, lr} 12320 sub sp, sp, #56 12321 mov r6, r1 12322 mov r8, r3 12323 str r2, [sp, #32] 12324 bne .L1641 12325 mov r2, r3 12326 ldr r1, [sp, #32] 12327 add r0, r6, #256 12328 bl FtlVendorPartRead 12329 str r0, [sp, #4] 12330.L1640: 12331 ldr r0, [sp, #4] 12332 add sp, sp, #56 12333 @ sp needed 12334 pop {r4, r5, r6, r7, r8, r10, fp, pc} 12335.L1641: 12336 ldr r3, [sp, #32] 12337 adds r3, r1, r3 12338 str r3, [sp, #12] 12339 ldr r3, .L1672 12340 ldr r2, [sp, #12] 12341 ldr r3, [r3] 12342 cmp r2, r3 12343 bhi .L1661 12344 ldr r3, .L1672+4 12345 ldr r3, [r3] 12346 adds r0, r3, #1 12347 beq .L1662 12348 ldr r3, .L1672+8 12349 mov r0, r6 12350 movs r7, #0 12351 mov r5, r7 12352 ldrh r4, [r3] 12353 mov r1, r4 12354 bl __aeabi_uidiv 12355 ldr r3, [sp, #12] 12356 mov r1, r4 12357 str r0, [sp, #16] 12358 subs r0, r3, #1 12359 bl __aeabi_uidiv 12360 ldr r3, [sp, #16] 12361 ldr r2, .L1672+12 12362 ldr r4, [sp, #16] 12363 rsb r3, r3, #1 12364 str r0, [sp, #20] 12365 add r3, r3, r0 12366 str r7, [sp, #28] 12367 str r3, [sp, #8] 12368 ldr r1, [sp, #8] 12369 ldr r3, [r2] 12370 str r7, [sp, #24] 12371 str r7, [sp, #4] 12372 add r3, r3, r1 12373 str r3, [r2] 12374.L1643: 12375 ldr r3, [sp, #8] 12376 cbnz r3, .L1659 12377 ldr r3, .L1672+16 12378 ldrh r3, [r3] 12379 cbnz r3, .L1660 12380 ldr r3, .L1672+20 12381 ldrh r3, [r3] 12382 cmp r3, #31 12383 bhi .L1640 12384.L1660: 12385 movs r1, #1 12386 movs r0, #0 12387 bl rk_ftl_garbage_collect 12388 b .L1640 12389.L1659: 12390 add r1, sp, #52 12391 movs r2, #0 12392 mov r0, r4 12393 bl log2phys 12394 ldr r3, [sp, #52] 12395 adds r1, r3, #1 12396 bne .L1644 12397 ldr fp, .L1672+8 12398 mov r10, #0 12399.L1645: 12400 ldrh r0, [fp] 12401 cmp r10, r0 12402 bcc .L1647 12403.L1648: 12404 ldr r3, [sp, #8] 12405 adds r4, r4, #1 12406 subs r3, r3, #1 12407 str r3, [sp, #8] 12408 beq .L1652 12409 ldr r3, .L1672+24 12410 ldrh r3, [r3] 12411 cmp r5, r3, lsl #2 12412 bne .L1643 12413.L1652: 12414 cmp r5, #0 12415 beq .L1643 12416 ldr r3, .L1672+28 12417 movs r2, #0 12418 mov r1, r5 12419 mov r10, #0 12420 ldr r0, [r3] 12421 bl FlashReadPages 12422 lsls r3, r7, #9 12423 str r3, [sp, #44] 12424 ldr r3, [sp, #24] 12425 lsls r3, r3, #9 12426 str r3, [sp, #36] 12427 ldr r3, [sp, #28] 12428 lsls r3, r3, #9 12429 str r3, [sp, #40] 12430.L1658: 12431 movs r3, #20 12432 mul fp, r3, r10 12433 ldr r3, .L1672+28 12434 ldr r2, [r3] 12435 ldr r3, [sp, #16] 12436 add r2, r2, fp 12437 ldr r1, [r2, #16] 12438 cmp r3, r1 12439 bne .L1654 12440 ldr r1, [r2, #8] 12441 ldr r2, .L1672+32 12442 ldr r2, [r2] 12443 cmp r1, r2 12444 bne .L1655 12445 ldr r3, [sp, #36] 12446 mov r0, r8 12447 ldr r2, [sp, #40] 12448 add r1, r1, r3 12449.L1671: 12450 bl ftl_memcpy 12451.L1655: 12452 ldr r3, .L1672+28 12453 ldr r2, [r3] 12454 ldr r3, [r2, fp] 12455 add r1, r2, fp 12456 adds r2, r3, #1 12457 bne .L1656 12458 ldr r1, .L1672+36 12459 str r3, [sp, #4] 12460 ldr r2, [r1, #72] 12461 adds r2, r2, #1 12462 str r2, [r1, #72] 12463.L1657: 12464 add r10, r10, #1 12465 cmp r5, r10 12466 bne .L1658 12467 movs r5, #0 12468 b .L1643 12469.L1647: 12470 mla r0, r0, r4, r10 12471 cmp r6, r0 12472 bhi .L1646 12473 ldr r3, [sp, #12] 12474 cmp r3, r0 12475 bls .L1646 12476 subs r0, r0, r6 12477 mov r2, #512 12478 movs r1, #0 12479 add r0, r8, r0, lsl #9 12480 bl ftl_memset 12481.L1646: 12482 add r10, r10, #1 12483 b .L1645 12484.L1644: 12485 ldr r2, .L1672+28 12486 mov r10, #20 12487 ldr r2, [r2] 12488 mla r10, r10, r5, r2 12489 str r3, [r10, #4] 12490 ldr r3, [sp, #16] 12491 cmp r4, r3 12492 ldr r3, .L1672+8 12493 bne .L1649 12494 ldr r2, .L1672+32 12495 mov r0, r6 12496 ldrh fp, [r3] 12497 ldr r2, [r2] 12498 mov r1, fp 12499 str r2, [r10, #8] 12500 bl __aeabi_uidivmod 12501 ldr r2, [sp, #32] 12502 sub r3, fp, r1 12503 str r1, [sp, #24] 12504 cmp r3, r2 12505 it cs 12506 movcs r3, r2 12507 cmp fp, r3 12508 str r3, [sp, #28] 12509 bne .L1650 12510 str r8, [r10, #8] 12511.L1650: 12512 ldr r3, .L1672+40 12513 ldr r2, .L1672+44 12514 str r4, [r10, #16] 12515 ldrh r3, [r3] 12516 ldr r2, [r2] 12517 muls r3, r5, r3 12518 adds r5, r5, #1 12519 bic r3, r3, #3 12520 add r3, r3, r2 12521 str r3, [r10, #12] 12522 b .L1648 12523.L1649: 12524 ldr r2, [sp, #20] 12525 cmp r4, r2 12526 bne .L1651 12527 ldr r2, .L1672+48 12528 ldr r1, [sp, #12] 12529 ldr r2, [r2] 12530 str r2, [r10, #8] 12531 ldrh r2, [r3] 12532 mul r3, r2, r4 12533 subs r7, r1, r3 12534 cmp r2, r7 12535 bne .L1650 12536.L1670: 12537 subs r3, r3, r6 12538 add r3, r8, r3, lsl #9 12539 str r3, [r10, #8] 12540 b .L1650 12541.L1651: 12542 ldrh r3, [r3] 12543 muls r3, r4, r3 12544 b .L1670 12545.L1654: 12546 ldr r3, [sp, #20] 12547 cmp r3, r1 12548 bne .L1655 12549 ldr r3, .L1672+48 12550 ldr r1, [r2, #8] 12551 ldr r2, [r3] 12552 cmp r1, r2 12553 bne .L1655 12554 ldr r2, .L1672+8 12555 ldr r3, [sp, #20] 12556 ldrh r0, [r2] 12557 ldr r2, [sp, #44] 12558 muls r0, r3, r0 12559 subs r0, r0, r6 12560 add r0, r8, r0, lsl #9 12561 b .L1671 12562.L1656: 12563 cmp r3, #256 12564 bne .L1657 12565 ldr r0, [r1, #4] 12566 ubfx r0, r0, #10, #16 12567 bl P2V_block_in_plane 12568 bl FtlGcRefreshBlock 12569 b .L1657 12570.L1661: 12571 mov r3, #-1 12572.L1662: 12573 str r3, [sp, #4] 12574 b .L1640 12575.L1673: 12576 .align 2 12577.L1672: 12578 .word .LANCHOR34 12579 .word .LANCHOR86 12580 .word .LANCHOR12 12581 .word .LANCHOR62 12582 .word .LANCHOR101 12583 .word .LANCHOR48 12584 .word .LANCHOR3 12585 .word .LANCHOR120 12586 .word .LANCHOR115 12587 .word .LANCHOR81 12588 .word .LANCHOR24 12589 .word .LANCHOR114 12590 .word .LANCHOR113 12591 .size FtlRead, .-FtlRead 12592 .section .text.sftl_read,"ax",%progbits 12593 .align 1 12594 .global sftl_read 12595 .syntax unified 12596 .thumb 12597 .thumb_func 12598 .fpu softvfp 12599 .type sftl_read, %function 12600sftl_read: 12601 @ args = 0, pretend = 0, frame = 0 12602 @ frame_needed = 0, uses_anonymous_args = 0 12603 @ link register save eliminated. 12604 mov r3, r2 12605 mov r2, r1 12606 mov r1, r0 12607 movs r0, #0 12608 b FtlRead 12609 .size sftl_read, .-sftl_read 12610 .section .text.FtlWrite,"ax",%progbits 12611 .align 1 12612 .global FtlWrite 12613 .syntax unified 12614 .thumb 12615 .thumb_func 12616 .fpu softvfp 12617 .type FtlWrite, %function 12618FtlWrite: 12619 @ args = 0, pretend = 0, frame = 72 12620 @ frame_needed = 0, uses_anonymous_args = 0 12621 cmp r0, #16 12622 push {r4, r5, r6, r7, r8, r10, fp, lr} 12623 sub sp, sp, #72 12624 str r1, [sp, #4] 12625 str r2, [sp, #20] 12626 str r3, [sp, #16] 12627 bne .L1676 12628 mov r2, r3 12629 ldr r3, [sp, #4] 12630 ldr r1, [sp, #20] 12631 add r0, r3, #256 12632 bl FtlVendorPartWrite 12633.L1675: 12634 add sp, sp, #72 12635 @ sp needed 12636 pop {r4, r5, r6, r7, r8, r10, fp, pc} 12637.L1676: 12638 ldr r3, [sp, #4] 12639 ldr r2, [sp, #20] 12640 adds r4, r3, r2 12641 ldr r3, .L1726 12642 ldr r3, [r3] 12643 cmp r4, r3 12644 bhi .L1712 12645 ldr r3, .L1726+4 12646 ldr r0, [r3] 12647 adds r5, r0, #1 12648 beq .L1675 12649 ldr r3, .L1726+8 12650 mov r2, #2048 12651 ldr r0, [sp, #4] 12652 str r2, [r3] 12653 ldr r3, .L1726+12 12654 ldrh r5, [r3] 12655 mov r1, r5 12656 bl __aeabi_uidiv 12657 mov r1, r5 12658 str r0, [sp, #12] 12659 subs r0, r4, #1 12660 ldr r5, .L1726+16 12661 bl __aeabi_uidiv 12662 ldr r2, [sp, #12] 12663 str r0, [sp, #28] 12664 subs r3, r0, r2 12665 ldr r2, .L1726+20 12666 str r3, [sp, #32] 12667 adds r3, r3, #1 12668 str r3, [sp, #8] 12669 ldr r1, [sp, #8] 12670 ldr r3, [r2] 12671 add r3, r3, r1 12672 str r3, [r2] 12673 ldr r3, .L1726+24 12674 ldr r3, [r3] 12675 cbz r3, .L1678 12676 ldrh r2, [r5, #4] 12677 ldr r3, .L1726+28 12678 cmp r2, #0 12679 it eq 12680 moveq r5, r3 12681.L1678: 12682 ldr r6, [sp, #12] 12683.L1679: 12684 ldr r3, [sp, #8] 12685 cbnz r3, .L1708 12686 ldr r4, .L1726+32 12687 mov r0, r3 12688 ldr r1, [sp, #32] 12689 bl rk_ftl_garbage_collect 12690 ldrh r2, [r4] 12691 cmp r2, #15 12692 bls .L1709 12693.L1711: 12694 movs r0, #0 12695 b .L1675 12696.L1708: 12697 ldr r3, .L1726+36 12698 ldrb r2, [r5, #6] @ zero_extendqisi2 12699 ldrh r3, [r3] 12700 cmp r2, r3 12701 bcc .L1680 12702 mov r2, #988 12703 ldr r1, .L1726+40 12704 ldr r0, .L1726+44 12705 bl printf 12706.L1680: 12707 ldrh r2, [r5, #4] 12708 cbnz r2, .L1681 12709 ldr r3, .L1726+16 12710 ldr r4, .L1726+24 12711 cmp r5, r3 12712 bne .L1682 12713 ldr r0, .L1726+28 12714 ldrh r5, [r0, #4] 12715 cbnz r5, .L1683 12716 bl allocate_new_data_superblock 12717 str r5, [r4] 12718.L1683: 12719 ldr r0, .L1726+16 12720 bl allocate_new_data_superblock 12721 ldr r5, .L1726+16 12722 ldr r2, [r4] 12723 ldr r3, .L1726+28 12724 cmp r2, #0 12725 it ne 12726 movne r5, r3 12727.L1684: 12728 ldrh r3, [r5, #4] 12729 cbnz r3, .L1681 12730 mov r0, r5 12731 bl allocate_new_data_superblock 12732.L1681: 12733 ldrb r2, [r5, #7] @ zero_extendqisi2 12734 ldrh r3, [r5, #4] 12735 ldr r1, [sp, #8] 12736 lsls r2, r2, #2 12737 cmp r3, r1 12738 it cs 12739 movcs r3, r1 12740 cmp r2, r3 12741 it cs 12742 movcs r2, r3 12743 ldr r3, .L1726+36 12744 str r2, [sp, #44] 12745 ldrb r2, [r5, #6] @ zero_extendqisi2 12746 ldrh r3, [r3] 12747 cmp r2, r3 12748 bcc .L1685 12749 movw r2, #1021 12750 ldr r1, .L1726+40 12751 ldr r0, .L1726+44 12752 bl printf 12753.L1685: 12754 ldr r8, .L1726+48 12755 mov fp, #0 12756.L1686: 12757 ldr r3, [sp, #44] 12758 cmp fp, r3 12759 bne .L1706 12760.L1687: 12761 ldr r0, .L1726+48 12762 mov r3, r5 12763 movs r2, #0 12764 mov r1, fp 12765 ldr r0, [r0] 12766 bl FtlProgPages 12767 ldr r3, [sp, #8] 12768 cmp fp, r3 12769 bls .L1707 12770 movw r2, #1098 12771 ldr r1, .L1726+40 12772 ldr r0, .L1726+44 12773 bl printf 12774.L1707: 12775 ldr r3, [sp, #8] 12776 sub r3, r3, fp 12777 str r3, [sp, #8] 12778 b .L1679 12779.L1682: 12780 str r2, [r4] 12781 ldrh r2, [r3, #4] 12782 cbnz r2, .L1717 12783 mov r0, r5 12784 bl allocate_new_data_superblock 12785 b .L1684 12786.L1717: 12787 mov r5, r3 12788 b .L1681 12789.L1706: 12790 ldrh r2, [r5, #4] 12791 cmp r2, #0 12792 beq .L1687 12793 movs r2, #0 12794 add r1, sp, #48 12795 mov r0, r6 12796 movs r7, #20 12797 bl log2phys 12798 mov r0, r5 12799 mul r7, r7, fp 12800 bl get_new_active_ppa 12801 ldr r3, .L1726+52 12802 ldr r1, [r8] 12803 ldrh r2, [r3] 12804 add r1, r1, r7 12805 str r0, [r1, #4] 12806 str r6, [r1, #16] 12807 mul r0, r2, fp 12808 bic r3, r0, #3 12809 ldr r0, .L1726+56 12810 str r3, [sp, #36] 12811 ldr r3, [r0] 12812 ldr r0, [sp, #36] 12813 str r3, [sp, #40] 12814 add r10, r3, r0 12815 str r10, [r1, #12] 12816 mov r0, r10 12817 movs r1, #0 12818 bl ftl_memset 12819 ldr r3, [sp, #12] 12820 ldr r2, .L1726+12 12821 cmp r6, r3 12822 beq .L1688 12823 ldr r3, [sp, #28] 12824 cmp r6, r3 12825 bne .L1721 12826 ldrh r2, [r2] 12827 ldr r3, [sp, #4] 12828 ldr r1, [sp, #20] 12829 smulbb r2, r2, r6 12830 adds r4, r3, r1 12831 movs r3, #0 12832 subs r4, r4, r2 12833 str r3, [sp, #24] 12834 uxth r4, r4 12835 b .L1691 12836.L1688: 12837 ldrh r4, [r2] 12838 ldr r0, [sp, #4] 12839 mov r1, r4 12840 bl __aeabi_uidivmod 12841 ldr r3, [sp, #20] 12842 subs r4, r4, r1 12843 str r1, [sp, #24] 12844 cmp r4, r3 12845 it cs 12846 movcs r4, r3 12847.L1691: 12848 ldr r2, .L1726+12 12849 ldr r3, [sp, #12] 12850 ldrh r2, [r2] 12851 cmp r4, r2 12852 ldr r2, [r8] 12853 bne .L1692 12854 cmp r6, r3 12855 add r7, r7, r2 12856 ittet ne 12857 mulne r4, r4, r6 12858 ldrne r3, [sp, #4] 12859 ldreq r3, [sp, #16] 12860 subne r4, r4, r3 12861 itett ne 12862 ldrne r3, [sp, #16] 12863 streq r3, [r7, #8] 12864 addne r4, r3, r4, lsl #9 12865 strne r4, [r7, #8] 12866.L1694: 12867 ldr r3, .L1726+36 12868 ldrb r1, [r5, #6] @ zero_extendqisi2 12869 ldrh r2, [r3] 12870 cmp r1, r2 12871 bcc .L1703 12872 movw r2, #1089 12873 ldr r1, .L1726+40 12874 ldr r0, .L1726+44 12875 bl printf 12876.L1703: 12877 ldr r3, [sp, #40] 12878 movw r2, #61589 12879 ldr r1, [sp, #36] 12880 add fp, fp, #1 12881 strh r2, [r3, r1] @ movhi 12882 ldr r1, .L1726+60 12883 str r6, [r10, #8] 12884 adds r6, r6, #1 12885 ldr r2, [r1] 12886 str r2, [r10, #4] 12887 adds r2, r2, #1 12888 adds r3, r2, #1 12889 it eq 12890 moveq r2, #0 12891 str r2, [r1] 12892 ldr r2, [sp, #48] 12893 str r2, [r10, #12] 12894 ldrh r2, [r5] 12895 strh r2, [r10, #2] @ movhi 12896 b .L1686 12897.L1727: 12898 .align 2 12899.L1726: 12900 .word .LANCHOR34 12901 .word .LANCHOR86 12902 .word .LANCHOR176 12903 .word .LANCHOR12 12904 .word .LANCHOR51 12905 .word .LANCHOR64 12906 .word .LANCHOR177 12907 .word .LANCHOR52 12908 .word .LANCHOR48 12909 .word .LANCHOR3 12910 .word .LANCHOR178 12911 .word .LC1 12912 .word .LANCHOR122 12913 .word .LANCHOR24 12914 .word .LANCHOR114 12915 .word .LANCHOR71 12916.L1692: 12917 cmp r6, r3 12918 add r2, r2, r7 12919 ite eq 12920 ldreq r1, .L1728 12921 ldrne r1, .L1728+4 12922 ldr r1, [r1] 12923 str r1, [r2, #8] 12924 ldr r2, [sp, #48] 12925 adds r1, r2, #1 12926 beq .L1697 12927 str r2, [sp, #56] 12928 add r0, sp, #52 12929 ldr r2, [r8] 12930 str r6, [sp, #68] 12931 add r2, r2, r7 12932 ldr r1, [r2, #8] 12933 ldr r2, [r2, #12] 12934 str r1, [sp, #60] 12935 movs r1, #1 12936 str r2, [sp, #64] 12937 movs r2, #0 12938 bl FlashReadPages 12939 ldr r2, [sp, #52] 12940 adds r2, r2, #1 12941 bne .L1698 12942 ldr r1, .L1728+8 12943 ldr r2, [r1, #72] 12944 adds r2, r2, #1 12945 str r2, [r1, #72] 12946.L1701: 12947 ldr r3, [sp, #12] 12948 lsls r2, r4, #9 12949 cmp r6, r3 12950 bne .L1702 12951 ldr r1, [r8] 12952 ldr r3, [sp, #24] 12953 add r7, r7, r1 12954 ldr r1, [sp, #16] 12955 ldr r0, [r7, #8] 12956 add r0, r0, r3, lsl #9 12957.L1724: 12958 bl ftl_memcpy 12959 b .L1694 12960.L1698: 12961 ldr r1, [r10, #8] 12962 cmp r6, r1 12963 beq .L1700 12964 ldr r0, .L1728+8 12965 ldr r2, [r0, #72] 12966 adds r2, r2, #1 12967 str r2, [r0, #72] 12968 mov r2, r6 12969 ldr r0, .L1728+12 12970 bl printf 12971.L1700: 12972 ldr r2, [r10, #8] 12973 cmp r6, r2 12974 beq .L1701 12975 movw r2, #1074 12976 ldr r1, .L1728+16 12977 ldr r0, .L1728+20 12978 bl printf 12979 b .L1701 12980.L1697: 12981 ldr r2, [r8] 12982 movs r1, #0 12983 adds r0, r2, r7 12984 ldr r2, .L1728+24 12985 ldr r0, [r0, #8] 12986 ldrh r2, [r2] 12987 bl ftl_memset 12988 b .L1701 12989.L1702: 12990 ldr r1, .L1728+28 12991 ldr r3, [sp, #4] 12992 ldr r0, [r8] 12993 ldrh r1, [r1] 12994 add r7, r7, r0 12995 ldr r0, [r7, #8] 12996 muls r1, r6, r1 12997 subs r1, r1, r3 12998 ldr r3, [sp, #16] 12999 add r1, r3, r1, lsl #9 13000 b .L1724 13001.L1721: 13002 ldrh r2, [r2] 13003 ldr r3, [sp, #4] 13004 ldr r1, [r8] 13005 muls r2, r6, r2 13006 add r7, r7, r1 13007 subs r2, r2, r3 13008 ldr r3, [sp, #16] 13009 add r2, r3, r2, lsl #9 13010 str r2, [r7, #8] 13011 b .L1694 13012.L1709: 13013 ldr r5, .L1728+32 13014 ldr r6, .L1728+36 13015.L1722: 13016 ldrh r3, [r5] 13017 movw r2, #65535 13018 cmp r3, r2 13019 bne .L1710 13020 ldrh r2, [r6] 13021 cmp r2, r3 13022 bne .L1710 13023 movs r0, #0 13024 bl List_get_gc_head_node 13025 uxth r0, r0 13026 bl FtlGcRefreshBlock 13027.L1710: 13028 ldr r2, .L1728+40 13029 movs r3, #128 13030 movs r1, #1 13031 mov r0, r1 13032 strh r3, [r2] @ movhi 13033 ldr r2, .L1728+44 13034 strh r3, [r2] @ movhi 13035 bl rk_ftl_garbage_collect 13036 movs r1, #1 13037 movs r0, #0 13038 bl rk_ftl_garbage_collect 13039 ldrh r3, [r4] 13040 cmp r3, #8 13041 bls .L1722 13042 b .L1711 13043.L1712: 13044 mov r0, #-1 13045 b .L1675 13046.L1729: 13047 .align 2 13048.L1728: 13049 .word .LANCHOR115 13050 .word .LANCHOR113 13051 .word .LANCHOR81 13052 .word .LC108 13053 .word .LANCHOR178 13054 .word .LC1 13055 .word .LANCHOR23 13056 .word .LANCHOR12 13057 .word .LANCHOR80 13058 .word .LANCHOR99 13059 .word .LANCHOR83 13060 .word .LANCHOR82 13061 .size FtlWrite, .-FtlWrite 13062 .global __aeabi_idivmod 13063 .section .text.sftl_write,"ax",%progbits 13064 .align 1 13065 .global sftl_write 13066 .syntax unified 13067 .thumb 13068 .thumb_func 13069 .fpu softvfp 13070 .type sftl_write, %function 13071sftl_write: 13072 @ args = 0, pretend = 0, frame = 112 13073 @ frame_needed = 0, uses_anonymous_args = 0 13074 push {r4, r5, r6, r7, r8, r10, fp, lr} 13075 adds r4, r0, r1 13076 subs r5, r4, #1 13077 sub sp, sp, #120 13078 cmp r5, #63 13079 str r0, [sp, #8] 13080 str r1, [sp, #16] 13081 str r2, [sp, #36] 13082 ldr r6, .L1762 13083 bls .L1731 13084 cmp r0, #576 13085 bls .L1732 13086.L1731: 13087 ldr r3, [r6] 13088 cmp r3, #0 13089 beq .L1733 13090 ldr r2, .L1762+4 13091 mov r0, #512 13092 ldrh r3, [r2, #14] 13093 str r3, [sp, #20] 13094 ldrh r3, [r2, #10] 13095 ldrb r1, [sp, #20] @ zero_extendqisi2 13096 smulbb r3, r3, r1 13097 uxth r3, r3 13098 mov r1, r3 13099 str r3, [sp, #24] 13100 bl __aeabi_uidiv 13101 ldr r2, .L1762+8 13102 movs r3, #0 13103 ldr r1, .L1762+12 13104 str r0, [sp, #12] 13105 sub r4, r2, #262144 13106.L1737: 13107 ldr r0, [r2, #-4] 13108 cmp r0, #0 13109 beq .L1734 13110.L1738: 13111 ldr r3, [sp, #12] 13112 movs r4, #0 13113 ldr r2, [sp, #24] 13114 ldr r6, .L1762+16 13115 str r4, [sp, #28] 13116 muls r3, r2, r3 13117 str r3, [sp, #48] 13118 ldr r3, [sp, #12] 13119 str r3, [sp, #32] 13120.L1735: 13121 mov r2, #512 13122 movs r1, #0 13123 ldr r0, .L1762+20 13124 bl memset 13125 ldr r3, .L1762+4 13126 mov r0, r4 13127 ldrh r7, [r3, #14] 13128 mov r1, r7 13129 uxtb r8, r7 13130 uxth r3, r8 13131 str r3, [sp, #40] 13132 ldr r3, .L1762+4 13133 ldrh r5, [r3, #10] 13134 ldrh r3, [sp, #40] 13135 smulbb r5, r5, r3 13136 bl __aeabi_uidiv 13137 uxth r5, r5 13138 mov r1, r0 13139 ldr r3, [r6, #4] 13140 movs r0, #0 13141 blx r3 13142 cmp r5, #512 13143 bcs .L1739 13144 mov r1, r7 13145 adds r0, r5, r4 13146 bl __aeabi_uidiv 13147 ldr r3, [r6, #4] 13148 mov r1, r0 13149 movs r0, #0 13150 blx r3 13151.L1739: 13152 mov r1, r5 13153 mov r0, r4 13154 bl __aeabi_uidivmod 13155 movs r5, #0 13156 mov r10, r1 13157 subs r3, r4, r1 13158 str r3, [sp, #44] 13159.L1740: 13160 cmp r5, #512 13161 bcc .L1741 13162 ldr r3, .L1762+4 13163 mov r0, r4 13164 movs r5, #0 13165 ldrb r8, [r3, #14] @ zero_extendqisi2 13166 uxth r3, r8 13167 str r3, [sp, #40] 13168 ldr r3, .L1762+4 13169 ldrh r1, [r3, #10] 13170 ldrh r3, [sp, #40] 13171 smulbb r1, r1, r3 13172 uxth r1, r1 13173 bl __aeabi_uidivmod 13174 mov fp, r1 13175 subs r3, r4, r1 13176 uxth r0, fp 13177 mov r1, r8 13178 str r3, [sp, #44] 13179 bl __aeabi_idivmod 13180 uxth r7, r1 13181.L1742: 13182 cmp r5, #512 13183 bcs .L1746 13184 ldr r3, [sp, #40] 13185 mov r1, r8 13186 add r0, fp, r5 13187 sub r10, r3, r7 13188 ldr r3, .L1762+20 13189 uxth r10, r10 13190 add r2, r3, r5, lsl #9 13191 str r2, [sp, #52] 13192 bl __aeabi_uidiv 13193 ldr r3, [sp, #44] 13194 uxth r0, r0 13195 mov r1, r8 13196 add r7, r7, r3 13197 mla r0, r8, r0, r7 13198 bl __aeabi_uidiv 13199 ldr r7, [r6, #12] 13200 mov r1, r0 13201 add r3, sp, #56 13202 ldr r2, [sp, #52] 13203 movs r0, #0 13204 blx r7 13205 adds r0, r0, #1 13206 bne .L1743 13207.L1746: 13208 ldr r3, .L1762+24 13209 movs r5, #0 13210.L1744: 13211 ldr r2, .L1762+20 13212 mov r7, r3 13213 adds r3, r3, #4 13214 ldr r1, [r2, r5, lsl #2] 13215 ldr r2, [r7] 13216 cmp r1, r2 13217 beq .L1747 13218 mov r2, #512 13219 movs r1, #0 13220 ldr r0, .L1762+20 13221 bl memset 13222 ldr r2, .L1762+20 13223 mov r1, r4 13224 str r5, [sp] 13225 ldr r3, [r7] 13226 ldr r2, [r2, r5, lsl #2] 13227 ldr r0, .L1762+28 13228 bl printf 13229 ldr r1, [sp, #20] 13230 mov r0, r4 13231 bl __aeabi_uidiv 13232 ldr r3, [r6, #4] 13233 mov r1, r0 13234 movs r0, #0 13235 blx r3 13236 ldr r3, [sp, #12] 13237 cmp r3, #1 13238 bls .L1748 13239 ldr r3, [sp, #24] 13240 ldr r1, [sp, #20] 13241 adds r0, r3, r4 13242 bl __aeabi_uidiv 13243 ldr r3, [r6, #4] 13244 mov r1, r0 13245 movs r0, #0 13246 blx r3 13247.L1748: 13248 ldr r2, [sp, #32] 13249 ldr r3, [sp, #12] 13250 add r3, r3, r2 13251 ldr r2, [sp, #48] 13252 add r4, r4, r2 13253 ldr r2, [sp, #32] 13254 cmp r2, #15 13255 bls .L1754 13256.L1753: 13257 ldr r3, .L1762 13258 movs r2, #0 13259 str r2, [r3] 13260.L1733: 13261 ldr r3, [sp, #36] 13262 movs r0, #0 13263 ldr r2, [sp, #16] 13264 ldr r1, [sp, #8] 13265 bl FtlWrite 13266 add sp, sp, #120 13267 @ sp needed 13268 pop {r4, r5, r6, r7, r8, r10, fp, pc} 13269.L1734: 13270 ldr r0, [r4, r3, lsl #2] 13271 adds r3, r3, #1 13272 cmp r3, #4096 13273 it hi 13274 movhi r3, #0 13275 str r0, [r2, #-4]! 13276 cmp r1, r2 13277 bne .L1737 13278 b .L1738 13279.L1754: 13280 str r3, [sp, #32] 13281 b .L1735 13282.L1741: 13283 mov r1, r8 13284 add r0, r10, r5 13285 bl __aeabi_uidiv 13286 uxth fp, r0 13287 mov r1, r8 13288 ldr r0, [sp, #44] 13289 mul r3, r8, fp 13290 str r3, [sp, #56] 13291 movw r3, #61424 13292 str r3, [sp, #60] 13293 ldr r3, .L1762+24 13294 add r2, r3, r5, lsl #9 13295 str r2, [sp, #52] 13296 bl __aeabi_uidiv 13297 add r3, sp, #56 13298 add r1, r0, fp 13299 ldr r2, [sp, #52] 13300 movs r0, #0 13301 ldr r7, [r6, #8] 13302 blx r7 13303 ldr r3, [sp, #40] 13304 add r5, r5, r3 13305 uxth r5, r5 13306 b .L1740 13307.L1743: 13308 add r5, r5, r10 13309 movs r7, #0 13310 uxth r5, r5 13311 b .L1742 13312.L1747: 13313 adds r5, r5, #1 13314 cmp r5, #65536 13315 bne .L1744 13316 ldr r3, [sp, #28] 13317 adds r3, r3, #1 13318 cmp r3, #5 13319 str r3, [sp, #28] 13320 bls .L1748 13321 b .L1753 13322.L1732: 13323 ldr r3, [sp, #8] 13324 ldr r0, .L1762+24 13325 cmp r3, #63 13326 bhi .L1750 13327 rsb r1, r3, #64 13328 ldr r3, [sp, #16] 13329 subs r2, r3, r1 13330 ldr r3, [sp, #36] 13331 add r1, r3, r1, lsl #9 13332.L1751: 13333 movs r3, #1 13334 cmp r5, #576 13335 str r3, [r6] 13336 ittt hi 13337 subhi r2, r2, r4 13338 mvnhi r3, #446 13339 addhi r2, r2, r3 13340 lsls r2, r2, #9 13341 bl memcpy 13342 b .L1733 13343.L1750: 13344 ldr r2, [sp, #8] 13345 ldr r3, .L1762+32 13346 ldr r1, [sp, #36] 13347 add r3, r3, r2 13348 ldr r2, [sp, #16] 13349 add r0, r0, r3, lsl #9 13350 b .L1751 13351.L1763: 13352 .align 2 13353.L1762: 13354 .word .LANCHOR179 13355 .word .LANCHOR0 13356 .word idb_buf+262144 13357 .word idb_buf+16388 13358 .word .LANCHOR105 13359 .word gp_flash_check_buf 13360 .word idb_buf 13361 .word .LC109 13362 .word 8388544 13363 .size sftl_write, .-sftl_write 13364 .section .text.FtlLoadSysInfo,"ax",%progbits 13365 .align 1 13366 .global FtlLoadSysInfo 13367 .syntax unified 13368 .thumb 13369 .thumb_func 13370 .fpu softvfp 13371 .type FtlLoadSysInfo, %function 13372FtlLoadSysInfo: 13373 @ args = 0, pretend = 0, frame = 8 13374 @ frame_needed = 0, uses_anonymous_args = 0 13375 push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr} 13376 movs r1, #0 13377 ldr r8, .L1785+136 13378 ldr r5, .L1785 13379 ldr r3, [r8] 13380 ldr r4, .L1785+4 13381 ldr r10, .L1785+140 13382 ldrh r2, [r5] 13383 ldr r7, .L1785+8 13384 str r3, [r4, #8] 13385 ldr r6, .L1785+12 13386 ldr r3, [r10] 13387 lsls r2, r2, #1 13388 ldr r0, [r7] 13389 str r3, [r4, #12] 13390 bl ftl_memset 13391 ldrh r0, [r6] 13392 movw r3, #65535 13393 str r7, [sp] 13394 cmp r0, r3 13395 bne .L1765 13396.L1773: 13397 mov r0, #-1 13398.L1764: 13399 add sp, sp, #8 13400 @ sp needed 13401 pop {r4, r5, r6, r7, r8, r10, fp, pc} 13402.L1765: 13403 movs r1, #1 13404 mov fp, r4 13405 bl FtlGetLastWrittenPage 13406 ldr r3, .L1785+16 13407 sxth r7, r0 13408 adds r0, r0, #1 13409 strh r0, [r6, #2] @ movhi 13410.L1767: 13411 cmp r7, #0 13412 bge .L1770 13413 movw r2, #1437 13414 ldr r1, .L1785+20 13415 ldr r0, .L1785+24 13416 bl printf 13417.L1769: 13418 ldr r2, .L1785+28 13419 ldrh r3, [r5] 13420 ldrh r2, [r2] 13421 adds r3, r3, #24 13422 cmp r2, r3, lsl #1 13423 bcs .L1772 13424 movw r2, #1439 13425 ldr r1, .L1785+20 13426 ldr r0, .L1785+24 13427 bl printf 13428.L1772: 13429 ldr r7, .L1785+32 13430 movs r2, #48 13431 ldr r1, [r4, #8] 13432 mov r0, r7 13433 bl ftl_memcpy 13434 ldrh r2, [r5] 13435 ldr r1, [r4, #8] 13436 ldr r3, [sp] 13437 lsls r2, r2, #1 13438 adds r1, r1, #48 13439 ldr r0, [r3] 13440 bl ftl_memcpy 13441 ldrh r1, [r5] 13442 ldr r3, [r4, #8] 13443 mov r4, r7 13444 lsrs r2, r1, #3 13445 adds r1, r1, #24 13446 lsls r1, r1, #1 13447 adds r2, r2, #4 13448 bic r1, r1, #3 13449 add r1, r1, r3 13450 ldr r3, .L1785+36 13451 ldr r0, [r3] 13452 bl ftl_memcpy 13453 ldr r2, [r7] 13454 ldr r3, .L1785+16 13455 cmp r2, r3 13456 bne .L1773 13457 ldr r3, .L1785+40 13458 ldrb r2, [r7, #10] @ zero_extendqisi2 13459 ldrh r5, [r7, #8] 13460 ldrh r3, [r3] 13461 strh r5, [r6, #6] @ movhi 13462 cmp r2, r3 13463 bne .L1773 13464 ldr r3, .L1785+44 13465 ldr r2, .L1785+48 13466 str r5, [r3] 13467 ldr r3, .L1785+52 13468 ldrh r3, [r3] 13469 muls r3, r5, r3 13470 str r3, [r2] 13471 ldr r2, .L1785+56 13472 ldrh r2, [r2] 13473 muls r3, r2, r3 13474 ldr r2, .L1785+60 13475 str r3, [r2] 13476 ldr r3, .L1785+64 13477 ldr r6, [r3] 13478 ldr r3, .L1785+68 13479 ldrh r0, [r3, #6] 13480 ldr r3, .L1785+72 13481 subs r0, r6, r0 13482 ldrh r1, [r3] 13483 subs r0, r0, r5 13484 bl __aeabi_uidiv 13485 ldr r3, .L1785+76 13486 cmp r5, r6 13487 strh r0, [r3] @ movhi 13488 bls .L1774 13489 movw r2, #1461 13490 ldr r1, .L1785+20 13491 ldr r0, .L1785+24 13492 bl printf 13493.L1774: 13494 ldrh r2, [r4, #16] 13495 ldr r3, .L1785+80 13496 ldrh ip, [r4, #14] 13497 ldr r7, .L1785+84 13498 lsrs r1, r2, #6 13499 and r2, r2, #63 13500 strb r2, [r3, #6] 13501 ldrb r2, [r4, #11] @ zero_extendqisi2 13502 strh r1, [r3, #2] @ movhi 13503 ldr r1, .L1785+88 13504 strb r2, [r3, #8] 13505 ldrh r2, [r4, #18] 13506 strh ip, [r3] @ movhi 13507 movw r3, #65535 13508 strh r3, [r7] @ movhi 13509 movs r3, #0 13510 strh r2, [r1] @ movhi 13511 ldrh r2, [r4, #20] 13512 strh r3, [r7, #2] @ movhi 13513 strb r3, [r7, #6] 13514 strb r3, [r7, #8] 13515 lsrs r5, r2, #6 13516 and r2, r2, #63 13517 strb r2, [r1, #6] 13518 ldrb r2, [r4, #12] @ zero_extendqisi2 13519 strh r5, [r1, #2] @ movhi 13520 ldrh r5, [r4, #22] 13521 strb r2, [r1, #8] 13522 ldr r2, .L1785+92 13523 strh r5, [r2] @ movhi 13524 ldrh r5, [r4, #24] 13525 lsrs r6, r5, #6 13526 and r5, r5, #63 13527 strb r5, [r2, #6] 13528 ldrb r5, [r4, #13] @ zero_extendqisi2 13529 strh r6, [r2, #2] @ movhi 13530 ldr r6, [r4, #32] 13531 strb r5, [r2, #8] 13532 ldr r5, .L1785+96 13533 str r3, [r5] 13534 ldr r5, .L1785+100 13535 str r3, [r5] 13536 ldr r5, .L1785+104 13537 str r3, [r5] 13538 ldr r5, .L1785+108 13539 str r3, [r5] 13540 ldr r5, .L1785+112 13541 str r6, [r5] 13542 mov r6, r1 13543 ldr r5, .L1785+116 13544 str r3, [r5] 13545 ldr r5, .L1785+120 13546 str r3, [r5] 13547 ldr r5, .L1785+124 13548 ldr lr, [r4, #40] 13549 str r3, [r5] 13550 ldr r3, .L1785+128 13551 ldr r5, [r3] 13552 cmp lr, r5 13553 mov r5, r2 13554 it hi 13555 strhi lr, [r3] 13556 ldr r3, .L1785+132 13557 ldr r2, [r4, #36] 13558 ldr r1, [r3] 13559 cmp r2, r1 13560 it hi 13561 strhi r2, [r3] 13562 movw r3, #65535 13563 cmp ip, r3 13564 beq .L1777 13565 ldr r0, .L1785+80 13566 bl make_superblock 13567.L1777: 13568 ldrh r2, [r6] 13569 movw r3, #65535 13570 cmp r2, r3 13571 beq .L1778 13572 ldr r0, .L1785+88 13573 bl make_superblock 13574.L1778: 13575 ldrh r2, [r5] 13576 movw r3, #65535 13577 cmp r2, r3 13578 beq .L1779 13579 ldr r0, .L1785+92 13580 bl make_superblock 13581.L1779: 13582 ldrh r2, [r7] 13583 movw r3, #65535 13584 cmp r2, r3 13585 beq .L1780 13586 ldr r0, .L1785+84 13587 bl make_superblock 13588.L1780: 13589 movs r0, #0 13590 b .L1764 13591.L1770: 13592 ldrh r2, [r6] 13593 mov r0, fp 13594 str r3, [sp, #4] 13595 orr r2, r7, r2, lsl #10 13596 str r2, [r4, #4] 13597 ldr r2, [r8] 13598 str r2, [r4, #8] 13599 movs r2, #1 13600 mov r1, r2 13601 bl FlashReadPages 13602 ldr r2, [r4] 13603 ldr r3, [sp, #4] 13604 adds r2, r2, #1 13605 beq .L1768 13606 ldr r2, [r8] 13607 ldr r2, [r2] 13608 cmp r2, r3 13609 bne .L1768 13610 ldr r2, [r10] 13611 ldrh r1, [r2] 13612 movw r2, #61604 13613 cmp r1, r2 13614 beq .L1769 13615.L1768: 13616 subs r7, r7, #1 13617 sxth r7, r7 13618 b .L1767 13619.L1786: 13620 .align 2 13621.L1785: 13622 .word .LANCHOR5 13623 .word .LANCHOR106 13624 .word .LANCHOR42 13625 .word .LANCHOR79 13626 .word 1179929683 13627 .word .LANCHOR180 13628 .word .LC1 13629 .word .LANCHOR23 13630 .word .LANCHOR39 13631 .word .LANCHOR1 13632 .word .LANCHOR10 13633 .word .LANCHOR181 13634 .word .LANCHOR61 13635 .word .LANCHOR19 13636 .word .LANCHOR12 13637 .word .LANCHOR34 13638 .word .LANCHOR7 13639 .word .LANCHOR37 13640 .word .LANCHOR3 13641 .word .LANCHOR78 13642 .word .LANCHOR51 13643 .word .LANCHOR80 13644 .word .LANCHOR52 13645 .word .LANCHOR53 13646 .word .LANCHOR67 13647 .word .LANCHOR64 13648 .word .LANCHOR62 13649 .word .LANCHOR66 13650 .word .LANCHOR72 13651 .word .LANCHOR73 13652 .word .LANCHOR76 13653 .word .LANCHOR65 13654 .word .LANCHOR70 13655 .word .LANCHOR71 13656 .word .LANCHOR107 13657 .word .LANCHOR108 13658 .size FtlLoadSysInfo, .-FtlLoadSysInfo 13659 .section .text.FtlSysBlkInit,"ax",%progbits 13660 .align 1 13661 .global FtlSysBlkInit 13662 .syntax unified 13663 .thumb 13664 .thumb_func 13665 .fpu softvfp 13666 .type FtlSysBlkInit, %function 13667FtlSysBlkInit: 13668 @ args = 0, pretend = 0, frame = 0 13669 @ frame_needed = 0, uses_anonymous_args = 0 13670 push {r3, r4, r5, r6, r7, lr} 13671 movs r3, #0 13672 ldr r6, .L1802 13673 strh r3, [r6] @ movhi 13674 ldr r3, .L1802+4 13675 ldrh r0, [r3] 13676 bl FtlFreeSysBlkQueueInit 13677 bl FtlScanSysBlk 13678 ldr r3, .L1802+8 13679 ldrh r2, [r3] 13680 movw r3, #65535 13681 cmp r2, r3 13682 bne .L1788 13683.L1790: 13684 mov r7, #-1 13685.L1787: 13686 mov r0, r7 13687 pop {r3, r4, r5, r6, r7, pc} 13688.L1788: 13689 bl FtlLoadSysInfo 13690 mov r7, r0 13691 cmp r0, #0 13692 bne .L1790 13693 bl FtlLoadMapInfo 13694 bl FtlLoadVonderInfo 13695 bl Ftl_load_ext_data 13696 bl FtlLoadEctTbl 13697 bl FtlFreeSysBLkSort 13698 bl SupperBlkListInit 13699 bl FtlPowerLostRecovery 13700 movs r0, #1 13701 bl FtlUpdateVaildLpn 13702 ldr r3, .L1802+12 13703 movs r0, #12 13704 ldrh r1, [r3] 13705 ldr r3, .L1802+16 13706 ldr r2, [r3] 13707 mov r3, r7 13708.L1791: 13709 cmp r3, r1 13710 bge .L1796 13711 mla r4, r0, r3, r2 13712 ldr r4, [r4, #4] 13713 cmp r4, #0 13714 bge .L1792 13715.L1796: 13716 ldr r4, .L1802+20 13717 cmp r3, r1 13718 ldr r5, .L1802+24 13719 ldrh r2, [r4, #28] 13720 add r2, r2, #1 13721 strh r2, [r4, #28] @ movhi 13722 bge .L1800 13723.L1793: 13724 ldr r6, .L1802+28 13725 ldr r0, .L1802+24 13726 bl FtlSuperblockPowerLostFix 13727 mov r0, r6 13728 bl FtlSuperblockPowerLostFix 13729 ldr r3, .L1802+32 13730 ldrh r1, [r5] 13731 ldrh r0, [r5, #4] 13732 ldr r2, [r3] 13733 ldrh r3, [r2, r1, lsl #1] 13734 subs r3, r3, r0 13735 ldr r0, .L1802+36 13736 strh r3, [r2, r1, lsl #1] @ movhi 13737 ldrh ip, [r6] 13738 ldrh r3, [r0] 13739 ldrh lr, [r6, #4] 13740 strh r3, [r5, #2] @ movhi 13741 movs r3, #0 13742 strb r3, [r5, #6] 13743 strh r3, [r5, #4] @ movhi 13744 ldrh r1, [r2, ip, lsl #1] 13745 sub r1, r1, lr 13746 strh r1, [r2, ip, lsl #1] @ movhi 13747 ldrh r2, [r0] 13748 ldr r0, .L1802+40 13749 strb r3, [r6, #6] 13750 strh r2, [r6, #2] @ movhi 13751 strh r3, [r6, #4] @ movhi 13752 bl FtlMapBlkWriteDump_data 13753 ldr r0, .L1802+44 13754 bl FtlMapBlkWriteDump_data 13755 ldrh r3, [r4, #30] 13756 adds r3, r3, #1 13757 strh r3, [r4, #30] @ movhi 13758 bl l2p_flush 13759 bl FtlVpcTblFlush 13760.L1801: 13761 bl FtlVpcTblFlush 13762 ldrh r0, [r5] 13763 movw r3, #65535 13764 cmp r0, r3 13765 beq .L1799 13766 ldrh r3, [r5, #4] 13767 cbnz r3, .L1799 13768 ldr r5, .L1802+28 13769 ldrh r3, [r5, #4] 13770 cbnz r3, .L1799 13771 bl FtlGcRefreshBlock 13772 ldrh r0, [r5] 13773 bl FtlGcRefreshBlock 13774 ldr r0, .L1802+24 13775 bl allocate_new_data_superblock 13776 mov r0, r5 13777 bl allocate_new_data_superblock 13778.L1799: 13779 ldrh r3, [r4, #28] 13780 lsls r3, r3, #27 13781 bne .L1787 13782 bl FtlVpcCheckAndModify 13783 b .L1787 13784.L1792: 13785 adds r3, r3, #1 13786 b .L1791 13787.L1800: 13788 ldrh r3, [r6] 13789 cmp r3, #0 13790 bne .L1793 13791 bl l2p_flush 13792 b .L1801 13793.L1803: 13794 .align 2 13795.L1802: 13796 .word .LANCHOR161 13797 .word .LANCHOR4 13798 .word .LANCHOR79 13799 .word .LANCHOR33 13800 .word .LANCHOR55 13801 .word .LANCHOR39 13802 .word .LANCHOR51 13803 .word .LANCHOR52 13804 .word .LANCHOR42 13805 .word .LANCHOR19 13806 .word .LANCHOR144 13807 .word .LANCHOR149 13808 .size FtlSysBlkInit, .-FtlSysBlkInit 13809 .section .text.ftl_low_format,"ax",%progbits 13810 .align 1 13811 .global ftl_low_format 13812 .syntax unified 13813 .thumb 13814 .thumb_func 13815 .fpu softvfp 13816 .type ftl_low_format, %function 13817ftl_low_format: 13818 @ args = 0, pretend = 0, frame = 16 13819 @ frame_needed = 0, uses_anonymous_args = 0 13820 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr} 13821 movs r3, #0 13822 ldr r6, .L1828 13823 ldr r2, .L1828+4 13824 ldr r5, .L1828+8 13825 ldrh r0, [r6] 13826 str r3, [r2] 13827 str r3, [r5] 13828 bl FtlFreeSysBlkQueueInit 13829 bl FtlLoadBbt 13830 cbz r0, .L1805 13831 bl FtlMakeBbt 13832.L1805: 13833 ldr r3, .L1828+12 13834 ldr r2, .L1828+16 13835 ldr ip, .L1828+100 13836 ldrh r1, [r3] 13837 ldr r4, [r2] 13838 ldr r2, .L1828+20 13839 str r3, [sp, #4] 13840 lsls r1, r1, #7 13841 ldr r7, [r2] 13842 movs r2, #0 13843.L1806: 13844 uxth r3, r2 13845 adds r2, r2, #1 13846 cmp r3, r1 13847 blt .L1807 13848 ldr r3, .L1828+24 13849 movs r7, #0 13850 ldr r10, .L1828+104 13851 ldrh r4, [r3] 13852 mov r8, r3 13853 mov fp, r10 13854.L1808: 13855 ldrh r3, [r10] 13856 cmp r3, r4 13857 bhi .L1809 13858 ldr r4, .L1828+28 13859 subs r3, r7, #2 13860 ldrh r1, [r4] 13861 cmp r3, r1, lsl #1 13862 bgt .L1810 13863.L1814: 13864 movs r6, #0 13865 mov r7, r6 13866.L1811: 13867 ldrh r3, [r8] 13868 uxth r0, r6 13869 adds r6, r6, #1 13870 cmp r3, r0 13871 bhi .L1815 13872 ldrh r2, [fp] 13873 ldr r3, .L1828+32 13874 ldrh r4, [r4] 13875 ldr r6, .L1828+36 13876 str r2, [r3] 13877 ldr r3, .L1828+40 13878 mov r1, r4 13879 ldr r2, [r3] 13880 mov r0, r2 13881 str r2, [sp, #12] 13882 bl __aeabi_uidiv 13883 ubfx r10, r0, #5, #16 13884 mov r3, r0 13885 str r0, [r6] 13886 add r1, r10, #36 13887 ldr r0, .L1828+44 13888 strh r1, [r0] @ movhi 13889 movs r1, #24 13890 muls r1, r4, r1 13891 str r0, [sp] 13892 cmp r7, r1 13893 ble .L1816 13894 ldr r2, [sp, #12] 13895 mov r1, r4 13896 str r3, [sp, #8] 13897 subs r0, r2, r7 13898 bl __aeabi_uidiv 13899 ldr r3, [sp] 13900 str r0, [r6] 13901 lsrs r0, r0, #5 13902 adds r0, r0, #24 13903 strh r0, [r3] @ movhi 13904 ldr r3, [sp, #8] 13905.L1816: 13906 ldr r2, .L1828+48 13907 ldrh r2, [r2] 13908 cbz r2, .L1818 13909 ldr r1, .L1828+44 13910 ldrh r0, [r1] 13911 add r0, r0, r2, lsr #1 13912 strh r0, [r1] @ movhi 13913 mul r0, r4, r2 13914 cmp r7, r0 13915 itttt lt 13916 addlt r2, r2, #32 13917 strlt r3, [r6] 13918 addlt r2, r2, r10 13919 strhlt r2, [r1] @ movhi 13920.L1818: 13921 ldr r3, [sp] 13922 ldr r7, .L1828+52 13923 ldr r10, .L1828+108 13924 ldrh r2, [r3] 13925 ldr r3, [r6] 13926 subs r3, r3, r2 13927 muls r4, r3, r4 13928 ldr r3, .L1828+56 13929 ldrh r3, [r3] 13930 str r4, [r7] 13931 muls r4, r3, r4 13932 ldr r3, [sp, #4] 13933 ldrh r3, [r3] 13934 str r4, [r6] 13935 ldr r6, .L1828+60 13936 muls r4, r3, r4 13937 ldr r3, .L1828+64 13938 str r4, [r3] 13939 movw r4, #65535 13940 bl FtlBbmTblFlush 13941 ldrh r2, [fp] 13942 movs r1, #0 13943 ldr r0, [r10] 13944 lsls r2, r2, #1 13945 bl ftl_memset 13946 ldr r2, .L1828+68 13947 movs r3, #0 13948 strh r3, [r6, #2] @ movhi 13949 movs r1, #255 13950 strb r3, [r6, #6] 13951 str r3, [r2] 13952 ldr r2, .L1828+72 13953 strh r3, [r6] @ movhi 13954 strh r3, [r2, #2] @ movhi 13955 strb r3, [r2, #6] 13956 strb r3, [r2, #8] 13957 movs r3, #1 13958 strh r4, [r2] @ movhi 13959 ldrh r2, [r8] 13960 mov r8, r10 13961 strb r3, [r6, #8] 13962 mov r10, r6 13963 ldr r3, .L1828+76 13964 lsrs r2, r2, #3 13965 ldr r0, [r3] 13966 bl ftl_memset 13967.L1820: 13968 mov r0, r10 13969 bl make_superblock 13970 ldrb r3, [r6, #7] @ zero_extendqisi2 13971 ldrh r2, [r6] 13972 cmp r3, #0 13973 bne .L1821 13974 ldr r3, [r8] 13975 strh r4, [r3, r2, lsl #1] @ movhi 13976 ldrh r3, [r6] 13977 adds r3, r3, #1 13978 strh r3, [r6] @ movhi 13979 b .L1820 13980.L1807: 13981 mvns r0, r3 13982 orr r0, r3, r0, lsl #16 13983 str r0, [r4, r3, lsl #2] 13984 str ip, [r7, r3, lsl #2] 13985 b .L1806 13986.L1809: 13987 mov r0, r4 13988 movs r1, #1 13989 bl FtlLowFormatEraseBlock 13990 adds r4, r4, #1 13991 add r7, r7, r0 13992 uxth r7, r7 13993 uxth r4, r4 13994 b .L1808 13995.L1810: 13996 mov r0, r7 13997 bl __aeabi_uidiv 13998 ldr r3, .L1828+80 13999 ldr r3, [r3] 14000 add r0, r0, r3 14001 uxth r0, r0 14002 bl FtlSysBlkNumInit 14003 ldrh r0, [r6] 14004 bl FtlFreeSysBlkQueueInit 14005 ldrh r6, [r8] 14006.L1812: 14007 ldrh r3, [fp] 14008 cmp r3, r6 14009 bls .L1814 14010 mov r0, r6 14011 movs r1, #1 14012 adds r6, r6, #1 14013 bl FtlLowFormatEraseBlock 14014 uxth r6, r6 14015 b .L1812 14016.L1815: 14017 movs r1, #0 14018 bl FtlLowFormatEraseBlock 14019 add r7, r7, r0 14020 uxth r7, r7 14021 b .L1811 14022.L1821: 14023 ldr r3, [r5] 14024 ldrh r1, [r6, #4] 14025 ldr r4, .L1828+84 14026 str r3, [r6, #12] 14027 adds r3, r3, #1 14028 str r3, [r5] 14029 ldr r3, [r8] 14030 mov r10, r4 14031 strh r1, [r3, r2, lsl #1] @ movhi 14032 movs r3, #0 14033 strh r3, [r4, #2] @ movhi 14034 strb r3, [r4, #6] 14035 ldrh r3, [r6] 14036 movw r6, #65535 14037 adds r3, r3, #1 14038 strh r3, [r4] @ movhi 14039 movs r3, #1 14040 strb r3, [r4, #8] 14041.L1822: 14042 mov r0, r10 14043 bl make_superblock 14044 ldrb r3, [r4, #7] @ zero_extendqisi2 14045 ldrh r2, [r4] 14046 cbnz r3, .L1823 14047 ldr r3, [r8] 14048 strh r6, [r3, r2, lsl #1] @ movhi 14049 ldrh r3, [r4] 14050 adds r3, r3, #1 14051 strh r3, [r4] @ movhi 14052 b .L1822 14053.L1823: 14054 ldr r3, [r5] 14055 ldrh r1, [r4, #4] 14056 str r3, [r4, #12] 14057 adds r3, r3, #1 14058 str r3, [r5] 14059 movw r4, #65535 14060 ldr r3, [r8] 14061 strh r1, [r3, r2, lsl #1] @ movhi 14062 ldr r3, .L1828+88 14063 strh r4, [r3] @ movhi 14064 bl FtlFreeSysBlkQueueOut 14065 ldr r3, .L1828+92 14066 movs r2, #0 14067 strh r2, [r3, #2] @ movhi 14068 ldr r2, [r7] 14069 strh r0, [r3] @ movhi 14070 strh r4, [r3, #4] @ movhi 14071 strh r2, [r3, #6] @ movhi 14072 ldr r2, [r5] 14073 str r2, [r3, #8] 14074 adds r2, r2, #1 14075 str r2, [r5] 14076 bl FtlVpcTblFlush 14077 bl FtlSysBlkInit 14078 cbnz r0, .L1824 14079 ldr r3, .L1828+96 14080 movs r2, #1 14081 str r2, [r3] 14082.L1824: 14083 movs r0, #0 14084 add sp, sp, #16 14085 @ sp needed 14086 pop {r4, r5, r6, r7, r8, r10, fp, pc} 14087.L1829: 14088 .align 2 14089.L1828: 14090 .word .LANCHOR4 14091 .word .LANCHOR71 14092 .word .LANCHOR70 14093 .word .LANCHOR12 14094 .word .LANCHOR115 14095 .word .LANCHOR113 14096 .word .LANCHOR5 14097 .word .LANCHOR3 14098 .word .LANCHOR112 14099 .word .LANCHOR61 14100 .word .LANCHOR7 14101 .word .LANCHOR78 14102 .word .LANCHOR15 14103 .word .LANCHOR181 14104 .word .LANCHOR19 14105 .word .LANCHOR51 14106 .word .LANCHOR34 14107 .word .LANCHOR59 14108 .word .LANCHOR80 14109 .word .LANCHOR1 14110 .word .LANCHOR31 14111 .word .LANCHOR52 14112 .word .LANCHOR53 14113 .word .LANCHOR79 14114 .word .LANCHOR86 14115 .word 168778952 14116 .word .LANCHOR6 14117 .word .LANCHOR42 14118 .size ftl_low_format, .-ftl_low_format 14119 .section .text.sftl_init,"ax",%progbits 14120 .align 1 14121 .global sftl_init 14122 .syntax unified 14123 .thumb 14124 .thumb_func 14125 .fpu softvfp 14126 .type sftl_init, %function 14127sftl_init: 14128 @ args = 0, pretend = 0, frame = 0 14129 @ frame_needed = 0, uses_anonymous_args = 0 14130 push {r4, lr} 14131 mov r3, #-1 14132 ldr r4, .L1836 14133 ldr r1, .L1836+4 14134 ldr r0, .L1836+8 14135 str r3, [r4] 14136 bl printf 14137 ldr r0, .L1836+12 14138 bl FtlConstantsInit 14139 bl FtlMemInit 14140 bl FtlVariablesInit 14141 ldr r3, .L1836+16 14142 ldrh r0, [r3] 14143 bl FtlFreeSysBlkQueueInit 14144 bl FtlLoadBbt 14145 cbnz r0, .L1834 14146 bl FtlSysBlkInit 14147 cbnz r0, .L1834 14148 movs r3, #1 14149 str r3, [r4] 14150 ldr r3, .L1836+20 14151 ldrh r3, [r3] 14152 cmp r3, #15 14153 bhi .L1834 14154 movw r4, #8129 14155.L1833: 14156 movs r1, #1 14157 movs r0, #0 14158 bl rk_ftl_garbage_collect 14159 subs r4, r4, #1 14160 bne .L1833 14161.L1834: 14162 movs r0, #0 14163 pop {r4, pc} 14164.L1837: 14165 .align 2 14166.L1836: 14167 .word .LANCHOR86 14168 .word .LC70 14169 .word .LC71 14170 .word .LANCHOR0 14171 .word .LANCHOR4 14172 .word .LANCHOR48 14173 .size sftl_init, .-sftl_init 14174 .section .text.ftl_memcmp,"ax",%progbits 14175 .align 1 14176 .global ftl_memcmp 14177 .syntax unified 14178 .thumb 14179 .thumb_func 14180 .fpu softvfp 14181 .type ftl_memcmp, %function 14182ftl_memcmp: 14183 @ args = 0, pretend = 0, frame = 0 14184 @ frame_needed = 0, uses_anonymous_args = 0 14185 @ link register save eliminated. 14186 b memcmp 14187 .size ftl_memcmp, .-ftl_memcmp 14188 .global ftl_temp_buf 14189 .global g_nand_ops 14190 .global g_nand_phy_info 14191 .global gc_ink_free_return_value 14192 .global check_vpc_table 14193 .global FtlUpdateVaildLpnCount 14194 .global g_ect_tbl_power_up_flush 14195 .global power_up_flag 14196 .global gFtlInitStatus 14197 .global DeviceCapacity 14198 .global g_power_lost_recovery_flag 14199 .global c_mlc_erase_count_value 14200 .global g_recovery_ppa_tbl 14201 .global g_recovery_page_min_ver 14202 .global g_recovery_page_num 14203 .global g_cur_erase_blk 14204 .global g_gc_skip_write_count 14205 .global g_gc_head_data_block_count 14206 .global g_gc_head_data_block 14207 .global g_ftl_nand_free_count 14208 .global g_in_swl_replace 14209 .global g_in_gc_progress 14210 .global g_max_erase_count 14211 .global g_totle_sys_slc_erase_count 14212 .global g_totle_slc_erase_count 14213 .global g_min_erase_count 14214 .global g_totle_avg_erase_count 14215 .global g_totle_mlc_erase_count 14216 .global g_totle_l2p_write_count 14217 .global g_totle_cache_write_count 14218 .global g_tmp_data_superblock_id 14219 .global g_totle_read_page_count 14220 .global g_totle_discard_page_count 14221 .global g_totle_read_sector 14222 .global g_totle_write_sector 14223 .global g_totle_write_page_count 14224 .global g_totle_gc_page_count 14225 .global g_gc_blk_index 14226 .global g_gc_merge_free_blk_threshold 14227 .global g_gc_free_blk_threshold 14228 .global g_gc_bad_block_temp_tbl 14229 .global g_gc_bad_block_gc_index 14230 .global g_gc_bad_block_temp_num 14231 .global g_gc_next_blk_1 14232 .global g_gc_next_blk 14233 .global g_gc_cur_blk_max_valid_pages 14234 .global g_gc_cur_blk_valid_pages 14235 .global g_gc_page_offset 14236 .global g_gc_blk_num 14237 .global p_gc_blk_tbl 14238 .global p_gc_page_info 14239 .global g_sys_ext_data 14240 .global g_sys_save_data 14241 .global gp_last_act_superblock 14242 .global g_gc_superblock 14243 .global g_gc_temp_superblock 14244 .global g_buffer_superblock 14245 .global g_active_superblock 14246 .global g_num_data_superblocks 14247 .global g_num_free_superblocks 14248 .global p_data_block_list_tail 14249 .global p_data_block_list_head 14250 .global p_free_data_block_list_head 14251 .global p_data_block_list_table 14252 .global g_l2p_last_update_region_id 14253 .global p_l2p_map_buf 14254 .global p_l2p_ram_map 14255 .global g_totle_vendor_block 14256 .global p_vendor_region_ppn_table 14257 .global p_vendor_block_ver_table 14258 .global p_vendor_block_valid_page_count 14259 .global p_vendor_block_table 14260 .global g_totle_map_block 14261 .global p_map_region_ppn_table 14262 .global p_map_block_ver_table 14263 .global p_map_block_valid_page_count 14264 .global p_map_block_table 14265 .global p_blk_mode_table 14266 .global p_valid_page_count_check_table 14267 .global p_valid_page_count_table 14268 .global g_totle_swl_count 14269 .global p_swl_mul_table 14270 .global p_erase_count_table 14271 .global g_ect_tbl_info_size 14272 .global gp_ect_tbl_info 14273 .global g_gc_num_req 14274 .global c_gc_page_buf_num 14275 .global gp_gc_page_buf_info 14276 .global p_gc_data_buf 14277 .global p_gc_spare_buf 14278 .global p_io_spare_buf 14279 .global p_io_data_buf_1 14280 .global p_io_data_buf_0 14281 .global p_sys_spare_buf 14282 .global p_vendor_data_buf 14283 .global p_sys_data_buf_1 14284 .global p_sys_data_buf 14285 .global p_plane_order_table 14286 .global req_gc_dst 14287 .global req_gc 14288 .global req_erase 14289 .global req_prgm 14290 .global req_read 14291 .global req_sys 14292 .global gVendorBlkInfo 14293 .global gL2pMapInfo 14294 .global gSysFreeQueue 14295 .global gSysInfo 14296 .global gBbtInfo 14297 .global g_MaxLbn 14298 .global g_VaildLpn 14299 .global g_MaxLpn 14300 .global g_MaxLbaSector 14301 .global g_GlobalDataVersion 14302 .global g_GlobalSysVersion 14303 .global ftl_gc_temp_power_lost_recovery_flag 14304 .global c_ftl_nand_max_data_blks 14305 .global c_ftl_nand_data_op_blks_per_plane 14306 .global c_ftl_nand_data_blks_per_plane 14307 .global c_ftl_nand_max_sys_blks 14308 .global c_ftl_nand_init_sys_blks_per_plane 14309 .global c_ftl_nand_sys_blks_per_plane 14310 .global c_ftl_vendor_part_size 14311 .global c_ftl_nand_max_vendor_blks 14312 .global c_ftl_nand_max_map_blks 14313 .global c_ftl_nand_map_blks_per_plane 14314 .global c_ftl_nand_vendor_region_num 14315 .global c_ftl_nand_l2pmap_ram_region_num 14316 .global c_ftl_nand_map_region_num 14317 .global c_ftl_nand_totle_phy_blks 14318 .global c_ftl_nand_reserved_blks 14319 .global c_ftl_nand_byte_pre_oob 14320 .global c_ftl_nand_byte_pre_page 14321 .global c_ftl_nand_sec_pre_page_shift 14322 .global c_ftl_nand_sec_pre_page 14323 .global c_ftl_nand_page_pre_super_blk 14324 .global c_ftl_nand_page_pre_slc_blk 14325 .global c_ftl_nand_page_pre_blk 14326 .global c_ftl_nand_bbm_buf_size 14327 .global c_ftl_nand_ext_blk_pre_plane 14328 .global c_ftl_nand_blk_pre_plane 14329 .global c_ftl_nand_planes_num 14330 .global c_ftl_nand_blks_per_die_shift 14331 .global c_ftl_nand_blks_per_die 14332 .global c_ftl_nand_planes_per_die 14333 .global c_ftl_nand_die_num 14334 .global c_ftl_nand_type 14335 .section .bss.DeviceCapacity,"aw",%nobits 14336 .align 2 14337 .set .LANCHOR26,. + 0 14338 .type DeviceCapacity, %object 14339 .size DeviceCapacity, 4 14340DeviceCapacity: 14341 .space 4 14342 .section .bss.FtlUpdateVaildLpnCount,"aw",%nobits 14343 .align 1 14344 .set .LANCHOR58,. + 0 14345 .type FtlUpdateVaildLpnCount, %object 14346 .size FtlUpdateVaildLpnCount, 2 14347FtlUpdateVaildLpnCount: 14348 .space 2 14349 .section .bss.c_ftl_nand_bbm_buf_size,"aw",%nobits 14350 .align 1 14351 .set .LANCHOR137,. + 0 14352 .type c_ftl_nand_bbm_buf_size, %object 14353 .size c_ftl_nand_bbm_buf_size, 2 14354c_ftl_nand_bbm_buf_size: 14355 .space 2 14356 .section .bss.c_ftl_nand_blk_pre_plane,"aw",%nobits 14357 .align 1 14358 .set .LANCHOR6,. + 0 14359 .type c_ftl_nand_blk_pre_plane, %object 14360 .size c_ftl_nand_blk_pre_plane, 2 14361c_ftl_nand_blk_pre_plane: 14362 .space 2 14363 .section .bss.c_ftl_nand_blks_per_die,"aw",%nobits 14364 .align 1 14365 .set .LANCHOR17,. + 0 14366 .type c_ftl_nand_blks_per_die, %object 14367 .size c_ftl_nand_blks_per_die, 2 14368c_ftl_nand_blks_per_die: 14369 .space 2 14370 .section .bss.c_ftl_nand_blks_per_die_shift,"aw",%nobits 14371 .align 1 14372 .set .LANCHOR18,. + 0 14373 .type c_ftl_nand_blks_per_die_shift, %object 14374 .size c_ftl_nand_blks_per_die_shift, 2 14375c_ftl_nand_blks_per_die_shift: 14376 .space 2 14377 .section .bss.c_ftl_nand_byte_pre_oob,"aw",%nobits 14378 .align 1 14379 .set .LANCHOR24,. + 0 14380 .type c_ftl_nand_byte_pre_oob, %object 14381 .size c_ftl_nand_byte_pre_oob, 2 14382c_ftl_nand_byte_pre_oob: 14383 .space 2 14384 .section .bss.c_ftl_nand_byte_pre_page,"aw",%nobits 14385 .align 1 14386 .set .LANCHOR23,. + 0 14387 .type c_ftl_nand_byte_pre_page, %object 14388 .size c_ftl_nand_byte_pre_page, 2 14389c_ftl_nand_byte_pre_page: 14390 .space 2 14391 .section .bss.c_ftl_nand_data_blks_per_plane,"aw",%nobits 14392 .align 1 14393 .set .LANCHOR5,. + 0 14394 .type c_ftl_nand_data_blks_per_plane, %object 14395 .size c_ftl_nand_data_blks_per_plane, 2 14396c_ftl_nand_data_blks_per_plane: 14397 .space 2 14398 .section .bss.c_ftl_nand_data_op_blks_per_plane,"aw",%nobits 14399 .align 1 14400 .set .LANCHOR78,. + 0 14401 .type c_ftl_nand_data_op_blks_per_plane, %object 14402 .size c_ftl_nand_data_op_blks_per_plane, 2 14403c_ftl_nand_data_op_blks_per_plane: 14404 .space 2 14405 .section .bss.c_ftl_nand_die_num,"aw",%nobits 14406 .align 1 14407 .set .LANCHOR10,. + 0 14408 .type c_ftl_nand_die_num, %object 14409 .size c_ftl_nand_die_num, 2 14410c_ftl_nand_die_num: 14411 .space 2 14412 .section .bss.c_ftl_nand_ext_blk_pre_plane,"aw",%nobits 14413 .align 1 14414 .set .LANCHOR15,. + 0 14415 .type c_ftl_nand_ext_blk_pre_plane, %object 14416 .size c_ftl_nand_ext_blk_pre_plane, 2 14417c_ftl_nand_ext_blk_pre_plane: 14418 .space 2 14419 .section .bss.c_ftl_nand_init_sys_blks_per_plane,"aw",%nobits 14420 .align 2 14421 .set .LANCHOR31,. + 0 14422 .type c_ftl_nand_init_sys_blks_per_plane, %object 14423 .size c_ftl_nand_init_sys_blks_per_plane, 4 14424c_ftl_nand_init_sys_blks_per_plane: 14425 .space 4 14426 .section .bss.c_ftl_nand_l2pmap_ram_region_num,"aw",%nobits 14427 .align 1 14428 .set .LANCHOR33,. + 0 14429 .type c_ftl_nand_l2pmap_ram_region_num, %object 14430 .size c_ftl_nand_l2pmap_ram_region_num, 2 14431c_ftl_nand_l2pmap_ram_region_num: 14432 .space 2 14433 .section .bss.c_ftl_nand_map_blks_per_plane,"aw",%nobits 14434 .align 1 14435 .set .LANCHOR29,. + 0 14436 .type c_ftl_nand_map_blks_per_plane, %object 14437 .size c_ftl_nand_map_blks_per_plane, 2 14438c_ftl_nand_map_blks_per_plane: 14439 .space 2 14440 .section .bss.c_ftl_nand_map_region_num,"aw",%nobits 14441 .align 1 14442 .set .LANCHOR32,. + 0 14443 .type c_ftl_nand_map_region_num, %object 14444 .size c_ftl_nand_map_region_num, 2 14445c_ftl_nand_map_region_num: 14446 .space 2 14447 .section .bss.c_ftl_nand_max_data_blks,"aw",%nobits 14448 .align 2 14449 .set .LANCHOR7,. + 0 14450 .type c_ftl_nand_max_data_blks, %object 14451 .size c_ftl_nand_max_data_blks, 4 14452c_ftl_nand_max_data_blks: 14453 .space 4 14454 .section .bss.c_ftl_nand_max_map_blks,"aw",%nobits 14455 .align 2 14456 .set .LANCHOR30,. + 0 14457 .type c_ftl_nand_max_map_blks, %object 14458 .size c_ftl_nand_max_map_blks, 4 14459c_ftl_nand_max_map_blks: 14460 .space 4 14461 .section .bss.c_ftl_nand_max_sys_blks,"aw",%nobits 14462 .align 2 14463 .set .LANCHOR4,. + 0 14464 .type c_ftl_nand_max_sys_blks, %object 14465 .size c_ftl_nand_max_sys_blks, 4 14466c_ftl_nand_max_sys_blks: 14467 .space 4 14468 .section .bss.c_ftl_nand_max_vendor_blks,"aw",%nobits 14469 .align 1 14470 .set .LANCHOR27,. + 0 14471 .type c_ftl_nand_max_vendor_blks, %object 14472 .size c_ftl_nand_max_vendor_blks, 2 14473c_ftl_nand_max_vendor_blks: 14474 .space 2 14475 .section .bss.c_ftl_nand_page_pre_blk,"aw",%nobits 14476 .align 1 14477 .set .LANCHOR19,. + 0 14478 .type c_ftl_nand_page_pre_blk, %object 14479 .size c_ftl_nand_page_pre_blk, 2 14480c_ftl_nand_page_pre_blk: 14481 .space 2 14482 .section .bss.c_ftl_nand_page_pre_slc_blk,"aw",%nobits 14483 .align 1 14484 .set .LANCHOR20,. + 0 14485 .type c_ftl_nand_page_pre_slc_blk, %object 14486 .size c_ftl_nand_page_pre_slc_blk, 2 14487c_ftl_nand_page_pre_slc_blk: 14488 .space 2 14489 .section .bss.c_ftl_nand_page_pre_super_blk,"aw",%nobits 14490 .align 1 14491 .set .LANCHOR21,. + 0 14492 .type c_ftl_nand_page_pre_super_blk, %object 14493 .size c_ftl_nand_page_pre_super_blk, 2 14494c_ftl_nand_page_pre_super_blk: 14495 .space 2 14496 .section .bss.c_ftl_nand_planes_num,"aw",%nobits 14497 .align 1 14498 .set .LANCHOR3,. + 0 14499 .type c_ftl_nand_planes_num, %object 14500 .size c_ftl_nand_planes_num, 2 14501c_ftl_nand_planes_num: 14502 .space 2 14503 .section .bss.c_ftl_nand_planes_per_die,"aw",%nobits 14504 .align 1 14505 .set .LANCHOR11,. + 0 14506 .type c_ftl_nand_planes_per_die, %object 14507 .size c_ftl_nand_planes_per_die, 2 14508c_ftl_nand_planes_per_die: 14509 .space 2 14510 .section .bss.c_ftl_nand_reserved_blks,"aw",%nobits 14511 .align 1 14512 .set .LANCHOR25,. + 0 14513 .type c_ftl_nand_reserved_blks, %object 14514 .size c_ftl_nand_reserved_blks, 2 14515c_ftl_nand_reserved_blks: 14516 .space 2 14517 .section .bss.c_ftl_nand_sec_pre_page,"aw",%nobits 14518 .align 1 14519 .set .LANCHOR12,. + 0 14520 .type c_ftl_nand_sec_pre_page, %object 14521 .size c_ftl_nand_sec_pre_page, 2 14522c_ftl_nand_sec_pre_page: 14523 .space 2 14524 .section .bss.c_ftl_nand_sec_pre_page_shift,"aw",%nobits 14525 .align 1 14526 .set .LANCHOR22,. + 0 14527 .type c_ftl_nand_sec_pre_page_shift, %object 14528 .size c_ftl_nand_sec_pre_page_shift, 2 14529c_ftl_nand_sec_pre_page_shift: 14530 .space 2 14531 .section .bss.c_ftl_nand_sys_blks_per_plane,"aw",%nobits 14532 .align 2 14533 .set .LANCHOR2,. + 0 14534 .type c_ftl_nand_sys_blks_per_plane, %object 14535 .size c_ftl_nand_sys_blks_per_plane, 4 14536c_ftl_nand_sys_blks_per_plane: 14537 .space 4 14538 .section .bss.c_ftl_nand_totle_phy_blks,"aw",%nobits 14539 .align 2 14540 .set .LANCHOR8,. + 0 14541 .type c_ftl_nand_totle_phy_blks, %object 14542 .size c_ftl_nand_totle_phy_blks, 4 14543c_ftl_nand_totle_phy_blks: 14544 .space 4 14545 .section .bss.c_ftl_nand_type,"aw",%nobits 14546 .align 1 14547 .set .LANCHOR9,. + 0 14548 .type c_ftl_nand_type, %object 14549 .size c_ftl_nand_type, 2 14550c_ftl_nand_type: 14551 .space 2 14552 .section .bss.c_ftl_nand_vendor_region_num,"aw",%nobits 14553 .align 1 14554 .set .LANCHOR28,. + 0 14555 .type c_ftl_nand_vendor_region_num, %object 14556 .size c_ftl_nand_vendor_region_num, 2 14557c_ftl_nand_vendor_region_num: 14558 .space 2 14559 .section .bss.c_ftl_vendor_part_size,"aw",%nobits 14560 .align 1 14561 .set .LANCHOR16,. + 0 14562 .type c_ftl_vendor_part_size, %object 14563 .size c_ftl_vendor_part_size, 2 14564c_ftl_vendor_part_size: 14565 .space 2 14566 .section .bss.c_gc_page_buf_num,"aw",%nobits 14567 .align 2 14568 .set .LANCHOR94,. + 0 14569 .type c_gc_page_buf_num, %object 14570 .size c_gc_page_buf_num, 4 14571c_gc_page_buf_num: 14572 .space 4 14573 .section .bss.c_mlc_erase_count_value,"aw",%nobits 14574 .align 1 14575 .set .LANCHOR14,. + 0 14576 .type c_mlc_erase_count_value, %object 14577 .size c_mlc_erase_count_value, 2 14578c_mlc_erase_count_value: 14579 .space 2 14580 .section .bss.check_buf,"aw",%nobits 14581 .align 2 14582 .type check_buf, %object 14583 .size check_buf, 4096 14584check_buf: 14585 .space 4096 14586 .section .bss.check_spare_buf,"aw",%nobits 14587 .align 2 14588 .set .LANCHOR110,. + 0 14589 .type check_spare_buf, %object 14590 .size check_spare_buf, 512 14591check_spare_buf: 14592 .space 512 14593 .section .bss.check_vpc_table,"aw",%nobits 14594 .align 1 14595 .type check_vpc_table, %object 14596 .size check_vpc_table, 16384 14597check_vpc_table: 14598 .space 16384 14599 .section .bss.ftl_gc_temp_power_lost_recovery_flag,"aw",%nobits 14600 .align 2 14601 .set .LANCHOR152,. + 0 14602 .type ftl_gc_temp_power_lost_recovery_flag, %object 14603 .size ftl_gc_temp_power_lost_recovery_flag, 4 14604ftl_gc_temp_power_lost_recovery_flag: 14605 .space 4 14606 .section .bss.ftl_temp_buf,"aw",%nobits 14607 .align 2 14608 .type ftl_temp_buf, %object 14609 .size ftl_temp_buf, 4096 14610ftl_temp_buf: 14611 .space 4096 14612 .section .bss.gBbtInfo,"aw",%nobits 14613 .align 2 14614 .set .LANCHOR37,. + 0 14615 .type gBbtInfo, %object 14616 .size gBbtInfo, 60 14617gBbtInfo: 14618 .space 60 14619 .section .bss.gL2pMapInfo,"aw",%nobits 14620 .align 2 14621 .set .LANCHOR144,. + 0 14622 .type gL2pMapInfo, %object 14623 .size gL2pMapInfo, 40 14624gL2pMapInfo: 14625 .space 40 14626 .section .bss.gSysFreeQueue,"aw",%nobits 14627 .align 1 14628 .set .LANCHOR38,. + 0 14629 .type gSysFreeQueue, %object 14630 .size gSysFreeQueue, 2056 14631gSysFreeQueue: 14632 .space 2056 14633 .section .bss.gSysInfo,"aw",%nobits 14634 .align 2 14635 .set .LANCHOR79,. + 0 14636 .type gSysInfo, %object 14637 .size gSysInfo, 12 14638gSysInfo: 14639 .space 12 14640 .section .bss.gVendorBlkInfo,"aw",%nobits 14641 .align 2 14642 .set .LANCHOR149,. + 0 14643 .type gVendorBlkInfo, %object 14644 .size gVendorBlkInfo, 40 14645gVendorBlkInfo: 14646 .space 40 14647 .section .bss.g_GlobalDataVersion,"aw",%nobits 14648 .align 2 14649 .set .LANCHOR71,. + 0 14650 .type g_GlobalDataVersion, %object 14651 .size g_GlobalDataVersion, 4 14652g_GlobalDataVersion: 14653 .space 4 14654 .section .bss.g_GlobalSysVersion,"aw",%nobits 14655 .align 2 14656 .set .LANCHOR70,. + 0 14657 .type g_GlobalSysVersion, %object 14658 .size g_GlobalSysVersion, 4 14659g_GlobalSysVersion: 14660 .space 4 14661 .section .bss.g_MaxLbaSector,"aw",%nobits 14662 .align 2 14663 .set .LANCHOR34,. + 0 14664 .type g_MaxLbaSector, %object 14665 .size g_MaxLbaSector, 4 14666g_MaxLbaSector: 14667 .space 4 14668 .section .bss.g_MaxLbn,"aw",%nobits 14669 .align 2 14670 .set .LANCHOR181,. + 0 14671 .type g_MaxLbn, %object 14672 .size g_MaxLbn, 4 14673g_MaxLbn: 14674 .space 4 14675 .section .bss.g_MaxLpn,"aw",%nobits 14676 .align 2 14677 .set .LANCHOR61,. + 0 14678 .type g_MaxLpn, %object 14679 .size g_MaxLpn, 4 14680g_MaxLpn: 14681 .space 4 14682 .section .bss.g_VaildLpn,"aw",%nobits 14683 .align 2 14684 .set .LANCHOR59,. + 0 14685 .type g_VaildLpn, %object 14686 .size g_VaildLpn, 4 14687g_VaildLpn: 14688 .space 4 14689 .section .bss.g_active_superblock,"aw",%nobits 14690 .align 2 14691 .set .LANCHOR51,. + 0 14692 .type g_active_superblock, %object 14693 .size g_active_superblock, 48 14694g_active_superblock: 14695 .space 48 14696 .section .bss.g_buffer_superblock,"aw",%nobits 14697 .align 2 14698 .set .LANCHOR52,. + 0 14699 .type g_buffer_superblock, %object 14700 .size g_buffer_superblock, 48 14701g_buffer_superblock: 14702 .space 48 14703 .section .bss.g_cur_erase_blk,"aw",%nobits 14704 .align 2 14705 .set .LANCHOR112,. + 0 14706 .type g_cur_erase_blk, %object 14707 .size g_cur_erase_blk, 4 14708g_cur_erase_blk: 14709 .space 4 14710 .section .bss.g_ect_tbl_info_size,"aw",%nobits 14711 .align 1 14712 .set .LANCHOR125,. + 0 14713 .type g_ect_tbl_info_size, %object 14714 .size g_ect_tbl_info_size, 2 14715g_ect_tbl_info_size: 14716 .space 2 14717 .section .bss.g_ect_tbl_power_up_flush,"aw",%nobits 14718 .align 1 14719 .set .LANCHOR165,. + 0 14720 .type g_ect_tbl_power_up_flush, %object 14721 .size g_ect_tbl_power_up_flush, 2 14722g_ect_tbl_power_up_flush: 14723 .space 2 14724 .section .bss.g_ftl_nand_free_count,"aw",%nobits 14725 .align 2 14726 .set .LANCHOR176,. + 0 14727 .type g_ftl_nand_free_count, %object 14728 .size g_ftl_nand_free_count, 4 14729g_ftl_nand_free_count: 14730 .space 4 14731 .section .bss.g_gc_bad_block_gc_index,"aw",%nobits 14732 .align 1 14733 .set .LANCHOR103,. + 0 14734 .type g_gc_bad_block_gc_index, %object 14735 .size g_gc_bad_block_gc_index, 2 14736g_gc_bad_block_gc_index: 14737 .space 2 14738 .section .bss.g_gc_bad_block_temp_num,"aw",%nobits 14739 .align 1 14740 .set .LANCHOR101,. + 0 14741 .type g_gc_bad_block_temp_num, %object 14742 .size g_gc_bad_block_temp_num, 2 14743g_gc_bad_block_temp_num: 14744 .space 2 14745 .section .bss.g_gc_bad_block_temp_tbl,"aw",%nobits 14746 .align 1 14747 .set .LANCHOR102,. + 0 14748 .type g_gc_bad_block_temp_tbl, %object 14749 .size g_gc_bad_block_temp_tbl, 34 14750g_gc_bad_block_temp_tbl: 14751 .space 34 14752 .section .bss.g_gc_blk_index,"aw",%nobits 14753 .align 1 14754 .set .LANCHOR85,. + 0 14755 .type g_gc_blk_index, %object 14756 .size g_gc_blk_index, 2 14757g_gc_blk_index: 14758 .space 2 14759 .section .bss.g_gc_blk_num,"aw",%nobits 14760 .align 1 14761 .set .LANCHOR96,. + 0 14762 .type g_gc_blk_num, %object 14763 .size g_gc_blk_num, 2 14764g_gc_blk_num: 14765 .space 2 14766 .section .bss.g_gc_cur_blk_max_valid_pages,"aw",%nobits 14767 .align 1 14768 .set .LANCHOR174,. + 0 14769 .type g_gc_cur_blk_max_valid_pages, %object 14770 .size g_gc_cur_blk_max_valid_pages, 2 14771g_gc_cur_blk_max_valid_pages: 14772 .space 2 14773 .section .bss.g_gc_cur_blk_valid_pages,"aw",%nobits 14774 .align 1 14775 .set .LANCHOR173,. + 0 14776 .type g_gc_cur_blk_valid_pages, %object 14777 .size g_gc_cur_blk_valid_pages, 2 14778g_gc_cur_blk_valid_pages: 14779 .space 2 14780 .section .bss.g_gc_free_blk_threshold,"aw",%nobits 14781 .align 1 14782 .set .LANCHOR82,. + 0 14783 .type g_gc_free_blk_threshold, %object 14784 .size g_gc_free_blk_threshold, 2 14785g_gc_free_blk_threshold: 14786 .space 2 14787 .section .bss.g_gc_head_data_block,"aw",%nobits 14788 .align 2 14789 .set .LANCHOR118,. + 0 14790 .type g_gc_head_data_block, %object 14791 .size g_gc_head_data_block, 4 14792g_gc_head_data_block: 14793 .space 4 14794 .section .bss.g_gc_head_data_block_count,"aw",%nobits 14795 .align 2 14796 .set .LANCHOR119,. + 0 14797 .type g_gc_head_data_block_count, %object 14798 .size g_gc_head_data_block_count, 4 14799g_gc_head_data_block_count: 14800 .space 4 14801 .section .bss.g_gc_merge_free_blk_threshold,"aw",%nobits 14802 .align 1 14803 .set .LANCHOR83,. + 0 14804 .type g_gc_merge_free_blk_threshold, %object 14805 .size g_gc_merge_free_blk_threshold, 2 14806g_gc_merge_free_blk_threshold: 14807 .space 2 14808 .section .bss.g_gc_next_blk,"aw",%nobits 14809 .align 1 14810 .set .LANCHOR99,. + 0 14811 .type g_gc_next_blk, %object 14812 .size g_gc_next_blk, 2 14813g_gc_next_blk: 14814 .space 2 14815 .section .bss.g_gc_next_blk_1,"aw",%nobits 14816 .align 1 14817 .set .LANCHOR100,. + 0 14818 .type g_gc_next_blk_1, %object 14819 .size g_gc_next_blk_1, 2 14820g_gc_next_blk_1: 14821 .space 2 14822 .section .bss.g_gc_num_req,"aw",%nobits 14823 .align 2 14824 .set .LANCHOR89,. + 0 14825 .type g_gc_num_req, %object 14826 .size g_gc_num_req, 4 14827g_gc_num_req: 14828 .space 4 14829 .section .bss.g_gc_page_offset,"aw",%nobits 14830 .align 1 14831 .set .LANCHOR97,. + 0 14832 .type g_gc_page_offset, %object 14833 .size g_gc_page_offset, 2 14834g_gc_page_offset: 14835 .space 2 14836 .section .bss.g_gc_skip_write_count,"aw",%nobits 14837 .align 2 14838 .set .LANCHOR84,. + 0 14839 .type g_gc_skip_write_count, %object 14840 .size g_gc_skip_write_count, 4 14841g_gc_skip_write_count: 14842 .space 4 14843 .section .bss.g_gc_superblock,"aw",%nobits 14844 .align 2 14845 .set .LANCHOR80,. + 0 14846 .type g_gc_superblock, %object 14847 .size g_gc_superblock, 48 14848g_gc_superblock: 14849 .space 48 14850 .section .bss.g_gc_temp_superblock,"aw",%nobits 14851 .align 2 14852 .set .LANCHOR53,. + 0 14853 .type g_gc_temp_superblock, %object 14854 .size g_gc_temp_superblock, 48 14855g_gc_temp_superblock: 14856 .space 48 14857 .section .bss.g_in_gc_progress,"aw",%nobits 14858 .align 2 14859 .set .LANCHOR117,. + 0 14860 .type g_in_gc_progress, %object 14861 .size g_in_gc_progress, 4 14862g_in_gc_progress: 14863 .space 4 14864 .section .bss.g_in_swl_replace,"aw",%nobits 14865 .align 2 14866 .set .LANCHOR87,. + 0 14867 .type g_in_swl_replace, %object 14868 .size g_in_swl_replace, 4 14869g_in_swl_replace: 14870 .space 4 14871 .section .bss.g_l2p_last_update_region_id,"aw",%nobits 14872 .align 1 14873 .set .LANCHOR56,. + 0 14874 .type g_l2p_last_update_region_id, %object 14875 .size g_l2p_last_update_region_id, 2 14876g_l2p_last_update_region_id: 14877 .space 2 14878 .section .bss.g_max_erase_count,"aw",%nobits 14879 .align 2 14880 .set .LANCHOR76,. + 0 14881 .type g_max_erase_count, %object 14882 .size g_max_erase_count, 4 14883g_max_erase_count: 14884 .space 4 14885 .section .bss.g_min_erase_count,"aw",%nobits 14886 .align 2 14887 .set .LANCHOR77,. + 0 14888 .type g_min_erase_count, %object 14889 .size g_min_erase_count, 4 14890g_min_erase_count: 14891 .space 4 14892 .section .bss.g_nand_ops,"aw",%nobits 14893 .align 2 14894 .set .LANCHOR105,. + 0 14895 .type g_nand_ops, %object 14896 .size g_nand_ops, 16 14897g_nand_ops: 14898 .space 16 14899 .section .bss.g_nand_phy_info,"aw",%nobits 14900 .align 1 14901 .set .LANCHOR0,. + 0 14902 .type g_nand_phy_info, %object 14903 .size g_nand_phy_info, 24 14904g_nand_phy_info: 14905 .space 24 14906 .section .bss.g_num_data_superblocks,"aw",%nobits 14907 .align 1 14908 .set .LANCHOR45,. + 0 14909 .type g_num_data_superblocks, %object 14910 .size g_num_data_superblocks, 2 14911g_num_data_superblocks: 14912 .space 2 14913 .section .bss.g_num_free_superblocks,"aw",%nobits 14914 .align 1 14915 .set .LANCHOR48,. + 0 14916 .type g_num_free_superblocks, %object 14917 .size g_num_free_superblocks, 2 14918g_num_free_superblocks: 14919 .space 2 14920 .section .bss.g_power_lost_recovery_flag,"aw",%nobits 14921 .align 1 14922 .set .LANCHOR161,. + 0 14923 .type g_power_lost_recovery_flag, %object 14924 .size g_power_lost_recovery_flag, 2 14925g_power_lost_recovery_flag: 14926 .space 2 14927 .section .bss.g_recovery_page_min_ver,"aw",%nobits 14928 .align 2 14929 .set .LANCHOR153,. + 0 14930 .type g_recovery_page_min_ver, %object 14931 .size g_recovery_page_min_ver, 4 14932g_recovery_page_min_ver: 14933 .space 4 14934 .section .bss.g_recovery_page_num,"aw",%nobits 14935 .align 2 14936 .set .LANCHOR162,. + 0 14937 .type g_recovery_page_num, %object 14938 .size g_recovery_page_num, 4 14939g_recovery_page_num: 14940 .space 4 14941 .section .bss.g_recovery_ppa_tbl,"aw",%nobits 14942 .align 2 14943 .set .LANCHOR163,. + 0 14944 .type g_recovery_ppa_tbl, %object 14945 .size g_recovery_ppa_tbl, 128 14946g_recovery_ppa_tbl: 14947 .space 128 14948 .section .bss.g_sys_ext_data,"aw",%nobits 14949 .align 2 14950 .set .LANCHOR81,. + 0 14951 .type g_sys_ext_data, %object 14952 .size g_sys_ext_data, 512 14953g_sys_ext_data: 14954 .space 512 14955 .section .bss.g_sys_save_data,"aw",%nobits 14956 .align 2 14957 .set .LANCHOR39,. + 0 14958 .type g_sys_save_data, %object 14959 .size g_sys_save_data, 48 14960g_sys_save_data: 14961 .space 48 14962 .section .bss.g_tmp_data_superblock_id,"aw",%nobits 14963 .align 1 14964 .set .LANCHOR150,. + 0 14965 .type g_tmp_data_superblock_id, %object 14966 .size g_tmp_data_superblock_id, 2 14967g_tmp_data_superblock_id: 14968 .space 2 14969 .section .bss.g_totle_avg_erase_count,"aw",%nobits 14970 .align 2 14971 .set .LANCHOR74,. + 0 14972 .type g_totle_avg_erase_count, %object 14973 .size g_totle_avg_erase_count, 4 14974g_totle_avg_erase_count: 14975 .space 4 14976 .section .bss.g_totle_cache_write_count,"aw",%nobits 14977 .align 2 14978 .set .LANCHOR65,. + 0 14979 .type g_totle_cache_write_count, %object 14980 .size g_totle_cache_write_count, 4 14981g_totle_cache_write_count: 14982 .space 4 14983 .section .bss.g_totle_discard_page_count,"aw",%nobits 14984 .align 2 14985 .set .LANCHOR63,. + 0 14986 .type g_totle_discard_page_count, %object 14987 .size g_totle_discard_page_count, 4 14988g_totle_discard_page_count: 14989 .space 4 14990 .section .bss.g_totle_gc_page_count,"aw",%nobits 14991 .align 2 14992 .set .LANCHOR67,. + 0 14993 .type g_totle_gc_page_count, %object 14994 .size g_totle_gc_page_count, 4 14995g_totle_gc_page_count: 14996 .space 4 14997 .section .bss.g_totle_l2p_write_count,"aw",%nobits 14998 .align 2 14999 .set .LANCHOR66,. + 0 15000 .type g_totle_l2p_write_count, %object 15001 .size g_totle_l2p_write_count, 4 15002g_totle_l2p_write_count: 15003 .space 4 15004 .section .bss.g_totle_map_block,"aw",%nobits 15005 .align 1 15006 .set .LANCHOR147,. + 0 15007 .type g_totle_map_block, %object 15008 .size g_totle_map_block, 2 15009g_totle_map_block: 15010 .space 2 15011 .section .bss.g_totle_mlc_erase_count,"aw",%nobits 15012 .align 2 15013 .set .LANCHOR72,. + 0 15014 .type g_totle_mlc_erase_count, %object 15015 .size g_totle_mlc_erase_count, 4 15016g_totle_mlc_erase_count: 15017 .space 4 15018 .section .bss.g_totle_read_page_count,"aw",%nobits 15019 .align 2 15020 .set .LANCHOR62,. + 0 15021 .type g_totle_read_page_count, %object 15022 .size g_totle_read_page_count, 4 15023g_totle_read_page_count: 15024 .space 4 15025 .section .bss.g_totle_read_sector,"aw",%nobits 15026 .align 2 15027 .set .LANCHOR69,. + 0 15028 .type g_totle_read_sector, %object 15029 .size g_totle_read_sector, 4 15030g_totle_read_sector: 15031 .space 4 15032 .section .bss.g_totle_slc_erase_count,"aw",%nobits 15033 .align 2 15034 .set .LANCHOR73,. + 0 15035 .type g_totle_slc_erase_count, %object 15036 .size g_totle_slc_erase_count, 4 15037g_totle_slc_erase_count: 15038 .space 4 15039 .section .bss.g_totle_swl_count,"aw",%nobits 15040 .align 2 15041 .set .LANCHOR151,. + 0 15042 .type g_totle_swl_count, %object 15043 .size g_totle_swl_count, 4 15044g_totle_swl_count: 15045 .space 4 15046 .section .bss.g_totle_sys_slc_erase_count,"aw",%nobits 15047 .align 2 15048 .set .LANCHOR75,. + 0 15049 .type g_totle_sys_slc_erase_count, %object 15050 .size g_totle_sys_slc_erase_count, 4 15051g_totle_sys_slc_erase_count: 15052 .space 4 15053 .section .bss.g_totle_vendor_block,"aw",%nobits 15054 .align 1 15055 .set .LANCHOR35,. + 0 15056 .type g_totle_vendor_block, %object 15057 .size g_totle_vendor_block, 2 15058g_totle_vendor_block: 15059 .space 2 15060 .section .bss.g_totle_write_page_count,"aw",%nobits 15061 .align 2 15062 .set .LANCHOR64,. + 0 15063 .type g_totle_write_page_count, %object 15064 .size g_totle_write_page_count, 4 15065g_totle_write_page_count: 15066 .space 4 15067 .section .bss.g_totle_write_sector,"aw",%nobits 15068 .align 2 15069 .set .LANCHOR68,. + 0 15070 .type g_totle_write_sector, %object 15071 .size g_totle_write_sector, 4 15072g_totle_write_sector: 15073 .space 4 15074 .section .bss.gc_discard_updated,"aw",%nobits 15075 .align 2 15076 .set .LANCHOR167,. + 0 15077 .type gc_discard_updated, %object 15078 .size gc_discard_updated, 4 15079gc_discard_updated: 15080 .space 4 15081 .section .bss.gc_ink_free_return_value,"aw",%nobits 15082 .align 1 15083 .set .LANCHOR172,. + 0 15084 .type gc_ink_free_return_value, %object 15085 .size gc_ink_free_return_value, 2 15086gc_ink_free_return_value: 15087 .space 2 15088 .section .bss.gp_ect_tbl_info,"aw",%nobits 15089 .align 2 15090 .set .LANCHOR127,. + 0 15091 .type gp_ect_tbl_info, %object 15092 .size gp_ect_tbl_info, 4 15093gp_ect_tbl_info: 15094 .space 4 15095 .section .bss.gp_flash_check_buf,"aw",%nobits 15096 .align 2 15097 .type gp_flash_check_buf, %object 15098 .size gp_flash_check_buf, 262144 15099gp_flash_check_buf: 15100 .space 262144 15101 .section .bss.gp_gc_page_buf_info,"aw",%nobits 15102 .align 2 15103 .set .LANCHOR90,. + 0 15104 .type gp_gc_page_buf_info, %object 15105 .size gp_gc_page_buf_info, 4 15106gp_gc_page_buf_info: 15107 .space 4 15108 .section .bss.gp_last_act_superblock,"aw",%nobits 15109 .align 2 15110 .type gp_last_act_superblock, %object 15111 .size gp_last_act_superblock, 4 15112gp_last_act_superblock: 15113 .space 4 15114 .section .bss.idb_buf,"aw",%nobits 15115 .align 2 15116 .type idb_buf, %object 15117 .size idb_buf, 262144 15118idb_buf: 15119 .space 262144 15120 .section .bss.idb_need_write_back,"aw",%nobits 15121 .align 2 15122 .set .LANCHOR179,. + 0 15123 .type idb_need_write_back, %object 15124 .size idb_need_write_back, 4 15125idb_need_write_back: 15126 .space 4 15127 .section .bss.p_blk_mode_table,"aw",%nobits 15128 .align 2 15129 .set .LANCHOR1,. + 0 15130 .type p_blk_mode_table, %object 15131 .size p_blk_mode_table, 4 15132p_blk_mode_table: 15133 .space 4 15134 .section .bss.p_data_block_list_head,"aw",%nobits 15135 .align 2 15136 .set .LANCHOR41,. + 0 15137 .type p_data_block_list_head, %object 15138 .size p_data_block_list_head, 4 15139p_data_block_list_head: 15140 .space 4 15141 .section .bss.p_data_block_list_table,"aw",%nobits 15142 .align 2 15143 .set .LANCHOR40,. + 0 15144 .type p_data_block_list_table, %object 15145 .size p_data_block_list_table, 4 15146p_data_block_list_table: 15147 .space 4 15148 .section .bss.p_data_block_list_tail,"aw",%nobits 15149 .align 2 15150 .set .LANCHOR44,. + 0 15151 .type p_data_block_list_tail, %object 15152 .size p_data_block_list_tail, 4 15153p_data_block_list_tail: 15154 .space 4 15155 .section .bss.p_erase_count_table,"aw",%nobits 15156 .align 2 15157 .set .LANCHOR43,. + 0 15158 .type p_erase_count_table, %object 15159 .size p_erase_count_table, 4 15160p_erase_count_table: 15161 .space 4 15162 .section .bss.p_free_data_block_list_head,"aw",%nobits 15163 .align 2 15164 .set .LANCHOR47,. + 0 15165 .type p_free_data_block_list_head, %object 15166 .size p_free_data_block_list_head, 4 15167p_free_data_block_list_head: 15168 .space 4 15169 .section .bss.p_gc_blk_tbl,"aw",%nobits 15170 .align 2 15171 .set .LANCHOR95,. + 0 15172 .type p_gc_blk_tbl, %object 15173 .size p_gc_blk_tbl, 4 15174p_gc_blk_tbl: 15175 .space 4 15176 .section .bss.p_gc_data_buf,"aw",%nobits 15177 .align 2 15178 .set .LANCHOR91,. + 0 15179 .type p_gc_data_buf, %object 15180 .size p_gc_data_buf, 4 15181p_gc_data_buf: 15182 .space 4 15183 .section .bss.p_gc_page_info,"aw",%nobits 15184 .align 2 15185 .set .LANCHOR98,. + 0 15186 .type p_gc_page_info, %object 15187 .size p_gc_page_info, 4 15188p_gc_page_info: 15189 .space 4 15190 .section .bss.p_gc_spare_buf,"aw",%nobits 15191 .align 2 15192 .set .LANCHOR92,. + 0 15193 .type p_gc_spare_buf, %object 15194 .size p_gc_spare_buf, 4 15195p_gc_spare_buf: 15196 .space 4 15197 .section .bss.p_io_data_buf_0,"aw",%nobits 15198 .align 2 15199 .set .LANCHOR115,. + 0 15200 .type p_io_data_buf_0, %object 15201 .size p_io_data_buf_0, 4 15202p_io_data_buf_0: 15203 .space 4 15204 .section .bss.p_io_data_buf_1,"aw",%nobits 15205 .align 2 15206 .set .LANCHOR113,. + 0 15207 .type p_io_data_buf_1, %object 15208 .size p_io_data_buf_1, 4 15209p_io_data_buf_1: 15210 .space 4 15211 .section .bss.p_io_spare_buf,"aw",%nobits 15212 .align 2 15213 .set .LANCHOR114,. + 0 15214 .type p_io_spare_buf, %object 15215 .size p_io_spare_buf, 4 15216p_io_spare_buf: 15217 .space 4 15218 .section .bss.p_l2p_map_buf,"aw",%nobits 15219 .align 2 15220 .set .LANCHOR136,. + 0 15221 .type p_l2p_map_buf, %object 15222 .size p_l2p_map_buf, 4 15223p_l2p_map_buf: 15224 .space 4 15225 .section .bss.p_l2p_ram_map,"aw",%nobits 15226 .align 2 15227 .set .LANCHOR55,. + 0 15228 .type p_l2p_ram_map, %object 15229 .size p_l2p_ram_map, 4 15230p_l2p_ram_map: 15231 .space 4 15232 .section .bss.p_map_block_table,"aw",%nobits 15233 .align 2 15234 .set .LANCHOR129,. + 0 15235 .type p_map_block_table, %object 15236 .size p_map_block_table, 4 15237p_map_block_table: 15238 .space 4 15239 .section .bss.p_map_block_valid_page_count,"aw",%nobits 15240 .align 2 15241 .set .LANCHOR130,. + 0 15242 .type p_map_block_valid_page_count, %object 15243 .size p_map_block_valid_page_count, 4 15244p_map_block_valid_page_count: 15245 .space 4 15246 .section .bss.p_map_block_ver_table,"aw",%nobits 15247 .align 2 15248 .set .LANCHOR135,. + 0 15249 .type p_map_block_ver_table, %object 15250 .size p_map_block_ver_table, 4 15251p_map_block_ver_table: 15252 .space 4 15253 .section .bss.p_map_region_ppn_table,"aw",%nobits 15254 .align 2 15255 .set .LANCHOR134,. + 0 15256 .type p_map_region_ppn_table, %object 15257 .size p_map_region_ppn_table, 4 15258p_map_region_ppn_table: 15259 .space 4 15260 .section .bss.p_plane_order_table,"aw",%nobits 15261 .set .LANCHOR13,. + 0 15262 .type p_plane_order_table, %object 15263 .size p_plane_order_table, 32 15264p_plane_order_table: 15265 .space 32 15266 .section .bss.p_swl_mul_table,"aw",%nobits 15267 .align 2 15268 .set .LANCHOR126,. + 0 15269 .type p_swl_mul_table, %object 15270 .size p_swl_mul_table, 4 15271p_swl_mul_table: 15272 .space 4 15273 .section .bss.p_sys_data_buf,"aw",%nobits 15274 .align 2 15275 .set .LANCHOR107,. + 0 15276 .type p_sys_data_buf, %object 15277 .size p_sys_data_buf, 4 15278p_sys_data_buf: 15279 .space 4 15280 .section .bss.p_sys_data_buf_1,"aw",%nobits 15281 .align 2 15282 .set .LANCHOR123,. + 0 15283 .type p_sys_data_buf_1, %object 15284 .size p_sys_data_buf_1, 4 15285p_sys_data_buf_1: 15286 .space 4 15287 .section .bss.p_sys_spare_buf,"aw",%nobits 15288 .align 2 15289 .set .LANCHOR108,. + 0 15290 .type p_sys_spare_buf, %object 15291 .size p_sys_spare_buf, 4 15292p_sys_spare_buf: 15293 .space 4 15294 .section .bss.p_valid_page_count_check_table,"aw",%nobits 15295 .align 2 15296 .set .LANCHOR128,. + 0 15297 .type p_valid_page_count_check_table, %object 15298 .size p_valid_page_count_check_table, 4 15299p_valid_page_count_check_table: 15300 .space 4 15301 .section .bss.p_valid_page_count_table,"aw",%nobits 15302 .align 2 15303 .set .LANCHOR42,. + 0 15304 .type p_valid_page_count_table, %object 15305 .size p_valid_page_count_table, 4 15306p_valid_page_count_table: 15307 .space 4 15308 .section .bss.p_vendor_block_table,"aw",%nobits 15309 .align 2 15310 .set .LANCHOR36,. + 0 15311 .type p_vendor_block_table, %object 15312 .size p_vendor_block_table, 4 15313p_vendor_block_table: 15314 .space 4 15315 .section .bss.p_vendor_block_valid_page_count,"aw",%nobits 15316 .align 2 15317 .set .LANCHOR131,. + 0 15318 .type p_vendor_block_valid_page_count, %object 15319 .size p_vendor_block_valid_page_count, 4 15320p_vendor_block_valid_page_count: 15321 .space 4 15322 .section .bss.p_vendor_block_ver_table,"aw",%nobits 15323 .align 2 15324 .set .LANCHOR132,. + 0 15325 .type p_vendor_block_ver_table, %object 15326 .size p_vendor_block_ver_table, 4 15327p_vendor_block_ver_table: 15328 .space 4 15329 .section .bss.p_vendor_data_buf,"aw",%nobits 15330 .align 2 15331 .set .LANCHOR124,. + 0 15332 .type p_vendor_data_buf, %object 15333 .size p_vendor_data_buf, 4 15334p_vendor_data_buf: 15335 .space 4 15336 .section .bss.p_vendor_region_ppn_table,"aw",%nobits 15337 .align 2 15338 .set .LANCHOR133,. + 0 15339 .type p_vendor_region_ppn_table, %object 15340 .size p_vendor_region_ppn_table, 4 15341p_vendor_region_ppn_table: 15342 .space 4 15343 .section .bss.req_erase,"aw",%nobits 15344 .align 2 15345 .set .LANCHOR111,. + 0 15346 .type req_erase, %object 15347 .size req_erase, 4 15348req_erase: 15349 .space 4 15350 .section .bss.req_gc,"aw",%nobits 15351 .align 2 15352 .set .LANCHOR93,. + 0 15353 .type req_gc, %object 15354 .size req_gc, 4 15355req_gc: 15356 .space 4 15357 .section .bss.req_gc_dst,"aw",%nobits 15358 .align 2 15359 .set .LANCHOR121,. + 0 15360 .type req_gc_dst, %object 15361 .size req_gc_dst, 4 15362req_gc_dst: 15363 .space 4 15364 .section .bss.req_prgm,"aw",%nobits 15365 .align 2 15366 .set .LANCHOR122,. + 0 15367 .type req_prgm, %object 15368 .size req_prgm, 4 15369req_prgm: 15370 .space 4 15371 .section .bss.req_read,"aw",%nobits 15372 .align 2 15373 .set .LANCHOR120,. + 0 15374 .type req_read, %object 15375 .size req_read, 4 15376req_read: 15377 .space 4 15378 .section .bss.req_sys,"aw",%nobits 15379 .align 2 15380 .set .LANCHOR106,. + 0 15381 .type req_sys, %object 15382 .size req_sys, 20 15383req_sys: 15384 .space 20 15385 .section .data.ftl_gc_temp_block_bops_scan_page_addr,"aw",%progbits 15386 .align 1 15387 .set .LANCHOR156,. + 0 15388 .type ftl_gc_temp_block_bops_scan_page_addr, %object 15389 .size ftl_gc_temp_block_bops_scan_page_addr, 2 15390ftl_gc_temp_block_bops_scan_page_addr: 15391 .short -1 15392 .section .data.gFtlInitStatus,"aw",%progbits 15393 .align 2 15394 .set .LANCHOR86,. + 0 15395 .type gFtlInitStatus, %object 15396 .size gFtlInitStatus, 4 15397gFtlInitStatus: 15398 .word -1 15399 .section .data.power_up_flag,"aw",%progbits 15400 .align 2 15401 .set .LANCHOR177,. + 0 15402 .type power_up_flag, %object 15403 .size power_up_flag, 4 15404power_up_flag: 15405 .word 1 15406 .section .rodata.FlashProgPages.str1.1,"aMS",%progbits,1 15407.LC79: 15408 .ascii "prog read error: = %x\012\000" 15409.LC80: 15410 .ascii "prog read s error: = %x %x %x\012\000" 15411.LC81: 15412 .ascii "prog read d error: = %x %x %x\012\000" 15413 .section .rodata.FtlBbmMapBadBlock.str1.1,"aMS",%progbits,1 15414.LC0: 15415 .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" 15416 .ascii "\000" 15417 .section .rodata.FtlBbmTblFlush.str1.1,"aMS",%progbits,1 15418.LC97: 15419 .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" 15420.LC98: 15421 .ascii "FtlBbmTblFlush error:%x\012\000" 15422.LC99: 15423 .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" 15424 .section .rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",%progbits,1 15425.LC82: 15426 .ascii "FtlFreeSysBlkQueueOut free count = %d\012\000" 15427.LC83: 15428 .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" 15429 .ascii "\000" 15430 .section .rodata.FtlGcFreeBadSuperBlk.str1.1,"aMS",%progbits,1 15431.LC100: 15432 .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" 15433 .section .rodata.FtlGcMarkBadPhyBlk.str1.1,"aMS",%progbits,1 15434.LC74: 15435 .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" 15436 .section .rodata.FtlGcRefreshBlock.str1.1,"aMS",%progbits,1 15437.LC73: 15438 .ascii "FtlGcRefreshBlock 0x%x\012\000" 15439 .section .rodata.FtlLoadEctTbl.str1.1,"aMS",%progbits,1 15440.LC103: 15441 .ascii "no ect\000" 15442 .section .rodata.FtlMapWritePage.str1.1,"aMS",%progbits,1 15443.LC89: 15444 .ascii "FtlMapWritePage error = %x \012\000" 15445.LC90: 15446 .ascii "FtlMapWritePage error = %x error count = %d\012\000" 15447 .section .rodata.FtlMemInit.str1.1,"aMS",%progbits,1 15448.LC85: 15449 .ascii "%s error allocating memory. return -1\012\000" 15450 .section .rodata.FtlPrintInfo2buf.str1.1,"aMS",%progbits,1 15451.LC2: 15452 .ascii "FLASH INFO:\012\000" 15453.LC3: 15454 .ascii "Device Capacity: %d MB\012\000" 15455.LC4: 15456 .ascii "FTL INFO:\012\000" 15457.LC5: 15458 .ascii "g_MaxLpn = 0x%x\012\000" 15459.LC6: 15460 .ascii "g_VaildLpn = 0x%x\012\000" 15461.LC7: 15462 .ascii "read_page_count = 0x%x\012\000" 15463.LC8: 15464 .ascii "discard_page_count = 0x%x\012\000" 15465.LC9: 15466 .ascii "write_page_count = 0x%x\012\000" 15467.LC10: 15468 .ascii "cache_write_count = 0x%x\012\000" 15469.LC11: 15470 .ascii "l2p_write_count = 0x%x\012\000" 15471.LC12: 15472 .ascii "gc_page_count = 0x%x\012\000" 15473.LC13: 15474 .ascii "totle_write = %d MB\012\000" 15475.LC14: 15476 .ascii "totle_read = %d MB\012\000" 15477.LC15: 15478 .ascii "GSV = 0x%x\012\000" 15479.LC16: 15480 .ascii "GDV = 0x%x\012\000" 15481.LC17: 15482 .ascii "bad blk num = %d\012\000" 15483.LC18: 15484 .ascii "free_superblocks = 0x%x\012\000" 15485.LC19: 15486 .ascii "mlc_EC = 0x%x\012\000" 15487.LC20: 15488 .ascii "slc_EC = 0x%x\012\000" 15489.LC21: 15490 .ascii "avg_EC = 0x%x\012\000" 15491.LC22: 15492 .ascii "sys_EC = 0x%x\012\000" 15493.LC23: 15494 .ascii "max_EC = 0x%x\012\000" 15495.LC24: 15496 .ascii "min_EC = 0x%x\012\000" 15497.LC25: 15498 .ascii "PLT = 0x%x\012\000" 15499.LC26: 15500 .ascii "POT = 0x%x\012\000" 15501.LC27: 15502 .ascii "MaxSector = 0x%x\012\000" 15503.LC28: 15504 .ascii "init_sys_blks_pp = 0x%x\012\000" 15505.LC29: 15506 .ascii "sys_blks_pp = 0x%x\012\000" 15507.LC30: 15508 .ascii "free sysblock = 0x%x\012\000" 15509.LC31: 15510 .ascii "data_blks_pp = 0x%x\012\000" 15511.LC32: 15512 .ascii "data_op_blks_pp = 0x%x\012\000" 15513.LC33: 15514 .ascii "max_data_blks = 0x%x\012\000" 15515.LC34: 15516 .ascii "Sys.id = 0x%x\012\000" 15517.LC35: 15518 .ascii "Bbt.id = 0x%x\012\000" 15519.LC36: 15520 .ascii "ACT.page = 0x%x\012\000" 15521.LC37: 15522 .ascii "ACT.plane = 0x%x\012\000" 15523.LC38: 15524 .ascii "ACT.id = 0x%x\012\000" 15525.LC39: 15526 .ascii "ACT.mode = 0x%x\012\000" 15527.LC40: 15528 .ascii "ACT.a_pages = 0x%x\012\000" 15529.LC41: 15530 .ascii "ACT VPC = 0x%x\012\000" 15531.LC42: 15532 .ascii "BUF.page = 0x%x\012\000" 15533.LC43: 15534 .ascii "BUF.plane = 0x%x\012\000" 15535.LC44: 15536 .ascii "BUF.id = 0x%x\012\000" 15537.LC45: 15538 .ascii "BUF.mode = 0x%x\012\000" 15539.LC46: 15540 .ascii "BUF.a_pages = 0x%x\012\000" 15541.LC47: 15542 .ascii "BUF VPC = 0x%x\012\000" 15543.LC48: 15544 .ascii "TMP.page = 0x%x\012\000" 15545.LC49: 15546 .ascii "TMP.plane = 0x%x\012\000" 15547.LC50: 15548 .ascii "TMP.id = 0x%x\012\000" 15549.LC51: 15550 .ascii "TMP.mode = 0x%x\012\000" 15551.LC52: 15552 .ascii "TMP.a_pages = 0x%x\012\000" 15553.LC53: 15554 .ascii "GC.page = 0x%x\012\000" 15555.LC54: 15556 .ascii "GC.plane = 0x%x\012\000" 15557.LC55: 15558 .ascii "GC.id = 0x%x\012\000" 15559.LC56: 15560 .ascii "GC.mode = 0x%x\012\000" 15561.LC57: 15562 .ascii "GC.a_pages = 0x%x\012\000" 15563.LC58: 15564 .ascii "WR_CHK = %x %x %x\012\000" 15565.LC59: 15566 .ascii "Read Err Cnt = 0x%x\012\000" 15567.LC60: 15568 .ascii "Prog Err Cnt = 0x%x\012\000" 15569.LC61: 15570 .ascii "gc_free_blk_th= 0x%x\012\000" 15571.LC62: 15572 .ascii "gc_merge_free_blk_th= 0x%x\012\000" 15573.LC63: 15574 .ascii "gc_skip_write_count= 0x%x\012\000" 15575.LC64: 15576 .ascii "gc_blk_index= 0x%x\012\000" 15577.LC65: 15578 .ascii "free min EC= 0x%x\012\000" 15579.LC66: 15580 .ascii "free max EC= 0x%x\012\000" 15581.LC67: 15582 .ascii "GC__SB VPC = 0x%x\012\000" 15583.LC68: 15584 .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" 15585.LC69: 15586 .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" 15587 .section .rodata.FtlProgPages.str1.1,"aMS",%progbits,1 15588.LC106: 15589 .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" 15590 .section .rodata.FtlRecoverySuperblock.str1.1,"aMS",%progbits,1 15591.LC102: 15592 .ascii "spuer block %x vpn is 0\012 \000" 15593 .section .rodata.FtlVpcCheckAndModify.str1.1,"aMS",%progbits,1 15594.LC105: 15595 .ascii "FtlCheckVpc %x = %x %x\012\000" 15596 .section .rodata.FtlVpcTblFlush.str1.1,"aMS",%progbits,1 15597.LC104: 15598 .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" 15599 .section .rodata.FtlWrite.str1.1,"aMS",%progbits,1 15600.LC108: 15601 .ascii "FtlWrite: lpa error:%x %x\012\000" 15602 .section .rodata.GetSwlReplaceBlock.str1.1,"aMS",%progbits,1 15603.LC72: 15604 .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" 15605 .ascii "\012\000" 15606 .section .rodata.INSERT_DATA_LIST.str1.1,"aMS",%progbits,1 15607.LC1: 15608 .ascii "\012!!!!! error @ func:%s - line:%d\012\000" 15609 .section .rodata.__func__.10016,"a",%progbits 15610 .set .LANCHOR171,. + 0 15611 .type __func__.10016, %object 15612 .size __func__.10016, 19 15613__func__.10016: 15614 .ascii "FtlGcFreeTempBlock\000" 15615 .section .rodata.__func__.10122,"a",%progbits 15616 .set .LANCHOR175,. + 0 15617 .type __func__.10122, %object 15618 .size __func__.10122, 23 15619__func__.10122: 15620 .ascii "rk_ftl_garbage_collect\000" 15621 .section .rodata.__func__.10389,"a",%progbits 15622 .set .LANCHOR104,. + 0 15623 .type __func__.10389, %object 15624 .size __func__.10389, 15 15625__func__.10389: 15626 .ascii "FlashReadPages\000" 15627 .section .rodata.__func__.10406,"a",%progbits 15628 .set .LANCHOR109,. + 0 15629 .type __func__.10406, %object 15630 .size __func__.10406, 15 15631__func__.10406: 15632 .ascii "FlashProgPages\000" 15633 .section .rodata.__func__.8796,"a",%progbits 15634 .set .LANCHOR138,. + 0 15635 .type __func__.8796, %object 15636 .size __func__.8796, 11 15637__func__.8796: 15638 .ascii "FtlMemInit\000" 15639 .section .rodata.__func__.8920,"a",%progbits 15640 .set .LANCHOR170,. + 0 15641 .type __func__.8920, %object 15642 .size __func__.8920, 13 15643__func__.8920: 15644 .ascii "FtlProgPages\000" 15645 .section .rodata.__func__.8948,"a",%progbits 15646 .set .LANCHOR178,. + 0 15647 .type __func__.8948, %object 15648 .size __func__.8948, 9 15649__func__.8948: 15650 .ascii "FtlWrite\000" 15651 .section .rodata.__func__.9094,"a",%progbits 15652 .set .LANCHOR139,. + 0 15653 .type __func__.9094, %object 15654 .size __func__.9094, 14 15655__func__.9094: 15656 .ascii "FtlBbt2Bitmap\000" 15657 .section .rodata.__func__.9137,"a",%progbits 15658 .set .LANCHOR164,. + 0 15659 .type __func__.9137, %object 15660 .size __func__.9137, 11 15661__func__.9137: 15662 .ascii "FtlLoadBbt\000" 15663 .section .rodata.__func__.9254,"a",%progbits 15664 .set .LANCHOR49,. + 0 15665 .type __func__.9254, %object 15666 .size __func__.9254, 17 15667__func__.9254: 15668 .ascii "INSERT_FREE_LIST\000" 15669 .section .rodata.__func__.9259,"a",%progbits 15670 .set .LANCHOR46,. + 0 15671 .type __func__.9259, %object 15672 .size __func__.9259, 17 15673__func__.9259: 15674 .ascii "INSERT_DATA_LIST\000" 15675 .section .rodata.__func__.9290,"a",%progbits 15676 .set .LANCHOR50,. + 0 15677 .type __func__.9290, %object 15678 .size __func__.9290, 17 15679__func__.9290: 15680 .ascii "List_remove_node\000" 15681 .section .rodata.__func__.9322,"a",%progbits 15682 .set .LANCHOR54,. + 0 15683 .type __func__.9322, %object 15684 .size __func__.9322, 22 15685__func__.9322: 15686 .ascii "List_update_data_list\000" 15687 .section .rodata.__func__.9331,"a",%progbits 15688 .set .LANCHOR140,. + 0 15689 .type __func__.9331, %object 15690 .size __func__.9331, 16 15691__func__.9331: 15692 .ascii "load_l2p_region\000" 15693 .section .rodata.__func__.9364,"a",%progbits 15694 .set .LANCHOR116,. + 0 15695 .type __func__.9364, %object 15696 .size __func__.9364, 26 15697__func__.9364: 15698 .ascii "ftl_map_blk_alloc_new_blk\000" 15699 .section .rodata.__func__.9375,"a",%progbits 15700 .set .LANCHOR143,. + 0 15701 .type __func__.9375, %object 15702 .size __func__.9375, 15 15703__func__.9375: 15704 .ascii "ftl_map_blk_gc\000" 15705 .section .rodata.__func__.9389,"a",%progbits 15706 .set .LANCHOR141,. + 0 15707 .type __func__.9389, %object 15708 .size __func__.9389, 31 15709__func__.9389: 15710 .ascii "Ftl_write_map_blk_to_last_page\000" 15711 .section .rodata.__func__.9403,"a",%progbits 15712 .set .LANCHOR142,. + 0 15713 .type __func__.9403, %object 15714 .size __func__.9403, 16 15715__func__.9403: 15716 .ascii "FtlMapWritePage\000" 15717 .section .rodata.__func__.9428,"a",%progbits 15718 .set .LANCHOR57,. + 0 15719 .type __func__.9428, %object 15720 .size __func__.9428, 22 15721__func__.9428: 15722 .ascii "select_l2p_ram_region\000" 15723 .section .rodata.__func__.9445,"a",%progbits 15724 .set .LANCHOR145,. + 0 15725 .type __func__.9445, %object 15726 .size __func__.9445, 9 15727__func__.9445: 15728 .ascii "log2phys\000" 15729 .section .rodata.__func__.9518,"a",%progbits 15730 .set .LANCHOR166,. + 0 15731 .type __func__.9518, %object 15732 .size __func__.9518, 15 15733__func__.9518: 15734 .ascii "FtlVpcTblFlush\000" 15735 .section .rodata.__func__.9540,"a",%progbits 15736 .set .LANCHOR148,. + 0 15737 .type __func__.9540, %object 15738 .size __func__.9540, 14 15739__func__.9540: 15740 .ascii "FtlScanSysBlk\000" 15741 .section .rodata.__func__.9597,"a",%progbits 15742 .set .LANCHOR180,. + 0 15743 .type __func__.9597, %object 15744 .size __func__.9597, 15 15745__func__.9597: 15746 .ascii "FtlLoadSysInfo\000" 15747 .section .rodata.__func__.9660,"a",%progbits 15748 .set .LANCHOR146,. + 0 15749 .type __func__.9660, %object 15750 .size __func__.9660, 16 15751__func__.9660: 15752 .ascii "FtlReUsePrevPpa\000" 15753 .section .rodata.__func__.9694,"a",%progbits 15754 .set .LANCHOR160,. + 0 15755 .type __func__.9694, %object 15756 .size __func__.9694, 22 15757__func__.9694: 15758 .ascii "FtlRecoverySuperblock\000" 15759 .section .rodata.__func__.9751,"a",%progbits 15760 .set .LANCHOR60,. + 0 15761 .type __func__.9751, %object 15762 .size __func__.9751, 16 15763__func__.9751: 15764 .ascii "make_superblock\000" 15765 .section .rodata.__func__.9772,"a",%progbits 15766 .set .LANCHOR154,. + 0 15767 .type __func__.9772, %object 15768 .size __func__.9772, 18 15769__func__.9772: 15770 .ascii "SupperBlkListInit\000" 15771 .section .rodata.__func__.9797,"a",%progbits 15772 .set .LANCHOR168,. + 0 15773 .type __func__.9797, %object 15774 .size __func__.9797, 21 15775__func__.9797: 15776 .ascii "FtlVpcCheckAndModify\000" 15777 .section .rodata.__func__.9813,"a",%progbits 15778 .set .LANCHOR155,. + 0 15779 .type __func__.9813, %object 15780 .size __func__.9813, 14 15781__func__.9813: 15782 .ascii "ftl_check_vpc\000" 15783 .section .rodata.__func__.9898,"a",%progbits 15784 .set .LANCHOR157,. + 0 15785 .type __func__.9898, %object 15786 .size __func__.9898, 25 15787__func__.9898: 15788 .ascii "allocate_data_superblock\000" 15789 .section .rodata.__func__.9919,"a",%progbits 15790 .set .LANCHOR169,. + 0 15791 .type __func__.9919, %object 15792 .size __func__.9919, 29 15793__func__.9919: 15794 .ascii "allocate_new_data_superblock\000" 15795 .section .rodata.__func__.9926,"a",%progbits 15796 .set .LANCHOR88,. + 0 15797 .type __func__.9926, %object 15798 .size __func__.9926, 19 15799__func__.9926: 15800 .ascii "get_new_active_ppa\000" 15801 .section .rodata.__func__.9939,"a",%progbits 15802 .set .LANCHOR158,. + 0 15803 .type __func__.9939, %object 15804 .size __func__.9939, 16 15805__func__.9939: 15806 .ascii "update_vpc_list\000" 15807 .section .rodata.__func__.9946,"a",%progbits 15808 .set .LANCHOR159,. + 0 15809 .type __func__.9946, %object 15810 .size __func__.9946, 20 15811__func__.9946: 15812 .ascii "decrement_vpc_count\000" 15813 .section .rodata.decrement_vpc_count.str1.1,"aMS",%progbits,1 15814.LC101: 15815 .ascii "decrement_vpc_count %x = %d\012\000" 15816 .section .rodata.ftl_check_vpc.str1.1,"aMS",%progbits,1 15817.LC94: 15818 .ascii "...%s enter...\012\000" 15819.LC95: 15820 .ascii "FtlCheckVpc2 %x = %x %x\012\000" 15821.LC96: 15822 .ascii "free blk vpc error %x = %x %x\012\000" 15823 .section .rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",%progbits,1 15824.LC84: 15825 .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" 15826 .section .rodata.ftl_scan_all_data.str1.1,"aMS",%progbits,1 15827.LC91: 15828 .ascii "ftl_scan_all_data = %x\012\000" 15829.LC92: 15830 .ascii "scan lpa = %x ppa= %x\012\000" 15831.LC93: 15832 .ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" 15833 .ascii "\000" 15834 .section .rodata.load_l2p_region.str1.1,"aMS",%progbits,1 15835.LC86: 15836 .ascii "region_id = %x phyAddr = %x\012\000" 15837.LC87: 15838 .ascii "spare:\000" 15839.LC88: 15840 .ascii "map_ppn:\000" 15841 .section .rodata.rk_ftl_garbage_collect.str1.1,"aMS",%progbits,1 15842.LC107: 15843 .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" 15844 .section .rodata.rknand_print_hex.str1.1,"aMS",%progbits,1 15845.LC75: 15846 .ascii "%s 0x%x:\000" 15847.LC76: 15848 .ascii "%x \000" 15849.LC77: 15850 .ascii "%02x \000" 15851.LC78: 15852 .ascii "\012\000" 15853 .section .rodata.rknand_proc_ftlread.str1.1,"aMS",%progbits,1 15854.LC70: 15855 .ascii "SFTL version: 5.0.44 20180713\000" 15856.LC71: 15857 .ascii "%s\012\000" 15858 .section .rodata.sftl_write.str1.1,"aMS",%progbits,1 15859.LC109: 15860 .ascii "write_idblock fail! %x %x %x %x\012\000" 15861 .hidden free 15862