summaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/alternative.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/include/asm/alternative.h')
-rw-r--r--arch/arm64/include/asm/alternative.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/arm64/include/asm/alternative.h b/arch/arm64/include/asm/alternative.h
index 20367882226c..b474e9106bc2 100644
--- a/arch/arm64/include/asm/alternative.h
+++ b/arch/arm64/include/asm/alternative.h
@@ -91,11 +91,13 @@ void free_alternatives_memory(void);
* The code that follows this macro will be assembled and linked as
* normal. There are no restrictions on this code.
*/
-.macro alternative_if_not cap
+.macro alternative_if_not cap, enable = 1
+ .if \enable
.pushsection .altinstructions, "a"
altinstruction_entry 661f, 663f, \cap, 662f-661f, 664f-663f
.popsection
661:
+ .endif
.endm
/*
@@ -112,18 +114,22 @@ void free_alternatives_memory(void);
* alternative sequence it is defined in (branches into an
* alternative sequence are not fixed up).
*/
-.macro alternative_else
+.macro alternative_else, enable = 1
+ .if \enable
662: .pushsection .altinstr_replacement, "ax"
663:
+ .endif
.endm
/*
* Complete an alternative code sequence.
*/
-.macro alternative_endif
+.macro alternative_endif, enable = 1
+ .if \enable
664: .popsection
.org . - (664b-663b) + (662b-661b)
.org . - (662b-661b) + (664b-663b)
+ .endif
.endm
#define _ALTERNATIVE_CFG(insn1, insn2, cap, cfg, ...) \