lkml.org 
[lkml]   [2009]   [May]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[RFC v2][PATCH 19/35] x86: create ptemap.h
    From
    Date


    Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
    ---

    linux-2.6.git-dave/arch/x86/include/asm/pgtable_32.h | 17 ---------
    linux-2.6.git-dave/arch/x86/include/asm/pgtable_64.h | 6 ---
    linux-2.6.git-dave/arch/x86/include/asm/ptemap.h | 34 +++++++++++++++++++
    3 files changed, 36 insertions(+), 21 deletions(-)

    diff -puN arch/x86/include/asm/pgtable_32.h~x86-ptemaph arch/x86/include/asm/pgtable_32.h
    --- linux-2.6.git/arch/x86/include/asm/pgtable_32.h~x86-ptemaph 2009-04-30 15:11:03.000000000 -0700
    +++ linux-2.6.git-dave/arch/x86/include/asm/pgtable_32.h 2009-04-30 15:11:03.000000000 -0700
    @@ -48,22 +48,7 @@ extern void set_pmd_pfn(unsigned long, u
    # include <asm/pgtable-2level.h>
    #endif

    -#if defined(CONFIG_HIGHPTE)
    -#define pte_offset_map(dir, address) \
    - ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE0) + \
    - pte_index((address)))
    -#define pte_offset_map_nested(dir, address) \
    - ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE1) + \
    - pte_index((address)))
    -#define pte_unmap(pte) kunmap_atomic((pte), KM_PTE0)
    -#define pte_unmap_nested(pte) kunmap_atomic((pte), KM_PTE1)
    -#else
    -#define pte_offset_map(dir, address) \
    - ((pte_t *)page_address(pmd_page(*(dir))) + pte_index((address)))
    -#define pte_offset_map_nested(dir, address) pte_offset_map((dir), (address))
    -#define pte_unmap(pte) do { } while (0)
    -#define pte_unmap_nested(pte) do { } while (0)
    -#endif
    +#include <asm/ptemap.h>

    /* Clear a kernel PTE and flush it from the TLB */
    #define kpte_clear_flush(ptep, vaddr) \
    diff -puN arch/x86/include/asm/pgtable_64.h~x86-ptemaph arch/x86/include/asm/pgtable_64.h
    --- linux-2.6.git/arch/x86/include/asm/pgtable_64.h~x86-ptemaph 2009-04-30 15:11:03.000000000 -0700
    +++ linux-2.6.git-dave/arch/x86/include/asm/pgtable_64.h 2009-04-30 15:11:03.000000000 -0700
    @@ -127,11 +127,7 @@ static inline int pgd_large(pgd_t pgd) {

    /* PTE - Level 1 access. */

    -/* x86-64 always has all page tables mapped. */
    -#define pte_offset_map(dir, address) pte_offset_kernel((dir), (address))
    -#define pte_offset_map_nested(dir, address) pte_offset_kernel((dir), (address))
    -#define pte_unmap(pte) /* NOP */
    -#define pte_unmap_nested(pte) /* NOP */
    +#include <asm/ptemap.h>

    #define update_mmu_cache(vma, address, pte) do { } while (0)

    diff -puN /dev/null arch/x86/include/asm/ptemap.h
    --- /dev/null 2008-09-02 09:40:19.000000000 -0700
    +++ linux-2.6.git-dave/arch/x86/include/asm/ptemap.h 2009-04-30 15:11:03.000000000 -0700
    @@ -0,0 +1,34 @@
    +#ifndef _X86_ASM_PTEMAP_H
    +#define _X86_ASM_PTEMAP_H
    +
    +#ifdef CONFIG_X86_32
    +
    +#if defined(CONFIG_HIGHPTE)
    +
    +#define pte_offset_map(dir, address) \
    + ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE0) + \
    + pte_index((address)))
    +#define pte_offset_map_nested(dir, address) \
    + ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE1) + \
    + pte_index((address)))
    +#define pte_unmap(pte) kunmap_atomic((pte), KM_PTE0)
    +#define pte_unmap_nested(pte) kunmap_atomic((pte), KM_PTE1)
    +#else
    +#define pte_offset_map(dir, address) \
    + ((pte_t *)page_address(pmd_page(*(dir))) + pte_index((address)))
    +#define pte_offset_map_nested(dir, address) pte_offset_map((dir), (address))
    +#define pte_unmap(pte) do { } while (0)
    +#define pte_unmap_nested(pte) do { } while (0)
    +#endif
    +
    +#else /* x86-64 */
    +
    +/* x86-64 always has all page tables mapped. */
    +#define pte_offset_map(dir, address) pte_offset_kernel((dir), (address))
    +#define pte_offset_map_nested(dir, address) pte_offset_kernel((dir), (address))
    +#define pte_unmap(pte) /* NOP */
    +#define pte_unmap_nested(pte) /* NOP */
    +
    +#endif
    +
    +#endif /* _X86_ASM_PTEMAP_H */
    _

    \
     
     \ /
      Last update: 2009-05-20 20:39    [W:0.022 / U:31.360 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site