--- zzzz-none-000/linux-3.10.107/arch/mips/include/asm/cacheflush.h 2017-06-27 09:49:32.000000000 +0000 +++ vr9-7490-729/linux-3.10.107/arch/mips/include/asm/cacheflush.h 2021-11-10 11:53:53.000000000 +0000 @@ -51,35 +51,35 @@ #define ARCH_HAS_FLUSH_ANON_PAGE extern void __flush_anon_page(struct page *, unsigned long); -static inline void flush_anon_page(struct vm_area_struct *vma, +static inline void flush_anon_page(struct vm_area_struct *vma __maybe_unused, struct page *page, unsigned long vmaddr) { if (cpu_has_dc_aliases && PageAnon(page)) __flush_anon_page(page, vmaddr); } -static inline void flush_icache_page(struct vm_area_struct *vma, - struct page *page) +static inline void flush_icache_page(struct vm_area_struct *vma __maybe_unused, + struct page *page __maybe_unused) { } extern void (*flush_icache_range)(unsigned long start, unsigned long end); extern void (*local_flush_icache_range)(unsigned long start, unsigned long end); -extern void (*__flush_cache_vmap)(void); +extern void (*__flush_cache_vmap)(unsigned long start, unsigned long end); static inline void flush_cache_vmap(unsigned long start, unsigned long end) { if (cpu_has_dc_aliases) - __flush_cache_vmap(); + __flush_cache_vmap(start,end); } -extern void (*__flush_cache_vunmap)(void); +extern void (*__flush_cache_vunmap)(unsigned long start, unsigned long end); static inline void flush_cache_vunmap(unsigned long start, unsigned long end) { if (cpu_has_dc_aliases) - __flush_cache_vunmap(); + __flush_cache_vunmap(start,end); } extern void copy_to_user_page(struct vm_area_struct *vma, @@ -94,6 +94,8 @@ extern void (*flush_icache_all)(void); extern void (*local_flush_data_cache_page)(void * addr); extern void (*flush_data_cache_page)(unsigned long addr); +extern void (*mips_flush_data_cache_range)(struct vm_area_struct *vma, + struct page *page, unsigned long addr, unsigned long size); /* * This flag is used to indicate that the page pointed to by a pte @@ -117,7 +119,8 @@ #define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE static inline void flush_kernel_dcache_page(struct page *page) { - BUG_ON(cpu_has_dc_aliases && PageHighMem(page)); + if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc) + __flush_dcache_page(page); } /*