1/* SPDX-License-Identifier: GPL-2.0 */ 2 3/* Copyright (c) 2018-2022 Rockchip Electronics Co. Ltd. 4 * date: 2022-08-15 5 */ 6 .arch armv7-a 7 .eabi_attribute 20, 1 8 .eabi_attribute 21, 1 9 .eabi_attribute 23, 3 10 .eabi_attribute 24, 1 11 .eabi_attribute 25, 1 12 .eabi_attribute 26, 2 13 .eabi_attribute 30, 4 14 .eabi_attribute 34, 1 15 .eabi_attribute 18, 2 16 .file "rk_sftl.c" 17 .text 18 .syntax unified 19 .syntax unified 20 .global __aeabi_uidiv 21 .thumb 22 .syntax unified 23 .align 1 24 .syntax unified 25 .thumb 26 .thumb_func 27 .fpu softvfp 28 .type l2p_addr_tran, %function 29l2p_addr_tran: 30 .fnstart 31 @ args = 0, pretend = 0, frame = 0 32 @ frame_needed = 0, uses_anonymous_args = 0 33 push {r3, r4, r5, r6, r7, r8, r9, lr} 34 .save {r3, r4, r5, r6, r7, r8, r9, lr} 35 mov r7, r1 36 ldr r3, .L3 37 mov r8, r2 38 ldrh r9, [r3, #8] 39 ldrh r6, [r3, #10] 40 ldrh r3, [r3, #14] 41 cmp r3, #4 42 itt eq 43 lsleq r4, r6, #1 44 lsreq r9, r9, #1 45 mov r1, r9 46 it eq 47 uxtheq r6, r4 48 ldr r4, [r0, #4] 49 lsrs r5, r4, #10 50 ubfx r0, r4, #10, #16 51 bl __aeabi_uidiv 52 uxth r0, r0 53 uxth r5, r5 54 ubfx r4, r4, #0, #10 55 mls r5, r0, r9, r5 56 mla r4, r6, r5, r4 57 str r4, [r7] 58 str r0, [r8] 59 movs r0, #0 60 pop {r3, r4, r5, r6, r7, r8, r9, pc} 61.L4: 62 .align 2 63.L3: 64 .word .LANCHOR0 65 .fnend 66 .size l2p_addr_tran, .-l2p_addr_tran 67 .align 1 68 .syntax unified 69 .thumb 70 .thumb_func 71 .fpu softvfp 72 .type _copy_from_user, %function 73_copy_from_user: 74 .fnstart 75 @ args = 0, pretend = 0, frame = 0 76 @ frame_needed = 0, uses_anonymous_args = 0 77 push {r3, r4, r5, r6, r7, lr} 78 .save {r3, r4, r5, r6, r7, lr} 79 mov r6, r0 80 mov r4, r2 81 mov r3, sp 82 bic r3, r3, #8160 83 bic r3, r3, #31 84 ldr r3, [r3, #8] 85 .syntax unified 86@ 157 "./include/linux/uaccess.h" 1 87 .syntax unified 88adds r7, r1, r2; sbcscc r7, r7, r3; movcc r3, #0 89@ 0 "" 2 90 .thumb 91 .syntax unified 92 cbnz r3, .L8 93 bl arm_copy_from_user 94 mov r5, r0 95 cbz r0, .L5 96.L6: 97 subs r4, r4, r5 98 mov r2, r5 99 adds r0, r6, r4 100 movs r1, #0 101 bl memset 102.L5: 103 mov r0, r5 104 pop {r3, r4, r5, r6, r7, pc} 105.L8: 106 mov r5, r2 107 b .L6 108 .fnend 109 .size _copy_from_user, .-_copy_from_user 110 .section .rodata.str1.1,"aMS",%progbits,1 111.LC0: 112 .ascii "SFTL version: 5.0.58 20220814\000" 113.LC1: 114 .ascii "\012%s\012\000" 115.LC2: 116 .ascii "act blk: %x %x %x %x %x %x\012\000" 117.LC3: 118 .ascii "buf blk: %x %x %x %x %x %x\012\000" 119.LC4: 120 .ascii "tmp blk: %x %x %x %x %x %x\012\000" 121.LC5: 122 .ascii "gc blk: %x %x %x %x %x %x\012\000" 123.LC6: 124 .ascii "free blk: %x %x %x\012\000" 125 .text 126 .align 1 127 .global ftl_print_sblk_info 128 .syntax unified 129 .thumb 130 .thumb_func 131 .fpu softvfp 132 .type ftl_print_sblk_info, %function 133ftl_print_sblk_info: 134 .fnstart 135 @ args = 0, pretend = 0, frame = 0 136 @ frame_needed = 0, uses_anonymous_args = 0 137 push {r0, r1, r2, r3, r4, lr} 138 .save {r4, lr} 139 .pad #16 140 ldr r4, .L13 141 ldr r1, .L13+4 142 ldr r0, .L13+8 143 bl sftl_printk 144 ldr r0, .L13+12 145 ldrh r1, [r4, #24] 146 ldr r3, [r4, #72] 147 ldrh r2, [r4, #26] 148 ldrh r3, [r3, r1, lsl #1] 149 str r3, [sp, #8] 150 ldrh r3, [r4, #28] 151 str r3, [sp, #4] 152 ldrb r3, [r4, #32] @ zero_extendqisi2 153 str r3, [sp] 154 ldrb r3, [r4, #30] @ zero_extendqisi2 155 bl sftl_printk 156 ldrh r1, [r4, #76] 157 ldr r3, [r4, #72] 158 ldrh r2, [r4, #78] 159 ldr r0, .L13+16 160 ldrh r3, [r3, r1, lsl #1] 161 str r3, [sp, #8] 162 ldrh r3, [r4, #80] 163 str r3, [sp, #4] 164 ldrb r3, [r4, #84] @ zero_extendqisi2 165 str r3, [sp] 166 ldrb r3, [r4, #82] @ zero_extendqisi2 167 bl sftl_printk 168 ldrh r1, [r4, #124] 169 ldr r3, [r4, #72] 170 ldrh r2, [r4, #126] 171 ldr r0, .L13+20 172 ldrh r3, [r3, r1, lsl #1] 173 str r3, [sp, #8] 174 ldrh r3, [r4, #128] 175 str r3, [sp, #4] 176 ldrb r3, [r4, #132] @ zero_extendqisi2 177 str r3, [sp] 178 ldrb r3, [r4, #130] @ zero_extendqisi2 179 bl sftl_printk 180 ldrh r1, [r4, #172] 181 ldr r3, [r4, #72] 182 ldrh r2, [r4, #174] 183 ldr r0, .L13+24 184 ldrh r3, [r3, r1, lsl #1] 185 str r3, [sp, #8] 186 ldrh r3, [r4, #176] 187 str r3, [sp, #4] 188 ldrb r3, [r4, #180] @ zero_extendqisi2 189 str r3, [sp] 190 ldrb r3, [r4, #178] @ zero_extendqisi2 191 bl sftl_printk 192 ldrh r3, [r4, #220] 193 ldrh r2, [r4, #222] 194 ldrh r1, [r4, #224] 195 ldr r0, .L13+28 196 add sp, sp, #16 197 @ sp needed 198 pop {r4, lr} 199 b sftl_printk 200.L14: 201 .align 2 202.L13: 203 .word .LANCHOR0 204 .word .LC0 205 .word .LC1 206 .word .LC2 207 .word .LC3 208 .word .LC4 209 .word .LC5 210 .word .LC6 211 .fnend 212 .size ftl_print_sblk_info, .-ftl_print_sblk_info 213 .align 1 214 .global Ftl_log2 215 .syntax unified 216 .thumb 217 .thumb_func 218 .fpu softvfp 219 .type Ftl_log2, %function 220Ftl_log2: 221 .fnstart 222 @ args = 0, pretend = 0, frame = 0 223 @ frame_needed = 0, uses_anonymous_args = 0 224 @ link register save eliminated. 225 movs r1, #0 226 movs r2, #1 227.L16: 228 uxth r3, r1 229 cmp r2, r0 230 add r1, r1, #1 231 bls .L17 232 subs r0, r3, #1 233 uxth r0, r0 234 bx lr 235.L17: 236 lsls r2, r2, #1 237 b .L16 238 .fnend 239 .size Ftl_log2, .-Ftl_log2 240 .align 1 241 .global FtlPrintInfo 242 .syntax unified 243 .thumb 244 .thumb_func 245 .fpu softvfp 246 .type FtlPrintInfo, %function 247FtlPrintInfo: 248 .fnstart 249 @ args = 0, pretend = 0, frame = 0 250 @ frame_needed = 0, uses_anonymous_args = 0 251 @ link register save eliminated. 252 bx lr 253 .fnend 254 .size FtlPrintInfo, .-FtlPrintInfo 255 .align 1 256 .global FtlSysBlkNumInit 257 .syntax unified 258 .thumb 259 .thumb_func 260 .fpu softvfp 261 .type FtlSysBlkNumInit, %function 262FtlSysBlkNumInit: 263 .fnstart 264 @ args = 0, pretend = 0, frame = 0 265 @ frame_needed = 0, uses_anonymous_args = 0 266 @ link register save eliminated. 267 ldr r3, .L20 268 cmp r0, #24 269 it cc 270 movcc r0, #24 271 ldrh r2, [r3, #232] 272 ldrh r1, [r3, #242] 273 str r0, [r3, #228] 274 muls r2, r0, r2 275 subs r0, r1, r0 276 ldr r1, [r3, #248] 277 str r2, [r3, #236] 278 strh r0, [r3, #240] @ movhi 279 subs r2, r1, r2 280 movs r0, #0 281 str r2, [r3, #244] 282 bx lr 283.L21: 284 .align 2 285.L20: 286 .word .LANCHOR0 287 .fnend 288 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit 289 .global __aeabi_idiv 290 .align 1 291 .global FtlConstantsInit 292 .syntax unified 293 .thumb 294 .thumb_func 295 .fpu softvfp 296 .type FtlConstantsInit, %function 297FtlConstantsInit: 298 .fnstart 299 @ args = 0, pretend = 0, frame = 0 300 @ frame_needed = 0, uses_anonymous_args = 0 301 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 302 .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 303 mov r7, r0 304 ldr r4, .L33 305 ldrh r2, [r0] 306 ldrh r1, [r7, #14] 307 ldrh r5, [r0, #2] 308 ldrh r3, [r7, #6] 309 cmp r1, #4 310 ldrh r0, [r0, #4] 311 strh r2, [r4, #252] @ movhi 312 strh r5, [r4, #254] @ movhi 313 strh r0, [r4, #256] @ movhi 314 strh r3, [r4, #242] @ movhi 315 strh r1, [r4, #258] @ movhi 316 bne .L23 317 lsrs r3, r3, #1 318 strh r3, [r4, #242] @ movhi 319 movs r3, #8 320 strh r3, [r4, #258] @ movhi 321.L24: 322 ldr r1, .L33+4 323 movs r3, #0 324.L25: 325 strb r3, [r1], #1 326 adds r3, r3, #1 327 cmp r3, #32 328 bne .L25 329 ldrh r6, [r4, #242] 330 cmp r2, #1 331 ldrh r0, [r4, #256] 332 mov r3, #0 333 it ne 334 movne r2, #5 335 strh r3, [r4, #294] @ movhi 336 strh r2, [r4, #292] @ movhi 337 mov r9, #640 338 strh r9, [r4, #296] @ movhi 339 smulbb r5, r5, r0 340 smulbb r0, r0, r6 341 uxth r5, r5 342 strh r5, [r4, #232] @ movhi 343 uxth r0, r0 344 strh r0, [r4, #298] @ movhi 345 bl Ftl_log2 346 ldrh fp, [r7, #12] 347 ldrh r10, [r4, #258] 348 strh r0, [r4, #300] @ movhi 349 mov r0, r10 350 strh fp, [r4, #302] @ movhi 351 smulbb r3, r5, fp 352 strh fp, [r4, #304] @ movhi 353 strh r3, [r4, #306] @ movhi 354 bl Ftl_log2 355 lsl r3, r10, #9 356 mul r1, fp, r10 357 mov r8, r0 358 strh r0, [r4, #308] @ movhi 359 uxth r3, r3 360 strh r3, [r4, #310] @ movhi 361 asr r9, r9, r8 362 add r8, r8, #9 363 lsrs r3, r3, #8 364 strh r3, [r4, #312] @ movhi 365 ldrh r3, [r7, #20] 366 mov r0, #5120 367 strh r3, [r4, #314] @ movhi 368 mul r3, r6, r5 369 str r3, [r4, #248] 370 lsls r6, r6, #6 371 add r9, r9, #2 372 asr r6, r6, r8 373 muls r3, r1, r3 374 asrs r3, r3, #11 375 str r3, [r4, #316] 376 bl __aeabi_idiv 377 cmp r0, #4 378 strh r6, [r4, #324] @ movhi 379 uxth r6, r6 380 itet le 381 movle r3, #4 382 strhgt r0, [r4, #320] @ movhi 383 strhle r3, [r4, #320] @ movhi 384 mov r1, r5 385 mul r3, r6, r5 386 strh r9, [r4, #322] @ movhi 387 ldrh r0, [r4, #320] 388 str r3, [r4, #328] 389 bl __aeabi_uidiv 390 cmp r5, #1 391 uxtah r6, r6, r0 392 ite ne 393 addne r6, r6, #8 394 addeq r6, r6, #12 395 str r6, [r4, #228] 396 ldrh r0, [r4, #228] 397 bl FtlSysBlkNumInit 398 ldr r3, [r4, #228] 399 ldr r2, [r4, #244] 400 movs r0, #0 401 str r3, [r4, #332] 402 ldrh r3, [r4, #302] 403 str r0, [r4, #340] 404 muls r3, r2, r3 405 ldrh r2, [r4, #308] 406 adds r2, r2, #9 407 lsls r3, r3, #2 408 lsrs r3, r3, r2 409 adds r3, r3, #2 410 strh r3, [r4, #336] @ movhi 411 movs r3, #32 412 strh r3, [r4, #338] @ movhi 413 ldrh r3, [r4, #320] 414 adds r3, r3, #3 415 strh r3, [r4, #320] @ movhi 416 ldr r3, [r4, #328] 417 adds r3, r3, #3 418 str r3, [r4, #328] 419 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} 420.L23: 421 cmp r1, #8 422 bne .L24 423 cmp r0, #1 424 itttt eq 425 lsreq r3, r3, #1 426 strheq r3, [r4, #242] @ movhi 427 moveq r3, #2 428 strheq r3, [r4, #256] @ movhi 429 b .L24 430.L34: 431 .align 2 432.L33: 433 .word .LANCHOR0 434 .word .LANCHOR0+260 435 .fnend 436 .size FtlConstantsInit, .-FtlConstantsInit 437 .align 1 438 .global IsBlkInVendorPart 439 .syntax unified 440 .thumb 441 .thumb_func 442 .fpu softvfp 443 .type IsBlkInVendorPart, %function 444IsBlkInVendorPart: 445 .fnstart 446 @ args = 0, pretend = 0, frame = 0 447 @ frame_needed = 0, uses_anonymous_args = 0 448 @ link register save eliminated. 449 ldr r2, .L41 450 mov r1, r0 451 ldrh r0, [r2, #344] 452 cbz r0, .L35 453 ldr r3, [r2, #348] 454 ldrh r2, [r2, #320] 455 add r2, r3, r2, lsl #1 456.L37: 457 cmp r3, r2 458 bne .L38 459 movs r0, #0 460 bx lr 461.L38: 462 ldrh r0, [r3], #2 463 cmp r1, r0 464 bne .L37 465 movs r0, #1 466.L35: 467 bx lr 468.L42: 469 .align 2 470.L41: 471 .word .LANCHOR0 472 .fnend 473 .size IsBlkInVendorPart, .-IsBlkInVendorPart 474 .align 1 475 .global FtlCacheWriteBack 476 .syntax unified 477 .thumb 478 .thumb_func 479 .fpu softvfp 480 .type FtlCacheWriteBack, %function 481FtlCacheWriteBack: 482 .fnstart 483 @ args = 0, pretend = 0, frame = 0 484 @ frame_needed = 0, uses_anonymous_args = 0 485 @ link register save eliminated. 486 movs r0, #0 487 bx lr 488 .fnend 489 .size FtlCacheWriteBack, .-FtlCacheWriteBack 490 .align 1 491 .global sftl_get_density 492 .syntax unified 493 .thumb 494 .thumb_func 495 .fpu softvfp 496 .type sftl_get_density, %function 497sftl_get_density: 498 .fnstart 499 @ args = 0, pretend = 0, frame = 0 500 @ frame_needed = 0, uses_anonymous_args = 0 501 @ link register save eliminated. 502 ldr r3, .L45 503 ldr r0, [r3, #340] 504 bx lr 505.L46: 506 .align 2 507.L45: 508 .word .LANCHOR0 509 .fnend 510 .size sftl_get_density, .-sftl_get_density 511 .global __aeabi_uidivmod 512 .section .rodata.str1.1 513.LC7: 514 .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" 515 .ascii "\000" 516 .text 517 .align 1 518 .global FtlBbmMapBadBlock 519 .syntax unified 520 .thumb 521 .thumb_func 522 .fpu softvfp 523 .type FtlBbmMapBadBlock, %function 524FtlBbmMapBadBlock: 525 .fnstart 526 @ args = 0, pretend = 0, frame = 0 527 @ frame_needed = 0, uses_anonymous_args = 0 528 push {r0, r1, r2, r4, r5, r6, r7, lr} 529 .save {r4, r5, r6, r7, lr} 530 .pad #12 531 mov r6, r0 532 ldr r5, .L48 533 ldrh r4, [r5, #298] 534 mov r1, r4 535 bl __aeabi_uidiv 536 uxth r7, r0 537 mov r1, r4 538 mov r0, r6 539 bl __aeabi_uidivmod 540 add r3, r5, r7, lsl #2 541 ubfx r2, r1, #5, #11 542 and r0, r1, #31 543 movs r4, #1 544 ldr r3, [r3, #380] 545 lsls r4, r4, r0 546 ldr r0, [r3, r2, lsl #2] 547 orrs r4, r4, r0 548 ldr r0, .L48+4 549 str r4, [r3, r2, lsl #2] 550 uxth r3, r1 551 mov r2, r7 552 mov r1, r6 553 str r4, [sp] 554 bl sftl_printk 555 ldrh r3, [r5, #358] 556 movs r0, #0 557 adds r3, r3, #1 558 strh r3, [r5, #358] @ movhi 559 add sp, sp, #12 560 @ sp needed 561 pop {r4, r5, r6, r7, pc} 562.L49: 563 .align 2 564.L48: 565 .word .LANCHOR0 566 .word .LC7 567 .fnend 568 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock 569 .align 1 570 .global FtlBbmIsBadBlock 571 .syntax unified 572 .thumb 573 .thumb_func 574 .fpu softvfp 575 .type FtlBbmIsBadBlock, %function 576FtlBbmIsBadBlock: 577 .fnstart 578 @ args = 0, pretend = 0, frame = 0 579 @ frame_needed = 0, uses_anonymous_args = 0 580 push {r3, r4, r5, r6, r7, lr} 581 .save {r3, r4, r5, r6, r7, lr} 582 mov r6, r0 583 ldr r5, .L51 584 ldrh r7, [r5, #298] 585 mov r1, r7 586 bl __aeabi_uidivmod 587 mov r0, r6 588 uxth r4, r1 589 mov r1, r7 590 bl __aeabi_uidiv 591 uxth r0, r0 592 lsrs r2, r4, #5 593 and r4, r4, #31 594 add r5, r5, r0, lsl #2 595 ldr r3, [r5, #380] 596 ldr r0, [r3, r2, lsl #2] 597 lsrs r0, r0, r4 598 and r0, r0, #1 599 pop {r3, r4, r5, r6, r7, pc} 600.L52: 601 .align 2 602.L51: 603 .word .LANCHOR0 604 .fnend 605 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock 606 .align 1 607 .global FtlBbtInfoPrint 608 .syntax unified 609 .thumb 610 .thumb_func 611 .fpu softvfp 612 .type FtlBbtInfoPrint, %function 613FtlBbtInfoPrint: 614 .fnstart 615 @ args = 0, pretend = 0, frame = 0 616 @ frame_needed = 0, uses_anonymous_args = 0 617 @ link register save eliminated. 618 bx lr 619 .fnend 620 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint 621 .align 1 622 .global FtlBbtCalcTotleCnt 623 .syntax unified 624 .thumb 625 .thumb_func 626 .fpu softvfp 627 .type FtlBbtCalcTotleCnt, %function 628FtlBbtCalcTotleCnt: 629 .fnstart 630 @ args = 0, pretend = 0, frame = 0 631 @ frame_needed = 0, uses_anonymous_args = 0 632 ldr r3, .L61 633 push {r4, r5, r6, lr} 634 .save {r4, r5, r6, lr} 635 movs r5, #0 636 mov r4, r5 637 ldrh r6, [r3, #298] 638 ldrh r3, [r3, #254] 639 muls r6, r3, r6 640.L55: 641 uxth r0, r5 642 cmp r0, r6 643 blt .L57 644 mov r0, r4 645 pop {r4, r5, r6, pc} 646.L57: 647 bl FtlBbmIsBadBlock 648 cbz r0, .L56 649 adds r4, r4, #1 650 uxth r4, r4 651.L56: 652 adds r5, r5, #1 653 b .L55 654.L62: 655 .align 2 656.L61: 657 .word .LANCHOR0 658 .fnend 659 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt 660 .align 1 661 .global V2P_block 662 .syntax unified 663 .thumb 664 .thumb_func 665 .fpu softvfp 666 .type V2P_block, %function 667V2P_block: 668 .fnstart 669 @ args = 0, pretend = 0, frame = 0 670 @ frame_needed = 0, uses_anonymous_args = 0 671 push {r3, r4, r5, r6, r7, lr} 672 .save {r3, r4, r5, r6, r7, lr} 673 mov r4, r1 674 ldr r5, .L64 675 mov r6, r0 676 ldrh r7, [r5, #256] 677 mov r1, r7 678 bl __aeabi_uidiv 679 ldrh r5, [r5, #298] 680 smulbb r4, r7, r4 681 mov r1, r7 682 smulbb r5, r5, r0 683 mov r0, r6 684 bl __aeabi_uidivmod 685 add r4, r4, r1 686 add r4, r4, r5 687 uxth r0, r4 688 pop {r3, r4, r5, r6, r7, pc} 689.L65: 690 .align 2 691.L64: 692 .word .LANCHOR0 693 .fnend 694 .size V2P_block, .-V2P_block 695 .align 1 696 .global P2V_plane 697 .syntax unified 698 .thumb 699 .thumb_func 700 .fpu softvfp 701 .type P2V_plane, %function 702P2V_plane: 703 .fnstart 704 @ args = 0, pretend = 0, frame = 0 705 @ frame_needed = 0, uses_anonymous_args = 0 706 ldr r3, .L67 707 push {r4, r5, r6, lr} 708 .save {r4, r5, r6, lr} 709 mov r5, r0 710 ldrh r6, [r3, #256] 711 ldrh r1, [r3, #298] 712 bl __aeabi_uidiv 713 mov r1, r6 714 smulbb r4, r0, r6 715 mov r0, r5 716 bl __aeabi_uidivmod 717 adds r0, r4, r1 718 uxth r0, r0 719 pop {r4, r5, r6, pc} 720.L68: 721 .align 2 722.L67: 723 .word .LANCHOR0 724 .fnend 725 .size P2V_plane, .-P2V_plane 726 .align 1 727 .global P2V_block_in_plane 728 .syntax unified 729 .thumb 730 .thumb_func 731 .fpu softvfp 732 .type P2V_block_in_plane, %function 733P2V_block_in_plane: 734 .fnstart 735 @ args = 0, pretend = 0, frame = 0 736 @ frame_needed = 0, uses_anonymous_args = 0 737 push {r4, lr} 738 .save {r4, lr} 739 ldr r4, .L70 740 ldrh r1, [r4, #298] 741 bl __aeabi_uidivmod 742 mov r0, r1 743 ldrh r1, [r4, #256] 744 uxth r0, r0 745 bl __aeabi_uidiv 746 uxth r0, r0 747 pop {r4, pc} 748.L71: 749 .align 2 750.L70: 751 .word .LANCHOR0 752 .fnend 753 .size P2V_block_in_plane, .-P2V_block_in_plane 754 .align 1 755 .global ftl_cmp_data_ver 756 .syntax unified 757 .thumb 758 .thumb_func 759 .fpu softvfp 760 .type ftl_cmp_data_ver, %function 761ftl_cmp_data_ver: 762 .fnstart 763 @ args = 0, pretend = 0, frame = 0 764 @ frame_needed = 0, uses_anonymous_args = 0 765 @ link register save eliminated. 766 cmp r0, r1 767 bls .L73 768 subs r0, r0, r1 769 cmp r0, #-2147483648 770 ite hi 771 movhi r0, #0 772 movls r0, #1 773 bx lr 774.L73: 775 subs r1, r1, r0 776 cmp r1, #-2147483648 777 ite ls 778 movls r0, #0 779 movhi r0, #1 780 bx lr 781 .fnend 782 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver 783 .align 1 784 .global FtlFreeSysBlkQueueEmpty 785 .syntax unified 786 .thumb 787 .thumb_func 788 .fpu softvfp 789 .type FtlFreeSysBlkQueueEmpty, %function 790FtlFreeSysBlkQueueEmpty: 791 .fnstart 792 @ args = 0, pretend = 0, frame = 0 793 @ frame_needed = 0, uses_anonymous_args = 0 794 @ link register save eliminated. 795 ldr r3, .L76 796 ldrh r0, [r3, #418] 797 clz r0, r0 798 lsrs r0, r0, #5 799 bx lr 800.L77: 801 .align 2 802.L76: 803 .word .LANCHOR0 804 .fnend 805 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty 806 .align 1 807 .global FtlFreeSysBlkQueueFull 808 .syntax unified 809 .thumb 810 .thumb_func 811 .fpu softvfp 812 .type FtlFreeSysBlkQueueFull, %function 813FtlFreeSysBlkQueueFull: 814 .fnstart 815 @ args = 0, pretend = 0, frame = 0 816 @ frame_needed = 0, uses_anonymous_args = 0 817 @ link register save eliminated. 818 ldr r3, .L79 819 ldrh r0, [r3, #418] 820 sub r3, r0, #1024 821 rsbs r0, r3, #0 822 adcs r0, r0, r3 823 bx lr 824.L80: 825 .align 2 826.L79: 827 .word .LANCHOR0 828 .fnend 829 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull 830 .align 1 831 .global FtlFreeSysBLkSort 832 .syntax unified 833 .thumb 834 .thumb_func 835 .fpu softvfp 836 .type FtlFreeSysBLkSort, %function 837FtlFreeSysBLkSort: 838 .fnstart 839 @ args = 0, pretend = 0, frame = 0 840 @ frame_needed = 0, uses_anonymous_args = 0 841 ldr r3, .L90 842 push {r4, r5, r6, lr} 843 .save {r4, r5, r6, lr} 844 ldrh r2, [r3, #418] 845 cbz r2, .L81 846 ldrh r4, [r3, #2496] 847 movs r0, #0 848 ldrh r1, [r3, #414] 849 mov r5, r0 850 ldrh r2, [r3, #416] 851 and r4, r4, #31 852.L84: 853 uxth r6, r0 854 cmp r4, r6 855 bhi .L85 856 cbz r5, .L81 857 strh r1, [r3, #414] @ movhi 858 strh r2, [r3, #416] @ movhi 859.L81: 860 pop {r4, r5, r6, pc} 861.L85: 862 add r5, r3, r1, lsl #1 863 adds r1, r1, #1 864 adds r0, r0, #1 865 ubfx r1, r1, #0, #10 866 ldrh r6, [r5, #420] 867 add r5, r3, r2, lsl #1 868 adds r2, r2, #1 869 strh r6, [r5, #420] @ movhi 870 ubfx r2, r2, #0, #10 871 movs r5, #1 872 b .L84 873.L91: 874 .align 2 875.L90: 876 .word .LANCHOR0 877 .fnend 878 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort 879 .align 1 880 .global IsInFreeQueue 881 .syntax unified 882 .thumb 883 .thumb_func 884 .fpu softvfp 885 .type IsInFreeQueue, %function 886IsInFreeQueue: 887 .fnstart 888 @ args = 0, pretend = 0, frame = 0 889 @ frame_needed = 0, uses_anonymous_args = 0 890 ldr r1, .L98 891 push {r4, r5, lr} 892 .save {r4, r5, lr} 893 ldrh r4, [r1, #418] 894 cmp r4, #1024 895 beq .L96 896 ldrh r5, [r1, #414] 897 movs r2, #0 898.L94: 899 cmp r4, r2 900 bhi .L95 901.L96: 902 movs r0, #0 903.L92: 904 pop {r4, r5, pc} 905.L95: 906 adds r3, r5, r2 907 ubfx r3, r3, #0, #10 908 add r3, r1, r3, lsl #1 909 ldrh r3, [r3, #420] 910 cmp r3, r0 911 beq .L97 912 adds r2, r2, #1 913 b .L94 914.L97: 915 movs r0, #1 916 b .L92 917.L99: 918 .align 2 919.L98: 920 .word .LANCHOR0 921 .fnend 922 .size IsInFreeQueue, .-IsInFreeQueue 923 .align 1 924 .global insert_data_list 925 .syntax unified 926 .thumb 927 .thumb_func 928 .fpu softvfp 929 .type insert_data_list, %function 930insert_data_list: 931 .fnstart 932 @ args = 0, pretend = 0, frame = 8 933 @ frame_needed = 0, uses_anonymous_args = 0 934 ldr r3, .L115 935 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 936 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 937 .pad #12 938 ldrh r2, [r3, #240] 939 cmp r2, r0 940 bls .L102 941 movs r5, #6 942 ldr ip, [r3, #2516] 943 movw r2, #65535 944 muls r5, r0, r5 945 add r4, ip, r5 946 strh r2, [r4, #2] @ movhi 947 strh r2, [ip, r5] @ movhi 948 ldr r1, [r3, #2520] 949 cbnz r1, .L103 950.L114: 951 str r4, [r3, #2520] 952 b .L102 953.L103: 954 ldrh r2, [r4, #4] 955 ldr r9, [r3, #72] 956 ldrh r7, [r9, r0, lsl #1] 957 cbz r2, .L110 958 muls r7, r2, r7 959.L104: 960 ldr r8, [r3, #2516] 961 movw fp, #65535 962 ldr r6, .L115+4 963 sub r2, r1, r8 964 asrs r2, r2, #1 965 muls r2, r6, r2 966 ldrh r6, [r3, #240] 967 str r6, [sp, #4] 968 movs r6, #0 969 uxth r2, r2 970.L108: 971 adds r6, r6, #1 972 ldr lr, [sp, #4] 973 uxth r6, r6 974 cmp r6, lr 975 bhi .L102 976 cmp r0, r2 977 beq .L102 978 ldrh r10, [r1, #4] 979 cmp r10, #0 980 beq .L106 981 ldrh lr, [r9, r2, lsl #1] 982 mul lr, r10, lr 983 cmp lr, r7 984 bcs .L106 985 ldrh lr, [r1] 986 cmp lr, fp 987 bne .L107 988 strh r2, [r4, #2] @ movhi 989 strh r0, [r1] @ movhi 990 str r4, [r3, #2524] 991.L102: 992 movs r0, #0 993 add sp, sp, #12 994 @ sp needed 995 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 996.L110: 997 mov r7, #-1 998 b .L104 999.L107: 1000 movs r2, #6 1001 mla r1, r2, lr, r8 1002 mov r2, lr 1003 b .L108 1004.L106: 1005 strh r2, [ip, r5] @ movhi 1006 ldrh r2, [r1, #2] 1007 strh r2, [r4, #2] @ movhi 1008 ldr r5, [r3, #2520] 1009 cmp r1, r5 1010 bne .L109 1011 strh r0, [r1, #2] @ movhi 1012 b .L114 1013.L109: 1014 movs r4, #6 1015 ldr r3, [r3, #2516] 1016 muls r2, r4, r2 1017 strh r0, [r3, r2] @ movhi 1018 strh r0, [r1, #2] @ movhi 1019 b .L102 1020.L116: 1021 .align 2 1022.L115: 1023 .word .LANCHOR0 1024 .word -1431655765 1025 .fnend 1026 .size insert_data_list, .-insert_data_list 1027 .section .rodata.str1.1 1028.LC8: 1029 .ascii "\012!!!!! error @ func:%s - line:%d\012\000" 1030 .text 1031 .align 1 1032 .global INSERT_DATA_LIST 1033 .syntax unified 1034 .thumb 1035 .thumb_func 1036 .fpu softvfp 1037 .type INSERT_DATA_LIST, %function 1038INSERT_DATA_LIST: 1039 .fnstart 1040 @ args = 0, pretend = 0, frame = 0 1041 @ frame_needed = 0, uses_anonymous_args = 0 1042 push {r3, lr} 1043 .save {r3, lr} 1044 bl insert_data_list 1045 ldr r2, .L119 1046 ldrh r3, [r2, #2528] 1047 adds r3, r3, #1 1048 uxth r3, r3 1049 strh r3, [r2, #2528] @ movhi 1050 ldrh r2, [r2, #240] 1051 cmp r2, r3 1052 bcs .L117 1053 pop {r3, lr} 1054 movs r2, #214 1055 ldr r1, .L119+4 1056 ldr r0, .L119+8 1057 b sftl_printk 1058.L117: 1059 pop {r3, pc} 1060.L120: 1061 .align 2 1062.L119: 1063 .word .LANCHOR0 1064 .word .LANCHOR1 1065 .word .LC8 1066 .fnend 1067 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST 1068 .align 1 1069 .global insert_free_list 1070 .syntax unified 1071 .thumb 1072 .thumb_func 1073 .fpu softvfp 1074 .type insert_free_list, %function 1075insert_free_list: 1076 .fnstart 1077 @ args = 0, pretend = 0, frame = 0 1078 @ frame_needed = 0, uses_anonymous_args = 0 1079 push {r4, r5, r6, r7, r8, r9, r10, lr} 1080 .save {r4, r5, r6, r7, r8, r9, r10, lr} 1081 movw r5, #65535 1082 cmp r0, r5 1083 beq .L122 1084 ldr r1, .L129 1085 mov lr, #6 1086 mul r6, lr, r0 1087 ldr r7, [r1, #2516] 1088 adds r4, r7, r6 1089 strh r5, [r4, #2] @ movhi 1090 strh r5, [r7, r6] @ movhi 1091 ldr r3, [r1, #2532] 1092 cbnz r3, .L123 1093.L128: 1094 str r4, [r1, #2532] 1095 b .L122 1096.L123: 1097 ldr ip, [r1, #2516] 1098 ldr r10, .L129+4 1099 sub r2, r3, ip 1100 ldr r8, [r1, #2536] 1101 asrs r2, r2, #1 1102 ldrh r9, [r8, r0, lsl #1] 1103 mul r2, r10, r2 1104 uxth r2, r2 1105.L126: 1106 ldrh r10, [r8, r2, lsl #1] 1107 cmp r10, r9 1108 bcs .L124 1109 ldrh r10, [r3] 1110 cmp r10, r5 1111 bne .L125 1112 strh r2, [r4, #2] @ movhi 1113 strh r0, [r3] @ movhi 1114.L122: 1115 movs r0, #0 1116 pop {r4, r5, r6, r7, r8, r9, r10, pc} 1117.L125: 1118 mla r3, lr, r10, ip 1119 mov r2, r10 1120 b .L126 1121.L124: 1122 ldrh r5, [r3, #2] 1123 strh r5, [r4, #2] @ movhi 1124 strh r2, [r7, r6] @ movhi 1125 ldr r2, [r1, #2532] 1126 cmp r2, r3 1127 bne .L127 1128 strh r0, [r3, #2] @ movhi 1129 b .L128 1130.L127: 1131 ldrh r2, [r3, #2] 1132 movs r4, #6 1133 ldr r1, [r1, #2516] 1134 muls r2, r4, r2 1135 strh r0, [r1, r2] @ movhi 1136 strh r0, [r3, #2] @ movhi 1137 b .L122 1138.L130: 1139 .align 2 1140.L129: 1141 .word .LANCHOR0 1142 .word -1431655765 1143 .fnend 1144 .size insert_free_list, .-insert_free_list 1145 .align 1 1146 .global INSERT_FREE_LIST 1147 .syntax unified 1148 .thumb 1149 .thumb_func 1150 .fpu softvfp 1151 .type INSERT_FREE_LIST, %function 1152INSERT_FREE_LIST: 1153 .fnstart 1154 @ args = 0, pretend = 0, frame = 0 1155 @ frame_needed = 0, uses_anonymous_args = 0 1156 push {r3, lr} 1157 .save {r3, lr} 1158 bl insert_free_list 1159 ldr r2, .L133 1160 ldrh r3, [r2, #224] 1161 adds r3, r3, #1 1162 uxth r3, r3 1163 strh r3, [r2, #224] @ movhi 1164 ldrh r2, [r2, #240] 1165 cmp r2, r3 1166 bcs .L131 1167 pop {r3, lr} 1168 movs r2, #207 1169 ldr r1, .L133+4 1170 ldr r0, .L133+8 1171 b sftl_printk 1172.L131: 1173 pop {r3, pc} 1174.L134: 1175 .align 2 1176.L133: 1177 .word .LANCHOR0 1178 .word .LANCHOR1+17 1179 .word .LC8 1180 .fnend 1181 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST 1182 .align 1 1183 .global List_remove_node 1184 .syntax unified 1185 .thumb 1186 .thumb_func 1187 .fpu softvfp 1188 .type List_remove_node, %function 1189List_remove_node: 1190 .fnstart 1191 @ args = 0, pretend = 0, frame = 0 1192 @ frame_needed = 0, uses_anonymous_args = 0 1193 push {r4, r5, r6, r7, r8, lr} 1194 .save {r4, r5, r6, r7, r8, lr} 1195 movs r4, #6 1196 ldr r8, .L146 1197 muls r4, r1, r4 1198 movw r3, #65535 1199 mov r5, r0 1200 ldr r7, [r8, #2516] 1201 adds r6, r7, r4 1202 ldrh r2, [r6, #2] 1203 cmp r2, r3 1204 bne .L136 1205 ldr r3, [r0] 1206 cmp r6, r3 1207 bne .L137 1208.L140: 1209 ldrh r1, [r7, r4] 1210 movw r2, #65535 1211 cmp r1, r2 1212 bne .L144 1213 movs r3, #0 1214 str r3, [r5] 1215.L142: 1216 movw r3, #65535 1217 strh r3, [r7, r4] @ movhi 1218 strh r3, [r6, #2] @ movhi 1219 movs r0, #0 1220 pop {r4, r5, r6, r7, r8, pc} 1221.L137: 1222 ldr r1, .L146+4 1223 mov r2, #372 1224 ldr r0, .L146+8 1225 bl sftl_printk 1226.L136: 1227 ldr r3, [r5] 1228 ldrh r2, [r7, r4] 1229 cmp r3, r6 1230 beq .L140 1231 movw r1, #65535 1232 ldrh r3, [r6, #2] 1233 cmp r2, r1 1234 bne .L143 1235 cmp r3, r2 1236 beq .L142 1237 movs r0, #6 1238 ldr r1, [r8, #2516] 1239 muls r3, r0, r3 1240 strh r2, [r1, r3] @ movhi 1241 b .L142 1242.L144: 1243 ldr r3, [r8, #2516] 1244 movs r0, #6 1245 mla r3, r0, r1, r3 1246 str r3, [r5] 1247 strh r2, [r3, #2] @ movhi 1248 b .L142 1249.L143: 1250 ldr r1, [r8, #2516] 1251 movs r0, #6 1252 mla r2, r0, r2, r1 1253 strh r3, [r2, #2] @ movhi 1254 muls r3, r0, r3 1255 ldr r2, [r8, #2516] 1256 ldrh r1, [r7, r4] 1257 strh r1, [r2, r3] @ movhi 1258 b .L142 1259.L147: 1260 .align 2 1261.L146: 1262 .word .LANCHOR0 1263 .word .LANCHOR1+34 1264 .word .LC8 1265 .fnend 1266 .size List_remove_node, .-List_remove_node 1267 .align 1 1268 .global List_pop_index_node 1269 .syntax unified 1270 .thumb 1271 .thumb_func 1272 .fpu softvfp 1273 .type List_pop_index_node, %function 1274List_pop_index_node: 1275 .fnstart 1276 @ args = 0, pretend = 0, frame = 0 1277 @ frame_needed = 0, uses_anonymous_args = 0 1278 push {r4, r5, r6, lr} 1279 .save {r4, r5, r6, lr} 1280 ldr r3, [r0] 1281 cbz r3, .L153 1282 ldr r2, .L157 1283 movw r5, #65535 1284 movs r6, #6 1285 ldr r4, [r2, #2516] 1286.L150: 1287 cbz r1, .L151 1288 ldrh r2, [r3] 1289 cmp r2, r5 1290 bne .L152 1291.L151: 1292 subs r4, r3, r4 1293 ldr r3, .L157+4 1294 asrs r4, r4, #1 1295 muls r4, r3, r4 1296 uxth r1, r4 1297 bl List_remove_node 1298 uxth r0, r4 1299.L148: 1300 pop {r4, r5, r6, pc} 1301.L152: 1302 subs r1, r1, #1 1303 mla r3, r6, r2, r4 1304 uxth r1, r1 1305 b .L150 1306.L153: 1307 movw r0, #65535 1308 b .L148 1309.L158: 1310 .align 2 1311.L157: 1312 .word .LANCHOR0 1313 .word -1431655765 1314 .fnend 1315 .size List_pop_index_node, .-List_pop_index_node 1316 .align 1 1317 .global List_pop_head_node 1318 .syntax unified 1319 .thumb 1320 .thumb_func 1321 .fpu softvfp 1322 .type List_pop_head_node, %function 1323List_pop_head_node: 1324 .fnstart 1325 @ args = 0, pretend = 0, frame = 0 1326 @ frame_needed = 0, uses_anonymous_args = 0 1327 @ link register save eliminated. 1328 movs r1, #0 1329 b List_pop_index_node 1330 .fnend 1331 .size List_pop_head_node, .-List_pop_head_node 1332 .align 1 1333 .global List_get_gc_head_node 1334 .syntax unified 1335 .thumb 1336 .thumb_func 1337 .fpu softvfp 1338 .type List_get_gc_head_node, %function 1339List_get_gc_head_node: 1340 .fnstart 1341 @ args = 0, pretend = 0, frame = 0 1342 @ frame_needed = 0, uses_anonymous_args = 0 1343 ldr r2, .L166 1344 push {r4, r5, lr} 1345 .save {r4, r5, lr} 1346 ldr r3, [r2, #2520] 1347 cbz r3, .L165 1348 ldr r4, [r2, #2516] 1349 movw r1, #65535 1350 movs r5, #6 1351.L162: 1352 cbz r0, .L163 1353 ldrh r3, [r3] 1354 cmp r3, r1 1355 bne .L164 1356.L165: 1357 movw r0, #65535 1358.L160: 1359 pop {r4, r5, pc} 1360.L164: 1361 subs r2, r0, #1 1362 mla r3, r5, r3, r4 1363 uxth r0, r2 1364 b .L162 1365.L163: 1366 subs r0, r3, r4 1367 ldr r3, .L166+4 1368 asrs r0, r0, #1 1369 muls r0, r3, r0 1370 uxth r0, r0 1371 b .L160 1372.L167: 1373 .align 2 1374.L166: 1375 .word .LANCHOR0 1376 .word -1431655765 1377 .fnend 1378 .size List_get_gc_head_node, .-List_get_gc_head_node 1379 .align 1 1380 .global List_update_data_list 1381 .syntax unified 1382 .thumb 1383 .thumb_func 1384 .fpu softvfp 1385 .type List_update_data_list, %function 1386List_update_data_list: 1387 .fnstart 1388 @ args = 0, pretend = 0, frame = 0 1389 @ frame_needed = 0, uses_anonymous_args = 0 1390 push {r3, r4, r5, r6, r7, r8, r9, lr} 1391 .save {r3, r4, r5, r6, r7, r8, r9, lr} 1392 mov r5, r0 1393 ldr r4, .L179 1394 ldrh r3, [r4, #24] 1395 cmp r3, r0 1396 beq .L170 1397 ldrh r3, [r4, #76] 1398 cmp r3, r0 1399 beq .L170 1400 ldrh r3, [r4, #124] 1401 cmp r3, r0 1402 beq .L170 1403 movs r6, #6 1404 ldr r9, [r4, #2516] 1405 ldr r3, [r4, #2520] 1406 muls r6, r0, r6 1407 add r8, r9, r6 1408 cmp r8, r3 1409 beq .L170 1410 ldr r3, [r4, #72] 1411 ldrh r7, [r3, r0, lsl #1] 1412 ldrh r3, [r8, #4] 1413 cmp r3, #0 1414 beq .L177 1415 muls r7, r3, r7 1416.L172: 1417 ldrh r3, [r8, #2] 1418 movw r2, #65535 1419 cmp r3, r2 1420 bne .L173 1421 ldrh r2, [r9, r6] 1422 cmp r2, r3 1423 bne .L173 1424 ldr r1, .L179+4 1425 movw r2, #463 1426 ldr r0, .L179+8 1427 bl sftl_printk 1428.L173: 1429 ldrh r3, [r8, #2] 1430 movw r2, #65535 1431 cmp r3, r2 1432 bne .L174 1433 ldrh r2, [r9, r6] 1434 cmp r2, r3 1435 beq .L170 1436.L174: 1437 movs r2, #6 1438 ldr r1, .L179+12 1439 muls r3, r2, r3 1440 asrs r2, r3, #1 1441 muls r2, r1, r2 1442 ldr r1, [r4, #72] 1443 ldrh r2, [r1, r2, lsl #1] 1444 ldr r1, [r4, #2516] 1445 add r3, r3, r1 1446 ldrh r3, [r3, #4] 1447 cbz r3, .L178 1448 muls r3, r2, r3 1449.L175: 1450 cmp r7, r3 1451 bcs .L170 1452 ldr r0, .L179+16 1453 mov r1, r5 1454 bl List_remove_node 1455 ldrh r3, [r4, #2528] 1456 cbnz r3, .L176 1457 ldr r1, .L179+4 1458 mov r2, #474 1459 ldr r0, .L179+8 1460 bl sftl_printk 1461.L176: 1462 ldrh r3, [r4, #2528] 1463 mov r0, r5 1464 subs r3, r3, #1 1465 strh r3, [r4, #2528] @ movhi 1466 bl INSERT_DATA_LIST 1467.L170: 1468 movs r0, #0 1469 pop {r3, r4, r5, r6, r7, r8, r9, pc} 1470.L177: 1471 mov r7, #-1 1472 b .L172 1473.L178: 1474 mov r3, #-1 1475 b .L175 1476.L180: 1477 .align 2 1478.L179: 1479 .word .LANCHOR0 1480 .word .LANCHOR1+51 1481 .word .LC8 1482 .word -1431655765 1483 .word .LANCHOR0+2520 1484 .fnend 1485 .size List_update_data_list, .-List_update_data_list 1486 .align 1 1487 .global select_l2p_ram_region 1488 .syntax unified 1489 .thumb 1490 .thumb_func 1491 .fpu softvfp 1492 .type select_l2p_ram_region, %function 1493select_l2p_ram_region: 1494 .fnstart 1495 @ args = 0, pretend = 0, frame = 0 1496 @ frame_needed = 0, uses_anonymous_args = 0 1497 ldr r0, .L191 1498 movs r1, #0 1499 push {r3, r4, r5, r6, r7, lr} 1500 .save {r3, r4, r5, r6, r7, lr} 1501 movs r6, #12 1502 movw r7, #65535 1503 ldr r3, [r0, #2540] 1504 ldrh r2, [r0, #338] 1505 sub r5, r3, #12 1506.L182: 1507 uxth r4, r1 1508 cmp r2, r4 1509 bhi .L184 1510 mov r4, r2 1511 add ip, r3, #4 1512 movs r1, #0 1513 mov r7, #-2147483648 1514 mov lr, #12 1515.L185: 1516 uxth r6, r1 1517 cmp r2, r6 1518 bhi .L187 1519 cmp r2, r4 1520 bhi .L183 1521 mov r4, r2 1522 ldrh r7, [r0, #2544] 1523 movs r1, #0 1524 mov r0, #-1 1525.L188: 1526 uxth r5, r1 1527 cmp r2, r5 1528 bhi .L190 1529 cmp r2, r4 1530 bhi .L183 1531 ldr r1, .L191+4 1532 mov r2, #796 1533 ldr r0, .L191+8 1534 bl sftl_printk 1535 b .L183 1536.L184: 1537 adds r1, r1, #1 1538 mul ip, r6, r1 1539 ldrh ip, [r5, ip] 1540 cmp ip, r7 1541 bne .L182 1542.L183: 1543 mov r0, r4 1544 pop {r3, r4, r5, r6, r7, pc} 1545.L187: 1546 mul r5, lr, r1 1547 ldr r5, [ip, r5] 1548 cmp r5, #0 1549 blt .L186 1550 cmp r5, r7 1551 itt cc 1552 movcc r7, r5 1553 movcc r4, r6 1554.L186: 1555 adds r1, r1, #1 1556 b .L185 1557.L190: 1558 ldr r6, [r3, #4] 1559 cmp r6, r0 1560 bcs .L189 1561 ldrh ip, [r3] 1562 cmp ip, r7 1563 itt ne 1564 movne r0, r6 1565 movne r4, r5 1566.L189: 1567 adds r1, r1, #1 1568 adds r3, r3, #12 1569 b .L188 1570.L192: 1571 .align 2 1572.L191: 1573 .word .LANCHOR0 1574 .word .LANCHOR1+73 1575 .word .LC8 1576 .fnend 1577 .size select_l2p_ram_region, .-select_l2p_ram_region 1578 .align 1 1579 .global FtlUpdateVaildLpn 1580 .syntax unified 1581 .thumb 1582 .thumb_func 1583 .fpu softvfp 1584 .type FtlUpdateVaildLpn, %function 1585FtlUpdateVaildLpn: 1586 .fnstart 1587 @ args = 0, pretend = 0, frame = 0 1588 @ frame_needed = 0, uses_anonymous_args = 0 1589 ldr r3, .L199 1590 push {r4, r5, lr} 1591 .save {r4, r5, lr} 1592 ldrh r2, [r3, #2546] 1593 cmp r2, #4 1594 bhi .L194 1595 cbnz r0, .L194 1596 adds r2, r2, #1 1597 strh r2, [r3, #2546] @ movhi 1598.L193: 1599 pop {r4, r5, pc} 1600.L194: 1601 movs r2, #0 1602 ldrh r1, [r3, #240] 1603 strh r2, [r3, #2546] @ movhi 1604 movw r5, #65535 1605 str r2, [r3, #2548] 1606 ldr r2, [r3, #72] 1607 add r1, r2, r1, lsl #1 1608.L195: 1609 cmp r2, r1 1610 beq .L193 1611 ldrh r4, [r2], #2 1612 cmp r4, r5 1613 ittt ne 1614 ldrne r0, [r3, #2548] 1615 addne r0, r0, r4 1616 strne r0, [r3, #2548] 1617 b .L195 1618.L200: 1619 .align 2 1620.L199: 1621 .word .LANCHOR0 1622 .fnend 1623 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn 1624 .align 1 1625 .global ftl_sb_update_avl_pages 1626 .syntax unified 1627 .thumb 1628 .thumb_func 1629 .fpu softvfp 1630 .type ftl_sb_update_avl_pages, %function 1631ftl_sb_update_avl_pages: 1632 .fnstart 1633 @ args = 0, pretend = 0, frame = 0 1634 @ frame_needed = 0, uses_anonymous_args = 0 1635 push {r4, r5, r6, r7, lr} 1636 .save {r4, r5, r6, r7, lr} 1637 add r4, r2, #8 1638 ldr r6, .L208 1639 add r4, r0, r4, lsl #1 1640 movs r3, #0 1641 movw r7, #65535 1642 strh r3, [r0, #4] @ movhi 1643 ldrh r5, [r6, #232] 1644.L202: 1645 cmp r5, r2 1646 bhi .L204 1647 ldrh r3, [r6, #302] 1648 add r4, r0, #16 1649 movs r2, #0 1650 movw r6, #65535 1651 subs r3, r3, r1 1652 subs r3, r3, #1 1653 sxth r3, r3 1654.L205: 1655 uxth r1, r2 1656 cmp r5, r1 1657 bhi .L207 1658 pop {r4, r5, r6, r7, pc} 1659.L204: 1660 ldrh r3, [r4], #2 1661 adds r2, r2, #1 1662 cmp r3, r7 1663 uxth r2, r2 1664 ittt ne 1665 ldrhne r3, [r0, #4] 1666 addne r3, r3, #1 1667 strhne r3, [r0, #4] @ movhi 1668 b .L202 1669.L207: 1670 ldrh r1, [r4], #2 1671 adds r2, r2, #1 1672 cmp r1, r6 1673 ittt ne 1674 ldrhne r1, [r0, #4] 1675 addne r1, r1, r3 1676 strhne r1, [r0, #4] @ movhi 1677 b .L205 1678.L209: 1679 .align 2 1680.L208: 1681 .word .LANCHOR0 1682 .fnend 1683 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages 1684 .align 1 1685 .global FtlSlcSuperblockCheck 1686 .syntax unified 1687 .thumb 1688 .thumb_func 1689 .fpu softvfp 1690 .type FtlSlcSuperblockCheck, %function 1691FtlSlcSuperblockCheck: 1692 .fnstart 1693 @ args = 0, pretend = 0, frame = 0 1694 @ frame_needed = 0, uses_anonymous_args = 0 1695 ldrh r3, [r0, #4] 1696 push {r4, lr} 1697 .save {r4, lr} 1698 cbz r3, .L210 1699 ldrh r3, [r0] 1700 movw r2, #65535 1701 cmp r3, r2 1702 beq .L210 1703 ldrb r3, [r0, #6] @ zero_extendqisi2 1704 movs r4, #0 1705 ldr r1, .L216 1706 adds r3, r3, #8 1707 ldrh r1, [r1, #232] 1708 ldrh r3, [r0, r3, lsl #1] 1709.L213: 1710 cmp r3, r2 1711 beq .L215 1712.L210: 1713 pop {r4, pc} 1714.L215: 1715 ldrb r3, [r0, #6] @ zero_extendqisi2 1716 adds r3, r3, #1 1717 uxtb r3, r3 1718 strb r3, [r0, #6] 1719 cmp r3, r1 1720 itttt eq 1721 strbeq r4, [r0, #6] 1722 ldrheq r3, [r0, #2] 1723 addeq r3, r3, #1 1724 strheq r3, [r0, #2] @ movhi 1725 ldrb r3, [r0, #6] @ zero_extendqisi2 1726 adds r3, r3, #8 1727 ldrh r3, [r0, r3, lsl #1] 1728 b .L213 1729.L217: 1730 .align 2 1731.L216: 1732 .word .LANCHOR0 1733 .fnend 1734 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck 1735 .align 1 1736 .global make_superblock 1737 .syntax unified 1738 .thumb 1739 .thumb_func 1740 .fpu softvfp 1741 .type make_superblock, %function 1742make_superblock: 1743 .fnstart 1744 @ args = 0, pretend = 0, frame = 0 1745 @ frame_needed = 0, uses_anonymous_args = 0 1746 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 1747 .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 1748 mov r4, r0 1749 ldr r8, .L224 1750 ldrh r2, [r0] 1751 ldrh r3, [r8, #240] 1752 cmp r2, r3 1753 bcc .L219 1754 ldr r1, .L224+4 1755 movw r2, #2157 1756 ldr r0, .L224+8 1757 bl sftl_printk 1758.L219: 1759 ldrh r6, [r8, #232] 1760 add r5, r4, #16 1761 ldr r9, .L224+12 1762 movs r3, #0 1763 movw r10, #65535 1764 strh r3, [r4, #4] @ movhi 1765 add r6, r4, r6, lsl #1 1766 strb r3, [r4, #7] 1767 adds r6, r6, #16 1768.L220: 1769 ldrh r1, [r4] 1770 cmp r6, r5 1771 ldrb fp, [r4, #7] @ zero_extendqisi2 1772 bne .L222 1773 ldrh r3, [r8, #302] 1774 movs r0, #0 1775 smulbb r3, r3, fp 1776 strh r3, [r4, #4] @ movhi 1777 movs r3, #0 1778 strb r3, [r4, #9] 1779 ldr r3, [r8, #2536] 1780 ldrh r2, [r3, r1, lsl #1] 1781 movw r3, #10000 1782 cmp r2, r3 1783 itt hi 1784 movhi r3, #1 1785 strbhi r3, [r4, #9] 1786 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} 1787.L222: 1788 ldrb r0, [r9], #1 @ zero_extendqisi2 1789 bl V2P_block 1790 strh r10, [r5] @ movhi 1791 mov r7, r0 1792 bl FtlBbmIsBadBlock 1793 cbnz r0, .L221 1794 add r3, fp, #1 1795 strh r7, [r5] @ movhi 1796 strb r3, [r4, #7] 1797.L221: 1798 adds r5, r5, #2 1799 b .L220 1800.L225: 1801 .align 2 1802.L224: 1803 .word .LANCHOR0 1804 .word .LANCHOR1+95 1805 .word .LC8 1806 .word .LANCHOR0+260 1807 .fnend 1808 .size make_superblock, .-make_superblock 1809 .align 1 1810 .global update_multiplier_value 1811 .syntax unified 1812 .thumb 1813 .thumb_func 1814 .fpu softvfp 1815 .type update_multiplier_value, %function 1816update_multiplier_value: 1817 .fnstart 1818 @ args = 0, pretend = 0, frame = 0 1819 @ frame_needed = 0, uses_anonymous_args = 0 1820 push {r4, r5, r6, r7, r8, r9, r10, lr} 1821 .save {r4, r5, r6, r7, r8, r9, r10, lr} 1822 movs r6, #0 1823 ldr r5, .L234 1824 mov r8, r0 1825 mov r4, r6 1826 add r7, r5, #260 1827 ldrh r9, [r5, #232] 1828 ldrh r10, [r5, #302] 1829.L227: 1830 uxth r3, r6 1831 cmp r9, r3 1832 bhi .L229 1833 cbz r4, .L230 1834 mov r1, r4 1835 mov r0, #32768 1836 bl __aeabi_idiv 1837 uxth r4, r0 1838.L230: 1839 ldr r0, [r5, #2516] 1840 movs r2, #6 1841 mla r0, r2, r8, r0 1842 strh r4, [r0, #4] @ movhi 1843 movs r0, #0 1844 pop {r4, r5, r6, r7, r8, r9, r10, pc} 1845.L229: 1846 mov r1, r8 1847 ldrb r0, [r7], #1 @ zero_extendqisi2 1848 bl V2P_block 1849 bl FtlBbmIsBadBlock 1850 cbnz r0, .L228 1851 add r4, r4, r10 1852 uxth r4, r4 1853.L228: 1854 adds r6, r6, #1 1855 b .L227 1856.L235: 1857 .align 2 1858.L234: 1859 .word .LANCHOR0 1860 .fnend 1861 .size update_multiplier_value, .-update_multiplier_value 1862 .align 1 1863 .global GetFreeBlockMinEraseCount 1864 .syntax unified 1865 .thumb 1866 .thumb_func 1867 .fpu softvfp 1868 .type GetFreeBlockMinEraseCount, %function 1869GetFreeBlockMinEraseCount: 1870 .fnstart 1871 @ args = 0, pretend = 0, frame = 0 1872 @ frame_needed = 0, uses_anonymous_args = 0 1873 @ link register save eliminated. 1874 ldr r3, .L239 1875 ldr r0, [r3, #2532] 1876 cbz r0, .L237 1877 ldr r2, [r3, #2516] 1878 ldr r3, [r3, #2536] 1879 subs r0, r0, r2 1880 ldr r2, .L239+4 1881 asrs r0, r0, #1 1882 muls r0, r2, r0 1883 uxth r0, r0 1884 ldrh r0, [r3, r0, lsl #1] 1885.L237: 1886 bx lr 1887.L240: 1888 .align 2 1889.L239: 1890 .word .LANCHOR0 1891 .word -1431655765 1892 .fnend 1893 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount 1894 .align 1 1895 .global GetFreeBlockMaxEraseCount 1896 .syntax unified 1897 .thumb 1898 .thumb_func 1899 .fpu softvfp 1900 .type GetFreeBlockMaxEraseCount, %function 1901GetFreeBlockMaxEraseCount: 1902 .fnstart 1903 @ args = 0, pretend = 0, frame = 0 1904 @ frame_needed = 0, uses_anonymous_args = 0 1905 ldr r1, .L248 1906 mov r2, r0 1907 push {r4, r5, r6, r7, lr} 1908 .save {r4, r5, r6, r7, lr} 1909 ldr r0, [r1, #2532] 1910 cbz r0, .L242 1911 ldrh r3, [r1, #224] 1912 movs r7, #6 1913 movw ip, #65535 1914 rsb r3, r3, r3, lsl #3 1915 asrs r4, r3, #3 1916 cmp r2, r3, asr #3 1917 it gt 1918 uxthgt r2, r4 1919 ldr r4, [r1, #2516] 1920 subs r3, r0, r4 1921 ldr r0, .L248+4 1922 asrs r3, r3, #1 1923 muls r3, r0, r3 1924 movs r0, #0 1925 uxth r3, r3 1926.L244: 1927 uxth r6, r0 1928 mov r5, r3 1929 cmp r6, r2 1930 bcs .L245 1931 muls r3, r7, r3 1932 adds r0, r0, #1 1933 ldrh r3, [r4, r3] 1934 cmp r3, ip 1935 bne .L244 1936.L245: 1937 ldr r3, [r1, #2536] 1938 ldrh r0, [r3, r5, lsl #1] 1939.L242: 1940 pop {r4, r5, r6, r7, pc} 1941.L249: 1942 .align 2 1943.L248: 1944 .word .LANCHOR0 1945 .word -1431655765 1946 .fnend 1947 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount 1948 .section .rodata.str1.1 1949.LC9: 1950 .ascii "FLASH INFO:\012\000" 1951.LC10: 1952 .ascii "Device Capacity: %d MB\012\000" 1953.LC11: 1954 .ascii "FTL INFO:\012\000" 1955.LC12: 1956 .ascii "g_MaxLpn = 0x%x\012\000" 1957.LC13: 1958 .ascii "g_VaildLpn = 0x%x\012\000" 1959.LC14: 1960 .ascii "read_page_count = 0x%x\012\000" 1961.LC15: 1962 .ascii "discard_page_count = 0x%x\012\000" 1963.LC16: 1964 .ascii "write_page_count = 0x%x\012\000" 1965.LC17: 1966 .ascii "cache_write_count = 0x%x\012\000" 1967.LC18: 1968 .ascii "l2p_write_count = 0x%x\012\000" 1969.LC19: 1970 .ascii "gc_page_count = 0x%x\012\000" 1971.LC20: 1972 .ascii "totle_write = %d MB\012\000" 1973.LC21: 1974 .ascii "totle_read = %d MB\012\000" 1975.LC22: 1976 .ascii "GSV = 0x%x\012\000" 1977.LC23: 1978 .ascii "GDV = 0x%x\012\000" 1979.LC24: 1980 .ascii "bad blk num = %d\012\000" 1981.LC25: 1982 .ascii "free_superblocks = 0x%x\012\000" 1983.LC26: 1984 .ascii "mlc_EC = 0x%x\012\000" 1985.LC27: 1986 .ascii "slc_EC = 0x%x\012\000" 1987.LC28: 1988 .ascii "avg_EC = 0x%x\012\000" 1989.LC29: 1990 .ascii "sys_EC = 0x%x\012\000" 1991.LC30: 1992 .ascii "max_EC = 0x%x\012\000" 1993.LC31: 1994 .ascii "min_EC = 0x%x\012\000" 1995.LC32: 1996 .ascii "PLT = 0x%x\012\000" 1997.LC33: 1998 .ascii "POT = 0x%x\012\000" 1999.LC34: 2000 .ascii "MaxSector = 0x%x\012\000" 2001.LC35: 2002 .ascii "init_sys_blks_pp = 0x%x\012\000" 2003.LC36: 2004 .ascii "sys_blks_pp = 0x%x\012\000" 2005.LC37: 2006 .ascii "free sysblock = 0x%x\012\000" 2007.LC38: 2008 .ascii "data_blks_pp = 0x%x\012\000" 2009.LC39: 2010 .ascii "data_op_blks_pp = 0x%x\012\000" 2011.LC40: 2012 .ascii "max_data_blks = 0x%x\012\000" 2013.LC41: 2014 .ascii "Sys.id = 0x%x\012\000" 2015.LC42: 2016 .ascii "Bbt.id = 0x%x\012\000" 2017.LC43: 2018 .ascii "ACT.page = 0x%x\012\000" 2019.LC44: 2020 .ascii "ACT.plane = 0x%x\012\000" 2021.LC45: 2022 .ascii "ACT.id = 0x%x\012\000" 2023.LC46: 2024 .ascii "ACT.mode = 0x%x\012\000" 2025.LC47: 2026 .ascii "ACT.a_pages = 0x%x\012\000" 2027.LC48: 2028 .ascii "ACT VPC = 0x%x\012\000" 2029.LC49: 2030 .ascii "BUF.page = 0x%x\012\000" 2031.LC50: 2032 .ascii "BUF.plane = 0x%x\012\000" 2033.LC51: 2034 .ascii "BUF.id = 0x%x\012\000" 2035.LC52: 2036 .ascii "BUF.mode = 0x%x\012\000" 2037.LC53: 2038 .ascii "BUF.a_pages = 0x%x\012\000" 2039.LC54: 2040 .ascii "BUF VPC = 0x%x\012\000" 2041.LC55: 2042 .ascii "TMP.page = 0x%x\012\000" 2043.LC56: 2044 .ascii "TMP.plane = 0x%x\012\000" 2045.LC57: 2046 .ascii "TMP.id = 0x%x\012\000" 2047.LC58: 2048 .ascii "TMP.mode = 0x%x\012\000" 2049.LC59: 2050 .ascii "TMP.a_pages = 0x%x\012\000" 2051.LC60: 2052 .ascii "GC.page = 0x%x\012\000" 2053.LC61: 2054 .ascii "GC.plane = 0x%x\012\000" 2055.LC62: 2056 .ascii "GC.id = 0x%x\012\000" 2057.LC63: 2058 .ascii "GC.mode = 0x%x\012\000" 2059.LC64: 2060 .ascii "GC.a_pages = 0x%x\012\000" 2061.LC65: 2062 .ascii "WR_CHK = %x %x %x\012\000" 2063.LC66: 2064 .ascii "Read Err Cnt = 0x%x\012\000" 2065.LC67: 2066 .ascii "Prog Err Cnt = 0x%x\012\000" 2067.LC68: 2068 .ascii "gc_free_blk_th= 0x%x\012\000" 2069.LC69: 2070 .ascii "gc_merge_free_blk_th= 0x%x\012\000" 2071.LC70: 2072 .ascii "gc_skip_write_count= 0x%x\012\000" 2073.LC71: 2074 .ascii "gc_blk_index= 0x%x\012\000" 2075.LC72: 2076 .ascii "free min EC= 0x%x\012\000" 2077.LC73: 2078 .ascii "free max EC= 0x%x\012\000" 2079.LC74: 2080 .ascii "GC__SB VPC = 0x%x\012\000" 2081.LC75: 2082 .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" 2083.LC76: 2084 .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" 2085 .text 2086 .align 1 2087 .global FtlPrintInfo2buf 2088 .syntax unified 2089 .thumb 2090 .thumb_func 2091 .fpu softvfp 2092 .type FtlPrintInfo2buf, %function 2093FtlPrintInfo2buf: 2094 .fnstart 2095 @ args = 0, pretend = 0, frame = 0 2096 @ frame_needed = 0, uses_anonymous_args = 0 2097 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 2098 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 2099 mov r7, r0 2100 ldr r6, .L262 2101 ldr r1, .L262+4 2102 add r5, r7, #12 2103 .pad #20 2104 sub sp, sp, #20 2105 bl strcpy 2106 ldr r2, .L262+8 2107 ldr r3, [r6, #316] 2108 mov r0, r5 2109 movs r1, #64 2110 bl snprintf 2111 add r5, r5, r0 2112 ldr r1, .L262+12 2113 mov r0, r5 2114 adds r5, r5, #10 2115 bl strcpy 2116 ldr r3, [r6, #2552] 2117 mov r0, r5 2118 ldr r2, .L262+16 2119 movs r1, #64 2120 bl snprintf 2121 add r5, r5, r0 2122 ldr r3, [r6, #2548] 2123 mov r0, r5 2124 ldr r2, .L262+20 2125 movs r1, #64 2126 bl snprintf 2127 add r5, r5, r0 2128 ldr r3, [r6, #2556] 2129 mov r0, r5 2130 ldr r2, .L262+24 2131 movs r1, #64 2132 bl snprintf 2133 add r5, r5, r0 2134 ldr r3, [r6, #2560] 2135 mov r0, r5 2136 ldr r2, .L262+28 2137 movs r1, #64 2138 bl snprintf 2139 add r5, r5, r0 2140 ldr r3, [r6, #2564] 2141 mov r0, r5 2142 ldr r2, .L262+32 2143 movs r1, #64 2144 bl snprintf 2145 add r5, r5, r0 2146 ldr r3, [r6, #2568] 2147 mov r0, r5 2148 ldr r2, .L262+36 2149 movs r1, #64 2150 bl snprintf 2151 add r5, r5, r0 2152 ldr r3, [r6, #2572] 2153 mov r0, r5 2154 ldr r2, .L262+40 2155 movs r1, #64 2156 bl snprintf 2157 add r5, r5, r0 2158 ldr r3, [r6, #2576] 2159 mov r0, r5 2160 ldr r2, .L262+44 2161 movs r1, #64 2162 bl snprintf 2163 ldr r3, [r6, #2580] 2164 add r5, r5, r0 2165 ldr r2, .L262+48 2166 mov r0, r5 2167 movs r1, #64 2168 lsrs r3, r3, #11 2169 bl snprintf 2170 ldr r3, [r6, #2584] 2171 add r5, r5, r0 2172 ldr r2, .L262+52 2173 movs r1, #64 2174 mov r0, r5 2175 lsrs r3, r3, #11 2176 bl snprintf 2177 adds r4, r5, r0 2178 ldr r3, [r6, #2588] 2179 mov r0, r4 2180 ldr r2, .L262+56 2181 movs r1, #64 2182 bl snprintf 2183 add r4, r4, r0 2184 ldr r3, [r6, #2592] 2185 mov r0, r4 2186 ldr r2, .L262+60 2187 movs r1, #64 2188 bl snprintf 2189 add r4, r4, r0 2190 ldrh r3, [r6, #358] 2191 mov r0, r4 2192 ldr r2, .L262+64 2193 movs r1, #64 2194 bl snprintf 2195 add r4, r4, r0 2196 ldrh r3, [r6, #224] 2197 mov r0, r4 2198 ldr r2, .L262+68 2199 movs r1, #64 2200 bl snprintf 2201 add r4, r4, r0 2202 ldr r3, [r6, #2596] 2203 mov r0, r4 2204 ldr r2, .L262+72 2205 movs r1, #64 2206 bl snprintf 2207 add r4, r4, r0 2208 ldr r3, [r6, #2600] 2209 mov r0, r4 2210 ldr r2, .L262+76 2211 movs r1, #64 2212 bl snprintf 2213 add r4, r4, r0 2214 ldr r3, [r6, #2604] 2215 mov r0, r4 2216 ldr r2, .L262+80 2217 movs r1, #64 2218 bl snprintf 2219 add r4, r4, r0 2220 ldr r3, [r6, #2608] 2221 mov r0, r4 2222 ldr r2, .L262+84 2223 movs r1, #64 2224 bl snprintf 2225 add r4, r4, r0 2226 ldr r3, [r6, #2612] 2227 mov r0, r4 2228 ldr r2, .L262+88 2229 movs r1, #64 2230 bl snprintf 2231 add r4, r4, r0 2232 ldr r3, [r6, #2616] 2233 mov r0, r4 2234 ldr r2, .L262+92 2235 movs r1, #64 2236 bl snprintf 2237 add r4, r4, r0 2238 ldrh r3, [r6, #2498] 2239 mov r0, r4 2240 ldr r2, .L262+96 2241 movs r1, #64 2242 bl snprintf 2243 add r4, r4, r0 2244 ldrh r3, [r6, #2496] 2245 mov r0, r4 2246 ldr r2, .L262+100 2247 movs r1, #64 2248 bl snprintf 2249 add r4, r4, r0 2250 ldr r3, [r6, #340] 2251 mov r0, r4 2252 ldr r2, .L262+104 2253 movs r1, #64 2254 bl snprintf 2255 add r4, r4, r0 2256 ldr r3, [r6, #332] 2257 mov r0, r4 2258 ldr r2, .L262+108 2259 movs r1, #64 2260 bl snprintf 2261 add r4, r4, r0 2262 ldr r3, [r6, #228] 2263 mov r0, r4 2264 ldr r2, .L262+112 2265 movs r1, #64 2266 bl snprintf 2267 add r4, r4, r0 2268 ldrh r3, [r6, #418] 2269 mov r0, r4 2270 ldr r2, .L262+116 2271 movs r1, #64 2272 bl snprintf 2273 add r4, r4, r0 2274 ldrh r3, [r6, #240] 2275 mov r0, r4 2276 ldr r2, .L262+120 2277 movs r1, #64 2278 bl snprintf 2279 add r4, r4, r0 2280 ldrh r3, [r6, #2620] 2281 mov r0, r4 2282 ldr r2, .L262+124 2283 movs r1, #64 2284 bl snprintf 2285 add r4, r4, r0 2286 ldr r3, [r6, #244] 2287 mov r0, r4 2288 ldr r2, .L262+128 2289 movs r1, #64 2290 bl snprintf 2291 add r4, r4, r0 2292 ldrh r3, [r6, #2624] 2293 mov r0, r4 2294 ldr r2, .L262+132 2295 movs r1, #64 2296 bl snprintf 2297 add r4, r4, r0 2298 ldrh r3, [r6, #352] 2299 mov r0, r4 2300 ldr r2, .L262+136 2301 movs r1, #64 2302 bl snprintf 2303 add r4, r4, r0 2304 ldrh r3, [r6, #26] 2305 mov r0, r4 2306 ldr r2, .L262+140 2307 movs r1, #64 2308 bl snprintf 2309 add r4, r4, r0 2310 ldrb r3, [r6, #30] @ zero_extendqisi2 2311 mov r0, r4 2312 ldr r2, .L262+144 2313 movs r1, #64 2314 bl snprintf 2315 add r4, r4, r0 2316 ldrh r3, [r6, #24] 2317 mov r0, r4 2318 ldr r2, .L262+148 2319 movs r1, #64 2320 bl snprintf 2321 add r4, r4, r0 2322 ldrb r3, [r6, #32] @ zero_extendqisi2 2323 mov r0, r4 2324 ldr r2, .L262+152 2325 movs r1, #64 2326 bl snprintf 2327 add r4, r4, r0 2328 ldrh r3, [r6, #28] 2329 mov r0, r4 2330 ldr r2, .L262+156 2331 movs r1, #64 2332 bl snprintf 2333 ldrh r2, [r6, #24] 2334 ldr r3, [r6, #72] 2335 add r4, r4, r0 2336 mov r0, r4 2337 movs r1, #64 2338 ldrh r3, [r3, r2, lsl #1] 2339 ldr r2, .L262+160 2340 bl snprintf 2341 add r4, r4, r0 2342 ldrh r3, [r6, #78] 2343 mov r0, r4 2344 ldr r2, .L262+164 2345 movs r1, #64 2346 bl snprintf 2347 add r4, r4, r0 2348 ldrb r3, [r6, #82] @ zero_extendqisi2 2349 mov r0, r4 2350 ldr r2, .L262+168 2351 movs r1, #64 2352 bl snprintf 2353 add r4, r4, r0 2354 ldrh r3, [r6, #76] 2355 mov r0, r4 2356 ldr r2, .L262+172 2357 movs r1, #64 2358 bl snprintf 2359 add r4, r4, r0 2360 ldrb r3, [r6, #84] @ zero_extendqisi2 2361 mov r0, r4 2362 ldr r2, .L262+176 2363 movs r1, #64 2364 bl snprintf 2365 add r4, r4, r0 2366 ldrh r3, [r6, #80] 2367 mov r0, r4 2368 ldr r2, .L262+180 2369 movs r1, #64 2370 bl snprintf 2371 ldrh r2, [r6, #76] 2372 ldr r3, [r6, #72] 2373 add r4, r4, r0 2374 mov r0, r4 2375 movs r1, #64 2376 ldrh r3, [r3, r2, lsl #1] 2377 ldr r2, .L262+184 2378 bl snprintf 2379 add r4, r4, r0 2380 ldrh r3, [r6, #126] 2381 mov r0, r4 2382 ldr r2, .L262+188 2383 movs r1, #64 2384 bl snprintf 2385 add r4, r4, r0 2386 ldrb r3, [r6, #130] @ zero_extendqisi2 2387 mov r0, r4 2388 ldr r2, .L262+192 2389 movs r1, #64 2390 bl snprintf 2391 add r4, r4, r0 2392 ldrh r3, [r6, #124] 2393 mov r0, r4 2394 ldr r2, .L262+196 2395 movs r1, #64 2396 bl snprintf 2397 add r4, r4, r0 2398 ldrb r3, [r6, #132] @ zero_extendqisi2 2399 mov r0, r4 2400 ldr r2, .L262+200 2401 movs r1, #64 2402 bl snprintf 2403 add r4, r4, r0 2404 ldrh r3, [r6, #128] 2405 mov r0, r4 2406 ldr r2, .L262+204 2407 movs r1, #64 2408 bl snprintf 2409 add r4, r4, r0 2410 ldrh r3, [r6, #174] 2411 mov r0, r4 2412 ldr r2, .L262+208 2413 movs r1, #64 2414 bl snprintf 2415 add r4, r4, r0 2416 ldrb r3, [r6, #178] @ zero_extendqisi2 2417 mov r0, r4 2418 ldr r2, .L262+212 2419 movs r1, #64 2420 bl snprintf 2421 add r4, r4, r0 2422 ldrh r3, [r6, #172] 2423 mov r0, r4 2424 ldr r2, .L262+216 2425 movs r1, #64 2426 bl snprintf 2427 add r4, r4, r0 2428 ldrb r3, [r6, #180] @ zero_extendqisi2 2429 mov r0, r4 2430 ldr r2, .L262+220 2431 movs r1, #64 2432 bl snprintf 2433 add r4, r4, r0 2434 ldrh r3, [r6, #176] 2435 mov r0, r4 2436 b .L263 2437.L264: 2438 .align 2 2439.L262: 2440 .word .LANCHOR0 2441 .word .LC9 2442 .word .LC10 2443 .word .LC11 2444 .word .LC12 2445 .word .LC13 2446 .word .LC14 2447 .word .LC15 2448 .word .LC16 2449 .word .LC17 2450 .word .LC18 2451 .word .LC19 2452 .word .LC20 2453 .word .LC21 2454 .word .LC22 2455 .word .LC23 2456 .word .LC24 2457 .word .LC25 2458 .word .LC26 2459 .word .LC27 2460 .word .LC28 2461 .word .LC29 2462 .word .LC30 2463 .word .LC31 2464 .word .LC32 2465 .word .LC33 2466 .word .LC34 2467 .word .LC35 2468 .word .LC36 2469 .word .LC37 2470 .word .LC38 2471 .word .LC39 2472 .word .LC40 2473 .word .LC41 2474 .word .LC42 2475 .word .LC43 2476 .word .LC44 2477 .word .LC45 2478 .word .LC46 2479 .word .LC47 2480 .word .LC48 2481 .word .LC49 2482 .word .LC50 2483 .word .LC51 2484 .word .LC52 2485 .word .LC53 2486 .word .LC54 2487 .word .LC55 2488 .word .LC56 2489 .word .LC57 2490 .word .LC58 2491 .word .LC59 2492 .word .LC60 2493 .word .LC61 2494 .word .LC62 2495 .word .LC63 2496.L263: 2497 ldr r2, .L265 2498 movs r1, #64 2499 bl snprintf 2500 ldr r3, [r6, #2716] 2501 add r4, r4, r0 2502 str r3, [sp, #4] 2503 ldr r3, [r6, #2724] 2504 mov r0, r4 2505 ldr r2, .L265+4 2506 movs r1, #64 2507 str r3, [sp] 2508 ldr r3, [r6, #2720] 2509 bl snprintf 2510 add r4, r4, r0 2511 ldr r3, [r6, #2712] 2512 mov r0, r4 2513 ldr r2, .L265+8 2514 movs r1, #64 2515 bl snprintf 2516 add r4, r4, r0 2517 ldr r3, [r6, #2736] 2518 mov r0, r4 2519 ldr r2, .L265+12 2520 movs r1, #64 2521 bl snprintf 2522 add r4, r4, r0 2523 ldrh r3, [r6, #3152] 2524 mov r0, r4 2525 ldr r2, .L265+16 2526 movs r1, #64 2527 bl snprintf 2528 add r4, r4, r0 2529 ldrh r3, [r6, #3154] 2530 mov r0, r4 2531 ldr r2, .L265+20 2532 movs r1, #64 2533 bl snprintf 2534 add r4, r4, r0 2535 ldr r3, [r6, #3156] 2536 mov r0, r4 2537 ldr r2, .L265+24 2538 movs r1, #64 2539 bl snprintf 2540 add r4, r4, r0 2541 ldrh r3, [r6, #3160] 2542 mov r0, r4 2543 ldr r2, .L265+28 2544 movs r1, #64 2545 bl snprintf 2546 add r4, r4, r0 2547 movs r1, #64 2548 bl GetFreeBlockMinEraseCount 2549 ldr r2, .L265+32 2550 mov r3, r0 2551 mov r0, r4 2552 bl snprintf 2553 add r4, r4, r0 2554 ldrh r0, [r6, #224] 2555 bl GetFreeBlockMaxEraseCount 2556 ldr r2, .L265+36 2557 mov r3, r0 2558 movs r1, #64 2559 mov r0, r4 2560 bl snprintf 2561 ldr r3, .L265+40 2562 add r4, r4, r0 2563 ldr r3, [r3] 2564 cmp r3, #1 2565 beq .L251 2566.L256: 2567 subs r0, r4, r7 2568 add sp, sp, #20 2569 @ sp needed 2570 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 2571.L251: 2572 ldrh r3, [r6, #172] 2573 movw r2, #65535 2574 cmp r3, r2 2575 beq .L253 2576 ldr r2, [r6, #72] 2577 mov r0, r4 2578 movs r1, #64 2579 ldrh r3, [r2, r3, lsl #1] 2580 ldr r2, .L265+44 2581 bl snprintf 2582 add r4, r4, r0 2583.L253: 2584 movs r0, #0 2585 ldr fp, .L265+48 2586 bl List_get_gc_head_node 2587 uxth r0, r0 2588 movs r5, #0 2589 movw r10, #65535 2590 mov r9, #6 2591.L255: 2592 ldr r3, [r6, #2516] 2593 cmp r0, r10 2594 beq .L254 2595 ldr r2, [r6, #2536] 2596 mul r8, r9, r0 2597 movs r1, #64 2598 add r3, r3, r8 2599 ldrh r2, [r2, r0, lsl #1] 2600 str r2, [sp, #12] 2601 mov r2, fp 2602 ldrh r3, [r3, #4] 2603 str r3, [sp, #8] 2604 ldr r3, [r6, #72] 2605 ldrh r3, [r3, r0, lsl #1] 2606 strd r0, r3, [sp] 2607 mov r3, r5 2608 mov r0, r4 2609 adds r5, r5, #1 2610 bl snprintf 2611 ldr r3, [r6, #2516] 2612 add r4, r4, r0 2613 cmp r5, #16 2614 ldrh r0, [r3, r8] 2615 bne .L255 2616.L254: 2617 ldr r3, [r6, #2516] 2618 movs r5, #0 2619 ldr r1, [r6, #2532] 2620 movw r9, #65535 2621 ldr fp, .L265+52 2622 mov r10, #6 2623 subs r1, r1, r3 2624 ldr r3, .L265+56 2625 asrs r1, r1, #1 2626 muls r1, r3, r1 2627 uxth r1, r1 2628.L257: 2629 cmp r1, r9 2630 beq .L256 2631 ldr r3, [r6, #2536] 2632 mul r8, r10, r1 2633 mov r0, r4 2634 mov r2, fp 2635 ldrh r3, [r3, r1, lsl #1] 2636 str r3, [sp, #8] 2637 ldr r3, [r6, #2516] 2638 add r3, r3, r8 2639 ldrh r3, [r3, #4] 2640 strd r1, r3, [sp] 2641 mov r3, r5 2642 movs r1, #64 2643 adds r5, r5, #1 2644 bl snprintf 2645 cmp r5, #4 2646 add r4, r4, r0 2647 beq .L256 2648 ldr r3, [r6, #2516] 2649 ldrh r1, [r3, r8] 2650 b .L257 2651.L266: 2652 .align 2 2653.L265: 2654 .word .LC64 2655 .word .LC65 2656 .word .LC66 2657 .word .LC67 2658 .word .LC68 2659 .word .LC69 2660 .word .LC70 2661 .word .LC71 2662 .word .LC72 2663 .word .LC73 2664 .word .LANCHOR2 2665 .word .LC74 2666 .word .LC75 2667 .word .LC76 2668 .word -1431655765 2669 .fnend 2670 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf 2671 .section .rodata.str1.1 2672.LC77: 2673 .ascii "%s\012\000" 2674 .text 2675 .align 1 2676 .global rknand_proc_ftlread 2677 .syntax unified 2678 .thumb 2679 .thumb_func 2680 .fpu softvfp 2681 .type rknand_proc_ftlread, %function 2682rknand_proc_ftlread: 2683 .fnstart 2684 @ args = 0, pretend = 0, frame = 0 2685 @ frame_needed = 0, uses_anonymous_args = 0 2686 push {r3, r4, r5, lr} 2687 .save {r3, r4, r5, lr} 2688 cmp r0, #2048 2689 mov r5, r1 2690 blt .L269 2691 ldr r3, .L270 2692 add r4, r5, #30 2693 ldr r2, .L270+4 2694 movs r1, #64 2695 mov r0, r5 2696 bl snprintf 2697 mov r0, r4 2698 bl FtlPrintInfo2buf 2699 add r0, r0, r4 2700 subs r0, r0, r5 2701.L267: 2702 pop {r3, r4, r5, pc} 2703.L269: 2704 movs r0, #0 2705 b .L267 2706.L271: 2707 .align 2 2708.L270: 2709 .word .LC0 2710 .word .LC77 2711 .fnend 2712 .size rknand_proc_ftlread, .-rknand_proc_ftlread 2713 .section .rodata.str1.1 2714.LC78: 2715 .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" 2716 .ascii "\012\000" 2717 .text 2718 .align 1 2719 .global GetSwlReplaceBlock 2720 .syntax unified 2721 .thumb 2722 .thumb_func 2723 .fpu softvfp 2724 .type GetSwlReplaceBlock, %function 2725GetSwlReplaceBlock: 2726 .fnstart 2727 @ args = 0, pretend = 0, frame = 8 2728 @ frame_needed = 0, uses_anonymous_args = 0 2729 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 2730 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 2731 ldr r4, .L296 2732 .pad #28 2733 sub sp, sp, #28 2734 ldr r2, [r4, #2604] 2735 ldr r3, [r4, #2616] 2736 cmp r2, r3 2737 bcs .L273 2738 ldrh r1, [r4, #240] 2739 movs r3, #0 2740 ldr r0, [r4, #2536] 2741 str r3, [r4, #2596] 2742.L274: 2743 ldr r5, [r4, #2596] 2744 cmp r1, r3 2745 bhi .L275 2746 mov r0, r5 2747 bl __aeabi_uidiv 2748 str r0, [r4, #2604] 2749 ldr r0, [r4, #2600] 2750 ldrh r1, [r4, #292] 2751 subs r0, r5, r0 2752 bl __aeabi_uidiv 2753 str r0, [r4, #2596] 2754.L276: 2755 ldr r6, [r4, #2616] 2756 ldr r8, [r4, #2604] 2757 add r3, r6, #256 2758 cmp r3, r8 2759 bls .L281 2760 ldr r2, [r4, #2612] 2761 add r3, r6, #768 2762 cmp r3, r2 2763 bls .L281 2764.L283: 2765 movw r5, #65535 2766.L282: 2767 mov r0, r5 2768 add sp, sp, #28 2769 @ sp needed 2770 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 2771.L275: 2772 ldrh r2, [r0, r3, lsl #1] 2773 adds r3, r3, #1 2774 add r5, r5, r2 2775 str r5, [r4, #2596] 2776 b .L274 2777.L273: 2778 ldr r3, [r4, #2612] 2779 cmp r2, r3 2780 bls .L276 2781 adds r3, r3, #1 2782 str r3, [r4, #2612] 2783 movs r3, #0 2784.L278: 2785 ldrh r2, [r4, #240] 2786 cmp r2, r3 2787 bls .L276 2788 ldr r1, [r4, #2536] 2789 ldrh r2, [r1, r3, lsl #1] 2790 adds r2, r2, #1 2791 strh r2, [r1, r3, lsl #1] @ movhi 2792 adds r3, r3, #1 2793 b .L278 2794.L281: 2795 ldrh r0, [r4, #224] 2796 add r0, r0, r0, lsl #1 2797 lsrs r0, r0, #2 2798 bl GetFreeBlockMaxEraseCount 2799 add r3, r6, #64 2800 mov r1, r0 2801 cmp r0, r3 2802 bcc .L283 2803 ldr r3, [r4, #2520] 2804 cmp r3, #0 2805 beq .L283 2806 ldrh r2, [r4, #240] 2807 movw r7, #65535 2808 ldr lr, [r4, #2516] 2809 mov r10, r7 2810 ldr r9, [r4, #2536] 2811 movs r0, #0 2812 str r2, [sp, #20] 2813 mov r2, r7 2814 mov fp, #6 2815.L284: 2816 ldrh ip, [r3] 2817 cmp ip, r10 2818 bne .L287 2819 mov r5, r2 2820.L286: 2821 movw r3, #65535 2822 cmp r5, r3 2823 beq .L283 2824 ldrh r10, [r9, r5, lsl #1] 2825 lsl fp, r5, #1 2826 cmp r6, r10 2827 bcs .L288 2828 bl GetFreeBlockMinEraseCount 2829 cmp r6, r0 2830 it cc 2831 strcc r7, [r4, #2616] 2832.L288: 2833 cmp r8, r10 2834 bls .L283 2835 add r3, r10, #128 2836 cmp r1, r3 2837 ble .L283 2838 add r2, r10, #256 2839 ldr r3, [r4, #2612] 2840 cmp r8, r2 2841 bhi .L289 2842 add r10, r10, #768 2843 cmp r10, r3 2844 bcs .L283 2845.L289: 2846 str r1, [sp, #8] 2847 mov r1, r5 2848 ldr r0, .L296+4 2849 ldrh r2, [r9, fp] 2850 str r2, [sp, #4] 2851 ldr r2, [r4, #72] 2852 ldrh r2, [r2, fp] 2853 str r2, [sp] 2854 mov r2, r8 2855 bl sftl_printk 2856 movs r3, #1 2857 str r3, [r4, #3164] 2858 b .L282 2859.L287: 2860 adds r0, r0, #1 2861 ldr r5, [sp, #20] 2862 uxth r0, r0 2863 cmp r5, r0 2864 bcc .L283 2865 ldrh r5, [r3, #4] 2866 cbz r5, .L285 2867 sub r3, r3, lr 2868 ldr r5, .L296+8 2869 asrs r3, r3, #1 2870 muls r3, r5, r3 2871 uxth r5, r3 2872 ldrh r3, [r9, r5, lsl #1] 2873 cmp r6, r3 2874 bcs .L286 2875 cmp r3, r7 2876 itt cc 2877 movcc r7, r3 2878 movcc r2, r5 2879.L285: 2880 mla r3, fp, ip, lr 2881 b .L284 2882.L297: 2883 .align 2 2884.L296: 2885 .word .LANCHOR0 2886 .word .LC78 2887 .word -1431655765 2888 .fnend 2889 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock 2890 .align 1 2891 .global free_data_superblock 2892 .syntax unified 2893 .thumb 2894 .thumb_func 2895 .fpu softvfp 2896 .type free_data_superblock, %function 2897free_data_superblock: 2898 .fnstart 2899 @ args = 0, pretend = 0, frame = 0 2900 @ frame_needed = 0, uses_anonymous_args = 0 2901 movw r2, #65535 2902 push {r3, lr} 2903 .save {r3, lr} 2904 cmp r0, r2 2905 beq .L299 2906 ldr r2, .L300 2907 movs r1, #0 2908 ldr r2, [r2, #72] 2909 strh r1, [r2, r0, lsl #1] @ movhi 2910 bl INSERT_FREE_LIST 2911.L299: 2912 movs r0, #0 2913 pop {r3, pc} 2914.L301: 2915 .align 2 2916.L300: 2917 .word .LANCHOR0 2918 .fnend 2919 .size free_data_superblock, .-free_data_superblock 2920 .align 1 2921 .global get_new_active_ppa 2922 .syntax unified 2923 .thumb 2924 .thumb_func 2925 .fpu softvfp 2926 .type get_new_active_ppa, %function 2927get_new_active_ppa: 2928 .fnstart 2929 @ args = 0, pretend = 0, frame = 0 2930 @ frame_needed = 0, uses_anonymous_args = 0 2931 push {r3, r4, r5, r6, r7, lr} 2932 .save {r3, r4, r5, r6, r7, lr} 2933 movw r3, #65535 2934 mov r4, r0 2935 ldrh r2, [r0] 2936 cmp r2, r3 2937 bne .L303 2938 ldr r1, .L317 2939 movw r2, #2792 2940 ldr r0, .L317+4 2941 bl sftl_printk 2942.L303: 2943 ldr r6, .L317+8 2944 ldrh r2, [r4, #2] 2945 ldrh r3, [r6, #302] 2946 cmp r2, r3 2947 bne .L304 2948 ldr r1, .L317 2949 movw r2, #2793 2950 ldr r0, .L317+4 2951 bl sftl_printk 2952.L304: 2953 ldrh r3, [r4, #4] 2954 cbnz r3, .L305 2955 ldr r1, .L317 2956 movw r2, #2794 2957 ldr r0, .L317+4 2958 bl sftl_printk 2959.L305: 2960 ldrb r3, [r4, #6] @ zero_extendqisi2 2961 movs r1, #0 2962 strb r1, [r4, #10] 2963 movw r7, #65535 2964 adds r3, r3, #8 2965 ldrh r0, [r6, #232] 2966 ldrh r5, [r4, r3, lsl #1] 2967.L306: 2968 ldrh r2, [r4, #2] 2969 cmp r5, r7 2970 beq .L308 2971 ldrh r6, [r6, #302] 2972 cmp r6, r2 2973 bls .L312 2974 ldrh r3, [r4, #4] 2975 orr r5, r2, r5, lsl #10 2976 ldrb r2, [r4, #6] @ zero_extendqisi2 2977 movw r7, #65535 2978 subs r3, r3, #1 2979 uxth r3, r3 2980 strh r3, [r4, #4] @ movhi 2981.L311: 2982 adds r1, r2, #1 2983 uxtb r2, r1 2984 cmp r0, r2 2985 itttt eq 2986 ldrheq r2, [r4, #2] 2987 addeq r2, r2, #1 2988 strheq r2, [r4, #2] @ movhi 2989 moveq r2, #0 2990 add r1, r2, #8 2991 ldrh r1, [r4, r1, lsl #1] 2992 cmp r1, r7 2993 beq .L311 2994 strb r2, [r4, #6] 2995 ldrh r2, [r4, #2] 2996 cmp r2, r6 2997 bne .L302 2998 cbz r3, .L302 2999 ldr r1, .L317 3000 movw r2, #2817 3001 ldr r0, .L317+4 3002 bl sftl_printk 3003.L302: 3004 mov r0, r5 3005 pop {r3, r4, r5, r6, r7, pc} 3006.L308: 3007 ldrb r3, [r4, #6] @ zero_extendqisi2 3008 adds r3, r3, #1 3009 uxtb r3, r3 3010 strb r3, [r4, #6] 3011 cmp r3, r0 3012 ittt eq 3013 strbeq r1, [r4, #6] 3014 addeq r2, r2, #1 3015 strheq r2, [r4, #2] @ movhi 3016 ldrb r3, [r4, #6] @ zero_extendqisi2 3017 adds r3, r3, #8 3018 ldrh r5, [r4, r3, lsl #1] 3019 b .L306 3020.L312: 3021 movw r5, #65535 3022 b .L302 3023.L318: 3024 .align 2 3025.L317: 3026 .word .LANCHOR1+111 3027 .word .LC8 3028 .word .LANCHOR0 3029 .fnend 3030 .size get_new_active_ppa, .-get_new_active_ppa 3031 .align 1 3032 .global FtlGcBufInit 3033 .syntax unified 3034 .thumb 3035 .thumb_func 3036 .fpu softvfp 3037 .type FtlGcBufInit, %function 3038FtlGcBufInit: 3039 .fnstart 3040 @ args = 0, pretend = 0, frame = 0 3041 @ frame_needed = 0, uses_anonymous_args = 0 3042 ldr r3, .L328 3043 movs r1, #0 3044 push {r4, r5, r6, r7, r8, lr} 3045 .save {r4, r5, r6, r7, r8, lr} 3046 mov ip, #20 3047 movs r6, #12 3048 movs r7, #1 3049 str r1, [r3, #3168] 3050.L320: 3051 ldrh r2, [r3, #232] 3052 uxth r0, r1 3053 cmp r2, r0 3054 bhi .L323 3055 ldr r7, .L328 3056 movs r5, #12 3057 movs r6, #0 3058.L324: 3059 ldr r1, [r3, #3188] 3060 cmp r2, r1 3061 bcc .L327 3062 pop {r4, r5, r6, r7, r8, pc} 3063.L323: 3064 uxth r0, r1 3065 ldr r5, [r3, #3172] 3066 ldr lr, [r3, #3176] 3067 adds r1, r1, #1 3068 mul r4, r6, r0 3069 adds r2, r5, r4 3070 str r7, [r2, #8] 3071 ldrh r2, [r3, #310] 3072 muls r2, r0, r2 3073 it mi 3074 addmi r2, r2, #3 3075 bic r2, r2, #3 3076 add r2, r2, lr 3077 str r2, [r5, r4] 3078 ldrh r2, [r3, #312] 3079 ldr r5, [r3, #3172] 3080 ldr r8, [r3, #3180] 3081 add lr, r5, r4 3082 muls r2, r0, r2 3083 it mi 3084 addmi r2, r2, #3 3085 bic r2, r2, #3 3086 add r2, r2, r8 3087 str r2, [lr, #4] 3088 ldr r2, [r3, #3184] 3089 mla r2, ip, r0, r2 3090 ldr r0, [r5, r4] 3091 str r0, [r2, #8] 3092 ldr r0, [lr, #4] 3093 str r0, [r2, #12] 3094 b .L320 3095.L327: 3096 mul r0, r5, r2 3097 ldr r4, [r3, #3172] 3098 ldr ip, [r3, #3176] 3099 adds r1, r4, r0 3100 str r6, [r1, #8] 3101 ldrh r1, [r3, #310] 3102 muls r1, r2, r1 3103 it mi 3104 addmi r1, r1, #3 3105 bic r1, r1, #3 3106 add r1, r1, ip 3107 str r1, [r4, r0] 3108 ldr r4, [r7, #3180] 3109 ldr r1, [r3, #3172] 3110 add r0, r0, r1 3111 ldrh r1, [r3, #312] 3112 muls r1, r2, r1 3113 add r2, r2, #1 3114 it mi 3115 addmi r1, r1, #3 3116 uxth r2, r2 3117 bic r1, r1, #3 3118 add r1, r1, r4 3119 str r1, [r0, #4] 3120 b .L324 3121.L329: 3122 .align 2 3123.L328: 3124 .word .LANCHOR0 3125 .fnend 3126 .size FtlGcBufInit, .-FtlGcBufInit 3127 .align 1 3128 .global FtlGcBufFree 3129 .syntax unified 3130 .thumb 3131 .thumb_func 3132 .fpu softvfp 3133 .type FtlGcBufFree, %function 3134FtlGcBufFree: 3135 .fnstart 3136 @ args = 0, pretend = 0, frame = 0 3137 @ frame_needed = 0, uses_anonymous_args = 0 3138 ldr r3, .L337 3139 push {r4, r5, r6, r7, r8, r9, r10, lr} 3140 .save {r4, r5, r6, r7, r8, r9, r10, lr} 3141 movs r5, #0 3142 mov r8, r5 3143 movs r7, #20 3144 mov lr, #12 3145 ldr ip, [r3, #3188] 3146 ldr r6, [r3, #3172] 3147.L331: 3148 uxth r3, r5 3149 cmp r1, r3 3150 bls .L330 3151 mla r4, r7, r3, r0 3152 movs r2, #0 3153.L332: 3154 uxth r3, r2 3155 cmp ip, r3 3156 bls .L333 3157 mul r3, lr, r3 3158 ldr r10, [r4, #8] 3159 adds r2, r2, #1 3160 add r9, r6, r3 3161 ldr r3, [r6, r3] 3162 cmp r3, r10 3163 bne .L332 3164 str r8, [r9, #8] 3165.L333: 3166 adds r5, r5, #1 3167 b .L331 3168.L330: 3169 pop {r4, r5, r6, r7, r8, r9, r10, pc} 3170.L338: 3171 .align 2 3172.L337: 3173 .word .LANCHOR0 3174 .fnend 3175 .size FtlGcBufFree, .-FtlGcBufFree 3176 .align 1 3177 .global FtlGcBufAlloc 3178 .syntax unified 3179 .thumb 3180 .thumb_func 3181 .fpu softvfp 3182 .type FtlGcBufAlloc, %function 3183FtlGcBufAlloc: 3184 .fnstart 3185 @ args = 0, pretend = 0, frame = 0 3186 @ frame_needed = 0, uses_anonymous_args = 0 3187 ldr r3, .L346 3188 mov ip, #12 3189 push {r4, r5, r6, r7, r8, r9, lr} 3190 .save {r4, r5, r6, r7, r8, r9, lr} 3191 movs r4, #0 3192 mov lr, #1 3193 mov r8, #20 3194 ldr r6, [r3, #3188] 3195 ldr r5, [r3, #3172] 3196.L340: 3197 uxth r2, r4 3198 cmp r1, r2 3199 bhi .L344 3200 pop {r4, r5, r6, r7, r8, r9, pc} 3201.L344: 3202 mov r9, #0 3203.L341: 3204 uxth r3, r9 3205 cmp r6, r3 3206 bls .L342 3207 mla r3, ip, r3, r5 3208 add r9, r9, #1 3209 ldr r7, [r3, #8] 3210 cmp r7, #0 3211 bne .L341 3212 mla r2, r8, r2, r0 3213 ldr r7, [r3] 3214 str lr, [r3, #8] 3215 str r7, [r2, #8] 3216 ldr r3, [r3, #4] 3217 str r3, [r2, #12] 3218.L342: 3219 adds r4, r4, #1 3220 b .L340 3221.L347: 3222 .align 2 3223.L346: 3224 .word .LANCHOR0 3225 .fnend 3226 .size FtlGcBufAlloc, .-FtlGcBufAlloc 3227 .align 1 3228 .global IsBlkInGcList 3229 .syntax unified 3230 .thumb 3231 .thumb_func 3232 .fpu softvfp 3233 .type IsBlkInGcList, %function 3234IsBlkInGcList: 3235 .fnstart 3236 @ args = 0, pretend = 0, frame = 0 3237 @ frame_needed = 0, uses_anonymous_args = 0 3238 @ link register save eliminated. 3239 ldr r2, .L353 3240 ldr r3, [r2, #3192] 3241 ldrh r2, [r2, #3196] 3242 add r2, r3, r2, lsl #1 3243.L349: 3244 cmp r3, r2 3245 bne .L351 3246 movs r0, #0 3247 bx lr 3248.L351: 3249 ldrh r1, [r3], #2 3250 cmp r1, r0 3251 bne .L349 3252 movs r0, #1 3253 bx lr 3254.L354: 3255 .align 2 3256.L353: 3257 .word .LANCHOR0 3258 .fnend 3259 .size IsBlkInGcList, .-IsBlkInGcList 3260 .align 1 3261 .global FtlGcUpdatePage 3262 .syntax unified 3263 .thumb 3264 .thumb_func 3265 .fpu softvfp 3266 .type FtlGcUpdatePage, %function 3267FtlGcUpdatePage: 3268 .fnstart 3269 @ args = 0, pretend = 0, frame = 0 3270 @ frame_needed = 0, uses_anonymous_args = 0 3271 push {r3, r4, r5, r6, r7, lr} 3272 .save {r3, r4, r5, r6, r7, lr} 3273 mov r5, r0 3274 ubfx r0, r0, #10, #16 3275 mov r6, r2 3276 mov r7, r1 3277 bl P2V_block_in_plane 3278 ldr r3, .L359 3279 movs r4, #0 3280 ldr r2, [r3, #3192] 3281 ldrh ip, [r3, #3196] 3282 sub lr, r2, #2 3283.L356: 3284 uxth r1, r4 3285 cmp ip, r1 3286 bhi .L358 3287 itttt eq 3288 strheq r0, [r2, r4, lsl #1] @ movhi 3289 ldrheq r2, [r3, #3196] 3290 addeq r2, r2, #1 3291 strheq r2, [r3, #3196] @ movhi 3292 b .L357 3293.L358: 3294 adds r4, r4, #1 3295 ldrh r1, [lr, r4, lsl #1] 3296 cmp r1, r0 3297 bne .L356 3298.L357: 3299 ldrh r4, [r3, #3204] 3300 movs r2, #12 3301 muls r4, r2, r4 3302 ldr r2, [r3, #3200] 3303 adds r1, r2, r4 3304 strd r7, r6, [r1, #4] 3305 str r5, [r2, r4] 3306 ldrh r2, [r3, #3204] 3307 adds r2, r2, #1 3308 strh r2, [r3, #3204] @ movhi 3309 pop {r3, r4, r5, r6, r7, pc} 3310.L360: 3311 .align 2 3312.L359: 3313 .word .LANCHOR0 3314 .fnend 3315 .size FtlGcUpdatePage, .-FtlGcUpdatePage 3316 .section .rodata.str1.1 3317.LC79: 3318 .ascii "FtlGcRefreshBlock 0x%x\012\000" 3319 .text 3320 .align 1 3321 .global FtlGcRefreshBlock 3322 .syntax unified 3323 .thumb 3324 .thumb_func 3325 .fpu softvfp 3326 .type FtlGcRefreshBlock, %function 3327FtlGcRefreshBlock: 3328 .fnstart 3329 @ args = 0, pretend = 0, frame = 0 3330 @ frame_needed = 0, uses_anonymous_args = 0 3331 mov r1, r0 3332 push {r4, lr} 3333 .save {r4, lr} 3334 mov r4, r0 3335 ldr r0, .L364 3336 bl sftl_printk 3337 ldr r3, .L364+4 3338 ldrh r0, [r3, #222] 3339 cmp r0, r4 3340 beq .L362 3341 ldrh r1, [r3, #220] 3342 cmp r1, r4 3343 beq .L362 3344 movw r2, #65535 3345 cmp r0, r2 3346 bne .L363 3347 strh r4, [r3, #222] @ movhi 3348.L362: 3349 movs r0, #0 3350 pop {r4, pc} 3351.L363: 3352 cmp r1, r2 3353 it eq 3354 strheq r4, [r3, #220] @ movhi 3355 b .L362 3356.L365: 3357 .align 2 3358.L364: 3359 .word .LC79 3360 .word .LANCHOR0 3361 .fnend 3362 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock 3363 .section .rodata.str1.1 3364.LC80: 3365 .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" 3366 .text 3367 .align 1 3368 .global FtlGcMarkBadPhyBlk 3369 .syntax unified 3370 .thumb 3371 .thumb_func 3372 .fpu softvfp 3373 .type FtlGcMarkBadPhyBlk, %function 3374FtlGcMarkBadPhyBlk: 3375 .fnstart 3376 @ args = 0, pretend = 0, frame = 0 3377 @ frame_needed = 0, uses_anonymous_args = 0 3378 push {r4, r5, r6, lr} 3379 .save {r4, r5, r6, lr} 3380 mov r5, r0 3381 ldr r4, .L370 3382 bl P2V_block_in_plane 3383 mov r2, r5 3384 mov r6, r0 3385 ldr r0, .L370+4 3386 ldrh r1, [r4, #3206] 3387 bl sftl_printk 3388 mov r0, r6 3389 bl FtlGcRefreshBlock 3390 ldrh r3, [r4, #3206] 3391 addw r1, r4, #3208 3392 movs r2, #0 3393.L367: 3394 uxth r0, r2 3395 cmp r3, r0 3396 bhi .L369 3397 cmp r3, #15 3398 itttt ls 3399 addls r2, r3, #1 3400 strhls r2, [r4, #3206] @ movhi 3401 addls r4, r4, r3, lsl #1 3402 strhls r5, [r4, #3208] @ movhi 3403 b .L368 3404.L369: 3405 ldrh r0, [r1], #2 3406 adds r2, r2, #1 3407 cmp r0, r5 3408 bne .L367 3409.L368: 3410 movs r0, #0 3411 pop {r4, r5, r6, pc} 3412.L371: 3413 .align 2 3414.L370: 3415 .word .LANCHOR0 3416 .word .LC80 3417 .fnend 3418 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk 3419 .align 1 3420 .global FtlGcReFreshBadBlk 3421 .syntax unified 3422 .thumb 3423 .thumb_func 3424 .fpu softvfp 3425 .type FtlGcReFreshBadBlk, %function 3426FtlGcReFreshBadBlk: 3427 .fnstart 3428 @ args = 0, pretend = 0, frame = 0 3429 @ frame_needed = 0, uses_anonymous_args = 0 3430 push {r4, lr} 3431 .save {r4, lr} 3432 ldr r4, .L378 3433 ldrh r3, [r4, #3206] 3434 cbz r3, .L373 3435 ldrh r1, [r4, #222] 3436 movw r2, #65535 3437 cmp r1, r2 3438 bne .L373 3439 ldrh r2, [r4, #3242] 3440 cmp r2, r3 3441 itt cs 3442 movcs r3, #0 3443 strhcs r3, [r4, #3242] @ movhi 3444 ldrh r3, [r4, #3242] 3445 add r3, r4, r3, lsl #1 3446 ldrh r0, [r3, #3208] 3447 bl P2V_block_in_plane 3448 bl FtlGcRefreshBlock 3449 ldrh r3, [r4, #3242] 3450 adds r3, r3, #1 3451 strh r3, [r4, #3242] @ movhi 3452.L373: 3453 movs r0, #0 3454 pop {r4, pc} 3455.L379: 3456 .align 2 3457.L378: 3458 .word .LANCHOR0 3459 .fnend 3460 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk 3461 .align 1 3462 .global ftl_malloc 3463 .syntax unified 3464 .thumb 3465 .thumb_func 3466 .fpu softvfp 3467 .type ftl_malloc, %function 3468ftl_malloc: 3469 .fnstart 3470 @ args = 0, pretend = 0, frame = 0 3471 @ frame_needed = 0, uses_anonymous_args = 0 3472 @ link register save eliminated. 3473 movw r1, #3265 3474 b __kmalloc 3475 .fnend 3476 .size ftl_malloc, .-ftl_malloc 3477 .align 1 3478 .global ftl_free 3479 .syntax unified 3480 .thumb 3481 .thumb_func 3482 .fpu softvfp 3483 .type ftl_free, %function 3484ftl_free: 3485 .fnstart 3486 @ args = 0, pretend = 0, frame = 0 3487 @ frame_needed = 0, uses_anonymous_args = 0 3488 @ link register save eliminated. 3489 b kfree 3490 .fnend 3491 .size ftl_free, .-ftl_free 3492 .section .rodata.str1.1 3493.LC81: 3494 .ascii "%s %p + 0x%x:\000" 3495.LC82: 3496 .ascii "0x%08x,\000" 3497.LC83: 3498 .ascii "0x%04x,\000" 3499.LC84: 3500 .ascii "0x%02x,\000" 3501.LC85: 3502 .ascii "\012\000" 3503 .text 3504 .align 1 3505 .global rknand_print_hex 3506 .syntax unified 3507 .thumb 3508 .thumb_func 3509 .fpu softvfp 3510 .type rknand_print_hex, %function 3511rknand_print_hex: 3512 .fnstart 3513 @ args = 0, pretend = 0, frame = 8 3514 @ frame_needed = 0, uses_anonymous_args = 0 3515 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 3516 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 3517 .pad #12 3518 movs r7, #0 3519 ldr r10, .L391 3520 ldr fp, .L391+4 3521 mov r9, r0 3522 mov r5, r1 3523 mov r8, r2 3524 mov r6, r7 3525 mov r4, r7 3526 str r3, [sp, #4] 3527.L383: 3528 ldr r3, [sp, #4] 3529 cmp r3, r4 3530 bhi .L389 3531 ldr r0, .L391+8 3532 add sp, sp, #12 3533 @ sp needed 3534 pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} 3535 b sftl_printk 3536.L389: 3537 cbnz r6, .L384 3538 ldr r0, .L391+12 3539 mov r3, r7 3540 mov r2, r5 3541 mov r1, r9 3542 bl sftl_printk 3543.L384: 3544 cmp r8, #4 3545 bne .L385 3546 ldr r1, [r5, r4, lsl #2] 3547 ldr r0, .L391+16 3548.L390: 3549 adds r6, r6, #1 3550 bl sftl_printk 3551 cmp r6, #15 3552 bls .L388 3553 movs r6, #0 3554 ldr r0, .L391+8 3555 bl sftl_printk 3556.L388: 3557 adds r4, r4, #1 3558 add r7, r7, r8 3559 b .L383 3560.L385: 3561 cmp r8, #2 3562 itete eq 3563 moveq r0, fp 3564 movne r0, r10 3565 ldrheq r1, [r5, r4, lsl #1] 3566 ldrbne r1, [r5, r4] @ zero_extendqisi2 3567 b .L390 3568.L392: 3569 .align 2 3570.L391: 3571 .word .LC84 3572 .word .LC83 3573 .word .LC85 3574 .word .LC81 3575 .word .LC82 3576 .fnend 3577 .size rknand_print_hex, .-rknand_print_hex 3578 .section .rodata.str1.1 3579.LC86: 3580 .ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000" 3581.LC87: 3582 .ascii "not free: w: d:\000" 3583.LC88: 3584 .ascii "not free: w: s:\000" 3585 .text 3586 .align 1 3587 .global FlashEraseBlocks 3588 .syntax unified 3589 .thumb 3590 .thumb_func 3591 .fpu softvfp 3592 .type FlashEraseBlocks, %function 3593FlashEraseBlocks: 3594 .fnstart 3595 @ args = 0, pretend = 0, frame = 24 3596 @ frame_needed = 0, uses_anonymous_args = 0 3597 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 3598 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 3599 mov r6, r0 3600 ldr fp, .L409 3601 .pad #28 3602 sub sp, sp, #28 3603 mov r7, r2 3604 mov r3, sp 3605 movs r4, #0 3606 bic r9, r3, #8160 3607 bic r9, r9, #31 3608 ldrh r10, [fp, #12] 3609 ldr r3, [r9, #24] 3610 str r3, [sp, #20] 3611 lsl r3, r10, #3 3612 str r3, [sp] 3613 add r3, r2, r2, lsl #2 3614 str r3, [sp, #4] 3615.L394: 3616 ldr r3, [sp, #4] 3617 cmp r4, r3 3618 beq .L397 3619 add r2, sp, #12 3620 add r1, sp, #16 3621 add r0, r6, r4, lsl #2 3622 mov r5, r6 3623 bl l2p_addr_tran 3624 ldr r8, [sp, #12] 3625 cmp r8, #0 3626 bne .L395 3627 ldr r2, [sp, #16] 3628 ldr r3, [sp] 3629 cmp r3, r2 3630 bls .L395 3631 ldr r6, .L409+4 3632 ldr r4, .L409+8 3633.L396: 3634 mov r3, #-1 3635 ldr r2, [sp, #16] 3636 str r3, [r5] 3637 mov r1, r6 3638 mov r0, r4 3639 add r8, r8, #1 3640 bl sftl_printk 3641 ldr r1, [r5, #8] 3642 ldr r0, .L409+12 3643 movs r3, #16 3644 movs r2, #4 3645 adds r5, r5, #20 3646 bl rknand_print_hex 3647 movs r3, #4 3648 ldr r1, [r5, #-8] 3649 mov r2, r3 3650 ldr r0, .L409+16 3651 bl rknand_print_hex 3652 cmp r7, r8 3653 bne .L396 3654 bl dump_stack 3655.L397: 3656 ldr r2, [sp, #20] 3657 ldr r3, [r9, #24] 3658 cmp r2, r3 3659 beq .L404 3660 bl __stack_chk_fail 3661.L395: 3662 ldr r2, [fp, #3248] 3663 uxtb r0, r8 3664 ldr r1, [sp, #16] 3665 blx r2 3666 cmp r0, #0 3667 mov r2, r0 3668 it ne 3669 movne r2, #-1 3670 str r2, [r6, r4, lsl #2] 3671 ldrh r2, [fp, #14] 3672 cmp r2, #4 3673 bne .L401 3674 ldr r1, [sp, #16] 3675 ldr r2, [fp, #3248] 3676 ldrb r0, [sp, #12] @ zero_extendqisi2 3677 add r1, r1, r10 3678 blx r2 3679 cbz r0, .L401 3680 mov r3, #-1 3681 str r3, [r6, r4, lsl #2] 3682.L401: 3683 adds r4, r4, #5 3684 b .L394 3685.L404: 3686 movs r0, #0 3687 add sp, sp, #28 3688 @ sp needed 3689 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 3690.L410: 3691 .align 2 3692.L409: 3693 .word .LANCHOR0 3694 .word .LANCHOR1+130 3695 .word .LC86 3696 .word .LC87 3697 .word .LC88 3698 .fnend 3699 .size FlashEraseBlocks, .-FlashEraseBlocks 3700 .align 1 3701 .global FtlFreeSysBlkQueueIn 3702 .syntax unified 3703 .thumb 3704 .thumb_func 3705 .fpu softvfp 3706 .type FtlFreeSysBlkQueueIn, %function 3707FtlFreeSysBlkQueueIn: 3708 .fnstart 3709 @ args = 0, pretend = 0, frame = 0 3710 @ frame_needed = 0, uses_anonymous_args = 0 3711 subs r3, r0, #1 3712 push {r4, r5, r6, lr} 3713 .save {r4, r5, r6, lr} 3714 movw r2, #65533 3715 uxth r3, r3 3716 mov r5, r0 3717 cmp r3, r2 3718 bhi .L411 3719 ldr r4, .L420 3720 ldrh r3, [r4, #418] 3721 cmp r3, #1024 3722 beq .L411 3723 cbz r1, .L413 3724 bl P2V_block_in_plane 3725 mov r6, r0 3726 ldr r0, [r4, #3268] 3727 lsls r3, r5, #10 3728 movs r2, #1 3729 mov r1, r2 3730 str r3, [r0, #4] 3731 bl FlashEraseBlocks 3732 ldr r2, [r4, #2536] 3733 ldrh r3, [r2, r6, lsl #1] 3734 adds r3, r3, #1 3735 strh r3, [r2, r6, lsl #1] @ movhi 3736 ldr r3, [r4, #2608] 3737 adds r3, r3, #1 3738 str r3, [r4, #2608] 3739.L413: 3740 ldrh r3, [r4, #418] 3741 adds r3, r3, #1 3742 strh r3, [r4, #418] @ movhi 3743 ldrh r3, [r4, #416] 3744 add r2, r4, r3, lsl #1 3745 adds r3, r3, #1 3746 ubfx r3, r3, #0, #10 3747 strh r3, [r4, #416] @ movhi 3748 strh r5, [r2, #420] @ movhi 3749.L411: 3750 pop {r4, r5, r6, pc} 3751.L421: 3752 .align 2 3753.L420: 3754 .word .LANCHOR0 3755 .fnend 3756 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn 3757 .section .rodata.str1.1 3758.LC89: 3759 .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" 3760 .ascii "\000" 3761 .text 3762 .align 1 3763 .global FtlFreeSysBlkQueueOut 3764 .syntax unified 3765 .thumb 3766 .thumb_func 3767 .fpu softvfp 3768 .type FtlFreeSysBlkQueueOut, %function 3769FtlFreeSysBlkQueueOut: 3770 .fnstart 3771 @ args = 0, pretend = 0, frame = 0 3772 @ frame_needed = 0, uses_anonymous_args = 0 3773 push {r3, r4, r5, lr} 3774 .save {r3, r4, r5, lr} 3775 ldr r4, .L427 3776 ldrh r2, [r4, #418] 3777 cbz r2, .L426 3778 ldrh r3, [r4, #414] 3779 subs r2, r2, #1 3780 ldr r0, [r4, #3268] 3781 strh r2, [r4, #418] @ movhi 3782 movs r2, #1 3783 add r1, r4, r3, lsl #1 3784 adds r3, r3, #1 3785 ubfx r3, r3, #0, #10 3786 strh r3, [r4, #414] @ movhi 3787 ldrh r5, [r1, #420] 3788 mov r1, r2 3789 lsls r3, r5, #10 3790 str r3, [r0, #4] 3791 bl FlashEraseBlocks 3792 ldr r3, [r4, #2608] 3793 movw r2, #65533 3794 adds r3, r3, #1 3795 str r3, [r4, #2608] 3796 subs r3, r5, #1 3797 uxth r3, r3 3798 cmp r3, r2 3799 bls .L424 3800.L423: 3801 ldrh r2, [r4, #418] 3802 mov r1, r5 3803 ldr r0, .L427+4 3804 bl sftl_printk 3805.L425: 3806 b .L425 3807.L426: 3808 movw r5, #65535 3809 b .L423 3810.L424: 3811 mov r0, r5 3812 pop {r3, r4, r5, pc} 3813.L428: 3814 .align 2 3815.L427: 3816 .word .LANCHOR0 3817 .word .LC89 3818 .fnend 3819 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut 3820 .section .rodata.str1.1 3821.LC90: 3822 .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" 3823 .text 3824 .align 1 3825 .global ftl_map_blk_alloc_new_blk 3826 .syntax unified 3827 .thumb 3828 .thumb_func 3829 .fpu softvfp 3830 .type ftl_map_blk_alloc_new_blk, %function 3831ftl_map_blk_alloc_new_blk: 3832 .fnstart 3833 @ args = 0, pretend = 0, frame = 0 3834 @ frame_needed = 0, uses_anonymous_args = 0 3835 push {r3, r4, r5, r6, r7, lr} 3836 .save {r3, r4, r5, r6, r7, lr} 3837 mov r4, r0 3838 movs r3, #0 3839 ldrh r1, [r0, #10] 3840 ldr r2, [r0, #12] 3841.L430: 3842 uxth r5, r3 3843 cmp r1, r5 3844 bls .L435 3845 mov r7, r2 3846 adds r3, r3, #1 3847 adds r2, r2, #2 3848 ldrh r6, [r7] 3849 cmp r6, #0 3850 bne .L430 3851 bl FtlFreeSysBlkQueueOut 3852 subs r3, r0, #1 3853 movw r2, #65533 3854 mov r1, r0 3855 uxth r3, r3 3856 strh r0, [r7] @ movhi 3857 cmp r3, r2 3858 bls .L431 3859 ldr r3, .L437 3860 ldr r0, .L437+4 3861 ldrh r2, [r3, #418] 3862 bl sftl_printk 3863.L432: 3864 b .L432 3865.L431: 3866 ldr r3, [r4, #28] 3867 strh r6, [r4, #2] @ movhi 3868 adds r3, r3, #1 3869 str r3, [r4, #28] 3870 ldrh r3, [r4, #8] 3871 strh r5, [r4] @ movhi 3872 adds r3, r3, #1 3873 strh r3, [r4, #8] @ movhi 3874 ldrh r3, [r4, #10] 3875 cmp r3, r5 3876 bhi .L433 3877.L435: 3878 ldr r1, .L437+8 3879 movw r2, #578 3880 ldr r0, .L437+12 3881 bl sftl_printk 3882.L433: 3883 movs r0, #0 3884 pop {r3, r4, r5, r6, r7, pc} 3885.L438: 3886 .align 2 3887.L437: 3888 .word .LANCHOR0 3889 .word .LC90 3890 .word .LANCHOR1+147 3891 .word .LC8 3892 .fnend 3893 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk 3894 .align 1 3895 .global ftl_memset 3896 .syntax unified 3897 .thumb 3898 .thumb_func 3899 .fpu softvfp 3900 .type ftl_memset, %function 3901ftl_memset: 3902 .fnstart 3903 @ args = 0, pretend = 0, frame = 0 3904 @ frame_needed = 0, uses_anonymous_args = 0 3905 @ link register save eliminated. 3906 b memset 3907 .fnend 3908 .size ftl_memset, .-ftl_memset 3909 .section .rodata.str1.1 3910.LC91: 3911 .ascii "%s error allocating memory. return -1\012\000" 3912 .text 3913 .align 1 3914 .global FtlMemInit 3915 .syntax unified 3916 .thumb 3917 .thumb_func 3918 .fpu softvfp 3919 .type FtlMemInit, %function 3920FtlMemInit: 3921 .fnstart 3922 @ args = 0, pretend = 0, frame = 0 3923 @ frame_needed = 0, uses_anonymous_args = 0 3924 push {r4, r5, r6, r7, r8, lr} 3925 .save {r4, r5, r6, r7, r8, lr} 3926 movw r3, #65535 3927 ldr r4, .L539 3928 movs r5, #0 3929 movs r7, #12 3930 mov r8, #80 3931 ldrh r0, [r4, #306] 3932 str r5, [r4, #2588] 3933 str r5, [r4, #2592] 3934 lsls r0, r0, #1 3935 str r5, [r4, #2576] 3936 str r5, [r4, #2564] 3937 str r5, [r4, #2560] 3938 str r5, [r4, #2568] 3939 str r5, [r4, #2572] 3940 str r5, [r4, #2556] 3941 str r5, [r4, #2596] 3942 str r5, [r4, #2600] 3943 str r5, [r4, #2608] 3944 str r5, [r4, #2612] 3945 str r5, [r4, #2616] 3946 str r5, [r4, #3272] 3947 str r5, [r4, #3164] 3948 str r3, [r4, #3276] 3949 str r5, [r4, #3280] 3950 str r5, [r4, #3156] 3951 str r5, [r4, #3284] 3952 strh r3, [r4, #222] @ movhi 3953 strh r3, [r4, #220] @ movhi 3954 movs r3, #32 3955 strh r5, [r4, #3160] @ movhi 3956 strh r3, [r4, #3152] @ movhi 3957 movs r3, #128 3958 strh r5, [r4, #3206] @ movhi 3959 strh r3, [r4, #3154] @ movhi 3960 strh r5, [r4, #3242] @ movhi 3961 bl ftl_malloc 3962 str r0, [r4, #3192] 3963 ldrh r0, [r4, #306] 3964 muls r0, r7, r0 3965 bl ftl_malloc 3966 ldrh r6, [r4, #232] 3967 str r0, [r4, #3200] 3968 mul r8, r8, r6 3969 mov r0, r8 3970 bl ftl_malloc 3971 movs r3, #20 3972 str r0, [r4, #3288] 3973 muls r6, r3, r6 3974 mov r0, r6 3975 bl ftl_malloc 3976 str r0, [r4, #3292] 3977 mov r0, r8 3978 bl ftl_malloc 3979 str r0, [r4, #3296] 3980 mov r0, r6 3981 bl ftl_malloc 3982 str r0, [r4, #3268] 3983 mov r0, r6 3984 bl ftl_malloc 3985 ldrh r3, [r4, #232] 3986 ldrh r6, [r4, #310] 3987 str r0, [r4, #3184] 3988 lsls r3, r3, #1 3989 mov r0, r6 3990 adds r3, r3, #1 3991 str r3, [r4, #3188] 3992 bl ftl_malloc 3993 str r0, [r4, #3300] 3994 mov r0, r6 3995 bl ftl_malloc 3996 str r0, [r4, #3304] 3997 mov r0, r6 3998 bl ftl_malloc 3999 str r0, [r4, #3308] 4000 ldr r0, [r4, #3188] 4001 muls r0, r6, r0 4002 bl ftl_malloc 4003 str r0, [r4, #3176] 4004 mov r0, r6 4005 bl ftl_malloc 4006 str r0, [r4, #3312] 4007 mov r0, r6 4008 bl ftl_malloc 4009 str r0, [r4, #3316] 4010 ldr r0, [r4, #3188] 4011 muls r0, r7, r0 4012 bl ftl_malloc 4013 str r0, [r4, #3172] 4014 mov r0, r6 4015 bl ftl_malloc 4016 str r0, [r4, #3320] 4017 mov r0, r6 4018 bl ftl_malloc 4019 str r0, [r4, #3324] 4020 ldrh r0, [r4, #258] 4021 lsls r0, r0, #2 4022 bl ftl_malloc 4023 ldrh r3, [r4, #232] 4024 ldrh r6, [r4, #312] 4025 str r0, [r4, #3328] 4026 muls r6, r3, r6 4027 mov r0, r6 4028 bl ftl_malloc 4029 str r0, [r4, #3332] 4030 lsls r0, r6, #2 4031 bl ftl_malloc 4032 ldrh r3, [r4, #312] 4033 str r0, [r4, #3336] 4034 ldr r0, [r4, #3188] 4035 muls r0, r3, r0 4036 bl ftl_malloc 4037 str r0, [r4, #3180] 4038 ldrh r0, [r4, #242] 4039 lsls r0, r0, #1 4040 uxth r0, r0 4041 strh r0, [r4, #3340] @ movhi 4042 bl ftl_malloc 4043 str r0, [r4, #3344] 4044 ldrh r0, [r4, #3340] 4045 addw r0, r0, #547 4046 lsrs r3, r0, #9 4047 and r0, r0, #130560 4048 strh r3, [r4, #3340] @ movhi 4049 bl ftl_malloc 4050 ldrh r6, [r4, #242] 4051 str r0, [r4, #3348] 4052 adds r0, r0, #32 4053 str r0, [r4, #2536] 4054 lsls r6, r6, #1 4055 mov r0, r6 4056 bl ftl_malloc 4057 str r0, [r4, #3352] 4058 mov r0, r6 4059 bl ftl_malloc 4060 ldr r6, [r4, #328] 4061 str r0, [r4, #72] 4062 lsls r6, r6, #1 4063 mov r0, r6 4064 bl ftl_malloc 4065 str r0, [r4, #3356] 4066 mov r0, r6 4067 bl ftl_malloc 4068 str r0, [r4, #3360] 4069 ldrh r0, [r4, #320] 4070 lsls r0, r0, #1 4071 bl ftl_malloc 4072 str r0, [r4, #348] 4073 ldrh r0, [r4, #320] 4074 lsls r0, r0, #1 4075 bl ftl_malloc 4076 str r0, [r4, #3364] 4077 ldrh r0, [r4, #320] 4078 lsls r0, r0, #2 4079 bl ftl_malloc 4080 str r0, [r4, #3368] 4081 ldrh r0, [r4, #322] 4082 lsls r0, r0, #2 4083 bl ftl_malloc 4084 ldrh r2, [r4, #322] 4085 mov r1, r5 4086 str r0, [r4, #3372] 4087 lsls r2, r2, #2 4088 bl ftl_memset 4089 ldrh r0, [r4, #336] 4090 lsls r0, r0, #2 4091 bl ftl_malloc 4092 str r0, [r4, #3376] 4093 ldr r0, [r4, #328] 4094 lsls r0, r0, #2 4095 bl ftl_malloc 4096 str r0, [r4, #3380] 4097 ldrh r0, [r4, #338] 4098 muls r0, r7, r0 4099 bl ftl_malloc 4100 ldrh r3, [r4, #338] 4101 str r0, [r4, #2540] 4102 ldrh r0, [r4, #310] 4103 muls r0, r3, r0 4104 bl ftl_malloc 4105 ldrh r3, [r4, #242] 4106 str r0, [r4, #3384] 4107 movs r0, #6 4108 muls r0, r3, r0 4109 bl ftl_malloc 4110 str r0, [r4, #2516] 4111 ldrh r0, [r4, #298] 4112 ldrh r3, [r4, #254] 4113 adds r0, r0, #31 4114 asrs r0, r0, #5 4115 strh r0, [r4, #3388] @ movhi 4116 muls r0, r3, r0 4117 lsls r0, r0, #2 4118 bl ftl_malloc 4119 ldrh r2, [r4, #3388] 4120 ldrh r3, [r4, #254] 4121 mov r5, r0 4122 str r0, [r4, #380] 4123 movs r1, #1 4124 lsls r6, r2, #2 4125 add r2, r0, r2, lsl #2 4126 add r0, r4, #384 4127.L441: 4128 cmp r3, r1 4129 bhi .L442 4130 cmp r3, #0 4131 ldr r0, .L539+4 4132 mov r1, #0 4133 it eq 4134 moveq r3, #1 4135 rsb r2, r3, #8 4136 adds r3, r3, #7 4137 lsls r2, r2, #2 4138 add r0, r0, r3, lsl #2 4139 bl memset 4140 ldr r3, [r4, #3356] 4141 cbnz r3, .L443 4142.L445: 4143 ldr r0, .L539+8 4144 ldr r1, .L539+12 4145 bl sftl_printk 4146 mov r0, #-1 4147.L440: 4148 pop {r4, r5, r6, r7, r8, pc} 4149.L442: 4150 str r2, [r0], #4 4151 adds r1, r1, #1 4152 add r2, r2, r6 4153 b .L441 4154.L540: 4155 .align 2 4156.L539: 4157 .word .LANCHOR0 4158 .word .LANCHOR0+352 4159 .word .LC91 4160 .word .LANCHOR1+173 4161.L443: 4162 ldr r3, [r4, #3360] 4163 cmp r3, #0 4164 beq .L445 4165 ldr r3, [r4, #3376] 4166 cmp r3, #0 4167 beq .L445 4168 ldr r3, [r4, #3380] 4169 cmp r3, #0 4170 beq .L445 4171 ldr r3, [r4, #2540] 4172 cmp r3, #0 4173 beq .L445 4174 ldr r3, [r4, #3384] 4175 cmp r3, #0 4176 beq .L445 4177 ldr r3, [r4, #2516] 4178 cmp r3, #0 4179 beq .L445 4180 cmp r5, #0 4181 beq .L445 4182 ldr r3, [r4, #72] 4183 cmp r3, #0 4184 beq .L445 4185 ldr r3, [r4, #3192] 4186 cmp r3, #0 4187 beq .L445 4188 ldr r3, [r4, #3200] 4189 cmp r3, #0 4190 beq .L445 4191 ldr r3, [r4, #3288] 4192 cmp r3, #0 4193 beq .L445 4194 ldr r3, [r4, #3296] 4195 cmp r3, #0 4196 beq .L445 4197 ldr r3, [r4, #3268] 4198 cmp r3, #0 4199 beq .L445 4200 ldr r3, [r4, #3184] 4201 cmp r3, #0 4202 beq .L445 4203 ldr r3, [r4, #3292] 4204 cmp r3, #0 4205 beq .L445 4206 ldr r3, [r4, #3300] 4207 cmp r3, #0 4208 beq .L445 4209 ldr r3, [r4, #3304] 4210 cmp r3, #0 4211 beq .L445 4212 ldr r3, [r4, #3308] 4213 cmp r3, #0 4214 beq .L445 4215 ldr r3, [r4, #3176] 4216 cmp r3, #0 4217 beq .L445 4218 ldr r3, [r4, #3312] 4219 cmp r3, #0 4220 beq .L445 4221 ldr r3, [r4, #3316] 4222 cmp r3, #0 4223 beq .L445 4224 ldr r3, [r4, #3172] 4225 cmp r3, #0 4226 beq .L445 4227 ldr r3, [r4, #3332] 4228 cmp r3, #0 4229 beq .L445 4230 ldr r3, [r4, #3336] 4231 cmp r3, #0 4232 beq .L445 4233 ldr r3, [r4, #3180] 4234 cmp r3, #0 4235 beq .L445 4236 ldr r3, [r4, #2536] 4237 cmp r3, #0 4238 beq .L445 4239 ldr r3, [r4, #3344] 4240 cmp r3, #0 4241 beq .L445 4242 ldr r3, [r4, #348] 4243 cmp r3, #0 4244 beq .L445 4245 ldr r3, .L541 4246 ldr r2, [r3, #3364] 4247 cmp r2, #0 4248 beq .L445 4249 ldr r2, [r3, #3368] 4250 cmp r2, #0 4251 beq .L445 4252 ldr r3, [r3, #3372] 4253 cmp r3, #0 4254 beq .L445 4255 movs r0, #0 4256 b .L440 4257.L542: 4258 .align 2 4259.L541: 4260 .word .LANCHOR0 4261 .fnend 4262 .size FtlMemInit, .-FtlMemInit 4263 .align 1 4264 .global FtlBbt2Bitmap 4265 .syntax unified 4266 .thumb 4267 .thumb_func 4268 .fpu softvfp 4269 .type FtlBbt2Bitmap, %function 4270FtlBbt2Bitmap: 4271 .fnstart 4272 @ args = 0, pretend = 0, frame = 0 4273 @ frame_needed = 0, uses_anonymous_args = 0 4274 push {r4, r5, r6, r7, r8, r9, r10, lr} 4275 .save {r4, r5, r6, r7, r8, r9, r10, lr} 4276 mov r4, r0 4277 ldr r7, .L548 4278 ldr r9, .L548+4 4279 subs r6, r4, #2 4280 ldr r10, .L548+8 4281 addw r4, r4, #1022 4282 mov r5, r1 4283 movw r8, #65535 4284 ldrh r2, [r7, #3388] 4285 mov r0, r5 4286 movs r1, #0 4287 lsls r2, r2, #2 4288 bl ftl_memset 4289.L546: 4290 ldrh r3, [r6, #2]! 4291 cmp r3, r8 4292 beq .L543 4293 ldrh r2, [r7, #298] 4294 cmp r2, r3 4295 bhi .L545 4296 mov r1, r9 4297 mov r0, r10 4298 movs r2, #74 4299 bl sftl_printk 4300.L545: 4301 ldrh r3, [r6] 4302 movs r2, #1 4303 cmp r4, r6 4304 lsr r1, r3, #5 4305 and r3, r3, #31 4306 lsl r3, r2, r3 4307 ldr r2, [r5, r1, lsl #2] 4308 orr r2, r2, r3 4309 str r2, [r5, r1, lsl #2] 4310 bne .L546 4311.L543: 4312 pop {r4, r5, r6, r7, r8, r9, r10, pc} 4313.L549: 4314 .align 2 4315.L548: 4316 .word .LANCHOR0 4317 .word .LANCHOR1+184 4318 .word .LC8 4319 .fnend 4320 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap 4321 .align 1 4322 .global FtlBbtMemInit 4323 .syntax unified 4324 .thumb 4325 .thumb_func 4326 .fpu softvfp 4327 .type FtlBbtMemInit, %function 4328FtlBbtMemInit: 4329 .fnstart 4330 @ args = 0, pretend = 0, frame = 0 4331 @ frame_needed = 0, uses_anonymous_args = 0 4332 @ link register save eliminated. 4333 ldr r0, .L551 4334 movw r3, #65535 4335 movs r2, #16 4336 movs r1, #255 4337 add r0, r0, #364 4338 strh r3, [r0, #-12] @ movhi 4339 movs r3, #0 4340 strh r3, [r0, #-6] @ movhi 4341 b ftl_memset 4342.L552: 4343 .align 2 4344.L551: 4345 .word .LANCHOR0 4346 .fnend 4347 .size FtlBbtMemInit, .-FtlBbtMemInit 4348 .align 1 4349 .global FtlFreeSysBlkQueueInit 4350 .syntax unified 4351 .thumb 4352 .thumb_func 4353 .fpu softvfp 4354 .type FtlFreeSysBlkQueueInit, %function 4355FtlFreeSysBlkQueueInit: 4356 .fnstart 4357 @ args = 0, pretend = 0, frame = 0 4358 @ frame_needed = 0, uses_anonymous_args = 0 4359 ldr r3, .L554 4360 mov r2, #2048 4361 push {r4, lr} 4362 .save {r4, lr} 4363 movs r4, #0 4364 mov r1, r4 4365 strh r0, [r3, #412] @ movhi 4366 add r0, r3, #420 4367 strh r4, [r3, #414] @ movhi 4368 strh r4, [r3, #416] @ movhi 4369 strh r4, [r3, #418] @ movhi 4370 bl ftl_memset 4371 mov r0, r4 4372 pop {r4, pc} 4373.L555: 4374 .align 2 4375.L554: 4376 .word .LANCHOR0 4377 .fnend 4378 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit 4379 .align 1 4380 .global ftl_free_no_use_map_blk 4381 .syntax unified 4382 .thumb 4383 .thumb_func 4384 .fpu softvfp 4385 .type ftl_free_no_use_map_blk, %function 4386ftl_free_no_use_map_blk: 4387 .fnstart 4388 @ args = 0, pretend = 0, frame = 0 4389 @ frame_needed = 0, uses_anonymous_args = 0 4390 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 4391 .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 4392 movs r1, #0 4393 mov r4, r0 4394 ldrh r2, [r0, #10] 4395 ldrd r5, r6, [r0, #20] 4396 ldr r7, [r0, #12] 4397 lsls r2, r2, #1 4398 mov r0, r5 4399 bl ftl_memset 4400 movs r3, #0 4401.L557: 4402 ldrh r1, [r4, #6] 4403 uxth r2, r3 4404 cmp r1, r2 4405 bhi .L561 4406 ldr r3, .L574 4407 movs r6, #0 4408 mov r10, r6 4409 ldrh r2, [r3, #304] 4410 ldrh r3, [r4] 4411 strh r2, [r5, r3, lsl #1] @ movhi 4412 ldrh fp, [r5] 4413.L562: 4414 ldrh r2, [r4, #10] 4415 uxth r3, r6 4416 cmp r2, r3 4417 bhi .L565 4418 mov r0, r10 4419 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} 4420.L561: 4421 uxth r2, r3 4422 ldr r1, [r6, r2, lsl #2] 4423 movs r2, #0 4424 ubfx r1, r1, #10, #16 4425.L558: 4426 ldrh ip, [r4, #10] 4427 uxth r0, r2 4428 cmp ip, r0 4429 bhi .L560 4430 adds r3, r3, #1 4431 b .L557 4432.L560: 4433 uxth r0, r2 4434 ldrh ip, [r7, r0, lsl #1] 4435 cmp ip, r1 4436 bne .L559 4437 cbz r1, .L559 4438 ldrh ip, [r5, r0, lsl #1] 4439 add ip, ip, #1 4440 strh ip, [r5, r0, lsl #1] @ movhi 4441.L559: 4442 adds r2, r2, #1 4443 b .L558 4444.L565: 4445 uxth r8, r6 4446 ldrh r9, [r5, r8, lsl #1] 4447 cmp r9, fp 4448 bcs .L563 4449 ldrh r2, [r7, r8, lsl #1] 4450 cmp r2, #0 4451 itt ne 4452 movne r10, r3 4453 movne fp, r9 4454.L563: 4455 cmp r9, #0 4456 bne .L564 4457 ldrh r0, [r7, r8, lsl #1] 4458 cbz r0, .L564 4459 movs r1, #1 4460 bl FtlFreeSysBlkQueueIn 4461 strh r9, [r7, r8, lsl #1] @ movhi 4462 ldrh r3, [r4, #8] 4463 subs r3, r3, #1 4464 strh r3, [r4, #8] @ movhi 4465.L564: 4466 adds r6, r6, #1 4467 b .L562 4468.L575: 4469 .align 2 4470.L574: 4471 .word .LANCHOR0 4472 .fnend 4473 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk 4474 .align 1 4475 .global FtlL2PDataInit 4476 .syntax unified 4477 .thumb 4478 .thumb_func 4479 .fpu softvfp 4480 .type FtlL2PDataInit, %function 4481FtlL2PDataInit: 4482 .fnstart 4483 @ args = 0, pretend = 0, frame = 0 4484 @ frame_needed = 0, uses_anonymous_args = 0 4485 push {r3, r4, r5, r6, r7, lr} 4486 .save {r3, r4, r5, r6, r7, lr} 4487 movs r1, #0 4488 ldr r4, .L579 4489 movw r6, #65535 4490 movs r7, #12 4491 ldr r2, [r4, #328] 4492 ldr r0, [r4, #3360] 4493 lsls r2, r2, #1 4494 bl ftl_memset 4495 ldrh r3, [r4, #310] 4496 ldrh r2, [r4, #338] 4497 movs r1, #255 4498 ldr r0, [r4, #3384] 4499 muls r2, r3, r2 4500 bl ftl_memset 4501 movs r3, #0 4502 mov ip, r3 4503.L577: 4504 ldrh r1, [r4, #338] 4505 uxth r2, r3 4506 cmp r1, r2 4507 bhi .L578 4508 ldr r3, [r4, #328] 4509 strh r3, [r4, #3402] @ movhi 4510 mov r3, #-1 4511 str r3, [r4, #3392] 4512 movw r3, #61634 4513 strh r3, [r4, #3396] @ movhi 4514 ldrh r3, [r4, #3436] 4515 strh r3, [r4, #3400] @ movhi 4516 ldrh r3, [r4, #336] 4517 strh r3, [r4, #3398] @ movhi 4518 ldr r3, [r4, #3356] 4519 str r3, [r4, #3404] 4520 ldr r3, [r4, #3380] 4521 str r3, [r4, #3408] 4522 ldr r3, [r4, #3360] 4523 str r3, [r4, #3412] 4524 ldr r3, [r4, #3376] 4525 str r3, [r4, #3416] 4526 pop {r3, r4, r5, r6, r7, pc} 4527.L578: 4528 uxth r5, r3 4529 ldr r2, [r4, #2540] 4530 adds r3, r3, #1 4531 mul r0, r7, r5 4532 adds r1, r2, r0 4533 str ip, [r1, #4] 4534 strh r6, [r2, r0] @ movhi 4535 ldrh r2, [r4, #310] 4536 ldr r1, [r4, #2540] 4537 add r1, r1, r0 4538 ldr r0, [r4, #3384] 4539 muls r2, r5, r2 4540 bic r2, r2, #3 4541 add r2, r2, r0 4542 str r2, [r1, #8] 4543 b .L577 4544.L580: 4545 .align 2 4546.L579: 4547 .word .LANCHOR0 4548 .fnend 4549 .size FtlL2PDataInit, .-FtlL2PDataInit 4550 .align 1 4551 .global FtlVariablesInit 4552 .syntax unified 4553 .thumb 4554 .thumb_func 4555 .fpu softvfp 4556 .type FtlVariablesInit, %function 4557FtlVariablesInit: 4558 .fnstart 4559 @ args = 0, pretend = 0, frame = 0 4560 @ frame_needed = 0, uses_anonymous_args = 0 4561 push {r3, r4, r5, lr} 4562 .save {r3, r4, r5, lr} 4563 movs r5, #0 4564 ldr r4, .L582 4565 mov r1, r5 4566 movw r3, #65535 4567 ldrh r2, [r4, #320] 4568 ldr r0, [r4, #348] 4569 strh r3, [r4, #3438] @ movhi 4570 mov r3, #-1 4571 lsls r2, r2, #1 4572 str r3, [r4, #3448] 4573 str r5, [r4, #3440] 4574 str r5, [r4, #3444] 4575 strh r5, [r4, #344] @ movhi 4576 bl ftl_memset 4577 ldrh r2, [r4, #242] 4578 mov r1, r5 4579 ldr r0, [r4, #2536] 4580 lsls r2, r2, #1 4581 bl ftl_memset 4582 ldrh r2, [r4, #242] 4583 mov r1, r5 4584 ldr r0, [r4, #3344] 4585 lsls r2, r2, #1 4586 bl ftl_memset 4587 mov r1, r5 4588 addw r0, r4, #2468 4589 movs r2, #48 4590 bl ftl_memset 4591 mov r1, r5 4592 mov r2, #512 4593 add r0, r4, #2640 4594 bl ftl_memset 4595 bl FtlGcBufInit 4596 bl FtlL2PDataInit 4597 mov r0, r5 4598 pop {r3, r4, r5, pc} 4599.L583: 4600 .align 2 4601.L582: 4602 .word .LANCHOR0 4603 .fnend 4604 .size FtlVariablesInit, .-FtlVariablesInit 4605 .align 1 4606 .global SupperBlkListInit 4607 .syntax unified 4608 .thumb 4609 .thumb_func 4610 .fpu softvfp 4611 .type SupperBlkListInit, %function 4612SupperBlkListInit: 4613 .fnstart 4614 @ args = 0, pretend = 0, frame = 16 4615 @ frame_needed = 0, uses_anonymous_args = 0 4616 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 4617 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 4618 mov r10, #6 4619 ldr r4, .L595 4620 movs r5, #0 4621 .pad #20 4622 sub sp, sp, #20 4623 movs r1, #0 4624 mov r9, r5 4625 mov r7, r5 4626 movw fp, #65535 4627 ldrh r2, [r4, #242] 4628 ldr r0, [r4, #2516] 4629 mul r2, r10, r2 4630 bl ftl_memset 4631 str r5, [r4, #2532] 4632 str r5, [r4, #2520] 4633 str r5, [r4, #2524] 4634 strh r5, [r4, #2528] @ movhi 4635 strh r5, [r4, #224] @ movhi 4636.L585: 4637 ldrh r3, [r4, #240] 4638 uxth r8, r5 4639 cmp r8, r3 4640 bcs .L592 4641 ldrh r3, [r4, #232] 4642 str r3, [sp, #4] 4643 ldrh r3, [r4, #302] 4644 str r3, [sp] 4645 movs r3, #0 4646 ldr r2, .L595+4 4647 mov r6, r3 4648 b .L593 4649.L587: 4650 ldrb r0, [r2], #1 @ zero_extendqisi2 4651 mov r1, r8 4652 str r3, [sp, #12] 4653 str r2, [sp, #8] 4654 bl V2P_block 4655 bl FtlBbmIsBadBlock 4656 ldrd r2, r3, [sp, #8] 4657 cbnz r0, .L586 4658 ldr r1, [sp] 4659 add r6, r6, r1 4660 uxth r6, r6 4661.L586: 4662 adds r3, r3, #1 4663.L593: 4664 ldr r0, [sp, #4] 4665 uxth r1, r3 4666 cmp r0, r1 4667 bhi .L587 4668 uxth r3, r5 4669 cbz r6, .L588 4670 mov r1, r6 4671 mov r0, #32768 4672 str r3, [sp] 4673 bl __aeabi_idiv 4674 ldr r3, [sp] 4675 uxth r6, r0 4676.L589: 4677 ldr r2, [r4, #2516] 4678 mla r2, r10, r3, r2 4679 strh r6, [r2, #4] @ movhi 4680 ldrh r2, [r4, #24] 4681 cmp r2, r8 4682 beq .L590 4683 ldrh r2, [r4, #76] 4684 cmp r2, r8 4685 beq .L590 4686 ldrh r2, [r4, #124] 4687 cmp r2, r8 4688 beq .L590 4689 ldr r2, [r4, #72] 4690 ldrh r3, [r2, r3, lsl #1] 4691 cbnz r3, .L591 4692 add r9, r9, #1 4693 mov r0, r8 4694 uxth r9, r9 4695 bl INSERT_FREE_LIST 4696.L590: 4697 adds r5, r5, #1 4698 b .L585 4699.L588: 4700 ldr r2, [r4, #72] 4701 strh fp, [r2, r3, lsl #1] @ movhi 4702 b .L589 4703.L591: 4704 adds r7, r7, #1 4705 mov r0, r8 4706 uxth r7, r7 4707 bl INSERT_DATA_LIST 4708 b .L590 4709.L592: 4710 strh r7, [r4, #2528] @ movhi 4711 add r7, r7, r9 4712 cmp r7, r3 4713 strh r9, [r4, #224] @ movhi 4714 ble .L594 4715 ldr r1, .L595+8 4716 movw r2, #2219 4717 ldr r0, .L595+12 4718 bl sftl_printk 4719.L594: 4720 movs r0, #0 4721 add sp, sp, #20 4722 @ sp needed 4723 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 4724.L596: 4725 .align 2 4726.L595: 4727 .word .LANCHOR0 4728 .word .LANCHOR0+260 4729 .word .LANCHOR1+198 4730 .word .LC8 4731 .fnend 4732 .size SupperBlkListInit, .-SupperBlkListInit 4733 .align 1 4734 .global FtlGcPageVarInit 4735 .syntax unified 4736 .thumb 4737 .thumb_func 4738 .fpu softvfp 4739 .type FtlGcPageVarInit, %function 4740FtlGcPageVarInit: 4741 .fnstart 4742 @ args = 0, pretend = 0, frame = 0 4743 @ frame_needed = 0, uses_anonymous_args = 0 4744 push {r4, lr} 4745 .save {r4, lr} 4746 movs r1, #255 4747 ldr r4, .L598 4748 movs r3, #0 4749 ldrh r2, [r4, #306] 4750 ldr r0, [r4, #3192] 4751 strh r3, [r4, #3196] @ movhi 4752 lsls r2, r2, #1 4753 strh r3, [r4, #3204] @ movhi 4754 bl ftl_memset 4755 ldrh r3, [r4, #306] 4756 movs r2, #12 4757 ldr r0, [r4, #3200] 4758 movs r1, #255 4759 muls r2, r3, r2 4760 bl ftl_memset 4761 pop {r4, lr} 4762 b FtlGcBufInit 4763.L599: 4764 .align 2 4765.L598: 4766 .word .LANCHOR0 4767 .fnend 4768 .size FtlGcPageVarInit, .-FtlGcPageVarInit 4769 .align 1 4770 .global FlashGetBadBlockList 4771 .syntax unified 4772 .thumb 4773 .thumb_func 4774 .fpu softvfp 4775 .type FlashGetBadBlockList, %function 4776FlashGetBadBlockList: 4777 .fnstart 4778 @ args = 0, pretend = 0, frame = 0 4779 @ frame_needed = 0, uses_anonymous_args = 0 4780 push {r4, r5, r6, lr} 4781 .save {r4, r5, r6, lr} 4782 mov r2, #256 4783 ldr r6, .L606 4784 mov r4, r0 4785 mov r5, r1 4786 movs r1, #255 4787 bl ftl_memset 4788 mov r1, r5 4789 ldr r3, [r6, #3244] 4790 mov r0, r4 4791 blx r3 4792 uxth r0, r0 4793 cmp r0, #50 4794 bls .L601 4795 mov r0, r4 4796 mov r2, #256 4797 movs r1, #255 4798 bl ftl_memset 4799 movs r0, #0 4800.L601: 4801 ldrh r3, [r6, #14] 4802 cmp r3, #4 4803 bne .L605 4804 mov r3, r4 4805 add r1, r4, r0, lsl #1 4806.L603: 4807 cmp r3, r1 4808 bne .L604 4809.L605: 4810 pop {r4, r5, r6, pc} 4811.L604: 4812 ldrh r2, [r3] 4813 lsrs r2, r2, #1 4814 strh r2, [r3], #2 @ movhi 4815 b .L603 4816.L607: 4817 .align 2 4818.L606: 4819 .word .LANCHOR0 4820 .fnend 4821 .size FlashGetBadBlockList, .-FlashGetBadBlockList 4822 .align 1 4823 .global ftl_memcpy 4824 .syntax unified 4825 .thumb 4826 .thumb_func 4827 .fpu softvfp 4828 .type ftl_memcpy, %function 4829ftl_memcpy: 4830 .fnstart 4831 @ args = 0, pretend = 0, frame = 0 4832 @ frame_needed = 0, uses_anonymous_args = 0 4833 @ link register save eliminated. 4834 b memcpy 4835 .fnend 4836 .size ftl_memcpy, .-ftl_memcpy 4837 .section .rodata.str1.1 4838.LC92: 4839 .ascii "FlashReadPages %x %x error_ecc_bits %d\012\000" 4840.LC93: 4841 .ascii "data:\000" 4842.LC94: 4843 .ascii "spare:\000" 4844 .text 4845 .align 1 4846 .global FlashReadPages 4847 .syntax unified 4848 .thumb 4849 .thumb_func 4850 .fpu softvfp 4851 .type FlashReadPages, %function 4852FlashReadPages: 4853 .fnstart 4854 @ args = 0, pretend = 0, frame = 24 4855 @ frame_needed = 0, uses_anonymous_args = 0 4856 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 4857 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 4858 mov r4, r0 4859 ldr r5, .L650 4860 .pad #28 4861 sub sp, sp, #28 4862 ldr r7, .L650+4 4863 mov r3, sp 4864 ldr r10, .L650+8 4865 bic r8, r3, #8160 4866 ldr fp, .L650+12 4867 bic r8, r8, #31 4868 str r1, [sp, #4] 4869 mov r9, #0 4870 ldr r3, [r8, #24] 4871 str r3, [sp, #20] 4872 ldrh r3, [r5, #12] 4873 str r3, [sp] 4874.L610: 4875 ldr r3, [sp, #4] 4876 cmp r9, r3 4877 bne .L624 4878 ldr r2, [sp, #20] 4879 ldr r3, [r8, #24] 4880 cmp r2, r3 4881 beq .L625 4882 bl __stack_chk_fail 4883.L624: 4884 ldr r3, [r4, #8] 4885 cbz r3, .L611 4886 ldr r3, [r4, #12] 4887 cbnz r3, .L612 4888.L611: 4889 mov r1, r7 4890 mov r0, r10 4891 movs r2, #96 4892 bl sftl_printk 4893.L612: 4894 add r2, sp, #12 4895 add r1, sp, #16 4896 mov r0, r4 4897 bl l2p_addr_tran 4898 ldr r0, [sp, #12] 4899 cmp r0, #3 4900 bls .L613 4901 mov r3, #-1 4902 str r3, [r4] 4903.L614: 4904 add r9, r9, #1 4905 adds r4, r4, #20 4906 b .L610 4907.L613: 4908 ldr r6, [r4, #8] 4909 uxtb r0, r0 4910 ldr r1, [sp, #16] 4911 ldr ip, [r5, #3256] 4912 lsls r3, r6, #26 4913 ldr r3, [r4, #12] 4914 it ne 4915 ldrne r6, [r5, #3320] 4916 mov r2, r6 4917 blx ip 4918 str r0, [r4] 4919 ldrh r3, [r5, #14] 4920 cmp r3, #4 4921 bne .L617 4922 ldr r0, [sp] 4923 add r2, r6, #2048 4924 ldr r3, [r4, #12] 4925 ldr r1, [sp, #16] 4926 ldr ip, [r5, #3256] 4927 adds r3, r3, #8 4928 add r1, r1, r0 4929 ldrb r0, [sp, #12] @ zero_extendqisi2 4930 blx ip 4931 adds r1, r0, #1 4932 beq .L618 4933 ldr r3, [r4, #12] 4934 ldr r2, [r3, #12] 4935 adds r2, r2, #1 4936 bne .L619 4937 ldr r2, [r3, #8] 4938 adds r2, r2, #1 4939 bne .L619 4940 ldr r3, [r3] 4941 adds r3, r3, #1 4942 beq .L619 4943.L618: 4944 mov r3, #-1 4945 str r3, [r4] 4946.L620: 4947 ldr r3, [r4] 4948 adds r2, r3, #1 4949 beq .L621 4950 cmp r3, #256 4951 bne .L617 4952.L621: 4953 ldr r1, [r4, #4] 4954 mov r0, fp 4955 ldr r2, [sp, #16] 4956 bl sftl_printk 4957 ldr r1, [r4, #8] 4958 cbz r1, .L623 4959 movs r3, #4 4960 ldr r0, .L650+16 4961 mov r2, r3 4962 bl rknand_print_hex 4963.L623: 4964 ldr r1, [r4, #12] 4965 cbz r1, .L617 4966 movs r3, #4 4967 ldr r0, .L650+20 4968 mov r2, r3 4969 bl rknand_print_hex 4970.L617: 4971 ldr r3, [r5, #3320] 4972 cmp r3, r6 4973 bne .L614 4974 ldr r0, [r4, #8] 4975 cmp r0, r6 4976 beq .L614 4977 ldrh r2, [r5, #258] 4978 mov r1, r6 4979 lsls r2, r2, #9 4980 bl ftl_memcpy 4981 b .L614 4982.L619: 4983 ldr r3, [r4] 4984 adds r3, r3, #1 4985 beq .L620 4986 cmp r0, #256 4987 it eq 4988 streq r0, [r4] 4989 b .L620 4990.L625: 4991 movs r0, #0 4992 add sp, sp, #28 4993 @ sp needed 4994 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 4995.L651: 4996 .align 2 4997.L650: 4998 .word .LANCHOR0 4999 .word .LANCHOR1+216 5000 .word .LC8 5001 .word .LC92 5002 .word .LC93 5003 .word .LC94 5004 .fnend 5005 .size FlashReadPages, .-FlashReadPages 5006 .align 1 5007 .global FtlLoadFactoryBbt 5008 .syntax unified 5009 .thumb 5010 .thumb_func 5011 .fpu softvfp 5012 .type FtlLoadFactoryBbt, %function 5013FtlLoadFactoryBbt: 5014 .fnstart 5015 @ args = 0, pretend = 0, frame = 0 5016 @ frame_needed = 0, uses_anonymous_args = 0 5017 push {r4, r5, r6, r7, r8, r9, r10, lr} 5018 .save {r4, r5, r6, r7, r8, r9, r10, lr} 5019 movs r6, #0 5020 ldr r4, .L662 5021 movw r10, #61664 5022 add r7, r4, #364 5023 addw r9, r4, #3452 5024 ldr r3, [r4, #3300] 5025 ldr r8, [r4, #3332] 5026 str r3, [r4, #3460] 5027 str r8, [r4, #3464] 5028.L653: 5029 ldrh r3, [r4, #254] 5030 cmp r3, r6 5031 bhi .L658 5032 movs r0, #0 5033 pop {r4, r5, r6, r7, r8, r9, r10, pc} 5034.L658: 5035 ldrh r5, [r4, #298] 5036 movw r3, #65535 5037 strh r3, [r7] @ movhi 5038.L655: 5039 ldrh r3, [r4, #298] 5040 subs r5, r5, #1 5041 sub r2, r3, #16 5042 uxth r5, r5 5043 cmp r5, r2 5044 ble .L656 5045 mla r3, r6, r3, r5 5046 movs r2, #1 5047 mov r0, r9 5048 mov r1, r2 5049 lsls r3, r3, #10 5050 str r3, [r4, #3456] 5051 bl FlashReadPages 5052 ldr r3, [r4, #3452] 5053 adds r3, r3, #1 5054 beq .L655 5055 ldrh r3, [r8] 5056 cmp r3, r10 5057 bne .L655 5058 strh r5, [r7] @ movhi 5059.L656: 5060 adds r6, r6, #1 5061 adds r7, r7, #2 5062 b .L653 5063.L663: 5064 .align 2 5065.L662: 5066 .word .LANCHOR0 5067 .fnend 5068 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt 5069 .align 1 5070 .global FtlGetLastWrittenPage 5071 .syntax unified 5072 .thumb 5073 .thumb_func 5074 .fpu softvfp 5075 .type FtlGetLastWrittenPage, %function 5076FtlGetLastWrittenPage: 5077 .fnstart 5078 @ args = 0, pretend = 0, frame = 88 5079 @ frame_needed = 0, uses_anonymous_args = 0 5080 push {r4, r5, r6, r7, r8, r9, lr} 5081 .save {r4, r5, r6, r7, r8, r9, lr} 5082 cmp r1, #1 5083 mov r2, r1 5084 .pad #92 5085 sub sp, sp, #92 5086 mov r8, r1 5087 mov r3, sp 5088 lsl r6, r0, #10 5089 bic r7, r3, #8160 5090 mov r1, #1 5091 bic r7, r7, #31 5092 ldr r3, [r7, #24] 5093 str r3, [sp, #84] 5094 ldr r3, .L677 5095 ite eq 5096 ldrheq r4, [r3, #304] 5097 ldrhne r4, [r3, #302] 5098 ldr r3, [r3, #3324] 5099 subs r4, r4, #1 5100 str r3, [sp, #8] 5101 add r3, sp, #20 5102 str r3, [sp, #12] 5103 sxth r4, r4 5104 orr r0, r4, r0, lsl #10 5105 str r0, [sp, #4] 5106 mov r0, sp 5107 bl FlashReadPages 5108 ldr r3, [sp, #20] 5109 adds r3, r3, #1 5110 bne .L668 5111 mov r9, #0 5112 b .L667 5113.L671: 5114 add r3, r9, r4 5115 mov r2, r8 5116 mov r0, sp 5117 movs r1, #1 5118 add r3, r3, r3, lsr #31 5119 sbfx r5, r3, #1, #16 5120 orr r3, r6, r3, asr #1 5121 str r3, [sp, #4] 5122 bl FlashReadPages 5123 ldrd r3, r2, [sp, #20] 5124 ands r3, r3, r2 5125 adds r3, r3, #1 5126 bne .L669 5127 ldr r3, [sp] 5128 adds r3, r3, #1 5129 beq .L669 5130 subs r4, r5, #1 5131 sxth r4, r4 5132.L667: 5133 cmp r9, r4 5134 ble .L671 5135.L668: 5136 ldr r2, [sp, #84] 5137 ldr r3, [r7, #24] 5138 cmp r2, r3 5139 beq .L672 5140 bl __stack_chk_fail 5141.L669: 5142 adds r5, r5, #1 5143 sxth r9, r5 5144 b .L667 5145.L672: 5146 mov r0, r4 5147 add sp, sp, #92 5148 @ sp needed 5149 pop {r4, r5, r6, r7, r8, r9, pc} 5150.L678: 5151 .align 2 5152.L677: 5153 .word .LANCHOR0 5154 .fnend 5155 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage 5156 .align 1 5157 .global FtlScanSysBlk 5158 .syntax unified 5159 .thumb 5160 .thumb_func 5161 .fpu softvfp 5162 .type FtlScanSysBlk, %function 5163FtlScanSysBlk: 5164 .fnstart 5165 @ args = 0, pretend = 0, frame = 16 5166 @ frame_needed = 0, uses_anonymous_args = 0 5167 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 5168 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 5169 movs r5, #0 5170 ldr r4, .L759 5171 mov r1, r5 5172 .pad #20 5173 sub sp, sp, #20 5174 ldr r2, [r4, #328] 5175 ldr r0, [r4, #3380] 5176 strh r5, [r4, #3436] @ movhi 5177 lsls r2, r2, #2 5178 strh r5, [r4, #344] @ movhi 5179 bl ftl_memset 5180 ldr r2, [r4, #328] 5181 mov r1, r5 5182 ldr r0, [r4, #3356] 5183 lsls r2, r2, #1 5184 bl ftl_memset 5185 ldrh r2, [r4, #320] 5186 mov r1, r5 5187 ldr r0, [r4, #3368] 5188 lsls r2, r2, #2 5189 bl ftl_memset 5190 ldrh r2, [r4, #320] 5191 mov r1, r5 5192 ldr r0, [r4, #348] 5193 lsls r2, r2, #1 5194 bl ftl_memset 5195 add r0, r4, #2624 5196 movs r2, #16 5197 movs r1, #255 5198 bl ftl_memset 5199 ldrh r8, [r4, #240] 5200.L680: 5201 ldrh r3, [r4, #242] 5202 cmp r3, r8 5203 bls .L720 5204 ldr r5, .L759+4 5205 movs r7, #0 5206 ldrh r6, [r4, #232] 5207 mov fp, #20 5208 ldrh r1, [r4, #312] 5209 ldr r10, [r4, #3288] 5210 add r6, r6, r5 5211 ldr r2, [r4, #3176] 5212 ldr r3, [r4, #3180] 5213 str r1, [sp, #4] 5214 b .L721 5215.L683: 5216 mov r1, r8 5217 ldrb r0, [r5], #1 @ zero_extendqisi2 5218 strd r2, r3, [sp, #8] 5219 bl V2P_block 5220 mov r9, r0 5221 bl FtlBbmIsBadBlock 5222 ldrd r2, r3, [sp, #8] 5223 cbnz r0, .L721 5224 mla ip, fp, r7, r10 5225 lsl r1, r9, #10 5226 strd r1, r2, [ip, #4] 5227 ldr r1, [sp, #4] 5228 muls r1, r7, r1 5229 add r7, r7, #1 5230 it mi 5231 addmi r1, r1, #3 5232 uxth r7, r7 5233 bic r1, r1, #3 5234 add r1, r1, r3 5235 str r1, [ip, #12] 5236.L721: 5237 cmp r6, r5 5238 bne .L683 5239 cbnz r7, .L684 5240.L719: 5241 add r8, r8, #1 5242 uxth r8, r8 5243 b .L680 5244.L684: 5245 mov r1, r7 5246 mov r0, r10 5247 movs r2, #1 5248 bl FlashReadPages 5249 movs r3, #0 5250 str r3, [sp, #4] 5251.L718: 5252 ldr r3, [sp, #4] 5253 mov r9, #20 5254 mul r9, r9, r3 5255 ldr r3, [r4, #3288] 5256 add r2, r3, r9 5257 ldr r3, [r3, r9] 5258 ldr r5, [r2, #4] 5259 ldr r6, [r2, #12] 5260 adds r3, r3, #1 5261 ubfx r5, r5, #10, #16 5262 bne .L687 5263 mov r10, #16 5264 movw fp, #65535 5265.L689: 5266 ldr r0, [r4, #3288] 5267 movs r2, #1 5268 mov r1, r2 5269 add r0, r0, r9 5270 ldr r3, [r0, #4] 5271 adds r3, r3, #1 5272 str r3, [r0, #4] 5273 bl FlashReadPages 5274 ldrh r3, [r6] 5275 cmp r3, fp 5276 ldr r3, [r4, #3288] 5277 bne .L686 5278 mov r2, #-1 5279 str r2, [r3, r9] 5280 ldr r3, [r4, #3288] 5281 ldr r3, [r3, r9] 5282 cmp r3, r2 5283 beq .L688 5284.L687: 5285 ldr r2, [r4, #2588] 5286 ldr r3, [r6, #4] 5287 adds r1, r2, #1 5288 beq .L736 5289 cmp r2, r3 5290 bhi .L690 5291.L736: 5292 adds r0, r3, #1 5293 itt ne 5294 addne r2, r3, #1 5295 strne r2, [r4, #2588] 5296.L690: 5297 ldrh r2, [r6] 5298 movw r1, #61634 5299 cmp r2, r1 5300 beq .L691 5301 bhi .L692 5302 movw r1, #61574 5303 cmp r2, r1 5304 beq .L693 5305 movw r1, #61604 5306 cmp r2, r1 5307 beq .L694 5308.L695: 5309 ldr r3, [sp, #4] 5310 adds r3, r3, #1 5311 str r3, [sp, #4] 5312 ldrh r3, [sp, #4] 5313 cmp r7, r3 5314 bhi .L718 5315 b .L719 5316.L686: 5317 ldr r3, [r3, r9] 5318 adds r3, r3, #1 5319 bne .L687 5320 add r10, r10, #-1 5321 uxth r10, r10 5322 cmp r10, #0 5323 bne .L689 5324.L688: 5325 movs r1, #1 5326 b .L757 5327.L692: 5328 movw r3, #65535 5329 cmp r2, r3 5330 bne .L695 5331 movs r1, #0 5332.L757: 5333 mov r0, r5 5334 bl FtlFreeSysBlkQueueIn 5335 b .L695 5336.L691: 5337 ldrh r2, [r4, #3436] 5338 ldr r3, [r4, #328] 5339 cmp r2, r3 5340 bls .L697 5341 ldr r1, .L759+8 5342 mov r2, #1232 5343 ldr r0, .L759+12 5344 bl sftl_printk 5345.L697: 5346 ldr r1, [r4, #328] 5347 ldrh r0, [r4, #3436] 5348 ldr r9, [r4, #3380] 5349 uxth r2, r1 5350 subs r3, r2, #1 5351 subs r2, r2, r0 5352 subs r2, r2, #1 5353 add fp, r9, #4 5354 sxth r3, r3 5355 mov ip, r3 5356 sxth r2, r2 5357 str r2, [sp, #8] 5358.L698: 5359 ldr r2, [sp, #8] 5360 cmp r2, r3 5361 bge .L703 5362 add r10, ip, #-1 5363 lsl lr, ip, #2 5364 str lr, [sp, #12] 5365 ldr lr, [r6, #4] 5366 ldr r2, [fp, r10, lsl #2] 5367 cmp lr, r2 5368 bls .L699 5369 ldr r2, [r9] 5370 cbnz r2, .L700 5371 cmp r1, r0 5372 itt ne 5373 addne r0, r0, #1 5374 strhne r0, [r4, #3436] @ movhi 5375.L700: 5376 uxth lr, r3 5377 movs r0, #0 5378.L701: 5379 uxth r9, r0 5380 ldr r1, [r4, #3380] 5381 sxth r2, r0 5382 cmp lr, r9 5383 bhi .L702 5384 ldr r0, [sp, #12] 5385 ldr r2, [r6, #4] 5386 str r2, [r1, r0] 5387 ldr r2, [r4, #3356] 5388 strh r5, [r2, ip, lsl #1] @ movhi 5389.L703: 5390 cmp r3, #0 5391 blt .L695 5392 ldrh r1, [r4, #3436] 5393 ldr r2, [r4, #328] 5394 subs r2, r2, r1 5395 subs r2, r2, #1 5396 sxth r2, r2 5397 cmp r2, r3 5398 blt .L695 5399 ldr r2, [r4, #3380] 5400 adds r1, r1, #1 5401 strh r1, [r4, #3436] @ movhi 5402 ldr r1, [r6, #4] 5403 str r1, [r2, r3, lsl #2] 5404 ldr r2, [r4, #3356] 5405.L756: 5406 strh r5, [r2, r3, lsl #1] @ movhi 5407 b .L695 5408.L702: 5409 adds r2, r2, #1 5410 adds r0, r0, #1 5411 ldr r9, [r1, r2, lsl #2] 5412 add r1, r1, r2, lsl #2 5413 str r9, [r1, #-4] 5414 ldr r1, [r4, #3356] 5415 ldrh r9, [r1, r2, lsl #1] 5416 add r2, r1, r2, lsl #1 5417 strh r9, [r2, #-2] @ movhi 5418 b .L701 5419.L699: 5420 subs r3, r3, #1 5421 mov ip, r10 5422 sxth r3, r3 5423 b .L698 5424.L760: 5425 .align 2 5426.L759: 5427 .word .LANCHOR0 5428 .word .LANCHOR0+260 5429 .word .LANCHOR1+231 5430 .word .LC8 5431.L693: 5432 ldrh r2, [r4, #344] 5433 ldrh r3, [r4, #320] 5434 cmp r2, r3 5435 bls .L707 5436 ldr r1, .L761 5437 movw r2, #1273 5438 ldr r0, .L761+4 5439 bl sftl_printk 5440.L707: 5441 ldrh lr, [r4, #320] 5442 ldrh r0, [r4, #344] 5443 add ip, lr, #-1 5444 ldr r2, [r4, #3368] 5445 sxth r3, ip 5446 sub ip, ip, r0 5447.L708: 5448 cmp r3, ip 5449 ble .L713 5450 ldr r1, [r6, #4] 5451 lsl r10, r3, #2 5452 ldr r9, [r2, r3, lsl #2] 5453 cmp r1, r9 5454 bls .L709 5455 ldr r2, [r2] 5456 cbnz r2, .L710 5457 cmp lr, r0 5458 itt ne 5459 addne r0, r0, #1 5460 strhne r0, [r4, #344] @ movhi 5461.L710: 5462 uxth ip, r3 5463 movs r0, #0 5464.L711: 5465 uxth lr, r0 5466 ldr r1, [r4, #3368] 5467 sxth r2, r0 5468 cmp ip, lr 5469 bhi .L712 5470 ldr r2, [r6, #4] 5471 str r2, [r1, r10] 5472 ldr r2, [r4, #348] 5473 strh r5, [r2, r3, lsl #1] @ movhi 5474.L713: 5475 cmp r3, #0 5476 blt .L695 5477 ldrh r2, [r4, #320] 5478 ldrh r1, [r4, #344] 5479 subs r2, r2, #1 5480 subs r2, r2, r1 5481 sxth r2, r2 5482 cmp r2, r3 5483 blt .L695 5484 ldr r2, [r4, #3368] 5485 adds r1, r1, #1 5486 strh r1, [r4, #344] @ movhi 5487 ldr r1, [r6, #4] 5488 str r1, [r2, r3, lsl #2] 5489 ldr r2, [r4, #348] 5490 b .L756 5491.L712: 5492 adds r2, r2, #1 5493 adds r0, r0, #1 5494 ldr lr, [r1, r2, lsl #2] 5495 add r1, r1, r2, lsl #2 5496 str lr, [r1, #-4] 5497 ldr r1, [r4, #348] 5498 ldrh lr, [r1, r2, lsl #1] 5499 add r2, r1, r2, lsl #1 5500 strh lr, [r2, #-2] @ movhi 5501 b .L711 5502.L709: 5503 subs r3, r3, #1 5504 sxth r3, r3 5505 b .L708 5506.L694: 5507 ldrh r1, [r4, #2624] 5508 movw r2, #65535 5509 cmp r1, r2 5510 bne .L715 5511 strh r5, [r4, #2624] @ movhi 5512.L758: 5513 str r3, [r4, #2632] 5514 b .L695 5515.L715: 5516 ldrh r0, [r4, #2628] 5517 cmp r0, r2 5518 beq .L716 5519 movs r1, #1 5520 bl FtlFreeSysBlkQueueIn 5521.L716: 5522 ldr r2, [r4, #2632] 5523 ldr r3, [r6, #4] 5524 cmp r2, r3 5525 bcs .L717 5526 ldrh r3, [r4, #2624] 5527 strh r3, [r4, #2628] @ movhi 5528 strh r5, [r4, #2624] @ movhi 5529 ldr r3, [r6, #4] 5530 b .L758 5531.L717: 5532 strh r5, [r4, #2628] @ movhi 5533 b .L695 5534.L720: 5535 ldr r1, [r4, #3356] 5536 ldrh r3, [r1] 5537 cbz r3, .L722 5538.L725: 5539 ldr r1, [r4, #348] 5540 ldrh r2, [r1] 5541 cmp r2, #0 5542 beq .L723 5543.L724: 5544 ldrh r2, [r4, #3436] 5545 ldr r3, [r4, #328] 5546 cmp r2, r3 5547 bls .L754 5548 ldr r1, .L761 5549 movw r2, #1398 5550 ldr r0, .L761+4 5551 bl sftl_printk 5552.L754: 5553 movs r0, #0 5554 add sp, sp, #20 5555 @ sp needed 5556 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 5557.L722: 5558 ldrh r2, [r4, #3436] 5559 cmp r2, #0 5560 beq .L725 5561 ldr r0, [r4, #328] 5562.L726: 5563 sxth r2, r3 5564 cmp r2, r0 5565 bcs .L725 5566 ldrh r5, [r1, r2, lsl #1] 5567 adds r3, r3, #1 5568 cmp r5, #0 5569 beq .L726 5570 mov r3, r2 5571 movs r5, #0 5572 b .L727 5573.L728: 5574 ldr r1, [r4, #3356] 5575 subs r0, r3, r2 5576 ldrh r6, [r1, r3, lsl #1] 5577 strh r6, [r1, r0, lsl #1] @ movhi 5578 ldr r1, [r4, #3380] 5579 ldr r6, [r1, r3, lsl #2] 5580 str r6, [r1, r0, lsl #2] 5581 ldr r1, [r4, #3356] 5582 strh r5, [r1, r3, lsl #1] @ movhi 5583 adds r3, r3, #1 5584 sxth r3, r3 5585.L727: 5586 ldr r1, [r4, #328] 5587 cmp r3, r1 5588 bcc .L728 5589 b .L725 5590.L723: 5591 ldrh r3, [r4, #344] 5592 cmp r3, #0 5593 beq .L724 5594 ldrh r0, [r4, #320] 5595.L732: 5596 sxth r3, r2 5597 mov r5, r3 5598 cmp r3, r0 5599 bge .L724 5600 ldrh r6, [r1, r3, lsl #1] 5601 adds r2, r2, #1 5602 cmp r6, #0 5603 beq .L732 5604 movs r0, #0 5605.L733: 5606 ldrh r2, [r4, #320] 5607 cmp r3, r2 5608 bge .L724 5609 ldr r2, [r4, #348] 5610 subs r1, r3, r5 5611 ldrh r6, [r2, r3, lsl #1] 5612 strh r6, [r2, r1, lsl #1] @ movhi 5613 ldr r2, [r4, #3368] 5614 ldr r6, [r2, r3, lsl #2] 5615 str r6, [r2, r1, lsl #2] 5616 ldr r2, [r4, #348] 5617 strh r0, [r2, r3, lsl #1] @ movhi 5618 adds r3, r3, #1 5619 sxth r3, r3 5620 b .L733 5621.L762: 5622 .align 2 5623.L761: 5624 .word .LANCHOR1+231 5625 .word .LC8 5626 .fnend 5627 .size FtlScanSysBlk, .-FtlScanSysBlk 5628 .align 1 5629 .global FtlLoadBbt 5630 .syntax unified 5631 .thumb 5632 .thumb_func 5633 .fpu softvfp 5634 .type FtlLoadBbt, %function 5635FtlLoadBbt: 5636 .fnstart 5637 @ args = 0, pretend = 0, frame = 0 5638 @ frame_needed = 0, uses_anonymous_args = 0 5639 push {r4, r5, r6, r7, r8, r9, r10, lr} 5640 .save {r4, r5, r6, r7, r8, r9, r10, lr} 5641 movw r7, #61649 5642 ldr r4, .L794 5643 addw r8, r4, #3452 5644 ldr r3, [r4, #3300] 5645 ldr r6, [r4, #3332] 5646 str r3, [r4, #3460] 5647 str r6, [r4, #3464] 5648 bl FtlBbtMemInit 5649 ldrh r5, [r4, #298] 5650 subs r5, r5, #1 5651 uxth r5, r5 5652.L764: 5653 ldrh r3, [r4, #298] 5654 subs r3, r3, #16 5655 cmp r5, r3 5656 ble .L769 5657 movs r2, #1 5658 mov r0, r8 5659 mov r1, r2 5660 lsls r3, r5, #10 5661 str r3, [r4, #3456] 5662 bl FlashReadPages 5663 ldr r3, [r4, #3452] 5664 adds r3, r3, #1 5665 beq .L765 5666.L768: 5667 ldrh r3, [r6] 5668 cmp r3, r7 5669 bne .L767 5670 ldr r3, [r6, #4] 5671 str r3, [r4, #360] 5672 strh r5, [r4, #352] @ movhi 5673 ldrh r3, [r6, #8] 5674 strh r3, [r4, #356] @ movhi 5675.L769: 5676 ldrh r3, [r4, #352] 5677 movw r2, #65535 5678 cmp r3, r2 5679 beq .L783 5680 ldrh r3, [r4, #356] 5681 cmp r3, r2 5682 beq .L773 5683 movs r2, #1 5684 ldr r0, .L794+4 5685 mov r1, r2 5686 lsls r3, r3, #10 5687 str r3, [r4, #3456] 5688 bl FlashReadPages 5689 ldr r3, [r4, #3452] 5690 adds r3, r3, #1 5691 beq .L773 5692 ldrh r2, [r6] 5693 movw r3, #61649 5694 cmp r2, r3 5695 bne .L773 5696 ldr r3, [r6, #4] 5697 ldr r2, [r4, #360] 5698 cmp r3, r2 5699 bls .L773 5700 str r3, [r4, #360] 5701 ldrh r2, [r4, #356] 5702 ldrh r3, [r6, #8] 5703 strh r2, [r4, #352] @ movhi 5704 strh r3, [r4, #356] @ movhi 5705.L773: 5706 ldrh r0, [r4, #352] 5707 movs r1, #1 5708 ldr r9, .L794+4 5709 bl FtlGetLastWrittenPage 5710 sxth r8, r0 5711 mov r7, r0 5712 add r3, r8, #1 5713 movs r5, #0 5714 strh r3, [r4, #354] @ movhi 5715 movw r10, #61649 5716.L775: 5717 subs r3, r7, r5 5718 lsls r3, r3, #16 5719 bpl .L778 5720 ldr r1, .L794+8 5721 movs r2, #251 5722 ldr r0, .L794+12 5723 bl sftl_printk 5724.L777: 5725 ldrh r0, [r6, #12] 5726 ldrh r3, [r6, #10] 5727 strh r3, [r4, #358] @ movhi 5728 movw r3, #65535 5729 cmp r0, r3 5730 beq .L780 5731 ldr r3, [r4, #228] 5732 cmp r0, r3 5733 beq .L780 5734 ldrh r2, [r4, #242] 5735 lsrs r1, r2, #2 5736 cmp r3, r2, lsr #2 5737 bcs .L780 5738 cmp r0, r1 5739 bcs .L780 5740 bl FtlSysBlkNumInit 5741.L780: 5742 ldr r6, .L794+16 5743 movs r5, #0 5744.L781: 5745 ldrh r3, [r4, #254] 5746 cmp r3, r5 5747 bhi .L782 5748 movs r0, #0 5749.L763: 5750 pop {r4, r5, r6, r7, r8, r9, r10, pc} 5751.L765: 5752 ldr r3, [r4, #3456] 5753 movs r2, #1 5754 mov r0, r8 5755 mov r1, r2 5756 adds r3, r3, #1 5757 str r3, [r4, #3456] 5758 bl FlashReadPages 5759 ldr r3, [r4, #3452] 5760 adds r3, r3, #1 5761 bne .L768 5762.L767: 5763 subs r5, r5, #1 5764 uxth r5, r5 5765 b .L764 5766.L778: 5767 ldrh r2, [r4, #352] 5768 sub r3, r8, r5 5769 mov r0, r9 5770 orr r3, r3, r2, lsl #10 5771 movs r2, #1 5772 str r3, [r4, #3456] 5773 mov r1, r2 5774 ldr r3, [r4, #3300] 5775 str r3, [r4, #3460] 5776 bl FlashReadPages 5777 ldr r3, [r4, #3452] 5778 adds r3, r3, #1 5779 beq .L776 5780 ldrh r3, [r6] 5781 cmp r3, r10 5782 beq .L777 5783.L776: 5784 adds r5, r5, #1 5785 b .L775 5786.L782: 5787 ldrh r2, [r4, #3388] 5788 ldr r3, [r4, #3460] 5789 ldr r0, [r6], #4 5790 mul r1, r5, r2 5791 lsls r2, r2, #2 5792 adds r5, r5, #1 5793 add r1, r3, r1, lsl #2 5794 bl ftl_memcpy 5795 b .L781 5796.L783: 5797 mov r0, #-1 5798 b .L763 5799.L795: 5800 .align 2 5801.L794: 5802 .word .LANCHOR0 5803 .word .LANCHOR0+3452 5804 .word .LANCHOR1+245 5805 .word .LC8 5806 .word .LANCHOR0+380 5807 .fnend 5808 .size FtlLoadBbt, .-FtlLoadBbt 5809 .section .rodata.str1.1 5810.LC95: 5811 .ascii "prog read error: = %x\012\000" 5812.LC96: 5813 .ascii "prog read REFRESH: = %x\012\000" 5814.LC97: 5815 .ascii "prog read s error: = %x %x %x %x %x\012\000" 5816.LC98: 5817 .ascii "prog read d error: = %x %x %x %x %x\012\000" 5818 .text 5819 .align 1 5820 .global FlashProgPages 5821 .syntax unified 5822 .thumb 5823 .thumb_func 5824 .fpu softvfp 5825 .type FlashProgPages, %function 5826FlashProgPages: 5827 .fnstart 5828 @ args = 0, pretend = 0, frame = 48 5829 @ frame_needed = 0, uses_anonymous_args = 0 5830 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 5831 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 5832 mov r8, r0 5833 ldr r6, .L835 5834 .pad #60 5835 sub sp, sp, #60 5836 mov r4, r0 5837 mov r3, sp 5838 mov r5, r0 5839 bic r10, r3, #8160 5840 mov fp, #0 5841 bic r10, r10, #31 5842 str r1, [sp, #12] 5843 str r2, [sp, #20] 5844 ldr r3, [r10, #24] 5845 str r3, [sp, #52] 5846 ldrh r3, [r6, #12] 5847 mov r9, r3 5848 lsls r3, r3, #3 5849 str r3, [sp, #16] 5850.L797: 5851 ldr r3, [sp, #12] 5852 cmp fp, r3 5853 bne .L810 5854 movs r0, #20 5855 ldr r7, .L835+4 5856 ldr r9, .L835+8 5857 mla r8, r0, fp, r8 5858 ldr r5, .L835 5859.L811: 5860 cmp r8, r4 5861 beq .L804 5862 ldr r2, [r6, #3320] 5863 movs r3, #0 5864 add r0, sp, #32 5865 movs r1, #1 5866 str r3, [r2] 5867 ldr r2, [r6, #3328] 5868 str r3, [r2] 5869 ldr r2, [sp, #20] 5870 ldr r3, [r4, #4] 5871 str r3, [sp, #36] 5872 ldr r3, [r6, #3320] 5873 str r3, [sp, #40] 5874 ldr r3, [r6, #3328] 5875 str r3, [sp, #44] 5876 bl FlashReadPages 5877 ldr fp, [sp, #32] 5878 cmp fp, #-1 5879 bne .L812 5880 ldr r1, [r4, #4] 5881 mov r0, r7 5882 bl sftl_printk 5883 str fp, [r4] 5884.L812: 5885 ldr fp, [sp, #32] 5886 cmp fp, #256 5887 bne .L813 5888 ldr r1, [r4, #4] 5889 mov r0, r9 5890 bl sftl_printk 5891 str fp, [r4] 5892.L813: 5893 ldr r3, [r4, #12] 5894 cbz r3, .L814 5895 ldr r1, [r5, #3328] 5896 ldr r2, [r3] 5897 ldr r0, [r1] 5898 cmp r2, r0 5899 bne .L815 5900 ldr ip, [r3, #8] 5901 ldr lr, [r1, #8] 5902 cmp ip, lr 5903 beq .L814 5904.L815: 5905 ldr r1, [r1, #4] 5906 strd r0, r1, [sp] 5907 ldr r0, .L835+12 5908 ldr r3, [r3, #4] 5909 ldr r1, [r4, #4] 5910 bl sftl_printk 5911 mov r3, #-1 5912 str r3, [r4] 5913.L814: 5914 ldr r3, [r4, #8] 5915 cbz r3, .L816 5916 ldr r1, [r5, #3320] 5917 ldr r2, [r3] 5918 ldr r0, [r1] 5919 cmp r2, r0 5920 bne .L817 5921 ldr ip, [r3, #2048] 5922 ldr lr, [r1, #2048] 5923 cmp ip, lr 5924 beq .L816 5925.L817: 5926 ldr r1, [r1, #4] 5927 strd r0, r1, [sp] 5928 ldr r0, .L835+16 5929 ldr r3, [r3, #4] 5930 ldr r1, [r4, #4] 5931 bl sftl_printk 5932 mov r3, #-1 5933 str r3, [r4] 5934.L816: 5935 adds r4, r4, #20 5936 b .L811 5937.L810: 5938 ldr r3, [r5, #8] 5939 cbz r3, .L798 5940 ldr r3, [r5, #12] 5941 cbnz r3, .L799 5942.L798: 5943 ldr r1, .L835+20 5944 movs r2, #148 5945 ldr r0, .L835+24 5946 bl sftl_printk 5947.L799: 5948 add r2, sp, #24 5949 add r1, sp, #28 5950 mov r0, r5 5951 bl l2p_addr_tran 5952 ldr r7, [sp, #24] 5953 cmp r7, #3 5954 bls .L800 5955.L834: 5956 mov r3, #-1 5957 str r3, [r5] 5958 b .L801 5959.L800: 5960 cbnz r7, .L802 5961 ldr r3, [sp, #28] 5962 ldr r2, [sp, #16] 5963 cmp r2, r3 5964 bls .L802 5965 ldr r6, .L835+20 5966 ldr r5, .L835+28 5967.L803: 5968 ldr r2, [r4, #4] 5969 mov r3, #-1 5970 mov r1, r6 5971 str r3, [r4] 5972 mov r0, r5 5973 adds r7, r7, #1 5974 bl sftl_printk 5975 ldr r1, [r4, #8] 5976 ldr r0, .L835+32 5977 movs r3, #16 5978 movs r2, #4 5979 adds r4, r4, #20 5980 bl rknand_print_hex 5981 movs r3, #4 5982 ldr r1, [r4, #-8] 5983 mov r2, r3 5984 ldr r0, .L835+36 5985 bl rknand_print_hex 5986 ldr r3, [sp, #12] 5987 cmp r3, r7 5988 bne .L803 5989 bl dump_stack 5990.L804: 5991 ldr r2, [sp, #52] 5992 ldr r3, [r10, #24] 5993 cmp r2, r3 5994 beq .L819 5995 bl __stack_chk_fail 5996.L802: 5997 ldr r1, [r5, #8] 5998 lsls r3, r1, #26 5999 beq .L820 6000 ldr r7, [r6, #3320] 6001 cmp r7, r1 6002 beq .L805 6003 ldrh r2, [r6, #258] 6004 mov r0, r7 6005 lsls r2, r2, #9 6006 bl ftl_memcpy 6007.L805: 6008 ldr r3, [r5, #12] 6009 mov r2, r7 6010 ldr r1, [sp, #28] 6011 ldrb r0, [sp, #24] @ zero_extendqisi2 6012 ldr ip, [r6, #3252] 6013 blx ip 6014 cbnz r0, .L806 6015 str r0, [r5] 6016.L807: 6017 ldrh r3, [r6, #14] 6018 cmp r3, #4 6019 bne .L801 6020 ldr r3, [r5, #12] 6021 add r2, r7, #2048 6022 ldr r1, [sp, #28] 6023 ldrb r0, [sp, #24] @ zero_extendqisi2 6024 adds r3, r3, #8 6025 ldr r7, [r6, #3252] 6026 add r1, r1, r9 6027 blx r7 6028 cmp r0, #0 6029 bne .L834 6030.L801: 6031 add fp, fp, #1 6032 adds r5, r5, #20 6033 b .L797 6034.L820: 6035 mov r7, r1 6036 b .L805 6037.L806: 6038 mov r3, #-1 6039 str r3, [r5] 6040 b .L807 6041.L819: 6042 movs r0, #0 6043 add sp, sp, #60 6044 @ sp needed 6045 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 6046.L836: 6047 .align 2 6048.L835: 6049 .word .LANCHOR0 6050 .word .LC95 6051 .word .LC96 6052 .word .LC97 6053 .word .LC98 6054 .word .LANCHOR1+256 6055 .word .LC8 6056 .word .LC86 6057 .word .LC87 6058 .word .LC88 6059 .fnend 6060 .size FlashProgPages, .-FlashProgPages 6061 .align 1 6062 .global FtlLowFormatEraseBlock 6063 .syntax unified 6064 .thumb 6065 .thumb_func 6066 .fpu softvfp 6067 .type FtlLowFormatEraseBlock, %function 6068FtlLowFormatEraseBlock: 6069 .fnstart 6070 @ args = 0, pretend = 0, frame = 8 6071 @ frame_needed = 0, uses_anonymous_args = 0 6072 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 6073 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 6074 .pad #12 6075 mov r10, #0 6076 ldr r4, .L882 6077 mov r8, r0 6078 mov r7, r1 6079 mov r6, r10 6080 mov r5, r10 6081 mov r9, #20 6082 str r0, [r4, #3284] 6083.L838: 6084 ldrh r1, [r4, #232] 6085 uxth r3, r10 6086 cmp r1, r3 6087 bhi .L843 6088 cmp r6, #0 6089 beq .L837 6090 mov r9, #0 6091 mov r10, #20 6092 ldr r0, [r4, #3268] 6093 mov r2, r6 6094 movs r1, #0 6095 bl FlashEraseBlocks 6096.L847: 6097 mul r3, r10, r9 6098 ldr r2, [r4, #3268] 6099 adds r1, r2, r3 6100 ldr r3, [r2, r3] 6101 adds r3, r3, #1 6102 bne .L846 6103 ldr r0, [r1, #4] 6104 adds r5, r5, #1 6105 uxth r5, r5 6106 ubfx r0, r0, #10, #16 6107 bl FtlBbmMapBadBlock 6108.L846: 6109 add r9, r9, #1 6110 uxth r3, r9 6111 cmp r6, r3 6112 bhi .L847 6113 cmp r7, #0 6114 beq .L862 6115 ldrh r3, [r4, #304] 6116 mov fp, #1 6117 str r3, [sp, #4] 6118.L848: 6119 mov r10, #0 6120.L857: 6121 mov r9, #0 6122 mov r6, r9 6123.L849: 6124 ldrh r1, [r4, #232] 6125 uxth r3, r9 6126 cmp r1, r3 6127 bhi .L853 6128 cmp r6, #0 6129 beq .L837 6130 mov r9, #0 6131 ldr r0, [r4, #3268] 6132 mov r2, fp 6133 mov r1, r6 6134 movs r3, #1 6135 bl FlashProgPages 6136.L856: 6137 movs r3, #20 6138 ldr r2, [r4, #3268] 6139 mul r3, r3, r9 6140 adds r1, r2, r3 6141 ldr r3, [r2, r3] 6142 cbz r3, .L855 6143 ldr r0, [r1, #4] 6144 adds r5, r5, #1 6145 uxth r5, r5 6146 ubfx r0, r0, #10, #16 6147 bl FtlBbmMapBadBlock 6148.L855: 6149 add r9, r9, #1 6150 uxth r3, r9 6151 cmp r6, r3 6152 bhi .L856 6153 add r10, r10, #1 6154 ldr r2, [sp, #4] 6155 uxth r3, r10 6156 cmp r2, r3 6157 bhi .L857 6158 mov r9, #0 6159 mov r10, #20 6160.L859: 6161 cbz r7, .L858 6162 mul r3, r10, r9 6163 ldr r2, [r4, #3268] 6164 adds r1, r2, r3 6165 ldr r3, [r2, r3] 6166 cbnz r3, .L858 6167 ldr r0, [r1, #4] 6168 movs r1, #1 6169 ubfx r0, r0, #10, #16 6170 bl FtlFreeSysBlkQueueIn 6171.L858: 6172 add r9, r9, #1 6173 uxth r3, r9 6174 cmp r6, r3 6175 bhi .L859 6176 cmp r8, #63 6177 bls .L860 6178 cbz r7, .L837 6179.L860: 6180 ldr r0, [r4, #3268] 6181 mov r2, r6 6182 mov r1, fp 6183 bl FlashEraseBlocks 6184.L837: 6185 mov r0, r5 6186 add sp, sp, #12 6187 @ sp needed 6188 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 6189.L843: 6190 uxth r3, r10 6191 ldr r0, [r4, #3268] 6192 movs r2, #0 6193 mul r1, r9, r3 6194 add r3, r3, r4 6195 str r2, [r0, r1] 6196 mov r1, r8 6197 ldrb r0, [r3, #260] @ zero_extendqisi2 6198 bl V2P_block 6199 mov fp, r0 6200 cbz r7, .L839 6201 bl IsBlkInVendorPart 6202 cbnz r0, .L840 6203.L839: 6204 mov r0, fp 6205 bl FtlBbmIsBadBlock 6206 cbnz r0, .L841 6207 ldr r1, [r4, #3268] 6208 lsl r0, fp, #10 6209 ldr r3, [r4, #3316] 6210 mla r1, r9, r6, r1 6211 str r3, [r1, #8] 6212 ldrh r3, [r4, #312] 6213 str r0, [r1, #4] 6214 ldr r0, [r4, #3336] 6215 muls r3, r6, r3 6216 add r6, r6, #1 6217 it mi 6218 addmi r3, r3, #3 6219 uxth r6, r6 6220 bic r3, r3, #3 6221 add r3, r3, r0 6222 str r3, [r1, #12] 6223.L840: 6224 add r10, r10, #1 6225 b .L838 6226.L841: 6227 adds r5, r5, #1 6228 uxth r5, r5 6229 b .L840 6230.L862: 6231 movs r3, #2 6232 mov fp, r7 6233 str r3, [sp, #4] 6234 b .L848 6235.L853: 6236 uxth r3, r9 6237 movs r2, #20 6238 ldr r0, [r4, #3268] 6239 mul r1, r2, r3 6240 add r3, r3, r4 6241 movs r2, #0 6242 str r2, [r0, r1] 6243 mov r1, r8 6244 ldrb r0, [r3, #260] @ zero_extendqisi2 6245 bl V2P_block 6246 str r0, [sp] 6247 cbz r7, .L850 6248 bl IsBlkInVendorPart 6249 cbnz r0, .L851 6250.L850: 6251 ldr r0, [sp] 6252 bl FtlBbmIsBadBlock 6253 cbnz r0, .L851 6254 ldr r1, [r4, #3268] 6255 movs r3, #20 6256 ldr r2, .L882 6257 mla r1, r3, r6, r1 6258 ldr r3, [sp] 6259 add r0, r10, r3, lsl #10 6260 ldr r3, [r4, #3312] 6261 str r3, [r1, #8] 6262 ldrh r3, [r4, #312] 6263 str r0, [r1, #4] 6264 ldr r0, [r2, #3316] 6265 muls r3, r6, r3 6266 add r6, r6, #1 6267 it mi 6268 addmi r3, r3, #3 6269 uxth r6, r6 6270 bic r3, r3, #3 6271 add r3, r3, r0 6272 str r3, [r1, #12] 6273.L851: 6274 add r9, r9, #1 6275 b .L849 6276.L883: 6277 .align 2 6278.L882: 6279 .word .LANCHOR0 6280 .fnend 6281 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock 6282 .align 1 6283 .global FlashTestBlk 6284 .syntax unified 6285 .thumb 6286 .thumb_func 6287 .fpu softvfp 6288 .type FlashTestBlk, %function 6289FlashTestBlk: 6290 .fnstart 6291 @ args = 0, pretend = 0, frame = 88 6292 @ frame_needed = 0, uses_anonymous_args = 0 6293 push {r4, r5, r6, lr} 6294 .save {r4, r5, r6, lr} 6295 cmp r0, #11 6296 mov r4, r0 6297 .pad #88 6298 sub sp, sp, #88 6299 mov r3, sp 6300 bic r6, r3, #8160 6301 bic r6, r6, #31 6302 ldr r3, [r6, #24] 6303 str r3, [sp, #84] 6304 bls .L888 6305 ldr r5, .L890 6306 add r0, sp, #20 6307 movs r2, #32 6308 movs r1, #165 6309 str r0, [sp, #12] 6310 lsls r4, r4, #10 6311 ldr r3, [r5, #3324] 6312 str r3, [sp, #8] 6313 bl ftl_memset 6314 movs r2, #8 6315 movs r1, #90 6316 ldr r0, [r5, #3324] 6317 bl ftl_memset 6318 movs r2, #1 6319 mov r0, sp 6320 mov r1, r2 6321 str r4, [sp, #4] 6322 bl FlashEraseBlocks 6323 movs r3, #1 6324 mov r0, sp 6325 mov r2, r3 6326 mov r1, r3 6327 bl FlashProgPages 6328 ldr r3, [sp] 6329 cbnz r3, .L889 6330 adds r3, r4, #1 6331 mov r0, sp 6332 str r3, [sp, #4] 6333 movs r3, #1 6334 mov r2, r3 6335 mov r1, r3 6336 bl FlashProgPages 6337 ldr r5, [sp] 6338 subs r5, r5, #0 6339 it ne 6340 movne r5, #1 6341 rsbs r5, r5, #0 6342.L886: 6343 mov r0, sp 6344 movs r2, #1 6345 movs r1, #0 6346 str r4, [sp, #4] 6347 bl FlashEraseBlocks 6348.L884: 6349 ldr r2, [sp, #84] 6350 ldr r3, [r6, #24] 6351 cmp r2, r3 6352 beq .L887 6353 bl __stack_chk_fail 6354.L889: 6355 mov r5, #-1 6356 b .L886 6357.L888: 6358 movs r5, #0 6359 b .L884 6360.L887: 6361 mov r0, r5 6362 add sp, sp, #88 6363 @ sp needed 6364 pop {r4, r5, r6, pc} 6365.L891: 6366 .align 2 6367.L890: 6368 .word .LANCHOR0 6369 .fnend 6370 .size FlashTestBlk, .-FlashTestBlk 6371 .section .rodata.str1.1 6372.LC99: 6373 .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" 6374.LC100: 6375 .ascii "FtlBbmTblFlush error:%x\012\000" 6376.LC101: 6377 .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" 6378 .text 6379 .align 1 6380 .global FtlBbmTblFlush 6381 .syntax unified 6382 .thumb 6383 .thumb_func 6384 .fpu softvfp 6385 .type FtlBbmTblFlush, %function 6386FtlBbmTblFlush: 6387 .fnstart 6388 @ args = 0, pretend = 0, frame = 0 6389 @ frame_needed = 0, uses_anonymous_args = 0 6390 push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} 6391 .save {r4, r5, r6, r7, r8, r9, r10, lr} 6392 .pad #8 6393 movs r5, #0 6394 ldr r4, .L903 6395 movs r1, #0 6396 add r6, r4, #380 6397 ldr r0, [r4, #3300] 6398 ldr r3, [r4, #3332] 6399 ldrh r2, [r4, #310] 6400 str r0, [r4, #3460] 6401 str r3, [r4, #3464] 6402 bl ftl_memset 6403.L893: 6404 ldrh r3, [r4, #254] 6405 cmp r3, r5 6406 bgt .L894 6407 ldr r5, [r4, #3464] 6408 movs r2, #16 6409 movs r1, #255 6410 ldr r8, .L903+4 6411 mov r0, r5 6412 ldr r9, .L903+8 6413 bl ftl_memset 6414 movw r3, #61649 6415 strh r3, [r5] @ movhi 6416 movs r6, #0 6417 mov r7, r6 6418 ldr r3, [r4, #360] 6419 str r3, [r5, #4] 6420 ldrh r3, [r4, #352] 6421 strh r3, [r5, #2] @ movhi 6422 ldr r3, [r4, #356] 6423 str r3, [r5, #8] 6424 ldr r3, [r4, #228] 6425 strh r3, [r5, #12] @ movhi 6426 ldr r3, [r4, #2604] 6427 strh r3, [r5, #14] @ movhi 6428.L895: 6429 ldr r3, [r4, #3300] 6430 mov r0, r8 6431 ldrh r2, [r4, #354] 6432 mov r10, #0 6433 str r3, [r4, #3460] 6434 ldrh r1, [r4, #352] 6435 ldr r3, [r4, #3332] 6436 str r3, [r4, #3464] 6437 orr r3, r2, r1, lsl #10 6438 str r3, [r4, #3456] 6439 ldrh r3, [r5, #10] 6440 str r3, [sp] 6441 ldrh r3, [r4, #356] 6442 str r10, [r4, #3452] 6443 bl sftl_printk 6444 ldrh r3, [r4, #304] 6445 ldrh r2, [r4, #354] 6446 subs r3, r3, #1 6447 cmp r2, r3 6448 blt .L896 6449 ldr r3, [r4, #360] 6450 ldr r0, [r4, #3268] 6451 adds r3, r3, #1 6452 str r3, [r4, #360] 6453 str r3, [r5, #4] 6454 ldrh r2, [r4, #352] 6455 ldrh r3, [r4, #356] 6456 strh r2, [r5, #8] @ movhi 6457 strh r2, [r4, #356] @ movhi 6458 movs r2, #1 6459 strh r3, [r4, #352] @ movhi 6460 mov r1, r2 6461 lsls r3, r3, #10 6462 str r3, [r4, #3456] 6463 str r3, [r0, #4] 6464 strh r10, [r4, #354] @ movhi 6465 bl FlashEraseBlocks 6466.L896: 6467 movs r3, #1 6468 mov r0, r9 6469 mov r2, r3 6470 mov r1, r3 6471 bl FlashProgPages 6472 ldrh r3, [r4, #354] 6473 adds r3, r3, #1 6474 strh r3, [r4, #354] @ movhi 6475 ldr r3, [r4, #3452] 6476 adds r2, r3, #1 6477 bne .L897 6478 adds r6, r6, #1 6479 ldr r1, [r4, #3456] 6480 ldr r0, .L903+12 6481 uxth r6, r6 6482 bl sftl_printk 6483 cmp r6, #3 6484 bls .L895 6485 ldr r1, [r4, #3456] 6486 mov r2, r6 6487 ldr r0, .L903+16 6488 bl sftl_printk 6489.L899: 6490 b .L899 6491.L894: 6492 ldrh r2, [r4, #3388] 6493 ldr r3, [r4, #3460] 6494 ldr r1, [r6], #4 6495 mul r0, r5, r2 6496 lsls r2, r2, #2 6497 adds r5, r5, #1 6498 add r0, r3, r0, lsl #2 6499 bl ftl_memcpy 6500 b .L893 6501.L897: 6502 adds r7, r7, #1 6503 cmp r7, #1 6504 ble .L895 6505 cmp r3, #256 6506 beq .L895 6507 movs r0, #0 6508 add sp, sp, #8 6509 @ sp needed 6510 pop {r4, r5, r6, r7, r8, r9, r10, pc} 6511.L904: 6512 .align 2 6513.L903: 6514 .word .LANCHOR0 6515 .word .LC99 6516 .word .LANCHOR0+3452 6517 .word .LC100 6518 .word .LC101 6519 .fnend 6520 .size FtlBbmTblFlush, .-FtlBbmTblFlush 6521 .align 1 6522 .global allocate_data_superblock 6523 .syntax unified 6524 .thumb 6525 .thumb_func 6526 .fpu softvfp 6527 .type allocate_data_superblock, %function 6528allocate_data_superblock: 6529 .fnstart 6530 @ args = 0, pretend = 0, frame = 8 6531 @ frame_needed = 0, uses_anonymous_args = 0 6532 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 6533 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 6534 .pad #12 6535 mov r5, r0 6536 ldr r4, .L937 6537 ldr r9, .L937+4 6538.L906: 6539 ldrh r2, [r4, #2528] 6540 ldrh r3, [r4, #224] 6541 add r3, r3, r2 6542 ldrh r2, [r4, #240] 6543 cmp r3, r2 6544 ble .L907 6545 ldr r0, .L937+8 6546 mov r1, r9 6547 movw r2, #2667 6548 bl sftl_printk 6549.L907: 6550 ldr r3, .L937+12 6551 cmp r5, r3 6552 bne .L932 6553 ldrh r3, [r4, #224] 6554 ldr r1, [r4, #3164] 6555 mul r2, r1, r3 6556 lsrs r1, r3, #1 6557 movw r3, #65535 6558 add r1, r1, r2, lsr #2 6559 uxth r1, r1 6560 cmp r1, r3 6561 it eq 6562 moveq r1, #0 6563.L908: 6564 ldr r0, .L937+16 6565 bl List_pop_index_node 6566 ldrh r3, [r4, #224] 6567 mov r6, r0 6568 uxth r8, r0 6569 cbnz r3, .L909 6570 ldr r0, .L937+8 6571 mov r1, r9 6572 movw r2, #2676 6573 bl sftl_printk 6574.L909: 6575 ldrh r3, [r4, #224] 6576 subs r3, r3, #1 6577 strh r3, [r4, #224] @ movhi 6578 ldrh r3, [r4, #240] 6579 cmp r3, r8 6580 bls .L906 6581 ldr r3, [r4, #72] 6582 uxth r6, r6 6583 ldrh r7, [r3, r6, lsl #1] 6584 cmp r7, #0 6585 bne .L906 6586 mov r0, r5 6587 strh r8, [r5] @ movhi 6588 bl make_superblock 6589 ldrb r3, [r5, #7] @ zero_extendqisi2 6590 cbnz r3, .L911 6591 ldr r3, [r4, #72] 6592 movw r2, #65535 6593 mov r0, r8 6594 strh r2, [r3, r6, lsl #1] @ movhi 6595 bl INSERT_DATA_LIST 6596 ldrh r2, [r4, #2528] 6597 ldrh r3, [r4, #224] 6598 add r3, r3, r2 6599 ldrh r2, [r4, #240] 6600 cmp r3, r2 6601 ble .L906 6602 ldr r0, .L937+8 6603 mov r1, r9 6604 movw r2, #2690 6605 bl sftl_printk 6606 b .L906 6607.L932: 6608 movs r1, #0 6609 b .L908 6610.L911: 6611 ldrh r2, [r4, #2528] 6612 ldrh r3, [r4, #224] 6613 add r3, r3, r2 6614 ldrh r2, [r4, #240] 6615 cmp r3, r2 6616 ble .L913 6617 ldr r0, .L937+8 6618 mov r1, r9 6619 movw r2, #2693 6620 bl sftl_printk 6621.L913: 6622 ldr r0, [r4, #3268] 6623 add r10, r5, #16 6624 ldrh r3, [r4, #232] 6625 mov ip, r10 6626 str r3, [sp] 6627 mov r2, r0 6628 movs r3, #0 6629 mov lr, r3 6630.L914: 6631 ldr fp, [sp] 6632 uxth r1, r3 6633 cmp fp, r1 6634 bhi .L916 6635 cbnz r7, .L917 6636 ldr r0, .L937+8 6637 mov r1, r9 6638 mov r2, #2704 6639 bl sftl_printk 6640.L917: 6641 ldrh r3, [r4, #172] 6642 cmp r3, r8 6643 bne .L918 6644 ldr r0, .L937+8 6645 mov r1, r9 6646 movw r2, #2706 6647 bl sftl_printk 6648.L918: 6649 ldrb r1, [r5, #8] @ zero_extendqisi2 6650 ldr r2, [r4, #2536] 6651 ldrh r3, [r2, r6, lsl #1] 6652 cmp r1, #0 6653 bne .L919 6654 cmp r3, #0 6655 beq .L933 6656 ldrh r1, [r4, #292] 6657 add r3, r3, r1 6658 uxth r3, r3 6659.L920: 6660 strh r3, [r2, r6, lsl #1] @ movhi 6661 ldr r3, [r4, #2596] 6662 adds r3, r3, #1 6663 str r3, [r4, #2596] 6664.L921: 6665 ldr r3, [r4, #2536] 6666 ldr r2, [r4, #2612] 6667 ldrh r0, [r4, #292] 6668 ldrh r3, [r3, r6, lsl #1] 6669 ldrh r1, [r4, #240] 6670 cmp r3, r2 6671 ldr r2, [r4, #2596] 6672 it hi 6673 strhi r3, [r4, #2612] 6674 ldr r3, [r4, #2600] 6675 mla r0, r2, r0, r3 6676 bl __aeabi_uidiv 6677 ldr r2, [r4, #3348] 6678 str r0, [r4, #2604] 6679 ldr r0, [r4, #3268] 6680 ldr r3, [r2, #16] 6681 ldr ip, .L937+20 6682 adds r3, r3, #1 6683 str r3, [r2, #16] 6684 adds r3, r0, #4 6685 movs r2, #0 6686.L923: 6687 uxth r1, r2 6688 adds r3, r3, #20 6689 cmp r7, r1 6690 bhi .L924 6691 ldrb r1, [r5, #8] @ zero_extendqisi2 6692 mov r2, r7 6693 bl FlashEraseBlocks 6694 mov fp, #0 6695 mov r2, fp 6696 movs r1, #20 6697.L925: 6698 uxth r3, fp 6699 cmp r7, r3 6700 bhi .L927 6701 cmp r2, #0 6702 ble .L928 6703 mov r0, r8 6704 bl update_multiplier_value 6705 bl FtlBbmTblFlush 6706.L928: 6707 ldrb r2, [r5, #7] @ zero_extendqisi2 6708 cmp r2, #0 6709 bne .L929 6710 ldr r3, [r4, #72] 6711 movw r2, #65535 6712 strh r2, [r3, r6, lsl #1] @ movhi 6713 b .L906 6714.L916: 6715 strd lr, lr, [r2, #8] 6716 movw fp, #65535 6717 ldrh r1, [ip], #2 6718 cmp r1, fp 6719 beq .L915 6720 mov fp, #20 6721 lsls r1, r1, #10 6722 mla fp, fp, r7, r0 6723 adds r7, r7, #1 6724 uxth r7, r7 6725 str r1, [fp, #4] 6726.L915: 6727 adds r3, r3, #1 6728 adds r2, r2, #20 6729 b .L914 6730.L933: 6731 movs r3, #2 6732 b .L920 6733.L919: 6734 adds r3, r3, #1 6735 strh r3, [r2, r6, lsl #1] @ movhi 6736 ldr r3, [r4, #2600] 6737 adds r3, r3, #1 6738 str r3, [r4, #2600] 6739 b .L921 6740.L924: 6741 ldr r1, [r3, #-20] 6742 adds r2, r2, #1 6743 and r1, r1, ip 6744 str r1, [r3, #-20] 6745 b .L923 6746.L927: 6747 mul r3, r1, fp 6748 ldr r0, [r4, #3268] 6749 add ip, r0, r3 6750 ldr r3, [r0, r3] 6751 adds r0, r3, #1 6752 bne .L926 6753 ldr r0, [ip, #4] 6754 adds r2, r2, #1 6755 str r3, [sp, #4] 6756 str r2, [sp] 6757 ubfx r0, r0, #10, #16 6758 bl FtlBbmMapBadBlock 6759 ldr r3, [sp, #4] 6760 strh r3, [r10, fp, lsl #1] @ movhi 6761 movs r1, #20 6762 ldr r2, [sp] 6763 ldrb r3, [r5, #7] @ zero_extendqisi2 6764 subs r3, r3, #1 6765 strb r3, [r5, #7] 6766.L926: 6767 add fp, fp, #1 6768 b .L925 6769.L929: 6770 ldrh r3, [r4, #302] 6771 strh r8, [r5] @ movhi 6772 smulbb r3, r3, r2 6773 movs r2, #0 6774 strh r2, [r5, #2] @ movhi 6775 strb r2, [r5, #6] 6776 ldr r2, [r4, #2588] 6777 uxth r3, r3 6778 str r2, [r5, #12] 6779 adds r2, r2, #1 6780 str r2, [r4, #2588] 6781 ldr r2, [r4, #72] 6782 ldrh r1, [r5] 6783 strh r3, [r5, #4] @ movhi 6784 strh r3, [r2, r1, lsl #1] @ movhi 6785 ldrh r3, [r5, #4] 6786 cbz r3, .L930 6787 ldrb r3, [r5, #7] @ zero_extendqisi2 6788 cbnz r3, .L931 6789.L930: 6790 ldr r1, .L937+4 6791 movw r2, #2759 6792 ldr r0, .L937+8 6793 bl sftl_printk 6794.L931: 6795 movs r0, #0 6796 add sp, sp, #12 6797 @ sp needed 6798 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 6799.L938: 6800 .align 2 6801.L937: 6802 .word .LANCHOR0 6803 .word .LANCHOR1+271 6804 .word .LC8 6805 .word .LANCHOR0+124 6806 .word .LANCHOR0+2532 6807 .word -1024 6808 .fnend 6809 .size allocate_data_superblock, .-allocate_data_superblock 6810 .section .rodata.str1.1 6811.LC102: 6812 .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" 6813 .text 6814 .align 1 6815 .global FtlGcFreeBadSuperBlk 6816 .syntax unified 6817 .thumb 6818 .thumb_func 6819 .fpu softvfp 6820 .type FtlGcFreeBadSuperBlk, %function 6821FtlGcFreeBadSuperBlk: 6822 .fnstart 6823 @ args = 0, pretend = 0, frame = 16 6824 @ frame_needed = 0, uses_anonymous_args = 0 6825 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 6826 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 6827 mov r9, r0 6828 ldr r4, .L947 6829 .pad #20 6830 sub sp, sp, #20 6831 ldrh r3, [r4, #3206] 6832 cmp r3, #0 6833 bne .L946 6834.L941: 6835 movs r0, #0 6836 add sp, sp, #20 6837 @ sp needed 6838 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 6839.L945: 6840 uxtah r3, r4, r8 6841 mov r1, r9 6842 ldrb r0, [r3, #260] @ zero_extendqisi2 6843 bl V2P_block 6844 mov r5, r0 6845 movs r3, #0 6846.L942: 6847 ldrh r1, [r4, #3206] 6848 uxth r2, r3 6849 cmp r1, r2 6850 bhi .L944 6851 add r8, r8, #1 6852.L940: 6853 ldrh r2, [r4, #232] 6854 uxth r3, r8 6855 cmp r2, r3 6856 bhi .L945 6857 bl FtlGcReFreshBadBlk 6858 b .L941 6859.L944: 6860 uxth r7, r3 6861 lsls r1, r7, #1 6862 str r1, [sp, #4] 6863 add r1, r4, r7, lsl #1 6864 ldrh r1, [r1, #3208] 6865 cmp r1, r5 6866 bne .L943 6867 mov r1, r5 6868 mov r0, fp 6869 strd r2, r3, [sp, #8] 6870 bl sftl_printk 6871 mov r0, r5 6872 bl FtlBbmMapBadBlock 6873 bl FtlBbmTblFlush 6874 ldrh r6, [r4, #3206] 6875 ldr r2, [sp, #8] 6876 adds r1, r7, #1 6877 subs r0, r6, r2 6878 add r1, r10, r1, lsl #1 6879 uxth r0, r0 6880 lsls r0, r0, #1 6881 cmp r2, r6 6882 ite ls 6883 movls r2, r0 6884 movhi r2, #0 6885 ldr r0, [sp, #4] 6886 subs r6, r6, #1 6887 add r0, r0, r10 6888 bl memmove 6889 ldr r3, [sp, #12] 6890 strh r6, [r4, #3206] @ movhi 6891.L943: 6892 adds r3, r3, #1 6893 b .L942 6894.L946: 6895 ldr fp, .L947+4 6896 addw r10, r4, #3208 6897 mov r8, #0 6898 b .L940 6899.L948: 6900 .align 2 6901.L947: 6902 .word .LANCHOR0 6903 .word .LC102 6904 .fnend 6905 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk 6906 .align 1 6907 .global update_vpc_list 6908 .syntax unified 6909 .thumb 6910 .thumb_func 6911 .fpu softvfp 6912 .type update_vpc_list, %function 6913update_vpc_list: 6914 .fnstart 6915 @ args = 0, pretend = 0, frame = 0 6916 @ frame_needed = 0, uses_anonymous_args = 0 6917 push {r3, r4, r5, lr} 6918 .save {r3, r4, r5, lr} 6919 mov r5, r0 6920 ldr r4, .L961 6921 ldr r3, [r4, #72] 6922 ldrh r3, [r3, r0, lsl #1] 6923 cmp r3, #0 6924 bne .L950 6925 ldrh r3, [r4, #222] 6926 cmp r3, r0 6927 itt eq 6928 movweq r3, #65535 6929 strheq r3, [r4, #222] @ movhi 6930 ldrh r3, [r4, #220] 6931 cmp r3, r0 6932 itt eq 6933 movweq r3, #65535 6934 strheq r3, [r4, #220] @ movhi 6935 ldrh r3, [r4, #172] 6936 cmp r3, r0 6937 bne .L953 6938 movw r3, #65535 6939 strh r3, [r4, #172] @ movhi 6940.L954: 6941 ldr r0, .L961+4 6942 mov r1, r5 6943 bl List_remove_node 6944 ldrh r3, [r4, #2528] 6945 cbnz r3, .L956 6946 ldr r1, .L961+8 6947 movw r2, #2835 6948 ldr r0, .L961+12 6949 bl sftl_printk 6950.L956: 6951 ldrh r3, [r4, #2528] 6952 mov r0, r5 6953 subs r3, r3, #1 6954 strh r3, [r4, #2528] @ movhi 6955 bl free_data_superblock 6956 mov r0, r5 6957 bl FtlGcFreeBadSuperBlk 6958 ldrh r2, [r4, #2528] 6959 ldrh r3, [r4, #224] 6960 add r3, r3, r2 6961 ldrh r2, [r4, #240] 6962 cmp r3, r2 6963 ble .L960 6964 ldr r1, .L961+8 6965 movw r2, #2838 6966 ldr r0, .L961+12 6967 bl sftl_printk 6968.L960: 6969 movs r0, #1 6970 b .L949 6971.L953: 6972 ldrh r3, [r4, #24] 6973 cmp r3, r0 6974 beq .L959 6975 ldrh r3, [r4, #76] 6976 cmp r3, r0 6977 beq .L959 6978 ldrh r3, [r4, #124] 6979 cmp r3, r0 6980 bne .L954 6981.L959: 6982 movs r0, #0 6983.L949: 6984 pop {r3, r4, r5, pc} 6985.L950: 6986 bl List_update_data_list 6987 b .L959 6988.L962: 6989 .align 2 6990.L961: 6991 .word .LANCHOR0 6992 .word .LANCHOR0+2520 6993 .word .LANCHOR1+296 6994 .word .LC8 6995 .fnend 6996 .size update_vpc_list, .-update_vpc_list 6997 .section .rodata.str1.1 6998.LC103: 6999 .ascii "decrement_vpc_count %x = %d\012\000" 7000 .text 7001 .align 1 7002 .global decrement_vpc_count 7003 .syntax unified 7004 .thumb 7005 .thumb_func 7006 .fpu softvfp 7007 .type decrement_vpc_count, %function 7008decrement_vpc_count: 7009 .fnstart 7010 @ args = 0, pretend = 0, frame = 0 7011 @ frame_needed = 0, uses_anonymous_args = 0 7012 push {r4, r5, r6, lr} 7013 .save {r4, r5, r6, lr} 7014 movw r3, #65535 7015 ldr r6, .L972 7016 mov r4, r0 7017 cmp r0, r3 7018 beq .L964 7019 ldr r3, [r6, #72] 7020 ldrh r2, [r3, r0, lsl #1] 7021 cbnz r2, .L965 7022 mov r1, r0 7023 ldr r0, .L972+4 7024 bl sftl_printk 7025 ldr r3, [r6, #72] 7026 ldrh r5, [r3, r4, lsl #1] 7027 cbz r5, .L966 7028.L970: 7029 movs r5, #0 7030.L963: 7031 mov r0, r5 7032 pop {r4, r5, r6, pc} 7033.L966: 7034 movw r2, #2853 7035.L971: 7036 ldr r1, .L972+8 7037 ldr r0, .L972+12 7038 bl sftl_printk 7039 b .L963 7040.L965: 7041 subs r2, r2, #1 7042 strh r2, [r3, r0, lsl #1] @ movhi 7043.L964: 7044 ldrh r0, [r6, #3438] 7045 movw r3, #65535 7046 cmp r0, r3 7047 bne .L968 7048 strh r4, [r6, #3438] @ movhi 7049 b .L970 7050.L968: 7051 cmp r0, r4 7052 beq .L970 7053 bl update_vpc_list 7054 ldr r2, [r6, #2516] 7055 ldr r3, [r6, #2520] 7056 subs r5, r0, #0 7057 strh r4, [r6, #3438] @ movhi 7058 sub r3, r3, r2 7059 ldr r2, .L972+16 7060 it ne 7061 movne r5, #1 7062 asrs r3, r3, #1 7063 muls r3, r2, r3 7064 ldr r2, [r6, #72] 7065 uxth r1, r3 7066 ldrh r2, [r2, r1, lsl #1] 7067 cmp r2, #0 7068 bne .L963 7069 cmp r1, r4 7070 beq .L963 7071 movw r2, #2869 7072 b .L971 7073.L973: 7074 .align 2 7075.L972: 7076 .word .LANCHOR0 7077 .word .LC103 7078 .word .LANCHOR1+312 7079 .word .LC8 7080 .word -1431655765 7081 .fnend 7082 .size decrement_vpc_count, .-decrement_vpc_count 7083 .align 1 7084 .global FtlSuperblockPowerLostFix 7085 .syntax unified 7086 .thumb 7087 .thumb_func 7088 .fpu softvfp 7089 .type FtlSuperblockPowerLostFix, %function 7090FtlSuperblockPowerLostFix: 7091 .fnstart 7092 @ args = 0, pretend = 0, frame = 24 7093 @ frame_needed = 0, uses_anonymous_args = 0 7094 push {r4, r5, r6, r7, r8, r9, lr} 7095 .save {r4, r5, r6, r7, r8, r9, lr} 7096 mvn r2, #2 7097 ldr r5, .L986 7098 .pad #28 7099 sub sp, sp, #28 7100 mov r9, #0 7101 mov r3, sp 7102 mov r4, r0 7103 bic r8, r3, #8160 7104 bic r8, r8, #31 7105 ldr r7, [r5, #3332] 7106 str r7, [sp, #12] 7107 ldr r3, [r8, #24] 7108 str r3, [sp, #20] 7109 mov r3, #-1 7110 str r3, [sp, #16] 7111 ldr r3, [r5, #3300] 7112 str r3, [sp, #8] 7113 mvn r3, #1 7114 strd r2, r3, [r7, #8] 7115 movw r2, #61589 7116 ldrh r3, [r0] 7117 strh r3, [r7, #2] @ movhi 7118 strh r9, [r7] @ movhi 7119 ldr r3, [r5, #3300] 7120 str r2, [r3] 7121 add r2, r2, #304087040 7122 add r2, r2, #1269760 7123 ldr r3, [r5, #3300] 7124 addw r2, r2, #1507 7125 str r2, [r3, #4] 7126 ldrh r6, [r0, #4] 7127 and r6, r6, #1 7128 adds r6, r6, #6 7129.L975: 7130 ldrh r3, [r4, #4] 7131 cbz r6, .L977 7132 cbnz r3, .L976 7133.L977: 7134 ldrh r1, [r4] 7135 ldr r2, [r5, #72] 7136 ldrh r0, [r4, #4] 7137 ldrh r3, [r2, r1, lsl #1] 7138 subs r3, r3, r0 7139 strh r3, [r2, r1, lsl #1] @ movhi 7140 ldr r2, [sp, #20] 7141 ldrh r3, [r5, #302] 7142 strh r3, [r4, #2] @ movhi 7143 movs r3, #0 7144 strb r3, [r4, #6] 7145 strh r3, [r4, #4] @ movhi 7146 ldr r3, [r8, #24] 7147 cmp r2, r3 7148 beq .L981 7149 bl __stack_chk_fail 7150.L976: 7151 mov r0, r4 7152 bl get_new_active_ppa 7153 str r0, [sp, #4] 7154 adds r0, r0, #1 7155 beq .L977 7156 ldr r3, [r5, #2592] 7157 movs r1, #1 7158 str r3, [r7, #4] 7159 mov r0, sp 7160 adds r2, r3, #1 7161 adds r3, r3, #2 7162 it eq 7163 moveq r2, r9 7164 movs r3, #0 7165 str r2, [r5, #2592] 7166 mov r2, r3 7167 bl FlashProgPages 7168 ldrh r0, [r4] 7169 subs r6, r6, #1 7170 bl decrement_vpc_count 7171 b .L975 7172.L981: 7173 add sp, sp, #28 7174 @ sp needed 7175 pop {r4, r5, r6, r7, r8, r9, pc} 7176.L987: 7177 .align 2 7178.L986: 7179 .word .LANCHOR0 7180 .fnend 7181 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix 7182 .align 1 7183 .global FtlMakeBbt 7184 .syntax unified 7185 .thumb 7186 .thumb_func 7187 .fpu softvfp 7188 .type FtlMakeBbt, %function 7189FtlMakeBbt: 7190 .fnstart 7191 @ args = 0, pretend = 0, frame = 0 7192 @ frame_needed = 0, uses_anonymous_args = 0 7193 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 7194 .save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} 7195 mov r8, #0 7196 ldr r7, .L1007 7197 bl FtlBbtMemInit 7198 sub r9, r7, #16 7199 sub r4, r7, #380 7200 add fp, r7, #3072 7201 bl FtlLoadFactoryBbt 7202.L989: 7203 ldrh r3, [r4, #254] 7204 cmp r3, r8 7205 bhi .L995 7206 movs r5, #0 7207.L996: 7208 ldrh r3, [r4, #314] 7209 uxth r0, r5 7210 cmp r3, r0 7211 bhi .L997 7212 ldrh r5, [r4, #364] 7213 movw r6, #65535 7214 subs r5, r5, #1 7215 uxth r5, r5 7216.L998: 7217 ldrh r3, [r4, #364] 7218 subs r3, r3, #48 7219 cmp r5, r3 7220 ble .L1002 7221 mov r0, r5 7222 bl FtlBbmIsBadBlock 7223 cmp r0, #1 7224 beq .L999 7225 mov r0, r5 7226 bl FlashTestBlk 7227 cmp r0, #0 7228 beq .L1000 7229 mov r0, r5 7230 bl FtlBbmMapBadBlock 7231.L999: 7232 subs r5, r5, #1 7233 uxth r5, r5 7234 b .L998 7235.L995: 7236 ldrh r5, [r9] 7237 movw r3, #65535 7238 ldr r0, [r4, #3300] 7239 ldr r10, [r4, #3332] 7240 cmp r5, r3 7241 str r0, [r4, #3460] 7242 str r10, [r4, #3464] 7243 beq .L990 7244 ldrh r3, [r4, #298] 7245 movs r2, #1 7246 mov r0, fp 7247 mov r1, r2 7248 mla r5, r8, r3, r5 7249 lsls r3, r5, #10 7250 str r3, [r4, #3456] 7251 bl FlashReadPages 7252 ldrh r2, [r4, #298] 7253 ldr r1, [r4, #3460] 7254 adds r2, r2, #7 7255 ldr r0, [r7] 7256 lsrs r2, r2, #3 7257 bl ftl_memcpy 7258.L991: 7259 uxth r0, r5 7260 add r8, r8, #1 7261 adds r7, r7, #4 7262 add r9, r9, #2 7263 bl FtlBbmMapBadBlock 7264 b .L989 7265.L990: 7266 mov r1, r8 7267 bl FlashGetBadBlockList 7268 ldr r1, [r7] 7269 ldr r0, [r4, #3460] 7270 bl FtlBbt2Bitmap 7271 ldrh r6, [r4, #298] 7272.L993: 7273 subs r6, r6, #1 7274 uxth r6, r6 7275.L992: 7276 ldrh r0, [r4, #298] 7277 smlabb r0, r0, r8, r6 7278 uxth r0, r0 7279 bl FtlBbmIsBadBlock 7280 cmp r0, #1 7281 beq .L993 7282 movs r2, #16 7283 movs r1, #0 7284 ldr r0, [r4, #3332] 7285 strh r6, [r9] @ movhi 7286 bl ftl_memset 7287 mov r2, #4096 7288 movs r1, #0 7289 ldr r0, [r4, #3300] 7290 bl ftl_memset 7291 movw r3, #61664 7292 strh r3, [r10] @ movhi 7293 movs r3, #0 7294 str r3, [r10, #4] 7295 ldrh r3, [r4, #298] 7296 ldrh r5, [r9] 7297 ldrh r2, [r4, #3388] 7298 strh r5, [r10, #2] @ movhi 7299 ldr r1, [r7] 7300 mla r5, r8, r3, r5 7301 lsls r2, r2, #2 7302 ldr r0, [r4, #3460] 7303 lsls r3, r5, #10 7304 str r3, [r4, #3456] 7305 bl ftl_memcpy 7306 movs r2, #1 7307 mov r0, fp 7308 mov r1, r2 7309 bl FlashEraseBlocks 7310 movs r3, #1 7311 mov r0, fp 7312 mov r2, r3 7313 mov r1, r3 7314 bl FlashProgPages 7315 ldr r3, [r4, #3452] 7316 uxth r0, r5 7317 adds r3, r3, #1 7318 bne .L991 7319 bl FtlBbmMapBadBlock 7320 b .L992 7321.L997: 7322 adds r5, r5, #1 7323 bl FtlBbmMapBadBlock 7324 b .L996 7325.L1000: 7326 ldrh r3, [r4, #352] 7327 cmp r3, r6 7328 bne .L1001 7329 strh r5, [r4, #352] @ movhi 7330 b .L999 7331.L1001: 7332 strh r5, [r4, #356] @ movhi 7333.L1002: 7334 ldr r0, [r4, #3268] 7335 movs r5, #0 7336 ldrh r3, [r4, #352] 7337 movs r1, #1 7338 str r5, [r4, #360] 7339 movs r2, #2 7340 strh r5, [r4, #354] @ movhi 7341 lsls r3, r3, #10 7342 str r3, [r0, #4] 7343 ldrh r3, [r4, #356] 7344 lsls r3, r3, #10 7345 str r3, [r0, #24] 7346 bl FlashEraseBlocks 7347 ldrh r0, [r4, #352] 7348 bl FtlBbmMapBadBlock 7349 ldrh r0, [r4, #356] 7350 bl FtlBbmMapBadBlock 7351 bl FtlBbmTblFlush 7352 ldr r3, [r4, #360] 7353 ldrh r2, [r4, #356] 7354 adds r3, r3, #1 7355 str r3, [r4, #360] 7356 ldrh r3, [r4, #352] 7357 strh r5, [r4, #354] @ movhi 7358 strh r2, [r4, #352] @ movhi 7359 strh r3, [r4, #356] @ movhi 7360 bl FtlBbmTblFlush 7361 mov r0, r5 7362 pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} 7363.L1008: 7364 .align 2 7365.L1007: 7366 .word .LANCHOR0+380 7367 .fnend 7368 .size FtlMakeBbt, .-FtlMakeBbt 7369 .align 1 7370 .global ftl_memcmp 7371 .syntax unified 7372 .thumb 7373 .thumb_func 7374 .fpu softvfp 7375 .type ftl_memcmp, %function 7376ftl_memcmp: 7377 .fnstart 7378 @ args = 0, pretend = 0, frame = 0 7379 @ frame_needed = 0, uses_anonymous_args = 0 7380 @ link register save eliminated. 7381 b memcmp 7382 .fnend 7383 .size ftl_memcmp, .-ftl_memcmp 7384 .align 1 7385 .global js_hash 7386 .syntax unified 7387 .thumb 7388 .thumb_func 7389 .fpu softvfp 7390 .type js_hash, %function 7391js_hash: 7392 .fnstart 7393 @ args = 0, pretend = 0, frame = 0 7394 @ frame_needed = 0, uses_anonymous_args = 0 7395 mov r3, r0 7396 add r1, r1, r0 7397 ldr r0, .L1013 7398 push {r4, lr} 7399 .save {r4, lr} 7400.L1011: 7401 cmp r3, r1 7402 bne .L1012 7403 pop {r4, pc} 7404.L1012: 7405 lsrs r2, r0, #2 7406 ldrb r4, [r3], #1 @ zero_extendqisi2 7407 add r2, r2, r0, lsl #5 7408 add r2, r2, r4 7409 eors r0, r0, r2 7410 b .L1011 7411.L1014: 7412 .align 2 7413.L1013: 7414 .word 1204201446 7415 .fnend 7416 .size js_hash, .-js_hash 7417 .section .rodata.str1.1 7418.LC104: 7419 .ascii "FtlMapWritePage error = %x \012\000" 7420.LC105: 7421 .ascii "FtlMapWritePage error = %x error count = %d\012\000" 7422 .text 7423 .align 1 7424 .global FtlMapWritePage 7425 .syntax unified 7426 .thumb 7427 .thumb_func 7428 .fpu softvfp 7429 .type FtlMapWritePage, %function 7430FtlMapWritePage: 7431 .fnstart 7432 @ args = 0, pretend = 0, frame = 8 7433 @ frame_needed = 0, uses_anonymous_args = 0 7434 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 7435 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 7436 .pad #12 7437 mov r4, r0 7438 ldr r5, .L1039 7439 ldr r10, .L1039+4 7440 mov r8, r1 7441 lsl fp, r1, #2 7442 str r2, [sp, #4] 7443 movs r6, #0 7444.L1016: 7445 ldr r3, [r5, #2572] 7446 adds r3, r3, #1 7447 str r3, [r5, #2572] 7448 ldrh r3, [r5, #304] 7449 ldrh r2, [r4, #2] 7450 subs r3, r3, #1 7451 cmp r2, r3 7452 bge .L1017 7453 ldrh r2, [r4] 7454 movw r3, #65535 7455 cmp r2, r3 7456 bne .L1018 7457.L1017: 7458 mov r0, r4 7459 bl Ftl_write_map_blk_to_last_page 7460.L1018: 7461 ldrh r2, [r4] 7462 ldr r3, [r4, #12] 7463 ldrh r3, [r3, r2, lsl #1] 7464 cbnz r3, .L1019 7465 ldr r0, .L1039+8 7466 mov r1, r10 7467 mov r2, #700 7468 bl sftl_printk 7469.L1019: 7470 ldrh r2, [r4] 7471 ldrh r3, [r4, #10] 7472 cmp r2, r3 7473 bcc .L1020 7474 ldr r0, .L1039+8 7475 mov r1, r10 7476 movw r2, #701 7477 bl sftl_printk 7478.L1020: 7479 ldrh r2, [r4] 7480 movs r1, #0 7481 ldr r3, [r4, #12] 7482 ldr r0, [r5, #3332] 7483 ldrh r9, [r3, r2, lsl #1] 7484 ldrh r2, [r4, #2] 7485 ldr r3, [sp, #4] 7486 str r3, [r5, #3460] 7487 orr r2, r2, r9, lsl #10 7488 str r2, [r5, #3456] 7489 movs r2, #16 7490 str r0, [r5, #3464] 7491 bl ftl_memset 7492 ldr r7, [r5, #3464] 7493 ldr r2, [r4, #28] 7494 str r2, [r7, #4] 7495 strh r8, [r7, #8] @ movhi 7496 ldrh r2, [r4, #4] 7497 strh r2, [r7] @ movhi 7498 strh r9, [r7, #2] @ movhi 7499 ldrh r1, [r5, #310] 7500 ldr r0, [r5, #3460] 7501 bl js_hash 7502 movs r3, #1 7503 str r0, [r7, #12] 7504 mov r2, r3 7505 mov r1, r3 7506 ldr r0, .L1039+12 7507 bl FlashProgPages 7508 ldrh r3, [r4, #2] 7509 adds r3, r3, #1 7510 strh r3, [r4, #2] @ movhi 7511 ldr r3, [r5, #3452] 7512 adds r3, r3, #1 7513 bne .L1021 7514 ldr r1, [r5, #3456] 7515 adds r6, r6, #1 7516 ldr r0, .L1039+16 7517 bl sftl_printk 7518 ldrh r3, [r4, #2] 7519 uxth r6, r6 7520 cmp r3, #2 7521 ittt ls 7522 ldrhls r3, [r5, #304] 7523 addls r3, r3, #-1 7524 strhls r3, [r4, #2] @ movhi 7525 cmp r6, #3 7526 bls .L1023 7527 ldr r1, [r5, #3456] 7528 mov r2, r6 7529 ldr r0, .L1039+20 7530 bl sftl_printk 7531.L1024: 7532 b .L1024 7533.L1023: 7534 ldr r3, [r4, #32] 7535 cmp r3, #0 7536 beq .L1016 7537.L1026: 7538 b .L1026 7539.L1021: 7540 ldr r3, [r4, #24] 7541 ldr r2, [r5, #3456] 7542 str r2, [r3, fp] 7543 ldrh r3, [r4, #2] 7544 cmp r3, #1 7545 beq .L1027 7546 ldr r3, [r5, #3452] 7547 cmp r3, #256 7548 beq .L1027 7549 ldr r2, [r4, #36] 7550 cbz r2, .L1028 7551.L1027: 7552 movs r3, #0 7553 str r3, [r4, #36] 7554 b .L1016 7555.L1028: 7556 adds r3, r3, #1 7557 bne .L1029 7558 ldr r1, .L1039+4 7559 movw r2, #745 7560 ldr r0, .L1039+8 7561 bl sftl_printk 7562.L1029: 7563 movs r0, #0 7564 add sp, sp, #12 7565 @ sp needed 7566 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 7567.L1040: 7568 .align 2 7569.L1039: 7570 .word .LANCHOR0 7571 .word .LANCHOR1+332 7572 .word .LC8 7573 .word .LANCHOR0+3452 7574 .word .LC104 7575 .word .LC105 7576 .fnend 7577 .size FtlMapWritePage, .-FtlMapWritePage 7578 .section .rodata.str1.1 7579.LC106: 7580 .ascii "region_id = %x phyAddr = %x\012\000" 7581.LC107: 7582 .ascii "map_ppn:\000" 7583.LC108: 7584 .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" 7585 .text 7586 .align 1 7587 .global load_l2p_region 7588 .syntax unified 7589 .thumb 7590 .thumb_func 7591 .fpu softvfp 7592 .type load_l2p_region, %function 7593load_l2p_region: 7594 .fnstart 7595 @ args = 0, pretend = 0, frame = 0 7596 @ frame_needed = 0, uses_anonymous_args = 0 7597 push {r4, r5, r6, r7, r8, lr} 7598 .save {r4, r5, r6, r7, r8, lr} 7599 mov r5, r0 7600 ldr r4, .L1050 7601 mov r6, r1 7602 ldrh r3, [r4, #336] 7603 cmp r3, r0 7604 bcs .L1042 7605 ldr r1, .L1050+4 7606 movw r2, #485 7607 ldr r0, .L1050+8 7608 bl sftl_printk 7609.L1042: 7610 ldr r3, [r4, #3376] 7611 movs r1, #12 7612 muls r6, r1, r6 7613 ldr r7, [r3, r5, lsl #2] 7614 ldr r3, [r4, #2540] 7615 add r3, r3, r6 7616 ldr r0, [r3, #8] 7617 cbnz r7, .L1043 7618 movs r1, #255 7619 ldrh r2, [r4, #310] 7620 bl ftl_memset 7621 ldr r3, [r4, #2540] 7622 strh r5, [r3, r6] @ movhi 7623 ldr r1, [r4, #2540] 7624 add r6, r6, r1 7625 str r7, [r6, #4] 7626.L1044: 7627 movs r0, #0 7628 pop {r4, r5, r6, r7, r8, pc} 7629.L1043: 7630 ldr r3, [r4, #3332] 7631 movs r2, #1 7632 str r0, [r4, #3460] 7633 mov r1, r2 7634 ldr r0, .L1050+12 7635 str r3, [r4, #3464] 7636 str r7, [r4, #3456] 7637 bl FlashReadPages 7638 ldr r8, [r4, #3464] 7639 ldrh r3, [r8, #8] 7640 cmp r3, r5 7641 beq .L1045 7642 ldr r0, .L1050+16 7643 mov r2, r7 7644 mov r1, r5 7645 bl sftl_printk 7646 movs r3, #4 7647 ldr r1, [r4, #3464] 7648 mov r2, r3 7649 ldr r0, .L1050+20 7650 bl rknand_print_hex 7651 ldrh r3, [r4, #336] 7652 ldr r1, [r4, #3376] 7653 movs r2, #4 7654 ldr r0, .L1050+24 7655 bl rknand_print_hex 7656.L1046: 7657 ldrh r3, [r8, #8] 7658 cmp r3, r5 7659 beq .L1048 7660 ldr r1, .L1050+4 7661 mov r2, #508 7662 ldr r0, .L1050+8 7663 bl sftl_printk 7664.L1048: 7665 ldr r3, [r4, #2540] 7666 movs r1, #0 7667 adds r2, r3, r6 7668 str r1, [r2, #4] 7669 strh r5, [r3, r6] @ movhi 7670 b .L1044 7671.L1045: 7672 ldr r3, [r4, #3452] 7673 cmp r3, #256 7674 bne .L1048 7675 mov r2, r7 7676 mov r1, r5 7677 ldr r0, .L1050+28 7678 bl sftl_printk 7679 ldr r3, [r4, #2540] 7680 mov r1, r5 7681 ldr r0, .L1050+32 7682 add r3, r3, r6 7683 ldr r2, [r3, #8] 7684 bl FtlMapWritePage 7685 b .L1046 7686.L1051: 7687 .align 2 7688.L1050: 7689 .word .LANCHOR0 7690 .word .LANCHOR1+348 7691 .word .LC8 7692 .word .LANCHOR0+3452 7693 .word .LC106 7694 .word .LC94 7695 .word .LC107 7696 .word .LC108 7697 .word .LANCHOR0+3392 7698 .fnend 7699 .size load_l2p_region, .-load_l2p_region 7700 .align 1 7701 .global ftl_map_blk_gc 7702 .syntax unified 7703 .thumb 7704 .thumb_func 7705 .fpu softvfp 7706 .type ftl_map_blk_gc, %function 7707ftl_map_blk_gc: 7708 .fnstart 7709 @ args = 0, pretend = 0, frame = 8 7710 @ frame_needed = 0, uses_anonymous_args = 0 7711 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 7712 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 7713 .pad #12 7714 mov r4, r0 7715 ldr r5, .L1068 7716 ldr r7, [r0, #12] 7717 ldr r10, [r0, #24] 7718 bl ftl_free_no_use_map_blk 7719 ldrh r3, [r4, #10] 7720 ldrh r2, [r4, #8] 7721 subs r3, r3, #5 7722 cmp r2, r3 7723 blt .L1053 7724 uxth r0, r0 7725 ldrh r9, [r7, r0, lsl #1] 7726 cmp r9, #0 7727 beq .L1053 7728 ldr r6, [r4, #32] 7729 cbnz r6, .L1053 7730 movs r3, #1 7731 str r3, [r4, #32] 7732 strh r6, [r7, r0, lsl #1] @ movhi 7733 ldrh r3, [r4, #8] 7734 ldrh r2, [r4, #2] 7735 subs r3, r3, #1 7736 strh r3, [r4, #8] @ movhi 7737 ldrh r3, [r5, #304] 7738 cmp r2, r3 7739 bcc .L1055 7740 mov r0, r4 7741 bl ftl_map_blk_alloc_new_blk 7742.L1055: 7743 ldrh r2, [r4, #6] 7744 uxth fp, r6 7745 cmp r2, fp 7746 bhi .L1062 7747 mov r0, r9 7748 movs r1, #1 7749 bl FtlFreeSysBlkQueueIn 7750 movs r3, #0 7751 str r3, [r4, #32] 7752.L1053: 7753 ldrh r2, [r4, #2] 7754 ldrh r3, [r5, #304] 7755 cmp r2, r3 7756 bcc .L1063 7757 mov r0, r4 7758 bl ftl_map_blk_alloc_new_blk 7759.L1063: 7760 movs r0, #0 7761 add sp, sp, #12 7762 @ sp needed 7763 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 7764.L1062: 7765 uxth r7, r6 7766 add r3, r10, r7, lsl #2 7767 str r3, [sp, #4] 7768 ldr r2, [r10, r7, lsl #2] 7769 cmp r9, r2, lsr #10 7770 bne .L1056 7771 ldr r2, [r5, #3304] 7772 ldr r8, [r5, #3332] 7773 str r2, [r5, #3460] 7774 str r8, [r5, #3464] 7775 ldr r2, [r10, r7, lsl #2] 7776 str r2, [r5, #3456] 7777 movs r2, #1 7778 ldr r0, .L1068+4 7779 mov r1, r2 7780 bl FlashReadPages 7781 ldrh r2, [r8, #8] 7782 cmp r2, fp 7783 beq .L1057 7784 ldr r1, .L1068+8 7785 movw r2, #611 7786 ldr r0, .L1068+12 7787 bl sftl_printk 7788.L1057: 7789 ldr r2, [r5, #3452] 7790 adds r2, r2, #1 7791 bne .L1058 7792.L1060: 7793 ldr r2, [sp, #4] 7794 movs r3, #0 7795 str r3, [r2] 7796.L1059: 7797 b .L1059 7798.L1058: 7799 ldrh r2, [r8, #8] 7800 cmp r2, fp 7801 bne .L1060 7802 ldrh r2, [r8] 7803 ldrh r3, [r4, #4] 7804 cmp r2, r3 7805 bne .L1060 7806 ldr r2, [r5, #3460] 7807 mov r1, r7 7808 mov r0, r4 7809 bl FtlMapWritePage 7810.L1056: 7811 adds r6, r6, #1 7812 b .L1055 7813.L1069: 7814 .align 2 7815.L1068: 7816 .word .LANCHOR0 7817 .word .LANCHOR0+3452 7818 .word .LANCHOR1+364 7819 .word .LC8 7820 .fnend 7821 .size ftl_map_blk_gc, .-ftl_map_blk_gc 7822 .align 1 7823 .global Ftl_write_map_blk_to_last_page 7824 .syntax unified 7825 .thumb 7826 .thumb_func 7827 .fpu softvfp 7828 .type Ftl_write_map_blk_to_last_page, %function 7829Ftl_write_map_blk_to_last_page: 7830 .fnstart 7831 @ args = 0, pretend = 0, frame = 0 7832 @ frame_needed = 0, uses_anonymous_args = 0 7833 push {r4, r5, r6, r7, r8, lr} 7834 .save {r4, r5, r6, r7, r8, lr} 7835 movw r2, #65535 7836 mov r4, r0 7837 ldrh r3, [r0] 7838 ldr r5, [r0, #12] 7839 cmp r3, r2 7840 bne .L1071 7841 ldrh r3, [r0, #8] 7842 cbz r3, .L1072 7843 ldr r1, .L1080 7844 movw r2, #641 7845 ldr r0, .L1080+4 7846 bl sftl_printk 7847.L1072: 7848 ldrh r3, [r4, #8] 7849 adds r3, r3, #1 7850 strh r3, [r4, #8] @ movhi 7851 bl FtlFreeSysBlkQueueOut 7852 strh r0, [r5] @ movhi 7853 movs r3, #0 7854 str r3, [r4] 7855 ldr r3, [r4, #28] 7856 adds r3, r3, #1 7857 str r3, [r4, #28] 7858.L1073: 7859 movs r0, #0 7860 pop {r4, r5, r6, r7, r8, pc} 7861.L1071: 7862 ldrh r7, [r5, r3, lsl #1] 7863 movs r1, #255 7864 ldr r5, .L1080+8 7865 ldrh r3, [r0, #2] 7866 ldr r8, [r0, #24] 7867 ldr r6, [r5, #3332] 7868 orr r3, r3, r7, lsl #10 7869 str r3, [r5, #3456] 7870 ldr r3, [r5, #3300] 7871 str r3, [r5, #3460] 7872 ldr r3, [r0, #28] 7873 str r6, [r5, #3464] 7874 str r3, [r6, #4] 7875 movw r3, #64245 7876 strh r3, [r6, #8] @ movhi 7877 ldrh r3, [r0, #4] 7878 strh r3, [r6] @ movhi 7879 strh r7, [r6, #2] @ movhi 7880 ldrh r2, [r5, #304] 7881 ldr r0, [r5, #3300] 7882 lsls r2, r2, #3 7883 bl ftl_memset 7884 movs r2, #0 7885 mov r3, r2 7886.L1074: 7887 ldrh r0, [r4, #6] 7888 uxth r1, r2 7889 cmp r0, r1 7890 bhi .L1076 7891 ldrh r1, [r5, #310] 7892 ldr r0, [r5, #3460] 7893 bl js_hash 7894 movs r2, #1 7895 str r0, [r6, #12] 7896 mov r1, r2 7897 movs r3, #0 7898 ldr r0, .L1080+12 7899 bl FlashProgPages 7900 ldrh r3, [r4, #2] 7901 mov r0, r4 7902 adds r3, r3, #1 7903 strh r3, [r4, #2] @ movhi 7904 bl ftl_map_blk_gc 7905 b .L1073 7906.L1076: 7907 uxth r0, r2 7908 ldr r1, [r8, r0, lsl #2] 7909 cmp r7, r1, lsr #10 7910 bne .L1075 7911 adds r3, r3, #1 7912 ldr r1, [r5, #3300] 7913 uxth r3, r3 7914 str r0, [r1, r3, lsl #3] 7915 ldr r1, [r5, #3300] 7916 ldr r0, [r8, r0, lsl #2] 7917 add r1, r1, r3, lsl #3 7918 str r0, [r1, #4] 7919.L1075: 7920 adds r2, r2, #1 7921 b .L1074 7922.L1081: 7923 .align 2 7924.L1080: 7925 .word .LANCHOR1+379 7926 .word .LC8 7927 .word .LANCHOR0 7928 .word .LANCHOR0+3452 7929 .fnend 7930 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page 7931 .align 1 7932 .global flush_l2p_region 7933 .syntax unified 7934 .thumb 7935 .thumb_func 7936 .fpu softvfp 7937 .type flush_l2p_region, %function 7938flush_l2p_region: 7939 .fnstart 7940 @ args = 0, pretend = 0, frame = 0 7941 @ frame_needed = 0, uses_anonymous_args = 0 7942 push {r3, r4, r5, lr} 7943 .save {r3, r4, r5, lr} 7944 movs r4, #12 7945 ldr r5, .L1083 7946 muls r4, r0, r4 7947 add r0, r5, #3392 7948 ldr r3, [r5, #2540] 7949 adds r2, r3, r4 7950 ldrh r1, [r3, r4] 7951 ldr r2, [r2, #8] 7952 bl FtlMapWritePage 7953 ldr r0, [r5, #2540] 7954 add r4, r4, r0 7955 movs r0, #0 7956 ldr r3, [r4, #4] 7957 bic r3, r3, #-2147483648 7958 str r3, [r4, #4] 7959 pop {r3, r4, r5, pc} 7960.L1084: 7961 .align 2 7962.L1083: 7963 .word .LANCHOR0 7964 .fnend 7965 .size flush_l2p_region, .-flush_l2p_region 7966 .align 1 7967 .global log2phys 7968 .syntax unified 7969 .thumb 7970 .thumb_func 7971 .fpu softvfp 7972 .type log2phys, %function 7973log2phys: 7974 .fnstart 7975 @ args = 0, pretend = 0, frame = 0 7976 @ frame_needed = 0, uses_anonymous_args = 0 7977 push {r4, r5, r6, r7, r8, r9, r10, lr} 7978 .save {r4, r5, r6, r7, r8, r9, r10, lr} 7979 mov r5, r0 7980 ldr r9, .L1097 7981 mov r6, r1 7982 mov r7, r2 7983 ldrh r4, [r9, #308] 7984 adds r3, r4, #7 7985 movs r4, #1 7986 lsls r4, r4, r3 7987 subs r4, r4, #1 7988 lsr r8, r0, r3 7989 ands r4, r4, r0 7990 ldr r3, [r9, #2552] 7991 uxth r8, r8 7992 uxth r4, r4 7993 cmp r3, r0 7994 bhi .L1086 7995 ldr r1, .L1097+4 7996 mov r2, #820 7997 ldr r0, .L1097+8 7998 bl sftl_printk 7999 ldr r3, [r9, #2552] 8000 cmp r3, r5 8001 bhi .L1086 8002 mov r0, #-1 8003 cbnz r7, .L1085 8004 str r0, [r6] 8005.L1085: 8006 pop {r4, r5, r6, r7, r8, r9, r10, pc} 8007.L1092: 8008 adds r3, r3, #1 8009 mul r0, r10, r3 8010 ldrh r0, [r2, r0] 8011 cmp r0, r8 8012 bne .L1088 8013.L1089: 8014 movs r1, #12 8015 ldr r3, [r9, #2540] 8016 muls r5, r1, r5 8017 add r3, r3, r5 8018 ldr r3, [r3, #8] 8019 cbnz r7, .L1090 8020 ldr r3, [r3, r4, lsl #2] 8021 str r3, [r6] 8022.L1091: 8023 ldr r1, [r9, #2540] 8024 add r5, r5, r1 8025 ldr r3, [r5, #4] 8026 adds r2, r3, #1 8027 beq .L1095 8028 adds r3, r3, #1 8029 str r3, [r5, #4] 8030.L1095: 8031 movs r0, #0 8032 b .L1085 8033.L1090: 8034 ldr r2, [r6] 8035 str r2, [r3, r4, lsl #2] 8036 strh r8, [r9, #2544] @ movhi 8037 ldr r3, [r9, #2540] 8038 add r3, r3, r5 8039 ldr r2, [r3, #4] 8040 orr r2, r2, #-2147483648 8041 str r2, [r3, #4] 8042 b .L1091 8043.L1086: 8044 ldr r2, [r9, #2540] 8045 movs r3, #0 8046 ldrh r1, [r9, #338] 8047 mov r10, #12 8048 subs r2, r2, #12 8049.L1088: 8050 uxth r5, r3 8051 cmp r1, r5 8052 bhi .L1092 8053 bl select_l2p_ram_region 8054 mul r10, r10, r0 8055 ldr r3, [r9, #2540] 8056 mov r5, r0 8057 add r2, r3, r10 8058 ldrh r1, [r3, r10] 8059 movw r3, #65535 8060 cmp r1, r3 8061 beq .L1093 8062 ldr r3, [r2, #4] 8063 cmp r3, #0 8064 bge .L1093 8065 bl flush_l2p_region 8066.L1093: 8067 mov r1, r5 8068 mov r0, r8 8069 bl load_l2p_region 8070 b .L1089 8071.L1098: 8072 .align 2 8073.L1097: 8074 .word .LANCHOR0 8075 .word .LANCHOR1+410 8076 .word .LC8 8077 .fnend 8078 .size log2phys, .-log2phys 8079 .align 1 8080 .global FtlWriteDump_data 8081 .syntax unified 8082 .thumb 8083 .thumb_func 8084 .fpu softvfp 8085 .type FtlWriteDump_data, %function 8086FtlWriteDump_data: 8087 .fnstart 8088 @ args = 0, pretend = 0, frame = 32 8089 @ frame_needed = 0, uses_anonymous_args = 0 8090 push {r4, r5, r6, r7, r8, r9, r10, lr} 8091 .save {r4, r5, r6, r7, r8, r9, r10, lr} 8092 ldr r4, .L1118 8093 .pad #32 8094 sub sp, sp, #32 8095 mov r3, sp 8096 bic r8, r3, #8160 8097 bic r8, r8, #31 8098 ldrh r2, [r4, #28] 8099 ldr r3, [r8, #24] 8100 str r3, [sp, #28] 8101 cmp r2, #0 8102 beq .L1100 8103 ldrb r3, [r4, #32] @ zero_extendqisi2 8104 cmp r3, #0 8105 bne .L1100 8106 ldrb r3, [r4, #31] @ zero_extendqisi2 8107 ldrh r1, [r4, #302] 8108 muls r3, r1, r3 8109 cmp r2, r3 8110 beq .L1100 8111 ldrb r6, [r4, #34] @ zero_extendqisi2 8112 cbnz r6, .L1099 8113 ldr r7, [r4, #2552] 8114 mov r2, r6 8115 add r1, sp, #4 8116 ldrh r9, [r4, #232] 8117 subs r7, r7, #1 8118 mov r0, r7 8119 bl log2phys 8120 ldr r5, [r4, #3332] 8121 ldr r3, [sp, #4] 8122 ldr r0, [r4, #3300] 8123 str r3, [sp, #12] 8124 adds r3, r3, #1 8125 str r7, [sp, #24] 8126 str r0, [sp, #16] 8127 str r5, [sp, #20] 8128 str r6, [r5, #4] 8129 beq .L1102 8130 mov r2, r6 8131 add r0, sp, #8 8132 movs r1, #1 8133 bl FlashReadPages 8134.L1103: 8135 lsl r6, r9, #2 8136 ldr r9, .L1118+4 8137 movw r3, #61589 8138 mov r10, #0 8139 strh r3, [r5] @ movhi 8140.L1104: 8141 cbnz r6, .L1108 8142.L1105: 8143 movs r3, #1 8144.L1117: 8145 strb r3, [r4, #34] 8146.L1099: 8147 ldr r2, [sp, #28] 8148 ldr r3, [r8, #24] 8149 cmp r2, r3 8150 beq .L1110 8151 bl __stack_chk_fail 8152.L1102: 8153 ldrh r2, [r4, #310] 8154 movs r1, #255 8155 bl ftl_memset 8156 b .L1103 8157.L1108: 8158 ldrh r3, [r4, #28] 8159 cmp r3, #0 8160 beq .L1105 8161 ldr r3, [sp, #12] 8162 mov r0, r9 8163 str r3, [r5, #12] 8164 subs r6, r6, #1 8165 ldrh r3, [r4, #24] 8166 strh r3, [r5, #2] @ movhi 8167 str r7, [r5, #8] 8168 bl get_new_active_ppa 8169 ldr r3, [r4, #2592] 8170 str r0, [sp, #12] 8171 movs r1, #1 8172 adds r2, r3, #1 8173 str r3, [r5, #4] 8174 adds r3, r3, #2 8175 add r0, sp, #8 8176 it eq 8177 moveq r2, r10 8178 movs r3, #0 8179 str r2, [r4, #2592] 8180 mov r2, r3 8181 bl FlashProgPages 8182 ldrh r0, [r4, #24] 8183 bl decrement_vpc_count 8184 b .L1104 8185.L1100: 8186 movs r3, #0 8187 b .L1117 8188.L1110: 8189 add sp, sp, #32 8190 @ sp needed 8191 pop {r4, r5, r6, r7, r8, r9, r10, pc} 8192.L1119: 8193 .align 2 8194.L1118: 8195 .word .LANCHOR0 8196 .word .LANCHOR0+24 8197 .fnend 8198 .size FtlWriteDump_data, .-FtlWriteDump_data 8199 .align 1 8200 .global FtlReUsePrevPpa 8201 .syntax unified 8202 .thumb 8203 .thumb_func 8204 .fpu softvfp 8205 .type FtlReUsePrevPpa, %function 8206FtlReUsePrevPpa: 8207 .fnstart 8208 @ args = 0, pretend = 0, frame = 8 8209 @ frame_needed = 0, uses_anonymous_args = 0 8210 push {r0, r1, r2, r4, r5, r6, r7, lr} 8211 .save {r4, r5, r6, r7, lr} 8212 .pad #12 8213 mov r5, r0 8214 ldr r6, .L1130 8215 ubfx r0, r1, #10, #16 8216 str r1, [sp, #4] 8217 bl P2V_block_in_plane 8218 mov r4, r0 8219 ldr r3, [r6, #72] 8220 ldrh r2, [r3, r0, lsl #1] 8221 cmp r2, #0 8222 bne .L1121 8223 ldr r3, [r6, #2532] 8224 cbz r3, .L1122 8225 ldr r1, [r6, #2516] 8226 mov ip, #6 8227 ldr r0, .L1130+4 8228 movw lr, #65535 8229 subs r3, r3, r1 8230 ldrh r7, [r6, #224] 8231 asrs r3, r3, #1 8232 muls r3, r0, r3 8233 uxth r3, r3 8234.L1123: 8235 uxth r0, r2 8236 cmp r7, r0 8237 bls .L1122 8238 cmp r3, r4 8239 bne .L1124 8240 ldr r0, .L1130+8 8241 mov r1, r4 8242 bl List_remove_node 8243 ldrh r3, [r6, #224] 8244 cbnz r3, .L1125 8245 ldr r1, .L1130+12 8246 movw r2, #1742 8247 ldr r0, .L1130+16 8248 bl sftl_printk 8249.L1125: 8250 ldrh r3, [r6, #224] 8251 mov r0, r4 8252 subs r3, r3, #1 8253 strh r3, [r6, #224] @ movhi 8254 bl INSERT_DATA_LIST 8255 ldr r2, [r6, #72] 8256 ldrh r3, [r2, r4, lsl #1] 8257 adds r3, r3, #1 8258 strh r3, [r2, r4, lsl #1] @ movhi 8259.L1122: 8260 add r1, sp, #4 8261 mov r0, r5 8262 movs r2, #1 8263 bl log2phys 8264 add sp, sp, #12 8265 @ sp needed 8266 pop {r4, r5, r6, r7, pc} 8267.L1124: 8268 mul r3, ip, r3 8269 adds r2, r2, #1 8270 ldrh r3, [r1, r3] 8271 cmp r3, lr 8272 bne .L1123 8273 b .L1122 8274.L1121: 8275 adds r2, r2, #1 8276 strh r2, [r3, r0, lsl #1] @ movhi 8277 b .L1122 8278.L1131: 8279 .align 2 8280.L1130: 8281 .word .LANCHOR0 8282 .word -1431655765 8283 .word .LANCHOR0+2532 8284 .word .LANCHOR1+419 8285 .word .LC8 8286 .fnend 8287 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa 8288 .section .rodata.str1.1 8289.LC109: 8290 .ascii "data prev_ppa = %x error...................\012\000" 8291.LC110: 8292 .ascii "spuer block %x vpn is 0\012 \000" 8293 .text 8294 .align 1 8295 .global FtlRecoverySuperblock 8296 .syntax unified 8297 .thumb 8298 .thumb_func 8299 .fpu softvfp 8300 .type FtlRecoverySuperblock, %function 8301FtlRecoverySuperblock: 8302 .fnstart 8303 @ args = 0, pretend = 0, frame = 48 8304 @ frame_needed = 0, uses_anonymous_args = 0 8305 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 8306 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 8307 movw r1, #65535 8308 mov r10, r0 8309 .pad #52 8310 sub sp, sp, #52 8311 mov r3, sp 8312 bic r3, r3, #8160 8313 bic r3, r3, #31 8314 ldr r3, [r3, #24] 8315 str r3, [sp, #44] 8316 ldrh r3, [r0] 8317 cmp r3, r1 8318 beq .L1134 8319 ldr r5, .L1264 8320 ldrh r3, [r0, #2] 8321 str r3, [sp] 8322 ldrb r3, [r0, #6] @ zero_extendqisi2 8323 ldrh r2, [r5, #302] 8324 str r3, [sp, #24] 8325 ldr r3, [sp] 8326 cmp r2, r3 8327 mov r3, #0 8328 bne .L1135 8329 strh r3, [r0, #4] @ movhi 8330 strh r2, [r0, #2] @ movhi 8331.L1262: 8332 strb r3, [r10, #6] 8333.L1134: 8334 mov r3, sp 8335 ldr r2, [sp, #44] 8336 bic r3, r3, #8160 8337 bic r3, r3, #31 8338 ldr r3, [r3, #24] 8339 cmp r2, r3 8340 beq .L1203 8341 bl __stack_chk_fail 8342.L1135: 8343 ldrh r0, [r0, #16] 8344.L1136: 8345 uxth r6, r3 8346 cmp r0, r1 8347 add r3, r3, #1 8348 beq .L1137 8349 movs r1, #1 8350 bl FtlGetLastWrittenPage 8351 mov r4, r0 8352 adds r0, r4, #1 8353 beq .L1138 8354 ldr r3, [r5, #3176] 8355 movs r2, #0 8356 ldrh fp, [r5, #232] 8357 movw r9, #65535 8358 mov lr, r3 8359 add r3, r10, #16 8360 ldr r0, [r5, #3288] 8361 mov ip, r3 8362 ldrh r6, [r5, #310] 8363 ldr r8, [r5, #3180] 8364 ldrh r7, [r5, #312] 8365 mov r5, r2 8366 str r3, [sp, #20] 8367.L1139: 8368 uxth r3, r2 8369 cmp fp, r3 8370 bhi .L1145 8371 ldr r6, .L1264 8372 movs r2, #0 8373 mov r1, r5 8374 movs r7, #0 8375 bl FlashReadPages 8376 movw r9, #65535 8377 uxth r2, r4 8378 str r2, [sp, #8] 8379 ldr r3, [r6, #2592] 8380 add fp, r3, #-1 8381 ldr r3, [r6, #3288] 8382 mov r8, r3 8383.L1146: 8384 uxth r2, r7 8385 cmp r5, r2 8386 bhi .L1151 8387 bne .L1149 8388 adds r2, r4, #1 8389 uxth r2, r2 8390 str r2, [sp, #8] 8391.L1256: 8392 ldr r0, [r3, #4] 8393 ubfx r0, r0, #10, #16 8394 bl P2V_plane 8395 ldrh r3, [r6, #302] 8396 ldr r2, [sp, #8] 8397 str r0, [sp, #4] 8398 cmp r3, r2 8399 bne .L1153 8400 movs r3, #0 8401 strh r2, [r10, #2] @ movhi 8402 strb r3, [r10, #6] 8403 strh r3, [r10, #4] @ movhi 8404.L1153: 8405 ldr r3, [sp, #8] 8406 ldr r2, [sp] 8407 cmp r3, r2 8408 bne .L1154 8409 ldr r3, [sp, #4] 8410 ldr r2, [sp, #24] 8411 cmp r3, r2 8412 bne .L1154 8413 ldr r1, [sp, #8] 8414 mov r2, r3 8415.L1263: 8416 mov r0, r10 8417 bl ftl_sb_update_avl_pages 8418 b .L1134 8419.L1137: 8420 uxth r2, r3 8421 adds r2, r2, #8 8422 ldrh r0, [r10, r2, lsl #1] 8423 b .L1136 8424.L1138: 8425 ldr r3, [sp] 8426 cbz r3, .L1140 8427 ldr r1, .L1264+4 8428 movw r2, #1809 8429 ldr r0, .L1264+8 8430 bl sftl_printk 8431.L1140: 8432 ldr r3, [sp, #24] 8433 cbz r3, .L1141 8434 cmp r3, r6 8435 beq .L1141 8436 ldr r1, .L1264+4 8437 movw r2, #1810 8438 ldr r0, .L1264+8 8439 bl sftl_printk 8440.L1141: 8441 movs r3, #0 8442 strh r3, [r10, #2] @ movhi 8443 b .L1262 8444.L1145: 8445 ldrh r3, [ip], #2 8446 cmp r3, r9 8447 beq .L1142 8448 movs r1, #20 8449 orr r3, r4, r3, lsl #10 8450 mla r1, r1, r5, r0 8451 str r3, [r1, #4] 8452 mov r3, r6 8453 muls r3, r5, r3 8454 it mi 8455 addmi r3, r3, #3 8456 bic r3, r3, #3 8457 add r3, r3, lr 8458 str r3, [r1, #8] 8459 mov r3, r7 8460 muls r3, r5, r3 8461 add r5, r5, #1 8462 it mi 8463 addmi r3, r3, #3 8464 uxth r5, r5 8465 bic r3, r3, #3 8466 add r3, r3, r8 8467 str r3, [r1, #12] 8468.L1142: 8469 adds r2, r2, #1 8470 b .L1139 8471.L1151: 8472 ldr r2, [r8] 8473 cbnz r2, .L1147 8474 ldr r2, [r8, #12] 8475 str r2, [sp, #4] 8476 ldr r2, [r2, #4] 8477 adds r1, r2, #1 8478 beq .L1148 8479 ldr r1, [r6, #2592] 8480 mov r0, r2 8481 bl ftl_cmp_data_ver 8482 cbz r0, .L1148 8483 adds r2, r2, #1 8484 str r2, [r6, #2592] 8485.L1148: 8486 ldr r2, [sp, #4] 8487 ldr r2, [r2] 8488 adds r2, r2, #1 8489 bne .L1150 8490.L1149: 8491 uxth r2, r4 8492 str r2, [sp, #8] 8493 movs r2, #20 8494 mla r3, r2, r7, r3 8495 b .L1256 8496.L1147: 8497 ldr r9, [sp, #8] 8498.L1150: 8499 adds r7, r7, #1 8500 add r8, r8, #20 8501 b .L1146 8502.L1154: 8503 movw r3, #65535 8504 cmp r9, r3 8505 bne .L1155 8506 ldrb r3, [r10, #8] @ zero_extendqisi2 8507 cbnz r3, .L1156 8508.L1155: 8509 ldr r3, [r6, #3448] 8510 uxth r2, r4 8511 uxth r7, r4 8512 movw r8, #65535 8513 adds r3, r3, #1 8514 ldr r3, [sp] 8515 it eq 8516 streq fp, [r6, #3448] 8517 adds r3, r3, #7 8518 ldr r6, .L1264 8519 cmp r3, r2 8520 itet lt 8521 sublt r4, r4, #7 8522 ldrge r4, [sp] 8523 uxthlt r4, r4 8524.L1159: 8525 ldr r0, [r6, #3288] 8526 cmp r4, r7 8527 ldrh ip, [r6, #232] 8528 bls .L1205 8529 mov r3, #-1 8530 str r3, [r6, #3448] 8531.L1156: 8532 ldr r4, .L1264 8533 movs r3, #1 8534 ldr r5, [sp] 8535 strh r3, [r4, #3472] @ movhi 8536.L1167: 8537 ldrh r6, [r4, #232] 8538 movs r3, #0 8539 ldr r0, [r4, #3288] 8540 movw r7, #65535 8541 ldr r1, [sp, #20] 8542 mov ip, #20 8543 str r3, [sp, #12] 8544.L1168: 8545 uxth r2, r3 8546 cmp r6, r2 8547 bhi .L1170 8548 ldr r1, [sp, #12] 8549 movs r2, #0 8550 bl FlashReadPages 8551 movs r3, #0 8552.L1261: 8553 str r3, [sp, #16] 8554 ldr r2, [sp, #12] 8555 ldrh r3, [sp, #16] 8556 cmp r2, r3 8557 bhi .L1199 8558 adds r5, r5, #1 8559 ldrh r3, [r4, #302] 8560 uxth r5, r5 8561 cmp r3, r5 8562 bne .L1167 8563 ldrh r2, [r4, #232] 8564 movs r3, #0 8565 strh r5, [r10, #2] @ movhi 8566 movw r0, #65535 8567 strh r3, [r10, #4] @ movhi 8568.L1200: 8569 uxth r1, r3 8570 cmp r1, r2 8571 bcs .L1134 8572 ldr r1, [sp, #20] 8573 ldrh r4, [r1], #2 8574 str r1, [sp, #20] 8575 adds r1, r3, #1 8576 cmp r4, r0 8577 bne .L1262 8578 mov r3, r1 8579 b .L1200 8580.L1161: 8581 ldrh r2, [r1], #2 8582 cmp r2, r8 8583 beq .L1160 8584 mla r9, lr, r5, r0 8585 adds r5, r5, #1 8586 orr r2, r4, r2, lsl #10 8587 uxth r5, r5 8588 str r2, [r9, #4] 8589.L1160: 8590 adds r3, r3, #1 8591.L1166: 8592 uxth r2, r3 8593 cmp r2, ip 8594 bcc .L1161 8595 mov r1, r5 8596 movs r2, #0 8597 bl FlashReadPages 8598 ldr r3, [r6, #3288] 8599 movs r1, #0 8600.L1162: 8601 uxth r2, r1 8602 cmp r5, r2 8603 bhi .L1165 8604 adds r4, r4, #1 8605 uxth r4, r4 8606 b .L1159 8607.L1205: 8608 movs r3, #0 8609 ldr r1, [sp, #20] 8610 mov r5, r3 8611 mov lr, #20 8612 b .L1166 8613.L1265: 8614 .align 2 8615.L1264: 8616 .word .LANCHOR0 8617 .word .LANCHOR1+435 8618 .word .LC8 8619.L1165: 8620 ldr r2, [r3] 8621 cmp r2, #0 8622 bne .L1156 8623 ldr r2, [r3, #12] 8624 ldrh r0, [r2] 8625 cmp r0, r8 8626 beq .L1164 8627 ldr r2, [r2, #4] 8628 adds r0, r2, #1 8629 it ne 8630 strne r2, [r6, #3448] 8631.L1164: 8632 adds r1, r1, #1 8633 adds r3, r3, #20 8634 b .L1162 8635.L1170: 8636 ldrh r2, [r1], #2 8637 cmp r2, r7 8638 beq .L1169 8639 ldr lr, [sp, #12] 8640 orr r2, r5, r2, lsl #10 8641 mla lr, ip, lr, r0 8642 str r2, [lr, #4] 8643 ldr r2, [sp, #12] 8644 adds r2, r2, #1 8645 uxth r2, r2 8646 str r2, [sp, #12] 8647.L1169: 8648 adds r3, r3, #1 8649 b .L1168 8650.L1199: 8651 ldr r3, [sp, #16] 8652 movs r6, #20 8653 ldr r9, [r4, #3288] 8654 muls r6, r3, r6 8655 ldr r3, [sp] 8656 add r8, r9, r6 8657 cmp r5, r3 8658 ldr r7, [r8, #4] 8659 str r7, [sp, #40] 8660 bcc .L1172 8661 ubfx r0, r7, #10, #16 8662 bl P2V_plane 8663 ldr r3, [sp] 8664 cmp r5, r3 8665 bne .L1173 8666 ldr r3, [sp, #24] 8667 cmp r3, r0 8668 bhi .L1172 8669.L1173: 8670 ldr r3, [sp, #8] 8671 cmp r5, r3 8672 bne .L1174 8673 ldr r3, [sp, #4] 8674 cmp r3, r0 8675 bne .L1174 8676 mov r2, r3 8677 mov r1, r5 8678 strb r3, [r10, #6] 8679 strh r5, [r10, #2] @ movhi 8680 b .L1263 8681.L1174: 8682 ldr r3, [r9, r6] 8683 adds r3, r3, #1 8684 beq .L1175 8685 ldr r8, [r8, #12] 8686 movw r2, #61589 8687 ldrh r3, [r8] 8688 cmp r3, r2 8689 beq .L1176 8690 ldrh r0, [r10] 8691.L1258: 8692 bl decrement_vpc_count 8693 b .L1172 8694.L1176: 8695 ldr fp, [r8, #4] 8696 cmp fp, #-1 8697 beq .L1178 8698 ldr r1, [r4, #2592] 8699 mov r0, fp 8700 bl ftl_cmp_data_ver 8701 cbz r0, .L1178 8702 add r2, fp, #1 8703 str r2, [r4, #2592] 8704 ldrh r2, [r8] 8705 cmp r2, r3 8706 beq .L1178 8707 ldr r1, .L1266 8708 movw r2, #1961 8709 ldr r0, .L1266+4 8710 bl sftl_printk 8711.L1178: 8712 ldrd r7, r3, [r8, #8] 8713 add r1, sp, #36 8714 movs r2, #0 8715 str r3, [sp, #32] 8716 mov r0, r7 8717 bl log2phys 8718 ldr r1, [r4, #3448] 8719 adds r0, r1, #1 8720 beq .L1180 8721 mov r0, fp 8722 bl ftl_cmp_data_ver 8723 cmp r0, #0 8724 beq .L1180 8725 ldr r3, [sp, #32] 8726 adds r1, r3, #1 8727 beq .L1181 8728 ldr r0, [r4, #3288] 8729 movs r2, #0 8730 movs r1, #1 8731 add r0, r0, r6 8732 str r3, [r0, #4] 8733 ldr r8, [r0, #12] 8734 bl FlashReadPages 8735 ldr r3, [r4, #3288] 8736 add r9, r3, r6 8737 ldr r2, [r3, r6] 8738 adds r2, r2, #1 8739 bne .L1182 8740.L1183: 8741 mov r3, #-1 8742 str r3, [sp, #32] 8743.L1190: 8744 ldr r0, [sp, #32] 8745 adds r1, r0, #1 8746 beq .L1172 8747 ubfx r0, r0, #10, #16 8748 bl P2V_block_in_plane 8749 ldrh r3, [r4, #240] 8750 mov r6, r0 8751 cmp r3, r0 8752 bhi .L1195 8753 ldr r1, .L1266 8754 movw r2, #2066 8755 ldr r0, .L1266+4 8756 bl sftl_printk 8757.L1195: 8758 ldr r3, [r4, #72] 8759 ldrh r3, [r3, r6, lsl #1] 8760 cmp r3, #0 8761 beq .L1196 8762 mov r0, r6 8763 b .L1258 8764.L1181: 8765 ldrd r2, r3, [sp, #36] 8766 cmp r2, r3 8767 bne .L1172 8768 add r1, sp, #32 8769 mov r0, r7 8770 movs r2, #1 8771 bl log2phys 8772.L1172: 8773 ldr r3, [sp, #16] 8774 adds r3, r3, #1 8775 b .L1261 8776.L1182: 8777 ldr r2, [r8, #8] 8778 cmp r2, r7 8779 bne .L1183 8780 ldr r1, [r8, #4] 8781 ldr r0, [r4, #3448] 8782 str r1, [sp, #28] 8783 bl ftl_cmp_data_ver 8784 cmp r0, #0 8785 beq .L1183 8786 ldrd r1, r0, [sp, #32] 8787 ldr ip, [sp, #40] 8788 cmp r0, ip 8789 bne .L1185 8790 mov r0, r2 8791.L1257: 8792 bl FtlReUsePrevPpa 8793 b .L1183 8794.L1185: 8795 cmp r1, r0 8796 beq .L1183 8797 adds r2, r0, #1 8798 beq .L1186 8799 str r0, [r9, #4] 8800 movs r2, #0 8801 mov r0, r9 8802 movs r1, #1 8803 ldr r8, [r9, #12] 8804 bl FlashReadPages 8805.L1187: 8806 ldr r3, [r4, #3288] 8807 ldr r3, [r3, r6] 8808 adds r3, r3, #1 8809 beq .L1188 8810 ldr r3, [r8, #4] 8811 ldr r0, [r4, #3448] 8812 mov r1, r3 8813 bl ftl_cmp_data_ver 8814 cbz r0, .L1188 8815 ldr r0, [sp, #28] 8816 mov r1, r3 8817 bl ftl_cmp_data_ver 8818 cmp r0, #0 8819 beq .L1183 8820.L1188: 8821 ldr r1, [sp, #32] 8822 mov r0, r7 8823 b .L1257 8824.L1186: 8825 str r0, [r3, r6] 8826 b .L1187 8827.L1180: 8828 ldrd r2, r3, [sp, #36] 8829 cmp r2, r3 8830 beq .L1190 8831 ldr r1, [sp, #32] 8832 adds r0, r1, #1 8833 beq .L1192 8834 ldr r3, [r4, #248] 8835 cmp r3, r1, lsr #10 8836 bhi .L1192 8837 ldr r0, .L1266+8 8838.L1260: 8839 bl sftl_printk 8840 b .L1172 8841.L1192: 8842 add r1, sp, #40 8843 mov r0, r7 8844 movs r2, #1 8845 bl log2phys 8846 ldr r8, [sp, #36] 8847 cmp r8, #-1 8848 beq .L1190 8849 ldr r3, [sp, #32] 8850 cmp r8, r3 8851 beq .L1190 8852 ubfx r0, r8, #10, #16 8853 bl P2V_block_in_plane 8854 ldrh r3, [r4, #24] 8855 cmp r3, r0 8856 beq .L1194 8857 ldrh r3, [r4, #76] 8858 cmp r3, r0 8859 beq .L1194 8860 ldrh r3, [r4, #124] 8861 cmp r3, r0 8862 bne .L1190 8863.L1194: 8864 ldr r0, [r4, #3288] 8865 movs r2, #0 8866 movs r1, #1 8867 str r8, [r0, #4] 8868 ldr r6, [r0, #12] 8869 bl FlashReadPages 8870 ldr r3, [r4, #3288] 8871 ldr r3, [r3] 8872 adds r3, r3, #1 8873 beq .L1190 8874 ldr r1, [r6, #4] 8875 mov r0, fp 8876 bl ftl_cmp_data_ver 8877 cmp r0, #0 8878 bne .L1190 8879 add r1, sp, #36 8880 mov r0, r7 8881 movs r2, #1 8882 bl log2phys 8883 b .L1190 8884.L1196: 8885 ldr r0, .L1266+12 8886 mov r1, r6 8887 b .L1260 8888.L1175: 8889 ldr r3, [r4, #3476] 8890 cmp r3, #31 8891 itttt ls 8892 addls r2, r4, r3, lsl #2 8893 addls r3, r3, #1 8894 strls r3, [r4, #3476] 8895 strls r7, [r2, #3480] 8896 ldrh r0, [r10] 8897 bl decrement_vpc_count 8898 ldr r3, [r4, #3448] 8899 adds r2, r3, #1 8900 bne .L1198 8901.L1259: 8902 str fp, [r4, #3448] 8903 b .L1172 8904.L1198: 8905 cmp r3, fp 8906 bls .L1172 8907 b .L1259 8908.L1203: 8909 movs r0, #0 8910 add sp, sp, #52 8911 @ sp needed 8912 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 8913.L1267: 8914 .align 2 8915.L1266: 8916 .word .LANCHOR1+435 8917 .word .LC8 8918 .word .LC109 8919 .word .LC110 8920 .fnend 8921 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock 8922 .section .rodata.str1.1 8923.LC111: 8924 .ascii "...%s enter...\012\000" 8925.LC112: 8926 .ascii "FtlCheckVpc2 %x = %x %x\012\000" 8927.LC113: 8928 .ascii "free blk vpc error %x = %x %x\012\000" 8929 .text 8930 .align 1 8931 .global ftl_check_vpc 8932 .syntax unified 8933 .thumb 8934 .thumb_func 8935 .fpu softvfp 8936 .type ftl_check_vpc, %function 8937ftl_check_vpc: 8938 .fnstart 8939 @ args = 0, pretend = 0, frame = 8 8940 @ frame_needed = 0, uses_anonymous_args = 0 8941 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 8942 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 8943 .pad #12 8944 movs r4, #0 8945 ldr r5, .L1293 8946 mov r3, sp 8947 ldr r7, .L1293+4 8948 bic r6, r3, #8160 8949 ldr r1, .L1293+8 8950 bic r6, r6, #31 8951 ldr r0, .L1293+12 8952 ldr r3, [r6, #24] 8953 str r3, [sp, #4] 8954 bl sftl_printk 8955 ldr r0, .L1293+4 8956 mov r2, #8192 8957 movs r1, #0 8958 bl ftl_memset 8959.L1269: 8960 ldr r3, [r5, #2552] 8961 cmp r3, r4 8962 bhi .L1271 8963 ldr r9, .L1293+4 8964 movs r4, #0 8965 ldr fp, .L1293+16 8966 mov r7, r4 8967 movw r10, #65535 8968.L1272: 8969 ldrh r2, [r5, #240] 8970 uxth r3, r4 8971 cmp r2, r3 8972 bhi .L1274 8973 ldr r4, [r5, #2532] 8974 cbz r4, .L1275 8975 ldr r1, [r5, #2516] 8976 mov r9, #0 8977 ldrh r8, [r5, #224] 8978 mov fp, #6 8979 subs r4, r4, r1 8980 ldr r1, .L1293+20 8981 ldr r10, .L1293+4 8982 asrs r4, r4, #1 8983 ldr r0, .L1293+24 8984 muls r4, r1, r4 8985 uxth r4, r4 8986.L1276: 8987 uxth r3, r9 8988 cmp r8, r3 8989 bls .L1275 8990 ldr r3, [r5, #72] 8991 ldrh r2, [r3, r4, lsl #1] 8992 cbz r2, .L1277 8993 ldrh r3, [r10, r4, lsl #1] 8994 mov r1, r4 8995 bl sftl_printk 8996 ldr r0, .L1293+24 8997 movs r7, #1 8998.L1277: 8999 mul r4, fp, r4 9000 ldr r3, [r5, #2516] 9001 add r9, r9, #1 9002 ldrh r4, [r3, r4] 9003 movw r3, #65535 9004 cmp r4, r3 9005 bne .L1276 9006.L1275: 9007 cbz r7, .L1268 9008 ldr r1, .L1293+8 9009 movw r2, #2394 9010 ldr r0, .L1293+28 9011 bl sftl_printk 9012.L1268: 9013 ldr r2, [sp, #4] 9014 ldr r3, [r6, #24] 9015 cmp r2, r3 9016 beq .L1280 9017 bl __stack_chk_fail 9018.L1271: 9019 mov r1, sp 9020 mov r0, r4 9021 movs r2, #0 9022 bl log2phys 9023 ldr r0, [sp] 9024 adds r3, r0, #1 9025 beq .L1270 9026 ubfx r0, r0, #10, #16 9027 bl P2V_block_in_plane 9028 ldrh r3, [r7, r0, lsl #1] 9029 adds r3, r3, #1 9030 strh r3, [r7, r0, lsl #1] @ movhi 9031.L1270: 9032 adds r4, r4, #1 9033 b .L1269 9034.L1274: 9035 ldr r3, [r5, #72] 9036 uxth r8, r4 9037 ldrh r2, [r3, r8, lsl #1] 9038 ldrh r3, [r9, r8, lsl #1] 9039 cmp r2, r3 9040 beq .L1273 9041 mov r1, r8 9042 mov r0, fp 9043 bl sftl_printk 9044 ldr r3, [r5, #72] 9045 ldrh r3, [r3, r8, lsl #1] 9046 cmp r3, r10 9047 beq .L1273 9048 ldrh r2, [r9, r8, lsl #1] 9049 cmp r2, r3 9050 it hi 9051 movhi r7, #1 9052.L1273: 9053 adds r4, r4, #1 9054 b .L1272 9055.L1280: 9056 add sp, sp, #12 9057 @ sp needed 9058 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 9059.L1294: 9060 .align 2 9061.L1293: 9062 .word .LANCHOR0 9063 .word check_vpc_table 9064 .word .LANCHOR1+457 9065 .word .LC111 9066 .word .LC112 9067 .word -1431655765 9068 .word .LC113 9069 .word .LC8 9070 .fnend 9071 .size ftl_check_vpc, .-ftl_check_vpc 9072 .section .rodata.str1.1 9073.LC114: 9074 .ascii "ftl_scan_all_data = %x\012\000" 9075.LC115: 9076 .ascii "scan lpa = %x ppa= %x\012\000" 9077.LC116: 9078 .ascii "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" 9079 .ascii "\000" 9080 .text 9081 .align 1 9082 .global ftl_scan_all_data 9083 .syntax unified 9084 .thumb 9085 .thumb_func 9086 .fpu softvfp 9087 .type ftl_scan_all_data, %function 9088ftl_scan_all_data: 9089 .fnstart 9090 @ args = 0, pretend = 0, frame = 8 9091 @ frame_needed = 0, uses_anonymous_args = 0 9092 push {r4, r5, r6, r7, r8, lr} 9093 .save {r4, r5, r6, r7, r8, lr} 9094 movs r5, #0 9095 ldr r4, .L1310 9096 .pad #32 9097 sub sp, sp, #32 9098 ldr r8, .L1310+4 9099 mov r3, sp 9100 ldr r0, .L1310+8 9101 bic r6, r3, #8160 9102 movs r1, #0 9103 bic r6, r6, #31 9104 ldr r3, [r6, #24] 9105 str r3, [sp, #28] 9106 bl sftl_printk 9107.L1296: 9108 ldr r3, [r4, #2552] 9109 cmp r3, r5 9110 bhi .L1302 9111 ldr r2, [sp, #28] 9112 ldr r3, [r6, #24] 9113 cmp r2, r3 9114 beq .L1303 9115 bl __stack_chk_fail 9116.L1302: 9117 add r1, sp, #24 9118 mov r0, r5 9119 movs r2, #0 9120 bl log2phys 9121 ubfx r3, r5, #0, #11 9122 cbnz r3, .L1297 9123 ldr r2, [sp, #24] 9124 mov r1, r5 9125 mov r0, r8 9126 bl sftl_printk 9127.L1297: 9128 ldr r3, [sp, #24] 9129 adds r2, r3, #1 9130 beq .L1299 9131 ldr r7, [r4, #3332] 9132 movs r2, #0 9133 str r3, [r4, #3456] 9134 movs r1, #1 9135 ldr r3, [r4, #3300] 9136 ldr r0, .L1310+12 9137 str r3, [r4, #3460] 9138 str r5, [r4, #3468] 9139 str r7, [r4, #3464] 9140 str r2, [r4, #3452] 9141 bl FlashReadPages 9142 ldr r3, [r4, #3452] 9143 cmp r3, #256 9144 beq .L1300 9145 adds r3, r3, #1 9146 beq .L1300 9147 ldr r3, [r7, #8] 9148 cmp r3, r5 9149 beq .L1299 9150.L1300: 9151 ldr r2, [r4, #3460] 9152 ldr r3, [r4, #3464] 9153 ldr r0, .L1310+16 9154 ldr r1, [r2, #4] 9155 str r1, [sp, #16] 9156 mov r1, r5 9157 ldr r2, [r2] 9158 str r2, [sp, #12] 9159 ldr r2, [r3, #12] 9160 str r2, [sp, #8] 9161 ldr r2, [r3, #8] 9162 str r2, [sp, #4] 9163 ldr r2, [r3, #4] 9164 str r2, [sp] 9165 ldr r2, [r4, #3456] 9166 ldr r3, [r3] 9167 bl sftl_printk 9168.L1299: 9169 adds r5, r5, #1 9170 b .L1296 9171.L1303: 9172 add sp, sp, #32 9173 @ sp needed 9174 pop {r4, r5, r6, r7, r8, pc} 9175.L1311: 9176 .align 2 9177.L1310: 9178 .word .LANCHOR0 9179 .word .LC115 9180 .word .LC114 9181 .word .LANCHOR0+3452 9182 .word .LC116 9183 .fnend 9184 .size ftl_scan_all_data, .-ftl_scan_all_data 9185 .section .rodata.str1.1 9186.LC117: 9187 .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" 9188 .text 9189 .align 1 9190 .global FtlGcScanTempBlk 9191 .syntax unified 9192 .thumb 9193 .thumb_func 9194 .fpu softvfp 9195 .type FtlGcScanTempBlk, %function 9196FtlGcScanTempBlk: 9197 .fnstart 9198 @ args = 0, pretend = 0, frame = 48 9199 @ frame_needed = 0, uses_anonymous_args = 0 9200 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 9201 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 9202 mov r5, r0 9203 .pad #52 9204 sub sp, sp, #52 9205 mov r3, sp 9206 bic r3, r3, #8160 9207 bic r3, r3, #31 9208 str r1, [sp, #4] 9209 ldr r3, [r3, #24] 9210 str r3, [sp, #44] 9211 ldr r3, .L1349 9212 ldrh r6, [r3, #4] 9213 movw r3, #65535 9214 cmp r6, r3 9215 beq .L1339 9216 cbz r6, .L1314 9217.L1313: 9218 ldr r3, .L1349+4 9219 ldr r2, [sp, #4] 9220 ldrh r3, [r3, #302] 9221 cmp r3, r2 9222 bne .L1315 9223.L1314: 9224 bl FtlGcPageVarInit 9225.L1315: 9226 mov r9, #0 9227.L1334: 9228 ldrh r2, [r5] 9229 movs r3, #0 9230 strb r3, [r5, #8] 9231 movw r3, #65535 9232 cmp r2, r3 9233 beq .L1316 9234 ldr r4, .L1349+4 9235.L1317: 9236 ldr r3, [r4, #3176] 9237 movs r2, #0 9238 ldrh ip, [r4, #232] 9239 add lr, r5, #16 9240 ldr r0, [r4, #3288] 9241 mov r8, r3 9242 ldrh fp, [r4, #310] 9243 mov r7, r2 9244 ldr r10, [r4, #3180] 9245 ldrh r3, [r4, #312] 9246 str r3, [sp, #8] 9247.L1318: 9248 uxth r3, r2 9249 cmp ip, r3 9250 bhi .L1322 9251 mov r10, #0 9252 mov r1, r7 9253 movs r2, #0 9254 bl FlashReadPages 9255.L1323: 9256 uxth r3, r10 9257 cmp r7, r3 9258 bhi .L1335 9259 ldr r3, [sp, #4] 9260 adds r6, r6, #1 9261 add r9, r9, #1 9262 uxth r6, r6 9263 cmp r3, r9 9264 bhi .L1336 9265 ldr r2, .L1349 9266 movw r1, #65535 9267 ldrh r3, [r2, #4] 9268 cmp r3, r1 9269 beq .L1336 9270 add r3, r3, r9 9271 strh r3, [r2, #4] @ movhi 9272 ldrh r3, [r4, #302] 9273 cmp r3, r6 9274 bls .L1316 9275.L1337: 9276 mov r3, sp 9277 ldr r2, [sp, #44] 9278 bic r3, r3, #8160 9279 bic r3, r3, #31 9280 ldr r3, [r3, #24] 9281 cmp r2, r3 9282 beq .L1338 9283 bl __stack_chk_fail 9284.L1339: 9285 movs r6, #0 9286 b .L1313 9287.L1322: 9288 ldrh r3, [lr], #2 9289 movw r1, #65535 9290 cmp r3, r1 9291 beq .L1319 9292 movs r1, #20 9293 orr r3, r6, r3, lsl #10 9294 mla r1, r1, r7, r0 9295 str r3, [r1, #4] 9296 mov r3, fp 9297 muls r3, r7, r3 9298 it mi 9299 addmi r3, r3, #3 9300 bic r3, r3, #3 9301 add r3, r3, r8 9302 str r3, [r1, #8] 9303 ldr r3, [sp, #8] 9304 muls r3, r7, r3 9305 add r7, r7, #1 9306 it mi 9307 addmi r3, r3, #3 9308 uxth r7, r7 9309 bic r3, r3, #3 9310 add r3, r3, r10 9311 str r3, [r1, #12] 9312.L1319: 9313 adds r2, r2, #1 9314 b .L1318 9315.L1335: 9316 movs r3, #20 9317 ldr r2, [r4, #3288] 9318 mul fp, r3, r10 9319 add r1, r2, fp 9320 ldr r2, [r2, fp] 9321 ldr r3, [r1, #4] 9322 ldr r8, [r1, #12] 9323 cmp r2, #0 9324 bne .L1324 9325 ldrh r0, [r8] 9326 movw r1, #65535 9327 cmp r0, r1 9328 beq .L1347 9329 ldr r0, [r8, #8] 9330 ldr r1, [r4, #2552] 9331 cmp r0, r1 9332 bls .L1326 9333.L1347: 9334 ldrh r2, [r5] 9335 movs r1, #0 9336 ldr r3, [r4, #72] 9337 movs r6, #0 9338 strh r1, [r3, r2, lsl #1] @ movhi 9339 ldrh r0, [r5] 9340 bl INSERT_FREE_LIST 9341 movw r3, #65535 9342 strh r3, [r5] @ movhi 9343 strh r3, [r4, #172] @ movhi 9344 bl FtlGcPageVarInit 9345 b .L1334 9346.L1326: 9347 add r1, sp, #20 9348 strd r2, r3, [sp, #8] 9349 bl log2phys 9350 ldr r1, [r8, #12] 9351 ldr r0, [sp, #20] 9352 ldrd r2, r3, [sp, #8] 9353 cmp r1, r0 9354 beq .L1328 9355.L1330: 9356 ldr r2, [r8, #8] 9357.L1348: 9358 ldr r0, [r8, #12] 9359 mov r1, r3 9360 add r10, r10, #1 9361 bl FtlGcUpdatePage 9362 b .L1323 9363.L1328: 9364 adds r0, r1, #1 9365 beq .L1330 9366 str r1, [sp, #28] 9367 add r0, sp, #24 9368 ldr r1, [r4, #3316] 9369 str r1, [sp, #32] 9370 ldr r1, [r4, #3336] 9371 str r1, [sp, #36] 9372 movs r1, #1 9373 str r3, [sp, #12] 9374 str r2, [sp, #8] 9375 bl FlashReadPages 9376 ldr r0, [r4, #3288] 9377 ldrh r1, [r4, #258] 9378 add fp, fp, r0 9379 ldr r0, [sp, #32] 9380 ldrd r2, r3, [sp, #8] 9381 lsls r1, r1, #7 9382.L1331: 9383 cmp r1, r2 9384 beq .L1330 9385 ldr ip, [fp, #8] 9386 ldr lr, [ip, r2, lsl #2] 9387 ldr ip, [r0, r2, lsl #2] 9388 cmp lr, ip 9389 beq .L1332 9390 ldr r2, [sp, #28] 9391 ldrh r1, [r5] 9392 ldr r0, .L1349+8 9393 ldr r4, .L1349+4 9394 bl sftl_printk 9395 b .L1347 9396.L1332: 9397 adds r2, r2, #1 9398 b .L1331 9399.L1324: 9400 mov r2, #-1 9401 b .L1348 9402.L1336: 9403 ldrh r3, [r4, #302] 9404 cmp r3, r6 9405 bhi .L1317 9406.L1316: 9407 ldr r3, .L1349 9408 movw r2, #65535 9409 mov r1, r6 9410 mov r0, r5 9411 strh r6, [r5, #2] @ movhi 9412 strh r2, [r3, #4] @ movhi 9413 movs r2, #0 9414 strb r2, [r5, #6] 9415 bl ftl_sb_update_avl_pages 9416 b .L1337 9417.L1338: 9418 mov r0, #-1 9419 add sp, sp, #52 9420 @ sp needed 9421 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 9422.L1350: 9423 .align 2 9424.L1349: 9425 .word .LANCHOR2 9426 .word .LANCHOR0 9427 .word .LC117 9428 .fnend 9429 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk 9430 .align 1 9431 .global FtlReadRefresh 9432 .syntax unified 9433 .thumb 9434 .thumb_func 9435 .fpu softvfp 9436 .type FtlReadRefresh, %function 9437FtlReadRefresh: 9438 .fnstart 9439 @ args = 0, pretend = 0, frame = 96 9440 @ frame_needed = 0, uses_anonymous_args = 0 9441 push {r4, r5, r6, r7, r8, r9, r10, lr} 9442 .save {r4, r5, r6, r7, r8, r9, r10, lr} 9443 ldr r4, .L1367 9444 .pad #96 9445 sub sp, sp, #96 9446 mov r3, sp 9447 bic r6, r3, #8160 9448 bic r6, r6, #31 9449 ldr r9, [r4, #2720] 9450 ldr r3, [r6, #24] 9451 str r3, [sp, #92] 9452 ldr r3, [r4, #2552] 9453 cmp r9, #0 9454 beq .L1352 9455 ldr r2, [r4, #2724] 9456 cmp r2, r3 9457 bcs .L1353 9458 mov r5, #2048 9459.L1358: 9460 ldr r0, [r4, #2724] 9461 ldr r3, [r4, #2552] 9462 cmp r0, r3 9463 bcc .L1354 9464.L1357: 9465 mov r0, #-1 9466.L1351: 9467 ldr r2, [sp, #92] 9468 ldr r3, [r6, #24] 9469 cmp r2, r3 9470 beq .L1362 9471 bl __stack_chk_fail 9472.L1354: 9473 add r1, sp, #4 9474 movs r2, #0 9475 bl log2phys 9476 ldr r3, [r4, #2724] 9477 ldr r2, [sp, #4] 9478 adds r3, r3, #1 9479 str r3, [r4, #2724] 9480 adds r1, r2, #1 9481 beq .L1356 9482 str r2, [sp, #12] 9483 add r0, sp, #8 9484 str r3, [sp, #24] 9485 movs r2, #0 9486 ldr r3, [r4, #3324] 9487 movs r1, #1 9488 str r3, [sp, #16] 9489 add r3, sp, #28 9490 str r2, [sp, #8] 9491 str r3, [sp, #20] 9492 bl FlashReadPages 9493 ldr r3, [sp, #8] 9494 cmp r3, #256 9495 bne .L1357 9496 ldr r0, [sp, #4] 9497 ubfx r0, r0, #10, #16 9498 bl P2V_block_in_plane 9499 bl FtlGcRefreshBlock 9500 b .L1357 9501.L1356: 9502 subs r5, r5, #1 9503 bne .L1358 9504 b .L1357 9505.L1353: 9506 ldr r3, [r4, #2556] 9507 movs r0, #0 9508 str r3, [r4, #2716] 9509 str r0, [r4, #2720] 9510 str r0, [r4, #2724] 9511 b .L1351 9512.L1352: 9513 ldr r8, [r4, #2556] 9514 movw r5, #10000 9515 ldr r1, [r4, #2612] 9516 ldr r10, [r4, #2716] 9517 add r2, r8, #1048576 9518 cmp r1, r5 9519 ite hi 9520 movhi r5, #31 9521 movls r5, #63 9522 ldrh r7, [r4, #2496] 9523 cmp r10, r2 9524 bhi .L1361 9525 mov r0, #1000 9526 lsrs r1, r1, #10 9527 adds r1, r1, #1 9528 muls r0, r3, r0 9529 bl __aeabi_uidiv 9530 add r0, r0, r10 9531 cmp r8, r0 9532 bhi .L1361 9533 ands r0, r5, r7 9534 bne .L1364 9535 ldr r3, [r4, #2740] 9536 cmp r3, r7 9537 beq .L1351 9538.L1361: 9539 movs r3, #1 9540 movs r0, #0 9541 str r7, [r4, #2740] 9542 str r3, [r4, #2720] 9543 str r0, [r4, #2724] 9544 str r8, [r4, #2716] 9545 b .L1351 9546.L1364: 9547 mov r0, r9 9548 b .L1351 9549.L1362: 9550 add sp, sp, #96 9551 @ sp needed 9552 pop {r4, r5, r6, r7, r8, r9, r10, pc} 9553.L1368: 9554 .align 2 9555.L1367: 9556 .word .LANCHOR0 9557 .fnend 9558 .size FtlReadRefresh, .-FtlReadRefresh 9559 .align 1 9560 .global l2p_flush 9561 .syntax unified 9562 .thumb 9563 .thumb_func 9564 .fpu softvfp 9565 .type l2p_flush, %function 9566l2p_flush: 9567 .fnstart 9568 @ args = 0, pretend = 0, frame = 0 9569 @ frame_needed = 0, uses_anonymous_args = 0 9570 push {r4, r5, r6, lr} 9571 .save {r4, r5, r6, lr} 9572 movs r4, #0 9573 ldr r5, .L1373 9574 movs r6, #12 9575 bl FtlWriteDump_data 9576.L1370: 9577 ldrh r3, [r5, #338] 9578 uxth r0, r4 9579 cmp r3, r0 9580 bhi .L1372 9581 movs r0, #0 9582 pop {r4, r5, r6, pc} 9583.L1372: 9584 ldr r3, [r5, #2540] 9585 uxth r2, r4 9586 mla r3, r6, r2, r3 9587 ldr r3, [r3, #4] 9588 cmp r3, #0 9589 bge .L1371 9590 bl flush_l2p_region 9591.L1371: 9592 adds r4, r4, #1 9593 b .L1370 9594.L1374: 9595 .align 2 9596.L1373: 9597 .word .LANCHOR0 9598 .fnend 9599 .size l2p_flush, .-l2p_flush 9600 .align 1 9601 .global FtlVendorPartWrite 9602 .syntax unified 9603 .thumb 9604 .thumb_func 9605 .fpu softvfp 9606 .type FtlVendorPartWrite, %function 9607FtlVendorPartWrite: 9608 .fnstart 9609 @ args = 0, pretend = 0, frame = 104 9610 @ frame_needed = 0, uses_anonymous_args = 0 9611 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 9612 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 9613 mov fp, r2 9614 ldr r4, .L1388 9615 .pad #108 9616 sub sp, sp, #108 9617 adds r2, r0, r1 9618 mov r3, sp 9619 mov r7, r0 9620 bic r10, r3, #8160 9621 mov r5, r1 9622 bic r10, r10, #31 9623 ldrh r8, [r4, #308] 9624 ldr r3, [r10, #24] 9625 lsr r8, r0, r8 9626 str r3, [sp, #100] 9627 ldrh r3, [r4, #296] 9628 cmp r2, r3 9629 bhi .L1384 9630 mov r9, #0 9631.L1377: 9632 cbnz r5, .L1382 9633.L1375: 9634 ldr r2, [sp, #100] 9635 ldr r3, [r10, #24] 9636 cmp r2, r3 9637 beq .L1383 9638 bl __stack_chk_fail 9639.L1382: 9640 ldr r3, [r4, #3372] 9641 mov r0, r7 9642 ldr r2, [r3, r8, lsl #2] 9643 ldrh r3, [r4, #258] 9644 str r2, [sp, #12] 9645 mov r1, r3 9646 str r3, [sp, #8] 9647 bl __aeabi_uidivmod 9648 ldr r3, [sp, #8] 9649 ldr r2, [sp, #12] 9650 subs r6, r3, r1 9651 ldr r0, [r4, #3308] 9652 str r1, [sp, #4] 9653 uxth r6, r6 9654 cmp r6, r5 9655 it hi 9656 uxthhi r6, r5 9657 cbz r2, .L1379 9658 cmp r3, r6 9659 beq .L1379 9660 strd r2, r0, [sp, #20] 9661 movs r2, #1 9662 add r0, sp, #16 9663 mov r1, r2 9664 add r3, sp, #36 9665 str r3, [sp, #28] 9666 bl FlashReadPages 9667.L1380: 9668 lsls r3, r6, #9 9669 ldr r0, [r4, #3308] 9670 mov r2, r3 9671 str r3, [sp, #8] 9672 ldr r3, [sp, #4] 9673 mov r1, fp 9674 subs r5, r5, r6 9675 add r7, r7, r6 9676 add r0, r0, r3, lsl #9 9677 bl ftl_memcpy 9678 mov r1, r8 9679 ldr r2, [r4, #3308] 9680 add r8, r8, #1 9681 ldr r0, .L1388+4 9682 bl FtlMapWritePage 9683 ldr r3, [sp, #8] 9684 adds r0, r0, #1 9685 add fp, fp, r3 9686 it eq 9687 moveq r9, #-1 9688 b .L1377 9689.L1379: 9690 ldrh r2, [r4, #310] 9691 movs r1, #0 9692 bl ftl_memset 9693 b .L1380 9694.L1384: 9695 mov r9, #-1 9696 b .L1375 9697.L1383: 9698 mov r0, r9 9699 add sp, sp, #108 9700 @ sp needed 9701 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 9702.L1389: 9703 .align 2 9704.L1388: 9705 .word .LANCHOR0 9706 .word .LANCHOR0+3608 9707 .fnend 9708 .size FtlVendorPartWrite, .-FtlVendorPartWrite 9709 .align 1 9710 .global Ftl_save_ext_data 9711 .syntax unified 9712 .thumb 9713 .thumb_func 9714 .fpu softvfp 9715 .type Ftl_save_ext_data, %function 9716Ftl_save_ext_data: 9717 .fnstart 9718 @ args = 0, pretend = 0, frame = 0 9719 @ frame_needed = 0, uses_anonymous_args = 0 9720 @ link register save eliminated. 9721 ldr r2, .L1392 9722 ldr r3, .L1392+4 9723 ldr r1, [r2, #2640] 9724 cmp r1, r3 9725 bne .L1390 9726 ldr r3, .L1392+8 9727 add r2, r2, #2640 9728 str r3, [r2, #4] 9729 movs r1, #1 9730 ldr r3, [r2, #-60] 9731 movs r0, #0 9732 str r3, [r2, #88] 9733 ldr r3, [r2, #-56] 9734 str r3, [r2, #92] 9735 ldr r3, [r2, #-64] 9736 str r3, [r2, #8] 9737 ldr r3, [r2, #-76] 9738 str r3, [r2, #12] 9739 ldr r3, [r2, #-84] 9740 str r3, [r2, #16] 9741 ldr r3, [r2, #-68] 9742 str r3, [r2, #20] 9743 ldr r3, [r2, #-40] 9744 str r3, [r2, #28] 9745 ldr r3, [r2, #-32] 9746 str r3, [r2, #32] 9747 ldr r3, [r2, #-80] 9748 str r3, [r2, #36] 9749 ldr r3, [r2, #-72] 9750 str r3, [r2, #40] 9751 ldr r3, [r2, #-28] 9752 str r3, [r2, #44] 9753 ldr r3, [r2, #-24] 9754 str r3, [r2, #48] 9755 b FtlVendorPartWrite 9756.L1390: 9757 bx lr 9758.L1393: 9759 .align 2 9760.L1392: 9761 .word .LANCHOR0 9762 .word 1179929683 9763 .word 1342177367 9764 .fnend 9765 .size Ftl_save_ext_data, .-Ftl_save_ext_data 9766 .align 1 9767 .global FtlEctTblFlush 9768 .syntax unified 9769 .thumb 9770 .thumb_func 9771 .fpu softvfp 9772 .type FtlEctTblFlush, %function 9773FtlEctTblFlush: 9774 .fnstart 9775 @ args = 0, pretend = 0, frame = 0 9776 @ frame_needed = 0, uses_anonymous_args = 0 9777 ldr r3, .L1399 9778 push {r4, lr} 9779 .save {r4, lr} 9780 ldrh r2, [r3, #3652] 9781 cmp r2, #31 9782 itt ls 9783 addls r2, r2, #1 9784 strhls r2, [r3, #3652] @ movhi 9785 ldr r2, [r3, #3348] 9786 ite ls 9787 movls r1, #1 9788 movhi r1, #32 9789 ldr r4, [r2, #16] 9790 cbnz r0, .L1396 9791 ldr r0, [r2, #20] 9792 add r1, r1, r0 9793 cmp r1, r4 9794 bhi .L1397 9795.L1396: 9796 ldr r1, .L1399+4 9797 movs r0, #64 9798 str r1, [r2] 9799 str r4, [r2, #20] 9800 ldrh r1, [r3, #3340] 9801 ldr r2, [r3, #3348] 9802 lsls r3, r1, #9 9803 str r3, [r2, #12] 9804 ldr r3, [r2, #8] 9805 adds r3, r3, #1 9806 str r3, [r2, #8] 9807 movs r3, #0 9808 str r3, [r2, #4] 9809 bl FtlVendorPartWrite 9810 bl Ftl_save_ext_data 9811.L1397: 9812 movs r0, #0 9813 pop {r4, pc} 9814.L1400: 9815 .align 2 9816.L1399: 9817 .word .LANCHOR0 9818 .word 1112818501 9819 .fnend 9820 .size FtlEctTblFlush, .-FtlEctTblFlush 9821 .align 1 9822 .global sftl_vendor_write 9823 .syntax unified 9824 .thumb 9825 .thumb_func 9826 .fpu softvfp 9827 .type sftl_vendor_write, %function 9828sftl_vendor_write: 9829 .fnstart 9830 @ args = 0, pretend = 0, frame = 0 9831 @ frame_needed = 0, uses_anonymous_args = 0 9832 @ link register save eliminated. 9833 add r0, r0, #256 9834 b FtlVendorPartWrite 9835 .fnend 9836 .size sftl_vendor_write, .-sftl_vendor_write 9837 .section .rodata.str1.1 9838.LC118: 9839 .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" 9840 .text 9841 .align 1 9842 .global FtlVendorPartRead 9843 .syntax unified 9844 .thumb 9845 .thumb_func 9846 .fpu softvfp 9847 .type FtlVendorPartRead, %function 9848FtlVendorPartRead: 9849 .fnstart 9850 @ args = 0, pretend = 0, frame = 104 9851 @ frame_needed = 0, uses_anonymous_args = 0 9852 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 9853 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 9854 mov r9, r2 9855 ldr r5, .L1413 9856 .pad #108 9857 sub sp, sp, #108 9858 adds r2, r0, r1 9859 mov r3, sp 9860 mov r8, r0 9861 bic r3, r3, #8160 9862 mov r6, r1 9863 bic r3, r3, #31 9864 ldrh r7, [r5, #308] 9865 str r3, [sp, #4] 9866 ldr r3, [r3, #24] 9867 lsr r7, r0, r7 9868 str r3, [sp, #100] 9869 ldrh r3, [r5, #296] 9870 cmp r2, r3 9871 bhi .L1412 9872 mov r10, #0 9873.L1404: 9874 cbnz r6, .L1410 9875.L1402: 9876 ldr r3, [sp, #4] 9877 ldr r2, [sp, #100] 9878 ldr r3, [r3, #24] 9879 cmp r2, r3 9880 beq .L1411 9881 bl __stack_chk_fail 9882.L1410: 9883 ldr r3, [r5, #3372] 9884 mov r0, r8 9885 ldrh r4, [r5, #258] 9886 ldr r3, [r3, r7, lsl #2] 9887 mov r1, r4 9888 str r3, [sp, #12] 9889 bl __aeabi_uidivmod 9890 subs r4, r4, r1 9891 ldr r3, [sp, #12] 9892 str r1, [sp, #8] 9893 uxth r4, r4 9894 cmp r4, r6 9895 it hi 9896 uxthhi r4, r6 9897 lsl fp, r4, #9 9898 cbz r3, .L1406 9899 ldr r2, [r5, #3308] 9900 add r0, sp, #16 9901 str r2, [sp, #24] 9902 add r2, sp, #36 9903 str r2, [sp, #28] 9904 movs r2, #1 9905 mov r1, r2 9906 str r3, [sp, #20] 9907 str r3, [sp, #12] 9908 bl FlashReadPages 9909 ldr r2, [sp, #16] 9910 ldr r3, [sp, #12] 9911 adds r2, r2, #1 9912 ldr r2, [r5, #3452] 9913 it eq 9914 moveq r10, #-1 9915 cmp r2, #256 9916 bne .L1408 9917 ldr r0, .L1413+4 9918 mov r2, r3 9919 mov r1, r7 9920 bl sftl_printk 9921 ldr r2, [r5, #3308] 9922 ldr r0, .L1413+8 9923 mov r1, r7 9924 bl FtlMapWritePage 9925.L1408: 9926 ldr r1, [r5, #3308] 9927 mov r2, fp 9928 ldr r3, [sp, #8] 9929 mov r0, r9 9930 add r1, r1, r3, lsl #9 9931 bl ftl_memcpy 9932.L1409: 9933 adds r7, r7, #1 9934 subs r6, r6, r4 9935 add r8, r8, r4 9936 add r9, r9, fp 9937 b .L1404 9938.L1406: 9939 mov r2, fp 9940 mov r1, r3 9941 mov r0, r9 9942 bl ftl_memset 9943 b .L1409 9944.L1412: 9945 mov r10, #-1 9946 b .L1402 9947.L1411: 9948 mov r0, r10 9949 add sp, sp, #108 9950 @ sp needed 9951 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 9952.L1414: 9953 .align 2 9954.L1413: 9955 .word .LANCHOR0 9956 .word .LC118 9957 .word .LANCHOR0+3608 9958 .fnend 9959 .size FtlVendorPartRead, .-FtlVendorPartRead 9960 .section .rodata.str1.1 9961.LC119: 9962 .ascii "no ect\000" 9963 .text 9964 .align 1 9965 .global FtlLoadEctTbl 9966 .syntax unified 9967 .thumb 9968 .thumb_func 9969 .fpu softvfp 9970 .type FtlLoadEctTbl, %function 9971FtlLoadEctTbl: 9972 .fnstart 9973 @ args = 0, pretend = 0, frame = 0 9974 @ frame_needed = 0, uses_anonymous_args = 0 9975 push {r4, lr} 9976 .save {r4, lr} 9977 movs r0, #64 9978 ldr r4, .L1417 9979 ldr r2, [r4, #3348] 9980 ldrh r1, [r4, #3340] 9981 bl FtlVendorPartRead 9982 ldr r3, [r4, #3348] 9983 ldr r2, [r3] 9984 ldr r3, .L1417+4 9985 cmp r2, r3 9986 beq .L1416 9987 ldr r1, .L1417+8 9988 ldr r0, .L1417+12 9989 bl sftl_printk 9990 ldrh r2, [r4, #3340] 9991 ldr r0, [r4, #3348] 9992 movs r1, #0 9993 lsls r2, r2, #9 9994 bl ftl_memset 9995.L1416: 9996 movs r0, #0 9997 pop {r4, pc} 9998.L1418: 9999 .align 2 10000.L1417: 10001 .word .LANCHOR0 10002 .word 1112818501 10003 .word .LC119 10004 .word .LC77 10005 .fnend 10006 .size FtlLoadEctTbl, .-FtlLoadEctTbl 10007 .align 1 10008 .global Ftl_load_ext_data 10009 .syntax unified 10010 .thumb 10011 .thumb_func 10012 .fpu softvfp 10013 .type Ftl_load_ext_data, %function 10014Ftl_load_ext_data: 10015 .fnstart 10016 @ args = 0, pretend = 0, frame = 0 10017 @ frame_needed = 0, uses_anonymous_args = 0 10018 push {r3, r4, r5, lr} 10019 .save {r3, r4, r5, lr} 10020 movs r1, #1 10021 ldr r4, .L1421 10022 movs r0, #0 10023 ldr r5, .L1421+4 10024 add r2, r4, #2640 10025 bl FtlVendorPartRead 10026 ldr r3, [r4, #2640] 10027 cmp r3, r5 10028 beq .L1420 10029 add r0, r4, #2640 10030 mov r2, #512 10031 movs r1, #0 10032 bl ftl_memset 10033 str r5, [r4, #2640] 10034.L1420: 10035 ldr r3, [r4, #2728] 10036 ldr r2, [r4, #2672] 10037 str r3, [r4, #2580] 10038 ldr r3, [r4, #2732] 10039 str r3, [r4, #2584] 10040 str r2, [r4, #2608] 10041 ldr r3, [r4, #2648] 10042 ldr r2, [r4, #2676] 10043 str r3, [r4, #2576] 10044 str r2, [r4, #2560] 10045 ldr r3, [r4, #2652] 10046 ldr r2, [r4, #2680] 10047 str r3, [r4, #2564] 10048 str r2, [r4, #2568] 10049 ldr r3, [r4, #2656] 10050 ldr r2, [r4, #2684] 10051 str r3, [r4, #2556] 10052 str r2, [r4, #2612] 10053 ldr r3, [r4, #2660] 10054 ldr r2, [r4, #2688] 10055 str r3, [r4, #2572] 10056 str r2, [r4, #2616] 10057 ldr r3, [r4, #2668] 10058 ldrh r2, [r4, #292] 10059 ldr r0, [r4, #2596] 10060 ldrh r1, [r4, #240] 10061 str r3, [r4, #2600] 10062 mla r0, r0, r2, r3 10063 bl __aeabi_uidiv 10064 str r0, [r4, #2604] 10065 pop {r3, r4, r5, pc} 10066.L1422: 10067 .align 2 10068.L1421: 10069 .word .LANCHOR0 10070 .word 1179929683 10071 .fnend 10072 .size Ftl_load_ext_data, .-Ftl_load_ext_data 10073 .align 1 10074 .global sftl_vendor_read 10075 .syntax unified 10076 .thumb 10077 .thumb_func 10078 .fpu softvfp 10079 .type sftl_vendor_read, %function 10080sftl_vendor_read: 10081 .fnstart 10082 @ args = 0, pretend = 0, frame = 0 10083 @ frame_needed = 0, uses_anonymous_args = 0 10084 @ link register save eliminated. 10085 add r0, r0, #256 10086 b FtlVendorPartRead 10087 .fnend 10088 .size sftl_vendor_read, .-sftl_vendor_read 10089 .align 1 10090 .global FtlMapBlkWriteDump_data 10091 .syntax unified 10092 .thumb 10093 .thumb_func 10094 .fpu softvfp 10095 .type FtlMapBlkWriteDump_data, %function 10096FtlMapBlkWriteDump_data: 10097 .fnstart 10098 @ args = 0, pretend = 0, frame = 0 10099 @ frame_needed = 0, uses_anonymous_args = 0 10100 push {r4, r5, r6, lr} 10101 .save {r4, r5, r6, lr} 10102 mov r5, r0 10103 ldr r3, [r0, #36] 10104 cbz r3, .L1424 10105 ldrh r6, [r0, #6] 10106 movs r2, #0 10107 ldr r4, .L1428 10108 subs r6, r6, #1 10109 str r2, [r0, #36] 10110 ldr r3, [r0, #24] 10111 uxth r6, r6 10112 ldr r0, [r4, #3304] 10113 ldr r2, [r4, #3332] 10114 str r0, [r4, #3460] 10115 str r2, [r4, #3464] 10116 ldr r3, [r3, r6, lsl #2] 10117 str r3, [r4, #3456] 10118 cbz r3, .L1426 10119 movs r2, #1 10120 addw r0, r4, #3452 10121 mov r1, r2 10122 bl FlashReadPages 10123.L1427: 10124 ldr r2, [r4, #3460] 10125 mov r1, r6 10126 mov r0, r5 10127 pop {r4, r5, r6, lr} 10128 b FtlMapWritePage 10129.L1426: 10130 ldrh r2, [r4, #310] 10131 movs r1, #255 10132 bl ftl_memset 10133 b .L1427 10134.L1424: 10135 pop {r4, r5, r6, pc} 10136.L1429: 10137 .align 2 10138.L1428: 10139 .word .LANCHOR0 10140 .fnend 10141 .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data 10142 .section .rodata.str1.1 10143.LC120: 10144 .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" 10145 .text 10146 .align 1 10147 .global FtlVpcTblFlush 10148 .syntax unified 10149 .thumb 10150 .thumb_func 10151 .fpu softvfp 10152 .type FtlVpcTblFlush, %function 10153FtlVpcTblFlush: 10154 .fnstart 10155 @ args = 0, pretend = 0, frame = 0 10156 @ frame_needed = 0, uses_anonymous_args = 0 10157 push {r4, r5, r6, r7, r8, r9, r10, lr} 10158 .save {r4, r5, r6, r7, r8, r9, r10, lr} 10159 movs r5, #0 10160 ldr r4, .L1446 10161 movs r1, #255 10162 ldr r9, .L1446+4 10163 ldr r10, .L1446+8 10164 addw r8, r4, #3452 10165 movw r7, #65535 10166 ldr r6, [r4, #3332] 10167 ldr r3, [r4, #3300] 10168 str r3, [r4, #3460] 10169 ldrh r3, [r4, #2624] 10170 str r6, [r4, #3464] 10171 strh r3, [r6, #2] @ movhi 10172 movw r3, #61604 10173 strh r3, [r6] @ movhi 10174 ldr r3, [r4, #2632] 10175 str r3, [r6, #4] 10176 ldr r3, .L1446+12 10177 str r3, [r4, #2468] 10178 ldr r3, .L1446+16 10179 str r3, [r4, #2472] 10180 ldrh r3, [r4, #2630] 10181 strd r5, r5, [r6, #8] 10182 strh r3, [r4, #2476] @ movhi 10183 ldrh r3, [r4, #254] 10184 strb r3, [r4, #2478] 10185 ldrh r3, [r4, #24] 10186 ldrh r2, [r4, #26] 10187 strh r3, [r4, #2482] @ movhi 10188 ldrb r3, [r4, #30] @ zero_extendqisi2 10189 orr r3, r3, r2, lsl #6 10190 strh r3, [r4, #2484] @ movhi 10191 ldrb r3, [r4, #32] @ zero_extendqisi2 10192 strb r3, [r4, #2479] 10193 ldrh r3, [r4, #76] 10194 ldrh r2, [r4, #78] 10195 strh r3, [r4, #2486] @ movhi 10196 ldrb r3, [r4, #82] @ zero_extendqisi2 10197 orr r3, r3, r2, lsl #6 10198 strh r3, [r4, #2488] @ movhi 10199 ldrb r3, [r4, #84] @ zero_extendqisi2 10200 strb r3, [r4, #2480] 10201 ldrh r3, [r4, #124] 10202 strh r3, [r4, #2490] @ movhi 10203 ldrh r2, [r4, #126] 10204 ldrb r3, [r4, #130] @ zero_extendqisi2 10205 ldr r0, [r4, #3460] 10206 orr r3, r3, r2, lsl #6 10207 strh r3, [r4, #2492] @ movhi 10208 ldrb r3, [r4, #132] @ zero_extendqisi2 10209 strb r3, [r4, #2481] 10210 ldr r3, [r4, #2596] 10211 str r3, [r4, #2500] 10212 ldr r3, [r4, #2588] 10213 ldrh r2, [r4, #310] 10214 str r3, [r4, #2508] 10215 ldr r3, [r4, #2592] 10216 str r3, [r4, #2504] 10217 bl ftl_memset 10218 addw r1, r4, #2468 10219 movs r2, #48 10220 ldr r0, [r4, #3460] 10221 bl ftl_memcpy 10222 ldrh r2, [r4, #240] 10223 ldr r0, [r4, #3460] 10224 ldr r1, [r4, #72] 10225 lsls r2, r2, #1 10226 adds r0, r0, #48 10227 bl ftl_memcpy 10228 mov r0, r5 10229 bl FtlUpdateVaildLpn 10230.L1431: 10231 ldrh r1, [r4, #2626] 10232 ldrh r2, [r4, #2624] 10233 ldr r3, [r4, #3300] 10234 str r3, [r4, #3460] 10235 ldr r3, [r4, #3332] 10236 str r3, [r4, #3464] 10237 orr r3, r1, r2, lsl #10 10238 str r3, [r4, #3456] 10239 ldrh r3, [r4, #304] 10240 subs r3, r3, #1 10241 cmp r1, r3 10242 blt .L1432 10243 movs r3, #0 10244 ldrh r7, [r4, #2628] 10245 strh r3, [r4, #2626] @ movhi 10246 strh r2, [r4, #2628] @ movhi 10247 bl FtlFreeSysBlkQueueOut 10248 ldr r3, [r4, #2588] 10249 str r3, [r4, #2632] 10250 adds r2, r3, #1 10251 strh r0, [r4, #2624] @ movhi 10252 str r2, [r4, #2588] 10253 lsls r2, r0, #10 10254 str r2, [r4, #3456] 10255 str r3, [r6, #4] 10256 strh r0, [r6, #2] @ movhi 10257.L1432: 10258 ldrh r1, [r4, #310] 10259 ldr r0, [r4, #3300] 10260 bl js_hash 10261 movs r3, #1 10262 str r0, [r6, #12] 10263 mov r2, r3 10264 mov r1, r3 10265 mov r0, r8 10266 bl FlashProgPages 10267 ldrh r3, [r4, #2626] 10268 ldr r2, [r4, #3452] 10269 adds r3, r3, #1 10270 adds r1, r2, #1 10271 uxth r3, r3 10272 strh r3, [r4, #2626] @ movhi 10273 bne .L1433 10274 cmp r3, #1 10275 bne .L1435 10276 mov r1, r9 10277 mov r0, r10 10278 movw r2, #1145 10279 bl sftl_printk 10280 ldrh r3, [r4, #2626] 10281 cmp r3, #1 10282 ittt eq 10283 ldrheq r3, [r4, #304] 10284 addeq r3, r3, #-1 10285 strheq r3, [r4, #2626] @ movhi 10286.L1435: 10287 adds r5, r5, #1 10288 uxth r5, r5 10289 cmp r5, #3 10290 bls .L1431 10291 ldr r1, [r4, #3456] 10292 mov r2, r5 10293 ldr r0, .L1446+20 10294 bl sftl_printk 10295.L1438: 10296 b .L1438 10297.L1433: 10298 cmp r3, #1 10299 beq .L1431 10300 cmp r2, #256 10301 beq .L1431 10302 movw r3, #65535 10303 cmp r7, r3 10304 beq .L1439 10305 mov r0, r7 10306 movs r1, #1 10307 bl FtlFreeSysBlkQueueIn 10308.L1439: 10309 movs r0, #0 10310 pop {r4, r5, r6, r7, r8, r9, r10, pc} 10311.L1447: 10312 .align 2 10313.L1446: 10314 .word .LANCHOR0 10315 .word .LANCHOR1+471 10316 .word .LC8 10317 .word 1179929683 10318 .word 1342177367 10319 .word .LC120 10320 .fnend 10321 .size FtlVpcTblFlush, .-FtlVpcTblFlush 10322 .align 1 10323 .global FtlSysFlush 10324 .syntax unified 10325 .thumb 10326 .thumb_func 10327 .fpu softvfp 10328 .type FtlSysFlush, %function 10329FtlSysFlush: 10330 .fnstart 10331 @ args = 0, pretend = 0, frame = 0 10332 @ frame_needed = 0, uses_anonymous_args = 0 10333 push {r3, lr} 10334 .save {r3, lr} 10335 bl l2p_flush 10336 movs r0, #1 10337 bl FtlEctTblFlush 10338 bl FtlVpcTblFlush 10339 movs r0, #0 10340 pop {r3, pc} 10341 .fnend 10342 .size FtlSysFlush, .-FtlSysFlush 10343 .align 1 10344 .global sftl_deinit 10345 .syntax unified 10346 .thumb 10347 .thumb_func 10348 .fpu softvfp 10349 .type sftl_deinit, %function 10350sftl_deinit: 10351 .fnstart 10352 @ args = 0, pretend = 0, frame = 0 10353 @ frame_needed = 0, uses_anonymous_args = 0 10354 push {r3, lr} 10355 .save {r3, lr} 10356 ldr r3, .L1451 10357 ldr r3, [r3] 10358 cmp r3, #1 10359 bne .L1450 10360 bl FtlSysFlush 10361.L1450: 10362 movs r0, #0 10363 pop {r3, pc} 10364.L1452: 10365 .align 2 10366.L1451: 10367 .word .LANCHOR2 10368 .fnend 10369 .size sftl_deinit, .-sftl_deinit 10370 .align 1 10371 .global sftl_discard 10372 .syntax unified 10373 .thumb 10374 .thumb_func 10375 .fpu softvfp 10376 .type sftl_discard, %function 10377sftl_discard: 10378 .fnstart 10379 @ args = 0, pretend = 0, frame = 16 10380 @ frame_needed = 0, uses_anonymous_args = 0 10381 push {r4, r5, r6, r7, r8, r9, lr} 10382 .save {r4, r5, r6, r7, r8, r9, lr} 10383 mov r6, r0 10384 ldr r5, .L1471 10385 .pad #20 10386 sub sp, sp, #20 10387 mov r4, r1 10388 mov r3, sp 10389 bic r9, r3, #8160 10390 bic r9, r9, #31 10391 ldr r3, [r9, #24] 10392 str r3, [sp, #12] 10393 ldr r3, [r5, #340] 10394 cmp r3, r0 10395 bls .L1464 10396 cmp r3, r1 10397 bcc .L1464 10398 adds r2, r0, r1 10399 cmp r3, r2 10400 bcc .L1464 10401 cmp r1, #31 10402 bhi .L1455 10403.L1460: 10404 movs r0, #0 10405.L1453: 10406 ldr r2, [sp, #12] 10407 ldr r3, [r9, #24] 10408 cmp r2, r3 10409 beq .L1461 10410 bl __stack_chk_fail 10411.L1455: 10412 ldrh r8, [r5, #258] 10413 mov r1, r8 10414 bl __aeabi_uidiv 10415 mov r7, r0 10416 smulbb r0, r0, r8 10417 subs r6, r6, r0 10418 uxth r6, r6 10419 cbz r6, .L1456 10420 sub r8, r8, r6 10421 adds r7, r7, #1 10422 cmp r8, r4 10423 it cs 10424 movcs r8, r4 10425 uxth r8, r8 10426 sub r4, r4, r8 10427.L1456: 10428 mov r3, #-1 10429 str r3, [sp, #8] 10430.L1457: 10431 ldrh r3, [r5, #258] 10432 cmp r3, r4 10433 bls .L1459 10434 ldr r3, [r5, #3656] 10435 cmp r3, #32 10436 bls .L1460 10437 movs r4, #0 10438 str r4, [r5, #3656] 10439 bl l2p_flush 10440 bl FtlVpcTblFlush 10441 b .L1460 10442.L1459: 10443 add r1, sp, #4 10444 mov r0, r7 10445 movs r2, #0 10446 bl log2phys 10447 ldr r3, [sp, #4] 10448 adds r3, r3, #1 10449 beq .L1458 10450 ldr r3, [r5, #3656] 10451 add r1, sp, #8 10452 movs r2, #1 10453 mov r0, r7 10454 adds r3, r3, #1 10455 str r3, [r5, #3656] 10456 ldr r3, [r5, #2560] 10457 adds r3, r3, #1 10458 str r3, [r5, #2560] 10459 bl log2phys 10460 ldr r0, [sp, #4] 10461 ubfx r0, r0, #10, #16 10462 bl P2V_block_in_plane 10463 bl decrement_vpc_count 10464.L1458: 10465 ldrh r3, [r5, #258] 10466 adds r7, r7, #1 10467 subs r4, r4, r3 10468 b .L1457 10469.L1464: 10470 mov r0, #-1 10471 b .L1453 10472.L1461: 10473 add sp, sp, #20 10474 @ sp needed 10475 pop {r4, r5, r6, r7, r8, r9, pc} 10476.L1472: 10477 .align 2 10478.L1471: 10479 .word .LANCHOR0 10480 .fnend 10481 .size sftl_discard, .-sftl_discard 10482 .section .rodata.str1.1 10483.LC121: 10484 .ascii "FtlCheckVpc %x = %x %x\012\000" 10485 .text 10486 .align 1 10487 .global FtlVpcCheckAndModify 10488 .syntax unified 10489 .thumb 10490 .thumb_func 10491 .fpu softvfp 10492 .type FtlVpcCheckAndModify, %function 10493FtlVpcCheckAndModify: 10494 .fnstart 10495 @ args = 0, pretend = 0, frame = 8 10496 @ frame_needed = 0, uses_anonymous_args = 0 10497 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 10498 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 10499 .pad #12 10500 movs r5, #0 10501 ldr r4, .L1488 10502 mov r3, sp 10503 ldr r1, .L1488+4 10504 bic r7, r3, #8160 10505 ldr r0, .L1488+8 10506 bic r7, r7, #31 10507 ldr r3, [r7, #24] 10508 str r3, [sp, #4] 10509 bl sftl_printk 10510 ldrh r2, [r4, #242] 10511 movs r1, #0 10512 ldr r0, [r4, #3352] 10513 lsls r2, r2, #1 10514 bl ftl_memset 10515.L1474: 10516 ldr r3, [r4, #2552] 10517 cmp r3, r5 10518 bhi .L1476 10519 ldr r9, .L1488+12 10520 mov r8, #0 10521 ldr r10, .L1488+16 10522 ldr fp, .L1488+4 10523.L1477: 10524 ldrh r3, [r4, #240] 10525 uxth r5, r8 10526 cmp r3, r5 10527 bhi .L1483 10528 bl l2p_flush 10529 bl FtlVpcTblFlush 10530 ldr r2, [sp, #4] 10531 ldr r3, [r7, #24] 10532 cmp r2, r3 10533 beq .L1484 10534 bl __stack_chk_fail 10535.L1476: 10536 mov r1, sp 10537 mov r0, r5 10538 movs r2, #0 10539 bl log2phys 10540 ldr r0, [sp] 10541 adds r3, r0, #1 10542 beq .L1475 10543 ubfx r0, r0, #10, #16 10544 bl P2V_block_in_plane 10545 ldr r2, [r4, #3352] 10546 ldrh r3, [r2, r0, lsl #1] 10547 adds r3, r3, #1 10548 strh r3, [r2, r0, lsl #1] @ movhi 10549.L1475: 10550 adds r5, r5, #1 10551 b .L1474 10552.L1483: 10553 ldr r3, [r4, #72] 10554 uxth r6, r8 10555 ldrh r2, [r3, r6, lsl #1] 10556 ldr r3, [r4, #3352] 10557 ldrh r3, [r3, r6, lsl #1] 10558 cmp r2, r3 10559 beq .L1479 10560 movw r1, #65535 10561 cmp r2, r1 10562 beq .L1479 10563 mov r1, r6 10564 mov r0, r9 10565 bl sftl_printk 10566 ldrh r3, [r4, #24] 10567 cmp r3, r5 10568 beq .L1479 10569 ldrh r3, [r4, #124] 10570 cmp r3, r5 10571 beq .L1479 10572 ldrh r3, [r4, #76] 10573 cmp r3, r5 10574 beq .L1479 10575 ldr r3, [r4, #72] 10576 ldr r2, [r4, #3352] 10577 ldrh r1, [r3, r6, lsl #1] 10578 ldrh r2, [r2, r6, lsl #1] 10579 strh r2, [r3, r6, lsl #1] @ movhi 10580 cbnz r1, .L1481 10581 mov r1, r5 10582 mov r0, r10 10583 bl List_remove_node 10584 ldrh r3, [r4, #224] 10585 cbnz r3, .L1482 10586 ldr r0, .L1488+20 10587 mov r1, fp 10588 movw r2, #2330 10589 bl sftl_printk 10590.L1482: 10591 ldrh r3, [r4, #224] 10592 mov r0, r5 10593 subs r3, r3, #1 10594 strh r3, [r4, #224] @ movhi 10595 bl INSERT_DATA_LIST 10596.L1479: 10597 add r8, r8, #1 10598 b .L1477 10599.L1481: 10600 mov r0, r5 10601 bl update_vpc_list 10602 b .L1479 10603.L1484: 10604 add sp, sp, #12 10605 @ sp needed 10606 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 10607.L1489: 10608 .align 2 10609.L1488: 10610 .word .LANCHOR0 10611 .word .LANCHOR1+486 10612 .word .LC111 10613 .word .LC121 10614 .word .LANCHOR0+2532 10615 .word .LC8 10616 .fnend 10617 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify 10618 .align 1 10619 .global allocate_new_data_superblock 10620 .syntax unified 10621 .thumb 10622 .thumb_func 10623 .fpu softvfp 10624 .type allocate_new_data_superblock, %function 10625allocate_new_data_superblock: 10626 .fnstart 10627 @ args = 0, pretend = 0, frame = 0 10628 @ frame_needed = 0, uses_anonymous_args = 0 10629 push {r4, r5, r6, lr} 10630 .save {r4, r5, r6, lr} 10631 mov r5, r0 10632 ldr r6, .L1500 10633 ldrh r4, [r0] 10634 ldrh r3, [r6, #240] 10635 cmp r3, r4 10636 bcs .L1491 10637 ldr r1, .L1500+4 10638 movw r2, #2766 10639 ldr r0, .L1500+8 10640 bl sftl_printk 10641.L1491: 10642 movw r3, #65535 10643 cmp r4, r3 10644 beq .L1492 10645 ldr r3, [r6, #72] 10646 mov r0, r4 10647 ldrh r3, [r3, r4, lsl #1] 10648 cbz r3, .L1493 10649 bl INSERT_DATA_LIST 10650.L1492: 10651 ldrh r0, [r6, #3438] 10652 movs r3, #1 10653 strb r3, [r5, #8] 10654 movw r3, #65535 10655 cmp r0, r3 10656 beq .L1494 10657 cmp r0, r4 10658 bne .L1495 10659 ldr r3, [r6, #72] 10660 ldrh r3, [r3, r4, lsl #1] 10661 cbz r3, .L1496 10662.L1495: 10663 bl update_vpc_list 10664.L1496: 10665 movw r3, #65535 10666 strh r3, [r6, #3438] @ movhi 10667.L1494: 10668 mov r0, r5 10669 bl allocate_data_superblock 10670 bl l2p_flush 10671 movs r0, #0 10672 bl FtlEctTblFlush 10673 bl FtlVpcTblFlush 10674 movs r0, #0 10675 pop {r4, r5, r6, pc} 10676.L1493: 10677 bl INSERT_FREE_LIST 10678 b .L1492 10679.L1501: 10680 .align 2 10681.L1500: 10682 .word .LANCHOR0 10683 .word .LANCHOR1+507 10684 .word .LC8 10685 .fnend 10686 .size allocate_new_data_superblock, .-allocate_new_data_superblock 10687 .section .rodata.str1.1 10688.LC122: 10689 .ascii "FtlProgPages error %x = %d\012\000" 10690.LC123: 10691 .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" 10692 .text 10693 .align 1 10694 .global FtlProgPages 10695 .syntax unified 10696 .thumb 10697 .thumb_func 10698 .fpu softvfp 10699 .type FtlProgPages, %function 10700FtlProgPages: 10701 .fnstart 10702 @ args = 0, pretend = 0, frame = 8 10703 @ frame_needed = 0, uses_anonymous_args = 0 10704 push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr} 10705 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 10706 .pad #12 10707 mov r5, r3 10708 ldr fp, .L1522 10709 mov r3, sp 10710 ldr r10, .L1522+4 10711 bic r7, r3, #8160 10712 mov r9, #0 10713 bic r7, r7, #31 10714 movs r2, #0 10715 mov r4, r0 10716 mov r8, r1 10717 ldr r3, [r7, #24] 10718 str r3, [sp, #4] 10719 ldrb r3, [r5, #9] @ zero_extendqisi2 10720 bl FlashProgPages 10721.L1503: 10722 cmp r9, r8 10723 bne .L1510 10724 ldr r3, .L1522+4 10725 ldrb r2, [r5, #6] @ zero_extendqisi2 10726 ldrh r3, [r3, #232] 10727 cmp r2, r3 10728 bcc .L1502 10729 ldr r1, .L1522+8 10730 mov r2, #1000 10731 ldr r0, .L1522+12 10732 bl sftl_printk 10733.L1502: 10734 ldr r2, [sp, #4] 10735 ldr r3, [r7, #24] 10736 cmp r2, r3 10737 beq .L1512 10738 bl __stack_chk_fail 10739.L1505: 10740 ldr r1, [r4, #4] 10741 mov r0, fp 10742 bl sftl_printk 10743 ldr r0, [r4, #4] 10744 ubfx r0, r0, #10, #16 10745 bl P2V_block_in_plane 10746 bl decrement_vpc_count 10747 ldrh r3, [r5, #4] 10748 cbnz r3, .L1504 10749 mov r0, r5 10750 bl allocate_new_data_superblock 10751.L1504: 10752 mov r0, r5 10753 bl get_new_active_ppa 10754 str r0, [r4, #4] 10755 str r0, [sp] 10756 movs r2, #0 10757 ldrb r3, [r5, #9] @ zero_extendqisi2 10758 mov r0, r4 10759 movs r1, #1 10760 bl FlashProgPages 10761.L1510: 10762 ldr r2, [r4] 10763 adds r1, r2, #1 10764 beq .L1505 10765 cmp r2, #256 10766 beq .L1505 10767 ldrb r2, [r5, #6] @ zero_extendqisi2 10768 ldrh r3, [r10, #232] 10769 cmp r2, r3 10770 bcc .L1506 10771 ldr r1, .L1522+8 10772 movw r2, #985 10773 ldr r0, .L1522+12 10774 bl sftl_printk 10775.L1506: 10776 ldr r3, [r4, #4] 10777 mov r1, sp 10778 ldr r0, [r4, #16] 10779 movs r2, #1 10780 str r3, [sp] 10781 bl log2phys 10782 ldr r3, [r4, #12] 10783 ldr r0, [r3, #12] 10784 adds r3, r0, #1 10785 beq .L1507 10786 ubfx r0, r0, #10, #16 10787 bl P2V_block_in_plane 10788 ldr r3, [r10, #72] 10789 mov r6, r0 10790 ldrh r2, [r3, r0, lsl #1] 10791 cbnz r2, .L1508 10792 mov r1, r0 10793 ldr r0, .L1522+16 10794 bl sftl_printk 10795.L1508: 10796 mov r0, r6 10797 bl decrement_vpc_count 10798.L1507: 10799 add r9, r9, #1 10800 adds r4, r4, #20 10801 b .L1503 10802.L1512: 10803 add sp, sp, #12 10804 @ sp needed 10805 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 10806.L1523: 10807 .align 2 10808.L1522: 10809 .word .LC122 10810 .word .LANCHOR0 10811 .word .LANCHOR1+536 10812 .word .LC8 10813 .word .LC123 10814 .fnend 10815 .size FtlProgPages, .-FtlProgPages 10816 .align 1 10817 .global FtlGcFreeTempBlock 10818 .syntax unified 10819 .thumb 10820 .thumb_func 10821 .fpu softvfp 10822 .type FtlGcFreeTempBlock, %function 10823FtlGcFreeTempBlock: 10824 .fnstart 10825 @ args = 0, pretend = 0, frame = 8 10826 @ frame_needed = 0, uses_anonymous_args = 0 10827 push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr} 10828 .save {r4, r5, r6, r7, r8, r9, r10, lr} 10829 .pad #8 10830 ldr r4, .L1549 10831 mov r3, sp 10832 bic r6, r3, #8160 10833 bic r6, r6, #31 10834 ldrh r2, [r4, #124] 10835 ldrh r1, [r4, #302] 10836 ldr r3, [r6, #24] 10837 str r3, [sp, #4] 10838 movw r3, #65535 10839 cmp r2, r3 10840 bne .L1525 10841.L1532: 10842 ldrh r2, [r4, #124] 10843 movs r3, #0 10844 str r3, [r4, #3444] 10845 movw r3, #65535 10846 cmp r2, r3 10847 bne .L1546 10848.L1526: 10849 movs r0, #0 10850.L1524: 10851 ldr r2, [sp, #4] 10852 ldr r3, [r6, #24] 10853 cmp r2, r3 10854 beq .L1541 10855 bl __stack_chk_fail 10856.L1525: 10857 ldr r5, .L1549+4 10858 cbz r0, .L1528 10859 ldrh r2, [r5, #4] 10860 cmp r2, r3 10861 beq .L1529 10862.L1530: 10863 movs r1, #2 10864.L1528: 10865 ldr r0, .L1549+8 10866 bl FtlGcScanTempBlk 10867 ldrh r2, [r5, #4] 10868 movw r3, #65535 10869 str r0, [sp] 10870 cmp r2, r3 10871 beq .L1532 10872 movs r0, #1 10873 b .L1524 10874.L1529: 10875 movs r3, #0 10876 strh r3, [r5, #4] @ movhi 10877 ldrh r3, [r4, #224] 10878 cmp r3, #17 10879 bhi .L1530 10880 b .L1528 10881.L1546: 10882 ldrb r3, [r4, #131] @ zero_extendqisi2 10883 ldrh r1, [r4, #302] 10884 ldrh r2, [r4, #3204] 10885 muls r3, r1, r3 10886 cmp r2, r3 10887 beq .L1533 10888 ldr r1, .L1549+12 10889 movs r2, #164 10890 ldr r0, .L1549+16 10891 bl sftl_printk 10892.L1533: 10893 ldrb r3, [r4, #131] @ zero_extendqisi2 10894 movs r5, #0 10895 ldrh r0, [r4, #302] 10896 mov r9, #12 10897 ldrh r1, [r4, #124] 10898 ldr r2, [r4, #72] 10899 smulbb r3, r3, r0 10900 strh r3, [r2, r1, lsl #1] @ movhi 10901 ldr r2, [r4, #2576] 10902 ldrh r3, [r4, #3204] 10903 add r3, r3, r2 10904 str r3, [r4, #2576] 10905.L1534: 10906 ldrh r2, [r4, #3204] 10907 uxth r3, r5 10908 cmp r2, r3 10909 bhi .L1538 10910 movw r0, #65535 10911 bl decrement_vpc_count 10912 ldrh r0, [r4, #124] 10913 ldr r3, [r4, #72] 10914 ldrh r3, [r3, r0, lsl #1] 10915 cmp r3, #0 10916 beq .L1539 10917 bl INSERT_DATA_LIST 10918.L1540: 10919 movw r7, #65535 10920 movs r5, #0 10921 strh r7, [r4, #124] @ movhi 10922 strh r5, [r4, #3204] @ movhi 10923 strh r5, [r4, #3196] @ movhi 10924 bl l2p_flush 10925 bl FtlVpcTblFlush 10926 ldrh r3, [r4, #2620] 10927 ldrh r2, [r4, #224] 10928 strh r7, [r4, #172] @ movhi 10929 add r3, r3, r3, lsl #1 10930 cmp r2, r3, lsr #2 10931 ble .L1526 10932 movs r3, #20 10933 strh r3, [r4, #3152] @ movhi 10934 b .L1526 10935.L1538: 10936 uxth r8, r5 10937 ldr r10, [r4, #3200] 10938 ldr r3, [r4, #2552] 10939 mul r8, r9, r8 10940 add r7, r10, r8 10941 ldr r0, [r7, #8] 10942 cmp r0, r3 10943 bcc .L1535 10944.L1547: 10945 ldrh r0, [r4, #124] 10946 b .L1548 10947.L1535: 10948 mov r1, sp 10949 movs r2, #0 10950 bl log2phys 10951 ldr r0, [r10, r8] 10952 ldr r3, [sp] 10953 cmp r0, r3 10954 bne .L1537 10955 ubfx r0, r0, #10, #16 10956 bl P2V_block_in_plane 10957 adds r1, r7, #4 10958 mov r8, r0 10959 movs r2, #1 10960 ldr r0, [r7, #8] 10961 bl log2phys 10962 mov r0, r8 10963.L1548: 10964 bl decrement_vpc_count 10965 b .L1536 10966.L1537: 10967 ldr r2, [r7, #4] 10968 cmp r3, r2 10969 bne .L1547 10970.L1536: 10971 adds r5, r5, #1 10972 b .L1534 10973.L1539: 10974 bl INSERT_FREE_LIST 10975 b .L1540 10976.L1541: 10977 add sp, sp, #8 10978 @ sp needed 10979 pop {r4, r5, r6, r7, r8, r9, r10, pc} 10980.L1550: 10981 .align 2 10982.L1549: 10983 .word .LANCHOR0 10984 .word .LANCHOR2 10985 .word .LANCHOR0+124 10986 .word .LANCHOR1+549 10987 .word .LC8 10988 .fnend 10989 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock 10990 .align 1 10991 .global FtlGcPageRecovery 10992 .syntax unified 10993 .thumb 10994 .thumb_func 10995 .fpu softvfp 10996 .type FtlGcPageRecovery, %function 10997FtlGcPageRecovery: 10998 .fnstart 10999 @ args = 0, pretend = 0, frame = 0 11000 @ frame_needed = 0, uses_anonymous_args = 0 11001 push {r4, lr} 11002 .save {r4, lr} 11003 ldr r4, .L1553 11004 add r0, r4, #124 11005 ldrh r1, [r4, #302] 11006 bl FtlGcScanTempBlk 11007 ldrh r2, [r4, #126] 11008 ldrh r3, [r4, #302] 11009 cmp r2, r3 11010 bcc .L1551 11011 add r0, r4, #3392 11012 bl FtlMapBlkWriteDump_data 11013 movs r0, #0 11014 bl FtlGcFreeTempBlock 11015 movs r3, #0 11016 str r3, [r4, #3444] 11017.L1551: 11018 pop {r4, pc} 11019.L1554: 11020 .align 2 11021.L1553: 11022 .word .LANCHOR0 11023 .fnend 11024 .size FtlGcPageRecovery, .-FtlGcPageRecovery 11025 .align 1 11026 .global FtlPowerLostRecovery 11027 .syntax unified 11028 .thumb 11029 .thumb_func 11030 .fpu softvfp 11031 .type FtlPowerLostRecovery, %function 11032FtlPowerLostRecovery: 11033 .fnstart 11034 @ args = 0, pretend = 0, frame = 0 11035 @ frame_needed = 0, uses_anonymous_args = 0 11036 push {r4, r5, r6, lr} 11037 .save {r4, r5, r6, lr} 11038 movs r5, #0 11039 ldr r4, .L1556 11040 add r6, r4, #24 11041 adds r4, r4, #76 11042 mov r0, r6 11043 str r5, [r4, #3400] 11044 bl FtlRecoverySuperblock 11045 mov r0, r6 11046 bl FtlSlcSuperblockCheck 11047 mov r0, r4 11048 bl FtlRecoverySuperblock 11049 mov r0, r4 11050 bl FtlSlcSuperblockCheck 11051 bl FtlGcPageRecovery 11052 movw r0, #65535 11053 bl decrement_vpc_count 11054 mov r0, r5 11055 pop {r4, r5, r6, pc} 11056.L1557: 11057 .align 2 11058.L1556: 11059 .word .LANCHOR0 11060 .fnend 11061 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery 11062 .align 1 11063 .global Ftl_gc_temp_data_write_back 11064 .syntax unified 11065 .thumb 11066 .thumb_func 11067 .fpu softvfp 11068 .type Ftl_gc_temp_data_write_back, %function 11069Ftl_gc_temp_data_write_back: 11070 .fnstart 11071 @ args = 0, pretend = 0, frame = 0 11072 @ frame_needed = 0, uses_anonymous_args = 0 11073 push {r3, r4, r5, r6, r7, lr} 11074 .save {r3, r4, r5, r6, r7, lr} 11075 movs r5, #0 11076 ldr r4, .L1566 11077 movs r6, #20 11078 movs r3, #0 11079 mov r2, r3 11080 ldr r1, [r4, #3168] 11081 ldr r0, [r4, #3292] 11082 bl FlashProgPages 11083.L1559: 11084 ldr r1, [r4, #3168] 11085 uxth r3, r5 11086 ldr r2, [r4, #3292] 11087 cmp r3, r1 11088 bcc .L1562 11089 mov r0, r2 11090 bl FtlGcBufFree 11091 ldrh r3, [r4, #128] 11092 movs r0, #0 11093 str r0, [r4, #3168] 11094 cbnz r3, .L1558 11095 movs r0, #1 11096 bl FtlGcFreeTempBlock 11097 movs r0, #1 11098.L1558: 11099 pop {r3, r4, r5, r6, r7, pc} 11100.L1562: 11101 muls r3, r6, r3 11102 adds r5, r5, #1 11103 adds r1, r2, r3 11104 ldr r2, [r2, r3] 11105 ldr r7, [r1, #12] 11106 adds r3, r2, #1 11107 ldr r1, [r1, #4] 11108 ldr r0, [r7, #12] 11109 it ne 11110 ldrne r2, [r7, #8] 11111 bl FtlGcUpdatePage 11112 b .L1559 11113.L1567: 11114 .align 2 11115.L1566: 11116 .word .LANCHOR0 11117 .fnend 11118 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back 11119 .align 1 11120 .global Ftl_get_new_temp_ppa 11121 .syntax unified 11122 .thumb 11123 .thumb_func 11124 .fpu softvfp 11125 .type Ftl_get_new_temp_ppa, %function 11126Ftl_get_new_temp_ppa: 11127 .fnstart 11128 @ args = 0, pretend = 0, frame = 0 11129 @ frame_needed = 0, uses_anonymous_args = 0 11130 push {r3, r4, r5, lr} 11131 .save {r3, r4, r5, lr} 11132 movw r3, #65535 11133 ldr r4, .L1571 11134 ldrh r2, [r4, #124] 11135 cmp r2, r3 11136 beq .L1569 11137 ldrh r3, [r4, #128] 11138 cbnz r3, .L1570 11139.L1569: 11140 movs r0, #0 11141 movs r5, #0 11142 bl FtlGcFreeTempBlock 11143 ldr r0, .L1571+4 11144 strb r5, [r4, #132] 11145 bl allocate_data_superblock 11146 strh r5, [r4, #3196] @ movhi 11147 strh r5, [r4, #3204] @ movhi 11148 bl l2p_flush 11149 mov r0, r5 11150 bl FtlEctTblFlush 11151 bl FtlVpcTblFlush 11152.L1570: 11153 pop {r3, r4, r5, lr} 11154 ldr r0, .L1571+4 11155 b get_new_active_ppa 11156.L1572: 11157 .align 2 11158.L1571: 11159 .word .LANCHOR0 11160 .word .LANCHOR0+124 11161 .fnend 11162 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa 11163 .section .rodata.str1.1 11164.LC124: 11165 .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" 11166 .text 11167 .align 1 11168 .global rk_ftl_garbage_collect 11169 .syntax unified 11170 .thumb 11171 .thumb_func 11172 .fpu softvfp 11173 .type rk_ftl_garbage_collect, %function 11174rk_ftl_garbage_collect: 11175 .fnstart 11176 @ args = 0, pretend = 0, frame = 32 11177 @ frame_needed = 0, uses_anonymous_args = 0 11178 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 11179 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 11180 ldr r4, .L1687 11181 .pad #44 11182 sub sp, sp, #44 11183 mov r3, sp 11184 bic r3, r3, #8160 11185 bic r3, r3, #31 11186 str r0, [sp, #16] 11187 ldr r0, [r4, #3272] 11188 ldr r3, [r3, #24] 11189 str r3, [sp, #36] 11190 cmp r0, #0 11191 bne .L1651 11192 ldrh r3, [r4, #2528] 11193 cmp r3, #47 11194 bls .L1573 11195 ldr r3, .L1687+4 11196 ldrh r2, [r3, #4] 11197 movw r3, #65535 11198 cmp r2, r3 11199 bne .L1575 11200.L1578: 11201 ldrh r2, [r4, #220] 11202 movw r1, #65535 11203 cmp r2, r1 11204 bne .L1576 11205.L1577: 11206 bl FtlReadRefresh 11207 ldr r3, [r4, #3156] 11208 ldr r2, [sp, #16] 11209 adds r3, r3, #1 11210 ldrh r6, [r4, #172] 11211 add r3, r3, r2, lsl #7 11212 ldrh r2, [r4, #124] 11213 str r3, [r4, #3156] 11214 ands r6, r6, r2 11215 ldrh r2, [r4, #222] 11216 ands r6, r6, r2 11217 movw r2, #65535 11218 cmp r6, r2 11219 bne .L1579 11220 ldrh r2, [r4, #224] 11221 cmp r2, #24 11222 ite cc 11223 movcc r2, #5120 11224 movcs r2, #1024 11225 cmp r3, r2 11226 bls .L1579 11227 movs r7, #0 11228 str r7, [r4, #3156] 11229 strh r7, [r4, #3660] @ movhi 11230 bl GetSwlReplaceBlock 11231 mov r5, r0 11232 cmp r0, r6 11233 bne .L1581 11234 ldrh r2, [r4, #224] 11235 ldrh r3, [r4, #3154] 11236 cmp r2, r3 11237 bcs .L1582 11238 movs r0, #64 11239 bl List_get_gc_head_node 11240 uxth r3, r0 11241 cmp r3, r5 11242 beq .L1584 11243 mov r0, r3 11244 ldr r3, [r4, #72] 11245 ldrh r3, [r3, r0, lsl #1] 11246 cmp r3, #7 11247 bhi .L1585 11248 mov r0, r7 11249 bl List_get_gc_head_node 11250 uxth r0, r0 11251 movs r3, #128 11252 cmp r0, r5 11253 strh r3, [r4, #3154] @ movhi 11254 beq .L1584 11255 mov r5, r0 11256.L1581: 11257 ldr r3, [r4, #72] 11258 mov r1, r5 11259 ldrh r2, [r4, #3152] 11260 ldr r0, .L1687+8 11261 ldrh r3, [r3, r5, lsl #1] 11262 str r2, [sp, #4] 11263 ldr r2, [r4, #2536] 11264 ldrh r2, [r2, r5, lsl #1] 11265 str r2, [sp] 11266 ldrh r2, [r4, #224] 11267 bl sftl_printk 11268 b .L1584 11269.L1575: 11270 ldrh r2, [r4, #124] 11271 cmp r2, r3 11272 beq .L1578 11273 movs r0, #1 11274 bl FtlGcFreeTempBlock 11275 cmp r0, #0 11276 beq .L1578 11277 movs r0, #1 11278 b .L1573 11279.L1576: 11280 ldrh r3, [r4, #222] 11281 cmp r3, r1 11282 itt eq 11283 strheq r2, [r4, #222] @ movhi 11284 strheq r3, [r4, #220] @ movhi 11285 b .L1577 11286.L1585: 11287 movs r3, #64 11288.L1683: 11289 strh r3, [r4, #3154] @ movhi 11290.L1584: 11291 bl FtlGcReFreshBadBlk 11292 ldr r3, [sp, #16] 11293 cmp r3, #0 11294 bne .L1587 11295 movw r3, #65535 11296 cmp r5, r3 11297 bne .L1587 11298.L1649: 11299 ldrh r3, [r4, #224] 11300 cmp r3, #24 11301 bhi .L1656 11302 ldrh r6, [r4, #302] 11303 cmp r3, #16 11304 bls .L1589 11305 lsrs r6, r6, #5 11306.L1588: 11307 ldrh r2, [r4, #3152] 11308 cmp r2, r3 11309 bcs .L1591 11310 ldrh r2, [r4, #222] 11311 ldrh r3, [r4, #124] 11312 ands r3, r3, r2 11313 movw r2, #65535 11314 cmp r3, r2 11315 bne .L1592 11316 ldrh r0, [r4, #3660] 11317 cbnz r0, .L1593 11318 ldr r3, [r4, #2552] 11319 ldr r2, [r4, #2548] 11320 add r3, r3, r3, lsl #1 11321 cmp r2, r3, lsr #2 11322 bcs .L1657 11323.L1593: 11324 ldrh r3, [r4, #2620] 11325 add r3, r3, r3, lsl #1 11326 lsrs r3, r3, #2 11327.L1594: 11328 strh r3, [r4, #3152] @ movhi 11329 movs r3, #0 11330 str r3, [r4, #3164] 11331.L1573: 11332 mov r3, sp 11333 ldr r2, [sp, #36] 11334 bic r3, r3, #8160 11335 bic r3, r3, #31 11336 ldr r3, [r3, #24] 11337 cmp r2, r3 11338 beq .L1650 11339 bl __stack_chk_fail 11340.L1582: 11341 movs r3, #80 11342 b .L1683 11343.L1589: 11344 cmp r3, #12 11345 bls .L1590 11346 lsrs r6, r6, #4 11347 b .L1588 11348.L1590: 11349 cmp r3, #8 11350 bls .L1588 11351 lsrs r6, r6, #2 11352 b .L1588 11353.L1656: 11354 movs r6, #1 11355 b .L1588 11356.L1657: 11357 movs r3, #18 11358 b .L1594 11359.L1592: 11360 ldrh r3, [r4, #2620] 11361 add r3, r3, r3, lsl #1 11362 asrs r3, r3, #2 11363 strh r3, [r4, #3152] @ movhi 11364.L1591: 11365 ldrh r3, [r4, #3206] 11366 cbz r3, .L1658 11367 adds r6, r6, #32 11368 uxth r6, r6 11369.L1658: 11370 movw r5, #65535 11371.L1596: 11372 ldrh r3, [r4, #172] 11373 movw r2, #65535 11374 cmp r3, r2 11375 bne .L1604 11376 cmp r5, r3 11377 beq .L1605 11378 strh r5, [r4, #172] @ movhi 11379.L1606: 11380 ldrh r0, [r4, #172] 11381 movs r3, #0 11382 movw r8, #65535 11383 strb r3, [r4, #180] 11384 cmp r0, r8 11385 beq .L1604 11386 bl IsBlkInGcList 11387 mov r7, r0 11388 cmp r0, #0 11389 beq .L1609 11390 strh r8, [r4, #172] @ movhi 11391.L1604: 11392 ldrh r3, [r4, #172] 11393 ldrh r2, [r4, #24] 11394 cmp r2, r3 11395 beq .L1610 11396 ldrh r2, [r4, #76] 11397 cmp r2, r3 11398 beq .L1610 11399 ldrh r2, [r4, #124] 11400 cmp r2, r3 11401 bne .L1611 11402.L1610: 11403 movw r3, #65535 11404 strh r3, [r4, #172] @ movhi 11405.L1611: 11406 ldr r4, .L1687 11407.L1647: 11408 ldrh r8, [r4, #172] 11409 movw r3, #65535 11410 cmp r8, r3 11411 bne .L1612 11412 mov r9, #0 11413 str r9, [r4, #3164] 11414.L1613: 11415 ldrh r7, [r4, #3160] 11416 mov r0, r7 11417 bl List_get_gc_head_node 11418 uxth fp, r0 11419 mov r10, r0 11420 cmp fp, r8 11421 strh fp, [r4, #172] @ movhi 11422 bne .L1614 11423 movs r3, #0 11424 movs r0, #8 11425 strh r3, [r4, #3160] @ movhi 11426 b .L1573 11427.L1597: 11428 movs r3, #0 11429 ldrh r2, [r4, #224] 11430 str r3, [r4, #3164] 11431 ldrh r3, [r4, #3152] 11432 cmp r2, r3 11433 bls .L1598 11434 ldrh r3, [r4, #3660] 11435 cbnz r3, .L1599 11436 ldr r3, [r4, #2552] 11437 ldr r2, [r4, #2548] 11438 add r3, r3, r3, lsl #1 11439 cmp r2, r3, lsr #2 11440 bcs .L1660 11441.L1599: 11442 ldrh r3, [r4, #2620] 11443 add r3, r3, r3, lsl #1 11444 lsrs r3, r3, #2 11445.L1600: 11446 strh r3, [r4, #3152] @ movhi 11447 bl FtlReadRefresh 11448 movs r0, #0 11449 bl List_get_gc_head_node 11450 ldr r3, [r4, #72] 11451 uxth r0, r0 11452 ldrh r3, [r3, r0, lsl #1] 11453 cmp r3, #4 11454 bls .L1598 11455.L1686: 11456 ldrh r0, [r4, #3660] 11457 b .L1573 11458.L1660: 11459 movs r3, #18 11460 b .L1600 11461.L1598: 11462 ldrh r0, [r4, #3660] 11463 cmp r0, #0 11464 bne .L1601 11465 ldrh r5, [r4, #2620] 11466 add r3, r5, r5, lsl #1 11467 asrs r3, r3, #2 11468 strh r3, [r4, #3152] @ movhi 11469 bl List_get_gc_head_node 11470 ldr r3, [r4, #72] 11471 uxth r0, r0 11472 ldrh r1, [r4, #232] 11473 ldrh r2, [r3, r0, lsl #1] 11474 ldrh r3, [r4, #304] 11475 muls r3, r1, r3 11476 add r3, r3, r3, lsr #31 11477 cmp r2, r3, asr #1 11478 ble .L1602 11479 ldrh r1, [r4, #224] 11480 subs r3, r5, #1 11481 cmp r1, r3 11482 blt .L1602 11483 bl FtlReadRefresh 11484 b .L1686 11485.L1688: 11486 .align 2 11487.L1687: 11488 .word .LANCHOR0 11489 .word .LANCHOR2 11490 .word .LC124 11491.L1602: 11492 cmp r2, #0 11493 bne .L1601 11494 movw r0, #65535 11495 bl decrement_vpc_count 11496 ldrh r0, [r4, #224] 11497 adds r0, r0, #1 11498 b .L1573 11499.L1605: 11500 ldrh r3, [r4, #222] 11501 cmp r3, r5 11502 beq .L1606 11503 ldr r2, [r4, #72] 11504 ldrh r3, [r2, r3, lsl #1] 11505 cbnz r3, .L1607 11506 strh r5, [r4, #222] @ movhi 11507.L1607: 11508 ldrh r3, [r4, #222] 11509 strh r3, [r4, #172] @ movhi 11510 movw r3, #65535 11511 strh r3, [r4, #222] @ movhi 11512 b .L1606 11513.L1614: 11514 mov r0, fp 11515 bl IsBlkInGcList 11516 adds r3, r7, #1 11517 uxth r3, r3 11518 cbz r0, .L1615 11519.L1684: 11520 strh r3, [r4, #3160] @ movhi 11521 b .L1613 11522.L1615: 11523 ldrh r7, [r4, #232] 11524 uxth r10, r10 11525 ldrh r2, [r4, #302] 11526 ldr r1, [r4, #72] 11527 strh r3, [r4, #3160] @ movhi 11528 muls r2, r7, r2 11529 ldrh r0, [r1, r10, lsl #1] 11530 add r7, r2, r2, lsr #31 11531 cmp r0, r7, asr #1 11532 bgt .L1617 11533 cmp r3, #48 11534 bls .L1618 11535 cmp r0, #8 11536 bls .L1618 11537 ldrh r3, [r4, #3196] 11538 cmp r3, #35 11539 bhi .L1618 11540.L1617: 11541 strh r9, [r4, #3160] @ movhi 11542.L1618: 11543 ldrh r3, [r1, r10, lsl #1] 11544 cmp r2, r3 11545 bgt .L1619 11546 cmp r5, r8 11547 bne .L1619 11548 ldrh r2, [r4, #3160] 11549 cmp r2, #3 11550 bhi .L1619 11551 movs r3, #0 11552 strh r5, [r4, #172] @ movhi 11553 strh r3, [r4, #3160] @ movhi 11554 b .L1686 11555.L1619: 11556 cbnz r3, .L1620 11557 movw r0, #65535 11558 bl decrement_vpc_count 11559 ldrh r3, [r4, #3160] 11560 adds r3, r3, #1 11561 b .L1684 11562.L1620: 11563 movs r3, #0 11564 strb r3, [r4, #180] 11565 ldrh r3, [r4, #24] 11566 cmp r3, fp 11567 bne .L1621 11568 ldr r1, .L1689 11569 movw r2, #717 11570 ldr r0, .L1689+4 11571 bl sftl_printk 11572.L1621: 11573 ldrh r2, [r4, #172] 11574 ldrh r3, [r4, #76] 11575 cmp r2, r3 11576 bne .L1622 11577 ldr r1, .L1689 11578 movw r2, #718 11579 ldr r0, .L1689+4 11580 bl sftl_printk 11581.L1622: 11582 ldrh r2, [r4, #172] 11583 ldrh r3, [r4, #124] 11584 cmp r2, r3 11585 bne .L1623 11586 ldr r1, .L1689 11587 movw r2, #719 11588 ldr r0, .L1689+4 11589 bl sftl_printk 11590.L1623: 11591 ldr r0, .L1689+8 11592 bl make_superblock 11593 ldrh r1, [r4, #172] 11594 ldr r2, [r4, #72] 11595 movs r3, #0 11596 strh r3, [r4, #3662] @ movhi 11597 ldrh r2, [r2, r1, lsl #1] 11598 strh r2, [r4, #3664] @ movhi 11599 strh r3, [r4, #174] @ movhi 11600 strb r3, [r4, #178] 11601.L1612: 11602 movs r3, #1 11603 str r3, [r4, #3272] 11604 ldr r3, [sp, #16] 11605 ldrh fp, [r4, #302] 11606 cbz r3, .L1624 11607 ldrh r3, [r4, #232] 11608 ldrh r1, [r4, #172] 11609 ldr r2, [r4, #72] 11610 mul r3, fp, r3 11611 ldrh r2, [r2, r1, lsl #1] 11612 subs r3, r3, r2 11613 it mi 11614 addmi r3, r3, #3 11615 add r6, r6, r3, asr #2 11616 uxth r6, r6 11617.L1624: 11618 ldrh r3, [r4, #174] 11619 adds r2, r3, r6 11620 cmp r2, fp 11621 itt gt 11622 subgt r3, fp, r3 11623 uxthgt r6, r3 11624 movs r3, #0 11625.L1685: 11626 str r3, [sp, #12] 11627 ldrh r3, [r4, #174] 11628 ldrh r2, [sp, #12] 11629 cmp r6, r2 11630 bls .L1635 11631 ldr r2, [sp, #12] 11632 movw r9, #65535 11633 ldrh lr, [r4, #232] 11634 mov r10, #20 11635 add r3, r3, r2 11636 ldr r0, [r4, #3184] 11637 movs r2, #0 11638 ldr ip, .L1689+12 11639 mov r7, r2 11640 b .L1636 11641.L1629: 11642 ldrh r1, [ip], #2 11643 cmp r1, r9 11644 beq .L1628 11645 mla r8, r10, r7, r0 11646 adds r7, r7, #1 11647 orr r1, r3, r1, lsl #10 11648 uxth r7, r7 11649 str r1, [r8, #4] 11650.L1628: 11651 adds r2, r2, #1 11652.L1636: 11653 uxth r1, r2 11654 cmp lr, r1 11655 bhi .L1629 11656 mov r10, #0 11657 ldrb r2, [r4, #180] @ zero_extendqisi2 11658 mov r1, r7 11659 bl FlashReadPages 11660.L1630: 11661 uxth r3, r10 11662 cmp r7, r3 11663 bhi .L1634 11664 ldr r3, [sp, #12] 11665 adds r3, r3, #1 11666 b .L1685 11667.L1634: 11668 mov r8, #20 11669 ldr r3, [r4, #3184] 11670 mul r8, r8, r10 11671 add r2, r3, r8 11672 ldr r3, [r3, r8] 11673 adds r3, r3, #1 11674 beq .L1631 11675 ldr r9, [r2, #12] 11676 movw r3, #61589 11677 ldrh r2, [r9] 11678 cmp r2, r3 11679 bne .L1631 11680 ldr r3, [r9, #8] 11681 adds r2, r3, #1 11682 bne .L1632 11683 ldr r1, .L1689 11684 movw r2, #753 11685 ldr r0, .L1689+4 11686 str r3, [sp, #20] 11687 bl sftl_printk 11688 ldr r3, [sp, #20] 11689.L1632: 11690 mov r0, r3 11691 movs r2, #0 11692 add r1, sp, #28 11693 bl log2phys 11694 ldr r0, [r4, #3184] 11695 ldr r3, [sp, #28] 11696 add r0, r0, r8 11697 ldr r2, [r0, #4] 11698 cmp r2, r3 11699 bne .L1631 11700 ldrh r3, [r4, #3662] 11701 movs r2, #20 11702 ldr r1, [r4, #3168] 11703 adds r3, r3, #1 11704 strh r3, [r4, #3662] @ movhi 11705 ldr r3, [r4, #3292] 11706 mla r3, r2, r1, r3 11707 ldr r1, [r0, #16] 11708 str r3, [sp, #20] 11709 str r1, [r3, #16] 11710 bl Ftl_get_new_temp_ppa 11711 ldr r3, [sp, #20] 11712 ldr r1, [r4, #3168] 11713 movs r2, #20 11714 str r0, [r3, #4] 11715 ldr r3, [r4, #3292] 11716 ldr r0, [r4, #3184] 11717 add r0, r0, r8 11718 mla r3, r2, r1, r3 11719 movs r1, #1 11720 ldr r2, [r0, #8] 11721 str r2, [r3, #8] 11722 ldr r2, [r0, #12] 11723 str r2, [r3, #12] 11724 ldr r3, [sp, #28] 11725 str r3, [r9, #12] 11726 ldrh r3, [r4, #124] 11727 strh r3, [r9, #2] @ movhi 11728 ldr r3, [r4, #2592] 11729 ldr r0, [r4, #3184] 11730 str r3, [r9, #4] 11731 ldr r3, [r4, #3168] 11732 add r0, r0, r8 11733 adds r3, r3, #1 11734 str r3, [r4, #3168] 11735 bl FtlGcBufAlloc 11736 ldrb r2, [r4, #131] @ zero_extendqisi2 11737 ldr r3, [r4, #3168] 11738 cmp r2, r3 11739 beq .L1633 11740 ldrh r3, [r4, #128] 11741 cbnz r3, .L1631 11742.L1633: 11743 bl Ftl_gc_temp_data_write_back 11744 cbz r0, .L1631 11745 ldr r3, .L1689+16 11746 movs r2, #0 11747 ldrh r0, [r3, #3660] 11748 str r2, [r3, #3272] 11749 movw r2, #65535 11750 str r2, [r3, #172] 11751 b .L1573 11752.L1631: 11753 add r10, r10, #1 11754 b .L1630 11755.L1635: 11756 add r6, r6, r3 11757 uxth r6, r6 11758 strh r6, [r4, #174] @ movhi 11759 cmp fp, r6 11760 bhi .L1637 11761 ldr r3, [r4, #3168] 11762 cbz r3, .L1638 11763 bl Ftl_gc_temp_data_write_back 11764 cbz r0, .L1638 11765 movs r3, #0 11766 str r3, [r4, #3272] 11767 b .L1686 11768.L1638: 11769 ldrh r6, [r4, #3662] 11770 cbnz r6, .L1639 11771 ldrh r2, [r4, #172] 11772 ldr r3, [r4, #72] 11773 ldrh r3, [r3, r2, lsl #1] 11774 cbz r3, .L1639 11775.L1640: 11776 ldr r3, [r4, #2552] 11777 cmp r6, r3 11778 bcc .L1643 11779.L1645: 11780 ldrh r2, [r4, #172] 11781 movs r1, #0 11782 ldr r3, [r4, #72] 11783 strh r1, [r3, r2, lsl #1] @ movhi 11784 ldrh r0, [r4, #172] 11785 bl update_vpc_list 11786 bl l2p_flush 11787 bl FtlVpcTblFlush 11788.L1639: 11789 movw r3, #65535 11790 strh r3, [r4, #172] @ movhi 11791.L1637: 11792 movs r3, #0 11793 str r3, [r4, #3272] 11794 ldrh r3, [r4, #224] 11795 cmp r3, #2 11796 bhi .L1646 11797 ldrh r6, [r4, #302] 11798 b .L1647 11799.L1643: 11800 add r1, sp, #32 11801 mov r0, r6 11802 movs r2, #0 11803 bl log2phys 11804 ldr r0, [sp, #32] 11805 adds r3, r0, #1 11806 beq .L1641 11807 ubfx r0, r0, #10, #16 11808 bl P2V_block_in_plane 11809 ldrh r3, [r4, #172] 11810 cmp r3, r0 11811 beq .L1642 11812.L1641: 11813 adds r6, r6, #1 11814 b .L1640 11815.L1642: 11816 ldr r3, [r4, #2552] 11817 cmp r6, r3 11818 bcc .L1639 11819 b .L1645 11820.L1646: 11821 ldrh r0, [r4, #3660] 11822 cmp r0, #0 11823 bne .L1573 11824 adds r0, r3, #1 11825 b .L1573 11826.L1651: 11827 movs r0, #0 11828 b .L1573 11829.L1579: 11830 ldr r3, [sp, #16] 11831 cmp r3, #0 11832 beq .L1649 11833 movw r5, #65535 11834.L1587: 11835 ldrh r3, [r4, #222] 11836 ldrh r6, [r4, #124] 11837 ands r6, r6, r3 11838 movw r3, #65535 11839 ands r6, r6, r5 11840 uxth r6, r6 11841 cmp r6, r3 11842 bne .L1659 11843 ldrh r3, [r4, #172] 11844 cmp r3, r6 11845 beq .L1597 11846.L1601: 11847 mov r5, r6 11848.L1659: 11849 movs r6, #1 11850 b .L1596 11851.L1609: 11852 ldr r0, .L1689+8 11853 bl make_superblock 11854 ldrh r2, [r4, #172] 11855 ldr r3, [r4, #72] 11856 strh r7, [r4, #174] @ movhi 11857 strb r7, [r4, #178] 11858 strh r7, [r4, #3662] @ movhi 11859 ldrh r3, [r3, r2, lsl #1] 11860 strh r3, [r4, #3664] @ movhi 11861 b .L1604 11862.L1690: 11863 .align 2 11864.L1689: 11865 .word .LANCHOR1+568 11866 .word .LC8 11867 .word .LANCHOR0+172 11868 .word .LANCHOR0+188 11869 .word .LANCHOR0 11870.L1650: 11871 add sp, sp, #44 11872 @ sp needed 11873 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 11874 .fnend 11875 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect 11876 .align 1 11877 .global FtlRead 11878 .syntax unified 11879 .thumb 11880 .thumb_func 11881 .fpu softvfp 11882 .type FtlRead, %function 11883FtlRead: 11884 .fnstart 11885 @ args = 0, pretend = 0, frame = 56 11886 @ frame_needed = 0, uses_anonymous_args = 0 11887 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 11888 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 11889 mov r8, r3 11890 mov r5, r1 11891 .pad #60 11892 sub sp, sp, #60 11893 cmp r0, #16 11894 mov r3, sp 11895 bic r3, r3, #8160 11896 bic r3, r3, #31 11897 str r2, [sp, #4] 11898 ldr r2, [r3, #24] 11899 str r2, [sp, #52] 11900 bne .L1692 11901 ldr r2, [sp, #52] 11902 ldr r3, [r3, #24] 11903 cmp r2, r3 11904 beq .L1693 11905.L1730: 11906 bl __stack_chk_fail 11907.L1693: 11908 ldr r1, [sp, #4] 11909 mov r2, r8 11910 add r0, r5, #256 11911 add sp, sp, #60 11912 @ sp needed 11913 pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} 11914 b FtlVendorPartRead 11915.L1692: 11916 ldr r4, .L1731 11917 ldr r3, [r4, #340] 11918 cmp r3, r1 11919 bls .L1718 11920 ldr r2, [sp, #4] 11921 cmp r3, r2 11922 bcc .L1718 11923 adds r2, r1, r2 11924 str r2, [sp, #8] 11925 cmp r3, r2 11926 bcc .L1718 11927 ldr r3, .L1731+4 11928 ldr r6, [r3] 11929 adds r7, r6, #1 11930 beq .L1691 11931 ldrh r6, [r4, #258] 11932 mov r0, r5 11933 mov r10, #0 11934 mov r7, r10 11935 mov r1, r6 11936 bl __aeabi_uidiv 11937 ldr r3, [sp, #8] 11938 mov r1, r6 11939 str r0, [sp, #16] 11940 subs r0, r3, #1 11941 mov r6, r10 11942 bl __aeabi_uidiv 11943 ldr r3, [sp, #16] 11944 ldr r2, [sp, #4] 11945 rsb r3, r3, #1 11946 ldr r9, [sp, #16] 11947 add r3, r3, r0 11948 str r3, [sp, #12] 11949 ldr r3, [r4, #2584] 11950 str r0, [sp, #20] 11951 add r3, r3, r2 11952 ldr r2, [sp, #12] 11953 str r3, [r4, #2584] 11954 ldr r3, [r4, #2556] 11955 strd r10, r10, [sp, #24] 11956 add r3, r3, r2 11957 str r3, [r4, #2556] 11958.L1695: 11959 ldr r3, [sp, #12] 11960 cbnz r3, .L1713 11961 ldr r3, .L1731 11962 ldrh r2, [r3, #3206] 11963 cbnz r2, .L1714 11964 ldrh r3, [r3, #224] 11965 cmp r3, #31 11966 bhi .L1691 11967.L1714: 11968 movs r1, #1 11969 movs r0, #0 11970 bl rk_ftl_garbage_collect 11971.L1691: 11972 mov r3, sp 11973 ldr r2, [sp, #52] 11974 bic r3, r3, #8160 11975 bic r3, r3, #31 11976 ldr r3, [r3, #24] 11977 cmp r2, r3 11978 bne .L1730 11979 mov r0, r6 11980 add sp, sp, #60 11981 @ sp needed 11982 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 11983.L1713: 11984 add r1, sp, #48 11985 mov r0, r9 11986 movs r2, #0 11987 bl log2phys 11988 ldr r3, [sp, #48] 11989 adds r0, r3, #1 11990 bne .L1728 11991 mov fp, #0 11992 b .L1696 11993.L1699: 11994 mla r0, r9, r0, fp 11995 cmp r5, r0 11996 bhi .L1698 11997 ldr r3, [sp, #8] 11998 cmp r3, r0 11999 bls .L1698 12000 subs r0, r0, r5 12001 mov r2, #512 12002 movs r1, #0 12003 add r0, r8, r0, lsl #9 12004 bl ftl_memset 12005.L1698: 12006 add fp, fp, #1 12007.L1696: 12008 ldrh r0, [r4, #258] 12009 cmp r0, fp 12010 bhi .L1699 12011.L1700: 12012 ldr r3, [sp, #12] 12013 add r9, r9, #1 12014 subs r3, r3, #1 12015 str r3, [sp, #12] 12016 beq .L1705 12017 ldrh r3, [r4, #232] 12018 cmp r7, r3, lsl #2 12019 bne .L1695 12020.L1705: 12021 cmp r7, #0 12022 beq .L1695 12023 ldr r0, [r4, #3288] 12024 mov r1, r7 12025 movs r2, #0 12026 mov fp, #0 12027 bl FlashReadPages 12028 lsl r3, r10, #9 12029 str r3, [sp, #40] 12030 ldr r3, [sp, #24] 12031 lsls r3, r3, #9 12032 str r3, [sp, #32] 12033 ldr r3, [sp, #28] 12034 lsls r3, r3, #9 12035 str r3, [sp, #36] 12036.L1712: 12037 movs r3, #20 12038 ldr r2, [r4, #3288] 12039 ldr r0, [sp, #16] 12040 mul r3, r3, fp 12041 add r2, r2, r3 12042 ldr r1, [r2, #16] 12043 cmp r1, r0 12044 bne .L1707 12045 ldr r1, [r2, #8] 12046 ldr r2, [r4, #3312] 12047 cmp r1, r2 12048 bne .L1708 12049 str r3, [sp, #44] 12050 mov r0, r8 12051 ldrd r3, r2, [sp, #32] 12052 add r1, r1, r3 12053.L1729: 12054 bl ftl_memcpy 12055 ldr r3, [sp, #44] 12056.L1708: 12057 ldr ip, [r4, #3288] 12058 add r2, ip, r3 12059 ldrd r0, r1, [r2, #12] 12060 ldr r0, [r0, #8] 12061 cmp r1, r0 12062 ittt ne 12063 ldrne r1, [r4, #2712] 12064 addne r1, r1, #1 12065 strne r1, [r4, #2712] 12066 ldr r0, [ip, r3] 12067 adds r1, r0, #1 12068 itttt eq 12069 moveq r6, r0 12070 ldreq r1, [r4, #2712] 12071 addeq r1, r1, #1 12072 streq r1, [r4, #2712] 12073 ldr r3, [ip, r3] 12074 cmp r3, #256 12075 bne .L1711 12076 ldr r0, [r2, #4] 12077 ubfx r0, r0, #10, #16 12078 bl P2V_block_in_plane 12079 bl FtlGcRefreshBlock 12080.L1711: 12081 add fp, fp, #1 12082 cmp r7, fp 12083 bne .L1712 12084 movs r7, #0 12085 b .L1695 12086.L1728: 12087 ldr r2, [r4, #3288] 12088 mov fp, #20 12089 mla fp, fp, r7, r2 12090 str r3, [fp, #4] 12091 ldr r3, [sp, #16] 12092 cmp r9, r3 12093 ldrh r3, [r4, #258] 12094 bne .L1701 12095 ldr r2, [r4, #3312] 12096 mov r1, r3 12097 str r2, [fp, #8] 12098 mov r0, r5 12099 str r3, [sp, #28] 12100 bl __aeabi_uidivmod 12101 ldr r3, [sp, #28] 12102 str r1, [sp, #24] 12103 subs r2, r3, r1 12104 ldr r1, [sp, #4] 12105 cmp r2, r1 12106 it cs 12107 movcs r2, r1 12108 str r2, [sp, #28] 12109 cmp r3, r2 12110 bne .L1702 12111 str r8, [fp, #8] 12112.L1702: 12113 ldrh r3, [r4, #312] 12114 ldr r2, [r4, #3336] 12115 muls r3, r7, r3 12116 adds r7, r7, #1 12117 bic r3, r3, #3 12118 add r3, r3, r2 12119 strd r3, r9, [fp, #12] 12120 b .L1700 12121.L1701: 12122 ldr r1, [sp, #20] 12123 mul r2, r3, r9 12124 cmp r9, r1 12125 bne .L1703 12126 ldr r1, [sp, #8] 12127 sub r10, r1, r2 12128 cmp r10, r3 12129 beq .L1703 12130 ldr r3, [r4, #3316] 12131 str r3, [fp, #8] 12132 b .L1702 12133.L1703: 12134 subs r2, r2, r5 12135 add r2, r8, r2, lsl #9 12136 str r2, [fp, #8] 12137 b .L1702 12138.L1707: 12139 ldr r0, [sp, #20] 12140 cmp r1, r0 12141 bne .L1708 12142 ldr r1, [r2, #8] 12143 ldr r2, [r4, #3316] 12144 cmp r1, r2 12145 bne .L1708 12146 ldrh r0, [r4, #258] 12147 str r3, [sp, #44] 12148 ldr r3, [sp, #20] 12149 ldr r2, [sp, #40] 12150 muls r0, r3, r0 12151 subs r0, r0, r5 12152 add r0, r8, r0, lsl #9 12153 b .L1729 12154.L1718: 12155 mov r6, #-1 12156 b .L1691 12157.L1732: 12158 .align 2 12159.L1731: 12160 .word .LANCHOR0 12161 .word .LANCHOR2 12162 .fnend 12163 .size FtlRead, .-FtlRead 12164 .align 1 12165 .global sftl_read 12166 .syntax unified 12167 .thumb 12168 .thumb_func 12169 .fpu softvfp 12170 .type sftl_read, %function 12171sftl_read: 12172 .fnstart 12173 @ args = 0, pretend = 0, frame = 0 12174 @ frame_needed = 0, uses_anonymous_args = 0 12175 @ link register save eliminated. 12176 mov r3, r2 12177 mov r2, r1 12178 mov r1, r0 12179 movs r0, #0 12180 b FtlRead 12181 .fnend 12182 .size sftl_read, .-sftl_read 12183 .section .rodata.str1.1 12184.LC125: 12185 .ascii "FtlWrite: ecc error:%x %x %x\012\000" 12186.LC126: 12187 .ascii "FtlWrite: lpa error:%x %x\012\000" 12188 .text 12189 .align 1 12190 .global FtlWrite 12191 .syntax unified 12192 .thumb 12193 .thumb_func 12194 .fpu softvfp 12195 .type FtlWrite, %function 12196FtlWrite: 12197 .fnstart 12198 @ args = 0, pretend = 0, frame = 72 12199 @ frame_needed = 0, uses_anonymous_args = 0 12200 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 12201 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 12202 cmp r0, #16 12203 mov r8, r1 12204 .pad #76 12205 sub sp, sp, #76 12206 strd r2, r3, [sp, #4] 12207 mov r3, sp 12208 bic r3, r3, #8160 12209 bic r3, r3, #31 12210 ldr r2, [r3, #24] 12211 str r2, [sp, #68] 12212 bne .L1735 12213 ldr r2, [sp, #68] 12214 ldr r3, [r3, #24] 12215 cmp r2, r3 12216 beq .L1736 12217.L1790: 12218 bl __stack_chk_fail 12219.L1736: 12220 ldrd r1, r2, [sp, #4] 12221 add r0, r8, #256 12222 add sp, sp, #76 12223 @ sp needed 12224 pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} 12225 b FtlVendorPartWrite 12226.L1735: 12227 ldr r5, .L1791 12228 ldr r3, [r5, #340] 12229 cmp r3, r1 12230 bls .L1777 12231 ldr r2, [sp, #4] 12232 cmp r3, r2 12233 bcc .L1777 12234 adds r6, r1, r2 12235 cmp r3, r6 12236 bcc .L1777 12237 ldr r4, .L1791+4 12238 ldr r0, [r4] 12239 adds r7, r0, #1 12240 beq .L1734 12241 ldrh r7, [r5, #258] 12242 mov r3, #2048 12243 mov r0, r8 12244 str r3, [r5, #3668] 12245 mov r1, r7 12246 bl __aeabi_uidiv 12247 mov r1, r7 12248 str r0, [sp] 12249 subs r0, r6, #1 12250 bl __aeabi_uidiv 12251 ldr r2, [sp] 12252 str r0, [sp, #24] 12253 subs r3, r0, r2 12254 ldr r2, [sp, #4] 12255 add fp, r3, #1 12256 str r3, [sp, #20] 12257 ldr r3, [r5, #2580] 12258 add r3, r3, r2 12259 str r3, [r5, #2580] 12260 ldr r3, [r5, #2564] 12261 add r3, r3, fp 12262 str r3, [r5, #2564] 12263 ldr r3, [r4, #8] 12264 cbz r3, .L1779 12265 ldrh r2, [r5, #28] 12266 add r3, r5, #24 12267 adds r5, r5, #76 12268 cmp r2, #0 12269 it ne 12270 movne r5, r3 12271.L1738: 12272 ldr r7, [sp] 12273 ldr r4, .L1791 12274.L1739: 12275 cmp fp, #0 12276 bne .L1770 12277 ldr r1, [sp, #20] 12278 mov r0, fp 12279 bl rk_ftl_garbage_collect 12280 ldrh r3, [r4, #224] 12281 cmp r3, #5 12282 bls .L1782 12283.L1773: 12284 movs r0, #0 12285.L1734: 12286 mov r3, sp 12287 ldr r2, [sp, #68] 12288 bic r3, r3, #8160 12289 bic r3, r3, #31 12290 ldr r3, [r3, #24] 12291 cmp r2, r3 12292 bne .L1790 12293 add sp, sp, #76 12294 @ sp needed 12295 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 12296.L1779: 12297 adds r5, r5, #24 12298 b .L1738 12299.L1770: 12300 ldrb r2, [r5, #6] @ zero_extendqisi2 12301 ldrh r3, [r4, #232] 12302 cmp r2, r3 12303 bcc .L1740 12304 ldr r1, .L1791+8 12305 movw r2, #1041 12306 ldr r0, .L1791+12 12307 bl sftl_printk 12308.L1740: 12309 ldrh r3, [r5, #4] 12310 cbnz r3, .L1741 12311 ldr r2, .L1791+16 12312 ldr r6, .L1791+4 12313 cmp r5, r2 12314 bne .L1742 12315 ldrh r9, [r4, #80] 12316 cmp r9, #0 12317 bne .L1743 12318 add r0, r5, #52 12319 bl allocate_new_data_superblock 12320 str r9, [r6, #8] 12321.L1743: 12322 ldr r0, .L1791+16 12323 bl allocate_new_data_superblock 12324 ldr r3, [r6, #8] 12325 cmp r3, #0 12326 bne .L1781 12327.L1745: 12328 ldr r5, .L1791+16 12329.L1744: 12330 ldrh r3, [r5, #4] 12331 cbnz r3, .L1741 12332 mov r0, r5 12333 bl allocate_new_data_superblock 12334.L1741: 12335 ldrh r3, [r5, #4] 12336 ldrb r2, [r5, #7] @ zero_extendqisi2 12337 cmp r3, fp 12338 it cs 12339 movcs r3, fp 12340 lsls r2, r2, #2 12341 cmp r2, r3 12342 it cs 12343 movcs r2, r3 12344 ldrh r3, [r4, #232] 12345 str r2, [sp, #36] 12346 ldrb r2, [r5, #6] @ zero_extendqisi2 12347 cmp r2, r3 12348 bcc .L1746 12349 ldr r1, .L1791+8 12350 movw r2, #1074 12351 ldr r0, .L1791+12 12352 bl sftl_printk 12353.L1746: 12354 mov r10, #0 12355.L1747: 12356 ldr r3, [sp, #36] 12357 cmp r3, r10 12358 bne .L1768 12359.L1748: 12360 ldr r0, [r4, #3296] 12361 mov r3, r5 12362 mov r1, r10 12363 movs r2, #0 12364 bl FtlProgPages 12365 cmp fp, r10 12366 bcs .L1769 12367 ldr r1, .L1791+8 12368 mov r2, #1152 12369 ldr r0, .L1791+12 12370 bl sftl_printk 12371.L1769: 12372 sub fp, fp, r10 12373 b .L1739 12374.L1742: 12375 str r3, [r6, #8] 12376 ldrh r3, [r4, #28] 12377 cmp r3, #0 12378 bne .L1745 12379 mov r0, r5 12380 bl allocate_new_data_superblock 12381 b .L1744 12382.L1781: 12383 ldr r5, .L1791+20 12384 b .L1744 12385.L1768: 12386 ldrh r3, [r5, #4] 12387 cmp r3, #0 12388 beq .L1748 12389 add r1, sp, #44 12390 movs r2, #0 12391 mov r0, r7 12392 bl log2phys 12393 mov r0, r5 12394 bl get_new_active_ppa 12395 movs r3, #20 12396 mul r3, r3, r10 12397 str r3, [sp, #12] 12398 ldr r2, [sp, #12] 12399 ldr r3, [r4, #3296] 12400 add r3, r3, r2 12401 ldrh r2, [r4, #312] 12402 str r0, [r3, #4] 12403 mul r1, r10, r2 12404 bic r1, r1, #3 12405 str r1, [sp, #28] 12406 ldr r0, [sp, #28] 12407 ldr r1, [r4, #3336] 12408 str r1, [sp, #32] 12409 add r9, r1, r0 12410 movs r1, #0 12411 strd r9, r7, [r3, #12] 12412 mov r0, r9 12413 bl ftl_memset 12414 ldr r3, [sp] 12415 ldrh r6, [r4, #258] 12416 cmp r7, r3 12417 beq .L1749 12418 ldr r2, [sp, #12] 12419 ldr r3, [r4, #3296] 12420 add r3, r3, r2 12421 ldr r2, [sp, #24] 12422 cmp r7, r2 12423 bne .L1787 12424 ldr r3, [sp, #4] 12425 add r2, r8, r3 12426 smulbb r3, r7, r6 12427 subs r6, r2, r3 12428 movs r3, #0 12429 str r3, [sp, #16] 12430 uxth r6, r6 12431 b .L1752 12432.L1749: 12433 mov r1, r6 12434 mov r0, r8 12435 bl __aeabi_uidivmod 12436 ldr r3, [sp, #4] 12437 subs r6, r6, r1 12438 str r1, [sp, #16] 12439 cmp r6, r3 12440 it cs 12441 movcs r6, r3 12442.L1752: 12443 ldrh r2, [r4, #258] 12444 ldr r3, [r4, #3296] 12445 ldr r1, [sp, #12] 12446 cmp r2, r6 12447 ldr r2, [sp] 12448 add r3, r3, r1 12449 bne .L1753 12450 cmp r7, r2 12451 bne .L1787 12452 ldr r2, [sp, #8] 12453 str r2, [r3, #8] 12454.L1755: 12455 ldrb r2, [r5, #6] @ zero_extendqisi2 12456 ldrh r3, [r4, #232] 12457 cmp r2, r3 12458 bcc .L1765 12459 ldr r1, .L1791+8 12460 movw r2, #1143 12461 ldr r0, .L1791+12 12462 bl sftl_printk 12463.L1765: 12464 ldrd r1, r2, [sp, #28] 12465 movw r3, #61589 12466 add r10, r10, #1 12467 strh r3, [r2, r1] @ movhi 12468 str r7, [r9, #8] 12469 adds r7, r7, #1 12470 ldr r3, [r4, #2592] 12471 str r3, [r9, #4] 12472 adds r2, r3, #1 12473 adds r3, r3, #2 12474 itee ne 12475 strne r2, [r4, #2592] 12476 moveq r3, #0 12477 streq r3, [r4, #2592] 12478 ldr r3, [sp, #44] 12479 str r3, [r9, #12] 12480 ldrh r3, [r5] 12481 strh r3, [r9, #2] @ movhi 12482 b .L1747 12483.L1753: 12484 cmp r7, r2 12485 ite eq 12486 ldreq r2, [r4, #3312] 12487 ldrne r2, [r4, #3316] 12488 str r2, [r3, #8] 12489 ldr r2, [sp, #44] 12490 adds r1, r2, #1 12491 beq .L1758 12492 str r7, [sp, #64] 12493 add r0, sp, #48 12494 str r2, [sp, #52] 12495 movs r1, #1 12496 ldr r2, [r3, #8] 12497 str r2, [sp, #56] 12498 movs r2, #0 12499 ldr r3, [r3, #12] 12500 str r3, [sp, #60] 12501 bl FlashReadPages 12502 ldr r3, [sp, #48] 12503 adds r2, r3, #1 12504 bne .L1759 12505 ldr r2, [r4, #2712] 12506 ldr r0, .L1791+24 12507 adds r2, r2, #1 12508 str r2, [r4, #2712] 12509 mov r2, r7 12510 ldr r1, [r9, #8] 12511 bl sftl_printk 12512.L1763: 12513 ldr r3, [sp] 12514 lsls r2, r6, #9 12515 cmp r7, r3 12516 bne .L1764 12517 ldr r1, [sp, #12] 12518 ldr r3, [r4, #3296] 12519 add r3, r3, r1 12520 ldr r1, [sp, #8] 12521 ldr r0, [r3, #8] 12522 ldr r3, [sp, #16] 12523 add r0, r0, r3, lsl #9 12524.L1789: 12525 bl ftl_memcpy 12526 b .L1755 12527.L1792: 12528 .align 2 12529.L1791: 12530 .word .LANCHOR0 12531 .word .LANCHOR2 12532 .word .LANCHOR1+591 12533 .word .LC8 12534 .word .LANCHOR0+24 12535 .word .LANCHOR0+76 12536 .word .LC125 12537.L1759: 12538 ldr r3, [r9, #8] 12539 cmp r3, r7 12540 beq .L1763 12541 ldr r3, [r4, #2712] 12542 mov r2, r7 12543 ldr r0, .L1793 12544 adds r3, r3, #1 12545 str r3, [r4, #2712] 12546 ldr r1, [r9, #8] 12547 bl sftl_printk 12548 ldr r3, [r9, #8] 12549 cmp r3, r7 12550 beq .L1763 12551 ldr r1, .L1793+4 12552 mov r2, #1128 12553 ldr r0, .L1793+8 12554 bl sftl_printk 12555 b .L1763 12556.L1758: 12557 ldrh r2, [r4, #310] 12558 movs r1, #0 12559 ldr r0, [r3, #8] 12560 bl ftl_memset 12561 b .L1763 12562.L1764: 12563 ldrh r1, [r4, #258] 12564 ldr r0, [sp, #12] 12565 ldr r3, [r4, #3296] 12566 muls r1, r7, r1 12567 add r3, r3, r0 12568 ldr r0, [sp, #8] 12569 sub r1, r1, r8 12570 add r1, r0, r1, lsl #9 12571 ldr r0, [r3, #8] 12572 b .L1789 12573.L1787: 12574 muls r6, r7, r6 12575 ldr r2, [sp, #8] 12576 sub r6, r6, r8 12577 add r6, r2, r6, lsl #9 12578 str r6, [r3, #8] 12579 b .L1755 12580.L1782: 12581 mov r5, #256 12582 movw r6, #65535 12583.L1771: 12584 ldrh r2, [r4, #222] 12585 ldrh r3, [r4, #172] 12586 ands r3, r3, r2 12587 cmp r3, r6 12588 bne .L1772 12589 movs r0, #0 12590 bl List_get_gc_head_node 12591 uxth r0, r0 12592 bl FtlGcRefreshBlock 12593.L1772: 12594 movs r1, #1 12595 mov r0, r1 12596 movs r3, #128 12597 strh r3, [r4, #3154] @ movhi 12598 strh r3, [r4, #3152] @ movhi 12599 bl rk_ftl_garbage_collect 12600 movs r1, #1 12601 movs r0, #0 12602 bl rk_ftl_garbage_collect 12603 ldrh r3, [r4, #224] 12604 cmp r3, #2 12605 bhi .L1773 12606 subs r5, r5, #1 12607 bne .L1771 12608 b .L1773 12609.L1777: 12610 mov r0, #-1 12611 b .L1734 12612.L1794: 12613 .align 2 12614.L1793: 12615 .word .LC126 12616 .word .LANCHOR1+591 12617 .word .LC8 12618 .fnend 12619 .size FtlWrite, .-FtlWrite 12620 .align 1 12621 .global sftl_gc 12622 .syntax unified 12623 .thumb 12624 .thumb_func 12625 .fpu softvfp 12626 .type sftl_gc, %function 12627sftl_gc: 12628 .fnstart 12629 @ args = 0, pretend = 0, frame = 0 12630 @ frame_needed = 0, uses_anonymous_args = 0 12631 @ link register save eliminated. 12632 movs r1, #1 12633 mov r0, r1 12634 b rk_ftl_garbage_collect 12635 .fnend 12636 .size sftl_gc, .-sftl_gc 12637 .section .rodata.str1.1 12638.LC127: 12639 .ascii "%s hash error this.id =%x page =%x pre_id =%x hash " 12640 .ascii "=%x hash_r =%x\012\000" 12641 .text 12642 .align 1 12643 .global FtlLoadSysInfo 12644 .syntax unified 12645 .thumb 12646 .thumb_func 12647 .fpu softvfp 12648 .type FtlLoadSysInfo, %function 12649FtlLoadSysInfo: 12650 .fnstart 12651 @ args = 0, pretend = 0, frame = 0 12652 @ frame_needed = 0, uses_anonymous_args = 0 12653 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, lr} 12654 .save {r4, r5, r6, r7, r8, r9, r10, lr} 12655 .pad #16 12656 movs r1, #0 12657 ldr r4, .L1824 12658 ldrh r2, [r4, #240] 12659 ldr r3, [r4, #3300] 12660 str r3, [r4, #3460] 12661 ldr r0, [r4, #72] 12662 lsls r2, r2, #1 12663 ldr r3, [r4, #3332] 12664 str r3, [r4, #3464] 12665 bl ftl_memset 12666 ldrh r0, [r4, #2624] 12667 movw r3, #65535 12668 cmp r0, r3 12669 bne .L1797 12670.L1809: 12671 mov r0, #-1 12672.L1796: 12673 add sp, sp, #16 12674 @ sp needed 12675 pop {r4, r5, r6, r7, r8, r9, r10, pc} 12676.L1797: 12677 movs r1, #1 12678 ldr r8, .L1824+4 12679 bl FtlGetLastWrittenPage 12680 ldr r9, .L1824+8 12681 ldrsh r6, [r4, #2624] 12682 sxth r5, r0 12683 addw r7, r4, #3452 12684 adds r3, r5, #1 12685 strh r3, [r4, #2626] @ movhi 12686.L1799: 12687 cmp r5, #0 12688 bge .L1806 12689 ldr r1, .L1824+8 12690 movw r2, #1474 12691 ldr r0, .L1824+12 12692 bl sftl_printk 12693 b .L1805 12694.L1806: 12695 orr r3, r5, r6, lsl #10 12696 movs r2, #1 12697 str r3, [r4, #3456] 12698 mov r1, r2 12699 ldr r3, [r4, #3300] 12700 mov r0, r7 12701 str r3, [r4, #3460] 12702 bl FlashReadPages 12703 ldr r3, [r4, #3464] 12704 ldr r10, [r3, #12] 12705 ldr r3, [r4, #3452] 12706 cmp r10, #0 12707 beq .L1800 12708 adds r3, r3, #1 12709 beq .L1801 12710 ldrh r1, [r4, #310] 12711 ldr r0, [r4, #3460] 12712 bl js_hash 12713 cmp r10, r0 12714 beq .L1802 12715 ldrh r3, [r4, #2628] 12716 mov r2, r6 12717 strd r10, r0, [sp, #4] 12718 mov r1, r9 12719 str r3, [sp] 12720 mov r3, r5 12721 ldr r0, .L1824+16 12722 bl sftl_printk 12723 cbnz r5, .L1803 12724 ldrh r3, [r4, #2628] 12725 cmp r6, r3 12726 beq .L1803 12727 ldrh r5, [r4, #304] 12728 sxth r6, r3 12729.L1801: 12730 subs r5, r5, #1 12731 sxth r5, r5 12732 b .L1799 12733.L1803: 12734 mov r3, #-1 12735 str r3, [r4, #3452] 12736 b .L1801 12737.L1800: 12738 adds r3, r3, #1 12739 beq .L1801 12740.L1802: 12741 ldr r3, [r4, #3300] 12742 ldr r3, [r3] 12743 cmp r3, r8 12744 bne .L1801 12745 ldr r3, [r4, #3332] 12746 ldrh r2, [r3] 12747 movw r3, #61604 12748 cmp r2, r3 12749 bne .L1801 12750.L1805: 12751 ldrh r3, [r4, #240] 12752 ldrh r2, [r4, #310] 12753 adds r3, r3, #24 12754 cmp r2, r3, lsl #1 12755 bcs .L1808 12756 ldr r1, .L1824+8 12757 movw r2, #1476 12758 ldr r0, .L1824+12 12759 bl sftl_printk 12760.L1808: 12761 ldr r1, [r4, #3460] 12762 movs r2, #48 12763 ldr r0, .L1824+20 12764 bl ftl_memcpy 12765 ldrh r2, [r4, #240] 12766 ldr r1, [r4, #3460] 12767 ldr r0, [r4, #72] 12768 lsls r2, r2, #1 12769 adds r1, r1, #48 12770 bl ftl_memcpy 12771 ldr r2, [r4, #2468] 12772 ldr r3, .L1824+4 12773 cmp r2, r3 12774 bne .L1809 12775 ldrb r2, [r4, #2478] @ zero_extendqisi2 12776 ldrh r3, [r4, #254] 12777 ldrh r5, [r4, #2476] 12778 cmp r2, r3 12779 strh r5, [r4, #2630] @ movhi 12780 bne .L1809 12781 ldrh r3, [r4, #302] 12782 ldrh r2, [r4, #258] 12783 ldrh r0, [r4, #358] 12784 ldr r6, [r4, #244] 12785 muls r3, r5, r3 12786 add r0, r0, r5 12787 str r3, [r4, #2552] 12788 subs r0, r6, r0 12789 ldrh r1, [r4, #232] 12790 str r5, [r4, #3672] 12791 muls r3, r2, r3 12792 str r3, [r4, #340] 12793 bl __aeabi_uidiv 12794 cmp r5, r6 12795 strh r0, [r4, #2620] @ movhi 12796 bls .L1810 12797 ldr r1, .L1824+8 12798 movw r2, #1498 12799 ldr r0, .L1824+12 12800 bl sftl_printk 12801.L1810: 12802 ldrh r3, [r4, #2484] 12803 ldrh r1, [r4, #2482] 12804 strh r1, [r4, #24] @ movhi 12805 lsrs r2, r3, #6 12806 strh r2, [r4, #26] @ movhi 12807 ldrh r2, [r4, #2486] 12808 and r3, r3, #63 12809 strh r2, [r4, #76] @ movhi 12810 ldrh r2, [r4, #2488] 12811 strb r3, [r4, #30] 12812 ldrb r3, [r4, #2479] @ zero_extendqisi2 12813 lsrs r0, r2, #6 12814 and r2, r2, #63 12815 strb r2, [r4, #82] 12816 ldrb r2, [r4, #2480] @ zero_extendqisi2 12817 strb r2, [r4, #84] 12818 ldrh r2, [r4, #2490] 12819 strh r2, [r4, #124] @ movhi 12820 ldrh r2, [r4, #2492] 12821 strh r0, [r4, #78] @ movhi 12822 strb r3, [r4, #32] 12823 movw r3, #65535 12824 lsrs r0, r2, #6 12825 and r2, r2, #63 12826 strb r2, [r4, #130] 12827 ldrb r2, [r4, #2481] @ zero_extendqisi2 12828 strb r2, [r4, #132] 12829 ldr r2, [r4, #2500] 12830 str r3, [r4, #172] 12831 movs r3, #0 12832 str r2, [r4, #2596] 12833 strb r3, [r4, #178] 12834 strb r3, [r4, #180] 12835 str r3, [r4, #2576] 12836 str r3, [r4, #2564] 12837 str r3, [r4, #2556] 12838 str r3, [r4, #2572] 12839 str r3, [r4, #2600] 12840 str r3, [r4, #2612] 12841 strh r0, [r4, #126] @ movhi 12842 str r3, [r4, #2568] 12843 ldr r3, [r4, #2508] 12844 ldr r2, [r4, #2588] 12845 cmp r3, r2 12846 ldr r2, [r4, #2592] 12847 it hi 12848 strhi r3, [r4, #2588] 12849 ldr r3, [r4, #2504] 12850 cmp r3, r2 12851 it hi 12852 strhi r3, [r4, #2592] 12853 movw r3, #65535 12854 cmp r1, r3 12855 beq .L1813 12856 ldr r0, .L1824+24 12857 bl make_superblock 12858.L1813: 12859 ldrh r2, [r4, #76] 12860 movw r3, #65535 12861 cmp r2, r3 12862 beq .L1814 12863 ldr r0, .L1824+28 12864 bl make_superblock 12865.L1814: 12866 ldrh r2, [r4, #124] 12867 movw r3, #65535 12868 cmp r2, r3 12869 beq .L1815 12870 ldr r0, .L1824+32 12871 bl make_superblock 12872.L1815: 12873 ldrh r2, [r4, #172] 12874 movw r3, #65535 12875 cmp r2, r3 12876 beq .L1816 12877 ldr r0, .L1824+36 12878 bl make_superblock 12879.L1816: 12880 movs r0, #0 12881 b .L1796 12882.L1825: 12883 .align 2 12884.L1824: 12885 .word .LANCHOR0 12886 .word 1179929683 12887 .word .LANCHOR1+600 12888 .word .LC8 12889 .word .LC127 12890 .word .LANCHOR0+2468 12891 .word .LANCHOR0+24 12892 .word .LANCHOR0+76 12893 .word .LANCHOR0+124 12894 .word .LANCHOR0+172 12895 .fnend 12896 .size FtlLoadSysInfo, .-FtlLoadSysInfo 12897 .section .rodata.str1.1 12898.LC128: 12899 .ascii "%s last blk_id =%x page =%x hash error hash =%x has" 12900 .ascii "h_r =%x\012\000" 12901.LC129: 12902 .ascii "%s scan blk_id =%x page =%x hash error hash =%x has" 12903 .ascii "h_r =%x\012\000" 12904 .text 12905 .align 1 12906 .global FtlMapTblRecovery 12907 .syntax unified 12908 .thumb 12909 .thumb_func 12910 .fpu softvfp 12911 .type FtlMapTblRecovery, %function 12912FtlMapTblRecovery: 12913 .fnstart 12914 @ args = 0, pretend = 0, frame = 32 12915 @ frame_needed = 0, uses_anonymous_args = 0 12916 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 12917 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 12918 mov r5, r0 12919 ldr r4, .L1865 12920 .pad #44 12921 sub sp, sp, #44 12922 ldr r3, [r0, #24] 12923 movs r1, #0 12924 addw r9, r4, #3452 12925 movs r7, #0 12926 str r3, [sp, #12] 12927 ldr r3, [r0, #12] 12928 str r3, [sp, #24] 12929 ldr r3, [r0, #16] 12930 str r3, [sp, #32] 12931 ldrh r3, [r0, #6] 12932 str r3, [sp, #16] 12933 ldrh r3, [r0, #8] 12934 str r3, [sp, #28] 12935 ldr r3, [sp, #16] 12936 ldr r0, [sp, #12] 12937 lsls r2, r3, #2 12938 bl ftl_memset 12939 ldr r3, [r4, #3300] 12940 ldr fp, [r4, #3332] 12941 str r3, [r4, #3460] 12942 mov r3, #-1 12943 str fp, [r4, #3464] 12944 strd r7, r7, [r5, #28] 12945 str r3, [r5] 12946 movs r3, #1 12947 str r3, [r5, #36] 12948.L1827: 12949 ldr r3, [sp, #28] 12950 sxth r6, r7 12951 uxth r8, r7 12952 cmp r6, r3 12953 bge .L1847 12954 ldr r3, [sp, #24] 12955 add r3, r3, r6, lsl #1 12956 str r3, [sp, #20] 12957 ldr r3, [sp, #28] 12958 subs r3, r3, #1 12959 cmp r3, r6 12960 bne .L1828 12961 ldr r3, [sp, #20] 12962 movs r1, #1 12963 ldr r10, .L1865+4 12964 ldrh r0, [r3] 12965 bl FtlGetLastWrittenPage 12966 sxth r7, r0 12967 adds r3, r7, #1 12968 strh r3, [r5, #2] @ movhi 12969 ldr r3, [sp, #32] 12970 strh r8, [r5] @ movhi 12971 mov r8, #0 12972 ldr r3, [r3, r6, lsl #2] 12973 str r3, [r5, #28] 12974.L1829: 12975 sxth r9, r8 12976 adds r2, r7, #1 12977 cmp r9, r2 12978 blt .L1833 12979.L1847: 12980 mov r0, r5 12981 bl ftl_free_no_use_map_blk 12982 ldrh r2, [r5, #2] 12983 ldrh r3, [r4, #304] 12984 cmp r2, r3 12985 bne .L1835 12986 mov r0, r5 12987 bl ftl_map_blk_alloc_new_blk 12988.L1835: 12989 mov r0, r5 12990 bl ftl_map_blk_gc 12991 mov r0, r5 12992 bl ftl_map_blk_gc 12993 movs r0, #0 12994 add sp, sp, #44 12995 @ sp needed 12996 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 12997.L1833: 12998 ldr r3, [sp, #20] 12999 ldr r0, .L1865+8 13000 ldrh r2, [r3] 13001 orr r2, r9, r2, lsl #10 13002 str r2, [r4, #3456] 13003 movs r2, #1 13004 mov r1, r2 13005 bl FlashReadPages 13006 ldr r2, [r4, #3464] 13007 ldr r2, [r2, #12] 13008 str r2, [sp, #24] 13009 cbz r2, .L1830 13010 ldr r1, [r4, #3452] 13011 adds r1, r1, #1 13012 beq .L1848 13013 ldrh r1, [r4, #310] 13014 ldr r0, [r4, #3460] 13015 bl js_hash 13016 ldr r2, [sp, #24] 13017 cmp r2, r0 13018 beq .L1832 13019 strd r2, r0, [sp] 13020 mov r3, r9 13021 ldr r0, .L1865+12 13022 mov r2, r6 13023 mov r1, r10 13024 bl sftl_printk 13025 mov r3, #-1 13026 str r3, [r4, #3452] 13027.L1848: 13028 add r8, r8, #1 13029 b .L1829 13030.L1830: 13031 ldr r3, [r4, #3452] 13032 adds r3, r3, #1 13033 beq .L1848 13034.L1832: 13035 ldrh r3, [fp, #8] 13036 ldr r2, [sp, #16] 13037 cmp r3, r2 13038 bcs .L1848 13039 ldrh r1, [fp] 13040 ldrh r2, [r5, #4] 13041 cmp r1, r2 13042 ittt eq 13043 ldreq r1, [sp, #12] 13044 ldreq r2, [r4, #3456] 13045 streq r2, [r1, r3, lsl #2] 13046 b .L1848 13047.L1828: 13048 ldr r3, [r4, #3300] 13049 mov r0, r9 13050 str r3, [r4, #3460] 13051 ldr r3, [sp, #24] 13052 ldrh r2, [r3, r6, lsl #1] 13053 ldrh r3, [r4, #304] 13054 subs r3, r3, #1 13055 orr r3, r3, r2, lsl #10 13056 movs r2, #1 13057 mov r1, r2 13058 str r3, [r4, #3456] 13059 bl FlashReadPages 13060 ldr r3, [r4, #3452] 13061 adds r3, r3, #1 13062 beq .L1851 13063 ldrh r2, [fp] 13064 ldrh r3, [r5, #4] 13065 cmp r2, r3 13066 bne .L1851 13067 ldrh r2, [fp, #8] 13068 movw r3, #64245 13069 cmp r2, r3 13070 beq .L1852 13071.L1851: 13072 mov r8, #0 13073 b .L1843 13074.L1839: 13075 ldr r2, [r4, #3300] 13076 lsls r6, r0, #3 13077 ldr ip, [sp, #16] 13078 ldr r3, [r2, r0, lsl #3] 13079 uxth r0, r3 13080 cmp ip, r0 13081 bls .L1838 13082 add r2, r2, r6 13083 mov r3, r0 13084 ldr r0, [sp, #12] 13085 ldr r2, [r2, #4] 13086 str r2, [r0, r3, lsl #2] 13087.L1838: 13088 adds r1, r1, #1 13089.L1837: 13090 ldrh r3, [r4, #304] 13091 sxth r0, r1 13092 subs r3, r3, #1 13093 cmp r0, r3 13094 blt .L1839 13095.L1845: 13096 adds r7, r7, #1 13097 b .L1827 13098.L1852: 13099 movs r1, #0 13100 b .L1837 13101.L1844: 13102 ldr r3, [sp, #20] 13103 mov r0, r9 13104 ldrh r2, [r3] 13105 orr r2, r10, r2, lsl #10 13106 str r2, [r4, #3456] 13107 movs r2, #1 13108 mov r1, r2 13109 bl FlashReadPages 13110 ldr r2, [r4, #3464] 13111 ldr r2, [r2, #12] 13112 str r2, [sp, #36] 13113 cbz r2, .L1840 13114 ldr r1, [r4, #3452] 13115 adds r1, r1, #1 13116 beq .L1849 13117 ldrh r1, [r4, #310] 13118 ldr r0, [r4, #3460] 13119 bl js_hash 13120 ldr r2, [sp, #36] 13121 cmp r2, r0 13122 beq .L1842 13123 strd r2, r0, [sp] 13124 mov r3, r10 13125 ldr r1, .L1865+4 13126 mov r2, r6 13127 ldr r0, .L1865+16 13128 bl sftl_printk 13129 mov r3, #-1 13130 str r3, [r4, #3452] 13131.L1849: 13132 add r8, r8, #1 13133.L1843: 13134 ldrh r2, [r4, #304] 13135 sxth r10, r8 13136 cmp r10, r2 13137 blt .L1844 13138 b .L1845 13139.L1840: 13140 ldr r3, [r4, #3452] 13141 adds r3, r3, #1 13142 beq .L1849 13143.L1842: 13144 ldrh r3, [fp, #8] 13145 ldr r2, [sp, #16] 13146 cmp r3, r2 13147 bcs .L1849 13148 ldrh r1, [fp] 13149 ldrh r2, [r5, #4] 13150 cmp r1, r2 13151 ittt eq 13152 ldreq r1, [sp, #12] 13153 ldreq r2, [r4, #3456] 13154 streq r2, [r1, r3, lsl #2] 13155 b .L1849 13156.L1866: 13157 .align 2 13158.L1865: 13159 .word .LANCHOR0 13160 .word .LANCHOR1+615 13161 .word .LANCHOR0+3452 13162 .word .LC128 13163 .word .LC129 13164 .fnend 13165 .size FtlMapTblRecovery, .-FtlMapTblRecovery 13166 .align 1 13167 .global FtlLoadVonderInfo 13168 .syntax unified 13169 .thumb 13170 .thumb_func 13171 .fpu softvfp 13172 .type FtlLoadVonderInfo, %function 13173FtlLoadVonderInfo: 13174 .fnstart 13175 @ args = 0, pretend = 0, frame = 0 13176 @ frame_needed = 0, uses_anonymous_args = 0 13177 ldr r0, .L1868 13178 push {r3, lr} 13179 .save {r3, lr} 13180 ldrh r3, [r0, #320] 13181 strh r3, [r0, #3618] @ movhi 13182 movw r3, #61574 13183 strh r3, [r0, #3612] @ movhi 13184 ldrh r3, [r0, #344] 13185 strh r3, [r0, #3616] @ movhi 13186 ldrh r3, [r0, #322] 13187 strh r3, [r0, #3614] @ movhi 13188 ldr r3, [r0, #348] 13189 addw r0, r0, #3608 13190 str r3, [r0, #12] 13191 ldr r3, [r0, #-240] 13192 str r3, [r0, #16] 13193 ldr r3, [r0, #-244] 13194 str r3, [r0, #20] 13195 ldr r3, [r0, #-236] 13196 str r3, [r0, #24] 13197 bl FtlMapTblRecovery 13198 movs r0, #0 13199 pop {r3, pc} 13200.L1869: 13201 .align 2 13202.L1868: 13203 .word .LANCHOR0 13204 .fnend 13205 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo 13206 .align 1 13207 .global FtlLoadMapInfo 13208 .syntax unified 13209 .thumb 13210 .thumb_func 13211 .fpu softvfp 13212 .type FtlLoadMapInfo, %function 13213FtlLoadMapInfo: 13214 .fnstart 13215 @ args = 0, pretend = 0, frame = 0 13216 @ frame_needed = 0, uses_anonymous_args = 0 13217 push {r3, lr} 13218 .save {r3, lr} 13219 bl FtlL2PDataInit 13220 ldr r0, .L1871 13221 bl FtlMapTblRecovery 13222 movs r0, #0 13223 pop {r3, pc} 13224.L1872: 13225 .align 2 13226.L1871: 13227 .word .LANCHOR0+3392 13228 .fnend 13229 .size FtlLoadMapInfo, .-FtlLoadMapInfo 13230 .align 1 13231 .global FtlSysBlkInit 13232 .syntax unified 13233 .thumb 13234 .thumb_func 13235 .fpu softvfp 13236 .type FtlSysBlkInit, %function 13237FtlSysBlkInit: 13238 .fnstart 13239 @ args = 0, pretend = 0, frame = 0 13240 @ frame_needed = 0, uses_anonymous_args = 0 13241 push {r4, r5, r6, lr} 13242 .save {r4, r5, r6, lr} 13243 movs r3, #0 13244 ldr r4, .L1889 13245 ldrh r0, [r4, #236] 13246 strh r3, [r4, #3472] @ movhi 13247 bl FtlFreeSysBlkQueueInit 13248 bl FtlScanSysBlk 13249 ldrh r2, [r4, #2624] 13250 movw r3, #65535 13251 cmp r2, r3 13252 bne .L1874 13253.L1876: 13254 mov r5, #-1 13255.L1873: 13256 mov r0, r5 13257 pop {r4, r5, r6, pc} 13258.L1874: 13259 bl FtlLoadSysInfo 13260 mov r5, r0 13261 cmp r0, #0 13262 bne .L1876 13263 bl FtlLoadMapInfo 13264 bl FtlLoadVonderInfo 13265 bl Ftl_load_ext_data 13266 bl FtlLoadEctTbl 13267 bl FtlFreeSysBLkSort 13268 bl SupperBlkListInit 13269 bl FtlPowerLostRecovery 13270 movs r0, #1 13271 bl FtlUpdateVaildLpn 13272 ldr r2, [r4, #2540] 13273 ldrh r1, [r4, #338] 13274 mov r3, r5 13275 adds r2, r2, #4 13276 movs r0, #12 13277.L1877: 13278 cmp r3, r1 13279 bge .L1882 13280 mul r6, r0, r3 13281 ldr r6, [r2, r6] 13282 cmp r6, #0 13283 bge .L1878 13284.L1882: 13285 ldrh r2, [r4, #2496] 13286 cmp r3, r1 13287 add r2, r2, #1 13288 strh r2, [r4, #2496] @ movhi 13289 bge .L1888 13290.L1879: 13291 ldr r0, .L1889+4 13292 bl FtlSuperblockPowerLostFix 13293 ldr r0, .L1889+8 13294 bl FtlSuperblockPowerLostFix 13295 ldrh r1, [r4, #24] 13296 ldr r2, [r4, #72] 13297 ldrh r0, [r4, #28] 13298 ldrh r3, [r2, r1, lsl #1] 13299 subs r3, r3, r0 13300 strh r3, [r2, r1, lsl #1] @ movhi 13301 ldrh r0, [r4, #76] 13302 ldr r1, [r4, #72] 13303 ldrh r3, [r4, #302] 13304 strh r3, [r4, #26] @ movhi 13305 movs r3, #0 13306 strb r3, [r4, #30] 13307 strh r3, [r4, #28] @ movhi 13308 ldrh r6, [r4, #80] 13309 ldrh r2, [r1, r0, lsl #1] 13310 subs r2, r2, r6 13311 strh r2, [r1, r0, lsl #1] @ movhi 13312 strb r3, [r4, #82] 13313 strh r3, [r4, #80] @ movhi 13314 ldrh r3, [r4, #2498] 13315 ldrh r2, [r4, #302] 13316 adds r3, r3, #1 13317 strh r2, [r4, #78] @ movhi 13318 strh r3, [r4, #2498] @ movhi 13319 bl l2p_flush 13320 bl FtlVpcTblFlush 13321 bl FtlVpcTblFlush 13322 b .L1883 13323.L1878: 13324 adds r3, r3, #1 13325 b .L1877 13326.L1888: 13327 ldrh r3, [r4, #3472] 13328 cmp r3, #0 13329 bne .L1879 13330.L1883: 13331 ldrh r0, [r4, #24] 13332 movw r3, #65535 13333 cmp r0, r3 13334 beq .L1884 13335 ldrh r3, [r4, #28] 13336 ldrh r2, [r4, #80] 13337 orrs r3, r3, r2 13338 uxth r3, r3 13339 cbnz r3, .L1884 13340 bl FtlGcRefreshBlock 13341 ldrh r0, [r4, #76] 13342 bl FtlGcRefreshBlock 13343 bl FtlVpcTblFlush 13344 ldr r0, .L1889+4 13345 bl allocate_new_data_superblock 13346 ldr r0, .L1889+8 13347 bl allocate_new_data_superblock 13348.L1884: 13349 bl FtlVpcCheckAndModify 13350 b .L1873 13351.L1890: 13352 .align 2 13353.L1889: 13354 .word .LANCHOR0 13355 .word .LANCHOR0+24 13356 .word .LANCHOR0+76 13357 .fnend 13358 .size FtlSysBlkInit, .-FtlSysBlkInit 13359 .align 1 13360 .global ftl_low_format 13361 .syntax unified 13362 .thumb 13363 .thumb_func 13364 .fpu softvfp 13365 .type ftl_low_format, %function 13366ftl_low_format: 13367 .fnstart 13368 @ args = 0, pretend = 0, frame = 0 13369 @ frame_needed = 0, uses_anonymous_args = 0 13370 push {r3, r4, r5, r6, r7, r8, r9, lr} 13371 .save {r3, r4, r5, r6, r7, r8, r9, lr} 13372 movs r3, #0 13373 ldr r4, .L1915 13374 ldrh r0, [r4, #236] 13375 str r3, [r4, #2588] 13376 str r3, [r4, #2592] 13377 str r3, [r4, #2604] 13378 bl FtlFreeSysBlkQueueInit 13379 bl FtlLoadBbt 13380 cbz r0, .L1892 13381 bl FtlMakeBbt 13382.L1892: 13383 ldr r0, .L1915+4 13384 movs r2, #0 13385.L1893: 13386 ldrh r1, [r4, #258] 13387 uxth r3, r2 13388 adds r2, r2, #1 13389 cmp r3, r1, lsl #7 13390 blt .L1894 13391 ldrh r6, [r4, #240] 13392 movs r5, #0 13393.L1895: 13394 ldrh r3, [r4, #242] 13395 cmp r3, r6 13396 bhi .L1896 13397 ldrh r1, [r4, #232] 13398 subs r3, r5, #3 13399 cmp r3, r1, lsl #1 13400 bge .L1897 13401.L1901: 13402 movs r5, #0 13403 mov r8, r5 13404.L1898: 13405 ldrh r3, [r4, #240] 13406 uxth r0, r5 13407 cmp r3, r0 13408 bhi .L1902 13409 ldrh r5, [r4, #232] 13410 ldr r9, [r4, #244] 13411 ldrh r3, [r4, #242] 13412 mov r1, r5 13413 mov r0, r9 13414 str r3, [r4, #3284] 13415 bl __aeabi_uidiv 13416 ubfx r7, r0, #5, #16 13417 add r3, r7, #36 13418 strh r3, [r4, #2620] @ movhi 13419 movs r3, #24 13420 mov r6, r0 13421 str r0, [r4, #2552] 13422 muls r3, r5, r3 13423 cmp r8, r3 13424 ble .L1903 13425 mov r1, r5 13426 sub r0, r9, r8 13427 bl __aeabi_uidiv 13428 lsrs r3, r0, #5 13429 adds r3, r3, #24 13430 str r0, [r4, #2552] 13431 strh r3, [r4, #2620] @ movhi 13432.L1903: 13433 ldrh r3, [r4, #294] 13434 cbz r3, .L1905 13435 ldrh r2, [r4, #2620] 13436 add r2, r2, r3, lsr #1 13437 strh r2, [r4, #2620] @ movhi 13438 mul r2, r5, r3 13439 cmp r8, r2 13440 itttt lt 13441 strlt r6, [r4, #2552] 13442 addlt r3, r3, #32 13443 addlt r3, r3, r7 13444 strhlt r3, [r4, #2620] @ movhi 13445.L1905: 13446 ldrh r1, [r4, #2620] 13447 ldr r3, [r4, #2552] 13448 ldr r6, .L1915+8 13449 subs r3, r3, r1 13450 mul r1, r5, r3 13451 ldrh r3, [r4, #302] 13452 str r1, [r4, #3672] 13453 movw r5, #65535 13454 muls r1, r3, r1 13455 ldrh r3, [r4, #258] 13456 str r1, [r4, #2552] 13457 muls r1, r3, r1 13458 str r1, [r4, #340] 13459 bl FtlBbmTblFlush 13460 ldrh r2, [r4, #242] 13461 movs r1, #0 13462 ldr r0, [r4, #72] 13463 lsls r2, r2, #1 13464 bl ftl_memset 13465 movs r3, #0 13466 str r5, [r4, #172] 13467 str r3, [r4, #2548] 13468 strb r3, [r4, #178] 13469 strb r3, [r4, #180] 13470 strb r3, [r4, #30] 13471 str r3, [r4, #24] 13472 movs r3, #1 13473 strb r3, [r4, #32] 13474.L1907: 13475 mov r0, r6 13476 bl make_superblock 13477 ldrb r3, [r4, #31] @ zero_extendqisi2 13478 ldrh r2, [r4, #24] 13479 cmp r3, #0 13480 bne .L1908 13481 ldr r3, [r4, #72] 13482 strh r5, [r3, r2, lsl #1] @ movhi 13483 ldrh r3, [r4, #24] 13484 adds r3, r3, #1 13485 strh r3, [r4, #24] @ movhi 13486 b .L1907 13487.L1894: 13488 ldr r5, [r4, #3312] 13489 mvns r1, r3 13490 orr r1, r3, r1, lsl #16 13491 str r1, [r5, r3, lsl #2] 13492 ldr r1, [r4, #3316] 13493 str r0, [r1, r3, lsl #2] 13494 b .L1893 13495.L1896: 13496 mov r0, r6 13497 movs r1, #1 13498 adds r6, r6, #1 13499 bl FtlLowFormatEraseBlock 13500 add r5, r5, r0 13501 uxth r6, r6 13502 uxth r5, r5 13503 b .L1895 13504.L1897: 13505 mov r0, r5 13506 bl __aeabi_uidiv 13507 ldr r3, [r4, #332] 13508 add r0, r0, r3 13509 uxth r0, r0 13510 bl FtlSysBlkNumInit 13511 ldrh r0, [r4, #236] 13512 bl FtlFreeSysBlkQueueInit 13513 ldrh r5, [r4, #240] 13514.L1899: 13515 ldrh r3, [r4, #242] 13516 cmp r3, r5 13517 bls .L1901 13518 mov r0, r5 13519 adds r5, r5, #1 13520 movs r1, #1 13521 uxth r5, r5 13522 bl FtlLowFormatEraseBlock 13523 b .L1899 13524.L1902: 13525 movs r1, #0 13526 adds r5, r5, #1 13527 bl FtlLowFormatEraseBlock 13528 add r8, r8, r0 13529 uxth r8, r8 13530 b .L1898 13531.L1908: 13532 ldr r3, [r4, #2588] 13533 movw r5, #65535 13534 str r3, [r4, #36] 13535 adds r3, r3, #1 13536 str r3, [r4, #2588] 13537 ldr r3, [r4, #72] 13538 ldrh r1, [r4, #28] 13539 ldr r6, .L1915+12 13540 strh r1, [r3, r2, lsl #1] @ movhi 13541 movs r3, #0 13542 strh r3, [r4, #78] @ movhi 13543 strb r3, [r4, #82] 13544 ldrh r3, [r4, #24] 13545 adds r3, r3, #1 13546 strh r3, [r4, #76] @ movhi 13547 movs r3, #1 13548 strb r3, [r4, #84] 13549.L1909: 13550 mov r0, r6 13551 bl make_superblock 13552 ldrb r3, [r4, #83] @ zero_extendqisi2 13553 ldrh r2, [r4, #76] 13554 cbnz r3, .L1910 13555 ldr r3, [r4, #72] 13556 strh r5, [r3, r2, lsl #1] @ movhi 13557 ldrh r3, [r4, #76] 13558 adds r3, r3, #1 13559 strh r3, [r4, #76] @ movhi 13560 b .L1909 13561.L1910: 13562 ldr r3, [r4, #2588] 13563 movw r5, #65535 13564 str r3, [r4, #88] 13565 adds r3, r3, #1 13566 str r3, [r4, #2588] 13567 ldr r3, [r4, #72] 13568 ldrh r1, [r4, #80] 13569 strh r1, [r3, r2, lsl #1] @ movhi 13570 strh r5, [r4, #124] @ movhi 13571 bl FtlFreeSysBlkQueueOut 13572 movs r3, #0 13573 strh r3, [r4, #2626] @ movhi 13574 ldr r3, [r4, #3672] 13575 strh r3, [r4, #2630] @ movhi 13576 ldr r3, [r4, #2588] 13577 str r3, [r4, #2632] 13578 strh r0, [r4, #2624] @ movhi 13579 adds r3, r3, #1 13580 strh r5, [r4, #2628] @ movhi 13581 str r3, [r4, #2588] 13582 bl FtlVpcTblFlush 13583 bl FtlSysBlkInit 13584 cbnz r0, .L1911 13585 ldr r3, .L1915+16 13586 movs r2, #1 13587 str r2, [r3] 13588.L1911: 13589 movs r0, #0 13590 pop {r3, r4, r5, r6, r7, r8, r9, pc} 13591.L1916: 13592 .align 2 13593.L1915: 13594 .word .LANCHOR0 13595 .word 168778952 13596 .word .LANCHOR0+24 13597 .word .LANCHOR0+76 13598 .word .LANCHOR2 13599 .fnend 13600 .size ftl_low_format, .-ftl_low_format 13601 .align 1 13602 .global sftl_init 13603 .syntax unified 13604 .thumb 13605 .thumb_func 13606 .fpu softvfp 13607 .type sftl_init, %function 13608sftl_init: 13609 .fnstart 13610 @ args = 0, pretend = 0, frame = 0 13611 @ frame_needed = 0, uses_anonymous_args = 0 13612 push {r3, r4, r5, lr} 13613 .save {r3, r4, r5, lr} 13614 mov r3, #-1 13615 ldr r5, .L1921 13616 ldr r4, .L1921+4 13617 ldr r1, .L1921+8 13618 ldr r0, .L1921+12 13619 str r3, [r5] 13620 bl sftl_printk 13621 mov r0, r4 13622 bl FtlConstantsInit 13623 bl FtlMemInit 13624 bl FtlVariablesInit 13625 ldrh r0, [r4, #236] 13626 bl FtlFreeSysBlkQueueInit 13627 bl FtlLoadBbt 13628 cbnz r0, .L1918 13629 bl FtlSysBlkInit 13630 cbnz r0, .L1918 13631 movs r3, #1 13632 str r3, [r5] 13633 ldrh r3, [r4, #224] 13634 cmp r3, #15 13635 bhi .L1918 13636 movw r4, #8129 13637.L1919: 13638 movs r1, #1 13639 movs r0, #0 13640 bl rk_ftl_garbage_collect 13641 subs r4, r4, #1 13642 bne .L1919 13643.L1918: 13644 movs r0, #0 13645 pop {r3, r4, r5, pc} 13646.L1922: 13647 .align 2 13648.L1921: 13649 .word .LANCHOR2 13650 .word .LANCHOR0 13651 .word .LC0 13652 .word .LC77 13653 .fnend 13654 .size sftl_init, .-sftl_init 13655 .section .rodata.str1.1 13656.LC130: 13657 .ascii "write_idblock %x %x\012\000" 13658.LC131: 13659 .ascii "write_idblock fail! %x %x %x %x\012\000" 13660.LC132: 13661 .ascii "%s idb buffer alloc fail\012\000" 13662 .text 13663 .align 1 13664 .global FtlWriteToIDB 13665 .syntax unified 13666 .thumb 13667 .thumb_func 13668 .fpu softvfp 13669 .type FtlWriteToIDB, %function 13670FtlWriteToIDB: 13671 .fnstart 13672 @ args = 0, pretend = 0, frame = 104 13673 @ frame_needed = 0, uses_anonymous_args = 0 13674 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 13675 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 13676 add r8, r1, r0 13677 add r9, r8, #-1 13678 .pad #116 13679 sub sp, sp, #116 13680 ldr r5, .L1988 13681 mov r3, sp 13682 mov r4, r0 13683 bic r3, r3, #8160 13684 mov r6, r1 13685 bic r3, r3, #31 13686 mov r7, r2 13687 cmp r9, #63 13688 ldr r3, [r3, #24] 13689 str r3, [sp, #108] 13690 bls .L1924 13691 cmp r0, #576 13692 bcc .L1925 13693.L1924: 13694 ldr r3, [r5, #3676] 13695 cbnz r3, .L1926 13696.L1987: 13697 movs r4, #0 13698 b .L1923 13699.L1926: 13700 ldr r3, [r5, #3680] 13701 str r3, [sp, #12] 13702 ldr r2, [r3] 13703 ldr r3, .L1988+4 13704 cmp r2, r3 13705 bne .L1928 13706 ldr r3, [sp, #12] 13707 movs r2, #0 13708 ldrh r1, [r5, #10] 13709 add r0, r3, #260096 13710 movw r3, #65023 13711.L1932: 13712 ldr r4, [r0, #-4]! 13713 cbnz r4, .L1929 13714 ldr r4, [sp, #12] 13715 subs r3, r3, #1 13716 ldr r4, [r4, r2, lsl #2] 13717 adds r2, r2, #1 13718 cmp r2, #4096 13719 str r4, [r0, #2048] 13720 it hi 13721 movhi r2, #0 13722 cmp r3, #4096 13723 bne .L1932 13724 mov r9, #512 13725 b .L1931 13726.L1929: 13727 adds r3, r3, #127 13728 lsr r9, r3, #7 13729.L1931: 13730 lsls r1, r1, #2 13731 add r0, r9, #4 13732 ldr r4, .L1988 13733 uxth r1, r1 13734 bl __aeabi_uidiv 13735 adds r3, r0, #1 13736 mov r2, r3 13737 ldr r0, .L1988+8 13738 mov r1, r9 13739 str r3, [sp, #16] 13740 bl sftl_printk 13741 lsl r3, r9, #7 13742 str r3, [sp, #32] 13743 movs r3, #0 13744 mov fp, r3 13745 str r3, [sp, #20] 13746.L1933: 13747 ldr r3, [sp, #16] 13748 add r3, r3, fp 13749 str r3, [sp, #24] 13750 cmp r3, #8 13751 bls .L1955 13752 ldr r3, [sp, #20] 13753 cmp r3, #0 13754 bne .L1954 13755.L1928: 13756 mov r9, #-1 13757 b .L1954 13758.L1955: 13759 ldr r0, [r4, #3684] 13760 mov r2, #512 13761 movs r1, #0 13762 bl memset 13763 ldrh r6, [r4, #10] 13764 mul r3, r6, fp 13765 str r3, [sp, #28] 13766 ldr r3, [r4, #3260] 13767 cmp r3, #0 13768 beq .L1964 13769 ldr r3, [r4, #3264] 13770 cmp r3, #0 13771 ite eq 13772 moveq r8, #6 13773 movne r8, #9 13774.L1934: 13775 mul r7, r6, fp 13776 movs r5, #0 13777.L1935: 13778 ldr r3, [r4, #3248] 13779 mov r1, r7 13780 movs r0, #0 13781 adds r5, r5, #1 13782 blx r3 13783 ldr r3, [sp, #16] 13784 add r7, r7, r6 13785 cmp r3, r5 13786 bhi .L1935 13787 cmp r8, #9 13788 bne .L1966 13789 ldr r5, [r4, #3684] 13790 mov r2, #1024 13791 movs r1, #0 13792 mov r0, r5 13793 bl ftl_memset 13794 ldr r3, .L1988+12 13795 movs r1, #12 13796 strd r3, r1, [r5] 13797 movs r3, #0 13798 str r3, [r5, #12] 13799 mov r3, #1024 13800 strh r3, [r5, #16] @ movhi 13801 ldrh r3, [r4, #10] 13802 adds r0, r5, r1 13803 strh r3, [r5, #18] @ movhi 13804 mov r3, #4096 13805 str r3, [r5, #20] 13806 bl js_hash 13807 str r0, [r5, #8] 13808.L1936: 13809 ldr r3, [sp, #16] 13810 ldr r10, [sp, #12] 13811 muls r3, r6, r3 13812 movs r6, #0 13813 str r3, [sp, #36] 13814.L1937: 13815 ldr r3, [sp, #36] 13816 cmp r6, r3 13817 beq .L1944 13818 cmp r8, #9 13819 ite eq 13820 addeq r3, r6, #1 13821 lslne r3, r6, #2 13822 str r3, [sp, #44] 13823 movw r3, #61424 13824 str r3, [sp, #48] 13825 cmp r6, #0 13826 bne .L1940 13827 cmp r8, #9 13828 bne .L1940 13829 ldr r3, [r4, #3260] 13830 movs r0, #70 13831 blx r3 13832 ldr r7, [r4, #3252] 13833 ldr r1, [sp, #28] 13834 add r3, sp, #44 13835 mov r2, r5 13836 mov r0, r6 13837 blx r7 13838 ldr r3, [r4, #3260] 13839 mov r7, r0 13840 ldrb r0, [r4, #22] @ zero_extendqisi2 13841 blx r3 13842 adds r7, r7, #1 13843 bne .L1941 13844.L1944: 13845 ldrb r3, [r4, #14] @ zero_extendqisi2 13846 ldrh r10, [r4, #10] 13847 str r3, [sp, #28] 13848 ldr r3, [r4, #3260] 13849 ldr r5, [r4, #3684] 13850 mul r7, r10, fp 13851 cmp r3, #0 13852 bne .L1942 13853 mov r8, #6 13854.L1943: 13855 ldr r3, [sp, #16] 13856 movs r6, #0 13857 mul r10, r10, r3 13858.L1946: 13859 cmp r6, r10 13860 beq .L1950 13861 cmp r6, #0 13862 bne .L1947 13863 cmp r8, #9 13864 bne .L1947 13865 ldr r3, [r4, #3260] 13866 movs r0, #70 13867 blx r3 13868 ldr r3, [r4, #3264] 13869 movs r0, #2 13870 blx r3 13871 mov r2, r5 13872 ldr ip, [r4, #3256] 13873 mov r1, r7 13874 add r3, sp, #44 13875 mov r0, r6 13876 blx ip 13877 ldr r3, [r4, #3264] 13878 ldr r0, [sp, #28] 13879 blx r3 13880 ldr r3, [r4, #3260] 13881 ldrb r0, [r4, #22] @ zero_extendqisi2 13882 blx r3 13883 ldr r3, [r5] 13884 ldr r2, .L1988+12 13885 cmp r3, r2 13886 beq .L1948 13887.L1950: 13888 ldr r0, [r4, #3684] 13889 movs r5, #0 13890 ldr r1, [sp, #12] 13891 mov ip, r0 13892.L1949: 13893 mov r6, ip 13894 mov r7, r1 13895 add ip, ip, #4 13896 adds r1, r1, #4 13897 ldr r2, [r6] 13898 ldr r3, [r7] 13899 cmp r2, r3 13900 beq .L1952 13901 mov r2, #512 13902 movs r1, #0 13903 bl memset 13904 str r5, [sp] 13905 ldr r3, [r7] 13906 mov r1, fp 13907 ldr r0, .L1988+16 13908 ldr r2, [r6] 13909 bl sftl_printk 13910 ldrh r1, [r4, #10] 13911 ldr r3, [r4, #3248] 13912 movs r0, #0 13913 mul r1, fp, r1 13914 blx r3 13915.L1953: 13916 ldr fp, [sp, #24] 13917 b .L1933 13918.L1964: 13919 mov r8, #6 13920 b .L1934 13921.L1966: 13922 movs r5, #0 13923 b .L1936 13924.L1940: 13925 ldr r1, [sp, #28] 13926 add r3, sp, #44 13927 ldr r7, [r4, #3252] 13928 mov r2, r10 13929 add r1, r1, r6 13930 movs r0, #0 13931 blx r7 13932 adds r0, r0, #1 13933 beq .L1944 13934 add r10, r10, #2048 13935.L1941: 13936 adds r6, r6, #1 13937 b .L1937 13938.L1942: 13939 ldr r3, [r4, #3264] 13940 cmp r3, #0 13941 ite eq 13942 moveq r8, #6 13943 movne r8, #9 13944 b .L1943 13945.L1947: 13946 ldr ip, [r4, #3256] 13947 add r3, sp, #44 13948 mov r2, r5 13949 adds r1, r7, r6 13950 movs r0, #0 13951 blx ip 13952 adds r0, r0, #1 13953 beq .L1950 13954 ldr r1, [sp, #48] 13955 movw r3, #61424 13956 cmp r1, r3 13957 bne .L1950 13958 add r5, r5, #2048 13959.L1948: 13960 adds r6, r6, #1 13961 b .L1946 13962.L1989: 13963 .align 2 13964.L1988: 13965 .word .LANCHOR0 13966 .word -52655045 13967 .word .LC130 13968 .word 1179535694 13969 .word .LC131 13970.L1952: 13971 ldr r3, [sp, #32] 13972 adds r5, r5, #1 13973 cmp r5, r3 13974 bcc .L1949 13975 ldr r3, [sp, #20] 13976 adds r3, r3, #1 13977 str r3, [sp, #20] 13978 cmp r3, #5 13979 bls .L1953 13980.L1954: 13981 ldr r5, .L1990 13982 movs r3, #0 13983 mov r4, r9 13984 ldr r0, [r5, #3680] 13985 str r3, [r5, #3676] 13986 bl kfree 13987 ldr r0, [r5, #3684] 13988 bl kfree 13989.L1923: 13990 mov r3, sp 13991 ldr r2, [sp, #108] 13992 bic r3, r3, #8160 13993 bic r3, r3, #31 13994 ldr r3, [r3, #24] 13995 cmp r2, r3 13996 beq .L1963 13997 bl __stack_chk_fail 13998.L1925: 13999 cmp r0, #64 14000 bne .L1956 14001 mov r0, #262144 14002 bl ftl_malloc 14003 str r0, [r5, #3680] 14004 mov r0, #262144 14005 bl ftl_malloc 14006 mov r3, r0 14007 str r0, [r5, #3684] 14008 ldr r0, [r5, #3680] 14009 cbz r0, .L1957 14010 cbz r3, .L1957 14011 mov r2, #262144 14012 movs r1, #0 14013 movs r3, #1 14014 str r3, [r5, #3676] 14015 bl ftl_memset 14016.L1958: 14017 cmp r4, #63 14018 ldr r0, [r5, #3680] 14019 sub r3, r4, #64 14020 ittte ls 14021 rsbls r4, r4, #64 14022 addls r6, r6, r3 14023 addls r7, r7, r4, lsl #9 14024 addhi r0, r0, r3, lsl #9 14025 cmp r9, #576 14026 mov r1, r7 14027 itt cs 14028 subcs r6, r6, r8 14029 subcs r6, r6, #446 14030 lsls r2, r6, #9 14031 bl ftl_memcpy 14032 b .L1987 14033.L1957: 14034 ldr r1, .L1990+4 14035 ldr r0, .L1990+8 14036 bl sftl_printk 14037.L1956: 14038 ldr r3, [r5, #3676] 14039 cmp r3, #0 14040 bne .L1958 14041 b .L1987 14042.L1963: 14043 mov r0, r4 14044 add sp, sp, #116 14045 @ sp needed 14046 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 14047.L1991: 14048 .align 2 14049.L1990: 14050 .word .LANCHOR0 14051 .word .LANCHOR1+633 14052 .word .LC132 14053 .fnend 14054 .size FtlWriteToIDB, .-FtlWriteToIDB 14055 .align 1 14056 .global sftl_write 14057 .syntax unified 14058 .thumb 14059 .thumb_func 14060 .fpu softvfp 14061 .type sftl_write, %function 14062sftl_write: 14063 .fnstart 14064 @ args = 0, pretend = 0, frame = 0 14065 @ frame_needed = 0, uses_anonymous_args = 0 14066 push {r4, r5, r6, lr} 14067 .save {r4, r5, r6, lr} 14068 mov r5, r1 14069 mov r6, r2 14070 mov r4, r0 14071 bl FtlWriteToIDB 14072 mov r3, r6 14073 mov r2, r5 14074 mov r1, r4 14075 movs r0, #0 14076 pop {r4, r5, r6, lr} 14077 b FtlWrite 14078 .fnend 14079 .size sftl_write, .-sftl_write 14080 .align 1 14081 .global rk_sftl_vendor_dev_ops_register 14082 .syntax unified 14083 .thumb 14084 .thumb_func 14085 .fpu softvfp 14086 .type rk_sftl_vendor_dev_ops_register, %function 14087rk_sftl_vendor_dev_ops_register: 14088 .fnstart 14089 @ args = 0, pretend = 0, frame = 0 14090 @ frame_needed = 0, uses_anonymous_args = 0 14091 @ link register save eliminated. 14092 ldr r3, .L1996 14093 mov r2, r0 14094 ldr r0, [r3, #3688] 14095 cbnz r0, .L1995 14096 str r2, [r3, #3688] 14097 str r1, [r3, #3692] 14098 bx lr 14099.L1995: 14100 mov r0, #-1 14101 bx lr 14102.L1997: 14103 .align 2 14104.L1996: 14105 .word .LANCHOR0 14106 .fnend 14107 .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register 14108 .align 1 14109 .global rk_sftl_vendor_storage_init 14110 .syntax unified 14111 .thumb 14112 .thumb_func 14113 .fpu softvfp 14114 .type rk_sftl_vendor_storage_init, %function 14115rk_sftl_vendor_storage_init: 14116 .fnstart 14117 @ args = 0, pretend = 0, frame = 0 14118 @ frame_needed = 0, uses_anonymous_args = 0 14119 push {r3, r4, r5, r6, r7, r8, r9, lr} 14120 .save {r3, r4, r5, r6, r7, r8, r9, lr} 14121 mov r0, #65536 14122 ldr r5, .L2006 14123 bl ftl_malloc 14124 str r0, [r5, #3696] 14125 cmp r0, #0 14126 beq .L2004 14127 ldr r9, .L2006+4 14128 mov r8, #0 14129 mov r7, r8 14130 mov r6, r8 14131.L2002: 14132 ldr r3, [r5, #3688] 14133 lsls r0, r6, #7 14134 ldr r2, [r5, #3696] 14135 movs r1, #128 14136 blx r3 14137 mov r4, r0 14138 cbnz r0, .L2000 14139 ldr r3, [r5, #3696] 14140 ldr r2, [r3] 14141 cmp r2, r9 14142 bne .L2001 14143 add r2, r3, #61440 14144 ldr r1, [r3, #4] 14145 ldr r2, [r2, #4092] 14146 cmp r2, r1 14147 bne .L2001 14148 cmp r2, r7 14149 itt hi 14150 movhi r8, r6 14151 movhi r7, r2 14152.L2001: 14153 cbz r6, .L2005 14154 cbz r7, .L2003 14155 ldr r4, [r5, #3688] 14156 mov r2, r3 14157 lsl r0, r8, #7 14158 movs r1, #128 14159 blx r4 14160 mov r4, r0 14161 cbz r0, .L1998 14162.L2000: 14163 ldr r0, [r5, #3696] 14164 mov r4, #-1 14165 bl kfree 14166 movs r3, #0 14167 str r3, [r5, #3696] 14168 b .L1998 14169.L2005: 14170 movs r6, #1 14171 b .L2002 14172.L2003: 14173 mov r2, #65536 14174 mov r1, r7 14175 mov r0, r3 14176 bl memset 14177 add r2, r0, #61440 14178 strd r9, r6, [r0] 14179 str r6, [r2, #4092] 14180 movw r2, #64504 14181 strh r2, [r0, #14] @ movhi 14182.L1998: 14183 mov r0, r4 14184 pop {r3, r4, r5, r6, r7, r8, r9, pc} 14185.L2004: 14186 mvn r4, #11 14187 b .L1998 14188.L2007: 14189 .align 2 14190.L2006: 14191 .word .LANCHOR0 14192 .word 1380668996 14193 .fnend 14194 .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init 14195 .align 1 14196 .global rk_sftl_vendor_read 14197 .syntax unified 14198 .thumb 14199 .thumb_func 14200 .fpu softvfp 14201 .type rk_sftl_vendor_read, %function 14202rk_sftl_vendor_read: 14203 .fnstart 14204 @ args = 0, pretend = 0, frame = 0 14205 @ frame_needed = 0, uses_anonymous_args = 0 14206 push {r3, r4, r5, r6, r7, lr} 14207 .save {r3, r4, r5, r6, r7, lr} 14208 mov r6, r0 14209 ldr r3, .L2014 14210 mov r0, r1 14211 ldr r5, [r3, #3696] 14212 cbz r5, .L2013 14213 ldrh r1, [r5, #10] 14214 add r4, r5, #16 14215 movs r3, #0 14216.L2010: 14217 cmp r1, r3 14218 bhi .L2012 14219.L2013: 14220 mov r0, #-1 14221 b .L2008 14222.L2012: 14223 ldrh r7, [r4, r3, lsl #3] 14224 cmp r7, r6 14225 bne .L2011 14226 add r3, r5, r3, lsl #3 14227 ldrh r4, [r3, #20] 14228 ldrh r1, [r3, #18] 14229 cmp r4, r2 14230 it cs 14231 movcs r4, r2 14232 add r1, r1, #1024 14233 mov r2, r4 14234 add r1, r1, r5 14235 bl memcpy 14236 mov r0, r4 14237.L2008: 14238 pop {r3, r4, r5, r6, r7, pc} 14239.L2011: 14240 adds r3, r3, #1 14241 b .L2010 14242.L2015: 14243 .align 2 14244.L2014: 14245 .word .LANCHOR0 14246 .fnend 14247 .size rk_sftl_vendor_read, .-rk_sftl_vendor_read 14248 .align 1 14249 .global rk_sftl_vendor_write 14250 .syntax unified 14251 .thumb 14252 .thumb_func 14253 .fpu softvfp 14254 .type rk_sftl_vendor_write, %function 14255rk_sftl_vendor_write: 14256 .fnstart 14257 @ args = 0, pretend = 0, frame = 24 14258 @ frame_needed = 0, uses_anonymous_args = 0 14259 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 14260 .save {r4, r5, r6, r7, r8, r9, r10, fp, lr} 14261 mov r9, r1 14262 ldr r5, .L2035 14263 .pad #28 14264 sub sp, sp, #28 14265 mov r8, r2 14266 ldr r4, [r5, #3696] 14267 str r0, [sp, #4] 14268 cmp r4, #0 14269 beq .L2031 14270 ldrh r3, [r4, #8] 14271 add r7, r8, #63 14272 ldrh r2, [r4, #10] 14273 bic r7, r7, #63 14274 str r3, [sp, #8] 14275 add r3, r4, #16 14276 movs r6, #0 14277.L2018: 14278 cmp r6, r2 14279 bcc .L2026 14280 ldrh r1, [r4, #14] 14281 cmp r1, r7 14282 bcc .L2031 14283 add r3, r4, r2, lsl #3 14284 ldr r2, [sp, #4] 14285 uxth r7, r7 14286 strh r2, [r3, #16] @ movhi 14287 mov r2, r8 14288 ldrh r0, [r4, #12] 14289 strh r0, [r3, #18] @ movhi 14290 strh r8, [r3, #20] @ movhi 14291 adds r3, r0, r7 14292 add r0, r0, #1024 14293 subs r7, r1, r7 14294 strh r3, [r4, #12] @ movhi 14295 mov r1, r9 14296 add r0, r0, r4 14297 strh r7, [r4, #14] @ movhi 14298 bl memcpy 14299 ldrh r3, [r4, #10] 14300 add r2, r4, #61440 14301 adds r3, r3, #1 14302 strh r3, [r4, #10] @ movhi 14303 ldr r3, [r4, #4] 14304 adds r3, r3, #1 14305 str r3, [r4, #4] 14306 str r3, [r2, #4092] 14307 ldrh r3, [r4, #8] 14308 adds r3, r3, #1 14309 uxth r3, r3 14310 cmp r3, #1 14311 it hi 14312 movhi r3, #0 14313 strh r3, [r4, #8] @ movhi 14314 ldr r3, [r5, #3692] 14315 b .L2034 14316.L2026: 14317 ldrh r1, [r3, r6, lsl #3] 14318 ldr r0, [sp, #4] 14319 cmp r1, r0 14320 bne .L2019 14321 add r5, r4, r6, lsl #3 14322 add r3, r4, #1024 14323 ldrh r1, [r5, #20] 14324 adds r1, r1, #63 14325 bic r1, r1, #63 14326 str r1, [sp, #12] 14327 cmp r8, r1 14328 bls .L2020 14329 ldrh r1, [r4, #14] 14330 cmp r1, r7 14331 bcc .L2031 14332 ldrh fp, [r5, #18] 14333 subs r2, r2, #1 14334 str r2, [sp, #16] 14335.L2021: 14336 ldr r2, [sp, #16] 14337 uxth r10, fp 14338 adds r5, r5, #8 14339 cmp r2, r6 14340 bhi .L2022 14341 add r6, r4, r6, lsl #3 14342 ldr r2, [sp, #4] 14343 uxtah r0, r3, fp 14344 mov r1, r9 14345 strh r2, [r6, #16] @ movhi 14346 mov r2, r8 14347 strh r10, [r6, #18] @ movhi 14348 strh r8, [r6, #20] @ movhi 14349 bl memcpy 14350 uxth r3, r7 14351 ldrh r7, [r4, #14] 14352 add r10, r10, r3 14353 strh r10, [r4, #12] @ movhi 14354 subs r7, r7, r3 14355 ldr r3, [sp, #12] 14356 add r7, r7, r3 14357 strh r7, [r4, #14] @ movhi 14358.L2023: 14359 add r2, r4, #61440 14360 ldr r3, [r4, #4] 14361 adds r3, r3, #1 14362 str r3, [r4, #4] 14363 str r3, [r2, #4092] 14364 ldrh r3, [r4, #8] 14365 adds r3, r3, #1 14366 uxth r3, r3 14367 cmp r3, #1 14368 it hi 14369 movhi r3, #0 14370 strh r3, [r4, #8] @ movhi 14371 ldr r3, .L2035 14372 ldr r3, [r3, #3692] 14373.L2034: 14374 ldr r0, [sp, #8] 14375 mov r2, r4 14376 movs r1, #128 14377 lsls r0, r0, #7 14378 blx r3 14379 movs r0, #0 14380.L2016: 14381 add sp, sp, #28 14382 @ sp needed 14383 pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 14384.L2022: 14385 ldrh r2, [r5, #16] 14386 add r0, r3, fp 14387 strh r2, [r5, #8] @ movhi 14388 adds r6, r6, #1 14389 ldrh r2, [r5, #20] 14390 ldrh r1, [r5, #18] 14391 strh r2, [r5, #12] @ movhi 14392 adds r2, r2, #63 14393 strh r10, [r5, #10] @ movhi 14394 bic r10, r2, #63 14395 add r1, r1, r3 14396 mov r2, r10 14397 str r3, [sp, #20] 14398 add fp, fp, r10 14399 bl memcpy 14400 ldr r3, [sp, #20] 14401 b .L2021 14402.L2020: 14403 ldrh r0, [r5, #18] 14404 mov r2, r8 14405 mov r1, r9 14406 add r0, r0, r3 14407 bl memcpy 14408 strh r8, [r5, #20] @ movhi 14409 b .L2023 14410.L2019: 14411 adds r6, r6, #1 14412 b .L2018 14413.L2031: 14414 mov r0, #-1 14415 b .L2016 14416.L2036: 14417 .align 2 14418.L2035: 14419 .word .LANCHOR0 14420 .fnend 14421 .size rk_sftl_vendor_write, .-rk_sftl_vendor_write 14422 .section .rodata.str1.1 14423.LC133: 14424 .ascii "copy_from_user error %d %p %p\012\000" 14425 .text 14426 .align 1 14427 .global rk_sftl_vendor_storage_ioctl 14428 .syntax unified 14429 .thumb 14430 .thumb_func 14431 .fpu softvfp 14432 .type rk_sftl_vendor_storage_ioctl, %function 14433rk_sftl_vendor_storage_ioctl: 14434 .fnstart 14435 @ args = 0, pretend = 0, frame = 0 14436 @ frame_needed = 0, uses_anonymous_args = 0 14437 push {r4, r5, r6, lr} 14438 .save {r4, r5, r6, lr} 14439 mov r0, #4096 14440 mov r6, r1 14441 mov r4, r2 14442 bl ftl_malloc 14443 mov r5, r0 14444 cmp r0, #0 14445 beq .L2048 14446 ldr r3, .L2055 14447 cmp r6, r3 14448 beq .L2039 14449 adds r3, r3, #1 14450 cmp r6, r3 14451 beq .L2040 14452.L2053: 14453 mvn r4, #13 14454.L2041: 14455 mov r0, r5 14456 bl kfree 14457.L2037: 14458 mov r0, r4 14459 pop {r4, r5, r6, pc} 14460.L2039: 14461 mov r1, r4 14462 movs r2, #8 14463 bl _copy_from_user 14464 cbz r0, .L2042 14465 mov r2, r4 14466 mov r1, #256 14467.L2054: 14468 ldr r0, .L2055+4 14469 bl sftl_printk 14470 b .L2053 14471.L2042: 14472 ldr r2, [r5] 14473 ldr r3, .L2055+8 14474 cmp r2, r3 14475 beq .L2043 14476.L2044: 14477 mov r4, #-1 14478 b .L2041 14479.L2043: 14480 ldrh r2, [r5, #6] 14481 add r1, r5, #8 14482 ldrh r0, [r5, #4] 14483 bl rk_sftl_vendor_read 14484 adds r3, r0, #1 14485 beq .L2044 14486 mov r3, sp 14487 strh r0, [r5, #6] @ movhi 14488 bic r3, r3, #8160 14489 uxth r2, r0 14490 bic r3, r3, #31 14491 adds r2, r2, #8 14492 ldr r3, [r3, #8] 14493 .syntax unified 14494@ 177 "./include/linux/uaccess.h" 1 14495 .syntax unified 14496adds r1, r4, r2; sbcscc r1, r1, r3; movcc r3, #0 14497@ 0 "" 2 14498 .thumb 14499 .syntax unified 14500 cmp r3, #0 14501 bne .L2053 14502 mov r0, r4 14503 mov r1, r5 14504 bl arm_copy_to_user 14505 mov r4, r0 14506 cmp r0, #0 14507 beq .L2041 14508 b .L2053 14509.L2040: 14510 mov r1, r4 14511 movs r2, #8 14512 bl _copy_from_user 14513 cbz r0, .L2046 14514 mov r2, r4 14515 mov r1, #276 14516 b .L2054 14517.L2046: 14518 ldr r2, [r5] 14519 ldr r3, .L2055+8 14520 cmp r2, r3 14521 bne .L2044 14522 ldrh r2, [r5, #6] 14523 movw r3, #4087 14524 cmp r2, r3 14525 bhi .L2044 14526 adds r2, r2, #8 14527 mov r1, r4 14528 mov r0, r5 14529 uxth r2, r2 14530 bl _copy_from_user 14531 cbz r0, .L2047 14532 mov r2, r4 14533 movw r1, #283 14534 b .L2054 14535.L2047: 14536 ldrh r2, [r5, #6] 14537 add r1, r5, #8 14538 ldrh r0, [r5, #4] 14539 bl rk_sftl_vendor_write 14540 mov r4, r0 14541 b .L2041 14542.L2048: 14543 mov r4, #-1 14544 b .L2037 14545.L2056: 14546 .align 2 14547.L2055: 14548 .word 1074034177 14549 .word .LC133 14550 .word 1448232273 14551 .fnend 14552 .size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl 14553 .align 1 14554 .global rk_sftl_vendor_register 14555 .syntax unified 14556 .thumb 14557 .thumb_func 14558 .fpu softvfp 14559 .type rk_sftl_vendor_register, %function 14560rk_sftl_vendor_register: 14561 .fnstart 14562 @ args = 0, pretend = 0, frame = 0 14563 @ frame_needed = 0, uses_anonymous_args = 0 14564 @ link register save eliminated. 14565 ldr r0, .L2058 14566 b misc_register 14567.L2059: 14568 .align 2 14569.L2058: 14570 .word .LANCHOR2+12 14571 .fnend 14572 .size rk_sftl_vendor_register, .-rk_sftl_vendor_register 14573 .section .rodata.str1.1 14574.LC134: 14575 .ascii "vendor_storage\000" 14576 .global g_nand_ops 14577 .global g_nand_phy_info 14578 .global gc_ink_free_return_value 14579 .global check_vpc_table 14580 .global FtlUpdateVaildLpnCount 14581 .global g_ect_tbl_power_up_flush 14582 .global power_up_flag 14583 .global gFtlInitStatus 14584 .global DeviceCapacity 14585 .global g_power_lost_recovery_flag 14586 .global c_mlc_erase_count_value 14587 .global g_recovery_ppa_tbl 14588 .global g_recovery_page_min_ver 14589 .global g_recovery_page_num 14590 .global sftl_nand_check_spare_buf 14591 .global sftl_temp_buf 14592 .global sftl_nand_check_buf 14593 .global g_cur_erase_blk 14594 .global g_gc_skip_write_count 14595 .global g_gc_head_data_block_count 14596 .global g_gc_head_data_block 14597 .global g_ftl_nand_free_count 14598 .global g_in_swl_replace 14599 .global g_in_gc_progress 14600 .global g_max_erase_count 14601 .global g_totle_sys_slc_erase_count 14602 .global g_totle_slc_erase_count 14603 .global g_min_erase_count 14604 .global g_totle_avg_erase_count 14605 .global g_totle_mlc_erase_count 14606 .global g_totle_l2p_write_count 14607 .global g_totle_cache_write_count 14608 .global g_tmp_data_superblock_id 14609 .global g_totle_read_page_count 14610 .global g_totle_discard_page_count 14611 .global g_totle_read_sector 14612 .global g_totle_write_sector 14613 .global g_totle_write_page_count 14614 .global g_totle_gc_page_count 14615 .global g_gc_blk_index 14616 .global g_gc_merge_free_blk_threshold 14617 .global g_gc_free_blk_threshold 14618 .global g_gc_bad_block_temp_tbl 14619 .global g_gc_bad_block_gc_index 14620 .global g_gc_bad_block_temp_num 14621 .global g_gc_next_blk_1 14622 .global g_gc_next_blk 14623 .global g_gc_cur_blk_max_valid_pages 14624 .global g_gc_cur_blk_valid_pages 14625 .global g_gc_page_offset 14626 .global g_gc_blk_num 14627 .global p_gc_blk_tbl 14628 .global p_gc_page_info 14629 .global g_sys_ext_data 14630 .global g_sys_save_data 14631 .global gp_last_act_superblock 14632 .global g_gc_superblock 14633 .global g_gc_temp_superblock 14634 .global g_buffer_superblock 14635 .global g_active_superblock 14636 .global g_num_data_superblocks 14637 .global g_num_free_superblocks 14638 .global p_data_block_list_tail 14639 .global p_data_block_list_head 14640 .global p_free_data_block_list_head 14641 .global p_data_block_list_table 14642 .global g_l2p_last_update_region_id 14643 .global p_l2p_map_buf 14644 .global p_l2p_ram_map 14645 .global g_totle_vendor_block 14646 .global p_vendor_region_ppn_table 14647 .global p_vendor_block_ver_table 14648 .global p_vendor_block_valid_page_count 14649 .global p_vendor_block_table 14650 .global g_totle_map_block 14651 .global p_map_region_ppn_table 14652 .global p_map_block_ver_table 14653 .global p_map_block_valid_page_count 14654 .global p_map_block_table 14655 .global p_valid_page_count_check_table 14656 .global p_valid_page_count_table 14657 .global g_totle_swl_count 14658 .global p_swl_mul_table 14659 .global p_erase_count_table 14660 .global g_ect_tbl_info_size 14661 .global gp_ect_tbl_info 14662 .global g_gc_num_req 14663 .global c_gc_page_buf_num 14664 .global gp_gc_page_buf_info 14665 .global p_gc_data_buf 14666 .global p_gc_spare_buf 14667 .global p_io_spare_buf 14668 .global p_io_data_buf_1 14669 .global p_io_data_buf_0 14670 .global p_sys_spare_buf 14671 .global p_vendor_data_buf 14672 .global p_sys_data_buf_1 14673 .global p_sys_data_buf 14674 .global p_plane_order_table 14675 .global req_gc_dst 14676 .global req_gc 14677 .global req_erase 14678 .global req_prgm 14679 .global req_read 14680 .global req_sys 14681 .global gVendorBlkInfo 14682 .global gL2pMapInfo 14683 .global gSysFreeQueue 14684 .global gSysInfo 14685 .global gBbtInfo 14686 .global g_MaxLbn 14687 .global g_VaildLpn 14688 .global g_MaxLpn 14689 .global g_MaxLbaSector 14690 .global g_GlobalDataVersion 14691 .global g_GlobalSysVersion 14692 .global ftl_gc_temp_power_lost_recovery_flag 14693 .global c_ftl_nand_max_data_blks 14694 .global c_ftl_nand_data_op_blks_per_plane 14695 .global c_ftl_nand_data_blks_per_plane 14696 .global c_ftl_nand_max_sys_blks 14697 .global c_ftl_nand_init_sys_blks_per_plane 14698 .global c_ftl_nand_sys_blks_per_plane 14699 .global c_ftl_vendor_part_size 14700 .global c_ftl_nand_max_vendor_blks 14701 .global c_ftl_nand_max_map_blks 14702 .global c_ftl_nand_map_blks_per_plane 14703 .global c_ftl_nand_vendor_region_num 14704 .global c_ftl_nand_l2pmap_ram_region_num 14705 .global c_ftl_nand_map_region_num 14706 .global c_ftl_nand_totle_phy_blks 14707 .global c_ftl_nand_reserved_blks 14708 .global c_ftl_nand_byte_pre_oob 14709 .global c_ftl_nand_byte_pre_page 14710 .global c_ftl_nand_sec_pre_page_shift 14711 .global c_ftl_nand_sec_pre_page 14712 .global c_ftl_nand_page_pre_super_blk 14713 .global c_ftl_nand_page_pre_slc_blk 14714 .global c_ftl_nand_page_pre_blk 14715 .global c_ftl_nand_bbm_buf_size 14716 .global c_ftl_nand_ext_blk_pre_plane 14717 .global c_ftl_nand_blk_pre_plane 14718 .global c_ftl_nand_planes_num 14719 .global c_ftl_nand_blks_per_die_shift 14720 .global c_ftl_nand_blks_per_die 14721 .global c_ftl_nand_planes_per_die 14722 .global c_ftl_nand_die_num 14723 .global c_ftl_nand_type 14724 .section .rodata 14725 .align 2 14726 .set .LANCHOR1,. + 0 14727 .type __func__.30, %object 14728 .size __func__.30, 17 14729__func__.30: 14730 .ascii "INSERT_DATA_LIST\000" 14731 .type __func__.31, %object 14732 .size __func__.31, 17 14733__func__.31: 14734 .ascii "INSERT_FREE_LIST\000" 14735 .type __func__.29, %object 14736 .size __func__.29, 17 14737__func__.29: 14738 .ascii "List_remove_node\000" 14739 .type __func__.28, %object 14740 .size __func__.28, 22 14741__func__.28: 14742 .ascii "List_update_data_list\000" 14743 .type __func__.22, %object 14744 .size __func__.22, 22 14745__func__.22: 14746 .ascii "select_l2p_ram_region\000" 14747 .type __func__.14, %object 14748 .size __func__.14, 16 14749__func__.14: 14750 .ascii "make_superblock\000" 14751 .type __func__.8, %object 14752 .size __func__.8, 19 14753__func__.8: 14754 .ascii "get_new_active_ppa\000" 14755 .type __func__.1, %object 14756 .size __func__.1, 17 14757__func__.1: 14758 .ascii "FlashEraseBlocks\000" 14759 .type __func__.26, %object 14760 .size __func__.26, 26 14761__func__.26: 14762 .ascii "ftl_map_blk_alloc_new_blk\000" 14763 .type __func__.37, %object 14764 .size __func__.37, 11 14765__func__.37: 14766 .ascii "FtlMemInit\000" 14767 .type __func__.34, %object 14768 .size __func__.34, 14 14769__func__.34: 14770 .ascii "FtlBbt2Bitmap\000" 14771 .type __func__.13, %object 14772 .size __func__.13, 18 14773__func__.13: 14774 .ascii "SupperBlkListInit\000" 14775 .type __func__.3, %object 14776 .size __func__.3, 15 14777__func__.3: 14778 .ascii "FlashReadPages\000" 14779 .type __func__.19, %object 14780 .size __func__.19, 14 14781__func__.19: 14782 .ascii "FtlScanSysBlk\000" 14783 .type __func__.32, %object 14784 .size __func__.32, 11 14785__func__.32: 14786 .ascii "FtlLoadBbt\000" 14787 .type __func__.2, %object 14788 .size __func__.2, 15 14789__func__.2: 14790 .ascii "FlashProgPages\000" 14791 .type __func__.10, %object 14792 .size __func__.10, 25 14793__func__.10: 14794 .ascii "allocate_data_superblock\000" 14795 .type __func__.7, %object 14796 .size __func__.7, 16 14797__func__.7: 14798 .ascii "update_vpc_list\000" 14799 .type __func__.6, %object 14800 .size __func__.6, 20 14801__func__.6: 14802 .ascii "decrement_vpc_count\000" 14803 .type __func__.23, %object 14804 .size __func__.23, 16 14805__func__.23: 14806 .ascii "FtlMapWritePage\000" 14807 .type __func__.27, %object 14808 .size __func__.27, 16 14809__func__.27: 14810 .ascii "load_l2p_region\000" 14811 .type __func__.25, %object 14812 .size __func__.25, 15 14813__func__.25: 14814 .ascii "ftl_map_blk_gc\000" 14815 .type __func__.24, %object 14816 .size __func__.24, 31 14817__func__.24: 14818 .ascii "Ftl_write_map_blk_to_last_page\000" 14819 .type __func__.21, %object 14820 .size __func__.21, 9 14821__func__.21: 14822 .ascii "log2phys\000" 14823 .type __func__.16, %object 14824 .size __func__.16, 16 14825__func__.16: 14826 .ascii "FtlReUsePrevPpa\000" 14827 .type __func__.15, %object 14828 .size __func__.15, 22 14829__func__.15: 14830 .ascii "FtlRecoverySuperblock\000" 14831 .type __func__.11, %object 14832 .size __func__.11, 14 14833__func__.11: 14834 .ascii "ftl_check_vpc\000" 14835 .type __func__.20, %object 14836 .size __func__.20, 15 14837__func__.20: 14838 .ascii "FtlVpcTblFlush\000" 14839 .type __func__.12, %object 14840 .size __func__.12, 21 14841__func__.12: 14842 .ascii "FtlVpcCheckAndModify\000" 14843 .type __func__.9, %object 14844 .size __func__.9, 29 14845__func__.9: 14846 .ascii "allocate_new_data_superblock\000" 14847 .type __func__.36, %object 14848 .size __func__.36, 13 14849__func__.36: 14850 .ascii "FtlProgPages\000" 14851 .type __func__.5, %object 14852 .size __func__.5, 19 14853__func__.5: 14854 .ascii "FtlGcFreeTempBlock\000" 14855 .type __func__.4, %object 14856 .size __func__.4, 23 14857__func__.4: 14858 .ascii "rk_ftl_garbage_collect\000" 14859 .type __func__.35, %object 14860 .size __func__.35, 9 14861__func__.35: 14862 .ascii "FtlWrite\000" 14863 .type __func__.18, %object 14864 .size __func__.18, 15 14865__func__.18: 14866 .ascii "FtlLoadSysInfo\000" 14867 .type __func__.17, %object 14868 .size __func__.17, 18 14869__func__.17: 14870 .ascii "FtlMapTblRecovery\000" 14871 .type __func__.0, %object 14872 .size __func__.0, 14 14873__func__.0: 14874 .ascii "FtlWriteToIDB\000" 14875 .space 1 14876 .type rk_sftl_vendor_storage_fops, %object 14877 .size rk_sftl_vendor_storage_fops, 128 14878rk_sftl_vendor_storage_fops: 14879 .space 40 14880 .word rk_sftl_vendor_storage_ioctl 14881 .word rk_sftl_vendor_storage_ioctl 14882 .space 80 14883 .data 14884 .align 2 14885 .set .LANCHOR2,. + 0 14886 .type gFtlInitStatus, %object 14887 .size gFtlInitStatus, 4 14888gFtlInitStatus: 14889 .word -1 14890 .type ftl_gc_temp_block_bops_scan_page_addr, %object 14891 .size ftl_gc_temp_block_bops_scan_page_addr, 2 14892ftl_gc_temp_block_bops_scan_page_addr: 14893 .short -1 14894 .space 2 14895 .type power_up_flag, %object 14896 .size power_up_flag, 4 14897power_up_flag: 14898 .word 1 14899 .type rkflash_vender_storage_dev, %object 14900 .size rkflash_vender_storage_dev, 40 14901rkflash_vender_storage_dev: 14902 .word 255 14903 .word .LC134 14904 .word rk_sftl_vendor_storage_fops 14905 .space 28 14906 .bss 14907 .align 2 14908 .set .LANCHOR0,. + 0 14909 .type g_nand_phy_info, %object 14910 .size g_nand_phy_info, 24 14911g_nand_phy_info: 14912 .space 24 14913 .type g_active_superblock, %object 14914 .size g_active_superblock, 48 14915g_active_superblock: 14916 .space 48 14917 .type p_valid_page_count_table, %object 14918 .size p_valid_page_count_table, 4 14919p_valid_page_count_table: 14920 .space 4 14921 .type g_buffer_superblock, %object 14922 .size g_buffer_superblock, 48 14923g_buffer_superblock: 14924 .space 48 14925 .type g_gc_temp_superblock, %object 14926 .size g_gc_temp_superblock, 48 14927g_gc_temp_superblock: 14928 .space 48 14929 .type g_gc_superblock, %object 14930 .size g_gc_superblock, 48 14931g_gc_superblock: 14932 .space 48 14933 .type g_gc_next_blk_1, %object 14934 .size g_gc_next_blk_1, 2 14935g_gc_next_blk_1: 14936 .space 2 14937 .type g_gc_next_blk, %object 14938 .size g_gc_next_blk, 2 14939g_gc_next_blk: 14940 .space 2 14941 .type g_num_free_superblocks, %object 14942 .size g_num_free_superblocks, 2 14943g_num_free_superblocks: 14944 .space 2 14945 .space 2 14946 .type c_ftl_nand_sys_blks_per_plane, %object 14947 .size c_ftl_nand_sys_blks_per_plane, 4 14948c_ftl_nand_sys_blks_per_plane: 14949 .space 4 14950 .type c_ftl_nand_planes_num, %object 14951 .size c_ftl_nand_planes_num, 2 14952c_ftl_nand_planes_num: 14953 .space 2 14954 .space 2 14955 .type c_ftl_nand_max_sys_blks, %object 14956 .size c_ftl_nand_max_sys_blks, 4 14957c_ftl_nand_max_sys_blks: 14958 .space 4 14959 .type c_ftl_nand_data_blks_per_plane, %object 14960 .size c_ftl_nand_data_blks_per_plane, 2 14961c_ftl_nand_data_blks_per_plane: 14962 .space 2 14963 .type c_ftl_nand_blk_pre_plane, %object 14964 .size c_ftl_nand_blk_pre_plane, 2 14965c_ftl_nand_blk_pre_plane: 14966 .space 2 14967 .type c_ftl_nand_max_data_blks, %object 14968 .size c_ftl_nand_max_data_blks, 4 14969c_ftl_nand_max_data_blks: 14970 .space 4 14971 .type c_ftl_nand_totle_phy_blks, %object 14972 .size c_ftl_nand_totle_phy_blks, 4 14973c_ftl_nand_totle_phy_blks: 14974 .space 4 14975 .type c_ftl_nand_type, %object 14976 .size c_ftl_nand_type, 2 14977c_ftl_nand_type: 14978 .space 2 14979 .type c_ftl_nand_die_num, %object 14980 .size c_ftl_nand_die_num, 2 14981c_ftl_nand_die_num: 14982 .space 2 14983 .type c_ftl_nand_planes_per_die, %object 14984 .size c_ftl_nand_planes_per_die, 2 14985c_ftl_nand_planes_per_die: 14986 .space 2 14987 .type c_ftl_nand_sec_pre_page, %object 14988 .size c_ftl_nand_sec_pre_page, 2 14989c_ftl_nand_sec_pre_page: 14990 .space 2 14991 .type p_plane_order_table, %object 14992 .size p_plane_order_table, 32 14993p_plane_order_table: 14994 .space 32 14995 .type c_mlc_erase_count_value, %object 14996 .size c_mlc_erase_count_value, 2 14997c_mlc_erase_count_value: 14998 .space 2 14999 .type c_ftl_nand_ext_blk_pre_plane, %object 15000 .size c_ftl_nand_ext_blk_pre_plane, 2 15001c_ftl_nand_ext_blk_pre_plane: 15002 .space 2 15003 .type c_ftl_vendor_part_size, %object 15004 .size c_ftl_vendor_part_size, 2 15005c_ftl_vendor_part_size: 15006 .space 2 15007 .type c_ftl_nand_blks_per_die, %object 15008 .size c_ftl_nand_blks_per_die, 2 15009c_ftl_nand_blks_per_die: 15010 .space 2 15011 .type c_ftl_nand_blks_per_die_shift, %object 15012 .size c_ftl_nand_blks_per_die_shift, 2 15013c_ftl_nand_blks_per_die_shift: 15014 .space 2 15015 .type c_ftl_nand_page_pre_blk, %object 15016 .size c_ftl_nand_page_pre_blk, 2 15017c_ftl_nand_page_pre_blk: 15018 .space 2 15019 .type c_ftl_nand_page_pre_slc_blk, %object 15020 .size c_ftl_nand_page_pre_slc_blk, 2 15021c_ftl_nand_page_pre_slc_blk: 15022 .space 2 15023 .type c_ftl_nand_page_pre_super_blk, %object 15024 .size c_ftl_nand_page_pre_super_blk, 2 15025c_ftl_nand_page_pre_super_blk: 15026 .space 2 15027 .type c_ftl_nand_sec_pre_page_shift, %object 15028 .size c_ftl_nand_sec_pre_page_shift, 2 15029c_ftl_nand_sec_pre_page_shift: 15030 .space 2 15031 .type c_ftl_nand_byte_pre_page, %object 15032 .size c_ftl_nand_byte_pre_page, 2 15033c_ftl_nand_byte_pre_page: 15034 .space 2 15035 .type c_ftl_nand_byte_pre_oob, %object 15036 .size c_ftl_nand_byte_pre_oob, 2 15037c_ftl_nand_byte_pre_oob: 15038 .space 2 15039 .type c_ftl_nand_reserved_blks, %object 15040 .size c_ftl_nand_reserved_blks, 2 15041c_ftl_nand_reserved_blks: 15042 .space 2 15043 .type DeviceCapacity, %object 15044 .size DeviceCapacity, 4 15045DeviceCapacity: 15046 .space 4 15047 .type c_ftl_nand_max_vendor_blks, %object 15048 .size c_ftl_nand_max_vendor_blks, 2 15049c_ftl_nand_max_vendor_blks: 15050 .space 2 15051 .type c_ftl_nand_vendor_region_num, %object 15052 .size c_ftl_nand_vendor_region_num, 2 15053c_ftl_nand_vendor_region_num: 15054 .space 2 15055 .type c_ftl_nand_map_blks_per_plane, %object 15056 .size c_ftl_nand_map_blks_per_plane, 2 15057c_ftl_nand_map_blks_per_plane: 15058 .space 2 15059 .space 2 15060 .type c_ftl_nand_max_map_blks, %object 15061 .size c_ftl_nand_max_map_blks, 4 15062c_ftl_nand_max_map_blks: 15063 .space 4 15064 .type c_ftl_nand_init_sys_blks_per_plane, %object 15065 .size c_ftl_nand_init_sys_blks_per_plane, 4 15066c_ftl_nand_init_sys_blks_per_plane: 15067 .space 4 15068 .type c_ftl_nand_map_region_num, %object 15069 .size c_ftl_nand_map_region_num, 2 15070c_ftl_nand_map_region_num: 15071 .space 2 15072 .type c_ftl_nand_l2pmap_ram_region_num, %object 15073 .size c_ftl_nand_l2pmap_ram_region_num, 2 15074c_ftl_nand_l2pmap_ram_region_num: 15075 .space 2 15076 .type g_MaxLbaSector, %object 15077 .size g_MaxLbaSector, 4 15078g_MaxLbaSector: 15079 .space 4 15080 .type g_totle_vendor_block, %object 15081 .size g_totle_vendor_block, 2 15082g_totle_vendor_block: 15083 .space 2 15084 .space 2 15085 .type p_vendor_block_table, %object 15086 .size p_vendor_block_table, 4 15087p_vendor_block_table: 15088 .space 4 15089 .type gBbtInfo, %object 15090 .size gBbtInfo, 60 15091gBbtInfo: 15092 .space 60 15093 .type gSysFreeQueue, %object 15094 .size gSysFreeQueue, 2056 15095gSysFreeQueue: 15096 .space 2056 15097 .type g_sys_save_data, %object 15098 .size g_sys_save_data, 48 15099g_sys_save_data: 15100 .space 48 15101 .type p_data_block_list_table, %object 15102 .size p_data_block_list_table, 4 15103p_data_block_list_table: 15104 .space 4 15105 .type p_data_block_list_head, %object 15106 .size p_data_block_list_head, 4 15107p_data_block_list_head: 15108 .space 4 15109 .type p_data_block_list_tail, %object 15110 .size p_data_block_list_tail, 4 15111p_data_block_list_tail: 15112 .space 4 15113 .type g_num_data_superblocks, %object 15114 .size g_num_data_superblocks, 2 15115g_num_data_superblocks: 15116 .space 2 15117 .space 2 15118 .type p_free_data_block_list_head, %object 15119 .size p_free_data_block_list_head, 4 15120p_free_data_block_list_head: 15121 .space 4 15122 .type p_erase_count_table, %object 15123 .size p_erase_count_table, 4 15124p_erase_count_table: 15125 .space 4 15126 .type p_l2p_ram_map, %object 15127 .size p_l2p_ram_map, 4 15128p_l2p_ram_map: 15129 .space 4 15130 .type g_l2p_last_update_region_id, %object 15131 .size g_l2p_last_update_region_id, 2 15132g_l2p_last_update_region_id: 15133 .space 2 15134 .type FtlUpdateVaildLpnCount, %object 15135 .size FtlUpdateVaildLpnCount, 2 15136FtlUpdateVaildLpnCount: 15137 .space 2 15138 .type g_VaildLpn, %object 15139 .size g_VaildLpn, 4 15140g_VaildLpn: 15141 .space 4 15142 .type g_MaxLpn, %object 15143 .size g_MaxLpn, 4 15144g_MaxLpn: 15145 .space 4 15146 .type g_totle_read_page_count, %object 15147 .size g_totle_read_page_count, 4 15148g_totle_read_page_count: 15149 .space 4 15150 .type g_totle_discard_page_count, %object 15151 .size g_totle_discard_page_count, 4 15152g_totle_discard_page_count: 15153 .space 4 15154 .type g_totle_write_page_count, %object 15155 .size g_totle_write_page_count, 4 15156g_totle_write_page_count: 15157 .space 4 15158 .type g_totle_cache_write_count, %object 15159 .size g_totle_cache_write_count, 4 15160g_totle_cache_write_count: 15161 .space 4 15162 .type g_totle_l2p_write_count, %object 15163 .size g_totle_l2p_write_count, 4 15164g_totle_l2p_write_count: 15165 .space 4 15166 .type g_totle_gc_page_count, %object 15167 .size g_totle_gc_page_count, 4 15168g_totle_gc_page_count: 15169 .space 4 15170 .type g_totle_write_sector, %object 15171 .size g_totle_write_sector, 4 15172g_totle_write_sector: 15173 .space 4 15174 .type g_totle_read_sector, %object 15175 .size g_totle_read_sector, 4 15176g_totle_read_sector: 15177 .space 4 15178 .type g_GlobalSysVersion, %object 15179 .size g_GlobalSysVersion, 4 15180g_GlobalSysVersion: 15181 .space 4 15182 .type g_GlobalDataVersion, %object 15183 .size g_GlobalDataVersion, 4 15184g_GlobalDataVersion: 15185 .space 4 15186 .type g_totle_mlc_erase_count, %object 15187 .size g_totle_mlc_erase_count, 4 15188g_totle_mlc_erase_count: 15189 .space 4 15190 .type g_totle_slc_erase_count, %object 15191 .size g_totle_slc_erase_count, 4 15192g_totle_slc_erase_count: 15193 .space 4 15194 .type g_totle_avg_erase_count, %object 15195 .size g_totle_avg_erase_count, 4 15196g_totle_avg_erase_count: 15197 .space 4 15198 .type g_totle_sys_slc_erase_count, %object 15199 .size g_totle_sys_slc_erase_count, 4 15200g_totle_sys_slc_erase_count: 15201 .space 4 15202 .type g_max_erase_count, %object 15203 .size g_max_erase_count, 4 15204g_max_erase_count: 15205 .space 4 15206 .type g_min_erase_count, %object 15207 .size g_min_erase_count, 4 15208g_min_erase_count: 15209 .space 4 15210 .type c_ftl_nand_data_op_blks_per_plane, %object 15211 .size c_ftl_nand_data_op_blks_per_plane, 2 15212c_ftl_nand_data_op_blks_per_plane: 15213 .space 2 15214 .space 2 15215 .type gSysInfo, %object 15216 .size gSysInfo, 16 15217gSysInfo: 15218 .space 16 15219 .type g_sys_ext_data, %object 15220 .size g_sys_ext_data, 512 15221g_sys_ext_data: 15222 .space 512 15223 .type g_gc_free_blk_threshold, %object 15224 .size g_gc_free_blk_threshold, 2 15225g_gc_free_blk_threshold: 15226 .space 2 15227 .type g_gc_merge_free_blk_threshold, %object 15228 .size g_gc_merge_free_blk_threshold, 2 15229g_gc_merge_free_blk_threshold: 15230 .space 2 15231 .type g_gc_skip_write_count, %object 15232 .size g_gc_skip_write_count, 4 15233g_gc_skip_write_count: 15234 .space 4 15235 .type g_gc_blk_index, %object 15236 .size g_gc_blk_index, 2 15237g_gc_blk_index: 15238 .space 2 15239 .space 2 15240 .type g_in_swl_replace, %object 15241 .size g_in_swl_replace, 4 15242g_in_swl_replace: 15243 .space 4 15244 .type g_gc_num_req, %object 15245 .size g_gc_num_req, 4 15246g_gc_num_req: 15247 .space 4 15248 .type gp_gc_page_buf_info, %object 15249 .size gp_gc_page_buf_info, 4 15250gp_gc_page_buf_info: 15251 .space 4 15252 .type p_gc_data_buf, %object 15253 .size p_gc_data_buf, 4 15254p_gc_data_buf: 15255 .space 4 15256 .type p_gc_spare_buf, %object 15257 .size p_gc_spare_buf, 4 15258p_gc_spare_buf: 15259 .space 4 15260 .type req_gc, %object 15261 .size req_gc, 4 15262req_gc: 15263 .space 4 15264 .type c_gc_page_buf_num, %object 15265 .size c_gc_page_buf_num, 4 15266c_gc_page_buf_num: 15267 .space 4 15268 .type p_gc_blk_tbl, %object 15269 .size p_gc_blk_tbl, 4 15270p_gc_blk_tbl: 15271 .space 4 15272 .type g_gc_blk_num, %object 15273 .size g_gc_blk_num, 2 15274g_gc_blk_num: 15275 .space 2 15276 .space 2 15277 .type p_gc_page_info, %object 15278 .size p_gc_page_info, 4 15279p_gc_page_info: 15280 .space 4 15281 .type g_gc_page_offset, %object 15282 .size g_gc_page_offset, 2 15283g_gc_page_offset: 15284 .space 2 15285 .type g_gc_bad_block_temp_num, %object 15286 .size g_gc_bad_block_temp_num, 2 15287g_gc_bad_block_temp_num: 15288 .space 2 15289 .type g_gc_bad_block_temp_tbl, %object 15290 .size g_gc_bad_block_temp_tbl, 34 15291g_gc_bad_block_temp_tbl: 15292 .space 34 15293 .type g_gc_bad_block_gc_index, %object 15294 .size g_gc_bad_block_gc_index, 2 15295g_gc_bad_block_gc_index: 15296 .space 2 15297 .type g_nand_ops, %object 15298 .size g_nand_ops, 24 15299g_nand_ops: 15300 .space 24 15301 .type req_erase, %object 15302 .size req_erase, 4 15303req_erase: 15304 .space 4 15305 .type g_in_gc_progress, %object 15306 .size g_in_gc_progress, 4 15307g_in_gc_progress: 15308 .space 4 15309 .type g_gc_head_data_block, %object 15310 .size g_gc_head_data_block, 4 15311g_gc_head_data_block: 15312 .space 4 15313 .type g_gc_head_data_block_count, %object 15314 .size g_gc_head_data_block_count, 4 15315g_gc_head_data_block_count: 15316 .space 4 15317 .type g_cur_erase_blk, %object 15318 .size g_cur_erase_blk, 4 15319g_cur_erase_blk: 15320 .space 4 15321 .type req_read, %object 15322 .size req_read, 4 15323req_read: 15324 .space 4 15325 .type req_gc_dst, %object 15326 .size req_gc_dst, 4 15327req_gc_dst: 15328 .space 4 15329 .type req_prgm, %object 15330 .size req_prgm, 4 15331req_prgm: 15332 .space 4 15333 .type p_sys_data_buf, %object 15334 .size p_sys_data_buf, 4 15335p_sys_data_buf: 15336 .space 4 15337 .type p_sys_data_buf_1, %object 15338 .size p_sys_data_buf_1, 4 15339p_sys_data_buf_1: 15340 .space 4 15341 .type p_vendor_data_buf, %object 15342 .size p_vendor_data_buf, 4 15343p_vendor_data_buf: 15344 .space 4 15345 .type p_io_data_buf_0, %object 15346 .size p_io_data_buf_0, 4 15347p_io_data_buf_0: 15348 .space 4 15349 .type p_io_data_buf_1, %object 15350 .size p_io_data_buf_1, 4 15351p_io_data_buf_1: 15352 .space 4 15353 .type sftl_nand_check_buf, %object 15354 .size sftl_nand_check_buf, 4 15355sftl_nand_check_buf: 15356 .space 4 15357 .type sftl_temp_buf, %object 15358 .size sftl_temp_buf, 4 15359sftl_temp_buf: 15360 .space 4 15361 .type sftl_nand_check_spare_buf, %object 15362 .size sftl_nand_check_spare_buf, 4 15363sftl_nand_check_spare_buf: 15364 .space 4 15365 .type p_sys_spare_buf, %object 15366 .size p_sys_spare_buf, 4 15367p_sys_spare_buf: 15368 .space 4 15369 .type p_io_spare_buf, %object 15370 .size p_io_spare_buf, 4 15371p_io_spare_buf: 15372 .space 4 15373 .type g_ect_tbl_info_size, %object 15374 .size g_ect_tbl_info_size, 2 15375g_ect_tbl_info_size: 15376 .space 2 15377 .space 2 15378 .type p_swl_mul_table, %object 15379 .size p_swl_mul_table, 4 15380p_swl_mul_table: 15381 .space 4 15382 .type gp_ect_tbl_info, %object 15383 .size gp_ect_tbl_info, 4 15384gp_ect_tbl_info: 15385 .space 4 15386 .type p_valid_page_count_check_table, %object 15387 .size p_valid_page_count_check_table, 4 15388p_valid_page_count_check_table: 15389 .space 4 15390 .type p_map_block_table, %object 15391 .size p_map_block_table, 4 15392p_map_block_table: 15393 .space 4 15394 .type p_map_block_valid_page_count, %object 15395 .size p_map_block_valid_page_count, 4 15396p_map_block_valid_page_count: 15397 .space 4 15398 .type p_vendor_block_valid_page_count, %object 15399 .size p_vendor_block_valid_page_count, 4 15400p_vendor_block_valid_page_count: 15401 .space 4 15402 .type p_vendor_block_ver_table, %object 15403 .size p_vendor_block_ver_table, 4 15404p_vendor_block_ver_table: 15405 .space 4 15406 .type p_vendor_region_ppn_table, %object 15407 .size p_vendor_region_ppn_table, 4 15408p_vendor_region_ppn_table: 15409 .space 4 15410 .type p_map_region_ppn_table, %object 15411 .size p_map_region_ppn_table, 4 15412p_map_region_ppn_table: 15413 .space 4 15414 .type p_map_block_ver_table, %object 15415 .size p_map_block_ver_table, 4 15416p_map_block_ver_table: 15417 .space 4 15418 .type p_l2p_map_buf, %object 15419 .size p_l2p_map_buf, 4 15420p_l2p_map_buf: 15421 .space 4 15422 .type c_ftl_nand_bbm_buf_size, %object 15423 .size c_ftl_nand_bbm_buf_size, 2 15424c_ftl_nand_bbm_buf_size: 15425 .space 2 15426 .space 2 15427 .type gL2pMapInfo, %object 15428 .size gL2pMapInfo, 44 15429gL2pMapInfo: 15430 .space 44 15431 .type g_totle_map_block, %object 15432 .size g_totle_map_block, 2 15433g_totle_map_block: 15434 .space 2 15435 .type g_tmp_data_superblock_id, %object 15436 .size g_tmp_data_superblock_id, 2 15437g_tmp_data_superblock_id: 15438 .space 2 15439 .type g_totle_swl_count, %object 15440 .size g_totle_swl_count, 4 15441g_totle_swl_count: 15442 .space 4 15443 .type ftl_gc_temp_power_lost_recovery_flag, %object 15444 .size ftl_gc_temp_power_lost_recovery_flag, 4 15445ftl_gc_temp_power_lost_recovery_flag: 15446 .space 4 15447 .type g_recovery_page_min_ver, %object 15448 .size g_recovery_page_min_ver, 4 15449g_recovery_page_min_ver: 15450 .space 4 15451 .type req_sys, %object 15452 .size req_sys, 20 15453req_sys: 15454 .space 20 15455 .type g_power_lost_recovery_flag, %object 15456 .size g_power_lost_recovery_flag, 2 15457g_power_lost_recovery_flag: 15458 .space 2 15459 .space 2 15460 .type g_recovery_page_num, %object 15461 .size g_recovery_page_num, 4 15462g_recovery_page_num: 15463 .space 4 15464 .type g_recovery_ppa_tbl, %object 15465 .size g_recovery_ppa_tbl, 128 15466g_recovery_ppa_tbl: 15467 .space 128 15468 .type gVendorBlkInfo, %object 15469 .size gVendorBlkInfo, 44 15470gVendorBlkInfo: 15471 .space 44 15472 .type g_ect_tbl_power_up_flush, %object 15473 .size g_ect_tbl_power_up_flush, 2 15474g_ect_tbl_power_up_flush: 15475 .space 2 15476 .space 2 15477 .type gc_discard_updated, %object 15478 .size gc_discard_updated, 4 15479gc_discard_updated: 15480 .space 4 15481 .type gc_ink_free_return_value, %object 15482 .size gc_ink_free_return_value, 2 15483gc_ink_free_return_value: 15484 .space 2 15485 .type g_gc_cur_blk_valid_pages, %object 15486 .size g_gc_cur_blk_valid_pages, 2 15487g_gc_cur_blk_valid_pages: 15488 .space 2 15489 .type g_gc_cur_blk_max_valid_pages, %object 15490 .size g_gc_cur_blk_max_valid_pages, 2 15491g_gc_cur_blk_max_valid_pages: 15492 .space 2 15493 .space 2 15494 .type g_ftl_nand_free_count, %object 15495 .size g_ftl_nand_free_count, 4 15496g_ftl_nand_free_count: 15497 .space 4 15498 .type g_MaxLbn, %object 15499 .size g_MaxLbn, 4 15500g_MaxLbn: 15501 .space 4 15502 .type idb_need_write_back, %object 15503 .size idb_need_write_back, 4 15504idb_need_write_back: 15505 .space 4 15506 .type idb_buf, %object 15507 .size idb_buf, 4 15508idb_buf: 15509 .space 4 15510 .type gp_flash_check_buf, %object 15511 .size gp_flash_check_buf, 4 15512gp_flash_check_buf: 15513 .space 4 15514 .type _flash_read, %object 15515 .size _flash_read, 4 15516_flash_read: 15517 .space 4 15518 .type _flash_write, %object 15519 .size _flash_write, 4 15520_flash_write: 15521 .space 4 15522 .type g_vendor, %object 15523 .size g_vendor, 4 15524g_vendor: 15525 .space 4 15526 .type check_vpc_table, %object 15527 .size check_vpc_table, 16384 15528check_vpc_table: 15529 .space 16384 15530 .type gp_last_act_superblock, %object 15531 .size gp_last_act_superblock, 4 15532gp_last_act_superblock: 15533 .space 4 15534 .ident "GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621" 15535 .section .note.GNU-stack,"",%progbits 15536