Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[sfrench/cifs-2.6.git] / arch / powerpc / mm / gup.c
index 28a114db3ba0d9a405fbd743b3b6b86359201795..bc400c78c97fb4030b28cbd6c7b4794bba70b199 100644 (file)
@@ -14,6 +14,8 @@
 #include <linux/rwsem.h>
 #include <asm/pgtable.h>
 
+#ifdef __HAVE_ARCH_PTE_SPECIAL
+
 /*
  * The performance critical leaf functions are made noinline otherwise gcc
  * inlines everything into a single function which results in too much
@@ -151,8 +153,11 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
        unsigned long addr, len, end;
        unsigned long next;
        pgd_t *pgdp;
-       int psize, nr = 0;
+       int nr = 0;
+#ifdef CONFIG_PPC64
        unsigned int shift;
+       int psize;
+#endif
 
        pr_debug("%s(%lx,%x,%s)\n", __func__, start, nr_pages, write ? "write" : "read");
 
@@ -205,8 +210,13 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
         */
        local_irq_disable();
 
+#ifdef CONFIG_PPC64
+       /* Those bits are related to hugetlbfs implementation and only exist
+        * on 64-bit for now
+        */
        psize = get_slice_psize(mm, addr);
        shift = mmu_psize_defs[psize].shift;
+#endif /* CONFIG_PPC64 */
 
 #ifdef CONFIG_HUGETLB_PAGE
        if (unlikely(mmu_huge_psizes[psize])) {
@@ -236,7 +246,9 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
                do {
                        pgd_t pgd = *pgdp;
 
+#ifdef CONFIG_PPC64
                        VM_BUG_ON(shift != mmu_psize_defs[get_slice_psize(mm, addr)].shift);
+#endif
                        pr_debug("  %016lx: normal pgd %p\n", addr,
                                 (void *)pgd_val(pgd));
                        next = pgd_addr_end(addr, end);
@@ -279,3 +291,5 @@ slow_irqon:
                return ret;
        }
 }
+
+#endif /* __HAVE_ARCH_PTE_SPECIAL */