[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 3/9] x86: Add support for STAC/CLAC instructions
>>> On 28.04.14 at 05:15, <feng.wu@xxxxxxxxx> wrote: > The STAC/CLAC instructions are only available when SMAP is enabled, > but on the other hand they aren't needed if SMAP is not available, I think you got the "enabled" and "available" mixed up here. > @@ -105,4 +107,48 @@ void ret_from_intr(void); > > #endif > > +/* "Raw" instruction opcodes */ > +#define __ASM_CLAC .byte 0x0f,0x01,0xca > +#define __ASM_STAC .byte 0x0f,0x01,0xcb > + > +#ifdef __ASSEMBLY__ > +#define CPUINFO_FEATURE_OFFSET(feature) \ > + (((feature >> 3) & ~3) + CPUINFO_features) I gues this wants to go into patch 1. > + > +#define ASM_AC(op) \ > + btl $X86_FEATURE_SMAP & 31, \ > + CPUINFO_FEATURE_OFFSET(X86_FEATURE_SMAP)+boot_cpu_data(%rip); \ > + jnc 881f; \ > + op; \ > +881: > + > +#define ASM_STAC ASM_AC(__ASM_STAC) > +#define ASM_CLAC ASM_AC(__ASM_CLAC) Please pass only STAC/CLAC here, and concatenate the __ASM_ onto them inside the macro (reducing the chance of abuse and slightly increasing readability). > +#else > +#define CPUINFO_FEATURE_OFFSET(feature) \ > + "(((" __stringify(feature) ">> 3) & ~3) + " \ > + __stringify(CPUINFO_features)")" > + > +#define ASM_AC(op) \ > + "btl $" __stringify(X86_FEATURE_SMAP) "&31, " \ > + CPUINFO_FEATURE_OFFSET(X86_FEATURE_SMAP) \ > + "+ boot_cpu_data(%%rip)\n\t" \ > + "jnc 881f\n\t" \ > + __stringify(op) "\n\t" \ > +"881:" > + > +#define ASM_STAC ASM_AC(__ASM_STAC) > +#define ASM_CLAC ASM_AC(__ASM_CLAC) Also, with these now being identical between asm and C, they could move ahead of the conditional block. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |