Commit e2dcb5f1 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86/entry: Remove the transition leftovers



Now that all exceptions are converted over the sane flag is not longer
needed. Also the vector argument of idtentry_body on 64-bit is pointless
now.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Acked-by: default avatarAndy Lutomirski <luto@kernel.org>
Link: https://lore.kernel.org/r/20200521202118.331115895@linutronix.de
parent 91eeafea
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -734,9 +734,8 @@
 * @asmsym:		ASM symbol for the entry point
 * @cfunc:		C function to be called
 * @has_error_code:	Hardware pushed error code on stack
 * @sane:		Compatibility flag with 64bit
 */
.macro idtentry vector asmsym cfunc has_error_code:req sane=0
.macro idtentry vector asmsym cfunc has_error_code:req
SYM_CODE_START(\asmsym)
	ASM_CLAC
	cld
+4 −22
Original line number Diff line number Diff line
@@ -496,27 +496,14 @@ SYM_CODE_END(spurious_entries_start)

/**
 * idtentry_body - Macro to emit code calling the C function
 * @vector:		Vector number
 * @cfunc:		C function to be called
 * @has_error_code:	Hardware pushed error code on stack
 * @sane:		Sane variant which handles irq tracing, context tracking in C
 */
.macro idtentry_body vector cfunc has_error_code:req sane=0
.macro idtentry_body cfunc has_error_code:req

	call	error_entry
	UNWIND_HINT_REGS

	.if \sane == 0
	TRACE_IRQS_OFF

#ifdef CONFIG_CONTEXT_TRACKING
	testb	$3, CS(%rsp)
	jz	.Lfrom_kernel_no_ctxt_tracking_\@
	CALL_enter_from_user_mode
.Lfrom_kernel_no_ctxt_tracking_\@:
#endif
	.endif

	movq	%rsp, %rdi			/* pt_regs pointer into 1st argument*/

	.if \has_error_code == 1
@@ -526,11 +513,7 @@ SYM_CODE_END(spurious_entries_start)

	call	\cfunc

	.if \sane == 0
	jmp	error_exit
	.else
	jmp	error_return
	.endif
.endm

/**
@@ -539,12 +522,11 @@ SYM_CODE_END(spurious_entries_start)
 * @asmsym:		ASM symbol for the entry point
 * @cfunc:		C function to be called
 * @has_error_code:	Hardware pushed error code on stack
 * @sane:		Sane variant which handles irq tracing, context tracking in C
 *
 * The macro emits code to set up the kernel context for straight forward
 * and simple IDT entries. No IST stack, no paranoid entry checks.
 */
.macro idtentry vector asmsym cfunc has_error_code:req sane=0
.macro idtentry vector asmsym cfunc has_error_code:req
SYM_CODE_START(\asmsym)
	UNWIND_HINT_IRET_REGS offset=\has_error_code*8
	ASM_CLAC
@@ -567,7 +549,7 @@ SYM_CODE_START(\asmsym)
.Lfrom_usermode_no_gap_\@:
	.endif

	idtentry_body \vector \cfunc \has_error_code \sane
	idtentry_body \cfunc \has_error_code

_ASM_NOKPROBE(\asmsym)
SYM_CODE_END(\asmsym)
@@ -642,7 +624,7 @@ SYM_CODE_START(\asmsym)

	/* Switch to the regular task stack and use the noist entry point */
.Lfrom_usermode_switch_stack_\@:
	idtentry_body vector noist_\cfunc, has_error_code=0 sane=1
	idtentry_body noist_\cfunc, has_error_code=0

_ASM_NOKPROBE(\asmsym)
SYM_CODE_END(\asmsym)
+3 −3
Original line number Diff line number Diff line
@@ -298,10 +298,10 @@ __visible noinstr void func(struct pt_regs *regs, \
 * The ASM variants for DECLARE_IDTENTRY*() which emit the ASM entry stubs.
 */
#define DECLARE_IDTENTRY(vector, func)					\
	idtentry vector asm_##func func has_error_code=0 sane=1
	idtentry vector asm_##func func has_error_code=0

#define DECLARE_IDTENTRY_ERRORCODE(vector, func)			\
	idtentry vector asm_##func func has_error_code=1 sane=1
	idtentry vector asm_##func func has_error_code=1

/* Special case for 32bit IRET 'trap'. Do not emit ASM code */
#define DECLARE_IDTENTRY_SW(vector, func)
@@ -345,7 +345,7 @@ __visible noinstr void func(struct pt_regs *regs, \

/* XEN NMI and DB wrapper */
#define DECLARE_IDTENTRY_XEN(vector, func)				\
	idtentry vector asm_exc_xen##func exc_##func has_error_code=0 sane=1
	idtentry vector asm_exc_xen##func exc_##func has_error_code=0

#endif /* __ASSEMBLY__ */