|
29 | 29 |
|
30 | 30 | #ifdef CONFIG_SMP
|
31 | 31 | #define LOCK_PREFIX_HERE \
|
32 |
| - ".section .smp_locks,\"a\"\n" \ |
33 |
| - ".balign 4\n" \ |
34 |
| - ".long 671f - .\n" /* offset */ \ |
35 |
| - ".previous\n" \ |
| 32 | + ".pushsection .smp_locks,\"a\"\n" \ |
| 33 | + ".balign 4\n" \ |
| 34 | + ".long 671f - .\n" /* offset */ \ |
| 35 | + ".popsection\n" \ |
36 | 36 | "671:"
|
37 | 37 |
|
38 | 38 | #define LOCK_PREFIX LOCK_PREFIX_HERE "\n\tlock; "
|
@@ -99,30 +99,30 @@ static inline int alternatives_text_reserved(void *start, void *end)
|
99 | 99 | /* alternative assembly primitive: */
|
100 | 100 | #define ALTERNATIVE(oldinstr, newinstr, feature) \
|
101 | 101 | OLDINSTR(oldinstr) \
|
102 |
| - ".section .altinstructions,\"a\"\n" \ |
| 102 | + ".pushsection .altinstructions,\"a\"\n" \ |
103 | 103 | ALTINSTR_ENTRY(feature, 1) \
|
104 |
| - ".previous\n" \ |
105 |
| - ".section .discard,\"aw\",@progbits\n" \ |
| 104 | + ".popsection\n" \ |
| 105 | + ".pushsection .discard,\"aw\",@progbits\n" \ |
106 | 106 | DISCARD_ENTRY(1) \
|
107 |
| - ".previous\n" \ |
108 |
| - ".section .altinstr_replacement, \"ax\"\n" \ |
| 107 | + ".popsection\n" \ |
| 108 | + ".pushsection .altinstr_replacement, \"ax\"\n" \ |
109 | 109 | ALTINSTR_REPLACEMENT(newinstr, feature, 1) \
|
110 |
| - ".previous" |
| 110 | + ".popsection" |
111 | 111 |
|
112 | 112 | #define ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2)\
|
113 | 113 | OLDINSTR(oldinstr) \
|
114 |
| - ".section .altinstructions,\"a\"\n" \ |
| 114 | + ".pushsection .altinstructions,\"a\"\n" \ |
115 | 115 | ALTINSTR_ENTRY(feature1, 1) \
|
116 | 116 | ALTINSTR_ENTRY(feature2, 2) \
|
117 |
| - ".previous\n" \ |
118 |
| - ".section .discard,\"aw\",@progbits\n" \ |
| 117 | + ".popsection\n" \ |
| 118 | + ".pushsection .discard,\"aw\",@progbits\n" \ |
119 | 119 | DISCARD_ENTRY(1) \
|
120 | 120 | DISCARD_ENTRY(2) \
|
121 |
| - ".previous\n" \ |
122 |
| - ".section .altinstr_replacement, \"ax\"\n" \ |
| 121 | + ".popsection\n" \ |
| 122 | + ".pushsection .altinstr_replacement, \"ax\"\n" \ |
123 | 123 | ALTINSTR_REPLACEMENT(newinstr1, feature1, 1) \
|
124 | 124 | ALTINSTR_REPLACEMENT(newinstr2, feature2, 2) \
|
125 |
| - ".previous" |
| 125 | + ".popsection" |
126 | 126 |
|
127 | 127 | /*
|
128 | 128 | * This must be included *after* the definition of ALTERNATIVE due to
|
|
0 commit comments