Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/mips32/src/mm/tlb.c

    r98000fb rbd81386  
    321321void tlb_refill_fail(istate_t *istate)
    322322{
    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();
    327324       
    328325        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.");
    332328}
    333329
     
    335331void tlb_invalid_fail(istate_t *istate)
    336332{
    337         char *symbol;
    338 
    339         symbol = symtab_fmt_name_lookup(istate->epc);
    340 
     333        uintptr_t va = cp0_badvaddr_read();
     334       
    341335        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.");
    345338}
    346339
    347340void tlb_modified_fail(istate_t *istate)
    348341{
    349         char *symbol;
    350 
    351         symbol = symtab_fmt_name_lookup(istate->epc);
    352 
     342        uintptr_t va = cp0_badvaddr_read();
     343       
    353344        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.");
    357347}
    358348
    359349/** Try to find PTE for faulting address.
    360  *
    361  * The AS->lock must be held on entry to this function.
    362350 *
    363351 * @param badvaddr      Faulting virtual address.
     
    375363        entry_hi_t hi;
    376364        pte_t *pte;
     365
     366        ASSERT(mutex_locked(&AS->lock));
    377367
    378368        hi.value = cp0_entry_hi_read();
     
    461451        hi_save.value = cp0_entry_hi_read();
    462452       
    463         printf("#  ASID VPN2   MASK G V D C PFN\n");
    464         printf("-- ---- ------ ---- - - - - ------\n");
     453        printf("[nr] [asid] [vpn2] [mask] [gvdc] [pfn ]\n");
    465454       
    466455        for (i = 0; i < TLB_ENTRY_COUNT; i++) {
     
    473462                lo1.value = cp0_entry_lo1_read();
    474463               
    475                 printf("%-2u %-4u %#6x %#4x %1u %1u %1u %1u %#6x\n",
     464                printf("%-4u %-6u %#6x %#6x  %1u%1u%1u%1u %#6x\n",
    476465                    i, hi.asid, hi.vpn2, mask.mask,
    477466                    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",
    479468                    lo1.g, lo1.v, lo1.d, lo1.c, lo1.pfn);
    480469        }
     
    568557        entry_hi_t hi, hi_save;
    569558        tlb_index_t index;
    570 
    571         ASSERT(asid != ASID_INVALID);
     559       
     560        if (asid == ASID_INVALID)
     561                return;
    572562
    573563        hi_save.value = cp0_entry_hi_read();
Note: See TracChangeset for help on using the changeset viewer.