diff options
Diffstat (limited to 'arch/sh/include/asm')
-rw-r--r-- | arch/sh/include/asm/pgalloc.h | 10 | ||||
-rw-r--r-- | arch/sh/include/asm/pgalloc_nopmd.h | 30 | ||||
-rw-r--r-- | arch/sh/include/asm/pgalloc_pmd.h | 41 | ||||
-rw-r--r-- | arch/sh/include/asm/pgtable.h | 4 |
4 files changed, 8 insertions, 77 deletions
diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h index 4ea27855c3b5..e106474996b2 100644 --- a/arch/sh/include/asm/pgalloc.h +++ b/arch/sh/include/asm/pgalloc.h | |||
@@ -6,10 +6,13 @@ | |||
6 | 6 | ||
7 | #define QUICK_PT 1 /* Other page table pages that are zero on free */ | 7 | #define QUICK_PT 1 /* Other page table pages that are zero on free */ |
8 | 8 | ||
9 | extern pgd_t *pgd_alloc(struct mm_struct *); | ||
10 | extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); | ||
11 | |||
9 | #ifdef CONFIG_PGTABLE_LEVELS_3 | 12 | #ifdef CONFIG_PGTABLE_LEVELS_3 |
10 | #include <asm/pgalloc_pmd.h> | 13 | extern void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd); |
11 | #else | 14 | extern pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address); |
12 | #include <asm/pgalloc_nopmd.h> | 15 | extern void pmd_free(struct mm_struct *mm, pmd_t *pmd); |
13 | #endif | 16 | #endif |
14 | 17 | ||
15 | static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, | 18 | static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, |
@@ -67,7 +70,6 @@ do { \ | |||
67 | 70 | ||
68 | static inline void check_pgt_cache(void) | 71 | static inline void check_pgt_cache(void) |
69 | { | 72 | { |
70 | __check_pgt_cache(); | ||
71 | quicklist_trim(QUICK_PT, NULL, 25, 16); | 73 | quicklist_trim(QUICK_PT, NULL, 25, 16); |
72 | } | 74 | } |
73 | 75 | ||
diff --git a/arch/sh/include/asm/pgalloc_nopmd.h b/arch/sh/include/asm/pgalloc_nopmd.h deleted file mode 100644 index e4b344c37e74..000000000000 --- a/arch/sh/include/asm/pgalloc_nopmd.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | #ifndef __ASM_SH_PGALLOC_NOPMD_H | ||
2 | #define __ASM_SH_PGALLOC_NOPMD_H | ||
3 | |||
4 | #define QUICK_PGD 0 /* We preserve special mappings over free */ | ||
5 | |||
6 | static inline void pgd_ctor(void *x) | ||
7 | { | ||
8 | pgd_t *pgd = x; | ||
9 | |||
10 | memcpy(pgd + USER_PTRS_PER_PGD, | ||
11 | swapper_pg_dir + USER_PTRS_PER_PGD, | ||
12 | (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); | ||
13 | } | ||
14 | |||
15 | static inline pgd_t *pgd_alloc(struct mm_struct *mm) | ||
16 | { | ||
17 | return quicklist_alloc(QUICK_PGD, GFP_KERNEL | __GFP_REPEAT, pgd_ctor); | ||
18 | } | ||
19 | |||
20 | static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) | ||
21 | { | ||
22 | quicklist_free(QUICK_PGD, NULL, pgd); | ||
23 | } | ||
24 | |||
25 | static inline void __check_pgt_cache(void) | ||
26 | { | ||
27 | quicklist_trim(QUICK_PGD, NULL, 25, 16); | ||
28 | } | ||
29 | |||
30 | #endif /* __ASM_SH_PGALLOC_NOPMD_H */ | ||
diff --git a/arch/sh/include/asm/pgalloc_pmd.h b/arch/sh/include/asm/pgalloc_pmd.h deleted file mode 100644 index 20f75cc4eb09..000000000000 --- a/arch/sh/include/asm/pgalloc_pmd.h +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | #ifndef __ASM_SH_PGALLOC_PMD_H | ||
2 | #define __ASM_SH_PGALLOC_PMD_H | ||
3 | |||
4 | static inline pgd_t *pgd_alloc(struct mm_struct *mm) | ||
5 | { | ||
6 | pgd_t *pgd; | ||
7 | int i; | ||
8 | |||
9 | pgd = kzalloc(sizeof(*pgd) * PTRS_PER_PGD, GFP_KERNEL | __GFP_REPEAT); | ||
10 | |||
11 | for (i = USER_PTRS_PER_PGD; i < PTRS_PER_PGD; i++) | ||
12 | pgd[i] = swapper_pg_dir[i]; | ||
13 | |||
14 | return pgd; | ||
15 | } | ||
16 | |||
17 | static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) | ||
18 | { | ||
19 | kfree(pgd); | ||
20 | } | ||
21 | |||
22 | static inline void __check_pgt_cache(void) | ||
23 | { | ||
24 | } | ||
25 | |||
26 | static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) | ||
27 | { | ||
28 | set_pud(pud, __pud((unsigned long)pmd)); | ||
29 | } | ||
30 | |||
31 | static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) | ||
32 | { | ||
33 | return quicklist_alloc(QUICK_PT, GFP_KERNEL | __GFP_REPEAT, NULL); | ||
34 | } | ||
35 | |||
36 | static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) | ||
37 | { | ||
38 | quicklist_free(QUICK_PT, NULL, pmd); | ||
39 | } | ||
40 | |||
41 | #endif /* __ASM_SH_PGALLOC_PMD_H */ | ||
diff --git a/arch/sh/include/asm/pgtable.h b/arch/sh/include/asm/pgtable.h index 9effcc3b0d10..78598ec33d0a 100644 --- a/arch/sh/include/asm/pgtable.h +++ b/arch/sh/include/asm/pgtable.h | |||
@@ -141,9 +141,9 @@ typedef pte_t *pte_addr_t; | |||
141 | #define pte_pfn(x) ((unsigned long)(((x).pte_low >> PAGE_SHIFT))) | 141 | #define pte_pfn(x) ((unsigned long)(((x).pte_low >> PAGE_SHIFT))) |
142 | 142 | ||
143 | /* | 143 | /* |
144 | * No page table caches to initialise | 144 | * Initialise the page table caches |
145 | */ | 145 | */ |
146 | #define pgtable_cache_init() do { } while (0) | 146 | extern void pgtable_cache_init(void); |
147 | 147 | ||
148 | struct vm_area_struct; | 148 | struct vm_area_struct; |
149 | 149 | ||