|
|
1.1 ! root 1: #ifndef _I386_PAGE_H ! 2: #define _I386_PAGE_H ! 3: ! 4: #ifndef MACH_INCLUDE ! 5: /* PAGE_SHIFT determines the page size */ ! 6: #define PAGE_SHIFT 12 ! 7: #define PAGE_SIZE (1UL << PAGE_SHIFT) ! 8: #define PAGE_MASK (~(PAGE_SIZE-1)) ! 9: #endif ! 10: ! 11: #ifdef __KERNEL__ ! 12: ! 13: #define STRICT_MM_TYPECHECKS ! 14: ! 15: #ifdef STRICT_MM_TYPECHECKS ! 16: /* ! 17: * These are used to make use of C type-checking.. ! 18: */ ! 19: typedef struct { unsigned long pte; } pte_t; ! 20: typedef struct { unsigned long pmd; } pmd_t; ! 21: typedef struct { unsigned long pgd; } pgd_t; ! 22: typedef struct { unsigned long pgprot; } pgprot_t; ! 23: ! 24: #define pte_val(x) ((x).pte) ! 25: #define pmd_val(x) ((x).pmd) ! 26: #define pgd_val(x) ((x).pgd) ! 27: #define pgprot_val(x) ((x).pgprot) ! 28: ! 29: #define __pte(x) ((pte_t) { (x) } ) ! 30: #define __pmd(x) ((pmd_t) { (x) } ) ! 31: #define __pgd(x) ((pgd_t) { (x) } ) ! 32: #define __pgprot(x) ((pgprot_t) { (x) } ) ! 33: ! 34: #else ! 35: /* ! 36: * .. while these make it easier on the compiler ! 37: */ ! 38: typedef unsigned long pte_t; ! 39: typedef unsigned long pmd_t; ! 40: typedef unsigned long pgd_t; ! 41: typedef unsigned long pgprot_t; ! 42: ! 43: #define pte_val(x) (x) ! 44: #define pmd_val(x) (x) ! 45: #define pgd_val(x) (x) ! 46: #define pgprot_val(x) (x) ! 47: ! 48: #define __pte(x) (x) ! 49: #define __pmd(x) (x) ! 50: #define __pgd(x) (x) ! 51: #define __pgprot(x) (x) ! 52: ! 53: #endif ! 54: ! 55: /* to align the pointer to the (next) page boundary */ ! 56: #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) ! 57: ! 58: /* This handles the memory map.. */ ! 59: #define PAGE_OFFSET 0 ! 60: #define MAP_NR(addr) (((unsigned long)(addr)) >> PAGE_SHIFT) ! 61: ! 62: #endif /* __KERNEL__ */ ! 63: ! 64: #endif /* _I386_PAGE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.