On Sun, Feb 27, 2005 at 08:12:08PM -0800, David S. Miller wrote: > What are you patching against? In the patch I sent, which are you > replying to, I made flush_icache_user_range() in this file be: > > void flush_icache_user_range(struct vm_area_struct *vma, > struct page *page, unsigned long addr, int len) > { > __flush_cache_page(vma, addr, > PHYSADDR(page_address(page)) >> PAGE_SHIFT); > } > Yes, you're right, wrong tree, sorry for the confusion. Here are the fixes against your patch: ===== arch/sh/mm/cache-sh4.c 1.10 vs edited ===== --- 1.10/arch/sh/mm/cache-sh4.c 2005-02-28 11:14:14 +02:00 +++ edited/arch/sh/mm/cache-sh4.c 2005-02-28 11:15:27 +02:00 @@ -357,7 +357,6 @@ void flush_icache_user_range(struct vm_area_struct *vma, struct page *page, unsigned long addr, int len) { - __flush_cache_page(vma, addr, - PHYSADDR(page_address(page)) >> PAGE_SHIFT); + flush_cache_page(vma, addr, page_to_pfn(page)); } ===== arch/sh64/mm/cache.c 1.2 vs edited ===== --- 1.2/arch/sh64/mm/cache.c 2005-02-28 11:14:14 +02:00 +++ edited/arch/sh64/mm/cache.c 2005-02-28 11:15:01 +02:00 @@ -573,11 +573,6 @@ } } -static inline void sh64_dcache_purge_virt_page(struct mm_struct *mm, unsigned long eaddr, unsigned long pfn) -{ - sh64_dcache_purge_phy_page(pfn << PAGE_SHIFT); -} - static void sh64_dcache_purge_user_page(struct mm_struct *mm, unsigned long eaddr) { pgd_t *pgd; @@ -895,7 +890,7 @@ Note(1), this is called with mm->page_table_lock held. */ - sh64_dcache_purge_virt_page(vma->vm_mm, eaddr, pfn); + sh64_dcache_purge_phy_page(pfn << PAGE_SHIFT); if (vma->vm_flags & VM_EXEC) { sh64_icache_inv_user_page(vma, eaddr);