Ignore:
File:
1 edited

Legend:

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

    r38dc82d r1dbc43f  
    4949 * @param access   Access mode that caused the fault.
    5050 * @param istate   Pointer to interrupted state.
    51  * @param[out] pte Structure that will receive a copy of the found PTE.
    52  *
    53  * @return True if the mapping was found, false otherwise.
    54  *
    55  */
    56 static bool find_mapping_and_check(as_t *as, uintptr_t badvaddr, int access,
    57     istate_t *istate, pte_t *pte)
     51 *
     52 * @return PTE on success, NULL otherwise.
     53 *
     54 */
     55static pte_t *find_mapping_and_check(as_t *as, uintptr_t badvaddr, int access,
     56    istate_t *istate)
    5857{
    5958        /*
    6059         * Check if the mapping exists in page tables.
    6160         */
    62         bool found = page_mapping_find(as, badvaddr, true, pte);
    63         if (found && pte->present) {
     61        pte_t *pte = page_mapping_find(as, badvaddr, true);
     62        if ((pte) && (pte->present)) {
    6463                /*
    6564                 * Mapping found in page tables.
    6665                 * Immediately succeed.
    6766                 */
    68                 return true;
     67                return pte;
    6968        }
    7069        /*
     
    7776                 * The mapping ought to be in place.
    7877                 */
    79                 found = page_mapping_find(as, badvaddr, true, pte);
    80 
    81                 ASSERT(found);
    82                 ASSERT(pte->present);
    83 
    84                 return found;
    85         }
    86 
    87         return false;
     78                pte = page_mapping_find(as, badvaddr, true);
     79                ASSERT((pte) && (pte->present));
     80                return pte;
     81        }
     82
     83        return NULL;
    8884}
    8985
     
    186182                badvaddr = istate->pc;
    187183       
    188         pte_t pte;
    189         bool found = find_mapping_and_check(AS, badvaddr,
    190             PF_ACCESS_READ /* FIXME */, istate, &pte);
    191        
    192         if (found) {
     184        pte_t *pte = find_mapping_and_check(AS, badvaddr,
     185            PF_ACCESS_READ /* FIXME */, istate);
     186       
     187        if (pte) {
    193188                /* Record access to PTE */
    194                 pte.accessed = 1;
    195                 pht_insert(badvaddr, &pte);
     189                pte->accessed = 1;
     190                pht_insert(badvaddr, pte);
    196191        }
    197192}
Note: See TracChangeset for help on using the changeset viewer.