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-um / pgtable-2level.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.5 KB  |  57 lines

  1. /*
  2.  * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
  3.  * Copyright 2003 PathScale, Inc.
  4.  * Derived from include/asm-i386/pgtable.h
  5.  * Licensed under the GPL
  6.  */
  7.  
  8. #ifndef __UM_PGTABLE_2LEVEL_H
  9. #define __UM_PGTABLE_2LEVEL_H
  10.  
  11. #include <asm-generic/pgtable-nopmd.h>
  12.  
  13. /* PGDIR_SHIFT determines what a third-level page table entry can map */
  14.  
  15. #define PGDIR_SHIFT    22
  16. #define PGDIR_SIZE    (1UL << PGDIR_SHIFT)
  17. #define PGDIR_MASK    (~(PGDIR_SIZE-1))
  18.  
  19. /*
  20.  * entries per page directory level: the i386 is two-level, so
  21.  * we don't really have any PMD directory physically.
  22.  */
  23. #define PTRS_PER_PTE    1024
  24. #define USER_PTRS_PER_PGD ((TASK_SIZE + (PGDIR_SIZE - 1)) / PGDIR_SIZE)
  25. #define PTRS_PER_PGD    1024
  26. #define FIRST_USER_ADDRESS    0
  27.  
  28. #define pte_ERROR(e) \
  29.         printk("%s:%d: bad pte %p(%08lx).\n", __FILE__, __LINE__, &(e), \
  30.            pte_val(e))
  31. #define pgd_ERROR(e) \
  32.         printk("%s:%d: bad pgd %p(%08lx).\n", __FILE__, __LINE__, &(e), \
  33.            pgd_val(e))
  34.  
  35. static inline int pgd_newpage(pgd_t pgd)    { return 0; }
  36. static inline void pgd_mkuptodate(pgd_t pgd)    { }
  37.  
  38. #define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
  39.  
  40. #define pte_pfn(x) phys_to_pfn(pte_val(x))
  41. #define pfn_pte(pfn, prot) __pte(pfn_to_phys(pfn) | pgprot_val(prot))
  42. #define pfn_pmd(pfn, prot) __pmd(pfn_to_phys(pfn) | pgprot_val(prot))
  43.  
  44. #define pmd_page_kernel(pmd) \
  45.     ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
  46.  
  47. /*
  48.  * Bits 0 through 3 are taken
  49.  */
  50. #define PTE_FILE_MAX_BITS    28
  51.  
  52. #define pte_to_pgoff(pte) (pte_val(pte) >> 4)
  53.  
  54. #define pgoff_to_pte(off) ((pte_t) { ((off) << 4) + _PAGE_FILE })
  55.  
  56. #endif
  57.