aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-04-21 05:52:32 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-04-21 15:36:02 -0400
commitc172cc92c87103c98b5cd359205b684bf99b5067 (patch)
tree5d0591b701778ab21f290b5ede50615d6ca786a3
parentb29e9f5e64fb90d2e4be1c7ef8c925b56669c74a (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.c3
-rw-r--r--arch/arm/mm/mm.h1
-rw-r--r--arch/arm/mm/mmu.c3
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
19struct mem_type { 19struct 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}