/*
 * Copyright 2008 Michael Ellerman, IBM Corporation.
 *
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 */

#include <asm/feature-fixups.h>
#include <asm/ppc_asm.h>
#include <asm/synch.h>

	.text

#define globl(x)		\
	.globl x;	\
x:

globl(ftr_fixup_test1)
	or	1,1,1
	or	2,2,2	/* fixup will nop out this instruction */
	or	3,3,3

globl(end_ftr_fixup_test1)

globl(ftr_fixup_test1_orig)
	or	1,1,1
	or	2,2,2
	or	3,3,3

globl(ftr_fixup_test1_expected)
	or	1,1,1
	nop
	or	3,3,3

globl(ftr_fixup_test2)
	or	1,1,1
	or	2,2,2	/* fixup will replace this with ftr_fixup_test2_alt */
	or	3,3,3

globl(end_ftr_fixup_test2)

globl(ftr_fixup_test2_orig)
	or	1,1,1
	or	2,2,2
	or	3,3,3

globl(ftr_fixup_test2_alt)
	or	31,31,31

globl(ftr_fixup_test2_expected)
	or	1,1,1
	or	31,31,31
	or	3,3,3

globl(ftr_fixup_test3)
	or	1,1,1
	or	2,2,2	/* fixup will fail to replace this */
	or	3,3,3

globl(end_ftr_fixup_test3)

globl(ftr_fixup_test3_orig)
	or	1,1,1
	or	2,2,2
	or	3,3,3

globl(ftr_fixup_test3_alt)
	or	31,31,31
	or	31,31,31

globl(ftr_fixup_test4)
	or	1,1,1
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	3,3,3

globl(end_ftr_fixup_test4)

globl(ftr_fixup_test4_expected)
	or	1,1,1
	or	31,31,31
	or	31,31,31
	nop
	nop
	or	3,3,3

globl(ftr_fixup_test4_orig)
	or	1,1,1
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	3,3,3

globl(ftr_fixup_test4_alt)
	or	31,31,31
	or	31,31,31


globl(ftr_fixup_test5)
	or	1,1,1
BEGIN_FTR_SECTION
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	2,2,2
	or	2,2,2
FTR_SECTION_ELSE
2:	b	3f
3:	or	5,5,5
	beq	3b
	b	1f
	or	6,6,6
	b	2b
1:	bdnz	3b
ALT_FTR_SECTION_END(0, 1)
	or	1,1,1

globl(end_ftr_fixup_test5)

globl(ftr_fixup_test5_expected)
	or	1,1,1
2:	b	3f
3:	or	5,5,5
	beq	3b
	b	1f
	or	6,6,6
	b	2b
1:	bdnz	3b
	or	1,1,1

globl(ftr_fixup_test6)
1:	or	1,1,1
BEGIN_FTR_SECTION
	or	5,5,5
2:	PPC_LCMPI	r3,0
	beq	4f
	blt	2b
	b	1b
	b	4f
FTR_SECTION_ELSE
2:	or	2,2,2
	PPC_LCMPI	r3,1
	beq	3f
	blt	2b
	b	3f
	b	1b
ALT_FTR_SECTION_END(0, 1)
3:	or	1,1,1
	or	2,2,2
4:	or	3,3,3

globl(end_ftr_fixup_test6)

globl(ftr_fixup_test6_expected)
1:	or	1,1,1
2:	or	2,2,2
	PPC_LCMPI	r3,1
	beq	3f
	blt	2b
	b	3f
	b	1b
2:	or	1,1,1
	or	2,2,2
3:	or	3,3,3


