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

📄 ddma.lst

📁 au1200下的boot代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 205:/mnt/hgfs/boot/booter/source/ddma.c **** 	 *  try to find that one. If it is not available return NULL 206:/mnt/hgfs/boot/booter/source/ddma.c **** 	 */ 207:/mnt/hgfs/boot/booter/source/ddma.c **** 	if ( -1 != config->channel ) 325              		.loc 1 207 0 326 0214 0800838C 		lw	$3,8($4) 327 0218 FFFF0224 		li	$2,-1			# 0xffffffffffffffff 328              		.loc 1 198 0 329 021c 21588000 		move	$11,$4 330              		.loc 1 199 0 331              		.loc 1 207 0 332 0220 2C006210 		beq	$3,$2,$L27 333 0224 21500000 		move	$10,$0 334              	 208:/mnt/hgfs/boot/booter/source/ddma.c **** 	{ 209:/mnt/hgfs/boot/booter/source/ddma.c **** 		if ( TRUE == channels[config->channel].avail  )  335              		.loc 1 209 0 336 0228 40100300 		sll	$2,$3,1 337 022c 21104300 		addu	$2,$2,$3 338 0230 80100200 		sll	$2,$2,2 339 0234 23104300 		subu	$2,$2,$3 340 0238 0000033C 		lui	$3,%hi(channels) 341 023c 80100200 		sll	$2,$2,2 342 0240 04006324 		addiu	$3,$3,%lo(channels) 343 0244 21284300 		addu	$5,$2,$3 344 0248 0400A48C 		lw	$4,4($5) 345 024c 01000224 		li	$2,1			# 0x1 210:/mnt/hgfs/boot/booter/source/ddma.c **** 		{ 211:/mnt/hgfs/boot/booter/source/ddma.c **** 			chan = &channels[config->channel]; 212:/mnt/hgfs/boot/booter/source/ddma.c **** 			chan->avail = FALSE; 213:/mnt/hgfs/boot/booter/source/ddma.c **** 	 	} 214:/mnt/hgfs/boot/booter/source/ddma.c **** 		else 215:/mnt/hgfs/boot/booter/source/ddma.c **** 			return NULL; 346              		.loc 1 215 0 347 0250 21180000 		move	$3,$0 348              		.loc 1 211 0 349              		.loc 1 209 0 350 0254 1D008214 		bne	$4,$2,$L26 351 0258 2150A000 		move	$10,$5GAS LISTING /tmp/ccEQxguf.s 			page 11 352              	 353              	$L38: 216:/mnt/hgfs/boot/booter/source/ddma.c **** 	} 217:/mnt/hgfs/boot/booter/source/ddma.c **** 	else 218:/mnt/hgfs/boot/booter/source/ddma.c **** 	{ 219:/mnt/hgfs/boot/booter/source/ddma.c **** 		/* Find an available channel for use */ 220:/mnt/hgfs/boot/booter/source/ddma.c **** 		for( i=DDMA_NUM_CHANNELS-1; i>=0; i--) 221:/mnt/hgfs/boot/booter/source/ddma.c **** 			if ( TRUE == channels[i].avail )  222:/mnt/hgfs/boot/booter/source/ddma.c **** 			{ 223:/mnt/hgfs/boot/booter/source/ddma.c **** 				chan = &channels[i]; 224:/mnt/hgfs/boot/booter/source/ddma.c **** 				chan->avail = FALSE; 354              		.loc 1 224 0 355 025c 040040AD 		sw	$0,4($10) 356              	$L30: 225:/mnt/hgfs/boot/booter/source/ddma.c **** 				break; 226:/mnt/hgfs/boot/booter/source/ddma.c **** 			} 227:/mnt/hgfs/boot/booter/source/ddma.c **** 	} 228:/mnt/hgfs/boot/booter/source/ddma.c **** 	 229:/mnt/hgfs/boot/booter/source/ddma.c **** 	chan->ring = chan->dt = chan->dh = config->descriptors; 357              		.loc 1 229 0 358 0260 0C00668D 		lw	$6,12($11) 230:/mnt/hgfs/boot/booter/source/ddma.c ****  231:/mnt/hgfs/boot/booter/source/ddma.c **** 	/* Setup the channels intial descriptor pointer. */ 232:/mnt/hgfs/boot/booter/source/ddma.c **** 	chan->ptr->des_ptr = ~0xA0000000 & (uint32)chan->dh; 359              		.loc 1 232 0 360 0264 0000458D 		lw	$5,0($10) 361 0268 FF5F033C 		li	$3,1610547200			# 0x5fff0000 362 026c FFFF6334 		ori	$3,$3,0xffff 363 0270 2410C300 		and	$2,$6,$3 364 0274 0400A2AC 		sw	$2,4($5) 233:/mnt/hgfs/boot/booter/source/ddma.c ****  234:/mnt/hgfs/boot/booter/source/ddma.c **** 	/* Install the user's specified parameters */ 235:/mnt/hgfs/boot/booter/source/ddma.c **** 	chan->ptr->cfg		= config->chan_cfg; 365              		.loc 1 235 0 366 0278 1400648D 		lw	$4,20($11) 236:/mnt/hgfs/boot/booter/source/ddma.c **** 	chan->ptr->stat_ptr	= config->chan_stat; 237:/mnt/hgfs/boot/booter/source/ddma.c ****  238:/mnt/hgfs/boot/booter/source/ddma.c **** 	/* Copy the user's callback to the local channel structure */ 239:/mnt/hgfs/boot/booter/source/ddma.c **** 	chan->callback = config->callback; 240:/mnt/hgfs/boot/booter/source/ddma.c **** 	chan->arg = config->arg; 241:/mnt/hgfs/boot/booter/source/ddma.c ****  242:/mnt/hgfs/boot/booter/source/ddma.c **** 	/* Enable interrupts for this channel */ 243:/mnt/hgfs/boot/booter/source/ddma.c **** 	i= (1<<((uint32) ((~0xA0000000 & (uint32)chan->ptr)-DDMA_PHYS_ADDR)/sizeof(DDMA_CHANNEL)));  244:/mnt/hgfs/boot/booter/source/ddma.c **** 	ddma->inten = ddma->inten | i; 367              		.loc 1 244 0 368 027c 0000023C 		lui	$2,%hi(ddma) 369 0280 0000478C 		lw	$7,%lo(ddma)($2) 370              		.loc 1 235 0 371 0284 0000A4AC 		sw	$4,0($5) 372              		.loc 1 236 0 373 0288 1C00628D 		lw	$2,28($11) 374              		.loc 1 243 0 375 028c 2418A300 		and	$3,$5,$3 376 0290 021A0300 		srl	$3,$3,8 377              		.loc 1 236 0 378 0294 0800A2AC 		sw	$2,8($5) 379              		.loc 1 244 0GAS LISTING /tmp/ccEQxguf.s 			page 12 380 0298 0C10E48C 		lw	$4,4108($7) 381              		.loc 1 240 0 382 029c 0400688D 		lw	$8,4($11) 383              		.loc 1 239 0 384 02a0 0000658D 		lw	$5,0($11) 385              		.loc 1 243 0 386 02a4 01000224 		li	$2,1			# 0x1 387 02a8 04486200 		sll	$9,$2,$3 388              		.loc 1 244 0 389 02ac 25208900 		or	$4,$4,$9 390 02b0 0C10E4AC 		sw	$4,4108($7) 391              		.loc 1 239 0 392 02b4 240045AD 		sw	$5,36($10) 393              		.loc 1 240 0 394 02b8 280048AD 		sw	$8,40($10) 395              		.loc 1 229 0 396 02bc 1C0046AD 		sw	$6,28($10) 397 02c0 200046AD 		sw	$6,32($10) 398 02c4 180046AD 		sw	$6,24($10) 245:/mnt/hgfs/boot/booter/source/ddma.c ****  246:/mnt/hgfs/boot/booter/source/ddma.c **** 	return chan; 399              		.loc 1 246 0 400 02c8 21184001 		move	$3,$10 401              	$L26: 247:/mnt/hgfs/boot/booter/source/ddma.c **** } 402              		.loc 1 247 0 403 02cc 0800E003 		j	$31 404 02d0 21106000 		move	$2,$3 405              	 406              	$L27: 407 02d4 0000023C 		lui	$2,%hi(channels) 408 02d8 04004224 		addiu	$2,$2,%lo(channels) 409 02dc 94024424 		addiu	$4,$2,660 410              		.loc 1 220 0 411 02e0 0F000924 		li	$9,15			# 0xf 412 02e4 01000524 		li	$5,1			# 0x1 413 02e8 BE000008 		j	$L35 414 02ec 98024324 		addiu	$3,$2,664 415              	 416              	$L39: 417 02f0 DBFF2005 		bltz	$9,$L30 418 02f4 D4FF8424 		addiu	$4,$4,-44 419              	 420              	$L35: 421              		.loc 1 221 0 422 02f8 0000628C 		lw	$2,0($3) 423              		.loc 1 220 0 424 02fc FFFF2925 		addiu	$9,$9,-1 425              		.loc 1 221 0 426 0300 FBFF4514 		bne	$2,$5,$L39 427 0304 D4FF6324 		addiu	$3,$3,-44 428              	 429              		.loc 1 223 0 430 0308 97000008 		j	$L38 431 030c 21508000 		move	$10,$4 432              	 433              		.set	macroGAS LISTING /tmp/ccEQxguf.s 			page 13 434              		.set	reorder 435              	$LFE7: 436              		.end	ddma_get_channel 437              		.align	2 438              		.globl	ddma_free_channel 439              		.ent	ddma_free_channel 440              		.type	ddma_free_channel, @function 441              	ddma_free_channel: 442              	$LFB8: 248:/mnt/hgfs/boot/booter/source/ddma.c ****  249:/mnt/hgfs/boot/booter/source/ddma.c **** /* 250:/mnt/hgfs/boot/booter/source/ddma.c ****  *   Function   :   ddma_free_channel 251:/mnt/hgfs/boot/booter/source/ddma.c ****  * 252:/mnt/hgfs/boot/booter/source/ddma.c ****  *      This function will free all resources with a specified channel. 253:/mnt/hgfs/boot/booter/source/ddma.c ****  * 254:/mnt/hgfs/boot/booter/source/ddma.c ****  *   Parameters : 255:/mnt/hgfs/boot/booter/source/ddma.c ****  *      channel		Pointer 256:/mnt/hgfs/boot/booter/source/ddma.c ****  * 257:/mnt/hgfs/boot/booter/source/ddma.c ****  *     Returns : 258:/mnt/hgfs/boot/booter/source/ddma.c ****  *      TRUE		On Success 259:/mnt/hgfs/boot/booter/source/ddma.c ****  *		FALSE		On Failure 260:/mnt/hgfs/boot/booter/source/ddma.c ****  * 261:/mnt/hgfs/boot/booter/source/ddma.c ****  */ 262:/mnt/hgfs/boot/booter/source/ddma.c **** int			ddma_free_channel( void *channel ) 263:/mnt/hgfs/boot/booter/source/ddma.c **** { 443              		.loc 1 263 0 444              		.frame	$sp,24,$31		# vars= 0, regs= 2/0, args= 16, gp= 0 445              		.mask	0x80010000,-4 446              		.fmask	0x00000000,0 447              		.set	noreorder 448              		.set	nomacro 449              		 450 0310 E8FFBD27 		addiu	$sp,$sp,-24 451              	$LCFI11: 452 0314 1400BFAF 		sw	$31,20($sp) 453              	$LCFI12: 454 0318 1000B0AF 		sw	$16,16($sp) 455              	$LCFI13: 264:/mnt/hgfs/boot/booter/source/ddma.c **** 	int i; 265:/mnt/hgfs/boot/booter/source/ddma.c **** 	CHANNEL 		*chan = (CHANNEL*)channel; 266:/mnt/hgfs/boot/booter/source/ddma.c ****  267:/mnt/hgfs/boot/booter/source/ddma.c **** 	/* Disable interrupts for this channel */ 268:/mnt/hgfs/boot/booter/source/ddma.c **** 	i= (1<<((uint32) ((~0xA0000000 & (uint32)chan->ptr)-DDMA_PHYS_ADDR)/sizeof(DDMA_CHANNEL)));  456              		.loc 1 268 0 457 031c 0000858C 		lw	$5,0($4) 269:/mnt/hgfs/boot/booter/source/ddma.c **** 	ddma->inten = ddma->inten & ~i; 458              		.loc 1 269 0 459 0320 0000033C 		lui	$3,%hi(ddma) 460 0324 0000668C 		lw	$6,%lo(ddma)($3) 461              		.loc 1 268 0 462 0328 FF5F023C 		li	$2,1610547200			# 0x5fff0000 463 032c FFFF4234 		ori	$2,$2,0xffff 464 0330 2428A200 		and	$5,$5,$2 465              		.loc 1 269 0 466 0334 0C10C38C 		lw	$3,4108($6) 467              		.loc 1 268 0 468 0338 022A0500 		srl	$5,$5,8GAS LISTING /tmp/ccEQxguf.s 			page 14 469 033c 01000224 		li	$2,1			# 0x1 470 0340 0410A200 		sll	$2,$2,$5 471              		.loc 1 269 0 472 0344 27100200 		nor	$2,$0,$2 473 0348 24186200 		and	$3,$3,$2 474              		.loc 1 263 0 475 034c 21808000 		move	$16,$4 476              		.loc 1 269 0 477 0350 0C10C3AC 		sw	$3,4108($6) 270:/mnt/hgfs/boot/booter/source/ddma.c ****  271:/mnt/hgfs/boot/booter/source/ddma.c **** 	ddma_channel_stop( (CHANNEL*)channel ); 478              		.loc 1 271 0 479 0354 0000000C 		jal	ddma_channel_stop 480 0358 00000000 		nop 481              	 272:/mnt/hgfs/boot/booter/source/ddma.c **** 	 273:/mnt/hgfs/boot/booter/source/ddma.c **** 	memset(channel,0,sizeof(CHANNEL)); 482              		.loc 1 273 0 483 035c 21200002 		move	$4,$16 484 0360 21280000 		move	$5,$0 485 0364 0000000C 		jal	memset 486 0368 2C000624 		li	$6,44			# 0x2c 487              	 274:/mnt/hgfs/boot/booter/source/ddma.c **** 	return TRUE; 275:/mnt/hgfs/boot/booter/source/ddma.c **** } 488              		.loc 1 275 0 489 036c 1400BF8F 		lw	$31,20($sp) 490 0370 1000B08F 		lw	$16,16($sp) 491 0374 01000224 		li	$2,1			# 0x1 492 0378 0800E003 		j	$31 493 037c 1800BD27 		addiu	$sp,$sp,24 494              	 495              		.set	macro 496              		.set	reorder 497              	$LFE8: 498              		.end	ddma_free_channel 499              		.align	2 500              		.globl	ddma_init_descriptors 501              		.ent	ddma_init_descriptors 502              		.type	ddma_init_descriptors, @function 503              	ddma_init_descriptors: 504              	$LFB9: 276:/mnt/hgfs/boot/booter/source/ddma.c ****  277:/mnt/hgfs/boot/booter/source/ddma.c **** /* 278:/mnt/hgfs/boot/booter/source/ddma.c ****  *   Function   :   ddma_init_descriptors 279:/mnt/hgfs/boot/booter/source/ddma.c ****  * 280:/mnt/hgfs/boot/booter/source/ddma.c ****  *      This function will take a descriptor list with the first entry modfied by 281:/mnt/hgfs/boot/booter/source/ddma.c ****  *      the user and duplicate it throughout the list. 282:/mnt/hgfs/boot/booter/source/ddma.c ****  *		It is up to the user to assign new src,dst and cnt values when the descriptors 283:/mnt/hgfs/boot/booter/source/ddma.c ****  *		are to be used. 284:/mnt/hgfs/boot/booter/source/ddma.c ****  *  285:/mnt/hgfs/boot/booter/source/ddma.c ****  *		Mainly used for duplicating SIDs, DIDs, SAM etc. it also sets up the 286:/mnt/hgfs/boot/booter/source/ddma.c ****  *		nxt_ptrs for ring effect. 287:/mnt/hgfs/boot/booter/source/ddma.c ****  * 288:/mnt/hgfs/boot/booter/source/ddma.c ****  *   Parameters : 289:/mnt/hgfs/boot/booter/source/ddma.c ****  *      list		Pointer to the list of ddma descriptors 290:/mnt/hgfs/boot/booter/source/ddma.c ****  *		count		number of descriptors in the listGAS LISTING /tmp/ccEQxguf.s 			page 15

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -