Blame view
arch/m68k/include/asm/motorola_pgalloc.h
2.19 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 |
#ifndef _MOTOROLA_PGALLOC_H #define _MOTOROLA_PGALLOC_H #include <asm/tlb.h> #include <asm/tlbflush.h> extern pmd_t *get_pointer_table(void); extern int free_pointer_table(pmd_t *); |
1da177e4c Linux-2.6.12-rc2 |
9 10 11 12 13 14 15 16 17 18 19 20 21 |
static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { pte_t *pte; pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); if (pte) { __flush_page_to_ram(pte); flush_tlb_kernel_page(pte); nocache_page(pte); } return pte; } |
5e5419734 add mm argument t... |
22 |
static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) |
1da177e4c Linux-2.6.12-rc2 |
23 24 25 26 |
{ cache_page(pte); free_page((unsigned long) pte); } |
2f569afd9 CONFIG_HIGHPTE vs... |
27 |
static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) |
1da177e4c Linux-2.6.12-rc2 |
28 29 30 31 32 33 34 35 |
{ struct page *page = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0); pte_t *pte; if(!page) return NULL; pte = kmap(page); |
dc71c7d5d arch/m68k/include... |
36 37 38 39 |
__flush_page_to_ram(pte); flush_tlb_kernel_page(pte); nocache_page(pte); kunmap(page); |
2f569afd9 CONFIG_HIGHPTE vs... |
40 |
pgtable_page_ctor(page); |
1da177e4c Linux-2.6.12-rc2 |
41 42 |
return page; } |
2f569afd9 CONFIG_HIGHPTE vs... |
43 |
static inline void pte_free(struct mm_struct *mm, pgtable_t page) |
1da177e4c Linux-2.6.12-rc2 |
44 |
{ |
2f569afd9 CONFIG_HIGHPTE vs... |
45 |
pgtable_page_dtor(page); |
1da177e4c Linux-2.6.12-rc2 |
46 47 48 49 |
cache_page(kmap(page)); kunmap(page); __free_page(page); } |
9e1b32caa mm: Pass virtual ... |
50 51 |
static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t page, unsigned long address) |
1da177e4c Linux-2.6.12-rc2 |
52 |
{ |
2f569afd9 CONFIG_HIGHPTE vs... |
53 |
pgtable_page_dtor(page); |
1da177e4c Linux-2.6.12-rc2 |
54 55 56 57 58 59 60 61 62 63 |
cache_page(kmap(page)); kunmap(page); __free_page(page); } static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) { return get_pointer_table(); } |
5e5419734 add mm argument t... |
64 |
static inline int pmd_free(struct mm_struct *mm, pmd_t *pmd) |
1da177e4c Linux-2.6.12-rc2 |
65 66 67 |
{ return free_pointer_table(pmd); } |
9e1b32caa mm: Pass virtual ... |
68 69 |
static inline int __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, unsigned long address) |
1da177e4c Linux-2.6.12-rc2 |
70 71 72 |
{ return free_pointer_table(pmd); } |
5e5419734 add mm argument t... |
73 |
static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) |
1da177e4c Linux-2.6.12-rc2 |
74 |
{ |
5e5419734 add mm argument t... |
75 |
pmd_free(mm, (pmd_t *)pgd); |
1da177e4c Linux-2.6.12-rc2 |
76 77 78 79 80 81 82 83 84 85 86 87 |
} static inline pgd_t *pgd_alloc(struct mm_struct *mm) { return (pgd_t *)get_pointer_table(); } static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) { pmd_set(pmd, pte); } |
2f569afd9 CONFIG_HIGHPTE vs... |
88 |
static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t page) |
1da177e4c Linux-2.6.12-rc2 |
89 90 91 |
{ pmd_set(pmd, page_address(page)); } |
2f569afd9 CONFIG_HIGHPTE vs... |
92 |
#define pmd_pgtable(pmd) pmd_page(pmd) |
1da177e4c Linux-2.6.12-rc2 |
93 94 95 96 97 98 99 |
static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd) { pgd_set(pgd, pmd); } #endif /* _MOTOROLA_PGALLOC_H */ |