#define	MAKE_MACRO_TEST(TYPE)						\
globl(ftr_fixup_test_ ##TYPE##_macros)					\
	or	1,1,1;							\
	/* Basic test, this section should all be nop'ed */		\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
	or	2,2,2;							\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Basic test, this section should NOT be nop'ed */		\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
	or	2,2,2;							\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nesting test, inner section should be nop'ed */		\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(80)					\
	or	3,3,3;							\
	or	3,3,3;							\
END_##TYPE##_SECTION_NESTED(0, 1, 80)					\
	or	2,2,2;							\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nesting test, whole section should be nop'ed */		\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(80)					\
	or	3,3,3;							\
	or	3,3,3;							\
END_##TYPE##_SECTION_NESTED(0, 0, 80)					\
	or	2,2,2;							\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nesting test, none should be nop'ed */			\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(80)					\
	or	3,3,3;							\
	or	3,3,3;							\
END_##TYPE##_SECTION_NESTED(0, 0, 80)					\
	or	2,2,2;							\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Basic alt section test, default case should be taken */	\
BEGIN_##TYPE##_SECTION							\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
##TYPE##_SECTION_ELSE							\
	or	5,5,5;							\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Basic alt section test, else case should be taken */		\
BEGIN_##TYPE##_SECTION							\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
##TYPE##_SECTION_ELSE							\
	or	31,31,31;						\
	or	31,31,31;						\
	or	31,31,31;						\
ALT_##TYPE##_SECTION_END(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt with smaller else case, should be padded with nops */	\
BEGIN_##TYPE##_SECTION							\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
##TYPE##_SECTION_ELSE							\
	or	31,31,31;						\
ALT_##TYPE##_SECTION_END(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt section with nested section in default case */		\
	/* Default case should be taken, with nop'ed inner section */	\
BEGIN_##TYPE##_SECTION							\
	or	3,3,3;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	3,3,3;							\
	or	3,3,3;							\
END_##TYPE##_SECTION_NESTED(0, 1, 95)					\
	or	3,3,3;							\
##TYPE##_SECTION_ELSE							\
	or	2,2,2;							\
	or	2,2,2;							\
ALT_##TYPE##_SECTION_END(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt section with nested section in else, default taken */	\
BEGIN_##TYPE##_SECTION							\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
##TYPE##_SECTION_ELSE							\
	or	5,5,5;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	3,3,3;							\
END_##TYPE##_SECTION_NESTED(0, 1, 95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt section with nested section in else, else taken & nop */	\
BEGIN_##TYPE##_SECTION							\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
##TYPE##_SECTION_ELSE							\
	or	5,5,5;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	3,3,3;							\
END_##TYPE##_SECTION_NESTED(0, 1, 95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Feature section with nested alt section, default taken */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Feature section with nested alt section, else taken */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Feature section with nested alt section, all nop'ed */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
	or	2,2,2;							\
END_##TYPE##_SECTION(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, default with inner default taken */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)				\
	or	2,2,2;							\
##TYPE##_SECTION_ELSE							\
	or	31,31,31;						\
BEGIN_##TYPE##_SECTION_NESTED(94)					\
	or	5,5,5;							\
##TYPE##_SECTION_ELSE_NESTED(94)					\
	or	1,1,1;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
	or	31,31,31;						\
ALT_##TYPE##_SECTION_END(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, default with inner else taken */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
	or	2,2,2;							\
##TYPE##_SECTION_ELSE							\
	or	31,31,31;						\
BEGIN_##TYPE##_SECTION_NESTED(94)					\
	or	5,5,5;							\
##TYPE##_SECTION_ELSE_NESTED(94)					\
	or	1,1,1;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
	or	31,31,31;						\
ALT_##TYPE##_SECTION_END(0, 0)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, else with inner default taken */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
	or	2,2,2;							\
##TYPE##_SECTION_ELSE							\
	or	31,31,31;						\
BEGIN_##TYPE##_SECTION_NESTED(94)					\
	or	5,5,5;							\
##TYPE##_SECTION_ELSE_NESTED(94)					\
	or	1,1,1;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)				\
	or	31,31,31;						\
ALT_##TYPE##_SECTION_END(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, else with inner else taken */		\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
BEGIN_##TYPE##_SECTION_NESTED(95)					\
	or	1,1,1;							\
##TYPE##_SECTION_ELSE_NESTED(95)					\
	or	5,5,5;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)				\
	or	2,2,2;							\
##TYPE##_SECTION_ELSE							\
	or	31,31,31;						\
BEGIN_##TYPE##_SECTION_NESTED(94)					\
	or	5,5,5;							\
##TYPE##_SECTION_ELSE_NESTED(94)					\
	or	1,1,1;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)				\
	or	31,31,31;						\
ALT_##TYPE##_SECTION_END(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, else can have large else case */	\
BEGIN_##TYPE##_SECTION							\
	or	2,2,2;							\
	or	2,2,2;							\
	or	2,2,2;							\
	or	2,2,2;							\
##TYPE##_SECTION_ELSE 							\
BEGIN_##TYPE##_SECTION_NESTED(94) 					\
	or	5,5,5;							\
	or	5,5,5;							\
	or	5,5,5;							\
	or	5,5,5;							\
##TYPE##_SECTION_ELSE_NESTED(94) 					\
	or	1,1,1;							\
	or	1,1,1;							\
	or	1,1,1;							\
	or	1,1,1;							\
ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)				\
ALT_##TYPE##_SECTION_END(0, 1)						\
	or	1,1,1;							\
	or	1,1,1;

#define	MAKE_MACRO_TEST_EXPECTED(TYPE)					\
globl(ftr_fixup_test_ ##TYPE##_macros_expected)				\
	or	1,1,1;							\
	/* Basic test, this section should all be nop'ed */		\
/* BEGIN_##TYPE##_SECTION */						\
	nop;								\
	nop;								\
	nop;								\
/* END_##TYPE##_SECTION(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Basic test, this section should NOT be nop'ed */		\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
	or	2,2,2;							\
	or	2,2,2;							\
/* END_##TYPE##_SECTION(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nesting test, inner section should be nop'ed */		\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
	or	2,2,2;							\
/* BEGIN_##TYPE##_SECTION_NESTED(80) */					\
	nop;								\
	nop;								\
/* END_##TYPE##_SECTION_NESTED(0, 1, 80) */				\
	or	2,2,2;							\
	or	2,2,2;							\
/* END_##TYPE##_SECTION(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nesting test, whole section should be nop'ed */		\
	/* NB. inner section is not nop'ed, but then entire outer is */	\
/* BEGIN_##TYPE##_SECTION */						\
	nop;								\
	nop;								\
/* BEGIN_##TYPE##_SECTION_NESTED(80) */					\
	nop;								\
	nop;								\
/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */				\
	nop;								\
	nop;								\
/* END_##TYPE##_SECTION(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nesting test, none should be nop'ed */			\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
	or	2,2,2;							\
/* BEGIN_##TYPE##_SECTION_NESTED(80) */					\
	or	3,3,3;							\
	or	3,3,3;							\
/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */				\
	or	2,2,2;							\
	or	2,2,2;							\
/* END_##TYPE##_SECTION(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Basic alt section test, default case should be taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
/* ##TYPE##_SECTION_ELSE */						\
	/* or	5,5,5; */						\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Basic alt section test, else case should be taken */		\
/* BEGIN_##TYPE##_SECTION */						\
	/* or	3,3,3; */						\
	/* or	3,3,3; */						\
	/* or	3,3,3; */						\
/* ##TYPE##_SECTION_ELSE */						\
	or	31,31,31;						\
	or	31,31,31;						\
	or	31,31,31;						\
/* ALT_##TYPE##_SECTION_END(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt with smaller else case, should be padded with nops */	\
/* BEGIN_##TYPE##_SECTION */						\
	/* or	3,3,3; */						\
	/* or	3,3,3; */						\
	/* or	3,3,3; */						\
/* ##TYPE##_SECTION_ELSE */						\
	or	31,31,31;						\
	nop;								\
	nop;								\
/* ALT_##TYPE##_SECTION_END(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt section with nested section in default case */		\
	/* Default case should be taken, with nop'ed inner section */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	3,3,3;							\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	nop;								\
	nop;								\
/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */				\
	or	3,3,3;							\
/* ##TYPE##_SECTION_ELSE */						\
	/* or	2,2,2; */						\
	/* or	2,2,2; */						\
/* ALT_##TYPE##_SECTION_END(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt section with nested section in else, default taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	3,3,3;							\
	or	3,3,3;							\
	or	3,3,3;							\
/* ##TYPE##_SECTION_ELSE */						\
	/* or	5,5,5; */						\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	/* or	3,3,3; */						\
/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */				\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Alt section with nested section in else, else taken & nop */	\
/* BEGIN_##TYPE##_SECTION */						\
	/* or	3,3,3; */						\
	/* or	3,3,3; */						\
	/* or	3,3,3; */						\
/* ##TYPE##_SECTION_ELSE */						\
	or	5,5,5;							\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	nop;								\
/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */				\
	or	5,5,5;							\
/* ALT_##TYPE##_SECTION_END(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Feature section with nested alt section, default taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	or	1,1,1;							\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */				\
	or	2,2,2;							\
/* END_##TYPE##_SECTION(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Feature section with nested alt section, else taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	/* or	1,1,1; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	or	5,5,5;							\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
	or	2,2,2;							\
/* END_##TYPE##_SECTION(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Feature section with nested alt section, all nop'ed */	\
/* BEGIN_##TYPE##_SECTION */						\
	nop;								\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	nop;								\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */				\
	nop;								\
/* END_##TYPE##_SECTION(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, default with inner default taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	or	1,1,1;							\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */				\
	or	2,2,2;							\
/* ##TYPE##_SECTION_ELSE */						\
	/* or	31,31,31; */						\
/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
	/* or	5,5,5; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
	/* or	1,1,1; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */				\
	/* or	31,31,31; */						\
/* ALT_##TYPE##_SECTION_END(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, default with inner else taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	or	2,2,2;							\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	/* or	1,1,1; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	or	5,5,5;							\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
	or	2,2,2;							\
/* ##TYPE##_SECTION_ELSE */						\
	/* or	31,31,31; */						\
/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
	/* or	5,5,5; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
	/* or	1,1,1; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */				\
	/* or	31,31,31; */						\
/* ALT_##TYPE##_SECTION_END(0, 0) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, else with inner default taken */	\
/* BEGIN_##TYPE##_SECTION */						\
	/* or	2,2,2; */						\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	/* or	1,1,1; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
	/* or	2,2,2; */						\
/* ##TYPE##_SECTION_ELSE */						\
	or	31,31,31;						\
/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
	or	5,5,5;							\
/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
	/* or	1,1,1; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */				\
	or	31,31,31;						\
/* ALT_##TYPE##_SECTION_END(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, else with inner else taken */		\
/* BEGIN_##TYPE##_SECTION */						\
	/* or	2,2,2; */						\
/* BEGIN_##TYPE##_SECTION_NESTED(95) */					\
	/* or	1,1,1; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(95) */					\
	/* or	5,5,5; */						\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */				\
	/* or	2,2,2; */						\
/* ##TYPE##_SECTION_ELSE */						\
	or	31,31,31;						\
/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
	/* or	5,5,5; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
	or	1,1,1;							\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */				\
	or	31,31,31;						\
/* ALT_##TYPE##_SECTION_END(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	/* Nested alt sections, else can have large else case */	\
/* BEGIN_##TYPE##_SECTION */						\
	/* or	2,2,2; */						\
	/* or	2,2,2; */						\
	/* or	2,2,2; */						\
	/* or	2,2,2; */						\
/* ##TYPE##_SECTION_ELSE */						\
/* BEGIN_##TYPE##_SECTION_NESTED(94) */					\
	/* or	5,5,5; */						\
	/* or	5,5,5; */						\
	/* or	5,5,5; */						\
	/* or	5,5,5; */						\
/* ##TYPE##_SECTION_ELSE_NESTED(94) */					\
	or	1,1,1;							\
	or	1,1,1;							\
	or	1,1,1;							\
	or	1,1,1;							\
/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */				\
/* ALT_##TYPE##_SECTION_END(0, 1) */					\
	or	1,1,1;							\
	or	1,1,1;

MAKE_MACRO_TEST(FTR);
MAKE_MACRO_TEST_EXPECTED(FTR);

#ifdef CONFIG_PPC64
MAKE_MACRO_TEST(FW_FTR);
MAKE_MACRO_TEST_EXPECTED(FW_FTR);
#endif

globl(lwsync_fixup_test)
1:	or	1,1,1
	LWSYNC
globl(end_lwsync_fixup_test)

globl(lwsync_fixup_test_expected_LWSYNC)
1:	or	1,1,1
	lwsync

globl(lwsync_fixup_test_expected_SYNC)
1:	or	1,1,1
	sync

