diff options
Diffstat (limited to 'arch/x86/entry/entry_64.S')
| -rw-r--r-- | arch/x86/entry/entry_64.S | 18 | 
1 files changed, 4 insertions, 14 deletions
| diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 73a522d53b53..8ae7ffda8f98 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -981,7 +981,7 @@ ENTRY(\sym)  	call	\do_sym -	jmp	error_exit			/* %ebx: no swapgs flag */ +	jmp	error_exit  	.endif  END(\sym)  .endm @@ -1222,7 +1222,6 @@ END(paranoid_exit)  /*   * Save all registers in pt_regs, and switch GS if needed. - * Return: EBX=0: came from user mode; EBX=1: otherwise   */  ENTRY(error_entry)  	UNWIND_HINT_FUNC @@ -1269,7 +1268,6 @@ ENTRY(error_entry)  	 * for these here too.  	 */  .Lerror_kernelspace: -	incl	%ebx  	leaq	native_irq_return_iret(%rip), %rcx  	cmpq	%rcx, RIP+8(%rsp)  	je	.Lerror_bad_iret @@ -1303,28 +1301,20 @@ ENTRY(error_entry)  	/*  	 * Pretend that the exception came from user mode: set up pt_regs -	 * as if we faulted immediately after IRET and clear EBX so that -	 * error_exit knows that we will be returning to user mode. +	 * as if we faulted immediately after IRET.  	 */  	mov	%rsp, %rdi  	call	fixup_bad_iret  	mov	%rax, %rsp -	decl	%ebx  	jmp	.Lerror_entry_from_usermode_after_swapgs  END(error_entry) - -/* - * On entry, EBX is a "return to kernel mode" flag: - *   1: already in kernel mode, don't need SWAPGS - *   0: user gsbase is loaded, we need SWAPGS and standard preparation for return to usermode - */  ENTRY(error_exit)  	UNWIND_HINT_REGS  	DISABLE_INTERRUPTS(CLBR_ANY)  	TRACE_IRQS_OFF -	testl	%ebx, %ebx -	jnz	retint_kernel +	testb	$3, CS(%rsp) +	jz	retint_kernel  	jmp	retint_user  END(error_exit) | 
