Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934551AbeAKUAn (ORCPT + 1 other); Thu, 11 Jan 2018 15:00:43 -0500 Received: from userp2130.oracle.com ([156.151.31.86]:58114 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932431AbeAKUAl (ORCPT ); Thu, 11 Jan 2018 15:00:41 -0500 Date: Thu, 11 Jan 2018 14:58:39 -0500 From: Konrad Rzeszutek Wilk To: Andi Kleen Cc: tglx@linutronix.de, x86@kernel.org, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, dwmw@amazon.co.uk, pjt@google.com, luto@kernel.org, peterz@infradead.org, thomas.lendacky@amd.com, tim.c.chen@linux.intel.com, gregkh@linux-foundation.org, dave.hansen@intel.com, jikos@kernel.org, Andi Kleen Subject: Re: [PATCH v1 2/8] x86/entry/clearregs: Add infrastructure to clear registers Message-ID: <20180111195839.GC29272@char.us.oracle.com> References: <20180110010328.22163-1-andi@firstfloor.org> <20180110010328.22163-3-andi@firstfloor.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180110010328.22163-3-andi@firstfloor.org> User-Agent: Mutt/1.8.3 (2017-05-23) X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8771 signatures=668652 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1801110272 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Tue, Jan 09, 2018 at 05:03:22PM -0800, Andi Kleen wrote: > From: Andi Kleen > > Add 64bit assembler macros to clear registers on kernel entry. > Used in followon patches. > > Signed-off-by: Andi Kleen > --- > arch/x86/entry/calling.h | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h > index 45a63e00a6af..9444e7623185 100644 > --- a/arch/x86/entry/calling.h > +++ b/arch/x86/entry/calling.h > @@ -172,6 +172,34 @@ For 32-bit we have the following conventions - kernel is built with > .byte 0xf1 > .endm > > + .macro CLEAR_R11_TO_R15 > + xorq %r15, %r15 > + xorq %r14, %r14 > + xorq %r13, %r13 > + xorq %r12, %r12 > + xorq %r11, %r11 > + .endm > + > + .macro CLEAR_R8_TO_R15 > + CLEAR_R11_TO_R15 > + xorq %r10, %r10 > + xorq %r9, %r9 > + xorq %r8, %r8 > + .endm > + > + .macro CLEAR_ALL_REGS > + CLEAR_R8_TO_R15 > + xorl %eax, %eax > + xorl %ebx, %ebx How come you use xorl vs xorq? > + xorl %ecx, %ecx > + xorl %edx, %edx > + xorl %esi, %esi > + xorl %edi, %edi > +#ifndef CONFIG_FRAME_POINTER > + xorl %ebp, %ebp > +#endif > + .endm > + > /* > * This is a sneaky trick to help the unwinder find pt_regs on the stack. The > * frame pointer is replaced with an encoded pointer to pt_regs. The encoding > -- > 2.14.3 >