xref: /openbmc/linux/arch/powerpc/include/uapi/asm/mman.h (revision bb0eb050)
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version
5  * 2 of the License, or (at your option) any later version.
6  */
7 #ifndef _UAPI_ASM_POWERPC_MMAN_H
8 #define _UAPI_ASM_POWERPC_MMAN_H
9 
10 #include <asm-generic/mman-common.h>
11 
12 
13 #define PROT_SAO	0x10		/* Strong Access Ordering */
14 
15 #define MAP_RENAME      MAP_ANONYMOUS   /* In SunOS terminology */
16 #define MAP_NORESERVE   0x40            /* don't reserve swap pages */
17 #define MAP_LOCKED	0x80
18 
19 #define MAP_GROWSDOWN	0x0100		/* stack-like segment */
20 #define MAP_DENYWRITE	0x0800		/* ETXTBSY */
21 #define MAP_EXECUTABLE	0x1000		/* mark it as an executable */
22 
23 #define MCL_CURRENT     0x2000          /* lock all currently mapped pages */
24 #define MCL_FUTURE      0x4000          /* lock all additions to address space */
25 #define MCL_ONFAULT	0x8000		/* lock all pages that are faulted in */
26 
27 #define MAP_POPULATE	0x8000		/* populate (prefault) pagetables */
28 #define MAP_NONBLOCK	0x10000		/* do not block on IO */
29 #define MAP_STACK	0x20000		/* give out an address that is best suited for process/thread stacks */
30 #define MAP_HUGETLB	0x40000		/* create a huge page mapping */
31 
32 /*
33  * When MAP_HUGETLB is set, bits [26:31] of the flags argument to mmap(2),
34  * encode the log2 of the huge page size. A value of zero indicates that the
35  * default huge page size should be used. To use a non-default huge page size,
36  * one of these defines can be used, or the size can be encoded by hand. Note
37  * that on most systems only a subset, or possibly none, of these sizes will be
38  * available.
39  */
40 #define MAP_HUGE_512KB	(19 << MAP_HUGE_SHIFT)	/* 512KB HugeTLB Page */
41 #define MAP_HUGE_1MB	(20 << MAP_HUGE_SHIFT)	/* 1MB   HugeTLB Page */
42 #define MAP_HUGE_2MB	(21 << MAP_HUGE_SHIFT)	/* 2MB   HugeTLB Page */
43 #define MAP_HUGE_8MB	(23 << MAP_HUGE_SHIFT)	/* 8MB   HugeTLB Page */
44 #define MAP_HUGE_16MB	(24 << MAP_HUGE_SHIFT)	/* 16MB  HugeTLB Page */
45 #define MAP_HUGE_1GB	(30 << MAP_HUGE_SHIFT)	/* 1GB   HugeTLB Page */
46 #define MAP_HUGE_16GB	(34 << MAP_HUGE_SHIFT)	/* 16GB  HugeTLB Page */
47 
48 #endif /* _UAPI_ASM_POWERPC_MMAN_H */
49