diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-10-09 16:31:56 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-10-09 16:31:56 -0400 |
commit | 6a4690c22f5da1eb1c898b61b6a80da52fbd976f (patch) | |
tree | a03891a32abe0da191fb765fe669a597e07423c6 /arch/arm/include | |
parent | 90bb28b0644f7324f8bd1feb27b35146e6785ba2 (diff) | |
parent | 8ec53663d2698076468b3e1edc4e1b418bd54de3 (diff) |
Merge branch 'ptebits' into devel
Conflicts:
arch/arm/Kconfig
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/byteorder.h | 25 | ||||
-rw-r--r-- | arch/arm/include/asm/elf.h | 72 | ||||
-rw-r--r-- | arch/arm/include/asm/io.h | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/mach/map.h | 3 | ||||
-rw-r--r-- | arch/arm/include/asm/page.h | 5 | ||||
-rw-r--r-- | arch/arm/include/asm/pgtable.h | 83 |
6 files changed, 105 insertions, 87 deletions
diff --git a/arch/arm/include/asm/byteorder.h b/arch/arm/include/asm/byteorder.h index 4fbfb22f65a0..d04a7a2bc2e9 100644 --- a/arch/arm/include/asm/byteorder.h +++ b/arch/arm/include/asm/byteorder.h | |||
@@ -18,7 +18,15 @@ | |||
18 | #include <linux/compiler.h> | 18 | #include <linux/compiler.h> |
19 | #include <asm/types.h> | 19 | #include <asm/types.h> |
20 | 20 | ||
21 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) | 21 | #ifdef __ARMEB__ |
22 | # define __BIG_ENDIAN | ||
23 | #else | ||
24 | # define __LITTLE_ENDIAN | ||
25 | #endif | ||
26 | |||
27 | #define __SWAB_64_THRU_32__ | ||
28 | |||
29 | static inline __attribute_const__ __u32 __arch_swab32(__u32 x) | ||
22 | { | 30 | { |
23 | __u32 t; | 31 | __u32 t; |
24 | 32 | ||
@@ -40,19 +48,8 @@ static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) | |||
40 | 48 | ||
41 | return x; | 49 | return x; |
42 | } | 50 | } |
51 | #define __arch_swab32 __arch_swab32 | ||
43 | 52 | ||
44 | #define __arch__swab32(x) ___arch__swab32(x) | 53 | #include <linux/byteorder.h> |
45 | |||
46 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) | ||
47 | # define __BYTEORDER_HAS_U64__ | ||
48 | # define __SWAB_64_THRU_32__ | ||
49 | #endif | ||
50 | |||
51 | #ifdef __ARMEB__ | ||
52 | #include <linux/byteorder/big_endian.h> | ||
53 | #else | ||
54 | #include <linux/byteorder/little_endian.h> | ||
55 | #endif | ||
56 | 54 | ||
57 | #endif | 55 | #endif |
58 | |||
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h index 4ca751627489..5be016980c19 100644 --- a/arch/arm/include/asm/elf.h +++ b/arch/arm/include/asm/elf.h | |||
@@ -3,7 +3,6 @@ | |||
3 | 3 | ||
4 | #include <asm/hwcap.h> | 4 | #include <asm/hwcap.h> |
5 | 5 | ||
6 | #ifndef __ASSEMBLY__ | ||
7 | /* | 6 | /* |
8 | * ELF register definitions.. | 7 | * ELF register definitions.. |
9 | */ | 8 | */ |
@@ -17,12 +16,34 @@ typedef unsigned long elf_freg_t[3]; | |||
17 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | 16 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; |
18 | 17 | ||
19 | typedef struct user_fp elf_fpregset_t; | 18 | typedef struct user_fp elf_fpregset_t; |
20 | #endif | ||
21 | 19 | ||
22 | #define EM_ARM 40 | 20 | #define EM_ARM 40 |
23 | #define EF_ARM_APCS26 0x08 | 21 | |
24 | #define EF_ARM_SOFT_FLOAT 0x200 | 22 | #define EF_ARM_EABI_MASK 0xff000000 |
25 | #define EF_ARM_EABI_MASK 0xFF000000 | 23 | #define EF_ARM_EABI_UNKNOWN 0x00000000 |
24 | #define EF_ARM_EABI_VER1 0x01000000 | ||
25 | #define EF_ARM_EABI_VER2 0x02000000 | ||
26 | #define EF_ARM_EABI_VER3 0x03000000 | ||
27 | #define EF_ARM_EABI_VER4 0x04000000 | ||
28 | #define EF_ARM_EABI_VER5 0x05000000 | ||
29 | |||
30 | #define EF_ARM_BE8 0x00800000 /* ABI 4,5 */ | ||
31 | #define EF_ARM_LE8 0x00400000 /* ABI 4,5 */ | ||
32 | #define EF_ARM_MAVERICK_FLOAT 0x00000800 /* ABI 0 */ | ||
33 | #define EF_ARM_VFP_FLOAT 0x00000400 /* ABI 0 */ | ||
34 | #define EF_ARM_SOFT_FLOAT 0x00000200 /* ABI 0 */ | ||
35 | #define EF_ARM_OLD_ABI 0x00000100 /* ABI 0 */ | ||
36 | #define EF_ARM_NEW_ABI 0x00000080 /* ABI 0 */ | ||
37 | #define EF_ARM_ALIGN8 0x00000040 /* ABI 0 */ | ||
38 | #define EF_ARM_PIC 0x00000020 /* ABI 0 */ | ||
39 | #define EF_ARM_MAPSYMSFIRST 0x00000010 /* ABI 2 */ | ||
40 | #define EF_ARM_APCS_FLOAT 0x00000010 /* ABI 0, floats in fp regs */ | ||
41 | #define EF_ARM_DYNSYMSUSESEGIDX 0x00000008 /* ABI 2 */ | ||
42 | #define EF_ARM_APCS_26 0x00000008 /* ABI 0 */ | ||
43 | #define EF_ARM_SYMSARESORTED 0x00000004 /* ABI 1,2 */ | ||
44 | #define EF_ARM_INTERWORK 0x00000004 /* ABI 0 */ | ||
45 | #define EF_ARM_HASENTRY 0x00000002 /* All */ | ||
46 | #define EF_ARM_RELEXEC 0x00000001 /* All */ | ||
26 | 47 | ||
27 | #define R_ARM_NONE 0 | 48 | #define R_ARM_NONE 0 |
28 | #define R_ARM_PC24 1 | 49 | #define R_ARM_PC24 1 |
@@ -41,7 +62,6 @@ typedef struct user_fp elf_fpregset_t; | |||
41 | #endif | 62 | #endif |
42 | #define ELF_ARCH EM_ARM | 63 | #define ELF_ARCH EM_ARM |
43 | 64 | ||
44 | #ifndef __ASSEMBLY__ | ||
45 | /* | 65 | /* |
46 | * This yields a string that ld.so will use to load implementation | 66 | * This yields a string that ld.so will use to load implementation |
47 | * specific libraries for optimization. This is more specific in | 67 | * specific libraries for optimization. This is more specific in |
@@ -59,25 +79,17 @@ typedef struct user_fp elf_fpregset_t; | |||
59 | #define ELF_PLATFORM (elf_platform) | 79 | #define ELF_PLATFORM (elf_platform) |
60 | 80 | ||
61 | extern char elf_platform[]; | 81 | extern char elf_platform[]; |
62 | #endif | ||
63 | 82 | ||
64 | /* | 83 | struct elf32_hdr; |
65 | * This is used to ensure we don't load something for the wrong architecture. | ||
66 | */ | ||
67 | #define elf_check_arch(x) ((x)->e_machine == EM_ARM && ELF_PROC_OK(x)) | ||
68 | 84 | ||
69 | /* | 85 | /* |
70 | * 32-bit code is always OK. Some cpus can do 26-bit, some can't. | 86 | * This is used to ensure we don't load something for the wrong architecture. |
71 | */ | 87 | */ |
72 | #define ELF_PROC_OK(x) (ELF_THUMB_OK(x) && ELF_26BIT_OK(x)) | 88 | extern int elf_check_arch(const struct elf32_hdr *); |
73 | 89 | #define elf_check_arch elf_check_arch | |
74 | #define ELF_THUMB_OK(x) \ | ||
75 | ((elf_hwcap & HWCAP_THUMB && ((x)->e_entry & 1) == 1) || \ | ||
76 | ((x)->e_entry & 3) == 0) | ||
77 | 90 | ||
78 | #define ELF_26BIT_OK(x) \ | 91 | extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); |
79 | ((elf_hwcap & HWCAP_26BIT && (x)->e_flags & EF_ARM_APCS26) || \ | 92 | #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) |
80 | ((x)->e_flags & EF_ARM_APCS26) == 0) | ||
81 | 93 | ||
82 | #define USE_ELF_CORE_DUMP | 94 | #define USE_ELF_CORE_DUMP |
83 | #define ELF_EXEC_PAGESIZE 4096 | 95 | #define ELF_EXEC_PAGESIZE 4096 |
@@ -94,23 +106,7 @@ extern char elf_platform[]; | |||
94 | have no such handler. */ | 106 | have no such handler. */ |
95 | #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 | 107 | #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 |
96 | 108 | ||
97 | /* | 109 | extern void elf_set_personality(const struct elf32_hdr *); |
98 | * Since the FPA coprocessor uses CP1 and CP2, and iWMMXt uses CP0 | 110 | #define SET_PERSONALITY(ex, ibcs2) elf_set_personality(&(ex)) |
99 | * and CP1, we only enable access to the iWMMXt coprocessor if the | ||
100 | * binary is EABI or softfloat (and thus, guaranteed not to use | ||
101 | * FPA instructions.) | ||
102 | */ | ||
103 | #define SET_PERSONALITY(ex, ibcs2) \ | ||
104 | do { \ | ||
105 | if ((ex).e_flags & EF_ARM_APCS26) { \ | ||
106 | set_personality(PER_LINUX); \ | ||
107 | } else { \ | ||
108 | set_personality(PER_LINUX_32BIT); \ | ||
109 | if (elf_hwcap & HWCAP_IWMMXT && (ex).e_flags & (EF_ARM_EABI_MASK | EF_ARM_SOFT_FLOAT)) \ | ||
110 | set_thread_flag(TIF_USING_IWMMXT); \ | ||
111 | else \ | ||
112 | clear_thread_flag(TIF_USING_IWMMXT); \ | ||
113 | } \ | ||
114 | } while (0) | ||
115 | 111 | ||
116 | #endif | 112 | #endif |
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 94a95d7fafd6..a8094451be57 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h | |||
@@ -60,7 +60,7 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen); | |||
60 | #define MT_DEVICE 0 | 60 | #define MT_DEVICE 0 |
61 | #define MT_DEVICE_NONSHARED 1 | 61 | #define MT_DEVICE_NONSHARED 1 |
62 | #define MT_DEVICE_CACHED 2 | 62 | #define MT_DEVICE_CACHED 2 |
63 | #define MT_DEVICE_IXP2000 3 | 63 | #define MT_DEVICE_WC 3 |
64 | /* | 64 | /* |
65 | * types 4 onwards can be found in asm/mach/map.h and are undefined | 65 | * types 4 onwards can be found in asm/mach/map.h and are undefined |
66 | * for ioremap | 66 | * for ioremap |
@@ -215,11 +215,13 @@ extern void _memset_io(volatile void __iomem *, int, size_t); | |||
215 | #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) | 215 | #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) |
216 | #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) | 216 | #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) |
217 | #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) | 217 | #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) |
218 | #define ioremap_wc(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_WC) | ||
218 | #define iounmap(cookie) __iounmap(cookie) | 219 | #define iounmap(cookie) __iounmap(cookie) |
219 | #else | 220 | #else |
220 | #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) | 221 | #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) |
221 | #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) | 222 | #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) |
222 | #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) | 223 | #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) |
224 | #define ioremap_wc(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_WC) | ||
223 | #define iounmap(cookie) __arch_iounmap(cookie) | 225 | #define iounmap(cookie) __arch_iounmap(cookie) |
224 | #endif | 226 | #endif |
225 | 227 | ||
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h index 06f583b13999..cb1139ac1943 100644 --- a/arch/arm/include/asm/mach/map.h +++ b/arch/arm/include/asm/mach/map.h | |||
@@ -26,9 +26,6 @@ struct map_desc { | |||
26 | #define MT_MEMORY 8 | 26 | #define MT_MEMORY 8 |
27 | #define MT_ROM 9 | 27 | #define MT_ROM 9 |
28 | 28 | ||
29 | #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED | ||
30 | #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 | ||
31 | |||
32 | #ifdef CONFIG_MMU | 29 | #ifdef CONFIG_MMU |
33 | extern void iotable_init(struct map_desc *, int); | 30 | extern void iotable_init(struct map_desc *, int); |
34 | #else | 31 | #else |
diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h index cf2e2680daaa..bed1c0a00368 100644 --- a/arch/arm/include/asm/page.h +++ b/arch/arm/include/asm/page.h | |||
@@ -184,8 +184,9 @@ typedef struct page *pgtable_t; | |||
184 | 184 | ||
185 | #endif /* !__ASSEMBLY__ */ | 185 | #endif /* !__ASSEMBLY__ */ |
186 | 186 | ||
187 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ | 187 | #define VM_DATA_DEFAULT_FLAGS \ |
188 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) | 188 | (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \ |
189 | VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) | ||
189 | 190 | ||
190 | /* | 191 | /* |
191 | * With EABI on ARMv5 and above we must have 64-bit aligned slab pointers. | 192 | * With EABI on ARMv5 and above we must have 64-bit aligned slab pointers. |
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index ec630109a8c7..110295c5461d 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -164,14 +164,30 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
164 | #define L_PTE_PRESENT (1 << 0) | 164 | #define L_PTE_PRESENT (1 << 0) |
165 | #define L_PTE_FILE (1 << 1) /* only when !PRESENT */ | 165 | #define L_PTE_FILE (1 << 1) /* only when !PRESENT */ |
166 | #define L_PTE_YOUNG (1 << 1) | 166 | #define L_PTE_YOUNG (1 << 1) |
167 | #define L_PTE_BUFFERABLE (1 << 2) /* matches PTE */ | 167 | #define L_PTE_BUFFERABLE (1 << 2) /* obsolete, matches PTE */ |
168 | #define L_PTE_CACHEABLE (1 << 3) /* matches PTE */ | 168 | #define L_PTE_CACHEABLE (1 << 3) /* obsolete, matches PTE */ |
169 | #define L_PTE_USER (1 << 4) | 169 | #define L_PTE_DIRTY (1 << 6) |
170 | #define L_PTE_WRITE (1 << 5) | 170 | #define L_PTE_WRITE (1 << 7) |
171 | #define L_PTE_EXEC (1 << 6) | 171 | #define L_PTE_USER (1 << 8) |
172 | #define L_PTE_DIRTY (1 << 7) | 172 | #define L_PTE_EXEC (1 << 9) |
173 | #define L_PTE_SHARED (1 << 10) /* shared(v6), coherent(xsc3) */ | 173 | #define L_PTE_SHARED (1 << 10) /* shared(v6), coherent(xsc3) */ |
174 | 174 | ||
175 | /* | ||
176 | * These are the memory types, defined to be compatible with | ||
177 | * pre-ARMv6 CPUs cacheable and bufferable bits: XXCB | ||
178 | */ | ||
179 | #define L_PTE_MT_UNCACHED (0x00 << 2) /* 0000 */ | ||
180 | #define L_PTE_MT_BUFFERABLE (0x01 << 2) /* 0001 */ | ||
181 | #define L_PTE_MT_WRITETHROUGH (0x02 << 2) /* 0010 */ | ||
182 | #define L_PTE_MT_WRITEBACK (0x03 << 2) /* 0011 */ | ||
183 | #define L_PTE_MT_MINICACHE (0x06 << 2) /* 0110 (sa1100, xscale) */ | ||
184 | #define L_PTE_MT_WRITEALLOC (0x07 << 2) /* 0111 */ | ||
185 | #define L_PTE_MT_DEV_SHARED (0x04 << 2) /* 0100 */ | ||
186 | #define L_PTE_MT_DEV_NONSHARED (0x0c << 2) /* 1100 */ | ||
187 | #define L_PTE_MT_DEV_WC (0x09 << 2) /* 1001 */ | ||
188 | #define L_PTE_MT_DEV_CACHED (0x0b << 2) /* 1011 */ | ||
189 | #define L_PTE_MT_MASK (0x0f << 2) | ||
190 | |||
175 | #ifndef __ASSEMBLY__ | 191 | #ifndef __ASSEMBLY__ |
176 | 192 | ||
177 | /* | 193 | /* |
@@ -180,23 +196,30 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
180 | * as well as any architecture dependent bits like global/ASID and SMP | 196 | * as well as any architecture dependent bits like global/ASID and SMP |
181 | * shared mapping bits. | 197 | * shared mapping bits. |
182 | */ | 198 | */ |
183 | #define _L_PTE_DEFAULT L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_CACHEABLE | L_PTE_BUFFERABLE | 199 | #define _L_PTE_DEFAULT L_PTE_PRESENT | L_PTE_YOUNG |
184 | #define _L_PTE_READ L_PTE_USER | L_PTE_EXEC | ||
185 | 200 | ||
186 | extern pgprot_t pgprot_user; | 201 | extern pgprot_t pgprot_user; |
187 | extern pgprot_t pgprot_kernel; | 202 | extern pgprot_t pgprot_kernel; |
188 | 203 | ||
189 | #define PAGE_NONE pgprot_user | 204 | #define _MOD_PROT(p, b) __pgprot(pgprot_val(p) | (b)) |
190 | #define PAGE_COPY __pgprot(pgprot_val(pgprot_user) | _L_PTE_READ) | 205 | |
191 | #define PAGE_SHARED __pgprot(pgprot_val(pgprot_user) | _L_PTE_READ | \ | 206 | #define PAGE_NONE pgprot_user |
192 | L_PTE_WRITE) | 207 | #define PAGE_SHARED _MOD_PROT(pgprot_user, L_PTE_USER | L_PTE_WRITE) |
193 | #define PAGE_READONLY __pgprot(pgprot_val(pgprot_user) | _L_PTE_READ) | 208 | #define PAGE_SHARED_EXEC _MOD_PROT(pgprot_user, L_PTE_USER | L_PTE_WRITE | L_PTE_EXEC) |
194 | #define PAGE_KERNEL pgprot_kernel | 209 | #define PAGE_COPY _MOD_PROT(pgprot_user, L_PTE_USER) |
195 | 210 | #define PAGE_COPY_EXEC _MOD_PROT(pgprot_user, L_PTE_USER | L_PTE_EXEC) | |
196 | #define __PAGE_NONE __pgprot(_L_PTE_DEFAULT) | 211 | #define PAGE_READONLY _MOD_PROT(pgprot_user, L_PTE_USER) |
197 | #define __PAGE_COPY __pgprot(_L_PTE_DEFAULT | _L_PTE_READ) | 212 | #define PAGE_READONLY_EXEC _MOD_PROT(pgprot_user, L_PTE_USER | L_PTE_EXEC) |
198 | #define __PAGE_SHARED __pgprot(_L_PTE_DEFAULT | _L_PTE_READ | L_PTE_WRITE) | 213 | #define PAGE_KERNEL pgprot_kernel |
199 | #define __PAGE_READONLY __pgprot(_L_PTE_DEFAULT | _L_PTE_READ) | 214 | #define PAGE_KERNEL_EXEC _MOD_PROT(pgprot_kernel, L_PTE_EXEC) |
215 | |||
216 | #define __PAGE_NONE __pgprot(_L_PTE_DEFAULT) | ||
217 | #define __PAGE_SHARED __pgprot(_L_PTE_DEFAULT | L_PTE_USER | L_PTE_WRITE) | ||
218 | #define __PAGE_SHARED_EXEC __pgprot(_L_PTE_DEFAULT | L_PTE_USER | L_PTE_WRITE | L_PTE_EXEC) | ||
219 | #define __PAGE_COPY __pgprot(_L_PTE_DEFAULT | L_PTE_USER) | ||
220 | #define __PAGE_COPY_EXEC __pgprot(_L_PTE_DEFAULT | L_PTE_USER | L_PTE_EXEC) | ||
221 | #define __PAGE_READONLY __pgprot(_L_PTE_DEFAULT | L_PTE_USER) | ||
222 | #define __PAGE_READONLY_EXEC __pgprot(_L_PTE_DEFAULT | L_PTE_USER | L_PTE_EXEC) | ||
200 | 223 | ||
201 | #endif /* __ASSEMBLY__ */ | 224 | #endif /* __ASSEMBLY__ */ |
202 | 225 | ||
@@ -212,19 +235,19 @@ extern pgprot_t pgprot_kernel; | |||
212 | #define __P001 __PAGE_READONLY | 235 | #define __P001 __PAGE_READONLY |
213 | #define __P010 __PAGE_COPY | 236 | #define __P010 __PAGE_COPY |
214 | #define __P011 __PAGE_COPY | 237 | #define __P011 __PAGE_COPY |
215 | #define __P100 __PAGE_READONLY | 238 | #define __P100 __PAGE_READONLY_EXEC |
216 | #define __P101 __PAGE_READONLY | 239 | #define __P101 __PAGE_READONLY_EXEC |
217 | #define __P110 __PAGE_COPY | 240 | #define __P110 __PAGE_COPY_EXEC |
218 | #define __P111 __PAGE_COPY | 241 | #define __P111 __PAGE_COPY_EXEC |
219 | 242 | ||
220 | #define __S000 __PAGE_NONE | 243 | #define __S000 __PAGE_NONE |
221 | #define __S001 __PAGE_READONLY | 244 | #define __S001 __PAGE_READONLY |
222 | #define __S010 __PAGE_SHARED | 245 | #define __S010 __PAGE_SHARED |
223 | #define __S011 __PAGE_SHARED | 246 | #define __S011 __PAGE_SHARED |
224 | #define __S100 __PAGE_READONLY | 247 | #define __S100 __PAGE_READONLY_EXEC |
225 | #define __S101 __PAGE_READONLY | 248 | #define __S101 __PAGE_READONLY_EXEC |
226 | #define __S110 __PAGE_SHARED | 249 | #define __S110 __PAGE_SHARED_EXEC |
227 | #define __S111 __PAGE_SHARED | 250 | #define __S111 __PAGE_SHARED_EXEC |
228 | 251 | ||
229 | #ifndef __ASSEMBLY__ | 252 | #ifndef __ASSEMBLY__ |
230 | /* | 253 | /* |
@@ -286,8 +309,10 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } | |||
286 | /* | 309 | /* |
287 | * Mark the prot value as uncacheable and unbufferable. | 310 | * Mark the prot value as uncacheable and unbufferable. |
288 | */ | 311 | */ |
289 | #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) & ~(L_PTE_CACHEABLE | L_PTE_BUFFERABLE)) | 312 | #define pgprot_noncached(prot) \ |
290 | #define pgprot_writecombine(prot) __pgprot(pgprot_val(prot) & ~L_PTE_CACHEABLE) | 313 | __pgprot((pgprot_val(prot) & ~L_PTE_MT_MASK) | L_PTE_MT_UNCACHED) |
314 | #define pgprot_writecombine(prot) \ | ||
315 | __pgprot((pgprot_val(prot) & ~L_PTE_MT_MASK) | L_PTE_MT_BUFFERABLE) | ||
291 | 316 | ||
292 | #define pmd_none(pmd) (!pmd_val(pmd)) | 317 | #define pmd_none(pmd) (!pmd_val(pmd)) |
293 | #define pmd_present(pmd) (pmd_val(pmd)) | 318 | #define pmd_present(pmd) (pmd_val(pmd)) |