diff options
-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> |