lkml.org 
[lkml]   [2021]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V3 42/49] x86/entry: Add a C macro to define the function body for IST in .entry.text with an error code
    Date
    From: Lai Jiangshan <laijs@linux.alibaba.com>

    Add DEFINE_IDTENTRY_IST_ETNRY_ERRORCODE() macro to define C code to
    implement the ASM code which calls paranoid_entry(), modify orig_ax,
    cfunc(), paranoid_exit() in series for IST exceptions with an error code.

    Not functional difference intended.

    Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
    ---
    arch/x86/include/asm/idtentry.h | 16 ++++++++++++++++
    1 file changed, 16 insertions(+)

    diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h
    index 57636844b0fd..c57606948433 100644
    --- a/arch/x86/include/asm/idtentry.h
    +++ b/arch/x86/include/asm/idtentry.h
    @@ -351,6 +351,22 @@ __visible __entry_text void ist_##func(struct pt_regs *regs) \
    ist_paranoid_exit(cr3, gsbase); \
    }

    +/**
    + * DEFINE_IDTENTRY_IST_ENTRY_ERRORCODE - Emit __entry_text code for IST
    + * entry points with an error code
    + * @func: Function name of the entry point
    + */
    +#define DEFINE_IDTENTRY_IST_ETNRY_ERRORCODE(func) \
    +__visible __entry_text void ist_##func(struct pt_regs *regs) \
    +{ \
    + unsigned long cr3, gsbase, error_code = regs->orig_ax; \
    + \
    + ist_paranoid_entry(&cr3, &gsbase); \
    + regs->orig_ax = -1; /* no syscall to restart */ \
    + func(regs, error_code); \
    + ist_paranoid_exit(cr3, gsbase); \
    +}
    +
    /**
    * DEFINE_IDTENTRY_IST - Emit code for IST entry points
    * @func: Function name of the entry point
    --
    2.19.1.6.gb485710b
    \
     
     \ /
      Last update: 2021-10-14 05:52    [W:4.170 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site