diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2012-05-13 02:40:27 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-13 15:51:52 -0400 |
commit | 642ea3ed9c652bb9e105e55afcb9ad15b040f71f (patch) | |
tree | f4cf27f0f16277a03f997be6dc2b61e7e8980f82 /arch/sparc/include/asm/pgalloc_32.h | |
parent | 5471fa6265a1facadcd593d995a76804fc641106 (diff) |
sparc32: drop btfixup in pgalloc_32.h
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include/asm/pgalloc_32.h')
-rw-r--r-- | arch/sparc/include/asm/pgalloc_32.h | 73 |
1 files changed, 49 insertions, 24 deletions
diff --git a/arch/sparc/include/asm/pgalloc_32.h b/arch/sparc/include/asm/pgalloc_32.h index d7ec897eae5b..47bf660ca2e3 100644 --- a/arch/sparc/include/asm/pgalloc_32.h +++ b/arch/sparc/include/asm/pgalloc_32.h | |||
@@ -4,8 +4,11 @@ | |||
4 | #include <linux/kernel.h> | 4 | #include <linux/kernel.h> |
5 | #include <linux/sched.h> | 5 | #include <linux/sched.h> |
6 | 6 | ||
7 | #include <asm/page.h> | 7 | #include <asm/pgtsrmmu.h> |
8 | #include <asm/btfixup.h> | 8 | #include <asm/btfixup.h> |
9 | #include <asm/pgtable.h> | ||
10 | #include <asm/vaddrs.h> | ||
11 | #include <asm/page.h> | ||
9 | 12 | ||
10 | struct page; | 13 | struct page; |
11 | 14 | ||
@@ -15,6 +18,10 @@ extern struct pgtable_cache_struct { | |||
15 | unsigned long pgtable_cache_sz; | 18 | unsigned long pgtable_cache_sz; |
16 | unsigned long pgd_cache_sz; | 19 | unsigned long pgd_cache_sz; |
17 | } pgt_quicklists; | 20 | } pgt_quicklists; |
21 | |||
22 | unsigned long srmmu_get_nocache(int size, int align); | ||
23 | void srmmu_free_nocache(unsigned long vaddr, int size); | ||
24 | |||
18 | #define pgd_quicklist (pgt_quicklists.pgd_cache) | 25 | #define pgd_quicklist (pgt_quicklists.pgd_cache) |
19 | #define pmd_quicklist ((unsigned long *)0) | 26 | #define pmd_quicklist ((unsigned long *)0) |
20 | #define pte_quicklist (pgt_quicklists.pte_cache) | 27 | #define pte_quicklist (pgt_quicklists.pte_cache) |
@@ -23,44 +30,62 @@ extern struct pgtable_cache_struct { | |||
23 | 30 | ||
24 | #define check_pgt_cache() do { } while (0) | 31 | #define check_pgt_cache() do { } while (0) |
25 | 32 | ||
26 | BTFIXUPDEF_CALL(pgd_t *, get_pgd_fast, void) | 33 | pgd_t *get_pgd_fast(void); |
27 | #define get_pgd_fast() BTFIXUP_CALL(get_pgd_fast)() | 34 | static inline void free_pgd_fast(pgd_t *pgd) |
28 | 35 | { | |
29 | BTFIXUPDEF_CALL(void, free_pgd_fast, pgd_t *) | 36 | srmmu_free_nocache((unsigned long)pgd, SRMMU_PGD_TABLE_SIZE); |
30 | #define free_pgd_fast(pgd) BTFIXUP_CALL(free_pgd_fast)(pgd) | 37 | } |
31 | 38 | ||
32 | #define pgd_free(mm, pgd) free_pgd_fast(pgd) | 39 | #define pgd_free(mm, pgd) free_pgd_fast(pgd) |
33 | #define pgd_alloc(mm) get_pgd_fast() | 40 | #define pgd_alloc(mm) get_pgd_fast() |
34 | 41 | ||
35 | BTFIXUPDEF_CALL(void, pgd_set, pgd_t *, pmd_t *) | 42 | static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp) |
36 | #define pgd_set(pgdp,pmdp) BTFIXUP_CALL(pgd_set)(pgdp,pmdp) | 43 | { |
44 | unsigned long pa = __nocache_pa((unsigned long)pmdp); | ||
45 | |||
46 | set_pte((pte_t *)pgdp, (SRMMU_ET_PTD | (pa >> 4))); | ||
47 | } | ||
48 | |||
37 | #define pgd_populate(MM, PGD, PMD) pgd_set(PGD, PMD) | 49 | #define pgd_populate(MM, PGD, PMD) pgd_set(PGD, PMD) |
38 | 50 | ||
39 | BTFIXUPDEF_CALL(pmd_t *, pmd_alloc_one, struct mm_struct *, unsigned long) | 51 | static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, |
40 | #define pmd_alloc_one(mm, address) BTFIXUP_CALL(pmd_alloc_one)(mm, address) | 52 | unsigned long address) |
53 | { | ||
54 | return (pmd_t *)srmmu_get_nocache(SRMMU_PMD_TABLE_SIZE, | ||
55 | SRMMU_PMD_TABLE_SIZE); | ||
56 | } | ||
41 | 57 | ||
42 | BTFIXUPDEF_CALL(void, free_pmd_fast, pmd_t *) | 58 | static inline void free_pmd_fast(pmd_t * pmd) |
43 | #define free_pmd_fast(pmd) BTFIXUP_CALL(free_pmd_fast)(pmd) | 59 | { |
60 | srmmu_free_nocache((unsigned long)pmd, SRMMU_PMD_TABLE_SIZE); | ||
61 | } | ||
44 | 62 | ||
45 | #define pmd_free(mm, pmd) free_pmd_fast(pmd) | 63 | #define pmd_free(mm, pmd) free_pmd_fast(pmd) |
46 | #define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd) | 64 | #define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd) |
47 | 65 | ||
48 | BTFIXUPDEF_CALL(void, pmd_populate, pmd_t *, struct page *) | 66 | void pmd_populate(struct mm_struct *mm, pmd_t *pmdp, struct page *ptep); |
49 | #define pmd_populate(MM, PMD, PTE) BTFIXUP_CALL(pmd_populate)(PMD, PTE) | ||
50 | #define pmd_pgtable(pmd) pmd_page(pmd) | 67 | #define pmd_pgtable(pmd) pmd_page(pmd) |
51 | BTFIXUPDEF_CALL(void, pmd_set, pmd_t *, pte_t *) | ||
52 | #define pmd_populate_kernel(MM, PMD, PTE) BTFIXUP_CALL(pmd_set)(PMD, PTE) | ||
53 | 68 | ||
54 | BTFIXUPDEF_CALL(pgtable_t , pte_alloc_one, struct mm_struct *, unsigned long) | 69 | void pmd_set(pmd_t *pmdp, pte_t *ptep); |
55 | #define pte_alloc_one(mm, address) BTFIXUP_CALL(pte_alloc_one)(mm, address) | 70 | #define pmd_populate_kernel(MM, PMD, PTE) pmd_set(PMD, PTE) |
56 | BTFIXUPDEF_CALL(pte_t *, pte_alloc_one_kernel, struct mm_struct *, unsigned long) | 71 | |
57 | #define pte_alloc_one_kernel(mm, addr) BTFIXUP_CALL(pte_alloc_one_kernel)(mm, addr) | 72 | pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address); |
73 | |||
74 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | ||
75 | unsigned long address) | ||
76 | { | ||
77 | return (pte_t *)srmmu_get_nocache(PTE_SIZE, PTE_SIZE); | ||
78 | } | ||
79 | |||
80 | |||
81 | static inline void free_pte_fast(pte_t *pte) | ||
82 | { | ||
83 | srmmu_free_nocache((unsigned long)pte, PTE_SIZE); | ||
84 | } | ||
58 | 85 | ||
59 | BTFIXUPDEF_CALL(void, free_pte_fast, pte_t *) | 86 | #define pte_free_kernel(mm, pte) free_pte_fast(pte) |
60 | #define pte_free_kernel(mm, pte) BTFIXUP_CALL(free_pte_fast)(pte) | ||
61 | 87 | ||
62 | BTFIXUPDEF_CALL(void, pte_free, pgtable_t ) | 88 | void pte_free(struct mm_struct * mm, pgtable_t pte); |
63 | #define pte_free(mm, pte) BTFIXUP_CALL(pte_free)(pte) | ||
64 | #define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte) | 89 | #define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte) |
65 | 90 | ||
66 | #endif /* _SPARC_PGALLOC_H */ | 91 | #endif /* _SPARC_PGALLOC_H */ |