Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _CRIS_PGALLOC_H |
2 | #define _CRIS_PGALLOC_H | |
3 | ||
4 | #include <linux/threads.h> | |
5 | #include <linux/mm.h> | |
6 | ||
7 | #define pmd_populate_kernel(mm, pmd, pte) pmd_set(pmd, pte) | |
8 | #define pmd_populate(mm, pmd, pte) pmd_set(pmd, page_address(pte)) | |
9 | ||
10 | /* | |
11 | * Allocate and free page tables. | |
12 | */ | |
13 | ||
d9b5444e | 14 | static inline pgd_t *pgd_alloc (struct mm_struct *mm) |
1da177e4 LT |
15 | { |
16 | return (pgd_t *)get_zeroed_page(GFP_KERNEL); | |
17 | } | |
18 | ||
d9b5444e | 19 | static inline void pgd_free (pgd_t *pgd) |
1da177e4 LT |
20 | { |
21 | free_page((unsigned long)pgd); | |
22 | } | |
23 | ||
d9b5444e | 24 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) |
1da177e4 LT |
25 | { |
26 | pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | |
27 | return pte; | |
28 | } | |
29 | ||
d9b5444e | 30 | static inline struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) |
1da177e4 LT |
31 | { |
32 | struct page *pte; | |
33 | pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0); | |
34 | return pte; | |
35 | } | |
36 | ||
d9b5444e | 37 | static inline void pte_free_kernel(pte_t *pte) |
1da177e4 LT |
38 | { |
39 | free_page((unsigned long)pte); | |
40 | } | |
41 | ||
d9b5444e | 42 | static inline void pte_free(struct page *pte) |
1da177e4 LT |
43 | { |
44 | __free_page(pte); | |
45 | } | |
46 | ||
47 | ||
48 | #define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte)) | |
49 | ||
1da177e4 LT |
50 | #define check_pgt_cache() do { } while (0) |
51 | ||
52 | #endif |