diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/pgtable.h | 4 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 14 |
2 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index ab68cf1ef80f..e90b167ea848 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -317,6 +317,10 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } | |||
317 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE | 317 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE |
318 | #define pgprot_dmacoherent(prot) \ | 318 | #define pgprot_dmacoherent(prot) \ |
319 | __pgprot_modify(prot, L_PTE_MT_MASK|L_PTE_EXEC, L_PTE_MT_BUFFERABLE) | 319 | __pgprot_modify(prot, L_PTE_MT_MASK|L_PTE_EXEC, L_PTE_MT_BUFFERABLE) |
320 | #define __HAVE_PHYS_MEM_ACCESS_PROT | ||
321 | struct file; | ||
322 | extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | ||
323 | unsigned long size, pgprot_t vma_prot); | ||
320 | #else | 324 | #else |
321 | #define pgprot_dmacoherent(prot) \ | 325 | #define pgprot_dmacoherent(prot) \ |
322 | __pgprot_modify(prot, L_PTE_MT_MASK|L_PTE_EXEC, L_PTE_MT_UNCACHED) | 326 | __pgprot_modify(prot, L_PTE_MT_MASK|L_PTE_EXEC, L_PTE_MT_UNCACHED) |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 6e1c4f6a2b3f..a486bd0d97dc 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/nodemask.h> | 15 | #include <linux/nodemask.h> |
16 | #include <linux/memblock.h> | 16 | #include <linux/memblock.h> |
17 | #include <linux/sort.h> | 17 | #include <linux/sort.h> |
18 | #include <linux/fs.h> | ||
18 | 19 | ||
19 | #include <asm/cputype.h> | 20 | #include <asm/cputype.h> |
20 | #include <asm/sections.h> | 21 | #include <asm/sections.h> |
@@ -498,6 +499,19 @@ static void __init build_mem_type_table(void) | |||
498 | } | 499 | } |
499 | } | 500 | } |
500 | 501 | ||
502 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE | ||
503 | pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | ||
504 | unsigned long size, pgprot_t vma_prot) | ||
505 | { | ||
506 | if (!pfn_valid(pfn)) | ||
507 | return pgprot_noncached(vma_prot); | ||
508 | else if (file->f_flags & O_SYNC) | ||
509 | return pgprot_writecombine(vma_prot); | ||
510 | return vma_prot; | ||
511 | } | ||
512 | EXPORT_SYMBOL(phys_mem_access_prot); | ||
513 | #endif | ||
514 | |||
501 | #define vectors_base() (vectors_high() ? 0xffff0000 : 0) | 515 | #define vectors_base() (vectors_high() ? 0xffff0000 : 0) |
502 | 516 | ||
503 | static void __init *early_alloc(unsigned long sz) | 517 | static void __init *early_alloc(unsigned long sz) |