Loading arch/arm/mm/flush.c +8 −3 Original line number Original line Diff line number Diff line Loading @@ -35,7 +35,6 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) : : : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) : "cc"); : "cc"); __flush_icache_all(); } } void flush_cache_mm(struct mm_struct *mm) void flush_cache_mm(struct mm_struct *mm) Loading Loading @@ -79,8 +78,10 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsig return; return; } } if (cache_is_vipt_aliasing()) if (cache_is_vipt_aliasing()) { flush_pfn_alias(pfn, user_addr); flush_pfn_alias(pfn, user_addr); __flush_icache_all(); } } } void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, Loading @@ -94,6 +95,7 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, if (cache_is_vipt_aliasing()) { if (cache_is_vipt_aliasing()) { flush_pfn_alias(page_to_pfn(page), uaddr); flush_pfn_alias(page_to_pfn(page), uaddr); __flush_icache_all(); return; return; } } Loading Loading @@ -132,9 +134,11 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page) * we only need to do one flush - which would be at the relevant * we only need to do one flush - which would be at the relevant * userspace colour, which is congruent with page->index. * userspace colour, which is congruent with page->index. */ */ if (mapping && cache_is_vipt_aliasing()) if (mapping && cache_is_vipt_aliasing()) { flush_pfn_alias(page_to_pfn(page), flush_pfn_alias(page_to_pfn(page), page->index << PAGE_CACHE_SHIFT); page->index << PAGE_CACHE_SHIFT); __flush_icache_all(); } } } static void __flush_dcache_aliases(struct address_space *mapping, struct page *page) static void __flush_dcache_aliases(struct address_space *mapping, struct page *page) Loading Loading @@ -244,6 +248,7 @@ void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned l * userspace address only. * userspace address only. */ */ flush_pfn_alias(pfn, vmaddr); flush_pfn_alias(pfn, vmaddr); __flush_icache_all(); } } /* /* Loading Loading
arch/arm/mm/flush.c +8 −3 Original line number Original line Diff line number Diff line Loading @@ -35,7 +35,6 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) : : : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) : "cc"); : "cc"); __flush_icache_all(); } } void flush_cache_mm(struct mm_struct *mm) void flush_cache_mm(struct mm_struct *mm) Loading Loading @@ -79,8 +78,10 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsig return; return; } } if (cache_is_vipt_aliasing()) if (cache_is_vipt_aliasing()) { flush_pfn_alias(pfn, user_addr); flush_pfn_alias(pfn, user_addr); __flush_icache_all(); } } } void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, Loading @@ -94,6 +95,7 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, if (cache_is_vipt_aliasing()) { if (cache_is_vipt_aliasing()) { flush_pfn_alias(page_to_pfn(page), uaddr); flush_pfn_alias(page_to_pfn(page), uaddr); __flush_icache_all(); return; return; } } Loading Loading @@ -132,9 +134,11 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page) * we only need to do one flush - which would be at the relevant * we only need to do one flush - which would be at the relevant * userspace colour, which is congruent with page->index. * userspace colour, which is congruent with page->index. */ */ if (mapping && cache_is_vipt_aliasing()) if (mapping && cache_is_vipt_aliasing()) { flush_pfn_alias(page_to_pfn(page), flush_pfn_alias(page_to_pfn(page), page->index << PAGE_CACHE_SHIFT); page->index << PAGE_CACHE_SHIFT); __flush_icache_all(); } } } static void __flush_dcache_aliases(struct address_space *mapping, struct page *page) static void __flush_dcache_aliases(struct address_space *mapping, struct page *page) Loading Loading @@ -244,6 +248,7 @@ void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned l * userspace address only. * userspace address only. */ */ flush_pfn_alias(pfn, vmaddr); flush_pfn_alias(pfn, vmaddr); __flush_icache_all(); } } /* /* Loading