diff options
author | Jan Beulich <JBeulich@suse.com> | 2015-06-01 08:03:59 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-06-02 04:10:09 -0400 |
commit | 2f63b9db7260beba3c19d66d6c11b0b78ea84a8c (patch) | |
tree | c56e0e4d2003abcb0b3d4736e5c14909f6449140 | |
parent | 2bf557ea3f49576fabe24cd5daf1a34e9ee22c3c (diff) |
x86/asm/entry/64: Fold identical code paths
retint_kernel doesn't require %rcx to be pointing to thread info
(anymore?), and the code on the two alternative paths is - not
really surprisingly - identical.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/556C664F020000780007FB64@mail.emea.novell.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/kernel/entry_64.S | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index b84cec50c8cf..4ad79e946f5a 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -615,7 +615,7 @@ ret_from_intr: | |||
615 | testb $3, CS(%rsp) | 615 | testb $3, CS(%rsp) |
616 | jz retint_kernel | 616 | jz retint_kernel |
617 | /* Interrupt came from user space */ | 617 | /* Interrupt came from user space */ |
618 | 618 | retint_user: | |
619 | GET_THREAD_INFO(%rcx) | 619 | GET_THREAD_INFO(%rcx) |
620 | /* | 620 | /* |
621 | * %rcx: thread info. Interrupts off. | 621 | * %rcx: thread info. Interrupts off. |
@@ -1194,15 +1194,9 @@ ENTRY(error_exit) | |||
1194 | RESTORE_EXTRA_REGS | 1194 | RESTORE_EXTRA_REGS |
1195 | DISABLE_INTERRUPTS(CLBR_NONE) | 1195 | DISABLE_INTERRUPTS(CLBR_NONE) |
1196 | TRACE_IRQS_OFF | 1196 | TRACE_IRQS_OFF |
1197 | GET_THREAD_INFO(%rcx) | ||
1198 | testl %eax,%eax | 1197 | testl %eax,%eax |
1199 | jnz retint_kernel | 1198 | jnz retint_kernel |
1200 | LOCKDEP_SYS_EXIT_IRQ | 1199 | jmp retint_user |
1201 | movl TI_flags(%rcx),%edx | ||
1202 | movl $_TIF_WORK_MASK,%edi | ||
1203 | andl %edi,%edx | ||
1204 | jnz retint_careful | ||
1205 | jmp retint_swapgs | ||
1206 | END(error_exit) | 1200 | END(error_exit) |
1207 | 1201 | ||
1208 | /* Runs on exception stack */ | 1202 | /* Runs on exception stack */ |