sh: Fix up more 64-bit pgprot truncation on SH-X2 TLB.
[safe/jmp/linux-2.6] / arch / sh / kernel / cpu / sh4 / sq.c
index 97aea9d..fc065f9 100644 (file)
@@ -100,7 +100,7 @@ static inline void sq_mapping_list_del(struct sq_mapping *map)
        spin_unlock_irq(&sq_mapping_lock);
 }
 
-static int __sq_remap(struct sq_mapping *map, unsigned long flags)
+static int __sq_remap(struct sq_mapping *map, pgprot_t prot)
 {
 #if defined(CONFIG_MMU)
        struct vm_struct *vma;
@@ -113,7 +113,7 @@ static int __sq_remap(struct sq_mapping *map, unsigned long flags)
 
        if (ioremap_page_range((unsigned long)vma->addr,
                               (unsigned long)vma->addr + map->size,
-                              vma->phys_addr, __pgprot(flags))) {
+                              vma->phys_addr, prot)) {
                vunmap(vma->addr);
                return -EAGAIN;
        }
@@ -135,14 +135,14 @@ static int __sq_remap(struct sq_mapping *map, unsigned long flags)
  * @phys: Physical address of mapping.
  * @size: Length of mapping.
  * @name: User invoking mapping.
- * @flags: Protection flags.
+ * @prot: Protection bits.
  *
  * Remaps the physical address @phys through the next available store queue
  * address of @size length. @name is logged at boot time as well as through
  * the sysfs interface.
  */
 unsigned long sq_remap(unsigned long phys, unsigned int size,
-                      const char *name, unsigned long flags)
+                      const char *name, pgprot_t prot)
 {
        struct sq_mapping *map;
        unsigned long end;
@@ -177,7 +177,7 @@ unsigned long sq_remap(unsigned long phys, unsigned int size,
 
        map->sq_addr = P4SEG_STORE_QUE + (page << PAGE_SHIFT);
 
-       ret = __sq_remap(map, pgprot_val(PAGE_KERNEL_NOCACHE) | flags);
+       ret = __sq_remap(map, prot);
        if (unlikely(ret != 0))
                goto out;
 
@@ -309,8 +309,7 @@ static ssize_t mapping_store(const char *buf, size_t count)
                return -EIO;
 
        if (likely(len)) {
-               int ret = sq_remap(base, len, "Userspace",
-                                  pgprot_val(PAGE_SHARED));
+               int ret = sq_remap(base, len, "Userspace", PAGE_SHARED);
                if (ret < 0)
                        return ret;
        } else