lkml.org 
[lkml]   [2008]   [May]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 1 of 8] x86: define PTE_MASK in a universally useful way
    Date
    From
    Define PTE_MASK so that it contains a meaningful value for all x86
    pagetable configurations. Previously it was defined as a "long" which
    means that it was too short to cover a 32-bit PAE pte entry.

    It is now defined as a pteval_t, which is an integer type long enough
    to contain a full pte (or pmd, pud, pgd).

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    ---
    include/asm-x86/page.h | 13 +++++++++----
    1 file changed, 9 insertions(+), 4 deletions(-)

    diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
    --- a/include/asm-x86/page.h
    +++ b/include/asm-x86/page.h
    @@ -10,8 +10,13 @@

    #ifdef __KERNEL__

    -#define PHYSICAL_PAGE_MASK (PAGE_MASK & __PHYSICAL_MASK)
    -#define PTE_MASK (_AT(long, PHYSICAL_PAGE_MASK))
    +/* Cast PAGE_MASK to a signed type so that it is sign-extended if
    + virtual addresses are 32-bits but physical addresses are larger
    + (ie, 32-bit PAE). */
    +#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK)
    +
    +/* PTE_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */
    +#define PTE_MASK ((pteval_t)PHYSICAL_PAGE_MASK)

    #define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT)
    #define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1))
    @@ -24,8 +29,8 @@
    /* to align the pointer to the (next) page boundary */
    #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)

    -#define __PHYSICAL_MASK _AT(phys_addr_t, (_AC(1,ULL) << __PHYSICAL_MASK_SHIFT) - 1)
    -#define __VIRTUAL_MASK ((_AC(1,UL) << __VIRTUAL_MASK_SHIFT) - 1)
    +#define __PHYSICAL_MASK ((((phys_addr_t)1) << __PHYSICAL_MASK_SHIFT) - 1)
    +#define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1)

    #ifndef __ASSEMBLY__
    #include <linux/types.h>



    \
     
     \ /
      Last update: 2008-05-20 11:09    [W:0.020 / U:0.664 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site