root/arch/microblaze/include/asm/pgalloc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. get_pgd
  2. free_pgd

   1 /*
   2  * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
   3  * Copyright (C) 2008-2009 PetaLogix
   4  * Copyright (C) 2006 Atmark Techno, Inc.
   5  *
   6  * This file is subject to the terms and conditions of the GNU General Public
   7  * License. See the file "COPYING" in the main directory of this archive
   8  * for more details.
   9  */
  10 
  11 #ifndef _ASM_MICROBLAZE_PGALLOC_H
  12 #define _ASM_MICROBLAZE_PGALLOC_H
  13 
  14 #ifdef CONFIG_MMU
  15 
  16 #include <linux/kernel.h>       /* For min/max macros */
  17 #include <linux/highmem.h>
  18 #include <asm/setup.h>
  19 #include <asm/io.h>
  20 #include <asm/page.h>
  21 #include <asm/cache.h>
  22 #include <asm/pgtable.h>
  23 
  24 #define __HAVE_ARCH_PTE_ALLOC_ONE_KERNEL
  25 #include <asm-generic/pgalloc.h>
  26 
  27 extern void __bad_pte(pmd_t *pmd);
  28 
  29 static inline pgd_t *get_pgd(void)
  30 {
  31         return (pgd_t *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, 0);
  32 }
  33 
  34 static inline void free_pgd(pgd_t *pgd)
  35 {
  36         free_page((unsigned long)pgd);
  37 }
  38 
  39 #define pgd_free(mm, pgd)       free_pgd(pgd)
  40 #define pgd_alloc(mm)           get_pgd()
  41 
  42 #define pmd_pgtable(pmd)        pmd_page(pmd)
  43 
  44 /*
  45  * We don't have any real pmd's, and this code never triggers because
  46  * the pgd will always be present..
  47  */
  48 #define pmd_alloc_one_fast(mm, address) ({ BUG(); ((pmd_t *)1); })
  49 #define pmd_alloc_one(mm, address)      ({ BUG(); ((pmd_t *)2); })
  50 
  51 extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm);
  52 
  53 #define __pte_free_tlb(tlb, pte, addr)  pte_free((tlb)->mm, (pte))
  54 
  55 #define pmd_populate(mm, pmd, pte) \
  56                         (pmd_val(*(pmd)) = (unsigned long)page_address(pte))
  57 
  58 #define pmd_populate_kernel(mm, pmd, pte) \
  59                 (pmd_val(*(pmd)) = (unsigned long) (pte))
  60 
  61 /*
  62  * We don't have any real pmd's, and this code never triggers because
  63  * the pgd will always be present..
  64  */
  65 #define pmd_alloc_one(mm, address)      ({ BUG(); ((pmd_t *)2); })
  66 #define pmd_free(mm, x)                 do { } while (0)
  67 #define __pmd_free_tlb(tlb, x, addr)    pmd_free((tlb)->mm, x)
  68 #define pgd_populate(mm, pmd, pte)      BUG()
  69 
  70 #endif /* CONFIG_MMU */
  71 
  72 #endif /* _ASM_MICROBLAZE_PGALLOC_H */

/* [<][>][^][v][top][bottom][index][help] */