📄 tlb.lst
字号:
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 # 0xffffffff80000000GAS 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 0GAS 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 $31GAS 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 + -