+void flush_user_dcache_page(struct page *page);
+
The split into flush_kernel.. and flush_user.. is pointless. We have no
use for a flush_user_.. API because it's not part of the standard linux
one. Plus it's going to confuse those who come after us no end because
now we're different from every other architecture.
#define flush_kernel_dcache_range(start,size) \
flush_kernel_dcache_range_asm((start), (start)+(size));
/* vmap range flushes and invalidates. Architecturally, we don't need
@@ -125,18 +127,27 @@ flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vma
void mark_rodata_ro(void);
#endif
-#ifdef CONFIG_PA8X00
-/* Only pa8800, pa8900 needs this */
-
#include <asm/kmap_types.h>
#define ARCH_HAS_KMAP
-void kunmap_parisc(void *addr);
+static inline void kmap_parisc(struct page *page)
+{
+ if (parisc_requires_coherency())
+ flush_user_dcache_page(page);
+}
No ... if we're genuinely moving coherency into kmap/kunmap, this has to
become
flush_dcache_page(page);
unconditionally.