in mm/cacheflush.c [132:151]
void flush_cache_range(struct vm_area_struct *vma,
unsigned long start, unsigned long end)
{
unsigned long flags;
if ((end - start) > 8 * PAGE_SIZE) {
cpu_dcache_wbinval_all();
if (vma->vm_flags & VM_EXEC)
cpu_icache_inval_all();
return;
}
local_irq_save(flags);
while (start < end) {
if (va_present(vma->vm_mm, start))
cpu_cache_wbinval_page(start, vma->vm_flags & VM_EXEC);
start += PAGE_SIZE;
}
local_irq_restore(flags);
return;
}