home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sparc64 / pgalloc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.6 KB  |  72 lines

  1. /* $Id: pgalloc.h,v 1.30 2001/12/21 04:56:17 davem Exp $ */
  2. #ifndef _SPARC64_PGALLOC_H
  3. #define _SPARC64_PGALLOC_H
  4.  
  5. #include <linux/kernel.h>
  6. #include <linux/sched.h>
  7. #include <linux/mm.h>
  8. #include <linux/slab.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. extern kmem_cache_t *pgtable_cache;
  17.  
  18. static inline pgd_t *pgd_alloc(struct mm_struct *mm)
  19. {
  20.     return kmem_cache_alloc(pgtable_cache, GFP_KERNEL);
  21. }
  22.  
  23. static inline void pgd_free(pgd_t *pgd)
  24. {
  25.     kmem_cache_free(pgtable_cache, pgd);
  26. }
  27.  
  28. #define pud_populate(MM, PUD, PMD)    pud_set(PUD, PMD)
  29.  
  30. static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
  31. {
  32.     return kmem_cache_alloc(pgtable_cache,
  33.                 GFP_KERNEL|__GFP_REPEAT);
  34. }
  35.  
  36. static inline void pmd_free(pmd_t *pmd)
  37. {
  38.     kmem_cache_free(pgtable_cache, pmd);
  39. }
  40.  
  41. static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
  42.                       unsigned long address)
  43. {
  44.     return kmem_cache_alloc(pgtable_cache,
  45.                 GFP_KERNEL|__GFP_REPEAT);
  46. }
  47.  
  48. static inline struct page *pte_alloc_one(struct mm_struct *mm,
  49.                      unsigned long address)
  50. {
  51.     return virt_to_page(pte_alloc_one_kernel(mm, address));
  52. }
  53.         
  54. static inline void pte_free_kernel(pte_t *pte)
  55. {
  56.     kmem_cache_free(pgtable_cache, pte);
  57. }
  58.  
  59. static inline void pte_free(struct page *ptepage)
  60. {
  61.     pte_free_kernel(page_address(ptepage));
  62. }
  63.  
  64.  
  65. #define pmd_populate_kernel(MM, PMD, PTE)    pmd_set(PMD, PTE)
  66. #define pmd_populate(MM,PMD,PTE_PAGE)        \
  67.     pmd_populate_kernel(MM,PMD,page_address(PTE_PAGE))
  68.  
  69. #define check_pgt_cache()    do { } while (0)
  70.  
  71. #endif /* _SPARC64_PGALLOC_H */
  72.