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

Re: [Xen-devel] [PATCH v6 04/10] x86: Add support for STAC/CLAC instructions



On 07/05/14 09:19, Feng Wu wrote:
> The STAC/CLAC instructions are only available when SMAP feature is
> available, but on the other hand they aren't needed if SMAP is not
> enabled, or before we start to run userspace, in that case, the
> functions and macros do nothing.
>
> Signed-off-by: Feng Wu <feng.wu@xxxxxxxxx>

Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

> ---
>  xen/include/asm-x86/asm_defns.h | 30 ++++++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
>
> diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
> index c4b2bb2..0302836 100644
> --- a/xen/include/asm-x86/asm_defns.h
> +++ b/xen/include/asm-x86/asm_defns.h
> @@ -8,6 +8,8 @@
>  #endif
>  #include <asm/processor.h>
>  #include <asm/percpu.h>
> +#include <xen/stringify.h>
> +#include <asm/cpufeature.h>
>  
>  #ifndef __ASSEMBLY__
>  void ret_from_intr(void);
> @@ -159,6 +161,34 @@ 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 ASM_AC(op)                                       \
> +        btl $X86_FEATURE_SMAP & 31,                      \
> +        CPUINFO_FEATURE_OFFSET(X86_FEATURE_SMAP)+boot_cpu_data(%rip); \
> +        jnc 881f;                                        \
> +        __ASM_##op;                                      \
> +881:
> +
> +#define ASM_STAC ASM_AC(STAC)
> +#define ASM_CLAC ASM_AC(CLAC)
> +#else
> +static inline void clac(void)
> +{
> +    if ( boot_cpu_has(X86_FEATURE_SMAP) )
> +        asm volatile (__stringify(__ASM_CLAC) : : : "memory");
> +}
> +
> +static inline void stac(void)
> +{
> +    if ( boot_cpu_has(X86_FEATURE_SMAP) )
> +        asm volatile (__stringify(__ASM_STAC) : : : "memory");
> +}
> +#endif
> +
>  #ifdef __ASSEMBLY__
>  .macro SAVE_ALL
>          addq  $-(UREGS_error_code-UREGS_r15), %rsp


_______________________________________________
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®.