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-i386 / pgalloc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.2 KB  |  50 lines

  1. #ifndef _I386_PGALLOC_H
  2. #define _I386_PGALLOC_H
  3.  
  4. #include <asm/fixmap.h>
  5. #include <linux/threads.h>
  6. #include <linux/mm.h>        /* for struct page */
  7.  
  8. #define pmd_populate_kernel(mm, pmd, pte) \
  9.         set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte)))
  10.  
  11. #define pmd_populate(mm, pmd, pte)                 \
  12.     set_pmd(pmd, __pmd(_PAGE_TABLE +            \
  13.         ((unsigned long long)page_to_pfn(pte) <<    \
  14.             (unsigned long long) PAGE_SHIFT)))
  15. /*
  16.  * Allocate and free page tables.
  17.  */
  18. extern pgd_t *pgd_alloc(struct mm_struct *);
  19. extern void pgd_free(pgd_t *pgd);
  20.  
  21. extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
  22. extern struct page *pte_alloc_one(struct mm_struct *, unsigned long);
  23.  
  24. static inline void pte_free_kernel(pte_t *pte)
  25. {
  26.     free_page((unsigned long)pte);
  27. }
  28.  
  29. static inline void pte_free(struct page *pte)
  30. {
  31.     __free_page(pte);
  32. }
  33.  
  34.  
  35. #define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte))
  36.  
  37. #ifdef CONFIG_X86_PAE
  38. /*
  39.  * In the PAE case we free the pmds as part of the pgd.
  40.  */
  41. #define pmd_alloc_one(mm, addr)        ({ BUG(); ((pmd_t *)2); })
  42. #define pmd_free(x)            do { } while (0)
  43. #define __pmd_free_tlb(tlb,x)        do { } while (0)
  44. #define pud_populate(mm, pmd, pte)    BUG()
  45. #endif
  46.  
  47. #define check_pgt_cache()    do { } while (0)
  48.  
  49. #endif /* _I386_PGALLOC_H */
  50.