From 53aaf262c66ee237e4163f1af347939ebd9c51c2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 25 Feb 2020 23:16:12 +0100 Subject: x86/idtentry: Provide macros to define/declare IDT entry points Provide DECLARE/DEFINE_IDTENTRY() macros. DEFINE_IDTENTRY() provides a wrapper which acts as the function definition. The exception handler body is just appended to it with curly brackets. The entry point is marked noinstr so that irq tracing and the enter_from_user_mode() can be moved into the C-entry point. As all C-entries use the same macro (or a later variant) the necessary entry handling can be implemented at one central place. DECLARE_IDTENTRY() provides the function prototypes: - The C entry point cfunc - The ASM entry point asm_cfunc - The XEN/PV entry point xen_asm_cfunc They all follow the same naming convention. When included from ASM code DECLARE_IDTENTRY() is a macro which emits the low level entry point in assembly by instantiating idtentry. IDTENTRY is the simplest variant which just has a pt_regs argument. It's going to be used for all exceptions which have no error code. Signed-off-by: Thomas Gleixner Reviewed-by: Alexandre Chartre Acked-by: Andy Lutomirski Acked-by: Peter Zijlstra Link: https://lkml.kernel.org/r/20200505134904.273363275@linutronix.de --- arch/x86/entry/entry_32.S | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'arch/x86/entry/entry_32.S') diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index eb64e78052e1..8c0e07e2860f 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -752,6 +752,12 @@ SYM_CODE_START(\asmsym) SYM_CODE_END(\asmsym) .endm +/* + * Include the defines which emit the idt entries which are shared + * shared between 32 and 64 bit. + */ +#include + /* * %eax: prev task * %edx: next task -- cgit v1.2.3