⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddma2.lst

📁 au1200下的boot代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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_interruptGAS 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,$0GAS 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 0GAS 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 + -