1/* SPDX-License-Identifier: GPL-2.0 */ 2 3/* Copyright (c) 2018-2023 Rockchip Electronics Co. Ltd. 4 * date: 2023-04-11 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 divided 19 .syntax unified 20 .global __aeabi_uidiv 21 .arm 22 .syntax unified 23 .align 2 24 .syntax unified 25 .arm 26 .fpu softvfp 27 .type l2p_addr_tran, %function 28l2p_addr_tran: 29 @ args = 0, pretend = 0, frame = 0 30 @ frame_needed = 1, uses_anonymous_args = 0 31 mov ip, sp 32 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 33 sub fp, ip, #4 34 push {lr} 35 bl __gnu_mcount_nc 36 ldr r3, .L3 37 mov r7, r1 38 mov r8, r2 39 ldrh r9, [r3, #8] 40 ldrh r6, [r3, #10] 41 ldrh r3, [r3, #14] 42 cmp r3, #4 43 lsleq r4, r6, #1 44 lsreq r9, r9, #1 45 mov r1, r9 46 uxtheq r6, r4 47 ldr r4, [r0, #4] 48 lsr r5, r4, #10 49 ubfx r0, r4, #10, #16 50 bl __aeabi_uidiv 51 uxth r0, r0 52 uxth r5, r5 53 ubfx r4, r4, #0, #10 54 mls r5, r0, r9, r5 55 mla r4, r6, r5, r4 56 str r4, [r7] 57 str r0, [r8] 58 mov r0, #0 59 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 60.L4: 61 .align 2 62.L3: 63 .word .LANCHOR0 64 .size l2p_addr_tran, .-l2p_addr_tran 65 .align 2 66 .syntax unified 67 .arm 68 .fpu softvfp 69 .type _copy_from_user, %function 70_copy_from_user: 71 @ args = 0, pretend = 0, frame = 0 72 @ frame_needed = 1, uses_anonymous_args = 0 73 mov ip, sp 74 push {r4, r5, r6, r7, fp, ip, lr, pc} 75 sub fp, ip, #4 76 mov r3, sp 77 bic ip, r3, #8128 78 mov r6, r0 79 bic ip, ip, #63 80 mov r4, r2 81 ldr r3, [ip, #8] 82 .syntax divided 83@ 157 "./include/linux/uaccess.h" 1 84 .syntax unified 85adds r5, r1, r2; sbcscc r5, r5, r3; movcc r3, #0 86@ 0 "" 2 87 .arm 88 .syntax unified 89 cmp r3, #0 90 bne .L8 91 .syntax divided 92@ 89 "./arch/arm/include/asm/domain.h" 1 93 mrc p15, 0, r7, c3, c0 @ get domain 94@ 0 "" 2 95 .arm 96 .syntax unified 97 bic r3, r7, #12 98 orr r3, r3, #4 99 .syntax divided 100@ 99 "./arch/arm/include/asm/domain.h" 1 101 mcr p15, 0, r3, c3, c0 @ set domain 102@ 0 "" 2 103@ 102 "./arch/arm/include/asm/domain.h" 1 104 isb 105@ 0 "" 2 106 .arm 107 .syntax unified 108 bl arm_copy_from_user 109 mov r5, r0 110 .syntax divided 111@ 99 "./arch/arm/include/asm/domain.h" 1 112 mcr p15, 0, r7, c3, c0 @ set domain 113@ 0 "" 2 114@ 102 "./arch/arm/include/asm/domain.h" 1 115 isb 116@ 0 "" 2 117 .arm 118 .syntax unified 119 cmp r0, #0 120 beq .L5 121.L6: 122 sub r4, r4, r5 123 mov r2, r5 124 add r0, r6, r4 125 mov r1, #0 126 bl memset 127.L5: 128 mov r0, r5 129 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 130.L8: 131 mov r5, r2 132 b .L6 133 .size _copy_from_user, .-_copy_from_user 134 .section .rodata.str1.1,"aMS",%progbits,1 135.LC0: 136 .ascii "SFTL version: 5.0.59 20221121\000" 137.LC1: 138 .ascii "\012%s\012\000" 139.LC2: 140 .ascii "act blk: %x %x %x %x %x %x\012\000" 141.LC3: 142 .ascii "buf blk: %x %x %x %x %x %x\012\000" 143.LC4: 144 .ascii "tmp blk: %x %x %x %x %x %x\012\000" 145.LC5: 146 .ascii "gc blk: %x %x %x %x %x %x\012\000" 147.LC6: 148 .ascii "free blk: %x %x %x\012\000" 149 .text 150 .align 2 151 .global ftl_print_sblk_info 152 .syntax unified 153 .arm 154 .fpu softvfp 155 .type ftl_print_sblk_info, %function 156ftl_print_sblk_info: 157 @ args = 0, pretend = 0, frame = 0 158 @ frame_needed = 1, uses_anonymous_args = 0 159 mov ip, sp 160 push {r4, fp, ip, lr, pc} 161 sub fp, ip, #4 162 sub sp, sp, #20 163 push {lr} 164 bl __gnu_mcount_nc 165 ldr r4, .L13 166 ldr r1, .L13+4 167 ldr r0, .L13+8 168 bl sftl_printk 169 ldr r0, .L13+12 170 ldrh r1, [r4, #24] 171 ldr r2, [r4, #72] 172 lsl r3, r1, #1 173 ldrh r3, [r2, r3] 174 str r3, [sp, #8] 175 ldrh r3, [r4, #28] 176 str r3, [sp, #4] 177 ldrb r3, [r4, #32] @ zero_extendqisi2 178 ldrh r2, [r4, #26] 179 str r3, [sp] 180 ldrb r3, [r4, #30] @ zero_extendqisi2 181 bl sftl_printk 182 ldrh r1, [r4, #76] 183 ldr r2, [r4, #72] 184 ldr r0, .L13+16 185 lsl r3, r1, #1 186 ldrh r3, [r2, r3] 187 str r3, [sp, #8] 188 ldrh r3, [r4, #80] 189 str r3, [sp, #4] 190 ldrb r3, [r4, #84] @ zero_extendqisi2 191 ldrh r2, [r4, #78] 192 str r3, [sp] 193 ldrb r3, [r4, #82] @ zero_extendqisi2 194 bl sftl_printk 195 ldrh r1, [r4, #124] 196 ldr r2, [r4, #72] 197 ldr r0, .L13+20 198 lsl r3, r1, #1 199 ldrh r3, [r2, r3] 200 str r3, [sp, #8] 201 ldrh r3, [r4, #128] 202 str r3, [sp, #4] 203 ldrb r3, [r4, #132] @ zero_extendqisi2 204 ldrh r2, [r4, #126] 205 str r3, [sp] 206 ldrb r3, [r4, #130] @ zero_extendqisi2 207 bl sftl_printk 208 ldrh r1, [r4, #172] 209 ldr r2, [r4, #72] 210 ldr r0, .L13+24 211 lsl r3, r1, #1 212 ldrh r3, [r2, r3] 213 str r3, [sp, #8] 214 ldrh r3, [r4, #176] 215 str r3, [sp, #4] 216 ldrb r3, [r4, #180] @ zero_extendqisi2 217 ldrh r2, [r4, #174] 218 str r3, [sp] 219 ldrb r3, [r4, #178] @ zero_extendqisi2 220 bl sftl_printk 221 ldrh r3, [r4, #220] 222 ldrh r2, [r4, #222] 223 ldrh r1, [r4, #224] 224 ldr r0, .L13+28 225 bl sftl_printk 226 sub sp, fp, #16 227 ldmfd sp, {r4, fp, sp, pc} 228.L14: 229 .align 2 230.L13: 231 .word .LANCHOR0 232 .word .LC0 233 .word .LC1 234 .word .LC2 235 .word .LC3 236 .word .LC4 237 .word .LC5 238 .word .LC6 239 .size ftl_print_sblk_info, .-ftl_print_sblk_info 240 .align 2 241 .global Ftl_log2 242 .syntax unified 243 .arm 244 .fpu softvfp 245 .type Ftl_log2, %function 246Ftl_log2: 247 @ args = 0, pretend = 0, frame = 0 248 @ frame_needed = 1, uses_anonymous_args = 0 249 mov ip, sp 250 push {fp, ip, lr, pc} 251 sub fp, ip, #4 252 push {lr} 253 bl __gnu_mcount_nc 254 mov r1, #0 255 mov r2, #1 256.L16: 257 uxth r3, r1 258 cmp r2, r0 259 add r1, r1, #1 260 bls .L17 261 sub r0, r3, #1 262 uxth r0, r0 263 ldmfd sp, {fp, sp, pc} 264.L17: 265 lsl r2, r2, #1 266 b .L16 267 .size Ftl_log2, .-Ftl_log2 268 .align 2 269 .global FtlPrintInfo 270 .syntax unified 271 .arm 272 .fpu softvfp 273 .type FtlPrintInfo, %function 274FtlPrintInfo: 275 @ args = 0, pretend = 0, frame = 0 276 @ frame_needed = 1, uses_anonymous_args = 0 277 mov ip, sp 278 push {fp, ip, lr, pc} 279 sub fp, ip, #4 280 push {lr} 281 bl __gnu_mcount_nc 282 ldmfd sp, {fp, sp, pc} 283 .size FtlPrintInfo, .-FtlPrintInfo 284 .align 2 285 .global FtlSysBlkNumInit 286 .syntax unified 287 .arm 288 .fpu softvfp 289 .type FtlSysBlkNumInit, %function 290FtlSysBlkNumInit: 291 @ args = 0, pretend = 0, frame = 0 292 @ frame_needed = 1, uses_anonymous_args = 0 293 mov ip, sp 294 push {fp, ip, lr, pc} 295 sub fp, ip, #4 296 push {lr} 297 bl __gnu_mcount_nc 298 ldr r3, .L20 299 cmp r0, #24 300 movcc r0, #24 301 ldrh r2, [r3, #232] 302 ldrh r1, [r3, #242] 303 str r0, [r3, #228] 304 mul r2, r0, r2 305 sub r0, r1, r0 306 ldr r1, [r3, #248] 307 str r2, [r3, #236] 308 strh r0, [r3, #240] @ movhi 309 sub r2, r1, r2 310 mov r0, #0 311 str r2, [r3, #244] 312 ldmfd sp, {fp, sp, pc} 313.L21: 314 .align 2 315.L20: 316 .word .LANCHOR0 317 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit 318 .global __aeabi_idiv 319 .align 2 320 .global FtlConstantsInit 321 .syntax unified 322 .arm 323 .fpu softvfp 324 .type FtlConstantsInit, %function 325FtlConstantsInit: 326 @ args = 0, pretend = 0, frame = 8 327 @ frame_needed = 1, uses_anonymous_args = 0 328 mov ip, sp 329 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 330 sub fp, ip, #4 331 sub sp, sp, #12 332 push {lr} 333 bl __gnu_mcount_nc 334 ldr r4, .L36 335 mov r9, r0 336 ldrh r2, [r0] 337 movw lr, #258 338 add r1, r4, #256 339 ldrh r6, [r0, #2] 340 ldrh ip, [r0, #4] 341 ldrh r3, [r0, #6] 342 ldrh r0, [r0, #14] 343 strh r2, [r4, #252] @ movhi 344 cmp r0, #4 345 strh r6, [r4, #254] @ movhi 346 strh ip, [r1] @ movhi 347 strh r3, [r4, #242] @ movhi 348 strh r0, [r4, lr] @ movhi 349 bne .L23 350 lsr r3, r3, #1 351 strh r3, [r4, #242] @ movhi 352 mov r3, #8 353 strh r3, [r4, lr] @ movhi 354.L24: 355 ldr r0, .L36+4 356 mov r3, #0 357.L25: 358 strb r3, [r0], #1 359 add r3, r3, #1 360 cmp r3, #32 361 bne .L25 362 movw r3, #294 363 ldr r5, .L36+8 364 ldrh r7, [r4, #242] 365 mov r0, #0 366 strh r0, [r4, r3] @ movhi 367 mov r3, r5 368 ldrh r0, [r1] 369 cmp r2, #1 370 mov r8, r5 371 add r5, r5, #28 372 movne r2, #5 373 strh r2, [r3], #4 @ movhi 374 mov r2, #640 375 smulbb r6, r6, r0 376 strh r2, [r3] @ movhi 377 smulbb r0, r0, r7 378 movw r3, #298 379 uxth r6, r6 380 strh r6, [r4, #232] @ movhi 381 uxth r0, r0 382 strh r0, [r4, r3] @ movhi 383 bl Ftl_log2 384 ldrh r2, [r9, #12] 385 movw r3, #302 386 strh r0, [r5, #-20] @ movhi 387 strh r2, [r5, #-16] @ movhi 388 strh r2, [r4, r3] @ movhi 389 movw r3, #306 390 smulbb r1, r6, r2 391 str r2, [fp, #-52] 392 strh r1, [r4, r3] @ movhi 393 movw r3, #258 394 ldrh r1, [r4, r3] 395 str r1, [fp, #-48] 396 mov r0, r1 397 bl Ftl_log2 398 ldr r1, [fp, #-48] 399 ldr r2, [fp, #-52] 400 mov r10, r0 401 strh r0, [r8, #16]! @ movhi 402 movw r0, #310 403 lsl r3, r1, #9 404 uxth r3, r3 405 strh r3, [r4, r0] @ movhi 406 ldrh r0, [r9, #20] 407 mul r1, r2, r1 408 lsr r3, r3, #8 409 strh r3, [r5, #-8] @ movhi 410 movw r3, #314 411 strh r0, [r4, r3] @ movhi 412 mul r3, r7, r6 413 str r3, [r4, #248] 414 mov r0, #5120 415 lsl r7, r7, #6 416 mul r3, r1, r3 417 asr r3, r3, #11 418 str r3, [r4, #316] 419 bl __aeabi_idiv 420 cmp r0, #4 421 movw r2, #322 422 strhgt r0, [r5] @ movhi 423 movle r3, #4 424 strhle r3, [r5] @ movhi 425 mov r3, #640 426 mov r1, r6 427 asr r3, r3, r10 428 add r10, r10, #9 429 add r3, r3, #2 430 strh r3, [r4, r2] @ movhi 431 ldr r3, .L36+12 432 asr r7, r7, r10 433 ldrh r0, [r5] 434 strh r7, [r3] @ movhi 435 uxth r7, r7 436 mul r3, r7, r6 437 str r3, [r4, #328] 438 bl __aeabi_uidiv 439 cmp r6, #1 440 uxtah r7, r7, r0 441 addne r7, r7, #8 442 addeq r7, r7, #12 443 str r7, [r4, #228] 444 ldrh r0, [r4, #228] 445 bl FtlSysBlkNumInit 446 ldr r3, [r4, #228] 447 str r3, [r4, #332] 448 movw r3, #302 449 ldr r2, [r4, #244] 450 mov r0, #0 451 ldrh r3, [r4, r3] 452 str r0, [r4, #340] 453 mul r3, r2, r3 454 ldrh r2, [r8] 455 add r2, r2, #9 456 lsl r3, r3, #2 457 lsr r3, r3, r2 458 ldr r2, .L36+16 459 add r3, r3, #2 460 strh r3, [r2] @ movhi 461 movw r3, #338 462 mov r2, #32 463 strh r2, [r4, r3] @ movhi 464 ldrh r3, [r5] 465 add r3, r3, #3 466 strh r3, [r5] @ movhi 467 ldr r3, [r4, #328] 468 add r3, r3, #3 469 str r3, [r4, #328] 470 sub sp, fp, #40 471 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 472.L23: 473 cmp r0, #8 474 cmpeq ip, #1 475 lsreq r3, r3, #1 476 strheq r3, [r4, #242] @ movhi 477 moveq r3, #2 478 strheq r3, [r1] @ movhi 479 b .L24 480.L37: 481 .align 2 482.L36: 483 .word .LANCHOR0 484 .word .LANCHOR0+260 485 .word .LANCHOR0+292 486 .word .LANCHOR0+324 487 .word .LANCHOR0+336 488 .size FtlConstantsInit, .-FtlConstantsInit 489 .align 2 490 .global IsBlkInVendorPart 491 .syntax unified 492 .arm 493 .fpu softvfp 494 .type IsBlkInVendorPart, %function 495IsBlkInVendorPart: 496 @ args = 0, pretend = 0, frame = 0 497 @ frame_needed = 1, uses_anonymous_args = 0 498 mov ip, sp 499 push {fp, ip, lr, pc} 500 sub fp, ip, #4 501 push {lr} 502 bl __gnu_mcount_nc 503 ldr r3, .L44 504 mov r1, r0 505 add r2, r3, #344 506 ldrh r0, [r2] 507 cmp r0, #0 508 ldmfdeq sp, {fp, sp, pc} 509 ldr r2, [r3, #348] 510 add r3, r3, #320 511 ldrh r3, [r3] 512 add r3, r2, r3, lsl #1 513.L40: 514 cmp r2, r3 515 bne .L41 516 mov r0, #0 517 ldmfd sp, {fp, sp, pc} 518.L41: 519 ldrh r0, [r2], #2 520 cmp r1, r0 521 bne .L40 522 mov r0, #1 523 ldmfd sp, {fp, sp, pc} 524.L45: 525 .align 2 526.L44: 527 .word .LANCHOR0 528 .size IsBlkInVendorPart, .-IsBlkInVendorPart 529 .align 2 530 .global FtlCacheWriteBack 531 .syntax unified 532 .arm 533 .fpu softvfp 534 .type FtlCacheWriteBack, %function 535FtlCacheWriteBack: 536 @ args = 0, pretend = 0, frame = 0 537 @ frame_needed = 1, uses_anonymous_args = 0 538 mov ip, sp 539 push {fp, ip, lr, pc} 540 sub fp, ip, #4 541 push {lr} 542 bl __gnu_mcount_nc 543 mov r0, #0 544 ldmfd sp, {fp, sp, pc} 545 .size FtlCacheWriteBack, .-FtlCacheWriteBack 546 .align 2 547 .global sftl_get_density 548 .syntax unified 549 .arm 550 .fpu softvfp 551 .type sftl_get_density, %function 552sftl_get_density: 553 @ args = 0, pretend = 0, frame = 0 554 @ frame_needed = 1, uses_anonymous_args = 0 555 mov ip, sp 556 push {fp, ip, lr, pc} 557 sub fp, ip, #4 558 push {lr} 559 bl __gnu_mcount_nc 560 ldr r3, .L48 561 ldr r0, [r3, #340] 562 ldmfd sp, {fp, sp, pc} 563.L49: 564 .align 2 565.L48: 566 .word .LANCHOR0 567 .size sftl_get_density, .-sftl_get_density 568 .global __aeabi_uidivmod 569 .section .rodata.str1.1 570.LC7: 571 .ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012" 572 .ascii "\000" 573 .text 574 .align 2 575 .global FtlBbmMapBadBlock 576 .syntax unified 577 .arm 578 .fpu softvfp 579 .type FtlBbmMapBadBlock, %function 580FtlBbmMapBadBlock: 581 @ args = 0, pretend = 0, frame = 0 582 @ frame_needed = 1, uses_anonymous_args = 0 583 mov ip, sp 584 push {r4, r5, r6, r7, fp, ip, lr, pc} 585 sub fp, ip, #4 586 sub sp, sp, #8 587 push {lr} 588 bl __gnu_mcount_nc 589 ldr r4, .L51 590 movw r3, #298 591 mov r5, r0 592 ldrh r7, [r4, r3] 593 mov r1, r7 594 bl __aeabi_uidiv 595 uxth r6, r0 596 mov r1, r7 597 mov r0, r5 598 bl __aeabi_uidivmod 599 add r3, r4, r6, lsl #2 600 ubfx r0, r1, #5, #11 601 and ip, r1, #31 602 add r4, r4, #352 603 mov lr, #1 604 ldr r3, [r3, #380] 605 ldr r2, [r3, r0, lsl #2] 606 orr r2, r2, lr, lsl ip 607 str r2, [r3, r0, lsl #2] 608 uxth r3, r1 609 ldr r0, .L51+4 610 mov r1, r5 611 str r2, [sp] 612 mov r2, r6 613 bl sftl_printk 614 ldrh r3, [r4, #6] 615 mov r0, #0 616 add r3, r3, #1 617 strh r3, [r4, #6] @ movhi 618 sub sp, fp, #28 619 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 620.L52: 621 .align 2 622.L51: 623 .word .LANCHOR0 624 .word .LC7 625 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock 626 .align 2 627 .global FtlBbmIsBadBlock 628 .syntax unified 629 .arm 630 .fpu softvfp 631 .type FtlBbmIsBadBlock, %function 632FtlBbmIsBadBlock: 633 @ args = 0, pretend = 0, frame = 0 634 @ frame_needed = 1, uses_anonymous_args = 0 635 mov ip, sp 636 push {r4, r5, r6, r7, fp, ip, lr, pc} 637 sub fp, ip, #4 638 push {lr} 639 bl __gnu_mcount_nc 640 ldr r5, .L54 641 movw r3, #298 642 mov r6, r0 643 ldrh r7, [r5, r3] 644 mov r1, r7 645 bl __aeabi_uidivmod 646 mov r0, r6 647 uxth r4, r1 648 mov r1, r7 649 bl __aeabi_uidiv 650 uxth r0, r0 651 lsr r2, r4, #5 652 and r4, r4, #31 653 add r5, r5, r0, lsl #2 654 ldr r3, [r5, #380] 655 ldr r0, [r3, r2, lsl #2] 656 lsr r0, r0, r4 657 and r0, r0, #1 658 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 659.L55: 660 .align 2 661.L54: 662 .word .LANCHOR0 663 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock 664 .align 2 665 .global FtlBbtInfoPrint 666 .syntax unified 667 .arm 668 .fpu softvfp 669 .type FtlBbtInfoPrint, %function 670FtlBbtInfoPrint: 671 @ args = 0, pretend = 0, frame = 0 672 @ frame_needed = 1, uses_anonymous_args = 0 673 mov ip, sp 674 push {fp, ip, lr, pc} 675 sub fp, ip, #4 676 push {lr} 677 bl __gnu_mcount_nc 678 ldmfd sp, {fp, sp, pc} 679 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint 680 .align 2 681 .global FtlBbtCalcTotleCnt 682 .syntax unified 683 .arm 684 .fpu softvfp 685 .type FtlBbtCalcTotleCnt, %function 686FtlBbtCalcTotleCnt: 687 @ args = 0, pretend = 0, frame = 0 688 @ frame_needed = 1, uses_anonymous_args = 0 689 mov ip, sp 690 push {r4, r5, r6, r7, fp, ip, lr, pc} 691 sub fp, ip, #4 692 push {lr} 693 bl __gnu_mcount_nc 694 ldr r3, .L64 695 movw r2, #298 696 mov r5, #0 697 mov r4, r5 698 ldrh r6, [r3, r2] 699 ldrh r3, [r3, #254] 700 mul r6, r3, r6 701.L58: 702 uxth r0, r5 703 cmp r0, r6 704 blt .L60 705 mov r0, r4 706 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 707.L60: 708 bl FtlBbmIsBadBlock 709 cmp r0, #0 710 addne r4, r4, #1 711 add r5, r5, #1 712 uxthne r4, r4 713 b .L58 714.L65: 715 .align 2 716.L64: 717 .word .LANCHOR0 718 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt 719 .align 2 720 .global V2P_block 721 .syntax unified 722 .arm 723 .fpu softvfp 724 .type V2P_block, %function 725V2P_block: 726 @ args = 0, pretend = 0, frame = 0 727 @ frame_needed = 1, uses_anonymous_args = 0 728 mov ip, sp 729 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 730 sub fp, ip, #4 731 push {lr} 732 bl __gnu_mcount_nc 733 ldr r8, .L67 734 mov r4, r1 735 mov r6, r0 736 add r3, r8, #256 737 ldrh r7, [r3] 738 mov r1, r7 739 bl __aeabi_uidiv 740 movw r3, #298 741 smulbb r4, r7, r4 742 mov r1, r7 743 ldrh r5, [r8, r3] 744 smulbb r5, r5, r0 745 mov r0, r6 746 bl __aeabi_uidivmod 747 add r4, r4, r1 748 add r4, r5, r4 749 uxth r0, r4 750 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 751.L68: 752 .align 2 753.L67: 754 .word .LANCHOR0 755 .size V2P_block, .-V2P_block 756 .align 2 757 .global P2V_plane 758 .syntax unified 759 .arm 760 .fpu softvfp 761 .type P2V_plane, %function 762P2V_plane: 763 @ args = 0, pretend = 0, frame = 0 764 @ frame_needed = 1, uses_anonymous_args = 0 765 mov ip, sp 766 push {r4, r5, r6, r7, fp, ip, lr, pc} 767 sub fp, ip, #4 768 push {lr} 769 bl __gnu_mcount_nc 770 ldr r3, .L70 771 mov r5, r0 772 add r2, r3, #256 773 ldrh r6, [r2] 774 movw r2, #298 775 ldrh r1, [r3, r2] 776 bl __aeabi_uidiv 777 mov r1, r6 778 smulbb r4, r0, r6 779 mov r0, r5 780 bl __aeabi_uidivmod 781 add r0, r4, r1 782 uxth r0, r0 783 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 784.L71: 785 .align 2 786.L70: 787 .word .LANCHOR0 788 .size P2V_plane, .-P2V_plane 789 .align 2 790 .global P2V_block_in_plane 791 .syntax unified 792 .arm 793 .fpu softvfp 794 .type P2V_block_in_plane, %function 795P2V_block_in_plane: 796 @ args = 0, pretend = 0, frame = 0 797 @ frame_needed = 1, uses_anonymous_args = 0 798 mov ip, sp 799 push {r4, r5, fp, ip, lr, pc} 800 sub fp, ip, #4 801 push {lr} 802 bl __gnu_mcount_nc 803 ldr r4, .L73 804 movw r3, #298 805 ldrh r1, [r4, r3] 806 add r4, r4, #256 807 bl __aeabi_uidivmod 808 mov r0, r1 809 ldrh r1, [r4] 810 uxth r0, r0 811 bl __aeabi_uidiv 812 uxth r0, r0 813 ldmfd sp, {r4, r5, fp, sp, pc} 814.L74: 815 .align 2 816.L73: 817 .word .LANCHOR0 818 .size P2V_block_in_plane, .-P2V_block_in_plane 819 .align 2 820 .global ftl_cmp_data_ver 821 .syntax unified 822 .arm 823 .fpu softvfp 824 .type ftl_cmp_data_ver, %function 825ftl_cmp_data_ver: 826 @ args = 0, pretend = 0, frame = 0 827 @ frame_needed = 1, uses_anonymous_args = 0 828 mov ip, sp 829 push {fp, ip, lr, pc} 830 sub fp, ip, #4 831 push {lr} 832 bl __gnu_mcount_nc 833 cmp r0, r1 834 bls .L76 835 sub r0, r0, r1 836 cmp r0, #-2147483648 837 movhi r0, #0 838 movls r0, #1 839 ldmfd sp, {fp, sp, pc} 840.L76: 841 sub r1, r1, r0 842 cmp r1, #-2147483648 843 movls r0, #0 844 movhi r0, #1 845 ldmfd sp, {fp, sp, pc} 846 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver 847 .align 2 848 .global FtlFreeSysBlkQueueEmpty 849 .syntax unified 850 .arm 851 .fpu softvfp 852 .type FtlFreeSysBlkQueueEmpty, %function 853FtlFreeSysBlkQueueEmpty: 854 @ args = 0, pretend = 0, frame = 0 855 @ frame_needed = 1, uses_anonymous_args = 0 856 mov ip, sp 857 push {fp, ip, lr, pc} 858 sub fp, ip, #4 859 push {lr} 860 bl __gnu_mcount_nc 861 ldr r3, .L79 862 ldrh r0, [r3, #6] 863 clz r0, r0 864 lsr r0, r0, #5 865 ldmfd sp, {fp, sp, pc} 866.L80: 867 .align 2 868.L79: 869 .word .LANCHOR0+412 870 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty 871 .align 2 872 .global FtlFreeSysBlkQueueFull 873 .syntax unified 874 .arm 875 .fpu softvfp 876 .type FtlFreeSysBlkQueueFull, %function 877FtlFreeSysBlkQueueFull: 878 @ args = 0, pretend = 0, frame = 0 879 @ frame_needed = 1, uses_anonymous_args = 0 880 mov ip, sp 881 push {fp, ip, lr, pc} 882 sub fp, ip, #4 883 push {lr} 884 bl __gnu_mcount_nc 885 ldr r3, .L82 886 ldrh r0, [r3, #6] 887 sub r0, r0, #1024 888 clz r0, r0 889 lsr r0, r0, #5 890 ldmfd sp, {fp, sp, pc} 891.L83: 892 .align 2 893.L82: 894 .word .LANCHOR0+412 895 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull 896 .align 2 897 .global FtlFreeSysBLkSort 898 .syntax unified 899 .arm 900 .fpu softvfp 901 .type FtlFreeSysBLkSort, %function 902FtlFreeSysBLkSort: 903 @ args = 0, pretend = 0, frame = 0 904 @ frame_needed = 1, uses_anonymous_args = 0 905 mov ip, sp 906 push {r4, r5, fp, ip, lr, pc} 907 sub fp, ip, #4 908 push {lr} 909 bl __gnu_mcount_nc 910 ldr r3, .L93 911 ldrh r2, [r3, #6] 912 cmp r2, #0 913 ldmfdeq sp, {r4, r5, fp, sp, pc} 914 ldr r2, .L93+4 915 mov r0, #0 916 ldrh r1, [r3, #2] 917 mov lr, r0 918 ldrh ip, [r2, #28] 919 ldrh r2, [r3, #4] 920 and ip, ip, #31 921.L87: 922 uxth r4, r0 923 cmp ip, r4 924 bhi .L88 925 cmp lr, #0 926 strhne r1, [r3, #2] @ movhi 927 strhne r2, [r3, #4] @ movhi 928 ldmfd sp, {r4, r5, fp, sp, pc} 929.L88: 930 add lr, r3, r1, lsl #1 931 add r1, r1, #1 932 add r0, r0, #1 933 ubfx r1, r1, #0, #10 934 ldrh r4, [lr, #8] 935 add lr, r3, r2, lsl #1 936 add r2, r2, #1 937 strh r4, [lr, #8] @ movhi 938 ubfx r2, r2, #0, #10 939 mov lr, #1 940 b .L87 941.L94: 942 .align 2 943.L93: 944 .word .LANCHOR0+412 945 .word .LANCHOR0+2468 946 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort 947 .align 2 948 .global IsInFreeQueue 949 .syntax unified 950 .arm 951 .fpu softvfp 952 .type IsInFreeQueue, %function 953IsInFreeQueue: 954 @ args = 0, pretend = 0, frame = 0 955 @ frame_needed = 1, uses_anonymous_args = 0 956 mov ip, sp 957 push {fp, ip, lr, pc} 958 sub fp, ip, #4 959 push {lr} 960 bl __gnu_mcount_nc 961 ldr r1, .L101 962 ldrh ip, [r1, #6] 963 cmp ip, #1024 964 movne r2, #0 965 ldrhne lr, [r1, #2] 966 bne .L97 967.L99: 968 mov r0, #0 969 ldmfd sp, {fp, sp, pc} 970.L98: 971 add r3, lr, r2 972 ubfx r3, r3, #0, #10 973 add r3, r1, r3, lsl #1 974 ldrh r3, [r3, #8] 975 cmp r3, r0 976 beq .L100 977 add r2, r2, #1 978.L97: 979 cmp ip, r2 980 bhi .L98 981 b .L99 982.L100: 983 mov r0, #1 984 ldmfd sp, {fp, sp, pc} 985.L102: 986 .align 2 987.L101: 988 .word .LANCHOR0+412 989 .size IsInFreeQueue, .-IsInFreeQueue 990 .align 2 991 .global insert_data_list 992 .syntax unified 993 .arm 994 .fpu softvfp 995 .type insert_data_list, %function 996insert_data_list: 997 @ args = 0, pretend = 0, frame = 8 998 @ frame_needed = 1, uses_anonymous_args = 0 999 mov ip, sp 1000 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 1001 sub fp, ip, #4 1002 sub sp, sp, #12 1003 push {lr} 1004 bl __gnu_mcount_nc 1005 ldr r4, .L117 1006 ldrh r3, [r4, #240] 1007 cmp r3, r0 1008 bls .L105 1009 mov lr, #6 1010 ldr r5, [r4, #2516] 1011 mvn ip, #0 1012 mul lr, lr, r0 1013 add r1, r5, lr 1014 strh ip, [r1, #2] @ movhi 1015 strh ip, [r5, lr] @ movhi 1016 ldr r2, [r4, #2520] 1017 cmp r2, #0 1018 streq r1, [r4, #2520] 1019 beq .L105 1020 ldr r8, [r4, #72] 1021 lsl r3, r0, #1 1022 ldr r7, [r4, #2516] 1023 movw r10, #65535 1024 ldrh r4, [r4, #240] 1025 ldrh r6, [r8, r3] 1026 ldrh r3, [r1, #4] 1027 str r4, [fp, #-48] 1028 mov r4, #0 1029 cmp r3, #0 1030 mulne ip, r3, r6 1031 sub r3, r2, r7 1032 ldr r6, .L117+4 1033 asr r3, r3, #1 1034 mul r3, r6, r3 1035 uxth r3, r3 1036.L111: 1037 sub r6, r0, r3 1038 add r4, r4, #1 1039 clz r6, r6 1040 ldr r9, [fp, #-48] 1041 uxth r4, r4 1042 lsr r6, r6, #5 1043 cmp r4, r9 1044 orrhi r6, r6, #1 1045 cmp r6, #0 1046 bne .L105 1047 ldrh r9, [r2, #4] 1048 cmp r9, #0 1049 beq .L109 1050 lsl r6, r3, #1 1051 ldrh r6, [r8, r6] 1052 mul r6, r9, r6 1053 cmp r6, ip 1054 bcs .L109 1055 ldrh r6, [r2] 1056 cmp r6, r10 1057 bne .L110 1058 strh r3, [r1, #2] @ movhi 1059 ldr r3, .L117 1060 strh r0, [r2] @ movhi 1061 str r1, [r3, #2524] 1062.L105: 1063 mov r0, #0 1064 sub sp, fp, #40 1065 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 1066.L110: 1067 mov r3, #6 1068 mla r2, r3, r6, r7 1069 mov r3, r6 1070 b .L111 1071.L109: 1072 strh r3, [r5, lr] @ movhi 1073 ldr ip, .L117 1074 ldrh r3, [r2, #2] 1075 strh r3, [r1, #2] @ movhi 1076 ldr lr, [ip, #2520] 1077 cmp r2, lr 1078 strheq r0, [r2, #2] @ movhi 1079 streq r1, [ip, #2520] 1080 ldrne r1, [ip, #2516] 1081 movne ip, #6 1082 mulne r3, ip, r3 1083 strhne r0, [r1, r3] @ movhi 1084 strhne r0, [r2, #2] @ movhi 1085 b .L105 1086.L118: 1087 .align 2 1088.L117: 1089 .word .LANCHOR0 1090 .word -1431655765 1091 .size insert_data_list, .-insert_data_list 1092 .section .rodata.str1.1 1093.LC8: 1094 .ascii "\012!!!!! error @ func:%s - line:%d\012\000" 1095 .text 1096 .align 2 1097 .global INSERT_DATA_LIST 1098 .syntax unified 1099 .arm 1100 .fpu softvfp 1101 .type INSERT_DATA_LIST, %function 1102INSERT_DATA_LIST: 1103 @ args = 0, pretend = 0, frame = 0 1104 @ frame_needed = 1, uses_anonymous_args = 0 1105 mov ip, sp 1106 push {fp, ip, lr, pc} 1107 sub fp, ip, #4 1108 push {lr} 1109 bl __gnu_mcount_nc 1110 bl insert_data_list 1111 ldr r2, .L121 1112 add r1, r2, #2528 1113 ldrh r2, [r2, #240] 1114 ldrh r3, [r1] 1115 add r3, r3, #1 1116 uxth r3, r3 1117 strh r3, [r1] @ movhi 1118 cmp r2, r3 1119 ldmfdcs sp, {fp, sp, pc} 1120 ldr r1, .L121+4 1121 mov r2, #214 1122 ldr r0, .L121+8 1123 bl sftl_printk 1124 ldmfd sp, {fp, sp, pc} 1125.L122: 1126 .align 2 1127.L121: 1128 .word .LANCHOR0 1129 .word .LANCHOR1 1130 .word .LC8 1131 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST 1132 .align 2 1133 .global insert_free_list 1134 .syntax unified 1135 .arm 1136 .fpu softvfp 1137 .type insert_free_list, %function 1138insert_free_list: 1139 @ args = 0, pretend = 0, frame = 0 1140 @ frame_needed = 1, uses_anonymous_args = 0 1141 mov ip, sp 1142 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 1143 sub fp, ip, #4 1144 push {lr} 1145 bl __gnu_mcount_nc 1146 movw r8, #65535 1147 cmp r0, r8 1148 beq .L124 1149 ldr r1, .L131 1150 mov r6, #6 1151 mvn r3, #0 1152 mul lr, r6, r0 1153 ldr r4, [r1, #2516] 1154 add ip, r4, lr 1155 strh r3, [ip, #2] @ movhi 1156 strh r3, [r4, lr] @ movhi 1157 ldr r3, [r1, #2532] 1158 cmp r3, #0 1159 bne .L125 1160.L130: 1161 str ip, [r1, #2532] 1162 b .L124 1163.L125: 1164 lsl r2, r0, #1 1165 ldr r7, [r1, #2536] 1166 ldr r5, [r1, #2516] 1167 ldr r10, .L131+4 1168 ldrh r9, [r7, r2] 1169 sub r2, r3, r5 1170 asr r2, r2, #1 1171 mul r2, r10, r2 1172 uxth r2, r2 1173.L128: 1174 lsl r10, r2, #1 1175 ldrh r10, [r7, r10] 1176 cmp r10, r9 1177 bcs .L126 1178 ldrh r10, [r3] 1179 cmp r10, r8 1180 bne .L127 1181 strh r2, [ip, #2] @ movhi 1182 strh r0, [r3] @ movhi 1183.L124: 1184 mov r0, #0 1185 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 1186.L127: 1187 mla r3, r6, r10, r5 1188 mov r2, r10 1189 b .L128 1190.L126: 1191 ldrh r5, [r3, #2] 1192 strh r5, [ip, #2] @ movhi 1193 strh r2, [r4, lr] @ movhi 1194 ldr r2, [r1, #2532] 1195 cmp r2, r3 1196 strheq r0, [r3, #2] @ movhi 1197 beq .L130 1198.L129: 1199 ldrh r2, [r3, #2] 1200 mov ip, #6 1201 ldr r1, [r1, #2516] 1202 mul r2, ip, r2 1203 strh r0, [r1, r2] @ movhi 1204 strh r0, [r3, #2] @ movhi 1205 b .L124 1206.L132: 1207 .align 2 1208.L131: 1209 .word .LANCHOR0 1210 .word -1431655765 1211 .size insert_free_list, .-insert_free_list 1212 .align 2 1213 .global INSERT_FREE_LIST 1214 .syntax unified 1215 .arm 1216 .fpu softvfp 1217 .type INSERT_FREE_LIST, %function 1218INSERT_FREE_LIST: 1219 @ args = 0, pretend = 0, frame = 0 1220 @ frame_needed = 1, uses_anonymous_args = 0 1221 mov ip, sp 1222 push {fp, ip, lr, pc} 1223 sub fp, ip, #4 1224 push {lr} 1225 bl __gnu_mcount_nc 1226 bl insert_free_list 1227 ldr r2, .L135 1228 ldrh r3, [r2, #224] 1229 add r3, r3, #1 1230 uxth r3, r3 1231 strh r3, [r2, #224] @ movhi 1232 ldrh r2, [r2, #240] 1233 cmp r2, r3 1234 ldmfdcs sp, {fp, sp, pc} 1235 ldr r1, .L135+4 1236 mov r2, #207 1237 ldr r0, .L135+8 1238 bl sftl_printk 1239 ldmfd sp, {fp, sp, pc} 1240.L136: 1241 .align 2 1242.L135: 1243 .word .LANCHOR0 1244 .word .LANCHOR1+17 1245 .word .LC8 1246 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST 1247 .align 2 1248 .global List_remove_node 1249 .syntax unified 1250 .arm 1251 .fpu softvfp 1252 .type List_remove_node, %function 1253List_remove_node: 1254 @ args = 0, pretend = 0, frame = 0 1255 @ frame_needed = 1, uses_anonymous_args = 0 1256 mov ip, sp 1257 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 1258 sub fp, ip, #4 1259 push {lr} 1260 bl __gnu_mcount_nc 1261 ldr r8, .L148 1262 mov r4, #6 1263 movw r3, #65535 1264 mov r5, r0 1265 mul r4, r4, r1 1266 ldr r7, [r8, #2516] 1267 add r6, r7, r4 1268 ldrh r2, [r6, #2] 1269 cmp r2, r3 1270 bne .L138 1271 ldr r3, [r0] 1272 cmp r6, r3 1273 bne .L139 1274.L142: 1275 ldrh r2, [r7, r4] 1276 movw r3, #65535 1277 cmp r2, r3 1278 bne .L146 1279 mov r3, #0 1280 str r3, [r5] 1281.L144: 1282 mvn r3, #0 1283 mov r0, #0 1284 strh r3, [r7, r4] @ movhi 1285 strh r3, [r6, #2] @ movhi 1286 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 1287.L139: 1288 ldr r1, .L148+4 1289 mov r2, #372 1290 ldr r0, .L148+8 1291 bl sftl_printk 1292.L138: 1293 ldr r3, [r5] 1294 ldrh r1, [r7, r4] 1295 cmp r3, r6 1296 beq .L142 1297 movw r2, #65535 1298 ldrh r3, [r6, #2] 1299 cmp r1, r2 1300 bne .L145 1301 cmp r3, r1 1302 beq .L144 1303 mov r2, #6 1304 ldr r1, [r8, #2516] 1305 mul r3, r2, r3 1306 mvn r2, #0 1307 strh r2, [r1, r3] @ movhi 1308 b .L144 1309.L146: 1310 ldr r3, [r8, #2516] 1311 mov r1, #6 1312 mla r3, r1, r2, r3 1313 mvn r2, #0 1314 str r3, [r5] 1315 strh r2, [r3, #2] @ movhi 1316 b .L144 1317.L145: 1318 ldr r2, [r8, #2516] 1319 mov r0, #6 1320 mla r2, r0, r1, r2 1321 strh r3, [r2, #2] @ movhi 1322 mul r3, r0, r3 1323 ldr r2, [r8, #2516] 1324 ldrh r1, [r7, r4] 1325 strh r1, [r2, r3] @ movhi 1326 b .L144 1327.L149: 1328 .align 2 1329.L148: 1330 .word .LANCHOR0 1331 .word .LANCHOR1+34 1332 .word .LC8 1333 .size List_remove_node, .-List_remove_node 1334 .align 2 1335 .global List_pop_index_node 1336 .syntax unified 1337 .arm 1338 .fpu softvfp 1339 .type List_pop_index_node, %function 1340List_pop_index_node: 1341 @ args = 0, pretend = 0, frame = 0 1342 @ frame_needed = 1, uses_anonymous_args = 0 1343 mov ip, sp 1344 push {r4, r5, fp, ip, lr, pc} 1345 sub fp, ip, #4 1346 push {lr} 1347 bl __gnu_mcount_nc 1348 ldr r3, [r0] 1349 cmp r3, #0 1350 beq .L155 1351 ldr r2, .L159 1352 movw ip, #65535 1353 mov lr, #6 1354 ldr r4, [r2, #2516] 1355.L152: 1356 cmp r1, #0 1357 beq .L153 1358 ldrh r2, [r3] 1359 cmp r2, ip 1360 bne .L154 1361.L153: 1362 sub r4, r3, r4 1363 ldr r3, .L159+4 1364 asr r4, r4, #1 1365 mul r4, r3, r4 1366 uxth r1, r4 1367 bl List_remove_node 1368 uxth r0, r4 1369 ldmfd sp, {r4, r5, fp, sp, pc} 1370.L154: 1371 sub r1, r1, #1 1372 mla r3, lr, r2, r4 1373 uxth r1, r1 1374 b .L152 1375.L155: 1376 movw r0, #65535 1377 ldmfd sp, {r4, r5, fp, sp, pc} 1378.L160: 1379 .align 2 1380.L159: 1381 .word .LANCHOR0 1382 .word -1431655765 1383 .size List_pop_index_node, .-List_pop_index_node 1384 .align 2 1385 .global List_pop_head_node 1386 .syntax unified 1387 .arm 1388 .fpu softvfp 1389 .type List_pop_head_node, %function 1390List_pop_head_node: 1391 @ args = 0, pretend = 0, frame = 0 1392 @ frame_needed = 1, uses_anonymous_args = 0 1393 mov ip, sp 1394 push {fp, ip, lr, pc} 1395 sub fp, ip, #4 1396 push {lr} 1397 bl __gnu_mcount_nc 1398 mov r1, #0 1399 bl List_pop_index_node 1400 ldmfd sp, {fp, sp, pc} 1401 .size List_pop_head_node, .-List_pop_head_node 1402 .align 2 1403 .global List_get_gc_head_node 1404 .syntax unified 1405 .arm 1406 .fpu softvfp 1407 .type List_get_gc_head_node, %function 1408List_get_gc_head_node: 1409 @ args = 0, pretend = 0, frame = 0 1410 @ frame_needed = 1, uses_anonymous_args = 0 1411 mov ip, sp 1412 push {fp, ip, lr, pc} 1413 sub fp, ip, #4 1414 push {lr} 1415 bl __gnu_mcount_nc 1416 ldr r2, .L168 1417 ldr r3, [r2, #2520] 1418 cmp r3, #0 1419 movwne r1, #65535 1420 movne lr, #6 1421 ldrne ip, [r2, #2516] 1422 bne .L164 1423.L167: 1424 movw r0, #65535 1425 ldmfd sp, {fp, sp, pc} 1426.L166: 1427 sub r2, r0, #1 1428 mla r3, lr, r3, ip 1429 uxth r0, r2 1430.L164: 1431 cmp r0, #0 1432 beq .L165 1433 ldrh r3, [r3] 1434 cmp r3, r1 1435 bne .L166 1436 b .L167 1437.L165: 1438 sub r0, r3, ip 1439 ldr r3, .L168+4 1440 asr r0, r0, #1 1441 mul r0, r3, r0 1442 uxth r0, r0 1443 ldmfd sp, {fp, sp, pc} 1444.L169: 1445 .align 2 1446.L168: 1447 .word .LANCHOR0 1448 .word -1431655765 1449 .size List_get_gc_head_node, .-List_get_gc_head_node 1450 .align 2 1451 .global List_update_data_list 1452 .syntax unified 1453 .arm 1454 .fpu softvfp 1455 .type List_update_data_list, %function 1456List_update_data_list: 1457 @ args = 0, pretend = 0, frame = 0 1458 @ frame_needed = 1, uses_anonymous_args = 0 1459 mov ip, sp 1460 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 1461 sub fp, ip, #4 1462 push {lr} 1463 bl __gnu_mcount_nc 1464 ldr r5, .L181 1465 mov r4, r0 1466 ldrh r3, [r5, #24] 1467 cmp r3, r0 1468 beq .L172 1469 ldrh r3, [r5, #76] 1470 cmp r3, r0 1471 beq .L172 1472 ldrh r3, [r5, #124] 1473 cmp r3, r0 1474 beq .L172 1475 mov r7, #6 1476 ldr r9, [r5, #2516] 1477 ldr r3, [r5, #2520] 1478 mul r7, r7, r0 1479 add r8, r9, r7 1480 cmp r8, r3 1481 beq .L172 1482 ldr r2, [r5, #72] 1483 lsl r3, r0, #1 1484 ldrh r6, [r2, r3] 1485 movw r2, #65535 1486 ldrh r3, [r8, #4] 1487 cmp r3, #0 1488 mvneq r6, #0 1489 mulne r6, r3, r6 1490 ldrh r3, [r8, #2] 1491 cmp r3, r2 1492 bne .L175 1493 ldrh r2, [r9, r7] 1494 cmp r2, r3 1495 bne .L175 1496 ldr r1, .L181+4 1497 movw r2, #463 1498 ldr r0, .L181+8 1499 bl sftl_printk 1500.L175: 1501 ldrh r3, [r8, #2] 1502 movw r2, #65535 1503 cmp r3, r2 1504 bne .L176 1505 ldrh r2, [r9, r7] 1506 cmp r2, r3 1507 beq .L172 1508.L176: 1509 mov r2, #6 1510 ldr r1, .L181+12 1511 mul r3, r2, r3 1512 asr r2, r3, #1 1513 mul r2, r1, r2 1514 ldr r1, [r5, #72] 1515 lsl r2, r2, #1 1516 ldrh r2, [r1, r2] 1517 ldr r1, [r5, #2516] 1518 add r3, r1, r3 1519 ldrh r3, [r3, #4] 1520 cmp r3, #0 1521 mvneq r3, #0 1522 mulne r3, r3, r2 1523 cmp r6, r3 1524 bcs .L172 1525 ldr r5, .L181+16 1526 mov r1, r4 1527 ldr r0, .L181+20 1528 bl List_remove_node 1529 ldrh r3, [r5] 1530 cmp r3, #0 1531 bne .L178 1532 ldr r1, .L181+4 1533 movw r2, #474 1534 ldr r0, .L181+8 1535 bl sftl_printk 1536.L178: 1537 ldrh r3, [r5] 1538 mov r0, r4 1539 sub r3, r3, #1 1540 strh r3, [r5] @ movhi 1541 bl INSERT_DATA_LIST 1542.L172: 1543 mov r0, #0 1544 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 1545.L182: 1546 .align 2 1547.L181: 1548 .word .LANCHOR0 1549 .word .LANCHOR1+51 1550 .word .LC8 1551 .word -1431655765 1552 .word .LANCHOR0+2528 1553 .word .LANCHOR0+2520 1554 .size List_update_data_list, .-List_update_data_list 1555 .align 2 1556 .global select_l2p_ram_region 1557 .syntax unified 1558 .arm 1559 .fpu softvfp 1560 .type select_l2p_ram_region, %function 1561select_l2p_ram_region: 1562 @ args = 0, pretend = 0, frame = 0 1563 @ frame_needed = 1, uses_anonymous_args = 0 1564 mov ip, sp 1565 push {r4, r5, r6, r7, fp, ip, lr, pc} 1566 sub fp, ip, #4 1567 push {lr} 1568 bl __gnu_mcount_nc 1569 ldr r3, .L193 1570 movw r2, #338 1571 mov r1, #0 1572 mov ip, #12 1573 movw lr, #65535 1574 ldrh r2, [r3, r2] 1575 ldr r3, [r3, #2540] 1576 sub r0, r3, #12 1577.L184: 1578 uxth r4, r1 1579 cmp r2, r4 1580 bhi .L186 1581 mov r4, r2 1582 add r5, r3, #4 1583 mov r1, #0 1584 mov r0, #-2147483648 1585 mov r6, #12 1586.L187: 1587 uxth lr, r1 1588 cmp r2, lr 1589 bhi .L189 1590 cmp r2, r4 1591 bhi .L185 1592 ldr r1, .L193+4 1593 mov r4, r2 1594 mvn r0, #0 1595 ldrh r5, [r1] 1596 mov r1, #0 1597.L190: 1598 uxth ip, r1 1599 cmp r2, ip 1600 bhi .L192 1601 cmp r2, r4 1602 bhi .L185 1603 ldr r1, .L193+8 1604 mov r2, #796 1605 ldr r0, .L193+12 1606 bl sftl_printk 1607 b .L185 1608.L186: 1609 add r1, r1, #1 1610 mul r5, ip, r1 1611 ldrh r5, [r0, r5] 1612 cmp r5, lr 1613 bne .L184 1614.L185: 1615 mov r0, r4 1616 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 1617.L189: 1618 mul ip, r6, r1 1619 add r1, r1, #1 1620 ldr ip, [r5, ip] 1621 mvn r7, ip 1622 cmp ip, r0 1623 lsr r7, r7, #31 1624 movcs r7, #0 1625 cmp r7, #0 1626 movne r0, ip 1627 movne r4, lr 1628 b .L187 1629.L192: 1630 ldr lr, [r3, #4] 1631 cmp lr, r0 1632 bcs .L191 1633 ldrh r6, [r3] 1634 cmp r6, r5 1635 movne r0, lr 1636 movne r4, ip 1637.L191: 1638 add r1, r1, #1 1639 add r3, r3, #12 1640 b .L190 1641.L194: 1642 .align 2 1643.L193: 1644 .word .LANCHOR0 1645 .word .LANCHOR0+2544 1646 .word .LANCHOR1+73 1647 .word .LC8 1648 .size select_l2p_ram_region, .-select_l2p_ram_region 1649 .align 2 1650 .global FtlUpdateVaildLpn 1651 .syntax unified 1652 .arm 1653 .fpu softvfp 1654 .type FtlUpdateVaildLpn, %function 1655FtlUpdateVaildLpn: 1656 @ args = 0, pretend = 0, frame = 0 1657 @ frame_needed = 1, uses_anonymous_args = 0 1658 mov ip, sp 1659 push {fp, ip, lr, pc} 1660 sub fp, ip, #4 1661 push {lr} 1662 bl __gnu_mcount_nc 1663 ldr r3, .L201 1664 movw r1, #2546 1665 ldrh r2, [r3, r1] 1666 cmp r2, #4 1667 cmpls r0, #0 1668 bne .L196 1669 add r2, r2, #1 1670 strh r2, [r3, r1] @ movhi 1671 ldmfd sp, {fp, sp, pc} 1672.L196: 1673 mov r2, #0 1674 strh r2, [r3, r1] @ movhi 1675 str r2, [r3, #2548] 1676 movw lr, #65535 1677 ldr r2, [r3, #72] 1678 ldrh r1, [r3, #240] 1679 add r1, r2, r1, lsl #1 1680.L197: 1681 cmp r2, r1 1682 ldmfdeq sp, {fp, sp, pc} 1683 ldrh ip, [r2], #2 1684 cmp ip, lr 1685 ldrne r0, [r3, #2548] 1686 addne r0, r0, ip 1687 strne r0, [r3, #2548] 1688 b .L197 1689.L202: 1690 .align 2 1691.L201: 1692 .word .LANCHOR0 1693 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn 1694 .align 2 1695 .global ftl_sb_update_avl_pages 1696 .syntax unified 1697 .arm 1698 .fpu softvfp 1699 .type ftl_sb_update_avl_pages, %function 1700ftl_sb_update_avl_pages: 1701 @ args = 0, pretend = 0, frame = 0 1702 @ frame_needed = 1, uses_anonymous_args = 0 1703 mov ip, sp 1704 push {r4, r5, fp, ip, lr, pc} 1705 sub fp, ip, #4 1706 push {lr} 1707 bl __gnu_mcount_nc 1708 ldr r4, .L211 1709 add ip, r2, #8 1710 mov r3, #0 1711 movw r5, #65535 1712 add ip, r0, ip, lsl #1 1713 strh r3, [r0, #4] @ movhi 1714 ldrh lr, [r4, #232] 1715.L204: 1716 cmp lr, r2 1717 bhi .L206 1718 movw r3, #302 1719 add ip, r0, #16 1720 mov r2, #0 1721 ldrh r3, [r4, r3] 1722 movw r4, #65535 1723 sub r3, r3, r1 1724 sub r3, r3, #1 1725 sxth r3, r3 1726.L207: 1727 uxth r1, r2 1728 cmp lr, r1 1729 ldmfdls sp, {r4, r5, fp, sp, pc} 1730 ldrh r1, [ip], #2 1731 add r2, r2, #1 1732 cmp r1, r4 1733 ldrhne r1, [r0, #4] 1734 addne r1, r3, r1 1735 strhne r1, [r0, #4] @ movhi 1736 b .L207 1737.L206: 1738 ldrh r3, [ip], #2 1739 add r2, r2, #1 1740 cmp r3, r5 1741 uxth r2, r2 1742 ldrhne r3, [r0, #4] 1743 addne r3, r3, #1 1744 strhne r3, [r0, #4] @ movhi 1745 b .L204 1746.L212: 1747 .align 2 1748.L211: 1749 .word .LANCHOR0 1750 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages 1751 .align 2 1752 .global FtlSlcSuperblockCheck 1753 .syntax unified 1754 .arm 1755 .fpu softvfp 1756 .type FtlSlcSuperblockCheck, %function 1757FtlSlcSuperblockCheck: 1758 @ args = 0, pretend = 0, frame = 0 1759 @ frame_needed = 1, uses_anonymous_args = 0 1760 mov ip, sp 1761 push {fp, ip, lr, pc} 1762 sub fp, ip, #4 1763 push {lr} 1764 bl __gnu_mcount_nc 1765 ldrh r3, [r0, #4] 1766 cmp r3, #0 1767 ldmfdeq sp, {fp, sp, pc} 1768 ldrh r3, [r0] 1769 movw r2, #65535 1770 cmp r3, r2 1771 ldmfdeq sp, {fp, sp, pc} 1772 ldrb r3, [r0, #6] @ zero_extendqisi2 1773 mov ip, #0 1774 ldr r1, .L219 1775 add r3, r0, r3, lsl #1 1776 ldrh r1, [r1, #232] 1777 ldrh r3, [r3, #16] 1778.L216: 1779 cmp r3, r2 1780 ldmfdne sp, {fp, sp, pc} 1781 ldrb r3, [r0, #6] @ zero_extendqisi2 1782 add r3, r3, #1 1783 uxtb r3, r3 1784 strb r3, [r0, #6] 1785 cmp r3, r1 1786 strbeq ip, [r0, #6] 1787 ldrheq r3, [r0, #2] 1788 addeq r3, r3, #1 1789 strheq r3, [r0, #2] @ movhi 1790 ldrb r3, [r0, #6] @ zero_extendqisi2 1791 add r3, r0, r3, lsl #1 1792 ldrh r3, [r3, #16] 1793 b .L216 1794.L220: 1795 .align 2 1796.L219: 1797 .word .LANCHOR0 1798 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck 1799 .align 2 1800 .global make_superblock 1801 .syntax unified 1802 .arm 1803 .fpu softvfp 1804 .type make_superblock, %function 1805make_superblock: 1806 @ args = 0, pretend = 0, frame = 8 1807 @ frame_needed = 1, uses_anonymous_args = 0 1808 mov ip, sp 1809 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 1810 sub fp, ip, #4 1811 sub sp, sp, #12 1812 push {lr} 1813 bl __gnu_mcount_nc 1814 ldr r7, .L227 1815 mov r4, r0 1816 ldrh r2, [r0] 1817 ldrh r3, [r7, #240] 1818 cmp r2, r3 1819 bcc .L222 1820 ldr r1, .L227+4 1821 movw r2, #2157 1822 ldr r0, .L227+8 1823 bl sftl_printk 1824.L222: 1825 ldrh r6, [r7, #232] 1826 mov r3, #0 1827 strh r3, [r4, #4] @ movhi 1828 add r5, r4, #16 1829 strb r3, [r4, #7] 1830 mvn r9, #0 1831 add r6, r4, r6, lsl #1 1832 ldr r3, .L227+12 1833 add r6, r6, #16 1834.L223: 1835 ldrh r1, [r4] 1836 cmp r6, r5 1837 ldrb r8, [r4, #7] @ zero_extendqisi2 1838 bne .L225 1839 movw r3, #302 1840 lsl r1, r1, #1 1841 mov r0, #0 1842 ldrh r3, [r7, r3] 1843 smulbb r8, r3, r8 1844 mov r3, #0 1845 strb r3, [r4, #9] 1846 ldr r3, [r7, #2536] 1847 strh r8, [r4, #4] @ movhi 1848 ldrh r2, [r3, r1] 1849 movw r3, #10000 1850 cmp r2, r3 1851 movhi r3, #1 1852 strbhi r3, [r4, #9] 1853 sub sp, fp, #40 1854 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 1855.L225: 1856 ldrb r0, [r3], #1 @ zero_extendqisi2 1857 add r5, r5, #2 1858 str r3, [fp, #-48] 1859 bl V2P_block 1860 strh r9, [r5, #-2] @ movhi 1861 mov r10, r0 1862 bl FtlBbmIsBadBlock 1863 cmp r0, #0 1864 addeq r8, r8, #1 1865 strheq r10, [r5, #-2] @ movhi 1866 ldr r3, [fp, #-48] 1867 strbeq r8, [r4, #7] 1868 b .L223 1869.L228: 1870 .align 2 1871.L227: 1872 .word .LANCHOR0 1873 .word .LANCHOR1+95 1874 .word .LC8 1875 .word .LANCHOR0+260 1876 .size make_superblock, .-make_superblock 1877 .align 2 1878 .global update_multiplier_value 1879 .syntax unified 1880 .arm 1881 .fpu softvfp 1882 .type update_multiplier_value, %function 1883update_multiplier_value: 1884 @ args = 0, pretend = 0, frame = 0 1885 @ frame_needed = 1, uses_anonymous_args = 0 1886 mov ip, sp 1887 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 1888 sub fp, ip, #4 1889 push {lr} 1890 bl __gnu_mcount_nc 1891 ldr r6, .L237 1892 movw r3, #302 1893 mov r7, #0 1894 mov r5, r0 1895 add r8, r6, #260 1896 mov r4, r7 1897 ldrh r9, [r6, #232] 1898 ldrh r10, [r6, r3] 1899.L230: 1900 uxth r3, r7 1901 cmp r9, r3 1902 bhi .L232 1903 cmp r4, #0 1904 beq .L233 1905 mov r1, r4 1906 mov r0, #32768 1907 bl __aeabi_idiv 1908 uxth r4, r0 1909.L233: 1910 ldr r0, [r6, #2516] 1911 mov r3, #6 1912 mla r5, r3, r5, r0 1913 mov r0, #0 1914 strh r4, [r5, #4] @ movhi 1915 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 1916.L232: 1917 mov r1, r5 1918 ldrb r0, [r8], #1 @ zero_extendqisi2 1919 bl V2P_block 1920 add r7, r7, #1 1921 bl FtlBbmIsBadBlock 1922 cmp r0, #0 1923 addeq r4, r10, r4 1924 uxtheq r4, r4 1925 b .L230 1926.L238: 1927 .align 2 1928.L237: 1929 .word .LANCHOR0 1930 .size update_multiplier_value, .-update_multiplier_value 1931 .align 2 1932 .global GetFreeBlockMinEraseCount 1933 .syntax unified 1934 .arm 1935 .fpu softvfp 1936 .type GetFreeBlockMinEraseCount, %function 1937GetFreeBlockMinEraseCount: 1938 @ args = 0, pretend = 0, frame = 0 1939 @ frame_needed = 1, uses_anonymous_args = 0 1940 mov ip, sp 1941 push {fp, ip, lr, pc} 1942 sub fp, ip, #4 1943 push {lr} 1944 bl __gnu_mcount_nc 1945 ldr r2, .L242 1946 ldr r0, [r2, #2532] 1947 cmp r0, #0 1948 ldmfdeq sp, {fp, sp, pc} 1949 ldr r3, [r2, #2516] 1950 ldr r2, [r2, #2536] 1951 sub r3, r0, r3 1952 ldr r0, .L242+4 1953 asr r3, r3, #1 1954 mul r3, r0, r3 1955 uxth r3, r3 1956 lsl r3, r3, #1 1957 ldrh r0, [r2, r3] 1958 ldmfd sp, {fp, sp, pc} 1959.L243: 1960 .align 2 1961.L242: 1962 .word .LANCHOR0 1963 .word -1431655765 1964 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount 1965 .align 2 1966 .global GetFreeBlockMaxEraseCount 1967 .syntax unified 1968 .arm 1969 .fpu softvfp 1970 .type GetFreeBlockMaxEraseCount, %function 1971GetFreeBlockMaxEraseCount: 1972 @ args = 0, pretend = 0, frame = 0 1973 @ frame_needed = 1, uses_anonymous_args = 0 1974 mov ip, sp 1975 push {r4, r5, r6, r7, fp, ip, lr, pc} 1976 sub fp, ip, #4 1977 push {lr} 1978 bl __gnu_mcount_nc 1979 ldr r1, .L251 1980 mov r2, r0 1981 ldr r0, [r1, #2532] 1982 cmp r0, #0 1983 ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} 1984 ldrh r3, [r1, #224] 1985 mov r5, #6 1986 ldr lr, [r1, #2516] 1987 movw r6, #65535 1988 rsb r3, r3, r3, lsl #3 1989 asr ip, r3, #3 1990 cmp r2, r3, asr #3 1991 sub r3, r0, lr 1992 ldr r0, .L251+4 1993 uxthgt r2, ip 1994 mov ip, #0 1995 asr r3, r3, #1 1996 mul r3, r0, r3 1997 uxth r3, r3 1998.L247: 1999 uxth r4, ip 2000 mov r0, r3 2001 cmp r4, r2 2002 bcs .L248 2003 mul r3, r5, r3 2004 add ip, ip, #1 2005 ldrh r3, [lr, r3] 2006 cmp r3, r6 2007 bne .L247 2008.L248: 2009 ldr r2, [r1, #2536] 2010 lsl r3, r0, #1 2011 ldrh r0, [r2, r3] 2012 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 2013.L252: 2014 .align 2 2015.L251: 2016 .word .LANCHOR0 2017 .word -1431655765 2018 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount 2019 .section .rodata.str1.1 2020.LC9: 2021 .ascii "FLASH INFO:\012\000" 2022.LC10: 2023 .ascii "Device Capacity: %d MB\012\000" 2024.LC11: 2025 .ascii "FTL INFO:\012\000" 2026.LC12: 2027 .ascii "g_MaxLpn = 0x%x\012\000" 2028.LC13: 2029 .ascii "g_VaildLpn = 0x%x\012\000" 2030.LC14: 2031 .ascii "read_page_count = 0x%x\012\000" 2032.LC15: 2033 .ascii "discard_page_count = 0x%x\012\000" 2034.LC16: 2035 .ascii "write_page_count = 0x%x\012\000" 2036.LC17: 2037 .ascii "cache_write_count = 0x%x\012\000" 2038.LC18: 2039 .ascii "l2p_write_count = 0x%x\012\000" 2040.LC19: 2041 .ascii "gc_page_count = 0x%x\012\000" 2042.LC20: 2043 .ascii "totle_write = %d MB\012\000" 2044.LC21: 2045 .ascii "totle_read = %d MB\012\000" 2046.LC22: 2047 .ascii "GSV = 0x%x\012\000" 2048.LC23: 2049 .ascii "GDV = 0x%x\012\000" 2050.LC24: 2051 .ascii "bad blk num = %d\012\000" 2052.LC25: 2053 .ascii "free_superblocks = 0x%x\012\000" 2054.LC26: 2055 .ascii "mlc_EC = 0x%x\012\000" 2056.LC27: 2057 .ascii "slc_EC = 0x%x\012\000" 2058.LC28: 2059 .ascii "avg_EC = 0x%x\012\000" 2060.LC29: 2061 .ascii "sys_EC = 0x%x\012\000" 2062.LC30: 2063 .ascii "max_EC = 0x%x\012\000" 2064.LC31: 2065 .ascii "min_EC = 0x%x\012\000" 2066.LC32: 2067 .ascii "PLT = 0x%x\012\000" 2068.LC33: 2069 .ascii "POT = 0x%x\012\000" 2070.LC34: 2071 .ascii "MaxSector = 0x%x\012\000" 2072.LC35: 2073 .ascii "init_sys_blks_pp = 0x%x\012\000" 2074.LC36: 2075 .ascii "sys_blks_pp = 0x%x\012\000" 2076.LC37: 2077 .ascii "free sysblock = 0x%x\012\000" 2078.LC38: 2079 .ascii "data_blks_pp = 0x%x\012\000" 2080.LC39: 2081 .ascii "data_op_blks_pp = 0x%x\012\000" 2082.LC40: 2083 .ascii "max_data_blks = 0x%x\012\000" 2084.LC41: 2085 .ascii "Sys.id = 0x%x\012\000" 2086.LC42: 2087 .ascii "Bbt.id = 0x%x\012\000" 2088.LC43: 2089 .ascii "ACT.page = 0x%x\012\000" 2090.LC44: 2091 .ascii "ACT.plane = 0x%x\012\000" 2092.LC45: 2093 .ascii "ACT.id = 0x%x\012\000" 2094.LC46: 2095 .ascii "ACT.mode = 0x%x\012\000" 2096.LC47: 2097 .ascii "ACT.a_pages = 0x%x\012\000" 2098.LC48: 2099 .ascii "ACT VPC = 0x%x\012\000" 2100.LC49: 2101 .ascii "BUF.page = 0x%x\012\000" 2102.LC50: 2103 .ascii "BUF.plane = 0x%x\012\000" 2104.LC51: 2105 .ascii "BUF.id = 0x%x\012\000" 2106.LC52: 2107 .ascii "BUF.mode = 0x%x\012\000" 2108.LC53: 2109 .ascii "BUF.a_pages = 0x%x\012\000" 2110.LC54: 2111 .ascii "BUF VPC = 0x%x\012\000" 2112.LC55: 2113 .ascii "TMP.page = 0x%x\012\000" 2114.LC56: 2115 .ascii "TMP.plane = 0x%x\012\000" 2116.LC57: 2117 .ascii "TMP.id = 0x%x\012\000" 2118.LC58: 2119 .ascii "TMP.mode = 0x%x\012\000" 2120.LC59: 2121 .ascii "TMP.a_pages = 0x%x\012\000" 2122.LC60: 2123 .ascii "GC.page = 0x%x\012\000" 2124.LC61: 2125 .ascii "GC.plane = 0x%x\012\000" 2126.LC62: 2127 .ascii "GC.id = 0x%x\012\000" 2128.LC63: 2129 .ascii "GC.mode = 0x%x\012\000" 2130.LC64: 2131 .ascii "GC.a_pages = 0x%x\012\000" 2132.LC65: 2133 .ascii "WR_CHK = %x %x %x\012\000" 2134.LC66: 2135 .ascii "Read Err Cnt = 0x%x\012\000" 2136.LC67: 2137 .ascii "Prog Err Cnt = 0x%x\012\000" 2138.LC68: 2139 .ascii "gc_free_blk_th= 0x%x\012\000" 2140.LC69: 2141 .ascii "gc_merge_free_blk_th= 0x%x\012\000" 2142.LC70: 2143 .ascii "gc_skip_write_count= 0x%x\012\000" 2144.LC71: 2145 .ascii "gc_blk_index= 0x%x\012\000" 2146.LC72: 2147 .ascii "free min EC= 0x%x\012\000" 2148.LC73: 2149 .ascii "free max EC= 0x%x\012\000" 2150.LC74: 2151 .ascii "GC__SB VPC = 0x%x\012\000" 2152.LC75: 2153 .ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000" 2154.LC76: 2155 .ascii "free %d. [0x%x] 0x%x 0x%x\012\000" 2156 .text 2157 .align 2 2158 .global FtlPrintInfo2buf 2159 .syntax unified 2160 .arm 2161 .fpu softvfp 2162 .type FtlPrintInfo2buf, %function 2163FtlPrintInfo2buf: 2164 @ args = 0, pretend = 0, frame = 0 2165 @ frame_needed = 1, uses_anonymous_args = 0 2166 mov ip, sp 2167 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 2168 sub fp, ip, #4 2169 sub sp, sp, #20 2170 push {lr} 2171 bl __gnu_mcount_nc 2172 ldr r6, .L265 2173 mov r7, r0 2174 ldr r1, .L265+4 2175 add r5, r7, #12 2176 bl strcpy 2177 ldr r2, .L265+8 2178 mov r0, r5 2179 mov r1, #64 2180 ldr r3, [r6, #316] 2181 add r8, r6, #352 2182 bl snprintf 2183 add r5, r5, r0 2184 ldr r1, .L265+12 2185 mov r0, r5 2186 add r5, r5, #10 2187 bl strcpy 2188 ldr r3, [r6, #2552] 2189 mov r0, r5 2190 ldr r2, .L265+16 2191 mov r1, #64 2192 bl snprintf 2193 add r5, r5, r0 2194 ldr r3, [r6, #2548] 2195 mov r0, r5 2196 ldr r2, .L265+20 2197 mov r1, #64 2198 bl snprintf 2199 add r5, r5, r0 2200 ldr r3, [r6, #2556] 2201 mov r0, r5 2202 ldr r2, .L265+24 2203 mov r1, #64 2204 bl snprintf 2205 add r5, r5, r0 2206 ldr r3, [r6, #2560] 2207 mov r0, r5 2208 ldr r2, .L265+28 2209 mov r1, #64 2210 bl snprintf 2211 add r5, r5, r0 2212 ldr r3, [r6, #2564] 2213 mov r0, r5 2214 ldr r2, .L265+32 2215 mov r1, #64 2216 bl snprintf 2217 add r5, r5, r0 2218 ldr r3, [r6, #2568] 2219 mov r0, r5 2220 ldr r2, .L265+36 2221 mov r1, #64 2222 bl snprintf 2223 add r5, r5, r0 2224 ldr r3, [r6, #2572] 2225 mov r0, r5 2226 ldr r2, .L265+40 2227 mov r1, #64 2228 bl snprintf 2229 add r5, r5, r0 2230 ldr r3, [r6, #2576] 2231 mov r0, r5 2232 ldr r2, .L265+44 2233 mov r1, #64 2234 bl snprintf 2235 ldr r3, [r6, #2580] 2236 add r5, r5, r0 2237 ldr r2, .L265+48 2238 mov r0, r5 2239 mov r1, #64 2240 lsr r3, r3, #11 2241 bl snprintf 2242 ldr r3, [r6, #2584] 2243 add r5, r5, r0 2244 ldr r2, .L265+52 2245 mov r0, r5 2246 mov r1, #64 2247 lsr r3, r3, #11 2248 bl snprintf 2249 add r4, r5, r0 2250 ldr r3, [r6, #2588] 2251 mov r0, r4 2252 ldr r2, .L265+56 2253 mov r1, #64 2254 bl snprintf 2255 add r4, r4, r0 2256 ldr r3, [r6, #2592] 2257 mov r0, r4 2258 ldr r2, .L265+60 2259 mov r1, #64 2260 bl snprintf 2261 add r4, r4, r0 2262 ldrh r3, [r8, #6] 2263 mov r0, r4 2264 ldr r2, .L265+64 2265 mov r1, #64 2266 bl snprintf 2267 add r4, r4, r0 2268 ldrh r3, [r6, #224] 2269 mov r0, r4 2270 ldr r2, .L265+68 2271 mov r1, #64 2272 bl snprintf 2273 add r4, r4, r0 2274 ldr r3, [r6, #2596] 2275 mov r0, r4 2276 ldr r2, .L265+72 2277 mov r1, #64 2278 bl snprintf 2279 add r4, r4, r0 2280 ldr r3, [r6, #2600] 2281 mov r0, r4 2282 ldr r2, .L265+76 2283 mov r1, #64 2284 bl snprintf 2285 add r4, r4, r0 2286 ldr r3, [r6, #2604] 2287 mov r0, r4 2288 ldr r2, .L265+80 2289 mov r1, #64 2290 bl snprintf 2291 add r4, r4, r0 2292 ldr r3, [r6, #2608] 2293 mov r0, r4 2294 ldr r2, .L265+84 2295 mov r1, #64 2296 bl snprintf 2297 add r4, r4, r0 2298 ldr r3, [r6, #2612] 2299 mov r0, r4 2300 ldr r2, .L265+88 2301 mov r1, #64 2302 ldr r5, .L265+92 2303 bl snprintf 2304 add r4, r4, r0 2305 ldr r3, [r6, #2616] 2306 ldr r2, .L265+96 2307 mov r0, r4 2308 mov r1, #64 2309 bl snprintf 2310 add r4, r4, r0 2311 ldrh r3, [r5, #30] 2312 mov r0, r4 2313 ldr r2, .L265+100 2314 mov r1, #64 2315 bl snprintf 2316 add r4, r4, r0 2317 ldrh r3, [r5, #28] 2318 mov r0, r4 2319 ldr r2, .L265+104 2320 mov r1, #64 2321 bl snprintf 2322 add r4, r4, r0 2323 ldr r3, [r6, #340] 2324 mov r0, r4 2325 ldr r2, .L265+108 2326 mov r1, #64 2327 bl snprintf 2328 add r4, r4, r0 2329 ldr r3, [r6, #332] 2330 mov r0, r4 2331 ldr r2, .L265+112 2332 mov r1, #64 2333 bl snprintf 2334 add r4, r4, r0 2335 ldr r3, [r6, #228] 2336 mov r0, r4 2337 ldr r2, .L265+116 2338 mov r1, #64 2339 bl snprintf 2340 add r3, r6, #412 2341 add r4, r4, r0 2342 ldr r2, .L265+120 2343 mov r0, r4 2344 mov r1, #64 2345 ldrh r3, [r3, #6] 2346 bl snprintf 2347 add r4, r4, r0 2348 ldrh r3, [r6, #240] 2349 mov r0, r4 2350 ldr r2, .L265+124 2351 mov r1, #64 2352 bl snprintf 2353 movw r3, #2620 2354 add r4, r4, r0 2355 ldr r2, .L265+128 2356 ldrh r3, [r6, r3] 2357 mov r0, r4 2358 mov r1, #64 2359 bl snprintf 2360 add r4, r4, r0 2361 ldr r3, [r6, #244] 2362 mov r0, r4 2363 ldr r2, .L265+132 2364 mov r1, #64 2365 bl snprintf 2366 add r3, r6, #2624 2367 add r4, r4, r0 2368 ldr r2, .L265+136 2369 mov r0, r4 2370 mov r1, #64 2371 ldrh r3, [r3] 2372 bl snprintf 2373 add r4, r4, r0 2374 ldrh r3, [r8] 2375 mov r0, r4 2376 ldr r2, .L265+140 2377 mov r1, #64 2378 bl snprintf 2379 add r4, r4, r0 2380 ldrh r3, [r6, #26] 2381 mov r0, r4 2382 ldr r2, .L265+144 2383 mov r1, #64 2384 bl snprintf 2385 add r4, r4, r0 2386 ldrb r3, [r6, #30] @ zero_extendqisi2 2387 mov r0, r4 2388 ldr r2, .L265+148 2389 mov r1, #64 2390 bl snprintf 2391 add r4, r4, r0 2392 ldrh r3, [r6, #24] 2393 mov r0, r4 2394 ldr r2, .L265+152 2395 mov r1, #64 2396 bl snprintf 2397 add r4, r4, r0 2398 ldrb r3, [r6, #32] @ zero_extendqisi2 2399 mov r0, r4 2400 ldr r2, .L265+156 2401 mov r1, #64 2402 bl snprintf 2403 add r4, r4, r0 2404 ldrh r3, [r6, #28] 2405 mov r0, r4 2406 ldr r2, .L265+160 2407 mov r1, #64 2408 bl snprintf 2409 ldrh r3, [r6, #24] 2410 ldr r2, [r6, #72] 2411 add r4, r4, r0 2412 mov r0, r4 2413 mov r1, #64 2414 lsl r3, r3, #1 2415 ldrh r3, [r2, r3] 2416 ldr r2, .L265+164 2417 bl snprintf 2418 add r4, r4, r0 2419 ldrh r3, [r6, #78] 2420 mov r0, r4 2421 ldr r2, .L265+168 2422 mov r1, #64 2423 bl snprintf 2424 add r4, r4, r0 2425 ldrb r3, [r6, #82] @ zero_extendqisi2 2426 mov r0, r4 2427 ldr r2, .L265+172 2428 mov r1, #64 2429 bl snprintf 2430 add r4, r4, r0 2431 ldrh r3, [r6, #76] 2432 mov r0, r4 2433 ldr r2, .L265+176 2434 mov r1, #64 2435 bl snprintf 2436 add r4, r4, r0 2437 ldrb r3, [r6, #84] @ zero_extendqisi2 2438 mov r0, r4 2439 ldr r2, .L265+180 2440 mov r1, #64 2441 bl snprintf 2442 add r4, r4, r0 2443 ldrh r3, [r6, #80] 2444 mov r0, r4 2445 ldr r2, .L265+184 2446 mov r1, #64 2447 bl snprintf 2448 ldrh r3, [r6, #76] 2449 ldr r2, [r6, #72] 2450 add r4, r4, r0 2451 mov r0, r4 2452 mov r1, #64 2453 lsl r3, r3, #1 2454 ldrh r3, [r2, r3] 2455 ldr r2, .L265+188 2456 bl snprintf 2457 add r4, r4, r0 2458 ldrh r3, [r6, #126] 2459 mov r0, r4 2460 ldr r2, .L265+192 2461 mov r1, #64 2462 bl snprintf 2463 add r4, r4, r0 2464 ldrb r3, [r6, #130] @ zero_extendqisi2 2465 mov r0, r4 2466 ldr r2, .L265+196 2467 mov r1, #64 2468 bl snprintf 2469 add r4, r4, r0 2470 ldrh r3, [r6, #124] 2471 mov r0, r4 2472 ldr r2, .L265+200 2473 mov r1, #64 2474 bl snprintf 2475 add r4, r4, r0 2476 ldrb r3, [r6, #132] @ zero_extendqisi2 2477 mov r0, r4 2478 ldr r2, .L265+204 2479 mov r1, #64 2480 bl snprintf 2481 add r4, r4, r0 2482 ldrh r3, [r6, #128] 2483 mov r0, r4 2484 ldr r2, .L265+208 2485 mov r1, #64 2486 bl snprintf 2487 add r4, r4, r0 2488 ldrh r3, [r6, #174] 2489 mov r0, r4 2490 ldr r2, .L265+212 2491 mov r1, #64 2492 bl snprintf 2493 add r4, r4, r0 2494 ldrb r3, [r6, #178] @ zero_extendqisi2 2495 mov r0, r4 2496 ldr r2, .L265+216 2497 mov r1, #64 2498 bl snprintf 2499 add r4, r4, r0 2500 ldrh r3, [r6, #172] 2501 mov r0, r4 2502 ldr r2, .L265+220 2503 mov r1, #64 2504 bl snprintf 2505 add r4, r4, r0 2506 ldrb r3, [r6, #180] @ zero_extendqisi2 2507 mov r0, r4 2508 ldr r2, .L265+224 2509 mov r1, #64 2510 bl snprintf 2511 add r4, r4, r0 2512 ldrh r3, [r6, #176] 2513 mov r0, r4 2514 ldr r2, .L265+228 2515 mov r1, #64 2516 bl snprintf 2517 ldr r3, [r6, #2716] 2518 add r4, r4, r0 2519 str r3, [sp, #4] 2520 ldr r3, [r6, #2724] 2521 mov r0, r4 2522 ldr r2, .L265+232 2523 mov r1, #64 2524 str r3, [sp] 2525 ldr r3, [r6, #2720] 2526 bl snprintf 2527 add r4, r4, r0 2528 ldr r3, [r6, #2712] 2529 mov r0, r4 2530 ldr r2, .L265+236 2531 mov r1, #64 2532 bl snprintf 2533 add r4, r4, r0 2534 ldr r3, [r6, #2736] 2535 mov r0, r4 2536 ldr r2, .L265+240 2537 mov r1, #64 2538 bl snprintf 2539 add r3, r6, #3152 2540 add r4, r4, r0 2541 ldr r2, .L265+244 2542 mov r0, r4 2543 mov r1, #64 2544 ldrh r3, [r3] 2545 bl snprintf 2546 movw r3, #3154 2547 add r4, r4, r0 2548 ldr r2, .L265+248 2549 ldrh r3, [r6, r3] 2550 mov r0, r4 2551 mov r1, #64 2552 bl snprintf 2553 add r4, r4, r0 2554 ldr r3, [r6, #3156] 2555 mov r0, r4 2556 ldr r2, .L265+252 2557 mov r1, #64 2558 bl snprintf 2559 movw r3, #3160 2560 add r4, r4, r0 2561 ldr r2, .L265+256 2562 ldrh r3, [r6, r3] 2563 mov r1, #64 2564 mov r0, r4 2565 bl snprintf 2566 add r4, r4, r0 2567 bl GetFreeBlockMinEraseCount 2568 ldr r2, .L265+260 2569 mov r3, r0 2570 mov r1, #64 2571 mov r0, r4 2572 bl snprintf 2573 add r4, r4, r0 2574 ldrh r0, [r6, #224] 2575 bl GetFreeBlockMaxEraseCount 2576 ldr r2, .L265+264 2577 mov r3, r0 2578 mov r1, #64 2579 mov r0, r4 2580 bl snprintf 2581 ldr r3, .L265+268 2582 add r4, r4, r0 2583 ldr r3, [r3] 2584 cmp r3, #1 2585 beq .L254 2586.L259: 2587 sub r0, r4, r7 2588 sub sp, fp, #40 2589 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 2590.L254: 2591 ldrh r3, [r6, #172] 2592 movw r2, #65535 2593 cmp r3, r2 2594 beq .L256 2595 ldr r2, [r6, #72] 2596 lsl r3, r3, #1 2597 mov r0, r4 2598 mov r1, #64 2599 ldrh r3, [r2, r3] 2600 ldr r2, .L265+272 2601 bl snprintf 2602 add r4, r4, r0 2603.L256: 2604 mov r0, #0 2605 ldr r10, .L265+276 2606 bl List_get_gc_head_node 2607 uxth r0, r0 2608 mov r5, #0 2609 movw r9, #65535 2610.L258: 2611 ldr r3, [r6, #2516] 2612 cmp r0, r9 2613 beq .L257 2614 mov r8, #6 2615 lsl r2, r0, #1 2616 ldr r1, [r6, #2536] 2617 mul r8, r8, r0 2618 ldrh r1, [r1, r2] 2619 add r3, r3, r8 2620 str r1, [sp, #12] 2621 mov r1, #64 2622 ldrh r3, [r3, #4] 2623 str r3, [sp, #8] 2624 ldr r3, [r6, #72] 2625 ldrh r3, [r3, r2] 2626 mov r2, r10 2627 stm sp, {r0, r3} 2628 mov r3, r5 2629 mov r0, r4 2630 add r5, r5, #1 2631 bl snprintf 2632 ldr r3, [r6, #2516] 2633 add r4, r4, r0 2634 cmp r5, #16 2635 ldrh r0, [r3, r8] 2636 bne .L258 2637.L257: 2638 ldr r3, [r6, #2516] 2639 mov r8, #0 2640 ldr r1, [r6, #2532] 2641 movw r9, #65535 2642 ldr r10, .L265+280 2643 sub r1, r1, r3 2644 ldr r3, .L265+284 2645 asr r1, r1, #1 2646 mul r1, r3, r1 2647 uxth r1, r1 2648.L260: 2649 cmp r1, r9 2650 beq .L259 2651 ldr r2, [r6, #2536] 2652 lsl r3, r1, #1 2653 mov r5, #6 2654 mov r0, r4 2655 ldrh r3, [r2, r3] 2656 mul r5, r5, r1 2657 str r3, [sp, #8] 2658 mov r2, r10 2659 ldr r3, [r6, #2516] 2660 add r3, r3, r5 2661 ldrh r3, [r3, #4] 2662 stm sp, {r1, r3} 2663 mov r3, r8 2664 mov r1, #64 2665 add r8, r8, #1 2666 bl snprintf 2667 cmp r8, #4 2668 add r4, r4, r0 2669 beq .L259 2670 ldr r3, [r6, #2516] 2671 ldrh r1, [r3, r5] 2672 b .L260 2673.L266: 2674 .align 2 2675.L265: 2676 .word .LANCHOR0 2677 .word .LC9 2678 .word .LC10 2679 .word .LC11 2680 .word .LC12 2681 .word .LC13 2682 .word .LC14 2683 .word .LC15 2684 .word .LC16 2685 .word .LC17 2686 .word .LC18 2687 .word .LC19 2688 .word .LC20 2689 .word .LC21 2690 .word .LC22 2691 .word .LC23 2692 .word .LC24 2693 .word .LC25 2694 .word .LC26 2695 .word .LC27 2696 .word .LC28 2697 .word .LC29 2698 .word .LC30 2699 .word .LANCHOR0+2468 2700 .word .LC31 2701 .word .LC32 2702 .word .LC33 2703 .word .LC34 2704 .word .LC35 2705 .word .LC36 2706 .word .LC37 2707 .word .LC38 2708 .word .LC39 2709 .word .LC40 2710 .word .LC41 2711 .word .LC42 2712 .word .LC43 2713 .word .LC44 2714 .word .LC45 2715 .word .LC46 2716 .word .LC47 2717 .word .LC48 2718 .word .LC49 2719 .word .LC50 2720 .word .LC51 2721 .word .LC52 2722 .word .LC53 2723 .word .LC54 2724 .word .LC55 2725 .word .LC56 2726 .word .LC57 2727 .word .LC58 2728 .word .LC59 2729 .word .LC60 2730 .word .LC61 2731 .word .LC62 2732 .word .LC63 2733 .word .LC64 2734 .word .LC65 2735 .word .LC66 2736 .word .LC67 2737 .word .LC68 2738 .word .LC69 2739 .word .LC70 2740 .word .LC71 2741 .word .LC72 2742 .word .LC73 2743 .word .LANCHOR2 2744 .word .LC74 2745 .word .LC75 2746 .word .LC76 2747 .word -1431655765 2748 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf 2749 .section .rodata.str1.1 2750.LC77: 2751 .ascii "%s\012\000" 2752 .text 2753 .align 2 2754 .global rknand_proc_ftlread 2755 .syntax unified 2756 .arm 2757 .fpu softvfp 2758 .type rknand_proc_ftlread, %function 2759rknand_proc_ftlread: 2760 @ args = 0, pretend = 0, frame = 0 2761 @ frame_needed = 1, uses_anonymous_args = 0 2762 mov ip, sp 2763 push {r4, r5, fp, ip, lr, pc} 2764 sub fp, ip, #4 2765 push {lr} 2766 bl __gnu_mcount_nc 2767 mov r5, r1 2768 cmp r0, #2048 2769 blt .L269 2770 ldr r3, .L270 2771 add r4, r5, #30 2772 ldr r2, .L270+4 2773 mov r1, #64 2774 mov r0, r5 2775 bl snprintf 2776 mov r0, r4 2777 bl FtlPrintInfo2buf 2778 add r0, r4, r0 2779 sub r0, r0, r5 2780 ldmfd sp, {r4, r5, fp, sp, pc} 2781.L269: 2782 mov r0, #0 2783 ldmfd sp, {r4, r5, fp, sp, pc} 2784.L271: 2785 .align 2 2786.L270: 2787 .word .LC0 2788 .word .LC77 2789 .size rknand_proc_ftlread, .-rknand_proc_ftlread 2790 .section .rodata.str1.1 2791.LC78: 2792 .ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x" 2793 .ascii "\012\000" 2794 .text 2795 .align 2 2796 .global GetSwlReplaceBlock 2797 .syntax unified 2798 .arm 2799 .fpu softvfp 2800 .type GetSwlReplaceBlock, %function 2801GetSwlReplaceBlock: 2802 @ args = 0, pretend = 0, frame = 8 2803 @ frame_needed = 1, uses_anonymous_args = 0 2804 mov ip, sp 2805 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 2806 sub fp, ip, #4 2807 sub sp, sp, #28 2808 push {lr} 2809 bl __gnu_mcount_nc 2810 ldr r4, .L296 2811 ldr r2, [r4, #2604] 2812 ldr r3, [r4, #2616] 2813 cmp r2, r3 2814 bcs .L273 2815 ldr r2, [r4, #2536] 2816 mov r3, #0 2817 ldrh r1, [r4, #240] 2818 sub r2, r2, #2 2819 str r3, [r4, #2596] 2820.L274: 2821 ldr r5, [r4, #2596] 2822 cmp r1, r3 2823 bhi .L275 2824 mov r0, r5 2825 bl __aeabi_uidiv 2826 ldr r3, .L296+4 2827 str r0, [r4, #2604] 2828 ldr r0, [r4, #2600] 2829 ldrh r1, [r3] 2830 sub r0, r5, r0 2831 bl __aeabi_uidiv 2832 str r0, [r4, #2596] 2833.L276: 2834 ldr r6, [r4, #2616] 2835 ldr r9, [r4, #2604] 2836 add r3, r6, #256 2837 cmp r3, r9 2838 bls .L281 2839 ldr r2, [r4, #2612] 2840 add r3, r6, #768 2841 cmp r3, r2 2842 bls .L281 2843.L283: 2844 movw r5, #65535 2845.L282: 2846 mov r0, r5 2847 sub sp, fp, #40 2848 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 2849.L275: 2850 ldrh r0, [r2, #2]! 2851 add r3, r3, #1 2852 add r5, r0, r5 2853 str r5, [r4, #2596] 2854 b .L274 2855.L273: 2856 ldr r3, [r4, #2612] 2857 cmp r2, r3 2858 addhi r3, r3, #1 2859 strhi r3, [r4, #2612] 2860 movhi r3, #0 2861 bls .L276 2862.L278: 2863 ldrh r2, [r4, #240] 2864 cmp r2, r3 2865 bls .L276 2866 lsl r1, r3, #1 2867 ldr r0, [r4, #2536] 2868 add r3, r3, #1 2869 ldrh r2, [r0, r1] 2870 add r2, r2, #1 2871 strh r2, [r0, r1] @ movhi 2872 b .L278 2873.L281: 2874 ldrh r0, [r4, #224] 2875 add r0, r0, r0, lsl #1 2876 lsr r0, r0, #2 2877 bl GetFreeBlockMaxEraseCount 2878 add r3, r6, #64 2879 mov r7, r0 2880 cmp r0, r3 2881 bcc .L283 2882 ldr r3, [r4, #2520] 2883 cmp r3, #0 2884 beq .L283 2885 ldrh r2, [r4, #240] 2886 movw r8, #65535 2887 ldr ip, [r4, #2516] 2888 mov r1, #0 2889 ldr r10, [r4, #2536] 2890 mov lr, #6 2891 str r2, [fp, #-48] 2892 mov r2, r8 2893.L284: 2894 ldrh r0, [r3] 2895 movw r5, #65535 2896 cmp r0, r5 2897 bne .L287 2898 mov r5, r2 2899.L286: 2900 movw r3, #65535 2901 cmp r5, r3 2902 beq .L283 2903 lsl r1, r5, #1 2904 ldrh r2, [r10, r1] 2905 cmp r6, r2 2906 bcs .L288 2907 str r2, [fp, #-52] 2908 str r1, [fp, #-48] 2909 bl GetFreeBlockMinEraseCount 2910 ldr r1, [fp, #-48] 2911 cmp r6, r0 2912 ldr r2, [fp, #-52] 2913 strcc r8, [r4, #2616] 2914.L288: 2915 cmp r9, r2 2916 bls .L283 2917 add r3, r2, #128 2918 cmp r7, r3 2919 ble .L283 2920 add r0, r2, #256 2921 ldr r3, [r4, #2612] 2922 cmp r9, r0 2923 bhi .L289 2924 add r2, r2, #768 2925 cmp r2, r3 2926 bcs .L283 2927.L289: 2928 str r7, [sp, #8] 2929 ldr r0, .L296+8 2930 ldrh r2, [r10, r1] 2931 str r2, [sp, #4] 2932 ldr r2, [r4, #72] 2933 ldrh r2, [r2, r1] 2934 mov r1, r5 2935 str r2, [sp] 2936 mov r2, r9 2937 bl sftl_printk 2938 mov r3, #1 2939 str r3, [r4, #3164] 2940 b .L282 2941.L287: 2942 add r1, r1, #1 2943 ldr r5, [fp, #-48] 2944 uxth r1, r1 2945 cmp r5, r1 2946 bcc .L283 2947 ldrh r5, [r3, #4] 2948 cmp r5, #0 2949 beq .L285 2950 sub r3, r3, ip 2951 ldr r5, .L296+12 2952 asr r3, r3, #1 2953 mul r3, r5, r3 2954 uxth r5, r3 2955 lsl r3, r5, #1 2956 ldrh r3, [r10, r3] 2957 cmp r6, r3 2958 bcs .L286 2959 cmp r3, r8 2960 movcc r8, r3 2961 movcc r2, r5 2962.L285: 2963 mla r3, lr, r0, ip 2964 b .L284 2965.L297: 2966 .align 2 2967.L296: 2968 .word .LANCHOR0 2969 .word .LANCHOR0+292 2970 .word .LC78 2971 .word -1431655765 2972 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock 2973 .align 2 2974 .global free_data_superblock 2975 .syntax unified 2976 .arm 2977 .fpu softvfp 2978 .type free_data_superblock, %function 2979free_data_superblock: 2980 @ args = 0, pretend = 0, frame = 0 2981 @ frame_needed = 1, uses_anonymous_args = 0 2982 mov ip, sp 2983 push {fp, ip, lr, pc} 2984 sub fp, ip, #4 2985 push {lr} 2986 bl __gnu_mcount_nc 2987 movw r2, #65535 2988 cmp r0, r2 2989 beq .L299 2990 ldr r2, .L300 2991 lsl r3, r0, #1 2992 mov r1, #0 2993 ldr r2, [r2, #72] 2994 strh r1, [r2, r3] @ movhi 2995 bl INSERT_FREE_LIST 2996.L299: 2997 mov r0, #0 2998 ldmfd sp, {fp, sp, pc} 2999.L301: 3000 .align 2 3001.L300: 3002 .word .LANCHOR0 3003 .size free_data_superblock, .-free_data_superblock 3004 .align 2 3005 .global get_new_active_ppa 3006 .syntax unified 3007 .arm 3008 .fpu softvfp 3009 .type get_new_active_ppa, %function 3010get_new_active_ppa: 3011 @ args = 0, pretend = 0, frame = 0 3012 @ frame_needed = 1, uses_anonymous_args = 0 3013 mov ip, sp 3014 push {r4, r5, r6, r7, fp, ip, lr, pc} 3015 sub fp, ip, #4 3016 push {lr} 3017 bl __gnu_mcount_nc 3018 ldrh r2, [r0] 3019 movw r3, #65535 3020 mov r4, r0 3021 cmp r2, r3 3022 bne .L303 3023 ldr r1, .L317 3024 movw r2, #2792 3025 ldr r0, .L317+4 3026 bl sftl_printk 3027.L303: 3028 ldr r6, .L317+8 3029 movw r3, #302 3030 ldrh r2, [r4, #2] 3031 ldrh r3, [r6, r3] 3032 cmp r2, r3 3033 bne .L304 3034 ldr r1, .L317 3035 movw r2, #2793 3036 ldr r0, .L317+4 3037 bl sftl_printk 3038.L304: 3039 ldrh r3, [r4, #4] 3040 cmp r3, #0 3041 bne .L305 3042 ldr r1, .L317 3043 movw r2, #2794 3044 ldr r0, .L317+4 3045 bl sftl_printk 3046.L305: 3047 ldrb r3, [r4, #6] @ zero_extendqisi2 3048 mov r1, #0 3049 strb r1, [r4, #10] 3050 movw ip, #65535 3051 ldrh r0, [r6, #232] 3052 add r3, r4, r3, lsl #1 3053 ldrh r5, [r3, #16] 3054.L306: 3055 ldrh r2, [r4, #2] 3056 cmp r5, ip 3057 beq .L308 3058 movw r3, #302 3059 ldrh ip, [r6, r3] 3060 cmp ip, r2 3061 movwls r5, #65535 3062 bls .L302 3063 ldrh r3, [r4, #4] 3064 orr r5, r2, r5, lsl #10 3065 ldrb r2, [r4, #6] @ zero_extendqisi2 3066 movw lr, #65535 3067 sub r3, r3, #1 3068 uxth r3, r3 3069 strh r3, [r4, #4] @ movhi 3070.L311: 3071 add r1, r2, #1 3072 uxtb r2, r1 3073 cmp r0, r2 3074 mov r1, r2 3075 moveq r2, #0 3076 ldrheq r1, [r4, #2] 3077 addeq r1, r1, #1 3078 strheq r1, [r4, #2] @ movhi 3079 add r1, r4, r2, lsl #1 3080 ldrh r1, [r1, #16] 3081 cmp r1, lr 3082 beq .L311 3083 strb r2, [r4, #6] 3084 cmp r3, #0 3085 ldrh r2, [r4, #2] 3086 sub r2, r2, ip 3087 clz r2, r2 3088 lsr r2, r2, #5 3089 moveq r2, #0 3090 cmp r2, #0 3091 beq .L302 3092 ldr r1, .L317 3093 movw r2, #2817 3094 ldr r0, .L317+4 3095 bl sftl_printk 3096.L302: 3097 mov r0, r5 3098 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 3099.L308: 3100 ldrb r3, [r4, #6] @ zero_extendqisi2 3101 add r3, r3, #1 3102 uxtb r3, r3 3103 strb r3, [r4, #6] 3104 cmp r3, r0 3105 strbeq r1, [r4, #6] 3106 addeq r2, r2, #1 3107 strheq r2, [r4, #2] @ movhi 3108 ldrb r3, [r4, #6] @ zero_extendqisi2 3109 add r3, r4, r3, lsl #1 3110 ldrh r5, [r3, #16] 3111 b .L306 3112.L318: 3113 .align 2 3114.L317: 3115 .word .LANCHOR1+111 3116 .word .LC8 3117 .word .LANCHOR0 3118 .size get_new_active_ppa, .-get_new_active_ppa 3119 .align 2 3120 .global FtlGcBufInit 3121 .syntax unified 3122 .arm 3123 .fpu softvfp 3124 .type FtlGcBufInit, %function 3125FtlGcBufInit: 3126 @ args = 0, pretend = 0, frame = 0 3127 @ frame_needed = 1, uses_anonymous_args = 0 3128 mov ip, sp 3129 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 3130 sub fp, ip, #4 3131 push {lr} 3132 bl __gnu_mcount_nc 3133 ldr r3, .L325 3134 mov r1, #0 3135 ldr r6, .L325+4 3136 mov r4, #12 3137 mov r5, #1 3138 mov r7, #20 3139 str r1, [r3, #3168] 3140.L320: 3141 ldrh r2, [r3, #232] 3142 uxth r0, r1 3143 cmp r2, r0 3144 bhi .L321 3145 ldr r4, .L325+4 3146 mov ip, #12 3147 mov lr, #0 3148.L322: 3149 ldr r1, [r3, #3188] 3150 cmp r2, r1 3151 ldmfdcs sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 3152 ldrh r0, [r4] 3153 mul r5, ip, r2 3154 ldr r6, [r3, #3172] 3155 add r1, r6, r5 3156 mul r0, r2, r0 3157 cmp r0, #0 3158 str lr, [r1, #8] 3159 add r1, r0, #3 3160 movge r1, r0 3161 ldr r0, [r3, #3176] 3162 bic r1, r1, #3 3163 add r1, r0, r1 3164 str r1, [r6, r5] 3165 ldr r1, [r3, #3172] 3166 add r5, r1, r5 3167 ldr r1, .L325+8 3168 ldrh r0, [r1] 3169 mul r0, r2, r0 3170 add r2, r2, #1 3171 cmp r0, #0 3172 add r1, r0, #3 3173 movge r1, r0 3174 ldr r0, [r3, #3180] 3175 bic r1, r1, #3 3176 uxth r2, r2 3177 add r1, r0, r1 3178 str r1, [r5, #4] 3179 b .L322 3180.L321: 3181 uxth ip, r1 3182 ldrh lr, [r6] 3183 ldr r8, [r3, #3172] 3184 add r1, r1, #1 3185 mul r0, r4, ip 3186 mul lr, ip, lr 3187 add r2, r8, r0 3188 cmp lr, #0 3189 str r5, [r2, #8] 3190 add r2, lr, #3 3191 movge r2, lr 3192 ldr lr, [r3, #3176] 3193 bic r2, r2, #3 3194 add r2, lr, r2 3195 str r2, [r8, r0] 3196 ldr r2, .L325+8 3197 ldr r8, [r3, #3172] 3198 add lr, r8, r0 3199 ldrh r9, [r2] 3200 mul r9, ip, r9 3201 cmp r9, #0 3202 add r2, r9, #3 3203 movge r2, r9 3204 ldr r9, [r3, #3180] 3205 bic r2, r2, #3 3206 add r2, r9, r2 3207 str r2, [lr, #4] 3208 ldr r2, [r3, #3184] 3209 mla ip, r7, ip, r2 3210 ldr r2, [r8, r0] 3211 str r2, [ip, #8] 3212 ldr r2, [lr, #4] 3213 str r2, [ip, #12] 3214 b .L320 3215.L326: 3216 .align 2 3217.L325: 3218 .word .LANCHOR0 3219 .word .LANCHOR0+310 3220 .word .LANCHOR0+312 3221 .size FtlGcBufInit, .-FtlGcBufInit 3222 .align 2 3223 .global FtlGcBufFree 3224 .syntax unified 3225 .arm 3226 .fpu softvfp 3227 .type FtlGcBufFree, %function 3228FtlGcBufFree: 3229 @ args = 0, pretend = 0, frame = 0 3230 @ frame_needed = 1, uses_anonymous_args = 0 3231 mov ip, sp 3232 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 3233 sub fp, ip, #4 3234 push {lr} 3235 bl __gnu_mcount_nc 3236 ldr r3, .L334 3237 mov lr, #0 3238 mov r8, lr 3239 mov r5, #20 3240 mov r7, #12 3241 ldr r6, [r3, #3188] 3242 ldr r4, [r3, #3172] 3243.L328: 3244 uxth r3, lr 3245 cmp r1, r3 3246 ldmfdls sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 3247 mla ip, r5, r3, r0 3248 mov r2, #0 3249.L329: 3250 uxth r3, r2 3251 cmp r6, r3 3252 bls .L330 3253 mul r3, r7, r3 3254 add r2, r2, #1 3255 add r9, r4, r3 3256 ldr r10, [r4, r3] 3257 ldr r3, [ip, #8] 3258 cmp r10, r3 3259 bne .L329 3260 str r8, [r9, #8] 3261.L330: 3262 add lr, lr, #1 3263 b .L328 3264.L335: 3265 .align 2 3266.L334: 3267 .word .LANCHOR0 3268 .size FtlGcBufFree, .-FtlGcBufFree 3269 .align 2 3270 .global FtlGcBufAlloc 3271 .syntax unified 3272 .arm 3273 .fpu softvfp 3274 .type FtlGcBufAlloc, %function 3275FtlGcBufAlloc: 3276 @ args = 0, pretend = 0, frame = 0 3277 @ frame_needed = 1, uses_anonymous_args = 0 3278 mov ip, sp 3279 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 3280 sub fp, ip, #4 3281 push {lr} 3282 bl __gnu_mcount_nc 3283 ldr r3, .L344 3284 mov ip, #0 3285 mov r6, #12 3286 mov r7, #1 3287 mov r8, #20 3288 ldr r5, [r3, #3188] 3289 ldr r4, [r3, #3172] 3290.L337: 3291 uxth r2, ip 3292 cmp r1, r2 3293 ldmfdls sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 3294 mov lr, #0 3295.L338: 3296 uxth r3, lr 3297 cmp r5, r3 3298 bls .L339 3299 mla r3, r6, r3, r4 3300 add lr, lr, #1 3301 ldr r9, [r3, #8] 3302 cmp r9, #0 3303 bne .L338 3304 mla r2, r8, r2, r0 3305 ldr lr, [r3] 3306 str r7, [r3, #8] 3307 str lr, [r2, #8] 3308 ldr r3, [r3, #4] 3309 str r3, [r2, #12] 3310.L339: 3311 add ip, ip, #1 3312 b .L337 3313.L345: 3314 .align 2 3315.L344: 3316 .word .LANCHOR0 3317 .size FtlGcBufAlloc, .-FtlGcBufAlloc 3318 .align 2 3319 .global IsBlkInGcList 3320 .syntax unified 3321 .arm 3322 .fpu softvfp 3323 .type IsBlkInGcList, %function 3324IsBlkInGcList: 3325 @ args = 0, pretend = 0, frame = 0 3326 @ frame_needed = 1, uses_anonymous_args = 0 3327 mov ip, sp 3328 push {fp, ip, lr, pc} 3329 sub fp, ip, #4 3330 push {lr} 3331 bl __gnu_mcount_nc 3332 ldr r2, .L351 3333 movw r1, #3196 3334 ldr r3, [r2, #3192] 3335 ldrh r2, [r2, r1] 3336 add r2, r3, r2, lsl #1 3337.L347: 3338 cmp r3, r2 3339 bne .L349 3340 mov r0, #0 3341 ldmfd sp, {fp, sp, pc} 3342.L349: 3343 ldrh r1, [r3], #2 3344 cmp r1, r0 3345 bne .L347 3346 mov r0, #1 3347 ldmfd sp, {fp, sp, pc} 3348.L352: 3349 .align 2 3350.L351: 3351 .word .LANCHOR0 3352 .size IsBlkInGcList, .-IsBlkInGcList 3353 .align 2 3354 .global FtlGcUpdatePage 3355 .syntax unified 3356 .arm 3357 .fpu softvfp 3358 .type FtlGcUpdatePage, %function 3359FtlGcUpdatePage: 3360 @ args = 0, pretend = 0, frame = 0 3361 @ frame_needed = 1, uses_anonymous_args = 0 3362 mov ip, sp 3363 push {r4, r5, r6, r7, fp, ip, lr, pc} 3364 sub fp, ip, #4 3365 push {lr} 3366 bl __gnu_mcount_nc 3367 mov r4, r0 3368 ubfx r0, r0, #10, #16 3369 mov r5, r1 3370 mov r6, r2 3371 bl P2V_block_in_plane 3372 ldr r3, .L357 3373 movw r2, #3196 3374 mov ip, #0 3375 ldrh r7, [r3, r2] 3376 ldr r2, [r3, #3192] 3377 sub r1, r2, #2 3378.L354: 3379 uxth lr, ip 3380 cmp r7, lr 3381 bhi .L356 3382 bne .L355 3383 lsl ip, ip, #1 3384 movw r1, #3196 3385 strh r0, [r2, ip] @ movhi 3386 ldrh r2, [r3, r1] 3387 add r2, r2, #1 3388 strh r2, [r3, r1] @ movhi 3389 b .L355 3390.L356: 3391 ldrh lr, [r1, #2]! 3392 add ip, ip, #1 3393 cmp lr, r0 3394 bne .L354 3395.L355: 3396 movw r2, #3204 3397 mov r1, #12 3398 ldrh ip, [r3, r2] 3399 mul ip, r1, ip 3400 ldr r1, [r3, #3200] 3401 add r0, r1, ip 3402 stmib r0, {r5, r6} 3403 str r4, [r1, ip] 3404 ldrh r1, [r3, r2] 3405 add r1, r1, #1 3406 strh r1, [r3, r2] @ movhi 3407 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 3408.L358: 3409 .align 2 3410.L357: 3411 .word .LANCHOR0 3412 .size FtlGcUpdatePage, .-FtlGcUpdatePage 3413 .section .rodata.str1.1 3414.LC79: 3415 .ascii "FtlGcRefreshBlock 0x%x\012\000" 3416 .text 3417 .align 2 3418 .global FtlGcRefreshBlock 3419 .syntax unified 3420 .arm 3421 .fpu softvfp 3422 .type FtlGcRefreshBlock, %function 3423FtlGcRefreshBlock: 3424 @ args = 0, pretend = 0, frame = 0 3425 @ frame_needed = 1, uses_anonymous_args = 0 3426 mov ip, sp 3427 push {r4, r5, fp, ip, lr, pc} 3428 sub fp, ip, #4 3429 push {lr} 3430 bl __gnu_mcount_nc 3431 mov r4, r0 3432 mov r1, r0 3433 ldr r0, .L362 3434 bl sftl_printk 3435 ldr r3, .L362+4 3436 ldrh r0, [r3, #222] 3437 cmp r0, r4 3438 beq .L360 3439 ldrh r1, [r3, #220] 3440 cmp r1, r4 3441 beq .L360 3442 movw r2, #65535 3443 cmp r0, r2 3444 strheq r4, [r3, #222] @ movhi 3445 beq .L360 3446 cmp r1, r2 3447 strheq r4, [r3, #220] @ movhi 3448.L360: 3449 mov r0, #0 3450 ldmfd sp, {r4, r5, fp, sp, pc} 3451.L363: 3452 .align 2 3453.L362: 3454 .word .LC79 3455 .word .LANCHOR0 3456 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock 3457 .section .rodata.str1.1 3458.LC80: 3459 .ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000" 3460 .text 3461 .align 2 3462 .global FtlGcMarkBadPhyBlk 3463 .syntax unified 3464 .arm 3465 .fpu softvfp 3466 .type FtlGcMarkBadPhyBlk, %function 3467FtlGcMarkBadPhyBlk: 3468 @ args = 0, pretend = 0, frame = 0 3469 @ frame_needed = 1, uses_anonymous_args = 0 3470 mov ip, sp 3471 push {r4, r5, r6, r7, fp, ip, lr, pc} 3472 sub fp, ip, #4 3473 push {lr} 3474 bl __gnu_mcount_nc 3475 ldr r5, .L368 3476 movw r7, #3206 3477 mov r4, r0 3478 bl P2V_block_in_plane 3479 mov r2, r4 3480 mov r6, r0 3481 ldr r0, .L368+4 3482 ldrh r1, [r5, r7] 3483 bl sftl_printk 3484 mov r0, r6 3485 bl FtlGcRefreshBlock 3486 ldr r1, .L368+8 3487 ldrh r3, [r5, r7] 3488 mov r2, #0 3489 mov r0, r1 3490.L365: 3491 uxth ip, r2 3492 cmp r3, ip 3493 bhi .L367 3494 cmp r3, #15 3495 bhi .L366 3496 add r1, r3, #1 3497 lsl r3, r3, #1 3498 movw r2, #3206 3499 strh r4, [r0, r3] @ movhi 3500 strh r1, [r5, r2] @ movhi 3501 b .L366 3502.L367: 3503 ldrh ip, [r1], #2 3504 add r2, r2, #1 3505 cmp ip, r4 3506 bne .L365 3507.L366: 3508 mov r0, #0 3509 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 3510.L369: 3511 .align 2 3512.L368: 3513 .word .LANCHOR0 3514 .word .LC80 3515 .word .LANCHOR0+3208 3516 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk 3517 .align 2 3518 .global FtlGcReFreshBadBlk 3519 .syntax unified 3520 .arm 3521 .fpu softvfp 3522 .type FtlGcReFreshBadBlk, %function 3523FtlGcReFreshBadBlk: 3524 @ args = 0, pretend = 0, frame = 0 3525 @ frame_needed = 1, uses_anonymous_args = 0 3526 mov ip, sp 3527 push {r4, r5, fp, ip, lr, pc} 3528 sub fp, ip, #4 3529 push {lr} 3530 bl __gnu_mcount_nc 3531 ldr r4, .L376 3532 movw r3, #3206 3533 ldrh r2, [r4, r3] 3534 cmp r2, #0 3535 beq .L371 3536 ldrh r1, [r4, #222] 3537 movw r3, #65535 3538 cmp r1, r3 3539 bne .L371 3540 movw r3, #3242 3541 movw r5, #3242 3542 ldrh r1, [r4, r3] 3543 cmp r1, r2 3544 movcs r2, #0 3545 strhcs r2, [r4, r3] @ movhi 3546 ldr r2, .L376+4 3547 ldrh r3, [r4, r5] 3548 lsl r3, r3, #1 3549 ldrh r0, [r2, r3] 3550 bl P2V_block_in_plane 3551 bl FtlGcRefreshBlock 3552 ldrh r3, [r4, r5] 3553 add r3, r3, #1 3554 strh r3, [r4, r5] @ movhi 3555.L371: 3556 mov r0, #0 3557 ldmfd sp, {r4, r5, fp, sp, pc} 3558.L377: 3559 .align 2 3560.L376: 3561 .word .LANCHOR0 3562 .word .LANCHOR0+3208 3563 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk 3564 .align 2 3565 .global ftl_malloc 3566 .syntax unified 3567 .arm 3568 .fpu softvfp 3569 .type ftl_malloc, %function 3570ftl_malloc: 3571 @ args = 0, pretend = 0, frame = 0 3572 @ frame_needed = 1, uses_anonymous_args = 0 3573 mov ip, sp 3574 push {fp, ip, lr, pc} 3575 sub fp, ip, #4 3576 push {lr} 3577 bl __gnu_mcount_nc 3578 movw r1, #3265 3579 bl __kmalloc 3580 ldmfd sp, {fp, sp, pc} 3581 .size ftl_malloc, .-ftl_malloc 3582 .align 2 3583 .global ftl_free 3584 .syntax unified 3585 .arm 3586 .fpu softvfp 3587 .type ftl_free, %function 3588ftl_free: 3589 @ args = 0, pretend = 0, frame = 0 3590 @ frame_needed = 1, uses_anonymous_args = 0 3591 mov ip, sp 3592 push {fp, ip, lr, pc} 3593 sub fp, ip, #4 3594 push {lr} 3595 bl __gnu_mcount_nc 3596 bl kfree 3597 ldmfd sp, {fp, sp, pc} 3598 .size ftl_free, .-ftl_free 3599 .section .rodata.str1.1 3600.LC81: 3601 .ascii "%s %p + 0x%x:\000" 3602.LC82: 3603 .ascii "0x%08x,\000" 3604.LC83: 3605 .ascii "0x%04x,\000" 3606.LC84: 3607 .ascii "0x%02x,\000" 3608.LC85: 3609 .ascii "\012\000" 3610 .text 3611 .align 2 3612 .global rknand_print_hex 3613 .syntax unified 3614 .arm 3615 .fpu softvfp 3616 .type rknand_print_hex, %function 3617rknand_print_hex: 3618 @ args = 0, pretend = 0, frame = 8 3619 @ frame_needed = 1, uses_anonymous_args = 0 3620 mov ip, sp 3621 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 3622 sub fp, ip, #4 3623 sub sp, sp, #12 3624 push {lr} 3625 bl __gnu_mcount_nc 3626 ldr r10, .L389 3627 mov r7, #0 3628 mov r9, r0 3629 mov r5, r1 3630 mov r8, r2 3631 mov r6, r7 3632 mov r4, r7 3633 str r3, [fp, #-48] 3634.L381: 3635 ldr r3, [fp, #-48] 3636 cmp r3, r4 3637 bhi .L387 3638 ldr r0, .L389+4 3639 bl sftl_printk 3640 sub sp, fp, #40 3641 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 3642.L387: 3643 cmp r6, #0 3644 bne .L382 3645 ldr r0, .L389+8 3646 mov r3, r7 3647 mov r2, r5 3648 mov r1, r9 3649 bl sftl_printk 3650.L382: 3651 cmp r8, #4 3652 ldreq r1, [r5, r4, lsl #2] 3653 ldreq r0, .L389+12 3654 beq .L388 3655 cmp r8, #2 3656 lsleq r3, r4, #1 3657 movne r0, r10 3658 ldreq r0, .L389+16 3659 ldrheq r1, [r5, r3] 3660 ldrbne r1, [r5, r4] @ zero_extendqisi2 3661.L388: 3662 add r6, r6, #1 3663 bl sftl_printk 3664 cmp r6, #15 3665 bls .L386 3666 mov r6, #0 3667 ldr r0, .L389+4 3668 bl sftl_printk 3669.L386: 3670 add r4, r4, #1 3671 add r7, r7, r8 3672 b .L381 3673.L390: 3674 .align 2 3675.L389: 3676 .word .LC84 3677 .word .LC85 3678 .word .LC81 3679 .word .LC82 3680 .word .LC83 3681 .size rknand_print_hex, .-rknand_print_hex 3682 .section .rodata.str1.1 3683.LC86: 3684 .ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000" 3685.LC87: 3686 .ascii "not free: w: d:\000" 3687.LC88: 3688 .ascii "not free: w: s:\000" 3689 .text 3690 .align 2 3691 .global FlashEraseBlocks 3692 .syntax unified 3693 .arm 3694 .fpu softvfp 3695 .type FlashEraseBlocks, %function 3696FlashEraseBlocks: 3697 @ args = 0, pretend = 0, frame = 32 3698 @ frame_needed = 1, uses_anonymous_args = 0 3699 mov ip, sp 3700 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 3701 sub fp, ip, #4 3702 sub sp, sp, #36 3703 push {lr} 3704 bl __gnu_mcount_nc 3705 mov r3, sp 3706 ldr r10, .L407 3707 bic r9, r3, #8128 3708 mov r5, r0 3709 bic r9, r9, #63 3710 mov r7, r2 3711 mov r4, #0 3712 ldr r3, [r9, #24] 3713 str r3, [fp, #-48] 3714 ldrh r3, [r10, #12] 3715 str r3, [fp, #-64] 3716 lsl r3, r3, #3 3717 str r3, [fp, #-68] 3718 add r3, r2, r2, lsl #2 3719 str r3, [fp, #-72] 3720.L392: 3721 ldr r3, [fp, #-72] 3722 cmp r4, r3 3723 beq .L395 3724 sub r2, fp, #56 3725 sub r1, fp, #52 3726 add r0, r5, r4, lsl #2 3727 mov r6, r5 3728 bl l2p_addr_tran 3729 ldr r8, [fp, #-56] 3730 cmp r8, #0 3731 bne .L393 3732 ldr r2, [fp, #-52] 3733 ldr r3, [fp, #-68] 3734 cmp r3, r2 3735 bls .L393 3736 ldr r5, .L407+4 3737 ldr r4, .L407+8 3738.L394: 3739 mvn r3, #0 3740 ldr r2, [fp, #-52] 3741 str r3, [r6] 3742 mov r1, r5 3743 mov r0, r4 3744 add r8, r8, #1 3745 bl sftl_printk 3746 ldr r1, [r6, #8] 3747 ldr r0, .L407+12 3748 mov r3, #16 3749 mov r2, #4 3750 add r6, r6, #20 3751 bl rknand_print_hex 3752 mov r3, #4 3753 ldr r1, [r6, #-8] 3754 mov r2, r3 3755 ldr r0, .L407+16 3756 bl rknand_print_hex 3757 cmp r7, r8 3758 bne .L394 3759 bl dump_stack 3760.L395: 3761 ldr r2, [fp, #-48] 3762 ldr r3, [r9, #24] 3763 cmp r2, r3 3764 beq .L402 3765 bl __stack_chk_fail 3766.L393: 3767 ldr r2, [r10, #3248] 3768 uxtb r0, r8 3769 ldr r1, [fp, #-52] 3770 blx r2 3771 cmp r0, #0 3772 streq r0, [r5, r4, lsl #2] 3773 mvnne r2, #0 3774 strne r2, [r5, r4, lsl #2] 3775 ldrh r2, [r10, #14] 3776 cmp r2, #4 3777 bne .L399 3778 ldr r1, [fp, #-52] 3779 ldr r3, [fp, #-64] 3780 ldr r2, [r10, #3248] 3781 ldrb r0, [fp, #-56] @ zero_extendqisi2 3782 add r1, r3, r1 3783 blx r2 3784 cmp r0, #0 3785 mvnne r2, #0 3786 strne r2, [r5, r4, lsl #2] 3787.L399: 3788 add r4, r4, #5 3789 b .L392 3790.L402: 3791 mov r0, #0 3792 sub sp, fp, #40 3793 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 3794.L408: 3795 .align 2 3796.L407: 3797 .word .LANCHOR0 3798 .word .LANCHOR1+130 3799 .word .LC86 3800 .word .LC87 3801 .word .LC88 3802 .size FlashEraseBlocks, .-FlashEraseBlocks 3803 .align 2 3804 .global FtlFreeSysBlkQueueIn 3805 .syntax unified 3806 .arm 3807 .fpu softvfp 3808 .type FtlFreeSysBlkQueueIn, %function 3809FtlFreeSysBlkQueueIn: 3810 @ args = 0, pretend = 0, frame = 0 3811 @ frame_needed = 1, uses_anonymous_args = 0 3812 mov ip, sp 3813 push {r4, r5, r6, r7, fp, ip, lr, pc} 3814 sub fp, ip, #4 3815 push {lr} 3816 bl __gnu_mcount_nc 3817 sub r3, r0, #1 3818 movw r2, #65533 3819 mov r6, r0 3820 uxth r3, r3 3821 cmp r3, r2 3822 ldmfdhi sp, {r4, r5, r6, r7, fp, sp, pc} 3823 ldr r7, .L418 3824 add r4, r7, #412 3825 ldrh r3, [r4, #6] 3826 cmp r3, #1024 3827 ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} 3828 cmp r1, #0 3829 beq .L411 3830 bl P2V_block_in_plane 3831 mov r5, r0 3832 ldr r0, [r7, #3268] 3833 lsl r3, r6, #10 3834 mov r2, #1 3835 mov r1, r2 3836 str r3, [r0, #4] 3837 bl FlashEraseBlocks 3838 lsl r3, r5, #1 3839 ldr r1, [r7, #2536] 3840 ldrh r2, [r1, r3] 3841 add r2, r2, #1 3842 strh r2, [r1, r3] @ movhi 3843 ldr r3, [r7, #2608] 3844 add r3, r3, #1 3845 str r3, [r7, #2608] 3846.L411: 3847 ldrh r3, [r4, #6] 3848 add r3, r3, #1 3849 strh r3, [r4, #6] @ movhi 3850 ldrh r3, [r4, #4] 3851 add r2, r4, r3, lsl #1 3852 add r3, r3, #1 3853 ubfx r3, r3, #0, #10 3854 strh r3, [r4, #4] @ movhi 3855 strh r6, [r2, #8] @ movhi 3856 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 3857.L419: 3858 .align 2 3859.L418: 3860 .word .LANCHOR0 3861 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn 3862 .section .rodata.str1.1 3863.LC89: 3864 .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012" 3865 .ascii "\000" 3866 .text 3867 .align 2 3868 .global FtlFreeSysBlkQueueOut 3869 .syntax unified 3870 .arm 3871 .fpu softvfp 3872 .type FtlFreeSysBlkQueueOut, %function 3873FtlFreeSysBlkQueueOut: 3874 @ args = 0, pretend = 0, frame = 0 3875 @ frame_needed = 1, uses_anonymous_args = 0 3876 mov ip, sp 3877 push {r4, r5, r6, r7, fp, ip, lr, pc} 3878 sub fp, ip, #4 3879 push {lr} 3880 bl __gnu_mcount_nc 3881 ldr r6, .L425 3882 add r4, r6, #412 3883 ldrh r2, [r4, #6] 3884 cmp r2, #0 3885 movweq r5, #65535 3886 beq .L421 3887 ldrh r3, [r4, #2] 3888 sub r2, r2, #1 3889 ldr r0, [r6, #3268] 3890 strh r2, [r4, #6] @ movhi 3891 mov r2, #1 3892 add r1, r4, r3, lsl #1 3893 add r3, r3, #1 3894 ubfx r3, r3, #0, #10 3895 strh r3, [r4, #2] @ movhi 3896 ldrh r5, [r1, #8] 3897 mov r1, r2 3898 lsl r3, r5, #10 3899 str r3, [r0, #4] 3900 bl FlashEraseBlocks 3901 ldr r3, [r6, #2608] 3902 movw r2, #65533 3903 add r3, r3, #1 3904 str r3, [r6, #2608] 3905 sub r3, r5, #1 3906 uxth r3, r3 3907 cmp r3, r2 3908 bls .L422 3909.L421: 3910 ldrh r2, [r4, #6] 3911 mov r1, r5 3912 ldr r0, .L425+4 3913 bl sftl_printk 3914.L423: 3915 b .L423 3916.L422: 3917 mov r0, r5 3918 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 3919.L426: 3920 .align 2 3921.L425: 3922 .word .LANCHOR0 3923 .word .LC89 3924 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut 3925 .section .rodata.str1.1 3926.LC90: 3927 .ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000" 3928 .text 3929 .align 2 3930 .global ftl_map_blk_alloc_new_blk 3931 .syntax unified 3932 .arm 3933 .fpu softvfp 3934 .type ftl_map_blk_alloc_new_blk, %function 3935ftl_map_blk_alloc_new_blk: 3936 @ args = 0, pretend = 0, frame = 0 3937 @ frame_needed = 1, uses_anonymous_args = 0 3938 mov ip, sp 3939 push {r4, r5, r6, r7, fp, ip, lr, pc} 3940 sub fp, ip, #4 3941 push {lr} 3942 bl __gnu_mcount_nc 3943 ldrh r1, [r0, #10] 3944 mov r4, r0 3945 ldr r2, [r0, #12] 3946 mov r3, #0 3947.L428: 3948 uxth r5, r3 3949 cmp r1, r5 3950 bls .L433 3951 mov r7, r2 3952 add r3, r3, #1 3953 add r2, r2, #2 3954 ldrh r6, [r7] 3955 cmp r6, #0 3956 bne .L428 3957 bl FtlFreeSysBlkQueueOut 3958 sub r3, r0, #1 3959 movw r2, #65533 3960 mov r1, r0 3961 uxth r3, r3 3962 strh r0, [r7] @ movhi 3963 cmp r3, r2 3964 bls .L429 3965 ldr r3, .L435 3966 ldr r0, .L435+4 3967 ldrh r2, [r3, #6] 3968 bl sftl_printk 3969.L430: 3970 b .L430 3971.L429: 3972 ldr r3, [r4, #28] 3973 strh r6, [r4, #2] @ movhi 3974 add r3, r3, #1 3975 str r3, [r4, #28] 3976 ldrh r3, [r4, #8] 3977 strh r5, [r4] @ movhi 3978 add r3, r3, #1 3979 strh r3, [r4, #8] @ movhi 3980 ldrh r3, [r4, #10] 3981 cmp r3, r5 3982 bhi .L431 3983.L433: 3984 ldr r1, .L435+8 3985 movw r2, #578 3986 ldr r0, .L435+12 3987 bl sftl_printk 3988.L431: 3989 mov r0, #0 3990 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 3991.L436: 3992 .align 2 3993.L435: 3994 .word .LANCHOR0+412 3995 .word .LC90 3996 .word .LANCHOR1+147 3997 .word .LC8 3998 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk 3999 .align 2 4000 .global ftl_memset 4001 .syntax unified 4002 .arm 4003 .fpu softvfp 4004 .type ftl_memset, %function 4005ftl_memset: 4006 @ args = 0, pretend = 0, frame = 0 4007 @ frame_needed = 1, uses_anonymous_args = 0 4008 mov ip, sp 4009 push {fp, ip, lr, pc} 4010 sub fp, ip, #4 4011 push {lr} 4012 bl __gnu_mcount_nc 4013 bl memset 4014 ldmfd sp, {fp, sp, pc} 4015 .size ftl_memset, .-ftl_memset 4016 .section .rodata.str1.1 4017.LC91: 4018 .ascii "%s error allocating memory. return -1\012\000" 4019 .text 4020 .align 2 4021 .global FtlMemInit 4022 .syntax unified 4023 .arm 4024 .fpu softvfp 4025 .type FtlMemInit, %function 4026FtlMemInit: 4027 @ args = 0, pretend = 0, frame = 0 4028 @ frame_needed = 1, uses_anonymous_args = 0 4029 mov ip, sp 4030 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 4031 sub fp, ip, #4 4032 push {lr} 4033 bl __gnu_mcount_nc 4034 ldr r4, .L537 4035 movw r3, #65535 4036 mov r2, #32 4037 movw r6, #306 4038 mov r5, #0 4039 mov r7, #12 4040 mov r8, #80 4041 add r9, r4, #312 4042 str r3, [r4, #3276] 4043 mvn r3, #0 4044 strh r3, [r4, #222] @ movhi 4045 strh r3, [r4, #220] @ movhi 4046 add r3, r4, #3152 4047 ldrh r0, [r4, r6] 4048 str r5, [r4, #2588] 4049 strh r2, [r3] @ movhi 4050 movw r3, #3154 4051 mov r2, #128 4052 lsl r0, r0, #1 4053 strh r2, [r4, r3] @ movhi 4054 movw r3, #3160 4055 str r5, [r4, #2592] 4056 strh r5, [r4, r3] @ movhi 4057 movw r3, #3206 4058 str r5, [r4, #2576] 4059 strh r5, [r4, r3] @ movhi 4060 movw r3, #3242 4061 str r5, [r4, #2564] 4062 strh r5, [r4, r3] @ movhi 4063 str r5, [r4, #2560] 4064 str r5, [r4, #2568] 4065 str r5, [r4, #2572] 4066 str r5, [r4, #2556] 4067 str r5, [r4, #2596] 4068 str r5, [r4, #2600] 4069 str r5, [r4, #2608] 4070 str r5, [r4, #2612] 4071 str r5, [r4, #2616] 4072 str r5, [r4, #3272] 4073 str r5, [r4, #3164] 4074 str r5, [r4, #3280] 4075 str r5, [r4, #3156] 4076 str r5, [r4, #3284] 4077 bl ftl_malloc 4078 str r0, [r4, #3192] 4079 ldrh r0, [r4, r6] 4080 mul r0, r7, r0 4081 bl ftl_malloc 4082 ldrh r6, [r4, #232] 4083 str r0, [r4, #3200] 4084 mul r8, r8, r6 4085 mov r0, r8 4086 bl ftl_malloc 4087 mov r3, #20 4088 str r0, [r4, #3288] 4089 mul r6, r3, r6 4090 mov r0, r6 4091 bl ftl_malloc 4092 str r0, [r4, #3292] 4093 mov r0, r8 4094 movw r8, #310 4095 bl ftl_malloc 4096 str r0, [r4, #3296] 4097 mov r0, r6 4098 bl ftl_malloc 4099 str r0, [r4, #3268] 4100 mov r0, r6 4101 bl ftl_malloc 4102 ldrh r3, [r4, #232] 4103 ldrh r6, [r4, r8] 4104 str r0, [r4, #3184] 4105 lsl r3, r3, #1 4106 mov r0, r6 4107 add r3, r3, #1 4108 str r3, [r4, #3188] 4109 bl ftl_malloc 4110 str r0, [r4, #3300] 4111 mov r0, r6 4112 bl ftl_malloc 4113 str r0, [r4, #3304] 4114 mov r0, r6 4115 bl ftl_malloc 4116 str r0, [r4, #3308] 4117 ldr r0, [r4, #3188] 4118 mul r0, r0, r6 4119 bl ftl_malloc 4120 str r0, [r4, #3176] 4121 mov r0, r6 4122 bl ftl_malloc 4123 str r0, [r4, #3312] 4124 mov r0, r6 4125 bl ftl_malloc 4126 str r0, [r4, #3316] 4127 ldr r0, [r4, #3188] 4128 mul r0, r7, r0 4129 bl ftl_malloc 4130 str r0, [r4, #3172] 4131 mov r0, r6 4132 bl ftl_malloc 4133 str r0, [r4, #3320] 4134 mov r0, r6 4135 bl ftl_malloc 4136 movw r3, #258 4137 str r0, [r4, #3324] 4138 ldrh r0, [r4, r3] 4139 lsl r0, r0, #2 4140 bl ftl_malloc 4141 ldrh r3, [r4, #232] 4142 ldrh r6, [r9] 4143 str r0, [r4, #3328] 4144 mul r6, r3, r6 4145 mov r0, r6 4146 bl ftl_malloc 4147 str r0, [r4, #3332] 4148 lsl r0, r6, #2 4149 movw r6, #3340 4150 bl ftl_malloc 4151 ldrh r3, [r9] 4152 str r0, [r4, #3336] 4153 ldr r0, [r4, #3188] 4154 mul r0, r0, r3 4155 bl ftl_malloc 4156 str r0, [r4, #3180] 4157 ldrh r0, [r4, #242] 4158 lsl r0, r0, #1 4159 uxth r0, r0 4160 strh r0, [r4, r6] @ movhi 4161 bl ftl_malloc 4162 str r0, [r4, #3344] 4163 ldrh r0, [r4, r6] 4164 add r0, r0, #544 4165 add r0, r0, #3 4166 lsr r3, r0, #9 4167 bic r0, r0, #508 4168 bic r0, r0, #3 4169 strh r3, [r4, r6] @ movhi 4170 bl ftl_malloc 4171 ldrh r6, [r4, #242] 4172 str r0, [r4, #3348] 4173 add r0, r0, #32 4174 str r0, [r4, #2536] 4175 lsl r6, r6, #1 4176 mov r0, r6 4177 bl ftl_malloc 4178 str r0, [r4, #3352] 4179 mov r0, r6 4180 bl ftl_malloc 4181 ldr r6, [r4, #328] 4182 str r0, [r4, #72] 4183 lsl r6, r6, #1 4184 mov r0, r6 4185 bl ftl_malloc 4186 str r0, [r4, #3356] 4187 mov r0, r6 4188 add r6, r4, #320 4189 bl ftl_malloc 4190 str r0, [r4, #3360] 4191 ldrh r0, [r6] 4192 lsl r0, r0, #1 4193 bl ftl_malloc 4194 str r0, [r4, #348] 4195 ldrh r0, [r6] 4196 lsl r0, r0, #1 4197 bl ftl_malloc 4198 str r0, [r4, #3364] 4199 ldrh r0, [r6] 4200 movw r6, #322 4201 lsl r0, r0, #2 4202 bl ftl_malloc 4203 str r0, [r4, #3368] 4204 ldrh r0, [r4, r6] 4205 lsl r0, r0, #2 4206 bl ftl_malloc 4207 ldrh r2, [r4, r6] 4208 mov r1, r5 4209 str r0, [r4, #3372] 4210 movw r5, #338 4211 movw r6, #3388 4212 lsl r2, r2, #2 4213 bl ftl_memset 4214 add r3, r4, #336 4215 ldrh r0, [r3] 4216 lsl r0, r0, #2 4217 bl ftl_malloc 4218 str r0, [r4, #3376] 4219 ldr r0, [r4, #328] 4220 lsl r0, r0, #2 4221 bl ftl_malloc 4222 str r0, [r4, #3380] 4223 ldrh r0, [r4, r5] 4224 mul r0, r7, r0 4225 bl ftl_malloc 4226 ldrh r3, [r4, r5] 4227 str r0, [r4, #2540] 4228 ldrh r0, [r4, r8] 4229 mul r0, r0, r3 4230 bl ftl_malloc 4231 ldrh r3, [r4, #242] 4232 str r0, [r4, #3384] 4233 mov r0, #6 4234 mul r0, r0, r3 4235 bl ftl_malloc 4236 movw r3, #298 4237 str r0, [r4, #2516] 4238 ldrh r0, [r4, r3] 4239 ldrh r3, [r4, #254] 4240 add r0, r0, #31 4241 asr r0, r0, #5 4242 strh r0, [r4, r6] @ movhi 4243 mul r0, r0, r3 4244 lsl r0, r0, #2 4245 bl ftl_malloc 4246 ldrh r2, [r4, r6] 4247 ldrh r3, [r4, #254] 4248 mov r5, r0 4249 str r0, [r4, #380] 4250 mov r1, #1 4251 lsl ip, r2, #2 4252 add r2, r0, r2, lsl #2 4253 add r0, r4, #384 4254.L439: 4255 cmp r3, r1 4256 bhi .L440 4257 cmp r3, #0 4258 ldr r0, .L537+4 4259 mov r1, #0 4260 moveq r3, #1 4261 rsb r2, r3, #8 4262 add r3, r3, #7 4263 lsl r2, r2, #2 4264 add r0, r0, r3, lsl #2 4265 bl memset 4266 ldr r3, [r4, #3356] 4267 cmp r3, #0 4268 bne .L441 4269.L443: 4270 ldr r1, .L537+8 4271 ldr r0, .L537+12 4272 bl sftl_printk 4273 mvn r0, #0 4274 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 4275.L440: 4276 str r2, [r0], #4 4277 add r1, r1, #1 4278 add r2, r2, ip 4279 b .L439 4280.L441: 4281 ldr r3, [r4, #3360] 4282 cmp r3, #0 4283 beq .L443 4284 ldr r3, [r4, #3376] 4285 cmp r3, #0 4286 beq .L443 4287 ldr r3, [r4, #3380] 4288 cmp r3, #0 4289 beq .L443 4290 ldr r3, [r4, #2540] 4291 cmp r3, #0 4292 beq .L443 4293 ldr r3, [r4, #3384] 4294 cmp r3, #0 4295 beq .L443 4296 ldr r3, [r4, #2516] 4297 cmp r3, #0 4298 beq .L443 4299 cmp r5, #0 4300 beq .L443 4301 ldr r3, [r4, #72] 4302 cmp r3, #0 4303 beq .L443 4304 ldr r3, [r4, #3192] 4305 cmp r3, #0 4306 beq .L443 4307 ldr r3, [r4, #3200] 4308 cmp r3, #0 4309 beq .L443 4310 ldr r3, [r4, #3288] 4311 cmp r3, #0 4312 beq .L443 4313 ldr r3, [r4, #3296] 4314 cmp r3, #0 4315 beq .L443 4316 ldr r3, [r4, #3268] 4317 cmp r3, #0 4318 beq .L443 4319 ldr r3, [r4, #3184] 4320 cmp r3, #0 4321 beq .L443 4322 ldr r3, [r4, #3292] 4323 cmp r3, #0 4324 beq .L443 4325 ldr r3, [r4, #3300] 4326 cmp r3, #0 4327 beq .L443 4328 ldr r3, [r4, #3304] 4329 cmp r3, #0 4330 beq .L443 4331 ldr r3, [r4, #3308] 4332 cmp r3, #0 4333 beq .L443 4334 ldr r3, [r4, #3176] 4335 cmp r3, #0 4336 beq .L443 4337 ldr r3, [r4, #3312] 4338 cmp r3, #0 4339 beq .L443 4340 ldr r3, [r4, #3316] 4341 cmp r3, #0 4342 beq .L443 4343 ldr r3, [r4, #3172] 4344 cmp r3, #0 4345 beq .L443 4346 ldr r3, [r4, #3332] 4347 cmp r3, #0 4348 beq .L443 4349 ldr r3, [r4, #3336] 4350 cmp r3, #0 4351 beq .L443 4352 ldr r3, [r4, #3180] 4353 cmp r3, #0 4354 beq .L443 4355 ldr r3, [r4, #2536] 4356 cmp r3, #0 4357 beq .L443 4358 ldr r3, [r4, #3344] 4359 cmp r3, #0 4360 beq .L443 4361 ldr r3, [r4, #348] 4362 cmp r3, #0 4363 beq .L443 4364 ldr r3, .L537 4365 ldr r2, [r3, #3364] 4366 cmp r2, #0 4367 beq .L443 4368 ldr r2, [r3, #3368] 4369 cmp r2, #0 4370 beq .L443 4371 ldr r3, [r3, #3372] 4372 cmp r3, #0 4373 beq .L443 4374 mov r0, #0 4375 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 4376.L538: 4377 .align 2 4378.L537: 4379 .word .LANCHOR0 4380 .word .LANCHOR0+352 4381 .word .LANCHOR1+173 4382 .word .LC91 4383 .size FtlMemInit, .-FtlMemInit 4384 .align 2 4385 .global FtlBbt2Bitmap 4386 .syntax unified 4387 .arm 4388 .fpu softvfp 4389 .type FtlBbt2Bitmap, %function 4390FtlBbt2Bitmap: 4391 @ args = 0, pretend = 0, frame = 0 4392 @ frame_needed = 1, uses_anonymous_args = 0 4393 mov ip, sp 4394 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 4395 sub fp, ip, #4 4396 push {lr} 4397 bl __gnu_mcount_nc 4398 ldr r2, .L544 4399 movw r3, #3388 4400 mov r4, r0 4401 ldr r7, .L544+4 4402 sub r6, r4, #2 4403 ldr r8, .L544+8 4404 add r4, r4, #1020 4405 mov r5, r1 4406 ldrh r2, [r2, r3] 4407 add r4, r4, #2 4408 mov r0, r5 4409 mov r1, #0 4410 lsl r2, r2, #2 4411 bl ftl_memset 4412.L542: 4413 ldrh r3, [r6, #2]! 4414 movw r2, #65535 4415 cmp r3, r2 4416 ldmfdeq sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 4417 ldrh r2, [r7] 4418 cmp r2, r3 4419 bhi .L541 4420 ldr r0, .L544+12 4421 mov r1, r8 4422 mov r2, #74 4423 bl sftl_printk 4424.L541: 4425 ldrh r3, [r6] 4426 mov r0, #1 4427 cmp r4, r6 4428 lsr r1, r3, #5 4429 and r3, r3, #31 4430 ldr r2, [r5, r1, lsl #2] 4431 orr r3, r2, r0, lsl r3 4432 str r3, [r5, r1, lsl #2] 4433 bne .L542 4434 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 4435.L545: 4436 .align 2 4437.L544: 4438 .word .LANCHOR0 4439 .word .LANCHOR0+298 4440 .word .LANCHOR1+184 4441 .word .LC8 4442 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap 4443 .align 2 4444 .global FtlBbtMemInit 4445 .syntax unified 4446 .arm 4447 .fpu softvfp 4448 .type FtlBbtMemInit, %function 4449FtlBbtMemInit: 4450 @ args = 0, pretend = 0, frame = 0 4451 @ frame_needed = 1, uses_anonymous_args = 0 4452 mov ip, sp 4453 push {fp, ip, lr, pc} 4454 sub fp, ip, #4 4455 push {lr} 4456 bl __gnu_mcount_nc 4457 ldr r0, .L547 4458 mvn r2, #0 4459 mov r1, #255 4460 add r3, r0, #352 4461 add r0, r0, #364 4462 strh r2, [r3] @ movhi 4463 mov r2, #0 4464 strh r2, [r3, #6] @ movhi 4465 mov r2, #16 4466 bl ftl_memset 4467 ldmfd sp, {fp, sp, pc} 4468.L548: 4469 .align 2 4470.L547: 4471 .word .LANCHOR0 4472 .size FtlBbtMemInit, .-FtlBbtMemInit 4473 .align 2 4474 .global FtlFreeSysBlkQueueInit 4475 .syntax unified 4476 .arm 4477 .fpu softvfp 4478 .type FtlFreeSysBlkQueueInit, %function 4479FtlFreeSysBlkQueueInit: 4480 @ args = 0, pretend = 0, frame = 0 4481 @ frame_needed = 1, uses_anonymous_args = 0 4482 mov ip, sp 4483 push {r4, r5, fp, ip, lr, pc} 4484 sub fp, ip, #4 4485 push {lr} 4486 bl __gnu_mcount_nc 4487 ldr ip, .L550 4488 mov r4, #0 4489 mov r2, #2048 4490 mov r1, r4 4491 add r3, ip, #412 4492 strh r0, [r3] @ movhi 4493 add r0, ip, #420 4494 strh r4, [r3, #2] @ movhi 4495 strh r4, [r3, #4] @ movhi 4496 strh r4, [r3, #6] @ movhi 4497 bl ftl_memset 4498 mov r0, r4 4499 ldmfd sp, {r4, r5, fp, sp, pc} 4500.L551: 4501 .align 2 4502.L550: 4503 .word .LANCHOR0 4504 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit 4505 .align 2 4506 .global ftl_free_no_use_map_blk 4507 .syntax unified 4508 .arm 4509 .fpu softvfp 4510 .type ftl_free_no_use_map_blk, %function 4511ftl_free_no_use_map_blk: 4512 @ args = 0, pretend = 0, frame = 8 4513 @ frame_needed = 1, uses_anonymous_args = 0 4514 mov ip, sp 4515 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 4516 sub fp, ip, #4 4517 sub sp, sp, #12 4518 push {lr} 4519 bl __gnu_mcount_nc 4520 ldrh r2, [r0, #10] 4521 mov r4, r0 4522 ldr r5, [r0, #20] 4523 mov r1, #0 4524 ldr r8, [r0, #12] 4525 ldr r6, [r0, #24] 4526 lsl r2, r2, #1 4527 mov r0, r5 4528 bl ftl_memset 4529 mov r2, #0 4530.L553: 4531 ldrh r1, [r4, #6] 4532 uxth r3, r2 4533 cmp r1, r3 4534 bhi .L557 4535 ldr r3, .L570 4536 mov r7, #0 4537 mov r10, r7 4538 ldrh r2, [r3] 4539 ldrh r3, [r4] 4540 lsl r3, r3, #1 4541 strh r2, [r5, r3] @ movhi 4542 ldrh r3, [r5] 4543.L558: 4544 ldrh r1, [r4, #10] 4545 uxth r2, r7 4546 cmp r1, r2 4547 bhi .L561 4548 mov r0, r10 4549 sub sp, fp, #40 4550 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 4551.L557: 4552 uxth r3, r2 4553 mov r1, #0 4554 ldr r0, [r6, r3, lsl #2] 4555 ubfx r0, r0, #10, #16 4556.L554: 4557 ldrh ip, [r4, #10] 4558 uxth r3, r1 4559 cmp ip, r3 4560 addls r2, r2, #1 4561 bls .L553 4562.L556: 4563 uxth r3, r1 4564 add r1, r1, #1 4565 lsl r3, r3, #1 4566 ldrh ip, [r8, r3] 4567 subs lr, ip, #0 4568 movne lr, #1 4569 cmp ip, r0 4570 movne lr, #0 4571 cmp lr, #0 4572 ldrhne ip, [r5, r3] 4573 addne ip, ip, #1 4574 strhne ip, [r5, r3] @ movhi 4575 b .L554 4576.L561: 4577 uxth r6, r7 4578 lsl r6, r6, #1 4579 ldrh r9, [r5, r6] 4580 cmp r9, r3 4581 bcs .L559 4582 ldrh r1, [r8, r6] 4583 cmp r1, #0 4584 movne r10, r2 4585 movne r3, r9 4586.L559: 4587 cmp r9, #0 4588 bne .L560 4589 ldrh r0, [r8, r6] 4590 cmp r0, #0 4591 beq .L560 4592 mov r1, #1 4593 str r3, [fp, #-48] 4594 bl FtlFreeSysBlkQueueIn 4595 strh r9, [r8, r6] @ movhi 4596 ldr r3, [fp, #-48] 4597 ldrh r2, [r4, #8] 4598 sub r2, r2, #1 4599 strh r2, [r4, #8] @ movhi 4600.L560: 4601 add r7, r7, #1 4602 b .L558 4603.L571: 4604 .align 2 4605.L570: 4606 .word .LANCHOR0+304 4607 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk 4608 .align 2 4609 .global FtlL2PDataInit 4610 .syntax unified 4611 .arm 4612 .fpu softvfp 4613 .type FtlL2PDataInit, %function 4614FtlL2PDataInit: 4615 @ args = 0, pretend = 0, frame = 0 4616 @ frame_needed = 1, uses_anonymous_args = 0 4617 mov ip, sp 4618 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 4619 sub fp, ip, #4 4620 push {lr} 4621 bl __gnu_mcount_nc 4622 ldr r4, .L575 4623 mov r1, #0 4624 mvn r6, #0 4625 ldr r2, [r4, #328] 4626 ldr r0, [r4, #3360] 4627 lsl r2, r2, #1 4628 bl ftl_memset 4629 movw r3, #310 4630 movw r2, #338 4631 ldr r0, [r4, #3384] 4632 ldrh r3, [r4, r3] 4633 mov r1, #255 4634 ldrh r2, [r4, r2] 4635 mul r2, r2, r3 4636 bl ftl_memset 4637 ldr ip, .L575+4 4638 mov r3, #0 4639 mov r5, r3 4640 sub r7, ip, #28 4641 mov lr, #12 4642.L573: 4643 ldrh r1, [ip] 4644 uxth r2, r3 4645 cmp r1, r2 4646 bhi .L574 4647 ldr r3, .L575+8 4648 ldr r2, [r4, #328] 4649 strh r2, [r3, #10] @ movhi 4650 mvn r2, #0 4651 str r2, [r4, #3392] 4652 ldr r2, .L575+12 4653 strh r2, [r3, #4] @ movhi 4654 movw r2, #3436 4655 ldrh r2, [r4, r2] 4656 strh r2, [r3, #8] @ movhi 4657 sub r2, r3, #3056 4658 ldrh r2, [r2] 4659 strh r2, [r3, #6] @ movhi 4660 ldr r3, [r4, #3356] 4661 str r3, [r4, #3404] 4662 ldr r3, [r4, #3380] 4663 str r3, [r4, #3408] 4664 ldr r3, [r4, #3360] 4665 str r3, [r4, #3412] 4666 ldr r3, [r4, #3376] 4667 str r3, [r4, #3416] 4668 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 4669.L574: 4670 uxth r0, r3 4671 ldr r2, [r4, #2540] 4672 add r3, r3, #1 4673 mul r1, lr, r0 4674 add r8, r2, r1 4675 str r5, [r8, #4] 4676 strh r6, [r2, r1] @ movhi 4677 ldr r2, [r4, #2540] 4678 add r1, r2, r1 4679 ldrh r2, [r7] 4680 mul r2, r0, r2 4681 ldr r0, [r4, #3384] 4682 bic r2, r2, #3 4683 add r2, r0, r2 4684 str r2, [r1, #8] 4685 b .L573 4686.L576: 4687 .align 2 4688.L575: 4689 .word .LANCHOR0 4690 .word .LANCHOR0+338 4691 .word .LANCHOR0+3392 4692 .word -3902 4693 .size FtlL2PDataInit, .-FtlL2PDataInit 4694 .align 2 4695 .global FtlVariablesInit 4696 .syntax unified 4697 .arm 4698 .fpu softvfp 4699 .type FtlVariablesInit, %function 4700FtlVariablesInit: 4701 @ args = 0, pretend = 0, frame = 0 4702 @ frame_needed = 1, uses_anonymous_args = 0 4703 mov ip, sp 4704 push {r4, r5, fp, ip, lr, pc} 4705 sub fp, ip, #4 4706 push {lr} 4707 bl __gnu_mcount_nc 4708 ldr r4, .L578 4709 movw r2, #3438 4710 mvn r3, #0 4711 mov r5, #0 4712 mov r1, r5 4713 strh r3, [r4, r2] @ movhi 4714 str r3, [r4, #3448] 4715 add r3, r4, #344 4716 ldr r0, [r4, #348] 4717 str r5, [r4, #3440] 4718 strh r5, [r3] @ movhi 4719 add r3, r4, #320 4720 str r5, [r4, #3444] 4721 ldrh r2, [r3] 4722 lsl r2, r2, #1 4723 bl ftl_memset 4724 ldrh r2, [r4, #242] 4725 mov r1, r5 4726 ldr r0, [r4, #2536] 4727 lsl r2, r2, #1 4728 bl ftl_memset 4729 ldrh r2, [r4, #242] 4730 mov r1, r5 4731 ldr r0, [r4, #3344] 4732 lsl r2, r2, #1 4733 bl ftl_memset 4734 add r0, r4, #2464 4735 mov r1, r5 4736 mov r2, #48 4737 add r0, r0, #4 4738 bl ftl_memset 4739 mov r1, r5 4740 mov r2, #512 4741 add r0, r4, #2640 4742 bl ftl_memset 4743 bl FtlGcBufInit 4744 bl FtlL2PDataInit 4745 mov r0, r5 4746 ldmfd sp, {r4, r5, fp, sp, pc} 4747.L579: 4748 .align 2 4749.L578: 4750 .word .LANCHOR0 4751 .size FtlVariablesInit, .-FtlVariablesInit 4752 .align 2 4753 .global SupperBlkListInit 4754 .syntax unified 4755 .arm 4756 .fpu softvfp 4757 .type SupperBlkListInit, %function 4758SupperBlkListInit: 4759 @ args = 0, pretend = 0, frame = 16 4760 @ frame_needed = 1, uses_anonymous_args = 0 4761 mov ip, sp 4762 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 4763 sub fp, ip, #4 4764 sub sp, sp, #20 4765 push {lr} 4766 bl __gnu_mcount_nc 4767 ldr r4, .L591 4768 mov r2, #6 4769 mov r5, #0 4770 mov r1, #0 4771 add r10, r4, #2528 4772 mov r9, r5 4773 mov r7, r5 4774 ldrh r3, [r4, #242] 4775 ldr r0, [r4, #2516] 4776 mul r2, r2, r3 4777 bl ftl_memset 4778 str r5, [r4, #2532] 4779 str r5, [r4, #2520] 4780 str r5, [r4, #2524] 4781 strh r5, [r10] @ movhi 4782 strh r5, [r4, #224] @ movhi 4783.L581: 4784 ldrh r3, [r4, #240] 4785 uxth r8, r5 4786 cmp r8, r3 4787 bcs .L588 4788 ldrh r3, [r4, #232] 4789 str r3, [fp, #-52] 4790 ldr r3, .L591+4 4791 ldr r2, .L591+8 4792 ldrh r3, [r3] 4793 str r3, [fp, #-48] 4794 mov r3, #0 4795 mov r6, r3 4796 b .L589 4797.L583: 4798 ldrb r0, [r2], #1 @ zero_extendqisi2 4799 mov r1, r8 4800 str r3, [fp, #-60] 4801 str r2, [fp, #-56] 4802 bl V2P_block 4803 bl FtlBbmIsBadBlock 4804 cmp r0, #0 4805 ldr r3, [fp, #-60] 4806 ldr r2, [fp, #-56] 4807 ldreq r1, [fp, #-48] 4808 add r3, r3, #1 4809 addeq r6, r1, r6 4810 uxtheq r6, r6 4811.L589: 4812 ldr r0, [fp, #-52] 4813 uxth r1, r3 4814 cmp r0, r1 4815 bhi .L583 4816 uxth r3, r5 4817 cmp r6, #0 4818 beq .L584 4819 mov r1, r6 4820 mov r0, #32768 4821 str r3, [fp, #-48] 4822 bl __aeabi_idiv 4823 ldr r3, [fp, #-48] 4824 uxth r6, r0 4825.L585: 4826 ldr r2, [r4, #2516] 4827 mov r1, #6 4828 mla r2, r1, r3, r2 4829 strh r6, [r2, #4] @ movhi 4830 ldrh r2, [r4, #24] 4831 cmp r2, r8 4832 beq .L586 4833 ldrh r2, [r4, #76] 4834 cmp r2, r8 4835 beq .L586 4836 ldrh r2, [r4, #124] 4837 cmp r2, r8 4838 beq .L586 4839 ldr r2, [r4, #72] 4840 lsl r3, r3, #1 4841 ldrh r3, [r2, r3] 4842 cmp r3, #0 4843 bne .L587 4844 add r9, r9, #1 4845 mov r0, r8 4846 uxth r9, r9 4847 bl INSERT_FREE_LIST 4848.L586: 4849 add r5, r5, #1 4850 b .L581 4851.L584: 4852 ldr r1, [r4, #72] 4853 lsl r2, r3, #1 4854 mvn r0, #0 @ movhi 4855 strh r0, [r1, r2] @ movhi 4856 b .L585 4857.L587: 4858 add r7, r7, #1 4859 mov r0, r8 4860 uxth r7, r7 4861 bl INSERT_DATA_LIST 4862 b .L586 4863.L588: 4864 strh r7, [r10] @ movhi 4865 add r7, r7, r9 4866 cmp r7, r3 4867 strh r9, [r4, #224] @ movhi 4868 ble .L590 4869 ldr r1, .L591+12 4870 movw r2, #2219 4871 ldr r0, .L591+16 4872 bl sftl_printk 4873.L590: 4874 mov r0, #0 4875 sub sp, fp, #40 4876 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 4877.L592: 4878 .align 2 4879.L591: 4880 .word .LANCHOR0 4881 .word .LANCHOR0+302 4882 .word .LANCHOR0+260 4883 .word .LANCHOR1+198 4884 .word .LC8 4885 .size SupperBlkListInit, .-SupperBlkListInit 4886 .align 2 4887 .global FtlGcPageVarInit 4888 .syntax unified 4889 .arm 4890 .fpu softvfp 4891 .type FtlGcPageVarInit, %function 4892FtlGcPageVarInit: 4893 @ args = 0, pretend = 0, frame = 0 4894 @ frame_needed = 1, uses_anonymous_args = 0 4895 mov ip, sp 4896 push {r4, r5, fp, ip, lr, pc} 4897 sub fp, ip, #4 4898 push {lr} 4899 bl __gnu_mcount_nc 4900 ldr r4, .L594 4901 movw r2, #3196 4902 mov r3, #0 4903 movw r5, #306 4904 mov r1, #255 4905 strh r3, [r4, r2] @ movhi 4906 movw r2, #3204 4907 ldr r0, [r4, #3192] 4908 strh r3, [r4, r2] @ movhi 4909 ldrh r2, [r4, r5] 4910 lsl r2, r2, #1 4911 bl ftl_memset 4912 ldrh r3, [r4, r5] 4913 mov r2, #12 4914 mov r1, #255 4915 ldr r0, [r4, #3200] 4916 mul r2, r2, r3 4917 bl ftl_memset 4918 bl FtlGcBufInit 4919 ldmfd sp, {r4, r5, fp, sp, pc} 4920.L595: 4921 .align 2 4922.L594: 4923 .word .LANCHOR0 4924 .size FtlGcPageVarInit, .-FtlGcPageVarInit 4925 .align 2 4926 .global FlashGetBadBlockList 4927 .syntax unified 4928 .arm 4929 .fpu softvfp 4930 .type FlashGetBadBlockList, %function 4931FlashGetBadBlockList: 4932 @ args = 0, pretend = 0, frame = 0 4933 @ frame_needed = 1, uses_anonymous_args = 0 4934 mov ip, sp 4935 push {r4, r5, r6, r7, fp, ip, lr, pc} 4936 sub fp, ip, #4 4937 push {lr} 4938 bl __gnu_mcount_nc 4939 ldr r6, .L603 4940 mov r4, r0 4941 mov r5, r1 4942 mov r2, #256 4943 mov r1, #255 4944 bl ftl_memset 4945 mov r1, r5 4946 ldr r3, [r6, #3244] 4947 mov r0, r4 4948 blx r3 4949 uxth r0, r0 4950 cmp r0, #50 4951 bls .L597 4952 mov r0, r4 4953 mov r2, #256 4954 mov r1, #255 4955 bl ftl_memset 4956 mov r0, #0 4957.L597: 4958 ldrh r3, [r6, #14] 4959 cmp r3, #4 4960 moveq r3, r4 4961 addeq r1, r3, r0, lsl #1 4962 ldmfdne sp, {r4, r5, r6, r7, fp, sp, pc} 4963.L599: 4964 cmp r3, r1 4965 ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} 4966 ldrh r2, [r3] 4967 lsr r2, r2, #1 4968 strh r2, [r3], #2 @ movhi 4969 b .L599 4970.L604: 4971 .align 2 4972.L603: 4973 .word .LANCHOR0 4974 .size FlashGetBadBlockList, .-FlashGetBadBlockList 4975 .align 2 4976 .global ftl_memcpy 4977 .syntax unified 4978 .arm 4979 .fpu softvfp 4980 .type ftl_memcpy, %function 4981ftl_memcpy: 4982 @ args = 0, pretend = 0, frame = 0 4983 @ frame_needed = 1, uses_anonymous_args = 0 4984 mov ip, sp 4985 push {fp, ip, lr, pc} 4986 sub fp, ip, #4 4987 push {lr} 4988 bl __gnu_mcount_nc 4989 bl memcpy 4990 ldmfd sp, {fp, sp, pc} 4991 .size ftl_memcpy, .-ftl_memcpy 4992 .section .rodata.str1.1 4993.LC92: 4994 .ascii "FlashReadPages %x %x error_ecc_bits %d\012\000" 4995.LC93: 4996 .ascii "data:\000" 4997.LC94: 4998 .ascii "spare:\000" 4999 .text 5000 .align 2 5001 .global FlashReadPages 5002 .syntax unified 5003 .arm 5004 .fpu softvfp 5005 .type FlashReadPages, %function 5006FlashReadPages: 5007 @ args = 0, pretend = 0, frame = 24 5008 @ frame_needed = 1, uses_anonymous_args = 0 5009 mov ip, sp 5010 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 5011 sub fp, ip, #4 5012 sub sp, sp, #28 5013 push {lr} 5014 bl __gnu_mcount_nc 5015 mov r3, sp 5016 ldr r6, .L647 5017 bic r7, r3, #8128 5018 ldr r10, .L647+4 5019 bic r7, r7, #63 5020 ldr r9, .L647+8 5021 mov r4, r0 5022 str r1, [fp, #-68] 5023 mov r8, #0 5024 ldr r3, [r7, #24] 5025 str r3, [fp, #-48] 5026 ldrh r3, [r6, #12] 5027 str r3, [fp, #-64] 5028.L607: 5029 ldr r3, [fp, #-68] 5030 cmp r8, r3 5031 bne .L620 5032 ldr r2, [fp, #-48] 5033 ldr r3, [r7, #24] 5034 cmp r2, r3 5035 beq .L621 5036 bl __stack_chk_fail 5037.L620: 5038 ldr r3, [r4, #8] 5039 cmp r3, #0 5040 beq .L608 5041 ldr r3, [r4, #12] 5042 cmp r3, #0 5043 bne .L609 5044.L608: 5045 mov r1, r10 5046 mov r0, r9 5047 mov r2, #96 5048 bl sftl_printk 5049.L609: 5050 sub r2, fp, #56 5051 sub r1, fp, #52 5052 mov r0, r4 5053 bl l2p_addr_tran 5054 ldr r0, [fp, #-56] 5055 cmp r0, #3 5056 mvnhi r3, #0 5057 strhi r3, [r4] 5058 bhi .L611 5059 ldr r5, [r4, #8] 5060 uxtb r0, r0 5061 ldr r3, [r4, #12] 5062 tst r5, #63 5063 ldr r1, [fp, #-52] 5064 ldr ip, [r6, #3256] 5065 ldrne r5, [r6, #3320] 5066 mov r2, r5 5067 blx ip 5068 str r0, [r4] 5069 ldrh r3, [r6, #14] 5070 cmp r3, #4 5071 bne .L614 5072 ldr r0, [fp, #-64] 5073 add r2, r5, #2048 5074 ldr r3, [r4, #12] 5075 ldr r1, [fp, #-52] 5076 ldr ip, [r6, #3256] 5077 add r3, r3, #8 5078 add r1, r0, r1 5079 ldrb r0, [fp, #-56] @ zero_extendqisi2 5080 blx ip 5081 cmn r0, #1 5082 beq .L615 5083 ldr r3, [r4, #12] 5084 ldr r2, [r3, #12] 5085 cmn r2, #1 5086 bne .L616 5087 ldr r2, [r3, #8] 5088 cmn r2, #1 5089 bne .L616 5090 ldr r3, [r3] 5091 cmn r3, #1 5092 beq .L616 5093.L615: 5094 mvn r3, #0 5095.L646: 5096 str r3, [r4] 5097.L617: 5098 ldr r3, [r4] 5099 cmn r3, #1 5100 cmpne r3, #256 5101 bne .L614 5102 ldr r1, [r4, #4] 5103 ldr r2, [fp, #-52] 5104 ldr r0, .L647+12 5105 bl sftl_printk 5106 ldr r1, [r4, #8] 5107 cmp r1, #0 5108 beq .L619 5109 mov r3, #4 5110 ldr r0, .L647+16 5111 mov r2, r3 5112 bl rknand_print_hex 5113.L619: 5114 ldr r1, [r4, #12] 5115 cmp r1, #0 5116 beq .L614 5117 mov r3, #4 5118 ldr r0, .L647+20 5119 mov r2, r3 5120 bl rknand_print_hex 5121.L614: 5122 ldr r3, [r6, #3320] 5123 cmp r3, r5 5124 bne .L611 5125 ldr r0, [r4, #8] 5126 cmp r0, r5 5127 beq .L611 5128 ldr r3, .L647+24 5129 mov r1, r5 5130 ldrh r2, [r3] 5131 lsl r2, r2, #9 5132 bl ftl_memcpy 5133.L611: 5134 add r8, r8, #1 5135 add r4, r4, #20 5136 b .L607 5137.L616: 5138 ldr r3, [r4] 5139 sub r0, r0, #256 5140 clz r0, r0 5141 cmn r3, #1 5142 lsr r0, r0, #5 5143 moveq r0, #0 5144 cmp r0, #0 5145 beq .L617 5146 mov r3, #256 5147 b .L646 5148.L621: 5149 mov r0, #0 5150 sub sp, fp, #40 5151 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 5152.L648: 5153 .align 2 5154.L647: 5155 .word .LANCHOR0 5156 .word .LANCHOR1+216 5157 .word .LC8 5158 .word .LC92 5159 .word .LC93 5160 .word .LC94 5161 .word .LANCHOR0+258 5162 .size FlashReadPages, .-FlashReadPages 5163 .align 2 5164 .global FtlLoadFactoryBbt 5165 .syntax unified 5166 .arm 5167 .fpu softvfp 5168 .type FtlLoadFactoryBbt, %function 5169FtlLoadFactoryBbt: 5170 @ args = 0, pretend = 0, frame = 0 5171 @ frame_needed = 1, uses_anonymous_args = 0 5172 mov ip, sp 5173 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 5174 sub fp, ip, #4 5175 push {lr} 5176 bl __gnu_mcount_nc 5177 ldr r5, .L659 5178 mov r6, #0 5179 add r7, r5, #364 5180 sub r9, r7, #66 5181 ldr r3, [r5, #3300] 5182 ldr r8, [r5, #3332] 5183 str r3, [r5, #3460] 5184 str r8, [r5, #3464] 5185.L650: 5186 ldrh r3, [r5, #254] 5187 cmp r3, r6 5188 bhi .L655 5189 mov r0, #0 5190 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 5191.L655: 5192 ldrh r4, [r9] 5193 mvn r3, #0 5194 ldr r10, .L659+4 5195 add r4, r4, r3 5196 strh r3, [r7] @ movhi 5197 uxth r4, r4 5198.L651: 5199 ldrh r3, [r9] 5200 sub r2, r3, #16 5201 cmp r4, r2 5202 ble .L653 5203 mla r3, r6, r3, r4 5204 mov r2, #1 5205 mov r0, r10 5206 mov r1, r2 5207 lsl r3, r3, #10 5208 str r3, [r5, #3456] 5209 bl FlashReadPages 5210 ldr r3, [r5, #3452] 5211 cmn r3, #1 5212 beq .L652 5213 ldrh r2, [r8] 5214 movw r3, #61664 5215 cmp r2, r3 5216 bne .L652 5217 strh r4, [r7] @ movhi 5218.L653: 5219 add r6, r6, #1 5220 add r7, r7, #2 5221 b .L650 5222.L652: 5223 sub r4, r4, #1 5224 uxth r4, r4 5225 b .L651 5226.L660: 5227 .align 2 5228.L659: 5229 .word .LANCHOR0 5230 .word .LANCHOR0+3452 5231 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt 5232 .align 2 5233 .global FtlGetLastWrittenPage 5234 .syntax unified 5235 .arm 5236 .fpu softvfp 5237 .type FtlGetLastWrittenPage, %function 5238FtlGetLastWrittenPage: 5239 @ args = 0, pretend = 0, frame = 88 5240 @ frame_needed = 1, uses_anonymous_args = 0 5241 mov ip, sp 5242 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 5243 sub fp, ip, #4 5244 sub sp, sp, #88 5245 push {lr} 5246 bl __gnu_mcount_nc 5247 mov r3, sp 5248 cmp r1, #1 5249 bic r6, r3, #8128 5250 mov r9, r1 5251 bic r6, r6, #63 5252 movwne r2, #302 5253 lsl r7, r0, #10 5254 ldr r3, [r6, #24] 5255 str r3, [fp, #-40] 5256 ldr r3, .L674 5257 addeq r2, r3, #304 5258 ldrhne r4, [r3, r2] 5259 ldrheq r4, [r2] 5260 mov r2, r1 5261 ldr r3, [r3, #3324] 5262 mov r1, #1 5263 sub r4, r4, #1 5264 str r3, [fp, #-116] 5265 sub r3, fp, #104 5266 str r3, [fp, #-112] 5267 sxth r4, r4 5268 orr r0, r4, r0, lsl #10 5269 str r0, [fp, #-120] 5270 sub r0, fp, #124 5271 bl FlashReadPages 5272 ldr r3, [fp, #-104] 5273 cmn r3, #1 5274 bne .L665 5275 mov r8, #0 5276 b .L664 5277.L668: 5278 add r3, r8, r4 5279 mov r2, r9 5280 sub r0, fp, #124 5281 mov r1, #1 5282 add r3, r3, r3, lsr #31 5283 sbfx r5, r3, #1, #16 5284 orr r3, r7, r3, asr #1 5285 str r3, [fp, #-120] 5286 bl FlashReadPages 5287 ldrd r2, [fp, #-104] 5288 and r3, r3, r2 5289 cmn r3, #1 5290 bne .L666 5291 ldr r3, [fp, #-124] 5292 cmn r3, #1 5293 subne r4, r5, #1 5294 sxthne r4, r4 5295 bne .L664 5296.L666: 5297 add r5, r5, #1 5298 sxth r8, r5 5299.L664: 5300 cmp r8, r4 5301 ble .L668 5302.L665: 5303 ldr r2, [fp, #-40] 5304 ldr r3, [r6, #24] 5305 cmp r2, r3 5306 beq .L669 5307 bl __stack_chk_fail 5308.L669: 5309 mov r0, r4 5310 sub sp, fp, #36 5311 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 5312.L675: 5313 .align 2 5314.L674: 5315 .word .LANCHOR0 5316 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage 5317 .align 2 5318 .global FtlScanSysBlk 5319 .syntax unified 5320 .arm 5321 .fpu softvfp 5322 .type FtlScanSysBlk, %function 5323FtlScanSysBlk: 5324 @ args = 0, pretend = 0, frame = 24 5325 @ frame_needed = 1, uses_anonymous_args = 0 5326 mov ip, sp 5327 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 5328 sub fp, ip, #4 5329 sub sp, sp, #28 5330 push {lr} 5331 bl __gnu_mcount_nc 5332 ldr r4, .L756 5333 movw r3, #3436 5334 mov r5, #0 5335 mov r1, r5 5336 add r6, r4, #320 5337 ldr r2, [r4, #328] 5338 strh r5, [r4, r3] @ movhi 5339 add r3, r4, #344 5340 ldr r0, [r4, #3380] 5341 lsl r2, r2, #2 5342 strh r5, [r3] @ movhi 5343 bl ftl_memset 5344 ldr r2, [r4, #328] 5345 mov r1, r5 5346 ldr r0, [r4, #3356] 5347 lsl r2, r2, #1 5348 bl ftl_memset 5349 ldrh r2, [r6] 5350 mov r1, r5 5351 ldr r0, [r4, #3368] 5352 lsl r2, r2, #2 5353 bl ftl_memset 5354 ldrh r2, [r6] 5355 mov r1, r5 5356 ldr r0, [r4, #348] 5357 lsl r2, r2, #1 5358 bl ftl_memset 5359 add r0, r4, #2624 5360 mov r2, #16 5361 mov r1, #255 5362 bl ftl_memset 5363 ldrh r3, [r4, #240] 5364.L755: 5365 str r3, [fp, #-48] 5366 ldr r2, [fp, #-48] 5367 ldrh r3, [r4, #242] 5368 cmp r3, r2 5369 bls .L716 5370 ldr r5, .L756+4 5371 mov r7, #0 5372 ldrh r6, [r4, #232] 5373 mov r9, #20 5374 ldr r8, [r4, #3288] 5375 ldr r2, [r4, #3176] 5376 ldrh r10, [r5], #-52 5377 ldr r3, [r4, #3180] 5378 add r6, r6, r5 5379 b .L717 5380.L679: 5381 ldr r1, [fp, #-48] 5382 ldrb r0, [r5], #1 @ zero_extendqisi2 5383 str r3, [fp, #-60] 5384 str r2, [fp, #-56] 5385 bl V2P_block 5386 str r0, [fp, #-52] 5387 bl FtlBbmIsBadBlock 5388 ldr r2, [fp, #-56] 5389 cmp r0, #0 5390 ldr r3, [fp, #-60] 5391 bne .L717 5392 mla ip, r9, r7, r8 5393 ldr r1, [fp, #-52] 5394 mul r0, r10, r7 5395 add r7, r7, #1 5396 cmp r0, #0 5397 lsl r1, r1, #10 5398 stmib ip, {r1, r2} 5399 add r1, r0, #3 5400 movge r1, r0 5401 uxth r7, r7 5402 bic r1, r1, #3 5403 add r1, r3, r1 5404 str r1, [ip, #12] 5405.L717: 5406 cmp r6, r5 5407 bne .L679 5408 cmp r7, #0 5409 bne .L680 5410.L715: 5411 ldr r3, [fp, #-48] 5412 add r3, r3, #1 5413 uxth r3, r3 5414 b .L755 5415.L680: 5416 mov r1, r7 5417 mov r0, r8 5418 mov r2, #1 5419 bl FlashReadPages 5420 mov r3, #0 5421 str r3, [fp, #-52] 5422.L714: 5423 ldr r3, [fp, #-52] 5424 mov r8, #20 5425 mul r8, r8, r3 5426 ldr r3, [r4, #3288] 5427 add r2, r3, r8 5428 ldr r3, [r3, r8] 5429 ldr r5, [r2, #4] 5430 ldr r6, [r2, #12] 5431 cmn r3, #1 5432 ubfx r5, r5, #10, #16 5433 bne .L683 5434 mov r9, #16 5435 movw r10, #65535 5436.L685: 5437 ldr r0, [r4, #3288] 5438 mov r2, #1 5439 mov r1, r2 5440 add r0, r0, r8 5441 ldr r3, [r0, #4] 5442 add r3, r3, #1 5443 str r3, [r0, #4] 5444 bl FlashReadPages 5445 ldrh r3, [r6] 5446 cmp r3, r10 5447 ldr r3, [r4, #3288] 5448 bne .L682 5449 mvn r2, #0 5450 str r2, [r3, r8] 5451 ldr r3, [r4, #3288] 5452 ldr r3, [r3, r8] 5453 cmp r3, r2 5454 beq .L684 5455.L683: 5456 ldr r2, [r4, #2588] 5457 ldr r3, [r6, #4] 5458 cmn r2, #1 5459 beq .L732 5460 cmp r2, r3 5461 bhi .L686 5462.L732: 5463 cmn r3, #1 5464 addne r2, r3, #1 5465 strne r2, [r4, #2588] 5466.L686: 5467 ldrh r2, [r6] 5468 movw r1, #61634 5469 cmp r2, r1 5470 beq .L687 5471 bhi .L688 5472 movw r1, #61574 5473 cmp r2, r1 5474 beq .L689 5475 movw r1, #61604 5476 cmp r2, r1 5477 beq .L690 5478.L691: 5479 ldr r3, [fp, #-52] 5480 add r3, r3, #1 5481 str r3, [fp, #-52] 5482 ldrh r3, [fp, #-52] 5483 cmp r7, r3 5484 bhi .L714 5485 b .L715 5486.L682: 5487 ldr r3, [r3, r8] 5488 cmn r3, #1 5489 bne .L683 5490 sub r9, r9, #1 5491 uxth r9, r9 5492 cmp r9, #0 5493 bne .L685 5494.L684: 5495 mov r1, #1 5496 b .L753 5497.L688: 5498 movw r3, #65535 5499 cmp r2, r3 5500 moveq r1, #0 5501 bne .L691 5502.L753: 5503 mov r0, r5 5504 bl FtlFreeSysBlkQueueIn 5505 b .L691 5506.L687: 5507 ldr r8, .L756+8 5508 ldr r3, [r4, #328] 5509 ldrh r2, [r8] 5510 cmp r2, r3 5511 bls .L693 5512 ldr r1, .L756+12 5513 mov r2, #1232 5514 ldr r0, .L756+16 5515 bl sftl_printk 5516.L693: 5517 ldr lr, [r4, #328] 5518 ldrh r1, [r8] 5519 uxth r2, lr 5520 sub r3, r2, #1 5521 sub r2, r2, r1 5522 sub r2, r2, #1 5523 sxth r3, r3 5524 sxth r2, r2 5525 str r2, [fp, #-60] 5526 ldr r2, [r4, #3380] 5527 str r2, [fp, #-56] 5528 mov r2, r3 5529 ldr r0, [fp, #-56] 5530 add r10, r0, #4 5531.L694: 5532 ldr r0, [fp, #-60] 5533 cmp r0, r3 5534 bge .L699 5535 lsl r0, r2, #2 5536 str r0, [fp, #-64] 5537 sub r0, r2, #1 5538 ldr r9, [r6, #4] 5539 ldr ip, [r10, r0, lsl #2] 5540 cmp r9, ip 5541 bls .L695 5542 ldr r0, [fp, #-56] 5543 ldr r0, [r0] 5544 cmp r0, #0 5545 bne .L696 5546 cmp lr, r1 5547 addne r1, r1, #1 5548 strhne r1, [r8] @ movhi 5549.L696: 5550 uxth lr, r3 5551 mov ip, #0 5552.L697: 5553 uxth r8, ip 5554 ldr r0, [r4, #3380] 5555 sxth r1, ip 5556 cmp lr, r8 5557 bhi .L698 5558 ldr ip, [fp, #-64] 5559 lsl r2, r2, #1 5560 ldr r1, [r6, #4] 5561 str r1, [r0, ip] 5562 ldr r1, [r4, #3356] 5563 strh r5, [r1, r2] @ movhi 5564.L699: 5565 cmp r3, #0 5566 blt .L691 5567 ldr r0, .L756+8 5568 ldr r2, [r4, #328] 5569 ldrh r1, [r0] 5570 sub r2, r2, r1 5571 sub r2, r2, #1 5572 sxth r2, r2 5573 cmp r2, r3 5574 blt .L691 5575 ldr r2, [r4, #3380] 5576 add r1, r1, #1 5577 strh r1, [r0] @ movhi 5578 ldr r1, [r6, #4] 5579 str r1, [r2, r3, lsl #2] 5580 lsl r3, r3, #1 5581 ldr r2, [r4, #3356] 5582.L752: 5583 strh r5, [r2, r3] @ movhi 5584 b .L691 5585.L698: 5586 add r1, r1, #1 5587 add ip, ip, #1 5588 ldr r8, [r0, r1, lsl #2] 5589 add r0, r0, r1, lsl #2 5590 lsl r1, r1, #1 5591 str r8, [r0, #-4] 5592 ldr r0, [r4, #3356] 5593 ldrh r1, [r0, r1]! 5594 strh r1, [r0, #-2] @ movhi 5595 b .L697 5596.L695: 5597 sub r3, r3, #1 5598 mov r2, r0 5599 sxth r3, r3 5600 b .L694 5601.L689: 5602 ldr r8, .L756+20 5603 ldrh r2, [r8] 5604 ldrh r3, [r8, #-24] 5605 cmp r2, r3 5606 bls .L703 5607 ldr r1, .L756+12 5608 movw r2, #1273 5609 ldr r0, .L756+16 5610 bl sftl_printk 5611.L703: 5612 ldrh r2, [r8, #-24] 5613 ldrh r1, [r8] 5614 sub r0, r2, #1 5615 ldr ip, [r4, #3368] 5616 sxth r3, r0 5617 sub r0, r0, r1 5618.L704: 5619 cmp r3, r0 5620 ble .L709 5621 ldr r10, [r6, #4] 5622 lsl lr, r3, #2 5623 ldr r9, [ip, r3, lsl #2] 5624 cmp r10, r9 5625 bls .L705 5626 sub r2, r2, r1 5627 ldr r0, [ip] 5628 clz r2, r2 5629 lsr r2, r2, #5 5630 cmp r0, #0 5631 orrne r2, r2, #1 5632 uxth r0, r3 5633 cmp r2, #0 5634 addeq r1, r1, #1 5635 strheq r1, [r8] @ movhi 5636 mov r1, #0 5637.L707: 5638 uxth r8, r1 5639 ldr ip, [r4, #3368] 5640 sxth r2, r1 5641 cmp r0, r8 5642 bhi .L708 5643 ldr r2, [r6, #4] 5644 str r2, [ip, lr] 5645 lsl r2, r3, #1 5646 ldr r1, [r4, #348] 5647 strh r5, [r1, r2] @ movhi 5648.L709: 5649 cmp r3, #0 5650 blt .L691 5651 ldr r0, .L756+20 5652 ldrh r2, [r0, #-24] 5653 ldrh r1, [r0] 5654 sub r2, r2, #1 5655 sub r2, r2, r1 5656 sxth r2, r2 5657 cmp r2, r3 5658 blt .L691 5659 ldr r2, [r4, #3368] 5660 add r1, r1, #1 5661 strh r1, [r0] @ movhi 5662 ldr r1, [r6, #4] 5663 str r1, [r2, r3, lsl #2] 5664 lsl r3, r3, #1 5665 ldr r2, [r4, #348] 5666 b .L752 5667.L708: 5668 add r2, r2, #1 5669 add r1, r1, #1 5670 ldr r8, [ip, r2, lsl #2] 5671 add ip, ip, r2, lsl #2 5672 lsl r2, r2, #1 5673 str r8, [ip, #-4] 5674 ldr ip, [r4, #348] 5675 ldrh r2, [ip, r2]! 5676 strh r2, [ip, #-2] @ movhi 5677 b .L707 5678.L705: 5679 sub r3, r3, #1 5680 sxth r3, r3 5681 b .L704 5682.L690: 5683 ldr r8, .L756+24 5684 movw r2, #65535 5685 ldrh r1, [r8] 5686 cmp r1, r2 5687 strheq r5, [r8] @ movhi 5688 beq .L754 5689 ldrh r0, [r8, #4] 5690 cmp r0, r2 5691 beq .L712 5692 mov r1, #1 5693 bl FtlFreeSysBlkQueueIn 5694.L712: 5695 ldr r3, [r6, #4] 5696 ldr r2, [r4, #2632] 5697 cmp r2, r3 5698 strhcs r5, [r8, #4] @ movhi 5699 bcs .L691 5700 ldrh r3, [r8] 5701 strh r3, [r8, #4] @ movhi 5702 strh r5, [r8] @ movhi 5703 ldr r3, [r6, #4] 5704.L754: 5705 str r3, [r4, #2632] 5706 b .L691 5707.L716: 5708 ldr r1, [r4, #3356] 5709 ldrh r3, [r1] 5710 cmp r3, #0 5711 beq .L718 5712.L721: 5713 ldr r0, [r4, #348] 5714 ldrh r2, [r0] 5715 cmp r2, #0 5716 beq .L719 5717.L720: 5718 movw r3, #3436 5719 ldrh r2, [r4, r3] 5720 ldr r3, [r4, #328] 5721 cmp r2, r3 5722 bls .L750 5723 ldr r1, .L756+12 5724 movw r2, #1398 5725 ldr r0, .L756+16 5726 bl sftl_printk 5727.L750: 5728 mov r0, #0 5729 sub sp, fp, #40 5730 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 5731.L718: 5732 movw r2, #3436 5733 ldrh r2, [r4, r2] 5734 cmp r2, #0 5735 ldrne r0, [r4, #328] 5736 beq .L721 5737.L722: 5738 sxth r2, r3 5739 cmp r2, r0 5740 bcs .L721 5741 lsl ip, r2, #1 5742 add r3, r3, #1 5743 ldrh ip, [r1, ip] 5744 cmp ip, #0 5745 beq .L722 5746 mov r3, r2 5747 mov lr, #0 5748 b .L723 5749.L724: 5750 sub ip, r3, r2 5751 ldr r0, [r4, #3356] 5752 lsl r1, r3, #1 5753 lsl r5, ip, #1 5754 ldrh r6, [r0, r1] 5755 strh r6, [r0, r5] @ movhi 5756 ldr r0, [r4, #3380] 5757 ldr r5, [r0, r3, lsl #2] 5758 add r3, r3, #1 5759 str r5, [r0, ip, lsl #2] 5760 sxth r3, r3 5761 ldr r0, [r4, #3356] 5762 strh lr, [r0, r1] @ movhi 5763.L723: 5764 ldr r1, [r4, #328] 5765 cmp r3, r1 5766 bcc .L724 5767 b .L721 5768.L719: 5769 ldr r1, .L756+20 5770 ldrh r3, [r1] 5771 cmp r3, #0 5772 ldrhne ip, [r1, #-24]! 5773 beq .L720 5774.L728: 5775 sxth r3, r2 5776 mov lr, r3 5777 cmp r3, ip 5778 bge .L720 5779 lsl r5, r3, #1 5780 add r2, r2, #1 5781 ldrh r5, [r0, r5] 5782 cmp r5, #0 5783 beq .L728 5784 mov r5, #0 5785.L729: 5786 ldrh r2, [r1] 5787 cmp r3, r2 5788 bge .L720 5789 sub ip, r3, lr 5790 ldr r0, [r4, #348] 5791 lsl r2, r3, #1 5792 lsl r6, ip, #1 5793 ldrh r7, [r0, r2] 5794 strh r7, [r0, r6] @ movhi 5795 ldr r0, [r4, #3368] 5796 ldr r6, [r0, r3, lsl #2] 5797 add r3, r3, #1 5798 str r6, [r0, ip, lsl #2] 5799 sxth r3, r3 5800 ldr r0, [r4, #348] 5801 strh r5, [r0, r2] @ movhi 5802 b .L729 5803.L757: 5804 .align 2 5805.L756: 5806 .word .LANCHOR0 5807 .word .LANCHOR0+312 5808 .word .LANCHOR0+3436 5809 .word .LANCHOR1+231 5810 .word .LC8 5811 .word .LANCHOR0+344 5812 .word .LANCHOR0+2624 5813 .size FtlScanSysBlk, .-FtlScanSysBlk 5814 .align 2 5815 .global FtlLoadBbt 5816 .syntax unified 5817 .arm 5818 .fpu softvfp 5819 .type FtlLoadBbt, %function 5820FtlLoadBbt: 5821 @ args = 0, pretend = 0, frame = 0 5822 @ frame_needed = 1, uses_anonymous_args = 0 5823 mov ip, sp 5824 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 5825 sub fp, ip, #4 5826 push {lr} 5827 bl __gnu_mcount_nc 5828 ldr r4, .L792 5829 ldr r7, .L792+4 5830 ldr r8, .L792+8 5831 ldr r3, [r4, #3300] 5832 ldr r6, [r4, #3332] 5833 str r3, [r4, #3460] 5834 str r6, [r4, #3464] 5835 bl FtlBbtMemInit 5836 movw r3, #298 5837 ldrh r5, [r4, r3] 5838 sub r5, r5, #1 5839 uxth r5, r5 5840.L759: 5841 ldrh r3, [r7] 5842 sub r3, r3, #16 5843 cmp r5, r3 5844 ble .L764 5845 mov r2, #1 5846 mov r0, r8 5847 mov r1, r2 5848 lsl r3, r5, #10 5849 str r3, [r4, #3456] 5850 bl FlashReadPages 5851 ldr r3, [r4, #3452] 5852 cmn r3, #1 5853 beq .L760 5854.L763: 5855 ldrh r2, [r6] 5856 movw r3, #61649 5857 cmp r2, r3 5858 bne .L762 5859 ldr r2, [r6, #4] 5860 ldr r3, .L792+12 5861 str r2, [r4, #360] 5862 ldrh r2, [r6, #8] 5863 strh r5, [r3] @ movhi 5864 strh r2, [r3, #4] @ movhi 5865.L764: 5866 ldr r5, .L792+12 5867 movw r2, #65535 5868 ldrh r3, [r5] 5869 cmp r3, r2 5870 beq .L778 5871 ldrh r3, [r5, #4] 5872 cmp r3, r2 5873 beq .L768 5874 mov r2, #1 5875 ldr r0, .L792+8 5876 mov r1, r2 5877 lsl r3, r3, #10 5878 str r3, [r4, #3456] 5879 bl FlashReadPages 5880 ldr r3, [r4, #3452] 5881 cmn r3, #1 5882 beq .L768 5883 ldrh r2, [r6] 5884 movw r3, #61649 5885 cmp r2, r3 5886 bne .L768 5887 ldr r3, [r6, #4] 5888 ldr r2, [r4, #360] 5889 cmp r3, r2 5890 bls .L768 5891 str r3, [r4, #360] 5892 ldrh r2, [r5, #4] 5893 ldrh r3, [r6, #8] 5894 strh r2, [r5] @ movhi 5895 strh r3, [r5, #4] @ movhi 5896.L768: 5897 ldrh r0, [r5] 5898 mov r1, #1 5899 ldr r10, .L792+8 5900 bl FtlGetLastWrittenPage 5901 sxth r9, r0 5902 mov r8, r0 5903 add r3, r9, #1 5904 mov r7, #0 5905 strh r3, [r5, #2] @ movhi 5906.L770: 5907 sub r3, r8, r7 5908 tst r3, #32768 5909 beq .L773 5910 ldr r1, .L792+16 5911 mov r2, #251 5912 ldr r0, .L792+20 5913 bl sftl_printk 5914.L772: 5915 ldrh r0, [r6, #12] 5916 ldrh r3, [r6, #10] 5917 strh r3, [r5, #6] @ movhi 5918 movw r3, #65535 5919 cmp r0, r3 5920 beq .L775 5921 ldr r2, [r4, #228] 5922 cmp r0, r2 5923 beq .L775 5924 ldrh r1, [r4, #242] 5925 cmp r0, r1, lsr #2 5926 movcc r3, #1 5927 movcs r3, #0 5928 cmp r2, r1, lsr #2 5929 andcc r3, r3, #1 5930 movcs r3, #0 5931 cmp r3, #0 5932 beq .L775 5933 bl FtlSysBlkNumInit 5934.L775: 5935 ldr r6, .L792+24 5936 mov r5, #0 5937 add r7, r6, #3008 5938.L776: 5939 ldrh r3, [r4, #254] 5940 cmp r3, r5 5941 bhi .L777 5942 mov r0, #0 5943 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 5944.L760: 5945 ldr r3, [r4, #3456] 5946 mov r2, #1 5947 mov r0, r8 5948 mov r1, r2 5949 add r3, r3, #1 5950 str r3, [r4, #3456] 5951 bl FlashReadPages 5952 ldr r3, [r4, #3452] 5953 cmn r3, #1 5954 bne .L763 5955.L762: 5956 sub r5, r5, #1 5957 uxth r5, r5 5958 b .L759 5959.L773: 5960 ldrh r2, [r5] 5961 sub r3, r9, r7 5962 mov r0, r10 5963 orr r3, r3, r2, lsl #10 5964 mov r2, #1 5965 str r3, [r4, #3456] 5966 mov r1, r2 5967 ldr r3, [r4, #3300] 5968 str r3, [r4, #3460] 5969 bl FlashReadPages 5970 ldr r3, [r4, #3452] 5971 cmn r3, #1 5972 beq .L771 5973 ldrh r2, [r6] 5974 movw r3, #61649 5975 cmp r2, r3 5976 beq .L772 5977.L771: 5978 add r7, r7, #1 5979 b .L770 5980.L777: 5981 ldrh r2, [r7] 5982 ldr r3, [r4, #3460] 5983 ldr r0, [r6], #4 5984 mul r1, r5, r2 5985 lsl r2, r2, #2 5986 add r5, r5, #1 5987 add r1, r3, r1, lsl #2 5988 bl ftl_memcpy 5989 b .L776 5990.L778: 5991 mvn r0, #0 5992 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 5993.L793: 5994 .align 2 5995.L792: 5996 .word .LANCHOR0 5997 .word .LANCHOR0+298 5998 .word .LANCHOR0+3452 5999 .word .LANCHOR0+352 6000 .word .LANCHOR1+245 6001 .word .LC8 6002 .word .LANCHOR0+380 6003 .size FtlLoadBbt, .-FtlLoadBbt 6004 .section .rodata.str1.1 6005.LC95: 6006 .ascii "prog read error: = %x\012\000" 6007.LC96: 6008 .ascii "prog read REFRESH: = %x\012\000" 6009.LC97: 6010 .ascii "prog read s error: = %x %x %x %x %x\012\000" 6011.LC98: 6012 .ascii "prog read d error: = %x %x %x %x %x\012\000" 6013 .text 6014 .align 2 6015 .global FlashProgPages 6016 .syntax unified 6017 .arm 6018 .fpu softvfp 6019 .type FlashProgPages, %function 6020FlashProgPages: 6021 @ args = 0, pretend = 0, frame = 48 6022 @ frame_needed = 1, uses_anonymous_args = 0 6023 mov ip, sp 6024 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 6025 sub fp, ip, #4 6026 sub sp, sp, #60 6027 push {lr} 6028 bl __gnu_mcount_nc 6029 mov r3, sp 6030 ldr r6, .L833 6031 bic r3, r3, #8128 6032 mov r7, r0 6033 bic r3, r3, #63 6034 mov r10, r1 6035 mov r4, r0 6036 mov r5, r0 6037 str r2, [fp, #-88] 6038 mov r9, #0 6039 ldr r3, [r3, #24] 6040 str r3, [fp, #-48] 6041 ldrh r3, [r6, #12] 6042 str r3, [fp, #-80] 6043 lsl r3, r3, #3 6044 str r3, [fp, #-84] 6045.L795: 6046 cmp r9, r10 6047 bne .L808 6048 mov r0, #20 6049 ldr r5, .L833+4 6050 ldr r8, .L833+8 6051 mla r7, r0, r9, r7 6052.L809: 6053 cmp r7, r4 6054 beq .L802 6055 ldr r2, [r6, #3320] 6056 mov r3, #0 6057 sub r0, fp, #68 6058 mov r1, #1 6059 str r3, [r2] 6060 ldr r2, [r6, #3328] 6061 str r3, [r2] 6062 ldr r2, [fp, #-88] 6063 ldr r3, [r4, #4] 6064 str r3, [fp, #-64] 6065 ldr r3, [r6, #3320] 6066 str r3, [fp, #-60] 6067 ldr r3, [r6, #3328] 6068 str r3, [fp, #-56] 6069 bl FlashReadPages 6070 ldr r9, [fp, #-68] 6071 cmn r9, #1 6072 bne .L810 6073 ldr r1, [r4, #4] 6074 mov r0, r5 6075 bl sftl_printk 6076 str r9, [r4] 6077.L810: 6078 ldr r9, [fp, #-68] 6079 cmp r9, #256 6080 bne .L811 6081 ldr r1, [r4, #4] 6082 mov r0, r8 6083 bl sftl_printk 6084 str r9, [r4] 6085.L811: 6086 ldr r3, [r4, #12] 6087 cmp r3, #0 6088 beq .L812 6089 ldr r1, .L833 6090 ldr r2, [r3] 6091 ldr r1, [r1, #3328] 6092 ldr r0, [r1] 6093 cmp r2, r0 6094 bne .L813 6095 ldr lr, [r3, #8] 6096 ldr ip, [r1, #8] 6097 cmp lr, ip 6098 beq .L812 6099.L813: 6100 ldr r1, [r1, #4] 6101 strd r0, [sp] 6102 ldr r0, .L833+12 6103 ldr r3, [r3, #4] 6104 ldr r1, [r4, #4] 6105 bl sftl_printk 6106 mvn r3, #0 6107 str r3, [r4] 6108.L812: 6109 ldr r3, [r4, #8] 6110 cmp r3, #0 6111 beq .L814 6112 ldr r1, .L833 6113 ldr r2, [r3] 6114 ldr r1, [r1, #3320] 6115 ldr r0, [r1] 6116 cmp r2, r0 6117 bne .L815 6118 ldr lr, [r3, #2048] 6119 ldr ip, [r1, #2048] 6120 cmp lr, ip 6121 beq .L814 6122.L815: 6123 ldr r1, [r1, #4] 6124 strd r0, [sp] 6125 ldr r0, .L833+16 6126 ldr r3, [r3, #4] 6127 ldr r1, [r4, #4] 6128 bl sftl_printk 6129 mvn r3, #0 6130 str r3, [r4] 6131.L814: 6132 add r4, r4, #20 6133 b .L809 6134.L808: 6135 ldr r3, [r5, #8] 6136 cmp r3, #0 6137 beq .L796 6138 ldr r3, [r5, #12] 6139 cmp r3, #0 6140 bne .L797 6141.L796: 6142 ldr r1, .L833+20 6143 mov r2, #148 6144 ldr r0, .L833+24 6145 bl sftl_printk 6146.L797: 6147 sub r2, fp, #76 6148 sub r1, fp, #72 6149 mov r0, r5 6150 bl l2p_addr_tran 6151 ldr r8, [fp, #-76] 6152 cmp r8, #3 6153 bls .L798 6154.L832: 6155 mvn r3, #0 6156 str r3, [r5] 6157 b .L799 6158.L798: 6159 cmp r8, #0 6160 bne .L800 6161 ldr r3, [fp, #-72] 6162 ldr r2, [fp, #-84] 6163 cmp r2, r3 6164 bls .L800 6165 ldr r6, .L833+20 6166 ldr r5, .L833+28 6167.L801: 6168 ldr r2, [r4, #4] 6169 mvn r3, #0 6170 mov r1, r6 6171 str r3, [r4] 6172 mov r0, r5 6173 add r8, r8, #1 6174 bl sftl_printk 6175 ldr r1, [r4, #8] 6176 ldr r0, .L833+32 6177 mov r3, #16 6178 mov r2, #4 6179 add r4, r4, #20 6180 bl rknand_print_hex 6181 mov r3, #4 6182 ldr r1, [r4, #-8] 6183 mov r2, r3 6184 ldr r0, .L833+36 6185 bl rknand_print_hex 6186 cmp r10, r8 6187 bne .L801 6188 bl dump_stack 6189.L802: 6190 mov r3, sp 6191 ldr r2, [fp, #-48] 6192 bic r3, r3, #8128 6193 bic r3, r3, #63 6194 ldr r3, [r3, #24] 6195 cmp r2, r3 6196 beq .L817 6197 bl __stack_chk_fail 6198.L800: 6199 ldr r1, [r5, #8] 6200 tst r1, #63 6201 moveq r8, r1 6202 beq .L803 6203 ldr r8, [r6, #3320] 6204 cmp r8, r1 6205 beq .L803 6206 ldr r3, .L833+40 6207 mov r0, r8 6208 ldrh r2, [r3] 6209 lsl r2, r2, #9 6210 bl ftl_memcpy 6211.L803: 6212 ldr r3, [r5, #12] 6213 mov r2, r8 6214 ldr r1, [fp, #-72] 6215 ldrb r0, [fp, #-76] @ zero_extendqisi2 6216 ldr ip, [r6, #3252] 6217 blx ip 6218 cmp r0, #0 6219 streq r0, [r5] 6220 mvnne r3, #0 6221 strne r3, [r5] 6222 ldrh r3, [r6, #14] 6223 cmp r3, #4 6224 bne .L799 6225 ldr r0, [fp, #-80] 6226 add r2, r8, #2048 6227 ldr r3, [r5, #12] 6228 ldr r1, [fp, #-72] 6229 ldr ip, [r6, #3252] 6230 add r3, r3, #8 6231 add r1, r0, r1 6232 ldrb r0, [fp, #-76] @ zero_extendqisi2 6233 blx ip 6234 cmp r0, #0 6235 bne .L832 6236.L799: 6237 add r9, r9, #1 6238 add r5, r5, #20 6239 b .L795 6240.L817: 6241 mov r0, #0 6242 sub sp, fp, #40 6243 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 6244.L834: 6245 .align 2 6246.L833: 6247 .word .LANCHOR0 6248 .word .LC95 6249 .word .LC96 6250 .word .LC97 6251 .word .LC98 6252 .word .LANCHOR1+256 6253 .word .LC8 6254 .word .LC86 6255 .word .LC87 6256 .word .LC88 6257 .word .LANCHOR0+258 6258 .size FlashProgPages, .-FlashProgPages 6259 .align 2 6260 .global FtlLowFormatEraseBlock 6261 .syntax unified 6262 .arm 6263 .fpu softvfp 6264 .type FtlLowFormatEraseBlock, %function 6265FtlLowFormatEraseBlock: 6266 @ args = 0, pretend = 0, frame = 16 6267 @ frame_needed = 1, uses_anonymous_args = 0 6268 mov ip, sp 6269 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 6270 sub fp, ip, #4 6271 sub sp, sp, #20 6272 push {lr} 6273 bl __gnu_mcount_nc 6274 ldr r4, .L877 6275 mov r9, #0 6276 mov r6, r9 6277 mov r5, r9 6278 add r10, r4, #312 6279 strd r0, [fp, #-52] 6280 mov r8, #20 6281 str r0, [r4, #3284] 6282.L836: 6283 ldrh r1, [r4, #232] 6284 uxth r2, r9 6285 cmp r1, r2 6286 bhi .L840 6287 cmp r6, #0 6288 beq .L835 6289 mov r7, #0 6290 mov r8, #20 6291 ldr r0, [r4, #3268] 6292 mov r2, r6 6293 mov r1, #0 6294 bl FlashEraseBlocks 6295.L844: 6296 mul r3, r8, r7 6297 ldr r2, [r4, #3268] 6298 add r1, r2, r3 6299 ldr r3, [r2, r3] 6300 cmn r3, #1 6301 bne .L843 6302 ldr r0, [r1, #4] 6303 add r5, r5, #1 6304 uxth r5, r5 6305 ubfx r0, r0, #10, #16 6306 bl FtlBbmMapBadBlock 6307.L843: 6308 add r7, r7, #1 6309 uxth r3, r7 6310 cmp r6, r3 6311 bhi .L844 6312.L845: 6313 ldr r3, [fp, #-48] 6314 mov r9, #0 6315 cmp r3, #0 6316 moveq r3, #2 6317 movne r8, #1 6318 ldrne r3, .L877+4 6319 ldreq r8, [fp, #-48] 6320 streq r3, [fp, #-56] 6321 ldrhne r3, [r3] 6322 strne r3, [fp, #-56] 6323.L853: 6324 mov r10, #0 6325 mov r6, r10 6326.L846: 6327 ldrh r1, [r4, #232] 6328 uxth r2, r10 6329 cmp r1, r2 6330 bhi .L849 6331 cmp r6, #0 6332 beq .L835 6333 mov r7, #0 6334 mov r10, #20 6335 ldr r0, [r4, #3268] 6336 mov r2, r8 6337 mov r1, r6 6338 mov r3, #1 6339 bl FlashProgPages 6340.L852: 6341 mul r3, r10, r7 6342 ldr r2, [r4, #3268] 6343 add r1, r2, r3 6344 ldr r3, [r2, r3] 6345 cmp r3, #0 6346 beq .L851 6347 ldr r0, [r1, #4] 6348 add r5, r5, #1 6349 uxth r5, r5 6350 ubfx r0, r0, #10, #16 6351 bl FtlBbmMapBadBlock 6352.L851: 6353 add r7, r7, #1 6354 uxth r3, r7 6355 cmp r6, r3 6356 bhi .L852 6357 add r9, r9, #1 6358 ldr r2, [fp, #-56] 6359 uxth r3, r9 6360 cmp r2, r3 6361 bhi .L853 6362 mov r7, #0 6363 mov r9, #20 6364.L855: 6365 ldr r3, [fp, #-48] 6366 cmp r3, #0 6367 beq .L854 6368 mul r3, r9, r7 6369 ldr r2, [r4, #3268] 6370 add r1, r2, r3 6371 ldr r3, [r2, r3] 6372 cmp r3, #0 6373 bne .L854 6374 ldr r0, [r1, #4] 6375 mov r1, #1 6376 ubfx r0, r0, #10, #16 6377 bl FtlFreeSysBlkQueueIn 6378.L854: 6379 add r7, r7, #1 6380 uxth r3, r7 6381 cmp r6, r3 6382 bhi .L855 6383 ldr r3, [fp, #-48] 6384 subs r1, r3, #0 6385 ldr r3, [fp, #-52] 6386 movne r1, #1 6387 cmp r3, #63 6388 orrls r1, r1, #1 6389 cmp r1, #0 6390 beq .L835 6391 ldr r0, [r4, #3268] 6392 mov r2, r6 6393 mov r1, r8 6394 bl FlashEraseBlocks 6395.L835: 6396 mov r0, r5 6397 sub sp, fp, #40 6398 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 6399.L840: 6400 uxth r2, r9 6401 ldr r0, [r4, #3268] 6402 mov r3, #0 6403 mul r1, r8, r2 6404 add r2, r4, r2 6405 str r3, [r0, r1] 6406 ldr r1, [fp, #-52] 6407 ldrb r0, [r2, #260] @ zero_extendqisi2 6408 bl V2P_block 6409 ldr r3, [fp, #-48] 6410 mov r7, r0 6411 cmp r3, #0 6412 beq .L837 6413 bl IsBlkInVendorPart 6414 cmp r0, #0 6415 bne .L838 6416.L837: 6417 mov r0, r7 6418 bl FtlBbmIsBadBlock 6419 cmp r0, #0 6420 addne r5, r5, #1 6421 uxthne r5, r5 6422 bne .L838 6423 ldr r2, [r4, #3268] 6424 lsl r7, r7, #10 6425 ldrh r0, [r10] 6426 ldr r1, [r4, #3316] 6427 mla r2, r8, r6, r2 6428 mul r0, r6, r0 6429 add r6, r6, #1 6430 cmp r0, #0 6431 uxth r6, r6 6432 str r1, [r2, #8] 6433 add r1, r0, #3 6434 movge r1, r0 6435 ldr r0, [r4, #3336] 6436 bic r1, r1, #3 6437 str r7, [r2, #4] 6438 add r1, r0, r1 6439 str r1, [r2, #12] 6440.L838: 6441 add r9, r9, #1 6442 b .L836 6443.L849: 6444 uxth r2, r10 6445 mov r3, #20 6446 ldr r0, [r4, #3268] 6447 mul r1, r3, r2 6448 add r2, r4, r2 6449 mov r3, #0 6450 str r3, [r0, r1] 6451 ldr r1, [fp, #-52] 6452 ldrb r0, [r2, #260] @ zero_extendqisi2 6453 bl V2P_block 6454 ldr r3, [fp, #-48] 6455 mov r7, r0 6456 cmp r3, #0 6457 beq .L847 6458 bl IsBlkInVendorPart 6459 cmp r0, #0 6460 bne .L848 6461.L847: 6462 mov r0, r7 6463 bl FtlBbmIsBadBlock 6464 cmp r0, #0 6465 bne .L848 6466 ldr r2, [r4, #3268] 6467 mov r3, #20 6468 ldr r1, [r4, #3312] 6469 add r7, r9, r7, lsl #10 6470 mla r2, r3, r6, r2 6471 ldr r3, .L877+8 6472 ldrh r0, [r3] 6473 str r1, [r2, #8] 6474 str r7, [r2, #4] 6475 mul r0, r6, r0 6476 add r6, r6, #1 6477 cmp r0, #0 6478 add r1, r0, #3 6479 movge r1, r0 6480 ldr r0, [r4, #3316] 6481 bic r1, r1, #3 6482 uxth r6, r6 6483 add r1, r0, r1 6484 str r1, [r2, #12] 6485.L848: 6486 add r10, r10, #1 6487 b .L846 6488.L878: 6489 .align 2 6490.L877: 6491 .word .LANCHOR0 6492 .word .LANCHOR0+304 6493 .word .LANCHOR0+312 6494 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock 6495 .align 2 6496 .global FlashTestBlk 6497 .syntax unified 6498 .arm 6499 .fpu softvfp 6500 .type FlashTestBlk, %function 6501FlashTestBlk: 6502 @ args = 0, pretend = 0, frame = 88 6503 @ frame_needed = 1, uses_anonymous_args = 0 6504 mov ip, sp 6505 push {r4, r5, r6, fp, ip, lr, pc} 6506 sub fp, ip, #4 6507 sub sp, sp, #92 6508 push {lr} 6509 bl __gnu_mcount_nc 6510 mov r3, sp 6511 cmp r0, #11 6512 bic r6, r3, #8128 6513 mov r4, r0 6514 bic r6, r6, #63 6515 movls r5, #0 6516 ldr r3, [r6, #24] 6517 str r3, [fp, #-32] 6518 bls .L879 6519 ldr r5, .L885 6520 sub r0, fp, #96 6521 mov r2, #32 6522 mov r1, #165 6523 str r0, [fp, #-104] 6524 lsl r4, r4, #10 6525 ldr r3, [r5, #3324] 6526 str r3, [fp, #-108] 6527 bl ftl_memset 6528 ldr r0, [r5, #3324] 6529 mov r2, #8 6530 mov r1, #90 6531 bl ftl_memset 6532 mov r2, #1 6533 sub r0, fp, #116 6534 mov r1, r2 6535 str r4, [fp, #-112] 6536 bl FlashEraseBlocks 6537 mov r3, #1 6538 sub r0, fp, #116 6539 mov r2, r3 6540 mov r1, r3 6541 bl FlashProgPages 6542 ldr r3, [fp, #-116] 6543 cmp r3, #0 6544 mvnne r5, #0 6545 bne .L881 6546 add r3, r4, #1 6547 sub r0, fp, #116 6548 str r3, [fp, #-112] 6549 mov r3, #1 6550 mov r2, r3 6551 mov r1, r3 6552 bl FlashProgPages 6553 ldr r5, [fp, #-116] 6554 subs r5, r5, #0 6555 movne r5, #1 6556 rsb r5, r5, #0 6557.L881: 6558 sub r0, fp, #116 6559 mov r2, #1 6560 mov r1, #0 6561 str r4, [fp, #-112] 6562 bl FlashEraseBlocks 6563.L879: 6564 ldr r2, [fp, #-32] 6565 ldr r3, [r6, #24] 6566 cmp r2, r3 6567 beq .L882 6568 bl __stack_chk_fail 6569.L882: 6570 mov r0, r5 6571 sub sp, fp, #24 6572 ldmfd sp, {r4, r5, r6, fp, sp, pc} 6573.L886: 6574 .align 2 6575.L885: 6576 .word .LANCHOR0 6577 .size FlashTestBlk, .-FlashTestBlk 6578 .section .rodata.str1.1 6579.LC99: 6580 .ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000" 6581.LC100: 6582 .ascii "FtlBbmTblFlush error:%x\012\000" 6583.LC101: 6584 .ascii "FtlBbmTblFlush error = %x error count = %d\012\000" 6585 .text 6586 .align 2 6587 .global FtlBbmTblFlush 6588 .syntax unified 6589 .arm 6590 .fpu softvfp 6591 .type FtlBbmTblFlush, %function 6592FtlBbmTblFlush: 6593 @ args = 0, pretend = 0, frame = 0 6594 @ frame_needed = 1, uses_anonymous_args = 0 6595 mov ip, sp 6596 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 6597 sub fp, ip, #4 6598 sub sp, sp, #12 6599 push {lr} 6600 bl __gnu_mcount_nc 6601 ldr r4, .L895 6602 mov r5, #0 6603 mov r1, #0 6604 add r6, r4, #380 6605 add r7, r6, #3008 6606 ldr r3, [r4, #3332] 6607 str r3, [r4, #3464] 6608 movw r3, #310 6609 ldr r0, [r4, #3300] 6610 ldrh r2, [r4, r3] 6611 str r0, [r4, #3460] 6612 bl ftl_memset 6613.L888: 6614 ldrh r3, [r4, #254] 6615 cmp r3, r5 6616 bgt .L889 6617 ldr r6, [r4, #3464] 6618 mov r2, #16 6619 ldr r5, .L895+4 6620 mov r1, #255 6621 mov r0, r6 6622 mov r7, #0 6623 bl ftl_memset 6624 ldr r3, .L895+8 6625 strh r3, [r6] @ movhi 6626 mov r9, r5 6627 mov r8, r7 6628 ldr r3, [r4, #360] 6629 str r3, [r6, #4] 6630 ldrh r3, [r9], #-48 6631 strh r3, [r6, #2] @ movhi 6632 ldr r3, [r4, #356] 6633 str r3, [r6, #8] 6634 ldr r3, [r4, #228] 6635 strh r3, [r6, #12] @ movhi 6636 ldr r3, [r4, #2604] 6637 strh r3, [r6, #14] @ movhi 6638.L890: 6639 ldr r3, [r4, #3300] 6640 mov r10, #0 6641 ldrh r2, [r5, #2] 6642 ldrh r1, [r5] 6643 str r3, [r4, #3460] 6644 ldr r3, [r4, #3332] 6645 str r3, [r4, #3464] 6646 orr r3, r2, r1, lsl #10 6647 str r3, [r4, #3456] 6648 ldrh r3, [r6, #10] 6649 str r3, [sp] 6650 ldr r0, .L895+12 6651 ldrh r3, [r5, #4] 6652 str r10, [r4, #3452] 6653 bl sftl_printk 6654 ldrh r3, [r9] 6655 ldrh r2, [r5, #2] 6656 sub r3, r3, #1 6657 cmp r2, r3 6658 blt .L891 6659 ldr r3, [r4, #360] 6660 ldr r0, [r4, #3268] 6661 add r3, r3, #1 6662 str r3, [r4, #360] 6663 str r3, [r6, #4] 6664 ldrh r2, [r5] 6665 ldrh r3, [r5, #4] 6666 strh r2, [r6, #8] @ movhi 6667 strh r2, [r5, #4] @ movhi 6668 mov r2, #1 6669 strh r3, [r5] @ movhi 6670 mov r1, r2 6671 lsl r3, r3, #10 6672 str r3, [r4, #3456] 6673 str r3, [r0, #4] 6674 strh r10, [r5, #2] @ movhi 6675 bl FlashEraseBlocks 6676.L891: 6677 mov r3, #1 6678 ldr r0, .L895+16 6679 mov r2, r3 6680 mov r1, r3 6681 bl FlashProgPages 6682 ldrh r3, [r5, #2] 6683 ldr r0, [r4, #3452] 6684 add r3, r3, #1 6685 strh r3, [r5, #2] @ movhi 6686 cmn r0, #1 6687 bne .L892 6688 add r7, r7, #1 6689 ldr r1, [r4, #3456] 6690 ldr r0, .L895+20 6691 uxth r7, r7 6692 bl sftl_printk 6693 cmp r7, #3 6694 bls .L890 6695 ldr r1, [r4, #3456] 6696 mov r2, r7 6697 ldr r0, .L895+24 6698 bl sftl_printk 6699.L894: 6700 b .L894 6701.L889: 6702 ldrh r2, [r7] 6703 ldr r3, [r4, #3460] 6704 ldr r1, [r6], #4 6705 mul r0, r5, r2 6706 lsl r2, r2, #2 6707 add r5, r5, #1 6708 add r0, r3, r0, lsl #2 6709 bl ftl_memcpy 6710 b .L888 6711.L892: 6712 add r8, r8, #1 6713 cmp r0, #256 6714 cmpne r8, #1 6715 movle r0, #1 6716 movgt r0, #0 6717 ble .L890 6718 sub sp, fp, #40 6719 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 6720.L896: 6721 .align 2 6722.L895: 6723 .word .LANCHOR0 6724 .word .LANCHOR0+352 6725 .word -3887 6726 .word .LC99 6727 .word .LANCHOR0+3452 6728 .word .LC100 6729 .word .LC101 6730 .size FtlBbmTblFlush, .-FtlBbmTblFlush 6731 .align 2 6732 .global allocate_data_superblock 6733 .syntax unified 6734 .arm 6735 .fpu softvfp 6736 .type allocate_data_superblock, %function 6737allocate_data_superblock: 6738 @ args = 0, pretend = 0, frame = 8 6739 @ frame_needed = 1, uses_anonymous_args = 0 6740 mov ip, sp 6741 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 6742 sub fp, ip, #4 6743 sub sp, sp, #12 6744 push {lr} 6745 bl __gnu_mcount_nc 6746 ldr r4, .L929 6747 mov r5, r0 6748.L898: 6749 ldr r2, .L929+4 6750 ldrh r3, [r4, #224] 6751 ldrh r2, [r2] 6752 add r3, r3, r2 6753 ldrh r2, [r4, #240] 6754 cmp r3, r2 6755 ble .L899 6756 ldr r1, .L929+8 6757 movw r2, #2667 6758 ldr r0, .L929+12 6759 bl sftl_printk 6760.L899: 6761 ldr r3, .L929+16 6762 cmp r5, r3 6763 movne r1, #0 6764 bne .L900 6765 ldrh r3, [r4, #224] 6766 ldr r1, [r4, #3164] 6767 mul r2, r1, r3 6768 lsr r1, r3, #1 6769 movw r3, #65535 6770 add r1, r1, r2, lsr #2 6771 uxth r1, r1 6772 cmp r1, r3 6773 moveq r1, #0 6774.L900: 6775 ldr r0, .L929+20 6776 bl List_pop_index_node 6777 ldrh r3, [r4, #224] 6778 mov r6, r0 6779 uxth r8, r0 6780 cmp r3, #0 6781 bne .L901 6782 ldr r1, .L929+8 6783 movw r2, #2676 6784 ldr r0, .L929+12 6785 bl sftl_printk 6786.L901: 6787 ldrh r3, [r4, #224] 6788 sub r3, r3, #1 6789 strh r3, [r4, #224] @ movhi 6790 ldrh r3, [r4, #240] 6791 cmp r3, r8 6792 bls .L898 6793 uxth r6, r6 6794 ldr r3, [r4, #72] 6795 lsl r6, r6, #1 6796 ldrh r7, [r3, r6] 6797 cmp r7, #0 6798 bne .L898 6799 mov r0, r5 6800 strh r8, [r5] @ movhi 6801 bl make_superblock 6802 ldrb r3, [r5, #7] @ zero_extendqisi2 6803 cmp r3, #0 6804 bne .L903 6805 ldr r3, [r4, #72] 6806 mvn r2, #0 6807 mov r0, r8 6808 strh r2, [r3, r6] @ movhi 6809 bl INSERT_DATA_LIST 6810 ldr r2, .L929+4 6811 ldrh r3, [r4, #224] 6812 ldrh r2, [r2] 6813 add r3, r3, r2 6814 ldrh r2, [r4, #240] 6815 cmp r3, r2 6816 ble .L898 6817 ldr r1, .L929+8 6818 movw r2, #2690 6819 ldr r0, .L929+12 6820 bl sftl_printk 6821 b .L898 6822.L903: 6823 ldr r2, .L929+4 6824 ldrh r3, [r4, #224] 6825 ldrh r2, [r2] 6826 add r3, r3, r2 6827 ldrh r2, [r4, #240] 6828 cmp r3, r2 6829 ble .L905 6830 ldr r1, .L929+8 6831 movw r2, #2693 6832 ldr r0, .L929+12 6833 bl sftl_printk 6834.L905: 6835 ldr r0, [r4, #3268] 6836 add r10, r5, #16 6837 ldrh r3, [r4, #232] 6838 mov r9, r10 6839 str r3, [fp, #-48] 6840 mov r2, r0 6841 mov r3, #0 6842 mov ip, r3 6843.L906: 6844 ldr lr, [fp, #-48] 6845 uxth r1, r3 6846 cmp lr, r1 6847 bhi .L908 6848 cmp r7, #0 6849 bne .L909 6850 ldr r1, .L929+8 6851 mov r2, #2704 6852 ldr r0, .L929+12 6853 bl sftl_printk 6854.L909: 6855 ldrh r3, [r4, #172] 6856 cmp r3, r8 6857 bne .L910 6858 ldr r1, .L929+8 6859 movw r2, #2706 6860 ldr r0, .L929+12 6861 bl sftl_printk 6862.L910: 6863 ldr r1, [r4, #2536] 6864 ldrb r2, [r5, #8] @ zero_extendqisi2 6865 ldrh r3, [r1, r6] 6866 cmp r2, #0 6867 ldr r2, .L929+24 6868 bne .L911 6869 cmp r3, #0 6870 moveq r3, #2 6871 ldrhne r0, [r2] 6872 addne r3, r3, r0 6873 uxthne r3, r3 6874 strh r3, [r1, r6] @ movhi 6875 ldr r3, [r4, #2596] 6876 add r3, r3, #1 6877 str r3, [r4, #2596] 6878.L913: 6879 ldr r3, [r4, #2536] 6880 ldr r1, [r4, #2612] 6881 ldrh r2, [r2] 6882 ldrh r3, [r3, r6] 6883 ldr r0, [r4, #2596] 6884 cmp r3, r1 6885 strhi r3, [r4, #2612] 6886 ldr r3, [r4, #2600] 6887 ldrh r1, [r4, #240] 6888 mla r0, r0, r2, r3 6889 bl __aeabi_uidiv 6890 ldr r2, [r4, #3348] 6891 str r0, [r4, #2604] 6892 ldr r0, [r4, #3268] 6893 ldr r3, [r2, #16] 6894 ldr ip, .L929+28 6895 add r3, r3, #1 6896 str r3, [r2, #16] 6897 add r3, r0, #4 6898 mov r2, #0 6899.L915: 6900 uxth r1, r2 6901 add r3, r3, #20 6902 cmp r7, r1 6903 bhi .L916 6904 ldrb r1, [r5, #8] @ zero_extendqisi2 6905 mov r2, r7 6906 bl FlashEraseBlocks 6907 mov r9, #0 6908 mov r3, r9 6909 mov r1, #20 6910.L917: 6911 uxth r2, r9 6912 cmp r7, r2 6913 bhi .L919 6914 cmp r3, #0 6915 ble .L920 6916 mov r0, r8 6917 bl update_multiplier_value 6918 bl FtlBbmTblFlush 6919.L920: 6920 ldrb r2, [r5, #7] @ zero_extendqisi2 6921 cmp r2, #0 6922 bne .L921 6923 ldr r3, [r4, #72] 6924 mvn r2, #0 6925 strh r2, [r3, r6] @ movhi 6926 b .L898 6927.L908: 6928 str ip, [r2, #8] 6929 movw lr, #65535 6930 str ip, [r2, #12] 6931 ldrh r1, [r9], #2 6932 cmp r1, lr 6933 beq .L907 6934 mov lr, #20 6935 lsl r1, r1, #10 6936 mla lr, lr, r7, r0 6937 add r7, r7, #1 6938 uxth r7, r7 6939 str r1, [lr, #4] 6940.L907: 6941 add r3, r3, #1 6942 add r2, r2, #20 6943 b .L906 6944.L911: 6945 add r3, r3, #1 6946 strh r3, [r1, r6] @ movhi 6947 ldr r3, [r4, #2600] 6948 add r3, r3, #1 6949 str r3, [r4, #2600] 6950 b .L913 6951.L916: 6952 ldr r1, [r3, #-20] 6953 add r2, r2, #1 6954 and r1, r1, ip 6955 str r1, [r3, #-20] 6956 b .L915 6957.L919: 6958 mul r2, r1, r9 6959 ldr r0, [r4, #3268] 6960 add ip, r0, r2 6961 ldr r2, [r0, r2] 6962 cmn r2, #1 6963 bne .L918 6964 ldr r0, [ip, #4] 6965 add r3, r3, #1 6966 str r2, [fp, #-52] 6967 str r3, [fp, #-48] 6968 ubfx r0, r0, #10, #16 6969 bl FtlBbmMapBadBlock 6970 ldr r2, [fp, #-52] 6971 strh r2, [r10] @ movhi 6972 mov r1, #20 6973 ldr r3, [fp, #-48] 6974 ldrb r2, [r5, #7] @ zero_extendqisi2 6975 sub r2, r2, #1 6976 strb r2, [r5, #7] 6977.L918: 6978 add r9, r9, #1 6979 add r10, r10, #2 6980 b .L917 6981.L921: 6982 movw r3, #302 6983 ldrh r3, [r4, r3] 6984 strh r8, [r5] @ movhi 6985 smulbb r3, r3, r2 6986 mov r2, #0 6987 strh r2, [r5, #2] @ movhi 6988 strb r2, [r5, #6] 6989 ldr r2, [r4, #2588] 6990 uxth r3, r3 6991 str r2, [r5, #12] 6992 add r2, r2, #1 6993 str r2, [r4, #2588] 6994 ldr r1, [r4, #72] 6995 ldrh r2, [r5] 6996 strh r3, [r5, #4] @ movhi 6997 lsl r2, r2, #1 6998 strh r3, [r1, r2] @ movhi 6999 ldrh r3, [r5, #4] 7000 cmp r3, #0 7001 beq .L922 7002 ldrb r3, [r5, #7] @ zero_extendqisi2 7003 cmp r3, #0 7004 bne .L923 7005.L922: 7006 ldr r1, .L929+8 7007 movw r2, #2759 7008 ldr r0, .L929+12 7009 bl sftl_printk 7010.L923: 7011 mov r0, #0 7012 sub sp, fp, #40 7013 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 7014.L930: 7015 .align 2 7016.L929: 7017 .word .LANCHOR0 7018 .word .LANCHOR0+2528 7019 .word .LANCHOR1+271 7020 .word .LC8 7021 .word .LANCHOR0+124 7022 .word .LANCHOR0+2532 7023 .word .LANCHOR0+292 7024 .word -1024 7025 .size allocate_data_superblock, .-allocate_data_superblock 7026 .section .rodata.str1.1 7027.LC102: 7028 .ascii "FtlGcFreeBadSuperBlk 0x%x\012\000" 7029 .text 7030 .align 2 7031 .global FtlGcFreeBadSuperBlk 7032 .syntax unified 7033 .arm 7034 .fpu softvfp 7035 .type FtlGcFreeBadSuperBlk, %function 7036FtlGcFreeBadSuperBlk: 7037 @ args = 0, pretend = 0, frame = 16 7038 @ frame_needed = 1, uses_anonymous_args = 0 7039 mov ip, sp 7040 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 7041 sub fp, ip, #4 7042 sub sp, sp, #20 7043 push {lr} 7044 bl __gnu_mcount_nc 7045 ldr r9, .L939 7046 movw r3, #3206 7047 str r0, [fp, #-48] 7048 ldrh r3, [r9, r3] 7049 cmp r3, #0 7050 bne .L938 7051.L933: 7052 mov r0, #0 7053 sub sp, fp, #40 7054 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 7055.L937: 7056 uxtah r3, r9, r7 7057 ldr r1, [fp, #-48] 7058 mov r8, #0 7059 ldrb r0, [r3, #260] @ zero_extendqisi2 7060 bl V2P_block 7061 mov r4, r0 7062.L934: 7063 ldr r3, .L939+4 7064 uxth r2, r8 7065 ldrh r1, [r3] 7066 cmp r1, r2 7067 bhi .L936 7068 add r7, r7, #1 7069.L932: 7070 ldrh r2, [r9, #232] 7071 uxth r3, r7 7072 cmp r2, r3 7073 bhi .L937 7074 bl FtlGcReFreshBadBlk 7075 b .L933 7076.L936: 7077 uxth r6, r8 7078 lsl r1, r6, #1 7079 add r3, r10, r6, lsl #1 7080 ldrh r1, [r10, r1] 7081 cmp r1, r4 7082 bne .L935 7083 mov r1, r4 7084 ldr r0, .L939+8 7085 str r3, [fp, #-56] 7086 str r2, [fp, #-52] 7087 bl sftl_printk 7088 mov r0, r4 7089 bl FtlBbmMapBadBlock 7090 bl FtlBbmTblFlush 7091 ldr r3, .L939+4 7092 ldr r2, [fp, #-52] 7093 add r1, r6, #1 7094 add r1, r10, r1, lsl #1 7095 ldrh r5, [r3] 7096 ldr r3, [fp, #-56] 7097 sub r0, r5, r2 7098 cmp r2, r5 7099 sub r5, r5, #1 7100 uxth r0, r0 7101 movhi r2, #0 7102 lslls r2, r0, #1 7103 mov r0, r3 7104 bl memmove 7105 ldr r3, .L939+4 7106 strh r5, [r3] @ movhi 7107.L935: 7108 add r8, r8, #1 7109 b .L934 7110.L938: 7111 ldr r10, .L939+12 7112 mov r7, #0 7113 b .L932 7114.L940: 7115 .align 2 7116.L939: 7117 .word .LANCHOR0 7118 .word .LANCHOR0+3206 7119 .word .LC102 7120 .word .LANCHOR0+3208 7121 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk 7122 .align 2 7123 .global update_vpc_list 7124 .syntax unified 7125 .arm 7126 .fpu softvfp 7127 .type update_vpc_list, %function 7128update_vpc_list: 7129 @ args = 0, pretend = 0, frame = 0 7130 @ frame_needed = 1, uses_anonymous_args = 0 7131 mov ip, sp 7132 push {r4, r5, r6, r7, fp, ip, lr, pc} 7133 sub fp, ip, #4 7134 push {lr} 7135 bl __gnu_mcount_nc 7136 ldr r4, .L953 7137 lsl r3, r0, #1 7138 mov r5, r0 7139 ldr r2, [r4, #72] 7140 ldrh r3, [r2, r3] 7141 cmp r3, #0 7142 bne .L942 7143 ldrh r3, [r4, #222] 7144 cmp r3, r0 7145 mvneq r3, #0 7146 strheq r3, [r4, #222] @ movhi 7147 ldrh r3, [r4, #220] 7148 cmp r3, r0 7149 mvneq r3, #0 7150 strheq r3, [r4, #220] @ movhi 7151 ldrh r3, [r4, #172] 7152 cmp r3, r0 7153 mvneq r3, #0 7154 strheq r3, [r4, #172] @ movhi 7155 beq .L946 7156 ldrh r3, [r4, #24] 7157 cmp r3, r0 7158 beq .L951 7159 ldrh r3, [r4, #76] 7160 cmp r3, r0 7161 beq .L951 7162 ldrh r3, [r4, #124] 7163 cmp r3, r0 7164 beq .L951 7165.L946: 7166 ldr r6, .L953+4 7167 mov r1, r5 7168 ldr r0, .L953+8 7169 bl List_remove_node 7170 ldrh r3, [r6] 7171 cmp r3, #0 7172 bne .L948 7173 ldr r1, .L953+12 7174 movw r2, #2835 7175 ldr r0, .L953+16 7176 bl sftl_printk 7177.L948: 7178 ldrh r3, [r6] 7179 mov r0, r5 7180 sub r3, r3, #1 7181 strh r3, [r6] @ movhi 7182 bl free_data_superblock 7183 mov r0, r5 7184 bl FtlGcFreeBadSuperBlk 7185 ldrh r2, [r6] 7186 ldrh r3, [r4, #224] 7187 add r3, r3, r2 7188 ldrh r2, [r4, #240] 7189 cmp r3, r2 7190 ble .L952 7191 ldr r1, .L953+12 7192 movw r2, #2838 7193 ldr r0, .L953+16 7194 bl sftl_printk 7195.L952: 7196 mov r0, #1 7197 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 7198.L942: 7199 bl List_update_data_list 7200.L951: 7201 mov r0, #0 7202 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 7203.L954: 7204 .align 2 7205.L953: 7206 .word .LANCHOR0 7207 .word .LANCHOR0+2528 7208 .word .LANCHOR0+2520 7209 .word .LANCHOR1+296 7210 .word .LC8 7211 .size update_vpc_list, .-update_vpc_list 7212 .section .rodata.str1.1 7213.LC103: 7214 .ascii "decrement_vpc_count %x = %d\012\000" 7215 .text 7216 .align 2 7217 .global decrement_vpc_count 7218 .syntax unified 7219 .arm 7220 .fpu softvfp 7221 .type decrement_vpc_count, %function 7222decrement_vpc_count: 7223 @ args = 0, pretend = 0, frame = 0 7224 @ frame_needed = 1, uses_anonymous_args = 0 7225 mov ip, sp 7226 push {r4, r5, r6, r7, fp, ip, lr, pc} 7227 sub fp, ip, #4 7228 push {lr} 7229 bl __gnu_mcount_nc 7230 movw r3, #65535 7231 ldr r6, .L967 7232 mov r5, r0 7233 cmp r0, r3 7234 beq .L956 7235 ldr r3, [r6, #72] 7236 lsl r4, r0, #1 7237 ldrh r2, [r3, r4] 7238 cmp r2, #0 7239 subne r2, r2, #1 7240 strhne r2, [r3, r4] @ movhi 7241 bne .L956 7242 mov r1, r0 7243 ldr r0, .L967+4 7244 bl sftl_printk 7245 ldr r3, [r6, #72] 7246 ldrh r4, [r3, r4] 7247 cmp r4, #0 7248 beq .L958 7249.L965: 7250 mov r4, #0 7251.L955: 7252 mov r0, r4 7253 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 7254.L958: 7255 movw r2, #2853 7256.L966: 7257 ldr r1, .L967+8 7258 ldr r0, .L967+12 7259 bl sftl_printk 7260 b .L955 7261.L956: 7262 movw r7, #3438 7263 movw r3, #65535 7264 ldrh r0, [r6, r7] 7265 cmp r0, r3 7266 strheq r5, [r6, r7] @ movhi 7267 beq .L965 7268.L960: 7269 cmp r0, r5 7270 beq .L965 7271 bl update_vpc_list 7272 ldr r2, [r6, #2516] 7273 ldr r3, [r6, #2520] 7274 subs r4, r0, #0 7275 ldr r1, [r6, #72] 7276 sub r3, r3, r2 7277 ldr r2, .L967+16 7278 strh r5, [r6, r7] @ movhi 7279 movne r4, #1 7280 asr r3, r3, #1 7281 mul r3, r2, r3 7282 uxth r2, r3 7283 uxth r3, r3 7284 cmp r3, r5 7285 lsl r2, r2, #1 7286 ldrh r2, [r1, r2] 7287 clz r2, r2 7288 lsr r2, r2, #5 7289 moveq r2, #0 7290 cmp r2, #0 7291 beq .L955 7292 movw r2, #2869 7293 b .L966 7294.L968: 7295 .align 2 7296.L967: 7297 .word .LANCHOR0 7298 .word .LC103 7299 .word .LANCHOR1+312 7300 .word .LC8 7301 .word -1431655765 7302 .size decrement_vpc_count, .-decrement_vpc_count 7303 .align 2 7304 .global FtlSuperblockPowerLostFix 7305 .syntax unified 7306 .arm 7307 .fpu softvfp 7308 .type FtlSuperblockPowerLostFix, %function 7309FtlSuperblockPowerLostFix: 7310 @ args = 0, pretend = 0, frame = 24 7311 @ frame_needed = 1, uses_anonymous_args = 0 7312 mov ip, sp 7313 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 7314 sub fp, ip, #4 7315 sub sp, sp, #24 7316 push {lr} 7317 bl __gnu_mcount_nc 7318 ldr r5, .L981 7319 mov r3, sp 7320 bic r8, r3, #8128 7321 mov r4, r0 7322 bic r8, r8, #63 7323 mvn r0, #2 7324 mvn r1, #1 7325 mov r9, #0 7326 ldr r7, [r5, #3332] 7327 movw r2, #61589 7328 ldr r3, [r8, #24] 7329 str r3, [fp, #-40] 7330 mvn r3, #0 7331 str r3, [fp, #-44] 7332 ldr r3, [r5, #3300] 7333 str r3, [fp, #-52] 7334 str r7, [fp, #-48] 7335 strd r0, [r7, #8] 7336 ldrh r3, [r4] 7337 strh r3, [r7, #2] @ movhi 7338 strh r9, [r7] @ movhi 7339 ldr r3, [r5, #3300] 7340 str r2, [r3] 7341 ldr r2, .L981+4 7342 ldr r3, [r5, #3300] 7343 str r2, [r3, #4] 7344 ldrh r6, [r4, #4] 7345 and r6, r6, #1 7346 add r6, r6, #6 7347.L970: 7348 ldrh r3, [r4, #4] 7349 cmp r6, #0 7350 beq .L972 7351 cmp r3, #0 7352 bne .L971 7353.L972: 7354 ldrh r3, [r4] 7355 ldr r1, [r5, #72] 7356 ldrh r0, [r4, #4] 7357 lsl r3, r3, #1 7358 ldrh r2, [r1, r3] 7359 sub r2, r2, r0 7360 strh r2, [r1, r3] @ movhi 7361 movw r3, #302 7362 ldr r2, [fp, #-40] 7363 ldrh r3, [r5, r3] 7364 strh r3, [r4, #2] @ movhi 7365 mov r3, #0 7366 strb r3, [r4, #6] 7367 strh r3, [r4, #4] @ movhi 7368 ldr r3, [r8, #24] 7369 cmp r2, r3 7370 beq .L976 7371 bl __stack_chk_fail 7372.L971: 7373 mov r0, r4 7374 bl get_new_active_ppa 7375 cmn r0, #1 7376 str r0, [fp, #-56] 7377 beq .L972 7378 ldr r3, [r5, #2592] 7379 mov r1, #1 7380 str r3, [r7, #4] 7381 sub r0, fp, #60 7382 cmn r3, #2 7383 add r2, r3, #1 7384 movne r3, r2 7385 moveq r3, r9 7386 str r3, [r5, #2592] 7387 mov r3, #0 7388 mov r2, r3 7389 sub r6, r6, #1 7390 bl FlashProgPages 7391 ldrh r0, [r4] 7392 bl decrement_vpc_count 7393 b .L970 7394.L976: 7395 sub sp, fp, #36 7396 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 7397.L982: 7398 .align 2 7399.L981: 7400 .word .LANCHOR0 7401 .word 305419896 7402 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix 7403 .align 2 7404 .global FtlMakeBbt 7405 .syntax unified 7406 .arm 7407 .fpu softvfp 7408 .type FtlMakeBbt, %function 7409FtlMakeBbt: 7410 @ args = 0, pretend = 0, frame = 8 7411 @ frame_needed = 1, uses_anonymous_args = 0 7412 mov ip, sp 7413 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 7414 sub fp, ip, #4 7415 sub sp, sp, #12 7416 push {lr} 7417 bl __gnu_mcount_nc 7418 ldr r8, .L1002 7419 mov r7, #0 7420 bl FtlBbtMemInit 7421 sub r9, r8, #16 7422 sub r4, r8, #380 7423 bl FtlLoadFactoryBbt 7424.L984: 7425 ldrh r3, [r4, #254] 7426 cmp r3, r7 7427 bhi .L990 7428 ldr r6, .L1002+4 7429 mov r5, #0 7430.L991: 7431 ldrh r3, [r6] 7432 uxth r0, r5 7433 cmp r3, r0 7434 bhi .L992 7435 ldr r5, .L1002+8 7436 movw r7, #65535 7437 ldrh r6, [r5, #12] 7438 sub r6, r6, #1 7439 uxth r6, r6 7440.L993: 7441 ldrh r3, [r5, #12] 7442 sub r3, r3, #48 7443 cmp r6, r3 7444 ble .L997 7445 mov r0, r6 7446 bl FtlBbmIsBadBlock 7447 cmp r0, #1 7448 beq .L994 7449 mov r0, r6 7450 bl FlashTestBlk 7451 cmp r0, #0 7452 beq .L995 7453 mov r0, r6 7454 bl FtlBbmMapBadBlock 7455.L994: 7456 sub r6, r6, #1 7457 uxth r6, r6 7458 b .L993 7459.L990: 7460 ldrh r5, [r9] 7461 ldr r3, [r4, #3332] 7462 ldr r0, [r4, #3300] 7463 str r3, [fp, #-48] 7464 str r3, [r4, #3464] 7465 movw r3, #65535 7466 ldr r10, .L1002+12 7467 cmp r5, r3 7468 str r0, [r4, #3460] 7469 beq .L985 7470 ldrh r3, [r10] 7471 mov r2, #1 7472 ldr r0, .L1002+16 7473 mov r1, r2 7474 mla r5, r7, r3, r5 7475 lsl r3, r5, #10 7476 str r3, [r4, #3456] 7477 bl FlashReadPages 7478 ldrh r2, [r10] 7479 ldr r1, [r4, #3460] 7480 add r2, r2, #7 7481 ldr r0, [r8] 7482 lsr r2, r2, #3 7483 bl ftl_memcpy 7484.L986: 7485 uxth r0, r5 7486 add r7, r7, #1 7487 add r8, r8, #4 7488 add r9, r9, #2 7489 bl FtlBbmMapBadBlock 7490 b .L984 7491.L985: 7492 mov r1, r7 7493 bl FlashGetBadBlockList 7494 ldr r1, [r8] 7495 ldr r0, [r4, #3460] 7496 bl FtlBbt2Bitmap 7497 ldrh r6, [r10] 7498.L988: 7499 sub r6, r6, #1 7500 uxth r6, r6 7501.L987: 7502 ldrh r0, [r10] 7503 smlabb r0, r0, r7, r6 7504 uxth r0, r0 7505 bl FtlBbmIsBadBlock 7506 cmp r0, #1 7507 beq .L988 7508 mov r2, #16 7509 mov r1, #0 7510 ldr r0, [r4, #3332] 7511 strh r6, [r9] @ movhi 7512 bl ftl_memset 7513 mov r2, #4096 7514 mov r1, #0 7515 ldr r0, [r4, #3300] 7516 bl ftl_memset 7517 ldr r2, [fp, #-48] 7518 ldr r3, .L1002+20 7519 strh r3, [r2] @ movhi 7520 mov r3, #0 7521 str r3, [r2, #4] 7522 ldrh r3, [r10] 7523 ldrh r5, [r9] 7524 strh r5, [r2, #2] @ movhi 7525 ldr r1, [r8] 7526 mla r5, r7, r3, r5 7527 ldr r0, [r4, #3460] 7528 lsl r3, r5, #10 7529 str r3, [r4, #3456] 7530 ldr r3, .L1002+24 7531 ldrh r2, [r3] 7532 lsl r2, r2, #2 7533 bl ftl_memcpy 7534 mov r2, #1 7535 ldr r0, .L1002+16 7536 mov r1, r2 7537 bl FlashEraseBlocks 7538 mov r3, #1 7539 ldr r0, .L1002+16 7540 mov r2, r3 7541 mov r1, r3 7542 bl FlashProgPages 7543 ldr r3, [r4, #3452] 7544 uxth r0, r5 7545 cmn r3, #1 7546 bne .L986 7547 bl FtlBbmMapBadBlock 7548 b .L987 7549.L992: 7550 add r5, r5, #1 7551 bl FtlBbmMapBadBlock 7552 b .L991 7553.L995: 7554 ldrh r3, [r5] 7555 cmp r3, r7 7556 strheq r6, [r5] @ movhi 7557 beq .L994 7558.L996: 7559 strh r6, [r5, #4] @ movhi 7560.L997: 7561 ldr r0, [r4, #3268] 7562 mov r6, #0 7563 ldrh r3, [r5] 7564 mov r1, #1 7565 str r6, [r4, #360] 7566 mov r2, #2 7567 strh r6, [r5, #2] @ movhi 7568 lsl r3, r3, #10 7569 str r3, [r0, #4] 7570 ldrh r3, [r5, #4] 7571 lsl r3, r3, #10 7572 str r3, [r0, #24] 7573 bl FlashEraseBlocks 7574 ldrh r0, [r5] 7575 bl FtlBbmMapBadBlock 7576 ldrh r0, [r5, #4] 7577 bl FtlBbmMapBadBlock 7578 bl FtlBbmTblFlush 7579 ldr r3, [r4, #360] 7580 ldrh r2, [r5, #4] 7581 add r3, r3, #1 7582 str r3, [r4, #360] 7583 ldrh r3, [r5] 7584 strh r6, [r5, #2] @ movhi 7585 strh r2, [r5] @ movhi 7586 strh r3, [r5, #4] @ movhi 7587 bl FtlBbmTblFlush 7588 mov r0, r6 7589 sub sp, fp, #40 7590 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 7591.L1003: 7592 .align 2 7593.L1002: 7594 .word .LANCHOR0+380 7595 .word .LANCHOR0+314 7596 .word .LANCHOR0+352 7597 .word .LANCHOR0+298 7598 .word .LANCHOR0+3452 7599 .word -3872 7600 .word .LANCHOR0+3388 7601 .size FtlMakeBbt, .-FtlMakeBbt 7602 .align 2 7603 .global ftl_memcmp 7604 .syntax unified 7605 .arm 7606 .fpu softvfp 7607 .type ftl_memcmp, %function 7608ftl_memcmp: 7609 @ args = 0, pretend = 0, frame = 0 7610 @ frame_needed = 1, uses_anonymous_args = 0 7611 mov ip, sp 7612 push {fp, ip, lr, pc} 7613 sub fp, ip, #4 7614 push {lr} 7615 bl __gnu_mcount_nc 7616 bl memcmp 7617 ldmfd sp, {fp, sp, pc} 7618 .size ftl_memcmp, .-ftl_memcmp 7619 .align 2 7620 .global js_hash 7621 .syntax unified 7622 .arm 7623 .fpu softvfp 7624 .type js_hash, %function 7625js_hash: 7626 @ args = 0, pretend = 0, frame = 0 7627 @ frame_needed = 1, uses_anonymous_args = 0 7628 mov ip, sp 7629 push {fp, ip, lr, pc} 7630 sub fp, ip, #4 7631 push {lr} 7632 bl __gnu_mcount_nc 7633 mov r3, r0 7634 add r1, r0, r1 7635 ldr r0, .L1009 7636.L1006: 7637 cmp r3, r1 7638 ldmfdeq sp, {fp, sp, pc} 7639 lsr r2, r0, #2 7640 ldrb ip, [r3], #1 @ zero_extendqisi2 7641 add r2, r2, r0, lsl #5 7642 add r2, r2, ip 7643 eor r0, r0, r2 7644 b .L1006 7645.L1010: 7646 .align 2 7647.L1009: 7648 .word 1204201446 7649 .size js_hash, .-js_hash 7650 .section .rodata.str1.1 7651.LC104: 7652 .ascii "FtlMapWritePage error = %x \012\000" 7653.LC105: 7654 .ascii "FtlMapWritePage error = %x error count = %d\012\000" 7655 .text 7656 .align 2 7657 .global FtlMapWritePage 7658 .syntax unified 7659 .arm 7660 .fpu softvfp 7661 .type FtlMapWritePage, %function 7662FtlMapWritePage: 7663 @ args = 0, pretend = 0, frame = 8 7664 @ frame_needed = 1, uses_anonymous_args = 0 7665 mov ip, sp 7666 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 7667 sub fp, ip, #4 7668 sub sp, sp, #12 7669 push {lr} 7670 bl __gnu_mcount_nc 7671 ldr r5, .L1035 7672 mov r4, r0 7673 mov r7, r1 7674 mov r8, r2 7675 lsl r10, r1, #2 7676 add r9, r5, #304 7677 mov r6, #0 7678.L1012: 7679 ldr r3, [r5, #2572] 7680 add r3, r3, #1 7681 str r3, [r5, #2572] 7682 ldrh r3, [r9] 7683 ldrh r2, [r4, #2] 7684 sub r3, r3, #1 7685 cmp r2, r3 7686 bge .L1013 7687 ldrh r2, [r4] 7688 movw r3, #65535 7689 cmp r2, r3 7690 bne .L1014 7691.L1013: 7692 mov r0, r4 7693 bl Ftl_write_map_blk_to_last_page 7694.L1014: 7695 ldrh r3, [r4] 7696 ldr r2, [r4, #12] 7697 lsl r3, r3, #1 7698 ldrh r3, [r2, r3] 7699 cmp r3, #0 7700 bne .L1015 7701 ldr r1, .L1035+4 7702 mov r2, #700 7703 ldr r0, .L1035+8 7704 bl sftl_printk 7705.L1015: 7706 ldrh r2, [r4] 7707 ldrh r3, [r4, #10] 7708 cmp r2, r3 7709 bcc .L1016 7710 ldr r1, .L1035+4 7711 movw r2, #701 7712 ldr r0, .L1035+8 7713 bl sftl_printk 7714.L1016: 7715 ldrh r3, [r4] 7716 mov r1, #0 7717 ldr r2, [r4, #12] 7718 ldr r0, [r5, #3332] 7719 lsl r3, r3, #1 7720 ldrh r3, [r2, r3] 7721 ldrh r2, [r4, #2] 7722 str r3, [fp, #-48] 7723 str r8, [r5, #3460] 7724 orr r2, r2, r3, lsl #10 7725 str r2, [r5, #3456] 7726 mov r2, #16 7727 str r0, [r5, #3464] 7728 bl ftl_memset 7729 ldr r2, [r5, #3464] 7730 ldr r1, [r4, #28] 7731 ldr r3, [fp, #-48] 7732 str r1, [r2, #4] 7733 strh r7, [r2, #8] @ movhi 7734 str r2, [fp, #-48] 7735 ldrh r1, [r4, #4] 7736 strh r3, [r2, #2] @ movhi 7737 ldr r3, .L1035+12 7738 strh r1, [r2] @ movhi 7739 ldr r0, [r5, #3460] 7740 ldrh r1, [r3] 7741 bl js_hash 7742 ldr r2, [fp, #-48] 7743 mov r3, #1 7744 mov r1, r3 7745 str r0, [r2, #12] 7746 mov r2, r3 7747 ldr r0, .L1035+16 7748 bl FlashProgPages 7749 ldrh r3, [r4, #2] 7750 add r3, r3, #1 7751 strh r3, [r4, #2] @ movhi 7752 ldr r3, [r5, #3452] 7753 cmn r3, #1 7754 bne .L1017 7755 ldr r1, [r5, #3456] 7756 add r6, r6, #1 7757 ldr r0, .L1035+20 7758 bl sftl_printk 7759 ldrh r3, [r4, #2] 7760 uxth r6, r6 7761 cmp r3, #2 7762 ldrhls r3, [r9] 7763 subls r3, r3, #1 7764 strhls r3, [r4, #2] @ movhi 7765 cmp r6, #3 7766 bls .L1019 7767 ldr r1, [r5, #3456] 7768 mov r2, r6 7769 ldr r0, .L1035+24 7770 bl sftl_printk 7771.L1020: 7772 b .L1020 7773.L1019: 7774 ldr r3, [r4, #32] 7775 cmp r3, #0 7776 beq .L1012 7777.L1022: 7778 b .L1022 7779.L1017: 7780 ldr r3, [r4, #24] 7781 ldr r2, [r5, #3456] 7782 str r2, [r3, r10] 7783 ldrh r3, [r4, #2] 7784 cmp r3, #1 7785 beq .L1023 7786 ldr r3, [r5, #3452] 7787 cmp r3, #256 7788 beq .L1023 7789 ldr r2, [r4, #36] 7790 cmp r2, #0 7791 beq .L1024 7792.L1023: 7793 mov r3, #0 7794 str r3, [r4, #36] 7795 b .L1012 7796.L1024: 7797 cmn r3, #1 7798 bne .L1025 7799 ldr r1, .L1035+4 7800 movw r2, #745 7801 ldr r0, .L1035+8 7802 bl sftl_printk 7803.L1025: 7804 mov r0, #0 7805 sub sp, fp, #40 7806 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 7807.L1036: 7808 .align 2 7809.L1035: 7810 .word .LANCHOR0 7811 .word .LANCHOR1+332 7812 .word .LC8 7813 .word .LANCHOR0+310 7814 .word .LANCHOR0+3452 7815 .word .LC104 7816 .word .LC105 7817 .size FtlMapWritePage, .-FtlMapWritePage 7818 .section .rodata.str1.1 7819.LC106: 7820 .ascii "region_id = %x phyAddr = %x\012\000" 7821.LC107: 7822 .ascii "map_ppn:\000" 7823.LC108: 7824 .ascii "load_l2p_region refresh = %x phyAddr = %x\012\000" 7825 .text 7826 .align 2 7827 .global load_l2p_region 7828 .syntax unified 7829 .arm 7830 .fpu softvfp 7831 .type load_l2p_region, %function 7832load_l2p_region: 7833 @ args = 0, pretend = 0, frame = 0 7834 @ frame_needed = 1, uses_anonymous_args = 0 7835 mov ip, sp 7836 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 7837 sub fp, ip, #4 7838 push {lr} 7839 bl __gnu_mcount_nc 7840 ldr r9, .L1046 7841 mov r5, r0 7842 mov r6, r1 7843 ldrh r3, [r9] 7844 cmp r3, r0 7845 bcs .L1038 7846 ldr r1, .L1046+4 7847 movw r2, #485 7848 ldr r0, .L1046+8 7849 bl sftl_printk 7850.L1038: 7851 ldr r4, .L1046+12 7852 mov r1, #12 7853 mul r6, r1, r6 7854 ldr r3, [r4, #3376] 7855 ldr r7, [r3, r5, lsl #2] 7856 ldr r3, [r4, #2540] 7857 cmp r7, #0 7858 add r3, r3, r6 7859 ldr r0, [r3, #8] 7860 bne .L1039 7861 movw r3, #310 7862 mov r1, #255 7863 ldrh r2, [r4, r3] 7864 bl ftl_memset 7865 ldr r3, [r4, #2540] 7866 strh r5, [r3, r6] @ movhi 7867 ldr r1, [r4, #2540] 7868 add r6, r1, r6 7869 str r7, [r6, #4] 7870.L1040: 7871 mov r0, #0 7872 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 7873.L1039: 7874 ldr r3, [r4, #3332] 7875 mov r2, #1 7876 str r0, [r4, #3460] 7877 mov r1, r2 7878 ldr r0, .L1046+16 7879 str r3, [r4, #3464] 7880 str r7, [r4, #3456] 7881 bl FlashReadPages 7882 ldr r8, [r4, #3464] 7883 ldrh r3, [r8, #8] 7884 cmp r3, r5 7885 beq .L1041 7886 ldr r0, .L1046+20 7887 mov r2, r7 7888 mov r1, r5 7889 bl sftl_printk 7890 mov r3, #4 7891 ldr r1, [r4, #3464] 7892 mov r2, r3 7893 ldr r0, .L1046+24 7894 bl rknand_print_hex 7895 ldrh r3, [r9] 7896 ldr r1, [r4, #3376] 7897 mov r2, #4 7898 ldr r0, .L1046+28 7899 bl rknand_print_hex 7900.L1042: 7901 ldrh r3, [r8, #8] 7902 cmp r3, r5 7903 beq .L1044 7904 ldr r1, .L1046+4 7905 mov r2, #508 7906 ldr r0, .L1046+8 7907 bl sftl_printk 7908.L1044: 7909 ldr r3, [r4, #2540] 7910 mov r1, #0 7911 add r2, r3, r6 7912 str r1, [r2, #4] 7913 strh r5, [r3, r6] @ movhi 7914 b .L1040 7915.L1041: 7916 ldr r3, [r4, #3452] 7917 cmp r3, #256 7918 bne .L1044 7919 mov r2, r7 7920 mov r1, r5 7921 ldr r0, .L1046+32 7922 bl sftl_printk 7923 ldr r3, [r4, #2540] 7924 mov r1, r5 7925 add r0, r4, #3392 7926 add r3, r3, r6 7927 ldr r2, [r3, #8] 7928 bl FtlMapWritePage 7929 b .L1042 7930.L1047: 7931 .align 2 7932.L1046: 7933 .word .LANCHOR0+336 7934 .word .LANCHOR1+348 7935 .word .LC8 7936 .word .LANCHOR0 7937 .word .LANCHOR0+3452 7938 .word .LC106 7939 .word .LC94 7940 .word .LC107 7941 .word .LC108 7942 .size load_l2p_region, .-load_l2p_region 7943 .align 2 7944 .global ftl_map_blk_gc 7945 .syntax unified 7946 .arm 7947 .fpu softvfp 7948 .type ftl_map_blk_gc, %function 7949ftl_map_blk_gc: 7950 @ args = 0, pretend = 0, frame = 8 7951 @ frame_needed = 1, uses_anonymous_args = 0 7952 mov ip, sp 7953 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 7954 sub fp, ip, #4 7955 sub sp, sp, #12 7956 push {lr} 7957 bl __gnu_mcount_nc 7958 mov r4, r0 7959 ldr r5, [r0, #12] 7960 ldr r10, [r0, #24] 7961 bl ftl_free_no_use_map_blk 7962 ldrh r3, [r4, #10] 7963 ldrh r2, [r4, #8] 7964 sub r3, r3, #5 7965 cmp r2, r3 7966 blt .L1049 7967 uxth r0, r0 7968 lsl r0, r0, #1 7969 ldrh r9, [r5, r0] 7970 cmp r9, #0 7971 beq .L1049 7972 ldr r6, [r4, #32] 7973 cmp r6, #0 7974 bne .L1049 7975 mov r3, #1 7976 str r3, [r4, #32] 7977 strh r6, [r5, r0] @ movhi 7978 ldrh r3, [r4, #8] 7979 ldrh r2, [r4, #2] 7980 sub r3, r3, #1 7981 strh r3, [r4, #8] @ movhi 7982 ldr r3, .L1064 7983 ldrh r3, [r3] 7984 cmp r2, r3 7985 bcc .L1050 7986 mov r0, r4 7987 bl ftl_map_blk_alloc_new_blk 7988.L1050: 7989 ldr r5, .L1064+4 7990.L1051: 7991 ldrh r2, [r4, #6] 7992 uxth r3, r6 7993 cmp r2, r3 7994 bhi .L1058 7995 mov r0, r9 7996 mov r1, #1 7997 bl FtlFreeSysBlkQueueIn 7998 mov r3, #0 7999 str r3, [r4, #32] 8000.L1049: 8001 ldr r3, .L1064 8002 ldrh r2, [r4, #2] 8003 ldrh r3, [r3] 8004 cmp r2, r3 8005 bcc .L1059 8006 mov r0, r4 8007 bl ftl_map_blk_alloc_new_blk 8008.L1059: 8009 mov r0, #0 8010 sub sp, fp, #40 8011 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 8012.L1058: 8013 uxth r7, r6 8014 add r2, r10, r7, lsl #2 8015 str r2, [fp, #-48] 8016 ldr r2, [r10, r7, lsl #2] 8017 cmp r9, r2, lsr #10 8018 bne .L1052 8019 ldr r2, [r5, #3304] 8020 ldr r8, [r5, #3332] 8021 str r2, [r5, #3460] 8022 str r8, [r5, #3464] 8023 ldr r0, .L1064+8 8024 ldr r2, [r10, r7, lsl #2] 8025 str r2, [r5, #3456] 8026 mov r2, #1 8027 mov r1, r2 8028 str r3, [fp, #-52] 8029 bl FlashReadPages 8030 ldrh r2, [r8, #8] 8031 ldr r3, [fp, #-52] 8032 cmp r2, r3 8033 beq .L1053 8034 ldr r1, .L1064+12 8035 movw r2, #611 8036 ldr r0, .L1064+16 8037 bl sftl_printk 8038 ldr r3, [fp, #-52] 8039.L1053: 8040 ldr r2, [r5, #3452] 8041 cmn r2, #1 8042 bne .L1054 8043.L1056: 8044 ldr r2, [fp, #-48] 8045 mov r3, #0 8046 str r3, [r2] 8047.L1055: 8048 b .L1055 8049.L1054: 8050 ldrh r2, [r8, #8] 8051 cmp r2, r3 8052 bne .L1056 8053 ldrh r2, [r8] 8054 ldrh r3, [r4, #4] 8055 cmp r2, r3 8056 bne .L1056 8057 ldr r2, [r5, #3460] 8058 mov r1, r7 8059 mov r0, r4 8060 bl FtlMapWritePage 8061.L1052: 8062 add r6, r6, #1 8063 b .L1051 8064.L1065: 8065 .align 2 8066.L1064: 8067 .word .LANCHOR0+304 8068 .word .LANCHOR0 8069 .word .LANCHOR0+3452 8070 .word .LANCHOR1+364 8071 .word .LC8 8072 .size ftl_map_blk_gc, .-ftl_map_blk_gc 8073 .align 2 8074 .global Ftl_write_map_blk_to_last_page 8075 .syntax unified 8076 .arm 8077 .fpu softvfp 8078 .type Ftl_write_map_blk_to_last_page, %function 8079Ftl_write_map_blk_to_last_page: 8080 @ args = 0, pretend = 0, frame = 0 8081 @ frame_needed = 1, uses_anonymous_args = 0 8082 mov ip, sp 8083 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 8084 sub fp, ip, #4 8085 push {lr} 8086 bl __gnu_mcount_nc 8087 ldrh r3, [r0] 8088 movw r2, #65535 8089 ldr r5, [r0, #12] 8090 mov r4, r0 8091 cmp r3, r2 8092 bne .L1067 8093 ldrh r3, [r0, #8] 8094 cmp r3, #0 8095 beq .L1068 8096 ldr r1, .L1076 8097 movw r2, #641 8098 ldr r0, .L1076+4 8099 bl sftl_printk 8100.L1068: 8101 ldrh r3, [r4, #8] 8102 add r3, r3, #1 8103 strh r3, [r4, #8] @ movhi 8104 bl FtlFreeSysBlkQueueOut 8105 strh r0, [r5] @ movhi 8106 mov r3, #0 8107 str r3, [r4] 8108 ldr r3, [r4, #28] 8109 add r3, r3, #1 8110 str r3, [r4, #28] 8111.L1069: 8112 mov r0, #0 8113 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 8114.L1067: 8115 lsl r3, r3, #1 8116 ldr r7, [r0, #24] 8117 mov r1, #255 8118 ldrh r8, [r5, r3] 8119 ldr r5, .L1076+8 8120 ldrh r3, [r0, #2] 8121 ldr r6, [r5, #3332] 8122 orr r3, r3, r8, lsl #10 8123 str r3, [r5, #3456] 8124 ldr r3, [r5, #3300] 8125 str r3, [r5, #3460] 8126 ldr r3, [r0, #28] 8127 str r6, [r5, #3464] 8128 str r3, [r6, #4] 8129 ldr r3, .L1076+12 8130 strh r3, [r6, #8] @ movhi 8131 ldrh r3, [r0, #4] 8132 strh r3, [r6] @ movhi 8133 add r3, r5, #304 8134 strh r8, [r6, #2] @ movhi 8135 ldrh r2, [r3] 8136 ldr r0, [r5, #3300] 8137 lsl r2, r2, #3 8138 bl ftl_memset 8139 mov r2, #0 8140 mov r3, r2 8141.L1070: 8142 ldrh r0, [r4, #6] 8143 uxth r1, r2 8144 cmp r0, r1 8145 bhi .L1072 8146 movw r3, #310 8147 ldr r0, [r5, #3460] 8148 ldrh r1, [r5, r3] 8149 bl js_hash 8150 mov r2, #1 8151 str r0, [r6, #12] 8152 mov r1, r2 8153 mov r3, #0 8154 ldr r0, .L1076+16 8155 bl FlashProgPages 8156 ldrh r3, [r4, #2] 8157 mov r0, r4 8158 add r3, r3, #1 8159 strh r3, [r4, #2] @ movhi 8160 bl ftl_map_blk_gc 8161 b .L1069 8162.L1072: 8163 uxth r1, r2 8164 ldr r0, [r7, r1, lsl #2] 8165 cmp r8, r0, lsr #10 8166 bne .L1071 8167 add r3, r3, #1 8168 ldr r0, [r5, #3300] 8169 uxth r3, r3 8170 str r1, [r0, r3, lsl #3] 8171 ldr r0, [r7, r1, lsl #2] 8172 ldr r1, [r5, #3300] 8173 add r1, r1, r3, lsl #3 8174 str r0, [r1, #4] 8175.L1071: 8176 add r2, r2, #1 8177 b .L1070 8178.L1077: 8179 .align 2 8180.L1076: 8181 .word .LANCHOR1+379 8182 .word .LC8 8183 .word .LANCHOR0 8184 .word -1291 8185 .word .LANCHOR0+3452 8186 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page 8187 .align 2 8188 .global flush_l2p_region 8189 .syntax unified 8190 .arm 8191 .fpu softvfp 8192 .type flush_l2p_region, %function 8193flush_l2p_region: 8194 @ args = 0, pretend = 0, frame = 0 8195 @ frame_needed = 1, uses_anonymous_args = 0 8196 mov ip, sp 8197 push {r4, r5, fp, ip, lr, pc} 8198 sub fp, ip, #4 8199 push {lr} 8200 bl __gnu_mcount_nc 8201 ldr r5, .L1079 8202 mov r4, #12 8203 mul r4, r4, r0 8204 add r0, r5, #3392 8205 ldr r3, [r5, #2540] 8206 add r2, r3, r4 8207 ldrh r1, [r3, r4] 8208 ldr r2, [r2, #8] 8209 bl FtlMapWritePage 8210 ldr r0, [r5, #2540] 8211 add r4, r0, r4 8212 mov r0, #0 8213 ldr r3, [r4, #4] 8214 bic r3, r3, #-2147483648 8215 str r3, [r4, #4] 8216 ldmfd sp, {r4, r5, fp, sp, pc} 8217.L1080: 8218 .align 2 8219.L1079: 8220 .word .LANCHOR0 8221 .size flush_l2p_region, .-flush_l2p_region 8222 .align 2 8223 .global log2phys 8224 .syntax unified 8225 .arm 8226 .fpu softvfp 8227 .type log2phys, %function 8228log2phys: 8229 @ args = 0, pretend = 0, frame = 0 8230 @ frame_needed = 1, uses_anonymous_args = 0 8231 mov ip, sp 8232 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 8233 sub fp, ip, #4 8234 push {lr} 8235 bl __gnu_mcount_nc 8236 ldr r4, .L1093 8237 mvn r6, #0 8238 mov r5, r0 8239 mov r8, r1 8240 add r3, r4, #308 8241 mov r9, r2 8242 ldrh r3, [r3] 8243 add r3, r3, #7 8244 lsr r7, r0, r3 8245 bic r6, r0, r6, lsl r3 8246 ldr r3, [r4, #2552] 8247 uxth r7, r7 8248 uxth r6, r6 8249 cmp r3, r0 8250 bhi .L1082 8251 ldr r1, .L1093+4 8252 mov r2, #820 8253 ldr r0, .L1093+8 8254 bl sftl_printk 8255 ldr r3, [r4, #2552] 8256 cmp r3, r5 8257 bhi .L1082 8258 mvn r0, #0 8259 cmp r9, #0 8260 streq r0, [r8] 8261 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 8262.L1088: 8263 add r3, r3, #1 8264 mul r0, r10, r3 8265 ldrh r0, [r2, r0] 8266 cmp r0, r7 8267 bne .L1084 8268.L1085: 8269 mov r1, #12 8270 ldr r3, [r4, #2540] 8271 cmp r9, #0 8272 mul r5, r1, r5 8273 add r3, r3, r5 8274 ldr r3, [r3, #8] 8275 ldreq r3, [r3, r6, lsl #2] 8276 streq r3, [r8] 8277 beq .L1087 8278 ldr r2, [r8] 8279 str r2, [r3, r6, lsl #2] 8280 ldr r3, [r4, #2540] 8281 add r3, r3, r5 8282 ldr r2, [r3, #4] 8283 orr r2, r2, #-2147483648 8284 str r2, [r3, #4] 8285 ldr r3, .L1093+12 8286 strh r7, [r3] @ movhi 8287.L1087: 8288 ldr r1, [r4, #2540] 8289 mov r0, #0 8290 add r5, r1, r5 8291 ldr r3, [r5, #4] 8292 cmn r3, #1 8293 addne r3, r3, #1 8294 strne r3, [r5, #4] 8295 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 8296.L1082: 8297 ldr r2, [r4, #2540] 8298 movw r3, #338 8299 mov r10, #12 8300 sub r2, r2, #12 8301 ldrh r1, [r4, r3] 8302 mov r3, #0 8303.L1084: 8304 uxth r5, r3 8305 cmp r1, r5 8306 bhi .L1088 8307 bl select_l2p_ram_region 8308 mul r10, r10, r0 8309 ldr r3, [r4, #2540] 8310 mov r5, r0 8311 add r2, r3, r10 8312 ldrh r1, [r3, r10] 8313 movw r3, #65535 8314 cmp r1, r3 8315 beq .L1089 8316 ldr r3, [r2, #4] 8317 cmp r3, #0 8318 bge .L1089 8319 bl flush_l2p_region 8320.L1089: 8321 mov r1, r5 8322 mov r0, r7 8323 bl load_l2p_region 8324 b .L1085 8325.L1094: 8326 .align 2 8327.L1093: 8328 .word .LANCHOR0 8329 .word .LANCHOR1+410 8330 .word .LC8 8331 .word .LANCHOR0+2544 8332 .size log2phys, .-log2phys 8333 .align 2 8334 .global FtlWriteDump_data 8335 .syntax unified 8336 .arm 8337 .fpu softvfp 8338 .type FtlWriteDump_data, %function 8339FtlWriteDump_data: 8340 @ args = 0, pretend = 0, frame = 32 8341 @ frame_needed = 1, uses_anonymous_args = 0 8342 mov ip, sp 8343 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 8344 sub fp, ip, #4 8345 sub sp, sp, #36 8346 push {lr} 8347 bl __gnu_mcount_nc 8348 ldr r4, .L1114 8349 mov r3, sp 8350 bic r8, r3, #8128 8351 bic r8, r8, #63 8352 ldrh r2, [r4, #28] 8353 ldr r3, [r8, #24] 8354 cmp r2, #0 8355 str r3, [fp, #-48] 8356 beq .L1096 8357 ldrb r3, [r4, #32] @ zero_extendqisi2 8358 cmp r3, #0 8359 bne .L1096 8360 movw r1, #302 8361 ldrb r3, [r4, #31] @ zero_extendqisi2 8362 ldrh r1, [r4, r1] 8363 mul r3, r1, r3 8364 cmp r2, r3 8365 beq .L1096 8366 ldrb r9, [r4, #34] @ zero_extendqisi2 8367 cmp r9, #0 8368 bne .L1095 8369 ldr r7, [r4, #2552] 8370 mov r2, r9 8371 sub r1, fp, #72 8372 ldrh r6, [r4, #232] 8373 sub r7, r7, #1 8374 mov r0, r7 8375 bl log2phys 8376 ldr r5, [r4, #3332] 8377 ldr r3, [fp, #-72] 8378 ldr r0, [r4, #3300] 8379 str r3, [fp, #-64] 8380 cmn r3, #1 8381 str r7, [fp, #-52] 8382 str r0, [fp, #-60] 8383 str r5, [fp, #-56] 8384 str r9, [r5, #4] 8385 beq .L1098 8386 mov r2, r9 8387 sub r0, fp, #68 8388 mov r1, #1 8389 bl FlashReadPages 8390.L1099: 8391 ldr r9, .L1114+4 8392 lsl r6, r6, #2 8393 ldr r3, .L1114+8 8394 mov r10, #0 8395 strh r3, [r5] @ movhi 8396.L1100: 8397 cmp r6, #0 8398 bne .L1104 8399.L1101: 8400 mov r3, #1 8401.L1113: 8402 strb r3, [r4, #34] 8403.L1095: 8404 ldr r2, [fp, #-48] 8405 ldr r3, [r8, #24] 8406 cmp r2, r3 8407 beq .L1106 8408 bl __stack_chk_fail 8409.L1098: 8410 movw r3, #310 8411 mov r1, #255 8412 ldrh r2, [r4, r3] 8413 bl ftl_memset 8414 b .L1099 8415.L1104: 8416 ldrh r3, [r4, #28] 8417 cmp r3, #0 8418 beq .L1101 8419 ldr r3, [fp, #-64] 8420 mov r0, r9 8421 str r3, [r5, #12] 8422 sub r6, r6, #1 8423 ldrh r3, [r4, #24] 8424 strh r3, [r5, #2] @ movhi 8425 str r7, [r5, #8] 8426 bl get_new_active_ppa 8427 ldr r3, [r4, #2592] 8428 str r0, [fp, #-64] 8429 mov r1, #1 8430 cmn r3, #2 8431 add r2, r3, #1 8432 str r3, [r5, #4] 8433 sub r0, fp, #68 8434 movne r3, r2 8435 moveq r3, r10 8436 str r3, [r4, #2592] 8437 mov r3, #0 8438 mov r2, r3 8439 bl FlashProgPages 8440 ldrh r0, [r4, #24] 8441 bl decrement_vpc_count 8442 b .L1100 8443.L1096: 8444 mov r3, #0 8445 b .L1113 8446.L1106: 8447 sub sp, fp, #40 8448 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 8449.L1115: 8450 .align 2 8451.L1114: 8452 .word .LANCHOR0 8453 .word .LANCHOR0+24 8454 .word -3947 8455 .size FtlWriteDump_data, .-FtlWriteDump_data 8456 .align 2 8457 .global FtlReUsePrevPpa 8458 .syntax unified 8459 .arm 8460 .fpu softvfp 8461 .type FtlReUsePrevPpa, %function 8462FtlReUsePrevPpa: 8463 @ args = 0, pretend = 0, frame = 8 8464 @ frame_needed = 1, uses_anonymous_args = 0 8465 mov ip, sp 8466 push {r4, r5, r6, r7, r8, fp, ip, lr, pc} 8467 sub fp, ip, #4 8468 sub sp, sp, #12 8469 push {lr} 8470 bl __gnu_mcount_nc 8471 ldr r4, .L1126 8472 mov r6, r0 8473 ubfx r0, r1, #10, #16 8474 str r1, [fp, #-40] 8475 bl P2V_block_in_plane 8476 lsl r5, r0, #1 8477 mov r7, r0 8478 ldr r3, [r4, #72] 8479 ldrh r2, [r3, r5] 8480 cmp r2, #0 8481 addne r2, r2, #1 8482 strhne r2, [r3, r5] @ movhi 8483 bne .L1118 8484 ldr r3, [r4, #2532] 8485 cmp r3, #0 8486 beq .L1118 8487 ldr r1, [r4, #2516] 8488 mov lr, #6 8489 ldr ip, .L1126+4 8490 movw r8, #65535 8491 sub r3, r3, r1 8492 ldrh r0, [r4, #224] 8493 asr r3, r3, #1 8494 mul r3, ip, r3 8495 uxth r3, r3 8496.L1119: 8497 uxth ip, r2 8498 cmp r0, ip 8499 bls .L1118 8500 cmp r3, r7 8501 bne .L1120 8502 ldr r0, .L1126+8 8503 mov r1, r7 8504 bl List_remove_node 8505 ldrh r3, [r4, #224] 8506 cmp r3, #0 8507 bne .L1121 8508 ldr r1, .L1126+12 8509 movw r2, #1742 8510 ldr r0, .L1126+16 8511 bl sftl_printk 8512.L1121: 8513 ldrh r3, [r4, #224] 8514 mov r0, r7 8515 sub r3, r3, #1 8516 strh r3, [r4, #224] @ movhi 8517 bl INSERT_DATA_LIST 8518 ldr r2, [r4, #72] 8519 ldrh r3, [r2, r5] 8520 add r3, r3, #1 8521 strh r3, [r2, r5] @ movhi 8522.L1118: 8523 sub r1, fp, #40 8524 mov r0, r6 8525 mov r2, #1 8526 bl log2phys 8527 sub sp, fp, #32 8528 ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc} 8529.L1120: 8530 mul r3, lr, r3 8531 add r2, r2, #1 8532 ldrh r3, [r1, r3] 8533 cmp r3, r8 8534 bne .L1119 8535 b .L1118 8536.L1127: 8537 .align 2 8538.L1126: 8539 .word .LANCHOR0 8540 .word -1431655765 8541 .word .LANCHOR0+2532 8542 .word .LANCHOR1+419 8543 .word .LC8 8544 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa 8545 .section .rodata.str1.1 8546.LC109: 8547 .ascii "data prev_ppa = %x error...................\012\000" 8548.LC110: 8549 .ascii "spuer block %x vpn is 0\012 \000" 8550 .text 8551 .align 2 8552 .global FtlRecoverySuperblock 8553 .syntax unified 8554 .arm 8555 .fpu softvfp 8556 .type FtlRecoverySuperblock, %function 8557FtlRecoverySuperblock: 8558 @ args = 0, pretend = 0, frame = 64 8559 @ frame_needed = 1, uses_anonymous_args = 0 8560 mov ip, sp 8561 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 8562 sub fp, ip, #4 8563 sub sp, sp, #68 8564 push {lr} 8565 bl __gnu_mcount_nc 8566 mov r3, sp 8567 movw r1, #65535 8568 bic r3, r3, #8128 8569 mov r10, r0 8570 bic r3, r3, #63 8571 ldr r3, [r3, #24] 8572 str r3, [fp, #-48] 8573 ldrh r3, [r0] 8574 cmp r3, r1 8575 beq .L1130 8576 ldrh r3, [r0, #2] 8577 ldr r5, .L1257 8578 str r3, [fp, #-72] 8579 ldrb r3, [r0, #6] @ zero_extendqisi2 8580 str r3, [fp, #-92] 8581 movw r3, #302 8582 ldrh r2, [r5, r3] 8583 ldr r3, [fp, #-72] 8584 cmp r2, r3 8585 mov r3, #0 8586 strheq r2, [r0, #2] @ movhi 8587 strheq r3, [r0, #4] @ movhi 8588 ldrhne r0, [r0, #16] 8589 bne .L1132 8590.L1255: 8591 strb r3, [r10, #6] 8592.L1130: 8593 mov r3, sp 8594 ldr r2, [fp, #-48] 8595 bic r3, r3, #8128 8596 bic r3, r3, #63 8597 ldr r3, [r3, #24] 8598 cmp r2, r3 8599 beq .L1196 8600 bl __stack_chk_fail 8601.L1133: 8602 uxth r2, r3 8603 add r2, r10, r2, lsl #1 8604 ldrh r0, [r2, #16] 8605.L1132: 8606 uxth r6, r3 8607 cmp r0, r1 8608 add r3, r3, #1 8609 beq .L1133 8610 mov r1, #1 8611 bl FtlGetLastWrittenPage 8612 mov r4, r0 8613 cmn r0, #1 8614 beq .L1134 8615 ldr r3, [r5, #3176] 8616 add r2, r10, #16 8617 str r3, [fp, #-64] 8618 movw r3, #310 8619 ldr r0, [r5, #3288] 8620 movw r8, #65535 8621 ldrh lr, [r5, r3] 8622 mov r9, #20 8623 ldr r3, .L1257+4 8624 ldr r6, [r5, #3180] 8625 ldrh r7, [r3] 8626 add r3, r10, #16 8627 str r3, [fp, #-84] 8628 ldrh r3, [r5, #232] 8629 mov r5, #0 8630 add r3, r10, r3, lsl #1 8631 add r3, r3, #16 8632 str r3, [fp, #-68] 8633.L1135: 8634 ldr r3, [fp, #-68] 8635 cmp r3, r2 8636 bne .L1139 8637 mov r2, #0 8638 mov r1, r5 8639 bl FlashReadPages 8640 ldr r3, .L1257 8641 mov r8, #0 8642 ldr r6, [r3, #3288] 8643 ldr r2, [r3, #2592] 8644 mov r9, r6 8645 sub r2, r2, #1 8646 str r2, [fp, #-64] 8647 movw r2, #65535 8648 str r2, [fp, #-80] 8649 uxth r2, r4 8650 str r2, [fp, #-68] 8651.L1140: 8652 uxth r2, r8 8653 cmp r5, r2 8654 bhi .L1145 8655 addeq r3, r4, #1 8656 uxtheq r3, r3 8657 streq r3, [fp, #-68] 8658 bne .L1143 8659.L1249: 8660 ldr r0, [r6, #4] 8661 ubfx r0, r0, #10, #16 8662 bl P2V_plane 8663 ldr r3, .L1257 8664 movw r2, #302 8665 ldr r1, [fp, #-68] 8666 str r0, [fp, #-76] 8667 ldrh r2, [r3, r2] 8668 cmp r2, r1 8669 bne .L1147 8670 mov r2, #0 8671 strh r1, [r10, #2] @ movhi 8672 strb r2, [r10, #6] 8673 strh r2, [r10, #4] @ movhi 8674.L1147: 8675 sub r0, fp, #76 8676 ldr ip, [fp, #-92] 8677 ldm r0, {r0, r1, r2} 8678 cmp r2, r1 8679 cmpeq r0, ip 8680 moveq r2, r0 8681 ldreq r1, [fp, #-68] 8682 beq .L1256 8683 ldr r1, [fp, #-80] 8684 movw r2, #65535 8685 cmp r1, r2 8686 bne .L1149 8687 ldrb r2, [r10, #8] @ zero_extendqisi2 8688 cmp r2, #0 8689 bne .L1150 8690.L1149: 8691 ldr r2, [r3, #3448] 8692 uxth r9, r4 8693 ldr r6, .L1257 8694 cmn r2, #1 8695 ldreq r2, [fp, #-64] 8696 streq r2, [r3, #3448] 8697 uxth r2, r4 8698 ldr r3, [fp, #-72] 8699 add r3, r3, #7 8700 cmp r3, r2 8701 sublt r4, r4, #7 8702 ldrge r4, [fp, #-72] 8703 uxthlt r4, r4 8704.L1153: 8705 ldr r0, [r6, #3288] 8706 cmp r4, r9 8707 ldrh ip, [r6, #232] 8708 bls .L1198 8709 mvn r3, #0 8710 str r3, [r6, #3448] 8711.L1150: 8712 ldr r4, .L1257+8 8713 mov r3, #1 8714 ldr r9, [fp, #-72] 8715 strh r3, [r4] @ movhi 8716 sub r4, r4, #3472 8717.L1161: 8718 ldrh ip, [r4, #232] 8719 mov r3, #0 8720 ldr r0, [r4, #3288] 8721 movw lr, #65535 8722 ldr r1, [fp, #-84] 8723 mov r5, #20 8724 str r3, [fp, #-80] 8725.L1162: 8726 uxth r2, r3 8727 cmp ip, r2 8728 bhi .L1164 8729 ldr r1, [fp, #-80] 8730 mov r2, #0 8731 bl FlashReadPages 8732 mov r3, #0 8733.L1254: 8734 str r3, [fp, #-88] 8735 ldr r2, [fp, #-80] 8736 ldrh r3, [fp, #-88] 8737 cmp r3, r2 8738 bcc .L1192 8739 add r3, r9, #1 8740 uxth r9, r3 8741 ldr r3, .L1257+12 8742 ldrh r3, [r3] 8743 cmp r3, r9 8744 bne .L1161 8745 ldrh r1, [r4, #232] 8746 mov r3, #0 8747 strh r9, [r10, #2] @ movhi 8748 movw r0, #65535 8749 strh r3, [r10, #4] @ movhi 8750.L1193: 8751 uxth r2, r3 8752 cmp r1, r2 8753 bls .L1130 8754 ldr r2, [fp, #-84] 8755 ldrh ip, [r2], #2 8756 str r2, [fp, #-84] 8757 add r2, r3, #1 8758 cmp ip, r0 8759 bne .L1255 8760 mov r3, r2 8761 b .L1193 8762.L1134: 8763 ldr r3, [fp, #-72] 8764 cmp r3, #0 8765 beq .L1136 8766 ldr r1, .L1257+16 8767 movw r2, #1809 8768 ldr r0, .L1257+20 8769 bl sftl_printk 8770.L1136: 8771 ldr r3, [fp, #-92] 8772 cmp r3, #0 8773 cmpne r3, r6 8774 beq .L1137 8775 ldr r1, .L1257+16 8776 movw r2, #1810 8777 ldr r0, .L1257+20 8778 bl sftl_printk 8779.L1137: 8780 mov r3, #0 8781 strh r3, [r10, #2] @ movhi 8782 b .L1255 8783.L1139: 8784 ldrh r3, [r2], #2 8785 cmp r3, r8 8786 beq .L1135 8787 mla r1, r9, r5, r0 8788 orr r3, r4, r3, lsl #10 8789 mul ip, lr, r5 8790 cmp ip, #0 8791 str r3, [r1, #4] 8792 add r3, ip, #3 8793 movge r3, ip 8794 ldr ip, [fp, #-64] 8795 bic r3, r3, #3 8796 add r3, ip, r3 8797 mul ip, r7, r5 8798 str r3, [r1, #8] 8799 add r5, r5, #1 8800 cmp ip, #0 8801 add r3, ip, #3 8802 movge r3, ip 8803 uxth r5, r5 8804 bic r3, r3, #3 8805 add r3, r6, r3 8806 str r3, [r1, #12] 8807 b .L1135 8808.L1145: 8809 ldr r2, [r9] 8810 cmp r2, #0 8811 bne .L1141 8812 ldr r2, [r9, #12] 8813 ldr r7, [r2, #4] 8814 cmn r7, #1 8815 beq .L1142 8816 ldr r1, [r3, #2592] 8817 mov r0, r7 8818 str r2, [fp, #-76] 8819 bl ftl_cmp_data_ver 8820 ldr r3, .L1257 8821 cmp r0, #0 8822 ldr r2, [fp, #-76] 8823 addne r7, r7, #1 8824 strne r7, [r3, #2592] 8825.L1142: 8826 ldr r2, [r2] 8827 cmn r2, #1 8828 bne .L1144 8829.L1143: 8830 uxth r3, r4 8831 str r3, [fp, #-68] 8832 mov r3, #20 8833 mla r6, r3, r8, r6 8834 b .L1249 8835.L1141: 8836 ldr r2, [fp, #-68] 8837 str r2, [fp, #-80] 8838.L1144: 8839 add r8, r8, #1 8840 add r9, r9, #20 8841 b .L1140 8842.L1155: 8843 ldrh r2, [r1], #2 8844 cmp r2, lr 8845 beq .L1154 8846 mla r8, r7, r5, r0 8847 add r5, r5, #1 8848 orr r2, r4, r2, lsl #10 8849 uxth r5, r5 8850 str r2, [r8, #4] 8851.L1154: 8852 add r3, r3, #1 8853.L1160: 8854 uxth r2, r3 8855 cmp ip, r2 8856 bhi .L1155 8857 mov r2, #0 8858 mov r1, r5 8859 bl FlashReadPages 8860 ldr r3, [r6, #3288] 8861 mov r2, #0 8862 movw r0, #65535 8863.L1156: 8864 uxth r1, r2 8865 cmp r5, r1 8866 bhi .L1159 8867 add r4, r4, #1 8868 uxth r4, r4 8869 b .L1153 8870.L1198: 8871 mov r3, #0 8872 ldr r1, [fp, #-84] 8873 mov r5, r3 8874 movw lr, #65535 8875 mov r7, #20 8876 b .L1160 8877.L1159: 8878 ldr r1, [r3] 8879 cmp r1, #0 8880 bne .L1150 8881 ldr r1, [r3, #12] 8882 ldrh ip, [r1] 8883 cmp ip, r0 8884 beq .L1158 8885 ldr r1, [r1, #4] 8886 cmn r1, #1 8887 strne r1, [r6, #3448] 8888.L1158: 8889 add r2, r2, #1 8890 add r3, r3, #20 8891 b .L1156 8892.L1164: 8893 ldrh r2, [r1], #2 8894 cmp r2, lr 8895 beq .L1163 8896 ldr r6, [fp, #-80] 8897 orr r2, r9, r2, lsl #10 8898 mla r6, r5, r6, r0 8899 str r2, [r6, #4] 8900 ldr r2, [fp, #-80] 8901 add r2, r2, #1 8902 uxth r2, r2 8903 str r2, [fp, #-80] 8904.L1163: 8905 add r3, r3, #1 8906 b .L1162 8907.L1192: 8908 ldr r3, [fp, #-88] 8909 mov r5, #20 8910 ldr r8, [r4, #3288] 8911 mul r5, r5, r3 8912 ldr r3, [fp, #-72] 8913 add r7, r8, r5 8914 cmp r9, r3 8915 ldr r6, [r7, #4] 8916 str r6, [fp, #-52] 8917 bcc .L1166 8918 ubfx r0, r6, #10, #16 8919 bl P2V_plane 8920 ldr r3, [fp, #-72] 8921 ldr r2, [fp, #-92] 8922 sub r3, r9, r3 8923 clz r3, r3 8924 cmp r2, r0 8925 lsr r3, r3, #5 8926 movls r3, #0 8927 cmp r3, #0 8928 bne .L1166 8929 ldr r3, [fp, #-68] 8930 ldr r2, [fp, #-76] 8931 cmp r9, r3 8932 cmpeq r2, r0 8933 bne .L1167 8934 ldr r3, [fp, #-68] 8935 strb r2, [r10, #6] 8936 mov r1, r3 8937 strh r3, [r10, #2] @ movhi 8938.L1256: 8939 mov r0, r10 8940 bl ftl_sb_update_avl_pages 8941 b .L1130 8942.L1167: 8943 ldr r3, [r8, r5] 8944 cmn r3, #1 8945 beq .L1168 8946 ldr r7, [r7, #12] 8947 movw r3, #61589 8948 ldrh r6, [r7] 8949 cmp r6, r3 8950 ldrhne r0, [r10] 8951 bne .L1251 8952 ldr r3, [r7, #4] 8953 str r3, [fp, #-64] 8954 cmn r3, #1 8955 beq .L1171 8956 ldr r1, [r4, #2592] 8957 mov r0, r3 8958 bl ftl_cmp_data_ver 8959 cmp r0, #0 8960 beq .L1171 8961 ldr r3, [fp, #-64] 8962 add r3, r3, #1 8963 str r3, [r4, #2592] 8964 ldrh r3, [r7] 8965 cmp r3, r6 8966 beq .L1171 8967 ldr r1, .L1257+16 8968 movw r2, #1961 8969 ldr r0, .L1257+20 8970 bl sftl_printk 8971.L1171: 8972 ldr r6, [r7, #8] 8973 sub r1, fp, #56 8974 ldr r3, [r7, #12] 8975 mov r2, #0 8976 mov r0, r6 8977 str r3, [fp, #-60] 8978 bl log2phys 8979 ldr r1, [r4, #3448] 8980 cmn r1, #1 8981 beq .L1173 8982 ldr r0, [fp, #-64] 8983 bl ftl_cmp_data_ver 8984 cmp r0, #0 8985 beq .L1173 8986 ldr r3, [fp, #-60] 8987 cmn r3, #1 8988 beq .L1174 8989 ldr r0, [r4, #3288] 8990 mov r2, #0 8991 mov r1, #1 8992 add r0, r0, r5 8993 str r3, [r0, #4] 8994 ldr r7, [r0, #12] 8995 bl FlashReadPages 8996 ldr r8, [r4, #3288] 8997 add r3, r8, r5 8998 ldr r2, [r8, r5] 8999 cmn r2, #1 9000 bne .L1175 9001.L1176: 9002 mvn r3, #0 9003 str r3, [fp, #-60] 9004.L1183: 9005 ldr r0, [fp, #-60] 9006 cmn r0, #1 9007 beq .L1166 9008 ubfx r0, r0, #10, #16 9009 bl P2V_block_in_plane 9010 ldrh r3, [r4, #240] 9011 mov r5, r0 9012 cmp r3, r0 9013 bhi .L1188 9014 ldr r1, .L1257+16 9015 movw r2, #2066 9016 ldr r0, .L1257+20 9017 bl sftl_printk 9018.L1188: 9019 ldr r2, [r4, #72] 9020 lsl r3, r5, #1 9021 ldrh r3, [r2, r3] 9022 cmp r3, #0 9023 beq .L1189 9024 mov r0, r5 9025.L1251: 9026 bl decrement_vpc_count 9027 b .L1166 9028.L1174: 9029 ldrd r2, [fp, #-56] 9030 cmp r2, r3 9031 bne .L1166 9032 sub r1, fp, #60 9033 mov r0, r6 9034 mov r2, #1 9035 bl log2phys 9036.L1166: 9037 ldr r3, [fp, #-88] 9038 add r3, r3, #1 9039 b .L1254 9040.L1175: 9041 ldr r2, [r7, #8] 9042 str r2, [fp, #-100] 9043 cmp r2, r6 9044 bne .L1176 9045 str r3, [fp, #-104] 9046 ldr r3, [r7, #4] 9047 ldr r0, [r4, #3448] 9048 mov r1, r3 9049 str r3, [fp, #-96] 9050 bl ftl_cmp_data_ver 9051 cmp r0, #0 9052 beq .L1176 9053 ldr r0, [fp, #-52] 9054 ldr r2, [fp, #-56] 9055 ldr r1, [fp, #-60] 9056 cmp r2, r0 9057 ldr r3, [fp, #-104] 9058 ldreq r0, [fp, #-100] 9059 beq .L1250 9060 cmp r2, r1 9061 beq .L1176 9062 cmn r2, #1 9063 streq r2, [r8, r5] 9064 beq .L1180 9065 str r2, [r3, #4] 9066 mov r0, r3 9067 mov r2, #0 9068 mov r1, #1 9069 ldr r7, [r3, #12] 9070 bl FlashReadPages 9071.L1180: 9072 ldr r3, [r4, #3288] 9073 ldr r3, [r3, r5] 9074 cmn r3, #1 9075 beq .L1181 9076 ldr r5, [r7, #4] 9077 ldr r0, [r4, #3448] 9078 mov r1, r5 9079 bl ftl_cmp_data_ver 9080 cmp r0, #0 9081 beq .L1181 9082 ldr r0, [fp, #-96] 9083 mov r1, r5 9084 bl ftl_cmp_data_ver 9085 cmp r0, #0 9086 beq .L1176 9087.L1181: 9088 ldr r1, [fp, #-60] 9089 mov r0, r6 9090.L1250: 9091 bl FtlReUsePrevPpa 9092 b .L1176 9093.L1173: 9094 ldrd r2, [fp, #-56] 9095 cmp r2, r3 9096 beq .L1183 9097 ldr r1, [fp, #-60] 9098 cmn r1, #1 9099 beq .L1185 9100 ldr r3, [r4, #248] 9101 cmp r3, r1, lsr #10 9102 ldrls r0, .L1257+24 9103 bls .L1253 9104.L1185: 9105 sub r1, fp, #52 9106 mov r0, r6 9107 mov r2, #1 9108 bl log2phys 9109 ldr r7, [fp, #-56] 9110 cmn r7, #1 9111 beq .L1183 9112 ldr r3, [fp, #-60] 9113 cmp r7, r3 9114 beq .L1183 9115 ubfx r0, r7, #10, #16 9116 bl P2V_block_in_plane 9117 ldrh r3, [r4, #24] 9118 cmp r3, r0 9119 beq .L1187 9120 ldrh r3, [r4, #76] 9121 cmp r3, r0 9122 beq .L1187 9123 ldrh r3, [r4, #124] 9124 cmp r3, r0 9125 bne .L1183 9126.L1187: 9127 ldr r0, [r4, #3288] 9128 mov r2, #0 9129 mov r1, #1 9130 str r7, [r0, #4] 9131 ldr r5, [r0, #12] 9132 bl FlashReadPages 9133 ldr r3, [r4, #3288] 9134 ldr r3, [r3] 9135 cmn r3, #1 9136 beq .L1183 9137 ldr r1, [r5, #4] 9138 ldr r0, [fp, #-64] 9139 bl ftl_cmp_data_ver 9140 cmp r0, #0 9141 bne .L1183 9142 sub r1, fp, #56 9143 mov r0, r6 9144 mov r2, #1 9145 bl log2phys 9146 b .L1183 9147.L1189: 9148 ldr r0, .L1257+28 9149 mov r1, r5 9150.L1253: 9151 bl sftl_printk 9152 b .L1166 9153.L1168: 9154 ldr r3, [r4, #3476] 9155 cmp r3, #31 9156 addls r2, r4, r3, lsl #2 9157 addls r3, r3, #1 9158 strls r3, [r4, #3476] 9159 strls r6, [r2, #3480] 9160 ldrh r0, [r10] 9161 bl decrement_vpc_count 9162 ldr r3, [r4, #3448] 9163 cmn r3, #1 9164 ldreq r3, [fp, #-64] 9165 beq .L1252 9166 ldr r2, [fp, #-64] 9167 cmp r3, r2 9168 bls .L1166 9169 mov r3, r2 9170.L1252: 9171 str r3, [r4, #3448] 9172 b .L1166 9173.L1196: 9174 mov r0, #0 9175 sub sp, fp, #40 9176 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 9177.L1258: 9178 .align 2 9179.L1257: 9180 .word .LANCHOR0 9181 .word .LANCHOR0+312 9182 .word .LANCHOR0+3472 9183 .word .LANCHOR0+302 9184 .word .LANCHOR1+435 9185 .word .LC8 9186 .word .LC109 9187 .word .LC110 9188 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock 9189 .section .rodata.str1.1 9190.LC111: 9191 .ascii "...%s enter...\012\000" 9192.LC112: 9193 .ascii "FtlCheckVpc2 %x = %x %x\012\000" 9194.LC113: 9195 .ascii "free blk vpc error %x = %x %x\012\000" 9196 .text 9197 .align 2 9198 .global ftl_check_vpc 9199 .syntax unified 9200 .arm 9201 .fpu softvfp 9202 .type ftl_check_vpc, %function 9203ftl_check_vpc: 9204 @ args = 0, pretend = 0, frame = 8 9205 @ frame_needed = 1, uses_anonymous_args = 0 9206 mov ip, sp 9207 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 9208 sub fp, ip, #4 9209 sub sp, sp, #12 9210 push {lr} 9211 bl __gnu_mcount_nc 9212 mov r3, sp 9213 ldr r5, .L1284 9214 bic r6, r3, #8128 9215 ldr r1, .L1284+4 9216 bic r6, r6, #63 9217 ldr r0, .L1284+8 9218 mov r4, #0 9219 ldr r3, [r6, #24] 9220 str r3, [fp, #-48] 9221 bl sftl_printk 9222 ldr r0, .L1284+12 9223 mov r2, #8192 9224 mov r1, #0 9225 bl ftl_memset 9226.L1260: 9227 ldr r3, [r5, #2552] 9228 cmp r3, r4 9229 bhi .L1262 9230 ldr r9, .L1284+12 9231 mov r4, #0 9232 ldr r10, .L1284+16 9233 mov r7, r4 9234.L1263: 9235 ldrh r2, [r5, #240] 9236 uxth r3, r4 9237 cmp r2, r3 9238 bhi .L1265 9239 ldr r4, [r5, #2532] 9240 cmp r4, #0 9241 beq .L1266 9242 ldr r1, [r5, #2516] 9243 mov r9, #0 9244 ldrh r8, [r5, #224] 9245 sub r4, r4, r1 9246 ldr r1, .L1284+20 9247 ldr r10, .L1284+12 9248 asr r4, r4, #1 9249 ldr r0, .L1284+24 9250 mul r4, r1, r4 9251 uxth r4, r4 9252.L1267: 9253 uxth r3, r9 9254 cmp r8, r3 9255 bls .L1266 9256 ldr r2, [r5, #72] 9257 lsl r3, r4, #1 9258 ldrh r2, [r2, r3] 9259 cmp r2, #0 9260 beq .L1268 9261 ldrh r3, [r10, r3] 9262 mov r1, r4 9263 bl sftl_printk 9264 ldr r0, .L1284+24 9265 mov r7, #1 9266.L1268: 9267 mov r3, #6 9268 ldr r2, [r5, #2516] 9269 add r9, r9, #1 9270 mul r3, r3, r4 9271 ldrh r4, [r2, r3] 9272 movw r3, #65535 9273 cmp r4, r3 9274 bne .L1267 9275.L1266: 9276 cmp r7, #0 9277 beq .L1259 9278 ldr r1, .L1284+4 9279 movw r2, #2394 9280 ldr r0, .L1284+28 9281 bl sftl_printk 9282.L1259: 9283 ldr r2, [fp, #-48] 9284 ldr r3, [r6, #24] 9285 cmp r2, r3 9286 beq .L1271 9287 bl __stack_chk_fail 9288.L1262: 9289 sub r1, fp, #52 9290 mov r0, r4 9291 mov r2, #0 9292 bl log2phys 9293 ldr r0, [fp, #-52] 9294 cmn r0, #1 9295 beq .L1261 9296 ubfx r0, r0, #10, #16 9297 bl P2V_block_in_plane 9298 ldr r2, .L1284+12 9299 lsl r0, r0, #1 9300 ldrh r3, [r2, r0] 9301 add r3, r3, #1 9302 strh r3, [r2, r0] @ movhi 9303.L1261: 9304 add r4, r4, #1 9305 b .L1260 9306.L1265: 9307 uxth r1, r4 9308 ldr r3, [r5, #72] 9309 lsl r8, r1, #1 9310 ldrh r2, [r3, r8] 9311 ldrh r3, [r9, r8] 9312 cmp r2, r3 9313 beq .L1264 9314 mov r0, r10 9315 bl sftl_printk 9316 ldr r3, [r5, #72] 9317 movw r2, #65535 9318 ldrh r3, [r3, r8] 9319 cmp r3, r2 9320 beq .L1264 9321 ldrh r2, [r9, r8] 9322 cmp r2, r3 9323 movhi r7, #1 9324.L1264: 9325 add r4, r4, #1 9326 b .L1263 9327.L1271: 9328 sub sp, fp, #40 9329 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 9330.L1285: 9331 .align 2 9332.L1284: 9333 .word .LANCHOR0 9334 .word .LANCHOR1+457 9335 .word .LC111 9336 .word check_vpc_table 9337 .word .LC112 9338 .word -1431655765 9339 .word .LC113 9340 .word .LC8 9341 .size ftl_check_vpc, .-ftl_check_vpc 9342 .section .rodata.str1.1 9343.LC114: 9344 .ascii "ftl_scan_all_data = %x\012\000" 9345.LC115: 9346 .ascii "scan lpa = %x ppa= %x\012\000" 9347.LC116: 9348 .ascii "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012" 9349 .ascii "\000" 9350 .text 9351 .align 2 9352 .global ftl_scan_all_data 9353 .syntax unified 9354 .arm 9355 .fpu softvfp 9356 .type ftl_scan_all_data, %function 9357ftl_scan_all_data: 9358 @ args = 0, pretend = 0, frame = 8 9359 @ frame_needed = 1, uses_anonymous_args = 0 9360 mov ip, sp 9361 push {r4, r5, r6, r7, fp, ip, lr, pc} 9362 sub fp, ip, #4 9363 sub sp, sp, #32 9364 push {lr} 9365 bl __gnu_mcount_nc 9366 mov r3, sp 9367 ldr r4, .L1295 9368 bic r6, r3, #8128 9369 mov r5, #0 9370 bic r6, r6, #63 9371 ldr r0, .L1295+4 9372 mov r1, #0 9373 ldr r3, [r6, #24] 9374 str r3, [fp, #-32] 9375 bl sftl_printk 9376.L1287: 9377 ldr r3, [r4, #2552] 9378 cmp r3, r5 9379 bhi .L1293 9380 ldr r2, [fp, #-32] 9381 ldr r3, [r6, #24] 9382 cmp r2, r3 9383 beq .L1294 9384 bl __stack_chk_fail 9385.L1293: 9386 sub r1, fp, #36 9387 mov r0, r5 9388 mov r2, #0 9389 bl log2phys 9390 ubfx r3, r5, #0, #11 9391 cmp r3, #0 9392 bne .L1288 9393 ldr r2, [fp, #-36] 9394 mov r1, r5 9395 ldr r0, .L1295+8 9396 bl sftl_printk 9397.L1288: 9398 ldr r3, [fp, #-36] 9399 cmn r3, #1 9400 beq .L1290 9401 ldr r7, [r4, #3332] 9402 mov r2, #0 9403 str r3, [r4, #3456] 9404 mov r1, #1 9405 ldr r3, [r4, #3300] 9406 ldr r0, .L1295+12 9407 str r3, [r4, #3460] 9408 str r5, [r4, #3468] 9409 str r7, [r4, #3464] 9410 str r2, [r4, #3452] 9411 bl FlashReadPages 9412 ldr r3, [r4, #3452] 9413 cmn r3, #1 9414 cmpne r3, #256 9415 beq .L1291 9416 ldr r3, [r7, #8] 9417 cmp r3, r5 9418 beq .L1290 9419.L1291: 9420 ldr r2, [r4, #3460] 9421 ldr r3, [r4, #3464] 9422 ldr r0, .L1295+16 9423 ldr r1, [r2, #4] 9424 str r1, [sp, #16] 9425 mov r1, r5 9426 ldr r2, [r2] 9427 str r2, [sp, #12] 9428 ldr r2, [r3, #12] 9429 str r2, [sp, #8] 9430 ldr r2, [r3, #8] 9431 str r2, [sp, #4] 9432 ldr r2, [r3, #4] 9433 str r2, [sp] 9434 ldr r2, [r4, #3456] 9435 ldr r3, [r3] 9436 bl sftl_printk 9437.L1290: 9438 add r5, r5, #1 9439 b .L1287 9440.L1294: 9441 sub sp, fp, #28 9442 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 9443.L1296: 9444 .align 2 9445.L1295: 9446 .word .LANCHOR0 9447 .word .LC114 9448 .word .LC115 9449 .word .LANCHOR0+3452 9450 .word .LC116 9451 .size ftl_scan_all_data, .-ftl_scan_all_data 9452 .section .rodata.str1.1 9453.LC117: 9454 .ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000" 9455 .text 9456 .align 2 9457 .global FtlGcScanTempBlk 9458 .syntax unified 9459 .arm 9460 .fpu softvfp 9461 .type FtlGcScanTempBlk, %function 9462FtlGcScanTempBlk: 9463 @ args = 0, pretend = 0, frame = 56 9464 @ frame_needed = 1, uses_anonymous_args = 0 9465 mov ip, sp 9466 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 9467 sub fp, ip, #4 9468 sub sp, sp, #60 9469 push {lr} 9470 bl __gnu_mcount_nc 9471 mov r3, sp 9472 mov r4, r0 9473 bic r3, r3, #8128 9474 str r1, [fp, #-84] 9475 bic r3, r3, #63 9476 ldr r3, [r3, #24] 9477 str r3, [fp, #-48] 9478 ldr r3, .L1329 9479 ldrh r5, [r3, #4] 9480 movw r3, #65535 9481 cmp r5, r3 9482 beq .L1322 9483 cmp r5, #0 9484 beq .L1299 9485.L1298: 9486 ldr r2, .L1329+4 9487 movw r3, #302 9488 ldrh r3, [r2, r3] 9489 ldr r2, [fp, #-84] 9490 cmp r3, r2 9491 bne .L1300 9492.L1299: 9493 bl FtlGcPageVarInit 9494.L1300: 9495 ldr r6, .L1329+4 9496 mov r3, #0 9497 str r3, [fp, #-80] 9498.L1317: 9499 ldrh r2, [r4] 9500 mov r3, #0 9501 strb r3, [r4, #8] 9502 movw r3, #65535 9503 cmp r2, r3 9504 beq .L1301 9505.L1302: 9506 ldr r3, [r6, #3176] 9507 mov r7, #0 9508 str r3, [fp, #-88] 9509 movw lr, #65535 9510 ldr r3, .L1329+8 9511 mov r8, #20 9512 ldr r0, [r6, #3288] 9513 ldr r10, [r6, #3180] 9514 ldrh r2, [r3] 9515 ldrh r9, [r3, #2] 9516 ldrh r3, [r6, #232] 9517 str r2, [fp, #-92] 9518 add r2, r4, #16 9519 add r3, r4, r3, lsl #1 9520 add r3, r3, #16 9521 str r3, [fp, #-96] 9522.L1303: 9523 ldr r3, [fp, #-96] 9524 cmp r3, r2 9525 bne .L1305 9526 mov r10, #0 9527 mov r1, r7 9528 mov r2, #0 9529 bl FlashReadPages 9530.L1306: 9531 uxth r3, r10 9532 cmp r7, r3 9533 bhi .L1318 9534 ldr r3, [fp, #-80] 9535 add r5, r5, #1 9536 add r3, r3, #1 9537 str r3, [fp, #-80] 9538 ldr r2, [fp, #-80] 9539 uxth r5, r5 9540 ldr r3, [fp, #-84] 9541 cmp r3, r2 9542 bhi .L1319 9543 ldr r2, .L1329 9544 movw r1, #65535 9545 ldrh r3, [r2, #4] 9546 cmp r3, r1 9547 beq .L1319 9548 ldr r1, [fp, #-80] 9549 add r3, r3, r1 9550 strh r3, [r2, #4] @ movhi 9551 ldr r2, .L1329+4 9552 movw r3, #302 9553 ldrh r3, [r2, r3] 9554 cmp r3, r5 9555 bls .L1301 9556.L1320: 9557 mov r3, sp 9558 ldr r2, [fp, #-48] 9559 bic r3, r3, #8128 9560 bic r3, r3, #63 9561 ldr r3, [r3, #24] 9562 cmp r2, r3 9563 beq .L1321 9564 bl __stack_chk_fail 9565.L1322: 9566 mov r5, #0 9567 b .L1298 9568.L1305: 9569 ldrh r3, [r2], #2 9570 cmp r3, lr 9571 beq .L1303 9572 mla r1, r8, r7, r0 9573 orr r3, r5, r3, lsl #10 9574 str r3, [r1, #4] 9575 ldr r3, [fp, #-92] 9576 mul ip, r3, r7 9577 cmp ip, #0 9578 add r3, ip, #3 9579 movge r3, ip 9580 ldr ip, [fp, #-88] 9581 bic r3, r3, #3 9582 add r3, ip, r3 9583 mul ip, r9, r7 9584 str r3, [r1, #8] 9585 add r7, r7, #1 9586 cmp ip, #0 9587 add r3, ip, #3 9588 movge r3, ip 9589 uxth r7, r7 9590 bic r3, r3, #3 9591 add r3, r10, r3 9592 str r3, [r1, #12] 9593 b .L1303 9594.L1318: 9595 mov r9, #20 9596 ldr r2, [r6, #3288] 9597 mul r9, r9, r10 9598 add r1, r2, r9 9599 ldr r2, [r2, r9] 9600 ldr r3, [r1, #4] 9601 ldr r8, [r1, #12] 9602 cmp r2, #0 9603 bne .L1307 9604 ldrh r0, [r8] 9605 movw r1, #65535 9606 cmp r0, r1 9607 beq .L1327 9608 ldr r0, [r8, #8] 9609 ldr r1, [r6, #2552] 9610 cmp r0, r1 9611 bls .L1309 9612.L1327: 9613 ldrh r3, [r4] 9614 mov r1, #0 9615 ldr r2, [r6, #72] 9616 mov r5, #0 9617 lsl r3, r3, #1 9618 strh r1, [r2, r3] @ movhi 9619 ldrh r0, [r4] 9620 bl INSERT_FREE_LIST 9621 mvn r3, #0 9622 strh r3, [r4] @ movhi 9623 strh r3, [r6, #172] @ movhi 9624 bl FtlGcPageVarInit 9625 b .L1317 9626.L1309: 9627 sub r1, fp, #72 9628 str r3, [fp, #-92] 9629 str r2, [fp, #-88] 9630 bl log2phys 9631 ldr r0, [fp, #-72] 9632 ldr r1, [r8, #12] 9633 cmn r0, #1 9634 ldr r2, [fp, #-88] 9635 sub ip, r1, r0 9636 ldr r3, [fp, #-92] 9637 clz ip, ip 9638 lsr ip, ip, #5 9639 moveq ip, #0 9640 cmp ip, #0 9641 bne .L1311 9642.L1316: 9643 ldr r2, [r8, #8] 9644.L1328: 9645 ldr r0, [r8, #12] 9646 mov r1, r3 9647 add r10, r10, #1 9648 bl FtlGcUpdatePage 9649 b .L1306 9650.L1311: 9651 str r1, [fp, #-64] 9652 sub r0, fp, #68 9653 ldr r1, [r6, #3316] 9654 str r1, [fp, #-60] 9655 ldr r1, [r6, #3336] 9656 str r1, [fp, #-56] 9657 mov r1, #1 9658 str r3, [fp, #-92] 9659 str r2, [fp, #-88] 9660 bl FlashReadPages 9661 ldr r1, .L1329+12 9662 ldr r0, [r6, #3288] 9663 ldr r2, [fp, #-88] 9664 add r9, r0, r9 9665 ldr r3, [fp, #-92] 9666 ldrh r1, [r1] 9667 ldr r0, [fp, #-60] 9668 lsl r1, r1, #7 9669.L1313: 9670 cmp r1, r2 9671 beq .L1316 9672 ldr ip, [r9, #8] 9673 ldr lr, [ip, r2, lsl #2] 9674 ldr ip, [r0, r2, lsl #2] 9675 cmp lr, ip 9676 beq .L1314 9677 ldr r2, [fp, #-64] 9678 ldrh r1, [r4] 9679 ldr r0, .L1329+16 9680 bl sftl_printk 9681 b .L1327 9682.L1314: 9683 add r2, r2, #1 9684 b .L1313 9685.L1307: 9686 mvn r2, #0 9687 b .L1328 9688.L1319: 9689 ldr r3, .L1329+20 9690 ldrh r3, [r3] 9691 cmp r3, r5 9692 bhi .L1302 9693.L1301: 9694 ldr r3, .L1329 9695 mvn r2, #0 9696 mov r1, r5 9697 mov r0, r4 9698 strh r5, [r4, #2] @ movhi 9699 strh r2, [r3, #4] @ movhi 9700 mov r2, #0 9701 strb r2, [r4, #6] 9702 bl ftl_sb_update_avl_pages 9703 b .L1320 9704.L1321: 9705 mvn r0, #0 9706 sub sp, fp, #40 9707 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 9708.L1330: 9709 .align 2 9710.L1329: 9711 .word .LANCHOR2 9712 .word .LANCHOR0 9713 .word .LANCHOR0+310 9714 .word .LANCHOR0+258 9715 .word .LC117 9716 .word .LANCHOR0+302 9717 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk 9718 .align 2 9719 .global FtlReadRefresh 9720 .syntax unified 9721 .arm 9722 .fpu softvfp 9723 .type FtlReadRefresh, %function 9724FtlReadRefresh: 9725 @ args = 0, pretend = 0, frame = 96 9726 @ frame_needed = 1, uses_anonymous_args = 0 9727 mov ip, sp 9728 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 9729 sub fp, ip, #4 9730 sub sp, sp, #100 9731 push {lr} 9732 bl __gnu_mcount_nc 9733 ldr r5, .L1347 9734 mov r3, sp 9735 bic r6, r3, #8128 9736 bic r6, r6, #63 9737 ldr r9, [r5, #2720] 9738 ldr r3, [r6, #24] 9739 str r3, [fp, #-48] 9740 cmp r9, #0 9741 ldr r3, [r5, #2552] 9742 beq .L1332 9743 ldr r2, [r5, #2724] 9744 cmp r2, r3 9745 bcs .L1333 9746 mov r4, #2048 9747.L1338: 9748 ldr r0, [r5, #2724] 9749 ldr r3, [r5, #2552] 9750 cmp r0, r3 9751 bcc .L1334 9752.L1337: 9753 mvn r0, #0 9754.L1331: 9755 ldr r2, [fp, #-48] 9756 ldr r3, [r6, #24] 9757 cmp r2, r3 9758 beq .L1342 9759 bl __stack_chk_fail 9760.L1334: 9761 mov r2, #0 9762 sub r1, fp, #136 9763 bl log2phys 9764 ldr r3, [r5, #2724] 9765 ldr r2, [fp, #-136] 9766 add r3, r3, #1 9767 str r3, [r5, #2724] 9768 cmn r2, #1 9769 beq .L1336 9770 str r2, [fp, #-128] 9771 sub r0, fp, #132 9772 str r3, [fp, #-116] 9773 mov r2, #0 9774 ldr r3, [r5, #3324] 9775 mov r1, #1 9776 str r3, [fp, #-124] 9777 sub r3, fp, #112 9778 str r2, [fp, #-132] 9779 str r3, [fp, #-120] 9780 bl FlashReadPages 9781 ldr r3, [fp, #-132] 9782 cmp r3, #256 9783 bne .L1337 9784 ldr r0, [fp, #-136] 9785 ubfx r0, r0, #10, #16 9786 bl P2V_block_in_plane 9787 bl FtlGcRefreshBlock 9788 b .L1337 9789.L1336: 9790 subs r4, r4, #1 9791 bne .L1338 9792 b .L1337 9793.L1333: 9794 ldr r3, [r5, #2556] 9795 mov r0, #0 9796 str r3, [r5, #2716] 9797 str r0, [r5, #2720] 9798 str r0, [r5, #2724] 9799 b .L1331 9800.L1332: 9801 ldr r2, .L1347+4 9802 movw r4, #10000 9803 ldr r1, [r5, #2612] 9804 ldr r8, [r5, #2556] 9805 cmp r1, r4 9806 ldr r10, [r5, #2716] 9807 ldrh r7, [r2, #28] 9808 add r2, r8, #1048576 9809 movhi r4, #31 9810 movls r4, #63 9811 cmp r10, r2 9812 bhi .L1341 9813 mov r0, #1000 9814 lsr r1, r1, #10 9815 add r1, r1, #1 9816 mul r0, r0, r3 9817 bl __aeabi_uidiv 9818 add r0, r0, r10 9819 cmp r8, r0 9820 bhi .L1341 9821 ands r0, r4, r7 9822 movne r0, r9 9823 bne .L1331 9824 ldr r3, [r5, #2740] 9825 cmp r3, r7 9826 beq .L1331 9827.L1341: 9828 mov r3, #1 9829 mov r0, #0 9830 str r7, [r5, #2740] 9831 str r3, [r5, #2720] 9832 str r0, [r5, #2724] 9833 str r8, [r5, #2716] 9834 b .L1331 9835.L1342: 9836 sub sp, fp, #40 9837 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 9838.L1348: 9839 .align 2 9840.L1347: 9841 .word .LANCHOR0 9842 .word .LANCHOR0+2468 9843 .size FtlReadRefresh, .-FtlReadRefresh 9844 .align 2 9845 .global l2p_flush 9846 .syntax unified 9847 .arm 9848 .fpu softvfp 9849 .type l2p_flush, %function 9850l2p_flush: 9851 @ args = 0, pretend = 0, frame = 0 9852 @ frame_needed = 1, uses_anonymous_args = 0 9853 mov ip, sp 9854 push {r4, r5, r6, r7, fp, ip, lr, pc} 9855 sub fp, ip, #4 9856 push {lr} 9857 bl __gnu_mcount_nc 9858 ldr r6, .L1353 9859 mov r4, #0 9860 ldr r5, .L1353+4 9861 bl FtlWriteDump_data 9862.L1350: 9863 ldrh r3, [r5] 9864 uxth r0, r4 9865 cmp r3, r0 9866 bhi .L1352 9867 mov r0, #0 9868 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 9869.L1352: 9870 ldr r2, [r6, #2540] 9871 uxth r3, r4 9872 mov r1, #12 9873 mla r3, r1, r3, r2 9874 ldr r3, [r3, #4] 9875 cmp r3, #0 9876 bge .L1351 9877 bl flush_l2p_region 9878.L1351: 9879 add r4, r4, #1 9880 b .L1350 9881.L1354: 9882 .align 2 9883.L1353: 9884 .word .LANCHOR0 9885 .word .LANCHOR0+338 9886 .size l2p_flush, .-l2p_flush 9887 .align 2 9888 .global FtlVendorPartWrite 9889 .syntax unified 9890 .arm 9891 .fpu softvfp 9892 .type FtlVendorPartWrite, %function 9893FtlVendorPartWrite: 9894 @ args = 0, pretend = 0, frame = 104 9895 @ frame_needed = 1, uses_anonymous_args = 0 9896 mov ip, sp 9897 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 9898 sub fp, ip, #4 9899 sub sp, sp, #108 9900 push {lr} 9901 bl __gnu_mcount_nc 9902 mov r3, sp 9903 ldr r7, .L1365 9904 bic r10, r3, #8128 9905 str r2, [fp, #-136] 9906 bic r10, r10, #63 9907 add r2, r0, r1 9908 mov r6, r0 9909 mov r5, r1 9910 ldr r3, [r10, #24] 9911 str r3, [fp, #-48] 9912 mov r3, r7 9913 ldrh r8, [r3], #-12 9914 lsr r8, r0, r8 9915 ldrh r3, [r3] 9916 cmp r2, r3 9917 subls r7, r7, #308 9918 movls r9, #0 9919 bls .L1357 9920 mvn r9, #0 9921 b .L1355 9922.L1362: 9923 ldr r3, [r7, #3372] 9924 mov r0, r6 9925 ldr r2, [r3, r8, lsl #2] 9926 ldr r3, .L1365+4 9927 str r2, [fp, #-148] 9928 ldrh r3, [r3] 9929 str r3, [fp, #-144] 9930 mov r1, r3 9931 bl __aeabi_uidivmod 9932 ldr r3, [fp, #-144] 9933 ldr r2, [fp, #-148] 9934 sub r4, r3, r1 9935 str r1, [fp, #-140] 9936 ldr r0, [r7, #3308] 9937 uxth r4, r4 9938 cmp r4, r5 9939 uxthhi r4, r5 9940 cmp r2, #0 9941 cmpne r3, r4 9942 movne r1, #1 9943 moveq r1, #0 9944 beq .L1359 9945 str r2, [fp, #-128] 9946 mov r2, #1 9947 str r0, [fp, #-124] 9948 mov r1, r2 9949 sub r0, fp, #132 9950 sub r3, fp, #112 9951 str r3, [fp, #-120] 9952 bl FlashReadPages 9953.L1360: 9954 lsl r3, r4, #9 9955 ldr r0, [r7, #3308] 9956 mov r2, r3 9957 str r3, [fp, #-144] 9958 ldr r3, [fp, #-140] 9959 sub r5, r5, r4 9960 ldr r1, [fp, #-136] 9961 add r6, r6, r4 9962 add r0, r0, r3, lsl #9 9963 bl ftl_memcpy 9964 ldr r2, [r7, #3308] 9965 mov r1, r8 9966 ldr r0, .L1365+8 9967 bl FtlMapWritePage 9968 ldr r2, [fp, #-136] 9969 ldr r3, [fp, #-144] 9970 cmn r0, #1 9971 add r8, r8, #1 9972 add r3, r2, r3 9973 mvneq r9, #0 9974 str r3, [fp, #-136] 9975.L1357: 9976 cmp r5, #0 9977 bne .L1362 9978.L1355: 9979 ldr r2, [fp, #-48] 9980 ldr r3, [r10, #24] 9981 cmp r2, r3 9982 beq .L1363 9983 bl __stack_chk_fail 9984.L1359: 9985 ldr r3, .L1365+12 9986 ldrh r2, [r3] 9987 bl ftl_memset 9988 b .L1360 9989.L1363: 9990 mov r0, r9 9991 sub sp, fp, #40 9992 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 9993.L1366: 9994 .align 2 9995.L1365: 9996 .word .LANCHOR0+308 9997 .word .LANCHOR0+258 9998 .word .LANCHOR0+3608 9999 .word .LANCHOR0+310 10000 .size FtlVendorPartWrite, .-FtlVendorPartWrite 10001 .align 2 10002 .global Ftl_save_ext_data 10003 .syntax unified 10004 .arm 10005 .fpu softvfp 10006 .type Ftl_save_ext_data, %function 10007Ftl_save_ext_data: 10008 @ args = 0, pretend = 0, frame = 0 10009 @ frame_needed = 1, uses_anonymous_args = 0 10010 mov ip, sp 10011 push {fp, ip, lr, pc} 10012 sub fp, ip, #4 10013 push {lr} 10014 bl __gnu_mcount_nc 10015 ldr r2, .L1369 10016 ldr r3, .L1369+4 10017 ldr r1, [r2, #2640] 10018 cmp r1, r3 10019 ldmfdne sp, {fp, sp, pc} 10020 ldr r3, .L1369+8 10021 add r2, r2, #2640 10022 str r3, [r2, #4] 10023 mov r1, #1 10024 ldr r3, [r2, #-60] 10025 mov r0, #0 10026 str r3, [r2, #88] 10027 ldr r3, [r2, #-56] 10028 str r3, [r2, #92] 10029 ldr r3, [r2, #-64] 10030 str r3, [r2, #8] 10031 ldr r3, [r2, #-76] 10032 str r3, [r2, #12] 10033 ldr r3, [r2, #-84] 10034 str r3, [r2, #16] 10035 ldr r3, [r2, #-68] 10036 str r3, [r2, #20] 10037 ldr r3, [r2, #-40] 10038 str r3, [r2, #28] 10039 ldr r3, [r2, #-32] 10040 str r3, [r2, #32] 10041 ldr r3, [r2, #-80] 10042 str r3, [r2, #36] 10043 ldr r3, [r2, #-72] 10044 str r3, [r2, #40] 10045 ldr r3, [r2, #-28] 10046 str r3, [r2, #44] 10047 ldr r3, [r2, #-24] 10048 str r3, [r2, #48] 10049 bl FtlVendorPartWrite 10050 ldmfd sp, {fp, sp, pc} 10051.L1370: 10052 .align 2 10053.L1369: 10054 .word .LANCHOR0 10055 .word 1179929683 10056 .word 1342177369 10057 .size Ftl_save_ext_data, .-Ftl_save_ext_data 10058 .align 2 10059 .global FtlEctTblFlush 10060 .syntax unified 10061 .arm 10062 .fpu softvfp 10063 .type FtlEctTblFlush, %function 10064FtlEctTblFlush: 10065 @ args = 0, pretend = 0, frame = 0 10066 @ frame_needed = 1, uses_anonymous_args = 0 10067 mov ip, sp 10068 push {fp, ip, lr, pc} 10069 sub fp, ip, #4 10070 push {lr} 10071 bl __gnu_mcount_nc 10072 ldr r3, .L1376 10073 movw r1, #3652 10074 ldrh r2, [r3, r1] 10075 cmp r2, #31 10076 addls r2, r2, #1 10077 strhls r2, [r3, r1] @ movhi 10078 ldr r2, [r3, #3348] 10079 movls r1, #1 10080 movhi r1, #32 10081 cmp r0, #0 10082 ldr ip, [r2, #16] 10083 bne .L1373 10084 ldr r0, [r2, #20] 10085 add r1, r1, r0 10086 cmp r1, ip 10087 bhi .L1374 10088.L1373: 10089 ldr r1, .L1376+4 10090 mov r0, #64 10091 str r1, [r2] 10092 str ip, [r2, #20] 10093 movw r2, #3340 10094 ldrh r1, [r3, r2] 10095 ldr r2, [r3, #3348] 10096 lsl r3, r1, #9 10097 str r3, [r2, #12] 10098 ldr r3, [r2, #8] 10099 add r3, r3, #1 10100 str r3, [r2, #8] 10101 mov r3, #0 10102 str r3, [r2, #4] 10103 bl FtlVendorPartWrite 10104 bl Ftl_save_ext_data 10105.L1374: 10106 mov r0, #0 10107 ldmfd sp, {fp, sp, pc} 10108.L1377: 10109 .align 2 10110.L1376: 10111 .word .LANCHOR0 10112 .word 1112818501 10113 .size FtlEctTblFlush, .-FtlEctTblFlush 10114 .align 2 10115 .global sftl_vendor_write 10116 .syntax unified 10117 .arm 10118 .fpu softvfp 10119 .type sftl_vendor_write, %function 10120sftl_vendor_write: 10121 @ args = 0, pretend = 0, frame = 0 10122 @ frame_needed = 1, uses_anonymous_args = 0 10123 mov ip, sp 10124 push {fp, ip, lr, pc} 10125 sub fp, ip, #4 10126 push {lr} 10127 bl __gnu_mcount_nc 10128 add r0, r0, #256 10129 bl FtlVendorPartWrite 10130 ldmfd sp, {fp, sp, pc} 10131 .size sftl_vendor_write, .-sftl_vendor_write 10132 .section .rodata.str1.1 10133.LC118: 10134 .ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000" 10135 .text 10136 .align 2 10137 .global FtlVendorPartRead 10138 .syntax unified 10139 .arm 10140 .fpu softvfp 10141 .type FtlVendorPartRead, %function 10142FtlVendorPartRead: 10143 @ args = 0, pretend = 0, frame = 104 10144 @ frame_needed = 1, uses_anonymous_args = 0 10145 mov ip, sp 10146 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 10147 sub fp, ip, #4 10148 sub sp, sp, #108 10149 push {lr} 10150 bl __gnu_mcount_nc 10151 mov r3, sp 10152 ldr r6, .L1390 10153 bic r3, r3, #8128 10154 mov r9, r2 10155 bic r3, r3, #63 10156 str r3, [fp, #-136] 10157 add r2, r0, r1 10158 mov r8, r0 10159 mov r5, r1 10160 ldr r3, [r3, #24] 10161 str r3, [fp, #-48] 10162 mov r3, r6 10163 ldrh r7, [r3], #-12 10164 lsr r7, r0, r7 10165 ldrh r3, [r3] 10166 cmp r2, r3 10167 subls r6, r6, #308 10168 movls r10, #0 10169 bls .L1381 10170 mvn r10, #0 10171 b .L1379 10172.L1387: 10173 ldr r2, .L1390+4 10174 mov r0, r8 10175 ldr r3, [r6, #3372] 10176 ldrh r4, [r2] 10177 ldr r3, [r3, r7, lsl #2] 10178 mov r1, r4 10179 str r3, [fp, #-144] 10180 bl __aeabi_uidivmod 10181 sub r4, r4, r1 10182 ldr r3, [fp, #-144] 10183 uxth r4, r4 10184 str r1, [fp, #-140] 10185 cmp r4, r5 10186 uxthhi r4, r5 10187 cmp r3, #0 10188 lsl r2, r4, #9 10189 str r2, [fp, #-144] 10190 beq .L1383 10191 ldr r2, [r6, #3308] 10192 sub r0, fp, #132 10193 str r2, [fp, #-124] 10194 sub r2, fp, #112 10195 str r2, [fp, #-120] 10196 mov r2, #1 10197 mov r1, r2 10198 str r3, [fp, #-128] 10199 str r3, [fp, #-148] 10200 bl FlashReadPages 10201 ldr r2, [fp, #-132] 10202 ldr r3, [fp, #-148] 10203 cmn r2, #1 10204 ldr r2, [r6, #3452] 10205 mvneq r10, #0 10206 cmp r2, #256 10207 bne .L1385 10208 ldr r0, .L1390+8 10209 mov r2, r3 10210 mov r1, r7 10211 bl sftl_printk 10212 ldr r2, [r6, #3308] 10213 ldr r0, .L1390+12 10214 mov r1, r7 10215 bl FtlMapWritePage 10216.L1385: 10217 ldr r1, [r6, #3308] 10218 lsl r2, r4, #9 10219 ldr r3, [fp, #-140] 10220 mov r0, r9 10221 add r1, r1, r3, lsl #9 10222 bl ftl_memcpy 10223.L1386: 10224 ldr r3, [fp, #-144] 10225 add r7, r7, #1 10226 sub r5, r5, r4 10227 add r8, r8, r4 10228 add r9, r9, r3 10229.L1381: 10230 cmp r5, #0 10231 bne .L1387 10232.L1379: 10233 ldr r3, [fp, #-136] 10234 ldr r2, [fp, #-48] 10235 ldr r3, [r3, #24] 10236 cmp r2, r3 10237 beq .L1388 10238 bl __stack_chk_fail 10239.L1383: 10240 lsl r2, r4, #9 10241 mov r1, r3 10242 mov r0, r9 10243 bl ftl_memset 10244 b .L1386 10245.L1388: 10246 mov r0, r10 10247 sub sp, fp, #40 10248 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 10249.L1391: 10250 .align 2 10251.L1390: 10252 .word .LANCHOR0+308 10253 .word .LANCHOR0+258 10254 .word .LC118 10255 .word .LANCHOR0+3608 10256 .size FtlVendorPartRead, .-FtlVendorPartRead 10257 .section .rodata.str1.1 10258.LC119: 10259 .ascii "no ect\000" 10260 .text 10261 .align 2 10262 .global FtlLoadEctTbl 10263 .syntax unified 10264 .arm 10265 .fpu softvfp 10266 .type FtlLoadEctTbl, %function 10267FtlLoadEctTbl: 10268 @ args = 0, pretend = 0, frame = 0 10269 @ frame_needed = 1, uses_anonymous_args = 0 10270 mov ip, sp 10271 push {r4, r5, fp, ip, lr, pc} 10272 sub fp, ip, #4 10273 push {lr} 10274 bl __gnu_mcount_nc 10275 ldr r4, .L1394 10276 movw r5, #3340 10277 mov r0, #64 10278 ldr r2, [r4, #3348] 10279 ldrh r1, [r4, r5] 10280 bl FtlVendorPartRead 10281 ldr r3, [r4, #3348] 10282 ldr r2, [r3] 10283 ldr r3, .L1394+4 10284 cmp r2, r3 10285 beq .L1393 10286 ldr r1, .L1394+8 10287 ldr r0, .L1394+12 10288 bl sftl_printk 10289 ldrh r2, [r4, r5] 10290 ldr r0, [r4, #3348] 10291 mov r1, #0 10292 lsl r2, r2, #9 10293 bl ftl_memset 10294.L1393: 10295 mov r0, #0 10296 ldmfd sp, {r4, r5, fp, sp, pc} 10297.L1395: 10298 .align 2 10299.L1394: 10300 .word .LANCHOR0 10301 .word 1112818501 10302 .word .LC119 10303 .word .LC77 10304 .size FtlLoadEctTbl, .-FtlLoadEctTbl 10305 .align 2 10306 .global Ftl_load_ext_data 10307 .syntax unified 10308 .arm 10309 .fpu softvfp 10310 .type Ftl_load_ext_data, %function 10311Ftl_load_ext_data: 10312 @ args = 0, pretend = 0, frame = 0 10313 @ frame_needed = 1, uses_anonymous_args = 0 10314 mov ip, sp 10315 push {r4, r5, fp, ip, lr, pc} 10316 sub fp, ip, #4 10317 push {lr} 10318 bl __gnu_mcount_nc 10319 ldr r4, .L1398 10320 mov r1, #1 10321 mov r0, #0 10322 ldr r5, .L1398+4 10323 add r2, r4, #2640 10324 bl FtlVendorPartRead 10325 ldr r3, [r4, #2640] 10326 cmp r3, r5 10327 beq .L1397 10328 add r0, r4, #2640 10329 mov r2, #512 10330 mov r1, #0 10331 bl ftl_memset 10332 str r5, [r4, #2640] 10333.L1397: 10334 ldr r2, [r4, #2672] 10335 str r2, [r4, #2608] 10336 ldr r2, [r4, #2676] 10337 str r2, [r4, #2560] 10338 ldr r2, [r4, #2680] 10339 ldr r3, [r4, #2728] 10340 str r2, [r4, #2568] 10341 ldr r2, [r4, #2684] 10342 str r3, [r4, #2580] 10343 str r2, [r4, #2612] 10344 ldr r3, [r4, #2732] 10345 ldr r2, [r4, #2688] 10346 str r3, [r4, #2584] 10347 str r2, [r4, #2616] 10348 ldr r3, [r4, #2648] 10349 ldr r2, .L1398+8 10350 str r3, [r4, #2576] 10351 ldr r3, [r4, #2652] 10352 str r3, [r4, #2564] 10353 ldr r3, [r4, #2656] 10354 str r3, [r4, #2556] 10355 ldr r3, [r4, #2660] 10356 ldrh r2, [r2] 10357 str r3, [r4, #2572] 10358 ldr r0, [r4, #2596] 10359 ldr r3, [r4, #2668] 10360 ldrh r1, [r4, #240] 10361 str r3, [r4, #2600] 10362 mla r0, r0, r2, r3 10363 bl __aeabi_uidiv 10364 str r0, [r4, #2604] 10365 ldmfd sp, {r4, r5, fp, sp, pc} 10366.L1399: 10367 .align 2 10368.L1398: 10369 .word .LANCHOR0 10370 .word 1179929683 10371 .word .LANCHOR0+292 10372 .size Ftl_load_ext_data, .-Ftl_load_ext_data 10373 .align 2 10374 .global sftl_vendor_read 10375 .syntax unified 10376 .arm 10377 .fpu softvfp 10378 .type sftl_vendor_read, %function 10379sftl_vendor_read: 10380 @ args = 0, pretend = 0, frame = 0 10381 @ frame_needed = 1, uses_anonymous_args = 0 10382 mov ip, sp 10383 push {fp, ip, lr, pc} 10384 sub fp, ip, #4 10385 push {lr} 10386 bl __gnu_mcount_nc 10387 add r0, r0, #256 10388 bl FtlVendorPartRead 10389 ldmfd sp, {fp, sp, pc} 10390 .size sftl_vendor_read, .-sftl_vendor_read 10391 .align 2 10392 .global FtlMapBlkWriteDump_data 10393 .syntax unified 10394 .arm 10395 .fpu softvfp 10396 .type FtlMapBlkWriteDump_data, %function 10397FtlMapBlkWriteDump_data: 10398 @ args = 0, pretend = 0, frame = 0 10399 @ frame_needed = 1, uses_anonymous_args = 0 10400 mov ip, sp 10401 push {r4, r5, r6, r7, fp, ip, lr, pc} 10402 sub fp, ip, #4 10403 push {lr} 10404 bl __gnu_mcount_nc 10405 ldr r3, [r0, #36] 10406 mov r4, r0 10407 cmp r3, #0 10408 ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} 10409 ldrh r6, [r0, #6] 10410 mov r2, #0 10411 ldr r5, .L1408 10412 sub r6, r6, #1 10413 str r2, [r0, #36] 10414 ldr r3, [r0, #24] 10415 uxth r6, r6 10416 ldr r0, [r5, #3304] 10417 ldr r2, [r5, #3332] 10418 str r0, [r5, #3460] 10419 str r2, [r5, #3464] 10420 ldr r3, [r3, r6, lsl #2] 10421 str r3, [r5, #3456] 10422 cmp r3, #0 10423 beq .L1403 10424 mov r2, #1 10425 ldr r0, .L1408+4 10426 mov r1, r2 10427 bl FlashReadPages 10428.L1404: 10429 ldr r2, [r5, #3460] 10430 mov r1, r6 10431 mov r0, r4 10432 bl FtlMapWritePage 10433 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 10434.L1403: 10435 movw r3, #310 10436 mov r1, #255 10437 ldrh r2, [r5, r3] 10438 bl ftl_memset 10439 b .L1404 10440.L1409: 10441 .align 2 10442.L1408: 10443 .word .LANCHOR0 10444 .word .LANCHOR0+3452 10445 .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data 10446 .section .rodata.str1.1 10447.LC120: 10448 .ascii "FtlVpcTblFlush error = %x error count = %d\012\000" 10449 .text 10450 .align 2 10451 .global FtlVpcTblFlush 10452 .syntax unified 10453 .arm 10454 .fpu softvfp 10455 .type FtlVpcTblFlush, %function 10456FtlVpcTblFlush: 10457 @ args = 0, pretend = 0, frame = 0 10458 @ frame_needed = 1, uses_anonymous_args = 0 10459 mov ip, sp 10460 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 10461 sub fp, ip, #4 10462 push {lr} 10463 bl __gnu_mcount_nc 10464 ldr r4, .L1420 10465 mov r6, #0 10466 mov r1, #255 10467 add r5, r4, #2624 10468 add r9, r4, #304 10469 sub r8, r5, #156 10470 ldr r7, [r4, #3332] 10471 ldr r3, [r4, #3300] 10472 str r3, [r4, #3460] 10473 ldrh r3, [r5] 10474 str r7, [r4, #3464] 10475 strh r3, [r7, #2] @ movhi 10476 ldr r3, .L1420+4 10477 strh r3, [r7] @ movhi 10478 str r6, [r7, #12] 10479 ldr r3, [r4, #2632] 10480 str r3, [r7, #4] 10481 ldr r3, .L1420+8 10482 str r3, [r4, #2468] 10483 ldr r3, .L1420+12 10484 str r3, [r4, #2472] 10485 ldrh r3, [r5, #6] 10486 str r6, [r7, #8] 10487 strh r3, [r5, #-148] @ movhi 10488 ldrh r3, [r4, #254] 10489 strb r3, [r4, #2478] 10490 ldrh r3, [r4, #24] 10491 ldrh r2, [r4, #26] 10492 strh r3, [r5, #-142] @ movhi 10493 ldrb r3, [r4, #30] @ zero_extendqisi2 10494 orr r3, r3, r2, lsl #6 10495 strh r3, [r5, #-140] @ movhi 10496 ldrb r3, [r4, #32] @ zero_extendqisi2 10497 strb r3, [r4, #2479] 10498 ldrh r3, [r4, #76] 10499 ldrh r2, [r4, #78] 10500 strh r3, [r5, #-138] @ movhi 10501 ldrb r3, [r4, #82] @ zero_extendqisi2 10502 orr r3, r3, r2, lsl #6 10503 strh r3, [r5, #-136] @ movhi 10504 ldrb r3, [r4, #84] @ zero_extendqisi2 10505 strb r3, [r4, #2480] 10506 ldrh r3, [r4, #124] 10507 strh r3, [r5, #-134] @ movhi 10508 ldrh r2, [r4, #126] 10509 ldrb r3, [r4, #130] @ zero_extendqisi2 10510 ldr r0, [r4, #3460] 10511 orr r3, r3, r2, lsl #6 10512 strh r3, [r5, #-132] @ movhi 10513 ldrb r3, [r4, #132] @ zero_extendqisi2 10514 strb r3, [r4, #2481] 10515 ldr r3, [r4, #2596] 10516 str r3, [r4, #2500] 10517 ldr r3, [r4, #2588] 10518 str r3, [r4, #2508] 10519 ldr r3, [r4, #2592] 10520 str r3, [r4, #2504] 10521 movw r3, #310 10522 ldrh r2, [r4, r3] 10523 bl ftl_memset 10524 mov r1, r8 10525 mov r2, #48 10526 ldr r0, [r4, #3460] 10527 bl ftl_memcpy 10528 ldrh r2, [r4, #240] 10529 ldr r0, [r4, #3460] 10530 movw r8, #65535 10531 ldr r1, [r4, #72] 10532 lsl r2, r2, #1 10533 add r0, r0, #48 10534 bl ftl_memcpy 10535 mov r0, r6 10536 bl FtlUpdateVaildLpn 10537.L1411: 10538 ldrh r1, [r5, #2] 10539 ldrh r2, [r5] 10540 ldr r3, [r4, #3300] 10541 str r3, [r4, #3460] 10542 ldr r3, [r4, #3332] 10543 str r3, [r4, #3464] 10544 orr r3, r1, r2, lsl #10 10545 str r3, [r4, #3456] 10546 ldrh r3, [r9] 10547 sub r3, r3, #1 10548 cmp r1, r3 10549 blt .L1412 10550 mov r3, #0 10551 ldrh r8, [r5, #4] 10552 strh r3, [r5, #2] @ movhi 10553 strh r2, [r5, #4] @ movhi 10554 bl FtlFreeSysBlkQueueOut 10555 ldr r3, [r4, #2588] 10556 str r3, [r4, #2632] 10557 add r2, r3, #1 10558 strh r0, [r5] @ movhi 10559 str r2, [r4, #2588] 10560 lsl r2, r0, #10 10561 str r2, [r4, #3456] 10562 str r3, [r7, #4] 10563 strh r0, [r7, #2] @ movhi 10564.L1412: 10565 ldr r3, .L1420+16 10566 ldr r0, [r4, #3300] 10567 ldrh r1, [r3] 10568 bl js_hash 10569 mov r3, #1 10570 str r0, [r7, #12] 10571 mov r2, r3 10572 mov r1, r3 10573 ldr r0, .L1420+20 10574 bl FlashProgPages 10575 ldrh r3, [r5, #2] 10576 ldr r2, [r4, #3452] 10577 add r3, r3, #1 10578 cmn r2, #1 10579 uxth r3, r3 10580 strh r3, [r5, #2] @ movhi 10581 bne .L1413 10582 cmp r3, #1 10583 bne .L1415 10584 ldr r1, .L1420+24 10585 movw r2, #1145 10586 ldr r0, .L1420+28 10587 bl sftl_printk 10588 ldrh r3, [r5, #2] 10589 cmp r3, #1 10590 ldrheq r3, [r9] 10591 subeq r3, r3, #1 10592 strheq r3, [r5, #2] @ movhi 10593.L1415: 10594 add r6, r6, #1 10595 uxth r6, r6 10596 cmp r6, #3 10597 bls .L1411 10598 ldr r1, [r4, #3456] 10599 mov r2, r6 10600 ldr r0, .L1420+32 10601 bl sftl_printk 10602.L1418: 10603 b .L1418 10604.L1413: 10605 cmp r2, #256 10606 cmpne r3, #1 10607 beq .L1411 10608 movw r3, #65535 10609 cmp r8, r3 10610 beq .L1419 10611 mov r0, r8 10612 mov r1, #1 10613 bl FtlFreeSysBlkQueueIn 10614.L1419: 10615 mov r0, #0 10616 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 10617.L1421: 10618 .align 2 10619.L1420: 10620 .word .LANCHOR0 10621 .word -3932 10622 .word 1179929683 10623 .word 1342177369 10624 .word .LANCHOR0+310 10625 .word .LANCHOR0+3452 10626 .word .LANCHOR1+471 10627 .word .LC8 10628 .word .LC120 10629 .size FtlVpcTblFlush, .-FtlVpcTblFlush 10630 .align 2 10631 .global FtlSysFlush 10632 .syntax unified 10633 .arm 10634 .fpu softvfp 10635 .type FtlSysFlush, %function 10636FtlSysFlush: 10637 @ args = 0, pretend = 0, frame = 0 10638 @ frame_needed = 1, uses_anonymous_args = 0 10639 mov ip, sp 10640 push {fp, ip, lr, pc} 10641 sub fp, ip, #4 10642 push {lr} 10643 bl __gnu_mcount_nc 10644 bl l2p_flush 10645 mov r0, #1 10646 bl FtlEctTblFlush 10647 bl FtlVpcTblFlush 10648 mov r0, #0 10649 ldmfd sp, {fp, sp, pc} 10650 .size FtlSysFlush, .-FtlSysFlush 10651 .align 2 10652 .global sftl_deinit 10653 .syntax unified 10654 .arm 10655 .fpu softvfp 10656 .type sftl_deinit, %function 10657sftl_deinit: 10658 @ args = 0, pretend = 0, frame = 0 10659 @ frame_needed = 1, uses_anonymous_args = 0 10660 mov ip, sp 10661 push {fp, ip, lr, pc} 10662 sub fp, ip, #4 10663 push {lr} 10664 bl __gnu_mcount_nc 10665 ldr r3, .L1425 10666 ldr r3, [r3] 10667 cmp r3, #1 10668 bne .L1424 10669 bl FtlSysFlush 10670.L1424: 10671 mov r0, #0 10672 ldmfd sp, {fp, sp, pc} 10673.L1426: 10674 .align 2 10675.L1425: 10676 .word .LANCHOR2 10677 .size sftl_deinit, .-sftl_deinit 10678 .align 2 10679 .global sftl_discard 10680 .syntax unified 10681 .arm 10682 .fpu softvfp 10683 .type sftl_discard, %function 10684sftl_discard: 10685 @ args = 0, pretend = 0, frame = 16 10686 @ frame_needed = 1, uses_anonymous_args = 0 10687 mov ip, sp 10688 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 10689 sub fp, ip, #4 10690 sub sp, sp, #16 10691 push {lr} 10692 bl __gnu_mcount_nc 10693 mov r3, sp 10694 ldr r8, .L1444 10695 bic r7, r3, #8128 10696 mov r9, r0 10697 bic r7, r7, #63 10698 mov r4, r1 10699 ldr r3, [r7, #24] 10700 str r3, [fp, #-40] 10701 ldr r3, [r8, #340] 10702 cmp r3, r1 10703 cmpcs r3, r0 10704 bls .L1437 10705 add r2, r0, r1 10706 cmp r3, r2 10707 bcc .L1437 10708 cmp r1, #31 10709 bhi .L1429 10710.L1434: 10711 mov r0, #0 10712.L1427: 10713 ldr r2, [fp, #-40] 10714 ldr r3, [r7, #24] 10715 cmp r2, r3 10716 beq .L1435 10717 bl __stack_chk_fail 10718.L1429: 10719 movw r3, #258 10720 ldrh r5, [r8, r3] 10721 mov r1, r5 10722 bl __aeabi_uidiv 10723 mov r6, r0 10724 smulbb r0, r0, r5 10725 sub r9, r9, r0 10726 uxth r9, r9 10727 cmp r9, #0 10728 beq .L1430 10729 sub r5, r5, r9 10730 add r6, r6, #1 10731 cmp r5, r4 10732 movcs r5, r4 10733 uxth r5, r5 10734 sub r4, r4, r5 10735.L1430: 10736 ldr r5, .L1444+4 10737 mvn r3, #0 10738 str r3, [fp, #-44] 10739.L1431: 10740 ldrh r3, [r5] 10741 cmp r3, r4 10742 bls .L1433 10743 ldr r3, [r8, #3656] 10744 cmp r3, #32 10745 bls .L1434 10746 mov r4, #0 10747 str r4, [r8, #3656] 10748 bl l2p_flush 10749 bl FtlVpcTblFlush 10750 b .L1434 10751.L1433: 10752 sub r1, fp, #48 10753 mov r0, r6 10754 mov r2, #0 10755 bl log2phys 10756 ldr r3, [fp, #-48] 10757 cmn r3, #1 10758 beq .L1432 10759 ldr r3, [r8, #3656] 10760 sub r1, fp, #44 10761 mov r2, #1 10762 mov r0, r6 10763 add r3, r3, #1 10764 str r3, [r8, #3656] 10765 ldr r3, [r8, #2560] 10766 add r3, r3, #1 10767 str r3, [r8, #2560] 10768 bl log2phys 10769 ldr r0, [fp, #-48] 10770 ubfx r0, r0, #10, #16 10771 bl P2V_block_in_plane 10772 bl decrement_vpc_count 10773.L1432: 10774 ldrh r3, [r5] 10775 add r6, r6, #1 10776 sub r4, r4, r3 10777 b .L1431 10778.L1437: 10779 mvn r0, #0 10780 b .L1427 10781.L1435: 10782 sub sp, fp, #36 10783 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 10784.L1445: 10785 .align 2 10786.L1444: 10787 .word .LANCHOR0 10788 .word .LANCHOR0+258 10789 .size sftl_discard, .-sftl_discard 10790 .section .rodata.str1.1 10791.LC121: 10792 .ascii "FtlCheckVpc %x = %x %x\012\000" 10793 .text 10794 .align 2 10795 .global FtlVpcCheckAndModify 10796 .syntax unified 10797 .arm 10798 .fpu softvfp 10799 .type FtlVpcCheckAndModify, %function 10800FtlVpcCheckAndModify: 10801 @ args = 0, pretend = 0, frame = 8 10802 @ frame_needed = 1, uses_anonymous_args = 0 10803 mov ip, sp 10804 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 10805 sub fp, ip, #4 10806 sub sp, sp, #12 10807 push {lr} 10808 bl __gnu_mcount_nc 10809 mov r3, sp 10810 ldr r4, .L1461 10811 bic r7, r3, #8128 10812 ldr r1, .L1461+4 10813 bic r7, r7, #63 10814 ldr r0, .L1461+8 10815 mov r5, #0 10816 ldr r3, [r7, #24] 10817 str r3, [fp, #-48] 10818 bl sftl_printk 10819 ldrh r2, [r4, #242] 10820 mov r1, #0 10821 ldr r0, [r4, #3352] 10822 lsl r2, r2, #1 10823 bl ftl_memset 10824.L1447: 10825 ldr r3, [r4, #2552] 10826 cmp r3, r5 10827 bhi .L1449 10828 ldr r9, .L1461+12 10829 mov r8, #0 10830 ldr r10, .L1461+16 10831.L1450: 10832 ldrh r3, [r4, #240] 10833 uxth r5, r8 10834 cmp r3, r5 10835 bhi .L1456 10836 bl l2p_flush 10837 bl FtlVpcTblFlush 10838 ldr r2, [fp, #-48] 10839 ldr r3, [r7, #24] 10840 cmp r2, r3 10841 beq .L1457 10842 bl __stack_chk_fail 10843.L1449: 10844 sub r1, fp, #52 10845 mov r0, r5 10846 mov r2, #0 10847 bl log2phys 10848 ldr r0, [fp, #-52] 10849 cmn r0, #1 10850 beq .L1448 10851 ubfx r0, r0, #10, #16 10852 bl P2V_block_in_plane 10853 ldr r2, [r4, #3352] 10854 lsl r0, r0, #1 10855 ldrh r3, [r2, r0] 10856 add r3, r3, #1 10857 strh r3, [r2, r0] @ movhi 10858.L1448: 10859 add r5, r5, #1 10860 b .L1447 10861.L1456: 10862 uxth r1, r8 10863 ldr r3, [r4, #72] 10864 movw r0, #65535 10865 lsl r6, r1, #1 10866 ldrh r2, [r3, r6] 10867 ldr r3, [r4, #3352] 10868 ldrh r3, [r3, r6] 10869 cmp r2, r0 10870 cmpne r2, r3 10871 beq .L1452 10872 mov r0, r9 10873 bl sftl_printk 10874 ldrh r3, [r4, #24] 10875 cmp r3, r5 10876 beq .L1452 10877 ldrh r3, [r4, #124] 10878 cmp r3, r5 10879 beq .L1452 10880 ldrh r3, [r4, #76] 10881 cmp r3, r5 10882 beq .L1452 10883 ldr r3, [r4, #72] 10884 ldr r2, [r4, #3352] 10885 ldrh r1, [r3, r6] 10886 ldrh r2, [r2, r6] 10887 cmp r1, #0 10888 strh r2, [r3, r6] @ movhi 10889 bne .L1454 10890 mov r1, r5 10891 mov r0, r10 10892 bl List_remove_node 10893 ldrh r3, [r4, #224] 10894 cmp r3, #0 10895 bne .L1455 10896 ldr r1, .L1461+4 10897 movw r2, #2330 10898 ldr r0, .L1461+20 10899 bl sftl_printk 10900.L1455: 10901 ldrh r3, [r4, #224] 10902 mov r0, r5 10903 sub r3, r3, #1 10904 strh r3, [r4, #224] @ movhi 10905 bl INSERT_DATA_LIST 10906.L1452: 10907 add r8, r8, #1 10908 b .L1450 10909.L1454: 10910 mov r0, r5 10911 bl update_vpc_list 10912 b .L1452 10913.L1457: 10914 sub sp, fp, #40 10915 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 10916.L1462: 10917 .align 2 10918.L1461: 10919 .word .LANCHOR0 10920 .word .LANCHOR1+486 10921 .word .LC111 10922 .word .LC121 10923 .word .LANCHOR0+2532 10924 .word .LC8 10925 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify 10926 .align 2 10927 .global allocate_new_data_superblock 10928 .syntax unified 10929 .arm 10930 .fpu softvfp 10931 .type allocate_new_data_superblock, %function 10932allocate_new_data_superblock: 10933 @ args = 0, pretend = 0, frame = 0 10934 @ frame_needed = 1, uses_anonymous_args = 0 10935 mov ip, sp 10936 push {r4, r5, r6, r7, fp, ip, lr, pc} 10937 sub fp, ip, #4 10938 push {lr} 10939 bl __gnu_mcount_nc 10940 ldr r6, .L1473 10941 mov r5, r0 10942 ldrh r4, [r0] 10943 ldrh r3, [r6, #240] 10944 cmp r3, r4 10945 bcs .L1464 10946 ldr r1, .L1473+4 10947 movw r2, #2766 10948 ldr r0, .L1473+8 10949 bl sftl_printk 10950.L1464: 10951 movw r3, #65535 10952 cmp r4, r3 10953 beq .L1465 10954 ldr r2, [r6, #72] 10955 lsl r3, r4, #1 10956 mov r0, r4 10957 ldrh r3, [r2, r3] 10958 cmp r3, #0 10959 beq .L1466 10960 bl INSERT_DATA_LIST 10961.L1465: 10962 mov r3, #1 10963 strb r3, [r5, #8] 10964 movw r3, #3438 10965 ldrh r0, [r6, r3] 10966 movw r3, #65535 10967 cmp r0, r3 10968 beq .L1467 10969 cmp r0, r4 10970 bne .L1468 10971 ldr r3, [r6, #72] 10972 lsl r4, r4, #1 10973 ldrh r3, [r3, r4] 10974 cmp r3, #0 10975 beq .L1469 10976.L1468: 10977 bl update_vpc_list 10978.L1469: 10979 movw r3, #3438 10980 mvn r2, #0 10981 strh r2, [r6, r3] @ movhi 10982.L1467: 10983 mov r0, r5 10984 bl allocate_data_superblock 10985 bl l2p_flush 10986 mov r0, #0 10987 bl FtlEctTblFlush 10988 bl FtlVpcTblFlush 10989 mov r0, #0 10990 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 10991.L1466: 10992 bl INSERT_FREE_LIST 10993 b .L1465 10994.L1474: 10995 .align 2 10996.L1473: 10997 .word .LANCHOR0 10998 .word .LANCHOR1+507 10999 .word .LC8 11000 .size allocate_new_data_superblock, .-allocate_new_data_superblock 11001 .section .rodata.str1.1 11002.LC122: 11003 .ascii "FtlProgPages error %x = %d\012\000" 11004.LC123: 11005 .ascii "Ftlwrite decrement_vpc_count %x = %d\012\000" 11006 .text 11007 .align 2 11008 .global FtlProgPages 11009 .syntax unified 11010 .arm 11011 .fpu softvfp 11012 .type FtlProgPages, %function 11013FtlProgPages: 11014 @ args = 0, pretend = 0, frame = 16 11015 @ frame_needed = 1, uses_anonymous_args = 0 11016 mov ip, sp 11017 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 11018 sub fp, ip, #4 11019 sub sp, sp, #20 11020 push {lr} 11021 bl __gnu_mcount_nc 11022 mov r5, r3 11023 mov r3, sp 11024 bic r6, r3, #8128 11025 ldr r9, .L1493 11026 bic r6, r6, #63 11027 mov r7, #0 11028 mov r8, r7 11029 mov r2, #0 11030 mov r4, r0 11031 str r1, [fp, #-56] 11032 ldr r3, [r6, #24] 11033 str r3, [fp, #-48] 11034 ldrb r3, [r5, #9] @ zero_extendqisi2 11035 bl FlashProgPages 11036.L1476: 11037 ldr r3, [fp, #-56] 11038 cmp r8, r3 11039 beq .L1482 11040 ldr r10, .L1493+4 11041 b .L1483 11042.L1478: 11043 ldr r1, [r4, #4] 11044 mov r0, r10 11045 bl sftl_printk 11046 ldr r0, [r4, #4] 11047 ubfx r0, r0, #10, #16 11048 bl P2V_block_in_plane 11049 bl decrement_vpc_count 11050 ldrh r3, [r5, #4] 11051 cmp r3, #0 11052 bne .L1477 11053 mov r0, r5 11054 bl allocate_new_data_superblock 11055.L1477: 11056 mov r0, r5 11057 mov r7, #1 11058 bl get_new_active_ppa 11059 str r0, [r4, #4] 11060 str r0, [fp, #-52] 11061 mov r2, #0 11062 ldrb r3, [r5, #9] @ zero_extendqisi2 11063 mov r0, r4 11064 mov r1, #1 11065 bl FlashProgPages 11066.L1483: 11067 ldr r2, [r4] 11068 cmn r2, #1 11069 cmpne r2, #256 11070 beq .L1478 11071 ldrb r2, [r5, #6] @ zero_extendqisi2 11072 ldrh r3, [r9, #232] 11073 cmp r2, r3 11074 bcc .L1479 11075 ldr r1, .L1493+8 11076 movw r2, #986 11077 ldr r0, .L1493+12 11078 bl sftl_printk 11079.L1479: 11080 ldr r3, [r4, #4] 11081 sub r1, fp, #52 11082 ldr r0, [r4, #16] 11083 mov r2, #1 11084 str r3, [fp, #-52] 11085 bl log2phys 11086 ldr r3, [r4, #12] 11087 ldr r0, [r3, #12] 11088 cmn r0, #1 11089 beq .L1480 11090 ubfx r0, r0, #10, #16 11091 bl P2V_block_in_plane 11092 ldr r2, [r9, #72] 11093 lsl r3, r0, #1 11094 mov r10, r0 11095 ldrh r2, [r2, r3] 11096 cmp r2, #0 11097 bne .L1481 11098 mov r1, r0 11099 ldr r0, .L1493+16 11100 bl sftl_printk 11101.L1481: 11102 mov r0, r10 11103 bl decrement_vpc_count 11104.L1480: 11105 add r8, r8, #1 11106 add r4, r4, #20 11107 b .L1476 11108.L1482: 11109 cmp r7, #0 11110 beq .L1484 11111 bl FtlSysFlush 11112.L1484: 11113 ldr r3, .L1493 11114 ldrb r2, [r5, #6] @ zero_extendqisi2 11115 ldrh r3, [r3, #232] 11116 cmp r2, r3 11117 bcc .L1475 11118 ldr r1, .L1493+8 11119 movw r2, #1005 11120 ldr r0, .L1493+12 11121 bl sftl_printk 11122.L1475: 11123 ldr r2, [fp, #-48] 11124 ldr r3, [r6, #24] 11125 cmp r2, r3 11126 beq .L1486 11127 bl __stack_chk_fail 11128.L1486: 11129 sub sp, fp, #40 11130 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 11131.L1494: 11132 .align 2 11133.L1493: 11134 .word .LANCHOR0 11135 .word .LC122 11136 .word .LANCHOR1+536 11137 .word .LC8 11138 .word .LC123 11139 .size FtlProgPages, .-FtlProgPages 11140 .align 2 11141 .global FtlGcFreeTempBlock 11142 .syntax unified 11143 .arm 11144 .fpu softvfp 11145 .type FtlGcFreeTempBlock, %function 11146FtlGcFreeTempBlock: 11147 @ args = 0, pretend = 0, frame = 16 11148 @ frame_needed = 1, uses_anonymous_args = 0 11149 mov ip, sp 11150 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 11151 sub fp, ip, #4 11152 sub sp, sp, #20 11153 push {lr} 11154 bl __gnu_mcount_nc 11155 mov r3, sp 11156 ldr r4, .L1520 11157 bic r6, r3, #8128 11158 bic r6, r6, #63 11159 ldrh r2, [r4, #124] 11160 ldr r3, [r6, #24] 11161 str r3, [fp, #-48] 11162 movw r3, #302 11163 ldrh r1, [r4, r3] 11164 movw r3, #65535 11165 cmp r2, r3 11166 bne .L1496 11167.L1503: 11168 ldrh r2, [r4, #124] 11169 mov r3, #0 11170 str r3, [r4, #3444] 11171 movw r3, #65535 11172 cmp r2, r3 11173 bne .L1517 11174.L1497: 11175 mov r0, #0 11176 b .L1495 11177.L1496: 11178 ldr r5, .L1520+4 11179 cmp r0, #0 11180 beq .L1499 11181 ldrh r2, [r5, #4] 11182 cmp r2, r3 11183 beq .L1500 11184.L1501: 11185 mov r1, #2 11186.L1499: 11187 ldr r0, .L1520+8 11188 bl FtlGcScanTempBlk 11189 ldrh r2, [r5, #4] 11190 movw r3, #65535 11191 str r0, [fp, #-52] 11192 cmp r2, r3 11193 movne r0, #1 11194 beq .L1503 11195.L1495: 11196 ldr r2, [fp, #-48] 11197 ldr r3, [r6, #24] 11198 cmp r2, r3 11199 beq .L1512 11200 bl __stack_chk_fail 11201.L1500: 11202 mov r3, #0 11203 strh r3, [r5, #4] @ movhi 11204 ldrh r3, [r4, #224] 11205 cmp r3, #17 11206 bhi .L1501 11207 b .L1499 11208.L1517: 11209 movw r3, #3204 11210 movw r1, #302 11211 ldrh r2, [r4, r3] 11212 ldrh r1, [r4, r1] 11213 ldrb r3, [r4, #131] @ zero_extendqisi2 11214 mul r3, r1, r3 11215 cmp r2, r3 11216 beq .L1504 11217 ldr r1, .L1520+12 11218 mov r2, #164 11219 ldr r0, .L1520+16 11220 bl sftl_printk 11221.L1504: 11222 movw r0, #302 11223 ldrh r3, [r4, #124] 11224 ldrb r2, [r4, #131] @ zero_extendqisi2 11225 mov r5, #0 11226 ldrh r0, [r4, r0] 11227 mov r10, #12 11228 lsl r3, r3, #1 11229 ldr r1, [r4, #72] 11230 ldr r9, .L1520+20 11231 smulbb r2, r2, r0 11232 strh r2, [r1, r3] @ movhi 11233 movw r3, #3204 11234 ldr r2, [r4, #2576] 11235 ldrh r3, [r4, r3] 11236 add r3, r3, r2 11237 str r3, [r4, #2576] 11238.L1505: 11239 ldrh r2, [r9] 11240 uxth r3, r5 11241 cmp r2, r3 11242 bhi .L1509 11243 movw r0, #65535 11244 bl decrement_vpc_count 11245 ldrh r0, [r4, #124] 11246 ldr r2, [r4, #72] 11247 lsl r3, r0, #1 11248 ldrh r3, [r2, r3] 11249 cmp r3, #0 11250 beq .L1510 11251 bl INSERT_DATA_LIST 11252.L1511: 11253 movw r3, #3204 11254 mov r5, #0 11255 mvn r7, #0 11256 strh r7, [r4, #124] @ movhi 11257 strh r5, [r4, r3] @ movhi 11258 movw r3, #3196 11259 strh r5, [r4, r3] @ movhi 11260 bl l2p_flush 11261 bl FtlVpcTblFlush 11262 movw r3, #2620 11263 ldrh r2, [r4, #224] 11264 ldrh r3, [r4, r3] 11265 strh r7, [r4, #172] @ movhi 11266 add r3, r3, r3, lsl #1 11267 cmp r2, r3, lsr #2 11268 ldrgt r3, .L1520+24 11269 movgt r2, #20 11270 strhgt r2, [r3] @ movhi 11271 b .L1497 11272.L1509: 11273 uxth r8, r5 11274 ldr r3, [r4, #3200] 11275 ldr r2, [r4, #2552] 11276 mul r8, r10, r8 11277 add r7, r3, r8 11278 ldr r0, [r7, #8] 11279 cmp r0, r2 11280 bcc .L1506 11281.L1518: 11282 ldrh r0, [r4, #124] 11283 b .L1519 11284.L1506: 11285 mov r2, #0 11286 sub r1, fp, #52 11287 str r3, [fp, #-56] 11288 bl log2phys 11289 ldr r3, [fp, #-56] 11290 ldr r2, [fp, #-52] 11291 ldr r0, [r3, r8] 11292 cmp r0, r2 11293 bne .L1508 11294 ubfx r0, r0, #10, #16 11295 bl P2V_block_in_plane 11296 add r1, r7, #4 11297 mov r8, r0 11298 mov r2, #1 11299 ldr r0, [r7, #8] 11300 bl log2phys 11301 mov r0, r8 11302.L1519: 11303 bl decrement_vpc_count 11304 b .L1507 11305.L1508: 11306 ldr r3, [r7, #4] 11307 cmp r2, r3 11308 bne .L1518 11309.L1507: 11310 add r5, r5, #1 11311 b .L1505 11312.L1510: 11313 bl INSERT_FREE_LIST 11314 b .L1511 11315.L1512: 11316 sub sp, fp, #40 11317 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 11318.L1521: 11319 .align 2 11320.L1520: 11321 .word .LANCHOR0 11322 .word .LANCHOR2 11323 .word .LANCHOR0+124 11324 .word .LANCHOR1+549 11325 .word .LC8 11326 .word .LANCHOR0+3204 11327 .word .LANCHOR0+3152 11328 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock 11329 .align 2 11330 .global FtlGcPageRecovery 11331 .syntax unified 11332 .arm 11333 .fpu softvfp 11334 .type FtlGcPageRecovery, %function 11335FtlGcPageRecovery: 11336 @ args = 0, pretend = 0, frame = 0 11337 @ frame_needed = 1, uses_anonymous_args = 0 11338 mov ip, sp 11339 push {r4, r5, fp, ip, lr, pc} 11340 sub fp, ip, #4 11341 push {lr} 11342 bl __gnu_mcount_nc 11343 ldr r4, .L1524 11344 movw r5, #302 11345 add r0, r4, #124 11346 ldrh r1, [r4, r5] 11347 bl FtlGcScanTempBlk 11348 ldrh r2, [r4, #126] 11349 ldrh r3, [r4, r5] 11350 cmp r2, r3 11351 ldmfdcc sp, {r4, r5, fp, sp, pc} 11352 add r0, r4, #3392 11353 bl FtlMapBlkWriteDump_data 11354 mov r0, #0 11355 bl FtlGcFreeTempBlock 11356 mov r3, #0 11357 str r3, [r4, #3444] 11358 ldmfd sp, {r4, r5, fp, sp, pc} 11359.L1525: 11360 .align 2 11361.L1524: 11362 .word .LANCHOR0 11363 .size FtlGcPageRecovery, .-FtlGcPageRecovery 11364 .align 2 11365 .global FtlPowerLostRecovery 11366 .syntax unified 11367 .arm 11368 .fpu softvfp 11369 .type FtlPowerLostRecovery, %function 11370FtlPowerLostRecovery: 11371 @ args = 0, pretend = 0, frame = 0 11372 @ frame_needed = 1, uses_anonymous_args = 0 11373 mov ip, sp 11374 push {r4, r5, r6, r7, fp, ip, lr, pc} 11375 sub fp, ip, #4 11376 push {lr} 11377 bl __gnu_mcount_nc 11378 ldr r4, .L1527 11379 mov r5, #0 11380 add r6, r4, #24 11381 add r4, r4, #76 11382 mov r0, r6 11383 str r5, [r4, #3400] 11384 bl FtlRecoverySuperblock 11385 mov r0, r6 11386 bl FtlSlcSuperblockCheck 11387 mov r0, r4 11388 bl FtlRecoverySuperblock 11389 mov r0, r4 11390 bl FtlSlcSuperblockCheck 11391 bl FtlGcPageRecovery 11392 movw r0, #65535 11393 bl decrement_vpc_count 11394 mov r0, r5 11395 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 11396.L1528: 11397 .align 2 11398.L1527: 11399 .word .LANCHOR0 11400 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery 11401 .align 2 11402 .global Ftl_gc_temp_data_write_back 11403 .syntax unified 11404 .arm 11405 .fpu softvfp 11406 .type Ftl_gc_temp_data_write_back, %function 11407Ftl_gc_temp_data_write_back: 11408 @ args = 0, pretend = 0, frame = 0 11409 @ frame_needed = 1, uses_anonymous_args = 0 11410 mov ip, sp 11411 push {r4, r5, r6, r7, fp, ip, lr, pc} 11412 sub fp, ip, #4 11413 push {lr} 11414 bl __gnu_mcount_nc 11415 ldr r4, .L1537 11416 mov r5, #0 11417 mov r6, #20 11418 mov r3, #0 11419 mov r2, r3 11420 ldr r1, [r4, #3168] 11421 ldr r0, [r4, #3292] 11422 bl FlashProgPages 11423.L1530: 11424 ldr r1, [r4, #3168] 11425 uxth r3, r5 11426 ldr r2, [r4, #3292] 11427 cmp r3, r1 11428 bcc .L1533 11429 mov r0, r2 11430 bl FtlGcBufFree 11431 ldrh r3, [r4, #128] 11432 mov r0, #0 11433 str r0, [r4, #3168] 11434 cmp r3, r0 11435 ldmfdne sp, {r4, r5, r6, r7, fp, sp, pc} 11436 mov r0, #1 11437 bl FtlGcFreeTempBlock 11438 mov r0, #1 11439 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 11440.L1533: 11441 mul r3, r6, r3 11442 add r5, r5, #1 11443 add r1, r2, r3 11444 ldr r2, [r2, r3] 11445 ldr ip, [r1, #12] 11446 cmn r2, #1 11447 ldr r1, [r1, #4] 11448 ldr r0, [ip, #12] 11449 ldrne r2, [ip, #8] 11450 bl FtlGcUpdatePage 11451 b .L1530 11452.L1538: 11453 .align 2 11454.L1537: 11455 .word .LANCHOR0 11456 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back 11457 .align 2 11458 .global Ftl_get_new_temp_ppa 11459 .syntax unified 11460 .arm 11461 .fpu softvfp 11462 .type Ftl_get_new_temp_ppa, %function 11463Ftl_get_new_temp_ppa: 11464 @ args = 0, pretend = 0, frame = 0 11465 @ frame_needed = 1, uses_anonymous_args = 0 11466 mov ip, sp 11467 push {r4, r5, fp, ip, lr, pc} 11468 sub fp, ip, #4 11469 push {lr} 11470 bl __gnu_mcount_nc 11471 ldr r4, .L1542 11472 movw r3, #65535 11473 ldrh r2, [r4, #124] 11474 cmp r2, r3 11475 beq .L1540 11476 ldrh r3, [r4, #128] 11477 cmp r3, #0 11478 bne .L1541 11479.L1540: 11480 mov r0, #0 11481 mov r5, #0 11482 bl FtlGcFreeTempBlock 11483 ldr r0, .L1542+4 11484 strb r5, [r4, #132] 11485 bl allocate_data_superblock 11486 movw r3, #3196 11487 strh r5, [r4, r3] @ movhi 11488 movw r3, #3204 11489 strh r5, [r4, r3] @ movhi 11490 bl l2p_flush 11491 mov r0, r5 11492 bl FtlEctTblFlush 11493 bl FtlVpcTblFlush 11494.L1541: 11495 ldr r0, .L1542+4 11496 bl get_new_active_ppa 11497 ldmfd sp, {r4, r5, fp, sp, pc} 11498.L1543: 11499 .align 2 11500.L1542: 11501 .word .LANCHOR0 11502 .word .LANCHOR0+124 11503 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa 11504 .section .rodata.str1.1 11505.LC124: 11506 .ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000" 11507 .text 11508 .align 2 11509 .global rk_ftl_garbage_collect 11510 .syntax unified 11511 .arm 11512 .fpu softvfp 11513 .type rk_ftl_garbage_collect, %function 11514rk_ftl_garbage_collect: 11515 @ args = 0, pretend = 0, frame = 32 11516 @ frame_needed = 1, uses_anonymous_args = 0 11517 mov ip, sp 11518 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 11519 sub fp, ip, #4 11520 sub sp, sp, #44 11521 push {lr} 11522 bl __gnu_mcount_nc 11523 ldr r4, .L1660 11524 mov r3, sp 11525 bic r3, r3, #8128 11526 str r0, [fp, #-72] 11527 bic r3, r3, #63 11528 ldr r0, [r4, #3272] 11529 ldr r3, [r3, #24] 11530 cmp r0, #0 11531 str r3, [fp, #-48] 11532 movne r0, #0 11533 bne .L1544 11534 add r3, r4, #2528 11535 ldrh r3, [r3] 11536 cmp r3, #47 11537 bls .L1544 11538 ldr r3, .L1660+4 11539 ldrh r2, [r3, #4] 11540 movw r3, #65535 11541 cmp r2, r3 11542 bne .L1546 11543.L1549: 11544 ldrh r3, [r4, #220] 11545 movw r2, #65535 11546 cmp r3, r2 11547 bne .L1547 11548.L1548: 11549 bl FtlReadRefresh 11550 ldrh r0, [r4, #124] 11551 ldrh r5, [r4, #172] 11552 movw r6, #65535 11553 ldr r3, [r4, #3156] 11554 and r5, r5, r0 11555 ldrh r0, [r4, #222] 11556 ldr r2, [fp, #-72] 11557 add r3, r3, #1 11558 and r5, r5, r0 11559 cmp r5, r6 11560 add r3, r3, r2, lsl #7 11561 movne r5, r6 11562 str r3, [r4, #3156] 11563 bne .L1550 11564 ldrh r2, [r4, #224] 11565 cmp r2, #24 11566 movcc r2, #5120 11567 movcs r2, #1024 11568 cmp r3, r2 11569 bls .L1550 11570 movw r3, #3660 11571 mov r7, #0 11572 str r7, [r4, #3156] 11573 strh r7, [r4, r3] @ movhi 11574 bl GetSwlReplaceBlock 11575 mov r5, r0 11576 cmp r0, r6 11577 bne .L1552 11578 movw r6, #3154 11579 ldrh r2, [r4, #224] 11580 ldrh r3, [r4, r6] 11581 cmp r2, r3 11582 bcs .L1553 11583 mov r0, #64 11584 bl List_get_gc_head_node 11585 uxth r3, r0 11586 cmp r3, r5 11587 beq .L1555 11588 mov r0, r3 11589 ldr r3, [r4, #72] 11590 lsl r0, r0, #1 11591 ldrh r3, [r3, r0] 11592 cmp r3, #7 11593 bhi .L1556 11594 mov r0, r7 11595 bl List_get_gc_head_node 11596 uxth r0, r0 11597 mov r3, #128 11598 cmp r0, r5 11599 strh r3, [r4, r6] @ movhi 11600 beq .L1555 11601 mov r5, r0 11602.L1552: 11603 ldr r1, .L1660+8 11604 lsl r2, r5, #1 11605 ldr r3, [r4, #72] 11606 ldr r0, .L1660+12 11607 ldrh r1, [r1] 11608 ldrh r3, [r3, r2] 11609 str r1, [sp, #4] 11610 ldr r1, [r4, #2536] 11611 ldrh r2, [r1, r2] 11612 mov r1, r5 11613 str r2, [sp] 11614 ldrh r2, [r4, #224] 11615 bl sftl_printk 11616 b .L1555 11617.L1546: 11618 ldrh r2, [r4, #124] 11619 cmp r2, r3 11620 beq .L1549 11621 mov r0, #1 11622 bl FtlGcFreeTempBlock 11623 cmp r0, #0 11624 beq .L1549 11625 mov r0, #1 11626 b .L1544 11627.L1547: 11628 ldrh r1, [r4, #222] 11629 cmp r1, r2 11630 strheq r3, [r4, #222] @ movhi 11631 mvneq r3, #0 11632 strheq r3, [r4, #220] @ movhi 11633 b .L1548 11634.L1556: 11635 mov r3, #64 11636.L1656: 11637 strh r3, [r4, r6] @ movhi 11638.L1555: 11639 bl FtlGcReFreshBadBlk 11640.L1550: 11641 ldr r2, [fp, #-72] 11642 movw r3, #65535 11643 cmp r2, #0 11644 cmpeq r5, r3 11645 moveq r2, #1 11646 movne r2, #0 11647 bne .L1558 11648 ldrh r3, [r4, #224] 11649 cmp r3, #24 11650 movhi r6, #1 11651 bhi .L1559 11652 movw r2, #302 11653 cmp r3, #16 11654 ldrh r6, [r4, r2] 11655 lsrhi r6, r6, #5 11656 bhi .L1559 11657 cmp r3, #12 11658 lsrhi r6, r6, #4 11659 bhi .L1559 11660 cmp r3, #8 11661 lsrhi r6, r6, #2 11662.L1559: 11663 ldr r2, .L1660+8 11664 ldrh r1, [r2] 11665 cmp r1, r3 11666 bcs .L1562 11667 ldrh r1, [r4, #222] 11668 ldrh r3, [r4, #124] 11669 and r3, r3, r1 11670 movw r1, #65535 11671 cmp r3, r1 11672 bne .L1563 11673 movw r3, #3660 11674 ldrh r0, [r4, r3] 11675 cmp r0, #0 11676 bne .L1564 11677 ldr r3, [r4, #2552] 11678 ldr r1, [r4, #2548] 11679 add r3, r3, r3, lsl #1 11680 cmp r1, r3, lsr #2 11681 movcs r3, #18 11682 bcs .L1565 11683.L1564: 11684 movw r3, #2620 11685 ldrh r3, [r4, r3] 11686 add r3, r3, r3, lsl #1 11687 lsr r3, r3, #2 11688.L1565: 11689 strh r3, [r2] @ movhi 11690 mov r3, #0 11691 str r3, [r4, #3164] 11692.L1544: 11693 mov r3, sp 11694 ldr r2, [fp, #-48] 11695 bic r3, r3, #8128 11696 bic r3, r3, #63 11697 ldr r3, [r3, #24] 11698 cmp r2, r3 11699 beq .L1619 11700 bl __stack_chk_fail 11701.L1553: 11702 mov r3, #80 11703 b .L1656 11704.L1563: 11705 movw r3, #2620 11706 ldrh r3, [r4, r3] 11707 add r3, r3, r3, lsl #1 11708 asr r3, r3, #2 11709 strh r3, [r2] @ movhi 11710.L1562: 11711 movw r3, #3206 11712 movw r5, #65535 11713 ldrh r3, [r4, r3] 11714 cmp r3, #0 11715 addne r6, r6, #32 11716 uxthne r6, r6 11717.L1567: 11718 ldrh r3, [r4, #172] 11719 movw r2, #65535 11720 cmp r3, r2 11721 bne .L1575 11722 cmp r5, r3 11723 strhne r5, [r4, #172] @ movhi 11724 bne .L1577 11725 ldrh r3, [r4, #222] 11726 cmp r3, r5 11727 beq .L1577 11728 ldr r2, [r4, #72] 11729 lsl r3, r3, #1 11730 ldrh r3, [r2, r3] 11731 cmp r3, #0 11732 mvneq r3, #0 11733 strheq r3, [r4, #222] @ movhi 11734 ldrh r3, [r4, #222] 11735 strh r3, [r4, #172] @ movhi 11736 mvn r3, #0 11737 strh r3, [r4, #222] @ movhi 11738.L1577: 11739 ldrh r0, [r4, #172] 11740 mov r3, #0 11741 strb r3, [r4, #180] 11742 movw r3, #65535 11743 cmp r0, r3 11744 beq .L1575 11745 bl IsBlkInGcList 11746 subs r7, r0, #0 11747 beq .L1580 11748 mvn r3, #0 11749 strh r3, [r4, #172] @ movhi 11750.L1575: 11751 ldrh r3, [r4, #172] 11752 ldrh r2, [r4, #24] 11753 cmp r2, r3 11754 beq .L1581 11755 ldrh r2, [r4, #76] 11756 cmp r2, r3 11757 beq .L1581 11758 ldrh r2, [r4, #124] 11759 cmp r2, r3 11760 bne .L1582 11761.L1581: 11762 mvn r3, #0 11763 strh r3, [r4, #172] @ movhi 11764.L1582: 11765 ldr r4, .L1660 11766.L1617: 11767 ldrh r2, [r4, #172] 11768 movw r3, #65535 11769 cmp r2, r3 11770 bne .L1583 11771 ldr r7, .L1660+16 11772 mov r3, #0 11773 str r3, [r4, #3164] 11774.L1584: 11775 ldrh r9, [r7] 11776 mov r0, r9 11777 bl List_get_gc_head_node 11778 uxth r10, r0 11779 movw r3, #65535 11780 mov r8, r0 11781 cmp r10, r3 11782 strh r10, [r4, #172] @ movhi 11783 bne .L1585 11784 mov r3, #0 11785 mov r0, #8 11786 strh r3, [r7] @ movhi 11787 b .L1544 11788.L1558: 11789 ldrh r6, [r4, #124] 11790 ldrh r1, [r4, #222] 11791 and r6, r6, r1 11792 and r6, r6, r5 11793 cmp r6, r3 11794 bne .L1629 11795 ldrh r3, [r4, #172] 11796 cmp r3, r6 11797 beq .L1568 11798.L1572: 11799 mov r5, r6 11800.L1629: 11801 mov r6, #1 11802 b .L1567 11803.L1568: 11804 ldr r8, .L1660+8 11805 str r2, [r4, #3164] 11806 ldrh r2, [r4, #224] 11807 ldrh r3, [r8] 11808 cmp r2, r3 11809 bls .L1569 11810 movw r3, #3660 11811 ldrh r3, [r4, r3] 11812 cmp r3, #0 11813 bne .L1570 11814 ldr r3, [r4, #2552] 11815 ldr r2, [r4, #2548] 11816 add r3, r3, r3, lsl #1 11817 cmp r2, r3, lsr #2 11818 movcs r3, #18 11819 bcs .L1571 11820.L1570: 11821 movw r3, #2620 11822 ldrh r3, [r4, r3] 11823 add r3, r3, r3, lsl #1 11824 lsr r3, r3, #2 11825.L1571: 11826 strh r3, [r8] @ movhi 11827 bl FtlReadRefresh 11828 mov r0, #0 11829 bl List_get_gc_head_node 11830 uxth r0, r0 11831 ldr r3, [r4, #72] 11832 lsl r0, r0, #1 11833 ldrh r3, [r3, r0] 11834 cmp r3, #4 11835 bls .L1569 11836.L1659: 11837 movw r3, #3660 11838 ldrh r0, [r4, r3] 11839 b .L1544 11840.L1569: 11841 movw r5, #3660 11842 ldrh r0, [r4, r5] 11843 cmp r0, #0 11844 bne .L1572 11845 movw r3, #2620 11846 ldrh r7, [r4, r3] 11847 add r3, r7, r7, lsl #1 11848 asr r3, r3, #2 11849 strh r3, [r8] @ movhi 11850 bl List_get_gc_head_node 11851 uxth r0, r0 11852 ldr r3, [r4, #72] 11853 lsl r0, r0, #1 11854 ldrh r1, [r4, #232] 11855 ldrh r2, [r3, r0] 11856 ldr r3, .L1660+20 11857 ldrh r3, [r3] 11858 mul r3, r1, r3 11859 add r3, r3, r3, lsr #31 11860 cmp r2, r3, asr #1 11861 ble .L1573 11862 ldrh r3, [r4, #224] 11863 sub r7, r7, #1 11864 cmp r3, r7 11865 blt .L1573 11866 bl FtlReadRefresh 11867 ldrh r0, [r4, r5] 11868 b .L1544 11869.L1573: 11870 cmp r2, #0 11871 bne .L1572 11872 movw r0, #65535 11873 bl decrement_vpc_count 11874 ldrh r0, [r4, #224] 11875 add r0, r0, #1 11876 b .L1544 11877.L1585: 11878 mov r0, r10 11879 bl IsBlkInGcList 11880 add r3, r9, #1 11881 cmp r0, #0 11882 uxth r3, r3 11883 beq .L1586 11884.L1657: 11885 strh r3, [r7] @ movhi 11886 b .L1584 11887.L1586: 11888 ldr r2, .L1660+24 11889 uxth r8, r8 11890 ldrh ip, [r4, #232] 11891 ldr r1, [r4, #72] 11892 lsl r8, r8, #1 11893 strh r3, [r7] @ movhi 11894 ldrh r2, [r2] 11895 ldrh r0, [r1, r8] 11896 mul r2, ip, r2 11897 add ip, r2, r2, lsr #31 11898 cmp r0, ip, asr #1 11899 bgt .L1588 11900 cmp r0, #8 11901 cmphi r3, #48 11902 bls .L1589 11903 ldr r3, .L1660+28 11904 ldrh r3, [r3] 11905 cmp r3, #35 11906 bhi .L1589 11907.L1588: 11908 mov r3, #0 11909 strh r3, [r7] @ movhi 11910.L1589: 11911 ldrh r3, [r1, r8] 11912 movw r1, #65535 11913 cmp r2, r3 11914 cmple r5, r1 11915 bne .L1590 11916 ldrh r2, [r7] 11917 cmp r2, #3 11918 bhi .L1590 11919 mvn r3, #0 11920 strh r3, [r4, #172] @ movhi 11921 mov r3, #0 11922 strh r3, [r7] @ movhi 11923 b .L1659 11924.L1590: 11925 cmp r3, #0 11926 bne .L1591 11927 movw r0, #65535 11928 bl decrement_vpc_count 11929 ldrh r3, [r7] 11930 add r3, r3, #1 11931 b .L1657 11932.L1591: 11933 mov r3, #0 11934 strb r3, [r4, #180] 11935 ldrh r3, [r4, #24] 11936 cmp r3, r10 11937 bne .L1592 11938 ldr r1, .L1660+32 11939 movw r2, #717 11940 ldr r0, .L1660+36 11941 bl sftl_printk 11942.L1592: 11943 ldrh r2, [r4, #172] 11944 ldrh r3, [r4, #76] 11945 cmp r2, r3 11946 bne .L1593 11947 ldr r1, .L1660+32 11948 movw r2, #718 11949 ldr r0, .L1660+36 11950 bl sftl_printk 11951.L1593: 11952 ldrh r2, [r4, #172] 11953 ldrh r3, [r4, #124] 11954 cmp r2, r3 11955 bne .L1594 11956 ldr r1, .L1660+32 11957 movw r2, #719 11958 ldr r0, .L1660+36 11959 bl sftl_printk 11960.L1594: 11961 ldr r0, .L1660+40 11962 bl make_superblock 11963 ldr r1, .L1660+44 11964 ldrh r2, [r4, #172] 11965 mov r3, #0 11966 ldr r0, [r4, #72] 11967 lsl r2, r2, #1 11968 strh r3, [r1] @ movhi 11969 ldrh r2, [r0, r2] 11970 strh r2, [r1, #2] @ movhi 11971 strh r3, [r4, #174] @ movhi 11972 strb r3, [r4, #178] 11973.L1583: 11974 mov r3, #1 11975 str r3, [r4, #3272] 11976 ldr r3, .L1660+24 11977 ldrh r3, [r3] 11978 str r3, [fp, #-64] 11979 ldr r3, [fp, #-72] 11980 cmp r3, #0 11981 beq .L1595 11982 ldr r2, [fp, #-64] 11983 ldrh r3, [r4, #232] 11984 ldr r1, [r4, #72] 11985 mul r3, r2, r3 11986 ldrh r2, [r4, #172] 11987 lsl r2, r2, #1 11988 ldrh r2, [r1, r2] 11989 sub r3, r3, r2 11990 cmp r3, #0 11991 add r2, r3, #3 11992 movge r2, r3 11993 add r6, r6, r2, asr #2 11994 uxth r6, r6 11995.L1595: 11996 ldrh r3, [r4, #174] 11997 ldr r1, [fp, #-64] 11998 add r2, r3, r6 11999 cmp r2, r1 12000 movgt r2, r1 12001 subgt r3, r2, r3 12002 uxthgt r6, r3 12003 mov r3, #0 12004.L1658: 12005 str r3, [fp, #-68] 12006 ldrh r8, [r4, #174] 12007 ldrh r3, [fp, #-68] 12008 cmp r6, r3 12009 bls .L1605 12010 ldr r3, [fp, #-68] 12011 movw r9, #65535 12012 ldrh ip, [r4, #232] 12013 mov r10, #20 12014 add r8, r8, r3 12015 ldr r0, [r4, #3184] 12016 mov r3, #0 12017 ldr r1, .L1660+48 12018 mov r7, r3 12019 b .L1606 12020.L1599: 12021 ldrh r2, [r1], #2 12022 cmp r2, r9 12023 beq .L1598 12024 mla lr, r10, r7, r0 12025 add r7, r7, #1 12026 orr r2, r8, r2, lsl #10 12027 uxth r7, r7 12028 str r2, [lr, #4] 12029.L1598: 12030 add r3, r3, #1 12031.L1606: 12032 uxth r2, r3 12033 cmp ip, r2 12034 bhi .L1599 12035 mov r10, #0 12036 ldrb r2, [r4, #180] @ zero_extendqisi2 12037 mov r1, r7 12038 bl FlashReadPages 12039.L1600: 12040 uxth r3, r10 12041 cmp r7, r3 12042 ldrls r3, [fp, #-68] 12043 addls r3, r3, #1 12044 bls .L1658 12045.L1604: 12046 mov r8, #20 12047 ldr r3, [r4, #3184] 12048 mul r8, r8, r10 12049 add r2, r3, r8 12050 ldr r3, [r3, r8] 12051 cmn r3, #1 12052 beq .L1601 12053 ldr r9, [r2, #12] 12054 movw r3, #61589 12055 ldrh r2, [r9] 12056 cmp r2, r3 12057 bne .L1601 12058 ldr r3, [r9, #8] 12059 cmn r3, #1 12060 bne .L1602 12061 ldr r1, .L1660+32 12062 movw r2, #753 12063 ldr r0, .L1660+36 12064 str r3, [fp, #-76] 12065 bl sftl_printk 12066 ldr r3, [fp, #-76] 12067.L1602: 12068 sub r1, fp, #56 12069 mov r0, r3 12070 mov r2, #0 12071 bl log2phys 12072 ldr r1, [r4, #3184] 12073 ldr r3, [fp, #-56] 12074 add r1, r1, r8 12075 ldr r2, [r1, #4] 12076 cmp r2, r3 12077 bne .L1601 12078 ldr r2, .L1660+44 12079 ldr r0, [r4, #3168] 12080 ldr r1, [r1, #16] 12081 ldrh r3, [r2] 12082 add r3, r3, #1 12083 strh r3, [r2] @ movhi 12084 ldr r3, [r4, #3292] 12085 mov r2, #20 12086 mla r3, r2, r0, r3 12087 str r3, [fp, #-76] 12088 str r1, [r3, #16] 12089 bl Ftl_get_new_temp_ppa 12090 ldr r3, [fp, #-76] 12091 ldr r1, [r4, #3184] 12092 mov r2, #20 12093 str r0, [r3, #4] 12094 add r1, r1, r8 12095 ldr r0, [r4, #3168] 12096 ldr r3, [r4, #3292] 12097 mla r3, r2, r0, r3 12098 ldr r2, [r1, #8] 12099 str r2, [r3, #8] 12100 ldr r2, [r1, #12] 12101 mov r1, #1 12102 str r2, [r3, #12] 12103 ldr r3, [fp, #-56] 12104 str r3, [r9, #12] 12105 ldrh r3, [r4, #124] 12106 strh r3, [r9, #2] @ movhi 12107 ldr r3, [r4, #2592] 12108 ldr r0, [r4, #3184] 12109 str r3, [r9, #4] 12110 ldr r3, [r4, #3168] 12111 add r0, r0, r8 12112 add r3, r3, #1 12113 str r3, [r4, #3168] 12114 bl FtlGcBufAlloc 12115 ldrb r2, [r4, #131] @ zero_extendqisi2 12116 ldr r3, [r4, #3168] 12117 cmp r2, r3 12118 beq .L1603 12119 ldrh r3, [r4, #128] 12120 cmp r3, #0 12121 bne .L1601 12122.L1603: 12123 bl Ftl_gc_temp_data_write_back 12124 cmp r0, #0 12125 beq .L1601 12126 ldr r3, .L1660 12127 mov r2, #0 12128 str r2, [r3, #3272] 12129 movw r2, #65535 12130 str r2, [r3, #172] 12131 movw r2, #3660 12132 ldrh r0, [r3, r2] 12133 b .L1544 12134.L1601: 12135 add r10, r10, #1 12136 b .L1600 12137.L1605: 12138 add r6, r6, r8 12139 ldr r3, [fp, #-64] 12140 uxth r6, r6 12141 strh r6, [r4, #174] @ movhi 12142 cmp r3, r6 12143 bhi .L1607 12144 ldr r3, [r4, #3168] 12145 cmp r3, #0 12146 beq .L1608 12147 bl Ftl_gc_temp_data_write_back 12148 cmp r0, #0 12149 movne r3, #0 12150 strne r3, [r4, #3272] 12151 bne .L1659 12152.L1608: 12153 ldr r3, .L1660+44 12154 ldrh r6, [r3] 12155 cmp r6, #0 12156 bne .L1609 12157 ldrh r3, [r4, #172] 12158 ldr r2, [r4, #72] 12159 lsl r3, r3, #1 12160 ldrh r3, [r2, r3] 12161 cmp r3, #0 12162 beq .L1609 12163.L1610: 12164 ldr r3, [r4, #2552] 12165 cmp r6, r3 12166 bcc .L1613 12167.L1615: 12168 ldrh r3, [r4, #172] 12169 mov r1, #0 12170 ldr r2, [r4, #72] 12171 lsl r3, r3, #1 12172 strh r1, [r2, r3] @ movhi 12173 ldrh r0, [r4, #172] 12174 bl update_vpc_list 12175 bl l2p_flush 12176 bl FtlVpcTblFlush 12177.L1609: 12178 mvn r3, #0 12179 strh r3, [r4, #172] @ movhi 12180.L1607: 12181 mov r3, #0 12182 str r3, [r4, #3272] 12183 ldrh r3, [r4, #224] 12184 cmp r3, #2 12185 bhi .L1616 12186 ldr r3, .L1660+24 12187 ldrh r6, [r3] 12188 b .L1617 12189.L1613: 12190 sub r1, fp, #52 12191 mov r0, r6 12192 mov r2, #0 12193 bl log2phys 12194 ldr r0, [fp, #-52] 12195 cmn r0, #1 12196 beq .L1611 12197 ubfx r0, r0, #10, #16 12198 bl P2V_block_in_plane 12199 ldrh r3, [r4, #172] 12200 cmp r3, r0 12201 beq .L1612 12202.L1611: 12203 add r6, r6, #1 12204 b .L1610 12205.L1612: 12206 ldr r3, [r4, #2552] 12207 cmp r6, r3 12208 bcc .L1609 12209 b .L1615 12210.L1616: 12211 movw r2, #3660 12212 ldrh r0, [r4, r2] 12213 cmp r0, #0 12214 addeq r0, r3, #1 12215 b .L1544 12216.L1580: 12217 ldr r0, .L1660+40 12218 bl make_superblock 12219 movw r3, #3662 12220 ldr r2, [r4, #72] 12221 strh r7, [r4, r3] @ movhi 12222 ldrh r3, [r4, #172] 12223 strh r7, [r4, #174] @ movhi 12224 strb r7, [r4, #178] 12225 lsl r3, r3, #1 12226 ldrh r2, [r2, r3] 12227 ldr r3, .L1660+52 12228 strh r2, [r3] @ movhi 12229 b .L1575 12230.L1619: 12231 sub sp, fp, #40 12232 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 12233.L1661: 12234 .align 2 12235.L1660: 12236 .word .LANCHOR0 12237 .word .LANCHOR2 12238 .word .LANCHOR0+3152 12239 .word .LC124 12240 .word .LANCHOR0+3160 12241 .word .LANCHOR0+304 12242 .word .LANCHOR0+302 12243 .word .LANCHOR0+3196 12244 .word .LANCHOR1+568 12245 .word .LC8 12246 .word .LANCHOR0+172 12247 .word .LANCHOR0+3662 12248 .word .LANCHOR0+188 12249 .word .LANCHOR0+3664 12250 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect 12251 .align 2 12252 .global FtlRead 12253 .syntax unified 12254 .arm 12255 .fpu softvfp 12256 .type FtlRead, %function 12257FtlRead: 12258 @ args = 0, pretend = 0, frame = 56 12259 @ frame_needed = 1, uses_anonymous_args = 0 12260 mov ip, sp 12261 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 12262 sub fp, ip, #4 12263 sub sp, sp, #60 12264 push {lr} 12265 bl __gnu_mcount_nc 12266 mov r8, r3 12267 mov r3, sp 12268 bic r3, r3, #8128 12269 mov r5, r1 12270 bic r3, r3, #63 12271 cmp r0, #16 12272 str r2, [fp, #-60] 12273 ldr r3, [r3, #24] 12274 str r3, [fp, #-48] 12275 bne .L1663 12276 ldr r1, [fp, #-60] 12277 mov r2, r8 12278 add r0, r5, #256 12279 bl FtlVendorPartRead 12280 mov r6, r0 12281.L1662: 12282 mov r3, sp 12283 ldr r2, [fp, #-48] 12284 bic r3, r3, #8128 12285 bic r3, r3, #63 12286 ldr r3, [r3, #24] 12287 cmp r2, r3 12288 beq .L1685 12289 bl __stack_chk_fail 12290.L1663: 12291 ldr r4, .L1703 12292 ldr r2, [fp, #-60] 12293 ldr r3, [r4, #340] 12294 cmp r3, r2 12295 cmpcs r3, r1 12296 movls r7, #1 12297 movhi r7, #0 12298 bls .L1687 12299 add r2, r1, r2 12300 str r2, [fp, #-64] 12301 cmp r3, r2 12302 bcc .L1687 12303 ldr r3, .L1703+4 12304 ldr r6, [r3] 12305 cmn r6, #1 12306 beq .L1662 12307 movw r3, #258 12308 mov r0, r5 12309 ldrh r6, [r4, r3] 12310 mov r1, r6 12311 bl __aeabi_uidiv 12312 ldr r3, [fp, #-64] 12313 mov r1, r6 12314 str r0, [fp, #-72] 12315 sub r0, r3, #1 12316 mov r6, r7 12317 bl __aeabi_uidiv 12318 ldr r3, [fp, #-72] 12319 ldr r2, [fp, #-60] 12320 rsb r3, r3, #1 12321 ldr r9, [fp, #-72] 12322 add r3, r3, r0 12323 str r3, [fp, #-68] 12324 ldr r3, [r4, #2584] 12325 str r0, [fp, #-76] 12326 add r3, r3, r2 12327 ldr r2, [fp, #-68] 12328 str r3, [r4, #2584] 12329 ldr r3, [r4, #2556] 12330 str r7, [fp, #-56] 12331 add r3, r3, r2 12332 str r7, [fp, #-84] 12333 str r3, [r4, #2556] 12334 str r7, [fp, #-80] 12335.L1665: 12336 ldr r3, [fp, #-68] 12337 cmp r3, #0 12338 bne .L1683 12339 ldr r3, .L1703 12340 movw r2, #3206 12341 ldrh r2, [r3, r2] 12342 cmp r2, #0 12343 bne .L1684 12344 ldrh r3, [r3, #224] 12345 cmp r3, #31 12346 bhi .L1662 12347.L1684: 12348 mov r1, #1 12349 mov r0, #0 12350 bl rk_ftl_garbage_collect 12351 b .L1662 12352.L1683: 12353 sub r1, fp, #52 12354 mov r0, r9 12355 mov r2, #0 12356 bl log2phys 12357 ldr r3, [fp, #-52] 12358 cmn r3, #1 12359 bne .L1700 12360 ldr r3, .L1703+8 12361 mov r10, #0 12362 b .L1666 12363.L1669: 12364 mla r0, r9, r0, r10 12365 ldr r1, [fp, #-64] 12366 cmp r5, r0 12367 movls r2, #1 12368 movhi r2, #0 12369 cmp r1, r0 12370 movls r2, #0 12371 cmp r2, #0 12372 beq .L1668 12373 sub r0, r0, r5 12374 mov r2, #512 12375 mov r1, #0 12376 add r0, r8, r0, lsl #9 12377 bl ftl_memset 12378 ldr r3, .L1703+8 12379.L1668: 12380 add r10, r10, #1 12381.L1666: 12382 ldrh r0, [r3] 12383 cmp r0, r10 12384 bhi .L1669 12385.L1670: 12386 ldr r3, [fp, #-68] 12387 add r9, r9, #1 12388 subs r3, r3, #1 12389 str r3, [fp, #-68] 12390 beq .L1675 12391 ldrh r3, [r4, #232] 12392 cmp r7, r3, lsl #2 12393 bne .L1665 12394.L1675: 12395 cmp r7, #0 12396 beq .L1665 12397 ldr r0, [r4, #3288] 12398 mov r1, r7 12399 mov r2, #0 12400 mov r10, #0 12401 bl FlashReadPages 12402 ldr r3, [fp, #-56] 12403 lsl r3, r3, #9 12404 str r3, [fp, #-96] 12405 ldr r3, [fp, #-80] 12406 lsl r3, r3, #9 12407 str r3, [fp, #-88] 12408 ldr r3, [fp, #-84] 12409 lsl r3, r3, #9 12410 str r3, [fp, #-92] 12411.L1682: 12412 mov r3, #20 12413 ldr r2, [r4, #3288] 12414 ldr r0, [fp, #-72] 12415 mul r3, r3, r10 12416 add r2, r2, r3 12417 ldr r1, [r2, #16] 12418 cmp r1, r0 12419 bne .L1677 12420 ldr r1, [r2, #8] 12421 ldr r2, [r4, #3312] 12422 cmp r1, r2 12423 bne .L1678 12424 str r3, [fp, #-100] 12425 mov r0, r8 12426 ldrd r2, [fp, #-92] 12427 add r1, r1, r3 12428.L1702: 12429 bl ftl_memcpy 12430 ldr r3, [fp, #-100] 12431.L1678: 12432 ldr r1, [r4, #3288] 12433 add r2, r1, r3 12434 ldr r0, [r2, #12] 12435 ldr ip, [r2, #16] 12436 ldr r0, [r0, #8] 12437 cmp ip, r0 12438 ldrne r0, [r4, #2712] 12439 addne r0, r0, #1 12440 strne r0, [r4, #2712] 12441 ldr ip, [r1, r3] 12442 cmn ip, #1 12443 moveq r6, ip 12444 ldreq r0, [r4, #2712] 12445 addeq r0, r0, #1 12446 streq r0, [r4, #2712] 12447 ldr r3, [r1, r3] 12448 cmp r3, #256 12449 bne .L1681 12450 ldr r0, [r2, #4] 12451 ubfx r0, r0, #10, #16 12452 bl P2V_block_in_plane 12453 bl FtlGcRefreshBlock 12454.L1681: 12455 add r10, r10, #1 12456 cmp r7, r10 12457 bne .L1682 12458 mov r7, #0 12459 b .L1665 12460.L1700: 12461 ldr r10, [r4, #3288] 12462 mov r2, #20 12463 mla r10, r2, r7, r10 12464 str r3, [r10, #4] 12465 ldr r3, [fp, #-72] 12466 cmp r9, r3 12467 ldr r3, .L1703+8 12468 bne .L1671 12469 ldrh r3, [r3] 12470 mov r0, r5 12471 ldr r2, [r4, #3312] 12472 mov r1, r3 12473 str r2, [r10, #8] 12474 str r3, [fp, #-84] 12475 bl __aeabi_uidivmod 12476 ldr r3, [fp, #-84] 12477 str r1, [fp, #-80] 12478 sub r2, r3, r1 12479 ldr r1, [fp, #-60] 12480 cmp r1, r2 12481 movcc r2, r1 12482 str r2, [fp, #-84] 12483 cmp r3, r2 12484 streq r8, [r10, #8] 12485.L1672: 12486 ldr r3, .L1703+12 12487 ldr r2, [r4, #3336] 12488 str r9, [r10, #16] 12489 ldrh r3, [r3] 12490 mul r3, r7, r3 12491 add r7, r7, #1 12492 bic r3, r3, #3 12493 add r3, r2, r3 12494 str r3, [r10, #12] 12495 b .L1670 12496.L1671: 12497 ldrh r2, [r3] 12498 ldr r1, [fp, #-76] 12499 cmp r9, r1 12500 mul r3, r2, r9 12501 bne .L1673 12502 ldr r1, [fp, #-64] 12503 sub r1, r1, r3 12504 str r1, [fp, #-56] 12505 cmp r1, r2 12506 ldrne r3, [r4, #3316] 12507 bne .L1701 12508.L1673: 12509 sub r3, r3, r5 12510 add r3, r8, r3, lsl #9 12511.L1701: 12512 str r3, [r10, #8] 12513 b .L1672 12514.L1677: 12515 ldr r0, [fp, #-76] 12516 cmp r1, r0 12517 bne .L1678 12518 ldr r1, [r2, #8] 12519 ldr r2, [r4, #3316] 12520 cmp r1, r2 12521 bne .L1678 12522 ldr r2, .L1703+8 12523 str r3, [fp, #-100] 12524 ldr r3, [fp, #-76] 12525 ldrh r0, [r2] 12526 ldr r2, [fp, #-96] 12527 mul r0, r3, r0 12528 sub r0, r0, r5 12529 add r0, r8, r0, lsl #9 12530 b .L1702 12531.L1687: 12532 mvn r6, #0 12533 b .L1662 12534.L1685: 12535 mov r0, r6 12536 sub sp, fp, #40 12537 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 12538.L1704: 12539 .align 2 12540.L1703: 12541 .word .LANCHOR0 12542 .word .LANCHOR2 12543 .word .LANCHOR0+258 12544 .word .LANCHOR0+312 12545 .size FtlRead, .-FtlRead 12546 .align 2 12547 .global sftl_read 12548 .syntax unified 12549 .arm 12550 .fpu softvfp 12551 .type sftl_read, %function 12552sftl_read: 12553 @ args = 0, pretend = 0, frame = 0 12554 @ frame_needed = 1, uses_anonymous_args = 0 12555 mov ip, sp 12556 push {fp, ip, lr, pc} 12557 sub fp, ip, #4 12558 push {lr} 12559 bl __gnu_mcount_nc 12560 mov r3, r2 12561 mov r2, r1 12562 mov r1, r0 12563 mov r0, #0 12564 bl FtlRead 12565 ldmfd sp, {fp, sp, pc} 12566 .size sftl_read, .-sftl_read 12567 .section .rodata.str1.1 12568.LC125: 12569 .ascii "FtlWrite: ecc error:%x %x %x\012\000" 12570.LC126: 12571 .ascii "FtlWrite: lpa error:%x %x\012\000" 12572 .text 12573 .align 2 12574 .global FtlWrite 12575 .syntax unified 12576 .arm 12577 .fpu softvfp 12578 .type FtlWrite, %function 12579FtlWrite: 12580 @ args = 0, pretend = 0, frame = 80 12581 @ frame_needed = 1, uses_anonymous_args = 0 12582 mov ip, sp 12583 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 12584 sub fp, ip, #4 12585 sub sp, sp, #84 12586 push {lr} 12587 bl __gnu_mcount_nc 12588 str r3, [fp, #-92] 12589 mov r3, sp 12590 bic r3, r3, #8128 12591 mov r8, r1 12592 bic r3, r3, #63 12593 cmp r0, #16 12594 str r2, [fp, #-88] 12595 ldr r3, [r3, #24] 12596 str r3, [fp, #-48] 12597 bne .L1707 12598 ldr r2, [fp, #-92] 12599 add r0, r8, #256 12600 ldr r1, [fp, #-88] 12601 bl FtlVendorPartWrite 12602.L1706: 12603 mov r3, sp 12604 ldr r2, [fp, #-48] 12605 bic r3, r3, #8128 12606 bic r3, r3, #63 12607 ldr r3, [r3, #24] 12608 cmp r2, r3 12609 beq .L1744 12610 bl __stack_chk_fail 12611.L1707: 12612 ldr r4, .L1759 12613 ldr r2, [fp, #-88] 12614 ldr r3, [r4, #340] 12615 cmp r3, r2 12616 cmpcs r3, r1 12617 bls .L1746 12618 add r6, r1, r2 12619 cmp r3, r6 12620 bcc .L1746 12621 ldr r5, .L1759+4 12622 ldr r0, [r5] 12623 cmn r0, #1 12624 beq .L1706 12625 mov r3, #2048 12626 str r3, [r4, #3668] 12627 movw r3, #258 12628 mov r0, r8 12629 ldrh r7, [r4, r3] 12630 mov r1, r7 12631 bl __aeabi_uidiv 12632 mov r1, r7 12633 str r0, [fp, #-84] 12634 sub r0, r6, #1 12635 bl __aeabi_uidiv 12636 ldr r2, [fp, #-84] 12637 str r0, [fp, #-108] 12638 sub r3, r0, r2 12639 ldr r2, [fp, #-88] 12640 str r3, [fp, #-104] 12641 add r3, r3, #1 12642 str r3, [fp, #-80] 12643 ldr r3, [r4, #2580] 12644 add r3, r3, r2 12645 ldr r2, [fp, #-80] 12646 str r3, [r4, #2580] 12647 ldr r3, [r4, #2564] 12648 add r3, r3, r2 12649 str r3, [r4, #2564] 12650 ldr r3, [r5, #8] 12651 cmp r3, #0 12652 addeq r4, r4, #24 12653 beq .L1709 12654 ldrh r3, [r4, #28] 12655 cmp r3, #0 12656 addne r4, r4, #24 12657 addeq r4, r4, #76 12658.L1709: 12659 ldr r6, [fp, #-84] 12660 ldr r5, .L1759 12661.L1710: 12662 ldr r3, [fp, #-80] 12663 cmp r3, #0 12664 bne .L1740 12665 mov r0, r3 12666 ldr r1, [fp, #-104] 12667 bl rk_ftl_garbage_collect 12668 ldrh r3, [r5, #224] 12669 cmp r3, #5 12670 bls .L1751 12671.L1743: 12672 mov r0, #0 12673 b .L1706 12674.L1740: 12675 ldrb r2, [r4, #6] @ zero_extendqisi2 12676 ldrh r3, [r5, #232] 12677 cmp r2, r3 12678 bcc .L1711 12679 ldr r1, .L1759+8 12680 movw r2, #1046 12681 ldr r0, .L1759+12 12682 bl sftl_printk 12683.L1711: 12684 ldrh r3, [r4, #4] 12685 cmp r3, #0 12686 bne .L1712 12687 ldr r2, .L1759+16 12688 ldr r7, .L1759+4 12689 cmp r4, r2 12690 bne .L1713 12691 ldrh r9, [r5, #80] 12692 cmp r9, #0 12693 bne .L1714 12694 add r0, r4, #52 12695 bl allocate_new_data_superblock 12696 str r9, [r7, #8] 12697.L1714: 12698 ldr r0, .L1759+16 12699 bl allocate_new_data_superblock 12700 ldr r3, [r7, #8] 12701 cmp r3, #0 12702 ldrne r4, .L1759+20 12703 bne .L1715 12704.L1716: 12705 ldr r4, .L1759+16 12706.L1715: 12707 ldrh r3, [r4, #4] 12708 cmp r3, #0 12709 bne .L1712 12710 mov r0, r4 12711 bl allocate_new_data_superblock 12712.L1712: 12713 ldrh r3, [r4, #4] 12714 ldr r1, [fp, #-80] 12715 ldrb r2, [r4, #7] @ zero_extendqisi2 12716 cmp r3, r1 12717 movcs r3, r1 12718 lsl r2, r2, #2 12719 cmp r2, r3 12720 movcc r3, r2 12721 ldrb r2, [r4, #6] @ zero_extendqisi2 12722 str r3, [fp, #-120] 12723 ldrh r3, [r5, #232] 12724 cmp r2, r3 12725 bcc .L1717 12726 ldr r1, .L1759+8 12727 movw r2, #1079 12728 ldr r0, .L1759+12 12729 bl sftl_printk 12730.L1717: 12731 mov r10, #0 12732.L1718: 12733 ldr r3, [fp, #-120] 12734 cmp r3, r10 12735 bne .L1738 12736.L1719: 12737 mov r3, r4 12738 ldr r0, [r5, #3296] 12739 mov r1, r10 12740 mov r2, #0 12741 bl FtlProgPages 12742 ldr r3, [fp, #-80] 12743 cmp r3, r10 12744 bcs .L1739 12745 ldr r1, .L1759+8 12746 movw r2, #1157 12747 ldr r0, .L1759+12 12748 bl sftl_printk 12749.L1739: 12750 ldr r3, [fp, #-80] 12751 sub r3, r3, r10 12752 str r3, [fp, #-80] 12753 b .L1710 12754.L1713: 12755 str r3, [r7, #8] 12756 ldrh r3, [r5, #28] 12757 cmp r3, #0 12758 bne .L1716 12759 mov r0, r4 12760 bl allocate_new_data_superblock 12761 b .L1715 12762.L1738: 12763 ldrh r3, [r4, #4] 12764 cmp r3, #0 12765 beq .L1719 12766 sub r1, fp, #72 12767 mov r2, #0 12768 mov r0, r6 12769 bl log2phys 12770 mov r0, r4 12771 bl get_new_active_ppa 12772 mov r3, #20 12773 mul r3, r3, r10 12774 str r3, [fp, #-96] 12775 ldr r2, [fp, #-96] 12776 ldr r3, [r5, #3296] 12777 add r3, r3, r2 12778 ldr r2, .L1759+24 12779 str r0, [r3, #4] 12780 ldrh r2, [r2] 12781 str r6, [r3, #16] 12782 mul r1, r10, r2 12783 bic r1, r1, #3 12784 str r1, [fp, #-112] 12785 ldr r0, [fp, #-112] 12786 ldr r1, [r5, #3336] 12787 str r1, [fp, #-116] 12788 add r9, r1, r0 12789 mov r1, #0 12790 str r9, [r3, #12] 12791 mov r0, r9 12792 bl ftl_memset 12793 ldr r3, [fp, #-84] 12794 ldr r2, [fp, #-108] 12795 cmp r6, r2 12796 cmpne r6, r3 12797 ldr r3, .L1759+28 12798 bne .L1720 12799 ldr r2, [fp, #-84] 12800 ldrh r3, [r3] 12801 cmp r6, r2 12802 bne .L1721 12803 mov r1, r3 12804 mov r0, r8 12805 str r3, [fp, #-124] 12806 bl __aeabi_uidivmod 12807 ldr r3, [fp, #-124] 12808 ldr r2, [fp, #-88] 12809 sub r7, r3, r1 12810 str r1, [fp, #-100] 12811 cmp r7, r2 12812 movcs r7, r2 12813.L1722: 12814 ldr r0, [r5, #3296] 12815 cmp r3, r7 12816 ldr r2, [fp, #-96] 12817 add r0, r0, r2 12818 bne .L1723 12819 ldr r2, [fp, #-84] 12820 cmp r6, r2 12821 mulne r3, r6, r3 12822 ldrne r2, [fp, #-92] 12823 ldreq r3, [fp, #-92] 12824 subne r3, r3, r8 12825 addne r3, r2, r3, lsl #9 12826 str r3, [r0, #8] 12827.L1725: 12828 ldrb r2, [r4, #6] @ zero_extendqisi2 12829 ldrh r3, [r5, #232] 12830 cmp r2, r3 12831 bcc .L1735 12832 ldr r1, .L1759+8 12833 movw r2, #1148 12834 ldr r0, .L1759+12 12835 bl sftl_printk 12836.L1735: 12837 ldr r2, [fp, #-116] 12838 add r10, r10, #1 12839 ldr r1, [fp, #-112] 12840 ldr r3, .L1759+32 12841 strh r3, [r2, r1] @ movhi 12842 str r6, [r9, #8] 12843 add r6, r6, #1 12844 ldr r3, [r5, #2592] 12845 str r3, [r9, #4] 12846 cmn r3, #2 12847 add r2, r3, #1 12848 strne r2, [r5, #2592] 12849 moveq r3, #0 12850 streq r3, [r5, #2592] 12851 ldr r3, [fp, #-72] 12852 str r3, [r9, #12] 12853 ldrh r3, [r4] 12854 strh r3, [r9, #2] @ movhi 12855 b .L1718 12856.L1721: 12857 ldr r2, [fp, #-88] 12858 add r7, r8, r2 12859 smulbb r2, r6, r3 12860 sub r7, r7, r2 12861 mov r2, #0 12862 str r2, [fp, #-100] 12863 uxth r7, r7 12864 b .L1722 12865.L1723: 12866 ldr r3, [fp, #-84] 12867 cmp r6, r3 12868 ldreq r3, [r5, #3312] 12869 ldrne r3, [r5, #3316] 12870 str r3, [r0, #8] 12871 ldr r3, [fp, #-72] 12872 cmn r3, #1 12873 beq .L1728 12874 str r6, [fp, #-52] 12875 mov r2, #0 12876 str r3, [fp, #-64] 12877 mov r1, #1 12878 ldr r3, [r0, #8] 12879 str r3, [fp, #-60] 12880 ldr r3, [r0, #12] 12881 sub r0, fp, #68 12882 str r3, [fp, #-56] 12883 bl FlashReadPages 12884 ldr r3, [fp, #-68] 12885 cmn r3, #1 12886 bne .L1729 12887 ldr r2, [r5, #2712] 12888 ldr r0, .L1759+36 12889 add r2, r2, #1 12890 str r2, [r5, #2712] 12891 mov r2, r6 12892 ldr r1, [r9, #8] 12893 bl sftl_printk 12894.L1733: 12895 ldr r3, [fp, #-84] 12896 lsl r2, r7, #9 12897 cmp r6, r3 12898 bne .L1734 12899 ldr r1, [fp, #-96] 12900 ldr r3, [r5, #3296] 12901 add r3, r3, r1 12902 ldr r1, [fp, #-92] 12903 ldr r0, [r3, #8] 12904 ldr r3, [fp, #-100] 12905 add r0, r0, r3, lsl #9 12906.L1758: 12907 bl ftl_memcpy 12908 b .L1725 12909.L1729: 12910 ldr r3, [r9, #8] 12911 cmp r3, r6 12912 beq .L1733 12913 ldr r3, [r5, #2712] 12914 mov r2, r6 12915 ldr r0, .L1759+40 12916 add r3, r3, #1 12917 str r3, [r5, #2712] 12918 ldr r1, [r9, #8] 12919 bl sftl_printk 12920 ldr r3, [r9, #8] 12921 cmp r3, r6 12922 beq .L1733 12923 ldr r1, .L1759+8 12924 movw r2, #1133 12925 ldr r0, .L1759+12 12926 bl sftl_printk 12927 b .L1733 12928.L1728: 12929 ldr r3, .L1759+44 12930 mov r1, #0 12931 ldr r0, [r0, #8] 12932 ldrh r2, [r3] 12933 bl ftl_memset 12934 b .L1733 12935.L1734: 12936 ldr r3, .L1759+28 12937 ldr r0, [fp, #-96] 12938 ldrh r1, [r3] 12939 ldr r3, [r5, #3296] 12940 add r3, r3, r0 12941 ldr r0, [fp, #-92] 12942 mul r1, r6, r1 12943 sub r1, r1, r8 12944 add r1, r0, r1, lsl #9 12945 ldr r0, [r3, #8] 12946 b .L1758 12947.L1720: 12948 ldrh r3, [r3] 12949 ldr r1, [fp, #-96] 12950 ldr r2, [r5, #3296] 12951 mul r3, r6, r3 12952 add r2, r2, r1 12953 ldr r1, [fp, #-92] 12954 sub r3, r3, r8 12955 add r3, r1, r3, lsl #9 12956 str r3, [r2, #8] 12957 b .L1725 12958.L1751: 12959 ldr r6, .L1759+48 12960 mov r4, #256 12961.L1741: 12962 ldrh r2, [r5, #222] 12963 ldrh r3, [r5, #172] 12964 and r3, r3, r2 12965 movw r2, #65535 12966 cmp r3, r2 12967 bne .L1742 12968 mov r0, #0 12969 bl List_get_gc_head_node 12970 uxth r0, r0 12971 bl FtlGcRefreshBlock 12972.L1742: 12973 ldr r2, .L1759+52 12974 mov r1, #1 12975 mov r0, r1 12976 mov r3, #128 12977 strh r3, [r6] @ movhi 12978 strh r3, [r2] @ movhi 12979 bl rk_ftl_garbage_collect 12980 mov r1, #1 12981 mov r0, #0 12982 bl rk_ftl_garbage_collect 12983 ldrh r3, [r5, #224] 12984 cmp r3, #2 12985 bhi .L1743 12986 subs r4, r4, #1 12987 bne .L1741 12988 b .L1743 12989.L1746: 12990 mvn r0, #0 12991 b .L1706 12992.L1744: 12993 sub sp, fp, #40 12994 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 12995.L1760: 12996 .align 2 12997.L1759: 12998 .word .LANCHOR0 12999 .word .LANCHOR2 13000 .word .LANCHOR1+591 13001 .word .LC8 13002 .word .LANCHOR0+24 13003 .word .LANCHOR0+76 13004 .word .LANCHOR0+312 13005 .word .LANCHOR0+258 13006 .word -3947 13007 .word .LC125 13008 .word .LC126 13009 .word .LANCHOR0+310 13010 .word .LANCHOR0+3154 13011 .word .LANCHOR0+3152 13012 .size FtlWrite, .-FtlWrite 13013 .align 2 13014 .global sftl_gc 13015 .syntax unified 13016 .arm 13017 .fpu softvfp 13018 .type sftl_gc, %function 13019sftl_gc: 13020 @ args = 0, pretend = 0, frame = 0 13021 @ frame_needed = 1, uses_anonymous_args = 0 13022 mov ip, sp 13023 push {fp, ip, lr, pc} 13024 sub fp, ip, #4 13025 push {lr} 13026 bl __gnu_mcount_nc 13027 mov r1, #1 13028 mov r0, r1 13029 bl rk_ftl_garbage_collect 13030 ldmfd sp, {fp, sp, pc} 13031 .size sftl_gc, .-sftl_gc 13032 .section .rodata.str1.1 13033.LC127: 13034 .ascii "%s hash error this.id =%x page =%x pre_id =%x hash " 13035 .ascii "=%x hash_r =%x\012\000" 13036 .text 13037 .align 2 13038 .global FtlLoadSysInfo 13039 .syntax unified 13040 .arm 13041 .fpu softvfp 13042 .type FtlLoadSysInfo, %function 13043FtlLoadSysInfo: 13044 @ args = 0, pretend = 0, frame = 8 13045 @ frame_needed = 1, uses_anonymous_args = 0 13046 mov ip, sp 13047 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 13048 sub fp, ip, #4 13049 sub sp, sp, #28 13050 push {lr} 13051 bl __gnu_mcount_nc 13052 ldr r4, .L1790 13053 mov r1, #0 13054 add r6, r4, #2624 13055 ldrh r2, [r4, #240] 13056 ldr r3, [r4, #3300] 13057 str r3, [r4, #3460] 13058 ldr r0, [r4, #72] 13059 lsl r2, r2, #1 13060 ldr r3, [r4, #3332] 13061 str r3, [r4, #3464] 13062 bl ftl_memset 13063 ldrh r0, [r6] 13064 movw r3, #65535 13065 cmp r0, r3 13066 bne .L1763 13067.L1775: 13068 mvn r0, #0 13069.L1762: 13070 sub sp, fp, #40 13071 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 13072.L1763: 13073 mov r1, #1 13074 ldr r9, .L1790+4 13075 bl FtlGetLastWrittenPage 13076 ldr r10, .L1790+8 13077 ldrsh r7, [r6] 13078 sxth r5, r0 13079 add r3, r5, #1 13080 strh r3, [r6, #2] @ movhi 13081.L1765: 13082 cmp r5, #0 13083 bge .L1772 13084 ldr r1, .L1790+12 13085 movw r2, #1474 13086 ldr r0, .L1790+16 13087 bl sftl_printk 13088 b .L1771 13089.L1772: 13090 orr r3, r5, r7, lsl #10 13091 mov r2, #1 13092 str r3, [r4, #3456] 13093 mov r1, r2 13094 ldr r3, [r4, #3300] 13095 mov r0, r9 13096 str r3, [r4, #3460] 13097 bl FlashReadPages 13098 ldr r3, [r4, #3464] 13099 ldr r3, [r3, #12] 13100 str r3, [fp, #-48] 13101 cmp r3, #0 13102 beq .L1766 13103 ldr r2, [r4, #3452] 13104 cmn r2, #1 13105 beq .L1767 13106 ldr r8, .L1790+20 13107 ldr r0, [r4, #3460] 13108 ldrh r1, [r8] 13109 bl js_hash 13110 ldr r3, [fp, #-48] 13111 cmp r3, r0 13112 beq .L1768 13113 str r0, [sp, #8] 13114 mov r2, r7 13115 str r3, [sp, #4] 13116 ldr r1, .L1790+12 13117 ldrh r3, [r6, #4] 13118 str r3, [sp] 13119 mov r3, r5 13120 ldr r0, .L1790+24 13121 bl sftl_printk 13122 cmp r5, #0 13123 bne .L1769 13124 ldrh r3, [r6, #4] 13125 cmp r7, r3 13126 sxthne r7, r3 13127 ldrhne r5, [r8, #-6] 13128 bne .L1767 13129.L1769: 13130 mvn r3, #0 13131 str r3, [r4, #3452] 13132.L1767: 13133 sub r5, r5, #1 13134 sxth r5, r5 13135 b .L1765 13136.L1766: 13137 ldr r3, [r4, #3452] 13138 cmn r3, #1 13139 beq .L1767 13140.L1768: 13141 ldr r3, [r4, #3300] 13142 ldr r3, [r3] 13143 cmp r3, r10 13144 bne .L1767 13145 ldr r3, [r4, #3332] 13146 ldrh r2, [r3] 13147 movw r3, #61604 13148 cmp r2, r3 13149 bne .L1767 13150.L1771: 13151 movw r2, #310 13152 ldrh r3, [r4, #240] 13153 ldrh r2, [r4, r2] 13154 add r3, r3, #24 13155 cmp r2, r3, lsl #1 13156 bcs .L1774 13157 ldr r1, .L1790+12 13158 movw r2, #1476 13159 ldr r0, .L1790+16 13160 bl sftl_printk 13161.L1774: 13162 ldr r5, .L1790+28 13163 mov r2, #48 13164 ldr r1, [r4, #3460] 13165 mov r0, r5 13166 bl ftl_memcpy 13167 ldrh r2, [r4, #240] 13168 ldr r1, [r4, #3460] 13169 ldr r0, [r4, #72] 13170 lsl r2, r2, #1 13171 add r1, r1, #48 13172 bl ftl_memcpy 13173 ldr r2, [r4, #2468] 13174 ldr r3, .L1790+8 13175 cmp r2, r3 13176 bne .L1775 13177 ldrb r2, [r4, #2478] @ zero_extendqisi2 13178 ldrh r3, [r4, #254] 13179 ldrh r7, [r5, #8] 13180 cmp r2, r3 13181 strh r7, [r6, #6] @ movhi 13182 bne .L1775 13183 movw r3, #302 13184 movw r2, #258 13185 ldr r6, [r4, #244] 13186 ldrh r3, [r4, r3] 13187 ldrh r2, [r4, r2] 13188 ldrh r1, [r4, #232] 13189 str r7, [r4, #3672] 13190 mul r3, r7, r3 13191 str r3, [r4, #2552] 13192 mul r3, r3, r2 13193 str r3, [r4, #340] 13194 ldr r3, .L1790+32 13195 ldrh r0, [r3, #6] 13196 add r0, r0, r7 13197 sub r0, r6, r0 13198 bl __aeabi_uidiv 13199 movw r3, #2620 13200 cmp r7, r6 13201 strh r0, [r4, r3] @ movhi 13202 bls .L1776 13203 ldr r1, .L1790+12 13204 movw r2, #1498 13205 ldr r0, .L1790+16 13206 bl sftl_printk 13207.L1776: 13208 ldrh r3, [r5, #16] 13209 ldrh r1, [r5, #14] 13210 strh r1, [r4, #24] @ movhi 13211 lsr r2, r3, #6 13212 strh r2, [r4, #26] @ movhi 13213 ldrh r2, [r5, #18] 13214 and r3, r3, #63 13215 strh r2, [r4, #76] @ movhi 13216 ldrh r2, [r5, #20] 13217 strb r3, [r4, #30] 13218 ldrb r3, [r4, #2479] @ zero_extendqisi2 13219 lsr r0, r2, #6 13220 and r2, r2, #63 13221 strb r2, [r4, #82] 13222 ldrb r2, [r4, #2480] @ zero_extendqisi2 13223 strb r2, [r4, #84] 13224 ldrh r2, [r5, #22] 13225 strh r2, [r4, #124] @ movhi 13226 ldrh r2, [r5, #24] 13227 strh r0, [r4, #78] @ movhi 13228 strb r3, [r4, #32] 13229 movw r3, #65535 13230 lsr r0, r2, #6 13231 and r2, r2, #63 13232 strb r2, [r4, #130] 13233 ldrb r2, [r4, #2481] @ zero_extendqisi2 13234 strb r2, [r4, #132] 13235 ldr r2, [r4, #2500] 13236 str r3, [r4, #172] 13237 mov r3, #0 13238 str r2, [r4, #2596] 13239 strb r3, [r4, #178] 13240 strb r3, [r4, #180] 13241 str r3, [r4, #2576] 13242 str r3, [r4, #2564] 13243 str r3, [r4, #2556] 13244 str r3, [r4, #2572] 13245 str r3, [r4, #2600] 13246 str r3, [r4, #2612] 13247 strh r0, [r4, #126] @ movhi 13248 str r3, [r4, #2568] 13249 ldr r3, [r4, #2508] 13250 ldr r2, [r4, #2588] 13251 cmp r3, r2 13252 ldr r2, [r4, #2592] 13253 strhi r3, [r4, #2588] 13254 ldr r3, [r4, #2504] 13255 cmp r3, r2 13256 strhi r3, [r4, #2592] 13257 movw r3, #65535 13258 cmp r1, r3 13259 beq .L1779 13260 ldr r0, .L1790+36 13261 bl make_superblock 13262.L1779: 13263 ldrh r2, [r4, #76] 13264 movw r3, #65535 13265 cmp r2, r3 13266 beq .L1780 13267 ldr r0, .L1790+40 13268 bl make_superblock 13269.L1780: 13270 ldrh r2, [r4, #124] 13271 movw r3, #65535 13272 cmp r2, r3 13273 beq .L1781 13274 ldr r0, .L1790+44 13275 bl make_superblock 13276.L1781: 13277 ldrh r2, [r4, #172] 13278 movw r3, #65535 13279 cmp r2, r3 13280 beq .L1782 13281 ldr r0, .L1790+48 13282 bl make_superblock 13283.L1782: 13284 mov r0, #0 13285 b .L1762 13286.L1791: 13287 .align 2 13288.L1790: 13289 .word .LANCHOR0 13290 .word .LANCHOR0+3452 13291 .word 1179929683 13292 .word .LANCHOR1+600 13293 .word .LC8 13294 .word .LANCHOR0+310 13295 .word .LC127 13296 .word .LANCHOR0+2468 13297 .word .LANCHOR0+352 13298 .word .LANCHOR0+24 13299 .word .LANCHOR0+76 13300 .word .LANCHOR0+124 13301 .word .LANCHOR0+172 13302 .size FtlLoadSysInfo, .-FtlLoadSysInfo 13303 .section .rodata.str1.1 13304.LC128: 13305 .ascii "%s last blk_id =%x page =%x hash error hash =%x has" 13306 .ascii "h_r =%x\012\000" 13307.LC129: 13308 .ascii "%s scan blk_id =%x page =%x hash error hash =%x has" 13309 .ascii "h_r =%x\012\000" 13310 .text 13311 .align 2 13312 .global FtlMapTblRecovery 13313 .syntax unified 13314 .arm 13315 .fpu softvfp 13316 .type FtlMapTblRecovery, %function 13317FtlMapTblRecovery: 13318 @ args = 0, pretend = 0, frame = 32 13319 @ frame_needed = 1, uses_anonymous_args = 0 13320 mov ip, sp 13321 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 13322 sub fp, ip, #4 13323 sub sp, sp, #44 13324 push {lr} 13325 bl __gnu_mcount_nc 13326 ldr r3, [r0, #12] 13327 mov r4, r0 13328 str r3, [fp, #-56] 13329 mov r1, #0 13330 ldr r3, [r0, #16] 13331 mov r6, #0 13332 str r3, [fp, #-64] 13333 ldrh r3, [r0, #6] 13334 str r3, [fp, #-48] 13335 ldrh r3, [r0, #8] 13336 ldr r5, .L1831 13337 str r3, [fp, #-60] 13338 ldr r3, [fp, #-48] 13339 ldr r9, [r0, #24] 13340 lsl r2, r3, #2 13341 mov r0, r9 13342 bl ftl_memset 13343 ldr r3, [r5, #3300] 13344 ldr r8, [r5, #3332] 13345 str r3, [r5, #3460] 13346 mvn r3, #0 13347 str r8, [r5, #3464] 13348 str r6, [r4, #32] 13349 str r3, [r4] 13350 mov r3, #1 13351 str r6, [r4, #28] 13352 str r3, [r4, #36] 13353.L1793: 13354 ldr r3, [fp, #-60] 13355 sxth r7, r6 13356 uxth r10, r6 13357 cmp r7, r3 13358 bge .L1813 13359 ldr r2, [fp, #-56] 13360 lsl r3, r7, #1 13361 add r2, r2, r7, lsl #1 13362 str r2, [fp, #-52] 13363 ldr r2, [fp, #-60] 13364 sub r2, r2, #1 13365 cmp r2, r7 13366 bne .L1794 13367 ldr r3, [fp, #-52] 13368 mov r1, #1 13369 ldr r5, .L1831 13370 ldrh r0, [r3] 13371 bl FtlGetLastWrittenPage 13372 sxth r3, r0 13373 str r3, [fp, #-56] 13374 add r3, r3, #1 13375 strh r3, [r4, #2] @ movhi 13376 ldr r3, [fp, #-64] 13377 strh r10, [r4] @ movhi 13378 mov r10, #0 13379 ldr r3, [r3, r7, lsl #2] 13380 str r3, [r4, #28] 13381.L1795: 13382 ldr r3, [fp, #-56] 13383 sxth r6, r10 13384 add r2, r3, #1 13385 cmp r6, r2 13386 blt .L1799 13387.L1813: 13388 mov r0, r4 13389 bl ftl_free_no_use_map_blk 13390 ldr r3, .L1831+4 13391 ldrh r2, [r4, #2] 13392 ldrh r3, [r3] 13393 cmp r2, r3 13394 bne .L1801 13395 mov r0, r4 13396 bl ftl_map_blk_alloc_new_blk 13397.L1801: 13398 mov r0, r4 13399 bl ftl_map_blk_gc 13400 mov r0, r4 13401 bl ftl_map_blk_gc 13402 mov r0, #0 13403 sub sp, fp, #40 13404 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 13405.L1799: 13406 ldr r3, [fp, #-52] 13407 ldr r0, .L1831+8 13408 ldrh r2, [r3] 13409 orr r2, r6, r2, lsl #10 13410 str r2, [r5, #3456] 13411 mov r2, #1 13412 mov r1, r2 13413 bl FlashReadPages 13414 ldr r2, [r5, #3464] 13415 ldr r2, [r2, #12] 13416 str r2, [fp, #-60] 13417 cmp r2, #0 13418 beq .L1796 13419 ldr r1, [r5, #3452] 13420 cmn r1, #1 13421 beq .L1814 13422 ldr r1, .L1831+12 13423 ldr r0, [r5, #3460] 13424 ldrh r1, [r1] 13425 bl js_hash 13426 ldr r2, [fp, #-60] 13427 cmp r2, r0 13428 beq .L1798 13429 mov r3, r6 13430 str r0, [sp, #4] 13431 str r2, [sp] 13432 mov r2, r7 13433 ldr r1, .L1831+16 13434 ldr r0, .L1831+20 13435 bl sftl_printk 13436 mvn r3, #0 13437 str r3, [r5, #3452] 13438.L1814: 13439 add r10, r10, #1 13440 b .L1795 13441.L1796: 13442 ldr r3, [r5, #3452] 13443 cmn r3, #1 13444 beq .L1814 13445.L1798: 13446 ldrh r3, [r8, #8] 13447 ldr r2, [fp, #-48] 13448 cmp r3, r2 13449 bcs .L1814 13450 ldrh r2, [r4, #4] 13451 ldrh r1, [r8] 13452 cmp r1, r2 13453 ldreq r2, [r5, #3456] 13454 streq r2, [r9, r3, lsl #2] 13455 b .L1814 13456.L1794: 13457 ldr r2, [r5, #3300] 13458 str r2, [r5, #3460] 13459 ldr r2, [fp, #-56] 13460 ldr r0, .L1831+8 13461 ldrh r2, [r2, r3] 13462 ldr r3, .L1831+4 13463 ldrh r3, [r3] 13464 sub r3, r3, #1 13465 orr r3, r3, r2, lsl #10 13466 mov r2, #1 13467 mov r1, r2 13468 str r3, [r5, #3456] 13469 bl FlashReadPages 13470 ldr r3, [r5, #3452] 13471 cmn r3, #1 13472 beq .L1817 13473 ldrh r2, [r8] 13474 ldrh r3, [r4, #4] 13475 cmp r2, r3 13476 bne .L1817 13477 ldrh r2, [r8, #8] 13478 movw r3, #64245 13479 cmp r2, r3 13480 beq .L1818 13481.L1817: 13482 mov r10, #0 13483 b .L1809 13484.L1805: 13485 ldr r2, [r5, #3300] 13486 lsl lr, ip, #3 13487 ldr r7, [fp, #-48] 13488 add r1, r1, #1 13489 ldr r3, [r2, ip, lsl #3] 13490 uxth ip, r3 13491 cmp r7, ip 13492 addhi r2, r2, lr 13493 movhi r3, ip 13494 ldrhi r2, [r2, #4] 13495 strhi r2, [r9, r3, lsl #2] 13496.L1803: 13497 ldrh r3, [r0] 13498 sxth ip, r1 13499 sub r3, r3, #1 13500 cmp ip, r3 13501 blt .L1805 13502.L1811: 13503 add r6, r6, #1 13504 b .L1793 13505.L1818: 13506 ldr r0, .L1831+4 13507 mov r1, #0 13508 b .L1803 13509.L1810: 13510 ldr r2, [fp, #-52] 13511 ldr r0, .L1831+8 13512 str r3, [fp, #-72] 13513 ldrh r2, [r2] 13514 orr r2, r3, r2, lsl #10 13515 str r2, [r5, #3456] 13516 mov r2, #1 13517 mov r1, r2 13518 bl FlashReadPages 13519 ldr r2, [r5, #3464] 13520 ldr r2, [r2, #12] 13521 str r2, [fp, #-68] 13522 cmp r2, #0 13523 beq .L1806 13524 ldr r1, [r5, #3452] 13525 cmn r1, #1 13526 beq .L1815 13527 ldr r1, .L1831+12 13528 ldr r0, [r5, #3460] 13529 ldrh r1, [r1] 13530 bl js_hash 13531 ldr r2, [fp, #-68] 13532 cmp r2, r0 13533 beq .L1808 13534 ldr r3, [fp, #-72] 13535 str r0, [sp, #4] 13536 str r2, [sp] 13537 mov r2, r7 13538 ldr r1, .L1831+16 13539 ldr r0, .L1831+24 13540 bl sftl_printk 13541 mvn r3, #0 13542 str r3, [r5, #3452] 13543.L1815: 13544 add r10, r10, #1 13545.L1809: 13546 ldr r2, .L1831+4 13547 sxth r3, r10 13548 ldrh r2, [r2] 13549 cmp r3, r2 13550 blt .L1810 13551 b .L1811 13552.L1806: 13553 ldr r3, [r5, #3452] 13554 cmn r3, #1 13555 beq .L1815 13556.L1808: 13557 ldrh r3, [r8, #8] 13558 ldr r2, [fp, #-48] 13559 cmp r3, r2 13560 bcs .L1815 13561 ldrh r2, [r4, #4] 13562 ldrh r1, [r8] 13563 cmp r1, r2 13564 ldreq r2, [r5, #3456] 13565 streq r2, [r9, r3, lsl #2] 13566 b .L1815 13567.L1832: 13568 .align 2 13569.L1831: 13570 .word .LANCHOR0 13571 .word .LANCHOR0+304 13572 .word .LANCHOR0+3452 13573 .word .LANCHOR0+310 13574 .word .LANCHOR1+615 13575 .word .LC128 13576 .word .LC129 13577 .size FtlMapTblRecovery, .-FtlMapTblRecovery 13578 .align 2 13579 .global FtlLoadVonderInfo 13580 .syntax unified 13581 .arm 13582 .fpu softvfp 13583 .type FtlLoadVonderInfo, %function 13584FtlLoadVonderInfo: 13585 @ args = 0, pretend = 0, frame = 0 13586 @ frame_needed = 1, uses_anonymous_args = 0 13587 mov ip, sp 13588 push {fp, ip, lr, pc} 13589 sub fp, ip, #4 13590 push {lr} 13591 bl __gnu_mcount_nc 13592 ldr r3, .L1834 13593 add r0, r3, #3600 13594 add r2, r3, #320 13595 add r0, r0, #8 13596 ldrh r2, [r2] 13597 strh r2, [r0, #10] @ movhi 13598 ldr r2, .L1834+4 13599 strh r2, [r0, #4] @ movhi 13600 add r2, r3, #344 13601 ldrh r2, [r2] 13602 strh r2, [r0, #8] @ movhi 13603 movw r2, #322 13604 ldrh r2, [r3, r2] 13605 strh r2, [r0, #6] @ movhi 13606 ldr r2, [r3, #348] 13607 str r2, [r3, #3620] 13608 ldr r2, [r3, #3368] 13609 str r2, [r3, #3624] 13610 ldr r2, [r3, #3364] 13611 str r2, [r3, #3628] 13612 ldr r2, [r3, #3372] 13613 str r2, [r3, #3632] 13614 bl FtlMapTblRecovery 13615 mov r0, #0 13616 ldmfd sp, {fp, sp, pc} 13617.L1835: 13618 .align 2 13619.L1834: 13620 .word .LANCHOR0 13621 .word -3962 13622 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo 13623 .align 2 13624 .global FtlLoadMapInfo 13625 .syntax unified 13626 .arm 13627 .fpu softvfp 13628 .type FtlLoadMapInfo, %function 13629FtlLoadMapInfo: 13630 @ args = 0, pretend = 0, frame = 0 13631 @ frame_needed = 1, uses_anonymous_args = 0 13632 mov ip, sp 13633 push {fp, ip, lr, pc} 13634 sub fp, ip, #4 13635 push {lr} 13636 bl __gnu_mcount_nc 13637 bl FtlL2PDataInit 13638 ldr r0, .L1837 13639 bl FtlMapTblRecovery 13640 mov r0, #0 13641 ldmfd sp, {fp, sp, pc} 13642.L1838: 13643 .align 2 13644.L1837: 13645 .word .LANCHOR0+3392 13646 .size FtlLoadMapInfo, .-FtlLoadMapInfo 13647 .align 2 13648 .global FtlSysBlkInit 13649 .syntax unified 13650 .arm 13651 .fpu softvfp 13652 .type FtlSysBlkInit, %function 13653FtlSysBlkInit: 13654 @ args = 0, pretend = 0, frame = 0 13655 @ frame_needed = 1, uses_anonymous_args = 0 13656 mov ip, sp 13657 push {r4, r5, r6, r7, fp, ip, lr, pc} 13658 sub fp, ip, #4 13659 push {lr} 13660 bl __gnu_mcount_nc 13661 ldr r4, .L1855 13662 mov r3, #0 13663 add r7, r4, #3472 13664 ldrh r0, [r4, #236] 13665 strh r3, [r7] @ movhi 13666 bl FtlFreeSysBlkQueueInit 13667 bl FtlScanSysBlk 13668 add r3, r4, #2624 13669 ldrh r2, [r3] 13670 movw r3, #65535 13671 cmp r2, r3 13672 bne .L1840 13673.L1842: 13674 mvn r5, #0 13675.L1839: 13676 mov r0, r5 13677 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 13678.L1840: 13679 bl FtlLoadSysInfo 13680 subs r5, r0, #0 13681 bne .L1842 13682 bl FtlLoadMapInfo 13683 bl FtlLoadVonderInfo 13684 bl Ftl_load_ext_data 13685 bl FtlLoadEctTbl 13686 bl FtlFreeSysBLkSort 13687 bl SupperBlkListInit 13688 bl FtlPowerLostRecovery 13689 mov r0, #1 13690 bl FtlUpdateVaildLpn 13691 movw r3, #338 13692 ldr r2, [r4, #2540] 13693 mov r0, #12 13694 ldrh r1, [r4, r3] 13695 mov r3, r5 13696 add r2, r2, #4 13697.L1843: 13698 cmp r3, r1 13699 bge .L1848 13700 mul ip, r0, r3 13701 ldr ip, [r2, ip] 13702 cmp ip, #0 13703 bge .L1844 13704.L1848: 13705 ldr r6, .L1855+4 13706 cmp r3, r1 13707 ldrh r2, [r6, #28] 13708 add r2, r2, #1 13709 strh r2, [r6, #28] @ movhi 13710 bge .L1854 13711.L1845: 13712 ldr r0, .L1855+8 13713 bl FtlSuperblockPowerLostFix 13714 ldr r0, .L1855+12 13715 bl FtlSuperblockPowerLostFix 13716 ldrh r3, [r4, #24] 13717 ldr r1, [r4, #72] 13718 ldrh r0, [r4, #28] 13719 lsl r3, r3, #1 13720 ldrh r2, [r1, r3] 13721 sub r2, r2, r0 13722 strh r2, [r1, r3] @ movhi 13723 movw r0, #302 13724 ldrh r2, [r4, #76] 13725 ldr ip, [r4, #72] 13726 ldrh r3, [r4, r0] 13727 lsl r2, r2, #1 13728 strh r3, [r4, #26] @ movhi 13729 mov r3, #0 13730 strb r3, [r4, #30] 13731 strh r3, [r4, #28] @ movhi 13732 ldrh lr, [r4, #80] 13733 ldrh r1, [ip, r2] 13734 sub r1, r1, lr 13735 strh r1, [ip, r2] @ movhi 13736 strb r3, [r4, #82] 13737 strh r3, [r4, #80] @ movhi 13738 ldrh r3, [r6, #30] 13739 ldrh r2, [r4, r0] 13740 add r3, r3, #1 13741 strh r2, [r4, #78] @ movhi 13742 strh r3, [r6, #30] @ movhi 13743 bl l2p_flush 13744 bl FtlVpcTblFlush 13745 bl FtlVpcTblFlush 13746 b .L1849 13747.L1844: 13748 add r3, r3, #1 13749 b .L1843 13750.L1854: 13751 ldrh r3, [r7] 13752 cmp r3, #0 13753 bne .L1845 13754.L1849: 13755 ldrh r0, [r4, #24] 13756 movw r3, #65535 13757 cmp r0, r3 13758 beq .L1850 13759 ldrh r2, [r4, #28] 13760 ldrh r3, [r4, #80] 13761 orrs r3, r2, r3 13762 bne .L1850 13763 bl FtlGcRefreshBlock 13764 ldrh r0, [r4, #76] 13765 bl FtlGcRefreshBlock 13766 bl FtlVpcTblFlush 13767 ldr r0, .L1855+8 13768 bl allocate_new_data_superblock 13769 ldr r0, .L1855+12 13770 bl allocate_new_data_superblock 13771.L1850: 13772 bl FtlVpcCheckAndModify 13773 b .L1839 13774.L1856: 13775 .align 2 13776.L1855: 13777 .word .LANCHOR0 13778 .word .LANCHOR0+2468 13779 .word .LANCHOR0+24 13780 .word .LANCHOR0+76 13781 .size FtlSysBlkInit, .-FtlSysBlkInit 13782 .align 2 13783 .global ftl_low_format 13784 .syntax unified 13785 .arm 13786 .fpu softvfp 13787 .type ftl_low_format, %function 13788ftl_low_format: 13789 @ args = 0, pretend = 0, frame = 0 13790 @ frame_needed = 1, uses_anonymous_args = 0 13791 mov ip, sp 13792 push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 13793 sub fp, ip, #4 13794 push {lr} 13795 bl __gnu_mcount_nc 13796 ldr r4, .L1881 13797 mov r3, #0 13798 ldrh r0, [r4, #236] 13799 str r3, [r4, #2588] 13800 str r3, [r4, #2592] 13801 str r3, [r4, #2604] 13802 bl FtlFreeSysBlkQueueInit 13803 bl FtlLoadBbt 13804 cmp r0, #0 13805 beq .L1858 13806 bl FtlMakeBbt 13807.L1858: 13808 ldr r0, .L1881+4 13809 mov r2, #0 13810 ldr ip, .L1881+8 13811.L1859: 13812 ldrh r1, [r0] 13813 uxth r3, r2 13814 add r2, r2, #1 13815 cmp r3, r1, lsl #7 13816 blt .L1860 13817 ldrh r6, [r4, #240] 13818 mov r5, #0 13819.L1861: 13820 ldrh r3, [r4, #242] 13821 cmp r3, r6 13822 bhi .L1862 13823 ldrh r1, [r4, #232] 13824 sub r3, r5, #3 13825 cmp r3, r1, lsl #1 13826 bge .L1863 13827.L1867: 13828 mov r5, #0 13829 mov r6, r5 13830.L1864: 13831 ldrh r3, [r4, #240] 13832 uxth r0, r5 13833 cmp r3, r0 13834 bhi .L1868 13835 ldrh r9, [r4, #232] 13836 movw r8, #2620 13837 ldr r10, [r4, #244] 13838 ldrh r3, [r4, #242] 13839 mov r1, r9 13840 mov r0, r10 13841 str r3, [r4, #3284] 13842 bl __aeabi_uidiv 13843 ubfx r7, r0, #5, #16 13844 add r3, r7, #36 13845 strh r3, [r4, r8] @ movhi 13846 mov r3, #24 13847 mov r5, r0 13848 str r0, [r4, #2552] 13849 mul r3, r3, r9 13850 cmp r6, r3 13851 ble .L1869 13852 mov r1, r9 13853 sub r0, r10, r6 13854 bl __aeabi_uidiv 13855 lsr r3, r0, #5 13856 add r3, r3, #24 13857 str r0, [r4, #2552] 13858 strh r3, [r4, r8] @ movhi 13859.L1869: 13860 movw r3, #294 13861 ldrh r3, [r4, r3] 13862 cmp r3, #0 13863 beq .L1871 13864 movw r2, #2620 13865 ldrh r1, [r4, r2] 13866 add r1, r1, r3, lsr #1 13867 strh r1, [r4, r2] @ movhi 13868 mul r1, r9, r3 13869 cmp r6, r1 13870 strlt r5, [r4, #2552] 13871 addlt r3, r3, #32 13872 addlt r3, r7, r3 13873 strhlt r3, [r4, r2] @ movhi 13874.L1871: 13875 movw r3, #2620 13876 ldr r1, [r4, #2552] 13877 ldr r6, .L1881+12 13878 mvn r5, #0 13879 ldrh r3, [r4, r3] 13880 sub r1, r1, r3 13881 movw r3, #302 13882 ldrh r3, [r4, r3] 13883 mul r1, r9, r1 13884 str r1, [r4, #3672] 13885 mul r1, r1, r3 13886 movw r3, #258 13887 str r1, [r4, #2552] 13888 ldrh r3, [r4, r3] 13889 mul r1, r1, r3 13890 str r1, [r4, #340] 13891 bl FtlBbmTblFlush 13892 ldrh r2, [r4, #242] 13893 mov r1, #0 13894 ldr r0, [r4, #72] 13895 lsl r2, r2, #1 13896 bl ftl_memset 13897 mov r3, #0 13898 movw r2, #65535 13899 str r3, [r4, #2548] 13900 strb r3, [r4, #178] 13901 strb r3, [r4, #180] 13902 strb r3, [r4, #30] 13903 str r3, [r4, #24] 13904 mov r3, #1 13905 str r2, [r4, #172] 13906 strb r3, [r4, #32] 13907.L1873: 13908 mov r0, r6 13909 bl make_superblock 13910 ldrb r3, [r4, #31] @ zero_extendqisi2 13911 cmp r3, #0 13912 ldrh r3, [r4, #24] 13913 bne .L1874 13914 lsl r3, r3, #1 13915 ldr r2, [r4, #72] 13916 strh r5, [r2, r3] @ movhi 13917 ldrh r3, [r4, #24] 13918 add r3, r3, #1 13919 strh r3, [r4, #24] @ movhi 13920 b .L1873 13921.L1860: 13922 ldr lr, [r4, #3312] 13923 mvn r1, r3 13924 orr r1, r3, r1, lsl #16 13925 str r1, [lr, r3, lsl #2] 13926 ldr r1, [r4, #3316] 13927 str ip, [r1, r3, lsl #2] 13928 b .L1859 13929.L1862: 13930 mov r0, r6 13931 mov r1, #1 13932 add r6, r6, #1 13933 bl FtlLowFormatEraseBlock 13934 add r5, r0, r5 13935 uxth r6, r6 13936 uxth r5, r5 13937 b .L1861 13938.L1863: 13939 mov r0, r5 13940 bl __aeabi_uidiv 13941 ldr r3, [r4, #332] 13942 add r0, r0, r3 13943 uxth r0, r0 13944 bl FtlSysBlkNumInit 13945 ldrh r0, [r4, #236] 13946 bl FtlFreeSysBlkQueueInit 13947 ldrh r5, [r4, #240] 13948.L1865: 13949 ldrh r3, [r4, #242] 13950 cmp r3, r5 13951 bls .L1867 13952 mov r0, r5 13953 add r5, r5, #1 13954 mov r1, #1 13955 uxth r5, r5 13956 bl FtlLowFormatEraseBlock 13957 b .L1865 13958.L1868: 13959 mov r1, #0 13960 add r5, r5, #1 13961 bl FtlLowFormatEraseBlock 13962 add r6, r0, r6 13963 uxth r6, r6 13964 b .L1864 13965.L1874: 13966 ldr r2, [r4, #2588] 13967 lsl r3, r3, #1 13968 str r2, [r4, #36] 13969 mvn r5, #0 13970 add r2, r2, #1 13971 str r2, [r4, #2588] 13972 ldr r2, [r4, #72] 13973 ldrh r1, [r4, #28] 13974 ldr r6, .L1881+16 13975 strh r1, [r2, r3] @ movhi 13976 mov r3, #0 13977 strh r3, [r4, #78] @ movhi 13978 strb r3, [r4, #82] 13979 ldrh r3, [r4, #24] 13980 add r3, r3, #1 13981 strh r3, [r4, #76] @ movhi 13982 mov r3, #1 13983 strb r3, [r4, #84] 13984.L1875: 13985 mov r0, r6 13986 bl make_superblock 13987 ldrb r3, [r4, #83] @ zero_extendqisi2 13988 cmp r3, #0 13989 ldrh r3, [r4, #76] 13990 bne .L1876 13991 lsl r3, r3, #1 13992 ldr r2, [r4, #72] 13993 strh r5, [r2, r3] @ movhi 13994 ldrh r3, [r4, #76] 13995 add r3, r3, #1 13996 strh r3, [r4, #76] @ movhi 13997 b .L1875 13998.L1876: 13999 ldr r2, [r4, #2588] 14000 lsl r3, r3, #1 14001 str r2, [r4, #88] 14002 mvn r5, #0 14003 add r2, r2, #1 14004 str r2, [r4, #2588] 14005 ldr r2, [r4, #72] 14006 ldrh r1, [r4, #80] 14007 strh r1, [r2, r3] @ movhi 14008 strh r5, [r4, #124] @ movhi 14009 bl FtlFreeSysBlkQueueOut 14010 ldr r3, .L1881+20 14011 mov r2, #0 14012 strh r2, [r3, #2] @ movhi 14013 ldr r2, [r4, #3672] 14014 strh r2, [r3, #6] @ movhi 14015 strh r5, [r3, #4] @ movhi 14016 strh r0, [r3] @ movhi 14017 ldr r3, [r4, #2588] 14018 str r3, [r4, #2632] 14019 add r3, r3, #1 14020 str r3, [r4, #2588] 14021 bl FtlVpcTblFlush 14022 bl FtlSysBlkInit 14023 cmp r0, #0 14024 mov r0, #0 14025 moveq r2, #1 14026 ldreq r3, .L1881+24 14027 streq r2, [r3] 14028 ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 14029.L1882: 14030 .align 2 14031.L1881: 14032 .word .LANCHOR0 14033 .word .LANCHOR0+258 14034 .word 168778952 14035 .word .LANCHOR0+24 14036 .word .LANCHOR0+76 14037 .word .LANCHOR0+2624 14038 .word .LANCHOR2 14039 .size ftl_low_format, .-ftl_low_format 14040 .align 2 14041 .global sftl_init 14042 .syntax unified 14043 .arm 14044 .fpu softvfp 14045 .type sftl_init, %function 14046sftl_init: 14047 @ args = 0, pretend = 0, frame = 0 14048 @ frame_needed = 1, uses_anonymous_args = 0 14049 mov ip, sp 14050 push {r4, r5, fp, ip, lr, pc} 14051 sub fp, ip, #4 14052 push {lr} 14053 bl __gnu_mcount_nc 14054 ldr r5, .L1887 14055 mvn r3, #0 14056 ldr r4, .L1887+4 14057 ldr r1, .L1887+8 14058 ldr r0, .L1887+12 14059 str r3, [r5] 14060 bl sftl_printk 14061 mov r0, r4 14062 bl FtlConstantsInit 14063 bl FtlMemInit 14064 bl FtlVariablesInit 14065 ldrh r0, [r4, #236] 14066 bl FtlFreeSysBlkQueueInit 14067 bl FtlLoadBbt 14068 cmp r0, #0 14069 bne .L1884 14070 bl FtlSysBlkInit 14071 cmp r0, #0 14072 bne .L1884 14073 mov r3, #1 14074 str r3, [r5] 14075 ldrh r3, [r4, #224] 14076 cmp r3, #15 14077 bhi .L1884 14078 movw r4, #8129 14079.L1885: 14080 mov r1, #1 14081 mov r0, #0 14082 bl rk_ftl_garbage_collect 14083 subs r4, r4, #1 14084 bne .L1885 14085.L1884: 14086 mov r0, #0 14087 ldmfd sp, {r4, r5, fp, sp, pc} 14088.L1888: 14089 .align 2 14090.L1887: 14091 .word .LANCHOR2 14092 .word .LANCHOR0 14093 .word .LC0 14094 .word .LC77 14095 .size sftl_init, .-sftl_init 14096 .section .rodata.str1.1 14097.LC130: 14098 .ascii "write_idblock %x %x\012\000" 14099.LC131: 14100 .ascii "write_idblock fail! %x %x %x %x\012\000" 14101.LC132: 14102 .ascii "%s idb buffer alloc fail\012\000" 14103 .text 14104 .align 2 14105 .global FtlWriteToIDB 14106 .syntax unified 14107 .arm 14108 .fpu softvfp 14109 .type FtlWriteToIDB, %function 14110FtlWriteToIDB: 14111 @ args = 0, pretend = 0, frame = 104 14112 @ frame_needed = 1, uses_anonymous_args = 0 14113 mov ip, sp 14114 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 14115 sub fp, ip, #4 14116 sub sp, sp, #116 14117 push {lr} 14118 bl __gnu_mcount_nc 14119 mov r3, sp 14120 add r8, r1, r0 14121 bic r3, r3, #8128 14122 sub r9, r8, #1 14123 bic r3, r3, #63 14124 cmp r9, #63 14125 ldr r5, .L1948 14126 mov r4, r0 14127 movhi r10, #0 14128 movls r10, #1 14129 ldr r3, [r3, #24] 14130 cmp r0, #576 14131 orrcs r10, r10, #1 14132 mov r6, r1 14133 mov r7, r2 14134 cmp r10, #0 14135 str r3, [fp, #-48] 14136 beq .L1890 14137 ldr r3, [r5, #3676] 14138 cmp r3, #0 14139 bne .L1891 14140.L1947: 14141 mov r4, #0 14142 b .L1889 14143.L1891: 14144 ldr r8, [r5, #3680] 14145 ldr r3, .L1948+4 14146 ldr r2, [r8] 14147 cmp r2, r3 14148 bne .L1893 14149 ldrh r1, [r5, #10] 14150 add r0, r8, #260096 14151 mov r2, #0 14152 movw r3, #65023 14153.L1897: 14154 ldr ip, [r0, #-4]! 14155 cmp ip, #0 14156 bne .L1894 14157 ldr ip, [r8, r2, lsl #2] 14158 add r2, r2, #1 14159 cmp r2, #4096 14160 sub r3, r3, #1 14161 str ip, [r0, #2048] 14162 movhi r2, #0 14163 cmp r3, #4096 14164 bne .L1897 14165 mov r3, #512 14166 b .L1946 14167.L1894: 14168 add r3, r3, #127 14169 lsr r3, r3, #7 14170.L1946: 14171 str r3, [fp, #-120] 14172 lsl r1, r1, #2 14173 ldr r3, [fp, #-120] 14174 uxth r1, r1 14175 add r0, r3, #4 14176 bl __aeabi_uidiv 14177 add r3, r0, #1 14178 mov r2, r3 14179 ldr r1, [fp, #-120] 14180 ldr r0, .L1948+8 14181 str r3, [fp, #-124] 14182 bl sftl_printk 14183 ldr r3, [fp, #-120] 14184 lsl r3, r3, #7 14185 str r3, [fp, #-140] 14186 mov r3, #0 14187 mov r10, r3 14188 str r3, [fp, #-128] 14189.L1898: 14190 ldr r3, [fp, #-124] 14191 add r3, r3, r10 14192 str r3, [fp, #-132] 14193 cmp r3, #8 14194 bls .L1920 14195 ldr r3, [fp, #-128] 14196 cmp r3, #0 14197 bne .L1919 14198.L1893: 14199 mvn r3, #0 14200 str r3, [fp, #-120] 14201 b .L1919 14202.L1920: 14203 ldr r4, .L1948 14204 mov r2, #512 14205 mov r1, #0 14206 ldr r0, [r4, #3684] 14207 bl memset 14208 ldrh r5, [r4, #10] 14209 mul r3, r5, r10 14210 str r3, [fp, #-136] 14211 ldr r3, [r4, #3260] 14212 cmp r3, #0 14213 moveq r6, #6 14214 beq .L1899 14215 ldr r3, [r4, #3264] 14216 cmp r3, #0 14217 moveq r6, #6 14218 movne r6, #9 14219.L1899: 14220 mul r9, r5, r10 14221 ldr r7, .L1948 14222 mov r4, #0 14223.L1900: 14224 ldr r3, [r7, #3248] 14225 mov r1, r9 14226 mov r0, #0 14227 add r4, r4, #1 14228 blx r3 14229 ldr r3, [fp, #-124] 14230 add r9, r9, r5 14231 cmp r3, r4 14232 bhi .L1900 14233 cmp r6, #9 14234 movne r4, #0 14235 bne .L1901 14236 ldr r4, [r7, #3684] 14237 mov r2, #1024 14238 mov r1, #0 14239 mov r0, r4 14240 bl ftl_memset 14241 ldr r3, .L1948+12 14242 str r3, [r4] 14243 mov r1, #12 14244 str r1, [r4, #4] 14245 mov r3, #0 14246 str r3, [r4, #12] 14247 mov r3, #1024 14248 strh r3, [r4, #16] @ movhi 14249 add r0, r4, r1 14250 ldrh r3, [r7, #10] 14251 strh r3, [r4, #18] @ movhi 14252 mov r3, #4096 14253 str r3, [r4, #20] 14254 bl js_hash 14255 str r0, [r4, #8] 14256.L1901: 14257 ldr r3, [fp, #-124] 14258 mov r9, r8 14259 ldr r7, .L1948 14260 mul r3, r5, r3 14261 mov r5, #0 14262 str r3, [fp, #-144] 14263.L1902: 14264 ldr r3, [fp, #-144] 14265 cmp r5, r3 14266 beq .L1909 14267 cmp r6, #9 14268 addeq r3, r5, #1 14269 lslne r3, r5, #2 14270 cmp r5, #0 14271 cmpeq r6, #9 14272 str r3, [fp, #-112] 14273 movw r3, #61424 14274 str r3, [fp, #-108] 14275 moveq r0, #1 14276 movne r0, #0 14277 bne .L1905 14278 ldr r3, [r7, #3260] 14279 mov r0, #70 14280 blx r3 14281 mov r2, r4 14282 ldr r1, [fp, #-136] 14283 sub r3, fp, #112 14284 ldr ip, [r7, #3252] 14285 mov r0, #0 14286 blx ip 14287 ldr r3, [r7, #3260] 14288 str r0, [fp, #-148] 14289 ldrb r0, [r7, #22] @ zero_extendqisi2 14290 blx r3 14291 ldr r2, [fp, #-148] 14292 cmn r2, #1 14293 bne .L1906 14294.L1909: 14295 ldr r3, .L1948 14296 ldrb r2, [r3, #14] @ zero_extendqisi2 14297 ldr r1, [r3, #3260] 14298 str r2, [fp, #-136] 14299 ldrh r2, [r3, #10] 14300 cmp r1, #0 14301 ldr r9, [r3, #3684] 14302 moveq r6, #6 14303 mul r7, r2, r10 14304 beq .L1908 14305 ldr r3, [r3, #3264] 14306 cmp r3, #0 14307 moveq r6, #6 14308 movne r6, #9 14309.L1908: 14310 ldr r3, [fp, #-124] 14311 mov r5, #0 14312 ldr r4, .L1948 14313 mul r3, r2, r3 14314 str r3, [fp, #-144] 14315.L1911: 14316 ldr r3, [fp, #-144] 14317 cmp r5, r3 14318 beq .L1915 14319 cmp r5, #0 14320 cmpeq r6, #9 14321 moveq r0, #1 14322 movne r0, #0 14323 bne .L1912 14324 ldr r3, [r4, #3260] 14325 mov r0, #70 14326 blx r3 14327 ldr r3, [r4, #3264] 14328 mov r0, #2 14329 blx r3 14330 mov r2, r9 14331 ldr ip, [r4, #3256] 14332 mov r1, r7 14333 sub r3, fp, #112 14334 mov r0, #0 14335 blx ip 14336 ldr r3, [r4, #3264] 14337 ldr r0, [fp, #-136] 14338 blx r3 14339 ldr r3, [r4, #3260] 14340 ldrb r0, [r4, #22] @ zero_extendqisi2 14341 blx r3 14342 ldr r3, [r9] 14343 ldr r2, .L1948+12 14344 cmp r3, r2 14345 beq .L1913 14346.L1915: 14347 ldr r3, .L1948 14348 mov r4, #0 14349 ldr r0, [r3, #3684] 14350 mov r3, r8 14351 mov r2, r0 14352.L1914: 14353 mov r5, r2 14354 mov r6, r3 14355 add r2, r2, #4 14356 add r3, r3, #4 14357 ldr ip, [r5] 14358 ldr r1, [r6] 14359 cmp ip, r1 14360 beq .L1917 14361 mov r2, #512 14362 mov r1, #0 14363 bl memset 14364 str r4, [sp] 14365 ldr r0, .L1948+16 14366 mov r1, r10 14367 ldr r3, [r6] 14368 ldr r2, [r5] 14369 bl sftl_printk 14370 ldr r3, .L1948 14371 mov r0, #0 14372 ldrh r1, [r3, #10] 14373 ldr r3, [r3, #3248] 14374 mul r1, r10, r1 14375 blx r3 14376.L1918: 14377 ldr r10, [fp, #-132] 14378 b .L1898 14379.L1905: 14380 ldr r1, [fp, #-136] 14381 sub r3, fp, #112 14382 ldr ip, [r7, #3252] 14383 mov r2, r9 14384 add r1, r1, r5 14385 blx ip 14386 cmn r0, #1 14387 beq .L1909 14388 add r9, r9, #2048 14389.L1906: 14390 add r5, r5, #1 14391 b .L1902 14392.L1912: 14393 ldr ip, [r4, #3256] 14394 sub r3, fp, #112 14395 mov r2, r9 14396 add r1, r7, r5 14397 blx ip 14398 cmn r0, #1 14399 beq .L1915 14400 ldr r1, [fp, #-108] 14401 movw r3, #61424 14402 cmp r1, r3 14403 bne .L1915 14404 add r9, r9, #2048 14405.L1913: 14406 add r5, r5, #1 14407 b .L1911 14408.L1917: 14409 ldr r1, [fp, #-140] 14410 add r4, r4, #1 14411 cmp r4, r1 14412 bcc .L1914 14413 ldr r3, [fp, #-128] 14414 add r3, r3, #1 14415 str r3, [fp, #-128] 14416 cmp r3, #5 14417 bls .L1918 14418.L1919: 14419 ldr r5, .L1948 14420 mov r3, #0 14421 ldr r4, [fp, #-120] 14422 ldr r0, [r5, #3680] 14423 str r3, [r5, #3676] 14424 bl kfree 14425 ldr r0, [r5, #3684] 14426 bl kfree 14427.L1889: 14428 mov r3, sp 14429 ldr r2, [fp, #-48] 14430 bic r3, r3, #8128 14431 bic r3, r3, #63 14432 ldr r3, [r3, #24] 14433 cmp r2, r3 14434 beq .L1928 14435 bl __stack_chk_fail 14436.L1890: 14437 cmp r0, #64 14438 bne .L1921 14439 mov r0, #262144 14440 bl ftl_malloc 14441 str r0, [r5, #3680] 14442 mov r0, #262144 14443 bl ftl_malloc 14444 mov r3, r0 14445 str r0, [r5, #3684] 14446 ldr r0, [r5, #3680] 14447 cmp r0, #0 14448 cmpne r3, #0 14449 beq .L1922 14450 mov r1, r10 14451 mov r2, #262144 14452 mov r3, #1 14453 str r3, [r5, #3676] 14454 bl ftl_memset 14455.L1923: 14456 cmp r4, #63 14457 ldr r0, [r5, #3680] 14458 sub r3, r4, #64 14459 rsbls r4, r4, #64 14460 addls r6, r6, r3 14461 addls r7, r7, r4, lsl #9 14462 addhi r0, r0, r3, lsl #9 14463 cmp r9, #576 14464 mov r1, r7 14465 rsbcs r8, r8, #576 14466 addcs r6, r6, r8 14467 lsl r2, r6, #9 14468 bl ftl_memcpy 14469 b .L1947 14470.L1922: 14471 ldr r1, .L1948+20 14472 ldr r0, .L1948+24 14473 bl sftl_printk 14474.L1921: 14475 ldr r3, [r5, #3676] 14476 cmp r3, #0 14477 bne .L1923 14478 b .L1947 14479.L1928: 14480 mov r0, r4 14481 sub sp, fp, #40 14482 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 14483.L1949: 14484 .align 2 14485.L1948: 14486 .word .LANCHOR0 14487 .word -52655045 14488 .word .LC130 14489 .word 1179535694 14490 .word .LC131 14491 .word .LANCHOR1+633 14492 .word .LC132 14493 .size FtlWriteToIDB, .-FtlWriteToIDB 14494 .align 2 14495 .global sftl_write 14496 .syntax unified 14497 .arm 14498 .fpu softvfp 14499 .type sftl_write, %function 14500sftl_write: 14501 @ args = 0, pretend = 0, frame = 0 14502 @ frame_needed = 1, uses_anonymous_args = 0 14503 mov ip, sp 14504 push {r4, r5, r6, r7, fp, ip, lr, pc} 14505 sub fp, ip, #4 14506 push {lr} 14507 bl __gnu_mcount_nc 14508 mov r5, r1 14509 mov r6, r2 14510 mov r4, r0 14511 bl FtlWriteToIDB 14512 mov r3, r6 14513 mov r2, r5 14514 mov r1, r4 14515 mov r0, #0 14516 bl FtlWrite 14517 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 14518 .size sftl_write, .-sftl_write 14519 .align 2 14520 .global rk_sftl_vendor_dev_ops_register 14521 .syntax unified 14522 .arm 14523 .fpu softvfp 14524 .type rk_sftl_vendor_dev_ops_register, %function 14525rk_sftl_vendor_dev_ops_register: 14526 @ args = 0, pretend = 0, frame = 0 14527 @ frame_needed = 1, uses_anonymous_args = 0 14528 mov ip, sp 14529 push {fp, ip, lr, pc} 14530 sub fp, ip, #4 14531 push {lr} 14532 bl __gnu_mcount_nc 14533 ldr r3, .L1954 14534 mov r2, r0 14535 ldr r0, [r3, #3688] 14536 cmp r0, #0 14537 streq r2, [r3, #3688] 14538 streq r1, [r3, #3692] 14539 mvnne r0, #0 14540 ldmfd sp, {fp, sp, pc} 14541.L1955: 14542 .align 2 14543.L1954: 14544 .word .LANCHOR0 14545 .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register 14546 .align 2 14547 .global rk_sftl_vendor_storage_init 14548 .syntax unified 14549 .arm 14550 .fpu softvfp 14551 .type rk_sftl_vendor_storage_init, %function 14552rk_sftl_vendor_storage_init: 14553 @ args = 0, pretend = 0, frame = 0 14554 @ frame_needed = 1, uses_anonymous_args = 0 14555 mov ip, sp 14556 push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} 14557 sub fp, ip, #4 14558 push {lr} 14559 bl __gnu_mcount_nc 14560 ldr r5, .L1965 14561 mov r0, #65536 14562 bl ftl_malloc 14563 cmp r0, #0 14564 mvneq r4, #11 14565 str r0, [r5, #3696] 14566 beq .L1956 14567 ldr r9, .L1965+4 14568 mov r8, #0 14569 mov r7, r8 14570 mov r6, r8 14571.L1960: 14572 ldr r3, [r5, #3688] 14573 lsl r0, r6, #7 14574 ldr r2, [r5, #3696] 14575 mov r1, #128 14576 blx r3 14577 subs r4, r0, #0 14578 bne .L1958 14579 ldr r3, [r5, #3696] 14580 ldr r2, [r3] 14581 cmp r2, r9 14582 bne .L1959 14583 add r1, r3, #61440 14584 ldr r2, [r3, #4] 14585 cmp r2, r7 14586 ldr r1, [r1, #4092] 14587 sub r1, r1, r2 14588 clz r1, r1 14589 lsr r1, r1, #5 14590 movls r1, #0 14591 cmp r1, #0 14592 movne r8, r6 14593 movne r7, r2 14594.L1959: 14595 cmp r6, #1 14596 bne .L1964 14597 cmp r7, #0 14598 beq .L1961 14599 ldr r4, [r5, #3688] 14600 mov r2, r3 14601 lsl r0, r8, #7 14602 mov r1, #128 14603 blx r4 14604 subs r4, r0, #0 14605 beq .L1956 14606.L1958: 14607 ldr r0, [r5, #3696] 14608 mvn r4, #0 14609 bl kfree 14610 mov r3, #0 14611 str r3, [r5, #3696] 14612 b .L1956 14613.L1964: 14614 mov r6, #1 14615 b .L1960 14616.L1961: 14617 mov r2, #65536 14618 mov r1, r7 14619 mov r0, r3 14620 bl memset 14621 add r2, r0, #61440 14622 str r6, [r0, #4] 14623 str r9, [r0] 14624 str r6, [r2, #4092] 14625 ldr r2, .L1965+8 14626 strh r2, [r0, #14] @ movhi 14627.L1956: 14628 mov r0, r4 14629 ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} 14630.L1966: 14631 .align 2 14632.L1965: 14633 .word .LANCHOR0 14634 .word 1380668996 14635 .word -1032 14636 .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init 14637 .align 2 14638 .global rk_sftl_vendor_read 14639 .syntax unified 14640 .arm 14641 .fpu softvfp 14642 .type rk_sftl_vendor_read, %function 14643rk_sftl_vendor_read: 14644 @ args = 0, pretend = 0, frame = 0 14645 @ frame_needed = 1, uses_anonymous_args = 0 14646 mov ip, sp 14647 push {r4, r5, r6, r7, fp, ip, lr, pc} 14648 sub fp, ip, #4 14649 push {lr} 14650 bl __gnu_mcount_nc 14651 ldr r3, .L1973 14652 mov r4, r0 14653 mov r0, r1 14654 ldr r3, [r3, #3696] 14655 cmp r3, #0 14656 addne r5, r3, #16 14657 movne lr, #0 14658 ldrhne r1, [r3, #10] 14659 bne .L1969 14660.L1972: 14661 mvn r0, #0 14662 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 14663.L1970: 14664 add lr, lr, #1 14665.L1969: 14666 cmp r1, lr 14667 bls .L1972 14668 lsl ip, lr, #3 14669 ldrh r6, [r5, ip] 14670 cmp r6, r4 14671 bne .L1970 14672 add ip, r3, ip 14673 ldrh r4, [ip, #20] 14674 ldrh r1, [ip, #18] 14675 cmp r4, r2 14676 movcs r4, r2 14677 add r1, r1, #1024 14678 mov r2, r4 14679 add r1, r3, r1 14680 bl memcpy 14681 mov r0, r4 14682 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 14683.L1974: 14684 .align 2 14685.L1973: 14686 .word .LANCHOR0 14687 .size rk_sftl_vendor_read, .-rk_sftl_vendor_read 14688 .align 2 14689 .global rk_sftl_vendor_write 14690 .syntax unified 14691 .arm 14692 .fpu softvfp 14693 .type rk_sftl_vendor_write, %function 14694rk_sftl_vendor_write: 14695 @ args = 0, pretend = 0, frame = 24 14696 @ frame_needed = 1, uses_anonymous_args = 0 14697 mov ip, sp 14698 push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} 14699 sub fp, ip, #4 14700 sub sp, sp, #28 14701 push {lr} 14702 bl __gnu_mcount_nc 14703 ldr r9, .L1994 14704 mov r8, r1 14705 mov r7, r2 14706 str r0, [fp, #-52] 14707 ldr r4, [r9, #3696] 14708 cmp r4, #0 14709 beq .L1990 14710 add r3, r7, #63 14711 ldrh r2, [r4, #10] 14712 bic r3, r3, #63 14713 str r3, [fp, #-48] 14714 ldrh r3, [r4, #8] 14715 mov r6, #0 14716 str r3, [fp, #-56] 14717 add r3, r4, #16 14718.L1977: 14719 cmp r6, r2 14720 bcc .L1985 14721 ldrh r1, [r4, #14] 14722 ldr r3, [fp, #-48] 14723 cmp r1, r3 14724 bcc .L1990 14725 add r3, r4, r2, lsl #3 14726 ldr r2, [fp, #-52] 14727 strh r2, [r3, #16] @ movhi 14728 ldrh r0, [r4, #12] 14729 strh r0, [r3, #18] @ movhi 14730 strh r7, [r3, #20] @ movhi 14731 ldrh r3, [fp, #-48] 14732 add r2, r0, r3 14733 add r0, r0, #1024 14734 sub r3, r1, r3 14735 strh r2, [r4, #12] @ movhi 14736 strh r3, [r4, #14] @ movhi 14737 mov r2, r7 14738 mov r1, r8 14739 add r0, r4, r0 14740 bl memcpy 14741 ldrh r3, [r4, #10] 14742 add r2, r4, #61440 14743 add r3, r3, #1 14744 strh r3, [r4, #10] @ movhi 14745 ldr r3, [r4, #4] 14746 add r3, r3, #1 14747 str r3, [r4, #4] 14748 str r3, [r2, #4092] 14749 ldrh r3, [r4, #8] 14750 add r3, r3, #1 14751 uxth r3, r3 14752 cmp r3, #1 14753 movhi r3, #0 14754 strh r3, [r4, #8] @ movhi 14755 ldr r3, [r9, #3692] 14756 b .L1993 14757.L1985: 14758 lsl r5, r6, #3 14759 ldr r0, [fp, #-52] 14760 ldrh r1, [r3, r5] 14761 cmp r1, r0 14762 bne .L1978 14763 add r5, r4, r5 14764 add r3, r4, #1024 14765 ldrh r1, [r5, #20] 14766 add r1, r1, #63 14767 bic r1, r1, #63 14768 str r1, [fp, #-60] 14769 cmp r7, r1 14770 bls .L1979 14771 ldrh r1, [r4, #14] 14772 ldr r0, [fp, #-48] 14773 cmp r1, r0 14774 subcs r2, r2, #1 14775 strcs r2, [fp, #-64] 14776 ldrhcs r10, [r5, #18] 14777 bcs .L1980 14778.L1990: 14779 mvn r0, #0 14780 b .L1975 14781.L1981: 14782 ldrh r2, [r5, #16] 14783 add r0, r3, r10 14784 strh r2, [r5, #8] @ movhi 14785 add r6, r6, #1 14786 ldrh r2, [r5, #20] 14787 ldrh r1, [r5, #18] 14788 strh r2, [r5, #12] @ movhi 14789 add r2, r2, #63 14790 strh r9, [r5, #10] @ movhi 14791 bic r9, r2, #63 14792 add r1, r3, r1 14793 mov r2, r9 14794 str r3, [fp, #-68] 14795 bl memcpy 14796 ldr r3, [fp, #-68] 14797 add r10, r10, r9 14798.L1980: 14799 ldr r2, [fp, #-64] 14800 uxth r9, r10 14801 add r5, r5, #8 14802 cmp r2, r6 14803 bhi .L1981 14804 add r6, r4, r6, lsl #3 14805 ldr r2, [fp, #-52] 14806 uxtah r0, r3, r10 14807 mov r1, r8 14808 strh r2, [r6, #16] @ movhi 14809 mov r2, r7 14810 strh r9, [r6, #18] @ movhi 14811 strh r7, [r6, #20] @ movhi 14812 bl memcpy 14813 ldrh r2, [fp, #-48] 14814 ldrh r3, [r4, #14] 14815 add r9, r2, r9 14816 strh r9, [r4, #12] @ movhi 14817 sub r3, r3, r2 14818 ldr r2, [fp, #-60] 14819 add r3, r3, r2 14820 strh r3, [r4, #14] @ movhi 14821.L1982: 14822 add r2, r4, #61440 14823 ldr r3, [r4, #4] 14824 add r3, r3, #1 14825 str r3, [r4, #4] 14826 str r3, [r2, #4092] 14827 ldrh r3, [r4, #8] 14828 add r3, r3, #1 14829 uxth r3, r3 14830 cmp r3, #1 14831 movhi r3, #0 14832 strh r3, [r4, #8] @ movhi 14833 ldr r3, .L1994 14834 ldr r3, [r3, #3692] 14835.L1993: 14836 ldr r0, [fp, #-56] 14837 mov r2, r4 14838 mov r1, #128 14839 lsl r0, r0, #7 14840 blx r3 14841 mov r0, #0 14842.L1975: 14843 sub sp, fp, #40 14844 ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} 14845.L1979: 14846 ldrh r0, [r5, #18] 14847 mov r2, r7 14848 mov r1, r8 14849 add r0, r3, r0 14850 bl memcpy 14851 strh r7, [r5, #20] @ movhi 14852 b .L1982 14853.L1978: 14854 add r6, r6, #1 14855 b .L1977 14856.L1995: 14857 .align 2 14858.L1994: 14859 .word .LANCHOR0 14860 .size rk_sftl_vendor_write, .-rk_sftl_vendor_write 14861 .section .rodata.str1.1 14862.LC133: 14863 .ascii "copy_from_user error %d %p %p\012\000" 14864 .text 14865 .align 2 14866 .global rk_sftl_vendor_storage_ioctl 14867 .syntax unified 14868 .arm 14869 .fpu softvfp 14870 .type rk_sftl_vendor_storage_ioctl, %function 14871rk_sftl_vendor_storage_ioctl: 14872 @ args = 0, pretend = 0, frame = 0 14873 @ frame_needed = 1, uses_anonymous_args = 0 14874 mov ip, sp 14875 push {r4, r5, r6, r7, fp, ip, lr, pc} 14876 sub fp, ip, #4 14877 push {lr} 14878 bl __gnu_mcount_nc 14879 mov r0, #4096 14880 mov r4, r2 14881 mov r6, r1 14882 bl ftl_malloc 14883 subs r5, r0, #0 14884 mvneq r4, #0 14885 beq .L1996 14886 ldr r3, .L2014 14887 cmp r6, r3 14888 beq .L1998 14889 add r3, r3, #1 14890 cmp r6, r3 14891 beq .L1999 14892.L2012: 14893 mvn r4, #13 14894.L2000: 14895 mov r0, r5 14896 bl kfree 14897.L1996: 14898 mov r0, r4 14899 ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} 14900.L1998: 14901 mov r1, r4 14902 mov r2, #8 14903 bl _copy_from_user 14904 cmp r0, #0 14905 beq .L2001 14906 mov r2, r4 14907 mov r1, #256 14908.L2013: 14909 ldr r0, .L2014+4 14910 bl sftl_printk 14911 b .L2012 14912.L2001: 14913 ldr r2, [r5] 14914 ldr r3, .L2014+8 14915 cmp r2, r3 14916 beq .L2002 14917.L2003: 14918 mvn r4, #0 14919 b .L2000 14920.L2002: 14921 ldrh r2, [r5, #6] 14922 add r1, r5, #8 14923 ldrh r0, [r5, #4] 14924 bl rk_sftl_vendor_read 14925 cmn r0, #1 14926 beq .L2003 14927 mov r3, sp 14928 strh r0, [r5, #6] @ movhi 14929 bic r1, r3, #8128 14930 uxth r2, r0 14931 bic r1, r1, #63 14932 add r2, r2, #8 14933 ldr r3, [r1, #8] 14934 .syntax divided 14935@ 177 "./include/linux/uaccess.h" 1 14936 .syntax unified 14937adds r0, r4, r2; sbcscc r0, r0, r3; movcc r3, #0 14938@ 0 "" 2 14939 .arm 14940 .syntax unified 14941 cmp r3, #0 14942 bne .L2012 14943 .syntax divided 14944@ 89 "./arch/arm/include/asm/domain.h" 1 14945 mrc p15, 0, r6, c3, c0 @ get domain 14946@ 0 "" 2 14947 .arm 14948 .syntax unified 14949 bic r3, r6, #12 14950 orr r3, r3, #4 14951 .syntax divided 14952@ 99 "./arch/arm/include/asm/domain.h" 1 14953 mcr p15, 0, r3, c3, c0 @ set domain 14954@ 0 "" 2 14955@ 102 "./arch/arm/include/asm/domain.h" 1 14956 isb 14957@ 0 "" 2 14958 .arm 14959 .syntax unified 14960 mov r1, r5 14961 mov r0, r4 14962 bl arm_copy_to_user 14963 mov r4, r0 14964 .syntax divided 14965@ 99 "./arch/arm/include/asm/domain.h" 1 14966 mcr p15, 0, r6, c3, c0 @ set domain 14967@ 0 "" 2 14968@ 102 "./arch/arm/include/asm/domain.h" 1 14969 isb 14970@ 0 "" 2 14971 .arm 14972 .syntax unified 14973 cmp r0, #0 14974 beq .L2000 14975 b .L2012 14976.L1999: 14977 mov r1, r4 14978 mov r2, #8 14979 bl _copy_from_user 14980 cmp r0, #0 14981 movne r2, r4 14982 movne r1, #276 14983 bne .L2013 14984 ldr r2, [r5] 14985 ldr r3, .L2014+8 14986 cmp r2, r3 14987 bne .L2003 14988 ldrh r2, [r5, #6] 14989 movw r3, #4087 14990 cmp r2, r3 14991 bhi .L2003 14992 add r2, r2, #8 14993 mov r1, r4 14994 mov r0, r5 14995 uxth r2, r2 14996 bl _copy_from_user 14997 cmp r0, #0 14998 movne r2, r4 14999 movwne r1, #283 15000 bne .L2013 15001 ldrh r2, [r5, #6] 15002 add r1, r5, #8 15003 ldrh r0, [r5, #4] 15004 bl rk_sftl_vendor_write 15005 mov r4, r0 15006 b .L2000 15007.L2015: 15008 .align 2 15009.L2014: 15010 .word 1074034177 15011 .word .LC133 15012 .word 1448232273 15013 .size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl 15014 .align 2 15015 .global rk_sftl_vendor_register 15016 .syntax unified 15017 .arm 15018 .fpu softvfp 15019 .type rk_sftl_vendor_register, %function 15020rk_sftl_vendor_register: 15021 @ args = 0, pretend = 0, frame = 0 15022 @ frame_needed = 1, uses_anonymous_args = 0 15023 mov ip, sp 15024 push {fp, ip, lr, pc} 15025 sub fp, ip, #4 15026 push {lr} 15027 bl __gnu_mcount_nc 15028 ldr r0, .L2017 15029 bl misc_register 15030 ldmfd sp, {fp, sp, pc} 15031.L2018: 15032 .align 2 15033.L2017: 15034 .word .LANCHOR2+12 15035 .size rk_sftl_vendor_register, .-rk_sftl_vendor_register 15036 .section .rodata.str1.1 15037.LC134: 15038 .ascii "vendor_storage\000" 15039 .global g_nand_ops 15040 .global g_nand_phy_info 15041 .global gc_ink_free_return_value 15042 .global check_vpc_table 15043 .global FtlUpdateVaildLpnCount 15044 .global g_ect_tbl_power_up_flush 15045 .global power_up_flag 15046 .global gFtlInitStatus 15047 .global DeviceCapacity 15048 .global g_power_lost_recovery_flag 15049 .global c_mlc_erase_count_value 15050 .global g_recovery_ppa_tbl 15051 .global g_recovery_page_min_ver 15052 .global g_recovery_page_num 15053 .global sftl_nand_check_spare_buf 15054 .global sftl_temp_buf 15055 .global sftl_nand_check_buf 15056 .global g_cur_erase_blk 15057 .global g_gc_skip_write_count 15058 .global g_gc_head_data_block_count 15059 .global g_gc_head_data_block 15060 .global g_ftl_nand_free_count 15061 .global g_in_swl_replace 15062 .global g_in_gc_progress 15063 .global g_max_erase_count 15064 .global g_totle_sys_slc_erase_count 15065 .global g_totle_slc_erase_count 15066 .global g_min_erase_count 15067 .global g_totle_avg_erase_count 15068 .global g_totle_mlc_erase_count 15069 .global g_totle_l2p_write_count 15070 .global g_totle_cache_write_count 15071 .global g_tmp_data_superblock_id 15072 .global g_totle_read_page_count 15073 .global g_totle_discard_page_count 15074 .global g_totle_read_sector 15075 .global g_totle_write_sector 15076 .global g_totle_write_page_count 15077 .global g_totle_gc_page_count 15078 .global g_gc_blk_index 15079 .global g_gc_merge_free_blk_threshold 15080 .global g_gc_free_blk_threshold 15081 .global g_gc_bad_block_temp_tbl 15082 .global g_gc_bad_block_gc_index 15083 .global g_gc_bad_block_temp_num 15084 .global g_gc_next_blk_1 15085 .global g_gc_next_blk 15086 .global g_gc_cur_blk_max_valid_pages 15087 .global g_gc_cur_blk_valid_pages 15088 .global g_gc_page_offset 15089 .global g_gc_blk_num 15090 .global p_gc_blk_tbl 15091 .global p_gc_page_info 15092 .global g_sys_ext_data 15093 .global g_sys_save_data 15094 .global gp_last_act_superblock 15095 .global g_gc_superblock 15096 .global g_gc_temp_superblock 15097 .global g_buffer_superblock 15098 .global g_active_superblock 15099 .global g_num_data_superblocks 15100 .global g_num_free_superblocks 15101 .global p_data_block_list_tail 15102 .global p_data_block_list_head 15103 .global p_free_data_block_list_head 15104 .global p_data_block_list_table 15105 .global g_l2p_last_update_region_id 15106 .global p_l2p_map_buf 15107 .global p_l2p_ram_map 15108 .global g_totle_vendor_block 15109 .global p_vendor_region_ppn_table 15110 .global p_vendor_block_ver_table 15111 .global p_vendor_block_valid_page_count 15112 .global p_vendor_block_table 15113 .global g_totle_map_block 15114 .global p_map_region_ppn_table 15115 .global p_map_block_ver_table 15116 .global p_map_block_valid_page_count 15117 .global p_map_block_table 15118 .global p_valid_page_count_check_table 15119 .global p_valid_page_count_table 15120 .global g_totle_swl_count 15121 .global p_swl_mul_table 15122 .global p_erase_count_table 15123 .global g_ect_tbl_info_size 15124 .global gp_ect_tbl_info 15125 .global g_gc_num_req 15126 .global c_gc_page_buf_num 15127 .global gp_gc_page_buf_info 15128 .global p_gc_data_buf 15129 .global p_gc_spare_buf 15130 .global p_io_spare_buf 15131 .global p_io_data_buf_1 15132 .global p_io_data_buf_0 15133 .global p_sys_spare_buf 15134 .global p_vendor_data_buf 15135 .global p_sys_data_buf_1 15136 .global p_sys_data_buf 15137 .global p_plane_order_table 15138 .global req_gc_dst 15139 .global req_gc 15140 .global req_erase 15141 .global req_prgm 15142 .global req_read 15143 .global req_sys 15144 .global gVendorBlkInfo 15145 .global gL2pMapInfo 15146 .global gSysFreeQueue 15147 .global gSysInfo 15148 .global gBbtInfo 15149 .global g_MaxLbn 15150 .global g_VaildLpn 15151 .global g_MaxLpn 15152 .global g_MaxLbaSector 15153 .global g_GlobalDataVersion 15154 .global g_GlobalSysVersion 15155 .global ftl_gc_temp_power_lost_recovery_flag 15156 .global c_ftl_nand_max_data_blks 15157 .global c_ftl_nand_data_op_blks_per_plane 15158 .global c_ftl_nand_data_blks_per_plane 15159 .global c_ftl_nand_max_sys_blks 15160 .global c_ftl_nand_init_sys_blks_per_plane 15161 .global c_ftl_nand_sys_blks_per_plane 15162 .global c_ftl_vendor_part_size 15163 .global c_ftl_nand_max_vendor_blks 15164 .global c_ftl_nand_max_map_blks 15165 .global c_ftl_nand_map_blks_per_plane 15166 .global c_ftl_nand_vendor_region_num 15167 .global c_ftl_nand_l2pmap_ram_region_num 15168 .global c_ftl_nand_map_region_num 15169 .global c_ftl_nand_totle_phy_blks 15170 .global c_ftl_nand_reserved_blks 15171 .global c_ftl_nand_byte_pre_oob 15172 .global c_ftl_nand_byte_pre_page 15173 .global c_ftl_nand_sec_pre_page_shift 15174 .global c_ftl_nand_sec_pre_page 15175 .global c_ftl_nand_page_pre_super_blk 15176 .global c_ftl_nand_page_pre_slc_blk 15177 .global c_ftl_nand_page_pre_blk 15178 .global c_ftl_nand_bbm_buf_size 15179 .global c_ftl_nand_ext_blk_pre_plane 15180 .global c_ftl_nand_blk_pre_plane 15181 .global c_ftl_nand_planes_num 15182 .global c_ftl_nand_blks_per_die_shift 15183 .global c_ftl_nand_blks_per_die 15184 .global c_ftl_nand_planes_per_die 15185 .global c_ftl_nand_die_num 15186 .global c_ftl_nand_type 15187 .section .rodata 15188 .align 2 15189 .set .LANCHOR1,. + 0 15190 .type __func__.30, %object 15191 .size __func__.30, 17 15192__func__.30: 15193 .ascii "INSERT_DATA_LIST\000" 15194 .type __func__.31, %object 15195 .size __func__.31, 17 15196__func__.31: 15197 .ascii "INSERT_FREE_LIST\000" 15198 .type __func__.29, %object 15199 .size __func__.29, 17 15200__func__.29: 15201 .ascii "List_remove_node\000" 15202 .type __func__.28, %object 15203 .size __func__.28, 22 15204__func__.28: 15205 .ascii "List_update_data_list\000" 15206 .type __func__.22, %object 15207 .size __func__.22, 22 15208__func__.22: 15209 .ascii "select_l2p_ram_region\000" 15210 .type __func__.14, %object 15211 .size __func__.14, 16 15212__func__.14: 15213 .ascii "make_superblock\000" 15214 .type __func__.8, %object 15215 .size __func__.8, 19 15216__func__.8: 15217 .ascii "get_new_active_ppa\000" 15218 .type __func__.1, %object 15219 .size __func__.1, 17 15220__func__.1: 15221 .ascii "FlashEraseBlocks\000" 15222 .type __func__.26, %object 15223 .size __func__.26, 26 15224__func__.26: 15225 .ascii "ftl_map_blk_alloc_new_blk\000" 15226 .type __func__.37, %object 15227 .size __func__.37, 11 15228__func__.37: 15229 .ascii "FtlMemInit\000" 15230 .type __func__.34, %object 15231 .size __func__.34, 14 15232__func__.34: 15233 .ascii "FtlBbt2Bitmap\000" 15234 .type __func__.13, %object 15235 .size __func__.13, 18 15236__func__.13: 15237 .ascii "SupperBlkListInit\000" 15238 .type __func__.3, %object 15239 .size __func__.3, 15 15240__func__.3: 15241 .ascii "FlashReadPages\000" 15242 .type __func__.19, %object 15243 .size __func__.19, 14 15244__func__.19: 15245 .ascii "FtlScanSysBlk\000" 15246 .type __func__.32, %object 15247 .size __func__.32, 11 15248__func__.32: 15249 .ascii "FtlLoadBbt\000" 15250 .type __func__.2, %object 15251 .size __func__.2, 15 15252__func__.2: 15253 .ascii "FlashProgPages\000" 15254 .type __func__.10, %object 15255 .size __func__.10, 25 15256__func__.10: 15257 .ascii "allocate_data_superblock\000" 15258 .type __func__.7, %object 15259 .size __func__.7, 16 15260__func__.7: 15261 .ascii "update_vpc_list\000" 15262 .type __func__.6, %object 15263 .size __func__.6, 20 15264__func__.6: 15265 .ascii "decrement_vpc_count\000" 15266 .type __func__.23, %object 15267 .size __func__.23, 16 15268__func__.23: 15269 .ascii "FtlMapWritePage\000" 15270 .type __func__.27, %object 15271 .size __func__.27, 16 15272__func__.27: 15273 .ascii "load_l2p_region\000" 15274 .type __func__.25, %object 15275 .size __func__.25, 15 15276__func__.25: 15277 .ascii "ftl_map_blk_gc\000" 15278 .type __func__.24, %object 15279 .size __func__.24, 31 15280__func__.24: 15281 .ascii "Ftl_write_map_blk_to_last_page\000" 15282 .type __func__.21, %object 15283 .size __func__.21, 9 15284__func__.21: 15285 .ascii "log2phys\000" 15286 .type __func__.16, %object 15287 .size __func__.16, 16 15288__func__.16: 15289 .ascii "FtlReUsePrevPpa\000" 15290 .type __func__.15, %object 15291 .size __func__.15, 22 15292__func__.15: 15293 .ascii "FtlRecoverySuperblock\000" 15294 .type __func__.11, %object 15295 .size __func__.11, 14 15296__func__.11: 15297 .ascii "ftl_check_vpc\000" 15298 .type __func__.20, %object 15299 .size __func__.20, 15 15300__func__.20: 15301 .ascii "FtlVpcTblFlush\000" 15302 .type __func__.12, %object 15303 .size __func__.12, 21 15304__func__.12: 15305 .ascii "FtlVpcCheckAndModify\000" 15306 .type __func__.9, %object 15307 .size __func__.9, 29 15308__func__.9: 15309 .ascii "allocate_new_data_superblock\000" 15310 .type __func__.36, %object 15311 .size __func__.36, 13 15312__func__.36: 15313 .ascii "FtlProgPages\000" 15314 .type __func__.5, %object 15315 .size __func__.5, 19 15316__func__.5: 15317 .ascii "FtlGcFreeTempBlock\000" 15318 .type __func__.4, %object 15319 .size __func__.4, 23 15320__func__.4: 15321 .ascii "rk_ftl_garbage_collect\000" 15322 .type __func__.35, %object 15323 .size __func__.35, 9 15324__func__.35: 15325 .ascii "FtlWrite\000" 15326 .type __func__.18, %object 15327 .size __func__.18, 15 15328__func__.18: 15329 .ascii "FtlLoadSysInfo\000" 15330 .type __func__.17, %object 15331 .size __func__.17, 18 15332__func__.17: 15333 .ascii "FtlMapTblRecovery\000" 15334 .type __func__.0, %object 15335 .size __func__.0, 14 15336__func__.0: 15337 .ascii "FtlWriteToIDB\000" 15338 .space 1 15339 .type rk_sftl_vendor_storage_fops, %object 15340 .size rk_sftl_vendor_storage_fops, 128 15341rk_sftl_vendor_storage_fops: 15342 .space 40 15343 .word rk_sftl_vendor_storage_ioctl 15344 .word rk_sftl_vendor_storage_ioctl 15345 .space 80 15346 .data 15347 .align 2 15348 .set .LANCHOR2,. + 0 15349 .type gFtlInitStatus, %object 15350 .size gFtlInitStatus, 4 15351gFtlInitStatus: 15352 .word -1 15353 .type ftl_gc_temp_block_bops_scan_page_addr, %object 15354 .size ftl_gc_temp_block_bops_scan_page_addr, 2 15355ftl_gc_temp_block_bops_scan_page_addr: 15356 .short -1 15357 .space 2 15358 .type power_up_flag, %object 15359 .size power_up_flag, 4 15360power_up_flag: 15361 .word 1 15362 .type rkflash_vender_storage_dev, %object 15363 .size rkflash_vender_storage_dev, 40 15364rkflash_vender_storage_dev: 15365 .word 255 15366 .word .LC134 15367 .word rk_sftl_vendor_storage_fops 15368 .space 28 15369 .bss 15370 .align 2 15371 .set .LANCHOR0,. + 0 15372 .type g_nand_phy_info, %object 15373 .size g_nand_phy_info, 24 15374g_nand_phy_info: 15375 .space 24 15376 .type g_active_superblock, %object 15377 .size g_active_superblock, 48 15378g_active_superblock: 15379 .space 48 15380 .type p_valid_page_count_table, %object 15381 .size p_valid_page_count_table, 4 15382p_valid_page_count_table: 15383 .space 4 15384 .type g_buffer_superblock, %object 15385 .size g_buffer_superblock, 48 15386g_buffer_superblock: 15387 .space 48 15388 .type g_gc_temp_superblock, %object 15389 .size g_gc_temp_superblock, 48 15390g_gc_temp_superblock: 15391 .space 48 15392 .type g_gc_superblock, %object 15393 .size g_gc_superblock, 48 15394g_gc_superblock: 15395 .space 48 15396 .type g_gc_next_blk_1, %object 15397 .size g_gc_next_blk_1, 2 15398g_gc_next_blk_1: 15399 .space 2 15400 .type g_gc_next_blk, %object 15401 .size g_gc_next_blk, 2 15402g_gc_next_blk: 15403 .space 2 15404 .type g_num_free_superblocks, %object 15405 .size g_num_free_superblocks, 2 15406g_num_free_superblocks: 15407 .space 2 15408 .space 2 15409 .type c_ftl_nand_sys_blks_per_plane, %object 15410 .size c_ftl_nand_sys_blks_per_plane, 4 15411c_ftl_nand_sys_blks_per_plane: 15412 .space 4 15413 .type c_ftl_nand_planes_num, %object 15414 .size c_ftl_nand_planes_num, 2 15415c_ftl_nand_planes_num: 15416 .space 2 15417 .space 2 15418 .type c_ftl_nand_max_sys_blks, %object 15419 .size c_ftl_nand_max_sys_blks, 4 15420c_ftl_nand_max_sys_blks: 15421 .space 4 15422 .type c_ftl_nand_data_blks_per_plane, %object 15423 .size c_ftl_nand_data_blks_per_plane, 2 15424c_ftl_nand_data_blks_per_plane: 15425 .space 2 15426 .type c_ftl_nand_blk_pre_plane, %object 15427 .size c_ftl_nand_blk_pre_plane, 2 15428c_ftl_nand_blk_pre_plane: 15429 .space 2 15430 .type c_ftl_nand_max_data_blks, %object 15431 .size c_ftl_nand_max_data_blks, 4 15432c_ftl_nand_max_data_blks: 15433 .space 4 15434 .type c_ftl_nand_totle_phy_blks, %object 15435 .size c_ftl_nand_totle_phy_blks, 4 15436c_ftl_nand_totle_phy_blks: 15437 .space 4 15438 .type c_ftl_nand_type, %object 15439 .size c_ftl_nand_type, 2 15440c_ftl_nand_type: 15441 .space 2 15442 .type c_ftl_nand_die_num, %object 15443 .size c_ftl_nand_die_num, 2 15444c_ftl_nand_die_num: 15445 .space 2 15446 .type c_ftl_nand_planes_per_die, %object 15447 .size c_ftl_nand_planes_per_die, 2 15448c_ftl_nand_planes_per_die: 15449 .space 2 15450 .type c_ftl_nand_sec_pre_page, %object 15451 .size c_ftl_nand_sec_pre_page, 2 15452c_ftl_nand_sec_pre_page: 15453 .space 2 15454 .type p_plane_order_table, %object 15455 .size p_plane_order_table, 32 15456p_plane_order_table: 15457 .space 32 15458 .type c_mlc_erase_count_value, %object 15459 .size c_mlc_erase_count_value, 2 15460c_mlc_erase_count_value: 15461 .space 2 15462 .type c_ftl_nand_ext_blk_pre_plane, %object 15463 .size c_ftl_nand_ext_blk_pre_plane, 2 15464c_ftl_nand_ext_blk_pre_plane: 15465 .space 2 15466 .type c_ftl_vendor_part_size, %object 15467 .size c_ftl_vendor_part_size, 2 15468c_ftl_vendor_part_size: 15469 .space 2 15470 .type c_ftl_nand_blks_per_die, %object 15471 .size c_ftl_nand_blks_per_die, 2 15472c_ftl_nand_blks_per_die: 15473 .space 2 15474 .type c_ftl_nand_blks_per_die_shift, %object 15475 .size c_ftl_nand_blks_per_die_shift, 2 15476c_ftl_nand_blks_per_die_shift: 15477 .space 2 15478 .type c_ftl_nand_page_pre_blk, %object 15479 .size c_ftl_nand_page_pre_blk, 2 15480c_ftl_nand_page_pre_blk: 15481 .space 2 15482 .type c_ftl_nand_page_pre_slc_blk, %object 15483 .size c_ftl_nand_page_pre_slc_blk, 2 15484c_ftl_nand_page_pre_slc_blk: 15485 .space 2 15486 .type c_ftl_nand_page_pre_super_blk, %object 15487 .size c_ftl_nand_page_pre_super_blk, 2 15488c_ftl_nand_page_pre_super_blk: 15489 .space 2 15490 .type c_ftl_nand_sec_pre_page_shift, %object 15491 .size c_ftl_nand_sec_pre_page_shift, 2 15492c_ftl_nand_sec_pre_page_shift: 15493 .space 2 15494 .type c_ftl_nand_byte_pre_page, %object 15495 .size c_ftl_nand_byte_pre_page, 2 15496c_ftl_nand_byte_pre_page: 15497 .space 2 15498 .type c_ftl_nand_byte_pre_oob, %object 15499 .size c_ftl_nand_byte_pre_oob, 2 15500c_ftl_nand_byte_pre_oob: 15501 .space 2 15502 .type c_ftl_nand_reserved_blks, %object 15503 .size c_ftl_nand_reserved_blks, 2 15504c_ftl_nand_reserved_blks: 15505 .space 2 15506 .type DeviceCapacity, %object 15507 .size DeviceCapacity, 4 15508DeviceCapacity: 15509 .space 4 15510 .type c_ftl_nand_max_vendor_blks, %object 15511 .size c_ftl_nand_max_vendor_blks, 2 15512c_ftl_nand_max_vendor_blks: 15513 .space 2 15514 .type c_ftl_nand_vendor_region_num, %object 15515 .size c_ftl_nand_vendor_region_num, 2 15516c_ftl_nand_vendor_region_num: 15517 .space 2 15518 .type c_ftl_nand_map_blks_per_plane, %object 15519 .size c_ftl_nand_map_blks_per_plane, 2 15520c_ftl_nand_map_blks_per_plane: 15521 .space 2 15522 .space 2 15523 .type c_ftl_nand_max_map_blks, %object 15524 .size c_ftl_nand_max_map_blks, 4 15525c_ftl_nand_max_map_blks: 15526 .space 4 15527 .type c_ftl_nand_init_sys_blks_per_plane, %object 15528 .size c_ftl_nand_init_sys_blks_per_plane, 4 15529c_ftl_nand_init_sys_blks_per_plane: 15530 .space 4 15531 .type c_ftl_nand_map_region_num, %object 15532 .size c_ftl_nand_map_region_num, 2 15533c_ftl_nand_map_region_num: 15534 .space 2 15535 .type c_ftl_nand_l2pmap_ram_region_num, %object 15536 .size c_ftl_nand_l2pmap_ram_region_num, 2 15537c_ftl_nand_l2pmap_ram_region_num: 15538 .space 2 15539 .type g_MaxLbaSector, %object 15540 .size g_MaxLbaSector, 4 15541g_MaxLbaSector: 15542 .space 4 15543 .type g_totle_vendor_block, %object 15544 .size g_totle_vendor_block, 2 15545g_totle_vendor_block: 15546 .space 2 15547 .space 2 15548 .type p_vendor_block_table, %object 15549 .size p_vendor_block_table, 4 15550p_vendor_block_table: 15551 .space 4 15552 .type gBbtInfo, %object 15553 .size gBbtInfo, 60 15554gBbtInfo: 15555 .space 60 15556 .type gSysFreeQueue, %object 15557 .size gSysFreeQueue, 2056 15558gSysFreeQueue: 15559 .space 2056 15560 .type g_sys_save_data, %object 15561 .size g_sys_save_data, 48 15562g_sys_save_data: 15563 .space 48 15564 .type p_data_block_list_table, %object 15565 .size p_data_block_list_table, 4 15566p_data_block_list_table: 15567 .space 4 15568 .type p_data_block_list_head, %object 15569 .size p_data_block_list_head, 4 15570p_data_block_list_head: 15571 .space 4 15572 .type p_data_block_list_tail, %object 15573 .size p_data_block_list_tail, 4 15574p_data_block_list_tail: 15575 .space 4 15576 .type g_num_data_superblocks, %object 15577 .size g_num_data_superblocks, 2 15578g_num_data_superblocks: 15579 .space 2 15580 .space 2 15581 .type p_free_data_block_list_head, %object 15582 .size p_free_data_block_list_head, 4 15583p_free_data_block_list_head: 15584 .space 4 15585 .type p_erase_count_table, %object 15586 .size p_erase_count_table, 4 15587p_erase_count_table: 15588 .space 4 15589 .type p_l2p_ram_map, %object 15590 .size p_l2p_ram_map, 4 15591p_l2p_ram_map: 15592 .space 4 15593 .type g_l2p_last_update_region_id, %object 15594 .size g_l2p_last_update_region_id, 2 15595g_l2p_last_update_region_id: 15596 .space 2 15597 .type FtlUpdateVaildLpnCount, %object 15598 .size FtlUpdateVaildLpnCount, 2 15599FtlUpdateVaildLpnCount: 15600 .space 2 15601 .type g_VaildLpn, %object 15602 .size g_VaildLpn, 4 15603g_VaildLpn: 15604 .space 4 15605 .type g_MaxLpn, %object 15606 .size g_MaxLpn, 4 15607g_MaxLpn: 15608 .space 4 15609 .type g_totle_read_page_count, %object 15610 .size g_totle_read_page_count, 4 15611g_totle_read_page_count: 15612 .space 4 15613 .type g_totle_discard_page_count, %object 15614 .size g_totle_discard_page_count, 4 15615g_totle_discard_page_count: 15616 .space 4 15617 .type g_totle_write_page_count, %object 15618 .size g_totle_write_page_count, 4 15619g_totle_write_page_count: 15620 .space 4 15621 .type g_totle_cache_write_count, %object 15622 .size g_totle_cache_write_count, 4 15623g_totle_cache_write_count: 15624 .space 4 15625 .type g_totle_l2p_write_count, %object 15626 .size g_totle_l2p_write_count, 4 15627g_totle_l2p_write_count: 15628 .space 4 15629 .type g_totle_gc_page_count, %object 15630 .size g_totle_gc_page_count, 4 15631g_totle_gc_page_count: 15632 .space 4 15633 .type g_totle_write_sector, %object 15634 .size g_totle_write_sector, 4 15635g_totle_write_sector: 15636 .space 4 15637 .type g_totle_read_sector, %object 15638 .size g_totle_read_sector, 4 15639g_totle_read_sector: 15640 .space 4 15641 .type g_GlobalSysVersion, %object 15642 .size g_GlobalSysVersion, 4 15643g_GlobalSysVersion: 15644 .space 4 15645 .type g_GlobalDataVersion, %object 15646 .size g_GlobalDataVersion, 4 15647g_GlobalDataVersion: 15648 .space 4 15649 .type g_totle_mlc_erase_count, %object 15650 .size g_totle_mlc_erase_count, 4 15651g_totle_mlc_erase_count: 15652 .space 4 15653 .type g_totle_slc_erase_count, %object 15654 .size g_totle_slc_erase_count, 4 15655g_totle_slc_erase_count: 15656 .space 4 15657 .type g_totle_avg_erase_count, %object 15658 .size g_totle_avg_erase_count, 4 15659g_totle_avg_erase_count: 15660 .space 4 15661 .type g_totle_sys_slc_erase_count, %object 15662 .size g_totle_sys_slc_erase_count, 4 15663g_totle_sys_slc_erase_count: 15664 .space 4 15665 .type g_max_erase_count, %object 15666 .size g_max_erase_count, 4 15667g_max_erase_count: 15668 .space 4 15669 .type g_min_erase_count, %object 15670 .size g_min_erase_count, 4 15671g_min_erase_count: 15672 .space 4 15673 .type c_ftl_nand_data_op_blks_per_plane, %object 15674 .size c_ftl_nand_data_op_blks_per_plane, 2 15675c_ftl_nand_data_op_blks_per_plane: 15676 .space 2 15677 .space 2 15678 .type gSysInfo, %object 15679 .size gSysInfo, 16 15680gSysInfo: 15681 .space 16 15682 .type g_sys_ext_data, %object 15683 .size g_sys_ext_data, 512 15684g_sys_ext_data: 15685 .space 512 15686 .type g_gc_free_blk_threshold, %object 15687 .size g_gc_free_blk_threshold, 2 15688g_gc_free_blk_threshold: 15689 .space 2 15690 .type g_gc_merge_free_blk_threshold, %object 15691 .size g_gc_merge_free_blk_threshold, 2 15692g_gc_merge_free_blk_threshold: 15693 .space 2 15694 .type g_gc_skip_write_count, %object 15695 .size g_gc_skip_write_count, 4 15696g_gc_skip_write_count: 15697 .space 4 15698 .type g_gc_blk_index, %object 15699 .size g_gc_blk_index, 2 15700g_gc_blk_index: 15701 .space 2 15702 .space 2 15703 .type g_in_swl_replace, %object 15704 .size g_in_swl_replace, 4 15705g_in_swl_replace: 15706 .space 4 15707 .type g_gc_num_req, %object 15708 .size g_gc_num_req, 4 15709g_gc_num_req: 15710 .space 4 15711 .type gp_gc_page_buf_info, %object 15712 .size gp_gc_page_buf_info, 4 15713gp_gc_page_buf_info: 15714 .space 4 15715 .type p_gc_data_buf, %object 15716 .size p_gc_data_buf, 4 15717p_gc_data_buf: 15718 .space 4 15719 .type p_gc_spare_buf, %object 15720 .size p_gc_spare_buf, 4 15721p_gc_spare_buf: 15722 .space 4 15723 .type req_gc, %object 15724 .size req_gc, 4 15725req_gc: 15726 .space 4 15727 .type c_gc_page_buf_num, %object 15728 .size c_gc_page_buf_num, 4 15729c_gc_page_buf_num: 15730 .space 4 15731 .type p_gc_blk_tbl, %object 15732 .size p_gc_blk_tbl, 4 15733p_gc_blk_tbl: 15734 .space 4 15735 .type g_gc_blk_num, %object 15736 .size g_gc_blk_num, 2 15737g_gc_blk_num: 15738 .space 2 15739 .space 2 15740 .type p_gc_page_info, %object 15741 .size p_gc_page_info, 4 15742p_gc_page_info: 15743 .space 4 15744 .type g_gc_page_offset, %object 15745 .size g_gc_page_offset, 2 15746g_gc_page_offset: 15747 .space 2 15748 .type g_gc_bad_block_temp_num, %object 15749 .size g_gc_bad_block_temp_num, 2 15750g_gc_bad_block_temp_num: 15751 .space 2 15752 .type g_gc_bad_block_temp_tbl, %object 15753 .size g_gc_bad_block_temp_tbl, 34 15754g_gc_bad_block_temp_tbl: 15755 .space 34 15756 .type g_gc_bad_block_gc_index, %object 15757 .size g_gc_bad_block_gc_index, 2 15758g_gc_bad_block_gc_index: 15759 .space 2 15760 .type g_nand_ops, %object 15761 .size g_nand_ops, 24 15762g_nand_ops: 15763 .space 24 15764 .type req_erase, %object 15765 .size req_erase, 4 15766req_erase: 15767 .space 4 15768 .type g_in_gc_progress, %object 15769 .size g_in_gc_progress, 4 15770g_in_gc_progress: 15771 .space 4 15772 .type g_gc_head_data_block, %object 15773 .size g_gc_head_data_block, 4 15774g_gc_head_data_block: 15775 .space 4 15776 .type g_gc_head_data_block_count, %object 15777 .size g_gc_head_data_block_count, 4 15778g_gc_head_data_block_count: 15779 .space 4 15780 .type g_cur_erase_blk, %object 15781 .size g_cur_erase_blk, 4 15782g_cur_erase_blk: 15783 .space 4 15784 .type req_read, %object 15785 .size req_read, 4 15786req_read: 15787 .space 4 15788 .type req_gc_dst, %object 15789 .size req_gc_dst, 4 15790req_gc_dst: 15791 .space 4 15792 .type req_prgm, %object 15793 .size req_prgm, 4 15794req_prgm: 15795 .space 4 15796 .type p_sys_data_buf, %object 15797 .size p_sys_data_buf, 4 15798p_sys_data_buf: 15799 .space 4 15800 .type p_sys_data_buf_1, %object 15801 .size p_sys_data_buf_1, 4 15802p_sys_data_buf_1: 15803 .space 4 15804 .type p_vendor_data_buf, %object 15805 .size p_vendor_data_buf, 4 15806p_vendor_data_buf: 15807 .space 4 15808 .type p_io_data_buf_0, %object 15809 .size p_io_data_buf_0, 4 15810p_io_data_buf_0: 15811 .space 4 15812 .type p_io_data_buf_1, %object 15813 .size p_io_data_buf_1, 4 15814p_io_data_buf_1: 15815 .space 4 15816 .type sftl_nand_check_buf, %object 15817 .size sftl_nand_check_buf, 4 15818sftl_nand_check_buf: 15819 .space 4 15820 .type sftl_temp_buf, %object 15821 .size sftl_temp_buf, 4 15822sftl_temp_buf: 15823 .space 4 15824 .type sftl_nand_check_spare_buf, %object 15825 .size sftl_nand_check_spare_buf, 4 15826sftl_nand_check_spare_buf: 15827 .space 4 15828 .type p_sys_spare_buf, %object 15829 .size p_sys_spare_buf, 4 15830p_sys_spare_buf: 15831 .space 4 15832 .type p_io_spare_buf, %object 15833 .size p_io_spare_buf, 4 15834p_io_spare_buf: 15835 .space 4 15836 .type g_ect_tbl_info_size, %object 15837 .size g_ect_tbl_info_size, 2 15838g_ect_tbl_info_size: 15839 .space 2 15840 .space 2 15841 .type p_swl_mul_table, %object 15842 .size p_swl_mul_table, 4 15843p_swl_mul_table: 15844 .space 4 15845 .type gp_ect_tbl_info, %object 15846 .size gp_ect_tbl_info, 4 15847gp_ect_tbl_info: 15848 .space 4 15849 .type p_valid_page_count_check_table, %object 15850 .size p_valid_page_count_check_table, 4 15851p_valid_page_count_check_table: 15852 .space 4 15853 .type p_map_block_table, %object 15854 .size p_map_block_table, 4 15855p_map_block_table: 15856 .space 4 15857 .type p_map_block_valid_page_count, %object 15858 .size p_map_block_valid_page_count, 4 15859p_map_block_valid_page_count: 15860 .space 4 15861 .type p_vendor_block_valid_page_count, %object 15862 .size p_vendor_block_valid_page_count, 4 15863p_vendor_block_valid_page_count: 15864 .space 4 15865 .type p_vendor_block_ver_table, %object 15866 .size p_vendor_block_ver_table, 4 15867p_vendor_block_ver_table: 15868 .space 4 15869 .type p_vendor_region_ppn_table, %object 15870 .size p_vendor_region_ppn_table, 4 15871p_vendor_region_ppn_table: 15872 .space 4 15873 .type p_map_region_ppn_table, %object 15874 .size p_map_region_ppn_table, 4 15875p_map_region_ppn_table: 15876 .space 4 15877 .type p_map_block_ver_table, %object 15878 .size p_map_block_ver_table, 4 15879p_map_block_ver_table: 15880 .space 4 15881 .type p_l2p_map_buf, %object 15882 .size p_l2p_map_buf, 4 15883p_l2p_map_buf: 15884 .space 4 15885 .type c_ftl_nand_bbm_buf_size, %object 15886 .size c_ftl_nand_bbm_buf_size, 2 15887c_ftl_nand_bbm_buf_size: 15888 .space 2 15889 .space 2 15890 .type gL2pMapInfo, %object 15891 .size gL2pMapInfo, 44 15892gL2pMapInfo: 15893 .space 44 15894 .type g_totle_map_block, %object 15895 .size g_totle_map_block, 2 15896g_totle_map_block: 15897 .space 2 15898 .type g_tmp_data_superblock_id, %object 15899 .size g_tmp_data_superblock_id, 2 15900g_tmp_data_superblock_id: 15901 .space 2 15902 .type g_totle_swl_count, %object 15903 .size g_totle_swl_count, 4 15904g_totle_swl_count: 15905 .space 4 15906 .type ftl_gc_temp_power_lost_recovery_flag, %object 15907 .size ftl_gc_temp_power_lost_recovery_flag, 4 15908ftl_gc_temp_power_lost_recovery_flag: 15909 .space 4 15910 .type g_recovery_page_min_ver, %object 15911 .size g_recovery_page_min_ver, 4 15912g_recovery_page_min_ver: 15913 .space 4 15914 .type req_sys, %object 15915 .size req_sys, 20 15916req_sys: 15917 .space 20 15918 .type g_power_lost_recovery_flag, %object 15919 .size g_power_lost_recovery_flag, 2 15920g_power_lost_recovery_flag: 15921 .space 2 15922 .space 2 15923 .type g_recovery_page_num, %object 15924 .size g_recovery_page_num, 4 15925g_recovery_page_num: 15926 .space 4 15927 .type g_recovery_ppa_tbl, %object 15928 .size g_recovery_ppa_tbl, 128 15929g_recovery_ppa_tbl: 15930 .space 128 15931 .type gVendorBlkInfo, %object 15932 .size gVendorBlkInfo, 44 15933gVendorBlkInfo: 15934 .space 44 15935 .type g_ect_tbl_power_up_flush, %object 15936 .size g_ect_tbl_power_up_flush, 2 15937g_ect_tbl_power_up_flush: 15938 .space 2 15939 .space 2 15940 .type gc_discard_updated, %object 15941 .size gc_discard_updated, 4 15942gc_discard_updated: 15943 .space 4 15944 .type gc_ink_free_return_value, %object 15945 .size gc_ink_free_return_value, 2 15946gc_ink_free_return_value: 15947 .space 2 15948 .type g_gc_cur_blk_valid_pages, %object 15949 .size g_gc_cur_blk_valid_pages, 2 15950g_gc_cur_blk_valid_pages: 15951 .space 2 15952 .type g_gc_cur_blk_max_valid_pages, %object 15953 .size g_gc_cur_blk_max_valid_pages, 2 15954g_gc_cur_blk_max_valid_pages: 15955 .space 2 15956 .space 2 15957 .type g_ftl_nand_free_count, %object 15958 .size g_ftl_nand_free_count, 4 15959g_ftl_nand_free_count: 15960 .space 4 15961 .type g_MaxLbn, %object 15962 .size g_MaxLbn, 4 15963g_MaxLbn: 15964 .space 4 15965 .type idb_need_write_back, %object 15966 .size idb_need_write_back, 4 15967idb_need_write_back: 15968 .space 4 15969 .type idb_buf, %object 15970 .size idb_buf, 4 15971idb_buf: 15972 .space 4 15973 .type gp_flash_check_buf, %object 15974 .size gp_flash_check_buf, 4 15975gp_flash_check_buf: 15976 .space 4 15977 .type _flash_read, %object 15978 .size _flash_read, 4 15979_flash_read: 15980 .space 4 15981 .type _flash_write, %object 15982 .size _flash_write, 4 15983_flash_write: 15984 .space 4 15985 .type g_vendor, %object 15986 .size g_vendor, 4 15987g_vendor: 15988 .space 4 15989 .type check_vpc_table, %object 15990 .size check_vpc_table, 16384 15991check_vpc_table: 15992 .space 16384 15993 .type gp_last_act_superblock, %object 15994 .size gp_last_act_superblock, 4 15995gp_last_act_superblock: 15996 .space 4 15997 .ident "GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621" 15998 .section .note.GNU-stack,"",%progbits 15999