linux/arch/cris/include/asm/pgalloc.h
<<
>>
Prefs
   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#define pmd_pgtable(pmd) pmd_page(pmd)
  10
  11/*
  12 * Allocate and free page tables.
  13 */
  14
  15static inline pgd_t *pgd_alloc (struct mm_struct *mm)
  16{
  17        return (pgd_t *)get_zeroed_page(GFP_KERNEL);
  18}
  19
  20static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
  21{
  22        free_page((unsigned long)pgd);
  23}
  24
  25static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
  26{
  27        pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
  28        return pte;
  29}
  30
  31static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address)
  32{
  33        struct page *pte;
  34        pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0);
  35        pgtable_page_ctor(pte);
  36        return pte;
  37}
  38
  39static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
  40{
  41        free_page((unsigned long)pte);
  42}
  43
  44static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
  45{
  46        pgtable_page_dtor(pte);
  47        __free_page(pte);
  48}
  49
  50#define __pte_free_tlb(tlb,pte,address)                 \
  51do {                                                    \
  52        pgtable_page_dtor(pte);                         \
  53        tlb_remove_page((tlb), pte);                    \
  54} while (0)
  55
  56#define check_pgt_cache()          do { } while (0)
  57
  58#endif
  59