diff options
Diffstat (limited to 'arch/powerpc/include/asm/mman.h')
-rw-r--r-- | arch/powerpc/include/asm/mman.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/mman.h b/arch/powerpc/include/asm/mman.h new file mode 100644 index 000000000000..9209f755763e --- /dev/null +++ b/arch/powerpc/include/asm/mman.h | |||
@@ -0,0 +1,63 @@ | |||
1 | #ifndef _ASM_POWERPC_MMAN_H | ||
2 | #define _ASM_POWERPC_MMAN_H | ||
3 | |||
4 | #include <asm-generic/mman.h> | ||
5 | |||
6 | /* | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
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 | |||
26 | #define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */ | ||
27 | #define MAP_NONBLOCK 0x10000 /* do not block on IO */ | ||
28 | |||
29 | #ifdef __KERNEL__ | ||
30 | #ifdef CONFIG_PPC64 | ||
31 | |||
32 | #include <asm/cputable.h> | ||
33 | #include <linux/mm.h> | ||
34 | |||
35 | /* | ||
36 | * This file is included by linux/mman.h, so we can't use cacl_vm_prot_bits() | ||
37 | * here. How important is the optimization? | ||
38 | */ | ||
39 | static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot) | ||
40 | { | ||
41 | return (prot & PROT_SAO) ? VM_SAO : 0; | ||
42 | } | ||
43 | #define arch_calc_vm_prot_bits(prot) arch_calc_vm_prot_bits(prot) | ||
44 | |||
45 | static inline pgprot_t arch_vm_get_page_prot(unsigned long vm_flags) | ||
46 | { | ||
47 | return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : 0; | ||
48 | } | ||
49 | #define arch_vm_get_page_prot(vm_flags) arch_vm_get_page_prot(vm_flags) | ||
50 | |||
51 | static inline int arch_validate_prot(unsigned long prot) | ||
52 | { | ||
53 | if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_SEM | PROT_SAO)) | ||
54 | return 0; | ||
55 | if ((prot & PROT_SAO) && !cpu_has_feature(CPU_FTR_SAO)) | ||
56 | return 0; | ||
57 | return 1; | ||
58 | } | ||
59 | #define arch_validate_prot(prot) arch_validate_prot(prot) | ||
60 | |||
61 | #endif /* CONFIG_PPC64 */ | ||
62 | #endif /* __KERNEL__ */ | ||
63 | #endif /* _ASM_POWERPC_MMAN_H */ | ||