📄 nand.lst
字号:
488 0340 0000063C lui $6,%hi(nand_irq_handler) 489 .loc 1 124 0 490 0344 14102935 ori $9,$9,0x1014 491 .loc 1 125 0GAS LISTING /tmp/cc4NTrNa.s page 12 492 0348 F03F4234 ori $2,$2,0x3ff0 493 .loc 1 124 0 494 034c 000023AD sw $3,0($9) 495 .loc 1 130 0 496 0350 1000BF8F lw $31,16($sp) 497 .loc 1 125 0 498 0354 000082AD sw $2,0($12) 499 .loc 1 128 0 500 0358 0000033C lui $3,%hi(nand_irq_fired) 501 .loc 1 130 0 502 035c 0000C624 addiu $6,$6,%lo(nand_irq_handler) 503 0360 1F000424 li $4,31 # 0x1f 504 0364 04000524 li $5,4 # 0x4 505 0368 21380000 move $7,$0 506 036c 1800BD27 addiu $sp,$sp,24 507 .loc 1 128 0 508 0370 000060AC sw $0,%lo(nand_irq_fired)($3) 509 .loc 1 130 0 510 0374 00000008 j cpuIrqEnable 511 0378 00000000 nop 512 513 .set macro 514 .set reorder 515 $LFE5: 516 .end nand_config 517 .align 2 518 .globl nand_id_read 519 .ent nand_id_read 520 .type nand_id_read, @function 521 nand_id_read: 522 $LFB6: 131:/mnt/hgfs/boot/booter/source/nand.c **** } 132:/mnt/hgfs/boot/booter/source/nand.c **** 133:/mnt/hgfs/boot/booter/source/nand.c **** void nand_id_read(int* maker, int* device) 134:/mnt/hgfs/boot/booter/source/nand.c **** { 523 .loc 1 134 0 524 .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 525 .mask 0x80030000,-8 526 .fmask 0x00000000,0 527 .set noreorder 528 .set nomacro 529 530 037c E0FFBD27 addiu $sp,$sp,-32 531 $LCFI2: 532 0380 1400B1AF sw $17,20($sp) 533 $LCFI3: 534 0384 1000B0AF sw $16,16($sp) 535 $LCFI4: 536 0388 2188A000 move $17,$5 537 038c 21808000 move $16,$4 135:/mnt/hgfs/boot/booter/source/nand.c **** gpioWrite(NAND_CE0, 0); 538 .loc 1 135 0 539 0390 21280000 move $5,$0 540 .loc 1 134 0 541 0394 1800BFAF sw $31,24($sp) 542 $LCFI5: 543 .loc 1 135 0GAS LISTING /tmp/cc4NTrNa.s page 13 544 0398 0000000C jal gpioWrite 545 039c 15000424 li $4,21 # 0x15 546 136:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_ID_READ1; 547 .loc 1 136 0 548 03a0 0000033C lui $3,%hi(nand_virtual_address) 549 03a4 0000658C lw $5,%lo(nand_virtual_address)($3) 550 03a8 90000224 li $2,144 137:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_ADDR = 0; 138:/mnt/hgfs/boot/booter/source/nand.c **** *maker = NAND_REG_DATA & 0xff; 139:/mnt/hgfs/boot/booter/source/nand.c **** *device = NAND_REG_DATA & 0xff; 140:/mnt/hgfs/boot/booter/source/nand.c **** gpioWrite(NAND_CE0, 1); 551 .loc 1 140 0 552 03ac 1800BF8F lw $31,24($sp) 553 .loc 1 136 0 554 03b0 0000A2A4 sh $2,0($5) 555 .loc 1 137 0 556 03b4 0400A0A4 sh $0,4($5) 557 .loc 1 138 0 558 03b8 2000A294 lhu $2,32($5) 559 .loc 1 139 0 560 03bc 2000A394 lhu $3,32($5) 561 .loc 1 140 0 562 03c0 15000424 li $4,21 # 0x15 563 .loc 1 138 0 564 03c4 FF004230 andi $2,$2,0x00ff 565 .loc 1 139 0 566 03c8 FF006330 andi $3,$3,0x00ff 567 .loc 1 138 0 568 03cc 000002AE sw $2,0($16) 569 .loc 1 140 0 570 03d0 01000524 li $5,1 # 0x1 571 .loc 1 139 0 572 03d4 000023AE sw $3,0($17) 573 .loc 1 140 0 574 03d8 1000B08F lw $16,16($sp) 575 03dc 1400B18F lw $17,20($sp) 576 03e0 00000008 j gpioWrite 577 03e4 2000BD27 addiu $sp,$sp,32 578 579 .set macro 580 .set reorder 581 $LFE6: 582 .end nand_id_read 583 .align 2 584 .globl nand_reset 585 .ent nand_reset 586 .type nand_reset, @function 587 nand_reset: 588 $LFB7: 141:/mnt/hgfs/boot/booter/source/nand.c **** } 142:/mnt/hgfs/boot/booter/source/nand.c **** 143:/mnt/hgfs/boot/booter/source/nand.c **** void nand_reset() 144:/mnt/hgfs/boot/booter/source/nand.c **** { 589 .loc 1 144 0 590 .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0 591 .mask 0x80000000,-8GAS LISTING /tmp/cc4NTrNa.s page 14 592 .fmask 0x00000000,0 593 .set noreorder 594 .set nomacro 595 596 03e8 E8FFBD27 addiu $sp,$sp,-24 597 $LCFI6: 145:/mnt/hgfs/boot/booter/source/nand.c **** gpioWrite(NAND_CE0, 0); 598 .loc 1 145 0 599 03ec 21280000 move $5,$0 600 .loc 1 144 0 601 03f0 1000BFAF sw $31,16($sp) 602 $LCFI7: 603 .loc 1 145 0 604 03f4 0000000C jal gpioWrite 605 03f8 15000424 li $4,21 # 0x15 606 146:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_RESET; 607 .loc 1 146 0 608 03fc 0000033C lui $3,%hi(nand_virtual_address) 609 0400 0000648C lw $4,%lo(nand_virtual_address)($3) 610 0404 FF000224 li $2,255 611 0408 000082A4 sh $2,0($4) 147:/mnt/hgfs/boot/booter/source/nand.c **** nand_wait_busy(); 612 .loc 1 147 0 613 040c 0000000C jal nand_wait_busy 614 0410 00000000 nop 615 148:/mnt/hgfs/boot/booter/source/nand.c **** gpioWrite(NAND_CE0, 1); 616 .loc 1 148 0 617 0414 1000BF8F lw $31,16($sp) 618 0418 15000424 li $4,21 # 0x15 619 041c 01000524 li $5,1 # 0x1 620 0420 00000008 j gpioWrite 621 0424 1800BD27 addiu $sp,$sp,24 622 623 .set macro 624 .set reorder 625 $LFE7: 626 .end nand_reset 627 .align 2 628 .globl nand_initialize 629 .ent nand_initialize 630 .type nand_initialize, @function 631 nand_initialize: 632 $LFB8: 149:/mnt/hgfs/boot/booter/source/nand.c **** } 150:/mnt/hgfs/boot/booter/source/nand.c **** 151:/mnt/hgfs/boot/booter/source/nand.c **** NandDevice* nand_initialize() 152:/mnt/hgfs/boot/booter/source/nand.c **** { 633 .loc 1 152 0 634 .frame $sp,32,$31 # vars= 8, regs= 1/0, args= 16, gp= 0 635 .mask 0x80000000,-8 636 .fmask 0x00000000,0 637 .set noreorder 638 .set nomacro 639 640 0428 E0FFBD27 addiu $sp,$sp,-32GAS LISTING /tmp/cc4NTrNa.s page 15 641 $LCFI8: 642 042c 1800BFAF sw $31,24($sp) 643 $LCFI9: 153:/mnt/hgfs/boot/booter/source/nand.c **** int maker, device_id; 154:/mnt/hgfs/boot/booter/source/nand.c **** 155:/mnt/hgfs/boot/booter/source/nand.c **** nand_config(); 644 .loc 1 155 0 645 0430 0000000C jal nand_config 646 0434 00000000 nop 647 156:/mnt/hgfs/boot/booter/source/nand.c **** nand_reset(); 648 .loc 1 156 0 649 0438 0000000C jal nand_reset 650 043c 00000000 nop 651 157:/mnt/hgfs/boot/booter/source/nand.c **** nand_id_read(&maker, &device_id); 652 .loc 1 157 0 653 0440 1000A427 addiu $4,$sp,16 654 0444 0000000C jal nand_id_read 655 0448 1400A527 addiu $5,$sp,20 656 158:/mnt/hgfs/boot/booter/source/nand.c **** 159:/mnt/hgfs/boot/booter/source/nand.c **** if(nand_load_device(maker, device_id)) 657 .loc 1 159 0 658 044c 1000A48F lw $4,16($sp) 659 0450 0000000C jal nand_load_device 660 0454 1400A58F lw $5,20($sp) 661 160:/mnt/hgfs/boot/booter/source/nand.c **** return &nand_device; 161:/mnt/hgfs/boot/booter/source/nand.c **** else 162:/mnt/hgfs/boot/booter/source/nand.c **** return NULL; 662 .loc 1 162 0 663 .loc 1 159 0 664 0458 03004010 beq $2,$0,$L61 665 045c 21180000 move $3,$0 666 667 .loc 1 160 0 668 0460 0000023C lui $2,%hi(nand_device) 669 0464 04004324 addiu $3,$2,%lo(nand_device) 670 $L61: 163:/mnt/hgfs/boot/booter/source/nand.c **** } 671 .loc 1 163 0 672 0468 1800BF8F lw $31,24($sp) 673 046c 21106000 move $2,$3 674 0470 0800E003 j $31 675 0474 2000BD27 addiu $sp,$sp,32 676 677 .set macro 678 .set reorder 679 $LFE8: 680 .end nand_initialize 681 .align 2 682 .globl nand_set_column_address 683 .ent nand_set_column_address 684 .type nand_set_column_address, @function 685 nand_set_column_address: 686 $LFB9:GAS LISTING /tmp/cc4NTrNa.s page 16 164:/mnt/hgfs/boot/booter/source/nand.c **** 165:/mnt/hgfs/boot/booter/source/nand.c **** void nand_set_column_address(int column) 166:/mnt/hgfs/boot/booter/source/nand.c **** { 687 .loc 1 166 0 688 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 689 .mask 0x00000000,0 690 .fmask 0x00000000,0 691 .set noreorder 692 .set nomacro 693 167:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_ADDR = column; 694 .loc 1 167 0 695 0478 0000023C lui $2,%hi(nand_virtual_address) 168:/mnt/hgfs/boot/booter/source/nand.c **** if (nand_device.page_size == 2048) 696 .loc 1 168 0 697 047c 0000033C lui $3,%hi(nand_device+4) 698 .loc 1 167 0 699 0480 0000468C lw $6,%lo(nand_virtual_address)($2) 700 .loc 1 168 0 701 0484 0800658C lw $5,%lo(nand_device+4)($3) 702 0488 00080224 li $2,2048 # 0x800 169:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_ADDR = column >> 8; 703 .loc 1 169 0 704 048c 031A0400 sra $3,$4,8 705 .loc 1 167 0 706 0490 0400C4A4 sh $4,4($6) 707 .loc 1 168 0 708 0494 0300A210 beq $5,$2,$L66 709 0498 00000000 nop 710 711 049c 0800E003 j $31 712 04a0 00000000 nop 713 714 $L66: 715 .loc 1 169 0 716 04a4 0400C3A4 sh $3,4($6) 717 04a8 0800E003 j $31 718 04ac 00000000 nop 719 720 .set macro 721 .set reorder 722 $LFE9: 723 .end nand_set_column_address 724 .align 2 725 .globl nand_set_page_address 726 .ent nand_set_page_address 727 .type nand_set_page_address, @function 728 nand_set_page_address: 729 $LFB10: 170:/mnt/hgfs/boot/booter/source/nand.c **** } 171:/mnt/hgfs/boot/booter/source/nand.c **** 172:/mnt/hgfs/boot/booter/source/nand.c **** void nand_set_page_address(int page) 173:/mnt/hgfs/boot/booter/source/nand.c **** { 730 .loc 1 173 0 731 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 732 .mask 0x00000000,0 733 .fmask 0x00000000,0GAS LISTING /tmp/cc4NTrNa.s page 17 734 .set noreorder 735 .set nomacro 736 174:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_ADDR = page; 175:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_ADDR = page >> 8; 176:/mnt/hgfs/boot/booter/source/nand.c **** if (nand_device.page_count > 0x10000) 737 .loc 1 176 0 738 04b0 0000023C lui $2,%hi(nand_device+8) 739 04b4 0C00458C lw $5,%lo(nand_device+8)($2) 740 .loc 1 174 0 741 04b8 0000033C lui $3,%hi(nand_virtual_address) 742 04bc 0000668C lw $6,%lo(nand_virtual_address)($3) 743 .loc 1 176 0 744 04c0 0100023C li $2,65536 # 0x10000 745 .loc 1 175 0 746 04c4 031A0400 sra $3,$4,8 747 .loc 1 176 0 748 04c8 2A104500 slt $2,$2,$5 749 .loc 1 174 0 750 04cc 0400C4A4 sh $4,4($6) 177:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_ADDR = page >> 16;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -