diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2007-04-21 05:52:32 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-04-21 15:36:02 -0400 |
commit | c172cc92c87103c98b5cd359205b684bf99b5067 (patch) | |
tree | 5d0591b701778ab21f290b5ede50615d6ca786a3 | |
parent | b29e9f5e64fb90d2e4be1c7ef8c925b56669c74a (diff) |
[ARM] mm 6: allow mem_types table to specify extended pte attributes
Add prot_pte_ext to the mem_types table to allow the extended pte
attributes to be passed to set_pte_ext(), thereby permitting us to
specify memory type information for the hardware PTE entries.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mm/ioremap.c | 3 | ||||
-rw-r--r-- | arch/arm/mm/mm.h | 1 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 3 |
3 files changed, 5 insertions, 2 deletions
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index b26b36109d54..216623eece35 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -55,7 +55,8 @@ static int remap_area_pte(pmd_t *pmd, unsigned long addr, unsigned long end, | |||
55 | if (!pte_none(*pte)) | 55 | if (!pte_none(*pte)) |
56 | goto bad; | 56 | goto bad; |
57 | 57 | ||
58 | set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot), 0); | 58 | set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot), |
59 | type->prot_pte_ext); | ||
59 | phys_addr += PAGE_SIZE; | 60 | phys_addr += PAGE_SIZE; |
60 | } while (pte++, addr += PAGE_SIZE, addr != end); | 61 | } while (pte++, addr += PAGE_SIZE, addr != end); |
61 | return 0; | 62 | return 0; |
diff --git a/arch/arm/mm/mm.h b/arch/arm/mm/mm.h index 66f8612c5e5b..7647c597fc59 100644 --- a/arch/arm/mm/mm.h +++ b/arch/arm/mm/mm.h | |||
@@ -18,6 +18,7 @@ static inline pmd_t *pmd_off_k(unsigned long virt) | |||
18 | 18 | ||
19 | struct mem_type { | 19 | struct mem_type { |
20 | unsigned int prot_pte; | 20 | unsigned int prot_pte; |
21 | unsigned int prot_pte_ext; | ||
21 | unsigned int prot_l1; | 22 | unsigned int prot_l1; |
22 | unsigned int prot_sect; | 23 | unsigned int prot_sect; |
23 | unsigned int domain; | 24 | unsigned int domain; |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 6cb80b4973d2..360405515bbd 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -391,7 +391,8 @@ static void __init alloc_init_pte(pmd_t *pmd, unsigned long addr, | |||
391 | 391 | ||
392 | pte = pte_offset_kernel(pmd, addr); | 392 | pte = pte_offset_kernel(pmd, addr); |
393 | do { | 393 | do { |
394 | set_pte_ext(pte, pfn_pte(pfn, __pgprot(type->prot_pte)), 0); | 394 | set_pte_ext(pte, pfn_pte(pfn, __pgprot(type->prot_pte)), |
395 | type->prot_pte_ext); | ||
395 | pfn++; | 396 | pfn++; |
396 | } while (pte++, addr += PAGE_SIZE, addr != end); | 397 | } while (pte++, addr += PAGE_SIZE, addr != end); |
397 | } | 398 | } |