mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/alternatives: mark .altinstructions r/w
Forever since the introduction of the .priv member it has been wrong to
record the section as r/o.
.alt_call_sites, otoh, is legitimately r/o, hence
__alt_call_sites_{start,end}[] would better reflect that.
Fixes: 4008c71d7a ("x86/alt: Support for automatic padding calculations")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger@xenproject.org>
This commit is contained in:
1 parent
769263b124
commit
48728c33e4
3 files changed
+5
-5
No files matched your search
@@ -464,7 +464,7 @@ static unsigned int __initdata alt_todo;
|
||||
static unsigned int __initdata alt_done;
|
||||
|
||||
extern struct alt_instr __alt_instructions[], __alt_instructions_end[];
|
||||
extern struct alt_call __alt_call_sites_start[], __alt_call_sites_end[];
|
||||
extern const struct alt_call __alt_call_sites_start[], __alt_call_sites_end[];
|
||||
|
||||
/*
|
||||
* At boot time, we patch alternatives in NMI context. This means that the
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
.macro ALTERNATIVE oldinstr, newinstr, feature
|
||||
decl_orig(\oldinstr, repl_len(1) - orig_len)
|
||||
|
||||
.pushsection .altinstructions, "a", @progbits
|
||||
.pushsection .altinstructions, "aw", @progbits
|
||||
altinstruction_entry .L\@_orig_s, .L\@_repl_s1, \feature, \
|
||||
orig_len, repl_len(1), pad_len
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
.macro ALTERNATIVE_2 oldinstr, newinstr1, feature1, newinstr2, feature2
|
||||
decl_orig(\oldinstr, as_max(repl_len(1), repl_len(2)) - orig_len)
|
||||
|
||||
.pushsection .altinstructions, "a", @progbits
|
||||
.pushsection .altinstructions, "aw", @progbits
|
||||
|
||||
altinstruction_entry .L\@_orig_s, .L\@_repl_s1, \feature1, \
|
||||
orig_len, repl_len(1), pad_len
|
||||
|
||||
@@ -90,7 +90,7 @@ extern void alternative_instructions(void);
|
||||
/* alternative assembly primitive: */
|
||||
#define ALTERNATIVE(oldinstr, newinstr, feature) \
|
||||
OLDINSTR_1(oldinstr, 1) \
|
||||
".pushsection .altinstructions, \"a\", @progbits\n" \
|
||||
".pushsection .altinstructions, \"aw\", @progbits\n" \
|
||||
ALTINSTR_ENTRY(feature, 1) \
|
||||
".section .discard, \"a\", @progbits\n" \
|
||||
".byte " alt_total_len "\n" /* total_len <= 255 */ \
|
||||
@@ -101,7 +101,7 @@ extern void alternative_instructions(void);
|
||||
|
||||
#define ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2) \
|
||||
OLDINSTR_2(oldinstr, 1, 2) \
|
||||
".pushsection .altinstructions, \"a\", @progbits\n" \
|
||||
".pushsection .altinstructions, \"aw\", @progbits\n" \
|
||||
ALTINSTR_ENTRY(feature1, 1) \
|
||||
ALTINSTR_ENTRY(feature2, 2) \
|
||||
".section .discard, \"a\", @progbits\n" \
|
||||
|
||||