Ignore:
File:
1 edited

Legend:

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

    r346b12a2 r7254df6  
    211211{
    212212        uintptr_t va = ALIGN_DOWN(istate->tpc, PAGE_SIZE);
    213         pte_t t;
    214 
    215         bool found = page_mapping_find(AS, va, true, &t);
    216         if (found && PTE_EXECUTABLE(&t)) {
     213        pte_t *t;
     214
     215        t = page_mapping_find(AS, va, true);
     216
     217        if (t && PTE_EXECUTABLE(t)) {
    217218                /*
    218219                 * The mapping was found in the software page hash table.
    219220                 * Insert it into ITLB.
    220221                 */
    221                 t.a = true;
    222                 itlb_pte_copy(&t);
     222                t->a = true;
     223                itlb_pte_copy(t);
    223224#ifdef CONFIG_TSB
    224                 itsb_pte_copy(&t);
    225 #endif
    226                 page_mapping_update(AS, va, true, &t);
     225                itsb_pte_copy(t);
     226#endif
    227227        } else {
    228228                /*
     
    244244void fast_data_access_mmu_miss(unsigned int tt, istate_t *istate)
    245245{
    246         pte_t t;
     246        pte_t *t;
    247247        uintptr_t va = DMISS_ADDRESS(istate->tlb_tag_access);
    248248        uint16_t ctx = DMISS_CONTEXT(istate->tlb_tag_access);
     
    261261        }
    262262
    263         bool found = page_mapping_find(as, va, true, &t);
    264         if (found) {
     263        t = page_mapping_find(as, va, true);
     264        if (t) {
    265265                /*
    266266                 * The mapping was found in the software page hash table.
    267267                 * Insert it into DTLB.
    268268                 */
    269                 t.a = true;
    270                 dtlb_pte_copy(&t, true);
     269                t->a = true;
     270                dtlb_pte_copy(t, true);
    271271#ifdef CONFIG_TSB
    272                 dtsb_pte_copy(&t, true);
    273 #endif
    274                 page_mapping_update(as, va, true, &t);
     272                dtsb_pte_copy(t, true);
     273#endif
    275274        } else {
    276275                /*
     
    289288void fast_data_access_protection(unsigned int tt, istate_t *istate)
    290289{
    291         pte_t t;
     290        pte_t *t;
    292291        uintptr_t va = DMISS_ADDRESS(istate->tlb_tag_access);
    293292        uint16_t ctx = DMISS_CONTEXT(istate->tlb_tag_access);
     
    297296                as = AS_KERNEL;
    298297
    299         bool found = page_mapping_find(as, va, true, &t);
    300         if (found && PTE_WRITABLE(&t)) {
     298        t = page_mapping_find(as, va, true);
     299        if (t && PTE_WRITABLE(t)) {
    301300                /*
    302301                 * The mapping was found in the software page hash table and is
     
    304303                 * into DTLB.
    305304                 */
    306                 t.a = true;
    307                 t.d = true;
     305                t->a = true;
     306                t->d = true;
    308307                mmu_demap_page(va, ctx, MMU_FLAG_DTLB);
    309                 dtlb_pte_copy(&t, false);
     308                dtlb_pte_copy(t, false);
    310309#ifdef CONFIG_TSB
    311                 dtsb_pte_copy(&t, false);
    312 #endif
    313                 page_mapping_update(as, va, true, &t);
     310                dtsb_pte_copy(t, false);
     311#endif
    314312        } else {
    315313                /*
Note: See TracChangeset for help on using the changeset viewer.