Changes in kernel/arch/mips32/src/mm/tlb.c [98000fb:bd81386] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/mips32/src/mm/tlb.c
r98000fb rbd81386 321 321 void tlb_refill_fail(istate_t *istate) 322 322 { 323 char *symbol, *sym2; 324 325 symbol = symtab_fmt_name_lookup(istate->epc); 326 sym2 = symtab_fmt_name_lookup(istate->ra); 323 uintptr_t va = cp0_badvaddr_read(); 327 324 328 325 fault_if_from_uspace(istate, "TLB Refill Exception on %p.", 329 cp0_badvaddr_read()); 330 panic("%x: TLB Refill Exception at %x (%s<-%s).", cp0_badvaddr_read(), 331 istate->epc, symbol, sym2); 326 (void *) va); 327 panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, "TLB Refill Exception."); 332 328 } 333 329 … … 335 331 void tlb_invalid_fail(istate_t *istate) 336 332 { 337 char *symbol; 338 339 symbol = symtab_fmt_name_lookup(istate->epc); 340 333 uintptr_t va = cp0_badvaddr_read(); 334 341 335 fault_if_from_uspace(istate, "TLB Invalid Exception on %p.", 342 cp0_badvaddr_read()); 343 panic("%x: TLB Invalid Exception at %x (%s).", cp0_badvaddr_read(), 344 istate->epc, symbol); 336 (void *) va); 337 panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, "TLB Invalid Exception."); 345 338 } 346 339 347 340 void tlb_modified_fail(istate_t *istate) 348 341 { 349 char *symbol; 350 351 symbol = symtab_fmt_name_lookup(istate->epc); 352 342 uintptr_t va = cp0_badvaddr_read(); 343 353 344 fault_if_from_uspace(istate, "TLB Modified Exception on %p.", 354 cp0_badvaddr_read()); 355 panic("%x: TLB Modified Exception at %x (%s).", cp0_badvaddr_read(), 356 istate->epc, symbol); 345 (void *) va); 346 panic_memtrap(istate, PF_ACCESS_WRITE, va, "TLB Modified Exception."); 357 347 } 358 348 359 349 /** Try to find PTE for faulting address. 360 *361 * The AS->lock must be held on entry to this function.362 350 * 363 351 * @param badvaddr Faulting virtual address. … … 375 363 entry_hi_t hi; 376 364 pte_t *pte; 365 366 ASSERT(mutex_locked(&AS->lock)); 377 367 378 368 hi.value = cp0_entry_hi_read(); … … 461 451 hi_save.value = cp0_entry_hi_read(); 462 452 463 printf("# ASID VPN2 MASK G V D C PFN\n"); 464 printf("-- ---- ------ ---- - - - - ------\n"); 453 printf("[nr] [asid] [vpn2] [mask] [gvdc] [pfn ]\n"); 465 454 466 455 for (i = 0; i < TLB_ENTRY_COUNT; i++) { … … 473 462 lo1.value = cp0_entry_lo1_read(); 474 463 475 printf("%- 2u %-4u %#6x %#4x %1u %1u %1u %1u%#6x\n",464 printf("%-4u %-6u %#6x %#6x %1u%1u%1u%1u %#6x\n", 476 465 i, hi.asid, hi.vpn2, mask.mask, 477 466 lo0.g, lo0.v, lo0.d, lo0.c, lo0.pfn); 478 printf(" %1u %1u %1u %1u%#6x\n",467 printf(" %1u%1u%1u%1u %#6x\n", 479 468 lo1.g, lo1.v, lo1.d, lo1.c, lo1.pfn); 480 469 } … … 568 557 entry_hi_t hi, hi_save; 569 558 tlb_index_t index; 570 571 ASSERT(asid != ASID_INVALID); 559 560 if (asid == ASID_INVALID) 561 return; 572 562 573 563 hi_save.value = cp0_entry_hi_read();
Note:
See TracChangeset
for help on using the changeset viewer.