typedef pte_t *pgtable_t;
 
+/* These two values define the virtual address space range in which we
+ * must forbid 64-bit user processes from making mappings.  It
+ * represents the virtual address space hole present in most early
+ * sparc64 chips including UltraSPARC-I.  The next two defines specify
+ * the actual exclusion region we enforce, wherein we use a 4GB red
+ * zone on each side of the VA hole.
+ */
+#define SPARC64_VA_HOLE_TOP    _AC(0xfffff80000000000,UL)
+#define SPARC64_VA_HOLE_BOTTOM _AC(0x0000080000000000,UL)
+
+#define VA_EXCLUDE_START (SPARC64_VA_HOLE_BOTTOM - (1UL << 32UL))
+#define VA_EXCLUDE_END   (SPARC64_VA_HOLE_TOP + (1UL << 32UL))
+
 #define TASK_UNMAPPED_BASE     (test_thread_flag(TIF_32BIT) ? \
-                                (_AC(0x0000000070000000,UL)) : \
-                                (_AC(0xfffff80000000000,UL) + (1UL << 32UL)))
+                                _AC(0x0000000070000000,UL) : \
+                                VA_EXCLUDE_END)
 
 #include <asm-generic/memory_model.h>
 
 
        return PAGE_SIZE;
 }
 
-#define VA_EXCLUDE_START (0x0000080000000000UL - (1UL << 32UL))
-#define VA_EXCLUDE_END   (0xfffff80000000000UL + (1UL << 32UL))
-
 /* Does addr --> addr+len fall within 4GB of the VA-space hole or
  * overflow past the end of the 64-bit address space?
  */
 
 /* Slightly simplified from the non-hugepage variant because by
  * definition we don't have to worry about any page coloring stuff
  */
-#define VA_EXCLUDE_START (0x0000080000000000UL - (1UL << 32UL))
-#define VA_EXCLUDE_END   (0xfffff80000000000UL + (1UL << 32UL))
 
 static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp,
                                                        unsigned long addr,