diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-x86/page.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h index b381f4a5a0bd..76b35e636d7d 100644 --- a/include/asm-x86/page.h +++ b/include/asm-x86/page.h | |||
| @@ -10,8 +10,13 @@ | |||
| 10 | 10 | ||
| 11 | #ifdef __KERNEL__ | 11 | #ifdef __KERNEL__ |
| 12 | 12 | ||
| 13 | #define PHYSICAL_PAGE_MASK (PAGE_MASK & __PHYSICAL_MASK) | 13 | /* Cast PAGE_MASK to a signed type so that it is sign-extended if |
| 14 | #define PTE_MASK (_AT(long, PHYSICAL_PAGE_MASK)) | 14 | virtual addresses are 32-bits but physical addresses are larger |
| 15 | (ie, 32-bit PAE). */ | ||
| 16 | #define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK) | ||
| 17 | |||
| 18 | /* PTE_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */ | ||
| 19 | #define PTE_MASK ((pteval_t)PHYSICAL_PAGE_MASK) | ||
| 15 | 20 | ||
| 16 | #define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) | 21 | #define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) |
| 17 | #define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) | 22 | #define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) |
| @@ -24,8 +29,8 @@ | |||
| 24 | /* to align the pointer to the (next) page boundary */ | 29 | /* to align the pointer to the (next) page boundary */ |
| 25 | #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) | 30 | #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) |
| 26 | 31 | ||
| 27 | #define __PHYSICAL_MASK _AT(phys_addr_t, (_AC(1,ULL) << __PHYSICAL_MASK_SHIFT) - 1) | 32 | #define __PHYSICAL_MASK ((((phys_addr_t)1) << __PHYSICAL_MASK_SHIFT) - 1) |
| 28 | #define __VIRTUAL_MASK ((_AC(1,UL) << __VIRTUAL_MASK_SHIFT) - 1) | 33 | #define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1) |
| 29 | 34 | ||
| 30 | #ifndef __ASSEMBLY__ | 35 | #ifndef __ASSEMBLY__ |
| 31 | #include <linux/types.h> | 36 | #include <linux/types.h> |
