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