ARC: [mm] optimise VIPT dcache aliasing 1/x
authorVineet Gupta <vgupta@synopsys.com>
Thu, 16 May 2013 06:53:31 +0000 (12:23 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Sat, 22 Jun 2013 13:53:18 +0000 (19:23 +0530)
flush_cache_page() - kills icache only if page is executable

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/mm/cache_arc700.c

index 03012a27d590e74dd1b4114a355ffbdc5fc4ffae..4e54ef5b4c2a4f8ffeee286a7e06b04676abc046 100644 (file)
@@ -679,7 +679,12 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long u_vaddr,
 {
        unsigned int paddr = pfn << PAGE_SHIFT;
 
-       __sync_icache_dcache(paddr, u_vaddr, PAGE_SIZE);
+       u_vaddr &= PAGE_MASK;
+
+       ___flush_dcache_page(paddr, u_vaddr);
+
+       if (vma->vm_flags & VM_EXEC)
+               __inv_icache_page(paddr, u_vaddr);
 }
 
 void flush_cache_range(struct vm_area_struct *vma, unsigned long start,