|
39 | 39 | #define _ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, CONFIG_k) \ |
40 | 40 | __ALTERNATIVE_CFG old_c, new_c, vendor_id, errata_id, IS_ENABLED(CONFIG_k) |
41 | 41 |
|
| 42 | +.macro __ALTERNATIVE_CFG_2 old_c, new_c_1, vendor_id_1, errata_id_1, enable_1, \ |
| 43 | + new_c_2, vendor_id_2, errata_id_2, enable_2 |
| 44 | +886 : |
| 45 | + \old_c |
| 46 | +887 : |
| 47 | + ALT_NEW_CONTENT \vendor_id_1, \errata_id_1, \enable_1, \new_c_1 |
| 48 | + ALT_NEW_CONTENT \vendor_id_2, \errata_id_2, \enable_2, \new_c_2 |
| 49 | +.endm |
| 50 | + |
| 51 | +#define _ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 52 | + CONFIG_k_1, \ |
| 53 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 54 | + CONFIG_k_2) \ |
| 55 | + __ALTERNATIVE_CFG_2 old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 56 | + IS_ENABLED(CONFIG_k_1), \ |
| 57 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 58 | + IS_ENABLED(CONFIG_k_2) |
| 59 | + |
42 | 60 | #else /* !__ASSEMBLY__ */ |
43 | 61 |
|
44 | 62 | #include <asm/asm.h> |
|
74 | 92 | #define _ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, CONFIG_k) \ |
75 | 93 | __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, IS_ENABLED(CONFIG_k)) |
76 | 94 |
|
| 95 | +#define __ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 96 | + enable_1, \ |
| 97 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 98 | + enable_2) \ |
| 99 | + "886 :\n" \ |
| 100 | + old_c "\n" \ |
| 101 | + "887 :\n" \ |
| 102 | + ALT_NEW_CONTENT(vendor_id_1, errata_id_1, enable_1, new_c_1) \ |
| 103 | + ALT_NEW_CONTENT(vendor_id_2, errata_id_2, enable_2, new_c_2) |
| 104 | + |
| 105 | +#define _ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 106 | + CONFIG_k_1, \ |
| 107 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 108 | + CONFIG_k_2) \ |
| 109 | + __ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 110 | + IS_ENABLED(CONFIG_k_1), \ |
| 111 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 112 | + IS_ENABLED(CONFIG_k_2)) |
| 113 | + |
77 | 114 | #endif /* __ASSEMBLY__ */ |
78 | 115 |
|
79 | 116 | #else /* CONFIG_RISCV_ALTERNATIVE */ |
|
86 | 123 | #define _ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, CONFIG_k) \ |
87 | 124 | __ALTERNATIVE_CFG old_c |
88 | 125 |
|
| 126 | +#define _ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 127 | + CONFIG_k_1, \ |
| 128 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 129 | + CONFIG_k_2) \ |
| 130 | + __ALTERNATIVE_CFG old_c |
| 131 | + |
89 | 132 | #else /* !__ASSEMBLY__ */ |
90 | 133 |
|
91 | 134 | #define __ALTERNATIVE_CFG(old_c) \ |
|
94 | 137 | #define _ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, CONFIG_k) \ |
95 | 138 | __ALTERNATIVE_CFG(old_c) |
96 | 139 |
|
| 140 | +#define _ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, \ |
| 141 | + CONFIG_k_1, \ |
| 142 | + new_c_2, vendor_id_2, errata_id_2, \ |
| 143 | + CONFIG_k_2) \ |
| 144 | + __ALTERNATIVE_CFG(old_c) |
| 145 | + |
97 | 146 | #endif /* __ASSEMBLY__ */ |
98 | 147 | #endif /* CONFIG_RISCV_ALTERNATIVE */ |
99 | 148 |
|
|
119 | 168 | * this case, this vendor can create a new macro ALTERNATIVE_2() based |
120 | 169 | * on the following sample code and then replace ALTERNATIVE() with |
121 | 170 | * ALTERNATIVE_2() to append its customized content. |
122 | | - * |
123 | | - * .macro __ALTERNATIVE_CFG_2 old_c, new_c_1, vendor_id_1, errata_id_1, enable_1, \ |
124 | | - * new_c_2, vendor_id_2, errata_id_2, enable_2 |
125 | | - * 886 : |
126 | | - * \old_c |
127 | | - * 887 : |
128 | | - * ALT_NEW_CONTENT \vendor_id_1, \errata_id_1, \enable_1, \new_c_1 |
129 | | - * ALT_NEW_CONTENT \vendor_id_2, \errata_id_2, \enable_2, \new_c_2 |
130 | | - * .endm |
131 | | - * |
132 | | - * #define _ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, CONFIG_k_1, \ |
133 | | - * new_c_2, vendor_id_2, errata_id_2, CONFIG_k_2) \ |
134 | | - * __ALTERNATIVE_CFG_2 old_c, new_c_1, vendor_id_1, errata_id_1, IS_ENABLED(CONFIG_k_1), \ |
135 | | - * new_c_2, vendor_id_2, errata_id_2, IS_ENABLED(CONFIG_k_2) \ |
136 | | - * |
137 | | - * #define ALTERNATIVE_2(old_content, new_content_1, vendor_id_1, errata_id_1, CONFIG_k_1, \ |
138 | | - * new_content_2, vendor_id_2, errata_id_2, CONFIG_k_2) \ |
139 | | - * _ALTERNATIVE_CFG_2(old_content, new_content_1, vendor_id_1, errata_id_1, CONFIG_k_1, \ |
140 | | - * new_content_2, vendor_id_2, errata_id_2, CONFIG_k_2) |
141 | | - * |
142 | 171 | */ |
| 172 | +#define ALTERNATIVE_2(old_content, new_content_1, vendor_id_1, \ |
| 173 | + errata_id_1, CONFIG_k_1, \ |
| 174 | + new_content_2, vendor_id_2, \ |
| 175 | + errata_id_2, CONFIG_k_2) \ |
| 176 | + _ALTERNATIVE_CFG_2(old_content, new_content_1, vendor_id_1, \ |
| 177 | + errata_id_1, CONFIG_k_1, \ |
| 178 | + new_content_2, vendor_id_2, \ |
| 179 | + errata_id_2, CONFIG_k_2) |
| 180 | + |
143 | 181 | #endif |
0 commit comments