|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |