[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: properly macroize the two XRSTOR flavors
On 27/11/15 11:54, Jan Beulich wrote: > All they differ by is the REX64 prefix. Create a single macro covering > both, at once allowing to get rid of the disconnect between the current > partial macro and its two use sites. > > No change in generated code. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > --- a/xen/arch/x86/xstate.c > +++ b/xen/arch/x86/xstate.c > @@ -334,16 +334,6 @@ void xsave(struct vcpu *v, uint64_t mask > ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] = word_size; > } > > -#define XRSTOR_FIXUP ".section .fixup,\"ax\" \n" \ > - "2: mov %[size],%%ecx \n" \ > - " xor %[lmask_out],%[lmask_out] \n" \ > - " rep stosb \n" \ > - " lea %[mem],%[ptr] \n" \ > - " mov %[lmask_in],%[lmask_out] \n" \ > - " jmp 1b \n" \ > - ".previous \n" \ > - _ASM_EXTABLE(1b, 2b) > - > void xrstor(struct vcpu *v, uint64_t mask) > { > uint32_t hmask = mask >> 32; > @@ -372,29 +362,33 @@ void xrstor(struct vcpu *v, uint64_t mas > */ > switch ( __builtin_expect(ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET], 8) ) > { > +#define XRSTOR(pfx) \ > + alternative_io("1: .byte " pfx "0x0f,0xae,0x2f\n" \ > + " .section .fixup,\"ax\"\n" \ > + "2: mov %[size],%%ecx\n" \ > + " xor %[lmask_out],%[lmask_out]\n" \ > + " rep stosb\n" \ > + " lea %[mem],%[ptr]\n" \ > + " mov %[lmask_in],%[lmask_out]\n" \ > + " jmp 1b\n" \ > + " .previous\n" \ > + _ASM_EXTABLE(1b, 2b), \ > + ".byte " pfx "0x0f,0xc7,0x1f\n", \ > + X86_FEATURE_XSAVES, \ > + ASM_OUTPUT2([ptr] "+&D" (ptr), [lmask_out] "+&a" > (lmask)), \ > + [mem] "m" (*ptr), [lmask_in] "g" (lmask), \ > + [hmask] "d" (hmask), [size] "m" (xsave_cntxt_size) \ > + : "ecx") Please align the \'s on the RHS. It makes the resulting blob rather easier to read, especially given the \n's in the text. Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |