diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/mach/map.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/pgtable.h | 3 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 8 |
3 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h index d2fedb5aeb1..b36f3654bf5 100644 --- a/arch/arm/include/asm/mach/map.h +++ b/arch/arm/include/asm/mach/map.h | |||
@@ -29,6 +29,7 @@ struct map_desc { | |||
29 | #define MT_MEMORY_NONCACHED 11 | 29 | #define MT_MEMORY_NONCACHED 11 |
30 | #define MT_MEMORY_DTCM 12 | 30 | #define MT_MEMORY_DTCM 12 |
31 | #define MT_MEMORY_ITCM 13 | 31 | #define MT_MEMORY_ITCM 13 |
32 | #define MT_MEMORY_SO 14 | ||
32 | 33 | ||
33 | #ifdef CONFIG_MMU | 34 | #ifdef CONFIG_MMU |
34 | extern void iotable_init(struct map_desc *, int); | 35 | extern void iotable_init(struct map_desc *, int); |
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 5750704e027..f1956b27ae5 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -232,6 +232,9 @@ extern pgprot_t pgprot_kernel; | |||
232 | #define pgprot_writecombine(prot) \ | 232 | #define pgprot_writecombine(prot) \ |
233 | __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE) | 233 | __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE) |
234 | 234 | ||
235 | #define pgprot_stronglyordered(prot) \ | ||
236 | __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED) | ||
237 | |||
235 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE | 238 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE |
236 | #define pgprot_dmacoherent(prot) \ | 239 | #define pgprot_dmacoherent(prot) \ |
237 | __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE | L_PTE_XN) | 240 | __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE | L_PTE_XN) |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 594d677b92c..ea9c9f3e48b 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -273,6 +273,14 @@ static struct mem_type mem_types[] = { | |||
273 | .prot_l1 = PMD_TYPE_TABLE, | 273 | .prot_l1 = PMD_TYPE_TABLE, |
274 | .domain = DOMAIN_KERNEL, | 274 | .domain = DOMAIN_KERNEL, |
275 | }, | 275 | }, |
276 | [MT_MEMORY_SO] = { | ||
277 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | ||
278 | L_PTE_MT_UNCACHED, | ||
279 | .prot_l1 = PMD_TYPE_TABLE, | ||
280 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_S | | ||
281 | PMD_SECT_UNCACHED | PMD_SECT_XN, | ||
282 | .domain = DOMAIN_KERNEL, | ||
283 | }, | ||
276 | }; | 284 | }; |
277 | 285 | ||
278 | const struct mem_type *get_mem_type(unsigned int type) | 286 | const struct mem_type *get_mem_type(unsigned int type) |