lkml.org 
[lkml]   [2023]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH v3 12/12] m68k/mm: Make pfn accessors static inlines
    Making virt_to_pfn() a static inline taking a strongly typed
    (const void *) makes the contract of a passing a pointer of that
    type to the function explicit and exposes any misuse of the
    macro virt_to_pfn() acting polymorphic and accepting many types
    such as (void *), (unitptr_t) or (unsigned long) as arguments
    without warnings.

    For symmetry, do the same with pfn_to_virt().

    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    ---
    arch/m68k/include/asm/page_mm.h | 11 +++++++++--
    arch/m68k/include/asm/page_no.h | 11 +++++++++--
    2 files changed, 18 insertions(+), 4 deletions(-)

    diff --git a/arch/m68k/include/asm/page_mm.h b/arch/m68k/include/asm/page_mm.h
    index 3903db2e8da7..363aa0f9ba8a 100644
    --- a/arch/m68k/include/asm/page_mm.h
    +++ b/arch/m68k/include/asm/page_mm.h
    @@ -121,8 +121,15 @@ static inline void *__va(unsigned long x)
    * TODO: implement (fast) pfn<->pgdat_idx conversion functions, this makes lots
    * of the shifts unnecessary.
    */
    -#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
    -#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
    +static inline unsigned long virt_to_pfn(const void *kaddr)
    +{
    + return __pa(kaddr) >> PAGE_SHIFT;
    +}
    +
    +static inline void *pfn_to_virt(unsigned long pfn)
    +{
    + return __va(pfn << PAGE_SHIFT);
    +}

    extern int m68k_virt_to_node_shift;

    diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_no.h
    index 060e4c0e7605..af3a10973233 100644
    --- a/arch/m68k/include/asm/page_no.h
    +++ b/arch/m68k/include/asm/page_no.h
    @@ -19,8 +19,15 @@ extern unsigned long memory_end;
    #define __pa(vaddr) ((unsigned long)(vaddr))
    #define __va(paddr) ((void *)((unsigned long)(paddr)))

    -#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
    -#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
    +static inline unsigned long virt_to_pfn(const void *kaddr)
    +{
    + return __pa(kaddr) >> PAGE_SHIFT;
    +}
    +
    +static inline void *pfn_to_virt(unsigned long pfn)
    +{
    + return __va(pfn << PAGE_SHIFT);
    +}

    #define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
    #define page_to_virt(page) __va(((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET))
    --
    2.34.1

    \
     
     \ /
      Last update: 2023-05-23 16:09    [W:3.721 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site