diff options
Diffstat (limited to 'include/asm-powerpc/mman.h')
-rw-r--r-- | include/asm-powerpc/mman.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/asm-powerpc/mman.h b/include/asm-powerpc/mman.h index 24cf664a8295..9209f755763e 100644 --- a/include/asm-powerpc/mman.h +++ b/include/asm-powerpc/mman.h | |||
@@ -10,6 +10,8 @@ | |||
10 | * 2 of the License, or (at your option) any later version. | 10 | * 2 of the License, or (at your option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #define PROT_SAO 0x10 /* Strong Access Ordering */ | ||
14 | |||
13 | #define MAP_RENAME MAP_ANONYMOUS /* In SunOS terminology */ | 15 | #define MAP_RENAME MAP_ANONYMOUS /* In SunOS terminology */ |
14 | #define MAP_NORESERVE 0x40 /* don't reserve swap pages */ | 16 | #define MAP_NORESERVE 0x40 /* don't reserve swap pages */ |
15 | #define MAP_LOCKED 0x80 | 17 | #define MAP_LOCKED 0x80 |
@@ -24,4 +26,38 @@ | |||
24 | #define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */ | 26 | #define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */ |
25 | #define MAP_NONBLOCK 0x10000 /* do not block on IO */ | 27 | #define MAP_NONBLOCK 0x10000 /* do not block on IO */ |
26 | 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__ */ | ||
27 | #endif /* _ASM_POWERPC_MMAN_H */ | 63 | #endif /* _ASM_POWERPC_MMAN_H */ |