📄 ddma2.lst
字号:
660 03c8 0C00908E lw $16,12($20) 661 .loc 1 207 0 662 03cc 00006426 addiu $4,$19,%lo($LC2) 663 03d0 0000000C jal printf 664 03d4 21280002 move $5,$16 665 666 .loc 1 208 0 667 03d8 1C00028E lw $2,28($16) 668 03dc 40110200 sll $2,$2,5 669 03e0 21105100 addu $2,$2,$17 670 .loc 1 210 0 671 .loc 1 208 0 672 03e4 F6FF5014 bne $2,$16,$L34 673 03e8 0000043C lui $4,%hi($LC3) 674 675 $L40: 676 .loc 1 210 0 677 03ec 2400BF8F lw $31,36($sp) 678 03f0 2000B48F lw $20,32($sp) 679 03f4 1C00B38F lw $19,28($sp) 680 03f8 1800B28F lw $18,24($sp) 681 03fc 1400B18F lw $17,20($sp) 682 0400 1000B08F lw $16,16($sp) 683 0404 00008424 addiu $4,$4,%lo($LC3) 684 0408 00000008 j printf 685 040c 2800BD27 addiu $sp,$sp,40 686 687 .set macro 688 .set reorder 689 $LFE18: 690 .end ddma2_print_descriptor_chain 691 .align 2 692 .globl ddma2_interruptGAS LISTING /tmp/ccSUImwK.s page 17 693 .ent ddma2_interrupt 694 .type ddma2_interrupt, @function 695 ddma2_interrupt: 696 $LFB19: 211:/mnt/hgfs/boot/booter/source/ddma2.c **** } 212:/mnt/hgfs/boot/booter/source/ddma2.c **** 213:/mnt/hgfs/boot/booter/source/ddma2.c **** /* 214:/mnt/hgfs/boot/booter/source/ddma2.c **** * Function : au1550_ddma2_interrupt 215:/mnt/hgfs/boot/booter/source/ddma2.c **** * 216:/mnt/hgfs/boot/booter/source/ddma2.c **** * This function is responsible for handling DDMA interrupts. 217:/mnt/hgfs/boot/booter/source/ddma2.c **** * 218:/mnt/hgfs/boot/booter/source/ddma2.c **** * User specified callbacks can be used for application processing at 219:/mnt/hgfs/boot/booter/source/ddma2.c **** * interrupt time. 220:/mnt/hgfs/boot/booter/source/ddma2.c **** * 221:/mnt/hgfs/boot/booter/source/ddma2.c **** * Parameters : 222:/mnt/hgfs/boot/booter/source/ddma2.c **** * 223:/mnt/hgfs/boot/booter/source/ddma2.c **** * Returns : 224:/mnt/hgfs/boot/booter/source/ddma2.c **** * Nothing 225:/mnt/hgfs/boot/booter/source/ddma2.c **** * 226:/mnt/hgfs/boot/booter/source/ddma2.c **** */ 227:/mnt/hgfs/boot/booter/source/ddma2.c **** void ddma2_interrupt( int irq, void *dev_id ) 228:/mnt/hgfs/boot/booter/source/ddma2.c **** { 697 .loc 1 228 0 698 .frame $sp,48,$31 # vars= 0, regs= 7/0, args= 16, gp= 0 699 .mask 0x803f0000,-8 700 .fmask 0x00000000,0 701 .set noreorder 702 .set nomacro 703 704 0410 D0FFBD27 addiu $sp,$sp,-48 705 $LCFI15: 706 0414 1C00B3AF sw $19,28($sp) 707 $LCFI16: 229:/mnt/hgfs/boot/booter/source/ddma2.c **** CHANNEL *channels = (CHANNEL*)dev_id; 230:/mnt/hgfs/boot/booter/source/ddma2.c **** int i; 231:/mnt/hgfs/boot/booter/source/ddma2.c **** 232:/mnt/hgfs/boot/booter/source/ddma2.c **** for( i = 0; i < DDMA_NUM_CHANNELS && ddma->intstat; i++ ) 708 .loc 1 232 0 709 0418 0000133C lui $19,%hi(ddma) 710 041c 0000638E lw $3,%lo(ddma)($19) 711 .loc 1 228 0 712 0420 1800B2AF sw $18,24($sp) 713 $LCFI17: 714 0424 2800BFAF sw $31,40($sp) 715 $LCFI18: 716 0428 2400B5AF sw $21,36($sp) 717 $LCFI19: 718 042c 2000B4AF sw $20,32($sp) 719 $LCFI20: 720 0430 1400B1AF sw $17,20($sp) 721 $LCFI21: 722 0434 1000B0AF sw $16,16($sp) 723 $LCFI22: 724 .loc 1 232 0 725 0438 0410628C lw $2,4100($3) 726 043c 20004010 beq $2,$0,$L43 727 0440 21900000 move $18,$0GAS LISTING /tmp/ccSUImwK.s page 18 728 729 0444 2180A000 move $16,$5 730 0448 21A86002 move $21,$19 731 044c 24010008 j $L47 732 0450 01001424 li $20,1 # 0x1 733 734 $L46: 233:/mnt/hgfs/boot/booter/source/ddma2.c **** { 234:/mnt/hgfs/boot/booter/source/ddma2.c **** if ( ddma->intstat & (1 << i) ) 235:/mnt/hgfs/boot/booter/source/ddma2.c **** { 236:/mnt/hgfs/boot/booter/source/ddma2.c **** //channels[i].d_head = NULL; //All descriptors have been transfered 237:/mnt/hgfs/boot/booter/source/ddma2.c **** //channels[i].d_tail = NULL; 238:/mnt/hgfs/boot/booter/source/ddma2.c **** //ddma2_disable_channel(i); 239:/mnt/hgfs/boot/booter/source/ddma2.c **** 240:/mnt/hgfs/boot/booter/source/ddma2.c **** // Call user's callback routine 241:/mnt/hgfs/boot/booter/source/ddma2.c **** if ( NULL != channels[i].callback ) 242:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].callback( (CHANNEL_ID) i, channels[i].callback_arg ); 243:/mnt/hgfs/boot/booter/source/ddma2.c **** 244:/mnt/hgfs/boot/booter/source/ddma2.c **** // clear interrupt bits 245:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma->intstat &= ~(1 << i); 735 .loc 1 245 0 736 0454 0000A48E lw $4,%lo(ddma)($21) 737 $L49: 246:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].ptr->irq = 0; 738 .loc 1 246 0 739 0458 0000058E lw $5,0($16) 740 .loc 1 245 0 741 045c 27181100 nor $3,$0,$17 742 0460 0410828C lw $2,4100($4) 743 0464 24104300 and $2,$2,$3 744 0468 041082AC sw $2,4100($4) 745 .loc 1 246 0 746 046c 1000A0AC sw $0,16($5) 747 $L44: 748 .loc 1 232 0 749 0470 01005226 addiu $18,$18,1 750 0474 1000422A slt $2,$18,16 751 0478 11004010 beq $2,$0,$L43 752 047c 30001026 addiu $16,$16,48 753 754 0480 0000638E lw $3,%lo(ddma)($19) 755 0484 0410628C lw $2,4100($3) 756 0488 0E004010 beq $2,$0,$L50 757 048c 2800BF8F lw $31,40($sp) 758 759 $L47: 760 .loc 1 234 0 761 0490 0410628C lw $2,4100($3) 762 0494 04885402 sll $17,$20,$18 763 0498 24105100 and $2,$2,$17 764 049c F4FF4010 beq $2,$0,$L44 765 04a0 00000000 nop 766 767 .loc 1 241 0 768 04a4 1800028E lw $2,24($16) 769 .loc 1 242 0 770 .loc 1 241 0GAS LISTING /tmp/ccSUImwK.s page 19 771 04a8 EAFF4010 beq $2,$0,$L46 772 04ac 21204002 move $4,$18 773 774 .loc 1 242 0 775 04b0 09F84000 jal $2 776 04b4 1C00058E lw $5,28($16) 777 778 .loc 1 245 0 779 04b8 16010008 j $L49 780 04bc 0000A48E lw $4,%lo(ddma)($21) 781 782 $L43: 783 .loc 1 232 0 784 04c0 2800BF8F lw $31,40($sp) 785 $L50: 786 04c4 2400B58F lw $21,36($sp) 787 04c8 2000B48F lw $20,32($sp) 788 04cc 1C00B38F lw $19,28($sp) 789 04d0 1800B28F lw $18,24($sp) 790 04d4 1400B18F lw $17,20($sp) 791 04d8 1000B08F lw $16,16($sp) 792 04dc 0800E003 j $31 793 04e0 3000BD27 addiu $sp,$sp,48 794 795 .set macro 796 .set reorder 797 $LFE19: 798 .end ddma2_interrupt 799 .align 2 800 .globl ddma2_enable_descriptor_interrupt 801 .ent ddma2_enable_descriptor_interrupt 802 .type ddma2_enable_descriptor_interrupt, @function 803 ddma2_enable_descriptor_interrupt: 804 $LFB20: 247:/mnt/hgfs/boot/booter/source/ddma2.c **** } 248:/mnt/hgfs/boot/booter/source/ddma2.c **** } 249:/mnt/hgfs/boot/booter/source/ddma2.c **** } 250:/mnt/hgfs/boot/booter/source/ddma2.c **** 251:/mnt/hgfs/boot/booter/source/ddma2.c **** void ddma2_enable_descriptor_interrupt(DDMA_DESCRIPTOR* desc) 252:/mnt/hgfs/boot/booter/source/ddma2.c **** { 805 .loc 1 252 0 806 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 807 .mask 0x00000000,0 808 .fmask 0x00000000,0 253:/mnt/hgfs/boot/booter/source/ddma2.c **** desc->u.std.cmd0 |= DDMA_DESCCMD_IE; //Enable interrupt for this descriptor 809 .loc 1 253 0 810 04e4 0000828C lw $2,0($4) 811 04e8 00014234 ori $2,$2,0x100 812 04ec 000082AC sw $2,0($4) 254:/mnt/hgfs/boot/booter/source/ddma2.c **** asm("sync"); 813 .loc 1 254 0 814 #APP 815 04f0 0F000000 sync 816 #NO_APP 817 04f4 0800E003 j $31 817 00000000 818 $LFE20:GAS LISTING /tmp/ccSUImwK.s page 20 819 .end ddma2_enable_descriptor_interrupt 820 .align 2 821 .globl ddma2_init 822 .ent ddma2_init 823 .type ddma2_init, @function 824 ddma2_init: 825 $LFB21: 255:/mnt/hgfs/boot/booter/source/ddma2.c **** } 256:/mnt/hgfs/boot/booter/source/ddma2.c **** 257:/mnt/hgfs/boot/booter/source/ddma2.c **** int ddma2_init( void ) 258:/mnt/hgfs/boot/booter/source/ddma2.c **** { 826 .loc 1 258 0 827 .frame $sp,56,$31 # vars= 0, regs= 9/0, args= 16, gp= 0 828 .mask 0x80ff0000,-8 829 .fmask 0x00000000,0 830 .set noreorder 831 .set nomacro 832 833 04fc C8FFBD27 addiu $sp,$sp,-56 834 $LCFI23: 259:/mnt/hgfs/boot/booter/source/ddma2.c **** DPRINTF(""); 260:/mnt/hgfs/boot/booter/source/ddma2.c **** int i; 261:/mnt/hgfs/boot/booter/source/ddma2.c **** 262:/mnt/hgfs/boot/booter/source/ddma2.c **** /* 263:/mnt/hgfs/boot/booter/source/ddma2.c **** * Point our ddma structure to correct 264:/mnt/hgfs/boot/booter/source/ddma2.c **** * memory location 265:/mnt/hgfs/boot/booter/source/ddma2.c **** */ 266:/mnt/hgfs/boot/booter/source/ddma2.c **** // ddma = (AU1X00_DDMA*)DDMA_PHYS_ADDRESS; 267:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma = (AU1X00_DDMA*)mapPhysicalAddress(DDMA_PHYS_ADDR, sizeof(AU1X00_DDMA), 0); 835 .loc 1 267 0 836 0500 0014043C li $4,335544320 # 0x14000000 837 .loc 1 258 0 838 0504 2C00B7AF sw $23,44($sp) 839 $LCFI24: 840 .loc 1 267 0 841 0508 00208434 ori $4,$4,0x2000 842 050c 21280000 move $5,$0 843 0510 10100624 li $6,4112 # 0x1010 844 0514 21380000 move $7,$0 268:/mnt/hgfs/boot/booter/source/ddma2.c **** 269:/mnt/hgfs/boot/booter/source/ddma2.c **** /* 270:/mnt/hgfs/boot/booter/source/ddma2.c **** * Initialize the local channel status to 0s 271:/mnt/hgfs/boot/booter/source/ddma2.c **** */ 272:/mnt/hgfs/boot/booter/source/ddma2.c **** memset((void*)channels,0,sizeof(channels)); 845 .loc 1 272 0 846 0518 0000173C lui $23,%hi(channels) 847 .loc 1 258 0 848 051c 3000BFAF sw $31,48($sp) 849 $LCFI25: 850 0520 2800B6AF sw $22,40($sp) 851 $LCFI26: 852 0524 2400B5AF sw $21,36($sp) 853 $LCFI27: 854 0528 2000B4AF sw $20,32($sp) 855 $LCFI28: 856 052c 1C00B3AF sw $19,28($sp) 857 $LCFI29:GAS LISTING /tmp/ccSUImwK.s page 21 858 0530 1800B2AF sw $18,24($sp) 859 $LCFI30: 860 0534 1400B1AF sw $17,20($sp) 861 $LCFI31: 862 0538 1000B0AF sw $16,16($sp) 863 $LCFI32: 864 .loc 1 267 0 865 053c 0000000C jal mapPhysicalAddress 866 0540 0000123C lui $18,%hi(ddma) 867 868 .loc 1 272 0 869 0544 0000E426 addiu $4,$23,%lo(channels) 870 0548 21280000 move $5,$0 871 054c 00030624 li $6,768 # 0x300 872 .loc 1 267 0 873 .loc 1 272 0 874 0550 0000000C jal memset 875 0554 000042AE sw $2,%lo(ddma)($18) 876 877 0558 0000033C lui $3,%hi(channels+32) 878 055c FF5F023C li $2,1610547200 # 0x5fff0000 879 0560 20007624 addiu $22,$3,%lo(channels+32) 880 0564 FFFF5534 ori $21,$2,0xffff 273:/mnt/hgfs/boot/booter/source/ddma2.c **** 274:/mnt/hgfs/boot/booter/source/ddma2.c **** for( i = 0; i < DDMA_NUM_CHANNELS; ++i ) 881 .loc 1 274 0 882 0568 21800000 move $16,$0 883 056c 0000F426 addiu $20,$23,%lo(channels) 884 0570 01001324 li $19,1 # 0x1 885 0574 21880000 move $17,$0 886 $L56: 275:/mnt/hgfs/boot/booter/source/ddma2.c **** { 276:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[i].ptr = &ddma->channel[i];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -