#include <asm/page.h>
 
-#ifdef CONFIG_HUGETLB_PAGE
-#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
-#endif
-#define HAVE_ARCH_UNMAPPED_AREA
-#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
-
 #ifndef __ASSEMBLY__
 /*
  * Page size definition
 
 
 #ifndef __ASSEMBLY__
 
+#ifdef CONFIG_HUGETLB_PAGE
+#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
+#endif
+#define HAVE_ARCH_UNMAPPED_AREA
+#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
+
 #define SLICE_LOW_SHIFT                28
 #define SLICE_LOW_TOP          (0x100000000ul)
 #define SLICE_NUM_LOW          (SLICE_LOW_TOP >> SLICE_LOW_SHIFT)
 
 }
 EXPORT_SYMBOL_GPL(slice_get_unmapped_area);
 
+unsigned long arch_get_unmapped_area(struct file *filp,
+                                    unsigned long addr,
+                                    unsigned long len,
+                                    unsigned long pgoff,
+                                    unsigned long flags)
+{
+       if (radix_enabled())
+               return generic_get_unmapped_area(filp, addr, len, pgoff, flags);
+
+       return slice_get_unmapped_area(addr, len, flags,
+                                      mm_ctx_user_psize(¤t->mm->context), 0);
+}
+
+unsigned long arch_get_unmapped_area_topdown(struct file *filp,
+                                            const unsigned long addr0,
+                                            const unsigned long len,
+                                            const unsigned long pgoff,
+                                            const unsigned long flags)
+{
+       if (radix_enabled())
+               return generic_get_unmapped_area_topdown(filp, addr0, len, pgoff, flags);
+
+       return slice_get_unmapped_area(addr0, len, flags,
+                                      mm_ctx_user_psize(¤t->mm->context), 1);
+}
+
 unsigned int notrace get_slice_psize(struct mm_struct *mm, unsigned long addr)
 {
        unsigned char *psizes;
 
        return 1UL << mmu_psize_to_shift(get_slice_psize(vma->vm_mm, vma->vm_start));
 }
+
+static int file_to_psize(struct file *file)
+{
+       struct hstate *hstate = hstate_file(file);
+       return shift_to_mmu_psize(huge_page_shift(hstate));
+}
+
+unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
+                                       unsigned long len, unsigned long pgoff,
+                                       unsigned long flags)
+{
+       if (radix_enabled())
+               return generic_hugetlb_get_unmapped_area(file, addr, len, pgoff, flags);
+
+       return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
+}
 #endif
 
        return page;
 }
 
-#ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA
-static inline int file_to_psize(struct file *file)
-{
-       struct hstate *hstate = hstate_file(file);
-       return shift_to_mmu_psize(huge_page_shift(hstate));
-}
-
-unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
-                                       unsigned long len, unsigned long pgoff,
-                                       unsigned long flags)
-{
-       if (radix_enabled())
-               return generic_hugetlb_get_unmapped_area(file, addr, len,
-                                                      pgoff, flags);
-#ifdef CONFIG_PPC_64S_HASH_MMU
-       return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
-#endif
-       BUG();
-}
-#endif
-
 bool __init arch_hugetlb_valid_size(unsigned long size)
 {
        int shift = __ffs(size);
 
        return PAGE_ALIGN(DEFAULT_MAP_WINDOW - gap - rnd);
 }
 
-#ifdef HAVE_ARCH_UNMAPPED_AREA
-unsigned long arch_get_unmapped_area(struct file *filp,
-                                    unsigned long addr,
-                                    unsigned long len,
-                                    unsigned long pgoff,
-                                    unsigned long flags)
-{
-       if (radix_enabled())
-               return generic_get_unmapped_area(filp, addr, len, pgoff, flags);
-
-#ifdef CONFIG_PPC_64S_HASH_MMU
-       return slice_get_unmapped_area(addr, len, flags,
-                                      mm_ctx_user_psize(¤t->mm->context), 0);
-#else
-       BUG();
-#endif
-}
-
-unsigned long arch_get_unmapped_area_topdown(struct file *filp,
-                                            const unsigned long addr0,
-                                            const unsigned long len,
-                                            const unsigned long pgoff,
-                                            const unsigned long flags)
-{
-       if (radix_enabled())
-               return generic_get_unmapped_area_topdown(filp, addr0, len, pgoff, flags);
-
-#ifdef CONFIG_PPC_64S_HASH_MMU
-       return slice_get_unmapped_area(addr0, len, flags,
-                                      mm_ctx_user_psize(¤t->mm->context), 1);
-#else
-       BUG();
-#endif
-}
-#endif /* HAVE_ARCH_UNMAPPED_AREA */
-
 /*
  * This function, called very early during the creation of a new
  * process VM image, sets up which VM layout function to use: