sh: romImage support V2
[linux-2.6.git] / arch / powerpc / lib / feature-fixups-test.S
1 /*
2  * Copyright 2008 Michael Ellerman, IBM Corporation.
3  *
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version
8  * 2 of the License, or (at your option) any later version.
9  */
10
11 #include <asm/feature-fixups.h>
12 #include <asm/ppc_asm.h>
13 #include <asm/synch.h>
14
15         .text
16
17 #define globl(x)                \
18         .globl x;       \
19 x:
20
21 globl(ftr_fixup_test1)
22         or      1,1,1
23         or      2,2,2   /* fixup will nop out this instruction */
24         or      3,3,3
25
26 globl(end_ftr_fixup_test1)
27
28 globl(ftr_fixup_test1_orig)
29         or      1,1,1
30         or      2,2,2
31         or      3,3,3
32
33 globl(ftr_fixup_test1_expected)
34         or      1,1,1
35         nop
36         or      3,3,3
37
38 globl(ftr_fixup_test2)
39         or      1,1,1
40         or      2,2,2   /* fixup will replace this with ftr_fixup_test2_alt */
41         or      3,3,3
42
43 globl(end_ftr_fixup_test2)
44
45 globl(ftr_fixup_test2_orig)
46         or      1,1,1
47         or      2,2,2
48         or      3,3,3
49
50 globl(ftr_fixup_test2_alt)
51         or      31,31,31
52
53 globl(ftr_fixup_test2_expected)
54         or      1,1,1
55         or      31,31,31
56         or      3,3,3
57
58 globl(ftr_fixup_test3)
59         or      1,1,1
60         or      2,2,2   /* fixup will fail to replace this */
61         or      3,3,3
62
63 globl(end_ftr_fixup_test3)
64
65 globl(ftr_fixup_test3_orig)
66         or      1,1,1
67         or      2,2,2
68         or      3,3,3
69
70 globl(ftr_fixup_test3_alt)
71         or      31,31,31
72         or      31,31,31
73
74 globl(ftr_fixup_test4)
75         or      1,1,1
76         or      2,2,2
77         or      2,2,2
78         or      2,2,2
79         or      2,2,2
80         or      3,3,3
81
82 globl(end_ftr_fixup_test4)
83
84 globl(ftr_fixup_test4_expected)
85         or      1,1,1
86         or      31,31,31
87         or      31,31,31
88         nop
89         nop
90         or      3,3,3
91
92 globl(ftr_fixup_test4_orig)
93         or      1,1,1
94         or      2,2,2
95         or      2,2,2
96         or      2,2,2
97         or      2,2,2
98         or      3,3,3
99
100 globl(ftr_fixup_test4_alt)
101         or      31,31,31
102         or      31,31,31
103
104
105 globl(ftr_fixup_test5)
106         or      1,1,1
107 BEGIN_FTR_SECTION
108         or      2,2,2
109         or      2,2,2
110         or      2,2,2
111         or      2,2,2
112         or      2,2,2
113         or      2,2,2
114         or      2,2,2
115 FTR_SECTION_ELSE
116 2:      b       3f
117 3:      or      5,5,5
118         beq     3b
119         b       1f
120         or      6,6,6
121         b       2b
122 1:      bdnz    3b
123 ALT_FTR_SECTION_END(0, 1)
124         or      1,1,1
125
126 globl(end_ftr_fixup_test5)
127
128 globl(ftr_fixup_test5_expected)
129         or      1,1,1
130 2:      b       3f
131 3:      or      5,5,5
132         beq     3b
133         b       1f
134         or      6,6,6
135         b       2b
136 1:      bdnz    3b
137         or      1,1,1
138
139 globl(ftr_fixup_test6)
140 1:      or      1,1,1
141 BEGIN_FTR_SECTION
142         or      5,5,5
143 2:      PPC_LCMPI       r3,0
144         beq     4f
145         blt     2b
146         b       1b
147         b       4f
148 FTR_SECTION_ELSE
149 2:      or      2,2,2
150         PPC_LCMPI       r3,1
151         beq     3f
152         blt     2b
153         b       3f
154         b       1b
155 ALT_FTR_SECTION_END(0, 1)
156 3:      or      1,1,1
157         or      2,2,2
158 4:      or      3,3,3
159
160 globl(end_ftr_fixup_test6)
161
162 globl(ftr_fixup_test6_expected)
163 1:      or      1,1,1
164 2:      or      2,2,2
165         PPC_LCMPI       r3,1
166         beq     3f
167         blt     2b
168         b       3f
169         b       1b
170 2:      or      1,1,1
171         or      2,2,2
172 3:      or      3,3,3
173
174
175 #define MAKE_MACRO_TEST(TYPE)                                           \
176 globl(ftr_fixup_test_ ##TYPE##_macros)                                  \
177         or      1,1,1;                                                  \
178         /* Basic test, this section should all be nop'ed */             \
179 BEGIN_##TYPE##_SECTION                                                  \
180         or      2,2,2;                                                  \
181         or      2,2,2;                                                  \
182         or      2,2,2;                                                  \
183 END_##TYPE##_SECTION(0, 1)                                              \
184         or      1,1,1;                                                  \
185         or      1,1,1;                                                  \
186         /* Basic test, this section should NOT be nop'ed */             \
187 BEGIN_##TYPE##_SECTION                                                  \
188         or      2,2,2;                                                  \
189         or      2,2,2;                                                  \
190         or      2,2,2;                                                  \
191 END_##TYPE##_SECTION(0, 0)                                              \
192         or      1,1,1;                                                  \
193         or      1,1,1;                                                  \
194         /* Nesting test, inner section should be nop'ed */              \
195 BEGIN_##TYPE##_SECTION                                                  \
196         or      2,2,2;                                                  \
197         or      2,2,2;                                                  \
198 BEGIN_##TYPE##_SECTION_NESTED(80)                                       \
199         or      3,3,3;                                                  \
200         or      3,3,3;                                                  \
201 END_##TYPE##_SECTION_NESTED(0, 1, 80)                                   \
202         or      2,2,2;                                                  \
203         or      2,2,2;                                                  \
204 END_##TYPE##_SECTION(0, 0)                                              \
205         or      1,1,1;                                                  \
206         or      1,1,1;                                                  \
207         /* Nesting test, whole section should be nop'ed */              \
208 BEGIN_##TYPE##_SECTION                                                  \
209         or      2,2,2;                                                  \
210         or      2,2,2;                                                  \
211 BEGIN_##TYPE##_SECTION_NESTED(80)                                       \
212         or      3,3,3;                                                  \
213         or      3,3,3;                                                  \
214 END_##TYPE##_SECTION_NESTED(0, 0, 80)                                   \
215         or      2,2,2;                                                  \
216         or      2,2,2;                                                  \
217 END_##TYPE##_SECTION(0, 1)                                              \
218         or      1,1,1;                                                  \
219         or      1,1,1;                                                  \
220         /* Nesting test, none should be nop'ed */                       \
221 BEGIN_##TYPE##_SECTION                                                  \
222         or      2,2,2;                                                  \
223         or      2,2,2;                                                  \
224 BEGIN_##TYPE##_SECTION_NESTED(80)                                       \
225         or      3,3,3;                                                  \
226         or      3,3,3;                                                  \
227 END_##TYPE##_SECTION_NESTED(0, 0, 80)                                   \
228         or      2,2,2;                                                  \
229         or      2,2,2;                                                  \
230 END_##TYPE##_SECTION(0, 0)                                              \
231         or      1,1,1;                                                  \
232         or      1,1,1;                                                  \
233         /* Basic alt section test, default case should be taken */      \
234 BEGIN_##TYPE##_SECTION                                                  \
235         or      3,3,3;                                                  \
236         or      3,3,3;                                                  \
237         or      3,3,3;                                                  \
238 ##TYPE##_SECTION_ELSE                                                   \
239         or      5,5,5;                                                  \
240         or      5,5,5;                                                  \
241 ALT_##TYPE##_SECTION_END(0, 0)                                          \
242         or      1,1,1;                                                  \
243         or      1,1,1;                                                  \
244         /* Basic alt section test, else case should be taken */         \
245 BEGIN_##TYPE##_SECTION                                                  \
246         or      3,3,3;                                                  \
247         or      3,3,3;                                                  \
248         or      3,3,3;                                                  \
249 ##TYPE##_SECTION_ELSE                                                   \
250         or      31,31,31;                                               \
251         or      31,31,31;                                               \
252         or      31,31,31;                                               \
253 ALT_##TYPE##_SECTION_END(0, 1)                                          \
254         or      1,1,1;                                                  \
255         or      1,1,1;                                                  \
256         /* Alt with smaller else case, should be padded with nops */    \
257 BEGIN_##TYPE##_SECTION                                                  \
258         or      3,3,3;                                                  \
259         or      3,3,3;                                                  \
260         or      3,3,3;                                                  \
261 ##TYPE##_SECTION_ELSE                                                   \
262         or      31,31,31;                                               \
263 ALT_##TYPE##_SECTION_END(0, 1)                                          \
264         or      1,1,1;                                                  \
265         or      1,1,1;                                                  \
266         /* Alt section with nested section in default case */           \
267         /* Default case should be taken, with nop'ed inner section */   \
268 BEGIN_##TYPE##_SECTION                                                  \
269         or      3,3,3;                                                  \
270 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
271         or      3,3,3;                                                  \
272         or      3,3,3;                                                  \
273 END_##TYPE##_SECTION_NESTED(0, 1, 95)                                   \
274         or      3,3,3;                                                  \
275 ##TYPE##_SECTION_ELSE                                                   \
276         or      2,2,2;                                                  \
277         or      2,2,2;                                                  \
278 ALT_##TYPE##_SECTION_END(0, 0)                                          \
279         or      1,1,1;                                                  \
280         or      1,1,1;                                                  \
281         /* Alt section with nested section in else, default taken */    \
282 BEGIN_##TYPE##_SECTION                                                  \
283         or      3,3,3;                                                  \
284         or      3,3,3;                                                  \
285         or      3,3,3;                                                  \
286 ##TYPE##_SECTION_ELSE                                                   \
287         or      5,5,5;                                                  \
288 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
289         or      3,3,3;                                                  \
290 END_##TYPE##_SECTION_NESTED(0, 1, 95)                                   \
291         or      5,5,5;                                                  \
292 ALT_##TYPE##_SECTION_END(0, 0)                                          \
293         or      1,1,1;                                                  \
294         or      1,1,1;                                                  \
295         /* Alt section with nested section in else, else taken & nop */ \
296 BEGIN_##TYPE##_SECTION                                                  \
297         or      3,3,3;                                                  \
298         or      3,3,3;                                                  \
299         or      3,3,3;                                                  \
300 ##TYPE##_SECTION_ELSE                                                   \
301         or      5,5,5;                                                  \
302 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
303         or      3,3,3;                                                  \
304 END_##TYPE##_SECTION_NESTED(0, 1, 95)                                   \
305         or      5,5,5;                                                  \
306 ALT_##TYPE##_SECTION_END(0, 1)                                          \
307         or      1,1,1;                                                  \
308         or      1,1,1;                                                  \
309         /* Feature section with nested alt section, default taken */    \
310 BEGIN_##TYPE##_SECTION                                                  \
311         or      2,2,2;                                                  \
312 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
313         or      1,1,1;                                                  \
314 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
315         or      5,5,5;                                                  \
316 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)                               \
317         or      2,2,2;                                                  \
318 END_##TYPE##_SECTION(0, 0)                                              \
319         or      1,1,1;                                                  \
320         or      1,1,1;                                                  \
321         /* Feature section with nested alt section, else taken */       \
322 BEGIN_##TYPE##_SECTION                                                  \
323         or      2,2,2;                                                  \
324 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
325         or      1,1,1;                                                  \
326 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
327         or      5,5,5;                                                  \
328 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
329         or      2,2,2;                                                  \
330 END_##TYPE##_SECTION(0, 0)                                              \
331         or      1,1,1;                                                  \
332         or      1,1,1;                                                  \
333         /* Feature section with nested alt section, all nop'ed */       \
334 BEGIN_##TYPE##_SECTION                                                  \
335         or      2,2,2;                                                  \
336 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
337         or      1,1,1;                                                  \
338 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
339         or      5,5,5;                                                  \
340 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)                               \
341         or      2,2,2;                                                  \
342 END_##TYPE##_SECTION(0, 1)                                              \
343         or      1,1,1;                                                  \
344         or      1,1,1;                                                  \
345         /* Nested alt sections, default with inner default taken */     \
346 BEGIN_##TYPE##_SECTION                                                  \
347         or      2,2,2;                                                  \
348 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
349         or      1,1,1;                                                  \
350 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
351         or      5,5,5;                                                  \
352 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)                               \
353         or      2,2,2;                                                  \
354 ##TYPE##_SECTION_ELSE                                                   \
355         or      31,31,31;                                               \
356 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
357         or      5,5,5;                                                  \
358 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
359         or      1,1,1;                                                  \
360 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)                               \
361         or      31,31,31;                                               \
362 ALT_##TYPE##_SECTION_END(0, 0)                                          \
363         or      1,1,1;                                                  \
364         or      1,1,1;                                                  \
365         /* Nested alt sections, default with inner else taken */        \
366 BEGIN_##TYPE##_SECTION                                                  \
367         or      2,2,2;                                                  \
368 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
369         or      1,1,1;                                                  \
370 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
371         or      5,5,5;                                                  \
372 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
373         or      2,2,2;                                                  \
374 ##TYPE##_SECTION_ELSE                                                   \
375         or      31,31,31;                                               \
376 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
377         or      5,5,5;                                                  \
378 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
379         or      1,1,1;                                                  \
380 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)                               \
381         or      31,31,31;                                               \
382 ALT_##TYPE##_SECTION_END(0, 0)                                          \
383         or      1,1,1;                                                  \
384         or      1,1,1;                                                  \
385         /* Nested alt sections, else with inner default taken */        \
386 BEGIN_##TYPE##_SECTION                                                  \
387         or      2,2,2;                                                  \
388 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
389         or      1,1,1;                                                  \
390 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
391         or      5,5,5;                                                  \
392 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
393         or      2,2,2;                                                  \
394 ##TYPE##_SECTION_ELSE                                                   \
395         or      31,31,31;                                               \
396 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
397         or      5,5,5;                                                  \
398 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
399         or      1,1,1;                                                  \
400 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)                               \
401         or      31,31,31;                                               \
402 ALT_##TYPE##_SECTION_END(0, 1)                                          \
403         or      1,1,1;                                                  \
404         or      1,1,1;                                                  \
405         /* Nested alt sections, else with inner else taken */           \
406 BEGIN_##TYPE##_SECTION                                                  \
407         or      2,2,2;                                                  \
408 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
409         or      1,1,1;                                                  \
410 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
411         or      5,5,5;                                                  \
412 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
413         or      2,2,2;                                                  \
414 ##TYPE##_SECTION_ELSE                                                   \
415         or      31,31,31;                                               \
416 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
417         or      5,5,5;                                                  \
418 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
419         or      1,1,1;                                                  \
420 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)                               \
421         or      31,31,31;                                               \
422 ALT_##TYPE##_SECTION_END(0, 1)                                          \
423         or      1,1,1;                                                  \
424         or      1,1,1;                                                  \
425         /* Nested alt sections, else can have large else case */        \
426 BEGIN_##TYPE##_SECTION                                                  \
427         or      2,2,2;                                                  \
428         or      2,2,2;                                                  \
429         or      2,2,2;                                                  \
430         or      2,2,2;                                                  \
431 ##TYPE##_SECTION_ELSE                                                   \
432 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
433         or      5,5,5;                                                  \
434         or      5,5,5;                                                  \
435         or      5,5,5;                                                  \
436         or      5,5,5;                                                  \
437 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
438         or      1,1,1;                                                  \
439         or      1,1,1;                                                  \
440         or      1,1,1;                                                  \
441         or      1,1,1;                                                  \
442 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)                               \
443 ALT_##TYPE##_SECTION_END(0, 1)                                          \
444         or      1,1,1;                                                  \
445         or      1,1,1;
446
447 #define MAKE_MACRO_TEST_EXPECTED(TYPE)                                  \
448 globl(ftr_fixup_test_ ##TYPE##_macros_expected)                         \
449         or      1,1,1;                                                  \
450         /* Basic test, this section should all be nop'ed */             \
451 /* BEGIN_##TYPE##_SECTION */                                            \
452         nop;                                                            \
453         nop;                                                            \
454         nop;                                                            \
455 /* END_##TYPE##_SECTION(0, 1) */                                        \
456         or      1,1,1;                                                  \
457         or      1,1,1;                                                  \
458         /* Basic test, this section should NOT be nop'ed */             \
459 /* BEGIN_##TYPE##_SECTION */                                            \
460         or      2,2,2;                                                  \
461         or      2,2,2;                                                  \
462         or      2,2,2;                                                  \
463 /* END_##TYPE##_SECTION(0, 0) */                                        \
464         or      1,1,1;                                                  \
465         or      1,1,1;                                                  \
466         /* Nesting test, inner section should be nop'ed */              \
467 /* BEGIN_##TYPE##_SECTION */                                            \
468         or      2,2,2;                                                  \
469         or      2,2,2;                                                  \
470 /* BEGIN_##TYPE##_SECTION_NESTED(80) */                                 \
471         nop;                                                            \
472         nop;                                                            \
473 /* END_##TYPE##_SECTION_NESTED(0, 1, 80) */                             \
474         or      2,2,2;                                                  \
475         or      2,2,2;                                                  \
476 /* END_##TYPE##_SECTION(0, 0) */                                        \
477         or      1,1,1;                                                  \
478         or      1,1,1;                                                  \
479         /* Nesting test, whole section should be nop'ed */              \
480         /* NB. inner section is not nop'ed, but then entire outer is */ \
481 /* BEGIN_##TYPE##_SECTION */                                            \
482         nop;                                                            \
483         nop;                                                            \
484 /* BEGIN_##TYPE##_SECTION_NESTED(80) */                                 \
485         nop;                                                            \
486         nop;                                                            \
487 /* END_##TYPE##_SECTION_NESTED(0, 0, 80) */                             \
488         nop;                                                            \
489         nop;                                                            \
490 /* END_##TYPE##_SECTION(0, 1) */                                        \
491         or      1,1,1;                                                  \
492         or      1,1,1;                                                  \
493         /* Nesting test, none should be nop'ed */                       \
494 /* BEGIN_##TYPE##_SECTION */                                            \
495         or      2,2,2;                                                  \
496         or      2,2,2;                                                  \
497 /* BEGIN_##TYPE##_SECTION_NESTED(80) */                                 \
498         or      3,3,3;                                                  \
499         or      3,3,3;                                                  \
500 /* END_##TYPE##_SECTION_NESTED(0, 0, 80) */                             \
501         or      2,2,2;                                                  \
502         or      2,2,2;                                                  \
503 /* END_##TYPE##_SECTION(0, 0) */                                        \
504         or      1,1,1;                                                  \
505         or      1,1,1;                                                  \
506         /* Basic alt section test, default case should be taken */      \
507 /* BEGIN_##TYPE##_SECTION */                                            \
508         or      3,3,3;                                                  \
509         or      3,3,3;                                                  \
510         or      3,3,3;                                                  \
511 /* ##TYPE##_SECTION_ELSE */                                             \
512         /* or   5,5,5; */                                               \
513         /* or   5,5,5; */                                               \
514 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
515         or      1,1,1;                                                  \
516         or      1,1,1;                                                  \
517         /* Basic alt section test, else case should be taken */         \
518 /* BEGIN_##TYPE##_SECTION */                                            \
519         /* or   3,3,3; */                                               \
520         /* or   3,3,3; */                                               \
521         /* or   3,3,3; */                                               \
522 /* ##TYPE##_SECTION_ELSE */                                             \
523         or      31,31,31;                                               \
524         or      31,31,31;                                               \
525         or      31,31,31;                                               \
526 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
527         or      1,1,1;                                                  \
528         or      1,1,1;                                                  \
529         /* Alt with smaller else case, should be padded with nops */    \
530 /* BEGIN_##TYPE##_SECTION */                                            \
531         /* or   3,3,3; */                                               \
532         /* or   3,3,3; */                                               \
533         /* or   3,3,3; */                                               \
534 /* ##TYPE##_SECTION_ELSE */                                             \
535         or      31,31,31;                                               \
536         nop;                                                            \
537         nop;                                                            \
538 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
539         or      1,1,1;                                                  \
540         or      1,1,1;                                                  \
541         /* Alt section with nested section in default case */           \
542         /* Default case should be taken, with nop'ed inner section */   \
543 /* BEGIN_##TYPE##_SECTION */                                            \
544         or      3,3,3;                                                  \
545 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
546         nop;                                                            \
547         nop;                                                            \
548 /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */                             \
549         or      3,3,3;                                                  \
550 /* ##TYPE##_SECTION_ELSE */                                             \
551         /* or   2,2,2; */                                               \
552         /* or   2,2,2; */                                               \
553 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
554         or      1,1,1;                                                  \
555         or      1,1,1;                                                  \
556         /* Alt section with nested section in else, default taken */    \
557 /* BEGIN_##TYPE##_SECTION */                                            \
558         or      3,3,3;                                                  \
559         or      3,3,3;                                                  \
560         or      3,3,3;                                                  \
561 /* ##TYPE##_SECTION_ELSE */                                             \
562         /* or   5,5,5; */                                               \
563 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
564         /* or   3,3,3; */                                               \
565 /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */                             \
566         /* or   5,5,5; */                                               \
567 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
568         or      1,1,1;                                                  \
569         or      1,1,1;                                                  \
570         /* Alt section with nested section in else, else taken & nop */ \
571 /* BEGIN_##TYPE##_SECTION */                                            \
572         /* or   3,3,3; */                                               \
573         /* or   3,3,3; */                                               \
574         /* or   3,3,3; */                                               \
575 /* ##TYPE##_SECTION_ELSE */                                             \
576         or      5,5,5;                                                  \
577 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
578         nop;                                                            \
579 /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */                             \
580         or      5,5,5;                                                  \
581 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
582         or      1,1,1;                                                  \
583         or      1,1,1;                                                  \
584         /* Feature section with nested alt section, default taken */    \
585 /* BEGIN_##TYPE##_SECTION */                                            \
586         or      2,2,2;                                                  \
587 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
588         or      1,1,1;                                                  \
589 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
590         /* or   5,5,5; */                                               \
591 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */                         \
592         or      2,2,2;                                                  \
593 /* END_##TYPE##_SECTION(0, 0) */                                        \
594         or      1,1,1;                                                  \
595         or      1,1,1;                                                  \
596         /* Feature section with nested alt section, else taken */       \
597 /* BEGIN_##TYPE##_SECTION */                                            \
598         or      2,2,2;                                                  \
599 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
600         /* or   1,1,1; */                                               \
601 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
602         or      5,5,5;                                                  \
603 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
604         or      2,2,2;                                                  \
605 /* END_##TYPE##_SECTION(0, 0) */                                        \
606         or      1,1,1;                                                  \
607         or      1,1,1;                                                  \
608         /* Feature section with nested alt section, all nop'ed */       \
609 /* BEGIN_##TYPE##_SECTION */                                            \
610         nop;                                                            \
611 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
612         nop;                                                            \
613 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
614         /* or   5,5,5; */                                               \
615 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */                         \
616         nop;                                                            \
617 /* END_##TYPE##_SECTION(0, 1) */                                        \
618         or      1,1,1;                                                  \
619         or      1,1,1;                                                  \
620         /* Nested alt sections, default with inner default taken */     \
621 /* BEGIN_##TYPE##_SECTION */                                            \
622         or      2,2,2;                                                  \
623 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
624         or      1,1,1;                                                  \
625 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
626         /* or   5,5,5; */                                               \
627 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */                         \
628         or      2,2,2;                                                  \
629 /* ##TYPE##_SECTION_ELSE */                                             \
630         /* or   31,31,31; */                                            \
631 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
632         /* or   5,5,5; */                                               \
633 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
634         /* or   1,1,1; */                                               \
635 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */                         \
636         /* or   31,31,31; */                                            \
637 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
638         or      1,1,1;                                                  \
639         or      1,1,1;                                                  \
640         /* Nested alt sections, default with inner else taken */        \
641 /* BEGIN_##TYPE##_SECTION */                                            \
642         or      2,2,2;                                                  \
643 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
644         /* or   1,1,1; */                                               \
645 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
646         or      5,5,5;                                                  \
647 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
648         or      2,2,2;                                                  \
649 /* ##TYPE##_SECTION_ELSE */                                             \
650         /* or   31,31,31; */                                            \
651 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
652         /* or   5,5,5; */                                               \
653 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
654         /* or   1,1,1; */                                               \
655 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */                         \
656         /* or   31,31,31; */                                            \
657 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
658         or      1,1,1;                                                  \
659         or      1,1,1;                                                  \
660         /* Nested alt sections, else with inner default taken */        \
661 /* BEGIN_##TYPE##_SECTION */                                            \
662         /* or   2,2,2; */                                               \
663 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
664         /* or   1,1,1; */                                               \
665 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
666         /* or   5,5,5; */                                               \
667 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
668         /* or   2,2,2; */                                               \
669 /* ##TYPE##_SECTION_ELSE */                                             \
670         or      31,31,31;                                               \
671 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
672         or      5,5,5;                                                  \
673 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
674         /* or   1,1,1; */                                               \
675 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */                         \
676         or      31,31,31;                                               \
677 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
678         or      1,1,1;                                                  \
679         or      1,1,1;                                                  \
680         /* Nested alt sections, else with inner else taken */           \
681 /* BEGIN_##TYPE##_SECTION */                                            \
682         /* or   2,2,2; */                                               \
683 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
684         /* or   1,1,1; */                                               \
685 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
686         /* or   5,5,5; */                                               \
687 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
688         /* or   2,2,2; */                                               \
689 /* ##TYPE##_SECTION_ELSE */                                             \
690         or      31,31,31;                                               \
691 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
692         /* or   5,5,5; */                                               \
693 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
694         or      1,1,1;                                                  \
695 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */                         \
696         or      31,31,31;                                               \
697 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
698         or      1,1,1;                                                  \
699         or      1,1,1;                                                  \
700         /* Nested alt sections, else can have large else case */        \
701 /* BEGIN_##TYPE##_SECTION */                                            \
702         /* or   2,2,2; */                                               \
703         /* or   2,2,2; */                                               \
704         /* or   2,2,2; */                                               \
705         /* or   2,2,2; */                                               \
706 /* ##TYPE##_SECTION_ELSE */                                             \
707 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
708         /* or   5,5,5; */                                               \
709         /* or   5,5,5; */                                               \
710         /* or   5,5,5; */                                               \
711         /* or   5,5,5; */                                               \
712 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
713         or      1,1,1;                                                  \
714         or      1,1,1;                                                  \
715         or      1,1,1;                                                  \
716         or      1,1,1;                                                  \
717 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */                         \
718 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
719         or      1,1,1;                                                  \
720         or      1,1,1;
721
722 MAKE_MACRO_TEST(FTR);
723 MAKE_MACRO_TEST_EXPECTED(FTR);
724
725 #ifdef CONFIG_PPC64
726 MAKE_MACRO_TEST(FW_FTR);
727 MAKE_MACRO_TEST_EXPECTED(FW_FTR);
728 #endif
729
730 globl(lwsync_fixup_test)
731 1:      or      1,1,1
732         LWSYNC
733 globl(end_lwsync_fixup_test)
734
735 globl(lwsync_fixup_test_expected_LWSYNC)
736 1:      or      1,1,1
737         lwsync
738
739 globl(lwsync_fixup_test_expected_SYNC)
740 1:      or      1,1,1
741         sync
742