All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/entry_64.S: introduce prepare_error_code macro
@ 2016-01-17  7:36 Alexander Kuleshov
  0 siblings, 0 replies; only message in thread
From: Alexander Kuleshov @ 2016-01-17  7:36 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Ingo Molnar, H . Peter Anvin, x86, Andy Lutomirski,
	Denys Vlasenko, Borislav Petkov, linux-kernel,
	Alexander Kuleshov

We need to put an error code to the %rsi if an exception provides
it, before the call of an exception handler. We do it in the idtentry
macro in two places.

This patch introduces prepare_error_code macro which will check existence
of an error code and put it to %rsi from ORIG_RAX if it exists, or just
clears %esi if an error code does not exist to prevent code duplication
in the idtentry macro.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
---
 arch/x86/entry/entry_64.S | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 9d34d3c..cbc9124 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -722,6 +722,15 @@ apicinterrupt IRQ_WORK_VECTOR			irq_work_interrupt		smp_irq_work_interrupt
  */
 #define CPU_TSS_IST(x) PER_CPU_VAR(cpu_tss) + (TSS_ist + ((x) - 1) * 8)
 
+        .macro prepare_error_code has_error_code:req
+	.if \has_error_code
+	movq	ORIG_RAX(%rsp), %rsi		/* get error code */
+	movq	$-1, ORIG_RAX(%rsp)		/* no syscall to restart */
+	.else
+	xorl	%esi, %esi			/* no error code */
+	.endif
+        .endm
+
 .macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1
 ENTRY(\sym)
 	/* Sanity check */
@@ -759,12 +768,7 @@ ENTRY(\sym)
 
 	movq	%rsp, %rdi			/* pt_regs pointer */
 
-	.if \has_error_code
-	movq	ORIG_RAX(%rsp), %rsi		/* get error code */
-	movq	$-1, ORIG_RAX(%rsp)		/* no syscall to restart */
-	.else
-	xorl	%esi, %esi			/* no error code */
-	.endif
+        prepare_error_code \has_error_code      /* %rsi -> error code */
 
 	.if \shift_ist != -1
 	subq	$EXCEPTION_STKSZ, CPU_TSS_IST(\shift_ist)
@@ -799,13 +803,7 @@ ENTRY(\sym)
 
 	movq	%rsp, %rdi			/* pt_regs pointer */
 
-	.if \has_error_code
-	movq	ORIG_RAX(%rsp), %rsi		/* get error code */
-	movq	$-1, ORIG_RAX(%rsp)		/* no syscall to restart */
-	.else
-	xorl	%esi, %esi			/* no error code */
-	.endif
-
+        prepare_error_code \has_error_code      /* %rsi -> error code */
 	call	\do_sym
 
 	jmp	error_exit			/* %ebx: no swapgs flag */
-- 
2.7.0.25.gfc10eb5

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-01-17  7:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-17  7:36 [PATCH] x86/entry_64.S: introduce prepare_error_code macro Alexander Kuleshov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.