sh: uncached mapping helpers.
[linux-2.6-block.git] / arch / sh / include / asm / page.h
index 3accdc5ab122ec1827ffd7aa9676e27e8ab9a5d6..8237d9f53e56bf707ad84db871b2c9a0d95220d0 100644 (file)
@@ -50,13 +50,22 @@ extern unsigned long shm_align_mask;
 extern unsigned long max_low_pfn, min_low_pfn;
 extern unsigned long memory_start, memory_end;
 
+#ifdef CONFIG_UNCACHED_MAPPING
+extern unsigned long uncached_start, uncached_end;
+
+extern int virt_addr_uncached(unsigned long kaddr);
+extern void uncached_init(void);
+#else
+#define virt_addr_uncached(kaddr)      (0)
+#define uncached_init()                        do { } while (0)
+#endif
+
 static inline unsigned long
 pages_do_alias(unsigned long addr1, unsigned long addr2)
 {
        return (addr1 ^ addr2) & shm_align_mask;
 }
 
-
 #define clear_page(page)       memset((void *)(page), 0, PAGE_SIZE)
 extern void copy_page(void *to, void *from);
 
@@ -135,6 +144,14 @@ typedef struct page *pgtable_t;
 #define __va(x)        ((void *)((unsigned long)(x)+PAGE_OFFSET))
 #endif
 
+#ifdef CONFIG_UNCACHED_MAPPING
+#define UNCAC_ADDR(addr)       ((addr) - PAGE_OFFSET + uncached_start)
+#define CAC_ADDR(addr)         ((addr) - uncached_start + PAGE_OFFSET)
+#else
+#define UNCAC_ADDR(addr)       ((addr))
+#define CAC_ADDR(addr)         ((addr))
+#endif
+
 #define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
 #define page_to_phys(page)     (page_to_pfn(page) << PAGE_SHIFT)