Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c920745e authored by David S. Miller's avatar David S. Miller
Browse files

sparc64: Clean up 64-bit mmap exclusion defines.



Older UltraSPARC chips had an address space hole due to the MMU only
supporting 44-bit virtual addresses.

The top end of this hole also has the same value as the current
definition of PAGE_OFFSET, so this can be confusing.

Consolidate the defines for the userspace mmap exclusion range into
page_64.h and use them in sys_sparc_64.c and hugetlbpage.c

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Acked-by: default avatarBob Picco <bob.picco@oracle.com>
parent 10d0c970
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -93,9 +93,22 @@ typedef unsigned long pgprot_t;

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>

+0 −3
Original line number Diff line number Diff line
@@ -39,9 +39,6 @@ asmlinkage unsigned long sys_getpagesize(void)
	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?
 */
+0 −2
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@
/* 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,