powerpc/mm: properly set PAGE_KERNEL flags in ioremap()
[sfrench/cifs-2.6.git] / arch / powerpc / mm / pgtable_32.c
index 4c3adde09d9503be3d61d30389e46c5fc0548e88..6a81a2446c47176ec43888d75754973d145d14ba 100644 (file)
@@ -76,32 +76,36 @@ pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address)
 void __iomem *
 ioremap(phys_addr_t addr, unsigned long size)
 {
-       return __ioremap_caller(addr, size, _PAGE_NO_CACHE | _PAGE_GUARDED,
-                               __builtin_return_address(0));
+       unsigned long flags = pgprot_val(pgprot_noncached(PAGE_KERNEL));
+
+       return __ioremap_caller(addr, size, flags, __builtin_return_address(0));
 }
 EXPORT_SYMBOL(ioremap);
 
 void __iomem *
 ioremap_wc(phys_addr_t addr, unsigned long size)
 {
-       return __ioremap_caller(addr, size, _PAGE_NO_CACHE,
-                               __builtin_return_address(0));
+       unsigned long flags = pgprot_val(pgprot_noncached_wc(PAGE_KERNEL));
+
+       return __ioremap_caller(addr, size, flags, __builtin_return_address(0));
 }
 EXPORT_SYMBOL(ioremap_wc);
 
 void __iomem *
 ioremap_wt(phys_addr_t addr, unsigned long size)
 {
-       return __ioremap_caller(addr, size, _PAGE_WRITETHRU,
-                               __builtin_return_address(0));
+       unsigned long flags = pgprot_val(pgprot_cached_wthru(PAGE_KERNEL));
+
+       return __ioremap_caller(addr, size, flags, __builtin_return_address(0));
 }
 EXPORT_SYMBOL(ioremap_wt);
 
 void __iomem *
 ioremap_coherent(phys_addr_t addr, unsigned long size)
 {
-       return __ioremap_caller(addr, size, _PAGE_COHERENT,
-                               __builtin_return_address(0));
+       unsigned long flags = pgprot_val(pgprot_cached(PAGE_KERNEL));
+
+       return __ioremap_caller(addr, size, flags, __builtin_return_address(0));
 }
 EXPORT_SYMBOL(ioremap_coherent);
 
@@ -134,14 +138,6 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, unsigned long flags,
        phys_addr_t p;
        int err;
 
-       /* Make sure we have the base flags */
-       if ((flags & _PAGE_PRESENT) == 0)
-               flags |= pgprot_val(PAGE_KERNEL);
-
-       /* Non-cacheable page cannot be coherent */
-       if (flags & _PAGE_NO_CACHE)
-               flags &= ~_PAGE_COHERENT;
-
        /*
         * Choose an address to map it to.
         * Once the vmalloc system is running, we use it.