vserver 2.0 rc7
[linux-2.6.git] / include / asm-sh64 / cacheflush.h
index 6dcc872..55f71aa 100644 (file)
@@ -14,7 +14,7 @@ extern void flush_cache_mm(struct mm_struct *mm);
 extern void flush_cache_sigtramp(unsigned long start, unsigned long end);
 extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
                              unsigned long end);
-extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr);
+extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn);
 extern void flush_dcache_page(struct page *pg);
 extern void flush_icache_range(unsigned long start, unsigned long end);
 extern void flush_icache_user_range(struct vm_area_struct *vma,
@@ -30,13 +30,17 @@ extern void flush_icache_user_range(struct vm_area_struct *vma,
 #define flush_icache_page(vma, page)   do { } while (0)
 
 #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
-do { memcpy(dst, src, len); \
-     flush_icache_user_range(vma, page, vaddr, len); \
-} while (0)
+       do {                                                    \
+               flush_cache_page(vma, vaddr, page_to_pfn(page));\
+               memcpy(dst, src, len);                          \
+               flush_icache_user_range(vma, page, vaddr, len); \
+       } while (0)
 
 #define copy_from_user_page(vma, page, vaddr, dst, src, len) \
-       memcpy(dst, src, len)
-
+       do {                                                    \
+               flush_cache_page(vma, vaddr, page_to_pfn(page));\
+               memcpy(dst, src, len);                          \
+       } while (0)
 
 #endif /* __ASSEMBLY__ */