Ignore:
File:
1 edited

Legend:

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

    r346b12a2 rb2fa1204  
    9797        entry_lo_t lo;
    9898        uintptr_t badvaddr;
    99         pte_t pte;
     99        pte_t *pte;
    100100       
    101101        badvaddr = cp0_badvaddr_read();
    102102
    103         bool found = page_mapping_find(AS, badvaddr, true, &pte);
    104         if (found && pte.p) {
     103        pte = page_mapping_find(AS, badvaddr, true);
     104        if (pte && pte->p) {
    105105                /*
    106106                 * Record access to PTE.
    107107                 */
    108                 pte.a = 1;
    109 
    110                 tlb_prepare_entry_lo(&lo, pte.g, pte.p, pte.d,
    111                     pte.cacheable, pte.pfn);
    112 
    113                 page_mapping_update(AS, badvaddr, true, &pte);
     108                pte->a = 1;
     109
     110                tlb_prepare_entry_lo(&lo, pte->g, pte->p, pte->d,
     111                    pte->cacheable, pte->pfn);
    114112
    115113                /*
     
    140138        tlb_index_t index;
    141139        uintptr_t badvaddr;
    142         pte_t pte;
     140        pte_t *pte;
    143141
    144142        /*
     
    164162        badvaddr = cp0_badvaddr_read();
    165163
    166         bool found = page_mapping_find(AS, badvaddr, true, &pte);
    167         if (found && pte.p) {
     164        pte = page_mapping_find(AS, badvaddr, true);
     165        if (pte && pte->p) {
    168166                /*
    169167                 * Read the faulting TLB entry.
     
    174172                 * Record access to PTE.
    175173                 */
    176                 pte.a = 1;
    177 
    178                 tlb_prepare_entry_lo(&lo, pte.g, pte.p, pte.d,
    179                     pte.cacheable, pte.pfn);
    180 
    181                 page_mapping_update(AS, badvaddr, true, &pte);
     174                pte->a = 1;
     175
     176                tlb_prepare_entry_lo(&lo, pte->g, pte->p, pte->d,
     177                    pte->cacheable, pte->pfn);
    182178
    183179                /*
     
    204200        tlb_index_t index;
    205201        uintptr_t badvaddr;
    206         pte_t pte;
     202        pte_t *pte;
    207203
    208204        badvaddr = cp0_badvaddr_read();
     
    228224        }
    229225
    230         bool found = page_mapping_find(AS, badvaddr, true, &pte);
    231         if (found && pte.p && pte.w) {
     226        pte = page_mapping_find(AS, badvaddr, true);
     227        if (pte && pte->p && pte->w) {
    232228                /*
    233229                 * Read the faulting TLB entry.
     
    238234                 * Record access and write to PTE.
    239235                 */
    240                 pte.a = 1;
    241                 pte.d = 1;
    242 
    243                 tlb_prepare_entry_lo(&lo, pte.g, pte.p, pte.w,
    244                     pte.cacheable, pte.pfn);
    245 
    246                 page_mapping_update(AS, badvaddr, true, &pte);
     236                pte->a = 1;
     237                pte->d = 1;
     238
     239                tlb_prepare_entry_lo(&lo, pte->g, pte->p, pte->w,
     240                    pte->cacheable, pte->pfn);
    247241
    248242                /*
Note: See TracChangeset for help on using the changeset viewer.