arch/kmap: remove redundant arch specific kmaps
[linux-2.6-microblaze.git] / include / linux / highmem.h
index ea5cdbd..fc3adc5 100644 (file)
@@ -34,6 +34,24 @@ static inline void invalidate_kernel_vmap_range(void *vaddr, int size)
 #ifdef CONFIG_HIGHMEM
 #include <asm/highmem.h>
 
+#ifndef ARCH_HAS_KMAP_FLUSH_TLB
+static inline void kmap_flush_tlb(unsigned long addr) { }
+#endif
+
+void *kmap_high(struct page *page);
+static inline void *kmap(struct page *page)
+{
+       void *addr;
+
+       might_sleep();
+       if (!PageHighMem(page))
+               addr = page_address(page);
+       else
+               addr = kmap_high(page);
+       kmap_flush_tlb((unsigned long)addr);
+       return addr;
+}
+
 /* declarations for linux/mm/highmem.c */
 unsigned int nr_free_highpages(void);
 extern atomic_long_t _totalhigh_pages;