linux/arch/sparc/include/asm/pgalloc_64.h
<<
>>
Prefs
   1#ifndef _SPARC64_PGALLOC_H
   2#define _SPARC64_PGALLOC_H
   3
   4#include <linux/kernel.h>
   5#include <linux/sched.h>
   6#include <linux/mm.h>
   7#include <linux/slab.h>
   8#include <linux/quicklist.h>
   9
  10#include <asm/spitfire.h>
  11#include <asm/cpudata.h>
  12#include <asm/cacheflush.h>
  13#include <asm/page.h>
  14
  15/* Page table allocation/freeing. */
  16
  17static inline pgd_t *pgd_alloc(struct mm_struct *mm)
  18{
  19        return quicklist_alloc(0, GFP_KERNEL, NULL);
  20}
  21
  22static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
  23{
  24        quicklist_free(0, NULL, pgd);
  25}
  26
  27#define pud_populate(MM, PUD, PMD)      pud_set(PUD, PMD)
  28
  29static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
  30{
  31        return quicklist_alloc(0, GFP_KERNEL, NULL);
  32}
  33
  34static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
  35{
  36        quicklist_free(0, NULL, pmd);
  37}
  38
  39static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
  40                                          unsigned long address)
  41{
  42        return quicklist_alloc(0, GFP_KERNEL, NULL);
  43}
  44
  45static inline pgtable_t pte_alloc_one(struct mm_struct *mm,
  46                                        unsigned long address)
  47{
  48        struct page *page;
  49        void *pg;
  50
  51        pg = quicklist_alloc(0, GFP_KERNEL, NULL);
  52        if (!pg)
  53                return NULL;
  54        page = virt_to_page(pg);
  55        pgtable_page_ctor(page);
  56        return page;
  57}
  58
  59static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
  60{
  61        quicklist_free(0, NULL, pte);
  62}
  63
  64static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage)
  65{
  66        pgtable_page_dtor(ptepage);
  67        quicklist_free_page(0, NULL, ptepage);
  68}
  69
  70
  71#define pmd_populate_kernel(MM, PMD, PTE)       pmd_set(PMD, PTE)
  72#define pmd_populate(MM,PMD,PTE_PAGE)           \
  73        pmd_populate_kernel(MM,PMD,page_address(PTE_PAGE))
  74#define pmd_pgtable(pmd) pmd_page(pmd)
  75
  76static inline void check_pgt_cache(void)
  77{
  78        quicklist_trim(0, NULL, 25, 16);
  79}
  80
  81#endif /* _SPARC64_PGALLOC_H */
  82