From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755507AbbCaRAy (ORCPT ); Tue, 31 Mar 2015 13:00:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41110 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753062AbbCaRAt (ORCPT ); Tue, 31 Mar 2015 13:00:49 -0400 From: Denys Vlasenko To: Ingo Molnar Cc: Denys Vlasenko , Linus Torvalds , Steven Rostedt , Borislav Petkov , "H. Peter Anvin" , Andy Lutomirski , Oleg Nesterov , Frederic Weisbecker , Alexei Starovoitov , Will Drewry , Kees Cook , x86@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/9] x86/asm/entry/64: tidy up some instructions Date: Tue, 31 Mar 2015 19:00:08 +0200 Message-Id: <1427821211-25099-6-git-send-email-dvlasenk@redhat.com> In-Reply-To: <1427821211-25099-1-git-send-email-dvlasenk@redhat.com> References: <1427821211-25099-1-git-send-email-dvlasenk@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Tidy up TEST insns width to use shorter insn form, Use logically correct JZ mnemonic instead of JE (this doesn't change code). Replace several BT insns with equivalent, but shorter TEST insns. Signed-off-by: Denys Vlasenko CC: Linus Torvalds CC: Steven Rostedt CC: Ingo Molnar CC: Borislav Petkov CC: "H. Peter Anvin" CC: Andy Lutomirski CC: Oleg Nesterov CC: Frederic Weisbecker CC: Alexei Starovoitov CC: Will Drewry CC: Kees Cook CC: x86@kernel.org CC: linux-kernel@vger.kernel.org --- arch/x86/kernel/entry_64.S | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index bad285d..f49f973 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@ -67,8 +67,8 @@ ENDPROC(native_usergs_sysret64) .macro TRACE_IRQS_IRETQ #ifdef CONFIG_TRACE_IRQFLAGS - bt $9,EFLAGS(%rsp) /* interrupts off? */ - jnc 1f + testb $2, EFLAGS+1(%rsp) /* interrupts off? */ + jz 1f TRACE_IRQS_ON 1: #endif @@ -100,8 +100,8 @@ ENDPROC(native_usergs_sysret64) .endm .macro TRACE_IRQS_IRETQ_DEBUG - bt $9,EFLAGS(%rsp) /* interrupts off? */ - jnc 1f + testb $2, EFLAGS+1(%rsp) /* interrupts off? */ + jz 1f TRACE_IRQS_ON_DEBUG 1: .endm @@ -514,8 +514,8 @@ ENTRY(ret_from_fork) RESTORE_EXTRA_REGS - testl $3,CS(%rsp) # from kernel_thread? - jz 1f + testb $3, CS(%rsp) # from kernel_thread? + jz 1f /* * By the time we get here, we have no idea whether our pt_regs, @@ -599,8 +599,8 @@ END(interrupt) leaq -RBP(%rsp),%rdi /* arg1 for \func (pointer to pt_regs) */ - testl $3, CS-RBP(%rsp) - je 1f + testb $3, CS-RBP(%rsp) + jz 1f SWAPGS 1: /* @@ -654,8 +654,8 @@ ret_from_intr: CFI_DEF_CFA_REGISTER rsp CFI_ADJUST_CFA_OFFSET RBP - testl $3,CS(%rsp) - je retint_kernel + testb $3, CS(%rsp) + jz retint_kernel /* Interrupt came from user space */ GET_THREAD_INFO(%rcx) @@ -740,8 +740,8 @@ retint_kernel: #ifdef CONFIG_PREEMPT /* Interrupts are off */ /* Check if we need preemption */ - bt $9,EFLAGS(%rsp) /* interrupts were off? */ - jnc 1f + testb $2,EFLAGS+1(%rsp) /* interrupts were off? */ + jz 1f 0: cmpl $0,PER_CPU_VAR(__preempt_count) jnz 1f call preempt_schedule_irq @@ -951,8 +951,8 @@ ENTRY(\sym) .if \paranoid .if \paranoid == 1 CFI_REMEMBER_STATE - testl $3, CS(%rsp) /* If coming from userspace, switch */ - jnz 1f /* stacks. */ + testb $3, CS(%rsp) /* If coming from userspace, switch */ + jnz 1f /* stacks. */ .endif call paranoid_entry .else @@ -1292,8 +1292,8 @@ ENTRY(error_entry) SAVE_C_REGS 8 SAVE_EXTRA_REGS 8 xorl %ebx,%ebx - testl $3,CS+8(%rsp) - je error_kernelspace + testb $3,CS+8(%rsp) + jz error_kernelspace error_swapgs: SWAPGS error_sti: @@ -1344,7 +1344,7 @@ ENTRY(error_exit) TRACE_IRQS_OFF GET_THREAD_INFO(%rcx) testl %eax,%eax - jne retint_kernel + jnz retint_kernel LOCKDEP_SYS_EXIT_IRQ movl TI_flags(%rcx),%edx movl $_TIF_WORK_MASK,%edi -- 1.8.1.4