Changeset 826c203 in mainline for kernel/arch/ppc32/src/mm/tlb.c


Ignore:
Timestamp:
2009-01-30T16:58:35Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ee79df74
Parents:
12bf33a
Message:

avoid nasty race condition during page fault handling

File:
1 edited

Legend:

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

    r12bf33a r826c203  
    112112        char *sym2 = "";
    113113
    114         char *s = get_symtab_entry(istate->pc);
    115         if (s)
    116                 symbol = s;
    117         s = get_symtab_entry(istate->lr);
    118         if (s)
    119                 sym2 = s;
     114        char *str = get_symtab_entry(istate->pc);
     115        if (str)
     116                symbol = str;
     117        str = get_symtab_entry(istate->lr);
     118        if (str)
     119                sym2 = str;
    120120
    121121        fault_if_from_uspace(istate,
    122             "%p: PHT Refill Exception at %p (%s<-%s).", badvaddr,
    123             istate->pc, symbol, sym2);
     122            "PHT Refill Exception on %p.", badvaddr);
    124123        panic("%p: PHT Refill Exception at %p (%s<-%s).", badvaddr,
    125124            istate->pc, symbol, sym2);
     
    292291        }
    293292       
    294         if (n == VECTOR_DATA_STORAGE) {
    295                 asm volatile (
    296                         "mfdar %0\n"
    297                         : "=r" (badvaddr)
    298                 );
    299         } else
     293        if (n == VECTOR_DATA_STORAGE)
     294                badvaddr = istate->dar;
     295        else
    300296                badvaddr = istate->pc;
    301297               
     
    343339        uintptr_t badvaddr;
    344340       
    345         if (n == VECTOR_DATA_STORAGE) {
    346                 asm volatile (
    347                         "mfdar %0\n"
    348                         : "=r" (badvaddr)
    349                 );
    350         } else
     341        if (n == VECTOR_DATA_STORAGE)
     342                badvaddr = istate->dar;
     343        else
    351344                badvaddr = istate->pc;
    352345       
Note: See TracChangeset for help on using the changeset viewer.