|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 3/7] x86: introduce altinstruction_nop assembler macro
This allows shortening (and making more obvious what they do) some
altinstruction_entry uses.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -135,8 +135,7 @@ ENTRY(compat_restore_all_guest)
jne 1b
.Lcr4_alt_end:
.section .altinstructions, "a"
- altinstruction_entry .Lcr4_orig, .Lcr4_orig, X86_FEATURE_ALWAYS, \
- (.Lcr4_orig_end - .Lcr4_orig), 0
+ altinstruction_nop .Lcr4_orig, .Lcr4_orig_end, X86_FEATURE_ALWAYS
altinstruction_entry .Lcr4_orig, .Lcr4_alt, X86_FEATURE_XEN_SMEP, \
(.Lcr4_orig_end - .Lcr4_orig), \
(.Lcr4_alt_end - .Lcr4_alt)
--- a/xen/include/asm-x86/alternative-asm.h
+++ b/xen/include/asm-x86/alternative-asm.h
@@ -17,6 +17,15 @@
.byte \alt_len
.endm
+/* As above, but to replace the entire range by suitable NOPs. */
+.macro altinstruction_nop start end feature
+ .long \start - .
+ .long \start - .
+ .word \feature
+ .byte \end - \start
+ .byte 0
+.endm
+
.macro ALTERNATIVE oldinstr, newinstr, feature
.Lold_start_\@:
\oldinstr
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -193,24 +193,24 @@ void ret_from_intr(void);
#ifdef __ASSEMBLY__
#define ASM_AC(op) \
- 661: ASM_NOP3; \
+ 661: ASM_NOP3; 660:; \
.pushsection .altinstr_replacement, "ax"; \
662: __ASM_##op; \
.popsection; \
.pushsection .altinstructions, "a"; \
- altinstruction_entry 661b, 661b, X86_FEATURE_ALWAYS, 3, 0; \
- altinstruction_entry 661b, 662b, X86_FEATURE_XEN_SMAP, 3, 3; \
+ altinstruction_nop 661b, 660b, X86_FEATURE_ALWAYS; \
+ altinstruction_entry 661b, 662b, X86_FEATURE_XEN_SMAP, 3, 3; \
.popsection
#define ASM_STAC ASM_AC(STAC)
#define ASM_CLAC ASM_AC(CLAC)
#define CR4_PV32_RESTORE \
- 667: ASM_NOP5; \
+ 667: ASM_NOP5; 669:; \
.pushsection .altinstr_replacement, "ax"; \
668: call cr4_pv32_restore; \
.section .altinstructions, "a"; \
- altinstruction_entry 667b, 667b, X86_FEATURE_ALWAYS, 5, 0; \
+ altinstruction_nop 667b, 669b, X86_FEATURE_ALWAYS; \
altinstruction_entry 667b, 668b, X86_FEATURE_XEN_SMEP, 5, 5; \
altinstruction_entry 667b, 668b, X86_FEATURE_XEN_SMAP, 5, 5; \
.popsection
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |