• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/powerpc/lib/
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;	\
19x:
20
21globl(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
26globl(end_ftr_fixup_test1)
27
28globl(ftr_fixup_test1_orig)
29	or	1,1,1
30	or	2,2,2
31	or	3,3,3
32
33globl(ftr_fixup_test1_expected)
34	or	1,1,1
35	nop
36	or	3,3,3
37
38globl(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
43globl(end_ftr_fixup_test2)
44
45globl(ftr_fixup_test2_orig)
46	or	1,1,1
47	or	2,2,2
48	or	3,3,3
49
50globl(ftr_fixup_test2_alt)
51	or	31,31,31
52
53globl(ftr_fixup_test2_expected)
54	or	1,1,1
55	or	31,31,31
56	or	3,3,3
57
58globl(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
63globl(end_ftr_fixup_test3)
64
65globl(ftr_fixup_test3_orig)
66	or	1,1,1
67	or	2,2,2
68	or	3,3,3
69
70globl(ftr_fixup_test3_alt)
71	or	31,31,31
72	or	31,31,31
73
74globl(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
82globl(end_ftr_fixup_test4)
83
84globl(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
92globl(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
100globl(ftr_fixup_test4_alt)
101	or	31,31,31
102	or	31,31,31
103
104
105globl(ftr_fixup_test5)
106	or	1,1,1
107BEGIN_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
115FTR_SECTION_ELSE
1162:	b	3f
1173:	or	5,5,5
118	beq	3b
119	b	1f
120	or	6,6,6
121	b	2b
1221:	bdnz	3b
123ALT_FTR_SECTION_END(0, 1)
124	or	1,1,1
125
126globl(end_ftr_fixup_test5)
127
128globl(ftr_fixup_test5_expected)
129	or	1,1,1
1302:	b	3f
1313:	or	5,5,5
132	beq	3b
133	b	1f
134	or	6,6,6
135	b	2b
1361:	bdnz	3b
137	or	1,1,1
138
139globl(ftr_fixup_test6)
1401:	or	1,1,1
141BEGIN_FTR_SECTION
142	or	5,5,5
1432:	PPC_LCMPI	r3,0
144	beq	4f
145	blt	2b
146	b	1b
147	b	4f
148FTR_SECTION_ELSE
1492:	or	2,2,2
150	PPC_LCMPI	r3,1
151	beq	3f
152	blt	2b
153	b	3f
154	b	1b
155ALT_FTR_SECTION_END(0, 1)
1563:	or	1,1,1
157	or	2,2,2
1584:	or	3,3,3
159
160globl(end_ftr_fixup_test6)
161
162globl(ftr_fixup_test6_expected)
1631:	or	1,1,1
1642:	or	2,2,2
165	PPC_LCMPI	r3,1
166	beq	3f
167	blt	2b
168	b	3f
169	b	1b
1702:	or	1,1,1
171	or	2,2,2
1723:	or	3,3,3
173
174
175#define	MAKE_MACRO_TEST(TYPE)						\
176globl(ftr_fixup_test_ ##TYPE##_macros)					\
177	or	1,1,1;							\
178	/* Basic test, this section should all be nop'ed */		\
179BEGIN_##TYPE##_SECTION							\
180	or	2,2,2;							\
181	or	2,2,2;							\
182	or	2,2,2;							\
183END_##TYPE##_SECTION(0, 1)						\
184	or	1,1,1;							\
185	or	1,1,1;							\
186	/* Basic test, this section should NOT be nop'ed */		\
187BEGIN_##TYPE##_SECTION							\
188	or	2,2,2;							\
189	or	2,2,2;							\
190	or	2,2,2;							\
191END_##TYPE##_SECTION(0, 0)						\
192	or	1,1,1;							\
193	or	1,1,1;							\
194	/* Nesting test, inner section should be nop'ed */		\
195BEGIN_##TYPE##_SECTION							\
196	or	2,2,2;							\
197	or	2,2,2;							\
198BEGIN_##TYPE##_SECTION_NESTED(80)					\
199	or	3,3,3;							\
200	or	3,3,3;							\
201END_##TYPE##_SECTION_NESTED(0, 1, 80)					\
202	or	2,2,2;							\
203	or	2,2,2;							\
204END_##TYPE##_SECTION(0, 0)						\
205	or	1,1,1;							\
206	or	1,1,1;							\
207	/* Nesting test, whole section should be nop'ed */		\
208BEGIN_##TYPE##_SECTION							\
209	or	2,2,2;							\
210	or	2,2,2;							\
211BEGIN_##TYPE##_SECTION_NESTED(80)					\
212	or	3,3,3;							\
213	or	3,3,3;							\
214END_##TYPE##_SECTION_NESTED(0, 0, 80)					\
215	or	2,2,2;							\
216	or	2,2,2;							\
217END_##TYPE##_SECTION(0, 1)						\
218	or	1,1,1;							\
219	or	1,1,1;							\
220	/* Nesting test, none should be nop'ed */			\
221BEGIN_##TYPE##_SECTION							\
222	or	2,2,2;							\
223	or	2,2,2;							\
224BEGIN_##TYPE##_SECTION_NESTED(80)					\
225	or	3,3,3;							\
226	or	3,3,3;							\
227END_##TYPE##_SECTION_NESTED(0, 0, 80)					\
228	or	2,2,2;							\
229	or	2,2,2;							\
230END_##TYPE##_SECTION(0, 0)						\
231	or	1,1,1;							\
232	or	1,1,1;							\
233	/* Basic alt section test, default case should be taken */	\
234BEGIN_##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;							\
241ALT_##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 */		\
245BEGIN_##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;						\
253ALT_##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 */	\
257BEGIN_##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;						\
263ALT_##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 */	\
268BEGIN_##TYPE##_SECTION							\
269	or	3,3,3;							\
270BEGIN_##TYPE##_SECTION_NESTED(95)					\
271	or	3,3,3;							\
272	or	3,3,3;							\
273END_##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;							\
278ALT_##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 */	\
282BEGIN_##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;							\
288BEGIN_##TYPE##_SECTION_NESTED(95)					\
289	or	3,3,3;							\
290END_##TYPE##_SECTION_NESTED(0, 1, 95)					\
291	or	5,5,5;							\
292ALT_##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 */	\
296BEGIN_##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;							\
302BEGIN_##TYPE##_SECTION_NESTED(95)					\
303	or	3,3,3;							\
304END_##TYPE##_SECTION_NESTED(0, 1, 95)					\
305	or	5,5,5;							\
306ALT_##TYPE##_SECTION_END(0, 1)						\
307	or	1,1,1;							\
308	or	1,1,1;							\
309	/* Feature section with nested alt section, default taken */	\
310BEGIN_##TYPE##_SECTION							\
311	or	2,2,2;							\
312BEGIN_##TYPE##_SECTION_NESTED(95)					\
313	or	1,1,1;							\
314##TYPE##_SECTION_ELSE_NESTED(95)					\
315	or	5,5,5;							\
316ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
317	or	2,2,2;							\
318END_##TYPE##_SECTION(0, 0)						\
319	or	1,1,1;							\
320	or	1,1,1;							\
321	/* Feature section with nested alt section, else taken */	\
322BEGIN_##TYPE##_SECTION							\
323	or	2,2,2;							\
324BEGIN_##TYPE##_SECTION_NESTED(95)					\
325	or	1,1,1;							\
326##TYPE##_SECTION_ELSE_NESTED(95)					\
327	or	5,5,5;							\
328ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
329	or	2,2,2;							\
330END_##TYPE##_SECTION(0, 0)						\
331	or	1,1,1;							\
332	or	1,1,1;							\
333	/* Feature section with nested alt section, all nop'ed */	\
334BEGIN_##TYPE##_SECTION							\
335	or	2,2,2;							\
336BEGIN_##TYPE##_SECTION_NESTED(95)					\
337	or	1,1,1;							\
338##TYPE##_SECTION_ELSE_NESTED(95)					\
339	or	5,5,5;							\
340ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
341	or	2,2,2;							\
342END_##TYPE##_SECTION(0, 1)						\
343	or	1,1,1;							\
344	or	1,1,1;							\
345	/* Nested alt sections, default with inner default taken */	\
346BEGIN_##TYPE##_SECTION							\
347	or	2,2,2;							\
348BEGIN_##TYPE##_SECTION_NESTED(95)					\
349	or	1,1,1;							\
350##TYPE##_SECTION_ELSE_NESTED(95)					\
351	or	5,5,5;							\
352ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
353	or	2,2,2;							\
354##TYPE##_SECTION_ELSE							\
355	or	31,31,31;						\
356BEGIN_##TYPE##_SECTION_NESTED(94)					\
357	or	5,5,5;							\
358##TYPE##_SECTION_ELSE_NESTED(94)					\
359	or	1,1,1;							\
360ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
361	or	31,31,31;						\
362ALT_##TYPE##_SECTION_END(0, 0)						\
363	or	1,1,1;							\
364	or	1,1,1;							\
365	/* Nested alt sections, default with inner else taken */	\
366BEGIN_##TYPE##_SECTION							\
367	or	2,2,2;							\
368BEGIN_##TYPE##_SECTION_NESTED(95)					\
369	or	1,1,1;							\
370##TYPE##_SECTION_ELSE_NESTED(95)					\
371	or	5,5,5;							\
372ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
373	or	2,2,2;							\
374##TYPE##_SECTION_ELSE							\
375	or	31,31,31;						\
376BEGIN_##TYPE##_SECTION_NESTED(94)					\
377	or	5,5,5;							\
378##TYPE##_SECTION_ELSE_NESTED(94)					\
379	or	1,1,1;							\
380ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
381	or	31,31,31;						\
382ALT_##TYPE##_SECTION_END(0, 0)						\
383	or	1,1,1;							\
384	or	1,1,1;							\
385	/* Nested alt sections, else with inner default taken */	\
386BEGIN_##TYPE##_SECTION							\
387	or	2,2,2;							\
388BEGIN_##TYPE##_SECTION_NESTED(95)					\
389	or	1,1,1;							\
390##TYPE##_SECTION_ELSE_NESTED(95)					\
391	or	5,5,5;							\
392ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
393	or	2,2,2;							\
394##TYPE##_SECTION_ELSE							\
395	or	31,31,31;						\
396BEGIN_##TYPE##_SECTION_NESTED(94)					\
397	or	5,5,5;							\
398##TYPE##_SECTION_ELSE_NESTED(94)					\
399	or	1,1,1;							\
400ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
401	or	31,31,31;						\
402ALT_##TYPE##_SECTION_END(0, 1)						\
403	or	1,1,1;							\
404	or	1,1,1;							\
405	/* Nested alt sections, else with inner else taken */		\
406BEGIN_##TYPE##_SECTION							\
407	or	2,2,2;							\
408BEGIN_##TYPE##_SECTION_NESTED(95)					\
409	or	1,1,1;							\
410##TYPE##_SECTION_ELSE_NESTED(95)					\
411	or	5,5,5;							\
412ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
413	or	2,2,2;							\
414##TYPE##_SECTION_ELSE							\
415	or	31,31,31;						\
416BEGIN_##TYPE##_SECTION_NESTED(94)					\
417	or	5,5,5;							\
418##TYPE##_SECTION_ELSE_NESTED(94)					\
419	or	1,1,1;							\
420ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)				\
421	or	31,31,31;						\
422ALT_##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 */	\
426BEGIN_##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 							\
432BEGIN_##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;							\
442ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)				\
443ALT_##TYPE##_SECTION_END(0, 1)						\
444	or	1,1,1;							\
445	or	1,1,1;
446
447#define	MAKE_MACRO_TEST_EXPECTED(TYPE)					\
448globl(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
722MAKE_MACRO_TEST(FTR);
723MAKE_MACRO_TEST_EXPECTED(FTR);
724
725#ifdef CONFIG_PPC64
726MAKE_MACRO_TEST(FW_FTR);
727MAKE_MACRO_TEST_EXPECTED(FW_FTR);
728#endif
729
730globl(lwsync_fixup_test)
7311:	or	1,1,1
732	LWSYNC
733globl(end_lwsync_fixup_test)
734
735globl(lwsync_fixup_test_expected_LWSYNC)
7361:	or	1,1,1
737	lwsync
738
739globl(lwsync_fixup_test_expected_SYNC)
7401:	or	1,1,1
741	sync
742