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

📄 tlb.lst

📁 au1200下的boot代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 117:/mnt/hgfs/boot/booter/source/tlb.c **** 	/* round size up to (PAGE_SIZE * 2) */ 118:/mnt/hgfs/boot/booter/source/tlb.c **** 	size = (size + ((PAGE_SIZE*2) - 1)) & ~((PAGE_SIZE*2) - 1);GAS LISTING /tmp/ccLt6UhX.s 			page 7 215              		.loc 1 118 0 216 0158 FF1F8424 		addiu	$4,$4,8191 217 015c 00E00224 		li	$2,-8192			# 0xffffffffffffe000 218 0160 24208200 		and	$4,$4,$2 119:/mnt/hgfs/boot/booter/source/tlb.c **** 	if (size == 0) 120:/mnt/hgfs/boot/booter/source/tlb.c **** 	{ 121:/mnt/hgfs/boot/booter/source/tlb.c **** 		va = NULL; 122:/mnt/hgfs/boot/booter/source/tlb.c **** 	} 123:/mnt/hgfs/boot/booter/source/tlb.c **** 	else 124:/mnt/hgfs/boot/booter/source/tlb.c **** 	{ 125:/mnt/hgfs/boot/booter/source/tlb.c **** 		va = (void *)lastVA; 219              		.loc 1 125 0 220 0164 0000053C 		lui	$5,%hi(lastVA) 221              		.loc 1 121 0 222              		.loc 1 119 0 223 0168 04008010 		beq	$4,$0,$L23 224 016c 21180000 		move	$3,$0 225              	 226              		.loc 1 125 0 227 0170 0000A38C 		lw	$3,%lo(lastVA)($5) 126:/mnt/hgfs/boot/booter/source/tlb.c **** 		lastVA += size; 228              		.loc 1 126 0 229 0174 21106400 		addu	$2,$3,$4 230 0178 0000A2AC 		sw	$2,%lo(lastVA)($5) 231              	$L23: 127:/mnt/hgfs/boot/booter/source/tlb.c **** 	} 128:/mnt/hgfs/boot/booter/source/tlb.c **** 	return va; 129:/mnt/hgfs/boot/booter/source/tlb.c **** } 232              		.loc 1 129 0 233 017c 0800E003 		j	$31 234 0180 21106000 		move	$2,$3 235              	 236              		.set	macro 237              		.set	reorder 238              	$LFE4: 239              		.end	valloc 240              		.align	2 241              		.globl	mapPhysicalAddress 242              		.ent	mapPhysicalAddress 243              		.type	mapPhysicalAddress, @function 244              	mapPhysicalAddress: 245              	$LFB5: 130:/mnt/hgfs/boot/booter/source/tlb.c ****  131:/mnt/hgfs/boot/booter/source/tlb.c **** /********************************************************************/ 132:/mnt/hgfs/boot/booter/source/tlb.c **** void * 133:/mnt/hgfs/boot/booter/source/tlb.c **** mapPhysicalAddress (phys_t physAddr, unsigned long size, int flags) 134:/mnt/hgfs/boot/booter/source/tlb.c **** { 246              		.loc 1 134 0 247              		.frame	$sp,40,$31		# vars= 0, regs= 6/0, args= 16, gp= 0 248              		.mask	0x801f0000,-4 249              		.fmask	0x00000000,0 250              		.set	noreorder 251              		.set	nomacro 252              		 253 0184 D8FFBD27 		addiu	$sp,$sp,-40 254              	$LCFI6: 255 0188 1C00B3AF 		sw	$19,28($sp)GAS LISTING /tmp/ccLt6UhX.s 			page 8 256              	$LCFI7: 257 018c 1800B2AF 		sw	$18,24($sp) 258              	$LCFI8: 259 0190 1400B1AF 		sw	$17,20($sp) 260              	$LCFI9: 261 0194 1000B0AF 		sw	$16,16($sp) 262              	$LCFI10: 263 0198 2400BFAF 		sw	$31,36($sp) 264              	$LCFI11: 265 019c 2000B4AF 		sw	$20,32($sp) 266              	$LCFI12: 267              		.loc 1 134 0 268 01a0 21808000 		move	$16,$4 269 01a4 2188A000 		move	$17,$5 270 01a8 2190C000 		move	$18,$6 135:/mnt/hgfs/boot/booter/source/tlb.c **** 	void *va = NULL; 136:/mnt/hgfs/boot/booter/source/tlb.c **** 	int pteIndex; 137:/mnt/hgfs/boot/booter/source/tlb.c **** 	uint32 lo0, lo1, offset, cca; 138:/mnt/hgfs/boot/booter/source/tlb.c **** 	int i; 139:/mnt/hgfs/boot/booter/source/tlb.c ****  140:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("phys is %08X %08X\n", ((uint32 *)&physAddr)[0], ((uint32 *)&physAddr)[1]); 141:/mnt/hgfs/boot/booter/source/tlb.c ****  142:/mnt/hgfs/boot/booter/source/tlb.c **** 	/* First 512M physical is KSEG0/KSEG1 */ 143:/mnt/hgfs/boot/booter/source/tlb.c **** 	if ((physAddr >= 0x00000000) && (physAddr < 0x20000000)) 271              		.loc 1 143 0 272 01ac 1400A014 		bgtu	$5,$0,$L25 273 01b0 2198E000 		move	$19,$7 274              	 275 01b4 0500A014 		bne	$5,$0,$L26 276 01b8 FF1F023C 		li	$2,536805376			# 0x1fff0000 277              	 278 01bc FFFF4234 		ori	$2,$2,0xffff 279 01c0 2B104400 		sltu	$2,$2,$4 144:/mnt/hgfs/boot/booter/source/tlb.c **** 	{ 145:/mnt/hgfs/boot/booter/source/tlb.c **** 		if (flags) 146:/mnt/hgfs/boot/booter/source/tlb.c **** 			va = (void *)KSEG0((void *)((uint32)physAddr)); 147:/mnt/hgfs/boot/booter/source/tlb.c **** 		else 148:/mnt/hgfs/boot/booter/source/tlb.c **** 			va = (void *)KSEG1((void *)((uint32)physAddr)); 149:/mnt/hgfs/boot/booter/source/tlb.c ****  150:/mnt/hgfs/boot/booter/source/tlb.c **** 		return va; 151:/mnt/hgfs/boot/booter/source/tlb.c **** 	} 152:/mnt/hgfs/boot/booter/source/tlb.c **** 	else 153:/mnt/hgfs/boot/booter/source/tlb.c **** 	{ 154:/mnt/hgfs/boot/booter/source/tlb.c **** 		/* virtual mapping */ 155:/mnt/hgfs/boot/booter/source/tlb.c ****  156:/mnt/hgfs/boot/booter/source/tlb.c **** 		/* round size up to (PAGE_SIZE * 2) */ 157:/mnt/hgfs/boot/booter/source/tlb.c **** 		size = (size + ((PAGE_SIZE*2) - 1)) & ~((PAGE_SIZE*2) - 1); 280              		.loc 1 157 0 281              		.loc 1 143 0 282 01c4 0F004014 		bne	$2,$0,$L42 283 01c8 FF1F4226 		addiu	$2,$18,8191 284              	 285              	$L26: 286              		.loc 1 146 0 287              		.loc 1 145 0 288 01cc 02006016 		bne	$19,$0,$L41 289 01d0 0080023C 		li	$2,-2147483648			# 0xffffffff80000000GAS LISTING /tmp/ccLt6UhX.s 			page 9 290              	 291              		.loc 1 148 0 292 01d4 00A0023C 		li	$2,-1610612736			# 0xffffffffa0000000 293              	$L41: 294 01d8 21580202 		addu	$11,$16,$2 295              		.loc 1 150 0 296 01dc 21106001 		move	$2,$11 297              	$L24: 158:/mnt/hgfs/boot/booter/source/tlb.c **** 		if (size == 0) 159:/mnt/hgfs/boot/booter/source/tlb.c **** 			return NULL; 160:/mnt/hgfs/boot/booter/source/tlb.c ****  161:/mnt/hgfs/boot/booter/source/tlb.c ****  162:/mnt/hgfs/boot/booter/source/tlb.c **** 		offset = physAddr & ((PAGE_SIZE*2) - 1); 163:/mnt/hgfs/boot/booter/source/tlb.c **** 		physAddr = (physAddr & (phys_t)~((PAGE_SIZE*2) - 1)); 164:/mnt/hgfs/boot/booter/source/tlb.c ****  165:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("size is %dK\n", size >> 10); 166:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("phys is %08X %08X\n", ((uint32 *)&physAddr)[0], ((uint32 *)&physAddr)[1]); 167:/mnt/hgfs/boot/booter/source/tlb.c ****  168:/mnt/hgfs/boot/booter/source/tlb.c ****  169:/mnt/hgfs/boot/booter/source/tlb.c **** 		va = valloc(size, 0); 170:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("VA is %08X\n", va); 171:/mnt/hgfs/boot/booter/source/tlb.c ****  172:/mnt/hgfs/boot/booter/source/tlb.c **** 		/* NOTE: There is no check for overflow of the single L2PTE */ 173:/mnt/hgfs/boot/booter/source/tlb.c **** 		/* now create PTE entries */ 174:/mnt/hgfs/boot/booter/source/tlb.c **** 		pteIndex = (int)va; 175:/mnt/hgfs/boot/booter/source/tlb.c **** 		pteIndex <<= 8; 176:/mnt/hgfs/boot/booter/source/tlb.c **** 		pteIndex >>= (8 + 13); 177:/mnt/hgfs/boot/booter/source/tlb.c **** 		for (i = 0; i < size; i += (PAGE_SIZE + PAGE_SIZE)) 178:/mnt/hgfs/boot/booter/source/tlb.c **** 		{ 179:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("adr32 %08X\n", (uint32)(physAddr + i)); 180:/mnt/hgfs/boot/booter/source/tlb.c **** 			/* 36-bit PA */ 181:/mnt/hgfs/boot/booter/source/tlb.c **** 			lo0 = (uint32)((physAddr + (phys_t)i + (phys_t)0        ) >> 6); 182:/mnt/hgfs/boot/booter/source/tlb.c **** 			lo1 = (uint32)((physAddr + (phys_t)i + (phys_t)PAGE_SIZE) >> 6); 183:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("lo0 %08X\n", lo0); 184:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("lo1 %08X\n", lo0); 185:/mnt/hgfs/boot/booter/source/tlb.c **** 			if (flags == FALSE) 186:/mnt/hgfs/boot/booter/source/tlb.c **** 				cca = 2; 187:/mnt/hgfs/boot/booter/source/tlb.c **** 			else if (flags == TRUE) 188:/mnt/hgfs/boot/booter/source/tlb.c **** 				cca = 3; 189:/mnt/hgfs/boot/booter/source/tlb.c **** 			else 190:/mnt/hgfs/boot/booter/source/tlb.c **** 				cca = flags; 191:/mnt/hgfs/boot/booter/source/tlb.c **** 			//if (flags) 192:/mnt/hgfs/boot/booter/source/tlb.c **** 			{ 193:/mnt/hgfs/boot/booter/source/tlb.c **** 				lo0 |= ((flags<<3) + (1<<2) + (1<<1) + (0<<0)); 194:/mnt/hgfs/boot/booter/source/tlb.c **** 				lo1 |= ((flags<<3) + (1<<2) + (1<<1) + (0<<0)); 195:/mnt/hgfs/boot/booter/source/tlb.c **** 			} 196:/mnt/hgfs/boot/booter/source/tlb.c **** 			//else 197:/mnt/hgfs/boot/booter/source/tlb.c **** 			//{ 198:/mnt/hgfs/boot/booter/source/tlb.c **** 			//	lo0 |= ((2<<3) + (1<<2) + (1<<1) + (0<<0)); 199:/mnt/hgfs/boot/booter/source/tlb.c **** 			//	lo1 |= ((2<<3) + (1<<2) + (1<<1) + (0<<0)); 200:/mnt/hgfs/boot/booter/source/tlb.c **** 			//} 201:/mnt/hgfs/boot/booter/source/tlb.c **** 			L2PTE[pteIndex].EntryLo0 = lo0; 202:/mnt/hgfs/boot/booter/source/tlb.c **** 			L2PTE[pteIndex].EntryLo1 = lo1; 203:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("pteIndex %d .lo0 %08X\n", pteIndex, lo0); 204:/mnt/hgfs/boot/booter/source/tlb.c **** //printf("pteIndex %d .lo1 %08X\n", pteIndex, lo1); 205:/mnt/hgfs/boot/booter/source/tlb.c **** 			++pteIndex; 206:/mnt/hgfs/boot/booter/source/tlb.c **** 		}GAS LISTING /tmp/ccLt6UhX.s 			page 10 207:/mnt/hgfs/boot/booter/source/tlb.c ****  208:/mnt/hgfs/boot/booter/source/tlb.c **** 		return va + offset; 209:/mnt/hgfs/boot/booter/source/tlb.c **** 	} 210:/mnt/hgfs/boot/booter/source/tlb.c **** } 298              		.loc 1 210 0 299 01e0 2400BF8F 		lw	$31,36($sp) 300 01e4 2000B48F 		lw	$20,32($sp) 301 01e8 1C00B38F 		lw	$19,28($sp) 302 01ec 1800B28F 		lw	$18,24($sp) 303 01f0 1400B18F 		lw	$17,20($sp) 304 01f4 1000B08F 		lw	$16,16($sp) 305 01f8 0800E003 		j	$31 306 01fc 2800BD27 		addiu	$sp,$sp,40 307              	 308              	$L25: 309              		.loc 1 157 0 310 0200 FF1F4226 		addiu	$2,$18,8191 311              	$L42: 312 0204 00E00424 		li	$4,-8192			# 0xffffffffffffe000 313 0208 24904400 		and	$18,$2,$4 314              		.loc 1 159 0 315              		.loc 1 158 0 316 020c F4FF4012 		beq	$18,$0,$L24 317 0210 21100000 		move	$2,$0 318              	 319              		.loc 1 163 0 320 0214 24109000 		and	$2,$4,$16 321              		.loc 1 169 0 322 0218 21280000 		move	$5,$0 323 021c 21204002 		move	$4,$18 324              		.loc 1 162 0 325 0220 FF1F1432 		andi	$20,$16,0x1fff 326              		.loc 1 163 0 327              		.loc 1 169 0 328 0224 0000000C 		jal	valloc 329 0228 21804000 		move	$16,$2 330              	 331              		.loc 1 175 0 332 022c 001A0200 		sll	$3,$2,8 333              		.loc 1 169 0 334 0230 21584000 		move	$11,$2 335              		.loc 1 176 0 336 0234 431D0300 		sra	$3,$3,21 337              		.loc 1 177 0 338 0238 23004012 		beq	$18,$0,$L40 339 023c 21480000 		move	$9,$0 340              	 341 0240 0000023C 		lui	$2,%hi(L2PTE) 342 0244 C0201300 		sll	$4,$19,3 343 0248 C0180300 		sll	$3,$3,3 344 024c 00004224 		addiu	$2,$2,%lo(L2PTE) 345 0250 21406200 		addu	$8,$3,$2 346 0254 06008A24 		addiu	$10,$4,6 347              	$L38: 348              		.loc 1 181 0 349 0258 C3370900 		sra	$6,$9,31 350              		.loc 1 182 0GAS LISTING /tmp/ccLt6UhX.s 			page 11 351 025c 21103001 		addu	$2,$9,$16 352 0260 2118C000 		move	$3,$6 353              		.loc 1 181 0 354 0264 21203001 		addu	$4,$9,$16 355 0268 2128C000 		move	$5,$6 356              		.loc 1 182 0 357 026c 21187100 		addu	$3,$3,$17 358 0270 2B305000 		sltu	$6,$2,$16 359 0274 00104224 		addiu	$2,$2,4096 360              		.loc 1 181 0 361 0278 2B389000 		sltu	$7,$4,$16 362              		.loc 1 182 0 363 027c 21186600 		addu	$3,$3,$6 364              		.loc 1 181 0 365 0280 2128B100 		addu	$5,$5,$17 366              		.loc 1 182 0 367 0284 0010462C 		sltu	$6,$2,4096 368              		.loc 1 181 0 369 0288 2128A700 		addu	$5,$5,$7 370              		.loc 1 182 0 371 028c 21186600 		addu	$3,$3,$6 372 0290 80360300 		sll	$6,$3,26 373              		.loc 1 181 0 374 0294 82210400 		srl	$4,$4,6 375 0298 803E0500 		sll	$7,$5,26 376              		.loc 1 182 0 377 029c 82110200 		srl	$2,$2,6 378 02a0 25104600 		or	$2,$2,$6 379              		.loc 1 181 0 380 02a4 25208700 		or	$4,$4,$7 381              		.loc 1 177 0 382 02a8 00202925 		addiu	$9,$9,8192 383              		.loc 1 193 0 384 02ac 25204401 		or	$4,$10,$4 385              		.loc 1 194 0 386 02b0 25104201 		or	$2,$10,$2 387              		.loc 1 177 0 388 02b4 2B303201 		sltu	$6,$9,$18 389              		.loc 1 201 0 390 02b8 000004AD 		sw	$4,0($8) 391              		.loc 1 202 0 392 02bc 040002AD 		sw	$2,4($8) 393              		.loc 1 177 0 394 02c0 E5FFC014 		bne	$6,$0,$L38 395 02c4 08000825 		addiu	$8,$8,8 396              	 397              	$L40: 398              		.loc 1 208 0 399 02c8 21107401 		addu	$2,$11,$20 400              		.loc 1 210 0 401 02cc 2400BF8F 		lw	$31,36($sp) 402 02d0 2000B48F 		lw	$20,32($sp) 403 02d4 1C00B38F 		lw	$19,28($sp) 404 02d8 1800B28F 		lw	$18,24($sp) 405 02dc 1400B18F 		lw	$17,20($sp) 406 02e0 1000B08F 		lw	$16,16($sp) 407 02e4 0800E003 		j	$31GAS LISTING /tmp/ccLt6UhX.s 			page 12 408 02e8 2800BD27 		addiu	$sp,$sp,40 409              	 410              		.set	macro 411              		.set	reorder 412              	$LFE5: 413              		.end	mapPhysicalAddress 414              		.align	2 415              		.globl	unmapPhysicalAddress 416              		.ent	unmapPhysicalAddress 417              		.type	unmapPhysicalAddress, @function 418              	unmapPhysicalAddress: 419              	$LFB6: 211:/mnt/hgfs/boot/booter/source/tlb.c ****  212:/mnt/hgfs/boot/booter/source/tlb.c **** /********************************************************************/ 213:/mnt/hgfs/boot/booter/source/tlb.c **** void 214:/mnt/hgfs/boot/booter/source/tlb.c **** unmapPhysicalAddress (void *va, unsigned long size) 215:/mnt/hgfs/boot/booter/source/tlb.c **** { 420              		.loc 1 215 0 421              		.frame	$sp,0,$31		# vars= 0, regs= 0/0, args= 0, gp= 0 422              		.mask	0x00000000,0 423              		.fmask	0x00000000,0 424              		.set	noreorder 425              		.set	nomacro 426              		 427              		.loc 1 215 0 428 02ec 0800E003 		j	$31 429 02f0 00000000 		nop 430              	 431              		.set	macro 432              		.set	reorder 433              	$LFE6: 434              		.end	unmapPhysicalAddress 435              	 436              		.comm	L1PTE,1024,4 437              	 438              		.comm	L2PTE,32768,4 439              		.section	.debug_frame,"",@progbits 440              	$Lframe0: 441 0000 0C000000 		.4byte	$LECIE0-$LSCIE0 442              	$LSCIE0: 443 0004 FFFFFFFF 		.4byte	0xffffffff 444 0008 01       		.byte	0x1 445 0009 00       		.ascii	"\000" 446 000a 01       		.uleb128 0x1 447 000b 04       		.sleb128 4 448 000c 1F       		.byte	0x1f 449 000d 0C       		.byte	0xc 450 000e 1D       		.uleb128 0x1d 451 000f 00       		.uleb128 0x0 452              		.align	2 453              	$LECIE0: 454              	$LSFDE0: 455 0010 14000000 		.4byte	$LEFDE0-$LASFDE0

⌨️ 快捷键说明

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