[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 1/7] x86: Add support for STAC/CLAC instructions



>>> On 23.04.14 at 14:32, <feng.wu@xxxxxxxxx> wrote:
>> From: Jan Beulich [mailto:JBeulich@xxxxxxxx]
>> >>> On 23.04.14 at 16:34, <feng.wu@xxxxxxxxx> wrote:
>> > +/* "Raw" instruction opcodes */
>> > +#define __ASM_CLAC      .byte 0x0f,0x01,0xca
>> > +#define __ASM_STAC      .byte 0x0f,0x01,0xcb
>> > +
>> > +#ifdef __ASSEMBLY__
>> > +#define ASM_AC(op)                                       \
>> > +        pushq %rax;                                      \
>> > +        leaq boot_cpu_data(%rip), %rax;                  \
>> > +        btl $X86_FEATURE_SMAP-7*32, CPUINFO86_leaf7_features(%rax);
>> \
>> > +        jnc 881f;                                        \
>> > +        op;                                              \
>> > +881:    popq %rax
>> 
>> So why are you pushing/popping %rax here? There's no need for the
>> lea.
>> 
>> And the hard coded 7 here should be replaced too; I don't see a need
>> for CPUINFO86_leaf7_features either - just calculate everything you
>> need from X86_FEATURE_SMAP (these are all constants, so other than
>> the expression getting a little long there's nothing keeping this from
>> being a single btl).
> 
> In my understanding, CPUINFO86_leaf7_features is the offset for
> x86_capability[i] in struct cpuinfo_x86{}, seems we cannot get the
> right offset only from X86_FEATURE_SMAP?

Of course you need to add in the offset of x86_capability[].
See my other reply just sent.

>> > +#define ASM_STAC(prefix) ASM_AC(__ASM_STAC, prefix)
>> > +#define ASM_CLAC(prefix) ASM_AC(__ASM_CLAC, prefix)
>> 
>> What is "prefix" good for here, i.e. why can't you put the % right
>> in the macro?
> 
> Because this macro will be used in the basic inline assembly (use "%" as the 
> register prefix)
> and extended assembly (use "%%" as the register prefix).

Perhaps worth avoiding the basic uses then, by converting them to
extended? Passing these % or %% to the macro looks rather ugly,
so if the suggestion isn't viable, some other trick can certainly be
found to avoid this.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.