|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/alternatives: allow replacement code snippets to be re-used
commit b458596ac3b2ac3c365769d4fd278ae17aa76d22
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri May 2 09:44:49 2025 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri May 2 09:44:49 2025 +0200
x86/alternatives: allow replacement code snippets to be re-used
In a number of cases we use ALTERNATIVE_2 with both replacement insns /
insn sequences being identical. Avoid emitting the same code twice, and
instead alias the necessary helper labels to the existing ones.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/include/asm/alternative-asm.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/xen/arch/x86/include/asm/alternative-asm.h
b/xen/arch/x86/include/asm/alternative-asm.h
index 83e8594f0e..22da9f89f1 100644
--- a/xen/arch/x86/include/asm/alternative-asm.h
+++ b/xen/arch/x86/include/asm/alternative-asm.h
@@ -51,6 +51,8 @@
#define decl_repl(insn, nr) .L\@_repl_s\()nr: insn; .L\@_repl_e\()nr:
#define repl_len(nr) (.L\@_repl_e\()nr - .L\@_repl_s\()nr)
+#define clone_repl(new, old) .equiv .L\@_repl_s\()new, .L\@_repl_s\()old; \
+ .equiv .L\@_repl_e\()new, .L\@_repl_e\()old
#define as_max(a, b) ((a) ^ (((a) ^ (b)) & -as_true((a) < (b))))
@@ -100,7 +102,11 @@
.section .altinstr_replacement, "ax", @progbits
decl_repl(\newinstr1, 1)
+ .ifnes "\newinstr2", "\newinstr1"
decl_repl(\newinstr2, 2)
+ .else
+ clone_repl(2, 1)
+ .endif
.popsection
.endm
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |