mirror of https://gitee.com/openkylin/linux.git
x86/idtentry: Provide IDTENTRY_RAW
Some exception handlers need to do extra work before any of the entry helpers are invoked. Provide IDTENTRY_RAW for this. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Acked-by: Andy Lutomirski <luto@kernel.org> Link: https://lkml.kernel.org/r/20200505135313.830540017@linutronix.de
This commit is contained in:
parent
f64366efd8
commit
0dc6cdc21b
|
@ -104,6 +104,34 @@ __visible noinstr void func(struct pt_regs *regs, \
|
|||
static __always_inline void __##func(struct pt_regs *regs, \
|
||||
unsigned long error_code)
|
||||
|
||||
/**
|
||||
* DECLARE_IDTENTRY_RAW - Declare functions for raw IDT entry points
|
||||
* No error code pushed by hardware
|
||||
* @vector: Vector number (ignored for C)
|
||||
* @func: Function name of the entry point
|
||||
*
|
||||
* Maps to DECLARE_IDTENTRY().
|
||||
*/
|
||||
#define DECLARE_IDTENTRY_RAW(vector, func) \
|
||||
DECLARE_IDTENTRY(vector, func)
|
||||
|
||||
/**
|
||||
* DEFINE_IDTENTRY_RAW - Emit code for raw IDT entry points
|
||||
* @func: Function name of the entry point
|
||||
*
|
||||
* @func is called from ASM entry code with interrupts disabled.
|
||||
*
|
||||
* The macro is written so it acts as function definition. Append the
|
||||
* body with a pair of curly brackets.
|
||||
*
|
||||
* Contrary to DEFINE_IDTENTRY() this does not invoke the
|
||||
* idtentry_enter/exit() helpers before and after the body invocation. This
|
||||
* needs to be done in the body itself if applicable. Use if extra work
|
||||
* is required before the enter/exit() helpers are invoked.
|
||||
*/
|
||||
#define DEFINE_IDTENTRY_RAW(func) \
|
||||
__visible noinstr void func(struct pt_regs *regs)
|
||||
|
||||
#else /* !__ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
|
@ -118,6 +146,9 @@ static __always_inline void __##func(struct pt_regs *regs, \
|
|||
/* Special case for 32bit IRET 'trap'. Do not emit ASM code */
|
||||
#define DECLARE_IDTENTRY_SW(vector, func)
|
||||
|
||||
#define DECLARE_IDTENTRY_RAW(vector, func) \
|
||||
DECLARE_IDTENTRY(vector, func)
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue