diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-11-22 12:30:28 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2011-12-08 05:30:36 -0500 |
commit | a32618d28dbe6e9bf8ec508ccbc3561a7d7d32f0 (patch) | |
tree | 06bc43e5db2d7c05e5745a961e9698e95aa6c05d /arch/arm | |
parent | 03a6b8274cc61fb9bb77aaa102e63840461c5f3a (diff) |
ARM: pgtable: switch to use pgtable-nopud.h
Nick Piggin noted upon introducing 4level-fixup.h:
| Add a temporary "fallback" header so architectures can run with
| the 4level pagetables patch without modification. All architectures
| should be converted to use the folding headers (include/asm-generic/
| pgtable-nop?d.h) as soon as possible, and the fallback header removed.
This makes ARM compliant with this statement.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/include/asm/pgalloc.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/pgtable.h | 23 | ||||
-rw-r--r-- | arch/arm/include/asm/tlb.h | 1 |
3 files changed, 15 insertions, 11 deletions
diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h index 3e08fd3fbb6b..7418894a737f 100644 --- a/arch/arm/include/asm/pgalloc.h +++ b/arch/arm/include/asm/pgalloc.h | |||
@@ -30,7 +30,7 @@ | |||
30 | */ | 30 | */ |
31 | #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) | 31 | #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) |
32 | #define pmd_free(mm, pmd) do { } while (0) | 32 | #define pmd_free(mm, pmd) do { } while (0) |
33 | #define pgd_populate(mm,pmd,pte) BUG() | 33 | #define pud_populate(mm,pmd,pte) BUG() |
34 | 34 | ||
35 | extern pgd_t *pgd_alloc(struct mm_struct *mm); | 35 | extern pgd_t *pgd_alloc(struct mm_struct *mm); |
36 | extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); | 36 | extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); |
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 03893a55e680..e14826e7efd9 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -11,15 +11,16 @@ | |||
11 | #define _ASMARM_PGTABLE_H | 11 | #define _ASMARM_PGTABLE_H |
12 | 12 | ||
13 | #include <linux/const.h> | 13 | #include <linux/const.h> |
14 | #include <asm-generic/4level-fixup.h> | ||
15 | #include <asm/proc-fns.h> | 14 | #include <asm/proc-fns.h> |
16 | 15 | ||
17 | #ifndef CONFIG_MMU | 16 | #ifndef CONFIG_MMU |
18 | 17 | ||
18 | #include <asm-generic/4level-fixup.h> | ||
19 | #include "pgtable-nommu.h" | 19 | #include "pgtable-nommu.h" |
20 | 20 | ||
21 | #else | 21 | #else |
22 | 22 | ||
23 | #include <asm-generic/pgtable-nopud.h> | ||
23 | #include <asm/memory.h> | 24 | #include <asm/memory.h> |
24 | #include <mach/vmalloc.h> | 25 | #include <mach/vmalloc.h> |
25 | #include <asm/pgtable-hwdef.h> | 26 | #include <asm/pgtable-hwdef.h> |
@@ -164,20 +165,22 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; | |||
164 | #define pgd_offset_k(addr) pgd_offset(&init_mm, addr) | 165 | #define pgd_offset_k(addr) pgd_offset(&init_mm, addr) |
165 | 166 | ||
166 | /* | 167 | /* |
167 | * The "pgd_xxx()" functions here are trivial for a folded two-level | 168 | * The "pud_xxx()" functions here are trivial when the pmd is folded into |
168 | * setup: the pgd is never bad, and a pmd always exists (as it's folded | 169 | * the pud: the pud entry is never bad, always exists, and can't be set or |
169 | * into the pgd entry) | 170 | * cleared. |
170 | */ | 171 | */ |
171 | #define pgd_none(pgd) (0) | 172 | #define pud_none(pud) (0) |
172 | #define pgd_bad(pgd) (0) | 173 | #define pud_bad(pud) (0) |
173 | #define pgd_present(pgd) (1) | 174 | #define pud_present(pud) (1) |
174 | #define pgd_clear(pgdp) do { } while (0) | 175 | #define pud_clear(pudp) do { } while (0) |
175 | #define set_pgd(pgd,pgdp) do { } while (0) | ||
176 | #define set_pud(pud,pudp) do { } while (0) | 176 | #define set_pud(pud,pudp) do { } while (0) |
177 | 177 | ||
178 | 178 | ||
179 | /* Find an entry in the second-level page table.. */ | 179 | /* Find an entry in the second-level page table.. */ |
180 | #define pmd_offset(dir, addr) ((pmd_t *)(dir)) | 180 | static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr) |
181 | { | ||
182 | return (pmd_t *)pud; | ||
183 | } | ||
181 | 184 | ||
182 | #define pmd_none(pmd) (!pmd_val(pmd)) | 185 | #define pmd_none(pmd) (!pmd_val(pmd)) |
183 | #define pmd_present(pmd) (pmd_val(pmd)) | 186 | #define pmd_present(pmd) (pmd_val(pmd)) |
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h index 265f908c4a6e..b509e441e0ad 100644 --- a/arch/arm/include/asm/tlb.h +++ b/arch/arm/include/asm/tlb.h | |||
@@ -204,6 +204,7 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, | |||
204 | 204 | ||
205 | #define pte_free_tlb(tlb, ptep, addr) __pte_free_tlb(tlb, ptep, addr) | 205 | #define pte_free_tlb(tlb, ptep, addr) __pte_free_tlb(tlb, ptep, addr) |
206 | #define pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, pmdp) | 206 | #define pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, pmdp) |
207 | #define pud_free_tlb(tlb, pudp, addr) pud_free((tlb)->mm, pudp) | ||
207 | 208 | ||
208 | #define tlb_migrate_finish(mm) do { } while (0) | 209 | #define tlb_migrate_finish(mm) do { } while (0) |
209 | 210 | ||