lkml.org 
[lkml]   [2021]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 1/2] x86/asm: add _ASM_RIP() macro for x86-64 (%rip) suffix
    Date
    Add a macro _ASM_RIP() to add a (%rip) suffix on 64 bits only. This is
    useful for immediate memory references using e.g. an "i" constraint
    where one doesn't want gcc to possibly use a register indirection as
    it may in the case of an "m" constraint.

    Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
    ---
    arch/x86/include/asm/asm.h | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
    index 3ad3da9a7d97..c5a19ccda0fe 100644
    --- a/arch/x86/include/asm/asm.h
    +++ b/arch/x86/include/asm/asm.h
    @@ -6,11 +6,13 @@
    # define __ASM_FORM(x, ...) x,## __VA_ARGS__
    # define __ASM_FORM_RAW(x, ...) x,## __VA_ARGS__
    # define __ASM_FORM_COMMA(x, ...) x,## __VA_ARGS__,
    +# define __ASM_REGPFX %
    #else
    #include <linux/stringify.h>
    # define __ASM_FORM(x, ...) " " __stringify(x,##__VA_ARGS__) " "
    # define __ASM_FORM_RAW(x, ...) __stringify(x,##__VA_ARGS__)
    # define __ASM_FORM_COMMA(x, ...) " " __stringify(x,##__VA_ARGS__) ","
    +# define __ASM_REGPFX %%
    #endif

    #define _ASM_BYTES(x, ...) __ASM_FORM(.byte x,##__VA_ARGS__ ;)
    @@ -49,6 +51,9 @@
    #define _ASM_SI __ASM_REG(si)
    #define _ASM_DI __ASM_REG(di)

    +/* Adds a (%rip) suffix on 64 bits only; for immediate memory references */
    +#define _ASM_RIP(x) __ASM_SEL_RAW(x, x (__ASM_REGPFX rip))
    +
    #ifndef __x86_64__
    /* 32 bit */

    --
    2.31.1
    \
     
     \ /
      Last update: 2021-09-10 00:09    [W:4.211 / U:0.936 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site