Jeremy Fitzhardinge | 4f76cd3 | 2008-03-17 16:36:55 -0700 | [diff] [blame] | 1 | #ifndef _ASM_X86_PGALLOC_H |
| 2 | #define _ASM_X86_PGALLOC_H |
| 3 | |
| 4 | #include <linux/threads.h> |
| 5 | #include <linux/mm.h> /* for struct page */ |
| 6 | #include <linux/pagemap.h> |
| 7 | |
Jeremy Fitzhardinge | 1d262d3 | 2008-03-17 16:36:56 -0700 | [diff] [blame] | 8 | #ifdef CONFIG_PARAVIRT |
| 9 | #include <asm/paravirt.h> |
| 10 | #else |
| 11 | #define paravirt_alloc_pt(mm, pfn) do { } while (0) |
| 12 | #define paravirt_alloc_pd(mm, pfn) do { } while (0) |
| 13 | #define paravirt_alloc_pd_clone(pfn, clonepfn, start, count) do { } while (0) |
| 14 | #define paravirt_release_pt(pfn) do { } while (0) |
| 15 | #define paravirt_release_pd(pfn) do { } while (0) |
| 16 | #endif |
| 17 | |
Jeremy Fitzhardinge | 4f76cd3 | 2008-03-17 16:36:55 -0700 | [diff] [blame] | 18 | /* |
| 19 | * Allocate and free page tables. |
| 20 | */ |
| 21 | extern pgd_t *pgd_alloc(struct mm_struct *); |
| 22 | extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); |
| 23 | |
| 24 | extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); |
| 25 | extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long); |
| 26 | |
Jeremy Fitzhardinge | 397f687 | 2008-03-17 16:36:57 -0700 | [diff] [blame^] | 27 | /* Should really implement gc for free page table pages. This could be |
| 28 | done with a reference count in struct page. */ |
| 29 | |
| 30 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) |
| 31 | { |
| 32 | BUG_ON((unsigned long)pte & (PAGE_SIZE-1)); |
| 33 | free_page((unsigned long)pte); |
| 34 | } |
| 35 | |
| 36 | static inline void pte_free(struct mm_struct *mm, struct page *pte) |
| 37 | { |
| 38 | __free_page(pte); |
| 39 | } |
| 40 | |
| 41 | extern void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte); |
| 42 | |
Thomas Gleixner | 96a388d | 2007-10-11 11:20:03 +0200 | [diff] [blame] | 43 | #ifdef CONFIG_X86_32 |
| 44 | # include "pgalloc_32.h" |
| 45 | #else |
| 46 | # include "pgalloc_64.h" |
| 47 | #endif |
Jeremy Fitzhardinge | 4f76cd3 | 2008-03-17 16:36:55 -0700 | [diff] [blame] | 48 | |
| 49 | #endif /* _ASM_X86_PGALLOC_H */ |