diff options
Diffstat (limited to 'arch/arm/include/asm/pgtable-3level-hwdef.h')
-rw-r--r-- | arch/arm/include/asm/pgtable-3level-hwdef.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/include/asm/pgtable-3level-hwdef.h b/arch/arm/include/asm/pgtable-3level-hwdef.h index 18f5cef82ad5..626989fec4d3 100644 --- a/arch/arm/include/asm/pgtable-3level-hwdef.h +++ b/arch/arm/include/asm/pgtable-3level-hwdef.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #define PMD_TYPE_FAULT (_AT(pmdval_t, 0) << 0) | 30 | #define PMD_TYPE_FAULT (_AT(pmdval_t, 0) << 0) |
31 | #define PMD_TYPE_TABLE (_AT(pmdval_t, 3) << 0) | 31 | #define PMD_TYPE_TABLE (_AT(pmdval_t, 3) << 0) |
32 | #define PMD_TYPE_SECT (_AT(pmdval_t, 1) << 0) | 32 | #define PMD_TYPE_SECT (_AT(pmdval_t, 1) << 0) |
33 | #define PMD_TABLE_BIT (_AT(pmdval_t, 1) << 1) | ||
33 | #define PMD_BIT4 (_AT(pmdval_t, 0)) | 34 | #define PMD_BIT4 (_AT(pmdval_t, 0)) |
34 | #define PMD_DOMAIN(x) (_AT(pmdval_t, 0)) | 35 | #define PMD_DOMAIN(x) (_AT(pmdval_t, 0)) |
35 | #define PMD_APTABLE_SHIFT (61) | 36 | #define PMD_APTABLE_SHIFT (61) |
@@ -41,6 +42,8 @@ | |||
41 | */ | 42 | */ |
42 | #define PMD_SECT_BUFFERABLE (_AT(pmdval_t, 1) << 2) | 43 | #define PMD_SECT_BUFFERABLE (_AT(pmdval_t, 1) << 2) |
43 | #define PMD_SECT_CACHEABLE (_AT(pmdval_t, 1) << 3) | 44 | #define PMD_SECT_CACHEABLE (_AT(pmdval_t, 1) << 3) |
45 | #define PMD_SECT_USER (_AT(pmdval_t, 1) << 6) /* AP[1] */ | ||
46 | #define PMD_SECT_RDONLY (_AT(pmdval_t, 1) << 7) /* AP[2] */ | ||
44 | #define PMD_SECT_S (_AT(pmdval_t, 3) << 8) | 47 | #define PMD_SECT_S (_AT(pmdval_t, 3) << 8) |
45 | #define PMD_SECT_AF (_AT(pmdval_t, 1) << 10) | 48 | #define PMD_SECT_AF (_AT(pmdval_t, 1) << 10) |
46 | #define PMD_SECT_nG (_AT(pmdval_t, 1) << 11) | 49 | #define PMD_SECT_nG (_AT(pmdval_t, 1) << 11) |
@@ -66,6 +69,7 @@ | |||
66 | #define PTE_TYPE_MASK (_AT(pteval_t, 3) << 0) | 69 | #define PTE_TYPE_MASK (_AT(pteval_t, 3) << 0) |
67 | #define PTE_TYPE_FAULT (_AT(pteval_t, 0) << 0) | 70 | #define PTE_TYPE_FAULT (_AT(pteval_t, 0) << 0) |
68 | #define PTE_TYPE_PAGE (_AT(pteval_t, 3) << 0) | 71 | #define PTE_TYPE_PAGE (_AT(pteval_t, 3) << 0) |
72 | #define PTE_TABLE_BIT (_AT(pteval_t, 1) << 1) | ||
69 | #define PTE_BUFFERABLE (_AT(pteval_t, 1) << 2) /* AttrIndx[0] */ | 73 | #define PTE_BUFFERABLE (_AT(pteval_t, 1) << 2) /* AttrIndx[0] */ |
70 | #define PTE_CACHEABLE (_AT(pteval_t, 1) << 3) /* AttrIndx[1] */ | 74 | #define PTE_CACHEABLE (_AT(pteval_t, 1) << 3) /* AttrIndx[1] */ |
71 | #define PTE_EXT_SHARED (_AT(pteval_t, 3) << 8) /* SH[1:0], inner shareable */ | 75 | #define PTE_EXT_SHARED (_AT(pteval_t, 3) << 8) /* SH[1:0], inner shareable */ |
@@ -79,4 +83,24 @@ | |||
79 | #define PHYS_MASK_SHIFT (40) | 83 | #define PHYS_MASK_SHIFT (40) |
80 | #define PHYS_MASK ((1ULL << PHYS_MASK_SHIFT) - 1) | 84 | #define PHYS_MASK ((1ULL << PHYS_MASK_SHIFT) - 1) |
81 | 85 | ||
86 | /* | ||
87 | * TTBR0/TTBR1 split (PAGE_OFFSET): | ||
88 | * 0x40000000: T0SZ = 2, T1SZ = 0 (not used) | ||
89 | * 0x80000000: T0SZ = 0, T1SZ = 1 | ||
90 | * 0xc0000000: T0SZ = 0, T1SZ = 2 | ||
91 | * | ||
92 | * Only use this feature if PHYS_OFFSET <= PAGE_OFFSET, otherwise | ||
93 | * booting secondary CPUs would end up using TTBR1 for the identity | ||
94 | * mapping set up in TTBR0. | ||
95 | */ | ||
96 | #if defined CONFIG_VMSPLIT_2G | ||
97 | #define TTBR1_OFFSET 16 /* skip two L1 entries */ | ||
98 | #elif defined CONFIG_VMSPLIT_3G | ||
99 | #define TTBR1_OFFSET (4096 * (1 + 3)) /* only L2, skip pgd + 3*pmd */ | ||
100 | #else | ||
101 | #define TTBR1_OFFSET 0 | ||
102 | #endif | ||
103 | |||
104 | #define TTBR1_SIZE (((PAGE_OFFSET >> 30) - 1) << 16) | ||
105 | |||
82 | #endif | 106 | #endif |