Commit | Line | Data |
---|---|---|
74945c86 RK |
1 | /* |
2 | * linux/include/asm-arm/pgtable-hwdef.h | |
3 | * | |
4 | * Copyright (C) 1995-2002 Russell King | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License version 2 as | |
8 | * published by the Free Software Foundation. | |
9 | */ | |
10 | #ifndef _ASMARM_PGTABLE_HWDEF_H | |
11 | #define _ASMARM_PGTABLE_HWDEF_H | |
12 | ||
13 | /* | |
14 | * Hardware page table definitions. | |
15 | * | |
16 | * + Level 1 descriptor (PMD) | |
17 | * - common | |
18 | */ | |
19 | #define PMD_TYPE_MASK (3 << 0) | |
20 | #define PMD_TYPE_FAULT (0 << 0) | |
21 | #define PMD_TYPE_TABLE (1 << 0) | |
22 | #define PMD_TYPE_SECT (2 << 0) | |
23 | #define PMD_BIT4 (1 << 4) | |
24 | #define PMD_DOMAIN(x) ((x) << 5) | |
25 | #define PMD_PROTECTION (1 << 9) /* v5 */ | |
26 | /* | |
27 | * - section | |
28 | */ | |
29 | #define PMD_SECT_BUFFERABLE (1 << 2) | |
30 | #define PMD_SECT_CACHEABLE (1 << 3) | |
8799ee9f | 31 | #define PMD_SECT_XN (1 << 4) /* v6 */ |
74945c86 RK |
32 | #define PMD_SECT_AP_WRITE (1 << 10) |
33 | #define PMD_SECT_AP_READ (1 << 11) | |
34 | #define PMD_SECT_TEX(x) ((x) << 12) /* v5 */ | |
35 | #define PMD_SECT_APX (1 << 15) /* v6 */ | |
36 | #define PMD_SECT_S (1 << 16) /* v6 */ | |
37 | #define PMD_SECT_nG (1 << 17) /* v6 */ | |
38 | #define PMD_SECT_SUPER (1 << 18) /* v6 */ | |
39 | ||
40 | #define PMD_SECT_UNCACHED (0) | |
41 | #define PMD_SECT_BUFFERED (PMD_SECT_BUFFERABLE) | |
42 | #define PMD_SECT_WT (PMD_SECT_CACHEABLE) | |
43 | #define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | |
44 | #define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE) | |
45 | #define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | |
46 | #define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2)) | |
47 | ||
48 | /* | |
49 | * - coarse table (not used) | |
50 | */ | |
51 | ||
52 | /* | |
53 | * + Level 2 descriptor (PTE) | |
54 | * - common | |
55 | */ | |
56 | #define PTE_TYPE_MASK (3 << 0) | |
57 | #define PTE_TYPE_FAULT (0 << 0) | |
58 | #define PTE_TYPE_LARGE (1 << 0) | |
59 | #define PTE_TYPE_SMALL (2 << 0) | |
60 | #define PTE_TYPE_EXT (3 << 0) /* v5 */ | |
61 | #define PTE_BUFFERABLE (1 << 2) | |
62 | #define PTE_CACHEABLE (1 << 3) | |
63 | ||
64 | /* | |
65 | * - extended small page/tiny page | |
66 | */ | |
67 | #define PTE_EXT_XN (1 << 0) /* v6 */ | |
68 | #define PTE_EXT_AP_MASK (3 << 4) | |
69 | #define PTE_EXT_AP0 (1 << 4) | |
70 | #define PTE_EXT_AP1 (2 << 4) | |
71 | #define PTE_EXT_AP_UNO_SRO (0 << 4) | |
72 | #define PTE_EXT_AP_UNO_SRW (PTE_EXT_AP0) | |
73 | #define PTE_EXT_AP_URO_SRW (PTE_EXT_AP1) | |
74 | #define PTE_EXT_AP_URW_SRW (PTE_EXT_AP1|PTE_EXT_AP0) | |
75 | #define PTE_EXT_TEX(x) ((x) << 6) /* v5 */ | |
76 | #define PTE_EXT_APX (1 << 9) /* v6 */ | |
23759dc6 | 77 | #define PTE_EXT_COHERENT (1 << 9) /* XScale3 */ |
74945c86 RK |
78 | #define PTE_EXT_SHARED (1 << 10) /* v6 */ |
79 | #define PTE_EXT_NG (1 << 11) /* v6 */ | |
80 | ||
81 | /* | |
82 | * - small page | |
83 | */ | |
84 | #define PTE_SMALL_AP_MASK (0xff << 4) | |
85 | #define PTE_SMALL_AP_UNO_SRO (0x00 << 4) | |
86 | #define PTE_SMALL_AP_UNO_SRW (0x55 << 4) | |
87 | #define PTE_SMALL_AP_URO_SRW (0xaa << 4) | |
88 | #define PTE_SMALL_AP_URW_SRW (0xff << 4) | |
89 | ||
90 | #endif |