xref: /openbmc/linux/arch/powerpc/lib/feature-fixups-test.S (revision ec0c464cdbf38bf6ddabec8bfa595bd421cab203)
1362e7701SMichael Ellerman/*
2362e7701SMichael Ellerman * Copyright 2008 Michael Ellerman, IBM Corporation.
3362e7701SMichael Ellerman *
4362e7701SMichael Ellerman *
5362e7701SMichael Ellerman * This program is free software; you can redistribute it and/or
6362e7701SMichael Ellerman * modify it under the terms of the GNU General Public License
7362e7701SMichael Ellerman * as published by the Free Software Foundation; either version
8362e7701SMichael Ellerman * 2 of the License, or (at your option) any later version.
9362e7701SMichael Ellerman */
10362e7701SMichael Ellerman
11362e7701SMichael Ellerman#include <asm/feature-fixups.h>
12362e7701SMichael Ellerman#include <asm/ppc_asm.h>
132d1b2027SKumar Gala#include <asm/synch.h>
14*ec0c464cSChristophe Leroy#include <asm/asm-compat.h>
15362e7701SMichael Ellerman
16362e7701SMichael Ellerman	.text
17362e7701SMichael Ellerman
18362e7701SMichael Ellerman#define globl(x)		\
19362e7701SMichael Ellerman	.globl x;	\
20362e7701SMichael Ellermanx:
21362e7701SMichael Ellerman
22362e7701SMichael Ellermanglobl(ftr_fixup_test1)
23362e7701SMichael Ellerman	or	1,1,1
24362e7701SMichael Ellerman	or	2,2,2	/* fixup will nop out this instruction */
25362e7701SMichael Ellerman	or	3,3,3
26362e7701SMichael Ellerman
27362e7701SMichael Ellermanglobl(end_ftr_fixup_test1)
28362e7701SMichael Ellerman
29362e7701SMichael Ellermanglobl(ftr_fixup_test1_orig)
30362e7701SMichael Ellerman	or	1,1,1
31362e7701SMichael Ellerman	or	2,2,2
32362e7701SMichael Ellerman	or	3,3,3
33362e7701SMichael Ellerman
34362e7701SMichael Ellermanglobl(ftr_fixup_test1_expected)
35362e7701SMichael Ellerman	or	1,1,1
36362e7701SMichael Ellerman	nop
37362e7701SMichael Ellerman	or	3,3,3
38362e7701SMichael Ellerman
39362e7701SMichael Ellermanglobl(ftr_fixup_test2)
40362e7701SMichael Ellerman	or	1,1,1
41362e7701SMichael Ellerman	or	2,2,2	/* fixup will replace this with ftr_fixup_test2_alt */
42362e7701SMichael Ellerman	or	3,3,3
43362e7701SMichael Ellerman
44362e7701SMichael Ellermanglobl(end_ftr_fixup_test2)
45362e7701SMichael Ellerman
46362e7701SMichael Ellermanglobl(ftr_fixup_test2_orig)
47362e7701SMichael Ellerman	or	1,1,1
48362e7701SMichael Ellerman	or	2,2,2
49362e7701SMichael Ellerman	or	3,3,3
50362e7701SMichael Ellerman
51362e7701SMichael Ellermanglobl(ftr_fixup_test2_alt)
52362e7701SMichael Ellerman	or	31,31,31
53362e7701SMichael Ellerman
54362e7701SMichael Ellermanglobl(ftr_fixup_test2_expected)
55362e7701SMichael Ellerman	or	1,1,1
56362e7701SMichael Ellerman	or	31,31,31
57362e7701SMichael Ellerman	or	3,3,3
58362e7701SMichael Ellerman
59362e7701SMichael Ellermanglobl(ftr_fixup_test3)
60362e7701SMichael Ellerman	or	1,1,1
61362e7701SMichael Ellerman	or	2,2,2	/* fixup will fail to replace this */
62362e7701SMichael Ellerman	or	3,3,3
63362e7701SMichael Ellerman
64362e7701SMichael Ellermanglobl(end_ftr_fixup_test3)
65362e7701SMichael Ellerman
66362e7701SMichael Ellermanglobl(ftr_fixup_test3_orig)
67362e7701SMichael Ellerman	or	1,1,1
68362e7701SMichael Ellerman	or	2,2,2
69362e7701SMichael Ellerman	or	3,3,3
70362e7701SMichael Ellerman
71362e7701SMichael Ellermanglobl(ftr_fixup_test3_alt)
72362e7701SMichael Ellerman	or	31,31,31
73362e7701SMichael Ellerman	or	31,31,31
74362e7701SMichael Ellerman
75362e7701SMichael Ellermanglobl(ftr_fixup_test4)
76362e7701SMichael Ellerman	or	1,1,1
77362e7701SMichael Ellerman	or	2,2,2
78362e7701SMichael Ellerman	or	2,2,2
79362e7701SMichael Ellerman	or	2,2,2
80362e7701SMichael Ellerman	or	2,2,2
81362e7701SMichael Ellerman	or	3,3,3
82362e7701SMichael Ellerman
83362e7701SMichael Ellermanglobl(end_ftr_fixup_test4)
84362e7701SMichael Ellerman
85362e7701SMichael Ellermanglobl(ftr_fixup_test4_expected)
86362e7701SMichael Ellerman	or	1,1,1
87362e7701SMichael Ellerman	or	31,31,31
88362e7701SMichael Ellerman	or	31,31,31
89362e7701SMichael Ellerman	nop
90362e7701SMichael Ellerman	nop
91362e7701SMichael Ellerman	or	3,3,3
92362e7701SMichael Ellerman
93362e7701SMichael Ellermanglobl(ftr_fixup_test4_orig)
94362e7701SMichael Ellerman	or	1,1,1
95362e7701SMichael Ellerman	or	2,2,2
96362e7701SMichael Ellerman	or	2,2,2
97362e7701SMichael Ellerman	or	2,2,2
98362e7701SMichael Ellerman	or	2,2,2
99362e7701SMichael Ellerman	or	3,3,3
100362e7701SMichael Ellerman
101362e7701SMichael Ellermanglobl(ftr_fixup_test4_alt)
102362e7701SMichael Ellerman	or	31,31,31
103362e7701SMichael Ellerman	or	31,31,31
104362e7701SMichael Ellerman
105362e7701SMichael Ellerman
106362e7701SMichael Ellermanglobl(ftr_fixup_test5)
107362e7701SMichael Ellerman	or	1,1,1
108362e7701SMichael EllermanBEGIN_FTR_SECTION
109362e7701SMichael Ellerman	or	2,2,2
110362e7701SMichael Ellerman	or	2,2,2
111362e7701SMichael Ellerman	or	2,2,2
112362e7701SMichael Ellerman	or	2,2,2
113362e7701SMichael Ellerman	or	2,2,2
114362e7701SMichael Ellerman	or	2,2,2
115362e7701SMichael Ellerman	or	2,2,2
116362e7701SMichael EllermanFTR_SECTION_ELSE
117362e7701SMichael Ellerman2:	b	3f
118362e7701SMichael Ellerman3:	or	5,5,5
119362e7701SMichael Ellerman	beq	3b
120362e7701SMichael Ellerman	b	1f
121362e7701SMichael Ellerman	or	6,6,6
122362e7701SMichael Ellerman	b	2b
123362e7701SMichael Ellerman1:	bdnz	3b
124362e7701SMichael EllermanALT_FTR_SECTION_END(0, 1)
125362e7701SMichael Ellerman	or	1,1,1
126362e7701SMichael Ellerman
127362e7701SMichael Ellermanglobl(end_ftr_fixup_test5)
128362e7701SMichael Ellerman
129362e7701SMichael Ellermanglobl(ftr_fixup_test5_expected)
130362e7701SMichael Ellerman	or	1,1,1
131362e7701SMichael Ellerman2:	b	3f
132362e7701SMichael Ellerman3:	or	5,5,5
133362e7701SMichael Ellerman	beq	3b
134362e7701SMichael Ellerman	b	1f
135362e7701SMichael Ellerman	or	6,6,6
136362e7701SMichael Ellerman	b	2b
137362e7701SMichael Ellerman1:	bdnz	3b
138362e7701SMichael Ellerman	or	1,1,1
139362e7701SMichael Ellerman
140362e7701SMichael Ellermanglobl(ftr_fixup_test6)
141362e7701SMichael Ellerman1:	or	1,1,1
142362e7701SMichael EllermanBEGIN_FTR_SECTION
143362e7701SMichael Ellerman	or	5,5,5
1445888da18SKumar Gala2:	PPC_LCMPI	r3,0
145362e7701SMichael Ellerman	beq	4f
146362e7701SMichael Ellerman	blt	2b
147362e7701SMichael Ellerman	b	1b
148362e7701SMichael Ellerman	b	4f
149362e7701SMichael EllermanFTR_SECTION_ELSE
150362e7701SMichael Ellerman2:	or	2,2,2
1515888da18SKumar Gala	PPC_LCMPI	r3,1
152362e7701SMichael Ellerman	beq	3f
153362e7701SMichael Ellerman	blt	2b
154362e7701SMichael Ellerman	b	3f
155362e7701SMichael Ellerman	b	1b
156362e7701SMichael EllermanALT_FTR_SECTION_END(0, 1)
157362e7701SMichael Ellerman3:	or	1,1,1
158362e7701SMichael Ellerman	or	2,2,2
159362e7701SMichael Ellerman4:	or	3,3,3
160362e7701SMichael Ellerman
161362e7701SMichael Ellermanglobl(end_ftr_fixup_test6)
162362e7701SMichael Ellerman
163362e7701SMichael Ellermanglobl(ftr_fixup_test6_expected)
164362e7701SMichael Ellerman1:	or	1,1,1
165362e7701SMichael Ellerman2:	or	2,2,2
1665888da18SKumar Gala	PPC_LCMPI	r3,1
167362e7701SMichael Ellerman	beq	3f
168362e7701SMichael Ellerman	blt	2b
169362e7701SMichael Ellerman	b	3f
170362e7701SMichael Ellerman	b	1b
17132810d91SMichael Ellerman3:	or	1,1,1
172362e7701SMichael Ellerman	or	2,2,2
17332810d91SMichael Ellerman	or	3,3,3
174362e7701SMichael Ellerman
1756158faedSMichael Ellermanglobl(ftr_fixup_test7)
1766158faedSMichael Ellerman	or	1,1,1
1776158faedSMichael EllermanBEGIN_FTR_SECTION
1786158faedSMichael Ellerman	or	2,2,2
1796158faedSMichael Ellerman	or	2,2,2
1806158faedSMichael Ellerman	or	2,2,2
1816158faedSMichael Ellerman	or	2,2,2
1826158faedSMichael Ellerman	or	2,2,2
1836158faedSMichael Ellerman	or	2,2,2
1846158faedSMichael Ellerman	or	2,2,2
1856158faedSMichael EllermanFTR_SECTION_ELSE
1866158faedSMichael Ellerman2:	b	3f
1876158faedSMichael Ellerman3:	or	5,5,5
1886158faedSMichael Ellerman	beq	3b
1896158faedSMichael Ellerman	b	1f
1906158faedSMichael Ellerman	or	6,6,6
1916158faedSMichael Ellerman	b	2b
1926158faedSMichael Ellerman	bdnz	3b
1936158faedSMichael Ellerman1:
1946158faedSMichael EllermanALT_FTR_SECTION_END(0, 1)
1956158faedSMichael Ellerman	or	1,1,1
1966158faedSMichael Ellerman	or	1,1,1
1976158faedSMichael Ellerman
1986158faedSMichael Ellermanglobl(end_ftr_fixup_test7)
1996158faedSMichael Ellerman	nop
2006158faedSMichael Ellerman
2016158faedSMichael Ellermanglobl(ftr_fixup_test7_expected)
2026158faedSMichael Ellerman	or	1,1,1
2036158faedSMichael Ellerman2:	b	3f
2046158faedSMichael Ellerman3:	or	5,5,5
2056158faedSMichael Ellerman	beq	3b
2066158faedSMichael Ellerman	b	1f
2076158faedSMichael Ellerman	or	6,6,6
2086158faedSMichael Ellerman	b	2b
2096158faedSMichael Ellerman	bdnz	3b
2106158faedSMichael Ellerman1:	or	1,1,1
211362e7701SMichael Ellerman
212c0337288SMichael Ellerman#if 0
213c0337288SMichael Ellerman/* Test that if we have a larger else case the assembler spots it and
214c0337288SMichael Ellerman * reports an error. #if 0'ed so as not to break the build normally.
215c0337288SMichael Ellerman */
216b58e7987SMichael Ellermanftr_fixup_test_too_big:
217c0337288SMichael Ellerman	or	1,1,1
218c0337288SMichael EllermanBEGIN_FTR_SECTION
219c0337288SMichael Ellerman	or	2,2,2
220c0337288SMichael Ellerman	or	2,2,2
221c0337288SMichael Ellerman	or	2,2,2
222c0337288SMichael EllermanFTR_SECTION_ELSE
223c0337288SMichael Ellerman	or	3,3,3
224c0337288SMichael Ellerman	or	3,3,3
225c0337288SMichael Ellerman	or	3,3,3
226c0337288SMichael Ellerman	or	3,3,3
227c0337288SMichael EllermanALT_FTR_SECTION_END(0, 1)
228c0337288SMichael Ellerman	or	1,1,1
229c0337288SMichael Ellerman#endif
230c0337288SMichael Ellerman
231362e7701SMichael Ellerman#define	MAKE_MACRO_TEST(TYPE)						\
232362e7701SMichael Ellermanglobl(ftr_fixup_test_ ##TYPE##_macros)					\
233362e7701SMichael Ellerman	or	1,1,1;							\
234362e7701SMichael Ellerman	/* Basic test, this section should all be nop'ed */		\
235362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
236362e7701SMichael Ellerman	or	2,2,2;							\
237362e7701SMichael Ellerman	or	2,2,2;							\
238362e7701SMichael Ellerman	or	2,2,2;							\
239362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 1)						\
240362e7701SMichael Ellerman	or	1,1,1;							\
241362e7701SMichael Ellerman	or	1,1,1;							\
242362e7701SMichael Ellerman	/* Basic test, this section should NOT be nop'ed */		\
243362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
244362e7701SMichael Ellerman	or	2,2,2;							\
245362e7701SMichael Ellerman	or	2,2,2;							\
246362e7701SMichael Ellerman	or	2,2,2;							\
247362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 0)						\
248362e7701SMichael Ellerman	or	1,1,1;							\
249362e7701SMichael Ellerman	or	1,1,1;							\
250362e7701SMichael Ellerman	/* Nesting test, inner section should be nop'ed */		\
251362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
252362e7701SMichael Ellerman	or	2,2,2;							\
253362e7701SMichael Ellerman	or	2,2,2;							\
254362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(80)					\
255362e7701SMichael Ellerman	or	3,3,3;							\
256362e7701SMichael Ellerman	or	3,3,3;							\
257362e7701SMichael EllermanEND_##TYPE##_SECTION_NESTED(0, 1, 80)					\
258362e7701SMichael Ellerman	or	2,2,2;							\
259362e7701SMichael Ellerman	or	2,2,2;							\
260362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 0)						\
261362e7701SMichael Ellerman	or	1,1,1;							\
262362e7701SMichael Ellerman	or	1,1,1;							\
263362e7701SMichael Ellerman	/* Nesting test, whole section should be nop'ed */		\
264362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
265362e7701SMichael Ellerman	or	2,2,2;							\
266362e7701SMichael Ellerman	or	2,2,2;							\
267362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(80)					\
268362e7701SMichael Ellerman	or	3,3,3;							\
269362e7701SMichael Ellerman	or	3,3,3;							\
270362e7701SMichael EllermanEND_##TYPE##_SECTION_NESTED(0, 0, 80)					\
271362e7701SMichael Ellerman	or	2,2,2;							\
272362e7701SMichael Ellerman	or	2,2,2;							\
273362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 1)						\
274362e7701SMichael Ellerman	or	1,1,1;							\
275362e7701SMichael Ellerman	or	1,1,1;							\
276362e7701SMichael Ellerman	/* Nesting test, none should be nop'ed */			\
277362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
278362e7701SMichael Ellerman	or	2,2,2;							\
279362e7701SMichael Ellerman	or	2,2,2;							\
280362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(80)					\
281362e7701SMichael Ellerman	or	3,3,3;							\
282362e7701SMichael Ellerman	or	3,3,3;							\
283362e7701SMichael EllermanEND_##TYPE##_SECTION_NESTED(0, 0, 80)					\
284362e7701SMichael Ellerman	or	2,2,2;							\
285362e7701SMichael Ellerman	or	2,2,2;							\
286362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 0)						\
287362e7701SMichael Ellerman	or	1,1,1;							\
288362e7701SMichael Ellerman	or	1,1,1;							\
289362e7701SMichael Ellerman	/* Basic alt section test, default case should be taken */	\
290362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
291362e7701SMichael Ellerman	or	3,3,3;							\
292362e7701SMichael Ellerman	or	3,3,3;							\
293362e7701SMichael Ellerman	or	3,3,3;							\
294362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
295362e7701SMichael Ellerman	or	5,5,5;							\
296362e7701SMichael Ellerman	or	5,5,5;							\
297362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 0)						\
298362e7701SMichael Ellerman	or	1,1,1;							\
299362e7701SMichael Ellerman	or	1,1,1;							\
300362e7701SMichael Ellerman	/* Basic alt section test, else case should be taken */		\
301362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
302362e7701SMichael Ellerman	or	3,3,3;							\
303362e7701SMichael Ellerman	or	3,3,3;							\
304362e7701SMichael Ellerman	or	3,3,3;							\
305362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
306362e7701SMichael Ellerman	or	31,31,31;						\
307362e7701SMichael Ellerman	or	31,31,31;						\
308362e7701SMichael Ellerman	or	31,31,31;						\
309362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 1)						\
310362e7701SMichael Ellerman	or	1,1,1;							\
311362e7701SMichael Ellerman	or	1,1,1;							\
312362e7701SMichael Ellerman	/* Alt with smaller else case, should be padded with nops */	\
313362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
314362e7701SMichael Ellerman	or	3,3,3;							\
315362e7701SMichael Ellerman	or	3,3,3;							\
316362e7701SMichael Ellerman	or	3,3,3;							\
317362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
318362e7701SMichael Ellerman	or	31,31,31;						\
319362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 1)						\
320362e7701SMichael Ellerman	or	1,1,1;							\
321362e7701SMichael Ellerman	or	1,1,1;							\
322362e7701SMichael Ellerman	/* Alt section with nested section in default case */		\
323362e7701SMichael Ellerman	/* Default case should be taken, with nop'ed inner section */	\
324362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
325362e7701SMichael Ellerman	or	3,3,3;							\
326362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
327362e7701SMichael Ellerman	or	3,3,3;							\
328362e7701SMichael Ellerman	or	3,3,3;							\
329362e7701SMichael EllermanEND_##TYPE##_SECTION_NESTED(0, 1, 95)					\
330362e7701SMichael Ellerman	or	3,3,3;							\
331362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
332362e7701SMichael Ellerman	or	2,2,2;							\
333362e7701SMichael Ellerman	or	2,2,2;							\
334362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 0)						\
335362e7701SMichael Ellerman	or	1,1,1;							\
336362e7701SMichael Ellerman	or	1,1,1;							\
337362e7701SMichael Ellerman	/* Alt section with nested section in else, default taken */	\
338362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
339362e7701SMichael Ellerman	or	3,3,3;							\
340362e7701SMichael Ellerman	or	3,3,3;							\
341362e7701SMichael Ellerman	or	3,3,3;							\
342362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
343362e7701SMichael Ellerman	or	5,5,5;							\
344362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
345362e7701SMichael Ellerman	or	3,3,3;							\
346362e7701SMichael EllermanEND_##TYPE##_SECTION_NESTED(0, 1, 95)					\
347362e7701SMichael Ellerman	or	5,5,5;							\
348362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 0)						\
349362e7701SMichael Ellerman	or	1,1,1;							\
350362e7701SMichael Ellerman	or	1,1,1;							\
351362e7701SMichael Ellerman	/* Alt section with nested section in else, else taken & nop */	\
352362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
353362e7701SMichael Ellerman	or	3,3,3;							\
354362e7701SMichael Ellerman	or	3,3,3;							\
355362e7701SMichael Ellerman	or	3,3,3;							\
356362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
357362e7701SMichael Ellerman	or	5,5,5;							\
358362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
359362e7701SMichael Ellerman	or	3,3,3;							\
360362e7701SMichael EllermanEND_##TYPE##_SECTION_NESTED(0, 1, 95)					\
361362e7701SMichael Ellerman	or	5,5,5;							\
362362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 1)						\
363362e7701SMichael Ellerman	or	1,1,1;							\
364362e7701SMichael Ellerman	or	1,1,1;							\
365362e7701SMichael Ellerman	/* Feature section with nested alt section, default taken */	\
366362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
367362e7701SMichael Ellerman	or	2,2,2;							\
368362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
369362e7701SMichael Ellerman	or	1,1,1;							\
370362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
371362e7701SMichael Ellerman	or	5,5,5;							\
372362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
373362e7701SMichael Ellerman	or	2,2,2;							\
374362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 0)						\
375362e7701SMichael Ellerman	or	1,1,1;							\
376362e7701SMichael Ellerman	or	1,1,1;							\
377362e7701SMichael Ellerman	/* Feature section with nested alt section, else taken */	\
378362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
379362e7701SMichael Ellerman	or	2,2,2;							\
380362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
381362e7701SMichael Ellerman	or	1,1,1;							\
382362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
383362e7701SMichael Ellerman	or	5,5,5;							\
384362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
385362e7701SMichael Ellerman	or	2,2,2;							\
386362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 0)						\
387362e7701SMichael Ellerman	or	1,1,1;							\
388362e7701SMichael Ellerman	or	1,1,1;							\
389362e7701SMichael Ellerman	/* Feature section with nested alt section, all nop'ed */	\
390362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
391362e7701SMichael Ellerman	or	2,2,2;							\
392362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
393362e7701SMichael Ellerman	or	1,1,1;							\
394362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
395362e7701SMichael Ellerman	or	5,5,5;							\
396362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
397362e7701SMichael Ellerman	or	2,2,2;							\
398362e7701SMichael EllermanEND_##TYPE##_SECTION(0, 1)						\
399362e7701SMichael Ellerman	or	1,1,1;							\
400362e7701SMichael Ellerman	or	1,1,1;							\
401362e7701SMichael Ellerman	/* Nested alt sections, default with inner default taken */	\
402362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
403362e7701SMichael Ellerman	or	2,2,2;							\
404362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
405362e7701SMichael Ellerman	or	1,1,1;							\
406362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
407362e7701SMichael Ellerman	or	5,5,5;							\
408362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
409362e7701SMichael Ellerman	or	2,2,2;							\
410362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
411362e7701SMichael Ellerman	or	31,31,31;						\
412362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(94)					\
413362e7701SMichael Ellerman	or	5,5,5;							\
414362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(94)					\
415362e7701SMichael Ellerman	or	1,1,1;							\
416362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
417362e7701SMichael Ellerman	or	31,31,31;						\
418362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 0)						\
419362e7701SMichael Ellerman	or	1,1,1;							\
420362e7701SMichael Ellerman	or	1,1,1;							\
421362e7701SMichael Ellerman	/* Nested alt sections, default with inner else taken */	\
422362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
423362e7701SMichael Ellerman	or	2,2,2;							\
424362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
425362e7701SMichael Ellerman	or	1,1,1;							\
426362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
427362e7701SMichael Ellerman	or	5,5,5;							\
428362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
429362e7701SMichael Ellerman	or	2,2,2;							\
430362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
431362e7701SMichael Ellerman	or	31,31,31;						\
432362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(94)					\
433362e7701SMichael Ellerman	or	5,5,5;							\
434362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(94)					\
435362e7701SMichael Ellerman	or	1,1,1;							\
436362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
437362e7701SMichael Ellerman	or	31,31,31;						\
438362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 0)						\
439362e7701SMichael Ellerman	or	1,1,1;							\
440362e7701SMichael Ellerman	or	1,1,1;							\
441362e7701SMichael Ellerman	/* Nested alt sections, else with inner default taken */	\
442362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
443362e7701SMichael Ellerman	or	2,2,2;							\
444362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
445362e7701SMichael Ellerman	or	1,1,1;							\
446362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
447362e7701SMichael Ellerman	or	5,5,5;							\
448362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
449362e7701SMichael Ellerman	or	2,2,2;							\
450362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
451362e7701SMichael Ellerman	or	31,31,31;						\
452362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(94)					\
453362e7701SMichael Ellerman	or	5,5,5;							\
454362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(94)					\
455362e7701SMichael Ellerman	or	1,1,1;							\
456362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
457362e7701SMichael Ellerman	or	31,31,31;						\
458362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 1)						\
459362e7701SMichael Ellerman	or	1,1,1;							\
460362e7701SMichael Ellerman	or	1,1,1;							\
461362e7701SMichael Ellerman	/* Nested alt sections, else with inner else taken */		\
462362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
463362e7701SMichael Ellerman	or	2,2,2;							\
464362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(95)					\
465362e7701SMichael Ellerman	or	1,1,1;							\
466362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(95)					\
467362e7701SMichael Ellerman	or	5,5,5;							\
468362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
469362e7701SMichael Ellerman	or	2,2,2;							\
470362e7701SMichael Ellerman##TYPE##_SECTION_ELSE							\
471362e7701SMichael Ellerman	or	31,31,31;						\
472362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(94)					\
473362e7701SMichael Ellerman	or	5,5,5;							\
474362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(94)					\
475362e7701SMichael Ellerman	or	1,1,1;							\
476362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)				\
477362e7701SMichael Ellerman	or	31,31,31;						\
478362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 1)						\
479362e7701SMichael Ellerman	or	1,1,1;							\
480362e7701SMichael Ellerman	or	1,1,1;							\
481362e7701SMichael Ellerman	/* Nested alt sections, else can have large else case */	\
482362e7701SMichael EllermanBEGIN_##TYPE##_SECTION							\
483362e7701SMichael Ellerman	or	2,2,2;							\
484362e7701SMichael Ellerman	or	2,2,2;							\
485362e7701SMichael Ellerman	or	2,2,2;							\
486362e7701SMichael Ellerman	or	2,2,2;							\
487362e7701SMichael Ellerman##TYPE##_SECTION_ELSE 							\
488362e7701SMichael EllermanBEGIN_##TYPE##_SECTION_NESTED(94) 					\
489362e7701SMichael Ellerman	or	5,5,5;							\
490362e7701SMichael Ellerman	or	5,5,5;							\
491362e7701SMichael Ellerman	or	5,5,5;							\
492362e7701SMichael Ellerman	or	5,5,5;							\
493362e7701SMichael Ellerman##TYPE##_SECTION_ELSE_NESTED(94) 					\
494362e7701SMichael Ellerman	or	1,1,1;							\
495362e7701SMichael Ellerman	or	1,1,1;							\
496362e7701SMichael Ellerman	or	1,1,1;							\
497362e7701SMichael Ellerman	or	1,1,1;							\
498362e7701SMichael EllermanALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)				\
499362e7701SMichael EllermanALT_##TYPE##_SECTION_END(0, 1)						\
500362e7701SMichael Ellerman	or	1,1,1;							\
501362e7701SMichael Ellerman	or	1,1,1;
502362e7701SMichael Ellerman
503362e7701SMichael Ellerman#define	MAKE_MACRO_TEST_EXPECTED(TYPE)					\
504362e7701SMichael Ellermanglobl(ftr_fixup_test_ ##TYPE##_macros_expected)				\
505362e7701SMichael Ellerman	or	1,1,1;							\
506362e7701SMichael Ellerman	/* Basic test, this section should all be nop'ed */		\
507362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
508362e7701SMichael Ellerman	nop;								\
509362e7701SMichael Ellerman	nop;								\
510362e7701SMichael Ellerman	nop;								\
511362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 1) */					\
512362e7701SMichael Ellerman	or	1,1,1;							\
513362e7701SMichael Ellerman	or	1,1,1;							\
514362e7701SMichael Ellerman	/* Basic test, this section should NOT be nop'ed */		\
515362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
516362e7701SMichael Ellerman	or	2,2,2;							\
517362e7701SMichael Ellerman	or	2,2,2;							\
518362e7701SMichael Ellerman	or	2,2,2;							\
519362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 0) */					\
520362e7701SMichael Ellerman	or	1,1,1;							\
521362e7701SMichael Ellerman	or	1,1,1;							\
522362e7701SMichael Ellerman	/* Nesting test, inner section should be nop'ed */		\
523362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
524362e7701SMichael Ellerman	or	2,2,2;							\
525362e7701SMichael Ellerman	or	2,2,2;							\
526362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(80) */					\
527362e7701SMichael Ellerman	nop;								\
528362e7701SMichael Ellerman	nop;								\
529362e7701SMichael Ellerman/* END_##TYPE##_SECTION_NESTED(0, 1, 80) */				\
530362e7701SMichael Ellerman	or	2,2,2;							\
531362e7701SMichael Ellerman	or	2,2,2;							\
532362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 0) */					\
533362e7701SMichael Ellerman	or	1,1,1;							\
534362e7701SMichael Ellerman	or	1,1,1;							\
535362e7701SMichael Ellerman	/* Nesting test, whole section should be nop'ed */		\
536362e7701SMichael Ellerman	/* NB. inner section is not nop'ed, but then entire outer is */	\
537362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
538362e7701SMichael Ellerman	nop;								\
539362e7701SMichael Ellerman	nop;								\
540362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(80) */					\
541362e7701SMichael Ellerman	nop;								\
542362e7701SMichael Ellerman	nop;								\
543362e7701SMichael Ellerman/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */				\
544362e7701SMichael Ellerman	nop;								\
545362e7701SMichael Ellerman	nop;								\
546362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 1) */					\
547362e7701SMichael Ellerman	or	1,1,1;							\
548362e7701SMichael Ellerman	or	1,1,1;							\
549362e7701SMichael Ellerman	/* Nesting test, none should be nop'ed */			\
550362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
551362e7701SMichael Ellerman	or	2,2,2;							\
552362e7701SMichael Ellerman	or	2,2,2;							\
553362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(80) */					\
554362e7701SMichael Ellerman	or	3,3,3;							\
555362e7701SMichael Ellerman	or	3,3,3;							\
556362e7701SMichael Ellerman/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */				\
557362e7701SMichael Ellerman	or	2,2,2;							\
558362e7701SMichael Ellerman	or	2,2,2;							\
559362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 0) */					\
560362e7701SMichael Ellerman	or	1,1,1;							\
561362e7701SMichael Ellerman	or	1,1,1;							\
562362e7701SMichael Ellerman	/* Basic alt section test, default case should be taken */	\
563362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
564362e7701SMichael Ellerman	or	3,3,3;							\
565362e7701SMichael Ellerman	or	3,3,3;							\
566362e7701SMichael Ellerman	or	3,3,3;							\
567362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
568362e7701SMichael Ellerman	/* or	5,5,5; */						\
569362e7701SMichael Ellerman	/* or	5,5,5; */						\
570362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 0) */					\
571362e7701SMichael Ellerman	or	1,1,1;							\
572362e7701SMichael Ellerman	or	1,1,1;							\
573362e7701SMichael Ellerman	/* Basic alt section test, else case should be taken */		\
574362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
575362e7701SMichael Ellerman	/* or	3,3,3; */						\
576362e7701SMichael Ellerman	/* or	3,3,3; */						\
577362e7701SMichael Ellerman	/* or	3,3,3; */						\
578362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
579362e7701SMichael Ellerman	or	31,31,31;						\
580362e7701SMichael Ellerman	or	31,31,31;						\
581362e7701SMichael Ellerman	or	31,31,31;						\
582362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 1) */					\
583362e7701SMichael Ellerman	or	1,1,1;							\
584362e7701SMichael Ellerman	or	1,1,1;							\
585362e7701SMichael Ellerman	/* Alt with smaller else case, should be padded with nops */	\
586362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
587362e7701SMichael Ellerman	/* or	3,3,3; */						\
588362e7701SMichael Ellerman	/* or	3,3,3; */						\
589362e7701SMichael Ellerman	/* or	3,3,3; */						\
590362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
591362e7701SMichael Ellerman	or	31,31,31;						\
592362e7701SMichael Ellerman	nop;								\
593362e7701SMichael Ellerman	nop;								\
594362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 1) */					\
595362e7701SMichael Ellerman	or	1,1,1;							\
596362e7701SMichael Ellerman	or	1,1,1;							\
597362e7701SMichael Ellerman	/* Alt section with nested section in default case */		\
598362e7701SMichael Ellerman	/* Default case should be taken, with nop'ed inner section */	\
599362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
600362e7701SMichael Ellerman	or	3,3,3;							\
601362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
602362e7701SMichael Ellerman	nop;								\
603362e7701SMichael Ellerman	nop;								\
604362e7701SMichael Ellerman/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */				\
605362e7701SMichael Ellerman	or	3,3,3;							\
606362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
607362e7701SMichael Ellerman	/* or	2,2,2; */						\
608362e7701SMichael Ellerman	/* or	2,2,2; */						\
609362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 0) */					\
610362e7701SMichael Ellerman	or	1,1,1;							\
611362e7701SMichael Ellerman	or	1,1,1;							\
612362e7701SMichael Ellerman	/* Alt section with nested section in else, default taken */	\
613362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
614362e7701SMichael Ellerman	or	3,3,3;							\
615362e7701SMichael Ellerman	or	3,3,3;							\
616362e7701SMichael Ellerman	or	3,3,3;							\
617362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
618362e7701SMichael Ellerman	/* or	5,5,5; */						\
619362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
620362e7701SMichael Ellerman	/* or	3,3,3; */						\
621362e7701SMichael Ellerman/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */				\
622362e7701SMichael Ellerman	/* or	5,5,5; */						\
623362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 0) */					\
624362e7701SMichael Ellerman	or	1,1,1;							\
625362e7701SMichael Ellerman	or	1,1,1;							\
626362e7701SMichael Ellerman	/* Alt section with nested section in else, else taken & nop */	\
627362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
628362e7701SMichael Ellerman	/* or	3,3,3; */						\
629362e7701SMichael Ellerman	/* or	3,3,3; */						\
630362e7701SMichael Ellerman	/* or	3,3,3; */						\
631362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
632362e7701SMichael Ellerman	or	5,5,5;							\
633362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
634362e7701SMichael Ellerman	nop;								\
635362e7701SMichael Ellerman/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */				\
636362e7701SMichael Ellerman	or	5,5,5;							\
637362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 1) */					\
638362e7701SMichael Ellerman	or	1,1,1;							\
639362e7701SMichael Ellerman	or	1,1,1;							\
640362e7701SMichael Ellerman	/* Feature section with nested alt section, default taken */	\
641362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
642362e7701SMichael Ellerman	or	2,2,2;							\
643362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
644362e7701SMichael Ellerman	or	1,1,1;							\
645362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
646362e7701SMichael Ellerman	/* or	5,5,5; */						\
647362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */				\
648362e7701SMichael Ellerman	or	2,2,2;							\
649362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 0) */					\
650362e7701SMichael Ellerman	or	1,1,1;							\
651362e7701SMichael Ellerman	or	1,1,1;							\
652362e7701SMichael Ellerman	/* Feature section with nested alt section, else taken */	\
653362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
654362e7701SMichael Ellerman	or	2,2,2;							\
655362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
656362e7701SMichael Ellerman	/* or	1,1,1; */						\
657362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
658362e7701SMichael Ellerman	or	5,5,5;							\
659362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
660362e7701SMichael Ellerman	or	2,2,2;							\
661362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 0) */					\
662362e7701SMichael Ellerman	or	1,1,1;							\
663362e7701SMichael Ellerman	or	1,1,1;							\
664362e7701SMichael Ellerman	/* Feature section with nested alt section, all nop'ed */	\
665362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
666362e7701SMichael Ellerman	nop;								\
667362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
668362e7701SMichael Ellerman	nop;								\
669362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
670362e7701SMichael Ellerman	/* or	5,5,5; */						\
671362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */				\
672362e7701SMichael Ellerman	nop;								\
673362e7701SMichael Ellerman/* END_##TYPE##_SECTION(0, 1) */					\
674362e7701SMichael Ellerman	or	1,1,1;							\
675362e7701SMichael Ellerman	or	1,1,1;							\
676362e7701SMichael Ellerman	/* Nested alt sections, default with inner default taken */	\
677362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
678362e7701SMichael Ellerman	or	2,2,2;							\
679362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
680362e7701SMichael Ellerman	or	1,1,1;							\
681362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
682362e7701SMichael Ellerman	/* or	5,5,5; */						\
683362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */				\
684362e7701SMichael Ellerman	or	2,2,2;							\
685362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
686362e7701SMichael Ellerman	/* or	31,31,31; */						\
687362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
688362e7701SMichael Ellerman	/* or	5,5,5; */						\
689362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
690362e7701SMichael Ellerman	/* or	1,1,1; */						\
691362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */				\
692362e7701SMichael Ellerman	/* or	31,31,31; */						\
693362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 0) */					\
694362e7701SMichael Ellerman	or	1,1,1;							\
695362e7701SMichael Ellerman	or	1,1,1;							\
696362e7701SMichael Ellerman	/* Nested alt sections, default with inner else taken */	\
697362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
698362e7701SMichael Ellerman	or	2,2,2;							\
699362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
700362e7701SMichael Ellerman	/* or	1,1,1; */						\
701362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
702362e7701SMichael Ellerman	or	5,5,5;							\
703362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
704362e7701SMichael Ellerman	or	2,2,2;							\
705362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
706362e7701SMichael Ellerman	/* or	31,31,31; */						\
707362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
708362e7701SMichael Ellerman	/* or	5,5,5; */						\
709362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
710362e7701SMichael Ellerman	/* or	1,1,1; */						\
711362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */				\
712362e7701SMichael Ellerman	/* or	31,31,31; */						\
713362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 0) */					\
714362e7701SMichael Ellerman	or	1,1,1;							\
715362e7701SMichael Ellerman	or	1,1,1;							\
716362e7701SMichael Ellerman	/* Nested alt sections, else with inner default taken */	\
717362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
718362e7701SMichael Ellerman	/* or	2,2,2; */						\
719362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
720362e7701SMichael Ellerman	/* or	1,1,1; */						\
721362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
722362e7701SMichael Ellerman	/* or	5,5,5; */						\
723362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
724362e7701SMichael Ellerman	/* or	2,2,2; */						\
725362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
726362e7701SMichael Ellerman	or	31,31,31;						\
727362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
728362e7701SMichael Ellerman	or	5,5,5;							\
729362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
730362e7701SMichael Ellerman	/* or	1,1,1; */						\
731362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */				\
732362e7701SMichael Ellerman	or	31,31,31;						\
733362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 1) */					\
734362e7701SMichael Ellerman	or	1,1,1;							\
735362e7701SMichael Ellerman	or	1,1,1;							\
736362e7701SMichael Ellerman	/* Nested alt sections, else with inner else taken */		\
737362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
738362e7701SMichael Ellerman	/* or	2,2,2; */						\
739362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
740362e7701SMichael Ellerman	/* or	1,1,1; */						\
741362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
742362e7701SMichael Ellerman	/* or	5,5,5; */						\
743362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
744362e7701SMichael Ellerman	/* or	2,2,2; */						\
745362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
746362e7701SMichael Ellerman	or	31,31,31;						\
747362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
748362e7701SMichael Ellerman	/* or	5,5,5; */						\
749362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
750362e7701SMichael Ellerman	or	1,1,1;							\
751362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */				\
752362e7701SMichael Ellerman	or	31,31,31;						\
753362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 1) */					\
754362e7701SMichael Ellerman	or	1,1,1;							\
755362e7701SMichael Ellerman	or	1,1,1;							\
756362e7701SMichael Ellerman	/* Nested alt sections, else can have large else case */	\
757362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION */						\
758362e7701SMichael Ellerman	/* or	2,2,2; */						\
759362e7701SMichael Ellerman	/* or	2,2,2; */						\
760362e7701SMichael Ellerman	/* or	2,2,2; */						\
761362e7701SMichael Ellerman	/* or	2,2,2; */						\
762362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE */						\
763362e7701SMichael Ellerman/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
764362e7701SMichael Ellerman	/* or	5,5,5; */						\
765362e7701SMichael Ellerman	/* or	5,5,5; */						\
766362e7701SMichael Ellerman	/* or	5,5,5; */						\
767362e7701SMichael Ellerman	/* or	5,5,5; */						\
768362e7701SMichael Ellerman/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
769362e7701SMichael Ellerman	or	1,1,1;							\
770362e7701SMichael Ellerman	or	1,1,1;							\
771362e7701SMichael Ellerman	or	1,1,1;							\
772362e7701SMichael Ellerman	or	1,1,1;							\
773362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */				\
774362e7701SMichael Ellerman/* ALT_##TYPE##_SECTION_END(0, 1) */					\
775362e7701SMichael Ellerman	or	1,1,1;							\
776362e7701SMichael Ellerman	or	1,1,1;
777362e7701SMichael Ellerman
778362e7701SMichael EllermanMAKE_MACRO_TEST(FTR);
779362e7701SMichael EllermanMAKE_MACRO_TEST_EXPECTED(FTR);
780362e7701SMichael Ellerman
781362e7701SMichael Ellerman#ifdef CONFIG_PPC64
782362e7701SMichael EllermanMAKE_MACRO_TEST(FW_FTR);
783362e7701SMichael EllermanMAKE_MACRO_TEST_EXPECTED(FW_FTR);
784362e7701SMichael Ellerman#endif
7852d1b2027SKumar Gala
7862d1b2027SKumar Galaglobl(lwsync_fixup_test)
7872d1b2027SKumar Gala1:	or	1,1,1
7882d1b2027SKumar Gala	LWSYNC
7892d1b2027SKumar Galaglobl(end_lwsync_fixup_test)
7902d1b2027SKumar Gala
7912d1b2027SKumar Galaglobl(lwsync_fixup_test_expected_LWSYNC)
7922d1b2027SKumar Gala1:	or	1,1,1
7932d1b2027SKumar Gala	lwsync
7942d1b2027SKumar Gala
7952d1b2027SKumar Galaglobl(lwsync_fixup_test_expected_SYNC)
7962d1b2027SKumar Gala1:	or	1,1,1
7972d1b2027SKumar Gala	sync
7982d1b2027SKumar Gala
799