lkml.org 
[lkml]   [2008]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 03 of 31] x86: convert pgalloc_64.h from macros to inlines
    Date
    From
    Convert asm-x86/pgalloc_64.h from macros into functions (#include hell
    prevents __*_free_tlb from being inline, but they're probably a bit
    big to inline anyway).

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    ---
    arch/x86/mm/init_64.c | 16 ++++++++++++++++
    include/asm-x86/pgalloc_64.h | 33 ++++++++++++++++++---------------
    2 files changed, 34 insertions(+), 15 deletions(-)

    diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
    --- a/arch/x86/mm/init_64.c
    +++ b/arch/x86/mm/init_64.c
    @@ -847,3 +847,19 @@
    return 0;
    }
    #endif
    +
    +void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte)
    +{
    + pgtable_page_dtor(pte);
    + tlb_remove_page(tlb, pte);
    +}
    +
    +void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd)
    +{
    + tlb_remove_page(tlb, virt_to_page(pmd));
    +}
    +
    +void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud)
    +{
    + tlb_remove_page(tlb, virt_to_page(pud));
    +}
    diff --git a/include/asm-x86/pgalloc_64.h b/include/asm-x86/pgalloc_64.h
    --- a/include/asm-x86/pgalloc_64.h
    +++ b/include/asm-x86/pgalloc_64.h
    @@ -1,16 +1,24 @@
    #ifndef _X86_64_PGALLOC_H
    #define _X86_64_PGALLOC_H

    -#include <asm/pda.h>
    #include <linux/threads.h>
    #include <linux/mm.h>
    +#include <asm/pda.h>

    -#define pmd_populate_kernel(mm, pmd, pte) \
    - set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte)))
    -#define pud_populate(mm, pud, pmd) \
    - set_pud(pud, __pud(_PAGE_TABLE | __pa(pmd)))
    -#define pgd_populate(mm, pgd, pud) \
    - set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)))
    +static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte)
    +{
    + set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte)));
    +}
    +
    +static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
    +{
    + set_pud(pud, __pud(_PAGE_TABLE | __pa(pmd)));
    +}
    +
    +static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud)
    +{
    + set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)));
    +}

    #define pmd_pgtable(pmd) pmd_page(pmd)

    @@ -121,13 +129,8 @@
    __free_page(pte);
    }

    -#define __pte_free_tlb(tlb,pte) \
    -do { \
    - pgtable_page_dtor((pte)); \
    - tlb_remove_page((tlb), (pte)); \
    -} while (0)
    -
    -#define __pmd_free_tlb(tlb,x) tlb_remove_page((tlb),virt_to_page(x))
    -#define __pud_free_tlb(tlb,x) tlb_remove_page((tlb),virt_to_page(x))
    +extern void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte);
    +extern void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd);
    +extern void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud);

    #endif /* _X86_64_PGALLOC_H */



    \
     
     \ /
      Last update: 2008-03-18 06:31    [W:2.916 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site