lkml.org 
[lkml]   [2009]   [Jan]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH -mmotm] mm: unify some pmd_*() functions
    Date
    Unify all the identical implementations of pmd_free(), __pmd_free_tlb(),
    pmd_alloc_one(), pmd_addr_end() in include/asm-generic/pgtable-nopmd.h

    Signed-off-by: Andrea Righi <righi.andrea@gmail.com>
    ---
    include/asm-frv/pgalloc.h | 9 +-------
    include/asm-generic/pgtable-nopmd.h | 36 ++++++++++++++++++++++++++++++----
    include/asm-m32r/pgalloc.h | 9 +-------
    include/asm-m68k/motorola_pgalloc.h | 4 ++-
    include/asm-m68k/sun3_pgalloc.h | 10 +--------
    5 files changed, 37 insertions(+), 31 deletions(-)

    diff --git a/include/asm-frv/pgalloc.h b/include/asm-frv/pgalloc.h
    index 971e6ad..c4be813 100644
    --- a/include/asm-frv/pgalloc.h
    +++ b/include/asm-frv/pgalloc.h
    @@ -55,14 +55,7 @@ do { \
    tlb_remove_page((tlb),(pte)); \
    } while (0)

    -/*
    - * allocating and freeing a pmd is trivial: the 1-entry pmd is
    - * inside the pgd, so has no extra memory associated with it.
    - * (In the PAE case we free the pmds as part of the pgd.)
    - */
    -#define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *) 2); })
    -#define pmd_free(mm, x) do { } while (0)
    -#define __pmd_free_tlb(tlb,x) do { } while (0)
    +#define pmd_alloc_one pmd_alloc_one_bug

    #endif /* CONFIG_MMU */

    diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h
    index a7cdc48..b132d69 100644
    --- a/include/asm-generic/pgtable-nopmd.h
    +++ b/include/asm-generic/pgtable-nopmd.h
    @@ -4,6 +4,7 @@
    #ifndef __ASSEMBLY__

    #include <asm-generic/pgtable-nopud.h>
    +#include <asm/bug.h>

    struct mm_struct;

    @@ -54,15 +55,40 @@ static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address)
    /*
    * allocating and freeing a pmd is trivial: the 1-entry pmd is
    * inside the pud, so has no extra memory associated with it.
    + * (In the PAE case we free the pmds as part of the pgd.)
    */
    -#define pmd_alloc_one(mm, address) NULL
    +#ifndef pmd_alloc_one
    +static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
    +{
    + return NULL;
    +}
    +#define pmd_alloc_one pmd_alloc_one
    +#endif
    +static inline pmd_t *pmd_alloc_one_bug(struct mm_struct *mm, unsigned long addr)
    +{
    + BUG();
    + return (pmd_t *)(2);
    +}
    +#ifndef pmd_free
    static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
    {
    }
    -#define __pmd_free_tlb(tlb, x) do { } while (0)
    -
    -#undef pmd_addr_end
    -#define pmd_addr_end(addr, end) (end)
    +#define pmd_free pmd_free
    +#endif
    +#ifndef __pmd_free_tlb
    +struct mmu_gather;
    +static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd)
    +{
    +}
    +#define __pmd_free_tlb __pmd_free_tlb
    +#endif
    +#ifndef pmd_addr_end
    +static inline unsigned long pmd_addr_end(unsigned long addr, unsigned long end)
    +{
    + return end;
    +}
    +#define pmd_addr_end pmd_addr_end
    +#endif

    #endif /* __ASSEMBLY__ */

    diff --git a/include/asm-m32r/pgalloc.h b/include/asm-m32r/pgalloc.h
    index f11a2b9..b700896 100644
    --- a/include/asm-m32r/pgalloc.h
    +++ b/include/asm-m32r/pgalloc.h
    @@ -60,15 +60,8 @@ static inline void pte_free(struct mm_struct *mm, pgtable_t pte)

    #define __pte_free_tlb(tlb, pte) pte_free((tlb)->mm, (pte))

    -/*
    - * allocating and freeing a pmd is trivial: the 1-entry pmd is
    - * inside the pgd, so has no extra memory associated with it.
    - * (In the PAE case we free the pmds as part of the pgd.)
    - */
    +#define pmd_alloc_one pmd_alloc_one_bug

    -#define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); })
    -#define pmd_free(mm, x) do { } while (0)
    -#define __pmd_free_tlb(tlb, x) do { } while (0)
    #define pgd_populate(mm, pmd, pte) BUG()

    #define check_pgt_cache() do { } while (0)
    diff --git a/include/asm-m68k/motorola_pgalloc.h b/include/asm-m68k/motorola_pgalloc.h
    index d08bf62..984436d 100644
    --- a/include/asm-m68k/motorola_pgalloc.h
    +++ b/include/asm-m68k/motorola_pgalloc.h
    @@ -67,17 +67,19 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
    {
    return get_pointer_table();
    }
    +#define pmd_alloc_one pmd_alloc_one

    static inline int pmd_free(struct mm_struct *mm, pmd_t *pmd)
    {
    return free_pointer_table(pmd);
    }
    +#define pmd_free pmd_free

    static inline int __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd)
    {
    return free_pointer_table(pmd);
    }
    -
    +#define __pmd_free_tlb __pmd_free_tlb

    static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
    {
    diff --git a/include/asm-m68k/sun3_pgalloc.h b/include/asm-m68k/sun3_pgalloc.h
    index d4c83f1..0fe28fc 100644
    --- a/include/asm-m68k/sun3_pgalloc.h
    +++ b/include/asm-m68k/sun3_pgalloc.h
    @@ -18,8 +18,7 @@

    extern const char bad_pmd_string[];

    -#define pmd_alloc_one(mm,address) ({ BUG(); ((pmd_t *)2); })
    -
    +#define pmd_alloc_one pmd_alloc_one_bug

    static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
    {
    @@ -75,13 +74,6 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t page
    }
    #define pmd_pgtable(pmd) pmd_page(pmd)

    -/*
    - * allocating and freeing a pmd is trivial: the 1-entry pmd is
    - * inside the pgd, so has no extra memory associated with it.
    - */
    -#define pmd_free(mm, x) do { } while (0)
    -#define __pmd_free_tlb(tlb, x) do { } while (0)
    -
    static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
    {
    free_page((unsigned long) pgd);
    --
    1.5.6.3


    \
     
     \ /
      Last update: 2009-01-25 22:39    [W:0.034 / U:0.088 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site