On Tue, Jan 09, 2018 at 05:03:22PM -0800, Andi Kleen wrote: > From: Andi Kleen <[email protected]> > > Add 64bit assembler macros to clear registers on kernel entry. > Used in followon patches. > > Signed-off-by: Andi Kleen <[email protected]> > --- > 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 >

