|
|
1.1 ! root 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 STRICT_MM_TYPECHECKS ! 12: ! 13: #ifdef 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: /* to align the pointer to the (next) page boundary */ ! 54: #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) ! 55: ! 56: /* This handles the memory map.. */ ! 57: #define PAGE_OFFSET 0 ! 58: #define MAP_NR(addr) (((unsigned long)(addr)) >> PAGE_SHIFT) ! 59: ! 60: #endif /* __KERNEL__ */ ! 61: ! 62: #endif /* _I386_PAGE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.