1/* SPDX-License-Identifier: GPL-2.0 */ 2 3/* Copyright (c) 2018-2021 Rockchip Electronics Co. Ltd. 4 * date: 2022-08-15 5 */ 6 .arch armv8-a 7 .file "rk_sftl.c" 8 .text 9 .align 2 10 .type uaccess_disable_not_uao, %function 11uaccess_disable_not_uao: 12 hint 25 // paciasp 13#APP 14// 271 "./arch/arm64/include/asm/uaccess.h" 1 15 .if 1 == 1 16661: 17 nop 18662: 19.pushsection .altinstructions,"a" 20 .word 661b - . 21 .word 663f - . 22 .hword 10 23 .byte 662b-661b 24 .byte 664f-663f 25.popsection 26.subsection 1 27663: 28 .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!1) << 8)) 29 30664: 31 .org . - (664b-663b) + (662b-661b) 32 .org . - (662b-661b) + (664b-663b) 33 .previous 34.endif 35 36// 0 "" 2 37#NO_APP 38 hint 29 // autiasp 39 ret 40 .size uaccess_disable_not_uao, .-uaccess_disable_not_uao 41 .align 2 42 .type uaccess_enable_not_uao, %function 43uaccess_enable_not_uao: 44 hint 25 // paciasp 45#APP 46// 276 "./arch/arm64/include/asm/uaccess.h" 1 47 .if 1 == 1 48661: 49 nop 50662: 51.pushsection .altinstructions,"a" 52 .word 661b - . 53 .word 663f - . 54 .hword 10 55 .byte 662b-661b 56 .byte 664f-663f 57.popsection 58.subsection 1 59663: 60 .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!0) << 8)) 61 62664: 63 .org . - (664b-663b) + (662b-661b) 64 .org . - (662b-661b) + (664b-663b) 65 .previous 66.endif 67 68// 0 "" 2 69#NO_APP 70 hint 29 // autiasp 71 ret 72 .size uaccess_enable_not_uao, .-uaccess_enable_not_uao 73 .section .rodata.str1.1,"aMS",@progbits,1 74.LC0: 75 .string "Buffer overflow detected (%d < %lu)!\n" 76 .text 77 .align 2 78 .type copy_overflow, %function 79copy_overflow: 80 hint 25 // paciasp 81 stp x29, x30, [sp, -16]! 82 mov x2, x1 83 mov x29, sp 84 mov w1, w0 85 adrp x0, .LC0 86 add x0, x0, :lo12:.LC0 87 bl __warn_printk 88#APP 89// 147 "./include/linux/thread_info.h" 1 90 .pushsection __bug_table,"aw"; .align 2; 14470: .long 14471f - 14470b; .pushsection .rodata.str,"aMS",@progbits,1; 14472: .string "include/linux/thread_info.h"; .popsection; .long 14472b - 14470b; .short 147; .short (1 << 0)|((1 << 3) | ((9) << 8)); .popsection; 14471: brk 0x800 91// 0 "" 2 92#NO_APP 93 ldp x29, x30, [sp], 16 94 hint 29 // autiasp 95 ret 96 .size copy_overflow, .-copy_overflow 97 .align 2 98 .type __range_ok, %function 99__range_ok: 100#APP 101// 19 "./arch/arm64/include/asm/current.h" 1 102 mrs x3, sp_el0 103// 0 "" 2 104#NO_APP 105 ldr w4, [x3, 44] 106 hint 25 // paciasp 107 ldr x2, [x3, 8] 108 tbnz x4, 21, .L8 109 ldr x3, [x3] 110 tst w3, 67108864 111 beq .L9 112.L8: 113 sbfx x3, x0, 0, 56 114 and x0, x0, x3 115.L9: 116#APP 117// 79 "./arch/arm64/include/asm/uaccess.h" 1 118 adds x0, x0, x1 119 csel x2, xzr, x2, hi 120 csinv x0, x0, xzr, cc 121 sbcs xzr, x0, x2 122 cset x0, ls 123 124// 0 "" 2 125#NO_APP 126 hint 29 // autiasp 127 ret 128 .size __range_ok, .-__range_ok 129 .align 2 130 .type l2p_addr_tran.isra.0, %function 131l2p_addr_tran.isra.0: 132 .section __patchable_function_entries,"aw",@progbits 133 .align 3 134 .8byte .LPFE1 135 .text 136.LPFE1: 137 nop 138 nop 139 adrp x4, .LANCHOR0 140 add x4, x4, :lo12:.LANCHOR0 141 hint 25 // paciasp 142 ldrh w3, [x4, 8] 143 ldrh w5, [x4, 10] 144 ldrh w4, [x4, 14] 145 cmp w4, 4 146 bne .L15 147 lsr w3, w3, 1 148 ubfiz w5, w5, 1, 15 149.L15: 150 ubfx x4, x0, 10, 16 151 ubfx x6, x0, 10, 16 152 and w0, w0, 1023 153 hint 29 // autiasp 154 udiv w4, w4, w3 155 msub w3, w3, w4, w6 156 madd w3, w3, w5, w0 157 str w3, [x1] 158 str w4, [x2] 159 ret 160 .size l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0 161 .align 2 162 .type _copy_from_user, %function 163_copy_from_user: 164 hint 25 // paciasp 165 stp x29, x30, [sp, -48]! 166 mov x29, sp 167 stp x19, x20, [sp, 16] 168 mov x20, x1 169 mov x19, x2 170 mov x1, x2 171 str x21, [sp, 32] 172 mov x21, x0 173 mov x0, x20 174 bl __range_ok 175 cbz x0, .L20 176 bl uaccess_enable_not_uao 177 sbfx x0, x20, 0, 56 178#APP 179// 19 "./arch/arm64/include/asm/current.h" 1 180 mrs x1, sp_el0 181// 0 "" 2 182#NO_APP 183 and x0, x20, x0 184 ldr x2, [x1, 8] 185#APP 186// 289 "./arch/arm64/include/asm/uaccess.h" 1 187 bics xzr, x0, x2 188 csel x1, x20, xzr, eq 189 190// 0 "" 2 191// 297 "./arch/arm64/include/asm/uaccess.h" 1 192 hint #20 193// 0 "" 2 194#NO_APP 195 mov x2, x19 196 mov x0, x21 197 bl __arch_copy_from_user 198 mov x20, x0 199 bl uaccess_disable_not_uao 200 cbz x20, .L17 201.L18: 202 sub x19, x19, x20 203 mov x2, x20 204 add x0, x21, x19 205 mov w1, 0 206 bl memset 207.L17: 208 mov x0, x20 209 ldp x19, x20, [sp, 16] 210 ldr x21, [sp, 32] 211 ldp x29, x30, [sp], 48 212 hint 29 // autiasp 213 ret 214.L20: 215 mov x20, x19 216 b .L18 217 .size _copy_from_user, .-_copy_from_user 218 .section .rodata.str1.1 219.LC1: 220 .string "SFTL version: 5.0.58 20220814" 221.LC2: 222 .string "\n%s\n" 223.LC3: 224 .string "act blk: %x %x %x %x %x %x\n" 225.LC4: 226 .string "buf blk: %x %x %x %x %x %x\n" 227.LC5: 228 .string "tmp blk: %x %x %x %x %x %x\n" 229.LC6: 230 .string "gc blk: %x %x %x %x %x %x\n" 231.LC7: 232 .string "free blk: %x %x %x\n" 233 .text 234 .align 2 235 .global ftl_print_sblk_info 236 .type ftl_print_sblk_info, %function 237ftl_print_sblk_info: 238 hint 34 // bti c 239 .section __patchable_function_entries 240 .align 3 241 .8byte .LPFE2 242 .text 243.LPFE2: 244 nop 245 nop 246 hint 25 // paciasp 247 stp x29, x30, [sp, -32]! 248 adrp x1, .LC1 249 mov x29, sp 250 str x19, [sp, 16] 251 adrp x19, .LANCHOR0 252 add x19, x19, :lo12:.LANCHOR0 253 add x1, x1, :lo12:.LC1 254 adrp x0, .LC2 255 add x0, x0, :lo12:.LC2 256 bl sftl_printk 257 ldrh w1, [x19, 24] 258 ldr x0, [x19, 72] 259 ldrh w5, [x19, 28] 260 ldrb w4, [x19, 32] 261 ldrh w6, [x0, x1, lsl 1] 262 adrp x0, .LC3 263 ldrb w3, [x19, 30] 264 add x0, x0, :lo12:.LC3 265 ldrh w2, [x19, 26] 266 ldrh w1, [x19, 24] 267 bl sftl_printk 268 ldrh w1, [x19, 80] 269 ldr x0, [x19, 72] 270 ldrh w5, [x19, 84] 271 ldrb w4, [x19, 88] 272 ldrh w6, [x0, x1, lsl 1] 273 adrp x0, .LC4 274 ldrb w3, [x19, 86] 275 add x0, x0, :lo12:.LC4 276 ldrh w2, [x19, 82] 277 ldrh w1, [x19, 80] 278 bl sftl_printk 279 ldrh w1, [x19, 128] 280 ldr x0, [x19, 72] 281 ldrh w5, [x19, 132] 282 ldrb w4, [x19, 136] 283 ldrh w6, [x0, x1, lsl 1] 284 adrp x0, .LC5 285 ldrb w3, [x19, 134] 286 add x0, x0, :lo12:.LC5 287 ldrh w2, [x19, 130] 288 ldrh w1, [x19, 128] 289 bl sftl_printk 290 ldrh w1, [x19, 176] 291 ldr x0, [x19, 72] 292 ldrh w5, [x19, 180] 293 ldrb w4, [x19, 184] 294 ldrh w6, [x0, x1, lsl 1] 295 adrp x0, .LC6 296 ldrb w3, [x19, 182] 297 add x0, x0, :lo12:.LC6 298 ldrh w2, [x19, 178] 299 ldrh w1, [x19, 176] 300 bl sftl_printk 301 ldrh w3, [x19, 224] 302 adrp x0, .LC7 303 ldrh w2, [x19, 226] 304 add x0, x0, :lo12:.LC7 305 ldrh w1, [x19, 228] 306 bl sftl_printk 307 ldr x19, [sp, 16] 308 ldp x29, x30, [sp], 32 309 hint 29 // autiasp 310 ret 311 .size ftl_print_sblk_info, .-ftl_print_sblk_info 312 .align 2 313 .global Ftl_log2 314 .type Ftl_log2, %function 315Ftl_log2: 316 hint 34 // bti c 317 .section __patchable_function_entries 318 .align 3 319 .8byte .LPFE3 320 .text 321.LPFE3: 322 nop 323 nop 324 mov w2, 1 325 mov w1, 0 326 hint 25 // paciasp 327.L28: 328 cmp w2, w0 329 bls .L29 330 sub w0, w1, #1 331 hint 29 // autiasp 332 ret 333.L29: 334 add w1, w1, 1 335 lsl w2, w2, 1 336 and w1, w1, 65535 337 b .L28 338 .size Ftl_log2, .-Ftl_log2 339 .align 2 340 .global FtlPrintInfo 341 .type FtlPrintInfo, %function 342FtlPrintInfo: 343 hint 34 // bti c 344 .section __patchable_function_entries 345 .align 3 346 .8byte .LPFE4 347 .text 348.LPFE4: 349 nop 350 nop 351 hint 25 // paciasp 352 hint 29 // autiasp 353 ret 354 .size FtlPrintInfo, .-FtlPrintInfo 355 .align 2 356 .global FtlSysBlkNumInit 357 .type FtlSysBlkNumInit, %function 358FtlSysBlkNumInit: 359 hint 34 // bti c 360 .section __patchable_function_entries 361 .align 3 362 .8byte .LPFE5 363 .text 364.LPFE5: 365 nop 366 nop 367 and w0, w0, 65535 368 mov w1, 24 369 cmp w0, 24 370 hint 25 // paciasp 371 csel w0, w0, w1, cs 372 hint 29 // autiasp 373 and w1, w0, 65535 374 adrp x0, .LANCHOR0 375 add x0, x0, :lo12:.LANCHOR0 376 ldrh w2, [x0, 236] 377 ldrh w3, [x0, 246] 378 str w1, [x0, 232] 379 mul w2, w2, w1 380 sub w1, w3, w1 381 strh w1, [x0, 244] 382 ldr w1, [x0, 252] 383 str w2, [x0, 240] 384 sub w2, w1, w2 385 str w2, [x0, 248] 386 mov w0, 0 387 ret 388 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit 389 .align 2 390 .global FtlConstantsInit 391 .type FtlConstantsInit, %function 392FtlConstantsInit: 393 hint 34 // bti c 394 .section __patchable_function_entries 395 .align 3 396 .8byte .LPFE6 397 .text 398.LPFE6: 399 nop 400 nop 401 hint 25 // paciasp 402 stp x29, x30, [sp, -80]! 403 mov x29, sp 404 stp x19, x20, [sp, 16] 405 adrp x19, .LANCHOR0 406 add x19, x19, :lo12:.LANCHOR0 407 stp x21, x22, [sp, 32] 408 mov x22, x0 409 stp x23, x24, [sp, 48] 410 ldrh w2, [x0, 14] 411 str x25, [sp, 64] 412 ldrh w1, [x0] 413 ldrh w20, [x0, 2] 414 ldrh w3, [x0, 4] 415 ldrh w0, [x0, 6] 416 strh w0, [x19, 246] 417 strh w1, [x19, 256] 418 strh w20, [x19, 258] 419 strh w3, [x19, 260] 420 strh w2, [x19, 262] 421 cmp w2, 4 422 bne .L36 423 lsr w0, w0, 1 424 strh w0, [x19, 246] 425 mov w0, 8 426 strh w0, [x19, 262] 427.L37: 428 add x0, x19, 264 429 mov x24, 0 430.L38: 431 strb w24, [x24, x0] 432 add x24, x24, 1 433 cmp x24, 32 434 bne .L38 435 cmp w1, 1 436 mov w0, 5 437 csel w0, w0, w1, ne 438 strh w0, [x19, 296] 439 mov w0, 640 440 ldrh w21, [x19, 246] 441 strh w0, [x19, 300] 442 ldrh w0, [x19, 260] 443 strh wzr, [x19, 298] 444 mul w20, w20, w0 445 mul w0, w0, w21 446 and w20, w20, 65535 447 strh w20, [x19, 236] 448 and w0, w0, 65535 449 strh w0, [x19, 302] 450 bl Ftl_log2 451 ldrh w25, [x22, 12] 452 ldrh w23, [x19, 262] 453 strh w0, [x19, 304] 454 strh w25, [x19, 306] 455 mul w0, w20, w25 456 strh w25, [x19, 308] 457 strh w0, [x19, 310] 458 mov w0, w23 459 bl Ftl_log2 460 and w3, w0, 65535 461 ubfiz w1, w23, 9, 7 462 strh w1, [x19, 314] 463 and w1, w23, 127 464 mul w2, w20, w21 465 mul w23, w23, w25 466 str w2, [x19, 252] 467 ubfiz w1, w1, 1, 15 468 strh w1, [x19, 316] 469 ldrh w1, [x22, 20] 470 lsl w21, w21, 6 471 strh w1, [x19, 318] 472 mov w1, 5120 473 mul w2, w2, w23 474 strh w0, [x19, 312] 475 sdiv w1, w1, w23 476 asr w2, w2, 11 477 str w2, [x19, 320] 478 mov w2, 4 479 cmp w1, 4 480 csel w1, w1, w2, gt 481 mov w2, 640 482 asr w2, w2, w0 483 add w0, w3, 9 484 cmp w20, 1 485 add w2, w2, 2 486 asr w0, w21, w0 487 and w21, w0, 65535 488 strh w0, [x19, 328] 489 strh w1, [x19, 324] 490 mul w0, w20, w21 491 strh w2, [x19, 326] 492 str w0, [x19, 332] 493 and w0, w1, 65535 494 udiv w0, w0, w20 495 add w0, w0, w21 496 add w1, w0, 12 497 add w0, w0, 8 498 csel w0, w0, w1, ne 499 str w0, [x19, 232] 500 bl FtlSysBlkNumInit 501 strh w24, [x19, 342] 502 ldr w0, [x19, 232] 503 ldr w1, [x19, 248] 504 str w0, [x19, 336] 505 ldrh w0, [x19, 306] 506 str wzr, [x19, 344] 507 ldp x21, x22, [sp, 32] 508 mul w0, w0, w1 509 ldrh w1, [x19, 312] 510 ldp x23, x24, [sp, 48] 511 add w1, w1, 9 512 lsl w0, w0, 2 513 ldr x25, [sp, 64] 514 lsr w0, w0, w1 515 add w0, w0, 2 516 strh w0, [x19, 340] 517 ldrh w0, [x19, 324] 518 add w0, w0, 3 519 strh w0, [x19, 324] 520 ldr w0, [x19, 332] 521 add w0, w0, 3 522 str w0, [x19, 332] 523 mov w0, 0 524 ldp x19, x20, [sp, 16] 525 ldp x29, x30, [sp], 80 526 hint 29 // autiasp 527 ret 528.L36: 529 cmp w2, 8 530 bne .L37 531 cmp w3, 1 532 bne .L37 533 lsr w0, w0, 1 534 strh w0, [x19, 246] 535 mov w0, 2 536 strh w0, [x19, 260] 537 b .L37 538 .size FtlConstantsInit, .-FtlConstantsInit 539 .align 2 540 .global IsBlkInVendorPart 541 .type IsBlkInVendorPart, %function 542IsBlkInVendorPart: 543 hint 34 // bti c 544 .section __patchable_function_entries 545 .align 3 546 .8byte .LPFE7 547 .text 548.LPFE7: 549 nop 550 nop 551 adrp x1, .LANCHOR0 552 add x1, x1, :lo12:.LANCHOR0 553 hint 25 // paciasp 554 ldrh w2, [x1, 348] 555 cbz w2, .L50 556 ldr x2, [x1, 352] 557 and w0, w0, 65535 558 ldrh w3, [x1, 324] 559 mov x1, 0 560 sub x2, x2, #2 561.L48: 562 cmp w3, w1, uxth 563 bhi .L49 564.L50: 565 mov w0, 0 566.L46: 567 hint 29 // autiasp 568 ret 569.L49: 570 add x1, x1, 1 571 ldrh w4, [x2, x1, lsl 1] 572 cmp w4, w0 573 bne .L48 574 mov w0, 1 575 b .L46 576 .size IsBlkInVendorPart, .-IsBlkInVendorPart 577 .align 2 578 .global FtlCacheWriteBack 579 .type FtlCacheWriteBack, %function 580FtlCacheWriteBack: 581 hint 34 // bti c 582 .section __patchable_function_entries 583 .align 3 584 .8byte .LPFE8 585 .text 586.LPFE8: 587 nop 588 nop 589 mov w0, 0 590 hint 25 // paciasp 591 hint 29 // autiasp 592 ret 593 .size FtlCacheWriteBack, .-FtlCacheWriteBack 594 .align 2 595 .global sftl_get_density 596 .type sftl_get_density, %function 597sftl_get_density: 598 hint 34 // bti c 599 .section __patchable_function_entries 600 .align 3 601 .8byte .LPFE9 602 .text 603.LPFE9: 604 nop 605 nop 606 adrp x0, .LANCHOR0+344 607 hint 25 // paciasp 608 hint 29 // autiasp 609 ldr w0, [x0, #:lo12:.LANCHOR0+344] 610 ret 611 .size sftl_get_density, .-sftl_get_density 612 .section .rodata.str1.1 613.LC8: 614 .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n" 615 .text 616 .align 2 617 .global FtlBbmMapBadBlock 618 .type FtlBbmMapBadBlock, %function 619FtlBbmMapBadBlock: 620 hint 34 // bti c 621 .section __patchable_function_entries 622 .align 3 623 .8byte .LPFE10 624 .text 625.LPFE10: 626 nop 627 nop 628 hint 25 // paciasp 629 stp x29, x30, [sp, -32]! 630 and w1, w0, 65535 631 mov x29, sp 632 str x19, [sp, 16] 633 adrp x19, .LANCHOR0 634 add x19, x19, :lo12:.LANCHOR0 635 mov w4, 1 636 add x19, x19, 360 637 ldrh w3, [x19, -58] 638 udiv w2, w1, w3 639 msub w3, w2, w3, w1 640 add x0, x19, w2, uxth 3 641 ubfx x5, x3, 5, 11 642 lsl w4, w4, w3 643 ldr x0, [x0, 32] 644 lsl x5, x5, 2 645 and w3, w3, 65535 646 ldr w6, [x0, x5] 647 orr w4, w4, w6 648 str w4, [x0, x5] 649 adrp x0, .LC8 650 add x0, x0, :lo12:.LC8 651 bl sftl_printk 652 ldrh w0, [x19, 6] 653 add w0, w0, 1 654 strh w0, [x19, 6] 655 mov w0, 0 656 ldr x19, [sp, 16] 657 ldp x29, x30, [sp], 32 658 hint 29 // autiasp 659 ret 660 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock 661 .align 2 662 .global FtlBbmIsBadBlock 663 .type FtlBbmIsBadBlock, %function 664FtlBbmIsBadBlock: 665 hint 34 // bti c 666 .section __patchable_function_entries 667 .align 3 668 .8byte .LPFE11 669 .text 670.LPFE11: 671 nop 672 nop 673 adrp x2, .LANCHOR0 674 add x3, x2, :lo12:.LANCHOR0 675 and w0, w0, 65535 676 hint 25 // paciasp 677 hint 29 // autiasp 678 ldrh w1, [x3, 302] 679 udiv w2, w0, w1 680 msub w1, w2, w1, w0 681 add x2, x3, w2, uxth 3 682 ldr x0, [x2, 392] 683 ubfx x3, x1, 5, 11 684 ldr w0, [x0, x3, lsl 2] 685 lsr w0, w0, w1 686 and w0, w0, 1 687 ret 688 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock 689 .align 2 690 .global FtlBbtInfoPrint 691 .type FtlBbtInfoPrint, %function 692FtlBbtInfoPrint: 693 hint 34 // bti c 694 .section __patchable_function_entries 695 .align 3 696 .8byte .LPFE12 697 .text 698.LPFE12: 699 nop 700 nop 701 hint 25 // paciasp 702 hint 29 // autiasp 703 ret 704 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint 705 .align 2 706 .global FtlBbtCalcTotleCnt 707 .type FtlBbtCalcTotleCnt, %function 708FtlBbtCalcTotleCnt: 709 hint 34 // bti c 710 .section __patchable_function_entries 711 .align 3 712 .8byte .LPFE13 713 .text 714.LPFE13: 715 nop 716 nop 717 hint 25 // paciasp 718 stp x29, x30, [sp, -48]! 719 adrp x0, .LANCHOR0 720 mov x29, sp 721 add x0, x0, :lo12:.LANCHOR0 722 stp x19, x20, [sp, 16] 723 mov w20, 0 724 mov w19, 0 725 str x21, [sp, 32] 726 ldrh w21, [x0, 302] 727 ldrh w0, [x0, 258] 728 mul w21, w21, w0 729.L64: 730 cmp w19, w21 731 blt .L66 732 mov w0, w20 733 ldp x19, x20, [sp, 16] 734 ldr x21, [sp, 32] 735 ldp x29, x30, [sp], 48 736 hint 29 // autiasp 737 ret 738.L66: 739 mov w0, w19 740 bl FtlBbmIsBadBlock 741 cbz w0, .L65 742 add w20, w20, 1 743 and w20, w20, 65535 744.L65: 745 add w19, w19, 1 746 and w19, w19, 65535 747 b .L64 748 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt 749 .align 2 750 .global V2P_block 751 .type V2P_block, %function 752V2P_block: 753 hint 34 // bti c 754 .section __patchable_function_entries 755 .align 3 756 .8byte .LPFE14 757 .text 758.LPFE14: 759 nop 760 nop 761 adrp x4, .LANCHOR0 762 add x4, x4, :lo12:.LANCHOR0 763 and w0, w0, 65535 764 and w1, w1, 65535 765 hint 25 // paciasp 766 hint 29 // autiasp 767 ldrh w2, [x4, 260] 768 ldrh w4, [x4, 302] 769 udiv w3, w0, w2 770 msub w0, w3, w2, w0 771 madd w2, w2, w1, w0 772 madd w0, w3, w4, w2 773 ret 774 .size V2P_block, .-V2P_block 775 .align 2 776 .global P2V_plane 777 .type P2V_plane, %function 778P2V_plane: 779 hint 34 // bti c 780 .section __patchable_function_entries 781 .align 3 782 .8byte .LPFE15 783 .text 784.LPFE15: 785 nop 786 nop 787 adrp x2, .LANCHOR0 788 add x2, x2, :lo12:.LANCHOR0 789 and w0, w0, 65535 790 hint 25 // paciasp 791 hint 29 // autiasp 792 ldrh w1, [x2, 260] 793 ldrh w3, [x2, 302] 794 udiv w2, w0, w1 795 udiv w3, w0, w3 796 msub w0, w2, w1, w0 797 madd w0, w1, w3, w0 798 ret 799 .size P2V_plane, .-P2V_plane 800 .align 2 801 .global P2V_block_in_plane 802 .type P2V_block_in_plane, %function 803P2V_block_in_plane: 804 hint 34 // bti c 805 .section __patchable_function_entries 806 .align 3 807 .8byte .LPFE16 808 .text 809.LPFE16: 810 nop 811 nop 812 adrp x2, .LANCHOR0 813 add x2, x2, :lo12:.LANCHOR0 814 and w3, w0, 65535 815 hint 25 // paciasp 816 hint 29 // autiasp 817 ldrh w0, [x2, 302] 818 udiv w1, w3, w0 819 msub w0, w1, w0, w3 820 ldrh w1, [x2, 260] 821 and w0, w0, 65535 822 udiv w0, w0, w1 823 ret 824 .size P2V_block_in_plane, .-P2V_block_in_plane 825 .align 2 826 .global ftl_cmp_data_ver 827 .type ftl_cmp_data_ver, %function 828ftl_cmp_data_ver: 829 hint 34 // bti c 830 .section __patchable_function_entries 831 .align 3 832 .8byte .LPFE17 833 .text 834.LPFE17: 835 nop 836 nop 837 cmp w0, w1 838 mov w2, -2147483648 839 hint 25 // paciasp 840 bls .L78 841 sub w1, w0, w1 842 cmp w1, w2 843 cset w0, ls 844.L77: 845 hint 29 // autiasp 846 ret 847.L78: 848 sub w1, w1, w0 849 cmp w1, w2 850 cset w0, hi 851 b .L77 852 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver 853 .align 2 854 .global FtlFreeSysBlkQueueEmpty 855 .type FtlFreeSysBlkQueueEmpty, %function 856FtlFreeSysBlkQueueEmpty: 857 hint 34 // bti c 858 .section __patchable_function_entries 859 .align 3 860 .8byte .LPFE18 861 .text 862.LPFE18: 863 nop 864 nop 865 adrp x0, .LANCHOR0+462 866 hint 25 // paciasp 867 hint 29 // autiasp 868 ldrh w0, [x0, #:lo12:.LANCHOR0+462] 869 cmp w0, 0 870 cset w0, eq 871 ret 872 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty 873 .align 2 874 .global FtlFreeSysBlkQueueFull 875 .type FtlFreeSysBlkQueueFull, %function 876FtlFreeSysBlkQueueFull: 877 hint 34 // bti c 878 .section __patchable_function_entries 879 .align 3 880 .8byte .LPFE19 881 .text 882.LPFE19: 883 nop 884 nop 885 adrp x0, .LANCHOR0+462 886 hint 25 // paciasp 887 hint 29 // autiasp 888 ldrh w0, [x0, #:lo12:.LANCHOR0+462] 889 cmp w0, 1024 890 cset w0, eq 891 ret 892 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull 893 .align 2 894 .global FtlFreeSysBLkSort 895 .type FtlFreeSysBLkSort, %function 896FtlFreeSysBLkSort: 897 hint 34 // bti c 898 .section __patchable_function_entries 899 .align 3 900 .8byte .LPFE20 901 .text 902.LPFE20: 903 nop 904 nop 905 adrp x0, .LANCHOR0 906 add x0, x0, :lo12:.LANCHOR0 907 hint 25 // paciasp 908 ldrh w1, [x0, 462] 909 cbz w1, .L85 910 ldrh w5, [x0, 2540] 911 add x4, x0, 456 912 ldrh w2, [x4, 2] 913 mov w6, 0 914 ldrh w1, [x4, 4] 915 and w5, w5, 31 916 mov w3, 0 917.L88: 918 cmp w3, w5 919 bne .L89 920 cbz w6, .L85 921 strh w2, [x0, 458] 922 strh w1, [x0, 460] 923.L85: 924 hint 29 // autiasp 925 ret 926.L89: 927 add x6, x4, w2, sxtw 1 928 add w3, w3, 1 929 add w2, w2, 1 930 and w3, w3, 65535 931 and w2, w2, 1023 932 ldrh w7, [x6, 8] 933 add x6, x4, w1, sxtw 1 934 add w1, w1, 1 935 and w1, w1, 1023 936 strh w7, [x6, 8] 937 mov w6, 1 938 b .L88 939 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort 940 .align 2 941 .global IsInFreeQueue 942 .type IsInFreeQueue, %function 943IsInFreeQueue: 944 hint 34 // bti c 945 .section __patchable_function_entries 946 .align 3 947 .8byte .LPFE21 948 .text 949.LPFE21: 950 nop 951 nop 952 adrp x1, .LANCHOR0 953 add x1, x1, :lo12:.LANCHOR0 954 hint 25 // paciasp 955 ldrh w3, [x1, 462] 956 cmp w3, 1024 957 beq .L99 958 ldrh w5, [x1, 458] 959 add x4, x1, 456 960 and w0, w0, 65535 961 mov w2, 0 962.L97: 963 cmp w3, w2 964 bhi .L98 965.L99: 966 mov w0, 0 967.L95: 968 hint 29 // autiasp 969 ret 970.L98: 971 add w1, w5, w2 972 ubfiz x1, x1, 1, 10 973 add x1, x4, x1 974 ldrh w1, [x1, 8] 975 cmp w1, w0 976 beq .L100 977 add w2, w2, 1 978 b .L97 979.L100: 980 mov w0, 1 981 b .L95 982 .size IsInFreeQueue, .-IsInFreeQueue 983 .align 2 984 .global insert_data_list 985 .type insert_data_list, %function 986insert_data_list: 987 hint 34 // bti c 988 .section __patchable_function_entries 989 .align 3 990 .8byte .LPFE22 991 .text 992.LPFE22: 993 nop 994 nop 995 adrp x1, .LANCHOR0 996 add x1, x1, :lo12:.LANCHOR0 997 hint 25 // paciasp 998 ldrh w2, [x1, 244] 999 cmp w2, w0, uxth 1000 bls .L104 1001 and w3, w0, 65535 1002 mov w10, 6 1003 ldr x7, [x1, 2560] 1004 mov w0, -1 1005 umull x6, w3, w10 1006 add x4, x7, x6 1007 str w0, [x7, x6] 1008 ldr x2, [x1, 2568] 1009 cbnz x2, .L105 1010.L117: 1011 str x4, [x1, 2568] 1012 b .L104 1013.L105: 1014 ldr x11, [x1, 72] 1015 ubfiz x5, x3, 1, 16 1016 ldrh w8, [x4, 4] 1017 mov w12, 0 1018 ldr x9, [x1, 2560] 1019 cmp w8, 0 1020 ldrh w5, [x11, x5] 1021 mov w15, 65535 1022 ldrh w14, [x1, 244] 1023 mul w5, w5, w8 1024 mov x8, -6148914691236517206 1025 movk x8, 0xaaab, lsl 0 1026 csel w5, w5, w0, ne 1027 sub x0, x2, x9 1028 asr x0, x0, 1 1029 mul x0, x0, x8 1030 and w0, w0, 65535 1031.L110: 1032 add w8, w12, 1 1033 and w12, w8, 65535 1034 cmp w14, w8, uxth 1035 bcc .L104 1036 cmp w3, w0 1037 beq .L104 1038 ldrh w13, [x2, 4] 1039 cbz w13, .L108 1040 ubfiz x8, x0, 1, 16 1041 ldrh w8, [x11, x8] 1042 mul w8, w8, w13 1043 cmp w8, w5 1044 bcs .L108 1045 ldrh w8, [x2] 1046 cmp w8, w15 1047 bne .L109 1048 strh w0, [x4, 2] 1049 strh w3, [x2] 1050 str x4, [x1, 2576] 1051.L104: 1052 mov w0, 0 1053 hint 29 // autiasp 1054 ret 1055.L109: 1056 umaddl x2, w8, w10, x9 1057 mov w0, w8 1058 b .L110 1059.L108: 1060 strh w0, [x7, x6] 1061 ldrh w0, [x2, 2] 1062 strh w0, [x4, 2] 1063 ldr x5, [x1, 2568] 1064 cmp x2, x5 1065 bne .L111 1066 strh w3, [x2, 2] 1067 b .L117 1068.L111: 1069 mov w4, 6 1070 ldr x1, [x1, 2560] 1071 umull x0, w0, w4 1072 strh w3, [x1, x0] 1073 strh w3, [x2, 2] 1074 b .L104 1075 .size insert_data_list, .-insert_data_list 1076 .section .rodata.str1.1 1077.LC9: 1078 .string "\n!!!!! error @ func:%s - line:%d\n" 1079 .text 1080 .align 2 1081 .global INSERT_DATA_LIST 1082 .type INSERT_DATA_LIST, %function 1083INSERT_DATA_LIST: 1084 hint 34 // bti c 1085 .section __patchable_function_entries 1086 .align 3 1087 .8byte .LPFE23 1088 .text 1089.LPFE23: 1090 nop 1091 nop 1092 hint 25 // paciasp 1093 stp x29, x30, [sp, -16]! 1094 mov x29, sp 1095 bl insert_data_list 1096 adrp x1, .LANCHOR0 1097 add x1, x1, :lo12:.LANCHOR0 1098 ldrh w0, [x1, 2584] 1099 add w0, w0, 1 1100 and w0, w0, 65535 1101 strh w0, [x1, 2584] 1102 ldrh w1, [x1, 244] 1103 cmp w1, w0 1104 bcs .L118 1105 adrp x1, .LANCHOR1 1106 adrp x0, .LC9 1107 add x1, x1, :lo12:.LANCHOR1 1108 add x0, x0, :lo12:.LC9 1109 mov w2, 214 1110 bl sftl_printk 1111.L118: 1112 ldp x29, x30, [sp], 16 1113 hint 29 // autiasp 1114 ret 1115 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST 1116 .align 2 1117 .global insert_free_list 1118 .type insert_free_list, %function 1119insert_free_list: 1120 hint 34 // bti c 1121 .section __patchable_function_entries 1122 .align 3 1123 .8byte .LPFE24 1124 .text 1125.LPFE24: 1126 nop 1127 nop 1128 mov w11, 65535 1129 hint 25 // paciasp 1130 cmp w11, w0, uxth 1131 beq .L122 1132 and w3, w0, 65535 1133 adrp x1, .LANCHOR0 1134 add x1, x1, :lo12:.LANCHOR0 1135 mov w9, 6 1136 mov w0, -1 1137 umull x5, w3, w9 1138 ldr x6, [x1, 2560] 1139 add x4, x6, x5 1140 str w0, [x6, x5] 1141 ldr x0, [x1, 2592] 1142 cbnz x0, .L123 1143.L129: 1144 str x4, [x1, 2592] 1145 b .L122 1146.L123: 1147 ldr x10, [x1, 2600] 1148 ubfiz x2, x3, 1, 16 1149 ldr x8, [x1, 2560] 1150 mov x7, -6148914691236517206 1151 ldrh w12, [x10, x2] 1152 movk x7, 0xaaab, lsl 0 1153 sub x2, x0, x8 1154 asr x2, x2, 1 1155 mul x2, x2, x7 1156 and w2, w2, 65535 1157.L126: 1158 ubfiz x7, x2, 1, 16 1159 ldrh w7, [x10, x7] 1160 cmp w7, w12 1161 bcs .L124 1162 ldrh w7, [x0] 1163 cmp w7, w11 1164 bne .L125 1165 strh w2, [x4, 2] 1166 strh w3, [x0] 1167.L122: 1168 mov w0, 0 1169 hint 29 // autiasp 1170 ret 1171.L125: 1172 umaddl x0, w7, w9, x8 1173 mov w2, w7 1174 b .L126 1175.L124: 1176 ldrh w7, [x0, 2] 1177 strh w7, [x4, 2] 1178 strh w2, [x6, x5] 1179 ldr x2, [x1, 2592] 1180 cmp x2, x0 1181 bne .L127 1182 strh w3, [x0, 2] 1183 b .L129 1184.L127: 1185 ldrh w2, [x0, 2] 1186 mov w4, 6 1187 ldr x1, [x1, 2560] 1188 umull x2, w2, w4 1189 strh w3, [x1, x2] 1190 strh w3, [x0, 2] 1191 b .L122 1192 .size insert_free_list, .-insert_free_list 1193 .align 2 1194 .global INSERT_FREE_LIST 1195 .type INSERT_FREE_LIST, %function 1196INSERT_FREE_LIST: 1197 hint 34 // bti c 1198 .section __patchable_function_entries 1199 .align 3 1200 .8byte .LPFE25 1201 .text 1202.LPFE25: 1203 nop 1204 nop 1205 hint 25 // paciasp 1206 stp x29, x30, [sp, -16]! 1207 mov x29, sp 1208 bl insert_free_list 1209 adrp x1, .LANCHOR0 1210 add x1, x1, :lo12:.LANCHOR0 1211 ldrh w0, [x1, 228] 1212 add w0, w0, 1 1213 and w0, w0, 65535 1214 strh w0, [x1, 228] 1215 ldrh w1, [x1, 244] 1216 cmp w1, w0 1217 bcs .L130 1218 adrp x1, .LANCHOR1 1219 add x1, x1, :lo12:.LANCHOR1 1220 adrp x0, .LC9 1221 add x1, x1, 17 1222 add x0, x0, :lo12:.LC9 1223 mov w2, 207 1224 bl sftl_printk 1225.L130: 1226 ldp x29, x30, [sp], 16 1227 hint 29 // autiasp 1228 ret 1229 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST 1230 .align 2 1231 .global List_remove_node 1232 .type List_remove_node, %function 1233List_remove_node: 1234 hint 34 // bti c 1235 .section __patchable_function_entries 1236 .align 3 1237 .8byte .LPFE26 1238 .text 1239.LPFE26: 1240 nop 1241 nop 1242 hint 25 // paciasp 1243 stp x29, x30, [sp, -64]! 1244 and w1, w1, 65535 1245 mov x29, sp 1246 stp x19, x20, [sp, 16] 1247 adrp x20, .LANCHOR0 1248 add x20, x20, :lo12:.LANCHOR0 1249 stp x21, x22, [sp, 32] 1250 mov x21, x0 1251 mov w0, 6 1252 ldr x22, [x20, 2560] 1253 umull x19, w1, w0 1254 str x23, [sp, 48] 1255 mov w0, 65535 1256 add x23, x22, x19 1257 ldrh w1, [x23, 2] 1258 cmp w1, w0 1259 bne .L134 1260 ldr x0, [x21] 1261 cmp x23, x0 1262 bne .L135 1263.L138: 1264 ldrh w0, [x22, x19] 1265 mov w1, 65535 1266 cmp w0, w1 1267 bne .L142 1268 str xzr, [x21] 1269.L140: 1270 mov w0, -1 1271 str w0, [x22, x19] 1272 mov w0, 0 1273 ldp x19, x20, [sp, 16] 1274 ldp x21, x22, [sp, 32] 1275 ldr x23, [sp, 48] 1276 ldp x29, x30, [sp], 64 1277 hint 29 // autiasp 1278 ret 1279.L135: 1280 adrp x1, .LANCHOR1 1281 add x1, x1, :lo12:.LANCHOR1 1282 adrp x0, .LC9 1283 add x1, x1, 34 1284 add x0, x0, :lo12:.LC9 1285 mov w2, 372 1286 bl sftl_printk 1287.L134: 1288 ldr x0, [x21] 1289 ldrh w1, [x22, x19] 1290 cmp x0, x23 1291 beq .L138 1292 ldrh w0, [x23, 2] 1293 mov w2, 65535 1294 cmp w1, w2 1295 bne .L141 1296 cmp w0, w1 1297 beq .L140 1298 mov w1, 6 1299 mov w2, -1 1300 umull x0, w0, w1 1301 ldr x1, [x20, 2560] 1302 strh w2, [x1, x0] 1303 b .L140 1304.L142: 1305 ldr x1, [x20, 2560] 1306 mov w2, 6 1307 umaddl x0, w0, w2, x1 1308 mov w1, -1 1309 str x0, [x21] 1310 strh w1, [x0, 2] 1311 b .L140 1312.L141: 1313 ldr x3, [x20, 2560] 1314 mov w2, 6 1315 umaddl x1, w1, w2, x3 1316 strh w0, [x1, 2] 1317 umull x0, w0, w2 1318 ldr x1, [x20, 2560] 1319 ldrh w3, [x22, x19] 1320 strh w3, [x1, x0] 1321 b .L140 1322 .size List_remove_node, .-List_remove_node 1323 .align 2 1324 .global List_pop_index_node 1325 .type List_pop_index_node, %function 1326List_pop_index_node: 1327 hint 34 // bti c 1328 .section __patchable_function_entries 1329 .align 3 1330 .8byte .LPFE27 1331 .text 1332.LPFE27: 1333 nop 1334 nop 1335 ldr x2, [x0] 1336 cbz x2, .L150 1337 hint 25 // paciasp 1338 stp x29, x30, [sp, -32]! 1339 adrp x3, .LANCHOR0+2560 1340 mov x29, sp 1341 str x19, [sp, 16] 1342 and w1, w1, 65535 1343 ldr x19, [x3, #:lo12:.LANCHOR0+2560] 1344 mov w4, 65535 1345 mov w5, 6 1346.L147: 1347 cbz w1, .L148 1348 ldrh w3, [x2] 1349 cmp w3, w4 1350 bne .L149 1351.L148: 1352 sub x19, x2, x19 1353 mov x2, -6148914691236517206 1354 movk x2, 0xaaab, lsl 0 1355 asr x19, x19, 1 1356 mul x19, x19, x2 1357 and w19, w19, 65535 1358 mov w1, w19 1359 bl List_remove_node 1360 mov w0, w19 1361 ldr x19, [sp, 16] 1362 ldp x29, x30, [sp], 32 1363 hint 29 // autiasp 1364 ret 1365.L149: 1366 sub w1, w1, #1 1367 umaddl x2, w3, w5, x19 1368 and w1, w1, 65535 1369 b .L147 1370.L150: 1371 mov w0, 65535 1372 ret 1373 .size List_pop_index_node, .-List_pop_index_node 1374 .align 2 1375 .global List_pop_head_node 1376 .type List_pop_head_node, %function 1377List_pop_head_node: 1378 hint 34 // bti c 1379 .section __patchable_function_entries 1380 .align 3 1381 .8byte .LPFE28 1382 .text 1383.LPFE28: 1384 nop 1385 nop 1386 hint 25 // paciasp 1387 stp x29, x30, [sp, -16]! 1388 mov w1, 0 1389 mov x29, sp 1390 bl List_pop_index_node 1391 ldp x29, x30, [sp], 16 1392 hint 29 // autiasp 1393 ret 1394 .size List_pop_head_node, .-List_pop_head_node 1395 .align 2 1396 .global List_get_gc_head_node 1397 .type List_get_gc_head_node, %function 1398List_get_gc_head_node: 1399 hint 34 // bti c 1400 .section __patchable_function_entries 1401 .align 3 1402 .8byte .LPFE29 1403 .text 1404.LPFE29: 1405 nop 1406 nop 1407 and w2, w0, 65535 1408 adrp x0, .LANCHOR0 1409 add x0, x0, :lo12:.LANCHOR0 1410 hint 25 // paciasp 1411 ldr x1, [x0, 2568] 1412 cbz x1, .L165 1413 mov w4, 6 1414 ldr x3, [x0, 2560] 1415 mov w0, 65535 1416.L162: 1417 cbz w2, .L163 1418 ldrh w1, [x1] 1419 cmp w1, w0 1420 bne .L164 1421.L160: 1422 hint 29 // autiasp 1423 ret 1424.L164: 1425 sub w2, w2, #1 1426 umaddl x1, w1, w4, x3 1427 and w2, w2, 65535 1428 b .L162 1429.L165: 1430 mov w0, 65535 1431 b .L160 1432.L163: 1433 sub x0, x1, x3 1434 mov x1, -6148914691236517206 1435 movk x1, 0xaaab, lsl 0 1436 asr x0, x0, 1 1437 mul x0, x0, x1 1438 and w0, w0, 65535 1439 b .L160 1440 .size List_get_gc_head_node, .-List_get_gc_head_node 1441 .align 2 1442 .global List_update_data_list 1443 .type List_update_data_list, %function 1444List_update_data_list: 1445 hint 34 // bti c 1446 .section __patchable_function_entries 1447 .align 3 1448 .8byte .LPFE30 1449 .text 1450.LPFE30: 1451 nop 1452 nop 1453 hint 25 // paciasp 1454 stp x29, x30, [sp, -64]! 1455 mov x29, sp 1456 stp x19, x20, [sp, 16] 1457 adrp x19, .LANCHOR0 1458 add x19, x19, :lo12:.LANCHOR0 1459 stp x21, x22, [sp, 32] 1460 ldrh w1, [x19, 24] 1461 stp x23, x24, [sp, 48] 1462 cmp w1, w0, uxth 1463 beq .L169 1464 and w20, w0, 65535 1465 ldrh w0, [x19, 80] 1466 cmp w0, w20 1467 beq .L169 1468 ldrh w0, [x19, 128] 1469 cmp w0, w20 1470 beq .L169 1471 mov w22, 6 1472 ldr x24, [x19, 2560] 1473 umull x22, w20, w22 1474 ldr x0, [x19, 2568] 1475 add x23, x24, x22 1476 cmp x23, x0 1477 beq .L169 1478 ldr x1, [x19, 72] 1479 ubfiz x0, x20, 1, 16 1480 ldrh w21, [x1, x0] 1481 mov w1, 65535 1482 ldrh w0, [x23, 4] 1483 cmp w0, 0 1484 mul w21, w21, w0 1485 ldrh w0, [x23, 2] 1486 csinv w21, w21, wzr, ne 1487 cmp w0, w1 1488 bne .L172 1489 ldrh w1, [x24, x22] 1490 cmp w1, w0 1491 bne .L172 1492 adrp x1, .LANCHOR1 1493 add x1, x1, :lo12:.LANCHOR1 1494 adrp x0, .LC9 1495 add x1, x1, 51 1496 add x0, x0, :lo12:.LC9 1497 mov w2, 463 1498 bl sftl_printk 1499.L172: 1500 ldrh w0, [x23, 2] 1501 mov w1, 65535 1502 cmp w0, w1 1503 bne .L173 1504 ldrh w1, [x24, x22] 1505 cmp w1, w0 1506 beq .L169 1507.L173: 1508 mov w1, 6 1509 mov x2, -6148914691236517206 1510 movk x2, 0xaaab, lsl 0 1511 umull x0, w0, w1 1512 asr x1, x0, 1 1513 mul x1, x1, x2 1514 ldr x2, [x19, 72] 1515 ldrh w1, [x2, x1, lsl 1] 1516 ldr x2, [x19, 2560] 1517 add x0, x2, x0 1518 ldrh w2, [x0, 4] 1519 cmp w2, 0 1520 mul w0, w1, w2 1521 csinv w0, w0, wzr, ne 1522 cmp w21, w0 1523 bcs .L169 1524 mov w1, w20 1525 add x0, x19, 2568 1526 bl List_remove_node 1527 ldrh w0, [x19, 2584] 1528 cbnz w0, .L175 1529 adrp x1, .LANCHOR1 1530 add x1, x1, :lo12:.LANCHOR1 1531 adrp x0, .LC9 1532 add x1, x1, 51 1533 add x0, x0, :lo12:.LC9 1534 mov w2, 474 1535 bl sftl_printk 1536.L175: 1537 ldrh w0, [x19, 2584] 1538 sub w0, w0, #1 1539 strh w0, [x19, 2584] 1540 mov w0, w20 1541 bl INSERT_DATA_LIST 1542.L169: 1543 mov w0, 0 1544 ldp x19, x20, [sp, 16] 1545 ldp x21, x22, [sp, 32] 1546 ldp x23, x24, [sp, 48] 1547 ldp x29, x30, [sp], 64 1548 hint 29 // autiasp 1549 ret 1550 .size List_update_data_list, .-List_update_data_list 1551 .align 2 1552 .global select_l2p_ram_region 1553 .type select_l2p_ram_region, %function 1554select_l2p_ram_region: 1555 hint 34 // bti c 1556 .section __patchable_function_entries 1557 .align 3 1558 .8byte .LPFE31 1559 .text 1560.LPFE31: 1561 nop 1562 nop 1563 hint 25 // paciasp 1564 stp x29, x30, [sp, -32]! 1565 adrp x2, .LANCHOR0 1566 mov x29, sp 1567 add x2, x2, :lo12:.LANCHOR0 1568 mov x3, 0 1569 str x19, [sp, 16] 1570 mov w5, 65535 1571 ldr x0, [x2, 2608] 1572 ldrh w1, [x2, 342] 1573 sub x4, x0, #16 1574.L180: 1575 and w19, w3, 65535 1576 cmp w1, w3, uxth 1577 bhi .L182 1578 mov w19, w1 1579 add x7, x0, 4 1580 mov x3, 0 1581 mov w5, -2147483648 1582.L183: 1583 and w6, w3, 65535 1584 cmp w1, w3, uxth 1585 bhi .L185 1586 cmp w1, w19 1587 bhi .L181 1588 mov w19, w1 1589 ldrh w5, [x2, 2616] 1590 mov w3, -1 1591 mov w2, 0 1592.L186: 1593 cmp w1, w2 1594 bne .L188 1595 cmp w1, w19 1596 bhi .L181 1597 adrp x1, .LANCHOR1 1598 add x1, x1, :lo12:.LANCHOR1 1599 add x1, x1, 73 1600 mov w2, 796 1601 adrp x0, .LC9 1602 add x0, x0, :lo12:.LC9 1603 bl sftl_printk 1604 b .L181 1605.L182: 1606 add x3, x3, 1 1607 lsl x6, x3, 4 1608 ldrh w6, [x4, x6] 1609 cmp w6, w5 1610 bne .L180 1611.L181: 1612 mov w0, w19 1613 ldr x19, [sp, 16] 1614 ldp x29, x30, [sp], 32 1615 hint 29 // autiasp 1616 ret 1617.L185: 1618 lsl x4, x3, 4 1619 ldr w4, [x7, x4] 1620 tbnz w4, #31, .L184 1621 cmp w4, w5 1622 bcs .L184 1623 mov w5, w4 1624 mov w19, w6 1625.L184: 1626 add x3, x3, 1 1627 b .L183 1628.L188: 1629 ldr w4, [x0, 4] 1630 cmp w4, w3 1631 bcs .L187 1632 ldrh w6, [x0] 1633 cmp w6, w5 1634 csel w3, w3, w4, eq 1635 csel w19, w19, w2, eq 1636.L187: 1637 add w2, w2, 1 1638 add x0, x0, 16 1639 and w2, w2, 65535 1640 b .L186 1641 .size select_l2p_ram_region, .-select_l2p_ram_region 1642 .align 2 1643 .global FtlUpdateVaildLpn 1644 .type FtlUpdateVaildLpn, %function 1645FtlUpdateVaildLpn: 1646 hint 34 // bti c 1647 .section __patchable_function_entries 1648 .align 3 1649 .8byte .LPFE32 1650 .text 1651.LPFE32: 1652 nop 1653 nop 1654 adrp x1, .LANCHOR0 1655 add x1, x1, :lo12:.LANCHOR0 1656 hint 25 // paciasp 1657 ldrh w2, [x1, 2618] 1658 cmp w2, 4 1659 bhi .L191 1660 cbnz w0, .L191 1661 add w2, w2, 1 1662 strh w2, [x1, 2618] 1663.L190: 1664 hint 29 // autiasp 1665 ret 1666.L191: 1667 ldrh w4, [x1, 244] 1668 mov x0, 0 1669 ldr x5, [x1, 72] 1670 mov w6, 65535 1671 strh wzr, [x1, 2618] 1672 str wzr, [x1, 2620] 1673.L192: 1674 cmp w4, w0, uxth 1675 bls .L190 1676 ldrh w3, [x5, x0, lsl 1] 1677 cmp w3, w6 1678 beq .L193 1679 ldr w2, [x1, 2620] 1680 add w2, w2, w3 1681 str w2, [x1, 2620] 1682.L193: 1683 add x0, x0, 1 1684 b .L192 1685 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn 1686 .align 2 1687 .global ftl_sb_update_avl_pages 1688 .type ftl_sb_update_avl_pages, %function 1689ftl_sb_update_avl_pages: 1690 hint 34 // bti c 1691 .section __patchable_function_entries 1692 .align 3 1693 .8byte .LPFE33 1694 .text 1695.LPFE33: 1696 nop 1697 nop 1698 adrp x3, .LANCHOR0 1699 add x3, x3, :lo12:.LANCHOR0 1700 and w1, w1, 65535 1701 and w2, w2, 65535 1702 mov w6, 65535 1703 strh wzr, [x0, 4] 1704 ldrh w5, [x3, 236] 1705 hint 25 // paciasp 1706.L198: 1707 cmp w5, w2, uxth 1708 bhi .L200 1709 ldrh w2, [x3, 306] 1710 add x4, x0, 16 1711 mov w6, 65535 1712 sub w2, w2, w1 1713 mov x1, 0 1714 sub w2, w2, #1 1715 sxth w2, w2 1716.L201: 1717 cmp w5, w1, uxth 1718 bhi .L203 1719 hint 29 // autiasp 1720 ret 1721.L200: 1722 add x4, x0, w2, sxtw 1 1723 ldrh w4, [x4, 16] 1724 cmp w4, w6 1725 beq .L199 1726 ldrh w4, [x0, 4] 1727 add w4, w4, 1 1728 strh w4, [x0, 4] 1729.L199: 1730 add w2, w2, 1 1731 b .L198 1732.L203: 1733 ldrh w3, [x4, x1, lsl 1] 1734 cmp w3, w6 1735 beq .L202 1736 ldrh w3, [x0, 4] 1737 add w3, w2, w3 1738 strh w3, [x0, 4] 1739.L202: 1740 add x1, x1, 1 1741 b .L201 1742 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages 1743 .align 2 1744 .global FtlSlcSuperblockCheck 1745 .type FtlSlcSuperblockCheck, %function 1746FtlSlcSuperblockCheck: 1747 hint 34 // bti c 1748 .section __patchable_function_entries 1749 .align 3 1750 .8byte .LPFE34 1751 .text 1752.LPFE34: 1753 nop 1754 nop 1755 ldrh w1, [x0, 4] 1756 hint 25 // paciasp 1757 cbz w1, .L205 1758 ldrh w1, [x0] 1759 mov w2, 65535 1760 cmp w1, w2 1761 beq .L205 1762 ldrb w1, [x0, 6] 1763 adrp x3, .LANCHOR0+236 1764 add x1, x1, 8 1765 ldrh w3, [x3, #:lo12:.LANCHOR0+236] 1766 ldrh w1, [x0, x1, lsl 1] 1767.L208: 1768 cmp w1, w2 1769 beq .L210 1770.L205: 1771 hint 29 // autiasp 1772 ret 1773.L210: 1774 ldrb w1, [x0, 6] 1775 add w1, w1, 1 1776 and w1, w1, 255 1777 strb w1, [x0, 6] 1778 cmp w1, w3 1779 bne .L209 1780 ldrh w1, [x0, 2] 1781 strb wzr, [x0, 6] 1782 add w1, w1, 1 1783 strh w1, [x0, 2] 1784.L209: 1785 ldrb w1, [x0, 6] 1786 add x1, x1, 8 1787 ldrh w1, [x0, x1, lsl 1] 1788 b .L208 1789 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck 1790 .align 2 1791 .global make_superblock 1792 .type make_superblock, %function 1793make_superblock: 1794 hint 34 // bti c 1795 .section __patchable_function_entries 1796 .align 3 1797 .8byte .LPFE35 1798 .text 1799.LPFE35: 1800 nop 1801 nop 1802 hint 25 // paciasp 1803 stp x29, x30, [sp, -96]! 1804 mov x29, sp 1805 stp x19, x20, [sp, 16] 1806 adrp x20, .LANCHOR0 1807 add x20, x20, :lo12:.LANCHOR0 1808 stp x21, x22, [sp, 32] 1809 mov x19, x0 1810 stp x23, x24, [sp, 48] 1811 stp x25, x26, [sp, 64] 1812 str x27, [sp, 80] 1813 ldrh w1, [x0] 1814 ldrh w0, [x20, 244] 1815 cmp w1, w0 1816 bcc .L213 1817 adrp x1, .LANCHOR1 1818 add x1, x1, :lo12:.LANCHOR1 1819 adrp x0, .LC9 1820 add x1, x1, 95 1821 add x0, x0, :lo12:.LC9 1822 mov w2, 2157 1823 bl sftl_printk 1824.L213: 1825 ldrh w26, [x20, 236] 1826 add x23, x19, 16 1827 add x27, x20, 264 1828 mov x22, 0 1829 mov w25, -1 1830 strh wzr, [x19, 4] 1831 strb wzr, [x19, 7] 1832.L214: 1833 ldrh w1, [x19] 1834 ldrb w21, [x19, 7] 1835 cmp w26, w22, uxth 1836 bhi .L216 1837 ldrh w0, [x20, 306] 1838 ubfiz x1, x1, 1, 16 1839 strb wzr, [x19, 9] 1840 mul w21, w21, w0 1841 strh w21, [x19, 4] 1842 ldr x0, [x20, 2600] 1843 ldp x21, x22, [sp, 32] 1844 ldrh w1, [x0, x1] 1845 mov w0, 10000 1846 ldp x23, x24, [sp, 48] 1847 cmp w1, w0 1848 cset w0, hi 1849 ldp x25, x26, [sp, 64] 1850 strb w0, [x19, 9] 1851 mov w0, 0 1852 ldp x19, x20, [sp, 16] 1853 ldr x27, [sp, 80] 1854 ldp x29, x30, [sp], 96 1855 hint 29 // autiasp 1856 ret 1857.L216: 1858 ldrb w0, [x27, x22] 1859 bl V2P_block 1860 strh w25, [x23] 1861 mov w24, w0 1862 bl FtlBbmIsBadBlock 1863 cbnz w0, .L215 1864 strh w24, [x23] 1865 add w21, w21, 1 1866 strb w21, [x19, 7] 1867.L215: 1868 add x22, x22, 1 1869 add x23, x23, 2 1870 b .L214 1871 .size make_superblock, .-make_superblock 1872 .align 2 1873 .global update_multiplier_value 1874 .type update_multiplier_value, %function 1875update_multiplier_value: 1876 hint 34 // bti c 1877 .section __patchable_function_entries 1878 .align 3 1879 .8byte .LPFE36 1880 .text 1881.LPFE36: 1882 nop 1883 nop 1884 hint 25 // paciasp 1885 stp x29, x30, [sp, -80]! 1886 mov x29, sp 1887 stp x19, x20, [sp, 16] 1888 adrp x20, .LANCHOR0 1889 add x20, x20, :lo12:.LANCHOR0 1890 stp x23, x24, [sp, 48] 1891 mov w19, 0 1892 ldrh w23, [x20, 236] 1893 ldrh w24, [x20, 306] 1894 stp x21, x22, [sp, 32] 1895 and w21, w0, 65535 1896 mov x22, 0 1897 str x25, [sp, 64] 1898 add x25, x20, 264 1899.L220: 1900 cmp w23, w22, uxth 1901 bhi .L222 1902 cbz w19, .L223 1903 mov w0, 32768 1904 udiv w19, w0, w19 1905.L223: 1906 ldr x0, [x20, 2560] 1907 mov w1, 6 1908 umaddl x21, w21, w1, x0 1909 mov w0, 0 1910 strh w19, [x21, 4] 1911 ldp x19, x20, [sp, 16] 1912 ldp x21, x22, [sp, 32] 1913 ldp x23, x24, [sp, 48] 1914 ldr x25, [sp, 64] 1915 ldp x29, x30, [sp], 80 1916 hint 29 // autiasp 1917 ret 1918.L222: 1919 ldrb w0, [x25, x22] 1920 mov w1, w21 1921 bl V2P_block 1922 bl FtlBbmIsBadBlock 1923 cbnz w0, .L221 1924 add w19, w24, w19 1925 and w19, w19, 65535 1926.L221: 1927 add x22, x22, 1 1928 b .L220 1929 .size update_multiplier_value, .-update_multiplier_value 1930 .align 2 1931 .global GetFreeBlockMinEraseCount 1932 .type GetFreeBlockMinEraseCount, %function 1933GetFreeBlockMinEraseCount: 1934 hint 34 // bti c 1935 .section __patchable_function_entries 1936 .align 3 1937 .8byte .LPFE37 1938 .text 1939.LPFE37: 1940 nop 1941 nop 1942 adrp x1, .LANCHOR0 1943 add x1, x1, :lo12:.LANCHOR0 1944 hint 25 // paciasp 1945 ldr x0, [x1, 2592] 1946 cbz x0, .L230 1947 ldr x2, [x1, 2560] 1948 ldr x1, [x1, 2600] 1949 sub x0, x0, x2 1950 mov x2, -6148914691236517206 1951 asr x0, x0, 1 1952 movk x2, 0xaaab, lsl 0 1953 mul x0, x0, x2 1954 and x0, x0, 65535 1955 ldrh w0, [x1, x0, lsl 1] 1956.L229: 1957 hint 29 // autiasp 1958 ret 1959.L230: 1960 mov w0, 0 1961 b .L229 1962 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount 1963 .align 2 1964 .global GetFreeBlockMaxEraseCount 1965 .type GetFreeBlockMaxEraseCount, %function 1966GetFreeBlockMaxEraseCount: 1967 hint 34 // bti c 1968 .section __patchable_function_entries 1969 .align 3 1970 .8byte .LPFE38 1971 .text 1972.LPFE38: 1973 nop 1974 nop 1975 adrp x2, .LANCHOR0 1976 add x2, x2, :lo12:.LANCHOR0 1977 hint 25 // paciasp 1978 ldr x1, [x2, 2592] 1979 cbz x1, .L238 1980 ldrh w3, [x2, 228] 1981 mov w4, 7 1982 and w0, w0, 65535 1983 mul w3, w3, w4 1984 asr w3, w3, 3 1985 cmp w0, w3 1986 ble .L234 1987 and w0, w3, 65535 1988.L234: 1989 ldr x4, [x2, 2560] 1990 mov x3, -6148914691236517206 1991 movk x3, 0xaaab, lsl 0 1992 mov w6, 6 1993 sub x1, x1, x4 1994 mov w7, 65535 1995 asr x1, x1, 1 1996 mul x1, x1, x3 1997 mov w3, 0 1998 and w1, w1, 65535 1999.L235: 2000 cmp w0, w3 2001 bne .L237 2002.L236: 2003 ldr x0, [x2, 2600] 2004 ubfiz x1, x1, 1, 16 2005 ldrh w0, [x0, x1] 2006.L233: 2007 hint 29 // autiasp 2008 ret 2009.L237: 2010 umull x5, w1, w6 2011 ldrh w5, [x4, x5] 2012 cmp w5, w7 2013 beq .L236 2014 add w3, w3, 1 2015 mov w1, w5 2016 and w3, w3, 65535 2017 b .L235 2018.L238: 2019 mov w0, 0 2020 b .L233 2021 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount 2022 .section .rodata.str1.1 2023.LC10: 2024 .string "FLASH INFO:\n" 2025.LC11: 2026 .string "Device Capacity: %d MB\n" 2027.LC12: 2028 .string "FTL INFO:\n" 2029.LC13: 2030 .string "g_MaxLpn = 0x%x\n" 2031.LC14: 2032 .string "g_VaildLpn = 0x%x\n" 2033.LC15: 2034 .string "read_page_count = 0x%x\n" 2035.LC16: 2036 .string "discard_page_count = 0x%x\n" 2037.LC17: 2038 .string "write_page_count = 0x%x\n" 2039.LC18: 2040 .string "cache_write_count = 0x%x\n" 2041.LC19: 2042 .string "l2p_write_count = 0x%x\n" 2043.LC20: 2044 .string "gc_page_count = 0x%x\n" 2045.LC21: 2046 .string "totle_write = %d MB\n" 2047.LC22: 2048 .string "totle_read = %d MB\n" 2049.LC23: 2050 .string "GSV = 0x%x\n" 2051.LC24: 2052 .string "GDV = 0x%x\n" 2053.LC25: 2054 .string "bad blk num = %d\n" 2055.LC26: 2056 .string "free_superblocks = 0x%x\n" 2057.LC27: 2058 .string "mlc_EC = 0x%x\n" 2059.LC28: 2060 .string "slc_EC = 0x%x\n" 2061.LC29: 2062 .string "avg_EC = 0x%x\n" 2063.LC30: 2064 .string "sys_EC = 0x%x\n" 2065.LC31: 2066 .string "max_EC = 0x%x\n" 2067.LC32: 2068 .string "min_EC = 0x%x\n" 2069.LC33: 2070 .string "PLT = 0x%x\n" 2071.LC34: 2072 .string "POT = 0x%x\n" 2073.LC35: 2074 .string "MaxSector = 0x%x\n" 2075.LC36: 2076 .string "init_sys_blks_pp = 0x%x\n" 2077.LC37: 2078 .string "sys_blks_pp = 0x%x\n" 2079.LC38: 2080 .string "free sysblock = 0x%x\n" 2081.LC39: 2082 .string "data_blks_pp = 0x%x\n" 2083.LC40: 2084 .string "data_op_blks_pp = 0x%x\n" 2085.LC41: 2086 .string "max_data_blks = 0x%x\n" 2087.LC42: 2088 .string "Sys.id = 0x%x\n" 2089.LC43: 2090 .string "Bbt.id = 0x%x\n" 2091.LC44: 2092 .string "ACT.page = 0x%x\n" 2093.LC45: 2094 .string "ACT.plane = 0x%x\n" 2095.LC46: 2096 .string "ACT.id = 0x%x\n" 2097.LC47: 2098 .string "ACT.mode = 0x%x\n" 2099.LC48: 2100 .string "ACT.a_pages = 0x%x\n" 2101.LC49: 2102 .string "ACT VPC = 0x%x\n" 2103.LC50: 2104 .string "BUF.page = 0x%x\n" 2105.LC51: 2106 .string "BUF.plane = 0x%x\n" 2107.LC52: 2108 .string "BUF.id = 0x%x\n" 2109.LC53: 2110 .string "BUF.mode = 0x%x\n" 2111.LC54: 2112 .string "BUF.a_pages = 0x%x\n" 2113.LC55: 2114 .string "BUF VPC = 0x%x\n" 2115.LC56: 2116 .string "TMP.page = 0x%x\n" 2117.LC57: 2118 .string "TMP.plane = 0x%x\n" 2119.LC58: 2120 .string "TMP.id = 0x%x\n" 2121.LC59: 2122 .string "TMP.mode = 0x%x\n" 2123.LC60: 2124 .string "TMP.a_pages = 0x%x\n" 2125.LC61: 2126 .string "GC.page = 0x%x\n" 2127.LC62: 2128 .string "GC.plane = 0x%x\n" 2129.LC63: 2130 .string "GC.id = 0x%x\n" 2131.LC64: 2132 .string "GC.mode = 0x%x\n" 2133.LC65: 2134 .string "GC.a_pages = 0x%x\n" 2135.LC66: 2136 .string "WR_CHK = %x %x %x\n" 2137.LC67: 2138 .string "Read Err Cnt = 0x%x\n" 2139.LC68: 2140 .string "Prog Err Cnt = 0x%x\n" 2141.LC69: 2142 .string "gc_free_blk_th= 0x%x\n" 2143.LC70: 2144 .string "gc_merge_free_blk_th= 0x%x\n" 2145.LC71: 2146 .string "gc_skip_write_count= 0x%x\n" 2147.LC72: 2148 .string "gc_blk_index= 0x%x\n" 2149.LC73: 2150 .string "free min EC= 0x%x\n" 2151.LC74: 2152 .string "free max EC= 0x%x\n" 2153.LC75: 2154 .string "GC__SB VPC = 0x%x\n" 2155.LC76: 2156 .string "%d. [0x%x]=0x%x 0x%x 0x%x\n" 2157.LC77: 2158 .string "free %d. [0x%x] 0x%x 0x%x\n" 2159 .text 2160 .align 2 2161 .global FtlPrintInfo2buf 2162 .type FtlPrintInfo2buf, %function 2163FtlPrintInfo2buf: 2164 hint 34 // bti c 2165 .section __patchable_function_entries 2166 .align 3 2167 .8byte .LPFE39 2168 .text 2169.LPFE39: 2170 nop 2171 nop 2172 hint 25 // paciasp 2173 stp x29, x30, [sp, -80]! 2174 adrp x1, .LC10 2175 mov x29, sp 2176 stp x19, x20, [sp, 16] 2177 adrp x19, .LANCHOR0 2178 add x19, x19, :lo12:.LANCHOR0 2179 add x1, x1, :lo12:.LC10 2180 stp x21, x22, [sp, 32] 2181 mov x21, x0 2182 stp x23, x24, [sp, 48] 2183 add x20, x21, 12 2184 stp x25, x26, [sp, 64] 2185 bl strcpy 2186 ldr w3, [x19, 320] 2187 adrp x2, .LC11 2188 add x2, x2, :lo12:.LC11 2189 mov x0, x20 2190 mov x1, 64 2191 bl snprintf 2192 add x20, x20, w0, sxtw 2193 mov x0, x20 2194 adrp x1, .LC12 2195 add x1, x1, :lo12:.LC12 2196 bl strcpy 2197 ldr w3, [x19, 2624] 2198 add x20, x20, 10 2199 mov x0, x20 2200 mov x1, 64 2201 adrp x2, .LC13 2202 add x2, x2, :lo12:.LC13 2203 bl snprintf 2204 add x22, x20, w0, sxtw 2205 ldr w3, [x19, 2620] 2206 mov x0, x22 2207 mov x1, 64 2208 adrp x2, .LC14 2209 add x2, x2, :lo12:.LC14 2210 bl snprintf 2211 add x22, x22, w0, sxtw 2212 ldr w3, [x19, 2628] 2213 mov x0, x22 2214 mov x1, 64 2215 adrp x2, .LC15 2216 add x2, x2, :lo12:.LC15 2217 bl snprintf 2218 add x22, x22, w0, sxtw 2219 ldr w3, [x19, 2632] 2220 mov x0, x22 2221 mov x1, 64 2222 adrp x2, .LC16 2223 add x2, x2, :lo12:.LC16 2224 bl snprintf 2225 add x22, x22, w0, sxtw 2226 ldr w3, [x19, 2636] 2227 mov x0, x22 2228 mov x1, 64 2229 adrp x2, .LC17 2230 add x2, x2, :lo12:.LC17 2231 bl snprintf 2232 add x22, x22, w0, sxtw 2233 ldr w3, [x19, 2640] 2234 mov x0, x22 2235 mov x1, 64 2236 adrp x2, .LC18 2237 add x2, x2, :lo12:.LC18 2238 bl snprintf 2239 add x22, x22, w0, sxtw 2240 ldr w3, [x19, 2644] 2241 mov x0, x22 2242 mov x1, 64 2243 adrp x2, .LC19 2244 add x2, x2, :lo12:.LC19 2245 bl snprintf 2246 add x22, x22, w0, sxtw 2247 ldr w3, [x19, 2648] 2248 mov x0, x22 2249 mov x1, 64 2250 adrp x2, .LC20 2251 add x2, x2, :lo12:.LC20 2252 bl snprintf 2253 add x22, x22, w0, sxtw 2254 ldr w3, [x19, 2652] 2255 mov x0, x22 2256 mov x1, 64 2257 adrp x2, .LC21 2258 add x2, x2, :lo12:.LC21 2259 lsr w3, w3, 11 2260 bl snprintf 2261 ldr w3, [x19, 2656] 2262 add x22, x22, w0, sxtw 2263 mov x0, x22 2264 mov x1, 64 2265 adrp x2, .LC22 2266 add x2, x2, :lo12:.LC22 2267 lsr w3, w3, 11 2268 bl snprintf 2269 ldr w3, [x19, 2660] 2270 add x22, x22, w0, sxtw 2271 mov x0, x22 2272 mov x1, 64 2273 adrp x2, .LC23 2274 add x2, x2, :lo12:.LC23 2275 bl snprintf 2276 add x22, x22, w0, sxtw 2277 ldr w3, [x19, 2664] 2278 mov x0, x22 2279 mov x1, 64 2280 adrp x2, .LC24 2281 add x2, x2, :lo12:.LC24 2282 bl snprintf 2283 add x22, x22, w0, sxtw 2284 ldrh w3, [x19, 366] 2285 mov x0, x22 2286 mov x1, 64 2287 adrp x2, .LC25 2288 add x2, x2, :lo12:.LC25 2289 bl snprintf 2290 add x22, x22, w0, sxtw 2291 ldrh w3, [x19, 228] 2292 mov x0, x22 2293 mov x1, 64 2294 adrp x2, .LC26 2295 add x2, x2, :lo12:.LC26 2296 bl snprintf 2297 add x22, x22, w0, sxtw 2298 ldr w3, [x19, 2668] 2299 mov x0, x22 2300 mov x1, 64 2301 adrp x2, .LC27 2302 add x2, x2, :lo12:.LC27 2303 bl snprintf 2304 add x22, x22, w0, sxtw 2305 ldr w3, [x19, 2672] 2306 mov x0, x22 2307 mov x1, 64 2308 adrp x2, .LC28 2309 add x2, x2, :lo12:.LC28 2310 bl snprintf 2311 add x22, x22, w0, sxtw 2312 ldr w3, [x19, 2676] 2313 mov x0, x22 2314 mov x1, 64 2315 adrp x2, .LC29 2316 add x2, x2, :lo12:.LC29 2317 bl snprintf 2318 add x22, x22, w0, sxtw 2319 ldr w3, [x19, 2680] 2320 mov x0, x22 2321 mov x1, 64 2322 adrp x2, .LC30 2323 add x2, x2, :lo12:.LC30 2324 bl snprintf 2325 add x22, x22, w0, sxtw 2326 ldr w3, [x19, 2684] 2327 mov x0, x22 2328 mov x1, 64 2329 adrp x2, .LC31 2330 add x2, x2, :lo12:.LC31 2331 bl snprintf 2332 add x22, x22, w0, sxtw 2333 ldr w3, [x19, 2688] 2334 mov x0, x22 2335 mov x1, 64 2336 adrp x2, .LC32 2337 add x2, x2, :lo12:.LC32 2338 bl snprintf 2339 add x22, x22, w0, sxtw 2340 ldrh w3, [x19, 2542] 2341 mov x0, x22 2342 mov x1, 64 2343 adrp x2, .LC33 2344 add x2, x2, :lo12:.LC33 2345 bl snprintf 2346 add x22, x22, w0, sxtw 2347 ldrh w3, [x19, 2540] 2348 mov x0, x22 2349 mov x1, 64 2350 adrp x2, .LC34 2351 add x2, x2, :lo12:.LC34 2352 bl snprintf 2353 add x22, x22, w0, sxtw 2354 ldr w3, [x19, 344] 2355 mov x0, x22 2356 mov x1, 64 2357 adrp x2, .LC35 2358 add x2, x2, :lo12:.LC35 2359 bl snprintf 2360 add x22, x22, w0, sxtw 2361 ldr w3, [x19, 336] 2362 mov x0, x22 2363 mov x1, 64 2364 adrp x2, .LC36 2365 add x2, x2, :lo12:.LC36 2366 bl snprintf 2367 add x22, x22, w0, sxtw 2368 ldr w3, [x19, 232] 2369 mov x0, x22 2370 mov x1, 64 2371 adrp x2, .LC37 2372 add x2, x2, :lo12:.LC37 2373 bl snprintf 2374 add x22, x22, w0, sxtw 2375 ldrh w3, [x19, 462] 2376 mov x0, x22 2377 mov x1, 64 2378 adrp x2, .LC38 2379 add x2, x2, :lo12:.LC38 2380 bl snprintf 2381 add x22, x22, w0, sxtw 2382 ldrh w3, [x19, 244] 2383 mov x0, x22 2384 mov x1, 64 2385 adrp x2, .LC39 2386 add x2, x2, :lo12:.LC39 2387 bl snprintf 2388 add x22, x22, w0, sxtw 2389 ldrh w3, [x19, 2692] 2390 mov x0, x22 2391 mov x1, 64 2392 adrp x2, .LC40 2393 add x2, x2, :lo12:.LC40 2394 bl snprintf 2395 add x22, x22, w0, sxtw 2396 ldr w3, [x19, 248] 2397 mov x0, x22 2398 mov x1, 64 2399 adrp x2, .LC41 2400 add x2, x2, :lo12:.LC41 2401 bl snprintf 2402 add x22, x22, w0, sxtw 2403 ldrh w3, [x19, 2696] 2404 mov x0, x22 2405 mov x1, 64 2406 adrp x2, .LC42 2407 add x2, x2, :lo12:.LC42 2408 bl snprintf 2409 add x22, x22, w0, sxtw 2410 ldrh w3, [x19, 360] 2411 mov x0, x22 2412 mov x1, 64 2413 adrp x2, .LC43 2414 add x2, x2, :lo12:.LC43 2415 bl snprintf 2416 add x22, x22, w0, sxtw 2417 ldrh w3, [x19, 26] 2418 mov x0, x22 2419 mov x1, 64 2420 adrp x2, .LC44 2421 add x2, x2, :lo12:.LC44 2422 bl snprintf 2423 add x22, x22, w0, sxtw 2424 ldrb w3, [x19, 30] 2425 mov x0, x22 2426 mov x1, 64 2427 adrp x2, .LC45 2428 add x2, x2, :lo12:.LC45 2429 bl snprintf 2430 add x22, x22, w0, sxtw 2431 ldrh w3, [x19, 24] 2432 mov x0, x22 2433 mov x1, 64 2434 adrp x2, .LC46 2435 add x2, x2, :lo12:.LC46 2436 bl snprintf 2437 add x22, x22, w0, sxtw 2438 ldrb w3, [x19, 32] 2439 mov x0, x22 2440 mov x1, 64 2441 adrp x2, .LC47 2442 add x2, x2, :lo12:.LC47 2443 bl snprintf 2444 add x22, x22, w0, sxtw 2445 ldrh w3, [x19, 28] 2446 mov x0, x22 2447 mov x1, 64 2448 adrp x2, .LC48 2449 add x2, x2, :lo12:.LC48 2450 bl snprintf 2451 add x22, x22, w0, sxtw 2452 ldrh w1, [x19, 24] 2453 adrp x2, .LC49 2454 ldr x0, [x19, 72] 2455 add x2, x2, :lo12:.LC49 2456 ldrh w3, [x0, x1, lsl 1] 2457 mov x0, x22 2458 mov x1, 64 2459 bl snprintf 2460 add x22, x22, w0, sxtw 2461 ldrh w3, [x19, 82] 2462 mov x0, x22 2463 mov x1, 64 2464 adrp x2, .LC50 2465 add x2, x2, :lo12:.LC50 2466 bl snprintf 2467 add x22, x22, w0, sxtw 2468 ldrb w3, [x19, 86] 2469 mov x0, x22 2470 mov x1, 64 2471 adrp x2, .LC51 2472 add x2, x2, :lo12:.LC51 2473 bl snprintf 2474 add x22, x22, w0, sxtw 2475 ldrh w3, [x19, 80] 2476 mov x0, x22 2477 mov x1, 64 2478 adrp x2, .LC52 2479 add x2, x2, :lo12:.LC52 2480 bl snprintf 2481 add x22, x22, w0, sxtw 2482 ldrb w3, [x19, 88] 2483 mov x0, x22 2484 mov x1, 64 2485 adrp x2, .LC53 2486 add x2, x2, :lo12:.LC53 2487 bl snprintf 2488 add x22, x22, w0, sxtw 2489 ldrh w3, [x19, 84] 2490 mov x0, x22 2491 mov x1, 64 2492 adrp x2, .LC54 2493 add x2, x2, :lo12:.LC54 2494 bl snprintf 2495 add x22, x22, w0, sxtw 2496 ldrh w1, [x19, 80] 2497 adrp x2, .LC55 2498 ldr x0, [x19, 72] 2499 add x2, x2, :lo12:.LC55 2500 ldrh w3, [x0, x1, lsl 1] 2501 mov x0, x22 2502 mov x1, 64 2503 bl snprintf 2504 add x22, x22, w0, sxtw 2505 ldrh w3, [x19, 130] 2506 mov x0, x22 2507 mov x1, 64 2508 adrp x2, .LC56 2509 add x2, x2, :lo12:.LC56 2510 bl snprintf 2511 add x22, x22, w0, sxtw 2512 ldrb w3, [x19, 134] 2513 mov x0, x22 2514 mov x1, 64 2515 adrp x2, .LC57 2516 add x2, x2, :lo12:.LC57 2517 bl snprintf 2518 add x22, x22, w0, sxtw 2519 ldrh w3, [x19, 128] 2520 mov x0, x22 2521 mov x1, 64 2522 adrp x2, .LC58 2523 add x2, x2, :lo12:.LC58 2524 bl snprintf 2525 add x22, x22, w0, sxtw 2526 ldrb w3, [x19, 136] 2527 mov x0, x22 2528 mov x1, 64 2529 adrp x2, .LC59 2530 add x2, x2, :lo12:.LC59 2531 bl snprintf 2532 add x22, x22, w0, sxtw 2533 ldrh w3, [x19, 132] 2534 mov x0, x22 2535 mov x1, 64 2536 adrp x2, .LC60 2537 add x2, x2, :lo12:.LC60 2538 bl snprintf 2539 add x22, x22, w0, sxtw 2540 ldrh w3, [x19, 178] 2541 mov x0, x22 2542 mov x1, 64 2543 adrp x2, .LC61 2544 add x2, x2, :lo12:.LC61 2545 bl snprintf 2546 add x22, x22, w0, sxtw 2547 ldrb w3, [x19, 182] 2548 mov x0, x22 2549 mov x1, 64 2550 adrp x2, .LC62 2551 add x2, x2, :lo12:.LC62 2552 bl snprintf 2553 add x22, x22, w0, sxtw 2554 ldrh w3, [x19, 176] 2555 mov x0, x22 2556 mov x1, 64 2557 adrp x2, .LC63 2558 add x2, x2, :lo12:.LC63 2559 bl snprintf 2560 add x22, x22, w0, sxtw 2561 ldrb w3, [x19, 184] 2562 mov x0, x22 2563 mov x1, 64 2564 adrp x2, .LC64 2565 add x2, x2, :lo12:.LC64 2566 bl snprintf 2567 add x22, x22, w0, sxtw 2568 ldrh w3, [x19, 180] 2569 mov x0, x22 2570 mov x1, 64 2571 adrp x2, .LC65 2572 add x2, x2, :lo12:.LC65 2573 bl snprintf 2574 add x22, x22, w0, sxtw 2575 ldr w5, [x19, 2788] 2576 mov x0, x22 2577 ldr w4, [x19, 2796] 2578 mov x1, 64 2579 ldr w3, [x19, 2792] 2580 adrp x2, .LC66 2581 add x2, x2, :lo12:.LC66 2582 bl snprintf 2583 add x22, x22, w0, sxtw 2584 ldr w3, [x19, 2784] 2585 mov x0, x22 2586 mov x1, 64 2587 adrp x2, .LC67 2588 add x2, x2, :lo12:.LC67 2589 bl snprintf 2590 add x22, x22, w0, sxtw 2591 ldr w3, [x19, 2808] 2592 mov x1, 64 2593 mov x0, x22 2594 adrp x2, .LC68 2595 add x2, x2, :lo12:.LC68 2596 bl snprintf 2597 add x20, x22, w0, sxtw 2598 ldrh w3, [x19, 3224] 2599 mov x0, x20 2600 mov x1, 64 2601 adrp x2, .LC69 2602 add x2, x2, :lo12:.LC69 2603 bl snprintf 2604 add x20, x20, w0, sxtw 2605 ldrh w3, [x19, 3226] 2606 mov x0, x20 2607 mov x1, 64 2608 adrp x2, .LC70 2609 add x2, x2, :lo12:.LC70 2610 bl snprintf 2611 add x20, x20, w0, sxtw 2612 ldr w3, [x19, 3228] 2613 mov x0, x20 2614 mov x1, 64 2615 adrp x2, .LC71 2616 add x2, x2, :lo12:.LC71 2617 bl snprintf 2618 add x20, x20, w0, sxtw 2619 ldrh w3, [x19, 3232] 2620 adrp x2, .LC72 2621 add x2, x2, :lo12:.LC72 2622 mov x1, 64 2623 mov x0, x20 2624 bl snprintf 2625 add x20, x20, w0, sxtw 2626 bl GetFreeBlockMinEraseCount 2627 and w3, w0, 65535 2628 mov x1, 64 2629 mov x0, x20 2630 adrp x2, .LC73 2631 add x2, x2, :lo12:.LC73 2632 bl snprintf 2633 add x20, x20, w0, sxtw 2634 ldrh w0, [x19, 228] 2635 bl GetFreeBlockMaxEraseCount 2636 and w3, w0, 65535 2637 adrp x2, .LC74 2638 mov x0, x20 2639 add x2, x2, :lo12:.LC74 2640 mov x1, 64 2641 bl snprintf 2642 add x20, x20, w0, sxtw 2643 adrp x0, .LANCHOR2 2644 ldr w0, [x0, #:lo12:.LANCHOR2] 2645 cmp w0, 1 2646 beq .L241 2647.L246: 2648 sub w0, w20, w21 2649 ldp x19, x20, [sp, 16] 2650 ldp x21, x22, [sp, 32] 2651 ldp x23, x24, [sp, 48] 2652 ldp x25, x26, [sp, 64] 2653 ldp x29, x30, [sp], 80 2654 hint 29 // autiasp 2655 ret 2656.L241: 2657 ldrh w0, [x19, 176] 2658 mov w1, 65535 2659 cmp w0, w1 2660 beq .L243 2661 ldr x1, [x19, 72] 2662 ubfiz x0, x0, 1, 16 2663 adrp x2, .LC75 2664 add x2, x2, :lo12:.LC75 2665 ldrh w3, [x1, x0] 2666 mov x0, x20 2667 mov x1, 64 2668 bl snprintf 2669 add x20, x20, w0, sxtw 2670.L243: 2671 mov w0, 0 2672 adrp x23, .LC76 2673 bl List_get_gc_head_node 2674 add x23, x23, :lo12:.LC76 2675 and w4, w0, 65535 2676 mov w22, 0 2677 mov w26, 65535 2678 mov w25, 6 2679.L245: 2680 ldr x0, [x19, 2560] 2681 cmp w4, w26 2682 beq .L244 2683 umull x24, w4, w25 2684 ubfiz x1, x4, 1, 16 2685 ldr x2, [x19, 72] 2686 add x0, x0, x24 2687 ldr x3, [x19, 2600] 2688 ldrh w5, [x2, x1] 2689 mov x2, x23 2690 ldrh w6, [x0, 4] 2691 mov x0, x20 2692 ldrh w7, [x3, x1] 2693 mov w3, w22 2694 mov x1, 64 2695 add w22, w22, 1 2696 bl snprintf 2697 add x20, x20, w0, sxtw 2698 ldr x0, [x19, 2560] 2699 ldrh w4, [x0, x24] 2700 cmp w22, 16 2701 bne .L245 2702.L244: 2703 ldr x0, [x19, 2560] 2704 adrp x23, .LC77 2705 ldr x4, [x19, 2592] 2706 add x23, x23, :lo12:.LC77 2707 mov w22, 0 2708 mov w25, 65535 2709 sub x4, x4, x0 2710 mov x0, -6148914691236517206 2711 movk x0, 0xaaab, lsl 0 2712 mov w26, 6 2713 asr x4, x4, 1 2714 mul x4, x4, x0 2715 and w4, w4, 65535 2716.L247: 2717 cmp w4, w25 2718 beq .L246 2719 ldr x0, [x19, 2560] 2720 umull x24, w4, w26 2721 ldr x2, [x19, 2600] 2722 ubfiz x1, x4, 1, 16 2723 add x0, x0, x24 2724 mov w3, w22 2725 add w22, w22, 1 2726 ldrh w6, [x2, x1] 2727 mov x2, x23 2728 ldrh w5, [x0, 4] 2729 mov x1, 64 2730 mov x0, x20 2731 bl snprintf 2732 add x20, x20, w0, sxtw 2733 cmp w22, 4 2734 beq .L246 2735 ldr x0, [x19, 2560] 2736 ldrh w4, [x0, x24] 2737 b .L247 2738 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf 2739 .section .rodata.str1.1 2740.LC78: 2741 .string "%s\n" 2742 .text 2743 .align 2 2744 .global rknand_proc_ftlread 2745 .type rknand_proc_ftlread, %function 2746rknand_proc_ftlread: 2747 hint 34 // bti c 2748 .section __patchable_function_entries 2749 .align 3 2750 .8byte .LPFE40 2751 .text 2752.LPFE40: 2753 nop 2754 nop 2755 cmp w0, 2047 2756 ble .L255 2757 hint 25 // paciasp 2758 stp x29, x30, [sp, -32]! 2759 adrp x3, .LC1 2760 mov x29, sp 2761 add x3, x3, :lo12:.LC1 2762 adrp x2, .LC78 2763 add x2, x2, :lo12:.LC78 2764 stp x19, x20, [sp, 16] 2765 mov x19, x1 2766 mov x1, 64 2767 add x20, x19, 30 2768 mov x0, x19 2769 bl snprintf 2770 mov x0, x20 2771 bl FtlPrintInfo2buf 2772 add x0, x20, w0, sxtw 2773 sub w0, w0, w19 2774 ldp x19, x20, [sp, 16] 2775 ldp x29, x30, [sp], 32 2776 hint 29 // autiasp 2777 ret 2778.L255: 2779 mov w0, 0 2780 ret 2781 .size rknand_proc_ftlread, .-rknand_proc_ftlread 2782 .section .rodata.str1.1 2783.LC79: 2784 .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n" 2785 .text 2786 .align 2 2787 .global GetSwlReplaceBlock 2788 .type GetSwlReplaceBlock, %function 2789GetSwlReplaceBlock: 2790 hint 34 // bti c 2791 .section __patchable_function_entries 2792 .align 3 2793 .8byte .LPFE41 2794 .text 2795.LPFE41: 2796 nop 2797 nop 2798 hint 25 // paciasp 2799 stp x29, x30, [sp, -96]! 2800 mov x29, sp 2801 stp x19, x20, [sp, 16] 2802 adrp x19, .LANCHOR0 2803 add x19, x19, :lo12:.LANCHOR0 2804 stp x21, x22, [sp, 32] 2805 ldr w1, [x19, 2676] 2806 ldr w0, [x19, 2688] 2807 stp x23, x24, [sp, 48] 2808 stp x25, x26, [sp, 64] 2809 str x27, [sp, 80] 2810 cmp w1, w0 2811 bcs .L261 2812 ldrh w1, [x19, 244] 2813 mov x2, 0 2814 ldr x4, [x19, 2600] 2815 str wzr, [x19, 2668] 2816.L262: 2817 ldr w0, [x19, 2668] 2818 cmp w1, w2 2819 bhi .L263 2820 udiv w1, w0, w1 2821 str w1, [x19, 2676] 2822 ldr w1, [x19, 2672] 2823 sub w0, w0, w1 2824 ldrh w1, [x19, 296] 2825 udiv w0, w0, w1 2826 str w0, [x19, 2668] 2827.L264: 2828 ldr w22, [x19, 2688] 2829 ldr w24, [x19, 2676] 2830 add w0, w22, 256 2831 cmp w0, w24 2832 bls .L269 2833 ldr w1, [x19, 2684] 2834 add w0, w22, 768 2835 cmp w0, w1 2836 bls .L269 2837.L271: 2838 mov w20, 65535 2839.L270: 2840 mov w0, w20 2841 ldp x19, x20, [sp, 16] 2842 ldp x21, x22, [sp, 32] 2843 ldp x23, x24, [sp, 48] 2844 ldp x25, x26, [sp, 64] 2845 ldr x27, [sp, 80] 2846 ldp x29, x30, [sp], 96 2847 hint 29 // autiasp 2848 ret 2849.L263: 2850 ldrh w3, [x4, x2, lsl 1] 2851 add x2, x2, 1 2852 add w0, w3, w0 2853 str w0, [x19, 2668] 2854 b .L262 2855.L261: 2856 ldr w0, [x19, 2684] 2857 cmp w1, w0 2858 bls .L264 2859 add w0, w0, 1 2860 str w0, [x19, 2684] 2861 mov x0, 0 2862.L266: 2863 ldrh w1, [x19, 244] 2864 cmp w1, w0 2865 bls .L264 2866 ldr x3, [x19, 2600] 2867 lsl x2, x0, 1 2868 add x0, x0, 1 2869 ldrh w1, [x3, x2] 2870 add w1, w1, 1 2871 strh w1, [x3, x2] 2872 b .L266 2873.L269: 2874 ldrh w0, [x19, 228] 2875 add w0, w0, w0, lsl 1 2876 ubfx x0, x0, 2, 16 2877 bl GetFreeBlockMaxEraseCount 2878 add w1, w22, 64 2879 and w27, w0, 65535 2880 cmp w1, w0, uxth 2881 bhi .L271 2882 ldr x0, [x19, 2568] 2883 cbz x0, .L271 2884 ldrh w7, [x19, 244] 2885 mov w23, 65535 2886 ldr x3, [x19, 2560] 2887 mov x8, -6148914691236517206 2888 ldr x25, [x19, 2600] 2889 mov w1, w23 2890 mov w6, w23 2891 mov w4, 0 2892 movk x8, 0xaaab, lsl 0 2893 mov w9, 6 2894.L272: 2895 ldrh w2, [x0] 2896 cmp w2, w6 2897 bne .L275 2898 mov w20, w1 2899.L274: 2900 mov w0, 65535 2901 cmp w20, w0 2902 beq .L271 2903 ldrh w21, [x25, w20, uxtw 1] 2904 ubfiz x26, x20, 1, 32 2905 cmp w22, w21 2906 bcs .L276 2907 bl GetFreeBlockMinEraseCount 2908 cmp w22, w0, uxth 2909 bcs .L276 2910 str w23, [x19, 2688] 2911.L276: 2912 cmp w24, w21 2913 bls .L271 2914 add w0, w21, 128 2915 cmp w27, w0 2916 ble .L271 2917 add w0, w21, 256 2918 ldr w3, [x19, 2684] 2919 cmp w24, w0 2920 bhi .L277 2921 add w21, w21, 768 2922 cmp w21, w3 2923 bcs .L271 2924.L277: 2925 ldr x0, [x19, 72] 2926 mov w6, w27 2927 ldrh w5, [x25, x26] 2928 mov w2, w24 2929 mov w1, w20 2930 ldrh w4, [x0, x26] 2931 adrp x0, .LC79 2932 add x0, x0, :lo12:.LC79 2933 bl sftl_printk 2934 mov w0, 1 2935 str w0, [x19, 3236] 2936 b .L270 2937.L275: 2938 add w5, w4, 1 2939 and w4, w5, 65535 2940 cmp w7, w5, uxth 2941 bcc .L271 2942 ldrh w5, [x0, 4] 2943 cbz w5, .L273 2944 sub x0, x0, x3 2945 asr x0, x0, 1 2946 mul x0, x0, x8 2947 and w20, w0, 65535 2948 and x0, x0, 65535 2949 ldrh w0, [x25, x0, lsl 1] 2950 cmp w22, w0 2951 bcs .L274 2952 cmp w0, w23 2953 bcs .L273 2954 mov w23, w0 2955 mov w1, w20 2956.L273: 2957 umaddl x0, w2, w9, x3 2958 b .L272 2959 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock 2960 .align 2 2961 .global free_data_superblock 2962 .type free_data_superblock, %function 2963free_data_superblock: 2964 hint 34 // bti c 2965 .section __patchable_function_entries 2966 .align 3 2967 .8byte .LPFE42 2968 .text 2969.LPFE42: 2970 nop 2971 nop 2972 mov w2, 65535 2973 cmp w2, w0, uxth 2974 beq .L288 2975 hint 25 // paciasp 2976 adrp x2, .LANCHOR0+72 2977 stp x29, x30, [sp, -16]! 2978 and w1, w0, 65535 2979 mov x29, sp 2980 ldr x2, [x2, #:lo12:.LANCHOR0+72] 2981 ubfiz x0, x1, 1, 16 2982 strh wzr, [x2, x0] 2983 mov w0, w1 2984 bl INSERT_FREE_LIST 2985 mov w0, 0 2986 ldp x29, x30, [sp], 16 2987 hint 29 // autiasp 2988 ret 2989.L288: 2990 mov w0, 0 2991 ret 2992 .size free_data_superblock, .-free_data_superblock 2993 .align 2 2994 .global get_new_active_ppa 2995 .type get_new_active_ppa, %function 2996get_new_active_ppa: 2997 hint 34 // bti c 2998 .section __patchable_function_entries 2999 .align 3 3000 .8byte .LPFE43 3001 .text 3002.LPFE43: 3003 nop 3004 nop 3005 hint 25 // paciasp 3006 stp x29, x30, [sp, -48]! 3007 mov x29, sp 3008 stp x19, x20, [sp, 16] 3009 mov x19, x0 3010 str x21, [sp, 32] 3011 ldrh w1, [x0] 3012 mov w0, 65535 3013 cmp w1, w0 3014 bne .L292 3015 adrp x1, .LANCHOR1 3016 add x1, x1, :lo12:.LANCHOR1 3017 adrp x0, .LC9 3018 add x1, x1, 111 3019 add x0, x0, :lo12:.LC9 3020 mov w2, 2792 3021 bl sftl_printk 3022.L292: 3023 adrp x21, .LANCHOR0 3024 add x21, x21, :lo12:.LANCHOR0 3025 ldrh w1, [x19, 2] 3026 ldrh w0, [x21, 306] 3027 cmp w1, w0 3028 bne .L293 3029 adrp x1, .LANCHOR1 3030 add x1, x1, :lo12:.LANCHOR1 3031 adrp x0, .LC9 3032 add x1, x1, 111 3033 add x0, x0, :lo12:.LC9 3034 mov w2, 2793 3035 bl sftl_printk 3036.L293: 3037 ldrh w0, [x19, 4] 3038 cbnz w0, .L294 3039 adrp x1, .LANCHOR1 3040 add x1, x1, :lo12:.LANCHOR1 3041 adrp x0, .LC9 3042 add x1, x1, 111 3043 add x0, x0, :lo12:.LC9 3044 mov w2, 2794 3045 bl sftl_printk 3046.L294: 3047 ldrb w0, [x19, 6] 3048 mov w2, 65535 3049 strb wzr, [x19, 10] 3050 add x0, x0, 8 3051 ldrh w3, [x21, 236] 3052 ldrh w0, [x19, x0, lsl 1] 3053.L295: 3054 ldrh w20, [x19, 2] 3055 cmp w0, w2 3056 beq .L297 3057 ldrh w2, [x21, 306] 3058 cmp w2, w20 3059 bls .L301 3060 orr w20, w20, w0, lsl 10 3061 ldrh w0, [x19, 4] 3062 ldrb w1, [x19, 6] 3063 mov w5, 65535 3064 sub w0, w0, #1 3065 and w0, w0, 65535 3066 strh w0, [x19, 4] 3067.L300: 3068 add w4, w1, 1 3069 and w1, w4, 255 3070 cmp w3, w4, uxtb 3071 bne .L299 3072 ldrh w1, [x19, 2] 3073 add w1, w1, 1 3074 strh w1, [x19, 2] 3075 mov w1, 0 3076.L299: 3077 add x4, x19, w1, sxtw 1 3078 ldrh w4, [x4, 16] 3079 cmp w4, w5 3080 beq .L300 3081 strb w1, [x19, 6] 3082 ldrh w1, [x19, 2] 3083 cmp w1, w2 3084 bne .L291 3085 cbz w0, .L291 3086 adrp x1, .LANCHOR1 3087 add x1, x1, :lo12:.LANCHOR1 3088 adrp x0, .LC9 3089 add x1, x1, 111 3090 add x0, x0, :lo12:.LC9 3091 mov w2, 2817 3092 bl sftl_printk 3093.L291: 3094 mov w0, w20 3095 ldp x19, x20, [sp, 16] 3096 ldr x21, [sp, 32] 3097 ldp x29, x30, [sp], 48 3098 hint 29 // autiasp 3099 ret 3100.L297: 3101 ldrb w1, [x19, 6] 3102 add w1, w1, 1 3103 and w1, w1, 255 3104 strb w1, [x19, 6] 3105 cmp w1, w3 3106 bne .L296 3107 add w20, w20, 1 3108 strh w20, [x19, 2] 3109 strb wzr, [x19, 6] 3110.L296: 3111 ldrb w0, [x19, 6] 3112 add x0, x0, 8 3113 ldrh w0, [x19, x0, lsl 1] 3114 b .L295 3115.L301: 3116 mov w20, 65535 3117 b .L291 3118 .size get_new_active_ppa, .-get_new_active_ppa 3119 .align 2 3120 .global FtlGcBufInit 3121 .type FtlGcBufInit, %function 3122FtlGcBufInit: 3123 hint 34 // bti c 3124 .section __patchable_function_entries 3125 .align 3 3126 .8byte .LPFE44 3127 .text 3128.LPFE44: 3129 nop 3130 nop 3131 adrp x0, .LANCHOR0 3132 add x0, x0, :lo12:.LANCHOR0 3133 mov w2, 0 3134 mov w7, 24 3135 mov w8, 1 3136 mov w4, 4 3137 str wzr, [x0, 3240] 3138 hint 25 // paciasp 3139.L308: 3140 ldrh w1, [x0, 236] 3141 cmp w1, w2 3142 bhi .L309 3143 mov w6, 24 3144 mov w5, 4 3145.L310: 3146 ldr w2, [x0, 3280] 3147 cmp w1, w2 3148 bcc .L311 3149 hint 29 // autiasp 3150 ret 3151.L309: 3152 ldr x5, [x0, 3248] 3153 umull x3, w2, w7 3154 ldr x6, [x0, 3256] 3155 add x1, x5, x3 3156 str w8, [x1, 16] 3157 ldrh w1, [x0, 314] 3158 mul w1, w1, w2 3159 sdiv w1, w1, w4 3160 add x1, x6, w1, sxtw 2 3161 str x1, [x5, x3] 3162 ldrh w1, [x0, 316] 3163 ldr x6, [x0, 3248] 3164 ldr x9, [x0, 3264] 3165 mul w1, w1, w2 3166 add x5, x6, x3 3167 sdiv w1, w1, w4 3168 add x1, x9, w1, sxtw 2 3169 str x1, [x5, 8] 3170 ldr x1, [x0, 3272] 3171 ubfiz x9, x2, 5, 16 3172 ldr x3, [x6, x3] 3173 add x1, x1, x9 3174 add w2, w2, 1 3175 and w2, w2, 65535 3176 str x3, [x1, 8] 3177 ldr x3, [x5, 8] 3178 str x3, [x1, 16] 3179 b .L308 3180.L311: 3181 ldr x3, [x0, 3248] 3182 umull x4, w1, w6 3183 ldr x7, [x0, 3256] 3184 add x2, x3, x4 3185 str wzr, [x2, 16] 3186 ldrh w2, [x0, 314] 3187 mul w2, w2, w1 3188 sdiv w2, w2, w5 3189 add x2, x7, w2, sxtw 2 3190 str x2, [x3, x4] 3191 ldrh w2, [x0, 316] 3192 ldr x3, [x0, 3248] 3193 mul w2, w2, w1 3194 add x3, x3, x4 3195 ldr x4, [x0, 3264] 3196 add w1, w1, 1 3197 and w1, w1, 65535 3198 sdiv w2, w2, w5 3199 add x2, x4, w2, sxtw 2 3200 str x2, [x3, 8] 3201 b .L310 3202 .size FtlGcBufInit, .-FtlGcBufInit 3203 .align 2 3204 .global FtlGcBufFree 3205 .type FtlGcBufFree, %function 3206FtlGcBufFree: 3207 hint 34 // bti c 3208 .section __patchable_function_entries 3209 .align 3 3210 .8byte .LPFE45 3211 .text 3212.LPFE45: 3213 nop 3214 nop 3215 adrp x2, .LANCHOR0 3216 add x2, x2, :lo12:.LANCHOR0 3217 mov w3, 0 3218 mov w8, 24 3219 hint 25 // paciasp 3220 ldr w7, [x2, 3280] 3221 ldr x5, [x2, 3248] 3222.L314: 3223 cmp w3, w1 3224 bcs .L313 3225 ubfiz x4, x3, 5, 16 3226 mov w2, 0 3227 add x4, x0, x4 3228 b .L319 3229.L315: 3230 add w2, w2, 1 3231 and w2, w2, 65535 3232.L319: 3233 cmp w2, w7 3234 bcs .L316 3235 umull x6, w2, w8 3236 add x9, x5, x6 3237 ldr x10, [x5, x6] 3238 ldr x6, [x4, 8] 3239 cmp x10, x6 3240 bne .L315 3241 str wzr, [x9, 16] 3242.L316: 3243 add w3, w3, 1 3244 and w3, w3, 65535 3245 b .L314 3246.L313: 3247 hint 29 // autiasp 3248 ret 3249 .size FtlGcBufFree, .-FtlGcBufFree 3250 .align 2 3251 .global FtlGcBufAlloc 3252 .type FtlGcBufAlloc, %function 3253FtlGcBufAlloc: 3254 hint 34 // bti c 3255 .section __patchable_function_entries 3256 .align 3 3257 .8byte .LPFE46 3258 .text 3259.LPFE46: 3260 nop 3261 nop 3262 adrp x2, .LANCHOR0 3263 add x2, x2, :lo12:.LANCHOR0 3264 mov w7, 24 3265 mov w8, 1 3266 hint 25 // paciasp 3267 ldr w6, [x2, 3280] 3268 ldr x5, [x2, 3248] 3269 mov w2, 0 3270.L322: 3271 cmp w2, w1 3272 bcc .L327 3273 hint 29 // autiasp 3274 ret 3275.L323: 3276 add w3, w3, 1 3277 and w3, w3, 65535 3278.L326: 3279 cmp w3, w6 3280 bcs .L324 3281 umaddl x4, w3, w7, x5 3282 ldr w9, [x4, 16] 3283 cbnz w9, .L323 3284 ubfiz x3, x2, 5, 16 3285 str w8, [x4, 16] 3286 add x3, x0, x3 3287 ldr x9, [x4] 3288 str x9, [x3, 8] 3289 ldr x4, [x4, 8] 3290 str x4, [x3, 16] 3291.L324: 3292 add w2, w2, 1 3293 and w2, w2, 65535 3294 b .L322 3295.L327: 3296 mov w3, 0 3297 b .L326 3298 .size FtlGcBufAlloc, .-FtlGcBufAlloc 3299 .align 2 3300 .global IsBlkInGcList 3301 .type IsBlkInGcList, %function 3302IsBlkInGcList: 3303 hint 34 // bti c 3304 .section __patchable_function_entries 3305 .align 3 3306 .8byte .LPFE47 3307 .text 3308.LPFE47: 3309 nop 3310 nop 3311 adrp x1, .LANCHOR0 3312 add x1, x1, :lo12:.LANCHOR0 3313 and w0, w0, 65535 3314 hint 25 // paciasp 3315 ldr x2, [x1, 3288] 3316 ldrh w3, [x1, 3284] 3317 mov x1, 0 3318 sub x2, x2, #2 3319.L330: 3320 cmp w3, w1, uxth 3321 bhi .L332 3322 mov w0, 0 3323.L329: 3324 hint 29 // autiasp 3325 ret 3326.L332: 3327 add x1, x1, 1 3328 ldrh w4, [x2, x1, lsl 1] 3329 cmp w4, w0 3330 bne .L330 3331 mov w0, 1 3332 b .L329 3333 .size IsBlkInGcList, .-IsBlkInGcList 3334 .align 2 3335 .global FtlGcUpdatePage 3336 .type FtlGcUpdatePage, %function 3337FtlGcUpdatePage: 3338 hint 34 // bti c 3339 .section __patchable_function_entries 3340 .align 3 3341 .8byte .LPFE48 3342 .text 3343.LPFE48: 3344 nop 3345 nop 3346 hint 25 // paciasp 3347 stp x29, x30, [sp, -48]! 3348 mov x29, sp 3349 stp x19, x20, [sp, 16] 3350 mov w19, w0 3351 mov w20, w2 3352 ubfx x0, x19, 10, 16 3353 str x21, [sp, 32] 3354 mov w21, w1 3355 bl P2V_block_in_plane 3356 adrp x3, .LANCHOR0 3357 add x3, x3, :lo12:.LANCHOR0 3358 and w6, w0, 65535 3359 mov x4, 0 3360 ldr x1, [x3, 3288] 3361 ldrh w5, [x3, 3284] 3362 sub x7, x1, #2 3363.L336: 3364 and w2, w4, 65535 3365 cmp w5, w2 3366 bhi .L338 3367 bne .L337 3368 strh w0, [x1, x4, lsl 1] 3369 ldrh w0, [x3, 3284] 3370 add w0, w0, 1 3371 strh w0, [x3, 3284] 3372 b .L337 3373.L338: 3374 add x4, x4, 1 3375 ldrh w2, [x7, x4, lsl 1] 3376 cmp w2, w6 3377 bne .L336 3378.L337: 3379 ldrh w4, [x3, 3296] 3380 mov w0, 12 3381 umull x4, w4, w0 3382 ldr x0, [x3, 3304] 3383 add x0, x0, x4 3384 str w21, [x0, 4] 3385 ldr x0, [x3, 3304] 3386 add x1, x0, x4 3387 str w20, [x1, 8] 3388 str w19, [x0, x4] 3389 ldrh w0, [x3, 3296] 3390 add w0, w0, 1 3391 strh w0, [x3, 3296] 3392 ldp x19, x20, [sp, 16] 3393 ldr x21, [sp, 32] 3394 ldp x29, x30, [sp], 48 3395 hint 29 // autiasp 3396 ret 3397 .size FtlGcUpdatePage, .-FtlGcUpdatePage 3398 .section .rodata.str1.1 3399.LC80: 3400 .string "FtlGcRefreshBlock 0x%x\n" 3401 .text 3402 .align 2 3403 .global FtlGcRefreshBlock 3404 .type FtlGcRefreshBlock, %function 3405FtlGcRefreshBlock: 3406 hint 34 // bti c 3407 .section __patchable_function_entries 3408 .align 3 3409 .8byte .LPFE49 3410 .text 3411.LPFE49: 3412 nop 3413 nop 3414 hint 25 // paciasp 3415 stp x29, x30, [sp, -32]! 3416 mov x29, sp 3417 str x19, [sp, 16] 3418 and w19, w0, 65535 3419 mov w1, w19 3420 adrp x0, .LC80 3421 add x0, x0, :lo12:.LC80 3422 bl sftl_printk 3423 adrp x0, .LANCHOR0 3424 add x0, x0, :lo12:.LANCHOR0 3425 ldrh w3, [x0, 226] 3426 cmp w3, w19 3427 beq .L341 3428 ldrh w2, [x0, 224] 3429 cmp w2, w19 3430 beq .L341 3431 mov w1, 65535 3432 cmp w3, w1 3433 bne .L342 3434 strh w19, [x0, 226] 3435.L341: 3436 mov w0, 0 3437 ldr x19, [sp, 16] 3438 ldp x29, x30, [sp], 32 3439 hint 29 // autiasp 3440 ret 3441.L342: 3442 cmp w2, w1 3443 bne .L341 3444 strh w19, [x0, 224] 3445 b .L341 3446 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock 3447 .section .rodata.str1.1 3448.LC81: 3449 .string "FtlGcMarkBadPhyBlk %d 0x%x\n" 3450 .text 3451 .align 2 3452 .global FtlGcMarkBadPhyBlk 3453 .type FtlGcMarkBadPhyBlk, %function 3454FtlGcMarkBadPhyBlk: 3455 hint 34 // bti c 3456 .section __patchable_function_entries 3457 .align 3 3458 .8byte .LPFE50 3459 .text 3460.LPFE50: 3461 nop 3462 nop 3463 hint 25 // paciasp 3464 stp x29, x30, [sp, -48]! 3465 mov x29, sp 3466 stp x19, x20, [sp, 16] 3467 adrp x19, .LANCHOR0 3468 add x19, x19, :lo12:.LANCHOR0 3469 and w20, w0, 65535 3470 str x21, [sp, 32] 3471 mov w0, w20 3472 bl P2V_block_in_plane 3473 ldrh w1, [x19, 3312] 3474 mov w2, w20 3475 mov w21, w0 3476 adrp x0, .LC81 3477 add x0, x0, :lo12:.LC81 3478 bl sftl_printk 3479 mov w0, w21 3480 bl FtlGcRefreshBlock 3481 ldrh w0, [x19, 3312] 3482 add x2, x19, 3314 3483 mov x1, 0 3484.L345: 3485 cmp w0, w1, uxth 3486 bhi .L347 3487 cmp w0, 15 3488 bhi .L346 3489 add w1, w0, 1 3490 add x19, x19, 3314 3491 strh w1, [x19, -2] 3492 strh w20, [x19, w0, sxtw 1] 3493 b .L346 3494.L347: 3495 add x1, x1, 1 3496 add x3, x2, x1, lsl 1 3497 ldrh w3, [x3, -2] 3498 cmp w3, w20 3499 bne .L345 3500.L346: 3501 mov w0, 0 3502 ldp x19, x20, [sp, 16] 3503 ldr x21, [sp, 32] 3504 ldp x29, x30, [sp], 48 3505 hint 29 // autiasp 3506 ret 3507 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk 3508 .align 2 3509 .global FtlGcReFreshBadBlk 3510 .type FtlGcReFreshBadBlk, %function 3511FtlGcReFreshBadBlk: 3512 hint 34 // bti c 3513 .section __patchable_function_entries 3514 .align 3 3515 .8byte .LPFE51 3516 .text 3517.LPFE51: 3518 nop 3519 nop 3520 hint 25 // paciasp 3521 stp x29, x30, [sp, -32]! 3522 mov x29, sp 3523 str x19, [sp, 16] 3524 adrp x19, .LANCHOR0 3525 add x19, x19, :lo12:.LANCHOR0 3526 ldrh w0, [x19, 3312] 3527 cbz w0, .L350 3528 ldrh w2, [x19, 226] 3529 mov w1, 65535 3530 cmp w2, w1 3531 bne .L350 3532 ldrh w1, [x19, 3348] 3533 cmp w1, w0 3534 bcc .L351 3535 strh wzr, [x19, 3348] 3536.L351: 3537 ldrh w1, [x19, 3348] 3538 add x0, x19, 3314 3539 ldrh w0, [x0, x1, lsl 1] 3540 bl P2V_block_in_plane 3541 bl FtlGcRefreshBlock 3542 ldrh w0, [x19, 3348] 3543 add w0, w0, 1 3544 strh w0, [x19, 3348] 3545.L350: 3546 mov w0, 0 3547 ldr x19, [sp, 16] 3548 ldp x29, x30, [sp], 32 3549 hint 29 // autiasp 3550 ret 3551 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk 3552 .align 2 3553 .global ftl_malloc 3554 .type ftl_malloc, %function 3555ftl_malloc: 3556 hint 34 // bti c 3557 .section __patchable_function_entries 3558 .align 3 3559 .8byte .LPFE52 3560 .text 3561.LPFE52: 3562 nop 3563 nop 3564 hint 25 // paciasp 3565 stp x29, x30, [sp, -16]! 3566 mov w1, 3265 3567 mov x29, sp 3568 sxtw x0, w0 3569 bl __kmalloc 3570 ldp x29, x30, [sp], 16 3571 hint 29 // autiasp 3572 ret 3573 .size ftl_malloc, .-ftl_malloc 3574 .align 2 3575 .global ftl_free 3576 .type ftl_free, %function 3577ftl_free: 3578 hint 34 // bti c 3579 .section __patchable_function_entries 3580 .align 3 3581 .8byte .LPFE53 3582 .text 3583.LPFE53: 3584 nop 3585 nop 3586 hint 25 // paciasp 3587 stp x29, x30, [sp, -16]! 3588 mov x29, sp 3589 bl kfree 3590 ldp x29, x30, [sp], 16 3591 hint 29 // autiasp 3592 ret 3593 .size ftl_free, .-ftl_free 3594 .section .rodata.str1.1 3595.LC82: 3596 .string "%s %p + 0x%x:" 3597.LC83: 3598 .string "0x%08x," 3599.LC84: 3600 .string "0x%04x," 3601.LC85: 3602 .string "0x%02x," 3603.LC86: 3604 .string "\n" 3605 .text 3606 .align 2 3607 .global rknand_print_hex 3608 .type rknand_print_hex, %function 3609rknand_print_hex: 3610 hint 34 // bti c 3611 .section __patchable_function_entries 3612 .align 3 3613 .8byte .LPFE54 3614 .text 3615.LPFE54: 3616 nop 3617 nop 3618 hint 25 // paciasp 3619 stp x29, x30, [sp, -96]! 3620 mov x29, sp 3621 stp x19, x20, [sp, 16] 3622 mov x20, x1 3623 mov x19, 0 3624 stp x21, x22, [sp, 32] 3625 mov w22, w2 3626 mov w21, 0 3627 stp x23, x24, [sp, 48] 3628 mov w23, w3 3629 mov w24, 0 3630 stp x25, x26, [sp, 64] 3631 adrp x26, .LC82 3632 mov x25, x0 3633 add x26, x26, :lo12:.LC82 3634 stp x27, x28, [sp, 80] 3635 adrp x27, .LC85 3636 add x27, x27, :lo12:.LC85 3637 adrp x28, .LC84 3638.L361: 3639 cmp w23, w19 3640 bhi .L367 3641 adrp x0, .LC86 3642 add x0, x0, :lo12:.LC86 3643 bl sftl_printk 3644 ldp x19, x20, [sp, 16] 3645 ldp x21, x22, [sp, 32] 3646 ldp x23, x24, [sp, 48] 3647 ldp x25, x26, [sp, 64] 3648 ldp x27, x28, [sp, 80] 3649 ldp x29, x30, [sp], 96 3650 hint 29 // autiasp 3651 ret 3652.L367: 3653 cbnz w21, .L362 3654 mov w3, w24 3655 mov x2, x20 3656 mov x1, x25 3657 mov x0, x26 3658 bl sftl_printk 3659.L362: 3660 cmp w22, 4 3661 bne .L363 3662 ldr w1, [x20, x19, lsl 2] 3663 adrp x0, .LC83 3664 add x0, x0, :lo12:.LC83 3665.L369: 3666 add w21, w21, 1 3667 bl sftl_printk 3668 cmp w21, 15 3669 bls .L366 3670 mov w21, 0 3671 adrp x0, .LC86 3672 add x0, x0, :lo12:.LC86 3673 bl sftl_printk 3674.L366: 3675 add x19, x19, 1 3676 add w24, w24, w22 3677 b .L361 3678.L363: 3679 cmp w22, 2 3680 bne .L365 3681 ldrh w1, [x20, x19, lsl 1] 3682 add x0, x28, :lo12:.LC84 3683 b .L369 3684.L365: 3685 ldrb w1, [x20, x19] 3686 mov x0, x27 3687 b .L369 3688 .size rknand_print_hex, .-rknand_print_hex 3689 .section .rodata.str1.1 3690.LC87: 3691 .string "%s: addr: %x is in id block!!!!!!!!!!\n" 3692.LC88: 3693 .string "not free: w: d:" 3694.LC89: 3695 .string "not free: w: s:" 3696 .text 3697 .align 2 3698 .global FlashEraseBlocks 3699 .type FlashEraseBlocks, %function 3700FlashEraseBlocks: 3701 hint 34 // bti c 3702 .section __patchable_function_entries 3703 .align 3 3704 .8byte .LPFE55 3705 .text 3706.LPFE55: 3707 nop 3708 nop 3709 hint 25 // paciasp 3710 stp x29, x30, [sp, -96]! 3711 mrs x1, sp_el0 3712 mov x29, sp 3713 stp x21, x22, [sp, 32] 3714 adrp x21, .LANCHOR0 3715 add x21, x21, :lo12:.LANCHOR0 3716 stp x19, x20, [sp, 16] 3717 mov x19, x0 3718 mov w0, 32 3719 stp x23, x24, [sp, 48] 3720 mov x20, x19 3721 umaddl x22, w2, w0, x19 3722 stp x25, x26, [sp, 64] 3723 mov w24, -1 3724 ldrh w23, [x21, 12] 3725 ldr x3, [x1, 1376] 3726 str x3, [sp, 88] 3727 mov x3, 0 3728 lsl w26, w23, 3 3729.L371: 3730 cmp x20, x22 3731 beq .L375 3732 ldr w0, [x20, 4] 3733 add x2, sp, 80 3734 add x1, sp, 84 3735 bl l2p_addr_tran.isra.0 3736 ldr w0, [sp, 80] 3737 cbnz w0, .L372 3738 ldr w1, [sp, 84] 3739 cmp w26, w1 3740 bls .L372 3741 adrp x20, .LANCHOR1 3742 add x20, x20, :lo12:.LANCHOR1 3743 adrp x21, .LC87 3744 add x20, x20, 130 3745 add x21, x21, :lo12:.LC87 3746.L373: 3747 cmp x19, x22 3748 bne .L374 3749 bl dump_stack 3750.L375: 3751 mrs x0, sp_el0 3752 ldr x1, [sp, 88] 3753 ldr x2, [x0, 1376] 3754 subs x1, x1, x2 3755 mov x2, 0 3756 beq .L382 3757 bl __stack_chk_fail 3758.L374: 3759 ldr w2, [sp, 84] 3760 mov w0, -1 3761 str w0, [x19] 3762 mov x1, x20 3763 mov x0, x21 3764 add x19, x19, 32 3765 bl sftl_printk 3766 ldr x1, [x19, -24] 3767 mov w3, 16 3768 mov w2, 4 3769 adrp x0, .LC88 3770 add x0, x0, :lo12:.LC88 3771 bl rknand_print_hex 3772 ldr x1, [x19, -16] 3773 mov w3, 4 3774 adrp x0, .LC89 3775 mov w2, w3 3776 add x0, x0, :lo12:.LC89 3777 bl rknand_print_hex 3778 b .L373 3779.L372: 3780 ldr w1, [sp, 84] 3781 ldr x2, [x21, 3360] 3782 blr x2 3783 cmp w0, 0 3784 csel w0, wzr, w24, eq 3785 str w0, [x20] 3786 ldrh w0, [x21, 14] 3787 cmp w0, 4 3788 bne .L379 3789 ldrb w0, [sp, 80] 3790 ldr x2, [x21, 3360] 3791 ldr w1, [sp, 84] 3792 add w1, w23, w1 3793 blr x2 3794 cbz w0, .L379 3795 str w24, [x20] 3796.L379: 3797 add x20, x20, 32 3798 b .L371 3799.L382: 3800 mov w0, 0 3801 ldp x19, x20, [sp, 16] 3802 ldp x21, x22, [sp, 32] 3803 ldp x23, x24, [sp, 48] 3804 ldp x25, x26, [sp, 64] 3805 ldp x29, x30, [sp], 96 3806 hint 29 // autiasp 3807 ret 3808 .size FlashEraseBlocks, .-FlashEraseBlocks 3809 .align 2 3810 .global FtlFreeSysBlkQueueIn 3811 .type FtlFreeSysBlkQueueIn, %function 3812FtlFreeSysBlkQueueIn: 3813 hint 34 // bti c 3814 .section __patchable_function_entries 3815 .align 3 3816 .8byte .LPFE56 3817 .text 3818.LPFE56: 3819 nop 3820 nop 3821 hint 25 // paciasp 3822 stp x29, x30, [sp, -48]! 3823 mov x29, sp 3824 str x21, [sp, 32] 3825 and w21, w0, 65535 3826 sub w2, w21, #1 3827 mov w0, 65533 3828 stp x19, x20, [sp, 16] 3829 cmp w0, w2, uxth 3830 bcc .L388 3831 adrp x19, .LANCHOR0 3832 add x19, x19, :lo12:.LANCHOR0 3833 ldrh w0, [x19, 462] 3834 cmp w0, 1024 3835 beq .L388 3836 and w1, w1, 65535 3837 cbz w1, .L390 3838 mov w0, w21 3839 bl P2V_block_in_plane 3840 and w20, w0, 65535 3841 lsl w1, w21, 10 3842 ldr x0, [x19, 3400] 3843 mov w2, 1 3844 str w1, [x0, 4] 3845 mov w1, w2 3846 ldr x0, [x19, 3400] 3847 bl FlashEraseBlocks 3848 ldr x2, [x19, 2600] 3849 ubfiz x0, x20, 1, 16 3850 ldrh w1, [x2, x0] 3851 add w1, w1, 1 3852 strh w1, [x2, x0] 3853 ldr w0, [x19, 2680] 3854 add w0, w0, 1 3855 str w0, [x19, 2680] 3856.L390: 3857 ldrh w0, [x19, 462] 3858 add x19, x19, 456 3859 ldrh w1, [x19, 4] 3860 add w0, w0, 1 3861 strh w0, [x19, 6] 3862 ldrh w0, [x19, 4] 3863 add x1, x19, x1, lsl 1 3864 add w0, w0, 1 3865 and w0, w0, 1023 3866 strh w0, [x19, 4] 3867 strh w21, [x1, 8] 3868.L388: 3869 ldp x19, x20, [sp, 16] 3870 ldr x21, [sp, 32] 3871 ldp x29, x30, [sp], 48 3872 hint 29 // autiasp 3873 ret 3874 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn 3875 .section .rodata.str1.1 3876.LC90: 3877 .string "FtlFreeSysBlkQueueOut = %x, free count = %d, error\n" 3878 .text 3879 .align 2 3880 .global FtlFreeSysBlkQueueOut 3881 .type FtlFreeSysBlkQueueOut, %function 3882FtlFreeSysBlkQueueOut: 3883 hint 34 // bti c 3884 .section __patchable_function_entries 3885 .align 3 3886 .8byte .LPFE57 3887 .text 3888.LPFE57: 3889 nop 3890 nop 3891 hint 25 // paciasp 3892 stp x29, x30, [sp, -32]! 3893 mov x29, sp 3894 stp x19, x20, [sp, 16] 3895 adrp x19, .LANCHOR0 3896 add x19, x19, :lo12:.LANCHOR0 3897 ldrh w2, [x19, 462] 3898 cbz w2, .L402 3899 ldrh w3, [x19, 458] 3900 add x0, x19, 456 3901 ldrh w1, [x19, 458] 3902 sub w2, w2, #1 3903 strh w2, [x19, 462] 3904 mov w2, 1 3905 add x3, x0, x3, lsl 1 3906 add w1, w1, 1 3907 ldr x0, [x19, 3400] 3908 and w1, w1, 1023 3909 ldrh w20, [x3, 8] 3910 strh w1, [x19, 458] 3911 lsl w1, w20, 10 3912 str w1, [x0, 4] 3913 mov w1, w2 3914 ldr x0, [x19, 3400] 3915 bl FlashEraseBlocks 3916 ldr w0, [x19, 2680] 3917 sub w1, w20, #1 3918 add w0, w0, 1 3919 str w0, [x19, 2680] 3920 mov w0, 65533 3921 cmp w0, w1, uxth 3922 bcs .L400 3923.L399: 3924 ldrh w2, [x19, 462] 3925 adrp x0, .LC90 3926 mov w1, w20 3927 add x0, x0, :lo12:.LC90 3928 bl sftl_printk 3929.L401: 3930 b .L401 3931.L402: 3932 mov w20, 65535 3933 b .L399 3934.L400: 3935 mov w0, w20 3936 ldp x19, x20, [sp, 16] 3937 ldp x29, x30, [sp], 32 3938 hint 29 // autiasp 3939 ret 3940 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut 3941 .section .rodata.str1.1 3942.LC91: 3943 .string "FtlFreeSysBlkQueueOut = %x, free count = %d\n" 3944 .text 3945 .align 2 3946 .global ftl_map_blk_alloc_new_blk 3947 .type ftl_map_blk_alloc_new_blk, %function 3948ftl_map_blk_alloc_new_blk: 3949 hint 34 // bti c 3950 .section __patchable_function_entries 3951 .align 3 3952 .8byte .LPFE58 3953 .text 3954.LPFE58: 3955 nop 3956 nop 3957 hint 25 // paciasp 3958 stp x29, x30, [sp, -48]! 3959 mov x29, sp 3960 stp x19, x20, [sp, 16] 3961 mov x19, x0 3962 mov w20, 0 3963 str x21, [sp, 32] 3964 ldrh w1, [x0, 10] 3965 ldr x0, [x0, 16] 3966.L405: 3967 cmp w1, w20 3968 beq .L411 3969 mov x21, x0 3970 ldrh w2, [x0], 2 3971 cbnz w2, .L406 3972 bl FtlFreeSysBlkQueueOut 3973 and w1, w0, 65535 3974 sub w2, w1, #1 3975 strh w0, [x21] 3976 mov w0, 65533 3977 cmp w0, w2, uxth 3978 bcs .L407 3979 adrp x0, .LANCHOR0+462 3980 ldrh w2, [x0, #:lo12:.LANCHOR0+462] 3981 adrp x0, .LC91 3982 add x0, x0, :lo12:.LC91 3983 bl sftl_printk 3984.L408: 3985 b .L408 3986.L407: 3987 ldr w0, [x19, 48] 3988 strh w20, [x19] 3989 add w0, w0, 1 3990 str w0, [x19, 48] 3991 ldrh w0, [x19, 8] 3992 strh wzr, [x19, 2] 3993 add w0, w0, 1 3994 strh w0, [x19, 8] 3995 ldrh w0, [x19, 10] 3996 cmp w0, w20 3997 bhi .L409 3998.L411: 3999 adrp x1, .LANCHOR1 4000 add x1, x1, :lo12:.LANCHOR1 4001 adrp x0, .LC9 4002 add x1, x1, 147 4003 add x0, x0, :lo12:.LC9 4004 mov w2, 578 4005 bl sftl_printk 4006.L409: 4007 mov w0, 0 4008 ldp x19, x20, [sp, 16] 4009 ldr x21, [sp, 32] 4010 ldp x29, x30, [sp], 48 4011 hint 29 // autiasp 4012 ret 4013.L406: 4014 add w20, w20, 1 4015 and w20, w20, 65535 4016 b .L405 4017 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk 4018 .align 2 4019 .global ftl_memset 4020 .type ftl_memset, %function 4021ftl_memset: 4022 hint 34 // bti c 4023 .section __patchable_function_entries 4024 .align 3 4025 .8byte .LPFE59 4026 .text 4027.LPFE59: 4028 nop 4029 nop 4030 hint 25 // paciasp 4031 stp x29, x30, [sp, -16]! 4032 uxtw x2, w2 4033 mov x29, sp 4034 bl memset 4035 ldp x29, x30, [sp], 16 4036 hint 29 // autiasp 4037 ret 4038 .size ftl_memset, .-ftl_memset 4039 .section .rodata.str1.1 4040.LC92: 4041 .string "%s error allocating memory. return -1\n" 4042 .text 4043 .align 2 4044 .global FtlMemInit 4045 .type FtlMemInit, %function 4046FtlMemInit: 4047 hint 34 // bti c 4048 .section __patchable_function_entries 4049 .align 3 4050 .8byte .LPFE60 4051 .text 4052.LPFE60: 4053 nop 4054 nop 4055 hint 25 // paciasp 4056 stp x29, x30, [sp, -48]! 4057 mov w0, 65535 4058 mov x29, sp 4059 stp x19, x20, [sp, 16] 4060 adrp x19, .LANCHOR0 4061 add x19, x19, :lo12:.LANCHOR0 4062 add x4, x19, 3416 4063 add x3, x19, 2676 4064 add x2, x19, 2656 4065 add x1, x19, 2636 4066 str wzr, [x19, 2688] 4067 stp wzr, w0, [x4, -8] 4068 mov w0, -1 4069 strh w0, [x19, 224] 4070 strh w0, [x19, 226] 4071 mov w0, 32 4072 stp wzr, wzr, [x2, -12] 4073 stp wzr, wzr, [x3, -8] 4074 stp wzr, wzr, [x1, -8] 4075 stp wzr, wzr, [x4] 4076 stp wzr, wzr, [x1] 4077 stp wzr, wzr, [x3, 4] 4078 stp wzr, wzr, [x2, 4] 4079 strh w0, [x19, 3224] 4080 mov w0, 128 4081 str x21, [sp, 32] 4082 strh w0, [x19, 3226] 4083 str wzr, [x19, 3228] 4084 strh wzr, [x19, 3232] 4085 str wzr, [x19, 3236] 4086 strh wzr, [x19, 3312] 4087 strh wzr, [x19, 3348] 4088 ldrh w0, [x19, 310] 4089 lsl w0, w0, 1 4090 bl ftl_malloc 4091 ldrh w1, [x19, 310] 4092 str x0, [x19, 3288] 4093 mov w0, 12 4094 mul w0, w1, w0 4095 bl ftl_malloc 4096 ldrh w20, [x19, 236] 4097 str x0, [x19, 3304] 4098 lsl w21, w20, 7 4099 lsl w20, w20, 5 4100 mov w0, w21 4101 bl ftl_malloc 4102 str x0, [x19, 3424] 4103 mov w0, w20 4104 bl ftl_malloc 4105 str x0, [x19, 3432] 4106 mov w0, w21 4107 bl ftl_malloc 4108 str x0, [x19, 3440] 4109 mov w0, w20 4110 bl ftl_malloc 4111 str x0, [x19, 3400] 4112 mov w0, w20 4113 bl ftl_malloc 4114 str x0, [x19, 3272] 4115 ldrh w0, [x19, 236] 4116 ldrh w20, [x19, 314] 4117 lsl w0, w0, 1 4118 add w0, w0, 1 4119 str w0, [x19, 3280] 4120 mov w0, w20 4121 bl ftl_malloc 4122 str x0, [x19, 3448] 4123 mov w0, w20 4124 bl ftl_malloc 4125 str x0, [x19, 3456] 4126 mov w0, w20 4127 bl ftl_malloc 4128 str x0, [x19, 3464] 4129 ldr w0, [x19, 3280] 4130 mul w0, w20, w0 4131 bl ftl_malloc 4132 str x0, [x19, 3256] 4133 mov w0, w20 4134 bl ftl_malloc 4135 str x0, [x19, 3472] 4136 mov w0, w20 4137 bl ftl_malloc 4138 str x0, [x19, 3480] 4139 ldr w1, [x19, 3280] 4140 mov w0, 24 4141 mul w0, w1, w0 4142 bl ftl_malloc 4143 str x0, [x19, 3248] 4144 mov w0, w20 4145 bl ftl_malloc 4146 str x0, [x19, 3488] 4147 mov w0, w20 4148 bl ftl_malloc 4149 str x0, [x19, 3496] 4150 ldrh w0, [x19, 262] 4151 lsl w0, w0, 2 4152 bl ftl_malloc 4153 ldrh w20, [x19, 316] 4154 str x0, [x19, 3504] 4155 ldrh w0, [x19, 236] 4156 mul w20, w20, w0 4157 mov w0, w20 4158 bl ftl_malloc 4159 str x0, [x19, 3512] 4160 lsl w0, w20, 2 4161 bl ftl_malloc 4162 str x0, [x19, 3520] 4163 ldrh w1, [x19, 316] 4164 ldr w0, [x19, 3280] 4165 mul w0, w1, w0 4166 bl ftl_malloc 4167 str x0, [x19, 3264] 4168 ldrh w0, [x19, 246] 4169 ubfiz w1, w0, 1, 15 4170 ubfiz w0, w0, 1, 15 4171 strh w1, [x19, 3528] 4172 bl ftl_malloc 4173 str x0, [x19, 3536] 4174 ldrh w0, [x19, 3528] 4175 add x0, x0, 547 4176 lsr x0, x0, 9 4177 strh w0, [x19, 3528] 4178 lsl w0, w0, 9 4179 bl ftl_malloc 4180 ldrh w20, [x19, 246] 4181 str x0, [x19, 3544] 4182 add x0, x0, 32 4183 str x0, [x19, 2600] 4184 lsl w20, w20, 1 4185 mov w0, w20 4186 bl ftl_malloc 4187 str x0, [x19, 3552] 4188 mov w0, w20 4189 bl ftl_malloc 4190 ldr w20, [x19, 332] 4191 str x0, [x19, 72] 4192 lsl w20, w20, 1 4193 mov w0, w20 4194 bl ftl_malloc 4195 str x0, [x19, 3560] 4196 mov w0, w20 4197 bl ftl_malloc 4198 str x0, [x19, 3568] 4199 ldrh w0, [x19, 324] 4200 lsl w0, w0, 1 4201 bl ftl_malloc 4202 str x0, [x19, 352] 4203 ldrh w0, [x19, 324] 4204 lsl w0, w0, 1 4205 bl ftl_malloc 4206 str x0, [x19, 3576] 4207 ldrh w0, [x19, 324] 4208 lsl w0, w0, 2 4209 bl ftl_malloc 4210 str x0, [x19, 3584] 4211 ldrh w0, [x19, 326] 4212 lsl w0, w0, 2 4213 bl ftl_malloc 4214 ldrh w2, [x19, 326] 4215 mov w1, 0 4216 str x0, [x19, 3592] 4217 lsl w2, w2, 2 4218 bl ftl_memset 4219 ldrh w0, [x19, 340] 4220 lsl w0, w0, 2 4221 bl ftl_malloc 4222 str x0, [x19, 3600] 4223 ldr w0, [x19, 332] 4224 lsl w0, w0, 2 4225 bl ftl_malloc 4226 str x0, [x19, 3608] 4227 ldrh w0, [x19, 342] 4228 lsl w0, w0, 4 4229 bl ftl_malloc 4230 ldrh w1, [x19, 342] 4231 str x0, [x19, 2608] 4232 ldrh w0, [x19, 314] 4233 mul w0, w1, w0 4234 bl ftl_malloc 4235 str x0, [x19, 3616] 4236 ldrh w1, [x19, 246] 4237 mov w0, 6 4238 mul w0, w1, w0 4239 bl ftl_malloc 4240 str x0, [x19, 2560] 4241 ldrh w0, [x19, 302] 4242 ldrh w1, [x19, 258] 4243 add w0, w0, 31 4244 asr w0, w0, 5 4245 strh w0, [x19, 3624] 4246 mul w0, w1, w0 4247 lsl w0, w0, 2 4248 bl ftl_malloc 4249 ldrh w3, [x19, 3624] 4250 add x4, x19, 360 4251 ldrh w1, [x19, 258] 4252 mov x20, x0 4253 mov w2, w3 4254 str x0, [x4, 32] 4255 mov x0, 0 4256.L416: 4257 add x0, x0, 1 4258 cmp w1, w0 4259 bhi .L417 4260 cmp w1, 0 4261 mov w2, 8 4262 csinc w1, w1, wzr, ne 4263 add x0, x19, 360 4264 sub w2, w2, w1 4265 add w1, w1, 4 4266 ubfiz x3, x1, 3, 17 4267 lsl x2, x2, 3 4268 add x0, x0, x3 4269 mov w1, 0 4270 bl memset 4271 ldr x0, [x19, 3560] 4272 cbnz x0, .L418 4273.L420: 4274 adrp x1, .LANCHOR1 4275 add x1, x1, :lo12:.LANCHOR1 4276 add x1, x1, 173 4277 adrp x0, .LC92 4278 add x0, x0, :lo12:.LC92 4279 bl sftl_printk 4280 mov w0, -1 4281.L415: 4282 ldp x19, x20, [sp, 16] 4283 ldr x21, [sp, 32] 4284 ldp x29, x30, [sp], 48 4285 hint 29 // autiasp 4286 ret 4287.L417: 4288 add x5, x4, x0, lsl 3 4289 add x6, x20, w2, uxtw 2 4290 add w2, w2, w3 4291 str x6, [x5, 32] 4292 b .L416 4293.L418: 4294 ldr x0, [x19, 3568] 4295 cbz x0, .L420 4296 ldr x0, [x19, 3600] 4297 cbz x0, .L420 4298 ldr x0, [x19, 3608] 4299 cbz x0, .L420 4300 ldr x0, [x19, 2608] 4301 cbz x0, .L420 4302 ldr x0, [x19, 3616] 4303 cbz x0, .L420 4304 ldr x0, [x19, 2560] 4305 cbz x0, .L420 4306 cbz x20, .L420 4307 ldr x0, [x19, 72] 4308 cbz x0, .L420 4309 ldr x0, [x19, 3288] 4310 cbz x0, .L420 4311 ldr x0, [x19, 3304] 4312 cbz x0, .L420 4313 ldr x0, [x19, 3424] 4314 cbz x0, .L420 4315 ldr x0, [x19, 3440] 4316 cbz x0, .L420 4317 ldr x0, [x19, 3400] 4318 cbz x0, .L420 4319 ldr x0, [x19, 3272] 4320 cbz x0, .L420 4321 ldr x0, [x19, 3432] 4322 cbz x0, .L420 4323 ldr x0, [x19, 3448] 4324 cbz x0, .L420 4325 ldr x0, [x19, 3456] 4326 cbz x0, .L420 4327 ldr x0, [x19, 3464] 4328 cbz x0, .L420 4329 ldr x0, [x19, 3256] 4330 cbz x0, .L420 4331 ldr x0, [x19, 3472] 4332 cbz x0, .L420 4333 ldr x0, [x19, 3480] 4334 cbz x0, .L420 4335 ldr x0, [x19, 3248] 4336 cbz x0, .L420 4337 ldr x0, [x19, 3512] 4338 cbz x0, .L420 4339 ldr x0, [x19, 3520] 4340 cbz x0, .L420 4341 ldr x0, [x19, 3264] 4342 cbz x0, .L420 4343 ldr x0, [x19, 2600] 4344 cbz x0, .L420 4345 ldr x0, [x19, 3536] 4346 cbz x0, .L420 4347 ldr x0, [x19, 352] 4348 cbz x0, .L420 4349 adrp x0, .LANCHOR0 4350 add x0, x0, :lo12:.LANCHOR0 4351 ldr x1, [x0, 3576] 4352 cbz x1, .L420 4353 ldr x1, [x0, 3584] 4354 cbz x1, .L420 4355 ldr x0, [x0, 3592] 4356 cbz x0, .L420 4357 mov w0, 0 4358 b .L415 4359 .size FtlMemInit, .-FtlMemInit 4360 .align 2 4361 .global FtlBbt2Bitmap 4362 .type FtlBbt2Bitmap, %function 4363FtlBbt2Bitmap: 4364 hint 34 // bti c 4365 .section __patchable_function_entries 4366 .align 3 4367 .8byte .LPFE61 4368 .text 4369.LPFE61: 4370 nop 4371 nop 4372 hint 25 // paciasp 4373 stp x29, x30, [sp, -64]! 4374 mov x29, sp 4375 stp x23, x24, [sp, 48] 4376 adrp x23, .LANCHOR0 4377 add x23, x23, :lo12:.LANCHOR0 4378 stp x21, x22, [sp, 32] 4379 adrp x21, .LANCHOR1 4380 add x21, x21, :lo12:.LANCHOR1 4381 ldrh w2, [x23, 3624] 4382 adrp x24, .LC9 4383 add x21, x21, 184 4384 add x24, x24, :lo12:.LC9 4385 stp x19, x20, [sp, 16] 4386 mov x19, 0 4387 mov x20, x1 4388 mov x22, x0 4389 lsl w2, w2, 2 4390 mov x0, x20 4391 mov w1, 0 4392 bl ftl_memset 4393.L518: 4394 ldrh w0, [x22, x19, lsl 1] 4395 mov w1, 65535 4396 cmp w0, w1 4397 beq .L515 4398 ldrh w1, [x23, 302] 4399 cmp w1, w0 4400 bhi .L517 4401 mov x1, x21 4402 mov x0, x24 4403 mov w2, 74 4404 bl sftl_printk 4405.L517: 4406 ldrh w3, [x22, x19, lsl 1] 4407 mov w2, 1 4408 add x19, x19, 1 4409 ubfx x1, x3, 5, 11 4410 lsl w3, w2, w3 4411 lsl x1, x1, 2 4412 ldr w2, [x20, x1] 4413 orr w2, w2, w3 4414 str w2, [x20, x1] 4415 cmp x19, 512 4416 bne .L518 4417.L515: 4418 ldp x19, x20, [sp, 16] 4419 ldp x21, x22, [sp, 32] 4420 ldp x23, x24, [sp, 48] 4421 ldp x29, x30, [sp], 64 4422 hint 29 // autiasp 4423 ret 4424 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap 4425 .align 2 4426 .global FtlBbtMemInit 4427 .type FtlBbtMemInit, %function 4428FtlBbtMemInit: 4429 hint 34 // bti c 4430 .section __patchable_function_entries 4431 .align 3 4432 .8byte .LPFE62 4433 .text 4434.LPFE62: 4435 nop 4436 nop 4437 hint 25 // paciasp 4438 adrp x0, .LANCHOR0 4439 stp x29, x30, [sp, -16]! 4440 add x0, x0, :lo12:.LANCHOR0 4441 mov w1, -1 4442 mov x29, sp 4443 mov w2, 16 4444 add x0, x0, 372 4445 strh w1, [x0, -12] 4446 mov w1, 255 4447 strh wzr, [x0, -6] 4448 bl ftl_memset 4449 ldp x29, x30, [sp], 16 4450 hint 29 // autiasp 4451 ret 4452 .size FtlBbtMemInit, .-FtlBbtMemInit 4453 .align 2 4454 .global FtlFreeSysBlkQueueInit 4455 .type FtlFreeSysBlkQueueInit, %function 4456FtlFreeSysBlkQueueInit: 4457 hint 34 // bti c 4458 .section __patchable_function_entries 4459 .align 3 4460 .8byte .LPFE63 4461 .text 4462.LPFE63: 4463 nop 4464 nop 4465 adrp x3, .LANCHOR0 4466 add x3, x3, :lo12:.LANCHOR0 4467 hint 25 // paciasp 4468 add x1, x3, 456 4469 stp x29, x30, [sp, -16]! 4470 mov w2, 2048 4471 mov x29, sp 4472 str wzr, [x1, 2] 4473 mov w1, 0 4474 strh w0, [x3, 456] 4475 add x0, x3, 464 4476 strh wzr, [x3, 462] 4477 bl ftl_memset 4478 mov w0, 0 4479 ldp x29, x30, [sp], 16 4480 hint 29 // autiasp 4481 ret 4482 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit 4483 .align 2 4484 .global ftl_free_no_use_map_blk 4485 .type ftl_free_no_use_map_blk, %function 4486ftl_free_no_use_map_blk: 4487 hint 34 // bti c 4488 .section __patchable_function_entries 4489 .align 3 4490 .8byte .LPFE64 4491 .text 4492.LPFE64: 4493 nop 4494 nop 4495 hint 25 // paciasp 4496 stp x29, x30, [sp, -80]! 4497 mov w1, 0 4498 mov x29, sp 4499 stp x19, x20, [sp, 16] 4500 mov x19, x0 4501 stp x21, x22, [sp, 32] 4502 stp x23, x24, [sp, 48] 4503 str x25, [sp, 64] 4504 ldp x21, x20, [x0, 32] 4505 ldrh w2, [x0, 10] 4506 ldr x22, [x0, 16] 4507 lsl w2, w2, 1 4508 mov x0, x21 4509 bl ftl_memset 4510 mov w0, 0 4511.L526: 4512 ldrh w1, [x19, 6] 4513 cmp w1, w0 4514 bhi .L530 4515 adrp x0, .LANCHOR0+308 4516 mov w24, 0 4517 mov w20, 0 4518 ldrh w1, [x0, #:lo12:.LANCHOR0+308] 4519 ldrh w0, [x19] 4520 strh w1, [x21, x0, lsl 1] 4521 ldrh w25, [x21] 4522.L531: 4523 ldrh w0, [x19, 10] 4524 cmp w0, w20 4525 bhi .L534 4526 mov w0, w24 4527 ldp x19, x20, [sp, 16] 4528 ldp x21, x22, [sp, 32] 4529 ldp x23, x24, [sp, 48] 4530 ldr x25, [sp, 64] 4531 ldp x29, x30, [sp], 80 4532 hint 29 // autiasp 4533 ret 4534.L530: 4535 ubfiz x1, x0, 2, 16 4536 ldr w2, [x20, x1] 4537 mov w1, 0 4538 ubfx x2, x2, 10, 16 4539.L527: 4540 ldrh w3, [x19, 10] 4541 cmp w3, w1 4542 bhi .L529 4543 add w0, w0, 1 4544 and w0, w0, 65535 4545 b .L526 4546.L529: 4547 ubfiz x3, x1, 1, 16 4548 ldrh w4, [x22, x3] 4549 cmp w4, w2 4550 bne .L528 4551 cbz w2, .L528 4552 ldrh w4, [x21, x3] 4553 add w4, w4, 1 4554 strh w4, [x21, x3] 4555.L528: 4556 add w1, w1, 1 4557 and w1, w1, 65535 4558 b .L527 4559.L534: 4560 ubfiz x23, x20, 1, 16 4561 ldrh w0, [x21, x23] 4562 cmp w0, w25 4563 bcs .L532 4564 ldrh w1, [x22, x23] 4565 cmp w1, 0 4566 csel w24, w24, w20, eq 4567 csel w25, w25, w0, eq 4568.L532: 4569 cbnz w0, .L533 4570 ldrh w0, [x22, x23] 4571 cbz w0, .L533 4572 mov w1, 1 4573 bl FtlFreeSysBlkQueueIn 4574 strh wzr, [x22, x23] 4575 ldrh w0, [x19, 8] 4576 sub w0, w0, #1 4577 strh w0, [x19, 8] 4578.L533: 4579 add w20, w20, 1 4580 and w20, w20, 65535 4581 b .L531 4582 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk 4583 .align 2 4584 .global FtlL2PDataInit 4585 .type FtlL2PDataInit, %function 4586FtlL2PDataInit: 4587 hint 34 // bti c 4588 .section __patchable_function_entries 4589 .align 3 4590 .8byte .LPFE65 4591 .text 4592.LPFE65: 4593 nop 4594 nop 4595 hint 25 // paciasp 4596 stp x29, x30, [sp, -32]! 4597 mov w1, 0 4598 mov x29, sp 4599 str x19, [sp, 16] 4600 adrp x19, .LANCHOR0 4601 add x19, x19, :lo12:.LANCHOR0 4602 ldr x0, [x19, 3568] 4603 ldr w2, [x19, 332] 4604 lsl w2, w2, 1 4605 bl ftl_memset 4606 ldrh w0, [x19, 342] 4607 mov w1, 255 4608 ldrh w2, [x19, 314] 4609 mul w2, w2, w0 4610 ldr x0, [x19, 3616] 4611 bl ftl_memset 4612 mov w0, 0 4613 mov w4, -1 4614.L545: 4615 ldrh w1, [x19, 342] 4616 cmp w1, w0 4617 bhi .L546 4618 ldr w1, [x19, 332] 4619 strh w1, [x19, 3642] 4620 mov w1, -1 4621 str w1, [x19, 3632] 4622 mov w1, -3902 4623 strh w1, [x19, 3636] 4624 ldrh w1, [x19, 3696] 4625 strh w1, [x19, 3640] 4626 ldrh w1, [x19, 340] 4627 strh w1, [x19, 3638] 4628 ldr x1, [x19, 3560] 4629 str x1, [x19, 3648] 4630 ldr x1, [x19, 3608] 4631 str x1, [x19, 3656] 4632 ldr x1, [x19, 3568] 4633 str x1, [x19, 3664] 4634 ldr x1, [x19, 3600] 4635 str x1, [x19, 3672] 4636 ldr x19, [sp, 16] 4637 ldp x29, x30, [sp], 32 4638 hint 29 // autiasp 4639 ret 4640.L546: 4641 ldr x2, [x19, 2608] 4642 ubfiz x1, x0, 4, 16 4643 add x2, x2, x1 4644 str wzr, [x2, 4] 4645 ldr x2, [x19, 2608] 4646 strh w4, [x2, x1] 4647 ldr x2, [x19, 2608] 4648 ldr x3, [x19, 3616] 4649 add x2, x2, x1 4650 ldrh w1, [x19, 314] 4651 mul w1, w1, w0 4652 add w0, w0, 1 4653 and w0, w0, 65535 4654 sxtw x1, w1 4655 and x1, x1, -4 4656 add x1, x3, x1 4657 str x1, [x2, 8] 4658 b .L545 4659 .size FtlL2PDataInit, .-FtlL2PDataInit 4660 .align 2 4661 .global FtlVariablesInit 4662 .type FtlVariablesInit, %function 4663FtlVariablesInit: 4664 hint 34 // bti c 4665 .section __patchable_function_entries 4666 .align 3 4667 .8byte .LPFE66 4668 .text 4669.LPFE66: 4670 nop 4671 nop 4672 hint 25 // paciasp 4673 stp x29, x30, [sp, -32]! 4674 mov w0, -1 4675 mov x29, sp 4676 str x19, [sp, 16] 4677 adrp x19, .LANCHOR0 4678 add x19, x19, :lo12:.LANCHOR0 4679 mov w1, 0 4680 strh w0, [x19, 3698] 4681 mov w0, -1 4682 str w0, [x19, 3708] 4683 ldr x0, [x19, 352] 4684 strh wzr, [x19, 348] 4685 ldrh w2, [x19, 324] 4686 str wzr, [x19, 3700] 4687 str wzr, [x19, 3704] 4688 lsl w2, w2, 1 4689 bl ftl_memset 4690 ldr x0, [x19, 2600] 4691 mov w1, 0 4692 ldrh w2, [x19, 246] 4693 lsl w2, w2, 1 4694 bl ftl_memset 4695 ldr x0, [x19, 3536] 4696 mov w1, 0 4697 ldrh w2, [x19, 246] 4698 lsl w2, w2, 1 4699 bl ftl_memset 4700 add x0, x19, 2512 4701 mov w2, 48 4702 mov w1, 0 4703 bl ftl_memset 4704 mov w2, 512 4705 mov w1, 0 4706 add x0, x19, 2712 4707 bl ftl_memset 4708 bl FtlGcBufInit 4709 bl FtlL2PDataInit 4710 mov w0, 0 4711 ldr x19, [sp, 16] 4712 ldp x29, x30, [sp], 32 4713 hint 29 // autiasp 4714 ret 4715 .size FtlVariablesInit, .-FtlVariablesInit 4716 .align 2 4717 .global SupperBlkListInit 4718 .type SupperBlkListInit, %function 4719SupperBlkListInit: 4720 hint 34 // bti c 4721 .section __patchable_function_entries 4722 .align 3 4723 .8byte .LPFE67 4724 .text 4725.LPFE67: 4726 nop 4727 nop 4728 hint 25 // paciasp 4729 stp x29, x30, [sp, -112]! 4730 mov w0, 6 4731 mov x29, sp 4732 stp x19, x20, [sp, 16] 4733 adrp x19, .LANCHOR0 4734 add x19, x19, :lo12:.LANCHOR0 4735 stp x25, x26, [sp, 64] 4736 add x25, x19, 264 4737 mov w1, 0 4738 ldrh w2, [x19, 246] 4739 mov w20, 0 4740 mov w26, -1 4741 stp x21, x22, [sp, 32] 4742 mov w21, 0 4743 stp x23, x24, [sp, 48] 4744 mov w23, 0 4745 mul w2, w2, w0 4746 ldr x0, [x19, 2560] 4747 stp x27, x28, [sp, 80] 4748 mov w27, 32768 4749 bl ftl_memset 4750 strh wzr, [x19, 228] 4751 str xzr, [x19, 2568] 4752 str xzr, [x19, 2576] 4753 strh wzr, [x19, 2584] 4754 str xzr, [x19, 2592] 4755.L551: 4756 ldrh w0, [x19, 244] 4757 cmp w0, w20 4758 bls .L558 4759 ldrh w2, [x19, 236] 4760 mov x24, 0 4761 ldrh w28, [x19, 306] 4762 mov w22, 0 4763 b .L559 4764.L553: 4765 ldrb w0, [x25, x24] 4766 mov w1, w20 4767 str w2, [sp, 108] 4768 bl V2P_block 4769 bl FtlBbmIsBadBlock 4770 ldr w2, [sp, 108] 4771 cbnz w0, .L552 4772 add w22, w28, w22 4773 and w22, w22, 65535 4774.L552: 4775 add x24, x24, 1 4776.L559: 4777 cmp w2, w24, uxth 4778 bhi .L553 4779 cbz w22, .L554 4780 udiv w22, w27, w22 4781.L555: 4782 ldr x1, [x19, 2560] 4783 mov w0, 6 4784 umaddl x0, w20, w0, x1 4785 strh w22, [x0, 4] 4786 ldrh w0, [x19, 24] 4787 cmp w0, w20 4788 beq .L556 4789 ldrh w0, [x19, 80] 4790 cmp w0, w20 4791 beq .L556 4792 ldrh w0, [x19, 128] 4793 cmp w0, w20 4794 beq .L556 4795 ldr x1, [x19, 72] 4796 ubfiz x0, x20, 1, 16 4797 ldrh w0, [x1, x0] 4798 cbnz w0, .L557 4799 add w23, w23, 1 4800 mov w0, w20 4801 and w23, w23, 65535 4802 bl INSERT_FREE_LIST 4803.L556: 4804 add w20, w20, 1 4805 and w20, w20, 65535 4806 b .L551 4807.L554: 4808 ldr x1, [x19, 72] 4809 ubfiz x0, x20, 1, 16 4810 strh w26, [x1, x0] 4811 b .L555 4812.L557: 4813 add w21, w21, 1 4814 mov w0, w20 4815 and w21, w21, 65535 4816 bl INSERT_DATA_LIST 4817 b .L556 4818.L558: 4819 strh w23, [x19, 228] 4820 strh w21, [x19, 2584] 4821 add w21, w21, w23 4822 cmp w21, w0 4823 ble .L560 4824 adrp x1, .LANCHOR1 4825 add x1, x1, :lo12:.LANCHOR1 4826 adrp x0, .LC9 4827 add x1, x1, 198 4828 add x0, x0, :lo12:.LC9 4829 mov w2, 2219 4830 bl sftl_printk 4831.L560: 4832 mov w0, 0 4833 ldp x19, x20, [sp, 16] 4834 ldp x21, x22, [sp, 32] 4835 ldp x23, x24, [sp, 48] 4836 ldp x25, x26, [sp, 64] 4837 ldp x27, x28, [sp, 80] 4838 ldp x29, x30, [sp], 112 4839 hint 29 // autiasp 4840 ret 4841 .size SupperBlkListInit, .-SupperBlkListInit 4842 .align 2 4843 .global FtlGcPageVarInit 4844 .type FtlGcPageVarInit, %function 4845FtlGcPageVarInit: 4846 hint 34 // bti c 4847 .section __patchable_function_entries 4848 .align 3 4849 .8byte .LPFE68 4850 .text 4851.LPFE68: 4852 nop 4853 nop 4854 hint 25 // paciasp 4855 stp x29, x30, [sp, -32]! 4856 mov w1, 255 4857 mov x29, sp 4858 str x19, [sp, 16] 4859 adrp x19, .LANCHOR0 4860 add x19, x19, :lo12:.LANCHOR0 4861 ldr x0, [x19, 3288] 4862 strh wzr, [x19, 3284] 4863 ldrh w2, [x19, 310] 4864 strh wzr, [x19, 3296] 4865 lsl w2, w2, 1 4866 bl ftl_memset 4867 ldrh w2, [x19, 310] 4868 mov w0, 12 4869 mov w1, 255 4870 mul w2, w2, w0 4871 ldr x0, [x19, 3304] 4872 bl ftl_memset 4873 bl FtlGcBufInit 4874 ldr x19, [sp, 16] 4875 ldp x29, x30, [sp], 32 4876 hint 29 // autiasp 4877 ret 4878 .size FtlGcPageVarInit, .-FtlGcPageVarInit 4879 .align 2 4880 .global FlashGetBadBlockList 4881 .type FlashGetBadBlockList, %function 4882FlashGetBadBlockList: 4883 hint 34 // bti c 4884 .section __patchable_function_entries 4885 .align 3 4886 .8byte .LPFE69 4887 .text 4888.LPFE69: 4889 nop 4890 nop 4891 hint 25 // paciasp 4892 stp x29, x30, [sp, -48]! 4893 mov w2, 256 4894 mov x29, sp 4895 stp x19, x20, [sp, 16] 4896 adrp x20, .LANCHOR0 4897 add x20, x20, :lo12:.LANCHOR0 4898 mov x19, x0 4899 str x21, [sp, 32] 4900 mov w21, w1 4901 mov w1, 255 4902 bl ftl_memset 4903 ldr x2, [x20, 3352] 4904 mov w1, w21 4905 mov x0, x19 4906 blr x2 4907 and w0, w0, 65535 4908 cmp w0, 50 4909 bls .L565 4910 mov x0, x19 4911 mov w2, 256 4912 mov w1, 255 4913 bl ftl_memset 4914 mov w0, 0 4915.L565: 4916 ldrh w1, [x20, 14] 4917 cmp w1, 4 4918 bne .L570 4919 mov x1, 0 4920 b .L566 4921.L567: 4922 ldrh w2, [x19, x1, lsl 1] 4923 lsr w2, w2, 1 4924 strh w2, [x19, x1, lsl 1] 4925 add x1, x1, 1 4926.L566: 4927 cmp w0, w1, uxth 4928 bhi .L567 4929.L570: 4930 ldp x19, x20, [sp, 16] 4931 ldr x21, [sp, 32] 4932 ldp x29, x30, [sp], 48 4933 hint 29 // autiasp 4934 ret 4935 .size FlashGetBadBlockList, .-FlashGetBadBlockList 4936 .align 2 4937 .global ftl_memcpy 4938 .type ftl_memcpy, %function 4939ftl_memcpy: 4940 hint 34 // bti c 4941 .section __patchable_function_entries 4942 .align 3 4943 .8byte .LPFE70 4944 .text 4945.LPFE70: 4946 nop 4947 nop 4948 hint 25 // paciasp 4949 stp x29, x30, [sp, -16]! 4950 uxtw x2, w2 4951 mov x29, sp 4952 bl memcpy 4953 ldp x29, x30, [sp], 16 4954 hint 29 // autiasp 4955 ret 4956 .size ftl_memcpy, .-ftl_memcpy 4957 .section .rodata.str1.1 4958.LC93: 4959 .string "FlashReadPages %x %x error_ecc_bits %d\n" 4960.LC94: 4961 .string "data:" 4962.LC95: 4963 .string "spare:" 4964 .text 4965 .align 2 4966 .global FlashReadPages 4967 .type FlashReadPages, %function 4968FlashReadPages: 4969 hint 34 // bti c 4970 .section __patchable_function_entries 4971 .align 3 4972 .8byte .LPFE71 4973 .text 4974.LPFE71: 4975 nop 4976 nop 4977 hint 25 // paciasp 4978 stp x29, x30, [sp, -96]! 4979 mrs x2, sp_el0 4980 mov x29, sp 4981 stp x19, x20, [sp, 16] 4982 mov x19, x0 4983 adrp x20, .LANCHOR0 4984 add x20, x20, :lo12:.LANCHOR0 4985 mov w0, 32 4986 stp x21, x22, [sp, 32] 4987 adrp x22, .LANCHOR1 4988 add x22, x22, :lo12:.LANCHOR1 4989 stp x23, x24, [sp, 48] 4990 umaddl x23, w1, w0, x19 4991 adrp x24, .LC9 4992 stp x25, x26, [sp, 64] 4993 add x22, x22, 216 4994 ldrh w25, [x20, 12] 4995 ldr x3, [x2, 1376] 4996 str x3, [sp, 88] 4997 mov x3, 0 4998 add x24, x24, :lo12:.LC9 4999.L575: 5000 cmp x19, x23 5001 bne .L588 5002 mrs x0, sp_el0 5003 ldr x1, [sp, 88] 5004 ldr x2, [x0, 1376] 5005 subs x1, x1, x2 5006 mov x2, 0 5007 beq .L589 5008 bl __stack_chk_fail 5009.L588: 5010 ldr x0, [x19, 8] 5011 cbz x0, .L576 5012 ldr x0, [x19, 16] 5013 cbnz x0, .L577 5014.L576: 5015 mov x1, x22 5016 mov x0, x24 5017 mov w2, 96 5018 bl sftl_printk 5019.L577: 5020 ldr w0, [x19, 4] 5021 add x2, sp, 80 5022 add x1, sp, 84 5023 bl l2p_addr_tran.isra.0 5024 ldr w0, [sp, 80] 5025 cmp w0, 3 5026 bls .L578 5027 mov w0, -1 5028 str w0, [x19] 5029.L579: 5030 add x19, x19, 32 5031 b .L575 5032.L578: 5033 ldr x21, [x19, 8] 5034 tst x21, 63 5035 beq .L580 5036 ldr x21, [x20, 3488] 5037.L580: 5038 mov x2, x21 5039 ldr w1, [sp, 84] 5040 ldr x3, [x19, 16] 5041 ldr x4, [x20, 3376] 5042 blr x4 5043 str w0, [x19] 5044 ldrh w0, [x20, 14] 5045 cmp w0, 4 5046 bne .L582 5047 ldrb w0, [sp, 80] 5048 add x2, x21, 2048 5049 ldr x4, [x20, 3376] 5050 ldr x3, [x19, 16] 5051 ldr w1, [sp, 84] 5052 add x3, x3, 8 5053 add w1, w25, w1 5054 blr x4 5055 cmn w0, #1 5056 beq .L583 5057 ldr x1, [x19, 16] 5058 ldr w2, [x1, 12] 5059 cmn w2, #1 5060 bne .L584 5061 ldr w2, [x1, 8] 5062 cmn w2, #1 5063 bne .L584 5064 ldr w1, [x1] 5065 cmn w1, #1 5066 beq .L584 5067.L583: 5068 mov w0, -1 5069.L615: 5070 str w0, [x19] 5071 b .L585 5072.L584: 5073 ldr w1, [x19] 5074 cmn w1, #1 5075 beq .L585 5076 cmp w0, 256 5077 beq .L615 5078.L585: 5079 ldr w3, [x19] 5080 cmp w3, 256 5081 ccmn w3, #1, 4, ne 5082 bne .L582 5083 ldr w1, [x19, 4] 5084 adrp x0, .LC93 5085 ldr w2, [sp, 84] 5086 add x0, x0, :lo12:.LC93 5087 bl sftl_printk 5088 ldr x1, [x19, 8] 5089 cbz x1, .L587 5090 mov w3, 4 5091 adrp x0, .LC94 5092 mov w2, w3 5093 add x0, x0, :lo12:.LC94 5094 bl rknand_print_hex 5095.L587: 5096 ldr x1, [x19, 16] 5097 cbz x1, .L582 5098 mov w3, 4 5099 adrp x0, .LC95 5100 mov w2, w3 5101 add x0, x0, :lo12:.LC95 5102 bl rknand_print_hex 5103.L582: 5104 ldr x0, [x20, 3488] 5105 cmp x0, x21 5106 bne .L579 5107 ldr x0, [x19, 8] 5108 cmp x0, x21 5109 beq .L579 5110 ldrh w2, [x20, 262] 5111 mov x1, x21 5112 lsl w2, w2, 9 5113 bl ftl_memcpy 5114 b .L579 5115.L589: 5116 mov w0, 0 5117 ldp x19, x20, [sp, 16] 5118 ldp x21, x22, [sp, 32] 5119 ldp x23, x24, [sp, 48] 5120 ldp x25, x26, [sp, 64] 5121 ldp x29, x30, [sp], 96 5122 hint 29 // autiasp 5123 ret 5124 .size FlashReadPages, .-FlashReadPages 5125 .align 2 5126 .global FtlLoadFactoryBbt 5127 .type FtlLoadFactoryBbt, %function 5128FtlLoadFactoryBbt: 5129 hint 34 // bti c 5130 .section __patchable_function_entries 5131 .align 3 5132 .8byte .LPFE72 5133 .text 5134.LPFE72: 5135 nop 5136 nop 5137 hint 25 // paciasp 5138 stp x29, x30, [sp, -80]! 5139 mov x29, sp 5140 stp x19, x20, [sp, 16] 5141 adrp x20, .LANCHOR0 5142 add x20, x20, :lo12:.LANCHOR0 5143 stp x21, x22, [sp, 32] 5144 add x21, x20, 3712 5145 mov w22, 0 5146 stp x23, x24, [sp, 48] 5147 add x23, x20, 360 5148 stp x25, x26, [sp, 64] 5149 mov w25, -1 5150 mov w26, 61664 5151 ldr x0, [x20, 3448] 5152 ldr x24, [x20, 3512] 5153 stp x0, x24, [x21, 8] 5154.L617: 5155 ldrh w0, [x20, 258] 5156 cmp w0, w22 5157 bhi .L622 5158 mov w0, 0 5159 ldp x19, x20, [sp, 16] 5160 ldp x21, x22, [sp, 32] 5161 ldp x23, x24, [sp, 48] 5162 ldp x25, x26, [sp, 64] 5163 ldp x29, x30, [sp], 80 5164 hint 29 // autiasp 5165 ret 5166.L622: 5167 ldrh w19, [x20, 302] 5168 strh w25, [x23, 12] 5169.L619: 5170 ldrh w0, [x20, 302] 5171 sub w19, w19, #1 5172 and w19, w19, 65535 5173 sub w1, w0, #16 5174 cmp w19, w1 5175 ble .L620 5176 madd w0, w0, w22, w19 5177 mov w2, 1 5178 mov w1, w2 5179 lsl w0, w0, 10 5180 str w0, [x21, 4] 5181 mov x0, x21 5182 bl FlashReadPages 5183 ldr w0, [x21] 5184 cmn w0, #1 5185 beq .L619 5186 ldrh w0, [x24] 5187 cmp w0, w26 5188 bne .L619 5189 strh w19, [x23, 12] 5190.L620: 5191 add w22, w22, 1 5192 add x23, x23, 2 5193 b .L617 5194 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt 5195 .align 2 5196 .global FtlGetLastWrittenPage 5197 .type FtlGetLastWrittenPage, %function 5198FtlGetLastWrittenPage: 5199 hint 34 // bti c 5200 .section __patchable_function_entries 5201 .align 3 5202 .8byte .LPFE73 5203 .text 5204.LPFE73: 5205 nop 5206 nop 5207 hint 25 // paciasp 5208 stp x29, x30, [sp, -176]! 5209 mov x29, sp 5210 stp x19, x20, [sp, 16] 5211 stp x21, x22, [sp, 32] 5212 mov w22, w1 5213 mrs x1, sp_el0 5214 stp x23, x24, [sp, 48] 5215 cmp w22, 1 5216 ldr x2, [x1, 1376] 5217 str x2, [sp, 168] 5218 mov x2, 0 5219 adrp x1, .LANCHOR0 5220 add x1, x1, :lo12:.LANCHOR0 5221 bne .L628 5222 ldrh w19, [x1, 308] 5223.L629: 5224 sub w19, w19, #1 5225 lsl w21, w0, 10 5226 ldr x1, [x1, 3496] 5227 sxth w19, w19 5228 orr w0, w19, w0, lsl 10 5229 str x1, [sp, 80] 5230 add x1, sp, 104 5231 mov w2, w22 5232 str w0, [sp, 76] 5233 add x0, sp, 72 5234 str x1, [sp, 88] 5235 mov w1, 1 5236 bl FlashReadPages 5237 ldr w0, [sp, 104] 5238 cmn w0, #1 5239 bne .L631 5240 mov w23, 0 5241 mov w24, 2 5242 b .L630 5243.L628: 5244 ldrh w19, [x1, 306] 5245 b .L629 5246.L634: 5247 add w0, w23, w19 5248 mov w1, 1 5249 mov w2, w22 5250 sdiv w0, w0, w24 5251 sxth w20, w0 5252 orr w0, w0, w21 5253 str w0, [sp, 76] 5254 add x0, sp, 72 5255 bl FlashReadPages 5256 ldp w0, w1, [sp, 104] 5257 and w0, w0, w1 5258 cmn w0, #1 5259 bne .L632 5260 ldr w0, [sp, 72] 5261 cmn w0, #1 5262 beq .L632 5263 sub w19, w20, #1 5264 sxth w19, w19 5265.L630: 5266 cmp w23, w19 5267 ble .L634 5268.L631: 5269 mrs x0, sp_el0 5270 ldr x1, [sp, 168] 5271 ldr x2, [x0, 1376] 5272 subs x1, x1, x2 5273 mov x2, 0 5274 beq .L635 5275 bl __stack_chk_fail 5276.L632: 5277 add w20, w20, 1 5278 sxth w23, w20 5279 b .L630 5280.L635: 5281 mov w0, w19 5282 ldp x19, x20, [sp, 16] 5283 ldp x21, x22, [sp, 32] 5284 ldp x23, x24, [sp, 48] 5285 ldp x29, x30, [sp], 176 5286 hint 29 // autiasp 5287 ret 5288 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage 5289 .align 2 5290 .global FtlScanSysBlk 5291 .type FtlScanSysBlk, %function 5292FtlScanSysBlk: 5293 hint 34 // bti c 5294 .section __patchable_function_entries 5295 .align 3 5296 .8byte .LPFE74 5297 .text 5298.LPFE74: 5299 nop 5300 nop 5301 hint 25 // paciasp 5302 stp x29, x30, [sp, -96]! 5303 mov w1, 0 5304 mov x29, sp 5305 stp x19, x20, [sp, 16] 5306 adrp x19, .LANCHOR0 5307 add x19, x19, :lo12:.LANCHOR0 5308 stp x21, x22, [sp, 32] 5309 ldr x0, [x19, 3608] 5310 stp x23, x24, [sp, 48] 5311 ldr w2, [x19, 332] 5312 stp x25, x26, [sp, 64] 5313 adrp x24, .LANCHOR1 5314 add x24, x24, :lo12:.LANCHOR1 5315 lsl w2, w2, 2 5316 stp x27, x28, [sp, 80] 5317 add x24, x24, 231 5318 strh wzr, [x19, 348] 5319 strh wzr, [x19, 3696] 5320 bl ftl_memset 5321 ldr x0, [x19, 3560] 5322 mov w1, 0 5323 ldr w2, [x19, 332] 5324 lsl w2, w2, 1 5325 bl ftl_memset 5326 ldr x0, [x19, 3584] 5327 mov w1, 0 5328 ldrh w2, [x19, 324] 5329 lsl w2, w2, 2 5330 bl ftl_memset 5331 ldr x0, [x19, 352] 5332 mov w1, 0 5333 ldrh w2, [x19, 324] 5334 lsl w2, w2, 1 5335 bl ftl_memset 5336 add x0, x19, 2696 5337 mov w2, 16 5338 mov w1, 255 5339 bl ftl_memset 5340 ldrh w23, [x19, 244] 5341.L642: 5342 ldrh w0, [x19, 246] 5343 cmp w0, w23 5344 bls .L681 5345 ldrh w28, [x19, 236] 5346 add x26, x19, 264 5347 ldrh w27, [x19, 316] 5348 mov x21, 0 5349 mov w22, 0 5350 mov w25, 4 5351 b .L682 5352.L644: 5353 ldrb w0, [x26, x21] 5354 mov w1, w23 5355 bl V2P_block 5356 and w20, w0, 65535 5357 bl FtlBbmIsBadBlock 5358 cbnz w0, .L643 5359 ldr x0, [x19, 3424] 5360 ubfiz x2, x22, 5, 16 5361 lsl w20, w20, 10 5362 add x0, x0, x2 5363 str w20, [x0, 4] 5364 ldr x1, [x19, 3424] 5365 ldr x0, [x19, 3256] 5366 add x1, x1, x2 5367 ldr x2, [x19, 3264] 5368 str x0, [x1, 8] 5369 mul w0, w22, w27 5370 add w22, w22, 1 5371 and w22, w22, 65535 5372 sdiv w0, w0, w25 5373 add x0, x2, w0, sxtw 2 5374 str x0, [x1, 16] 5375.L643: 5376 add x21, x21, 1 5377.L682: 5378 cmp w28, w21, uxth 5379 bhi .L644 5380 cbnz w22, .L645 5381.L680: 5382 add w23, w23, 1 5383 and w23, w23, 65535 5384 b .L642 5385.L645: 5386 ldr x0, [x19, 3424] 5387 adrp x26, .LC9 5388 mov w1, w22 5389 add x26, x26, :lo12:.LC9 5390 mov w2, 1 5391 mov x25, 0 5392 bl FlashReadPages 5393.L679: 5394 ldr x0, [x19, 3424] 5395 lsl x27, x25, 5 5396 add x1, x0, x25, lsl 5 5397 ldr w0, [x0, x27] 5398 ldr w20, [x1, 4] 5399 ldr x21, [x1, 16] 5400 ubfx x20, x20, 10, 16 5401 cmn w0, #1 5402 bne .L648 5403 mov w28, 16 5404.L650: 5405 ldr x0, [x19, 3424] 5406 mov w2, 1 5407 add x0, x0, x27 5408 ldr w1, [x0, 4] 5409 add w1, w1, 1 5410 str w1, [x0, 4] 5411 mov w1, w2 5412 ldr x0, [x19, 3424] 5413 add x0, x0, x27 5414 bl FlashReadPages 5415 ldrh w0, [x21] 5416 mov w3, 65535 5417 cmp w0, w3 5418 ldr x0, [x19, 3424] 5419 bne .L647 5420 mov w1, -1 5421 str w1, [x0, x27] 5422 ldr x0, [x19, 3424] 5423 ldr w0, [x0, x27] 5424 cmp w0, w1 5425 beq .L649 5426.L648: 5427 ldr w1, [x19, 2660] 5428 ldr w0, [x21, 4] 5429 cmn w1, #1 5430 beq .L697 5431 cmp w1, w0 5432 bhi .L651 5433.L697: 5434 cmn w0, #1 5435 beq .L651 5436 add w1, w0, 1 5437 str w1, [x19, 2660] 5438.L651: 5439 ldrh w1, [x21] 5440 mov w2, 61634 5441 cmp w1, w2 5442 beq .L652 5443 bhi .L653 5444 mov w2, 61574 5445 cmp w1, w2 5446 beq .L654 5447 mov w2, 61604 5448 cmp w1, w2 5449 beq .L655 5450.L656: 5451 add x25, x25, 1 5452 cmp w22, w25, uxth 5453 bhi .L679 5454 b .L680 5455.L647: 5456 ldr w0, [x0, x27] 5457 cmn w0, #1 5458 bne .L648 5459 sub w28, w28, #1 5460 ands w28, w28, 65535 5461 bne .L650 5462.L649: 5463 mov w1, 1 5464 b .L721 5465.L653: 5466 mov w0, 65535 5467 cmp w1, w0 5468 bne .L656 5469 mov w1, 0 5470.L721: 5471 mov w0, w20 5472 bl FtlFreeSysBlkQueueIn 5473 b .L656 5474.L652: 5475 ldrh w1, [x19, 3696] 5476 ldr w0, [x19, 332] 5477 cmp w1, w0 5478 bls .L658 5479 mov x1, x24 5480 mov x0, x26 5481 mov w2, 1232 5482 bl sftl_printk 5483.L658: 5484 ldr w4, [x19, 332] 5485 ldrh w3, [x19, 3696] 5486 and w0, w4, 65535 5487 sub w1, w0, #1 5488 sub w0, w0, w3 5489 ldr x5, [x19, 3608] 5490 sub w0, w0, #1 5491 sxth w2, w1 5492 sxth x1, w1 5493 sxth w0, w0 5494 add x7, x5, 4 5495.L659: 5496 cmp w0, w2 5497 bge .L664 5498 sub x6, x1, #1 5499 ldr w10, [x21, 4] 5500 lsl x8, x1, 2 5501 ldr w9, [x7, x6, lsl 2] 5502 cmp w10, w9 5503 bls .L660 5504 ldr w0, [x5] 5505 cbnz w0, .L661 5506 cmp w4, w3 5507 beq .L661 5508 add w3, w3, 1 5509 strh w3, [x19, 3696] 5510.L661: 5511 mov w0, 0 5512.L662: 5513 ldr x3, [x19, 3608] 5514 cmp w0, w2 5515 bne .L663 5516 ldr w0, [x21, 4] 5517 str w0, [x3, x8] 5518 ldr x0, [x19, 3560] 5519 strh w20, [x0, x1, lsl 1] 5520.L664: 5521 tbnz w2, #31, .L656 5522 ldrh w1, [x19, 3696] 5523 ldr w0, [x19, 332] 5524 sub w0, w0, w1 5525 sub w0, w0, #1 5526 cmp w2, w0, sxth 5527 bgt .L656 5528 ldr x0, [x19, 3608] 5529 add w1, w1, 1 5530 strh w1, [x19, 3696] 5531 ldr w1, [x21, 4] 5532 str w1, [x0, w2, sxtw 2] 5533 ldr x0, [x19, 3560] 5534.L720: 5535 strh w20, [x0, w2, sxtw 1] 5536 b .L656 5537.L663: 5538 add w4, w0, 1 5539 ldr w5, [x3, w4, sxtw 2] 5540 str w5, [x3, w0, sxtw 2] 5541 ldr x3, [x19, 3560] 5542 ldrh w5, [x3, w4, sxtw 1] 5543 strh w5, [x3, w0, sxtw 1] 5544 sxth w0, w4 5545 b .L662 5546.L660: 5547 sub w2, w2, #1 5548 mov x1, x6 5549 sxth w2, w2 5550 b .L659 5551.L654: 5552 ldrh w1, [x19, 348] 5553 ldrh w0, [x19, 324] 5554 cmp w1, w0 5555 bls .L668 5556 mov x1, x24 5557 mov x0, x26 5558 mov w2, 1273 5559 bl sftl_printk 5560.L668: 5561 ldrh w3, [x19, 324] 5562 ldrh w0, [x19, 348] 5563 sub w1, w3, #1 5564 ldr x4, [x19, 3584] 5565 sxth w2, w1 5566 sub w1, w1, w0 5567.L669: 5568 cmp w2, w1 5569 ble .L674 5570 sbfiz x5, x2, 2, 32 5571 ldr w8, [x21, 4] 5572 sxtw x6, w2 5573 ldr w7, [x4, x5] 5574 cmp w8, w7 5575 bls .L670 5576 ldr w1, [x4] 5577 cbnz w1, .L671 5578 cmp w3, w0 5579 beq .L671 5580 add w0, w0, 1 5581 strh w0, [x19, 348] 5582.L671: 5583 mov w0, 0 5584.L672: 5585 ldr x1, [x19, 3584] 5586 cmp w0, w2 5587 bne .L673 5588 ldr w0, [x21, 4] 5589 str w0, [x1, x5] 5590 ldr x0, [x19, 352] 5591 strh w20, [x0, x6, lsl 1] 5592.L674: 5593 tbnz w2, #31, .L656 5594 ldrh w0, [x19, 324] 5595 ldrh w1, [x19, 348] 5596 sub w0, w0, #1 5597 sub w0, w0, w1 5598 cmp w2, w0, sxth 5599 bgt .L656 5600 ldr x0, [x19, 3584] 5601 add w1, w1, 1 5602 strh w1, [x19, 348] 5603 ldr w1, [x21, 4] 5604 str w1, [x0, w2, sxtw 2] 5605 ldr x0, [x19, 352] 5606 b .L720 5607.L673: 5608 add w3, w0, 1 5609 ldr w4, [x1, w3, sxtw 2] 5610 str w4, [x1, w0, sxtw 2] 5611 ldr x1, [x19, 352] 5612 ldrh w4, [x1, w3, sxtw 1] 5613 strh w4, [x1, w0, sxtw 1] 5614 sxth w0, w3 5615 b .L672 5616.L670: 5617 sub w2, w2, #1 5618 sxth w2, w2 5619 b .L669 5620.L655: 5621 ldrh w3, [x19, 2696] 5622 add x1, x19, 2560 5623 mov w2, 65535 5624 cmp w3, w2 5625 bne .L676 5626 strh w20, [x1, 136] 5627 str w0, [x1, 144] 5628 b .L656 5629.L676: 5630 ldrh w0, [x1, 140] 5631 cmp w0, w2 5632 beq .L677 5633 mov w1, 1 5634 bl FtlFreeSysBlkQueueIn 5635.L677: 5636 ldr w1, [x21, 4] 5637 add x0, x19, 2560 5638 ldr w2, [x0, 144] 5639 cmp w2, w1 5640 bcs .L678 5641 ldrh w1, [x0, 136] 5642 strh w1, [x0, 140] 5643 strh w20, [x0, 136] 5644 ldr w1, [x21, 4] 5645 str w1, [x0, 144] 5646 b .L656 5647.L678: 5648 strh w20, [x0, 140] 5649 b .L656 5650.L681: 5651 ldr x2, [x19, 3560] 5652 ldrh w0, [x2] 5653 cbz w0, .L683 5654.L686: 5655 ldr x1, [x19, 352] 5656 ldrh w0, [x1] 5657 cbz w0, .L684 5658.L685: 5659 ldrh w1, [x19, 3696] 5660 ldr w0, [x19, 332] 5661 cmp w1, w0 5662 bls .L716 5663 adrp x1, .LANCHOR1 5664 add x1, x1, :lo12:.LANCHOR1 5665 adrp x0, .LC9 5666 add x1, x1, 231 5667 add x0, x0, :lo12:.LC9 5668 mov w2, 1398 5669 bl sftl_printk 5670.L716: 5671 mov w0, 0 5672 ldp x19, x20, [sp, 16] 5673 ldp x21, x22, [sp, 32] 5674 ldp x23, x24, [sp, 48] 5675 ldp x25, x26, [sp, 64] 5676 ldp x27, x28, [sp, 80] 5677 ldp x29, x30, [sp], 96 5678 hint 29 // autiasp 5679 ret 5680.L683: 5681 ldrh w0, [x19, 3696] 5682 cbz w0, .L686 5683 ldr w3, [x19, 332] 5684 mov w0, 0 5685.L687: 5686 cmp w0, w3 5687 bcs .L686 5688 ldrh w4, [x2, w0, sxtw 1] 5689 add w1, w0, 1 5690 sxth w1, w1 5691 cbz w4, .L699 5692 mov w1, w0 5693.L688: 5694 ldr x2, [x19, 3560] 5695 sub w3, w1, w0 5696 ldrh w4, [x2, w1, sxtw 1] 5697 strh w4, [x2, w3, sxtw 1] 5698 ldr x2, [x19, 3608] 5699 ldr w4, [x2, w1, sxtw 2] 5700 str w4, [x2, w3, sxtw 2] 5701 ldr x2, [x19, 3560] 5702 strh wzr, [x2, w1, sxtw 1] 5703 add w2, w1, 1 5704 ldr w3, [x19, 332] 5705 sxth w1, w2 5706 cmp w3, w2, sxth 5707 bhi .L688 5708 b .L686 5709.L699: 5710 mov w0, w1 5711 b .L687 5712.L684: 5713 ldrh w0, [x19, 348] 5714 cbz w0, .L685 5715 ldrh w2, [x19, 324] 5716 mov w0, 0 5717.L692: 5718 mov w3, w0 5719 cmp w0, w2 5720 bge .L685 5721 ldrh w4, [x1, w0, sxtw 1] 5722 cbz w4, .L717 5723.L693: 5724 ldrh w1, [x19, 324] 5725 cmp w0, w1 5726 bge .L685 5727 ldr x1, [x19, 352] 5728 sub w2, w0, w3 5729 ldrh w4, [x1, w0, sxtw 1] 5730 strh w4, [x1, w2, sxtw 1] 5731 ldr x1, [x19, 3584] 5732 ldr w4, [x1, w0, sxtw 2] 5733 str w4, [x1, w2, sxtw 2] 5734 ldr x1, [x19, 352] 5735 strh wzr, [x1, w0, sxtw 1] 5736 add w0, w0, 1 5737 sxth w0, w0 5738 b .L693 5739.L717: 5740 add w0, w0, 1 5741 sxth w0, w0 5742 b .L692 5743 .size FtlScanSysBlk, .-FtlScanSysBlk 5744 .align 2 5745 .global FtlLoadBbt 5746 .type FtlLoadBbt, %function 5747FtlLoadBbt: 5748 hint 34 // bti c 5749 .section __patchable_function_entries 5750 .align 3 5751 .8byte .LPFE75 5752 .text 5753.LPFE75: 5754 nop 5755 nop 5756 hint 25 // paciasp 5757 stp x29, x30, [sp, -80]! 5758 mov x29, sp 5759 stp x19, x20, [sp, 16] 5760 adrp x19, .LANCHOR0 5761 add x19, x19, :lo12:.LANCHOR0 5762 stp x21, x22, [sp, 32] 5763 add x22, x19, 3712 5764 ldr x0, [x19, 3448] 5765 stp x23, x24, [sp, 48] 5766 mov w23, 61649 5767 str x25, [sp, 64] 5768 ldr x21, [x19, 3512] 5769 stp x0, x21, [x22, 8] 5770 bl FtlBbtMemInit 5771 ldrh w20, [x19, 302] 5772 sub w20, w20, #1 5773 and w20, w20, 65535 5774.L723: 5775 ldrh w0, [x19, 302] 5776 sub w0, w0, #16 5777 cmp w20, w0 5778 ble .L728 5779 lsl w0, w20, 10 5780 mov w2, 1 5781 mov w1, w2 5782 str w0, [x22, 4] 5783 mov x0, x22 5784 bl FlashReadPages 5785 ldr w0, [x22] 5786 cmn w0, #1 5787 beq .L724 5788.L727: 5789 ldrh w0, [x21] 5790 cmp w0, w23 5791 bne .L726 5792 ldr w1, [x21, 4] 5793 str w1, [x19, 368] 5794 strh w20, [x19, 360] 5795 ldrh w1, [x21, 8] 5796 strh w1, [x19, 364] 5797.L728: 5798 ldrh w1, [x19, 360] 5799 mov w0, 65535 5800 cmp w1, w0 5801 beq .L742 5802 ldrh w1, [x19, 364] 5803 cmp w1, w0 5804 beq .L732 5805 add x0, x19, 3712 5806 lsl w1, w1, 10 5807 mov w2, 1 5808 str w1, [x0, 4] 5809 mov w1, w2 5810 bl FlashReadPages 5811 ldr w0, [x19, 3712] 5812 cmn w0, #1 5813 beq .L732 5814 ldrh w1, [x21] 5815 mov w0, 61649 5816 cmp w1, w0 5817 bne .L732 5818 ldr w1, [x19, 368] 5819 ldr w0, [x21, 4] 5820 cmp w0, w1 5821 bls .L732 5822 str w0, [x19, 368] 5823 ldrh w1, [x19, 364] 5824 ldrh w0, [x21, 8] 5825 strh w1, [x19, 360] 5826 strh w0, [x19, 364] 5827.L732: 5828 ldrh w0, [x19, 360] 5829 mov w1, 1 5830 add x23, x19, 3712 5831 mov w20, 0 5832 mov w25, 61649 5833 bl FtlGetLastWrittenPage 5834 sxth w24, w0 5835 mov w22, w0 5836 add w0, w24, 1 5837 strh w0, [x19, 362] 5838.L734: 5839 sub w0, w22, w20 5840 tbz x0, 15, .L737 5841 adrp x1, .LANCHOR1 5842 add x1, x1, :lo12:.LANCHOR1 5843 adrp x0, .LC9 5844 add x1, x1, 245 5845 add x0, x0, :lo12:.LC9 5846 mov w2, 251 5847 bl sftl_printk 5848.L736: 5849 ldrh w0, [x21, 10] 5850 mov w1, 65535 5851 strh w0, [x19, 366] 5852 ldrh w0, [x21, 12] 5853 cmp w0, w1 5854 beq .L739 5855 ldr w2, [x19, 232] 5856 cmp w0, w2 5857 beq .L739 5858 ldrh w1, [x19, 246] 5859 lsr w1, w1, 2 5860 cmp w2, w1 5861 bcs .L739 5862 cmp w0, w1 5863 bcs .L739 5864 bl FtlSysBlkNumInit 5865.L739: 5866 add x21, x19, 360 5867 mov x20, 0 5868.L740: 5869 ldrh w0, [x19, 258] 5870 cmp w0, w20 5871 bhi .L741 5872 mov w0, 0 5873.L722: 5874 ldp x19, x20, [sp, 16] 5875 ldp x21, x22, [sp, 32] 5876 ldp x23, x24, [sp, 48] 5877 ldr x25, [sp, 64] 5878 ldp x29, x30, [sp], 80 5879 hint 29 // autiasp 5880 ret 5881.L724: 5882 ldr w0, [x22, 4] 5883 mov w2, 1 5884 mov w1, w2 5885 add w0, w0, 1 5886 str w0, [x22, 4] 5887 mov x0, x22 5888 bl FlashReadPages 5889 ldr w0, [x22] 5890 cmn w0, #1 5891 bne .L727 5892.L726: 5893 sub w20, w20, #1 5894 and w20, w20, 65535 5895 b .L723 5896.L737: 5897 ldrh w0, [x19, 360] 5898 sub w1, w24, w20 5899 mov w2, 1 5900 orr w0, w1, w0, lsl 10 5901 str w0, [x23, 4] 5902 ldr x0, [x19, 3448] 5903 mov w1, w2 5904 str x0, [x23, 8] 5905 mov x0, x23 5906 bl FlashReadPages 5907 ldr w0, [x23] 5908 cmn w0, #1 5909 beq .L735 5910 ldrh w0, [x21] 5911 cmp w0, w25 5912 beq .L736 5913.L735: 5914 add w20, w20, 1 5915 b .L734 5916.L741: 5917 ldrh w2, [x19, 3624] 5918 add x0, x21, x20, lsl 3 5919 ldr x1, [x19, 3720] 5920 ldr x0, [x0, 32] 5921 mul w3, w2, w20 5922 lsl w2, w2, 2 5923 add x20, x20, 1 5924 add x1, x1, x3, lsl 2 5925 bl ftl_memcpy 5926 b .L740 5927.L742: 5928 mov w0, -1 5929 b .L722 5930 .size FtlLoadBbt, .-FtlLoadBbt 5931 .section .rodata.str1.1 5932.LC96: 5933 .string "prog read error: = %x\n" 5934.LC97: 5935 .string "prog read REFRESH: = %x\n" 5936.LC98: 5937 .string "prog read s error: = %x %x %x %x %x\n" 5938.LC99: 5939 .string "prog read d error: = %x %x %x %x %x\n" 5940 .text 5941 .align 2 5942 .global FlashProgPages 5943 .type FlashProgPages, %function 5944FlashProgPages: 5945 hint 34 // bti c 5946 .section __patchable_function_entries 5947 .align 3 5948 .8byte .LPFE76 5949 .text 5950.LPFE76: 5951 nop 5952 nop 5953 hint 25 // paciasp 5954 stp x29, x30, [sp, -160]! 5955 mov x29, sp 5956 stp x19, x20, [sp, 16] 5957 adrp x20, .LANCHOR0 5958 add x20, x20, :lo12:.LANCHOR0 5959 stp x21, x22, [sp, 32] 5960 mov x19, x0 5961 mov w0, 32 5962 stp x23, x24, [sp, 48] 5963 adrp x23, .LANCHOR1 5964 umaddl x22, w1, w0, x19 5965 stp x25, x26, [sp, 64] 5966 add x23, x23, :lo12:.LANCHOR1 5967 mov w25, w2 5968 stp x27, x28, [sp, 80] 5969 mrs x2, sp_el0 5970 adrp x26, .LC9 5971 ldrh w27, [x20, 12] 5972 ldr x3, [x2, 1376] 5973 str x3, [sp, 152] 5974 mov x3, 0 5975 mov x21, x19 5976 add x23, x23, 256 5977 add x26, x26, :lo12:.LC9 5978 lsl w28, w27, 3 5979.L755: 5980 cmp x21, x22 5981 bne .L769 5982 adrp x21, .LC96 5983 adrp x23, .LC97 5984 add x21, x21, :lo12:.LC96 5985 add x23, x23, :lo12:.LC97 5986.L770: 5987 cmp x19, x22 5988 beq .L763 5989 ldr x0, [x20, 3488] 5990 mov w2, w25 5991 mov w1, 1 5992 str wzr, [x0] 5993 ldr x0, [x20, 3504] 5994 str wzr, [x0] 5995 ldr w0, [x19, 4] 5996 str w0, [sp, 124] 5997 ldr x0, [x20, 3488] 5998 str x0, [sp, 128] 5999 ldr x0, [x20, 3504] 6000 str x0, [sp, 136] 6001 add x0, sp, 120 6002 bl FlashReadPages 6003 ldr w24, [sp, 120] 6004 cmn w24, #1 6005 bne .L771 6006 ldr w1, [x19, 4] 6007 mov x0, x21 6008 bl sftl_printk 6009 str w24, [x19] 6010.L771: 6011 ldr w24, [sp, 120] 6012 cmp w24, 256 6013 bne .L772 6014 ldr w1, [x19, 4] 6015 mov x0, x23 6016 bl sftl_printk 6017 str w24, [x19] 6018.L772: 6019 ldr x1, [x19, 16] 6020 cbz x1, .L773 6021 ldr x0, [x20, 3504] 6022 ldr w2, [x1] 6023 ldr w4, [x0] 6024 cmp w2, w4 6025 bne .L774 6026 ldr w3, [x0, 8] 6027 ldr w5, [x1, 8] 6028 cmp w5, w3 6029 beq .L773 6030.L774: 6031 ldr w5, [x0, 4] 6032 adrp x0, .LC98 6033 ldr w3, [x1, 4] 6034 add x0, x0, :lo12:.LC98 6035 ldr w1, [x19, 4] 6036 bl sftl_printk 6037 mov w0, -1 6038 str w0, [x19] 6039.L773: 6040 ldr x1, [x19, 8] 6041 cbz x1, .L775 6042 ldr x0, [x20, 3488] 6043 ldr w2, [x1] 6044 ldr w4, [x0] 6045 cmp w2, w4 6046 bne .L776 6047 ldr w3, [x0, 2048] 6048 ldr w5, [x1, 2048] 6049 cmp w5, w3 6050 beq .L775 6051.L776: 6052 ldr w5, [x0, 4] 6053 adrp x0, .LC99 6054 ldr w3, [x1, 4] 6055 add x0, x0, :lo12:.LC99 6056 ldr w1, [x19, 4] 6057 bl sftl_printk 6058 mov w0, -1 6059 str w0, [x19] 6060.L775: 6061 add x19, x19, 32 6062 b .L770 6063.L769: 6064 ldr x0, [x21, 8] 6065 cbz x0, .L756 6066 ldr x0, [x21, 16] 6067 cbnz x0, .L757 6068.L756: 6069 mov x1, x23 6070 mov x0, x26 6071 mov w2, 148 6072 bl sftl_printk 6073.L757: 6074 ldr w0, [x21, 4] 6075 add x2, sp, 112 6076 add x1, sp, 116 6077 bl l2p_addr_tran.isra.0 6078 ldr w0, [sp, 112] 6079 cmp w0, 3 6080 bls .L758 6081 mov w0, -1 6082 str w0, [x21] 6083.L759: 6084 add x21, x21, 32 6085 b .L755 6086.L758: 6087 cbnz w0, .L760 6088 ldr w0, [sp, 116] 6089 cmp w28, w0 6090 bls .L760 6091 adrp x20, .LANCHOR1 6092 add x20, x20, :lo12:.LANCHOR1 6093 adrp x21, .LC87 6094 add x20, x20, 256 6095 add x21, x21, :lo12:.LC87 6096.L761: 6097 cmp x19, x22 6098 bne .L762 6099 bl dump_stack 6100.L763: 6101 mrs x0, sp_el0 6102 ldr x1, [sp, 152] 6103 ldr x2, [x0, 1376] 6104 subs x1, x1, x2 6105 mov x2, 0 6106 beq .L778 6107 bl __stack_chk_fail 6108.L762: 6109 ldr w2, [x19, 4] 6110 mov w0, -1 6111 str w0, [x19] 6112 mov x1, x20 6113 mov x0, x21 6114 add x19, x19, 32 6115 bl sftl_printk 6116 ldr x1, [x19, -24] 6117 mov w3, 16 6118 mov w2, 4 6119 adrp x0, .LC88 6120 add x0, x0, :lo12:.LC88 6121 bl rknand_print_hex 6122 ldr x1, [x19, -16] 6123 mov w3, 4 6124 adrp x0, .LC89 6125 mov w2, w3 6126 add x0, x0, :lo12:.LC89 6127 bl rknand_print_hex 6128 b .L761 6129.L760: 6130 ldr x1, [x21, 8] 6131 tst x1, 63 6132 beq .L779 6133 ldr x24, [x20, 3488] 6134 cmp x24, x1 6135 beq .L764 6136 ldrh w2, [x20, 262] 6137 mov x0, x24 6138 lsl w2, w2, 9 6139 bl ftl_memcpy 6140.L764: 6141 ldrb w0, [sp, 112] 6142 add x5, x20, 3352 6143 ldr w1, [sp, 116] 6144 mov x2, x24 6145 ldr x3, [x21, 16] 6146 str x5, [sp, 104] 6147 ldr x4, [x20, 3368] 6148 blr x4 6149 cmp w0, 0 6150 mov w4, -1 6151 csel w0, wzr, w4, eq 6152 str w0, [x21] 6153 ldr x5, [sp, 104] 6154 ldrh w0, [x20, 14] 6155 cmp w0, 4 6156 bne .L759 6157 ldrb w0, [sp, 112] 6158 add x2, x24, 2048 6159 ldr x5, [x5, 16] 6160 ldr x3, [x21, 16] 6161 ldr w1, [sp, 116] 6162 add x3, x3, 8 6163 add w1, w27, w1 6164 blr x5 6165 cbz w0, .L759 6166 mov w4, -1 6167 str w4, [x21] 6168 b .L759 6169.L779: 6170 mov x24, x1 6171 b .L764 6172.L778: 6173 mov w0, 0 6174 ldp x19, x20, [sp, 16] 6175 ldp x21, x22, [sp, 32] 6176 ldp x23, x24, [sp, 48] 6177 ldp x25, x26, [sp, 64] 6178 ldp x27, x28, [sp, 80] 6179 ldp x29, x30, [sp], 160 6180 hint 29 // autiasp 6181 ret 6182 .size FlashProgPages, .-FlashProgPages 6183 .align 2 6184 .global FtlLowFormatEraseBlock 6185 .type FtlLowFormatEraseBlock, %function 6186FtlLowFormatEraseBlock: 6187 hint 34 // bti c 6188 .section __patchable_function_entries 6189 .align 3 6190 .8byte .LPFE77 6191 .text 6192.LPFE77: 6193 nop 6194 nop 6195 hint 25 // paciasp 6196 stp x29, x30, [sp, -112]! 6197 adrp x4, .LANCHOR0 6198 mov x29, sp 6199 stp x27, x28, [sp, 80] 6200 add x28, x4, :lo12:.LANCHOR0 6201 stp x21, x22, [sp, 32] 6202 and w21, w1, 255 6203 and w22, w0, 65535 6204 stp x23, x24, [sp, 48] 6205 add x24, x28, 264 6206 mov w23, 0 6207 stp x19, x20, [sp, 16] 6208 mov w20, 0 6209 mov w19, 0 6210 stp x25, x26, [sp, 64] 6211 mov w25, 4 6212 str w22, [x28, 3420] 6213.L795: 6214 ldrh w0, [x28, 236] 6215 cmp w0, w23 6216 bhi .L799 6217 cbz w20, .L794 6218 ldr x0, [x28, 3400] 6219 mov w2, w20 6220 mov w1, 0 6221 mov x23, 0 6222 bl FlashEraseBlocks 6223.L803: 6224 ldr x1, [x28, 3400] 6225 lsl x0, x23, 5 6226 ldr w0, [x1, x0] 6227 add x2, x1, x23, lsl 5 6228 cmn w0, #1 6229 bne .L802 6230 ldr w0, [x2, 4] 6231 add w19, w19, 1 6232 and w19, w19, 65535 6233 ubfx x0, x0, 10, 16 6234 bl FtlBbmMapBadBlock 6235.L802: 6236 add x23, x23, 1 6237 cmp w20, w23, uxth 6238 bhi .L803 6239 cbz w21, .L816 6240 ldrh w26, [x28, 308] 6241 mov w24, 1 6242.L804: 6243 add x0, x28, 264 6244 mov w23, 0 6245 str x0, [sp, 96] 6246.L812: 6247 mov w27, 0 6248 mov w20, 0 6249.L805: 6250 ldrh w0, [x28, 236] 6251 cmp w0, w27 6252 bhi .L808 6253 cbz w20, .L794 6254 ldr x0, [x28, 3400] 6255 mov w2, w24 6256 mov w1, w20 6257 mov w3, 1 6258 mov x25, 0 6259 bl FlashProgPages 6260.L811: 6261 ldr x1, [x28, 3400] 6262 lsl x0, x25, 5 6263 ldr w0, [x1, x0] 6264 add x2, x1, x25, lsl 5 6265 cbz w0, .L810 6266 ldr w0, [x2, 4] 6267 add w19, w19, 1 6268 and w19, w19, 65535 6269 ubfx x0, x0, 10, 16 6270 bl FtlBbmMapBadBlock 6271.L810: 6272 add x25, x25, 1 6273 cmp w20, w25, uxth 6274 bhi .L811 6275 add w23, w23, 1 6276 cmp w26, w23, uxth 6277 bhi .L812 6278 mov x23, 0 6279.L814: 6280 cbz w21, .L813 6281 ldr x1, [x28, 3400] 6282 lsl x0, x23, 5 6283 ldr w0, [x1, x0] 6284 add x2, x1, x23, lsl 5 6285 cbnz w0, .L813 6286 ldr w0, [x2, 4] 6287 mov w1, 1 6288 ubfx x0, x0, 10, 16 6289 bl FtlFreeSysBlkQueueIn 6290.L813: 6291 add x23, x23, 1 6292 cmp w20, w23, uxth 6293 bhi .L814 6294 cmp w22, 63 6295 ccmp w21, 0, 0, hi 6296 beq .L794 6297 ldr x0, [x28, 3400] 6298 mov w2, w20 6299 mov w1, w24 6300 bl FlashEraseBlocks 6301.L794: 6302 mov w0, w19 6303 ldp x19, x20, [sp, 16] 6304 ldp x21, x22, [sp, 32] 6305 ldp x23, x24, [sp, 48] 6306 ldp x25, x26, [sp, 64] 6307 ldp x27, x28, [sp, 80] 6308 ldp x29, x30, [sp], 112 6309 hint 29 // autiasp 6310 ret 6311.L799: 6312 ldr x1, [x28, 3400] 6313 ubfiz x0, x23, 5, 16 6314 str wzr, [x1, x0] 6315 mov w1, w22 6316 ldrb w0, [x24, w23, sxtw] 6317 bl V2P_block 6318 and w27, w0, 65535 6319 mov w26, w27 6320 cbz w21, .L796 6321 bl IsBlkInVendorPart 6322 cbnz w0, .L797 6323.L796: 6324 mov w0, w26 6325 bl FtlBbmIsBadBlock 6326 cbnz w0, .L798 6327 ldr x0, [x28, 3400] 6328 ubfiz x2, x20, 5, 16 6329 lsl w27, w27, 10 6330 add x0, x0, x2 6331 str w27, [x0, 4] 6332 ldr x1, [x28, 3400] 6333 ldr x0, [x28, 3480] 6334 add x1, x1, x2 6335 ldr x2, [x28, 3520] 6336 str x0, [x1, 8] 6337 ldrh w0, [x28, 316] 6338 mul w0, w0, w20 6339 add w20, w20, 1 6340 and w20, w20, 65535 6341 sdiv w0, w0, w25 6342 add x0, x2, w0, sxtw 2 6343 str x0, [x1, 16] 6344.L797: 6345 add w23, w23, 1 6346 and w23, w23, 65535 6347 b .L795 6348.L798: 6349 add w19, w19, 1 6350 and w19, w19, 65535 6351 b .L797 6352.L816: 6353 mov w24, 0 6354 mov w26, 2 6355 b .L804 6356.L808: 6357 ldr x1, [x28, 3400] 6358 ubfiz x0, x27, 5, 16 6359 str wzr, [x1, x0] 6360 mov w1, w22 6361 ldr x0, [sp, 96] 6362 ldrb w0, [x0, w27, sxtw] 6363 bl V2P_block 6364 and w25, w0, 65535 6365 mov w1, w25 6366 cbz w21, .L806 6367 str w25, [sp, 108] 6368 bl IsBlkInVendorPart 6369 ldr w1, [sp, 108] 6370 cbnz w0, .L807 6371.L806: 6372 mov w0, w1 6373 bl FtlBbmIsBadBlock 6374 cbnz w0, .L807 6375 ldr x0, [x28, 3400] 6376 ubfiz x3, x20, 5, 16 6377 add w25, w23, w25, lsl 10 6378 mov w2, 4 6379 add x0, x0, x3 6380 str w25, [x0, 4] 6381 ldr x1, [x28, 3400] 6382 ldr x0, [x28, 3472] 6383 add x1, x1, x3 6384 ldr x3, [x28, 3480] 6385 str x0, [x1, 8] 6386 ldrh w0, [x28, 316] 6387 mul w0, w0, w20 6388 add w20, w20, 1 6389 and w20, w20, 65535 6390 sdiv w0, w0, w2 6391 add x0, x3, w0, sxtw 2 6392 str x0, [x1, 16] 6393.L807: 6394 add w2, w27, 1 6395 and w27, w2, 65535 6396 b .L805 6397 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock 6398 .align 2 6399 .global FlashTestBlk 6400 .type FlashTestBlk, %function 6401FlashTestBlk: 6402 hint 34 // bti c 6403 .section __patchable_function_entries 6404 .align 3 6405 .8byte .LPFE78 6406 .text 6407.LPFE78: 6408 nop 6409 nop 6410 hint 25 // paciasp 6411 stp x29, x30, [sp, -144]! 6412 mov x29, sp 6413 stp x19, x20, [sp, 16] 6414 and w19, w0, 65535 6415 mrs x0, sp_el0 6416 ldr x1, [x0, 1376] 6417 str x1, [sp, 136] 6418 mov x1, 0 6419 cmp w19, 11 6420 bls .L841 6421 adrp x20, .LANCHOR0 6422 add x20, x20, :lo12:.LANCHOR0 6423 mov w2, 32 6424 mov w1, 165 6425 lsl w19, w19, 10 6426 ldr x0, [x20, 3496] 6427 str x0, [sp, 48] 6428 add x0, sp, 72 6429 str x0, [sp, 56] 6430 bl ftl_memset 6431 ldr x0, [x20, 3496] 6432 mov w2, 8 6433 mov w1, 90 6434 bl ftl_memset 6435 add x0, sp, 40 6436 mov w2, 1 6437 mov w1, w2 6438 str w19, [sp, 44] 6439 bl FlashEraseBlocks 6440 mov w3, 1 6441 add x0, sp, 40 6442 mov w2, w3 6443 mov w1, w3 6444 bl FlashProgPages 6445 ldr w0, [sp, 40] 6446 cbnz w0, .L842 6447 add w0, w19, 1 6448 mov w3, 1 6449 mov w2, w3 6450 mov w1, w3 6451 str w0, [sp, 44] 6452 add x0, sp, 40 6453 bl FlashProgPages 6454 ldr w0, [sp, 40] 6455 cmp w0, 0 6456 csetm w20, ne 6457.L839: 6458 add x0, sp, 40 6459 mov w2, 1 6460 mov w1, 0 6461 str w19, [sp, 44] 6462 bl FlashEraseBlocks 6463.L837: 6464 mrs x0, sp_el0 6465 ldr x1, [sp, 136] 6466 ldr x2, [x0, 1376] 6467 subs x1, x1, x2 6468 mov x2, 0 6469 beq .L840 6470 bl __stack_chk_fail 6471.L842: 6472 mov w20, -1 6473 b .L839 6474.L841: 6475 mov w20, 0 6476 b .L837 6477.L840: 6478 mov w0, w20 6479 ldp x19, x20, [sp, 16] 6480 ldp x29, x30, [sp], 144 6481 hint 29 // autiasp 6482 ret 6483 .size FlashTestBlk, .-FlashTestBlk 6484 .section .rodata.str1.1 6485.LC100: 6486 .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n" 6487.LC101: 6488 .string "FtlBbmTblFlush error:%x\n" 6489.LC102: 6490 .string "FtlBbmTblFlush error = %x error count = %d\n" 6491 .text 6492 .align 2 6493 .global FtlBbmTblFlush 6494 .type FtlBbmTblFlush, %function 6495FtlBbmTblFlush: 6496 hint 34 // bti c 6497 .section __patchable_function_entries 6498 .align 3 6499 .8byte .LPFE79 6500 .text 6501.LPFE79: 6502 nop 6503 nop 6504 hint 25 // paciasp 6505 stp x29, x30, [sp, -80]! 6506 mov w1, 0 6507 mov x29, sp 6508 stp x19, x20, [sp, 16] 6509 adrp x19, .LANCHOR0 6510 add x19, x19, :lo12:.LANCHOR0 6511 mov x20, 0 6512 stp x21, x22, [sp, 32] 6513 add x22, x19, 360 6514 ldr x2, [x19, 3512] 6515 str x2, [x19, 3728] 6516 ldrh w2, [x19, 314] 6517 ldr x0, [x19, 3448] 6518 stp x23, x24, [sp, 48] 6519 stp x25, x26, [sp, 64] 6520 str x0, [x19, 3720] 6521 bl ftl_memset 6522.L845: 6523 ldrh w0, [x19, 258] 6524 add x1, x19, 3712 6525 cmp w0, w20 6526 bgt .L846 6527 ldr x21, [x1, 16] 6528 mov w2, 16 6529 mov w1, 255 6530 adrp x25, .LC100 6531 mov x0, x21 6532 bl ftl_memset 6533 mov w0, -3887 6534 strh w0, [x21] 6535 adrp x26, .LC101 6536 add x20, x19, 360 6537 ldr w0, [x22, 8] 6538 add x25, x25, :lo12:.LC100 6539 str w0, [x21, 4] 6540 add x26, x26, :lo12:.LC101 6541 ldrh w0, [x19, 360] 6542 mov w24, 0 6543 strh w0, [x21, 2] 6544 ldr w0, [x22, 4] 6545 mov w22, 0 6546 str w0, [x21, 8] 6547 ldr w0, [x19, 232] 6548 strh w0, [x21, 12] 6549 ldr w0, [x19, 2676] 6550 strh w0, [x21, 14] 6551.L847: 6552 ldr x0, [x19, 3448] 6553 str x0, [x19, 3720] 6554 ldr x0, [x19, 3512] 6555 str x0, [x19, 3728] 6556 ldrh w1, [x20] 6557 ldrh w2, [x20, 2] 6558 ldrh w3, [x20, 4] 6559 ldrh w4, [x21, 10] 6560 orr w0, w2, w1, lsl 10 6561 str wzr, [x19, 3712] 6562 str w0, [x19, 3716] 6563 mov x0, x25 6564 bl sftl_printk 6565 ldrh w0, [x19, 308] 6566 ldrh w1, [x20, 2] 6567 sub w0, w0, #1 6568 cmp w1, w0 6569 blt .L848 6570 ldr w0, [x20, 8] 6571 mov w2, 1 6572 strh wzr, [x20, 2] 6573 add w0, w0, 1 6574 str w0, [x20, 8] 6575 str w0, [x21, 4] 6576 ldrh w0, [x20] 6577 ldrh w1, [x20, 4] 6578 strh w0, [x20, 4] 6579 strh w0, [x21, 8] 6580 ldr x0, [x19, 3400] 6581 strh w1, [x20] 6582 lsl w1, w1, 10 6583 str w1, [x19, 3716] 6584 str w1, [x0, 4] 6585 mov w1, w2 6586 ldr x0, [x19, 3400] 6587 bl FlashEraseBlocks 6588.L848: 6589 add x23, x19, 3712 6590 mov w3, 1 6591 mov x0, x23 6592 mov w2, w3 6593 mov w1, w3 6594 bl FlashProgPages 6595 ldrh w0, [x20, 2] 6596 add w0, w0, 1 6597 strh w0, [x20, 2] 6598 ldr w0, [x19, 3712] 6599 cmn w0, #1 6600 bne .L849 6601 ldr w1, [x19, 3716] 6602 add w22, w22, 1 6603 and w22, w22, 65535 6604 mov x0, x26 6605 bl sftl_printk 6606 cmp w22, 3 6607 bls .L847 6608 ldr w1, [x19, 3716] 6609 adrp x0, .LC102 6610 mov w2, w22 6611 add x0, x0, :lo12:.LC102 6612 bl sftl_printk 6613.L851: 6614 b .L851 6615.L846: 6616 ldrh w2, [x19, 3624] 6617 add x4, x22, x20, lsl 3 6618 ldr x0, [x1, 8] 6619 ldr x1, [x4, 32] 6620 mul w3, w2, w20 6621 lsl w2, w2, 2 6622 add x20, x20, 1 6623 add x0, x0, w3, sxtw 2 6624 bl ftl_memcpy 6625 b .L845 6626.L849: 6627 add w24, w24, 1 6628 cmp w24, 1 6629 ble .L847 6630 cmp w0, 256 6631 beq .L847 6632 mov w0, 0 6633 ldp x19, x20, [sp, 16] 6634 ldp x21, x22, [sp, 32] 6635 ldp x23, x24, [sp, 48] 6636 ldp x25, x26, [sp, 64] 6637 ldp x29, x30, [sp], 80 6638 hint 29 // autiasp 6639 ret 6640 .size FtlBbmTblFlush, .-FtlBbmTblFlush 6641 .align 2 6642 .global allocate_data_superblock 6643 .type allocate_data_superblock, %function 6644allocate_data_superblock: 6645 hint 34 // bti c 6646 .section __patchable_function_entries 6647 .align 3 6648 .8byte .LPFE80 6649 .text 6650.LPFE80: 6651 nop 6652 nop 6653 hint 25 // paciasp 6654 stp x29, x30, [sp, -112]! 6655 mov x29, sp 6656 stp x19, x20, [sp, 16] 6657 adrp x19, .LANCHOR0 6658 add x19, x19, :lo12:.LANCHOR0 6659 mov x20, x0 6660 stp x23, x24, [sp, 48] 6661 adrp x23, .LANCHOR1 6662 add x23, x23, :lo12:.LANCHOR1 6663 stp x25, x26, [sp, 64] 6664 add x25, x19, 128 6665 stp x21, x22, [sp, 32] 6666 stp x27, x28, [sp, 80] 6667.L857: 6668 ldrh w1, [x19, 2584] 6669 ldrh w0, [x19, 228] 6670 add w0, w0, w1 6671 ldrh w1, [x19, 244] 6672 cmp w0, w1 6673 ble .L858 6674 adrp x0, .LC9 6675 add x1, x23, 271 6676 add x0, x0, :lo12:.LC9 6677 mov w2, 2667 6678 bl sftl_printk 6679.L858: 6680 cmp x20, x25 6681 bne .L883 6682 ldrh w1, [x19, 228] 6683 mov w2, 65535 6684 ldr w0, [x19, 3236] 6685 mul w0, w1, w0 6686 lsr w1, w1, 1 6687 add w0, w1, w0, lsr 2 6688 and w1, w0, 65535 6689 cmp w2, w0, uxth 6690 csel w1, w1, wzr, ne 6691.L859: 6692 add x0, x19, 2592 6693 bl List_pop_index_node 6694 and w22, w0, 65535 6695 ldrh w0, [x19, 228] 6696 cbnz w0, .L860 6697 adrp x0, .LC9 6698 add x1, x23, 271 6699 add x0, x0, :lo12:.LC9 6700 mov w2, 2676 6701 bl sftl_printk 6702.L860: 6703 ldrh w0, [x19, 228] 6704 sub w0, w0, #1 6705 strh w0, [x19, 228] 6706 ldrh w0, [x19, 244] 6707 cmp w0, w22 6708 bls .L857 6709 ldr x0, [x19, 72] 6710 ubfiz x24, x22, 1, 16 6711 ldrh w21, [x0, x24] 6712 cbnz w21, .L857 6713 strh w22, [x20] 6714 mov x0, x20 6715 bl make_superblock 6716 ldrb w0, [x20, 7] 6717 cbnz w0, .L862 6718 ldr x0, [x19, 72] 6719 mov w1, -1 6720 strh w1, [x0, x24] 6721 mov w0, w22 6722 bl INSERT_DATA_LIST 6723 ldrh w1, [x19, 2584] 6724 ldrh w0, [x19, 228] 6725 add w0, w0, w1 6726 ldrh w1, [x19, 244] 6727 cmp w0, w1 6728 ble .L857 6729 add x1, x23, 271 6730 mov w2, 2690 6731 adrp x0, .LC9 6732 add x0, x0, :lo12:.LC9 6733 bl sftl_printk 6734 b .L857 6735.L883: 6736 mov w1, 0 6737 b .L859 6738.L862: 6739 ldrh w1, [x19, 2584] 6740 ldrh w0, [x19, 228] 6741 add w0, w0, w1 6742 ldrh w1, [x19, 244] 6743 cmp w0, w1 6744 ble .L864 6745 adrp x0, .LC9 6746 add x1, x23, 271 6747 add x0, x0, :lo12:.LC9 6748 mov w2, 2693 6749 bl sftl_printk 6750.L864: 6751 ldrh w3, [x19, 236] 6752 add x4, x20, 16 6753 mov x0, 0 6754 mov w5, 65535 6755.L865: 6756 cmp w3, w0, uxth 6757 bhi .L867 6758 cbnz w21, .L868 6759 adrp x0, .LC9 6760 add x1, x23, 271 6761 add x0, x0, :lo12:.LC9 6762 mov w2, 2704 6763 bl sftl_printk 6764.L868: 6765 ldrh w0, [x19, 176] 6766 cmp w0, w22 6767 bne .L869 6768 adrp x0, .LC9 6769 add x1, x23, 271 6770 add x0, x0, :lo12:.LC9 6771 mov w2, 2706 6772 bl sftl_printk 6773.L869: 6774 ldrb w2, [x20, 8] 6775 ldr x0, [x19, 2600] 6776 ldrh w1, [x0, x24] 6777 cbnz w2, .L870 6778 cbz w1, .L884 6779 ldrh w2, [x19, 296] 6780 add w1, w1, w2 6781 and w1, w1, 65535 6782.L871: 6783 strh w1, [x0, x24] 6784 ldr w0, [x19, 2668] 6785 add w0, w0, 1 6786 str w0, [x19, 2668] 6787.L872: 6788 ldr x0, [x19, 2600] 6789 ldr w1, [x19, 2684] 6790 ldrh w0, [x0, x24] 6791 cmp w0, w1 6792 bls .L873 6793 str w0, [x19, 2684] 6794.L873: 6795 ldr w1, [x19, 2672] 6796 ldrh w0, [x19, 296] 6797 ldr w2, [x19, 2668] 6798 madd w0, w0, w2, w1 6799 ldrh w1, [x19, 244] 6800 udiv w0, w0, w1 6801 ldr x1, [x19, 3544] 6802 str w0, [x19, 2676] 6803 ldr w0, [x1, 16] 6804 add w0, w0, 1 6805 str w0, [x1, 16] 6806 mov x1, 0 6807.L874: 6808 ldr x0, [x19, 3400] 6809 cmp w21, w1, uxth 6810 bhi .L875 6811 ldrb w1, [x20, 8] 6812 mov w2, w21 6813 mov x26, 0 6814 mov w27, 0 6815 bl FlashEraseBlocks 6816 add x2, x20, 16 6817.L876: 6818 cmp w21, w26, uxth 6819 bhi .L878 6820 cmp w27, 0 6821 ble .L879 6822 mov w0, w22 6823 bl update_multiplier_value 6824 bl FtlBbmTblFlush 6825.L879: 6826 ldrb w0, [x20, 7] 6827 cbnz w0, .L880 6828 ldr x0, [x19, 72] 6829 mov w1, -1 6830 strh w1, [x0, x24] 6831 b .L857 6832.L867: 6833 ldr x1, [x19, 3400] 6834 add x2, x1, x0, lsl 5 6835 stp xzr, xzr, [x2, 8] 6836 ldrh w2, [x4, x0, lsl 1] 6837 cmp w2, w5 6838 beq .L866 6839 ubfiz x6, x21, 5, 16 6840 add w21, w21, 1 6841 add x1, x1, x6 6842 and w21, w21, 65535 6843 lsl w2, w2, 10 6844 str w2, [x1, 4] 6845.L866: 6846 add x0, x0, 1 6847 b .L865 6848.L884: 6849 mov w1, 2 6850 b .L871 6851.L870: 6852 add w1, w1, 1 6853 strh w1, [x0, x24] 6854 ldr w0, [x19, 2672] 6855 add w0, w0, 1 6856 str w0, [x19, 2672] 6857 b .L872 6858.L875: 6859 add x0, x0, x1, lsl 5 6860 add x1, x1, 1 6861 ldr w2, [x0, 4] 6862 and w2, w2, -1024 6863 str w2, [x0, 4] 6864 b .L874 6865.L878: 6866 ldr x1, [x19, 3400] 6867 lsl x0, x26, 5 6868 ldr w28, [x1, x0] 6869 add x3, x1, x26, lsl 5 6870 cmn w28, #1 6871 bne .L877 6872 ldr w0, [x3, 4] 6873 add w27, w27, 1 6874 str x2, [sp, 104] 6875 ubfx x0, x0, 10, 16 6876 bl FtlBbmMapBadBlock 6877 ldr x2, [sp, 104] 6878 strh w28, [x2, x26, lsl 1] 6879 ldrb w0, [x20, 7] 6880 sub w0, w0, #1 6881 strb w0, [x20, 7] 6882.L877: 6883 add x26, x26, 1 6884 b .L876 6885.L880: 6886 ldrh w1, [x19, 306] 6887 strh w22, [x20] 6888 strh wzr, [x20, 2] 6889 strb wzr, [x20, 6] 6890 mul w0, w0, w1 6891 ldr w1, [x19, 2660] 6892 str w1, [x20, 12] 6893 and w0, w0, 65535 6894 add w1, w1, 1 6895 strh w0, [x20, 4] 6896 str w1, [x19, 2660] 6897 ldr x1, [x19, 72] 6898 ldrh w2, [x20] 6899 strh w0, [x1, x2, lsl 1] 6900 ldrh w0, [x20, 4] 6901 cbz w0, .L881 6902 ldrb w0, [x20, 7] 6903 cbnz w0, .L882 6904.L881: 6905 adrp x1, .LANCHOR1 6906 add x1, x1, :lo12:.LANCHOR1 6907 adrp x0, .LC9 6908 add x1, x1, 271 6909 add x0, x0, :lo12:.LC9 6910 mov w2, 2759 6911 bl sftl_printk 6912.L882: 6913 mov w0, 0 6914 ldp x19, x20, [sp, 16] 6915 ldp x21, x22, [sp, 32] 6916 ldp x23, x24, [sp, 48] 6917 ldp x25, x26, [sp, 64] 6918 ldp x27, x28, [sp, 80] 6919 ldp x29, x30, [sp], 112 6920 hint 29 // autiasp 6921 ret 6922 .size allocate_data_superblock, .-allocate_data_superblock 6923 .section .rodata.str1.1 6924.LC103: 6925 .string "FtlGcFreeBadSuperBlk 0x%x\n" 6926 .text 6927 .align 2 6928 .global FtlGcFreeBadSuperBlk 6929 .type FtlGcFreeBadSuperBlk, %function 6930FtlGcFreeBadSuperBlk: 6931 hint 34 // bti c 6932 .section __patchable_function_entries 6933 .align 3 6934 .8byte .LPFE81 6935 .text 6936.LPFE81: 6937 nop 6938 nop 6939 hint 25 // paciasp 6940 stp x29, x30, [sp, -96]! 6941 mov x29, sp 6942 stp x19, x20, [sp, 16] 6943 adrp x19, .LANCHOR0 6944 add x19, x19, :lo12:.LANCHOR0 6945 stp x25, x26, [sp, 64] 6946 and w25, w0, 65535 6947 ldrh w0, [x19, 3312] 6948 stp x21, x22, [sp, 32] 6949 stp x23, x24, [sp, 48] 6950 str x27, [sp, 80] 6951 cbnz w0, .L896 6952.L891: 6953 mov w0, 0 6954 ldp x19, x20, [sp, 16] 6955 ldp x21, x22, [sp, 32] 6956 ldp x23, x24, [sp, 48] 6957 ldp x25, x26, [sp, 64] 6958 ldr x27, [sp, 80] 6959 ldp x29, x30, [sp], 96 6960 hint 29 // autiasp 6961 ret 6962.L895: 6963 add x0, x19, 264 6964 mov w1, w25 6965 mov w20, 0 6966 ldrb w0, [x0, w21, sxtw] 6967 bl V2P_block 6968 and w22, w0, 65535 6969.L892: 6970 ldrh w0, [x19, 3312] 6971 cmp w0, w20 6972 bhi .L894 6973 add w21, w21, 1 6974 and w21, w21, 65535 6975.L890: 6976 ldrh w0, [x19, 236] 6977 cmp w0, w21 6978 bhi .L895 6979 bl FtlGcReFreshBadBlk 6980 b .L891 6981.L894: 6982 ldrh w0, [x24, w20, sxtw 1] 6983 add w27, w20, 1 6984 cmp w0, w22 6985 bne .L893 6986 mov w1, w22 6987 mov x0, x26 6988 bl sftl_printk 6989 mov w0, w22 6990 bl FtlBbmMapBadBlock 6991 bl FtlBbmTblFlush 6992 ldrh w23, [x19, 3312] 6993 add x1, x24, w27, sxtw 1 6994 add x0, x24, w20, uxth 1 6995 cmp w20, w23 6996 sub w2, w23, w20 6997 sub w23, w23, #1 6998 ubfiz x2, x2, 1, 16 6999 csel x2, x2, xzr, ls 7000 bl memmove 7001 strh w23, [x19, 3312] 7002.L893: 7003 and w20, w27, 65535 7004 b .L892 7005.L896: 7006 adrp x26, .LC103 7007 add x24, x19, 3314 7008 add x26, x26, :lo12:.LC103 7009 mov w21, 0 7010 b .L890 7011 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk 7012 .align 2 7013 .global update_vpc_list 7014 .type update_vpc_list, %function 7015update_vpc_list: 7016 hint 34 // bti c 7017 .section __patchable_function_entries 7018 .align 3 7019 .8byte .LPFE82 7020 .text 7021.LPFE82: 7022 nop 7023 nop 7024 hint 25 // paciasp 7025 stp x29, x30, [sp, -32]! 7026 mov x29, sp 7027 stp x19, x20, [sp, 16] 7028 adrp x19, .LANCHOR0 7029 add x19, x19, :lo12:.LANCHOR0 7030 and w20, w0, 65535 7031 ubfiz x0, x0, 1, 16 7032 ldr x1, [x19, 72] 7033 ldrh w0, [x1, x0] 7034 cbnz w0, .L899 7035 ldrh w0, [x19, 226] 7036 cmp w0, w20 7037 bne .L900 7038 mov w0, -1 7039 strh w0, [x19, 226] 7040.L900: 7041 ldrh w0, [x19, 224] 7042 cmp w0, w20 7043 bne .L901 7044 mov w0, -1 7045 strh w0, [x19, 224] 7046.L901: 7047 ldrh w0, [x19, 176] 7048 cmp w0, w20 7049 bne .L902 7050 mov w0, -1 7051 strh w0, [x19, 176] 7052.L903: 7053 mov w1, w20 7054 add x0, x19, 2568 7055 bl List_remove_node 7056 ldrh w0, [x19, 2584] 7057 cbnz w0, .L905 7058 adrp x1, .LANCHOR1 7059 add x1, x1, :lo12:.LANCHOR1 7060 adrp x0, .LC9 7061 add x1, x1, 296 7062 add x0, x0, :lo12:.LC9 7063 mov w2, 2835 7064 bl sftl_printk 7065.L905: 7066 ldrh w0, [x19, 2584] 7067 sub w0, w0, #1 7068 strh w0, [x19, 2584] 7069 mov w0, w20 7070 bl free_data_superblock 7071 mov w0, w20 7072 bl FtlGcFreeBadSuperBlk 7073 ldrh w1, [x19, 2584] 7074 ldrh w0, [x19, 228] 7075 add w0, w0, w1 7076 ldrh w1, [x19, 244] 7077 cmp w0, w1 7078 ble .L909 7079 adrp x1, .LANCHOR1 7080 add x1, x1, :lo12:.LANCHOR1 7081 adrp x0, .LC9 7082 add x1, x1, 296 7083 add x0, x0, :lo12:.LC9 7084 mov w2, 2838 7085 bl sftl_printk 7086.L909: 7087 mov w0, 1 7088 b .L898 7089.L902: 7090 ldrh w0, [x19, 24] 7091 cmp w0, w20 7092 beq .L908 7093 ldrh w0, [x19, 80] 7094 cmp w0, w20 7095 beq .L908 7096 ldrh w0, [x19, 128] 7097 cmp w0, w20 7098 bne .L903 7099.L908: 7100 mov w0, 0 7101.L898: 7102 ldp x19, x20, [sp, 16] 7103 ldp x29, x30, [sp], 32 7104 hint 29 // autiasp 7105 ret 7106.L899: 7107 mov w0, w20 7108 bl List_update_data_list 7109 b .L908 7110 .size update_vpc_list, .-update_vpc_list 7111 .section .rodata.str1.1 7112.LC104: 7113 .string "decrement_vpc_count %x = %d\n" 7114 .text 7115 .align 2 7116 .global decrement_vpc_count 7117 .type decrement_vpc_count, %function 7118decrement_vpc_count: 7119 hint 34 // bti c 7120 .section __patchable_function_entries 7121 .align 3 7122 .8byte .LPFE83 7123 .text 7124.LPFE83: 7125 nop 7126 nop 7127 hint 25 // paciasp 7128 stp x29, x30, [sp, -48]! 7129 mov w1, 65535 7130 mov x29, sp 7131 stp x19, x20, [sp, 16] 7132 cmp w1, w0, uxth 7133 adrp x19, .LANCHOR0 7134 str x21, [sp, 32] 7135 and w20, w0, 65535 7136 add x19, x19, :lo12:.LANCHOR0 7137 beq .L912 7138 ldr x1, [x19, 72] 7139 ubfiz x21, x20, 1, 16 7140 ldrh w0, [x1, x21] 7141 cbnz w0, .L913 7142 mov w1, w20 7143 mov w2, 0 7144 adrp x0, .LC104 7145 add x0, x0, :lo12:.LC104 7146 bl sftl_printk 7147 ldr x0, [x19, 72] 7148 ldrh w0, [x0, x21] 7149 cbz w0, .L914 7150.L919: 7151 mov w21, 0 7152.L911: 7153 mov w0, w21 7154 ldp x19, x20, [sp, 16] 7155 ldr x21, [sp, 32] 7156 ldp x29, x30, [sp], 48 7157 hint 29 // autiasp 7158 ret 7159.L914: 7160 adrp x1, .LANCHOR1 7161 add x1, x1, :lo12:.LANCHOR1 7162 add x1, x1, 312 7163 mov w2, 2853 7164 adrp x0, .LC9 7165 add x0, x0, :lo12:.LC9 7166 bl sftl_printk 7167 b .L919 7168.L913: 7169 sub w0, w0, #1 7170 strh w0, [x1, x21] 7171.L912: 7172 ldrh w0, [x19, 3698] 7173 mov w1, 65535 7174 cmp w0, w1 7175 bne .L916 7176 strh w20, [x19, 3698] 7177 b .L919 7178.L916: 7179 cmp w0, w20 7180 beq .L919 7181 bl update_vpc_list 7182 cmp w0, 0 7183 ldr x1, [x19, 2560] 7184 strh w20, [x19, 3698] 7185 ldr x0, [x19, 2568] 7186 cset w21, ne 7187 sub x0, x0, x1 7188 mov x1, -6148914691236517206 7189 movk x1, 0xaaab, lsl 0 7190 asr x0, x0, 1 7191 mul x0, x0, x1 7192 ldr x1, [x19, 72] 7193 and x2, x0, 65535 7194 ldrh w1, [x1, x2, lsl 1] 7195 cbnz w1, .L911 7196 cmp w20, w0, uxth 7197 beq .L911 7198 adrp x1, .LANCHOR1 7199 add x1, x1, :lo12:.LANCHOR1 7200 add x1, x1, 312 7201 mov w2, 2869 7202 adrp x0, .LC9 7203 add x0, x0, :lo12:.LC9 7204 bl sftl_printk 7205 b .L911 7206 .size decrement_vpc_count, .-decrement_vpc_count 7207 .align 2 7208 .global FtlSuperblockPowerLostFix 7209 .type FtlSuperblockPowerLostFix, %function 7210FtlSuperblockPowerLostFix: 7211 hint 34 // bti c 7212 .section __patchable_function_entries 7213 .align 3 7214 .8byte .LPFE84 7215 .text 7216.LPFE84: 7217 nop 7218 nop 7219 hint 25 // paciasp 7220 stp x29, x30, [sp, -96]! 7221 mov x29, sp 7222 stp x19, x20, [sp, 16] 7223 adrp x20, .LANCHOR0 7224 add x20, x20, :lo12:.LANCHOR0 7225 stp x21, x22, [sp, 32] 7226 mov x19, x0 7227 mrs x0, sp_el0 7228 ldr x1, [x0, 1376] 7229 str x1, [sp, 88] 7230 mov x1, 0 7231 mov w0, -1 7232 ldr x22, [x20, 3512] 7233 str w0, [sp, 80] 7234 ldr x0, [x20, 3448] 7235 str x0, [sp, 64] 7236 mov x0, -3 7237 str x22, [sp, 72] 7238 movk x0, 0xfffe, lsl 32 7239 str x0, [x22, 8] 7240 mov w1, 61589 7241 ldrh w0, [x19] 7242 strh wzr, [x22] 7243 strh w0, [x22, 2] 7244 ldr x0, [x20, 3448] 7245 str w1, [x0] 7246 mov w1, 22136 7247 movk w1, 0x1234, lsl 16 7248 ldr x0, [x20, 3448] 7249 str w1, [x0, 4] 7250 ldrh w21, [x19, 4] 7251 and w21, w21, 1 7252 add w21, w21, 6 7253.L921: 7254 ldrh w0, [x19, 4] 7255 cbz w21, .L923 7256 cbnz w0, .L922 7257.L923: 7258 ldrh w0, [x19] 7259 ldr x2, [x20, 72] 7260 lsl x0, x0, 1 7261 ldrh w3, [x19, 4] 7262 ldrh w1, [x2, x0] 7263 sub w1, w1, w3 7264 strh w1, [x2, x0] 7265 strh wzr, [x19, 4] 7266 ldrh w0, [x20, 306] 7267 strh w0, [x19, 2] 7268 mrs x0, sp_el0 7269 strb wzr, [x19, 6] 7270 ldr x1, [sp, 88] 7271 ldr x2, [x0, 1376] 7272 subs x1, x1, x2 7273 mov x2, 0 7274 beq .L927 7275 bl __stack_chk_fail 7276.L922: 7277 mov x0, x19 7278 bl get_new_active_ppa 7279 str w0, [sp, 60] 7280 cmn w0, #1 7281 beq .L923 7282 ldr w0, [x20, 2664] 7283 mov w3, 0 7284 str w0, [x22, 4] 7285 mov w2, 0 7286 cmn w0, #2 7287 mov w1, 1 7288 csinc w0, wzr, w0, eq 7289 str w0, [x20, 2664] 7290 add x0, sp, 56 7291 sub w21, w21, #1 7292 bl FlashProgPages 7293 ldrh w0, [x19] 7294 bl decrement_vpc_count 7295 b .L921 7296.L927: 7297 ldp x19, x20, [sp, 16] 7298 ldp x21, x22, [sp, 32] 7299 ldp x29, x30, [sp], 96 7300 hint 29 // autiasp 7301 ret 7302 .size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix 7303 .align 2 7304 .global FtlMakeBbt 7305 .type FtlMakeBbt, %function 7306FtlMakeBbt: 7307 hint 34 // bti c 7308 .section __patchable_function_entries 7309 .align 3 7310 .8byte .LPFE85 7311 .text 7312.LPFE85: 7313 nop 7314 nop 7315 hint 25 // paciasp 7316 stp x29, x30, [sp, -96]! 7317 mov x29, sp 7318 stp x19, x20, [sp, 16] 7319 adrp x19, .LANCHOR0 7320 add x19, x19, :lo12:.LANCHOR0 7321 stp x23, x24, [sp, 48] 7322 add x24, x19, 360 7323 add x20, x19, 3712 7324 stp x25, x26, [sp, 64] 7325 mov x25, x24 7326 mov w23, 0 7327 stp x27, x28, [sp, 80] 7328 mov w27, 65535 7329 mov w28, -3872 7330 stp x21, x22, [sp, 32] 7331 bl FtlBbtMemInit 7332 bl FtlLoadFactoryBbt 7333.L934: 7334 ldrh w0, [x19, 258] 7335 cmp w0, w23 7336 bhi .L940 7337 mov w20, 0 7338.L941: 7339 ldrh w0, [x19, 318] 7340 cmp w0, w20 7341 bhi .L942 7342 ldrh w20, [x19, 372] 7343 add x21, x19, 360 7344 mov w22, 65535 7345 sub w20, w20, #1 7346 and w20, w20, 65535 7347.L943: 7348 ldrh w0, [x21, 12] 7349 sub w0, w0, #48 7350 cmp w20, w0 7351 ble .L947 7352 mov w0, w20 7353 bl FtlBbmIsBadBlock 7354 cmp w0, 1 7355 beq .L944 7356 mov w0, w20 7357 bl FlashTestBlk 7358 cbz w0, .L945 7359 mov w0, w20 7360 bl FtlBbmMapBadBlock 7361.L944: 7362 sub w20, w20, #1 7363 and w20, w20, 65535 7364 b .L943 7365.L940: 7366 ldrh w1, [x25, 12] 7367 ldr x0, [x19, 3448] 7368 ldr x26, [x19, 3512] 7369 stp x0, x26, [x20, 8] 7370 cmp w1, w27 7371 beq .L935 7372 ldrh w22, [x19, 302] 7373 mov w2, 1 7374 madd w22, w22, w23, w1 7375 mov w1, w2 7376 lsl w0, w22, 10 7377 str w0, [x20, 4] 7378 mov x0, x20 7379 bl FlashReadPages 7380 ldrh w2, [x19, 302] 7381 ldr x1, [x20, 8] 7382 add w2, w2, 7 7383 ldr x0, [x24, 32] 7384 lsr w2, w2, 3 7385 bl ftl_memcpy 7386.L936: 7387 mov w0, w22 7388 add w23, w23, 1 7389 add x24, x24, 8 7390 add x25, x25, 2 7391 bl FtlBbmMapBadBlock 7392 b .L934 7393.L935: 7394 mov w1, w23 7395 bl FlashGetBadBlockList 7396 ldr x0, [x20, 8] 7397 ldr x1, [x24, 32] 7398 bl FtlBbt2Bitmap 7399 ldrh w21, [x19, 302] 7400.L938: 7401 sub w21, w21, #1 7402 and w21, w21, 65535 7403.L937: 7404 ldrh w0, [x19, 302] 7405 madd w0, w23, w0, w21 7406 bl FtlBbmIsBadBlock 7407 cmp w0, 1 7408 beq .L938 7409 ldr x0, [x19, 3512] 7410 strh w21, [x25, 12] 7411 mov w2, 16 7412 mov w1, 0 7413 bl ftl_memset 7414 ldr x0, [x19, 3448] 7415 mov w2, 4096 7416 mov w1, 0 7417 bl ftl_memset 7418 strh w28, [x26] 7419 str wzr, [x26, 4] 7420 ldrh w22, [x19, 302] 7421 ldrh w0, [x25, 12] 7422 strh w0, [x26, 2] 7423 ldrh w2, [x19, 3624] 7424 ldr x1, [x24, 32] 7425 madd w22, w22, w23, w0 7426 lsl w2, w2, 2 7427 lsl w0, w22, 10 7428 str w0, [x20, 4] 7429 ldr x0, [x20, 8] 7430 bl ftl_memcpy 7431 mov w2, 1 7432 mov x0, x20 7433 mov w1, w2 7434 bl FlashEraseBlocks 7435 mov w3, 1 7436 mov x0, x20 7437 mov w1, w3 7438 mov w2, w3 7439 bl FlashProgPages 7440 ldr w1, [x20] 7441 and w0, w22, 65535 7442 cmn w1, #1 7443 bne .L936 7444 bl FtlBbmMapBadBlock 7445 b .L937 7446.L942: 7447 mov w0, w20 7448 add w20, w20, 1 7449 and w20, w20, 65535 7450 bl FtlBbmMapBadBlock 7451 b .L941 7452.L945: 7453 ldrh w0, [x21] 7454 cmp w0, w22 7455 bne .L946 7456 strh w20, [x21] 7457 b .L944 7458.L946: 7459 strh w20, [x21, 4] 7460.L947: 7461 ldr x1, [x19, 3400] 7462 str wzr, [x19, 368] 7463 ldrh w0, [x19, 360] 7464 mov w2, 2 7465 strh wzr, [x19, 362] 7466 lsl w0, w0, 10 7467 str w0, [x1, 4] 7468 ldr x0, [x19, 3400] 7469 ldrh w1, [x19, 364] 7470 lsl w1, w1, 10 7471 str w1, [x0, 36] 7472 mov w1, 1 7473 bl FlashEraseBlocks 7474 ldrh w0, [x19, 360] 7475 bl FtlBbmMapBadBlock 7476 ldrh w0, [x19, 364] 7477 bl FtlBbmMapBadBlock 7478 bl FtlBbmTblFlush 7479 strh wzr, [x19, 362] 7480 ldr w0, [x19, 368] 7481 ldrh w1, [x19, 364] 7482 add w0, w0, 1 7483 str w0, [x19, 368] 7484 ldrh w0, [x19, 360] 7485 strh w1, [x19, 360] 7486 strh w0, [x19, 364] 7487 bl FtlBbmTblFlush 7488 mov w0, 0 7489 ldp x19, x20, [sp, 16] 7490 ldp x21, x22, [sp, 32] 7491 ldp x23, x24, [sp, 48] 7492 ldp x25, x26, [sp, 64] 7493 ldp x27, x28, [sp, 80] 7494 ldp x29, x30, [sp], 96 7495 hint 29 // autiasp 7496 ret 7497 .size FtlMakeBbt, .-FtlMakeBbt 7498 .align 2 7499 .global ftl_memcmp 7500 .type ftl_memcmp, %function 7501ftl_memcmp: 7502 hint 34 // bti c 7503 .section __patchable_function_entries 7504 .align 3 7505 .8byte .LPFE86 7506 .text 7507.LPFE86: 7508 nop 7509 nop 7510 hint 25 // paciasp 7511 stp x29, x30, [sp, -16]! 7512 uxtw x2, w2 7513 mov x29, sp 7514 bl memcmp 7515 ldp x29, x30, [sp], 16 7516 hint 29 // autiasp 7517 ret 7518 .size ftl_memcmp, .-ftl_memcmp 7519 .align 2 7520 .global js_hash 7521 .type js_hash, %function 7522js_hash: 7523 hint 34 // bti c 7524 .section __patchable_function_entries 7525 .align 3 7526 .8byte .LPFE87 7527 .text 7528.LPFE87: 7529 nop 7530 nop 7531 mov x4, x0 7532 mov w0, 42982 7533 mov x3, 0 7534 movk w0, 0x47c6, lsl 16 7535 hint 25 // paciasp 7536.L956: 7537 cmp w1, w3 7538 bhi .L957 7539 hint 29 // autiasp 7540 ret 7541.L957: 7542 ldrb w5, [x4, x3] 7543 lsr w2, w0, 2 7544 add w2, w2, w0, lsl 5 7545 add x3, x3, 1 7546 add w2, w2, w5 7547 eor w0, w0, w2 7548 b .L956 7549 .size js_hash, .-js_hash 7550 .section .rodata.str1.1 7551.LC105: 7552 .string "FtlMapWritePage error = %x \n" 7553.LC106: 7554 .string "FtlMapWritePage error = %x error count = %d\n" 7555 .text 7556 .align 2 7557 .global FtlMapWritePage 7558 .type FtlMapWritePage, %function 7559FtlMapWritePage: 7560 hint 34 // bti c 7561 .section __patchable_function_entries 7562 .align 3 7563 .8byte .LPFE88 7564 .text 7565.LPFE88: 7566 nop 7567 nop 7568 hint 25 // paciasp 7569 stp x29, x30, [sp, -96]! 7570 mov x29, sp 7571 stp x23, x24, [sp, 48] 7572 mov w24, w1 7573 stp x19, x20, [sp, 16] 7574 adrp x20, .LANCHOR0 7575 add x20, x20, :lo12:.LANCHOR0 7576 mov x19, x0 7577 stp x21, x22, [sp, 32] 7578 add x21, x20, 3712 7579 stp x25, x26, [sp, 64] 7580 adrp x25, .LANCHOR1 7581 mov x26, x2 7582 add x25, x25, :lo12:.LANCHOR1 7583 stp x27, x28, [sp, 80] 7584 ubfiz x27, x24, 2, 32 7585 mov w22, 0 7586.L960: 7587 ldr w0, [x20, 2644] 7588 add w0, w0, 1 7589 str w0, [x20, 2644] 7590 ldrh w0, [x20, 308] 7591 ldrh w1, [x19, 2] 7592 sub w0, w0, #1 7593 cmp w1, w0 7594 bge .L961 7595 ldrh w1, [x19] 7596 mov w0, 65535 7597 cmp w1, w0 7598 bne .L962 7599.L961: 7600 mov x0, x19 7601 bl Ftl_write_map_blk_to_last_page 7602.L962: 7603 ldrh w1, [x19] 7604 ldr x0, [x19, 16] 7605 ldrh w0, [x0, x1, lsl 1] 7606 cbnz w0, .L963 7607 adrp x0, .LC9 7608 add x1, x25, 332 7609 add x0, x0, :lo12:.LC9 7610 mov w2, 700 7611 bl sftl_printk 7612.L963: 7613 ldrh w1, [x19] 7614 ldrh w0, [x19, 10] 7615 cmp w1, w0 7616 bcc .L964 7617 adrp x0, .LC9 7618 add x1, x25, 332 7619 add x0, x0, :lo12:.LC9 7620 mov w2, 701 7621 bl sftl_printk 7622.L964: 7623 ldrh w1, [x19] 7624 mov w2, 16 7625 ldr x0, [x19, 16] 7626 ldrh w28, [x0, x1, lsl 1] 7627 mov w1, 0 7628 ldrh w0, [x19, 2] 7629 str x26, [x21, 8] 7630 orr w0, w0, w28, lsl 10 7631 str w0, [x21, 4] 7632 ldr x0, [x20, 3512] 7633 str x0, [x21, 16] 7634 bl ftl_memset 7635 ldr x23, [x21, 16] 7636 ldr w0, [x19, 48] 7637 str w0, [x23, 4] 7638 strh w24, [x23, 8] 7639 ldrh w0, [x19, 4] 7640 strh w0, [x23] 7641 strh w28, [x23, 2] 7642 ldrh w1, [x20, 314] 7643 ldr x0, [x21, 8] 7644 bl js_hash 7645 str w0, [x23, 12] 7646 mov w3, 1 7647 mov x0, x21 7648 mov w1, w3 7649 mov w2, w3 7650 bl FlashProgPages 7651 ldrh w0, [x19, 2] 7652 add w0, w0, 1 7653 strh w0, [x19, 2] 7654 ldp w0, w1, [x21] 7655 cmn w0, #1 7656 bne .L965 7657 adrp x0, .LC105 7658 add x0, x0, :lo12:.LC105 7659 bl sftl_printk 7660 add w22, w22, 1 7661 ldrh w0, [x19, 2] 7662 and w22, w22, 65535 7663 cmp w0, 2 7664 bhi .L966 7665 ldrh w0, [x20, 308] 7666 sub w0, w0, #1 7667 strh w0, [x19, 2] 7668.L966: 7669 cmp w22, 3 7670 bls .L967 7671 ldr w1, [x20, 3716] 7672 adrp x0, .LC106 7673 mov w2, w22 7674 add x0, x0, :lo12:.LC106 7675 bl sftl_printk 7676.L968: 7677 b .L968 7678.L967: 7679 ldr w0, [x19, 52] 7680 cbz w0, .L960 7681.L970: 7682 b .L970 7683.L965: 7684 ldr x0, [x19, 40] 7685 str w1, [x0, x27] 7686 ldrh w0, [x19, 2] 7687 cmp w0, 1 7688 beq .L971 7689 ldr w0, [x21] 7690 cmp w0, 256 7691 beq .L971 7692 ldr w1, [x19, 56] 7693 cbz w1, .L972 7694.L971: 7695 str wzr, [x19, 56] 7696 b .L960 7697.L972: 7698 cmn w0, #1 7699 bne .L973 7700 adrp x1, .LANCHOR1 7701 add x1, x1, :lo12:.LANCHOR1 7702 adrp x0, .LC9 7703 add x1, x1, 332 7704 add x0, x0, :lo12:.LC9 7705 mov w2, 745 7706 bl sftl_printk 7707.L973: 7708 mov w0, 0 7709 ldp x19, x20, [sp, 16] 7710 ldp x21, x22, [sp, 32] 7711 ldp x23, x24, [sp, 48] 7712 ldp x25, x26, [sp, 64] 7713 ldp x27, x28, [sp, 80] 7714 ldp x29, x30, [sp], 96 7715 hint 29 // autiasp 7716 ret 7717 .size FtlMapWritePage, .-FtlMapWritePage 7718 .section .rodata.str1.1 7719.LC107: 7720 .string "region_id = %x phyAddr = %x\n" 7721.LC108: 7722 .string "map_ppn:" 7723.LC109: 7724 .string "load_l2p_region refresh = %x phyAddr = %x\n" 7725 .text 7726 .align 2 7727 .global load_l2p_region 7728 .type load_l2p_region, %function 7729load_l2p_region: 7730 hint 34 // bti c 7731 .section __patchable_function_entries 7732 .align 3 7733 .8byte .LPFE89 7734 .text 7735.LPFE89: 7736 nop 7737 nop 7738 hint 25 // paciasp 7739 stp x29, x30, [sp, -64]! 7740 mov x29, sp 7741 stp x19, x20, [sp, 16] 7742 adrp x19, .LANCHOR0 7743 add x19, x19, :lo12:.LANCHOR0 7744 and w20, w1, 65535 7745 stp x21, x22, [sp, 32] 7746 and w21, w0, 65535 7747 ldrh w1, [x19, 340] 7748 stp x23, x24, [sp, 48] 7749 cmp w1, w0, uxth 7750 bcs .L985 7751 adrp x1, .LANCHOR1 7752 add x1, x1, :lo12:.LANCHOR1 7753 adrp x0, .LC9 7754 add x1, x1, 348 7755 add x0, x0, :lo12:.LC9 7756 mov w2, 485 7757 bl sftl_printk 7758.L985: 7759 ldr x1, [x19, 3600] 7760 ubfiz x0, x21, 2, 16 7761 ubfiz x20, x20, 4, 16 7762 ldr w23, [x1, x0] 7763 ldr x0, [x19, 2608] 7764 add x0, x0, x20 7765 ldr x0, [x0, 8] 7766 cbnz w23, .L986 7767 ldrh w2, [x19, 314] 7768 mov w1, 255 7769 bl ftl_memset 7770 ldr x0, [x19, 2608] 7771 strh w21, [x0, x20] 7772 ldr x0, [x19, 2608] 7773 add x20, x0, x20 7774 str wzr, [x20, 4] 7775.L987: 7776 mov w0, 0 7777 ldp x19, x20, [sp, 16] 7778 ldp x21, x22, [sp, 32] 7779 ldp x23, x24, [sp, 48] 7780 ldp x29, x30, [sp], 64 7781 hint 29 // autiasp 7782 ret 7783.L986: 7784 add x22, x19, 3712 7785 str x0, [x19, 3720] 7786 ldr x0, [x19, 3512] 7787 mov w2, 1 7788 mov w1, w2 7789 str w23, [x19, 3716] 7790 str x0, [x19, 3728] 7791 mov x0, x22 7792 bl FlashReadPages 7793 ldr x24, [x19, 3728] 7794 ldrh w0, [x24, 8] 7795 cmp w0, w21 7796 beq .L988 7797 mov w2, w23 7798 mov w1, w21 7799 adrp x0, .LC107 7800 add x0, x0, :lo12:.LC107 7801 bl sftl_printk 7802 ldr x1, [x19, 3728] 7803 mov w3, 4 7804 adrp x0, .LC95 7805 mov w2, w3 7806 add x0, x0, :lo12:.LC95 7807 bl rknand_print_hex 7808 ldrh w3, [x19, 340] 7809 adrp x0, .LC108 7810 ldr x1, [x19, 3600] 7811 add x0, x0, :lo12:.LC108 7812 mov w2, 4 7813 bl rknand_print_hex 7814.L989: 7815 ldrh w0, [x24, 8] 7816 cmp w0, w21 7817 beq .L991 7818 adrp x1, .LANCHOR1 7819 add x1, x1, :lo12:.LANCHOR1 7820 adrp x0, .LC9 7821 add x1, x1, 348 7822 add x0, x0, :lo12:.LC9 7823 mov w2, 508 7824 bl sftl_printk 7825.L991: 7826 ldr x0, [x19, 2608] 7827 add x0, x0, x20 7828 str wzr, [x0, 4] 7829 ldr x0, [x19, 2608] 7830 strh w21, [x0, x20] 7831 b .L987 7832.L988: 7833 ldr w0, [x19, 3712] 7834 cmp w0, 256 7835 bne .L991 7836 mov w2, w23 7837 mov w1, w21 7838 adrp x0, .LC109 7839 add x0, x0, :lo12:.LC109 7840 bl sftl_printk 7841 ldr x0, [x19, 2608] 7842 mov w1, w21 7843 add x0, x0, x20 7844 ldr x2, [x0, 8] 7845 add x0, x19, 3632 7846 bl FtlMapWritePage 7847 b .L989 7848 .size load_l2p_region, .-load_l2p_region 7849 .align 2 7850 .global ftl_map_blk_gc 7851 .type ftl_map_blk_gc, %function 7852ftl_map_blk_gc: 7853 hint 34 // bti c 7854 .section __patchable_function_entries 7855 .align 3 7856 .8byte .LPFE90 7857 .text 7858.LPFE90: 7859 nop 7860 nop 7861 hint 25 // paciasp 7862 stp x29, x30, [sp, -96]! 7863 mov x29, sp 7864 stp x19, x20, [sp, 16] 7865 mov x19, x0 7866 adrp x20, .LANCHOR0 7867 stp x21, x22, [sp, 32] 7868 add x20, x20, :lo12:.LANCHOR0 7869 stp x23, x24, [sp, 48] 7870 stp x25, x26, [sp, 64] 7871 str x27, [sp, 80] 7872 ldr x21, [x0, 16] 7873 ldr x24, [x0, 40] 7874 bl ftl_free_no_use_map_blk 7875 ldrh w1, [x19, 10] 7876 ldrh w2, [x19, 8] 7877 sub w1, w1, #5 7878 cmp w2, w1 7879 blt .L995 7880 ubfiz x0, x0, 1, 16 7881 ldrh w25, [x21, x0] 7882 cbz w25, .L995 7883 ldr w1, [x19, 52] 7884 cbnz w1, .L995 7885 mov w1, 1 7886 str w1, [x19, 52] 7887 strh wzr, [x21, x0] 7888 ldrh w0, [x19, 8] 7889 ldrh w1, [x19, 2] 7890 sub w0, w0, #1 7891 strh w0, [x19, 8] 7892 ldrh w0, [x20, 308] 7893 cmp w1, w0 7894 bcc .L996 7895 mov x0, x19 7896 bl ftl_map_blk_alloc_new_blk 7897.L996: 7898 adrp x22, .LANCHOR1 7899 add x22, x22, :lo12:.LANCHOR1 7900 adrp x26, .LC9 7901 add x22, x22, 364 7902 add x26, x26, :lo12:.LC9 7903 mov w21, 0 7904.L997: 7905 ldrh w0, [x19, 6] 7906 cmp w0, w21 7907 bhi .L1004 7908 mov w0, w25 7909 mov w1, 1 7910 bl FtlFreeSysBlkQueueIn 7911 str wzr, [x19, 52] 7912.L995: 7913 ldrh w1, [x19, 2] 7914 ldrh w0, [x20, 308] 7915 cmp w1, w0 7916 bcc .L1005 7917 mov x0, x19 7918 bl ftl_map_blk_alloc_new_blk 7919.L1005: 7920 mov w0, 0 7921 ldp x19, x20, [sp, 16] 7922 ldp x21, x22, [sp, 32] 7923 ldp x23, x24, [sp, 48] 7924 ldp x25, x26, [sp, 64] 7925 ldr x27, [sp, 80] 7926 ldp x29, x30, [sp], 96 7927 hint 29 // autiasp 7928 ret 7929.L1004: 7930 ubfiz x1, x21, 2, 16 7931 add x27, x24, x1 7932 ldr w0, [x24, x1] 7933 cmp w25, w0, lsr 10 7934 bne .L998 7935 add x0, x20, 3712 7936 ldr x2, [x20, 3456] 7937 ldr x23, [x20, 3512] 7938 stp x2, x23, [x0, 8] 7939 mov w2, 1 7940 ldr w1, [x24, x1] 7941 str w1, [x0, 4] 7942 mov w1, w2 7943 bl FlashReadPages 7944 ldrh w0, [x23, 8] 7945 cmp w0, w21 7946 beq .L999 7947 mov x1, x22 7948 mov x0, x26 7949 mov w2, 611 7950 bl sftl_printk 7951.L999: 7952 ldr w1, [x20, 3712] 7953 add x0, x20, 3712 7954 cmn w1, #1 7955 bne .L1000 7956.L1002: 7957 str wzr, [x27] 7958.L1001: 7959 b .L1001 7960.L1000: 7961 ldrh w1, [x23, 8] 7962 cmp w1, w21 7963 bne .L1002 7964 ldrh w2, [x23] 7965 ldrh w1, [x19, 4] 7966 cmp w2, w1 7967 bne .L1002 7968 ldr x2, [x0, 8] 7969 mov w1, w21 7970 mov x0, x19 7971 bl FtlMapWritePage 7972.L998: 7973 add w21, w21, 1 7974 and w21, w21, 65535 7975 b .L997 7976 .size ftl_map_blk_gc, .-ftl_map_blk_gc 7977 .align 2 7978 .global Ftl_write_map_blk_to_last_page 7979 .type Ftl_write_map_blk_to_last_page, %function 7980Ftl_write_map_blk_to_last_page: 7981 hint 34 // bti c 7982 .section __patchable_function_entries 7983 .align 3 7984 .8byte .LPFE91 7985 .text 7986.LPFE91: 7987 nop 7988 nop 7989 hint 25 // paciasp 7990 stp x29, x30, [sp, -64]! 7991 mov w1, 65535 7992 mov x29, sp 7993 stp x19, x20, [sp, 16] 7994 mov x19, x0 7995 stp x21, x22, [sp, 32] 7996 str x23, [sp, 48] 7997 ldr x20, [x0, 16] 7998 ldrh w0, [x0] 7999 cmp w0, w1 8000 bne .L1012 8001 ldrh w0, [x19, 8] 8002 cbz w0, .L1013 8003 adrp x1, .LANCHOR1 8004 add x1, x1, :lo12:.LANCHOR1 8005 adrp x0, .LC9 8006 add x1, x1, 379 8007 add x0, x0, :lo12:.LC9 8008 mov w2, 641 8009 bl sftl_printk 8010.L1013: 8011 ldrh w0, [x19, 8] 8012 add w0, w0, 1 8013 strh w0, [x19, 8] 8014 bl FtlFreeSysBlkQueueOut 8015 strh w0, [x20] 8016 str wzr, [x19] 8017 ldr w0, [x19, 48] 8018 add w0, w0, 1 8019 str w0, [x19, 48] 8020.L1014: 8021 mov w0, 0 8022 ldp x19, x20, [sp, 16] 8023 ldp x21, x22, [sp, 32] 8024 ldr x23, [sp, 48] 8025 ldp x29, x30, [sp], 64 8026 hint 29 // autiasp 8027 ret 8028.L1012: 8029 ubfiz x0, x0, 1, 16 8030 ldrh w1, [x19, 2] 8031 ldr x23, [x19, 40] 8032 ldrh w22, [x20, x0] 8033 adrp x20, .LANCHOR0 8034 add x20, x20, :lo12:.LANCHOR0 8035 ldr w0, [x19, 48] 8036 orr w1, w1, w22, lsl 10 8037 ldr x21, [x20, 3512] 8038 str w1, [x20, 3716] 8039 ldr x1, [x20, 3448] 8040 str x1, [x20, 3720] 8041 str x21, [x20, 3728] 8042 mov w1, 255 8043 str w0, [x21, 4] 8044 mov w0, -1291 8045 strh w0, [x21, 8] 8046 ldrh w0, [x19, 4] 8047 strh w0, [x21] 8048 strh w22, [x21, 2] 8049 ldrh w2, [x20, 308] 8050 ldr x0, [x20, 3448] 8051 lsl w2, w2, 3 8052 bl ftl_memset 8053 mov w2, 0 8054 mov w0, 0 8055.L1015: 8056 ldrh w1, [x19, 6] 8057 cmp w1, w0 8058 bhi .L1017 8059 ldrh w1, [x20, 314] 8060 add x22, x20, 3712 8061 ldr x0, [x20, 3720] 8062 bl js_hash 8063 str w0, [x21, 12] 8064 mov w2, 1 8065 mov x0, x22 8066 mov w1, w2 8067 mov w3, 0 8068 bl FlashProgPages 8069 ldrh w0, [x19, 2] 8070 add w0, w0, 1 8071 strh w0, [x19, 2] 8072 mov x0, x19 8073 bl ftl_map_blk_gc 8074 b .L1014 8075.L1017: 8076 ubfiz x3, x0, 2, 16 8077 ldr w1, [x23, x3] 8078 cmp w22, w1, lsr 10 8079 bne .L1016 8080 add w1, w2, 1 8081 ldr x5, [x20, 3448] 8082 ubfiz x4, x1, 3, 16 8083 and w2, w1, 65535 8084 ubfiz x1, x1, 3, 16 8085 add x1, x1, 4 8086 str w0, [x5, x4] 8087 ldr w4, [x23, x3] 8088 ldr x3, [x20, 3448] 8089 str w4, [x3, x1] 8090.L1016: 8091 add w0, w0, 1 8092 and w0, w0, 65535 8093 b .L1015 8094 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page 8095 .align 2 8096 .global flush_l2p_region 8097 .type flush_l2p_region, %function 8098flush_l2p_region: 8099 hint 34 // bti c 8100 .section __patchable_function_entries 8101 .align 3 8102 .8byte .LPFE92 8103 .text 8104.LPFE92: 8105 nop 8106 nop 8107 hint 25 // paciasp 8108 stp x29, x30, [sp, -32]! 8109 mov x29, sp 8110 stp x19, x20, [sp, 16] 8111 adrp x19, .LANCHOR0 8112 add x19, x19, :lo12:.LANCHOR0 8113 ubfiz x20, x0, 4, 16 8114 ldr x0, [x19, 2608] 8115 add x1, x0, x20 8116 ldr x2, [x1, 8] 8117 ldrh w1, [x0, x20] 8118 add x0, x19, 3632 8119 bl FtlMapWritePage 8120 ldr x0, [x19, 2608] 8121 add x0, x0, x20 8122 ldr w1, [x0, 4] 8123 and w1, w1, 2147483647 8124 str w1, [x0, 4] 8125 mov w0, 0 8126 ldp x19, x20, [sp, 16] 8127 ldp x29, x30, [sp], 32 8128 hint 29 // autiasp 8129 ret 8130 .size flush_l2p_region, .-flush_l2p_region 8131 .align 2 8132 .global log2phys 8133 .type log2phys, %function 8134log2phys: 8135 hint 34 // bti c 8136 .section __patchable_function_entries 8137 .align 3 8138 .8byte .LPFE93 8139 .text 8140.LPFE93: 8141 nop 8142 nop 8143 hint 25 // paciasp 8144 stp x29, x30, [sp, -80]! 8145 mov x29, sp 8146 stp x19, x20, [sp, 16] 8147 adrp x20, .LANCHOR0 8148 add x20, x20, :lo12:.LANCHOR0 8149 stp x21, x22, [sp, 32] 8150 mov w21, w0 8151 mov x22, x1 8152 ldrh w19, [x20, 312] 8153 stp x23, x24, [sp, 48] 8154 mov w23, w2 8155 add w0, w19, 7 8156 mov x19, 1 8157 str x25, [sp, 64] 8158 lsr w24, w21, w0 8159 and w24, w24, 65535 8160 lsl x19, x19, x0 8161 ldr w0, [x20, 2624] 8162 sub w19, w19, #1 8163 and w19, w19, w21 8164 and w19, w19, 65535 8165 cmp w0, w21 8166 bhi .L1025 8167 adrp x1, .LANCHOR1 8168 add x1, x1, :lo12:.LANCHOR1 8169 add x1, x1, 410 8170 mov w2, 820 8171 adrp x0, .LC9 8172 add x0, x0, :lo12:.LC9 8173 bl sftl_printk 8174 ldr w0, [x20, 2624] 8175 cmp w0, w21 8176 bhi .L1025 8177 mov w0, -1 8178 cbnz w23, .L1024 8179 str w0, [x22] 8180.L1024: 8181 ldp x19, x20, [sp, 16] 8182 ldp x21, x22, [sp, 32] 8183 ldp x23, x24, [sp, 48] 8184 ldr x25, [sp, 64] 8185 ldp x29, x30, [sp], 80 8186 hint 29 // autiasp 8187 ret 8188.L1031: 8189 add x0, x0, 1 8190 lsl x3, x0, 4 8191 ldrh w3, [x1, x3] 8192 cmp w3, w24 8193 bne .L1027 8194.L1028: 8195 ldr x0, [x20, 2608] 8196 ubfiz x2, x25, 4, 16 8197 ubfiz x19, x19, 2, 16 8198 add x0, x0, x2 8199 ldr x0, [x0, 8] 8200 cbnz w23, .L1029 8201 ldr w0, [x0, x19] 8202 str w0, [x22] 8203.L1030: 8204 ldr x0, [x20, 2608] 8205 add x0, x0, x2 8206 ldr w1, [x0, 4] 8207 cmn w1, #1 8208 beq .L1034 8209 add w1, w1, 1 8210 str w1, [x0, 4] 8211.L1034: 8212 mov w0, 0 8213 b .L1024 8214.L1029: 8215 ldr w1, [x22] 8216 str w1, [x0, x19] 8217 strh w24, [x20, 2616] 8218 ldr x1, [x20, 2608] 8219 add x1, x1, x2 8220 ldr w0, [x1, 4] 8221 orr w0, w0, -2147483648 8222 str w0, [x1, 4] 8223 b .L1030 8224.L1025: 8225 ldr x1, [x20, 2608] 8226 mov x0, 0 8227 ldrh w2, [x20, 342] 8228 sub x1, x1, #16 8229.L1027: 8230 and w25, w0, 65535 8231 cmp w2, w0, uxth 8232 bhi .L1031 8233 bl select_l2p_ram_region 8234 and w25, w0, 65535 8235 mov w21, w25 8236 ldr x2, [x20, 2608] 8237 ubfiz x1, x21, 4, 16 8238 add x3, x2, x1 8239 ldrh w2, [x2, x1] 8240 mov w1, 65535 8241 cmp w2, w1 8242 beq .L1032 8243 ldr w1, [x3, 4] 8244 tbz w1, #31, .L1032 8245 bl flush_l2p_region 8246.L1032: 8247 mov w1, w21 8248 mov w0, w24 8249 bl load_l2p_region 8250 b .L1028 8251 .size log2phys, .-log2phys 8252 .align 2 8253 .global FtlWriteDump_data 8254 .type FtlWriteDump_data, %function 8255FtlWriteDump_data: 8256 hint 34 // bti c 8257 .section __patchable_function_entries 8258 .align 3 8259 .8byte .LPFE94 8260 .text 8261.LPFE94: 8262 nop 8263 nop 8264 hint 25 // paciasp 8265 stp x29, x30, [sp, -112]! 8266 mrs x0, sp_el0 8267 mov x29, sp 8268 stp x19, x20, [sp, 16] 8269 adrp x19, .LANCHOR0 8270 add x19, x19, :lo12:.LANCHOR0 8271 stp x21, x22, [sp, 32] 8272 str x23, [sp, 48] 8273 ldrh w2, [x19, 28] 8274 ldr x1, [x0, 1376] 8275 str x1, [sp, 104] 8276 mov x1, 0 8277 cbz w2, .L1038 8278 ldrb w1, [x19, 32] 8279 cbnz w1, .L1038 8280 ldrb w1, [x19, 31] 8281 ldrh w3, [x19, 306] 8282 mul w1, w1, w3 8283 cmp w2, w1 8284 beq .L1038 8285 ldrb w0, [x19, 34] 8286 cbnz w0, .L1037 8287 ldr w22, [x19, 2624] 8288 add x1, sp, 68 8289 ldrh w21, [x19, 236] 8290 mov w2, 0 8291 sub w22, w22, #1 8292 mov w0, w22 8293 bl log2phys 8294 ldr x20, [x19, 3512] 8295 str w22, [sp, 96] 8296 ldr w0, [sp, 68] 8297 ldr x1, [x19, 3448] 8298 str w0, [sp, 76] 8299 stp x1, x20, [sp, 80] 8300 str wzr, [x20, 4] 8301 cmn w0, #1 8302 beq .L1040 8303 add x0, sp, 72 8304 mov w2, 0 8305 mov w1, 1 8306 bl FlashReadPages 8307.L1041: 8308 lsl w21, w21, 2 8309 add x23, x19, 24 8310 mov w0, -3947 8311 strh w0, [x20] 8312.L1042: 8313 cbnz w21, .L1046 8314.L1043: 8315 mov w0, 1 8316 strb w0, [x19, 34] 8317.L1037: 8318 mrs x0, sp_el0 8319 ldr x1, [sp, 104] 8320 ldr x2, [x0, 1376] 8321 subs x1, x1, x2 8322 mov x2, 0 8323 beq .L1048 8324 bl __stack_chk_fail 8325.L1040: 8326 ldrh w2, [x19, 314] 8327 mov w1, 255 8328 ldr x0, [x19, 3448] 8329 bl ftl_memset 8330 b .L1041 8331.L1046: 8332 ldrh w0, [x23, 4] 8333 cbz w0, .L1043 8334 ldr w0, [sp, 76] 8335 sub w21, w21, #1 8336 stp w22, w0, [x20, 8] 8337 ldrh w0, [x23] 8338 strh w0, [x20, 2] 8339 mov x0, x23 8340 bl get_new_active_ppa 8341 str w0, [sp, 76] 8342 ldr w0, [x19, 2664] 8343 mov w3, 0 8344 str w0, [x20, 4] 8345 mov w2, 0 8346 cmn w0, #2 8347 mov w1, 1 8348 csinc w0, wzr, w0, eq 8349 str w0, [x19, 2664] 8350 add x0, sp, 72 8351 bl FlashProgPages 8352 ldrh w0, [x23] 8353 bl decrement_vpc_count 8354 b .L1042 8355.L1038: 8356 strb wzr, [x19, 34] 8357 b .L1037 8358.L1048: 8359 ldp x19, x20, [sp, 16] 8360 ldp x21, x22, [sp, 32] 8361 ldr x23, [sp, 48] 8362 ldp x29, x30, [sp], 112 8363 hint 29 // autiasp 8364 ret 8365 .size FtlWriteDump_data, .-FtlWriteDump_data 8366 .align 2 8367 .global FtlReUsePrevPpa 8368 .type FtlReUsePrevPpa, %function 8369FtlReUsePrevPpa: 8370 hint 34 // bti c 8371 .section __patchable_function_entries 8372 .align 3 8373 .8byte .LPFE95 8374 .text 8375.LPFE95: 8376 nop 8377 nop 8378 hint 25 // paciasp 8379 stp x29, x30, [sp, -64]! 8380 mov x29, sp 8381 stp x19, x20, [sp, 16] 8382 adrp x19, .LANCHOR0 8383 add x19, x19, :lo12:.LANCHOR0 8384 stp x21, x22, [sp, 32] 8385 mov w21, w0 8386 ubfx x0, x1, 10, 16 8387 str w1, [sp, 60] 8388 bl P2V_block_in_plane 8389 and w4, w0, 65535 8390 mov w22, w4 8391 ldr x0, [x19, 72] 8392 ubfiz x20, x22, 1, 16 8393 ldrh w3, [x0, x20] 8394 cbnz w3, .L1057 8395 ldr x2, [x19, 2592] 8396 cbz x2, .L1058 8397 ldr x0, [x19, 2560] 8398 mov x5, -6148914691236517206 8399 movk x5, 0xaaab, lsl 0 8400 ldrh w1, [x19, 228] 8401 sub x2, x2, x0 8402 mov w6, 65535 8403 asr x2, x2, 1 8404 mul x2, x2, x5 8405 mov w5, 6 8406 and w2, w2, 65535 8407.L1059: 8408 cmp w3, w1 8409 beq .L1058 8410 cmp w2, w4 8411 bne .L1060 8412 mov w1, w22 8413 add x0, x19, 2592 8414 bl List_remove_node 8415 ldrh w0, [x19, 228] 8416 cbnz w0, .L1061 8417 adrp x1, .LANCHOR1 8418 add x1, x1, :lo12:.LANCHOR1 8419 adrp x0, .LC9 8420 add x1, x1, 419 8421 add x0, x0, :lo12:.LC9 8422 mov w2, 1742 8423 bl sftl_printk 8424.L1061: 8425 ldrh w0, [x19, 228] 8426 sub w0, w0, #1 8427 strh w0, [x19, 228] 8428 mov w0, w22 8429 bl INSERT_DATA_LIST 8430 ldr x1, [x19, 72] 8431 ldrh w0, [x1, x20] 8432 add w0, w0, 1 8433 strh w0, [x1, x20] 8434.L1058: 8435 add x1, sp, 60 8436 mov w0, w21 8437 mov w2, 1 8438 bl log2phys 8439 ldp x19, x20, [sp, 16] 8440 ldp x21, x22, [sp, 32] 8441 ldp x29, x30, [sp], 64 8442 hint 29 // autiasp 8443 ret 8444.L1060: 8445 umull x2, w2, w5 8446 ldrh w2, [x0, x2] 8447 cmp w2, w6 8448 beq .L1058 8449 add w3, w3, 1 8450 and w3, w3, 65535 8451 b .L1059 8452.L1057: 8453 add w3, w3, 1 8454 strh w3, [x0, x20] 8455 b .L1058 8456 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa 8457 .section .rodata.str1.1 8458.LC110: 8459 .string "data prev_ppa = %x error...................\n" 8460.LC111: 8461 .string "spuer block %x vpn is 0\n " 8462 .text 8463 .align 2 8464 .global FtlRecoverySuperblock 8465 .type FtlRecoverySuperblock, %function 8466FtlRecoverySuperblock: 8467 hint 34 // bti c 8468 .section __patchable_function_entries 8469 .align 3 8470 .8byte .LPFE96 8471 .text 8472.LPFE96: 8473 nop 8474 nop 8475 hint 25 // paciasp 8476 stp x29, x30, [sp, -192]! 8477 mov x29, sp 8478 stp x19, x20, [sp, 16] 8479 mov x20, x0 8480 mrs x0, sp_el0 8481 stp x21, x22, [sp, 32] 8482 stp x23, x24, [sp, 48] 8483 stp x25, x26, [sp, 64] 8484 stp x27, x28, [sp, 80] 8485 ldr x1, [x0, 1376] 8486 str x1, [sp, 184] 8487 mov x1, 0 8488 ldrh w0, [x20] 8489 mov w1, 65535 8490 cmp w0, w1 8491 beq .L1069 8492 adrp x19, .LANCHOR0 8493 add x19, x19, :lo12:.LANCHOR0 8494 ldrb w0, [x20, 6] 8495 ldrh w24, [x20, 2] 8496 str w0, [sp, 152] 8497 ldrh w0, [x19, 306] 8498 cmp w0, w24 8499 bne .L1070 8500 strh w0, [x20, 2] 8501 strh wzr, [x20, 4] 8502.L1191: 8503 strb wzr, [x20, 6] 8504.L1069: 8505 mrs x0, sp_el0 8506 ldr x1, [sp, 184] 8507 ldr x2, [x0, 1376] 8508 subs x1, x1, x2 8509 mov x2, 0 8510 beq .L1135 8511 bl __stack_chk_fail 8512.L1070: 8513 ldrh w0, [x20, 16] 8514 mov w21, 0 8515.L1071: 8516 cmp w0, w1 8517 beq .L1072 8518 mov w1, 1 8519 bl FtlGetLastWrittenPage 8520 mov w26, w0 8521 cmn w0, #1 8522 beq .L1073 8523 ldrh w6, [x19, 236] 8524 add x9, x20, 16 8525 ldrh w7, [x19, 314] 8526 mov x1, 0 8527 ldrh w8, [x19, 316] 8528 mov w22, 0 8529 mov w10, 65535 8530 mov w4, 4 8531.L1074: 8532 ldr x0, [x19, 3424] 8533 cmp w6, w1, uxth 8534 bhi .L1078 8535 mov w2, 0 8536 mov w1, w22 8537 bl FlashReadPages 8538 ldr w21, [x19, 2664] 8539 ldr x28, [x19, 3424] 8540 and w4, w26, 65535 8541 sub w21, w21, #1 8542 mov w25, 65535 8543 mov x2, x28 8544 mov w27, 0 8545.L1079: 8546 cmp w22, w27 8547 bne .L1084 8548 add w23, w26, 1 8549 ldr w0, [x28, 4] 8550 and w23, w23, 65535 8551.L1186: 8552 ubfx x0, x0, 10, 16 8553 bl P2V_plane 8554 and w22, w0, 65535 8555 ldrh w0, [x19, 306] 8556 cmp w0, w23 8557 bne .L1086 8558 strh w23, [x20, 2] 8559 strh wzr, [x20, 4] 8560 strb wzr, [x20, 6] 8561.L1086: 8562 ldr w0, [sp, 152] 8563 cmp w23, w24 8564 ccmp w22, w0, 0, eq 8565 bne .L1087 8566.L1192: 8567 mov w2, w22 8568 mov w1, w23 8569 mov x0, x20 8570 bl ftl_sb_update_avl_pages 8571 b .L1069 8572.L1072: 8573 add w0, w21, 1 8574 and w21, w0, 65535 8575 add x0, x20, w0, uxth 1 8576 ldrh w0, [x0, 16] 8577 b .L1071 8578.L1073: 8579 cbz w24, .L1075 8580 adrp x1, .LANCHOR1 8581 add x1, x1, :lo12:.LANCHOR1 8582 adrp x0, .LC9 8583 add x1, x1, 435 8584 add x0, x0, :lo12:.LC9 8585 mov w2, 1809 8586 bl sftl_printk 8587.L1075: 8588 ldr w0, [sp, 152] 8589 cmp w0, 0 8590 ccmp w21, w0, 4, ne 8591 beq .L1076 8592 adrp x1, .LANCHOR1 8593 add x1, x1, :lo12:.LANCHOR1 8594 adrp x0, .LC9 8595 add x1, x1, 435 8596 add x0, x0, :lo12:.LC9 8597 mov w2, 1810 8598 bl sftl_printk 8599.L1076: 8600 strh wzr, [x20, 2] 8601 b .L1191 8602.L1078: 8603 ldrh w3, [x9, x1, lsl 1] 8604 cmp w3, w10 8605 beq .L1077 8606 ubfiz x5, x22, 5, 16 8607 orr w3, w26, w3, lsl 10 8608 add x0, x0, x5 8609 str w3, [x0, 4] 8610 mul w0, w22, w7 8611 ldr x2, [x19, 3424] 8612 sdiv w0, w0, w4 8613 ldr x3, [x19, 3256] 8614 add x2, x2, x5 8615 add x0, x3, w0, sxtw 2 8616 str x0, [x2, 8] 8617 mul w0, w22, w8 8618 add w22, w22, 1 8619 ldr x3, [x19, 3264] 8620 and w22, w22, 65535 8621 sdiv w0, w0, w4 8622 add x0, x3, w0, sxtw 2 8623 str x0, [x2, 16] 8624.L1077: 8625 add x1, x1, 1 8626 b .L1074 8627.L1084: 8628 ldr w0, [x2] 8629 cbnz w0, .L1080 8630 ldr x3, [x2, 16] 8631 ldr w23, [x3, 4] 8632 cmn w23, #1 8633 beq .L1081 8634 ldr w1, [x19, 2664] 8635 mov w0, w23 8636 stp x3, x2, [sp, 96] 8637 str w4, [sp, 112] 8638 bl ftl_cmp_data_ver 8639 ldr w4, [sp, 112] 8640 ldp x3, x2, [sp, 96] 8641 cbz w0, .L1081 8642 add w23, w23, 1 8643 str w23, [x19, 2664] 8644.L1081: 8645 ldr w0, [x3] 8646 cmn w0, #1 8647 bne .L1083 8648 ubfiz x27, x27, 5, 16 8649 and w23, w26, 65535 8650 add x27, x28, x27 8651 ldr w0, [x27, 4] 8652 b .L1186 8653.L1080: 8654 mov w25, w4 8655.L1083: 8656 add w27, w27, 1 8657 add x2, x2, 32 8658 and w27, w27, 65535 8659 b .L1079 8660.L1087: 8661 mov w0, 65535 8662 cmp w25, w0 8663 bne .L1088 8664 ldrb w0, [x20, 8] 8665 cbnz w0, .L1089 8666.L1088: 8667 ldr w0, [x19, 3708] 8668 and w27, w26, 65535 8669 cmn w0, #1 8670 bne .L1090 8671 str w21, [x19, 3708] 8672.L1090: 8673 add w0, w24, 7 8674 sub w25, w26, #7 8675 and w25, w25, 65535 8676 cmp w0, w26, uxth 8677 csel w25, w25, w24, lt 8678 add x4, x20, 16 8679 mov w28, 65535 8680.L1092: 8681 ldrh w3, [x19, 236] 8682 cmp w25, w27 8683 bls .L1137 8684 mov w0, -1 8685 str w0, [x19, 3708] 8686.L1089: 8687 mov w0, 1 8688 mov w27, w24 8689 strh w0, [x19, 3744] 8690 adrp x0, .LANCHOR1 8691 add x0, x0, :lo12:.LANCHOR1 8692 add x0, x0, 435 8693 str x0, [sp, 120] 8694.L1100: 8695 ldrh w3, [x19, 236] 8696 add x4, x20, 16 8697 mov x1, 0 8698 mov w28, 0 8699 mov w5, 65535 8700.L1101: 8701 ldr x0, [x19, 3424] 8702 cmp w3, w1, uxth 8703 bhi .L1103 8704 mov w1, w28 8705 mov w2, 0 8706 bl FlashReadPages 8707 str xzr, [sp, 96] 8708 adrp x0, .LC111 8709 add x0, x0, :lo12:.LC111 8710 str x0, [sp, 128] 8711.L1104: 8712 ldrh w0, [sp, 96] 8713 cmp w28, w0, uxth 8714 bhi .L1131 8715 ldrh w1, [x19, 306] 8716 add w0, w27, 1 8717 and w27, w0, 65535 8718 cmp w1, w0, uxth 8719 bne .L1100 8720 ldrh w2, [x19, 236] 8721 add x3, x20, 14 8722 mov x0, 0 8723 mov w4, 65535 8724 strh w27, [x20, 2] 8725 strh wzr, [x20, 4] 8726.L1132: 8727 cmp w2, w0, uxth 8728 bls .L1069 8729 add x1, x0, 1 8730 ldrh w5, [x3, x1, lsl 1] 8731 cmp w5, w4 8732 beq .L1138 8733 strb w0, [x20, 6] 8734 b .L1069 8735.L1094: 8736 ldrh w2, [x4, x1, lsl 1] 8737 cmp w2, w28 8738 beq .L1093 8739 ubfiz x5, x26, 5, 16 8740 add w26, w26, 1 8741 add x0, x0, x5 8742 and w26, w26, 65535 8743 orr w2, w25, w2, lsl 10 8744 str w2, [x0, 4] 8745.L1093: 8746 add x1, x1, 1 8747.L1099: 8748 ldr x0, [x19, 3424] 8749 cmp w3, w1, uxth 8750 bhi .L1094 8751 mov w1, w26 8752 mov w2, 0 8753 str x4, [sp, 96] 8754 bl FlashReadPages 8755 ldr x0, [x19, 3424] 8756 mov w1, 32 8757 ldr x4, [sp, 96] 8758 umaddl x1, w1, w26, x0 8759.L1095: 8760 cmp x1, x0 8761 bne .L1098 8762 add w25, w25, 1 8763 and w25, w25, 65535 8764 b .L1092 8765.L1137: 8766 mov x1, 0 8767 mov w26, 0 8768 b .L1099 8769.L1098: 8770 ldr w2, [x0] 8771 cbnz w2, .L1089 8772 ldr x2, [x0, 16] 8773 ldrh w3, [x2] 8774 cmp w3, w28 8775 beq .L1097 8776 ldr w2, [x2, 4] 8777 cmn w2, #1 8778 beq .L1097 8779 str w2, [x19, 3708] 8780.L1097: 8781 add x0, x0, 32 8782 b .L1095 8783.L1103: 8784 ldrh w2, [x4, x1, lsl 1] 8785 cmp w2, w5 8786 beq .L1102 8787 ubfiz x6, x28, 5, 16 8788 add w28, w28, 1 8789 add x0, x0, x6 8790 and w28, w28, 65535 8791 orr w2, w27, w2, lsl 10 8792 str w2, [x0, 4] 8793.L1102: 8794 add x1, x1, 1 8795 b .L1101 8796.L1131: 8797 ldr x0, [sp, 96] 8798 ldr x2, [x19, 3424] 8799 lsl x26, x0, 5 8800 add x1, x2, x0, lsl 5 8801 stp x1, x2, [sp, 104] 8802 ldr w25, [x1, 4] 8803 str w25, [sp, 180] 8804 cmp w27, w24 8805 bcc .L1105 8806 ubfx x0, x25, 10, 16 8807 bl P2V_plane 8808 ldr w1, [sp, 152] 8809 and w0, w0, 65535 8810 cmp w27, w24 8811 ccmp w1, w0, 0, eq 8812 bhi .L1105 8813 cmp w27, w23 8814 ccmp w22, w0, 0, eq 8815 ldp x1, x2, [sp, 104] 8816 bne .L1106 8817 strh w23, [x20, 2] 8818 strb w22, [x20, 6] 8819 b .L1192 8820.L1106: 8821 ldr w0, [x2, x26] 8822 cmn w0, #1 8823 beq .L1107 8824 ldr x3, [x1, 16] 8825 mov w0, 61589 8826 ldrh w25, [x3] 8827 cmp w25, w0 8828 beq .L1108 8829 ldrh w0, [x20] 8830.L1188: 8831 bl decrement_vpc_count 8832 b .L1105 8833.L1108: 8834 ldr w21, [x3, 4] 8835 cmn w21, #1 8836 beq .L1110 8837 ldr w1, [x19, 2664] 8838 mov w0, w21 8839 str x3, [sp, 104] 8840 bl ftl_cmp_data_ver 8841 ldr x3, [sp, 104] 8842 cbz w0, .L1110 8843 add w0, w21, 1 8844 str w0, [x19, 2664] 8845 ldrh w0, [x3] 8846 cmp w0, w25 8847 beq .L1110 8848 ldr x1, [sp, 120] 8849 mov w2, 1961 8850 adrp x0, .LC9 8851 add x0, x0, :lo12:.LC9 8852 bl sftl_printk 8853 ldr x3, [sp, 104] 8854.L1110: 8855 add x1, sp, 176 8856 ldp w25, w0, [x3, 8] 8857 mov w2, 0 8858 str w0, [sp, 172] 8859 mov w0, w25 8860 bl log2phys 8861 ldr w1, [x19, 3708] 8862 ldr w2, [sp, 172] 8863 cmn w1, #1 8864 beq .L1112 8865 mov w0, w21 8866 str w2, [sp, 104] 8867 bl ftl_cmp_data_ver 8868 ldr w2, [sp, 104] 8869 cbz w0, .L1112 8870 cmn w2, #1 8871 beq .L1113 8872 ldr x0, [x19, 3424] 8873 add x0, x0, x26 8874 str w2, [x0, 4] 8875 mov w2, 0 8876 ldr x1, [x0, 16] 8877 str x1, [sp, 104] 8878 ldr x0, [x19, 3424] 8879 mov w1, 1 8880 add x0, x0, x26 8881 bl FlashReadPages 8882 ldr x2, [x19, 3424] 8883 add x3, x2, x26 8884 ldr w0, [x2, x26] 8885 cmn w0, #1 8886 bne .L1114 8887.L1115: 8888 mov w0, -1 8889 str w0, [sp, 172] 8890.L1122: 8891 ldr w0, [sp, 172] 8892 cmn w0, #1 8893 beq .L1105 8894 ubfx x0, x0, 10, 16 8895 bl P2V_block_in_plane 8896 and w26, w0, 65535 8897 ldrh w0, [x19, 244] 8898 mov w25, w26 8899 cmp w0, w26, uxth 8900 bhi .L1127 8901 ldr x1, [sp, 120] 8902 adrp x0, .LC9 8903 mov w2, 2066 8904 add x0, x0, :lo12:.LC9 8905 bl sftl_printk 8906.L1127: 8907 ldr x1, [x19, 72] 8908 ubfiz x0, x26, 1, 16 8909 ldrh w0, [x1, x0] 8910 cbz w0, .L1128 8911 mov w0, w25 8912 b .L1188 8913.L1113: 8914 ldp w1, w0, [sp, 176] 8915 cmp w1, w0 8916 bne .L1105 8917 add x1, sp, 172 8918 mov w0, w25 8919 mov w2, 1 8920 bl log2phys 8921.L1105: 8922 ldr x0, [sp, 96] 8923 add x0, x0, 1 8924 str x0, [sp, 96] 8925 b .L1104 8926.L1114: 8927 ldr x0, [sp, 104] 8928 ldr w4, [x0, 8] 8929 cmp w4, w25 8930 bne .L1115 8931 ldr w0, [x0, 4] 8932 str w0, [sp, 112] 8933 uxtw x1, w0 8934 ldr w0, [x19, 3708] 8935 stp x3, x2, [sp, 136] 8936 str w4, [sp, 156] 8937 bl ftl_cmp_data_ver 8938 cbz w0, .L1115 8939 ldp w1, w0, [sp, 172] 8940 ldr w5, [sp, 180] 8941 ldr w4, [sp, 156] 8942 cmp w0, w5 8943 ldp x3, x2, [sp, 136] 8944 bne .L1117 8945 mov w0, w4 8946.L1187: 8947 bl FtlReUsePrevPpa 8948 b .L1115 8949.L1117: 8950 cmp w0, w1 8951 beq .L1115 8952 cmn w0, #1 8953 beq .L1118 8954 str w0, [x3, 4] 8955 mov w2, 0 8956 ldr x1, [x3, 16] 8957 str x1, [sp, 104] 8958 ldr x0, [x19, 3424] 8959 mov w1, 1 8960 add x0, x0, x26 8961 bl FlashReadPages 8962.L1119: 8963 adrp x0, .LANCHOR0 8964 add x0, x0, :lo12:.LANCHOR0 8965 ldr x1, [x0, 3424] 8966 ldr w1, [x1, x26] 8967 cmn w1, #1 8968 beq .L1120 8969 ldr x1, [sp, 104] 8970 ldr w0, [x0, 3708] 8971 ldr w26, [x1, 4] 8972 mov w1, w26 8973 bl ftl_cmp_data_ver 8974 cbz w0, .L1120 8975 ldr w0, [sp, 112] 8976 mov w1, w26 8977 bl ftl_cmp_data_ver 8978 cbz w0, .L1115 8979.L1120: 8980 ldr w1, [sp, 172] 8981 mov w0, w25 8982 b .L1187 8983.L1118: 8984 str w0, [x2, x26] 8985 b .L1119 8986.L1112: 8987 ldp w1, w0, [sp, 176] 8988 cmp w1, w0 8989 beq .L1122 8990 cmn w2, #1 8991 beq .L1124 8992 ldr w0, [x19, 252] 8993 cmp w0, w2, lsr 10 8994 bhi .L1124 8995 adrp x0, .LC110 8996 mov w1, w2 8997 add x0, x0, :lo12:.LC110 8998.L1190: 8999 bl sftl_printk 9000 b .L1105 9001.L1124: 9002 add x1, sp, 180 9003 mov w0, w25 9004 mov w2, 1 9005 bl log2phys 9006 ldr w26, [sp, 176] 9007 cmn w26, #1 9008 beq .L1122 9009 ldr w0, [sp, 172] 9010 cmp w26, w0 9011 beq .L1122 9012 ubfx x0, x26, 10, 16 9013 bl P2V_block_in_plane 9014 ldrh w2, [x19, 24] 9015 and w1, w0, 65535 9016 cmp w2, w0, uxth 9017 beq .L1126 9018 ldrh w0, [x19, 80] 9019 cmp w0, w1 9020 beq .L1126 9021 ldrh w0, [x19, 128] 9022 cmp w0, w1 9023 bne .L1122 9024.L1126: 9025 ldr x0, [x19, 3424] 9026 mov w2, 0 9027 mov w1, 1 9028 str w26, [x0, 4] 9029 ldr x3, [x0, 16] 9030 str x3, [sp, 104] 9031 ldr x0, [x19, 3424] 9032 bl FlashReadPages 9033 ldr x0, [x19, 3424] 9034 ldr w0, [x0] 9035 cmn w0, #1 9036 beq .L1122 9037 ldr x3, [sp, 104] 9038 mov w0, w21 9039 ldr w1, [x3, 4] 9040 bl ftl_cmp_data_ver 9041 cbnz w0, .L1122 9042 add x1, sp, 176 9043 mov w0, w25 9044 mov w2, 1 9045 bl log2phys 9046 b .L1122 9047.L1128: 9048 mov w1, w26 9049 ldr x0, [sp, 128] 9050 b .L1190 9051.L1107: 9052 ldr w0, [x19, 3748] 9053 cmp w0, 31 9054 bhi .L1129 9055 add x1, x19, 3752 9056 str w25, [x1, w0, uxtw 2] 9057 add w0, w0, 1 9058 str w0, [x19, 3748] 9059.L1129: 9060 ldrh w0, [x20] 9061 bl decrement_vpc_count 9062 ldr w0, [x19, 3708] 9063 cmn w0, #1 9064 bne .L1130 9065.L1189: 9066 str w21, [x19, 3708] 9067 b .L1105 9068.L1130: 9069 cmp w0, w21 9070 bls .L1105 9071 b .L1189 9072.L1138: 9073 mov x0, x1 9074 b .L1132 9075.L1135: 9076 mov w0, 0 9077 ldp x19, x20, [sp, 16] 9078 ldp x21, x22, [sp, 32] 9079 ldp x23, x24, [sp, 48] 9080 ldp x25, x26, [sp, 64] 9081 ldp x27, x28, [sp, 80] 9082 ldp x29, x30, [sp], 192 9083 hint 29 // autiasp 9084 ret 9085 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock 9086 .section .rodata.str1.1 9087.LC112: 9088 .string "...%s enter...\n" 9089.LC113: 9090 .string "FtlCheckVpc2 %x = %x %x\n" 9091.LC114: 9092 .string "free blk vpc error %x = %x %x\n" 9093 .text 9094 .align 2 9095 .global ftl_check_vpc 9096 .type ftl_check_vpc, %function 9097ftl_check_vpc: 9098 hint 34 // bti c 9099 .section __patchable_function_entries 9100 .align 3 9101 .8byte .LPFE97 9102 .text 9103.LPFE97: 9104 nop 9105 nop 9106 hint 25 // paciasp 9107 stp x29, x30, [sp, -112]! 9108 mrs x0, sp_el0 9109 mov x29, sp 9110 stp x19, x20, [sp, 16] 9111 adrp x20, .LANCHOR0 9112 add x20, x20, :lo12:.LANCHOR0 9113 stp x21, x22, [sp, 32] 9114 mov w19, 0 9115 adrp x22, .LANCHOR1 9116 stp x23, x24, [sp, 48] 9117 add x22, x22, :lo12:.LANCHOR1 9118 adrp x21, check_vpc_table 9119 stp x25, x26, [sp, 64] 9120 add x21, x21, :lo12:check_vpc_table 9121 stp x27, x28, [sp, 80] 9122 ldr x1, [x0, 1376] 9123 str x1, [sp, 104] 9124 mov x1, 0 9125 adrp x0, .LC112 9126 add x1, x22, 457 9127 add x0, x0, :lo12:.LC112 9128 bl sftl_printk 9129 mov x0, x21 9130 mov w2, 8192 9131 mov w1, 0 9132 bl ftl_memset 9133.L1194: 9134 ldr w0, [x20, 2624] 9135 cmp w0, w19 9136 bhi .L1196 9137 adrp x23, .LC113 9138 add x23, x23, :lo12:.LC113 9139 mov w24, 0 9140 mov w19, 0 9141 mov w26, 65535 9142 mov w27, 1 9143.L1197: 9144 ldrh w0, [x20, 244] 9145 cmp w0, w19 9146 bhi .L1199 9147 ldr x19, [x20, 2592] 9148 cbz x19, .L1200 9149 ldr x1, [x20, 2560] 9150 adrp x25, .LC114 9151 ldrh w26, [x20, 228] 9152 add x25, x25, :lo12:.LC114 9153 sub x19, x19, x1 9154 mov x1, -6148914691236517206 9155 movk x1, 0xaaab, lsl 0 9156 mov w23, 0 9157 asr x19, x19, 1 9158 mov w27, 6 9159 mov w28, 65535 9160 mul x19, x19, x1 9161 and w19, w19, 65535 9162.L1201: 9163 cmp w23, w26 9164 bne .L1203 9165.L1200: 9166 cbz w24, .L1193 9167 adrp x0, .LC9 9168 add x1, x22, 457 9169 add x0, x0, :lo12:.LC9 9170 mov w2, 2394 9171 bl sftl_printk 9172.L1193: 9173 mrs x0, sp_el0 9174 ldr x1, [sp, 104] 9175 ldr x2, [x0, 1376] 9176 subs x1, x1, x2 9177 mov x2, 0 9178 beq .L1205 9179 bl __stack_chk_fail 9180.L1196: 9181 add x1, sp, 100 9182 mov w0, w19 9183 mov w2, 0 9184 bl log2phys 9185 ldr w0, [sp, 100] 9186 cmn w0, #1 9187 beq .L1195 9188 ubfx x0, x0, 10, 16 9189 bl P2V_block_in_plane 9190 and x0, x0, 65535 9191 ldrh w1, [x21, x0, lsl 1] 9192 add w1, w1, 1 9193 strh w1, [x21, x0, lsl 1] 9194.L1195: 9195 add w19, w19, 1 9196 b .L1194 9197.L1199: 9198 ldr x0, [x20, 72] 9199 ubfiz x25, x19, 1, 16 9200 ldrh w3, [x21, w19, sxtw 1] 9201 sxtw x28, w19 9202 ldrh w2, [x0, x25] 9203 cmp w2, w3 9204 beq .L1198 9205 mov x0, x23 9206 mov w1, w19 9207 bl sftl_printk 9208 ldr x0, [x20, 72] 9209 ldrh w0, [x0, x25] 9210 cmp w0, w26 9211 beq .L1198 9212 ldrh w1, [x21, x28, lsl 1] 9213 cmp w1, w0 9214 csel w24, w24, w27, ls 9215.L1198: 9216 add w19, w19, 1 9217 and w19, w19, 65535 9218 b .L1197 9219.L1203: 9220 ldr x1, [x20, 72] 9221 ubfiz x0, x19, 1, 16 9222 ldrh w2, [x1, x0] 9223 cbz w2, .L1202 9224 ldrh w3, [x21, w19, sxtw 1] 9225 mov w24, 1 9226 mov w1, w19 9227 mov x0, x25 9228 bl sftl_printk 9229.L1202: 9230 umull x19, w19, w27 9231 ldr x0, [x20, 2560] 9232 ldrh w19, [x0, x19] 9233 cmp w19, w28 9234 beq .L1200 9235 add w23, w23, 1 9236 and w23, w23, 65535 9237 b .L1201 9238.L1205: 9239 ldp x19, x20, [sp, 16] 9240 ldp x21, x22, [sp, 32] 9241 ldp x23, x24, [sp, 48] 9242 ldp x25, x26, [sp, 64] 9243 ldp x27, x28, [sp, 80] 9244 ldp x29, x30, [sp], 112 9245 hint 29 // autiasp 9246 ret 9247 .size ftl_check_vpc, .-ftl_check_vpc 9248 .section .rodata.str1.1 9249.LC115: 9250 .string "ftl_scan_all_data = %x\n" 9251.LC116: 9252 .string "scan lpa = %x ppa= %x\n" 9253.LC117: 9254 .string "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\n" 9255 .text 9256 .align 2 9257 .global ftl_scan_all_data 9258 .type ftl_scan_all_data, %function 9259ftl_scan_all_data: 9260 hint 34 // bti c 9261 .section __patchable_function_entries 9262 .align 3 9263 .8byte .LPFE98 9264 .text 9265.LPFE98: 9266 nop 9267 nop 9268 hint 25 // paciasp 9269 sub sp, sp, #96 9270 mrs x0, sp_el0 9271 stp x29, x30, [sp, 16] 9272 add x29, sp, 16 9273 stp x19, x20, [sp, 32] 9274 mov w20, 0 9275 stp x21, x22, [sp, 48] 9276 adrp x21, .LANCHOR0 9277 add x21, x21, :lo12:.LANCHOR0 9278 str x23, [sp, 64] 9279 adrp x22, .LC116 9280 add x19, x21, 3712 9281 add x22, x22, :lo12:.LC116 9282 ldr x1, [x0, 1376] 9283 str x1, [sp, 88] 9284 mov x1, 0 9285 adrp x0, .LC115 9286 add x0, x0, :lo12:.LC115 9287 bl sftl_printk 9288.L1220: 9289 ldr w0, [x21, 2624] 9290 cmp w0, w20 9291 bhi .L1226 9292 mrs x0, sp_el0 9293 ldr x1, [sp, 88] 9294 ldr x2, [x0, 1376] 9295 subs x1, x1, x2 9296 mov x2, 0 9297 beq .L1227 9298 bl __stack_chk_fail 9299.L1226: 9300 add x1, sp, 84 9301 mov w0, w20 9302 mov w2, 0 9303 bl log2phys 9304 tst x20, 2047 9305 bne .L1221 9306 ldr w2, [sp, 84] 9307 mov w1, w20 9308 mov x0, x22 9309 bl sftl_printk 9310.L1221: 9311 ldr w0, [sp, 84] 9312 cmn w0, #1 9313 beq .L1223 9314 stp wzr, w0, [x19] 9315 mov w2, 0 9316 ldr x0, [x21, 3448] 9317 mov w1, 1 9318 ldr x23, [x21, 3512] 9319 str x0, [x19, 8] 9320 mov x0, x19 9321 str x23, [x19, 16] 9322 str w20, [x19, 24] 9323 bl FlashReadPages 9324 ldr w0, [x19] 9325 cmp w0, 256 9326 ccmn w0, #1, 4, ne 9327 beq .L1224 9328 ldr w0, [x23, 8] 9329 cmp w0, w20 9330 beq .L1223 9331.L1224: 9332 ldp x0, x1, [x19, 8] 9333 ldr w2, [x0, 4] 9334 str w2, [sp] 9335 ldr w7, [x0] 9336 adrp x0, .LC117 9337 ldp w3, w4, [x1] 9338 add x0, x0, :lo12:.LC117 9339 ldp w5, w6, [x1, 8] 9340 mov w1, w20 9341 ldr w2, [x19, 4] 9342 bl sftl_printk 9343.L1223: 9344 add w20, w20, 1 9345 b .L1220 9346.L1227: 9347 ldp x29, x30, [sp, 16] 9348 ldp x19, x20, [sp, 32] 9349 ldp x21, x22, [sp, 48] 9350 ldr x23, [sp, 64] 9351 add sp, sp, 96 9352 hint 29 // autiasp 9353 ret 9354 .size ftl_scan_all_data, .-ftl_scan_all_data 9355 .section .rodata.str1.1 9356.LC118: 9357 .string "FtlGcScanTempBlk Error ID %x %x!!!!!!! \n" 9358 .text 9359 .align 2 9360 .global FtlGcScanTempBlk 9361 .type FtlGcScanTempBlk, %function 9362FtlGcScanTempBlk: 9363 hint 34 // bti c 9364 .section __patchable_function_entries 9365 .align 3 9366 .8byte .LPFE99 9367 .text 9368.LPFE99: 9369 nop 9370 nop 9371 hint 25 // paciasp 9372 stp x29, x30, [sp, -160]! 9373 mov x29, sp 9374 stp x21, x22, [sp, 32] 9375 adrp x22, .LANCHOR2 9376 add x22, x22, :lo12:.LANCHOR2 9377 stp x19, x20, [sp, 16] 9378 mov x20, x0 9379 mrs x0, sp_el0 9380 stp x23, x24, [sp, 48] 9381 stp x25, x26, [sp, 64] 9382 stp x27, x28, [sp, 80] 9383 ldrh w28, [x22, 4] 9384 str w1, [sp, 104] 9385 ldr x1, [x0, 1376] 9386 str x1, [sp, 152] 9387 mov x1, 0 9388 mov w0, 65535 9389 cmp w28, w0 9390 beq .L1253 9391 cbz w28, .L1231 9392.L1230: 9393 adrp x0, .LANCHOR0+306 9394 ldr w1, [sp, 104] 9395 ldrh w0, [x0, #:lo12:.LANCHOR0+306] 9396 cmp w0, w1 9397 bne .L1232 9398.L1231: 9399 bl FtlGcPageVarInit 9400.L1232: 9401 adrp x19, .LANCHOR0 9402 add x19, x19, :lo12:.LANCHOR0 9403 mov w24, 0 9404 mov w26, 65535 9405.L1248: 9406 ldrh w0, [x20] 9407 strb wzr, [x20, 8] 9408 cmp w0, w26 9409 beq .L1233 9410 add x0, x20, 16 9411 str x0, [sp, 96] 9412.L1234: 9413 ldrh w7, [x19, 236] 9414 mov x1, 0 9415 ldrh w8, [x19, 314] 9416 mov w21, 0 9417 ldrh w9, [x19, 316] 9418 mov w5, 4 9419.L1235: 9420 ldr x0, [x19, 3424] 9421 cmp w7, w1, uxth 9422 bhi .L1237 9423 mov x23, 0 9424 mov w1, w21 9425 mov w2, 0 9426 bl FlashReadPages 9427.L1238: 9428 cmp w21, w23, uxth 9429 bhi .L1249 9430 ldr w0, [sp, 104] 9431 add w3, w28, 1 9432 add w24, w24, 1 9433 and w28, w3, 65535 9434 cmp w0, w24 9435 bhi .L1250 9436 ldrh w0, [x22, 4] 9437 cmp w0, w26 9438 beq .L1250 9439 add w0, w0, w24 9440 strh w0, [x22, 4] 9441 ldrh w0, [x19, 306] 9442 cmp w0, w28 9443 bls .L1233 9444.L1251: 9445 mrs x0, sp_el0 9446 ldr x1, [sp, 152] 9447 ldr x2, [x0, 1376] 9448 subs x1, x1, x2 9449 mov x2, 0 9450 beq .L1252 9451 bl __stack_chk_fail 9452.L1253: 9453 mov w28, 0 9454 b .L1230 9455.L1237: 9456 ldr x2, [sp, 96] 9457 ldrh w4, [x2, x1, lsl 1] 9458 cmp w4, w26 9459 beq .L1236 9460 ubfiz x6, x21, 5, 16 9461 orr w4, w28, w4, lsl 10 9462 add x0, x0, x6 9463 str w4, [x0, 4] 9464 mul w0, w21, w8 9465 ldr x2, [x19, 3424] 9466 sdiv w0, w0, w5 9467 ldr x4, [x19, 3256] 9468 add x2, x2, x6 9469 add x0, x4, w0, sxtw 2 9470 str x0, [x2, 8] 9471 mul w0, w21, w9 9472 add w21, w21, 1 9473 ldr x4, [x19, 3264] 9474 and w21, w21, 65535 9475 sdiv w0, w0, w5 9476 add x0, x4, w0, sxtw 2 9477 str x0, [x2, 16] 9478.L1236: 9479 add x1, x1, 1 9480 b .L1235 9481.L1249: 9482 ldr x0, [x19, 3424] 9483 lsl x27, x23, 5 9484 add x1, x0, x23, lsl 5 9485 ldr w0, [x0, x27] 9486 ldr w5, [x1, 4] 9487 ldr x25, [x1, 16] 9488 cbnz w0, .L1239 9489 ldrh w0, [x25] 9490 cmp w0, w26 9491 beq .L1263 9492 ldr w1, [x19, 2624] 9493 ldr w0, [x25, 8] 9494 cmp w0, w1 9495 bls .L1241 9496.L1263: 9497 ldrh w1, [x20] 9498 mov w28, 0 9499 ldr x0, [x19, 72] 9500 strh wzr, [x0, x1, lsl 1] 9501 ldrh w0, [x20] 9502 bl INSERT_FREE_LIST 9503 mov w0, -1 9504 strh w0, [x20] 9505 strh w0, [x19, 176] 9506 bl FtlGcPageVarInit 9507 b .L1248 9508.L1241: 9509 add x1, sp, 116 9510 mov w2, 0 9511 str w5, [sp, 108] 9512 bl log2phys 9513 ldr w0, [x25, 12] 9514 ldr w1, [sp, 116] 9515 ldr w5, [sp, 108] 9516 cmp w0, w1 9517 beq .L1243 9518.L1245: 9519 ldr w2, [x25, 8] 9520.L1264: 9521 ldr w0, [x25, 12] 9522 mov w1, w5 9523 add x23, x23, 1 9524 bl FtlGcUpdatePage 9525 b .L1238 9526.L1243: 9527 cmn w0, #1 9528 beq .L1245 9529 str w0, [sp, 124] 9530 mov w2, 0 9531 ldr x0, [x19, 3480] 9532 str x0, [sp, 128] 9533 ldr x0, [x19, 3520] 9534 mov w1, 1 9535 str w5, [sp, 108] 9536 str x0, [sp, 136] 9537 add x0, sp, 120 9538 bl FlashReadPages 9539 ldr w5, [sp, 108] 9540 ldrh w1, [x19, 262] 9541 ldr x2, [sp, 128] 9542 ldr x0, [x19, 3424] 9543 lsl w1, w1, 7 9544 sub x2, x2, #4 9545 add x27, x0, x27 9546 mov x0, 0 9547.L1246: 9548 cmp w1, w0 9549 bls .L1245 9550 ldr x6, [x27, 8] 9551 ldr w7, [x6, x0, lsl 2] 9552 add x0, x0, 1 9553 ldr w6, [x2, x0, lsl 2] 9554 cmp w7, w6 9555 beq .L1246 9556 ldrh w1, [x20] 9557 adrp x0, .LC118 9558 ldr w2, [sp, 124] 9559 add x0, x0, :lo12:.LC118 9560 bl sftl_printk 9561 b .L1263 9562.L1239: 9563 mov w2, -1 9564 b .L1264 9565.L1250: 9566 ldrh w0, [x19, 306] 9567 cmp w0, w28 9568 bhi .L1234 9569.L1233: 9570 strh w28, [x20, 2] 9571 mov w0, -1 9572 strb wzr, [x20, 6] 9573 mov w1, w28 9574 mov w2, 0 9575 strh w0, [x22, 4] 9576 mov x0, x20 9577 bl ftl_sb_update_avl_pages 9578 b .L1251 9579.L1252: 9580 mov w0, -1 9581 ldp x19, x20, [sp, 16] 9582 ldp x21, x22, [sp, 32] 9583 ldp x23, x24, [sp, 48] 9584 ldp x25, x26, [sp, 64] 9585 ldp x27, x28, [sp, 80] 9586 ldp x29, x30, [sp], 160 9587 hint 29 // autiasp 9588 ret 9589 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk 9590 .align 2 9591 .global FtlReadRefresh 9592 .type FtlReadRefresh, %function 9593FtlReadRefresh: 9594 hint 34 // bti c 9595 .section __patchable_function_entries 9596 .align 3 9597 .8byte .LPFE100 9598 .text 9599.LPFE100: 9600 nop 9601 nop 9602 hint 25 // paciasp 9603 stp x29, x30, [sp, -160]! 9604 mrs x0, sp_el0 9605 mov x29, sp 9606 stp x19, x20, [sp, 16] 9607 adrp x19, .LANCHOR0 9608 add x19, x19, :lo12:.LANCHOR0 9609 str x21, [sp, 32] 9610 ldr x1, [x0, 1376] 9611 str x1, [sp, 152] 9612 mov x1, 0 9613 ldr w0, [x19, 2624] 9614 add x1, x19, 2712 9615 ldr w2, [x1, 80] 9616 cbz w2, .L1266 9617 ldr w2, [x1, 84] 9618 cmp w2, w0 9619 bcs .L1267 9620 mov w20, 2048 9621.L1272: 9622 ldr w1, [x19, 2624] 9623 add x21, x19, 2712 9624 ldr w0, [x21, 84] 9625 cmp w0, w1 9626 bcc .L1268 9627.L1271: 9628 mov w0, -1 9629.L1265: 9630 mrs x1, sp_el0 9631 ldr x2, [sp, 152] 9632 ldr x3, [x1, 1376] 9633 subs x2, x2, x3 9634 mov x3, 0 9635 beq .L1276 9636 bl __stack_chk_fail 9637.L1268: 9638 add x1, sp, 52 9639 mov w2, 0 9640 bl log2phys 9641 ldr w1, [sp, 52] 9642 ldr w0, [x21, 84] 9643 add w0, w0, 1 9644 str w0, [x21, 84] 9645 cmn w1, #1 9646 beq .L1270 9647 str w0, [sp, 80] 9648 mov w2, 0 9649 ldr x0, [x19, 3496] 9650 str x0, [sp, 64] 9651 add x0, sp, 88 9652 stp wzr, w1, [sp, 56] 9653 mov w1, 1 9654 str x0, [sp, 72] 9655 add x0, sp, 56 9656 bl FlashReadPages 9657 ldr w0, [sp, 56] 9658 cmp w0, 256 9659 bne .L1271 9660 ldr w0, [sp, 52] 9661 ubfx x0, x0, 10, 16 9662 bl P2V_block_in_plane 9663 bl FtlGcRefreshBlock 9664 b .L1271 9665.L1270: 9666 subs w20, w20, #1 9667 bne .L1272 9668 b .L1271 9669.L1267: 9670 ldr w0, [x19, 2628] 9671 str w0, [x1, 76] 9672 str xzr, [x1, 80] 9673.L1279: 9674 mov w0, 0 9675 b .L1265 9676.L1266: 9677 ldr w2, [x19, 2684] 9678 mov w3, 10000 9679 mov w5, 31 9680 ldr w6, [x1, 76] 9681 cmp w2, w3 9682 mov w3, 63 9683 csel w5, w5, w3, hi 9684 ldr w3, [x19, 2628] 9685 ldrh w4, [x19, 2540] 9686 add w7, w3, 1048576 9687 cmp w6, w7 9688 bhi .L1275 9689 mov w7, 1000 9690 lsr w2, w2, 10 9691 add w2, w2, 1 9692 mul w0, w0, w7 9693 udiv w0, w0, w2 9694 add w0, w0, w6 9695 cmp w3, w0 9696 bhi .L1275 9697 tst w5, w4 9698 bne .L1279 9699 ldr w0, [x1, 100] 9700 cmp w0, w4 9701 beq .L1279 9702.L1275: 9703 mov x0, 1 9704 str w3, [x19, 2788] 9705 str x0, [x19, 2792] 9706 str w4, [x19, 2812] 9707 b .L1279 9708.L1276: 9709 ldp x19, x20, [sp, 16] 9710 ldr x21, [sp, 32] 9711 ldp x29, x30, [sp], 160 9712 hint 29 // autiasp 9713 ret 9714 .size FtlReadRefresh, .-FtlReadRefresh 9715 .align 2 9716 .global l2p_flush 9717 .type l2p_flush, %function 9718l2p_flush: 9719 hint 34 // bti c 9720 .section __patchable_function_entries 9721 .align 3 9722 .8byte .LPFE101 9723 .text 9724.LPFE101: 9725 nop 9726 nop 9727 hint 25 // paciasp 9728 stp x29, x30, [sp, -32]! 9729 mov x29, sp 9730 stp x19, x20, [sp, 16] 9731 adrp x20, .LANCHOR0 9732 add x20, x20, :lo12:.LANCHOR0 9733 mov w19, 0 9734 bl FtlWriteDump_data 9735.L1283: 9736 ldrh w0, [x20, 342] 9737 cmp w0, w19 9738 bhi .L1285 9739 mov w0, 0 9740 ldp x19, x20, [sp, 16] 9741 ldp x29, x30, [sp], 32 9742 hint 29 // autiasp 9743 ret 9744.L1285: 9745 ldr x1, [x20, 2608] 9746 ubfiz x0, x19, 4, 16 9747 add x0, x1, x0 9748 ldr w0, [x0, 4] 9749 tbz w0, #31, .L1284 9750 mov w0, w19 9751 bl flush_l2p_region 9752.L1284: 9753 add w19, w19, 1 9754 and w19, w19, 65535 9755 b .L1283 9756 .size l2p_flush, .-l2p_flush 9757 .align 2 9758 .global FtlVendorPartWrite 9759 .type FtlVendorPartWrite, %function 9760FtlVendorPartWrite: 9761 hint 34 // bti c 9762 .section __patchable_function_entries 9763 .align 3 9764 .8byte .LPFE102 9765 .text 9766.LPFE102: 9767 nop 9768 nop 9769 hint 25 // paciasp 9770 stp x29, x30, [sp, -224]! 9771 mov x29, sp 9772 stp x19, x20, [sp, 16] 9773 adrp x19, .LANCHOR0 9774 add x19, x19, :lo12:.LANCHOR0 9775 stp x21, x22, [sp, 32] 9776 mov w21, w0 9777 mrs x0, sp_el0 9778 stp x23, x24, [sp, 48] 9779 mov w20, w1 9780 ldrh w22, [x19, 312] 9781 stp x25, x26, [sp, 64] 9782 stp x27, x28, [sp, 80] 9783 lsr w22, w21, w22 9784 ldr x1, [x0, 1376] 9785 str x1, [sp, 216] 9786 mov x1, 0 9787 ldrh w0, [x19, 300] 9788 add w1, w21, w20 9789 cmp w1, w0 9790 bhi .L1296 9791 mov x24, x2 9792 add x27, x19, 3880 9793 mov w25, 0 9794 mov w28, -1 9795.L1289: 9796 cbnz w20, .L1294 9797.L1287: 9798 mrs x0, sp_el0 9799 ldr x1, [sp, 216] 9800 ldr x2, [x0, 1376] 9801 subs x1, x1, x2 9802 mov x2, 0 9803 beq .L1295 9804 bl __stack_chk_fail 9805.L1294: 9806 ldrh w1, [x19, 262] 9807 ldr x0, [x19, 3592] 9808 udiv w23, w21, w1 9809 ldr w2, [x0, w22, uxtw 2] 9810 msub w23, w23, w1, w21 9811 sub w0, w1, w23 9812 and w26, w0, 65535 9813 cmp w20, w0, uxth 9814 bcs .L1290 9815 and w26, w20, 65535 9816.L1290: 9817 ldr x0, [x19, 3464] 9818 cbz w2, .L1291 9819 cmp w1, w26 9820 beq .L1291 9821 str x0, [sp, 128] 9822 add x0, sp, 152 9823 str w2, [sp, 124] 9824 mov w2, 1 9825 mov w1, w2 9826 str x0, [sp, 136] 9827 add x0, sp, 120 9828 bl FlashReadPages 9829.L1292: 9830 lsl w4, w26, 9 9831 sbfiz x23, x23, 9, 23 9832 ldr x0, [x19, 3464] 9833 mov w2, w4 9834 mov x1, x24 9835 str w4, [sp, 108] 9836 add x0, x0, x23 9837 bl ftl_memcpy 9838 ldr x2, [x19, 3464] 9839 mov w1, w22 9840 mov x0, x27 9841 sub w20, w20, w26 9842 add w21, w21, w26 9843 add w22, w22, 1 9844 bl FtlMapWritePage 9845 ldr w4, [sp, 108] 9846 cmn w0, #1 9847 csel w25, w25, w28, ne 9848 add x24, x24, w4, sxtw 9849 b .L1289 9850.L1291: 9851 ldrh w2, [x19, 314] 9852 mov w1, 0 9853 bl ftl_memset 9854 b .L1292 9855.L1296: 9856 mov w25, -1 9857 b .L1287 9858.L1295: 9859 mov w0, w25 9860 ldp x19, x20, [sp, 16] 9861 ldp x21, x22, [sp, 32] 9862 ldp x23, x24, [sp, 48] 9863 ldp x25, x26, [sp, 64] 9864 ldp x27, x28, [sp, 80] 9865 ldp x29, x30, [sp], 224 9866 hint 29 // autiasp 9867 ret 9868 .size FtlVendorPartWrite, .-FtlVendorPartWrite 9869 .align 2 9870 .global Ftl_save_ext_data 9871 .type Ftl_save_ext_data, %function 9872Ftl_save_ext_data: 9873 hint 34 // bti c 9874 .section __patchable_function_entries 9875 .align 3 9876 .8byte .LPFE103 9877 .text 9878.LPFE103: 9879 nop 9880 nop 9881 adrp x0, .LANCHOR0 9882 add x0, x0, :lo12:.LANCHOR0 9883 mov w1, 19539 9884 movk w1, 0x4654, lsl 16 9885 ldr w3, [x0, 2712] 9886 cmp w3, w1 9887 bne .L1304 9888 add x2, x0, 2712 9889 hint 25 // paciasp 9890 stp x29, x30, [sp, -16]! 9891 mov w1, 87 9892 movk w1, 0x5000, lsl 16 9893 mov x29, sp 9894 str w1, [x2, 4] 9895 ldr w1, [x0, 2652] 9896 str w1, [x2, 88] 9897 ldr w1, [x0, 2656] 9898 str w1, [x2, 92] 9899 ldr w1, [x0, 2648] 9900 str w1, [x2, 8] 9901 ldr w1, [x0, 2636] 9902 str w1, [x2, 12] 9903 ldr w1, [x0, 2628] 9904 str w1, [x2, 16] 9905 ldr w1, [x0, 2644] 9906 str w1, [x2, 20] 9907 ldr w1, [x0, 2672] 9908 str w1, [x2, 28] 9909 ldr w1, [x0, 2680] 9910 str w1, [x2, 32] 9911 ldr w1, [x0, 2632] 9912 str w1, [x2, 36] 9913 ldr w1, [x0, 2640] 9914 str w1, [x2, 40] 9915 ldr w1, [x0, 2684] 9916 ldr w0, [x0, 2688] 9917 stp w1, w0, [x2, 44] 9918 mov w1, 1 9919 mov w0, 0 9920 bl FtlVendorPartWrite 9921 ldp x29, x30, [sp], 16 9922 hint 29 // autiasp 9923 ret 9924.L1304: 9925 ret 9926 .size Ftl_save_ext_data, .-Ftl_save_ext_data 9927 .align 2 9928 .global FtlEctTblFlush 9929 .type FtlEctTblFlush, %function 9930FtlEctTblFlush: 9931 hint 34 // bti c 9932 .section __patchable_function_entries 9933 .align 3 9934 .8byte .LPFE104 9935 .text 9936.LPFE104: 9937 nop 9938 nop 9939 adrp x2, .LANCHOR0 9940 add x2, x2, :lo12:.LANCHOR0 9941 ldrh w1, [x2, 3944] 9942 cmp w1, 31 9943 bhi .L1311 9944 add w1, w1, 1 9945 mov w3, 1 9946 strh w1, [x2, 3944] 9947.L1308: 9948 ldr x1, [x2, 3544] 9949 ldr w4, [x1, 16] 9950 cbnz w0, .L1309 9951 ldr w0, [x1, 20] 9952 add w3, w3, w0 9953 cmp w3, w4 9954 bhi .L1313 9955.L1309: 9956 hint 25 // paciasp 9957 stp x29, x30, [sp, -16]! 9958 mov w0, 17221 9959 mov x29, sp 9960 movk w0, 0x4254, lsl 16 9961 str w0, [x1] 9962 str w4, [x1, 20] 9963 ldr x0, [x2, 3544] 9964 ldrh w1, [x2, 3528] 9965 str wzr, [x0, 4] 9966 lsl w3, w1, 9 9967 str w3, [x0, 12] 9968 ldr w3, [x0, 8] 9969 ldr x2, [x2, 3544] 9970 add w3, w3, 1 9971 str w3, [x0, 8] 9972 mov w0, 64 9973 bl FtlVendorPartWrite 9974 bl Ftl_save_ext_data 9975 mov w0, 0 9976 ldp x29, x30, [sp], 16 9977 hint 29 // autiasp 9978 ret 9979.L1311: 9980 mov w3, 32 9981 b .L1308 9982.L1313: 9983 mov w0, 0 9984 ret 9985 .size FtlEctTblFlush, .-FtlEctTblFlush 9986 .align 2 9987 .global sftl_vendor_write 9988 .type sftl_vendor_write, %function 9989sftl_vendor_write: 9990 hint 34 // bti c 9991 .section __patchable_function_entries 9992 .align 3 9993 .8byte .LPFE105 9994 .text 9995.LPFE105: 9996 nop 9997 nop 9998 hint 25 // paciasp 9999 stp x29, x30, [sp, -16]! 10000 add w0, w0, 256 10001 mov x29, sp 10002 bl FtlVendorPartWrite 10003 ldp x29, x30, [sp], 16 10004 hint 29 // autiasp 10005 ret 10006 .size sftl_vendor_write, .-sftl_vendor_write 10007 .section .rodata.str1.1 10008.LC119: 10009 .string "FtlVendorPartRead refresh = %x phyAddr = %x\n" 10010 .text 10011 .align 2 10012 .global FtlVendorPartRead 10013 .type FtlVendorPartRead, %function 10014FtlVendorPartRead: 10015 hint 34 // bti c 10016 .section __patchable_function_entries 10017 .align 3 10018 .8byte .LPFE106 10019 .text 10020.LPFE106: 10021 nop 10022 nop 10023 hint 25 // paciasp 10024 stp x29, x30, [sp, -224]! 10025 adrp x3, .LANCHOR0 10026 mov x29, sp 10027 stp x27, x28, [sp, 80] 10028 add x28, x3, :lo12:.LANCHOR0 10029 stp x19, x20, [sp, 16] 10030 mov w20, w0 10031 mrs x0, sp_el0 10032 stp x21, x22, [sp, 32] 10033 mov w19, w1 10034 ldrh w21, [x28, 312] 10035 stp x23, x24, [sp, 48] 10036 stp x25, x26, [sp, 64] 10037 lsr w21, w20, w21 10038 ldr x1, [x0, 1376] 10039 str x1, [sp, 216] 10040 mov x1, 0 10041 ldrh w0, [x28, 300] 10042 add w1, w20, w19 10043 cmp w1, w0 10044 bhi .L1327 10045 adrp x26, .LC119 10046 mov x22, x2 10047 add x26, x26, :lo12:.LC119 10048 mov w24, 0 10049.L1319: 10050 cbnz w19, .L1325 10051.L1317: 10052 mrs x0, sp_el0 10053 ldr x1, [sp, 216] 10054 ldr x2, [x0, 1376] 10055 subs x1, x1, x2 10056 mov x2, 0 10057 beq .L1326 10058 bl __stack_chk_fail 10059.L1325: 10060 ldr x0, [x28, 3592] 10061 ldr w4, [x0, w21, uxtw 2] 10062 ldrh w0, [x28, 262] 10063 udiv w23, w20, w0 10064 msub w23, w23, w0, w20 10065 sub w0, w0, w23 10066 and w25, w0, 65535 10067 cmp w19, w0, uxth 10068 bcs .L1320 10069 and w25, w19, 65535 10070.L1320: 10071 lsl w27, w25, 9 10072 cbz w4, .L1321 10073 ldr x0, [x28, 3464] 10074 str x0, [sp, 128] 10075 add x0, sp, 152 10076 mov w2, 1 10077 mov w1, w2 10078 str w4, [sp, 108] 10079 str w4, [sp, 124] 10080 str x0, [sp, 136] 10081 add x0, sp, 120 10082 bl FlashReadPages 10083 ldr w0, [sp, 120] 10084 ldr w4, [sp, 108] 10085 cmn w0, #1 10086 ldr w0, [x28, 3712] 10087 csinv w24, w24, wzr, ne 10088 cmp w0, 256 10089 bne .L1323 10090 mov w2, w4 10091 mov w1, w21 10092 mov x0, x26 10093 bl sftl_printk 10094 ldr x2, [x28, 3464] 10095 mov w1, w21 10096 add x0, x28, 3880 10097 bl FtlMapWritePage 10098.L1323: 10099 ldr x1, [x28, 3464] 10100 sbfiz x23, x23, 9, 23 10101 mov w2, w27 10102 mov x0, x22 10103 add x1, x1, x23 10104 bl ftl_memcpy 10105.L1324: 10106 add w21, w21, 1 10107 sub w19, w19, w25 10108 add w20, w20, w25 10109 add x22, x22, w27, sxtw 10110 b .L1319 10111.L1321: 10112 mov w2, w27 10113 mov x0, x22 10114 mov w1, 0 10115 bl ftl_memset 10116 b .L1324 10117.L1327: 10118 mov w24, -1 10119 b .L1317 10120.L1326: 10121 mov w0, w24 10122 ldp x19, x20, [sp, 16] 10123 ldp x21, x22, [sp, 32] 10124 ldp x23, x24, [sp, 48] 10125 ldp x25, x26, [sp, 64] 10126 ldp x27, x28, [sp, 80] 10127 ldp x29, x30, [sp], 224 10128 hint 29 // autiasp 10129 ret 10130 .size FtlVendorPartRead, .-FtlVendorPartRead 10131 .section .rodata.str1.1 10132.LC120: 10133 .string "no ect" 10134 .text 10135 .align 2 10136 .global FtlLoadEctTbl 10137 .type FtlLoadEctTbl, %function 10138FtlLoadEctTbl: 10139 hint 34 // bti c 10140 .section __patchable_function_entries 10141 .align 3 10142 .8byte .LPFE107 10143 .text 10144.LPFE107: 10145 nop 10146 nop 10147 hint 25 // paciasp 10148 stp x29, x30, [sp, -32]! 10149 mov w0, 64 10150 mov x29, sp 10151 str x19, [sp, 16] 10152 adrp x19, .LANCHOR0 10153 add x19, x19, :lo12:.LANCHOR0 10154 ldrh w1, [x19, 3528] 10155 ldr x2, [x19, 3544] 10156 bl FtlVendorPartRead 10157 ldr x0, [x19, 3544] 10158 ldr w1, [x0] 10159 mov w0, 17221 10160 movk w0, 0x4254, lsl 16 10161 cmp w1, w0 10162 beq .L1330 10163 adrp x1, .LC120 10164 adrp x0, .LC78 10165 add x1, x1, :lo12:.LC120 10166 add x0, x0, :lo12:.LC78 10167 bl sftl_printk 10168 ldr x0, [x19, 3544] 10169 mov w1, 0 10170 ldrh w2, [x19, 3528] 10171 lsl w2, w2, 9 10172 bl ftl_memset 10173.L1330: 10174 mov w0, 0 10175 ldr x19, [sp, 16] 10176 ldp x29, x30, [sp], 32 10177 hint 29 // autiasp 10178 ret 10179 .size FtlLoadEctTbl, .-FtlLoadEctTbl 10180 .align 2 10181 .global Ftl_load_ext_data 10182 .type Ftl_load_ext_data, %function 10183Ftl_load_ext_data: 10184 hint 34 // bti c 10185 .section __patchable_function_entries 10186 .align 3 10187 .8byte .LPFE108 10188 .text 10189.LPFE108: 10190 nop 10191 nop 10192 hint 25 // paciasp 10193 stp x29, x30, [sp, -48]! 10194 mov w1, 1 10195 mov x29, sp 10196 stp x19, x20, [sp, 16] 10197 adrp x19, .LANCHOR0 10198 add x19, x19, :lo12:.LANCHOR0 10199 str x21, [sp, 32] 10200 add x21, x19, 2712 10201 mov x2, x21 10202 mov w0, 0 10203 bl FtlVendorPartRead 10204 mov w20, 19539 10205 ldr w0, [x19, 2712] 10206 movk w20, 0x4654, lsl 16 10207 cmp w0, w20 10208 beq .L1333 10209 mov x0, x21 10210 mov w2, 512 10211 mov w1, 0 10212 bl ftl_memset 10213 str w20, [x19, 2712] 10214.L1333: 10215 ldr w1, [x19, 2800] 10216 str w1, [x19, 2652] 10217 ldr w1, [x19, 2804] 10218 ldr w2, [x19, 2744] 10219 str w1, [x19, 2656] 10220 ldr w1, [x19, 2720] 10221 str w1, [x19, 2648] 10222 ldr w1, [x19, 2724] 10223 str w2, [x19, 2680] 10224 ldr w2, [x19, 2748] 10225 str w2, [x19, 2632] 10226 ldr w2, [x19, 2752] 10227 str w1, [x19, 2636] 10228 ldr w1, [x19, 2728] 10229 ldr w0, [x19, 2760] 10230 str w1, [x19, 2628] 10231 ldr w1, [x19, 2732] 10232 str w2, [x19, 2640] 10233 ldr w2, [x19, 2756] 10234 str w1, [x19, 2644] 10235 ldr w1, [x19, 2740] 10236 str w2, [x19, 2684] 10237 ldr w2, [x19, 2668] 10238 str w0, [x19, 2688] 10239 ldrh w0, [x19, 296] 10240 str w1, [x19, 2672] 10241 ldr x21, [sp, 32] 10242 madd w0, w0, w2, w1 10243 ldrh w1, [x19, 244] 10244 udiv w0, w0, w1 10245 str w0, [x19, 2676] 10246 ldp x19, x20, [sp, 16] 10247 ldp x29, x30, [sp], 48 10248 hint 29 // autiasp 10249 ret 10250 .size Ftl_load_ext_data, .-Ftl_load_ext_data 10251 .align 2 10252 .global sftl_vendor_read 10253 .type sftl_vendor_read, %function 10254sftl_vendor_read: 10255 hint 34 // bti c 10256 .section __patchable_function_entries 10257 .align 3 10258 .8byte .LPFE109 10259 .text 10260.LPFE109: 10261 nop 10262 nop 10263 hint 25 // paciasp 10264 stp x29, x30, [sp, -16]! 10265 add w0, w0, 256 10266 mov x29, sp 10267 bl FtlVendorPartRead 10268 ldp x29, x30, [sp], 16 10269 hint 29 // autiasp 10270 ret 10271 .size sftl_vendor_read, .-sftl_vendor_read 10272 .align 2 10273 .global FtlMapBlkWriteDump_data 10274 .type FtlMapBlkWriteDump_data, %function 10275FtlMapBlkWriteDump_data: 10276 hint 34 // bti c 10277 .section __patchable_function_entries 10278 .align 3 10279 .8byte .LPFE110 10280 .text 10281.LPFE110: 10282 nop 10283 nop 10284 hint 25 // paciasp 10285 stp x29, x30, [sp, -48]! 10286 mov x29, sp 10287 stp x19, x20, [sp, 16] 10288 mov x19, x0 10289 str x21, [sp, 32] 10290 ldr w0, [x0, 56] 10291 cbz w0, .L1337 10292 ldrh w1, [x19, 6] 10293 adrp x20, .LANCHOR0 10294 add x20, x20, :lo12:.LANCHOR0 10295 str wzr, [x19, 56] 10296 sub w1, w1, #1 10297 add x0, x20, 3712 10298 ldr x2, [x19, 40] 10299 and w21, w1, 65535 10300 ubfiz x1, x1, 2, 16 10301 ldr x3, [x20, 3456] 10302 ldr x4, [x20, 3512] 10303 stp x3, x4, [x0, 8] 10304 ldr w1, [x2, x1] 10305 str w1, [x0, 4] 10306 cbz w1, .L1339 10307 mov w2, 1 10308 mov w1, w2 10309 bl FlashReadPages 10310.L1340: 10311 ldr x2, [x20, 3720] 10312 mov w1, w21 10313 mov x0, x19 10314 bl FtlMapWritePage 10315.L1337: 10316 ldp x19, x20, [sp, 16] 10317 ldr x21, [sp, 32] 10318 ldp x29, x30, [sp], 48 10319 hint 29 // autiasp 10320 ret 10321.L1339: 10322 ldrh w2, [x20, 314] 10323 mov x0, x3 10324 mov w1, 255 10325 bl ftl_memset 10326 b .L1340 10327 .size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data 10328 .section .rodata.str1.1 10329.LC121: 10330 .string "FtlVpcTblFlush error = %x error count = %d\n" 10331 .text 10332 .align 2 10333 .global FtlVpcTblFlush 10334 .type FtlVpcTblFlush, %function 10335FtlVpcTblFlush: 10336 hint 34 // bti c 10337 .section __patchable_function_entries 10338 .align 3 10339 .8byte .LPFE111 10340 .text 10341.LPFE111: 10342 nop 10343 nop 10344 hint 25 // paciasp 10345 stp x29, x30, [sp, -80]! 10346 mov x29, sp 10347 stp x19, x20, [sp, 16] 10348 adrp x19, .LANCHOR0 10349 add x19, x19, :lo12:.LANCHOR0 10350 stp x21, x22, [sp, 32] 10351 add x21, x19, 2560 10352 add x20, x19, 2512 10353 stp x23, x24, [sp, 48] 10354 adrp x23, .LANCHOR1 10355 add x23, x23, :lo12:.LANCHOR1 10356 str x25, [sp, 64] 10357 add x23, x23, 471 10358 ldr x22, [x19, 3512] 10359 str x22, [x19, 3728] 10360 ldr x0, [x19, 3448] 10361 str x0, [x19, 3720] 10362 ldrh w0, [x21, 136] 10363 mov w24, 65535 10364 strh w0, [x22, 2] 10365 mov w0, -3932 10366 strh w0, [x22] 10367 ldr w0, [x21, 144] 10368 str w0, [x22, 4] 10369 mov x0, 19539 10370 str xzr, [x22, 8] 10371 movk x0, 0x4654, lsl 16 10372 ldrb w1, [x19, 30] 10373 movk x0, 0x57, lsl 32 10374 movk x0, 0x5000, lsl 48 10375 str x0, [x19, 2512] 10376 ldrh w0, [x21, 142] 10377 strh w0, [x19, 2520] 10378 ldrh w0, [x19, 258] 10379 strb w0, [x19, 2522] 10380 ldrh w0, [x19, 24] 10381 strh w0, [x19, 2526] 10382 ldrh w0, [x19, 26] 10383 orr w0, w1, w0, lsl 6 10384 strh w0, [x19, 2528] 10385 ldrb w0, [x19, 32] 10386 strb w0, [x19, 2523] 10387 ldrh w0, [x19, 80] 10388 ldrb w1, [x19, 86] 10389 strh w0, [x19, 2530] 10390 ldrh w0, [x19, 82] 10391 ldrh w2, [x19, 314] 10392 orr w0, w1, w0, lsl 6 10393 strh w0, [x19, 2532] 10394 ldrb w0, [x19, 88] 10395 strb w0, [x19, 2524] 10396 ldrh w0, [x19, 128] 10397 ldrb w1, [x19, 134] 10398 strh w0, [x19, 2534] 10399 ldrh w0, [x19, 130] 10400 orr w0, w1, w0, lsl 6 10401 strh w0, [x19, 2536] 10402 ldrb w0, [x19, 136] 10403 mov w1, 255 10404 strb w0, [x19, 2525] 10405 ldr w0, [x19, 2668] 10406 str w0, [x19, 2544] 10407 ldr w0, [x19, 2660] 10408 str w0, [x19, 2552] 10409 ldr w0, [x19, 2664] 10410 str w0, [x19, 2548] 10411 ldr x0, [x19, 3720] 10412 bl ftl_memset 10413 ldr x0, [x19, 3720] 10414 mov x1, x20 10415 mov w2, 48 10416 mov w20, 0 10417 bl ftl_memcpy 10418 ldrh w2, [x19, 244] 10419 ldr x1, [x19, 72] 10420 ldr x0, [x19, 3720] 10421 lsl w2, w2, 1 10422 add x0, x0, 48 10423 bl ftl_memcpy 10424 mov w0, 0 10425 bl FtlUpdateVaildLpn 10426.L1346: 10427 ldrh w1, [x21, 136] 10428 ldrh w2, [x21, 138] 10429 ldr x0, [x19, 3448] 10430 str x0, [x19, 3720] 10431 ldr x0, [x19, 3512] 10432 str x0, [x19, 3728] 10433 orr w0, w2, w1, lsl 10 10434 str w0, [x19, 3716] 10435 ldrh w0, [x19, 308] 10436 sub w0, w0, #1 10437 cmp w2, w0 10438 blt .L1347 10439 ldrh w24, [x21, 140] 10440 strh wzr, [x21, 138] 10441 strh w1, [x21, 140] 10442 bl FtlFreeSysBlkQueueOut 10443 ldr w1, [x19, 2660] 10444 str w1, [x21, 144] 10445 add w2, w1, 1 10446 str w2, [x19, 2660] 10447 ubfiz w2, w0, 10, 16 10448 str w2, [x19, 3716] 10449 strh w0, [x22, 2] 10450 str w1, [x22, 4] 10451 strh w0, [x21, 136] 10452.L1347: 10453 ldrh w1, [x19, 314] 10454 ldr x0, [x19, 3448] 10455 bl js_hash 10456 str w0, [x22, 12] 10457 mov w3, 1 10458 add x0, x19, 3712 10459 mov w1, w3 10460 mov w2, w3 10461 bl FlashProgPages 10462 ldrh w0, [x21, 138] 10463 ldr w1, [x19, 3712] 10464 add w0, w0, 1 10465 and w0, w0, 65535 10466 strh w0, [x21, 138] 10467 cmn w1, #1 10468 bne .L1348 10469 cmp w0, 1 10470 bne .L1350 10471 mov x1, x23 10472 mov w2, 1145 10473 adrp x0, .LC9 10474 add x0, x0, :lo12:.LC9 10475 bl sftl_printk 10476 ldrh w0, [x21, 138] 10477 cmp w0, 1 10478 bne .L1350 10479 ldrh w0, [x19, 308] 10480 sub w0, w0, #1 10481 strh w0, [x21, 138] 10482.L1350: 10483 add w20, w20, 1 10484 and w20, w20, 65535 10485 cmp w20, 3 10486 bls .L1346 10487 ldr w1, [x19, 3716] 10488 adrp x0, .LC121 10489 mov w2, w20 10490 add x0, x0, :lo12:.LC121 10491 bl sftl_printk 10492.L1353: 10493 b .L1353 10494.L1348: 10495 cmp w0, 1 10496 beq .L1346 10497 cmp w1, 256 10498 beq .L1346 10499 mov w0, 65535 10500 cmp w24, w0 10501 beq .L1354 10502 mov w0, w24 10503 mov w1, 1 10504 bl FtlFreeSysBlkQueueIn 10505.L1354: 10506 mov w0, 0 10507 ldp x19, x20, [sp, 16] 10508 ldp x21, x22, [sp, 32] 10509 ldp x23, x24, [sp, 48] 10510 ldr x25, [sp, 64] 10511 ldp x29, x30, [sp], 80 10512 hint 29 // autiasp 10513 ret 10514 .size FtlVpcTblFlush, .-FtlVpcTblFlush 10515 .align 2 10516 .global FtlSysFlush 10517 .type FtlSysFlush, %function 10518FtlSysFlush: 10519 hint 34 // bti c 10520 .section __patchable_function_entries 10521 .align 3 10522 .8byte .LPFE112 10523 .text 10524.LPFE112: 10525 nop 10526 nop 10527 hint 25 // paciasp 10528 stp x29, x30, [sp, -16]! 10529 mov x29, sp 10530 bl l2p_flush 10531 mov w0, 1 10532 bl FtlEctTblFlush 10533 bl FtlVpcTblFlush 10534 mov w0, 0 10535 ldp x29, x30, [sp], 16 10536 hint 29 // autiasp 10537 ret 10538 .size FtlSysFlush, .-FtlSysFlush 10539 .align 2 10540 .global sftl_deinit 10541 .type sftl_deinit, %function 10542sftl_deinit: 10543 hint 34 // bti c 10544 .section __patchable_function_entries 10545 .align 3 10546 .8byte .LPFE113 10547 .text 10548.LPFE113: 10549 nop 10550 nop 10551 adrp x0, .LANCHOR2 10552 ldr w0, [x0, #:lo12:.LANCHOR2] 10553 cmp w0, 1 10554 bne .L1367 10555 hint 25 // paciasp 10556 stp x29, x30, [sp, -16]! 10557 mov x29, sp 10558 bl FtlSysFlush 10559 mov w0, 0 10560 ldp x29, x30, [sp], 16 10561 hint 29 // autiasp 10562 ret 10563.L1367: 10564 mov w0, 0 10565 ret 10566 .size sftl_deinit, .-sftl_deinit 10567 .align 2 10568 .global sftl_discard 10569 .type sftl_discard, %function 10570sftl_discard: 10571 hint 34 // bti c 10572 .section __patchable_function_entries 10573 .align 3 10574 .8byte .LPFE114 10575 .text 10576.LPFE114: 10577 nop 10578 nop 10579 hint 25 // paciasp 10580 stp x29, x30, [sp, -64]! 10581 mov x29, sp 10582 stp x19, x20, [sp, 16] 10583 adrp x19, .LANCHOR0 10584 add x19, x19, :lo12:.LANCHOR0 10585 str x21, [sp, 32] 10586 mov w20, w1 10587 mrs x1, sp_el0 10588 ldr x2, [x1, 1376] 10589 str x2, [sp, 56] 10590 mov x2, 0 10591 ldr w1, [x19, 344] 10592 cmp w1, w0 10593 bls .L1381 10594 cmp w1, w20 10595 bcc .L1381 10596 add w2, w0, w20 10597 cmp w1, w2 10598 bcc .L1381 10599 cmp w20, 31 10600 bhi .L1372 10601.L1389: 10602 mov w0, 0 10603.L1370: 10604 mrs x1, sp_el0 10605 ldr x2, [sp, 56] 10606 ldr x3, [x1, 1376] 10607 subs x2, x2, x3 10608 mov x3, 0 10609 beq .L1378 10610 bl __stack_chk_fail 10611.L1372: 10612 ldrh w1, [x19, 262] 10613 udiv w21, w0, w1 10614 msub w0, w1, w21, w0 10615 ands w0, w0, 65535 10616 beq .L1373 10617 sub w0, w1, w0 10618 add w21, w21, 1 10619 cmp w0, w20 10620 csel w0, w0, w20, ls 10621 sub w20, w20, w0, uxth 10622.L1373: 10623 mov w0, -1 10624 str w0, [sp, 52] 10625.L1374: 10626 ldrh w0, [x19, 262] 10627 cmp w0, w20 10628 bls .L1376 10629 ldr w0, [x19, 3948] 10630 cmp w0, 32 10631 bls .L1389 10632 str wzr, [x19, 3948] 10633 bl l2p_flush 10634 bl FtlVpcTblFlush 10635 b .L1389 10636.L1376: 10637 add x1, sp, 48 10638 mov w0, w21 10639 mov w2, 0 10640 bl log2phys 10641 ldr w0, [sp, 48] 10642 cmn w0, #1 10643 beq .L1375 10644 ldr w0, [x19, 3948] 10645 add x1, sp, 52 10646 mov w2, 1 10647 add w0, w0, 1 10648 str w0, [x19, 3948] 10649 ldr w0, [x19, 2632] 10650 add w0, w0, 1 10651 str w0, [x19, 2632] 10652 mov w0, w21 10653 bl log2phys 10654 ldr w0, [sp, 48] 10655 ubfx x0, x0, 10, 16 10656 bl P2V_block_in_plane 10657 bl decrement_vpc_count 10658.L1375: 10659 ldrh w0, [x19, 262] 10660 add w21, w21, 1 10661 sub w20, w20, w0 10662 b .L1374 10663.L1381: 10664 mov w0, -1 10665 b .L1370 10666.L1378: 10667 ldp x19, x20, [sp, 16] 10668 ldr x21, [sp, 32] 10669 ldp x29, x30, [sp], 64 10670 hint 29 // autiasp 10671 ret 10672 .size sftl_discard, .-sftl_discard 10673 .section .rodata.str1.1 10674.LC122: 10675 .string "FtlCheckVpc %x = %x %x\n" 10676 .text 10677 .align 2 10678 .global FtlVpcCheckAndModify 10679 .type FtlVpcCheckAndModify, %function 10680FtlVpcCheckAndModify: 10681 hint 34 // bti c 10682 .section __patchable_function_entries 10683 .align 3 10684 .8byte .LPFE115 10685 .text 10686.LPFE115: 10687 nop 10688 nop 10689 hint 25 // paciasp 10690 stp x29, x30, [sp, -96]! 10691 mrs x0, sp_el0 10692 mov x29, sp 10693 stp x19, x20, [sp, 16] 10694 adrp x19, .LANCHOR0 10695 add x19, x19, :lo12:.LANCHOR0 10696 stp x21, x22, [sp, 32] 10697 adrp x22, .LANCHOR1 10698 add x22, x22, :lo12:.LANCHOR1 10699 stp x23, x24, [sp, 48] 10700 mov w20, 0 10701 str x25, [sp, 64] 10702 ldr x1, [x0, 1376] 10703 str x1, [sp, 88] 10704 mov x1, 0 10705 adrp x0, .LC112 10706 add x1, x22, 486 10707 add x0, x0, :lo12:.LC112 10708 bl sftl_printk 10709 ldr x0, [x19, 3552] 10710 mov w1, 0 10711 ldrh w2, [x19, 246] 10712 lsl w2, w2, 1 10713 bl ftl_memset 10714.L1391: 10715 ldr w0, [x19, 2624] 10716 cmp w0, w20 10717 bhi .L1393 10718 adrp x23, .LC122 10719 adrp x24, .LC9 10720 add x23, x23, :lo12:.LC122 10721 add x24, x24, :lo12:.LC9 10722 mov w20, 0 10723 mov w25, 65535 10724.L1394: 10725 ldrh w0, [x19, 244] 10726 cmp w0, w20 10727 bhi .L1400 10728 bl l2p_flush 10729 bl FtlVpcTblFlush 10730 mrs x0, sp_el0 10731 ldr x1, [sp, 88] 10732 ldr x2, [x0, 1376] 10733 subs x1, x1, x2 10734 mov x2, 0 10735 beq .L1401 10736 bl __stack_chk_fail 10737.L1393: 10738 add x1, sp, 84 10739 mov w0, w20 10740 mov w2, 0 10741 bl log2phys 10742 ldr w0, [sp, 84] 10743 cmn w0, #1 10744 beq .L1392 10745 ubfx x0, x0, 10, 16 10746 bl P2V_block_in_plane 10747 ldr x2, [x19, 3552] 10748 ubfiz x0, x0, 1, 16 10749 ldrh w1, [x2, x0] 10750 add w1, w1, 1 10751 strh w1, [x2, x0] 10752.L1392: 10753 add w20, w20, 1 10754 b .L1391 10755.L1400: 10756 ldr x0, [x19, 72] 10757 ubfiz x21, x20, 1, 16 10758 ldrh w2, [x0, x21] 10759 ldr x0, [x19, 3552] 10760 ldrh w3, [x0, x21] 10761 cmp w2, w3 10762 beq .L1396 10763 cmp w2, w25 10764 beq .L1396 10765 mov x0, x23 10766 mov w1, w20 10767 bl sftl_printk 10768 ldrh w0, [x19, 24] 10769 cmp w0, w20 10770 beq .L1396 10771 ldrh w0, [x19, 128] 10772 cmp w0, w20 10773 beq .L1396 10774 ldrh w0, [x19, 80] 10775 cmp w0, w20 10776 beq .L1396 10777 ldr x0, [x19, 72] 10778 ldr x1, [x19, 3552] 10779 ldrh w2, [x0, x21] 10780 ldrh w1, [x1, x21] 10781 strh w1, [x0, x21] 10782 cbnz w2, .L1398 10783 mov w1, w20 10784 add x0, x19, 2592 10785 bl List_remove_node 10786 ldrh w0, [x19, 228] 10787 cbnz w0, .L1399 10788 add x1, x22, 486 10789 mov x0, x24 10790 mov w2, 2330 10791 bl sftl_printk 10792.L1399: 10793 ldrh w0, [x19, 228] 10794 sub w0, w0, #1 10795 strh w0, [x19, 228] 10796 mov w0, w20 10797 bl INSERT_DATA_LIST 10798.L1396: 10799 add w20, w20, 1 10800 and w20, w20, 65535 10801 b .L1394 10802.L1398: 10803 mov w0, w20 10804 bl update_vpc_list 10805 b .L1396 10806.L1401: 10807 ldp x19, x20, [sp, 16] 10808 ldp x21, x22, [sp, 32] 10809 ldp x23, x24, [sp, 48] 10810 ldr x25, [sp, 64] 10811 ldp x29, x30, [sp], 96 10812 hint 29 // autiasp 10813 ret 10814 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify 10815 .align 2 10816 .global allocate_new_data_superblock 10817 .type allocate_new_data_superblock, %function 10818allocate_new_data_superblock: 10819 hint 34 // bti c 10820 .section __patchable_function_entries 10821 .align 3 10822 .8byte .LPFE116 10823 .text 10824.LPFE116: 10825 nop 10826 nop 10827 hint 25 // paciasp 10828 stp x29, x30, [sp, -48]! 10829 mov x29, sp 10830 stp x19, x20, [sp, 16] 10831 adrp x20, .LANCHOR0 10832 add x20, x20, :lo12:.LANCHOR0 10833 str x21, [sp, 32] 10834 mov x21, x0 10835 ldrh w19, [x0] 10836 ldrh w0, [x20, 244] 10837 cmp w0, w19 10838 bcs .L1407 10839 adrp x1, .LANCHOR1 10840 add x1, x1, :lo12:.LANCHOR1 10841 adrp x0, .LC9 10842 add x1, x1, 507 10843 add x0, x0, :lo12:.LC9 10844 mov w2, 2766 10845 bl sftl_printk 10846.L1407: 10847 mov w0, 65535 10848 cmp w19, w0 10849 beq .L1408 10850 ldr x1, [x20, 72] 10851 ubfiz x0, x19, 1, 16 10852 ldrh w0, [x1, x0] 10853 cbz w0, .L1409 10854 mov w0, w19 10855 bl INSERT_DATA_LIST 10856.L1408: 10857 mov w0, 1 10858 strb w0, [x21, 8] 10859 ldrh w0, [x20, 3698] 10860 mov w1, 65535 10861 cmp w0, w1 10862 beq .L1410 10863 cmp w0, w19 10864 bne .L1411 10865 ldr x1, [x20, 72] 10866 ubfiz x19, x19, 1, 16 10867 ldrh w1, [x1, x19] 10868 cbz w1, .L1412 10869.L1411: 10870 bl update_vpc_list 10871.L1412: 10872 mov w0, -1 10873 strh w0, [x20, 3698] 10874.L1410: 10875 mov x0, x21 10876 bl allocate_data_superblock 10877 bl l2p_flush 10878 mov w0, 0 10879 bl FtlEctTblFlush 10880 bl FtlVpcTblFlush 10881 mov w0, 0 10882 ldp x19, x20, [sp, 16] 10883 ldr x21, [sp, 32] 10884 ldp x29, x30, [sp], 48 10885 hint 29 // autiasp 10886 ret 10887.L1409: 10888 mov w0, w19 10889 bl INSERT_FREE_LIST 10890 b .L1408 10891 .size allocate_new_data_superblock, .-allocate_new_data_superblock 10892 .section .rodata.str1.1 10893.LC123: 10894 .string "FtlProgPages error %x = %d\n" 10895.LC124: 10896 .string "Ftlwrite decrement_vpc_count %x = %d\n" 10897 .text 10898 .align 2 10899 .global FtlProgPages 10900 .type FtlProgPages, %function 10901FtlProgPages: 10902 hint 34 // bti c 10903 .section __patchable_function_entries 10904 .align 3 10905 .8byte .LPFE117 10906 .text 10907.LPFE117: 10908 nop 10909 nop 10910 hint 25 // paciasp 10911 stp x29, x30, [sp, -80]! 10912 mrs x2, sp_el0 10913 mov x29, sp 10914 stp x19, x20, [sp, 16] 10915 mov x20, x3 10916 mov x19, x0 10917 stp x21, x22, [sp, 32] 10918 mov w21, w1 10919 stp x23, x24, [sp, 48] 10920 adrp x24, .LC123 10921 adrp x23, .LANCHOR0 10922 ldr x3, [x2, 1376] 10923 str x3, [sp, 72] 10924 mov x3, 0 10925 mov w2, 0 10926 ldrb w3, [x20, 9] 10927 add x24, x24, :lo12:.LC123 10928 add x23, x23, :lo12:.LANCHOR0 10929 bl FlashProgPages 10930 mov w1, 32 10931 umaddl x21, w21, w1, x19 10932.L1418: 10933 cmp x21, x19 10934 bne .L1425 10935 adrp x0, .LANCHOR0+236 10936 ldrb w1, [x20, 6] 10937 ldrh w0, [x0, #:lo12:.LANCHOR0+236] 10938 cmp w1, w0 10939 bcc .L1417 10940 adrp x1, .LANCHOR1 10941 add x1, x1, :lo12:.LANCHOR1 10942 adrp x0, .LC9 10943 add x1, x1, 536 10944 add x0, x0, :lo12:.LC9 10945 mov w2, 1000 10946 bl sftl_printk 10947.L1417: 10948 mrs x0, sp_el0 10949 ldr x1, [sp, 72] 10950 ldr x2, [x0, 1376] 10951 subs x1, x1, x2 10952 mov x2, 0 10953 beq .L1427 10954 bl __stack_chk_fail 10955.L1420: 10956 ldr w1, [x19, 4] 10957 mov x0, x24 10958 bl sftl_printk 10959 ldr w0, [x19, 4] 10960 ubfx x0, x0, 10, 16 10961 bl P2V_block_in_plane 10962 bl decrement_vpc_count 10963 ldrh w0, [x20, 4] 10964 cbnz w0, .L1419 10965 mov x0, x20 10966 bl allocate_new_data_superblock 10967.L1419: 10968 mov x0, x20 10969 bl get_new_active_ppa 10970 str w0, [x19, 4] 10971 mov w2, 0 10972 mov w1, 1 10973 str w0, [sp, 68] 10974 ldrb w3, [x20, 9] 10975 mov x0, x19 10976 bl FlashProgPages 10977.L1425: 10978 ldr w2, [x19] 10979 cmp w2, 256 10980 ccmn w2, #1, 4, ne 10981 beq .L1420 10982 ldrb w1, [x20, 6] 10983 ldrh w0, [x23, 236] 10984 cmp w1, w0 10985 bcc .L1421 10986 adrp x1, .LANCHOR1 10987 add x1, x1, :lo12:.LANCHOR1 10988 adrp x0, .LC9 10989 add x1, x1, 536 10990 add x0, x0, :lo12:.LC9 10991 mov w2, 985 10992 bl sftl_printk 10993.L1421: 10994 ldr w0, [x19, 4] 10995 add x1, sp, 68 10996 str w0, [sp, 68] 10997 mov w2, 1 10998 ldr w0, [x19, 24] 10999 bl log2phys 11000 ldr x0, [x19, 16] 11001 ldr w0, [x0, 12] 11002 cmn w0, #1 11003 beq .L1422 11004 ubfx x0, x0, 10, 16 11005 bl P2V_block_in_plane 11006 and w1, w0, 65535 11007 mov w22, w1 11008 ldr x2, [x23, 72] 11009 ubfiz x0, x22, 1, 16 11010 ldrh w0, [x2, x0] 11011 cbnz w0, .L1423 11012 adrp x0, .LC124 11013 mov w2, 0 11014 add x0, x0, :lo12:.LC124 11015 bl sftl_printk 11016.L1423: 11017 mov w0, w22 11018 bl decrement_vpc_count 11019.L1422: 11020 add x19, x19, 32 11021 b .L1418 11022.L1427: 11023 ldp x19, x20, [sp, 16] 11024 ldp x21, x22, [sp, 32] 11025 ldp x23, x24, [sp, 48] 11026 ldp x29, x30, [sp], 80 11027 hint 29 // autiasp 11028 ret 11029 .size FtlProgPages, .-FtlProgPages 11030 .align 2 11031 .global FtlGcFreeTempBlock 11032 .type FtlGcFreeTempBlock, %function 11033FtlGcFreeTempBlock: 11034 hint 34 // bti c 11035 .section __patchable_function_entries 11036 .align 3 11037 .8byte .LPFE118 11038 .text 11039.LPFE118: 11040 nop 11041 nop 11042 hint 25 // paciasp 11043 stp x29, x30, [sp, -80]! 11044 mrs x1, sp_el0 11045 mov x29, sp 11046 stp x19, x20, [sp, 16] 11047 adrp x19, .LANCHOR0 11048 add x19, x19, :lo12:.LANCHOR0 11049 stp x21, x22, [sp, 32] 11050 stp x23, x24, [sp, 48] 11051 ldrh w3, [x19, 128] 11052 ldr x2, [x1, 1376] 11053 str x2, [sp, 72] 11054 mov x2, 0 11055 ldrh w1, [x19, 306] 11056 mov w2, 65535 11057 cmp w3, w2 11058 bne .L1433 11059.L1440: 11060 ldrh w2, [x19, 128] 11061 add x0, x19, 128 11062 str wzr, [x19, 3704] 11063 mov w1, 65535 11064 cmp w2, w1 11065 bne .L1454 11066.L1458: 11067 mov w0, 0 11068.L1432: 11069 mrs x1, sp_el0 11070 ldr x2, [sp, 72] 11071 ldr x3, [x1, 1376] 11072 subs x2, x2, x3 11073 mov x3, 0 11074 beq .L1449 11075 bl __stack_chk_fail 11076.L1433: 11077 adrp x20, .LANCHOR2 11078 add x20, x20, :lo12:.LANCHOR2 11079 cbz w0, .L1436 11080 ldrh w0, [x20, 4] 11081 cmp w0, w2 11082 beq .L1437 11083.L1438: 11084 mov w1, 2 11085.L1436: 11086 add x0, x19, 128 11087 bl FtlGcScanTempBlk 11088 ldrh w1, [x20, 4] 11089 str w0, [sp, 68] 11090 mov w0, 65535 11091 cmp w1, w0 11092 beq .L1440 11093 mov w0, 1 11094 b .L1432 11095.L1437: 11096 ldrh w0, [x19, 228] 11097 strh wzr, [x20, 4] 11098 cmp w0, 17 11099 bhi .L1438 11100 b .L1436 11101.L1454: 11102 ldrb w0, [x0, 7] 11103 ldrh w2, [x19, 306] 11104 ldrh w1, [x19, 3296] 11105 mul w0, w0, w2 11106 cmp w1, w0 11107 beq .L1441 11108 adrp x1, .LANCHOR1 11109 add x1, x1, :lo12:.LANCHOR1 11110 adrp x0, .LC9 11111 add x1, x1, 549 11112 add x0, x0, :lo12:.LC9 11113 mov w2, 164 11114 bl sftl_printk 11115.L1441: 11116 ldrb w0, [x19, 135] 11117 mov w20, 0 11118 ldrh w3, [x19, 306] 11119 mov w24, 12 11120 ldrh w2, [x19, 128] 11121 ldr x1, [x19, 72] 11122 mul w0, w0, w3 11123 strh w0, [x1, x2, lsl 1] 11124 ldr w1, [x19, 2648] 11125 ldrh w0, [x19, 3296] 11126 add w0, w0, w1 11127 str w0, [x19, 2648] 11128.L1442: 11129 ldrh w0, [x19, 3296] 11130 cmp w0, w20 11131 bhi .L1446 11132 mov w0, -1 11133 bl decrement_vpc_count 11134 ldrh w2, [x19, 128] 11135 ldr x1, [x19, 72] 11136 ldrh w0, [x19, 128] 11137 ldrh w1, [x1, x2, lsl 1] 11138 cbz w1, .L1447 11139 bl INSERT_DATA_LIST 11140.L1448: 11141 mov w20, -1 11142 strh w20, [x19, 128] 11143 strh wzr, [x19, 3284] 11144 strh wzr, [x19, 3296] 11145 bl l2p_flush 11146 bl FtlVpcTblFlush 11147 strh w20, [x19, 176] 11148 ldrh w0, [x19, 2692] 11149 ldrh w1, [x19, 228] 11150 add w0, w0, w0, lsl 1 11151 cmp w1, w0, lsr 2 11152 ble .L1458 11153 mov w0, 20 11154 strh w0, [x19, 3224] 11155 b .L1458 11156.L1446: 11157 ldr x23, [x19, 3304] 11158 umull x22, w20, w24 11159 ldr w1, [x19, 2624] 11160 add x21, x23, x22 11161 ldr w0, [x21, 8] 11162 cmp w0, w1 11163 bcc .L1443 11164.L1456: 11165 ldrh w0, [x19, 128] 11166 b .L1457 11167.L1443: 11168 add x1, sp, 68 11169 mov w2, 0 11170 bl log2phys 11171 ldr w1, [sp, 68] 11172 ldr w0, [x23, x22] 11173 cmp w0, w1 11174 bne .L1445 11175 ubfx x0, x0, 10, 16 11176 bl P2V_block_in_plane 11177 mov w22, w0 11178 ldr w0, [x21, 8] 11179 add x1, x21, 4 11180 mov w2, 1 11181 bl log2phys 11182 mov w0, w22 11183.L1457: 11184 bl decrement_vpc_count 11185 b .L1444 11186.L1445: 11187 ldr w0, [x21, 4] 11188 cmp w1, w0 11189 bne .L1456 11190.L1444: 11191 add w20, w20, 1 11192 and w20, w20, 65535 11193 b .L1442 11194.L1447: 11195 bl INSERT_FREE_LIST 11196 b .L1448 11197.L1449: 11198 ldp x19, x20, [sp, 16] 11199 ldp x21, x22, [sp, 32] 11200 ldp x23, x24, [sp, 48] 11201 ldp x29, x30, [sp], 80 11202 hint 29 // autiasp 11203 ret 11204 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock 11205 .align 2 11206 .global FtlGcPageRecovery 11207 .type FtlGcPageRecovery, %function 11208FtlGcPageRecovery: 11209 hint 34 // bti c 11210 .section __patchable_function_entries 11211 .align 3 11212 .8byte .LPFE119 11213 .text 11214.LPFE119: 11215 nop 11216 nop 11217 hint 25 // paciasp 11218 stp x29, x30, [sp, -32]! 11219 mov x29, sp 11220 stp x19, x20, [sp, 16] 11221 adrp x19, .LANCHOR0 11222 add x19, x19, :lo12:.LANCHOR0 11223 add x20, x19, 128 11224 mov x0, x20 11225 ldrh w1, [x19, 306] 11226 bl FtlGcScanTempBlk 11227 ldrh w1, [x19, 130] 11228 ldrh w0, [x19, 306] 11229 cmp w1, w0 11230 bcc .L1459 11231 add x0, x19, 3632 11232 bl FtlMapBlkWriteDump_data 11233 mov w0, 0 11234 bl FtlGcFreeTempBlock 11235 str wzr, [x19, 3704] 11236.L1459: 11237 ldp x19, x20, [sp, 16] 11238 ldp x29, x30, [sp], 32 11239 hint 29 // autiasp 11240 ret 11241 .size FtlGcPageRecovery, .-FtlGcPageRecovery 11242 .align 2 11243 .global FtlPowerLostRecovery 11244 .type FtlPowerLostRecovery, %function 11245FtlPowerLostRecovery: 11246 hint 34 // bti c 11247 .section __patchable_function_entries 11248 .align 3 11249 .8byte .LPFE120 11250 .text 11251.LPFE120: 11252 nop 11253 nop 11254 hint 25 // paciasp 11255 stp x29, x30, [sp, -32]! 11256 mov x29, sp 11257 stp x19, x20, [sp, 16] 11258 adrp x19, .LANCHOR0 11259 add x19, x19, :lo12:.LANCHOR0 11260 add x20, x19, 24 11261 add x19, x19, 80 11262 mov x0, x20 11263 str wzr, [x19, 3668] 11264 bl FtlRecoverySuperblock 11265 mov x0, x20 11266 bl FtlSlcSuperblockCheck 11267 mov x0, x19 11268 bl FtlRecoverySuperblock 11269 mov x0, x19 11270 bl FtlSlcSuperblockCheck 11271 bl FtlGcPageRecovery 11272 mov w0, -1 11273 bl decrement_vpc_count 11274 mov w0, 0 11275 ldp x19, x20, [sp, 16] 11276 ldp x29, x30, [sp], 32 11277 hint 29 // autiasp 11278 ret 11279 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery 11280 .align 2 11281 .global Ftl_gc_temp_data_write_back 11282 .type Ftl_gc_temp_data_write_back, %function 11283Ftl_gc_temp_data_write_back: 11284 hint 34 // bti c 11285 .section __patchable_function_entries 11286 .align 3 11287 .8byte .LPFE121 11288 .text 11289.LPFE121: 11290 nop 11291 nop 11292 hint 25 // paciasp 11293 stp x29, x30, [sp, -32]! 11294 mov w3, 0 11295 mov x29, sp 11296 stp x19, x20, [sp, 16] 11297 adrp x19, .LANCHOR0 11298 add x19, x19, :lo12:.LANCHOR0 11299 mov w2, 0 11300 mov w20, 0 11301 ldr w1, [x19, 3240] 11302 ldr x0, [x19, 3432] 11303 bl FlashProgPages 11304.L1465: 11305 ldr w1, [x19, 3240] 11306 ldr x2, [x19, 3432] 11307 cmp w20, w1 11308 bcc .L1468 11309 mov x0, x2 11310 bl FtlGcBufFree 11311 ldrh w0, [x19, 132] 11312 str wzr, [x19, 3240] 11313 cbnz w0, .L1470 11314 mov w0, 1 11315 bl FtlGcFreeTempBlock 11316 mov w0, 1 11317.L1464: 11318 ldp x19, x20, [sp, 16] 11319 ldp x29, x30, [sp], 32 11320 hint 29 // autiasp 11321 ret 11322.L1468: 11323 ubfiz x4, x20, 5, 16 11324 add x1, x2, x4 11325 ldr w2, [x2, x4] 11326 ldr x3, [x1, 16] 11327 ldr w1, [x1, 4] 11328 ldr w0, [x3, 12] 11329 cmn w2, #1 11330 bne .L1466 11331.L1472: 11332 add w20, w20, 1 11333 bl FtlGcUpdatePage 11334 and w20, w20, 65535 11335 b .L1465 11336.L1466: 11337 ldr w2, [x3, 8] 11338 b .L1472 11339.L1470: 11340 mov w0, 0 11341 b .L1464 11342 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back 11343 .align 2 11344 .global Ftl_get_new_temp_ppa 11345 .type Ftl_get_new_temp_ppa, %function 11346Ftl_get_new_temp_ppa: 11347 hint 34 // bti c 11348 .section __patchable_function_entries 11349 .align 3 11350 .8byte .LPFE122 11351 .text 11352.LPFE122: 11353 nop 11354 nop 11355 hint 25 // paciasp 11356 stp x29, x30, [sp, -32]! 11357 mov w1, 65535 11358 mov x29, sp 11359 str x19, [sp, 16] 11360 adrp x19, .LANCHOR0 11361 add x19, x19, :lo12:.LANCHOR0 11362 ldrh w2, [x19, 128] 11363 cmp w2, w1 11364 beq .L1474 11365 ldrh w0, [x19, 132] 11366 cbnz w0, .L1475 11367.L1474: 11368 mov w0, 0 11369 bl FtlGcFreeTempBlock 11370 add x0, x19, 128 11371 strb wzr, [x0, 8] 11372 bl allocate_data_superblock 11373 strh wzr, [x19, 3284] 11374 strh wzr, [x19, 3296] 11375 bl l2p_flush 11376 mov w0, 0 11377 bl FtlEctTblFlush 11378 bl FtlVpcTblFlush 11379.L1475: 11380 add x0, x19, 128 11381 bl get_new_active_ppa 11382 ldr x19, [sp, 16] 11383 ldp x29, x30, [sp], 32 11384 hint 29 // autiasp 11385 ret 11386 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa 11387 .section .rodata.str1.1 11388.LC125: 11389 .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n" 11390 .text 11391 .align 2 11392 .global rk_ftl_garbage_collect 11393 .type rk_ftl_garbage_collect, %function 11394rk_ftl_garbage_collect: 11395 hint 34 // bti c 11396 .section __patchable_function_entries 11397 .align 3 11398 .8byte .LPFE123 11399 .text 11400.LPFE123: 11401 nop 11402 nop 11403 hint 25 // paciasp 11404 stp x29, x30, [sp, -144]! 11405 adrp x6, .LANCHOR0 11406 mov x29, sp 11407 stp x23, x24, [sp, 48] 11408 add x23, x6, :lo12:.LANCHOR0 11409 stp x19, x20, [sp, 16] 11410 stp x21, x22, [sp, 32] 11411 stp x25, x26, [sp, 64] 11412 stp x27, x28, [sp, 80] 11413 str w0, [sp, 108] 11414 mrs x0, sp_el0 11415 ldr x1, [x0, 1376] 11416 str x1, [sp, 136] 11417 mov x1, 0 11418 ldr w0, [x23, 3408] 11419 cbnz w0, .L1554 11420 ldrh w0, [x23, 2584] 11421 cmp w0, 47 11422 bls .L1554 11423 adrp x0, .LANCHOR2+4 11424 ldrh w1, [x0, #:lo12:.LANCHOR2+4] 11425 mov w0, 65535 11426 cmp w1, w0 11427 bne .L1479 11428.L1482: 11429 ldrh w0, [x23, 224] 11430 mov w1, 65535 11431 cmp w0, w1 11432 bne .L1480 11433.L1481: 11434 bl FtlReadRefresh 11435 ldr w1, [sp, 108] 11436 ldr w0, [x23, 3228] 11437 mov w19, 65535 11438 ldrh w2, [x23, 128] 11439 add w0, w0, 1 11440 add w0, w0, w1, lsl 7 11441 ldrh w1, [x23, 176] 11442 str w0, [x23, 3228] 11443 and w1, w1, w2 11444 ldrh w2, [x23, 226] 11445 and w1, w1, w2 11446 and w20, w1, 65535 11447 cmp w19, w1, uxth 11448 bne .L1556 11449 ldrh w1, [x23, 228] 11450 mov w2, 1024 11451 cmp w1, 24 11452 mov w1, 5120 11453 csel w1, w1, w2, cc 11454 cmp w0, w1 11455 bls .L1483 11456 str wzr, [x23, 3228] 11457 strh wzr, [x23, 3952] 11458 bl GetSwlReplaceBlock 11459 and w20, w0, 65535 11460 cmp w19, w0, uxth 11461 bne .L1485 11462 ldrh w1, [x23, 228] 11463 ldrh w0, [x23, 3226] 11464 cmp w1, w0 11465 bcs .L1486 11466 mov w0, 64 11467 bl List_get_gc_head_node 11468 and w1, w0, 65535 11469 cmp w20, w0, uxth 11470 beq .L1488 11471 ldr x0, [x23, 72] 11472 ubfiz x1, x1, 1, 16 11473 ldrh w0, [x0, x1] 11474 cmp w0, 7 11475 bhi .L1489 11476 mov w0, 0 11477 bl List_get_gc_head_node 11478 mov w2, 128 11479 strh w2, [x23, 3226] 11480 and w1, w0, 65535 11481 cmp w20, w0, uxth 11482 beq .L1488 11483 mov w20, w1 11484.L1485: 11485 ldr x1, [x23, 72] 11486 ubfiz x0, x20, 1, 16 11487 ldr x2, [x23, 2600] 11488 ldrh w3, [x1, x0] 11489 mov w1, w20 11490 ldrh w5, [x23, 3224] 11491 ldrh w4, [x2, x0] 11492 adrp x0, .LC125 11493 ldrh w2, [x23, 228] 11494 add x0, x0, :lo12:.LC125 11495 bl sftl_printk 11496 b .L1488 11497.L1479: 11498 ldrh w1, [x23, 128] 11499 cmp w1, w0 11500 beq .L1482 11501 mov w0, 1 11502 bl FtlGcFreeTempBlock 11503 cbz w0, .L1482 11504 mov w0, 1 11505 b .L1477 11506.L1480: 11507 ldrh w2, [x23, 226] 11508 cmp w2, w1 11509 bne .L1481 11510 strh w0, [x23, 226] 11511 mov w0, -1 11512 strh w0, [x23, 224] 11513 b .L1481 11514.L1489: 11515 mov w0, 64 11516.L1584: 11517 strh w0, [x23, 3226] 11518.L1488: 11519 bl FtlGcReFreshBadBlk 11520.L1483: 11521 ldr w1, [sp, 108] 11522 mov w0, 65535 11523 cmp w1, 0 11524 ccmp w20, w0, 0, eq 11525 bne .L1491 11526 ldrh w0, [x23, 228] 11527 cmp w0, 24 11528 bhi .L1559 11529 ldrh w19, [x23, 306] 11530 cmp w0, 16 11531 bls .L1493 11532 lsr w19, w19, 5 11533.L1492: 11534 ldrh w1, [x23, 3224] 11535 cmp w1, w0 11536 bcs .L1495 11537 ldrh w1, [x23, 226] 11538 ldrh w0, [x23, 128] 11539 and w0, w0, w1 11540 mov w1, 65535 11541 cmp w1, w0, uxth 11542 bne .L1496 11543 ldrh w0, [x23, 3952] 11544 cbnz w0, .L1497 11545 ldr w1, [x23, 2624] 11546 ldr w2, [x23, 2620] 11547 add w1, w1, w1, lsl 1 11548 cmp w2, w1, lsr 2 11549 bcs .L1560 11550.L1497: 11551 ldrh w1, [x23, 2692] 11552 add w1, w1, w1, lsl 1 11553 lsr w1, w1, 2 11554.L1498: 11555 strh w1, [x23, 3224] 11556 str wzr, [x23, 3236] 11557.L1477: 11558 mrs x1, sp_el0 11559 ldr x2, [sp, 136] 11560 ldr x3, [x1, 1376] 11561 subs x2, x2, x3 11562 mov x3, 0 11563 beq .L1552 11564 bl __stack_chk_fail 11565.L1486: 11566 mov w0, 80 11567 b .L1584 11568.L1556: 11569 mov w20, w19 11570 b .L1483 11571.L1493: 11572 cmp w0, 12 11573 bls .L1494 11574 lsr w19, w19, 4 11575 b .L1492 11576.L1494: 11577 cmp w0, 8 11578 bls .L1492 11579 lsr w19, w19, 2 11580 b .L1492 11581.L1559: 11582 mov w19, 1 11583 b .L1492 11584.L1560: 11585 mov w1, 18 11586 b .L1498 11587.L1496: 11588 ldrh w0, [x23, 2692] 11589 add w0, w0, w0, lsl 1 11590 asr w0, w0, 2 11591 strh w0, [x23, 3224] 11592.L1495: 11593 ldrh w0, [x23, 3312] 11594 cbz w0, .L1561 11595 add w19, w19, 32 11596 and w19, w19, 65535 11597.L1561: 11598 mov w20, 65535 11599.L1500: 11600 ldrh w0, [x23, 176] 11601 mov w1, 65535 11602 cmp w0, w1 11603 bne .L1508 11604 cmp w20, w0 11605 beq .L1509 11606 strh w20, [x23, 176] 11607.L1510: 11608 ldrh w0, [x23, 176] 11609 add x21, x23, 176 11610 strb wzr, [x21, 8] 11611 mov w1, 65535 11612 cmp w0, w1 11613 beq .L1508 11614 bl IsBlkInGcList 11615 cbz w0, .L1513 11616 mov w0, -1 11617 strh w0, [x23, 176] 11618.L1508: 11619 ldrh w0, [x23, 176] 11620 ldrh w1, [x23, 24] 11621 cmp w1, w0 11622 beq .L1514 11623 ldrh w1, [x23, 80] 11624 cmp w1, w0 11625 beq .L1514 11626 ldrh w1, [x23, 128] 11627 cmp w1, w0 11628 bne .L1515 11629.L1514: 11630 mov w0, -1 11631 strh w0, [x23, 176] 11632.L1515: 11633 adrp x21, .LANCHOR1 11634 add x21, x21, :lo12:.LANCHOR1 11635 add x21, x21, 568 11636.L1550: 11637 ldrh w24, [x23, 176] 11638 mov w0, 65535 11639 cmp w24, w0 11640 bne .L1516 11641 mov w25, 2 11642 str wzr, [x23, 3236] 11643.L1517: 11644 ldrh w22, [x23, 3232] 11645 mov w0, w22 11646 bl List_get_gc_head_node 11647 and w26, w0, 65535 11648 strh w26, [x23, 176] 11649 cmp w26, w24 11650 bne .L1518 11651 mov w0, 8 11652 strh wzr, [x23, 3232] 11653 b .L1477 11654.L1491: 11655 ldrh w19, [x23, 128] 11656 ldrh w1, [x23, 226] 11657 and w19, w19, w1 11658 and w19, w20, w19 11659 cmp w19, w0 11660 bne .L1562 11661 ldrh w0, [x23, 176] 11662 cmp w0, w19 11663 beq .L1501 11664.L1505: 11665 mov w20, w19 11666.L1562: 11667 mov w19, 1 11668 b .L1500 11669.L1501: 11670 ldrh w1, [x23, 228] 11671 ldrh w0, [x23, 3224] 11672 str wzr, [x23, 3236] 11673 cmp w1, w0 11674 bls .L1502 11675 ldrh w0, [x23, 3952] 11676 cbnz w0, .L1503 11677 ldr w0, [x23, 2624] 11678 ldr w1, [x23, 2620] 11679 add w0, w0, w0, lsl 1 11680 cmp w1, w0, lsr 2 11681 bcs .L1563 11682.L1503: 11683 ldrh w0, [x23, 2692] 11684 add w0, w0, w0, lsl 1 11685 lsr w0, w0, 2 11686.L1504: 11687 strh w0, [x23, 3224] 11688 bl FtlReadRefresh 11689 mov w0, 0 11690 bl List_get_gc_head_node 11691 ldr x1, [x23, 72] 11692 ubfiz x0, x0, 1, 16 11693 ldrh w0, [x1, x0] 11694 cmp w0, 4 11695 bls .L1502 11696.L1585: 11697 ldrh w0, [x23, 3952] 11698 b .L1477 11699.L1563: 11700 mov w0, 18 11701 b .L1504 11702.L1502: 11703 ldrh w0, [x23, 3952] 11704 cbnz w0, .L1505 11705 ldrh w20, [x23, 2692] 11706 add w0, w20, w20, lsl 1 11707 asr w0, w0, 2 11708 strh w0, [x23, 3224] 11709 mov w0, 0 11710 bl List_get_gc_head_node 11711 ldr x1, [x23, 72] 11712 ubfiz x0, x0, 1, 16 11713 ldrh w2, [x23, 236] 11714 ldrh w1, [x1, x0] 11715 ldrh w0, [x23, 308] 11716 mul w0, w0, w2 11717 mov w2, 2 11718 sdiv w0, w0, w2 11719 cmp w1, w0 11720 ble .L1506 11721 ldrh w0, [x23, 228] 11722 sub w20, w20, #1 11723 cmp w0, w20 11724 blt .L1506 11725 bl FtlReadRefresh 11726 b .L1585 11727.L1506: 11728 cbnz w1, .L1505 11729 mov w0, -1 11730 bl decrement_vpc_count 11731 ldrh w0, [x23, 228] 11732 add w0, w0, 1 11733 b .L1477 11734.L1509: 11735 ldrh w0, [x23, 226] 11736 cmp w0, w20 11737 beq .L1510 11738 ldr x1, [x23, 72] 11739 ubfiz x0, x0, 1, 16 11740 ldrh w0, [x1, x0] 11741 cbnz w0, .L1511 11742 mov w0, -1 11743 strh w0, [x23, 226] 11744.L1511: 11745 ldrh w0, [x23, 226] 11746 strh w0, [x23, 176] 11747 mov w0, -1 11748 strh w0, [x23, 226] 11749 b .L1510 11750.L1518: 11751 mov w0, w26 11752 bl IsBlkInGcList 11753 add w1, w22, 1 11754 and w1, w1, 65535 11755 strh w1, [x23, 3232] 11756 cbnz w0, .L1517 11757 ldrh w5, [x23, 236] 11758 ubfiz x2, x26, 1, 16 11759 ldrh w0, [x23, 306] 11760 ldr x3, [x23, 72] 11761 mul w0, w0, w5 11762 ldrh w4, [x3, x2] 11763 sdiv w5, w0, w25 11764 cmp w4, w5 11765 bgt .L1521 11766 cmp w1, 48 11767 bls .L1522 11768 cmp w4, 8 11769 bls .L1522 11770 ldrh w1, [x23, 3284] 11771 cmp w1, 35 11772 bhi .L1522 11773.L1521: 11774 strh wzr, [x23, 3232] 11775.L1522: 11776 ldrh w1, [x3, x2] 11777 cmp w0, w1 11778 bgt .L1523 11779 cmp w20, w24 11780 bne .L1523 11781 ldrh w0, [x23, 3232] 11782 cmp w0, 3 11783 bhi .L1523 11784 mov w0, -1 11785 strh w0, [x23, 176] 11786 strh wzr, [x23, 3232] 11787 b .L1585 11788.L1523: 11789 cbnz w1, .L1524 11790 mov w0, -1 11791 bl decrement_vpc_count 11792 ldrh w0, [x23, 3232] 11793 add w0, w0, 1 11794 strh w0, [x23, 3232] 11795 b .L1517 11796.L1524: 11797 ldrh w0, [x23, 24] 11798 strb wzr, [x23, 184] 11799 cmp w0, w26 11800 bne .L1525 11801 adrp x0, .LC9 11802 mov x1, x21 11803 add x0, x0, :lo12:.LC9 11804 mov w2, 717 11805 bl sftl_printk 11806.L1525: 11807 ldrh w1, [x23, 176] 11808 ldrh w0, [x23, 80] 11809 cmp w1, w0 11810 bne .L1526 11811 adrp x0, .LC9 11812 mov x1, x21 11813 add x0, x0, :lo12:.LC9 11814 mov w2, 718 11815 bl sftl_printk 11816.L1526: 11817 ldrh w1, [x23, 176] 11818 ldrh w0, [x23, 128] 11819 cmp w1, w0 11820 bne .L1527 11821 adrp x0, .LC9 11822 mov x1, x21 11823 add x0, x0, :lo12:.LC9 11824 mov w2, 719 11825 bl sftl_printk 11826.L1527: 11827 add x22, x23, 176 11828 mov x0, x22 11829 bl make_superblock 11830 ldrh w1, [x23, 176] 11831 ldr x0, [x23, 72] 11832 strh wzr, [x23, 3954] 11833 ldrh w0, [x0, x1, lsl 1] 11834 strh wzr, [x23, 178] 11835 strb wzr, [x23, 182] 11836 strh w0, [x23, 3956] 11837.L1516: 11838 mov w0, 1 11839 str w0, [x23, 3408] 11840 ldrh w0, [x23, 306] 11841 str w0, [sp, 104] 11842 ldr w0, [sp, 108] 11843 cbz w0, .L1528 11844 ldr w1, [sp, 104] 11845 ldrh w0, [x23, 236] 11846 ldrh w2, [x23, 176] 11847 mul w0, w0, w1 11848 ldr x1, [x23, 72] 11849 ldrh w1, [x1, x2, lsl 1] 11850 sub w0, w0, w1 11851 mov w1, 4 11852 sdiv w0, w0, w1 11853 add w19, w0, w19 11854 and w19, w19, 65535 11855.L1528: 11856 ldrh w0, [x23, 178] 11857 ldr w2, [sp, 104] 11858 add w1, w0, w19 11859 cmp w1, w2 11860 ble .L1529 11861 sub w0, w2, w0 11862 and w19, w0, 65535 11863.L1529: 11864 add x26, x23, 176 11865 mov w27, 0 11866.L1530: 11867 ldrh w0, [x26, 2] 11868 cmp w19, w27, uxth 11869 bls .L1538 11870 ldrh w7, [x23, 236] 11871 add w1, w0, w27 11872 mov x4, x26 11873 mov w22, 0 11874 mov w2, 0 11875 mov w5, 65535 11876 b .L1539 11877.L1532: 11878 ldrh w3, [x4, 16] 11879 cmp w3, w5 11880 beq .L1531 11881 ubfiz x8, x22, 5, 16 11882 add w22, w22, 1 11883 add x0, x0, x8 11884 and w22, w22, 65535 11885 orr w3, w1, w3, lsl 10 11886 str w3, [x0, 4] 11887.L1531: 11888 add w2, w2, 1 11889 add x4, x4, 2 11890 and w2, w2, 65535 11891.L1539: 11892 ldr x0, [x23, 3272] 11893 cmp w2, w7 11894 bne .L1532 11895 ldrb w2, [x26, 8] 11896 mov w1, w22 11897 mov x24, 0 11898 bl FlashReadPages 11899 adrp x0, .LC9 11900 add x0, x0, :lo12:.LC9 11901 str x0, [sp, 112] 11902.L1533: 11903 cmp w22, w24, uxth 11904 bhi .L1537 11905 add w27, w27, 1 11906 b .L1530 11907.L1537: 11908 ldr x0, [x23, 3272] 11909 lsl x28, x24, 5 11910 add x1, x0, x24, lsl 5 11911 ldr w0, [x0, x28] 11912 cmn w0, #1 11913 beq .L1534 11914 ldr x25, [x1, 16] 11915 mov w0, 61589 11916 ldrh w1, [x25] 11917 cmp w1, w0 11918 bne .L1534 11919 ldr w4, [x25, 8] 11920 cmn w4, #1 11921 bne .L1535 11922 ldr x0, [sp, 112] 11923 mov x1, x21 11924 mov w2, 753 11925 str w4, [sp, 120] 11926 bl sftl_printk 11927 ldr w4, [sp, 120] 11928.L1535: 11929 add x1, sp, 128 11930 mov w2, 0 11931 mov w0, w4 11932 bl log2phys 11933 ldr x0, [x23, 3272] 11934 ldr w1, [sp, 128] 11935 add x0, x0, x28 11936 ldr w2, [x0, 4] 11937 cmp w2, w1 11938 bne .L1534 11939 ldrh w1, [x23, 3954] 11940 ldr x2, [x23, 3432] 11941 add w1, w1, 1 11942 strh w1, [x23, 3954] 11943 ldr w1, [x23, 3240] 11944 ldr w0, [x0, 24] 11945 add x1, x2, x1, lsl 5 11946 str x1, [sp, 120] 11947 str w0, [x1, 24] 11948 bl Ftl_get_new_temp_ppa 11949 ldr x1, [sp, 120] 11950 str w0, [x1, 4] 11951 ldr w0, [x23, 3240] 11952 ldr x1, [x23, 3272] 11953 ldr x2, [x23, 3432] 11954 add x1, x1, x28 11955 add x0, x2, x0, lsl 5 11956 ldr x2, [x1, 8] 11957 str x2, [x0, 8] 11958 add x2, x23, 128 11959 str x2, [sp, 120] 11960 ldr x1, [x1, 16] 11961 str x1, [x0, 16] 11962 ldr w0, [sp, 128] 11963 mov w1, 1 11964 str w0, [x25, 12] 11965 ldrh w0, [x23, 128] 11966 strh w0, [x25, 2] 11967 ldr w0, [x23, 2664] 11968 str w0, [x25, 4] 11969 ldr w0, [x23, 3240] 11970 add w0, w0, 1 11971 str w0, [x23, 3240] 11972 ldr x0, [x23, 3272] 11973 add x0, x0, x28 11974 bl FtlGcBufAlloc 11975 ldr x2, [sp, 120] 11976 ldr w0, [x23, 3240] 11977 ldrb w1, [x2, 7] 11978 cmp w1, w0 11979 beq .L1536 11980 ldrh w0, [x2, 4] 11981 cbnz w0, .L1534 11982.L1536: 11983 bl Ftl_gc_temp_data_write_back 11984 cbz w0, .L1534 11985 mov w0, 65535 11986 str w0, [x23, 176] 11987 str wzr, [x23, 3408] 11988 b .L1585 11989.L1534: 11990 add x24, x24, 1 11991 b .L1533 11992.L1538: 11993 add w19, w19, w0 11994 ldr w0, [sp, 104] 11995 and w19, w19, 65535 11996 strh w19, [x26, 2] 11997 cmp w0, w19 11998 bhi .L1540 11999 ldr w0, [x23, 3240] 12000 cbz w0, .L1541 12001 bl Ftl_gc_temp_data_write_back 12002 cbz w0, .L1541 12003 str wzr, [x23, 3408] 12004 b .L1585 12005.L1541: 12006 ldrh w0, [x23, 3954] 12007 cbnz w0, .L1542 12008 ldrh w1, [x23, 176] 12009 ldr x0, [x23, 72] 12010 ldrh w0, [x0, x1, lsl 1] 12011 cbz w0, .L1542 12012 mov w19, 0 12013 b .L1543 12014.L1546: 12015 add x1, sp, 132 12016 mov w0, w19 12017 mov w2, 0 12018 bl log2phys 12019 ldr w0, [sp, 132] 12020 cmn w0, #1 12021 beq .L1544 12022 ubfx x0, x0, 10, 16 12023 bl P2V_block_in_plane 12024 ldrh w1, [x23, 176] 12025 cmp w1, w0, uxth 12026 beq .L1545 12027.L1544: 12028 add w19, w19, 1 12029.L1543: 12030 ldr w0, [x23, 2624] 12031 cmp w19, w0 12032 bcc .L1546 12033.L1548: 12034 ldrh w1, [x23, 176] 12035 ldr x0, [x23, 72] 12036 strh wzr, [x0, x1, lsl 1] 12037 ldrh w0, [x23, 176] 12038 bl update_vpc_list 12039 bl l2p_flush 12040 bl FtlVpcTblFlush 12041.L1542: 12042 mov w0, -1 12043 strh w0, [x23, 176] 12044.L1540: 12045 ldrh w0, [x23, 228] 12046 str wzr, [x23, 3408] 12047 cmp w0, 2 12048 bhi .L1549 12049 ldrh w19, [x23, 306] 12050 b .L1550 12051.L1545: 12052 ldr w0, [x23, 2624] 12053 cmp w19, w0 12054 bcc .L1542 12055 b .L1548 12056.L1549: 12057 ldrh w1, [x23, 3952] 12058 cmp w1, 0 12059 csinc w0, w1, w0, ne 12060 b .L1477 12061.L1554: 12062 mov w0, 0 12063 b .L1477 12064.L1513: 12065 mov x0, x21 12066 bl make_superblock 12067 ldrh w1, [x23, 176] 12068 ldr x0, [x23, 72] 12069 strh wzr, [x21, 2] 12070 strb wzr, [x21, 6] 12071 strh wzr, [x23, 3954] 12072 ldrh w0, [x0, x1, lsl 1] 12073 strh w0, [x23, 3956] 12074 b .L1508 12075.L1552: 12076 ldp x19, x20, [sp, 16] 12077 ldp x21, x22, [sp, 32] 12078 ldp x23, x24, [sp, 48] 12079 ldp x25, x26, [sp, 64] 12080 ldp x27, x28, [sp, 80] 12081 ldp x29, x30, [sp], 144 12082 hint 29 // autiasp 12083 ret 12084 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect 12085 .align 2 12086 .global FtlRead 12087 .type FtlRead, %function 12088FtlRead: 12089 hint 34 // bti c 12090 .section __patchable_function_entries 12091 .align 3 12092 .8byte .LPFE124 12093 .text 12094.LPFE124: 12095 nop 12096 nop 12097 hint 25 // paciasp 12098 stp x29, x30, [sp, -160]! 12099 and w0, w0, 255 12100 mov x29, sp 12101 stp x19, x20, [sp, 16] 12102 stp x21, x22, [sp, 32] 12103 mov x21, x3 12104 stp x23, x24, [sp, 48] 12105 mov w23, w2 12106 stp x25, x26, [sp, 64] 12107 mov w26, w1 12108 mrs x1, sp_el0 12109 stp x27, x28, [sp, 80] 12110 ldr x2, [x1, 1376] 12111 str x2, [sp, 152] 12112 mov x2, 0 12113 cmp w0, 16 12114 bne .L1587 12115 mov x2, x3 12116 mov w1, w23 12117 add w0, w26, 256 12118 bl FtlVendorPartRead 12119 mov w19, w0 12120.L1586: 12121 mrs x0, sp_el0 12122 ldr x1, [sp, 152] 12123 ldr x2, [x0, 1376] 12124 subs x1, x1, x2 12125 mov x2, 0 12126 beq .L1609 12127 bl __stack_chk_fail 12128.L1587: 12129 adrp x3, .LANCHOR0 12130 add x28, x3, :lo12:.LANCHOR0 12131 ldr w0, [x28, 344] 12132 cmp w0, w26 12133 bls .L1612 12134 cmp w0, w23 12135 bcc .L1612 12136 add w1, w26, w23 12137 str w1, [sp, 116] 12138 cmp w0, w1 12139 bcc .L1612 12140 adrp x0, .LANCHOR2 12141 ldr w19, [x0, #:lo12:.LANCHOR2] 12142 cmn w19, #1 12143 beq .L1586 12144 ldrh w0, [x28, 262] 12145 mov w20, 0 12146 mov w19, 0 12147 stp wzr, wzr, [sp, 108] 12148 udiv w1, w26, w0 12149 stp w1, wzr, [sp, 100] 12150 add w1, w26, w23 12151 sub w25, w1, #1 12152 ldr w22, [sp, 100] 12153 udiv w25, w25, w0 12154 ldr w0, [sp, 100] 12155 sub w24, w25, w0 12156 ldr w0, [x28, 2656] 12157 add w24, w24, 1 12158 add w0, w0, w23 12159 str w0, [x28, 2656] 12160 ldr w0, [x28, 2628] 12161 add w0, w0, w24 12162 str w0, [x28, 2628] 12163.L1589: 12164 cbnz w24, .L1607 12165 ldrh w0, [x28, 3312] 12166 cbnz w0, .L1608 12167 ldrh w0, [x28, 228] 12168 cmp w0, 31 12169 bhi .L1586 12170.L1608: 12171 mov w1, 1 12172 mov w0, 0 12173 bl rk_ftl_garbage_collect 12174 b .L1586 12175.L1607: 12176 add x1, sp, 148 12177 mov w0, w22 12178 mov w2, 0 12179 bl log2phys 12180 ldr w1, [sp, 148] 12181 cmn w1, #1 12182 bne .L1622 12183 mov w27, 0 12184 b .L1590 12185.L1593: 12186 madd w0, w0, w22, w27 12187 cmp w26, w0 12188 bhi .L1592 12189 ldr w1, [sp, 116] 12190 cmp w1, w0 12191 bls .L1592 12192 sub w0, w0, w26 12193 mov w2, 512 12194 mov w1, 0 12195 lsl w0, w0, 9 12196 add x0, x21, x0 12197 bl ftl_memset 12198.L1592: 12199 add w27, w27, 1 12200.L1590: 12201 ldrh w0, [x28, 262] 12202 cmp w0, w27 12203 bhi .L1593 12204.L1594: 12205 add w22, w22, 1 12206 subs w24, w24, #1 12207 beq .L1599 12208 ldrh w0, [x28, 236] 12209 cmp w20, w0, lsl 2 12210 bne .L1589 12211.L1599: 12212 cbz w20, .L1589 12213 ldr x0, [x28, 3424] 12214 mov w1, w20 12215 mov w2, 0 12216 mov x27, 0 12217 bl FlashReadPages 12218 ldr w0, [sp, 112] 12219 lsl w0, w0, 9 12220 str w0, [sp, 132] 12221 ldr w0, [sp, 104] 12222 lsl w0, w0, 9 12223 str x0, [sp, 120] 12224 ldr w0, [sp, 108] 12225 lsl w0, w0, 9 12226 str w0, [sp, 128] 12227.L1606: 12228 ldr x0, [x28, 3424] 12229 lsl x6, x27, 5 12230 ldr w2, [sp, 100] 12231 add x0, x0, x27, lsl 5 12232 ldr w1, [x0, 24] 12233 cmp w1, w2 12234 bne .L1601 12235 ldr x1, [x0, 8] 12236 ldr x0, [x28, 3472] 12237 cmp x1, x0 12238 bne .L1602 12239 ldr x0, [sp, 120] 12240 str x6, [sp, 136] 12241 ldr w2, [sp, 128] 12242 add x1, x1, x0 12243 mov x0, x21 12244.L1625: 12245 bl ftl_memcpy 12246 ldr x6, [sp, 136] 12247.L1602: 12248 ldr x1, [x28, 3424] 12249 add x0, x1, x6 12250 ldr x2, [x0, 16] 12251 ldr w7, [x0, 24] 12252 ldr w2, [x2, 8] 12253 cmp w7, w2 12254 beq .L1603 12255 ldr w2, [x28, 2784] 12256 add w2, w2, 1 12257 str w2, [x28, 2784] 12258.L1603: 12259 ldr w7, [x1, x6] 12260 cmn w7, #1 12261 bne .L1604 12262 ldr w2, [x28, 2784] 12263 mov w19, w7 12264 add w2, w2, 1 12265 str w2, [x28, 2784] 12266.L1604: 12267 ldr w1, [x1, x6] 12268 cmp w1, 256 12269 bne .L1605 12270 ldr w0, [x0, 4] 12271 ubfx x0, x0, 10, 16 12272 bl P2V_block_in_plane 12273 bl FtlGcRefreshBlock 12274.L1605: 12275 add x27, x27, 1 12276 cmp w20, w27 12277 bhi .L1606 12278 mov w20, 0 12279 b .L1589 12280.L1622: 12281 ldr x0, [x28, 3424] 12282 ubfiz x5, x20, 5, 32 12283 add x0, x0, x5 12284 str w1, [x0, 4] 12285 ldr w0, [sp, 100] 12286 ldrh w1, [x28, 262] 12287 cmp w22, w0 12288 bne .L1595 12289 udiv w6, w26, w1 12290 ldr x0, [x28, 3424] 12291 ldr x2, [x28, 3472] 12292 msub w3, w6, w1, w26 12293 add x0, x0, x5 12294 str w3, [sp, 104] 12295 sub w6, w1, w3 12296 cmp w23, w6 12297 csel w3, w23, w6, ls 12298 str w3, [sp, 108] 12299 cmp w1, w3 12300 csel x1, x2, x21, ne 12301 str x1, [x0, 8] 12302.L1596: 12303 ldrh w0, [x28, 316] 12304 ldr x1, [x28, 3424] 12305 ldr x2, [x28, 3520] 12306 mul w0, w0, w20 12307 add x1, x1, x5 12308 add w20, w20, 1 12309 and x0, x0, 4294967292 12310 add x0, x2, x0 12311 str x0, [x1, 16] 12312 str w22, [x1, 24] 12313 b .L1594 12314.L1595: 12315 ldr x2, [x28, 3424] 12316 mul w0, w22, w1 12317 add x2, x2, x5 12318 cmp w22, w25 12319 bne .L1597 12320 ldr w3, [sp, 116] 12321 sub w3, w3, w0 12322 str w3, [sp, 112] 12323 cmp w3, w1 12324 beq .L1597 12325 ldr x0, [x28, 3480] 12326.L1624: 12327 str x0, [x2, 8] 12328 b .L1596 12329.L1597: 12330 sub w0, w0, w26 12331 lsl w0, w0, 9 12332 add x0, x21, x0 12333 b .L1624 12334.L1601: 12335 cmp w1, w25 12336 bne .L1602 12337 ldr x1, [x0, 8] 12338 ldr x0, [x28, 3480] 12339 cmp x1, x0 12340 bne .L1602 12341 ldrh w0, [x28, 262] 12342 ldr w2, [sp, 132] 12343 str x6, [sp, 136] 12344 mul w0, w0, w25 12345 sub w0, w0, w26 12346 lsl w0, w0, 9 12347 add x0, x21, x0 12348 b .L1625 12349.L1612: 12350 mov w19, -1 12351 b .L1586 12352.L1609: 12353 mov w0, w19 12354 ldp x19, x20, [sp, 16] 12355 ldp x21, x22, [sp, 32] 12356 ldp x23, x24, [sp, 48] 12357 ldp x25, x26, [sp, 64] 12358 ldp x27, x28, [sp, 80] 12359 ldp x29, x30, [sp], 160 12360 hint 29 // autiasp 12361 ret 12362 .size FtlRead, .-FtlRead 12363 .align 2 12364 .global sftl_read 12365 .type sftl_read, %function 12366sftl_read: 12367 hint 34 // bti c 12368 .section __patchable_function_entries 12369 .align 3 12370 .8byte .LPFE125 12371 .text 12372.LPFE125: 12373 nop 12374 nop 12375 hint 25 // paciasp 12376 stp x29, x30, [sp, -16]! 12377 mov x3, x2 12378 mov x29, sp 12379 mov w2, w1 12380 mov w1, w0 12381 mov w0, 0 12382 bl FtlRead 12383 ldp x29, x30, [sp], 16 12384 hint 29 // autiasp 12385 ret 12386 .size sftl_read, .-sftl_read 12387 .section .rodata.str1.1 12388.LC126: 12389 .string "FtlWrite: ecc error:%x %x %x\n" 12390.LC127: 12391 .string "FtlWrite: lpa error:%x %x\n" 12392 .text 12393 .align 2 12394 .global FtlWrite 12395 .type FtlWrite, %function 12396FtlWrite: 12397 hint 34 // bti c 12398 .section __patchable_function_entries 12399 .align 3 12400 .8byte .LPFE126 12401 .text 12402.LPFE126: 12403 nop 12404 nop 12405 hint 25 // paciasp 12406 stp x29, x30, [sp, -224]! 12407 and w0, w0, 255 12408 mov x29, sp 12409 stp x19, x20, [sp, 16] 12410 stp x21, x22, [sp, 32] 12411 mov w21, w1 12412 mrs x1, sp_el0 12413 stp x23, x24, [sp, 48] 12414 stp x25, x26, [sp, 64] 12415 mov x25, x3 12416 stp x27, x28, [sp, 80] 12417 str w2, [sp, 120] 12418 ldr x2, [x1, 1376] 12419 str x2, [sp, 216] 12420 mov x2, 0 12421 cmp w0, 16 12422 bne .L1629 12423 ldr w1, [sp, 120] 12424 mov x2, x3 12425 add w0, w21, 256 12426 bl FtlVendorPartWrite 12427.L1628: 12428 mrs x1, sp_el0 12429 ldr x2, [sp, 216] 12430 ldr x3, [x1, 1376] 12431 subs x2, x2, x3 12432 mov x3, 0 12433 beq .L1666 12434 bl __stack_chk_fail 12435.L1629: 12436 adrp x4, .LANCHOR0 12437 add x24, x4, :lo12:.LANCHOR0 12438 ldr w0, [x24, 344] 12439 cmp w0, w21 12440 bls .L1669 12441 ldr w1, [sp, 120] 12442 cmp w0, w1 12443 bcc .L1669 12444 add w1, w21, w1 12445 str w1, [sp, 124] 12446 cmp w0, w1 12447 bcc .L1669 12448 adrp x0, .LANCHOR2 12449 ldr w0, [x0, #:lo12:.LANCHOR2] 12450 cmn w0, #1 12451 beq .L1628 12452 mov w0, 2048 12453 str w0, [x24, 3960] 12454 ldrh w0, [x24, 262] 12455 sub w1, w1, #1 12456 add x20, x24, 24 12457 udiv w27, w21, w0 12458 udiv w0, w1, w0 12459 ldr w1, [sp, 120] 12460 str w0, [sp, 160] 12461 sub w0, w0, w27 12462 add w26, w0, 1 12463 str w0, [sp, 136] 12464 ldr w0, [x24, 2652] 12465 add w0, w0, w1 12466 str w0, [x24, 2652] 12467 ldr w0, [x24, 2636] 12468 add w0, w0, w26 12469 str w0, [x24, 2636] 12470 adrp x0, .LANCHOR2 12471 add x0, x0, :lo12:.LANCHOR2 12472 ldr w0, [x0, 8] 12473 cbz w0, .L1631 12474 ldrh w1, [x20, 4] 12475 add x0, x24, 80 12476 cmp w1, 0 12477 csel x20, x0, x20, eq 12478.L1631: 12479 adrp x23, .LANCHOR1 12480 add x23, x23, :lo12:.LANCHOR1 12481 adrp x28, .LC9 12482 mov w19, w27 12483 add x23, x23, 591 12484 add x28, x28, :lo12:.LC9 12485.L1632: 12486 cbnz w26, .L1662 12487 ldr w1, [sp, 136] 12488 mov w0, 0 12489 bl rk_ftl_garbage_collect 12490 ldrh w0, [x24, 228] 12491 cmp w0, 5 12492 bls .L1674 12493.L1665: 12494 mov w0, 0 12495 b .L1628 12496.L1662: 12497 ldrb w1, [x20, 6] 12498 ldrh w0, [x24, 236] 12499 cmp w1, w0 12500 bcc .L1633 12501 mov x1, x23 12502 mov x0, x28 12503 mov w2, 1041 12504 bl sftl_printk 12505.L1633: 12506 ldrh w0, [x20, 4] 12507 cbnz w0, .L1634 12508 add x0, x24, 24 12509 cmp x20, x0 12510 bne .L1635 12511 ldrh w1, [x24, 84] 12512 add x0, x24, 80 12513 cbnz w1, .L1636 12514 bl allocate_new_data_superblock 12515 adrp x0, .LANCHOR2 12516 add x0, x0, :lo12:.LANCHOR2 12517 str wzr, [x0, 8] 12518.L1636: 12519 add x0, x24, 24 12520 bl allocate_new_data_superblock 12521 adrp x0, .LANCHOR2 12522 add x0, x0, :lo12:.LANCHOR2 12523 ldr w0, [x0, 8] 12524 cbnz w0, .L1673 12525.L1638: 12526 add x20, x24, 24 12527.L1637: 12528 ldrh w0, [x20, 4] 12529 cbnz w0, .L1634 12530 mov x0, x20 12531 bl allocate_new_data_superblock 12532.L1634: 12533 ldrh w0, [x20, 4] 12534 ldrb w1, [x20, 7] 12535 cmp w0, w26 12536 csel w0, w0, w26, ls 12537 lsl w1, w1, 2 12538 cmp w1, w0 12539 csel w0, w1, w0, ls 12540 ldrb w1, [x20, 6] 12541 str w0, [sp, 140] 12542 ldrh w0, [x24, 236] 12543 cmp w1, w0 12544 bcc .L1639 12545 mov x1, x23 12546 mov x0, x28 12547 mov w2, 1074 12548 bl sftl_printk 12549.L1639: 12550 ldr w0, [sp, 140] 12551 str xzr, [sp, 104] 12552 add w0, w0, w19 12553 str w0, [sp, 164] 12554 adrp x0, .LC127 12555 add x0, x0, :lo12:.LC127 12556 str x0, [sp, 168] 12557.L1640: 12558 ldr w0, [sp, 164] 12559 ldr w22, [sp, 104] 12560 cmp w19, w0 12561 bne .L1660 12562 ldr w22, [sp, 140] 12563.L1641: 12564 ldr x0, [x24, 3440] 12565 mov x3, x20 12566 mov w1, w22 12567 mov w2, 0 12568 bl FtlProgPages 12569 cmp w26, w22 12570 bcs .L1661 12571 mov x1, x23 12572 mov x0, x28 12573 mov w2, 1152 12574 bl sftl_printk 12575.L1661: 12576 sub w26, w26, w22 12577 b .L1632 12578.L1635: 12579 adrp x1, .LANCHOR2 12580 add x1, x1, :lo12:.LANCHOR2 12581 ldrh w0, [x0, 4] 12582 str wzr, [x1, 8] 12583 cbnz w0, .L1638 12584 mov x0, x20 12585 bl allocate_new_data_superblock 12586 b .L1637 12587.L1673: 12588 add x20, x24, 80 12589 b .L1637 12590.L1660: 12591 ldrh w0, [x20, 4] 12592 cbz w0, .L1641 12593 add x1, sp, 180 12594 mov w2, 0 12595 mov w0, w19 12596 bl log2phys 12597 mov x0, x20 12598 bl get_new_active_ppa 12599 ldr x1, [sp, 104] 12600 ldr x2, [sp, 104] 12601 lsl x1, x1, 5 12602 str x1, [sp, 112] 12603 ldr x1, [x24, 3440] 12604 add x1, x1, x2, lsl 5 12605 ldrh w2, [x24, 316] 12606 str w0, [x1, 4] 12607 ldr x1, [sp, 104] 12608 mul w22, w2, w22 12609 ldr x0, [x24, 3440] 12610 add x0, x0, x1, lsl 5 12611 and x1, x22, 4294967292 12612 str x1, [sp, 144] 12613 ldr x1, [x24, 3520] 12614 str w19, [x0, 24] 12615 ldr x3, [sp, 144] 12616 str x1, [sp, 152] 12617 add x22, x1, x3 12618 str x22, [x0, 16] 12619 mov w1, 0 12620 mov x0, x22 12621 bl ftl_memset 12622 ldr w0, [sp, 160] 12623 cmp w19, w27 12624 ldrh w1, [x24, 262] 12625 ccmp w19, w0, 4, ne 12626 bne .L1642 12627 cmp w19, w27 12628 bne .L1643 12629 udiv w0, w21, w1 12630 msub w0, w0, w1, w21 12631 str w0, [sp, 128] 12632 sub w2, w1, w0 12633 ldr w0, [sp, 120] 12634 cmp w2, w0 12635 csel w0, w2, w0, ls 12636 str w0, [sp, 132] 12637.L1644: 12638 ldr x0, [sp, 112] 12639 ldr x3, [x24, 3440] 12640 add x3, x3, x0 12641 ldr w0, [sp, 132] 12642 cmp w1, w0 12643 bne .L1645 12644 mul w0, w1, w19 12645 cmp w19, w27 12646 sub w0, w0, w21 12647 lsl w0, w0, 9 12648 add x0, x25, x0 12649 csel x0, x25, x0, eq 12650 str x0, [x3, 8] 12651.L1647: 12652 ldrb w1, [x20, 6] 12653 ldrh w0, [x24, 236] 12654 cmp w1, w0 12655 bcc .L1657 12656 mov x1, x23 12657 mov x0, x28 12658 mov w2, 1143 12659 bl sftl_printk 12660.L1657: 12661 ldp x2, x1, [sp, 144] 12662 mov w0, -3947 12663 strh w0, [x1, x2] 12664 ldr w0, [x24, 2664] 12665 stp w0, w19, [x22, 4] 12666 add w19, w19, 1 12667 cmn w0, #2 12668 csinc w0, wzr, w0, eq 12669 str w0, [x24, 2664] 12670 ldr w0, [sp, 180] 12671 str w0, [x22, 12] 12672 ldrh w0, [x20] 12673 strh w0, [x22, 2] 12674 ldr x0, [sp, 104] 12675 add x0, x0, 1 12676 str x0, [sp, 104] 12677 b .L1640 12678.L1643: 12679 ldr w0, [sp, 124] 12680 msub w2, w1, w19, w0 12681 and w0, w2, 65535 12682 stp wzr, w0, [sp, 128] 12683 b .L1644 12684.L1645: 12685 cmp w19, w27 12686 bne .L1648 12687 ldr x0, [x24, 3472] 12688.L1680: 12689 str x0, [x3, 8] 12690 ldr w0, [sp, 180] 12691 cmn w0, #1 12692 beq .L1650 12693 str w19, [sp, 208] 12694 mov w2, 0 12695 str w0, [sp, 188] 12696 mov w1, 1 12697 ldr x0, [x3, 8] 12698 str x0, [sp, 192] 12699 ldr x0, [x3, 16] 12700 str x0, [sp, 200] 12701 add x0, sp, 184 12702 bl FlashReadPages 12703 ldr w3, [sp, 184] 12704 cmn w3, #1 12705 bne .L1651 12706 ldr w0, [x24, 2784] 12707 mov w2, w19 12708 add w0, w0, 1 12709 str w0, [x24, 2784] 12710 adrp x0, .LC126 12711 add x0, x0, :lo12:.LC126 12712 ldr w1, [x22, 8] 12713 bl sftl_printk 12714.L1655: 12715 ldr w0, [sp, 132] 12716 cmp w19, w27 12717 lsl w2, w0, 9 12718 bne .L1656 12719 ldr x0, [sp, 112] 12720 ldr x1, [x24, 3440] 12721 add x1, x1, x0 12722 ldr w0, [sp, 128] 12723 ldr x3, [x1, 8] 12724 lsl w0, w0, 9 12725 mov x1, x25 12726 add x0, x3, x0 12727.L1681: 12728 bl ftl_memcpy 12729 b .L1647 12730.L1648: 12731 ldr x0, [x24, 3480] 12732 b .L1680 12733.L1651: 12734 ldr w0, [x22, 8] 12735 cmp w0, w19 12736 beq .L1655 12737 ldr w0, [x24, 2784] 12738 mov w2, w19 12739 add w0, w0, 1 12740 str w0, [x24, 2784] 12741 ldr x0, [sp, 168] 12742 ldr w1, [x22, 8] 12743 bl sftl_printk 12744 ldr w0, [x22, 8] 12745 cmp w0, w19 12746 beq .L1655 12747 mov x1, x23 12748 mov x0, x28 12749 mov w2, 1128 12750 bl sftl_printk 12751 b .L1655 12752.L1650: 12753 ldrh w2, [x24, 314] 12754 mov w1, 0 12755 ldr x0, [x3, 8] 12756 bl ftl_memset 12757 b .L1655 12758.L1656: 12759 ldrh w1, [x24, 262] 12760 ldr x3, [sp, 112] 12761 ldr x0, [x24, 3440] 12762 mul w1, w1, w19 12763 add x0, x0, x3 12764 sub w1, w1, w21 12765 lsl w1, w1, 9 12766 add x1, x25, x1 12767 ldr x0, [x0, 8] 12768 b .L1681 12769.L1642: 12770 ldr x2, [sp, 112] 12771 mul w1, w1, w19 12772 ldr x0, [x24, 3440] 12773 sub w1, w1, w21 12774 add x0, x0, x2 12775 lsl w1, w1, 9 12776 add x1, x25, x1 12777 str x1, [x0, 8] 12778 b .L1647 12779.L1674: 12780 mov w19, 256 12781 mov w21, 65535 12782 mov w20, 128 12783.L1663: 12784 ldrh w0, [x24, 176] 12785 ldrh w1, [x24, 226] 12786 and w0, w0, w1 12787 cmp w21, w0, uxth 12788 bne .L1664 12789 mov w0, 0 12790 bl List_get_gc_head_node 12791 bl FtlGcRefreshBlock 12792.L1664: 12793 mov w1, 1 12794 mov w0, w1 12795 strh w20, [x24, 3224] 12796 strh w20, [x24, 3226] 12797 bl rk_ftl_garbage_collect 12798 mov w1, 1 12799 mov w0, 0 12800 bl rk_ftl_garbage_collect 12801 ldrh w0, [x24, 228] 12802 cmp w0, 2 12803 bhi .L1665 12804 subs w19, w19, #1 12805 bne .L1663 12806 b .L1665 12807.L1669: 12808 mov w0, -1 12809 b .L1628 12810.L1666: 12811 ldp x19, x20, [sp, 16] 12812 ldp x21, x22, [sp, 32] 12813 ldp x23, x24, [sp, 48] 12814 ldp x25, x26, [sp, 64] 12815 ldp x27, x28, [sp, 80] 12816 ldp x29, x30, [sp], 224 12817 hint 29 // autiasp 12818 ret 12819 .size FtlWrite, .-FtlWrite 12820 .align 2 12821 .global sftl_gc 12822 .type sftl_gc, %function 12823sftl_gc: 12824 hint 34 // bti c 12825 .section __patchable_function_entries 12826 .align 3 12827 .8byte .LPFE127 12828 .text 12829.LPFE127: 12830 nop 12831 nop 12832 hint 25 // paciasp 12833 stp x29, x30, [sp, -16]! 12834 mov w1, 1 12835 mov x29, sp 12836 mov w0, w1 12837 bl rk_ftl_garbage_collect 12838 ldp x29, x30, [sp], 16 12839 hint 29 // autiasp 12840 ret 12841 .size sftl_gc, .-sftl_gc 12842 .section .rodata.str1.1 12843.LC128: 12844 .string "%s hash error this.id =%x page =%x pre_id =%x hash =%x hash_r =%x\n" 12845 .text 12846 .align 2 12847 .global FtlLoadSysInfo 12848 .type FtlLoadSysInfo, %function 12849FtlLoadSysInfo: 12850 hint 34 // bti c 12851 .section __patchable_function_entries 12852 .align 3 12853 .8byte .LPFE128 12854 .text 12855.LPFE128: 12856 nop 12857 nop 12858 hint 25 // paciasp 12859 stp x29, x30, [sp, -80]! 12860 mov w1, 0 12861 mov x29, sp 12862 stp x19, x20, [sp, 16] 12863 adrp x19, .LANCHOR0 12864 add x19, x19, :lo12:.LANCHOR0 12865 stp x25, x26, [sp, 64] 12866 add x25, x19, 3712 12867 stp x21, x22, [sp, 32] 12868 ldrh w2, [x19, 244] 12869 stp x23, x24, [sp, 48] 12870 ldr x0, [x19, 3448] 12871 str x0, [x25, 8] 12872 ldr x0, [x19, 3512] 12873 str x0, [x25, 16] 12874 ldr x0, [x19, 72] 12875 lsl w2, w2, 1 12876 bl ftl_memset 12877 ldrh w0, [x19, 2696] 12878 mov w1, 65535 12879 cmp w0, w1 12880 bne .L1685 12881.L1697: 12882 mov w0, -1 12883.L1684: 12884 ldp x19, x20, [sp, 16] 12885 ldp x21, x22, [sp, 32] 12886 ldp x23, x24, [sp, 48] 12887 ldp x25, x26, [sp, 64] 12888 ldp x29, x30, [sp], 80 12889 hint 29 // autiasp 12890 ret 12891.L1685: 12892 add x21, x19, 2560 12893 mov w1, 1 12894 bl FtlGetLastWrittenPage 12895 sxth w20, w0 12896 add w0, w20, 1 12897 mov w24, 19539 12898 ldrsh w22, [x21, 136] 12899 movk w24, 0x4654, lsl 16 12900 strh w0, [x21, 138] 12901 adrp x21, .LANCHOR1 12902 add x21, x21, :lo12:.LANCHOR1 12903 add x21, x21, 600 12904.L1687: 12905 tbz w20, #31, .L1694 12906 adrp x1, .LANCHOR1 12907 add x1, x1, :lo12:.LANCHOR1 12908 add x1, x1, 600 12909 mov w2, 1474 12910 adrp x0, .LC9 12911 add x0, x0, :lo12:.LC9 12912 bl sftl_printk 12913 b .L1693 12914.L1694: 12915 orr w0, w20, w22, lsl 10 12916 str w0, [x25, 4] 12917 ldr x0, [x19, 3448] 12918 mov w2, 1 12919 mov w1, w2 12920 str x0, [x25, 8] 12921 mov x0, x25 12922 bl FlashReadPages 12923 ldr x0, [x25, 16] 12924 ldr w23, [x0, 12] 12925 ldr w0, [x25] 12926 cmn w0, #1 12927 cbz w23, .L1688 12928 beq .L1689 12929 ldrh w1, [x19, 314] 12930 ldr x0, [x25, 8] 12931 bl js_hash 12932 mov w6, w0 12933 cmp w23, w0 12934 beq .L1690 12935 ldrh w4, [x19, 2700] 12936 adrp x0, .LC128 12937 mov w5, w23 12938 mov w3, w20 12939 mov w2, w22 12940 mov x1, x21 12941 add x0, x0, :lo12:.LC128 12942 bl sftl_printk 12943 cbnz w20, .L1691 12944 ldrh w0, [x19, 2700] 12945 cmp w22, w0 12946 beq .L1691 12947 ldrh w20, [x19, 308] 12948 sxth w22, w0 12949.L1689: 12950 sub w20, w20, #1 12951 sxth w20, w20 12952 b .L1687 12953.L1691: 12954 mov w0, -1 12955 str w0, [x25] 12956 b .L1689 12957.L1688: 12958 beq .L1689 12959.L1690: 12960 ldr x0, [x19, 3448] 12961 ldr w0, [x0] 12962 cmp w0, w24 12963 bne .L1689 12964 ldr x0, [x19, 3512] 12965 ldrh w1, [x0] 12966 mov w0, 61604 12967 cmp w1, w0 12968 bne .L1689 12969.L1693: 12970 ldrh w0, [x19, 244] 12971 ldrh w1, [x19, 314] 12972 add x0, x0, 24 12973 cmp x1, x0, lsl 1 12974 bcs .L1696 12975 adrp x1, .LANCHOR1 12976 add x1, x1, :lo12:.LANCHOR1 12977 adrp x0, .LC9 12978 add x1, x1, 600 12979 add x0, x0, :lo12:.LC9 12980 mov w2, 1476 12981 bl sftl_printk 12982.L1696: 12983 ldr x1, [x19, 3720] 12984 add x21, x19, 2512 12985 mov w2, 48 12986 mov x0, x21 12987 bl ftl_memcpy 12988 ldr x0, [x19, 72] 12989 ldrh w2, [x19, 244] 12990 ldr x1, [x19, 3720] 12991 lsl w2, w2, 1 12992 add x1, x1, 48 12993 bl ftl_memcpy 12994 ldr w1, [x19, 2512] 12995 mov w0, 19539 12996 movk w0, 0x4654, lsl 16 12997 cmp w1, w0 12998 bne .L1697 12999 ldrh w1, [x19, 2520] 13000 ldrb w2, [x19, 2522] 13001 ldrh w0, [x19, 258] 13002 strh w1, [x19, 2702] 13003 cmp w2, w0 13004 bne .L1697 13005 ldrh w0, [x19, 306] 13006 ldrh w2, [x19, 262] 13007 ldrh w3, [x19, 236] 13008 str w1, [x19, 3964] 13009 mul w0, w0, w1 13010 str w0, [x19, 2624] 13011 mul w0, w2, w0 13012 ldr w2, [x19, 248] 13013 str w0, [x19, 344] 13014 ldrh w0, [x19, 366] 13015 add w0, w0, w1 13016 sub w0, w2, w0 13017 udiv w0, w0, w3 13018 strh w0, [x19, 2692] 13019 cmp w1, w2 13020 bls .L1698 13021 adrp x1, .LANCHOR1 13022 add x1, x1, :lo12:.LANCHOR1 13023 adrp x0, .LC9 13024 add x1, x1, 600 13025 add x0, x0, :lo12:.LC9 13026 mov w2, 1498 13027 bl sftl_printk 13028.L1698: 13029 ldrh w2, [x19, 2528] 13030 add x0, x19, 2660 13031 ldr w1, [x19, 2544] 13032 ldrh w3, [x19, 2526] 13033 lsr w4, w2, 6 13034 and w2, w2, 63 13035 strb w2, [x19, 30] 13036 ldrb w2, [x19, 2523] 13037 strb w2, [x19, 32] 13038 mov w2, 65535 13039 str w2, [x19, 176] 13040 ldrh w2, [x19, 2530] 13041 strh w2, [x19, 80] 13042 ldrh w2, [x19, 2532] 13043 strh w4, [x19, 26] 13044 stp wzr, wzr, [x0, -16] 13045 lsr w4, w2, 6 13046 and w2, w2, 63 13047 strb w2, [x19, 86] 13048 ldrb w2, [x19, 2524] 13049 strb w2, [x19, 88] 13050 ldrh w2, [x19, 2534] 13051 strh w2, [x19, 128] 13052 ldrh w2, [x19, 2536] 13053 strh w4, [x19, 82] 13054 stp w1, wzr, [x0, 8] 13055 lsr w4, w2, 6 13056 and w2, w2, 63 13057 strb w2, [x19, 134] 13058 ldrb w2, [x19, 2525] 13059 strh w3, [x19, 24] 13060 strh w4, [x19, 130] 13061 strb w2, [x19, 136] 13062 strb wzr, [x19, 182] 13063 strb wzr, [x19, 184] 13064 str wzr, [x19, 2628] 13065 str wzr, [x19, 2636] 13066 str wzr, [x19, 2684] 13067 str wzr, [x19, 2640] 13068 ldr w0, [x19, 2552] 13069 ldr w1, [x19, 2660] 13070 cmp w0, w1 13071 bls .L1699 13072 str w0, [x19, 2660] 13073.L1699: 13074 ldr w0, [x19, 2548] 13075 ldr w1, [x19, 2664] 13076 cmp w0, w1 13077 bls .L1700 13078 str w0, [x19, 2664] 13079.L1700: 13080 mov w0, 65535 13081 cmp w3, w0 13082 beq .L1701 13083 add x0, x19, 24 13084 bl make_superblock 13085.L1701: 13086 ldrh w2, [x19, 80] 13087 add x0, x19, 80 13088 mov w1, 65535 13089 cmp w2, w1 13090 beq .L1702 13091 bl make_superblock 13092.L1702: 13093 ldrh w2, [x19, 128] 13094 add x0, x19, 128 13095 mov w1, 65535 13096 cmp w2, w1 13097 beq .L1703 13098 bl make_superblock 13099.L1703: 13100 ldrh w2, [x19, 176] 13101 add x0, x19, 176 13102 mov w1, 65535 13103 cmp w2, w1 13104 beq .L1704 13105 bl make_superblock 13106.L1704: 13107 mov w0, 0 13108 b .L1684 13109 .size FtlLoadSysInfo, .-FtlLoadSysInfo 13110 .section .rodata.str1.1 13111.LC129: 13112 .string "%s last blk_id =%x page =%x hash error hash =%x hash_r =%x\n" 13113.LC130: 13114 .string "%s scan blk_id =%x page =%x hash error hash =%x hash_r =%x\n" 13115 .text 13116 .align 2 13117 .global FtlMapTblRecovery 13118 .type FtlMapTblRecovery, %function 13119FtlMapTblRecovery: 13120 hint 34 // bti c 13121 .section __patchable_function_entries 13122 .align 3 13123 .8byte .LPFE129 13124 .text 13125.LPFE129: 13126 nop 13127 nop 13128 hint 25 // paciasp 13129 stp x29, x30, [sp, -144]! 13130 mov w1, 0 13131 mov x29, sp 13132 stp x19, x20, [sp, 16] 13133 mov x19, x0 13134 mov w20, 0 13135 stp x21, x22, [sp, 32] 13136 stp x23, x24, [sp, 48] 13137 stp x25, x26, [sp, 64] 13138 stp x27, x28, [sp, 80] 13139 ldrh w23, [x0, 6] 13140 ldr x22, [x0, 40] 13141 ldp x27, x28, [x0, 16] 13142 lsl w2, w23, 2 13143 ldrh w0, [x0, 8] 13144 str w0, [sp, 112] 13145 mov x0, x22 13146 bl ftl_memset 13147 str xzr, [x19, 48] 13148 adrp x6, .LANCHOR0 13149 add x24, x6, :lo12:.LANCHOR0 13150 mov w0, -1 13151 ldr x1, [x24, 3448] 13152 str x1, [x24, 3720] 13153 ldr x21, [x24, 3512] 13154 str x21, [x24, 3728] 13155 str w0, [x19] 13156 mov w0, 1 13157 str w0, [x19, 56] 13158 ldr w0, [sp, 112] 13159 sub w0, w0, #1 13160 str w0, [sp, 124] 13161 adrp x0, .LANCHOR1 13162 add x0, x0, :lo12:.LANCHOR1 13163 add x0, x0, 615 13164 str x0, [sp, 128] 13165.L1714: 13166 ldr w0, [sp, 112] 13167 cmp w20, w0 13168 bge .L1734 13169 add x0, x27, w20, sxtw 1 13170 str x0, [sp, 104] 13171 ldr w0, [sp, 124] 13172 sxtw x26, w20 13173 sbfiz x1, x20, 1, 32 13174 cmp w0, w20 13175 bne .L1715 13176 ldr x0, [sp, 104] 13177 mov w1, 1 13178 adrp x27, .LC129 13179 add x27, x27, :lo12:.LC129 13180 ldrh w0, [x0] 13181 bl FtlGetLastWrittenPage 13182 sxth w25, w0 13183 add w25, w25, 1 13184 strh w20, [x19] 13185 strh w25, [x19, 2] 13186 ldr w0, [x28, x26, lsl 2] 13187 adrp x26, .LANCHOR1 13188 add x26, x26, :lo12:.LANCHOR1 13189 mov w28, 0 13190 add x26, x26, 615 13191 str w0, [x19, 48] 13192.L1716: 13193 cmp w28, w25 13194 blt .L1720 13195.L1734: 13196 mov x0, x19 13197 bl ftl_free_no_use_map_blk 13198 ldrh w1, [x19, 2] 13199 ldrh w0, [x24, 308] 13200 cmp w1, w0 13201 bne .L1722 13202 mov x0, x19 13203 bl ftl_map_blk_alloc_new_blk 13204.L1722: 13205 mov x0, x19 13206 bl ftl_map_blk_gc 13207 mov x0, x19 13208 bl ftl_map_blk_gc 13209 mov w0, 0 13210 ldp x19, x20, [sp, 16] 13211 ldp x21, x22, [sp, 32] 13212 ldp x23, x24, [sp, 48] 13213 ldp x25, x26, [sp, 64] 13214 ldp x27, x28, [sp, 80] 13215 ldp x29, x30, [sp], 144 13216 hint 29 // autiasp 13217 ret 13218.L1720: 13219 ldr x0, [sp, 104] 13220 add x3, x24, 3712 13221 mov w2, 1 13222 mov w1, w2 13223 str x3, [sp, 112] 13224 ldrh w0, [x0] 13225 orr w0, w28, w0, lsl 10 13226 str w0, [x24, 3716] 13227 mov x0, x3 13228 bl FlashReadPages 13229 ldr x3, [sp, 112] 13230 ldr x0, [x3, 16] 13231 ldr w4, [x0, 12] 13232 ldr w0, [x24, 3712] 13233 str w4, [sp, 112] 13234 cmn w0, #1 13235 cbz w4, .L1717 13236 beq .L1735 13237 ldrh w1, [x24, 314] 13238 ldr x0, [x3, 8] 13239 bl js_hash 13240 ldr w4, [sp, 112] 13241 mov w5, w0 13242 cmp w4, w0 13243 beq .L1719 13244 mov x0, x27 13245 mov w3, w28 13246 mov w2, w20 13247 mov x1, x26 13248 bl sftl_printk 13249 mov w0, -1 13250 str w0, [x24, 3712] 13251.L1735: 13252 add w28, w28, 1 13253 sxth w28, w28 13254 b .L1716 13255.L1717: 13256 beq .L1735 13257.L1719: 13258 ldrh w0, [x21, 8] 13259 cmp w0, w23 13260 bcs .L1735 13261 ldrh w2, [x21] 13262 ldrh w1, [x19, 4] 13263 cmp w2, w1 13264 bne .L1735 13265 ubfiz x0, x0, 2, 16 13266 ldr w1, [x24, 3716] 13267 str w1, [x22, x0] 13268 b .L1735 13269.L1715: 13270 add x0, x24, 3712 13271 ldr x2, [x24, 3448] 13272 str x2, [x0, 8] 13273 ldrh w2, [x24, 308] 13274 ldrh w1, [x27, x1] 13275 sub w2, w2, #1 13276 orr w1, w2, w1, lsl 10 13277 mov w2, 1 13278 str w1, [x0, 4] 13279 mov w1, w2 13280 bl FlashReadPages 13281 ldr w0, [x24, 3712] 13282 cmn w0, #1 13283 beq .L1738 13284 ldrh w1, [x21] 13285 ldrh w0, [x19, 4] 13286 cmp w1, w0 13287 bne .L1738 13288 ldrh w1, [x21, 8] 13289 mov w0, 64245 13290 cmp w1, w0 13291 beq .L1739 13292.L1738: 13293 adrp x25, .LC130 13294 mov w26, 0 13295 add x25, x25, :lo12:.LC130 13296 b .L1730 13297.L1726: 13298 ldr x3, [x24, 3448] 13299 lsl w1, w0, 1 13300 ldr w4, [x3, w1, sxtw 2] 13301 and w2, w4, 65535 13302 cmp w23, w4, uxth 13303 bls .L1725 13304 add w1, w1, 1 13305 ldr w3, [x3, w1, sxtw 2] 13306 ubfiz x1, x2, 2, 16 13307 str w3, [x22, x1] 13308.L1725: 13309 add w0, w0, 1 13310 sxth w0, w0 13311.L1724: 13312 ldrh w1, [x24, 308] 13313 sub w1, w1, #1 13314 cmp w0, w1 13315 blt .L1726 13316.L1732: 13317 add w20, w20, 1 13318 sxth w20, w20 13319 b .L1714 13320.L1739: 13321 mov w0, 0 13322 b .L1724 13323.L1731: 13324 ldr x0, [sp, 104] 13325 add x5, x24, 3712 13326 mov w2, 1 13327 mov w1, w2 13328 str x5, [sp, 136] 13329 ldrh w0, [x0] 13330 orr w0, w26, w0, lsl 10 13331 str w0, [x24, 3716] 13332 mov x0, x5 13333 bl FlashReadPages 13334 ldr x5, [sp, 136] 13335 ldr x0, [x5, 16] 13336 ldr w4, [x0, 12] 13337 ldr w0, [x24, 3712] 13338 str w4, [sp, 136] 13339 cmn w0, #1 13340 cbz w4, .L1727 13341 beq .L1736 13342 ldrh w1, [x24, 314] 13343 ldr x0, [x5, 8] 13344 bl js_hash 13345 ldr w4, [sp, 136] 13346 mov w5, w0 13347 cmp w4, w0 13348 beq .L1729 13349 ldr x1, [sp, 128] 13350 mov x0, x25 13351 mov w3, w26 13352 mov w2, w20 13353 bl sftl_printk 13354 mov w0, -1 13355 str w0, [x24, 3712] 13356.L1736: 13357 add w3, w26, 1 13358 sxth w26, w3 13359.L1730: 13360 ldrh w0, [x24, 308] 13361 cmp w26, w0 13362 blt .L1731 13363 b .L1732 13364.L1727: 13365 beq .L1736 13366.L1729: 13367 ldrh w0, [x21, 8] 13368 cmp w0, w23 13369 bcs .L1736 13370 ldrh w2, [x21] 13371 ldrh w1, [x19, 4] 13372 cmp w2, w1 13373 bne .L1736 13374 ubfiz x0, x0, 2, 16 13375 ldr w1, [x24, 3716] 13376 str w1, [x22, x0] 13377 b .L1736 13378 .size FtlMapTblRecovery, .-FtlMapTblRecovery 13379 .align 2 13380 .global FtlLoadVonderInfo 13381 .type FtlLoadVonderInfo, %function 13382FtlLoadVonderInfo: 13383 hint 34 // bti c 13384 .section __patchable_function_entries 13385 .align 3 13386 .8byte .LPFE130 13387 .text 13388.LPFE130: 13389 nop 13390 nop 13391 adrp x1, .LANCHOR0 13392 add x1, x1, :lo12:.LANCHOR0 13393 hint 25 // paciasp 13394 stp x29, x30, [sp, -16]! 13395 add x0, x1, 3880 13396 mov x29, sp 13397 ldrh w2, [x1, 324] 13398 strh w2, [x0, 10] 13399 mov w2, -3962 13400 strh w2, [x0, 4] 13401 ldrh w2, [x1, 348] 13402 strh w2, [x0, 8] 13403 ldrh w2, [x1, 326] 13404 strh w2, [x0, 6] 13405 ldr x2, [x1, 352] 13406 str x2, [x0, 16] 13407 ldr x2, [x1, 3584] 13408 str x2, [x0, 24] 13409 ldr x2, [x1, 3576] 13410 ldr x1, [x1, 3592] 13411 stp x2, x1, [x0, 32] 13412 bl FtlMapTblRecovery 13413 mov w0, 0 13414 ldp x29, x30, [sp], 16 13415 hint 29 // autiasp 13416 ret 13417 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo 13418 .align 2 13419 .global FtlLoadMapInfo 13420 .type FtlLoadMapInfo, %function 13421FtlLoadMapInfo: 13422 hint 34 // bti c 13423 .section __patchable_function_entries 13424 .align 3 13425 .8byte .LPFE131 13426 .text 13427.LPFE131: 13428 nop 13429 nop 13430 hint 25 // paciasp 13431 stp x29, x30, [sp, -16]! 13432 mov x29, sp 13433 bl FtlL2PDataInit 13434 adrp x0, .LANCHOR0 13435 add x0, x0, :lo12:.LANCHOR0 13436 add x0, x0, 3632 13437 bl FtlMapTblRecovery 13438 mov w0, 0 13439 ldp x29, x30, [sp], 16 13440 hint 29 // autiasp 13441 ret 13442 .size FtlLoadMapInfo, .-FtlLoadMapInfo 13443 .align 2 13444 .global FtlSysBlkInit 13445 .type FtlSysBlkInit, %function 13446FtlSysBlkInit: 13447 hint 34 // bti c 13448 .section __patchable_function_entries 13449 .align 3 13450 .8byte .LPFE132 13451 .text 13452.LPFE132: 13453 nop 13454 nop 13455 hint 25 // paciasp 13456 stp x29, x30, [sp, -48]! 13457 mov x29, sp 13458 stp x19, x20, [sp, 16] 13459 adrp x19, .LANCHOR0 13460 add x19, x19, :lo12:.LANCHOR0 13461 stp x21, x22, [sp, 32] 13462 ldrh w0, [x19, 240] 13463 strh wzr, [x19, 3744] 13464 bl FtlFreeSysBlkQueueInit 13465 bl FtlScanSysBlk 13466 ldrh w1, [x19, 2696] 13467 mov w0, 65535 13468 cmp w1, w0 13469 bne .L1758 13470.L1760: 13471 mov w20, -1 13472.L1757: 13473 mov w0, w20 13474 ldp x19, x20, [sp, 16] 13475 ldp x21, x22, [sp, 32] 13476 ldp x29, x30, [sp], 48 13477 hint 29 // autiasp 13478 ret 13479.L1758: 13480 bl FtlLoadSysInfo 13481 mov w20, w0 13482 cbnz w0, .L1760 13483 bl FtlLoadMapInfo 13484 bl FtlLoadVonderInfo 13485 bl Ftl_load_ext_data 13486 bl FtlLoadEctTbl 13487 bl FtlFreeSysBLkSort 13488 bl SupperBlkListInit 13489 bl FtlPowerLostRecovery 13490 mov w0, 1 13491 bl FtlUpdateVaildLpn 13492 ldr x1, [x19, 2608] 13493 mov x0, 0 13494 ldrh w2, [x19, 342] 13495 add x1, x1, 4 13496.L1761: 13497 mov w3, w0 13498 cmp w2, w0 13499 ble .L1765 13500 lsl x4, x0, 4 13501 add x0, x0, 1 13502 ldr w4, [x1, x4] 13503 tbz w4, #31, .L1761 13504.L1765: 13505 ldrh w0, [x19, 2540] 13506 add w0, w0, 1 13507 strh w0, [x19, 2540] 13508 cmp w3, w2 13509 bge .L1772 13510.L1762: 13511 add x22, x19, 24 13512 add x21, x19, 80 13513 mov x0, x22 13514 bl FtlSuperblockPowerLostFix 13515 mov x0, x21 13516 bl FtlSuperblockPowerLostFix 13517 ldrh w0, [x19, 24] 13518 ldr x2, [x19, 72] 13519 lsl x0, x0, 1 13520 ldrh w3, [x19, 28] 13521 ldrh w1, [x2, x0] 13522 sub w1, w1, w3 13523 strh w1, [x2, x0] 13524 strh wzr, [x19, 28] 13525 ldrh w0, [x19, 306] 13526 strh w0, [x19, 26] 13527 ldrh w0, [x19, 80] 13528 ldr x2, [x19, 72] 13529 strb wzr, [x19, 30] 13530 lsl x0, x0, 1 13531 ldrh w3, [x19, 84] 13532 ldrh w1, [x2, x0] 13533 sub w1, w1, w3 13534 strh w1, [x2, x0] 13535 strh wzr, [x19, 84] 13536 ldrh w0, [x19, 306] 13537 strh w0, [x19, 82] 13538 ldrh w0, [x19, 2542] 13539 strb wzr, [x19, 86] 13540 add w0, w0, 1 13541 strh w0, [x19, 2542] 13542 bl l2p_flush 13543 bl FtlVpcTblFlush 13544 bl FtlVpcTblFlush 13545 b .L1766 13546.L1772: 13547 ldrh w0, [x19, 3744] 13548 cbnz w0, .L1762 13549.L1766: 13550 ldrh w0, [x19, 24] 13551 add x22, x19, 24 13552 mov w1, 65535 13553 cmp w0, w1 13554 beq .L1767 13555 ldrh w1, [x19, 28] 13556 add x21, x19, 80 13557 ldrh w2, [x19, 84] 13558 orr w1, w1, w2 13559 tst w1, 65535 13560 bne .L1767 13561 bl FtlGcRefreshBlock 13562 ldrh w0, [x19, 80] 13563 bl FtlGcRefreshBlock 13564 bl FtlVpcTblFlush 13565 mov x0, x22 13566 bl allocate_new_data_superblock 13567 mov x0, x21 13568 bl allocate_new_data_superblock 13569.L1767: 13570 bl FtlVpcCheckAndModify 13571 b .L1757 13572 .size FtlSysBlkInit, .-FtlSysBlkInit 13573 .align 2 13574 .global ftl_low_format 13575 .type ftl_low_format, %function 13576ftl_low_format: 13577 hint 34 // bti c 13578 .section __patchable_function_entries 13579 .align 3 13580 .8byte .LPFE133 13581 .text 13582.LPFE133: 13583 nop 13584 nop 13585 hint 25 // paciasp 13586 stp x29, x30, [sp, -48]! 13587 mov x29, sp 13588 stp x19, x20, [sp, 16] 13589 adrp x19, .LANCHOR0 13590 add x19, x19, :lo12:.LANCHOR0 13591 str x21, [sp, 32] 13592 ldrh w0, [x19, 240] 13593 str wzr, [x19, 2660] 13594 str wzr, [x19, 2664] 13595 str wzr, [x19, 2676] 13596 bl FtlFreeSysBlkQueueInit 13597 bl FtlLoadBbt 13598 cbz w0, .L1775 13599 bl FtlMakeBbt 13600.L1775: 13601 mov w3, 23752 13602 mov w0, 0 13603 movk w3, 0xa0f, lsl 16 13604.L1776: 13605 ldrh w1, [x19, 262] 13606 cmp w0, w1, lsl 7 13607 blt .L1777 13608 ldrh w21, [x19, 244] 13609 mov w20, 0 13610.L1778: 13611 ldrh w0, [x19, 246] 13612 cmp w0, w21 13613 bhi .L1779 13614 ldrh w0, [x19, 236] 13615 sub w1, w20, #3 13616 cmp w1, w0, lsl 1 13617 bge .L1780 13618.L1784: 13619 mov w20, 0 13620 mov w21, 0 13621.L1781: 13622 ldrh w0, [x19, 244] 13623 cmp w0, w21 13624 bhi .L1785 13625 ldrh w0, [x19, 246] 13626 ldrh w2, [x19, 236] 13627 str w0, [x19, 3420] 13628 ldr w0, [x19, 248] 13629 udiv w4, w0, w2 13630 ubfx x3, x4, 5, 16 13631 str w4, [x19, 2624] 13632 add w1, w3, 36 13633 strh w1, [x19, 2692] 13634 mov w1, 24 13635 mul w1, w2, w1 13636 cmp w20, w1 13637 ble .L1786 13638 sub w0, w0, w20 13639 udiv w0, w0, w2 13640 str w0, [x19, 2624] 13641 lsr w0, w0, 5 13642 add w0, w0, 24 13643 strh w0, [x19, 2692] 13644.L1786: 13645 ldrh w1, [x19, 298] 13646 cbz w1, .L1788 13647 ldrh w0, [x19, 2692] 13648 add w0, w0, w1, lsr 1 13649 strh w0, [x19, 2692] 13650 mul w0, w1, w2 13651 cmp w20, w0 13652 bge .L1788 13653 add w1, w1, 32 13654 str w4, [x19, 2624] 13655 add w1, w3, w1 13656 strh w1, [x19, 2692] 13657.L1788: 13658 ldrh w1, [x19, 2692] 13659 add x21, x19, 24 13660 ldr w0, [x19, 2624] 13661 mov w20, -1 13662 sub w0, w0, w1 13663 ldrh w1, [x19, 306] 13664 mul w0, w0, w2 13665 str w0, [x19, 3964] 13666 mul w0, w1, w0 13667 ldrh w1, [x19, 262] 13668 str w0, [x19, 2624] 13669 mul w0, w1, w0 13670 str w0, [x19, 344] 13671 bl FtlBbmTblFlush 13672 ldr x0, [x19, 72] 13673 mov w1, 0 13674 ldrh w2, [x19, 246] 13675 lsl w2, w2, 1 13676 bl ftl_memset 13677 mov w1, 65535 13678 mov w0, 1 13679 strb wzr, [x21, 6] 13680 strb w0, [x21, 8] 13681 str wzr, [x19, 24] 13682 str w1, [x19, 176] 13683 strb wzr, [x19, 182] 13684 strb wzr, [x19, 184] 13685 str wzr, [x19, 2620] 13686.L1790: 13687 mov x0, x21 13688 bl make_superblock 13689 ldrb w1, [x21, 7] 13690 ldrh w0, [x21] 13691 cbnz w1, .L1791 13692 ldr x1, [x19, 72] 13693 ubfiz x0, x0, 1, 16 13694 strh w20, [x1, x0] 13695 ldrh w0, [x21] 13696 add w0, w0, 1 13697 strh w0, [x21] 13698 b .L1790 13699.L1777: 13700 ldr x4, [x19, 3472] 13701 ubfiz x2, x0, 2, 16 13702 mvn w1, w0 13703 orr w1, w0, w1, lsl 16 13704 str w1, [x4, x2] 13705 add w0, w0, 1 13706 ldr x1, [x19, 3480] 13707 and w0, w0, 65535 13708 str w3, [x1, x2] 13709 b .L1776 13710.L1779: 13711 mov w0, w21 13712 mov w1, 1 13713 add w21, w21, 1 13714 bl FtlLowFormatEraseBlock 13715 add w20, w0, w20 13716 and w21, w21, 65535 13717 and w20, w20, 65535 13718 b .L1778 13719.L1780: 13720 udiv w20, w20, w0 13721 ldr w0, [x19, 336] 13722 add w0, w20, w0 13723 bl FtlSysBlkNumInit 13724 ldrh w0, [x19, 240] 13725 bl FtlFreeSysBlkQueueInit 13726 ldrh w20, [x19, 244] 13727.L1782: 13728 ldrh w0, [x19, 246] 13729 cmp w0, w20 13730 bls .L1784 13731 mov w0, w20 13732 add w20, w20, 1 13733 mov w1, 1 13734 and w20, w20, 65535 13735 bl FtlLowFormatEraseBlock 13736 b .L1782 13737.L1785: 13738 mov w0, w21 13739 mov w1, 0 13740 add w21, w21, 1 13741 bl FtlLowFormatEraseBlock 13742 add w20, w0, w20 13743 and w21, w21, 65535 13744 and w20, w20, 65535 13745 b .L1781 13746.L1791: 13747 ldr w1, [x19, 2660] 13748 ubfiz x0, x0, 1, 16 13749 str w1, [x21, 12] 13750 add x20, x19, 80 13751 add w1, w1, 1 13752 str w1, [x19, 2660] 13753 ldr x1, [x19, 72] 13754 ldrh w2, [x21, 4] 13755 strh w2, [x1, x0] 13756 strh wzr, [x20, 2] 13757 ldrh w0, [x21] 13758 mov w21, -1 13759 strb wzr, [x20, 6] 13760 add w0, w0, 1 13761 strh w0, [x19, 80] 13762 mov w0, 1 13763 strb w0, [x20, 8] 13764.L1792: 13765 mov x0, x20 13766 bl make_superblock 13767 ldrb w1, [x20, 7] 13768 ldrh w0, [x20] 13769 cbnz w1, .L1793 13770 ldr x1, [x19, 72] 13771 ubfiz x0, x0, 1, 16 13772 strh w21, [x1, x0] 13773 ldrh w0, [x20] 13774 add w0, w0, 1 13775 strh w0, [x20] 13776 b .L1792 13777.L1793: 13778 ldr w1, [x19, 2660] 13779 ubfiz x0, x0, 1, 16 13780 str w1, [x20, 12] 13781 add w1, w1, 1 13782 str w1, [x19, 2660] 13783 ldr x1, [x19, 72] 13784 ldrh w2, [x20, 4] 13785 strh w2, [x1, x0] 13786 mov w0, -1 13787 strh w0, [x19, 128] 13788 bl FtlFreeSysBlkQueueOut 13789 strh w0, [x19, 2696] 13790 add x1, x19, 2560 13791 mov w0, -65536 13792 str w0, [x1, 138] 13793 ldr w0, [x19, 3964] 13794 strh w0, [x19, 2702] 13795 ldr w0, [x19, 2660] 13796 str w0, [x19, 2704] 13797 add w0, w0, 1 13798 str w0, [x19, 2660] 13799 bl FtlVpcTblFlush 13800 bl FtlSysBlkInit 13801 cbnz w0, .L1794 13802 adrp x0, .LANCHOR2 13803 mov w1, 1 13804 str w1, [x0, #:lo12:.LANCHOR2] 13805.L1794: 13806 mov w0, 0 13807 ldp x19, x20, [sp, 16] 13808 ldr x21, [sp, 32] 13809 ldp x29, x30, [sp], 48 13810 hint 29 // autiasp 13811 ret 13812 .size ftl_low_format, .-ftl_low_format 13813 .align 2 13814 .global sftl_init 13815 .type sftl_init, %function 13816sftl_init: 13817 hint 34 // bti c 13818 .section __patchable_function_entries 13819 .align 3 13820 .8byte .LPFE134 13821 .text 13822.LPFE134: 13823 nop 13824 nop 13825 hint 25 // paciasp 13826 stp x29, x30, [sp, -32]! 13827 adrp x1, .LC1 13828 mov x29, sp 13829 add x1, x1, :lo12:.LC1 13830 stp x19, x20, [sp, 16] 13831 adrp x20, .LANCHOR2 13832 mov w0, -1 13833 adrp x19, .LANCHOR0 13834 add x19, x19, :lo12:.LANCHOR0 13835 str w0, [x20, #:lo12:.LANCHOR2] 13836 adrp x0, .LC78 13837 add x0, x0, :lo12:.LC78 13838 bl sftl_printk 13839 mov x0, x19 13840 bl FtlConstantsInit 13841 bl FtlMemInit 13842 bl FtlVariablesInit 13843 ldrh w0, [x19, 240] 13844 bl FtlFreeSysBlkQueueInit 13845 bl FtlLoadBbt 13846 cbnz w0, .L1800 13847 bl FtlSysBlkInit 13848 cbnz w0, .L1800 13849 mov w0, 1 13850 str w0, [x20, #:lo12:.LANCHOR2] 13851 ldrh w0, [x19, 228] 13852 cmp w0, 15 13853 bhi .L1800 13854 mov w19, 8129 13855.L1801: 13856 mov w1, 1 13857 mov w0, 0 13858 bl rk_ftl_garbage_collect 13859 subs w19, w19, #1 13860 bne .L1801 13861.L1800: 13862 mov w0, 0 13863 ldp x19, x20, [sp, 16] 13864 ldp x29, x30, [sp], 32 13865 hint 29 // autiasp 13866 ret 13867 .size sftl_init, .-sftl_init 13868 .section .rodata.str1.1 13869.LC131: 13870 .string "write_idblock %x %x\n" 13871.LC132: 13872 .string "write_idblock fail! %x %x %x %x\n" 13873.LC133: 13874 .string "%s idb buffer alloc fail\n" 13875 .text 13876 .align 2 13877 .global FtlWriteToIDB 13878 .type FtlWriteToIDB, %function 13879FtlWriteToIDB: 13880 hint 34 // bti c 13881 .section __patchable_function_entries 13882 .align 3 13883 .8byte .LPFE135 13884 .text 13885.LPFE135: 13886 nop 13887 nop 13888 hint 25 // paciasp 13889 stp x29, x30, [sp, -208]! 13890 adrp x5, .LANCHOR0 13891 mov x29, sp 13892 stp x19, x20, [sp, 16] 13893 mov w20, w0 13894 mrs x0, sp_el0 13895 stp x21, x22, [sp, 32] 13896 mov w19, w1 13897 add w22, w19, w20 13898 stp x23, x24, [sp, 48] 13899 sub w23, w22, #1 13900 cmp w23, 63 13901 stp x25, x26, [sp, 64] 13902 add x25, x5, :lo12:.LANCHOR0 13903 stp x27, x28, [sp, 80] 13904 ldr x1, [x0, 1376] 13905 str x1, [sp, 200] 13906 mov x1, 0 13907 bls .L1805 13908 cmp w20, 575 13909 bls .L1806 13910.L1805: 13911 ldr w0, [x25, 3968] 13912 cbnz w0, .L1807 13913.L1869: 13914 mov w19, 0 13915 b .L1804 13916.L1807: 13917 ldr x22, [x25, 3976] 13918 mov w0, 35899 13919 movk w0, 0xfcdc, lsl 16 13920 ldr w1, [x22] 13921 cmp w1, w0 13922 bne .L1809 13923 add x1, x22, 258048 13924 ldrh w2, [x25, 10] 13925 add x1, x1, 2044 13926 mov w0, 0 13927 mov w19, 65023 13928.L1813: 13929 ldr w3, [x1] 13930 cbnz w3, .L1810 13931 ldr w3, [x22, w0, uxtw 2] 13932 add w0, w0, 1 13933 str w3, [x1, 2048] 13934 cmp w0, 4096 13935 bls .L1811 13936 mov w0, 0 13937.L1811: 13938 sub w19, w19, #1 13939 sub x1, x1, #4 13940 cmp w19, 4096 13941 bne .L1813 13942 mov w19, 512 13943 b .L1812 13944.L1810: 13945 add w19, w19, 127 13946 lsr w19, w19, 7 13947.L1812: 13948 ubfiz w0, w2, 2, 14 13949 add w20, w19, 4 13950 mov w1, w19 13951 mov w23, 0 13952 mov w21, 0 13953 udiv w20, w20, w0 13954 adrp x0, .LC131 13955 add x0, x0, :lo12:.LC131 13956 add w20, w20, 1 13957 mov w2, w20 13958 bl sftl_printk 13959 lsl w0, w19, 7 13960 str w0, [sp, 100] 13961.L1814: 13962 add w0, w20, w21 13963 str w0, [sp, 104] 13964 cmp w0, 8 13965 bls .L1836 13966 cbnz w23, .L1835 13967.L1809: 13968 mov w19, -1 13969 b .L1835 13970.L1836: 13971 ldr x0, [x25, 3984] 13972 mov w1, 0 13973 mov x2, 512 13974 bl memset 13975 ldrh w27, [x25, 10] 13976 ldr x1, [x25, 3384] 13977 mul w0, w21, w27 13978 str w0, [sp, 96] 13979 cbz x1, .L1845 13980 ldr x0, [x25, 3392] 13981 mov w24, 6 13982 cmp x0, 0 13983 mov w0, 9 13984 csel w24, w24, w0, eq 13985.L1815: 13986 mul w28, w21, w27 13987 mov w26, 0 13988.L1816: 13989 ldr x3, [x25, 3360] 13990 mov w1, w28 13991 add w26, w26, 1 13992 add w28, w28, w27 13993 mov w0, 0 13994 blr x3 13995 cmp w20, w26 13996 bhi .L1816 13997 cmp w24, 9 13998 bne .L1847 13999 ldr x28, [x25, 3984] 14000 mov w2, 1024 14001 mov w1, 0 14002 mov x0, x28 14003 bl ftl_memset 14004 mov x0, 18766 14005 str wzr, [x28, 12] 14006 movk x0, 0x464e, lsl 16 14007 mov w1, 12 14008 movk x0, 0xc, lsl 32 14009 str x0, [x28] 14010 mov w0, 1024 14011 strh w0, [x28, 16] 14012 ldrh w0, [x25, 10] 14013 strh w0, [x28, 18] 14014 mov w0, 4096 14015 str w0, [x28, 20] 14016 add x0, x28, 12 14017 bl js_hash 14018 str w0, [x28, 8] 14019.L1817: 14020 mul w0, w20, w27 14021 mov x27, x22 14022 mov w26, 0 14023 str w0, [sp, 108] 14024.L1818: 14025 ldr w0, [sp, 108] 14026 cmp w26, w0 14027 beq .L1825 14028 cmp w24, 9 14029 lsl w0, w26, 2 14030 csinc w0, w0, w26, ne 14031 str w0, [sp, 136] 14032 mov w0, 61424 14033 str w0, [sp, 140] 14034 cmp w26, 0 14035 ccmp w24, 9, 0, eq 14036 bne .L1821 14037 ldr x1, [x25, 3384] 14038 add x8, x25, 3352 14039 mov w0, 70 14040 str x8, [sp, 112] 14041 blr x1 14042 ldr w1, [sp, 96] 14043 ldr x8, [sp, 112] 14044 add x3, sp, 136 14045 mov x2, x28 14046 mov w0, 0 14047 str x8, [sp, 120] 14048 ldr x9, [x8, 16] 14049 blr x9 14050 mov w1, w0 14051 ldr x8, [sp, 120] 14052 str w1, [sp, 112] 14053 ldrb w0, [x25, 22] 14054 ldr x2, [x8, 32] 14055 blr x2 14056 ldr w1, [sp, 112] 14057 cmn w1, #1 14058 bne .L1822 14059.L1825: 14060 ldrb w0, [x25, 14] 14061 add x1, x25, 3352 14062 str w0, [sp, 108] 14063 ldrh w0, [x25, 10] 14064 ldr x3, [x1, 32] 14065 ldr x26, [x25, 3984] 14066 mul w27, w21, w0 14067 cbnz x3, .L1823 14068 mov w1, 6 14069.L1868: 14070 mul w0, w20, w0 14071 mov w28, 0 14072 str w1, [sp, 96] 14073 str w0, [sp, 112] 14074.L1827: 14075 ldr w0, [sp, 112] 14076 cmp w28, w0 14077 beq .L1831 14078 ldr w0, [sp, 96] 14079 cmp w28, 0 14080 ccmp w0, 9, 0, eq 14081 bne .L1828 14082 ldr x1, [x25, 3384] 14083 mov w0, 70 14084 blr x1 14085 ldr x1, [x25, 3392] 14086 mov w0, 2 14087 blr x1 14088 add x3, sp, 136 14089 ldr x7, [x25, 3376] 14090 mov x2, x26 14091 mov w1, w27 14092 mov w0, 0 14093 blr x7 14094 ldrb w0, [sp, 108] 14095 ldr x1, [x25, 3392] 14096 blr x1 14097 ldrb w0, [x25, 22] 14098 ldr x1, [x25, 3384] 14099 blr x1 14100 ldr w0, [x26] 14101 mov w1, 18766 14102 movk w1, 0x464e, lsl 16 14103 cmp w0, w1 14104 beq .L1829 14105.L1831: 14106 ldr x0, [x25, 3984] 14107 mov x24, 0 14108.L1830: 14109 ldr w2, [x0, x24, lsl 2] 14110 add x27, x0, x24, lsl 2 14111 ldr w1, [x22, x24, lsl 2] 14112 add x28, x22, x24, lsl 2 14113 cmp w2, w1 14114 beq .L1833 14115 mov x2, 512 14116 mov w1, 0 14117 bl memset 14118 ldr w2, [x27] 14119 mov w1, w21 14120 ldr w3, [x28] 14121 mov w4, w24 14122 adrp x0, .LC132 14123 add x0, x0, :lo12:.LC132 14124 bl sftl_printk 14125 ldrh w1, [x25, 10] 14126 mov w0, 0 14127 ldr x2, [x25, 3360] 14128 mul w1, w1, w21 14129 blr x2 14130.L1834: 14131 ldr w21, [sp, 104] 14132 b .L1814 14133.L1845: 14134 mov w24, 6 14135 b .L1815 14136.L1847: 14137 mov x28, 0 14138 b .L1817 14139.L1821: 14140 ldr x8, [x25, 3368] 14141 add x3, sp, 136 14142 ldr w0, [sp, 96] 14143 mov x2, x27 14144 add w1, w0, w26 14145 mov w0, 0 14146 blr x8 14147 cmn w0, #1 14148 beq .L1825 14149 add x27, x27, 2048 14150.L1822: 14151 add w26, w26, 1 14152 b .L1818 14153.L1823: 14154 ldr x1, [x1, 40] 14155 mov w24, 6 14156 cmp x1, 0 14157 mov w1, 9 14158 csel w1, w24, w1, eq 14159 b .L1868 14160.L1828: 14161 ldr x6, [x25, 3376] 14162 add x3, sp, 136 14163 mov x2, x26 14164 add w1, w27, w28 14165 mov w0, 0 14166 blr x6 14167 cmn w0, #1 14168 beq .L1831 14169 ldr w0, [sp, 140] 14170 mov w1, 61424 14171 cmp w0, w1 14172 bne .L1831 14173 add x26, x26, 2048 14174.L1829: 14175 add w28, w28, 1 14176 b .L1827 14177.L1833: 14178 ldr w1, [sp, 100] 14179 add x24, x24, 1 14180 cmp w1, w24 14181 bhi .L1830 14182 add w23, w23, 1 14183 cmp w23, 5 14184 bls .L1834 14185.L1835: 14186 ldr x0, [x25, 3976] 14187 str wzr, [x25, 3968] 14188 bl kfree 14189 ldr x0, [x25, 3984] 14190 bl kfree 14191.L1804: 14192 mrs x0, sp_el0 14193 ldr x1, [sp, 200] 14194 ldr x2, [x0, 1376] 14195 subs x1, x1, x2 14196 mov x2, 0 14197 beq .L1844 14198 bl __stack_chk_fail 14199.L1806: 14200 mov x21, x2 14201 cmp w20, 64 14202 bne .L1837 14203 mov w0, 262144 14204 bl ftl_malloc 14205 str x0, [x25, 3976] 14206 mov w0, 262144 14207 bl ftl_malloc 14208 mov x1, x0 14209 ldr x0, [x25, 3976] 14210 str x1, [x25, 3984] 14211 cbz x0, .L1838 14212 cbz x1, .L1838 14213 mov w1, 1 14214 mov w2, 262144 14215 str w1, [x25, 3968] 14216 mov w1, 0 14217 bl ftl_memset 14218.L1839: 14219 sub w1, w20, #64 14220 ldr x0, [x25, 3976] 14221 cmp w20, 63 14222 bhi .L1841 14223 add w19, w19, w1 14224 mov w1, 64 14225 sub w20, w1, w20 14226 ubfiz x20, x20, 9, 25 14227 add x21, x21, x20 14228.L1842: 14229 cmp w23, 575 14230 bls .L1843 14231 sub w19, w19, w22 14232 add w19, w19, 576 14233.L1843: 14234 lsl w2, w19, 9 14235 mov x1, x21 14236 bl ftl_memcpy 14237 b .L1869 14238.L1838: 14239 adrp x1, .LANCHOR1 14240 add x1, x1, :lo12:.LANCHOR1 14241 adrp x0, .LC133 14242 add x1, x1, 633 14243 add x0, x0, :lo12:.LC133 14244 bl sftl_printk 14245.L1837: 14246 ldr w0, [x25, 3968] 14247 cbnz w0, .L1839 14248 b .L1869 14249.L1841: 14250 ubfiz x1, x1, 9, 25 14251 add x0, x0, x1 14252 b .L1842 14253.L1844: 14254 mov w0, w19 14255 ldp x19, x20, [sp, 16] 14256 ldp x21, x22, [sp, 32] 14257 ldp x23, x24, [sp, 48] 14258 ldp x25, x26, [sp, 64] 14259 ldp x27, x28, [sp, 80] 14260 ldp x29, x30, [sp], 208 14261 hint 29 // autiasp 14262 ret 14263 .size FtlWriteToIDB, .-FtlWriteToIDB 14264 .align 2 14265 .global sftl_write 14266 .type sftl_write, %function 14267sftl_write: 14268 hint 34 // bti c 14269 .section __patchable_function_entries 14270 .align 3 14271 .8byte .LPFE136 14272 .text 14273.LPFE136: 14274 nop 14275 nop 14276 hint 25 // paciasp 14277 stp x29, x30, [sp, -48]! 14278 mov x29, sp 14279 stp x19, x20, [sp, 16] 14280 mov w20, w1 14281 mov w19, w0 14282 str x21, [sp, 32] 14283 mov x21, x2 14284 bl FtlWriteToIDB 14285 mov x3, x21 14286 mov w2, w20 14287 mov w1, w19 14288 mov w0, 0 14289 bl FtlWrite 14290 ldp x19, x20, [sp, 16] 14291 ldr x21, [sp, 32] 14292 ldp x29, x30, [sp], 48 14293 hint 29 // autiasp 14294 ret 14295 .size sftl_write, .-sftl_write 14296 .align 2 14297 .global rk_sftl_vendor_dev_ops_register 14298 .type rk_sftl_vendor_dev_ops_register, %function 14299rk_sftl_vendor_dev_ops_register: 14300 hint 34 // bti c 14301 .section __patchable_function_entries 14302 .align 3 14303 .8byte .LPFE137 14304 .text 14305.LPFE137: 14306 nop 14307 nop 14308 adrp x2, .LANCHOR0 14309 add x2, x2, :lo12:.LANCHOR0 14310 hint 25 // paciasp 14311 ldr x3, [x2, 3992] 14312 cbnz x3, .L1874 14313 str x0, [x2, 3992] 14314 mov w0, 0 14315 str x1, [x2, 4000] 14316.L1872: 14317 hint 29 // autiasp 14318 ret 14319.L1874: 14320 mov w0, -1 14321 b .L1872 14322 .size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register 14323 .align 2 14324 .global rk_sftl_vendor_storage_init 14325 .type rk_sftl_vendor_storage_init, %function 14326rk_sftl_vendor_storage_init: 14327 hint 34 // bti c 14328 .section __patchable_function_entries 14329 .align 3 14330 .8byte .LPFE138 14331 .text 14332.LPFE138: 14333 nop 14334 nop 14335 hint 25 // paciasp 14336 stp x29, x30, [sp, -64]! 14337 mov w0, 65536 14338 mov x29, sp 14339 stp x19, x20, [sp, 16] 14340 adrp x20, .LANCHOR0 14341 add x20, x20, :lo12:.LANCHOR0 14342 stp x21, x22, [sp, 32] 14343 stp x23, x24, [sp, 48] 14344 bl ftl_malloc 14345 str x0, [x20, 4008] 14346 cbz x0, .L1882 14347 mov w24, 22084 14348 mov w23, 0 14349 mov w22, 0 14350 mov w21, 0 14351 movk w24, 0x524b, lsl 16 14352.L1880: 14353 ldr x3, [x20, 3992] 14354 lsl w0, w21, 7 14355 ldr x2, [x20, 4008] 14356 mov w1, 128 14357 blr x3 14358 mov w19, w0 14359 cbnz w0, .L1878 14360 ldr x3, [x20, 4008] 14361 ldr w0, [x3] 14362 cmp w0, w24 14363 bne .L1879 14364 add x0, x3, 49152 14365 ldr w1, [x3, 4] 14366 ldr w0, [x0, 16380] 14367 cmp w0, w1 14368 bne .L1879 14369 cmp w0, w22 14370 bls .L1879 14371 mov w23, w21 14372 mov w22, w0 14373.L1879: 14374 cbz w21, .L1883 14375 cbz w22, .L1881 14376 ldr x4, [x20, 3992] 14377 mov x2, x3 14378 lsl w0, w23, 7 14379 mov w1, 128 14380 blr x4 14381 mov w19, w0 14382 cbz w0, .L1876 14383.L1878: 14384 ldr x0, [x20, 4008] 14385 mov w19, -1 14386 bl kfree 14387 str xzr, [x20, 4008] 14388 b .L1876 14389.L1883: 14390 mov w21, 1 14391 b .L1880 14392.L1881: 14393 mov x0, x3 14394 mov x2, 65536 14395 mov w1, 0 14396 bl memset 14397 mov x3, x0 14398 mov x0, 22084 14399 movk x0, 0x524b, lsl 16 14400 movk x0, 0x1, lsl 32 14401 str x0, [x3] 14402 add x0, x3, 49152 14403 str w21, [x0, 16380] 14404 mov w0, -1032 14405 strh w0, [x3, 14] 14406.L1876: 14407 mov w0, w19 14408 ldp x19, x20, [sp, 16] 14409 ldp x21, x22, [sp, 32] 14410 ldp x23, x24, [sp, 48] 14411 ldp x29, x30, [sp], 64 14412 hint 29 // autiasp 14413 ret 14414.L1882: 14415 mov w19, -12 14416 b .L1876 14417 .size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init 14418 .align 2 14419 .global rk_sftl_vendor_read 14420 .type rk_sftl_vendor_read, %function 14421rk_sftl_vendor_read: 14422 hint 34 // bti c 14423 .section __patchable_function_entries 14424 .align 3 14425 .8byte .LPFE139 14426 .text 14427.LPFE139: 14428 nop 14429 nop 14430 mov w5, w0 14431 mov x0, x1 14432 adrp x1, .LANCHOR0+4008 14433 ldr x4, [x1, #:lo12:.LANCHOR0+4008] 14434 cbz x4, .L1889 14435 ldrh w1, [x4, 10] 14436 add x6, x4, 16 14437 mov x3, 0 14438.L1887: 14439 cmp w1, w3 14440 bhi .L1888 14441.L1889: 14442 mov w0, -1 14443 ret 14444.L1888: 14445 add x7, x3, 1 14446 lsl x3, x3, 3 14447 ldrh w8, [x6, x3] 14448 cmp w8, w5 14449 bne .L1890 14450 hint 25 // paciasp 14451 stp x29, x30, [sp, -32]! 14452 add x3, x4, x3 14453 mov x29, sp 14454 str x19, [sp, 16] 14455 ldrh w5, [x3, 20] 14456 ldrh w1, [x3, 18] 14457 cmp w5, w2 14458 add x1, x1, 1024 14459 csel w19, w5, w2, ls 14460 add x1, x4, x1 14461 csel w2, w5, w2, ls 14462 bl memcpy 14463 mov w0, w19 14464 ldr x19, [sp, 16] 14465 ldp x29, x30, [sp], 32 14466 hint 29 // autiasp 14467 ret 14468.L1890: 14469 mov x3, x7 14470 b .L1887 14471 .size rk_sftl_vendor_read, .-rk_sftl_vendor_read 14472 .align 2 14473 .global rk_sftl_vendor_write 14474 .type rk_sftl_vendor_write, %function 14475rk_sftl_vendor_write: 14476 hint 34 // bti c 14477 .section __patchable_function_entries 14478 .align 3 14479 .8byte .LPFE140 14480 .text 14481.LPFE140: 14482 nop 14483 nop 14484 hint 25 // paciasp 14485 stp x29, x30, [sp, -128]! 14486 mov x29, sp 14487 stp x21, x22, [sp, 32] 14488 adrp x22, .LANCHOR0 14489 add x22, x22, :lo12:.LANCHOR0 14490 stp x19, x20, [sp, 16] 14491 ldr x19, [x22, 4008] 14492 stp x23, x24, [sp, 48] 14493 stp x25, x26, [sp, 64] 14494 stp x27, x28, [sp, 80] 14495 cbz x19, .L1910 14496 add w21, w2, 63 14497 ldrh w3, [x19, 10] 14498 ldrh w23, [x19, 8] 14499 mov w7, w0 14500 mov x4, x1 14501 mov w27, w2 14502 and w21, w21, -64 14503 add x0, x19, 16 14504 mov x20, 0 14505.L1897: 14506 mov w25, w20 14507 cmp w3, w20 14508 bhi .L1904 14509 ldrh w1, [x19, 14] 14510 cmp w1, w21 14511 bcc .L1910 14512 add x3, x19, w3, uxth 3 14513 and w21, w21, 65535 14514 strh w7, [x3, 16] 14515 ldrh w0, [x19, 12] 14516 strh w0, [x3, 18] 14517 strh w27, [x3, 20] 14518 add w2, w0, w21 14519 sub w21, w1, w21 14520 and x0, x0, 65535 14521 strh w2, [x19, 12] 14522 add x0, x0, 1024 14523 strh w21, [x19, 14] 14524 uxtw x2, w27 14525 mov x1, x4 14526 add x0, x19, x0 14527 bl memcpy 14528 ldrh w0, [x19, 10] 14529 add w0, w0, 1 14530 strh w0, [x19, 10] 14531 b .L1912 14532.L1904: 14533 add x1, x20, 1 14534 lsl x20, x20, 3 14535 ldrh w2, [x0, x20] 14536 cmp w2, w7 14537 bne .L1908 14538 add x20, x19, x20 14539 add x5, x19, 1024 14540 ldrh w26, [x20, 20] 14541 add w26, w26, 63 14542 and w26, w26, -64 14543 cmp w27, w26 14544 bls .L1898 14545 ldrh w0, [x19, 14] 14546 cmp w0, w21 14547 bcc .L1910 14548 ldrh w6, [x20, 18] 14549 sub w24, w3, #1 14550.L1899: 14551 and w28, w6, 65535 14552 add x20, x20, 8 14553 cmp w24, w25 14554 bhi .L1900 14555 add x25, x19, w25, uxtw 3 14556 add x0, x5, w28, uxth 14557 uxtw x2, w27 14558 mov x1, x4 14559 and w21, w21, 65535 14560 strh w7, [x25, 16] 14561 strh w28, [x25, 18] 14562 add w28, w21, w28 14563 strh w27, [x25, 20] 14564 bl memcpy 14565 strh w28, [x19, 12] 14566 ldrh w0, [x19, 14] 14567 sub w21, w0, w21 14568 add w26, w21, w26 14569 strh w26, [x19, 14] 14570.L1912: 14571 ldr w0, [x19, 4] 14572 add x1, x19, 49152 14573 ldr x3, [x22, 4000] 14574 add w0, w0, 1 14575 str w0, [x19, 4] 14576 mov x2, x19 14577 str w0, [x1, 16380] 14578 mov w1, 128 14579 ldrh w0, [x19, 8] 14580 add w0, w0, 1 14581 and w0, w0, 65535 14582 cmp w0, 1 14583 csel w0, w0, wzr, ls 14584 strh w0, [x19, 8] 14585 lsl w0, w23, 7 14586 blr x3 14587 mov w0, 0 14588.L1895: 14589 ldp x19, x20, [sp, 16] 14590 ldp x21, x22, [sp, 32] 14591 ldp x23, x24, [sp, 48] 14592 ldp x25, x26, [sp, 64] 14593 ldp x27, x28, [sp, 80] 14594 ldp x29, x30, [sp], 128 14595 hint 29 // autiasp 14596 ret 14597.L1900: 14598 add w25, w25, 1 14599 str x5, [sp, 104] 14600 stp w6, w7, [sp, 112] 14601 add x1, x19, w25, uxtw 3 14602 str x4, [sp, 120] 14603 ldrh w0, [x1, 16] 14604 strh w0, [x20, 8] 14605 ldrh w0, [x1, 20] 14606 strh w28, [x20, 10] 14607 strh w0, [x20, 12] 14608 add x0, x5, w6, uxtw 14609 ldrh w2, [x1, 20] 14610 ldrh w1, [x1, 18] 14611 add w2, w2, 63 14612 and w28, w2, -64 14613 add x1, x5, x1 14614 and x2, x2, 131008 14615 bl memcpy 14616 ldp w6, w7, [sp, 112] 14617 ldr x5, [sp, 104] 14618 add w6, w6, w28 14619 ldr x4, [sp, 120] 14620 b .L1899 14621.L1898: 14622 ldrh w0, [x20, 18] 14623 uxtw x2, w27 14624 mov x1, x4 14625 add x0, x5, x0 14626 bl memcpy 14627 strh w27, [x20, 20] 14628 b .L1912 14629.L1908: 14630 mov x20, x1 14631 b .L1897 14632.L1910: 14633 mov w0, -1 14634 b .L1895 14635 .size rk_sftl_vendor_write, .-rk_sftl_vendor_write 14636 .section .rodata.str1.1 14637.LC134: 14638 .string "copy_from_user error %d %p %p\n" 14639 .text 14640 .align 2 14641 .global rk_sftl_vendor_storage_ioctl 14642 .type rk_sftl_vendor_storage_ioctl, %function 14643rk_sftl_vendor_storage_ioctl: 14644 hint 34 // bti c 14645 .section __patchable_function_entries 14646 .align 3 14647 .8byte .LPFE141 14648 .text 14649.LPFE141: 14650 nop 14651 nop 14652 hint 25 // paciasp 14653 stp x29, x30, [sp, -48]! 14654 mov w0, 4096 14655 mov x29, sp 14656 stp x19, x20, [sp, 16] 14657 mov x20, x2 14658 str x21, [sp, 32] 14659 mov w21, w1 14660 bl ftl_malloc 14661 cbz x0, .L1924 14662 mov w1, 30209 14663 mov x19, x0 14664 movk w1, 0x4004, lsl 16 14665 cmp w21, w1 14666 beq .L1915 14667 add w1, w1, 1 14668 cmp w21, w1 14669 beq .L1916 14670.L1934: 14671 mov x20, -14 14672.L1917: 14673 mov x0, x19 14674 bl kfree 14675.L1913: 14676 mov x0, x20 14677 ldp x19, x20, [sp, 16] 14678 ldr x21, [sp, 32] 14679 ldp x29, x30, [sp], 48 14680 hint 29 // autiasp 14681 ret 14682.L1915: 14683 mov x1, x20 14684 mov x2, 8 14685 bl _copy_from_user 14686 cbz x0, .L1918 14687 mov x2, x20 14688 mov w1, 256 14689.L1935: 14690 adrp x0, .LC134 14691 add x0, x0, :lo12:.LC134 14692 bl sftl_printk 14693 b .L1934 14694.L1918: 14695 ldr w1, [x19] 14696 mov w0, 17745 14697 movk w0, 0x5652, lsl 16 14698 cmp w1, w0 14699 beq .L1919 14700.L1920: 14701 mov x20, -1 14702 b .L1917 14703.L1919: 14704 ldrh w2, [x19, 6] 14705 add x1, x19, 8 14706 ldrh w0, [x19, 4] 14707 bl rk_sftl_vendor_read 14708 cmn w0, #1 14709 beq .L1920 14710 strh w0, [x19, 6] 14711 and x0, x0, 65535 14712 add x21, x0, 8 14713 mov x0, x20 14714 mov x1, x21 14715 bl __range_ok 14716 cbz x0, .L1934 14717 bl uaccess_enable_not_uao 14718 sbfx x1, x20, 0, 56 14719#APP 14720// 19 "./arch/arm64/include/asm/current.h" 1 14721 mrs x0, sp_el0 14722// 0 "" 2 14723#NO_APP 14724 and x1, x1, x20 14725 ldr x2, [x0, 8] 14726#APP 14727// 289 "./arch/arm64/include/asm/uaccess.h" 1 14728 bics xzr, x1, x2 14729 csel x0, x20, xzr, eq 14730 14731// 0 "" 2 14732// 297 "./arch/arm64/include/asm/uaccess.h" 1 14733 hint #20 14734// 0 "" 2 14735#NO_APP 14736 mov x2, x21 14737 mov x1, x19 14738 mov x20, 0 14739 bl __arch_copy_to_user 14740 mov x21, x0 14741 bl uaccess_disable_not_uao 14742 cbz x21, .L1917 14743 b .L1934 14744.L1916: 14745 mov x1, x20 14746 mov x2, 8 14747 bl _copy_from_user 14748 cbz x0, .L1922 14749 mov x2, x20 14750 mov w1, 276 14751 b .L1935 14752.L1922: 14753 ldr w1, [x19] 14754 mov w0, 17745 14755 movk w0, 0x5652, lsl 16 14756 cmp w1, w0 14757 bne .L1920 14758 ldrh w2, [x19, 6] 14759 cmp w2, 4087 14760 bhi .L1920 14761 add w2, w2, 8 14762 mov x1, x20 14763 and x2, x2, 65535 14764 mov x0, x19 14765 bl _copy_from_user 14766 cbz x0, .L1923 14767 mov x2, x20 14768 mov w1, 283 14769 b .L1935 14770.L1923: 14771 ldrh w2, [x19, 6] 14772 add x1, x19, 8 14773 ldrh w0, [x19, 4] 14774 bl rk_sftl_vendor_write 14775 sxtw x20, w0 14776 b .L1917 14777.L1924: 14778 mov x20, -1 14779 b .L1913 14780 .size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl 14781 .align 2 14782 .global rk_sftl_vendor_register 14783 .type rk_sftl_vendor_register, %function 14784rk_sftl_vendor_register: 14785 hint 34 // bti c 14786 .section __patchable_function_entries 14787 .align 3 14788 .8byte .LPFE142 14789 .text 14790.LPFE142: 14791 nop 14792 nop 14793 hint 25 // paciasp 14794 stp x29, x30, [sp, -16]! 14795 adrp x0, .LANCHOR2 14796 mov x29, sp 14797 add x0, x0, :lo12:.LANCHOR2 14798 add x0, x0, 16 14799 bl misc_register 14800 ldp x29, x30, [sp], 16 14801 hint 29 // autiasp 14802 ret 14803 .size rk_sftl_vendor_register, .-rk_sftl_vendor_register 14804 .section .rodata.str1.1 14805.LC135: 14806 .string "vendor_storage" 14807 .global g_nand_ops 14808 .global g_nand_phy_info 14809 .global gc_ink_free_return_value 14810 .global check_vpc_table 14811 .global FtlUpdateVaildLpnCount 14812 .global g_ect_tbl_power_up_flush 14813 .global power_up_flag 14814 .global gFtlInitStatus 14815 .global DeviceCapacity 14816 .global g_power_lost_recovery_flag 14817 .global c_mlc_erase_count_value 14818 .global g_recovery_ppa_tbl 14819 .global g_recovery_page_min_ver 14820 .global g_recovery_page_num 14821 .global sftl_nand_check_spare_buf 14822 .global sftl_temp_buf 14823 .global sftl_nand_check_buf 14824 .global g_cur_erase_blk 14825 .global g_gc_skip_write_count 14826 .global g_gc_head_data_block_count 14827 .global g_gc_head_data_block 14828 .global g_ftl_nand_free_count 14829 .global g_in_swl_replace 14830 .global g_in_gc_progress 14831 .global g_max_erase_count 14832 .global g_totle_sys_slc_erase_count 14833 .global g_totle_slc_erase_count 14834 .global g_min_erase_count 14835 .global g_totle_avg_erase_count 14836 .global g_totle_mlc_erase_count 14837 .global g_totle_l2p_write_count 14838 .global g_totle_cache_write_count 14839 .global g_tmp_data_superblock_id 14840 .global g_totle_read_page_count 14841 .global g_totle_discard_page_count 14842 .global g_totle_read_sector 14843 .global g_totle_write_sector 14844 .global g_totle_write_page_count 14845 .global g_totle_gc_page_count 14846 .global g_gc_blk_index 14847 .global g_gc_merge_free_blk_threshold 14848 .global g_gc_free_blk_threshold 14849 .global g_gc_bad_block_temp_tbl 14850 .global g_gc_bad_block_gc_index 14851 .global g_gc_bad_block_temp_num 14852 .global g_gc_next_blk_1 14853 .global g_gc_next_blk 14854 .global g_gc_cur_blk_max_valid_pages 14855 .global g_gc_cur_blk_valid_pages 14856 .global g_gc_page_offset 14857 .global g_gc_blk_num 14858 .global p_gc_blk_tbl 14859 .global p_gc_page_info 14860 .global g_sys_ext_data 14861 .global g_sys_save_data 14862 .global gp_last_act_superblock 14863 .global g_gc_superblock 14864 .global g_gc_temp_superblock 14865 .global g_buffer_superblock 14866 .global g_active_superblock 14867 .global g_num_data_superblocks 14868 .global g_num_free_superblocks 14869 .global p_data_block_list_tail 14870 .global p_data_block_list_head 14871 .global p_free_data_block_list_head 14872 .global p_data_block_list_table 14873 .global g_l2p_last_update_region_id 14874 .global p_l2p_map_buf 14875 .global p_l2p_ram_map 14876 .global g_totle_vendor_block 14877 .global p_vendor_region_ppn_table 14878 .global p_vendor_block_ver_table 14879 .global p_vendor_block_valid_page_count 14880 .global p_vendor_block_table 14881 .global g_totle_map_block 14882 .global p_map_region_ppn_table 14883 .global p_map_block_ver_table 14884 .global p_map_block_valid_page_count 14885 .global p_map_block_table 14886 .global p_valid_page_count_check_table 14887 .global p_valid_page_count_table 14888 .global g_totle_swl_count 14889 .global p_swl_mul_table 14890 .global p_erase_count_table 14891 .global g_ect_tbl_info_size 14892 .global gp_ect_tbl_info 14893 .global g_gc_num_req 14894 .global c_gc_page_buf_num 14895 .global gp_gc_page_buf_info 14896 .global p_gc_data_buf 14897 .global p_gc_spare_buf 14898 .global p_io_spare_buf 14899 .global p_io_data_buf_1 14900 .global p_io_data_buf_0 14901 .global p_sys_spare_buf 14902 .global p_vendor_data_buf 14903 .global p_sys_data_buf_1 14904 .global p_sys_data_buf 14905 .global p_plane_order_table 14906 .global req_gc_dst 14907 .global req_gc 14908 .global req_erase 14909 .global req_prgm 14910 .global req_read 14911 .global req_sys 14912 .global gVendorBlkInfo 14913 .global gL2pMapInfo 14914 .global gSysFreeQueue 14915 .global gSysInfo 14916 .global gBbtInfo 14917 .global g_MaxLbn 14918 .global g_VaildLpn 14919 .global g_MaxLpn 14920 .global g_MaxLbaSector 14921 .global g_GlobalDataVersion 14922 .global g_GlobalSysVersion 14923 .global ftl_gc_temp_power_lost_recovery_flag 14924 .global c_ftl_nand_max_data_blks 14925 .global c_ftl_nand_data_op_blks_per_plane 14926 .global c_ftl_nand_data_blks_per_plane 14927 .global c_ftl_nand_max_sys_blks 14928 .global c_ftl_nand_init_sys_blks_per_plane 14929 .global c_ftl_nand_sys_blks_per_plane 14930 .global c_ftl_vendor_part_size 14931 .global c_ftl_nand_max_vendor_blks 14932 .global c_ftl_nand_max_map_blks 14933 .global c_ftl_nand_map_blks_per_plane 14934 .global c_ftl_nand_vendor_region_num 14935 .global c_ftl_nand_l2pmap_ram_region_num 14936 .global c_ftl_nand_map_region_num 14937 .global c_ftl_nand_totle_phy_blks 14938 .global c_ftl_nand_reserved_blks 14939 .global c_ftl_nand_byte_pre_oob 14940 .global c_ftl_nand_byte_pre_page 14941 .global c_ftl_nand_sec_pre_page_shift 14942 .global c_ftl_nand_sec_pre_page 14943 .global c_ftl_nand_page_pre_super_blk 14944 .global c_ftl_nand_page_pre_slc_blk 14945 .global c_ftl_nand_page_pre_blk 14946 .global c_ftl_nand_bbm_buf_size 14947 .global c_ftl_nand_ext_blk_pre_plane 14948 .global c_ftl_nand_blk_pre_plane 14949 .global c_ftl_nand_planes_num 14950 .global c_ftl_nand_blks_per_die_shift 14951 .global c_ftl_nand_blks_per_die 14952 .global c_ftl_nand_planes_per_die 14953 .global c_ftl_nand_die_num 14954 .global c_ftl_nand_type 14955 .section .rodata 14956 .align 3 14957 .set .LANCHOR1,. + 0 14958 .type __func__.30, %object 14959 .size __func__.30, 17 14960__func__.30: 14961 .string "INSERT_DATA_LIST" 14962 .type __func__.31, %object 14963 .size __func__.31, 17 14964__func__.31: 14965 .string "INSERT_FREE_LIST" 14966 .type __func__.29, %object 14967 .size __func__.29, 17 14968__func__.29: 14969 .string "List_remove_node" 14970 .type __func__.28, %object 14971 .size __func__.28, 22 14972__func__.28: 14973 .string "List_update_data_list" 14974 .type __func__.22, %object 14975 .size __func__.22, 22 14976__func__.22: 14977 .string "select_l2p_ram_region" 14978 .type __func__.14, %object 14979 .size __func__.14, 16 14980__func__.14: 14981 .string "make_superblock" 14982 .type __func__.8, %object 14983 .size __func__.8, 19 14984__func__.8: 14985 .string "get_new_active_ppa" 14986 .type __func__.1, %object 14987 .size __func__.1, 17 14988__func__.1: 14989 .string "FlashEraseBlocks" 14990 .type __func__.26, %object 14991 .size __func__.26, 26 14992__func__.26: 14993 .string "ftl_map_blk_alloc_new_blk" 14994 .type __func__.37, %object 14995 .size __func__.37, 11 14996__func__.37: 14997 .string "FtlMemInit" 14998 .type __func__.34, %object 14999 .size __func__.34, 14 15000__func__.34: 15001 .string "FtlBbt2Bitmap" 15002 .type __func__.13, %object 15003 .size __func__.13, 18 15004__func__.13: 15005 .string "SupperBlkListInit" 15006 .type __func__.3, %object 15007 .size __func__.3, 15 15008__func__.3: 15009 .string "FlashReadPages" 15010 .type __func__.19, %object 15011 .size __func__.19, 14 15012__func__.19: 15013 .string "FtlScanSysBlk" 15014 .type __func__.32, %object 15015 .size __func__.32, 11 15016__func__.32: 15017 .string "FtlLoadBbt" 15018 .type __func__.2, %object 15019 .size __func__.2, 15 15020__func__.2: 15021 .string "FlashProgPages" 15022 .type __func__.10, %object 15023 .size __func__.10, 25 15024__func__.10: 15025 .string "allocate_data_superblock" 15026 .type __func__.7, %object 15027 .size __func__.7, 16 15028__func__.7: 15029 .string "update_vpc_list" 15030 .type __func__.6, %object 15031 .size __func__.6, 20 15032__func__.6: 15033 .string "decrement_vpc_count" 15034 .type __func__.23, %object 15035 .size __func__.23, 16 15036__func__.23: 15037 .string "FtlMapWritePage" 15038 .type __func__.27, %object 15039 .size __func__.27, 16 15040__func__.27: 15041 .string "load_l2p_region" 15042 .type __func__.25, %object 15043 .size __func__.25, 15 15044__func__.25: 15045 .string "ftl_map_blk_gc" 15046 .type __func__.24, %object 15047 .size __func__.24, 31 15048__func__.24: 15049 .string "Ftl_write_map_blk_to_last_page" 15050 .type __func__.21, %object 15051 .size __func__.21, 9 15052__func__.21: 15053 .string "log2phys" 15054 .type __func__.16, %object 15055 .size __func__.16, 16 15056__func__.16: 15057 .string "FtlReUsePrevPpa" 15058 .type __func__.15, %object 15059 .size __func__.15, 22 15060__func__.15: 15061 .string "FtlRecoverySuperblock" 15062 .type __func__.11, %object 15063 .size __func__.11, 14 15064__func__.11: 15065 .string "ftl_check_vpc" 15066 .type __func__.20, %object 15067 .size __func__.20, 15 15068__func__.20: 15069 .string "FtlVpcTblFlush" 15070 .type __func__.12, %object 15071 .size __func__.12, 21 15072__func__.12: 15073 .string "FtlVpcCheckAndModify" 15074 .type __func__.9, %object 15075 .size __func__.9, 29 15076__func__.9: 15077 .string "allocate_new_data_superblock" 15078 .type __func__.36, %object 15079 .size __func__.36, 13 15080__func__.36: 15081 .string "FtlProgPages" 15082 .type __func__.5, %object 15083 .size __func__.5, 19 15084__func__.5: 15085 .string "FtlGcFreeTempBlock" 15086 .type __func__.4, %object 15087 .size __func__.4, 23 15088__func__.4: 15089 .string "rk_ftl_garbage_collect" 15090 .type __func__.35, %object 15091 .size __func__.35, 9 15092__func__.35: 15093 .string "FtlWrite" 15094 .type __func__.18, %object 15095 .size __func__.18, 15 15096__func__.18: 15097 .string "FtlLoadSysInfo" 15098 .type __func__.17, %object 15099 .size __func__.17, 18 15100__func__.17: 15101 .string "FtlMapTblRecovery" 15102 .type __func__.0, %object 15103 .size __func__.0, 14 15104__func__.0: 15105 .string "FtlWriteToIDB" 15106 .zero 1 15107 .type rk_sftl_vendor_storage_fops, %object 15108 .size rk_sftl_vendor_storage_fops, 256 15109rk_sftl_vendor_storage_fops: 15110 .zero 80 15111 .xword rk_sftl_vendor_storage_ioctl 15112 .xword rk_sftl_vendor_storage_ioctl 15113 .zero 160 15114 .data 15115 .align 3 15116 .set .LANCHOR2,. + 0 15117 .type gFtlInitStatus, %object 15118 .size gFtlInitStatus, 4 15119gFtlInitStatus: 15120 .word -1 15121 .type ftl_gc_temp_block_bops_scan_page_addr, %object 15122 .size ftl_gc_temp_block_bops_scan_page_addr, 2 15123ftl_gc_temp_block_bops_scan_page_addr: 15124 .hword -1 15125 .zero 2 15126 .type power_up_flag, %object 15127 .size power_up_flag, 4 15128power_up_flag: 15129 .word 1 15130 .zero 4 15131 .type rkflash_vender_storage_dev, %object 15132 .size rkflash_vender_storage_dev, 80 15133rkflash_vender_storage_dev: 15134 .word 255 15135 .zero 4 15136 .xword .LC135 15137 .xword rk_sftl_vendor_storage_fops 15138 .zero 56 15139 .bss 15140 .align 3 15141 .set .LANCHOR0,. + 0 15142 .type g_nand_phy_info, %object 15143 .size g_nand_phy_info, 24 15144g_nand_phy_info: 15145 .zero 24 15146 .type g_active_superblock, %object 15147 .size g_active_superblock, 48 15148g_active_superblock: 15149 .zero 48 15150 .type p_valid_page_count_table, %object 15151 .size p_valid_page_count_table, 8 15152p_valid_page_count_table: 15153 .zero 8 15154 .type g_buffer_superblock, %object 15155 .size g_buffer_superblock, 48 15156g_buffer_superblock: 15157 .zero 48 15158 .type g_gc_temp_superblock, %object 15159 .size g_gc_temp_superblock, 48 15160g_gc_temp_superblock: 15161 .zero 48 15162 .type g_gc_superblock, %object 15163 .size g_gc_superblock, 48 15164g_gc_superblock: 15165 .zero 48 15166 .type g_gc_next_blk_1, %object 15167 .size g_gc_next_blk_1, 2 15168g_gc_next_blk_1: 15169 .zero 2 15170 .type g_gc_next_blk, %object 15171 .size g_gc_next_blk, 2 15172g_gc_next_blk: 15173 .zero 2 15174 .type g_num_free_superblocks, %object 15175 .size g_num_free_superblocks, 2 15176g_num_free_superblocks: 15177 .zero 2 15178 .zero 2 15179 .type c_ftl_nand_sys_blks_per_plane, %object 15180 .size c_ftl_nand_sys_blks_per_plane, 4 15181c_ftl_nand_sys_blks_per_plane: 15182 .zero 4 15183 .type c_ftl_nand_planes_num, %object 15184 .size c_ftl_nand_planes_num, 2 15185c_ftl_nand_planes_num: 15186 .zero 2 15187 .zero 2 15188 .type c_ftl_nand_max_sys_blks, %object 15189 .size c_ftl_nand_max_sys_blks, 4 15190c_ftl_nand_max_sys_blks: 15191 .zero 4 15192 .type c_ftl_nand_data_blks_per_plane, %object 15193 .size c_ftl_nand_data_blks_per_plane, 2 15194c_ftl_nand_data_blks_per_plane: 15195 .zero 2 15196 .type c_ftl_nand_blk_pre_plane, %object 15197 .size c_ftl_nand_blk_pre_plane, 2 15198c_ftl_nand_blk_pre_plane: 15199 .zero 2 15200 .type c_ftl_nand_max_data_blks, %object 15201 .size c_ftl_nand_max_data_blks, 4 15202c_ftl_nand_max_data_blks: 15203 .zero 4 15204 .type c_ftl_nand_totle_phy_blks, %object 15205 .size c_ftl_nand_totle_phy_blks, 4 15206c_ftl_nand_totle_phy_blks: 15207 .zero 4 15208 .type c_ftl_nand_type, %object 15209 .size c_ftl_nand_type, 2 15210c_ftl_nand_type: 15211 .zero 2 15212 .type c_ftl_nand_die_num, %object 15213 .size c_ftl_nand_die_num, 2 15214c_ftl_nand_die_num: 15215 .zero 2 15216 .type c_ftl_nand_planes_per_die, %object 15217 .size c_ftl_nand_planes_per_die, 2 15218c_ftl_nand_planes_per_die: 15219 .zero 2 15220 .type c_ftl_nand_sec_pre_page, %object 15221 .size c_ftl_nand_sec_pre_page, 2 15222c_ftl_nand_sec_pre_page: 15223 .zero 2 15224 .type p_plane_order_table, %object 15225 .size p_plane_order_table, 32 15226p_plane_order_table: 15227 .zero 32 15228 .type c_mlc_erase_count_value, %object 15229 .size c_mlc_erase_count_value, 2 15230c_mlc_erase_count_value: 15231 .zero 2 15232 .type c_ftl_nand_ext_blk_pre_plane, %object 15233 .size c_ftl_nand_ext_blk_pre_plane, 2 15234c_ftl_nand_ext_blk_pre_plane: 15235 .zero 2 15236 .type c_ftl_vendor_part_size, %object 15237 .size c_ftl_vendor_part_size, 2 15238c_ftl_vendor_part_size: 15239 .zero 2 15240 .type c_ftl_nand_blks_per_die, %object 15241 .size c_ftl_nand_blks_per_die, 2 15242c_ftl_nand_blks_per_die: 15243 .zero 2 15244 .type c_ftl_nand_blks_per_die_shift, %object 15245 .size c_ftl_nand_blks_per_die_shift, 2 15246c_ftl_nand_blks_per_die_shift: 15247 .zero 2 15248 .type c_ftl_nand_page_pre_blk, %object 15249 .size c_ftl_nand_page_pre_blk, 2 15250c_ftl_nand_page_pre_blk: 15251 .zero 2 15252 .type c_ftl_nand_page_pre_slc_blk, %object 15253 .size c_ftl_nand_page_pre_slc_blk, 2 15254c_ftl_nand_page_pre_slc_blk: 15255 .zero 2 15256 .type c_ftl_nand_page_pre_super_blk, %object 15257 .size c_ftl_nand_page_pre_super_blk, 2 15258c_ftl_nand_page_pre_super_blk: 15259 .zero 2 15260 .type c_ftl_nand_sec_pre_page_shift, %object 15261 .size c_ftl_nand_sec_pre_page_shift, 2 15262c_ftl_nand_sec_pre_page_shift: 15263 .zero 2 15264 .type c_ftl_nand_byte_pre_page, %object 15265 .size c_ftl_nand_byte_pre_page, 2 15266c_ftl_nand_byte_pre_page: 15267 .zero 2 15268 .type c_ftl_nand_byte_pre_oob, %object 15269 .size c_ftl_nand_byte_pre_oob, 2 15270c_ftl_nand_byte_pre_oob: 15271 .zero 2 15272 .type c_ftl_nand_reserved_blks, %object 15273 .size c_ftl_nand_reserved_blks, 2 15274c_ftl_nand_reserved_blks: 15275 .zero 2 15276 .type DeviceCapacity, %object 15277 .size DeviceCapacity, 4 15278DeviceCapacity: 15279 .zero 4 15280 .type c_ftl_nand_max_vendor_blks, %object 15281 .size c_ftl_nand_max_vendor_blks, 2 15282c_ftl_nand_max_vendor_blks: 15283 .zero 2 15284 .type c_ftl_nand_vendor_region_num, %object 15285 .size c_ftl_nand_vendor_region_num, 2 15286c_ftl_nand_vendor_region_num: 15287 .zero 2 15288 .type c_ftl_nand_map_blks_per_plane, %object 15289 .size c_ftl_nand_map_blks_per_plane, 2 15290c_ftl_nand_map_blks_per_plane: 15291 .zero 2 15292 .zero 2 15293 .type c_ftl_nand_max_map_blks, %object 15294 .size c_ftl_nand_max_map_blks, 4 15295c_ftl_nand_max_map_blks: 15296 .zero 4 15297 .type c_ftl_nand_init_sys_blks_per_plane, %object 15298 .size c_ftl_nand_init_sys_blks_per_plane, 4 15299c_ftl_nand_init_sys_blks_per_plane: 15300 .zero 4 15301 .type c_ftl_nand_map_region_num, %object 15302 .size c_ftl_nand_map_region_num, 2 15303c_ftl_nand_map_region_num: 15304 .zero 2 15305 .type c_ftl_nand_l2pmap_ram_region_num, %object 15306 .size c_ftl_nand_l2pmap_ram_region_num, 2 15307c_ftl_nand_l2pmap_ram_region_num: 15308 .zero 2 15309 .type g_MaxLbaSector, %object 15310 .size g_MaxLbaSector, 4 15311g_MaxLbaSector: 15312 .zero 4 15313 .type g_totle_vendor_block, %object 15314 .size g_totle_vendor_block, 2 15315g_totle_vendor_block: 15316 .zero 2 15317 .zero 2 15318 .type p_vendor_block_table, %object 15319 .size p_vendor_block_table, 8 15320p_vendor_block_table: 15321 .zero 8 15322 .type gBbtInfo, %object 15323 .size gBbtInfo, 96 15324gBbtInfo: 15325 .zero 96 15326 .type gSysFreeQueue, %object 15327 .size gSysFreeQueue, 2056 15328gSysFreeQueue: 15329 .zero 2056 15330 .type g_sys_save_data, %object 15331 .size g_sys_save_data, 48 15332g_sys_save_data: 15333 .zero 48 15334 .type p_data_block_list_table, %object 15335 .size p_data_block_list_table, 8 15336p_data_block_list_table: 15337 .zero 8 15338 .type p_data_block_list_head, %object 15339 .size p_data_block_list_head, 8 15340p_data_block_list_head: 15341 .zero 8 15342 .type p_data_block_list_tail, %object 15343 .size p_data_block_list_tail, 8 15344p_data_block_list_tail: 15345 .zero 8 15346 .type g_num_data_superblocks, %object 15347 .size g_num_data_superblocks, 2 15348g_num_data_superblocks: 15349 .zero 2 15350 .zero 6 15351 .type p_free_data_block_list_head, %object 15352 .size p_free_data_block_list_head, 8 15353p_free_data_block_list_head: 15354 .zero 8 15355 .type p_erase_count_table, %object 15356 .size p_erase_count_table, 8 15357p_erase_count_table: 15358 .zero 8 15359 .type p_l2p_ram_map, %object 15360 .size p_l2p_ram_map, 8 15361p_l2p_ram_map: 15362 .zero 8 15363 .type g_l2p_last_update_region_id, %object 15364 .size g_l2p_last_update_region_id, 2 15365g_l2p_last_update_region_id: 15366 .zero 2 15367 .type FtlUpdateVaildLpnCount, %object 15368 .size FtlUpdateVaildLpnCount, 2 15369FtlUpdateVaildLpnCount: 15370 .zero 2 15371 .type g_VaildLpn, %object 15372 .size g_VaildLpn, 4 15373g_VaildLpn: 15374 .zero 4 15375 .type g_MaxLpn, %object 15376 .size g_MaxLpn, 4 15377g_MaxLpn: 15378 .zero 4 15379 .type g_totle_read_page_count, %object 15380 .size g_totle_read_page_count, 4 15381g_totle_read_page_count: 15382 .zero 4 15383 .type g_totle_discard_page_count, %object 15384 .size g_totle_discard_page_count, 4 15385g_totle_discard_page_count: 15386 .zero 4 15387 .type g_totle_write_page_count, %object 15388 .size g_totle_write_page_count, 4 15389g_totle_write_page_count: 15390 .zero 4 15391 .type g_totle_cache_write_count, %object 15392 .size g_totle_cache_write_count, 4 15393g_totle_cache_write_count: 15394 .zero 4 15395 .type g_totle_l2p_write_count, %object 15396 .size g_totle_l2p_write_count, 4 15397g_totle_l2p_write_count: 15398 .zero 4 15399 .type g_totle_gc_page_count, %object 15400 .size g_totle_gc_page_count, 4 15401g_totle_gc_page_count: 15402 .zero 4 15403 .type g_totle_write_sector, %object 15404 .size g_totle_write_sector, 4 15405g_totle_write_sector: 15406 .zero 4 15407 .type g_totle_read_sector, %object 15408 .size g_totle_read_sector, 4 15409g_totle_read_sector: 15410 .zero 4 15411 .type g_GlobalSysVersion, %object 15412 .size g_GlobalSysVersion, 4 15413g_GlobalSysVersion: 15414 .zero 4 15415 .type g_GlobalDataVersion, %object 15416 .size g_GlobalDataVersion, 4 15417g_GlobalDataVersion: 15418 .zero 4 15419 .type g_totle_mlc_erase_count, %object 15420 .size g_totle_mlc_erase_count, 4 15421g_totle_mlc_erase_count: 15422 .zero 4 15423 .type g_totle_slc_erase_count, %object 15424 .size g_totle_slc_erase_count, 4 15425g_totle_slc_erase_count: 15426 .zero 4 15427 .type g_totle_avg_erase_count, %object 15428 .size g_totle_avg_erase_count, 4 15429g_totle_avg_erase_count: 15430 .zero 4 15431 .type g_totle_sys_slc_erase_count, %object 15432 .size g_totle_sys_slc_erase_count, 4 15433g_totle_sys_slc_erase_count: 15434 .zero 4 15435 .type g_max_erase_count, %object 15436 .size g_max_erase_count, 4 15437g_max_erase_count: 15438 .zero 4 15439 .type g_min_erase_count, %object 15440 .size g_min_erase_count, 4 15441g_min_erase_count: 15442 .zero 4 15443 .type c_ftl_nand_data_op_blks_per_plane, %object 15444 .size c_ftl_nand_data_op_blks_per_plane, 2 15445c_ftl_nand_data_op_blks_per_plane: 15446 .zero 2 15447 .zero 2 15448 .type gSysInfo, %object 15449 .size gSysInfo, 16 15450gSysInfo: 15451 .zero 16 15452 .type g_sys_ext_data, %object 15453 .size g_sys_ext_data, 512 15454g_sys_ext_data: 15455 .zero 512 15456 .type g_gc_free_blk_threshold, %object 15457 .size g_gc_free_blk_threshold, 2 15458g_gc_free_blk_threshold: 15459 .zero 2 15460 .type g_gc_merge_free_blk_threshold, %object 15461 .size g_gc_merge_free_blk_threshold, 2 15462g_gc_merge_free_blk_threshold: 15463 .zero 2 15464 .type g_gc_skip_write_count, %object 15465 .size g_gc_skip_write_count, 4 15466g_gc_skip_write_count: 15467 .zero 4 15468 .type g_gc_blk_index, %object 15469 .size g_gc_blk_index, 2 15470g_gc_blk_index: 15471 .zero 2 15472 .zero 2 15473 .type g_in_swl_replace, %object 15474 .size g_in_swl_replace, 4 15475g_in_swl_replace: 15476 .zero 4 15477 .type g_gc_num_req, %object 15478 .size g_gc_num_req, 4 15479g_gc_num_req: 15480 .zero 4 15481 .zero 4 15482 .type gp_gc_page_buf_info, %object 15483 .size gp_gc_page_buf_info, 8 15484gp_gc_page_buf_info: 15485 .zero 8 15486 .type p_gc_data_buf, %object 15487 .size p_gc_data_buf, 8 15488p_gc_data_buf: 15489 .zero 8 15490 .type p_gc_spare_buf, %object 15491 .size p_gc_spare_buf, 8 15492p_gc_spare_buf: 15493 .zero 8 15494 .type req_gc, %object 15495 .size req_gc, 8 15496req_gc: 15497 .zero 8 15498 .type c_gc_page_buf_num, %object 15499 .size c_gc_page_buf_num, 4 15500c_gc_page_buf_num: 15501 .zero 4 15502 .type g_gc_blk_num, %object 15503 .size g_gc_blk_num, 2 15504g_gc_blk_num: 15505 .zero 2 15506 .zero 2 15507 .type p_gc_blk_tbl, %object 15508 .size p_gc_blk_tbl, 8 15509p_gc_blk_tbl: 15510 .zero 8 15511 .type g_gc_page_offset, %object 15512 .size g_gc_page_offset, 2 15513g_gc_page_offset: 15514 .zero 2 15515 .zero 6 15516 .type p_gc_page_info, %object 15517 .size p_gc_page_info, 8 15518p_gc_page_info: 15519 .zero 8 15520 .type g_gc_bad_block_temp_num, %object 15521 .size g_gc_bad_block_temp_num, 2 15522g_gc_bad_block_temp_num: 15523 .zero 2 15524 .type g_gc_bad_block_temp_tbl, %object 15525 .size g_gc_bad_block_temp_tbl, 34 15526g_gc_bad_block_temp_tbl: 15527 .zero 34 15528 .type g_gc_bad_block_gc_index, %object 15529 .size g_gc_bad_block_gc_index, 2 15530g_gc_bad_block_gc_index: 15531 .zero 2 15532 .zero 2 15533 .type g_nand_ops, %object 15534 .size g_nand_ops, 48 15535g_nand_ops: 15536 .zero 48 15537 .type req_erase, %object 15538 .size req_erase, 8 15539req_erase: 15540 .zero 8 15541 .type g_in_gc_progress, %object 15542 .size g_in_gc_progress, 4 15543g_in_gc_progress: 15544 .zero 4 15545 .type g_gc_head_data_block, %object 15546 .size g_gc_head_data_block, 4 15547g_gc_head_data_block: 15548 .zero 4 15549 .type g_gc_head_data_block_count, %object 15550 .size g_gc_head_data_block_count, 4 15551g_gc_head_data_block_count: 15552 .zero 4 15553 .type g_cur_erase_blk, %object 15554 .size g_cur_erase_blk, 4 15555g_cur_erase_blk: 15556 .zero 4 15557 .type req_read, %object 15558 .size req_read, 8 15559req_read: 15560 .zero 8 15561 .type req_gc_dst, %object 15562 .size req_gc_dst, 8 15563req_gc_dst: 15564 .zero 8 15565 .type req_prgm, %object 15566 .size req_prgm, 8 15567req_prgm: 15568 .zero 8 15569 .type p_sys_data_buf, %object 15570 .size p_sys_data_buf, 8 15571p_sys_data_buf: 15572 .zero 8 15573 .type p_sys_data_buf_1, %object 15574 .size p_sys_data_buf_1, 8 15575p_sys_data_buf_1: 15576 .zero 8 15577 .type p_vendor_data_buf, %object 15578 .size p_vendor_data_buf, 8 15579p_vendor_data_buf: 15580 .zero 8 15581 .type p_io_data_buf_0, %object 15582 .size p_io_data_buf_0, 8 15583p_io_data_buf_0: 15584 .zero 8 15585 .type p_io_data_buf_1, %object 15586 .size p_io_data_buf_1, 8 15587p_io_data_buf_1: 15588 .zero 8 15589 .type sftl_nand_check_buf, %object 15590 .size sftl_nand_check_buf, 8 15591sftl_nand_check_buf: 15592 .zero 8 15593 .type sftl_temp_buf, %object 15594 .size sftl_temp_buf, 8 15595sftl_temp_buf: 15596 .zero 8 15597 .type sftl_nand_check_spare_buf, %object 15598 .size sftl_nand_check_spare_buf, 8 15599sftl_nand_check_spare_buf: 15600 .zero 8 15601 .type p_sys_spare_buf, %object 15602 .size p_sys_spare_buf, 8 15603p_sys_spare_buf: 15604 .zero 8 15605 .type p_io_spare_buf, %object 15606 .size p_io_spare_buf, 8 15607p_io_spare_buf: 15608 .zero 8 15609 .type g_ect_tbl_info_size, %object 15610 .size g_ect_tbl_info_size, 2 15611g_ect_tbl_info_size: 15612 .zero 2 15613 .zero 6 15614 .type p_swl_mul_table, %object 15615 .size p_swl_mul_table, 8 15616p_swl_mul_table: 15617 .zero 8 15618 .type gp_ect_tbl_info, %object 15619 .size gp_ect_tbl_info, 8 15620gp_ect_tbl_info: 15621 .zero 8 15622 .type p_valid_page_count_check_table, %object 15623 .size p_valid_page_count_check_table, 8 15624p_valid_page_count_check_table: 15625 .zero 8 15626 .type p_map_block_table, %object 15627 .size p_map_block_table, 8 15628p_map_block_table: 15629 .zero 8 15630 .type p_map_block_valid_page_count, %object 15631 .size p_map_block_valid_page_count, 8 15632p_map_block_valid_page_count: 15633 .zero 8 15634 .type p_vendor_block_valid_page_count, %object 15635 .size p_vendor_block_valid_page_count, 8 15636p_vendor_block_valid_page_count: 15637 .zero 8 15638 .type p_vendor_block_ver_table, %object 15639 .size p_vendor_block_ver_table, 8 15640p_vendor_block_ver_table: 15641 .zero 8 15642 .type p_vendor_region_ppn_table, %object 15643 .size p_vendor_region_ppn_table, 8 15644p_vendor_region_ppn_table: 15645 .zero 8 15646 .type p_map_region_ppn_table, %object 15647 .size p_map_region_ppn_table, 8 15648p_map_region_ppn_table: 15649 .zero 8 15650 .type p_map_block_ver_table, %object 15651 .size p_map_block_ver_table, 8 15652p_map_block_ver_table: 15653 .zero 8 15654 .type p_l2p_map_buf, %object 15655 .size p_l2p_map_buf, 8 15656p_l2p_map_buf: 15657 .zero 8 15658 .type c_ftl_nand_bbm_buf_size, %object 15659 .size c_ftl_nand_bbm_buf_size, 2 15660c_ftl_nand_bbm_buf_size: 15661 .zero 2 15662 .zero 6 15663 .type gL2pMapInfo, %object 15664 .size gL2pMapInfo, 64 15665gL2pMapInfo: 15666 .zero 64 15667 .type g_totle_map_block, %object 15668 .size g_totle_map_block, 2 15669g_totle_map_block: 15670 .zero 2 15671 .type g_tmp_data_superblock_id, %object 15672 .size g_tmp_data_superblock_id, 2 15673g_tmp_data_superblock_id: 15674 .zero 2 15675 .type g_totle_swl_count, %object 15676 .size g_totle_swl_count, 4 15677g_totle_swl_count: 15678 .zero 4 15679 .type ftl_gc_temp_power_lost_recovery_flag, %object 15680 .size ftl_gc_temp_power_lost_recovery_flag, 4 15681ftl_gc_temp_power_lost_recovery_flag: 15682 .zero 4 15683 .type g_recovery_page_min_ver, %object 15684 .size g_recovery_page_min_ver, 4 15685g_recovery_page_min_ver: 15686 .zero 4 15687 .type req_sys, %object 15688 .size req_sys, 32 15689req_sys: 15690 .zero 32 15691 .type g_power_lost_recovery_flag, %object 15692 .size g_power_lost_recovery_flag, 2 15693g_power_lost_recovery_flag: 15694 .zero 2 15695 .zero 2 15696 .type g_recovery_page_num, %object 15697 .size g_recovery_page_num, 4 15698g_recovery_page_num: 15699 .zero 4 15700 .type g_recovery_ppa_tbl, %object 15701 .size g_recovery_ppa_tbl, 128 15702g_recovery_ppa_tbl: 15703 .zero 128 15704 .type gVendorBlkInfo, %object 15705 .size gVendorBlkInfo, 64 15706gVendorBlkInfo: 15707 .zero 64 15708 .type g_ect_tbl_power_up_flush, %object 15709 .size g_ect_tbl_power_up_flush, 2 15710g_ect_tbl_power_up_flush: 15711 .zero 2 15712 .zero 2 15713 .type gc_discard_updated, %object 15714 .size gc_discard_updated, 4 15715gc_discard_updated: 15716 .zero 4 15717 .type gc_ink_free_return_value, %object 15718 .size gc_ink_free_return_value, 2 15719gc_ink_free_return_value: 15720 .zero 2 15721 .type g_gc_cur_blk_valid_pages, %object 15722 .size g_gc_cur_blk_valid_pages, 2 15723g_gc_cur_blk_valid_pages: 15724 .zero 2 15725 .type g_gc_cur_blk_max_valid_pages, %object 15726 .size g_gc_cur_blk_max_valid_pages, 2 15727g_gc_cur_blk_max_valid_pages: 15728 .zero 2 15729 .zero 2 15730 .type g_ftl_nand_free_count, %object 15731 .size g_ftl_nand_free_count, 4 15732g_ftl_nand_free_count: 15733 .zero 4 15734 .type g_MaxLbn, %object 15735 .size g_MaxLbn, 4 15736g_MaxLbn: 15737 .zero 4 15738 .type idb_need_write_back, %object 15739 .size idb_need_write_back, 4 15740idb_need_write_back: 15741 .zero 4 15742 .zero 4 15743 .type idb_buf, %object 15744 .size idb_buf, 8 15745idb_buf: 15746 .zero 8 15747 .type gp_flash_check_buf, %object 15748 .size gp_flash_check_buf, 8 15749gp_flash_check_buf: 15750 .zero 8 15751 .type _flash_read, %object 15752 .size _flash_read, 8 15753_flash_read: 15754 .zero 8 15755 .type _flash_write, %object 15756 .size _flash_write, 8 15757_flash_write: 15758 .zero 8 15759 .type g_vendor, %object 15760 .size g_vendor, 8 15761g_vendor: 15762 .zero 8 15763 .type check_vpc_table, %object 15764 .size check_vpc_table, 16384 15765check_vpc_table: 15766 .zero 16384 15767 .type gp_last_act_superblock, %object 15768 .size gp_last_act_superblock, 8 15769gp_last_act_superblock: 15770 .zero 8 15771 .ident "GCC: (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16)) 10.2.1 20201103" 15772 .section .note.GNU-stack,"",@progbits 15773 .section .note.gnu.property,"a" 15774 .align 3 15775 .word 4 15776 .word 16 15777 .word 5 15778 .string "GNU" 15779 .word 3221225472 15780 .word 4 15781 .word 3 15782 .align 3 15783