📄 ddma.lst
字号:
393:/mnt/hgfs/boot/booter/source/ddma.c **** * Returns : 394:/mnt/hgfs/boot/booter/source/ddma.c **** * TRUE On Success 395:/mnt/hgfs/boot/booter/source/ddma.c **** * FALSE On Failure 396:/mnt/hgfs/boot/booter/source/ddma.c **** * 397:/mnt/hgfs/boot/booter/source/ddma.c **** */ 398:/mnt/hgfs/boot/booter/source/ddma.c **** int ddma_lit_wr( void *channel, void *dst, uint32 size ) 399:/mnt/hgfs/boot/booter/source/ddma.c **** { 672 .loc 1 399 0 673 .frame $sp,32,$31 # vars= 0, regs= 4/0, args= 16, gp= 0 674 .mask 0x80070000,-4 675 .fmask 0x00000000,0 676 .set noreorder 677 .set nomacro 678 679 04ac E0FFBD27 addiu $sp,$sp,-32 680 $LCFI22:GAS LISTING /tmp/ccEQxguf.s page 20 681 04b0 1800B2AF sw $18,24($sp) 682 $LCFI23: 683 04b4 1400B1AF sw $17,20($sp) 684 $LCFI24: 685 04b8 1000B0AF sw $16,16($sp) 686 $LCFI25: 687 04bc 2188A000 move $17,$5 688 04c0 21808000 move $16,$4 689 04c4 1C00BFAF sw $31,28($sp) 690 $LCFI26: 691 .loc 1 399 0 400:/mnt/hgfs/boot/booter/source/ddma.c **** DDMA_DESCRIPTOR *d; 401:/mnt/hgfs/boot/booter/source/ddma.c **** 402:/mnt/hgfs/boot/booter/source/ddma.c **** d = ddma_next_descriptor( channel ); 692 .loc 1 402 0 693 04c8 0000000C jal ddma_next_descriptor 694 04cc 2190C000 move $18,$6 695 696 04d0 21284000 move $5,$2 403:/mnt/hgfs/boot/booter/source/ddma.c **** if ( NULL == d ) return FALSE; 404:/mnt/hgfs/boot/booter/source/ddma.c **** #ifdef DEBUG 405:/mnt/hgfs/boot/booter/source/ddma.c **** printf("ddma_lit_wr: Using %X\n", d ); 406:/mnt/hgfs/boot/booter/source/ddma.c **** #endif 407:/mnt/hgfs/boot/booter/source/ddma.c **** if ( NULL != dst ) 408:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.dest0 = ~0xA0000000 & (uint32)dst; 409:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.cmd1 = size; 410:/mnt/hgfs/boot/booter/source/ddma.c **** 411:/mnt/hgfs/boot/booter/source/ddma.c **** // We could allow user to use 4 bytes of the context 412:/mnt/hgfs/boot/booter/source/ddma.c **** // d->c.p = context; 413:/mnt/hgfs/boot/booter/source/ddma.c **** 414:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.cmd0 |= DDMA_DESCCMD_V; 415:/mnt/hgfs/boot/booter/source/ddma.c **** ddma_doorbell( (CHANNEL*)channel ); 697 .loc 1 415 0 698 04d4 21200002 move $4,$16 699 .loc 1 403 0 700 04d8 0E00A010 beq $5,$0,$L56 701 04dc 21100000 move $2,$0 702 703 .loc 1 408 0 704 04e0 FF5F023C li $2,1610547200 # 0x5fff0000 705 04e4 FFFF4234 ori $2,$2,0xffff 706 .loc 1 407 0 707 04e8 02002012 beq $17,$0,$L58 708 04ec 24102202 and $2,$17,$2 709 710 .loc 1 408 0 711 04f0 1000A2AC sw $2,16($5) 712 $L58: 713 .loc 1 409 0 714 04f4 0400B2AC sw $18,4($5) 715 .loc 1 414 0 716 04f8 0000A28C lw $2,0($5) 717 04fc 0080033C li $3,-2147483648 # 0xffffffff80000000 718 0500 25104300 or $2,$2,$3 719 0504 0000A2AC sw $2,0($5) 720 .loc 1 415 0 721 0508 0000000C jal ddma_doorbellGAS LISTING /tmp/ccEQxguf.s page 21 722 050c 00000000 nop 723 416:/mnt/hgfs/boot/booter/source/ddma.c **** 417:/mnt/hgfs/boot/booter/source/ddma.c **** return TRUE; 724 .loc 1 417 0 725 0510 01000224 li $2,1 # 0x1 726 $L56: 418:/mnt/hgfs/boot/booter/source/ddma.c **** } 727 .loc 1 418 0 728 0514 1C00BF8F lw $31,28($sp) 729 0518 1800B28F lw $18,24($sp) 730 051c 1400B18F lw $17,20($sp) 731 0520 1000B08F lw $16,16($sp) 732 0524 0800E003 j $31 733 0528 2000BD27 addiu $sp,$sp,32 734 735 .set macro 736 .set reorder 737 $LFE11: 738 .end ddma_lit_wr 739 .align 2 740 .globl ddma_tx 741 .ent ddma_tx 742 .type ddma_tx, @function 743 ddma_tx: 744 $LFB12: 419:/mnt/hgfs/boot/booter/source/ddma.c **** 420:/mnt/hgfs/boot/booter/source/ddma.c **** /* 421:/mnt/hgfs/boot/booter/source/ddma.c **** * Function : ddma_tx 422:/mnt/hgfs/boot/booter/source/ddma.c **** * 423:/mnt/hgfs/boot/booter/source/ddma.c **** * This function is a helper routine to place a user's buffer pointer 424:/mnt/hgfs/boot/booter/source/ddma.c **** * in the descriptor. Set size attribute and ring the channel's 425:/mnt/hgfs/boot/booter/source/ddma.c **** * doorbell to begin transaction. 426:/mnt/hgfs/boot/booter/source/ddma.c **** * 427:/mnt/hgfs/boot/booter/source/ddma.c **** * Parameters : 428:/mnt/hgfs/boot/booter/source/ddma.c **** * channel Pointer to the ddma channel ( local struct ) 429:/mnt/hgfs/boot/booter/source/ddma.c **** * src Pointer to the data 430:/mnt/hgfs/boot/booter/source/ddma.c **** * dst Pointer where the data should go -- useful for MEM->MEM ddma 431:/mnt/hgfs/boot/booter/source/ddma.c **** * size Size of the data in bytes 432:/mnt/hgfs/boot/booter/source/ddma.c **** * 433:/mnt/hgfs/boot/booter/source/ddma.c **** * Returns : 434:/mnt/hgfs/boot/booter/source/ddma.c **** * TRUE On Success 435:/mnt/hgfs/boot/booter/source/ddma.c **** * FALSE On Failure 436:/mnt/hgfs/boot/booter/source/ddma.c **** * 437:/mnt/hgfs/boot/booter/source/ddma.c **** */ 438:/mnt/hgfs/boot/booter/source/ddma.c **** int ddma_tx( void *channel, void *src, void *dst, uint32 size ) 439:/mnt/hgfs/boot/booter/source/ddma.c **** { 745 .loc 1 439 0 746 .frame $sp,40,$31 # vars= 0, regs= 5/0, args= 16, gp= 0 747 .mask 0x800f0000,-8 748 .fmask 0x00000000,0 749 052c D8FFBD27 addiu $sp,$sp,-40 750 $LCFI27: 751 0530 1C00B3AF sw $19,28($sp) 752 $LCFI28: 753 0534 1800B2AF sw $18,24($sp) 754 $LCFI29:GAS LISTING /tmp/ccEQxguf.s page 22 755 0538 1400B1AF sw $17,20($sp) 756 $LCFI30: 757 053c 1000B0AF sw $16,16($sp) 758 $LCFI31: 759 0540 21988000 move $19,$4 760 0544 2180A000 move $16,$5 761 0548 2000BFAF sw $31,32($sp) 762 $LCFI32: 763 .loc 1 439 0 764 054c 2188C000 move $17,$6 440:/mnt/hgfs/boot/booter/source/ddma.c **** DDMA_DESCRIPTOR *d; 441:/mnt/hgfs/boot/booter/source/ddma.c **** 442:/mnt/hgfs/boot/booter/source/ddma.c **** d = ddma_next_descriptor( channel ); 765 .loc 1 442 0 766 .set noreorder 767 .set nomacro 768 0550 0000000C jal ddma_next_descriptor 769 0554 2190E000 move $18,$7 770 .set macro 771 .set reorder 772 773 0558 21204000 move $4,$2 443:/mnt/hgfs/boot/booter/source/ddma.c **** if ( NULL == d ) return FALSE; 444:/mnt/hgfs/boot/booter/source/ddma.c **** #ifdef DEBUG 445:/mnt/hgfs/boot/booter/source/ddma.c **** printf("ddma_tx: Using %X\n", d ); 446:/mnt/hgfs/boot/booter/source/ddma.c **** #endif 447:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.source0 = ~0xA0000000 & (uint32)src; 774 .loc 1 447 0 775 055c FF5F023C li $2,1610547200 # 0x5fff0000 776 0560 FFFF4334 ori $3,$2,0xffff 777 0564 24800302 and $16,$16,$3 778 .loc 1 443 0 779 .set noreorder 780 .set nomacro 781 0568 0F008010 beq $4,$0,$L59 782 056c 21100000 move $2,$0 783 .set macro 784 .set reorder 785 448:/mnt/hgfs/boot/booter/source/ddma.c **** if ( NULL != dst ) 449:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.dest0 = ~0xA0000000 & (uint32)dst; 786 .loc 1 449 0 787 0570 24102302 and $2,$17,$3 788 .loc 1 447 0 789 0574 080090AC sw $16,8($4) 790 .loc 1 448 0 791 0578 02002012 beq $17,$0,$L61 791 00000000 792 .loc 1 449 0 793 0580 100082AC sw $2,16($4) 794 $L61: 450:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.cmd1 = size; 795 .loc 1 450 0 796 0584 040092AC sw $18,4($4) 451:/mnt/hgfs/boot/booter/source/ddma.c **** 452:/mnt/hgfs/boot/booter/source/ddma.c **** // We could allow user to use 4 bytes of the context 453:/mnt/hgfs/boot/booter/source/ddma.c **** // d->c.p = context;GAS LISTING /tmp/ccEQxguf.s page 23 454:/mnt/hgfs/boot/booter/source/ddma.c **** 455:/mnt/hgfs/boot/booter/source/ddma.c **** d->u.std.cmd0 |= DDMA_DESCCMD_V; 797 .loc 1 455 0 798 0588 0000828C lw $2,0($4) 799 058c 0080033C li $3,-2147483648 # 0xffffffff80000000 800 0590 25104300 or $2,$2,$3 801 0594 000082AC sw $2,0($4) 456:/mnt/hgfs/boot/booter/source/ddma.c **** #ifdef DEBUG 457:/mnt/hgfs/boot/booter/source/ddma.c **** printf("ddma_tx: cmd0 == %X\n", d->u.std.cmd0 ); 458:/mnt/hgfs/boot/booter/source/ddma.c **** #endif 459:/mnt/hgfs/boot/booter/source/ddma.c **** asm("sync"); 802 .loc 1 459 0 803 #APP 804 0598 0F000000 sync 460:/mnt/hgfs/boot/booter/source/ddma.c **** ddma_doorbell( (CHANNEL*)channel ); 805 .loc 1 460 0 806 #NO_APP 807 .set noreorder 808 .set nomacro 809 059c 0000000C jal ddma_doorbell 810 05a0 21206002 move $4,$19 811 .set macro 812 .set reorder 813 461:/mnt/hgfs/boot/booter/source/ddma.c **** 462:/mnt/hgfs/boot/booter/source/ddma.c **** return TRUE; 814 .loc 1 462 0 815 05a4 01000224 li $2,1 # 0x1 816 $L59: 463:/mnt/hgfs/boot/booter/source/ddma.c **** } 817 .loc 1 463 0 818 05a8 2000BF8F lw $31,32($sp) 819 05ac 1C00B38F lw $19,28($sp) 820 05b0 1800B28F lw $18,24($sp) 821 05b4 1400B18F lw $17,20($sp) 822 05b8 1000B08F lw $16,16($sp) 823 .set noreorder 824 .set nomacro 825 05bc 0800E003 j $31 826 05c0 2800BD27 addiu $sp,$sp,40 827 .set macro 828 .set reorder 829 830 $LFE12: 831 .end ddma_tx 832 .align 2 833 .globl ddma_rx 834 .ent ddma_rx 835 .type ddma_rx, @function 836 ddma_rx: 837 $LFB13: 464:/mnt/hgfs/boot/booter/source/ddma.c **** 465:/mnt/hgfs/boot/booter/source/ddma.c **** /* 466:/mnt/hgfs/boot/booter/source/ddma.c **** * Function : ddma_rx 467:/mnt/hgfs/boot/booter/source/ddma.c **** * 468:/mnt/hgfs/boot/booter/source/ddma.c **** * This function is a helper routine to place a user's buffer pointer 469:/mnt/hgfs/boot/booter/source/ddma.c **** * in the descriptor. Set size attribute and ring the channel's GAS LISTING /tmp/ccEQxguf.s page 24 470:/mnt/hgfs/boot/booter/source/ddma.c **** * doorbell to begin transaction. 471:/mnt/hgfs/boot/booter/source/ddma.c **** * 472:/mnt/hgfs/boot/booter/source/ddma.c **** * Parameters : 473:/mnt/hgfs/boot/booter/source/ddma.c **** * channel Pointer to the ddma channel ( local struct ) 474:/mnt/hgfs/boot/booter/source/ddma.c **** * dest Pointer to the destination data 475:/mnt/hgfs/boot/booter/source/ddma.c **** * size Size of the data in bytes 476:/mnt/hgfs/boot/booter/source/ddma.c **** * 477:/mnt/hgfs/boot/booter/source/ddma.c **** * Returns : 478:/mnt/hgfs/boot/booter/source/ddma.c **** * TRUE On Success 479:/mnt/hgfs/boot/booter/source/ddma.c **** * FALSE On Failure 480:/mnt/hgfs/boot/booter/source/ddma.c **** * 481:/mnt/hgfs/boot/booter/source/ddma.c **** */ 482:/mnt/hgfs/boot/booter/source/ddma.c **** int ddma_rx( void *channel, void *dst, uint32 size ) 483:/mnt/hgfs/boot/booter/source/ddma.c **** { 838 .loc 1 483 0 839 .frame $sp,32,$31 # vars= 0, regs= 4/0, args= 16, gp= 0 840 .mask 0x80070000,-4 841 .fmask 0x00000000,0 842 .set noreorder 843 .set nomacro 844 845 05c4 E0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -