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