Subversion Repositories HelenOS

Rev

Rev 2134 | Rev 2467 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2134 Rev 2141
Line 207... Line 207...
207
   
207
   
208
    page_mapping_insert(AS, addr, frame, as_area_get_flags(area));
208
    page_mapping_insert(AS, addr, frame, as_area_get_flags(area));
209
    if (!used_space_insert(area, ALIGN_DOWN(addr, PAGE_SIZE), 1))
209
    if (!used_space_insert(area, ALIGN_DOWN(addr, PAGE_SIZE), 1))
210
        panic("Could not insert used space.\n");
210
        panic("Could not insert used space.\n");
211
 
211
 
212
#ifdef CONFIG_VIRT_IDX_DCACHE
-
 
213
    if (dirty && PAGE_COLOR(PA2KA(frame)) != PAGE_COLOR(addr)) {
-
 
214
        /*
-
 
215
         * By writing to the frame using kernel virtual address,
-
 
216
         * we have created an illegal virtual alias. We now have to
-
 
217
         * invalidate cachelines belonging to addr on all processors
-
 
218
         * so that they will be reloaded with the new content on next
-
 
219
         * read.
-
 
220
         */
-
 
221
        dcache_flush_frame(addr, frame);
-
 
222
        dcache_shootdown_start(DCACHE_INVL_FRAME, PAGE_COLOR(addr), frame);
-
 
223
        dcache_shootdown_finalize();
-
 
224
    }
-
 
225
#endif
-
 
226
 
-
 
227
    return AS_PF_OK;
212
    return AS_PF_OK;
228
}
213
}
229
 
214
 
230
/** Free a frame that is backed by the ELF backend.
215
/** Free a frame that is backed by the ELF backend.
231
 *
216
 *
Line 353... Line 338...
353
    mutex_unlock(&area->sh_info->lock);
338
    mutex_unlock(&area->sh_info->lock);
354
}
339
}
355
 
340
 
356
/** @}
341
/** @}
357
 */
342
 */
358
 
-