home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.2 / LINUX-1.2 / LINUX-1 / linux / include / asm-i386 / page.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-30  |  1.6 KB  |  69 lines

  1. #ifndef _I386_PAGE_H
  2. #define _I386_PAGE_H
  3.  
  4. /* PAGE_SHIFT determines the page size */
  5. #define PAGE_SHIFT    12
  6. #define PAGE_SIZE    (1UL << PAGE_SHIFT)
  7. #define PAGE_MASK    (~(PAGE_SIZE-1))
  8.  
  9. #ifdef __KERNEL__
  10.  
  11. #define CONFIG_STRICT_MM_TYPECHECKS
  12.  
  13. #ifdef CONFIG_STRICT_MM_TYPECHECKS
  14. /*
  15.  * These are used to make use of C type-checking..
  16.  */
  17. typedef struct { unsigned long pte; } pte_t;
  18. typedef struct { unsigned long pmd; } pmd_t;
  19. typedef struct { unsigned long pgd; } pgd_t;
  20. typedef struct { unsigned long pgprot; } pgprot_t;
  21.  
  22. #define pte_val(x)    ((x).pte)
  23. #define pmd_val(x)    ((x).pmd)
  24. #define pgd_val(x)    ((x).pgd)
  25. #define pgprot_val(x)    ((x).pgprot)
  26.  
  27. #define __pte(x)    ((pte_t) { (x) } )
  28. #define __pmd(x)    ((pmd_t) { (x) } )
  29. #define __pgd(x)    ((pgd_t) { (x) } )
  30. #define __pgprot(x)    ((pgprot_t) { (x) } )
  31.  
  32. #else
  33. /*
  34.  * .. while these make it easier on the compiler
  35.  */
  36. typedef unsigned long pte_t;
  37. typedef unsigned long pmd_t;
  38. typedef unsigned long pgd_t;
  39. typedef unsigned long pgprot_t;
  40.  
  41. #define pte_val(x)    (x)
  42. #define pmd_val(x)    (x)
  43. #define pgd_val(x)    (x)
  44. #define pgprot_val(x)    (x)
  45.  
  46. #define __pte(x)    (x)
  47. #define __pmd(x)    (x)
  48. #define __pgd(x)    (x)
  49. #define __pgprot(x)    (x)
  50.  
  51. #endif
  52.  
  53. #define invalidate() \
  54. __asm__ __volatile__("movl %%cr3,%%eax\n\tmovl %%eax,%%cr3": : :"ax")
  55.  
  56. /* to align the pointer to the (next) page boundary */
  57. #define PAGE_ALIGN(addr)    (((addr)+PAGE_SIZE-1)&PAGE_MASK)
  58.  
  59. /* This handles the memory map.. */
  60. #define PAGE_OFFSET        0
  61. #define MAP_NR(addr)        (((unsigned long)(addr)) >> PAGE_SHIFT)
  62. #define MAP_PAGE_RESERVED    (1<<15)
  63.  
  64. typedef unsigned short mem_map_t;
  65.  
  66. #endif /* __KERNEL__ */
  67.  
  68. #endif /* _I386_PAGE_H */
  69.