~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/xtensa/include/asm/pgalloc.h

Version: ~ [ linux-5.6-rc3 ] ~ [ linux-5.5.6 ] ~ [ linux-5.4.22 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.106 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.171 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.214 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.214 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.82 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * include/asm-xtensa/pgalloc.h
  3  *
  4  * This program is free software; you can redistribute it and/or modify
  5  * it under the terms of the GNU General Public License version 2 as
  6  * published by the Free Software Foundation.
  7  *
  8  * Copyright (C) 2001-2007 Tensilica Inc.
  9  */
 10 
 11 #ifndef _XTENSA_PGALLOC_H
 12 #define _XTENSA_PGALLOC_H
 13 
 14 #ifdef __KERNEL__
 15 
 16 #include <linux/highmem.h>
 17 #include <linux/slab.h>
 18 
 19 /*
 20  * Allocating and freeing a pmd is trivial: the 1-entry pmd is
 21  * inside the pgd, so has no extra memory associated with it.
 22  */
 23 
 24 #define pmd_populate_kernel(mm, pmdp, ptep)                                  \
 25         (pmd_val(*(pmdp)) = ((unsigned long)ptep))
 26 #define pmd_populate(mm, pmdp, page)                                         \
 27         (pmd_val(*(pmdp)) = ((unsigned long)page_to_virt(page)))
 28 #define pmd_pgtable(pmd) pmd_page(pmd)
 29 
 30 static inline pgd_t*
 31 pgd_alloc(struct mm_struct *mm)
 32 {
 33         return (pgd_t*) __get_free_pages(GFP_KERNEL | __GFP_ZERO, PGD_ORDER);
 34 }
 35 
 36 static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 37 {
 38         free_page((unsigned long)pgd);
 39 }
 40 
 41 /* Use a slab cache for the pte pages (see also sparc64 implementation) */
 42 
 43 extern struct kmem_cache *pgtable_cache;
 44 
 45 static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
 46                                          unsigned long address)
 47 {
 48         return kmem_cache_alloc(pgtable_cache, GFP_KERNEL|__GFP_REPEAT);
 49 }
 50 
 51 static inline pgtable_t pte_alloc_one(struct mm_struct *mm,
 52                                         unsigned long addr)
 53 {
 54         struct page *page;
 55 
 56         page = virt_to_page(pte_alloc_one_kernel(mm, addr));
 57         pgtable_page_ctor(page);
 58         return page;
 59 }
 60 
 61 static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
 62 {
 63         kmem_cache_free(pgtable_cache, pte);
 64 }
 65 
 66 static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
 67 {
 68         pgtable_page_dtor(pte);
 69         kmem_cache_free(pgtable_cache, page_address(pte));
 70 }
 71 #define pmd_pgtable(pmd) pmd_page(pmd)
 72 
 73 #endif /* __KERNEL__ */
 74 #endif /* _XTENSA_PGALLOC_H */
 75 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp