162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright 2008 Michael Ellerman, IBM Corporation. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <asm/feature-fixups.h> 762306a36Sopenharmony_ci#include <asm/ppc_asm.h> 862306a36Sopenharmony_ci#include <asm/synch.h> 962306a36Sopenharmony_ci#include <asm/asm-compat.h> 1062306a36Sopenharmony_ci#include <asm/ppc-opcode.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci .text 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define globl(x) \ 1562306a36Sopenharmony_ci .globl x; \ 1662306a36Sopenharmony_cix: 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciglobl(ftr_fixup_test1) 1962306a36Sopenharmony_ci or 1,1,1 2062306a36Sopenharmony_ci or 2,2,2 /* fixup will nop out this instruction */ 2162306a36Sopenharmony_ci or 3,3,3 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciglobl(end_ftr_fixup_test1) 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciglobl(ftr_fixup_test1_orig) 2662306a36Sopenharmony_ci or 1,1,1 2762306a36Sopenharmony_ci or 2,2,2 2862306a36Sopenharmony_ci or 3,3,3 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciglobl(ftr_fixup_test1_expected) 3162306a36Sopenharmony_ci or 1,1,1 3262306a36Sopenharmony_ci nop 3362306a36Sopenharmony_ci or 3,3,3 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciglobl(ftr_fixup_test2) 3662306a36Sopenharmony_ci or 1,1,1 3762306a36Sopenharmony_ci or 2,2,2 /* fixup will replace this with ftr_fixup_test2_alt */ 3862306a36Sopenharmony_ci or 3,3,3 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciglobl(end_ftr_fixup_test2) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciglobl(ftr_fixup_test2_orig) 4362306a36Sopenharmony_ci or 1,1,1 4462306a36Sopenharmony_ci or 2,2,2 4562306a36Sopenharmony_ci or 3,3,3 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciglobl(ftr_fixup_test2_alt) 4862306a36Sopenharmony_ci or 31,31,31 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciglobl(ftr_fixup_test2_expected) 5162306a36Sopenharmony_ci or 1,1,1 5262306a36Sopenharmony_ci or 31,31,31 5362306a36Sopenharmony_ci or 3,3,3 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciglobl(ftr_fixup_test3) 5662306a36Sopenharmony_ci or 1,1,1 5762306a36Sopenharmony_ci or 2,2,2 /* fixup will fail to replace this */ 5862306a36Sopenharmony_ci or 3,3,3 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ciglobl(end_ftr_fixup_test3) 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ciglobl(ftr_fixup_test3_orig) 6362306a36Sopenharmony_ci or 1,1,1 6462306a36Sopenharmony_ci or 2,2,2 6562306a36Sopenharmony_ci or 3,3,3 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ciglobl(ftr_fixup_test3_alt) 6862306a36Sopenharmony_ci or 31,31,31 6962306a36Sopenharmony_ci or 31,31,31 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ciglobl(ftr_fixup_test4) 7262306a36Sopenharmony_ci or 1,1,1 7362306a36Sopenharmony_ci or 2,2,2 7462306a36Sopenharmony_ci or 2,2,2 7562306a36Sopenharmony_ci or 2,2,2 7662306a36Sopenharmony_ci or 2,2,2 7762306a36Sopenharmony_ci or 3,3,3 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciglobl(end_ftr_fixup_test4) 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ciglobl(ftr_fixup_test4_expected) 8262306a36Sopenharmony_ci or 1,1,1 8362306a36Sopenharmony_ci or 31,31,31 8462306a36Sopenharmony_ci or 31,31,31 8562306a36Sopenharmony_ci nop 8662306a36Sopenharmony_ci nop 8762306a36Sopenharmony_ci or 3,3,3 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ciglobl(ftr_fixup_test4_orig) 9062306a36Sopenharmony_ci or 1,1,1 9162306a36Sopenharmony_ci or 2,2,2 9262306a36Sopenharmony_ci or 2,2,2 9362306a36Sopenharmony_ci or 2,2,2 9462306a36Sopenharmony_ci or 2,2,2 9562306a36Sopenharmony_ci or 3,3,3 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ciglobl(ftr_fixup_test4_alt) 9862306a36Sopenharmony_ci or 31,31,31 9962306a36Sopenharmony_ci or 31,31,31 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ciglobl(ftr_fixup_test5) 10362306a36Sopenharmony_ci or 1,1,1 10462306a36Sopenharmony_ciBEGIN_FTR_SECTION 10562306a36Sopenharmony_ci or 2,2,2 10662306a36Sopenharmony_ci or 2,2,2 10762306a36Sopenharmony_ci or 2,2,2 10862306a36Sopenharmony_ci or 2,2,2 10962306a36Sopenharmony_ci or 2,2,2 11062306a36Sopenharmony_ci or 2,2,2 11162306a36Sopenharmony_ci or 2,2,2 11262306a36Sopenharmony_ciFTR_SECTION_ELSE 11362306a36Sopenharmony_ci2: b 3f 11462306a36Sopenharmony_ci3: or 5,5,5 11562306a36Sopenharmony_ci beq 3b 11662306a36Sopenharmony_ci b 1f 11762306a36Sopenharmony_ci or 6,6,6 11862306a36Sopenharmony_ci b 2b 11962306a36Sopenharmony_ci1: bdnz 3b 12062306a36Sopenharmony_ciALT_FTR_SECTION_END(0, 1) 12162306a36Sopenharmony_ci or 1,1,1 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ciglobl(end_ftr_fixup_test5) 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ciglobl(ftr_fixup_test5_expected) 12662306a36Sopenharmony_ci or 1,1,1 12762306a36Sopenharmony_ci2: b 3f 12862306a36Sopenharmony_ci3: or 5,5,5 12962306a36Sopenharmony_ci beq 3b 13062306a36Sopenharmony_ci b 1f 13162306a36Sopenharmony_ci or 6,6,6 13262306a36Sopenharmony_ci b 2b 13362306a36Sopenharmony_ci1: bdnz 3b 13462306a36Sopenharmony_ci or 1,1,1 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ciglobl(ftr_fixup_test6) 13762306a36Sopenharmony_ci1: or 1,1,1 13862306a36Sopenharmony_ciBEGIN_FTR_SECTION 13962306a36Sopenharmony_ci or 5,5,5 14062306a36Sopenharmony_ci2: PPC_LCMPI r3,0 14162306a36Sopenharmony_ci beq 4f 14262306a36Sopenharmony_ci blt 2b 14362306a36Sopenharmony_ci b 1b 14462306a36Sopenharmony_ci b 4f 14562306a36Sopenharmony_ciFTR_SECTION_ELSE 14662306a36Sopenharmony_ci2: or 2,2,2 14762306a36Sopenharmony_ci PPC_LCMPI r3,1 14862306a36Sopenharmony_ci beq 3f 14962306a36Sopenharmony_ci blt 2b 15062306a36Sopenharmony_ci b 3f 15162306a36Sopenharmony_ci b 1b 15262306a36Sopenharmony_ciALT_FTR_SECTION_END(0, 1) 15362306a36Sopenharmony_ci3: or 1,1,1 15462306a36Sopenharmony_ci or 2,2,2 15562306a36Sopenharmony_ci4: or 3,3,3 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ciglobl(end_ftr_fixup_test6) 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ciglobl(ftr_fixup_test6_expected) 16062306a36Sopenharmony_ci1: or 1,1,1 16162306a36Sopenharmony_ci2: or 2,2,2 16262306a36Sopenharmony_ci PPC_LCMPI r3,1 16362306a36Sopenharmony_ci beq 3f 16462306a36Sopenharmony_ci blt 2b 16562306a36Sopenharmony_ci b 3f 16662306a36Sopenharmony_ci b 1b 16762306a36Sopenharmony_ci3: or 1,1,1 16862306a36Sopenharmony_ci or 2,2,2 16962306a36Sopenharmony_ci or 3,3,3 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ciglobl(ftr_fixup_test7) 17262306a36Sopenharmony_ci or 1,1,1 17362306a36Sopenharmony_ciBEGIN_FTR_SECTION 17462306a36Sopenharmony_ci or 2,2,2 17562306a36Sopenharmony_ci or 2,2,2 17662306a36Sopenharmony_ci or 2,2,2 17762306a36Sopenharmony_ci or 2,2,2 17862306a36Sopenharmony_ci or 2,2,2 17962306a36Sopenharmony_ci or 2,2,2 18062306a36Sopenharmony_ci or 2,2,2 18162306a36Sopenharmony_ciFTR_SECTION_ELSE 18262306a36Sopenharmony_ci2: b 3f 18362306a36Sopenharmony_ci3: or 5,5,5 18462306a36Sopenharmony_ci beq 3b 18562306a36Sopenharmony_ci b 1f 18662306a36Sopenharmony_ci or 6,6,6 18762306a36Sopenharmony_ci b 2b 18862306a36Sopenharmony_ci bdnz 3b 18962306a36Sopenharmony_ci1: 19062306a36Sopenharmony_ciALT_FTR_SECTION_END(0, 1) 19162306a36Sopenharmony_ci or 1,1,1 19262306a36Sopenharmony_ci or 1,1,1 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ciglobl(end_ftr_fixup_test7) 19562306a36Sopenharmony_ci nop 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ciglobl(ftr_fixup_test7_expected) 19862306a36Sopenharmony_ci or 1,1,1 19962306a36Sopenharmony_ci2: b 3f 20062306a36Sopenharmony_ci3: or 5,5,5 20162306a36Sopenharmony_ci beq 3b 20262306a36Sopenharmony_ci b 1f 20362306a36Sopenharmony_ci or 6,6,6 20462306a36Sopenharmony_ci b 2b 20562306a36Sopenharmony_ci bdnz 3b 20662306a36Sopenharmony_ci1: or 1,1,1 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci#if 0 20962306a36Sopenharmony_ci/* Test that if we have a larger else case the assembler spots it and 21062306a36Sopenharmony_ci * reports an error. #if 0'ed so as not to break the build normally. 21162306a36Sopenharmony_ci */ 21262306a36Sopenharmony_ciftr_fixup_test_too_big: 21362306a36Sopenharmony_ci or 1,1,1 21462306a36Sopenharmony_ciBEGIN_FTR_SECTION 21562306a36Sopenharmony_ci or 2,2,2 21662306a36Sopenharmony_ci or 2,2,2 21762306a36Sopenharmony_ci or 2,2,2 21862306a36Sopenharmony_ciFTR_SECTION_ELSE 21962306a36Sopenharmony_ci or 3,3,3 22062306a36Sopenharmony_ci or 3,3,3 22162306a36Sopenharmony_ci or 3,3,3 22262306a36Sopenharmony_ci or 3,3,3 22362306a36Sopenharmony_ciALT_FTR_SECTION_END(0, 1) 22462306a36Sopenharmony_ci or 1,1,1 22562306a36Sopenharmony_ci#endif 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci#define MAKE_MACRO_TEST(TYPE) \ 22862306a36Sopenharmony_ciglobl(ftr_fixup_test_ ##TYPE##_macros) \ 22962306a36Sopenharmony_ci or 1,1,1; \ 23062306a36Sopenharmony_ci /* Basic test, this section should all be nop'ed */ \ 23162306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 23262306a36Sopenharmony_ci or 2,2,2; \ 23362306a36Sopenharmony_ci or 2,2,2; \ 23462306a36Sopenharmony_ci or 2,2,2; \ 23562306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 1) \ 23662306a36Sopenharmony_ci or 1,1,1; \ 23762306a36Sopenharmony_ci or 1,1,1; \ 23862306a36Sopenharmony_ci /* Basic test, this section should NOT be nop'ed */ \ 23962306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 24062306a36Sopenharmony_ci or 2,2,2; \ 24162306a36Sopenharmony_ci or 2,2,2; \ 24262306a36Sopenharmony_ci or 2,2,2; \ 24362306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 0) \ 24462306a36Sopenharmony_ci or 1,1,1; \ 24562306a36Sopenharmony_ci or 1,1,1; \ 24662306a36Sopenharmony_ci /* Nesting test, inner section should be nop'ed */ \ 24762306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 24862306a36Sopenharmony_ci or 2,2,2; \ 24962306a36Sopenharmony_ci or 2,2,2; \ 25062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(80) \ 25162306a36Sopenharmony_ci or 3,3,3; \ 25262306a36Sopenharmony_ci or 3,3,3; \ 25362306a36Sopenharmony_ciEND_##TYPE##_SECTION_NESTED(0, 1, 80) \ 25462306a36Sopenharmony_ci or 2,2,2; \ 25562306a36Sopenharmony_ci or 2,2,2; \ 25662306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 0) \ 25762306a36Sopenharmony_ci or 1,1,1; \ 25862306a36Sopenharmony_ci or 1,1,1; \ 25962306a36Sopenharmony_ci /* Nesting test, whole section should be nop'ed */ \ 26062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 26162306a36Sopenharmony_ci or 2,2,2; \ 26262306a36Sopenharmony_ci or 2,2,2; \ 26362306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(80) \ 26462306a36Sopenharmony_ci or 3,3,3; \ 26562306a36Sopenharmony_ci or 3,3,3; \ 26662306a36Sopenharmony_ciEND_##TYPE##_SECTION_NESTED(0, 0, 80) \ 26762306a36Sopenharmony_ci or 2,2,2; \ 26862306a36Sopenharmony_ci or 2,2,2; \ 26962306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 1) \ 27062306a36Sopenharmony_ci or 1,1,1; \ 27162306a36Sopenharmony_ci or 1,1,1; \ 27262306a36Sopenharmony_ci /* Nesting test, none should be nop'ed */ \ 27362306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 27462306a36Sopenharmony_ci or 2,2,2; \ 27562306a36Sopenharmony_ci or 2,2,2; \ 27662306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(80) \ 27762306a36Sopenharmony_ci or 3,3,3; \ 27862306a36Sopenharmony_ci or 3,3,3; \ 27962306a36Sopenharmony_ciEND_##TYPE##_SECTION_NESTED(0, 0, 80) \ 28062306a36Sopenharmony_ci or 2,2,2; \ 28162306a36Sopenharmony_ci or 2,2,2; \ 28262306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 0) \ 28362306a36Sopenharmony_ci or 1,1,1; \ 28462306a36Sopenharmony_ci or 1,1,1; \ 28562306a36Sopenharmony_ci /* Basic alt section test, default case should be taken */ \ 28662306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 28762306a36Sopenharmony_ci or 3,3,3; \ 28862306a36Sopenharmony_ci or 3,3,3; \ 28962306a36Sopenharmony_ci or 3,3,3; \ 29062306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 29162306a36Sopenharmony_ci or 5,5,5; \ 29262306a36Sopenharmony_ci or 5,5,5; \ 29362306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 0) \ 29462306a36Sopenharmony_ci or 1,1,1; \ 29562306a36Sopenharmony_ci or 1,1,1; \ 29662306a36Sopenharmony_ci /* Basic alt section test, else case should be taken */ \ 29762306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 29862306a36Sopenharmony_ci or 3,3,3; \ 29962306a36Sopenharmony_ci or 3,3,3; \ 30062306a36Sopenharmony_ci or 3,3,3; \ 30162306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 30262306a36Sopenharmony_ci or 31,31,31; \ 30362306a36Sopenharmony_ci or 31,31,31; \ 30462306a36Sopenharmony_ci or 31,31,31; \ 30562306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 1) \ 30662306a36Sopenharmony_ci or 1,1,1; \ 30762306a36Sopenharmony_ci or 1,1,1; \ 30862306a36Sopenharmony_ci /* Alt with smaller else case, should be padded with nops */ \ 30962306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 31062306a36Sopenharmony_ci or 3,3,3; \ 31162306a36Sopenharmony_ci or 3,3,3; \ 31262306a36Sopenharmony_ci or 3,3,3; \ 31362306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 31462306a36Sopenharmony_ci or 31,31,31; \ 31562306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 1) \ 31662306a36Sopenharmony_ci or 1,1,1; \ 31762306a36Sopenharmony_ci or 1,1,1; \ 31862306a36Sopenharmony_ci /* Alt section with nested section in default case */ \ 31962306a36Sopenharmony_ci /* Default case should be taken, with nop'ed inner section */ \ 32062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 32162306a36Sopenharmony_ci or 3,3,3; \ 32262306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 32362306a36Sopenharmony_ci or 3,3,3; \ 32462306a36Sopenharmony_ci or 3,3,3; \ 32562306a36Sopenharmony_ciEND_##TYPE##_SECTION_NESTED(0, 1, 95) \ 32662306a36Sopenharmony_ci or 3,3,3; \ 32762306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 32862306a36Sopenharmony_ci or 2,2,2; \ 32962306a36Sopenharmony_ci or 2,2,2; \ 33062306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 0) \ 33162306a36Sopenharmony_ci or 1,1,1; \ 33262306a36Sopenharmony_ci or 1,1,1; \ 33362306a36Sopenharmony_ci /* Alt section with nested section in else, default taken */ \ 33462306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 33562306a36Sopenharmony_ci or 3,3,3; \ 33662306a36Sopenharmony_ci or 3,3,3; \ 33762306a36Sopenharmony_ci or 3,3,3; \ 33862306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 33962306a36Sopenharmony_ci or 5,5,5; \ 34062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 34162306a36Sopenharmony_ci or 3,3,3; \ 34262306a36Sopenharmony_ciEND_##TYPE##_SECTION_NESTED(0, 1, 95) \ 34362306a36Sopenharmony_ci or 5,5,5; \ 34462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 0) \ 34562306a36Sopenharmony_ci or 1,1,1; \ 34662306a36Sopenharmony_ci or 1,1,1; \ 34762306a36Sopenharmony_ci /* Alt section with nested section in else, else taken & nop */ \ 34862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 34962306a36Sopenharmony_ci or 3,3,3; \ 35062306a36Sopenharmony_ci or 3,3,3; \ 35162306a36Sopenharmony_ci or 3,3,3; \ 35262306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 35362306a36Sopenharmony_ci or 5,5,5; \ 35462306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 35562306a36Sopenharmony_ci or 3,3,3; \ 35662306a36Sopenharmony_ciEND_##TYPE##_SECTION_NESTED(0, 1, 95) \ 35762306a36Sopenharmony_ci or 5,5,5; \ 35862306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 1) \ 35962306a36Sopenharmony_ci or 1,1,1; \ 36062306a36Sopenharmony_ci or 1,1,1; \ 36162306a36Sopenharmony_ci /* Feature section with nested alt section, default taken */ \ 36262306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 36362306a36Sopenharmony_ci or 2,2,2; \ 36462306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 36562306a36Sopenharmony_ci or 1,1,1; \ 36662306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 36762306a36Sopenharmony_ci or 5,5,5; \ 36862306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \ 36962306a36Sopenharmony_ci or 2,2,2; \ 37062306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 0) \ 37162306a36Sopenharmony_ci or 1,1,1; \ 37262306a36Sopenharmony_ci or 1,1,1; \ 37362306a36Sopenharmony_ci /* Feature section with nested alt section, else taken */ \ 37462306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 37562306a36Sopenharmony_ci or 2,2,2; \ 37662306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 37762306a36Sopenharmony_ci or 1,1,1; \ 37862306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 37962306a36Sopenharmony_ci or 5,5,5; \ 38062306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 38162306a36Sopenharmony_ci or 2,2,2; \ 38262306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 0) \ 38362306a36Sopenharmony_ci or 1,1,1; \ 38462306a36Sopenharmony_ci or 1,1,1; \ 38562306a36Sopenharmony_ci /* Feature section with nested alt section, all nop'ed */ \ 38662306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 38762306a36Sopenharmony_ci or 2,2,2; \ 38862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 38962306a36Sopenharmony_ci or 1,1,1; \ 39062306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 39162306a36Sopenharmony_ci or 5,5,5; \ 39262306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \ 39362306a36Sopenharmony_ci or 2,2,2; \ 39462306a36Sopenharmony_ciEND_##TYPE##_SECTION(0, 1) \ 39562306a36Sopenharmony_ci or 1,1,1; \ 39662306a36Sopenharmony_ci or 1,1,1; \ 39762306a36Sopenharmony_ci /* Nested alt sections, default with inner default taken */ \ 39862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 39962306a36Sopenharmony_ci or 2,2,2; \ 40062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 40162306a36Sopenharmony_ci or 1,1,1; \ 40262306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 40362306a36Sopenharmony_ci or 5,5,5; \ 40462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \ 40562306a36Sopenharmony_ci or 2,2,2; \ 40662306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 40762306a36Sopenharmony_ci or 31,31,31; \ 40862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(94) \ 40962306a36Sopenharmony_ci or 5,5,5; \ 41062306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(94) \ 41162306a36Sopenharmony_ci or 1,1,1; \ 41262306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \ 41362306a36Sopenharmony_ci or 31,31,31; \ 41462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 0) \ 41562306a36Sopenharmony_ci or 1,1,1; \ 41662306a36Sopenharmony_ci or 1,1,1; \ 41762306a36Sopenharmony_ci /* Nested alt sections, default with inner else taken */ \ 41862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 41962306a36Sopenharmony_ci or 2,2,2; \ 42062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 42162306a36Sopenharmony_ci or 1,1,1; \ 42262306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 42362306a36Sopenharmony_ci or 5,5,5; \ 42462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 42562306a36Sopenharmony_ci or 2,2,2; \ 42662306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 42762306a36Sopenharmony_ci or 31,31,31; \ 42862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(94) \ 42962306a36Sopenharmony_ci or 5,5,5; \ 43062306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(94) \ 43162306a36Sopenharmony_ci or 1,1,1; \ 43262306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \ 43362306a36Sopenharmony_ci or 31,31,31; \ 43462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 0) \ 43562306a36Sopenharmony_ci or 1,1,1; \ 43662306a36Sopenharmony_ci or 1,1,1; \ 43762306a36Sopenharmony_ci /* Nested alt sections, else with inner default taken */ \ 43862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 43962306a36Sopenharmony_ci or 2,2,2; \ 44062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 44162306a36Sopenharmony_ci or 1,1,1; \ 44262306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 44362306a36Sopenharmony_ci or 5,5,5; \ 44462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 44562306a36Sopenharmony_ci or 2,2,2; \ 44662306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 44762306a36Sopenharmony_ci or 31,31,31; \ 44862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(94) \ 44962306a36Sopenharmony_ci or 5,5,5; \ 45062306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(94) \ 45162306a36Sopenharmony_ci or 1,1,1; \ 45262306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \ 45362306a36Sopenharmony_ci or 31,31,31; \ 45462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 1) \ 45562306a36Sopenharmony_ci or 1,1,1; \ 45662306a36Sopenharmony_ci or 1,1,1; \ 45762306a36Sopenharmony_ci /* Nested alt sections, else with inner else taken */ \ 45862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 45962306a36Sopenharmony_ci or 2,2,2; \ 46062306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(95) \ 46162306a36Sopenharmony_ci or 1,1,1; \ 46262306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(95) \ 46362306a36Sopenharmony_ci or 5,5,5; \ 46462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 46562306a36Sopenharmony_ci or 2,2,2; \ 46662306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 46762306a36Sopenharmony_ci or 31,31,31; \ 46862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(94) \ 46962306a36Sopenharmony_ci or 5,5,5; \ 47062306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(94) \ 47162306a36Sopenharmony_ci or 1,1,1; \ 47262306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) \ 47362306a36Sopenharmony_ci or 31,31,31; \ 47462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 1) \ 47562306a36Sopenharmony_ci or 1,1,1; \ 47662306a36Sopenharmony_ci or 1,1,1; \ 47762306a36Sopenharmony_ci /* Nested alt sections, else can have large else case */ \ 47862306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION \ 47962306a36Sopenharmony_ci or 2,2,2; \ 48062306a36Sopenharmony_ci or 2,2,2; \ 48162306a36Sopenharmony_ci or 2,2,2; \ 48262306a36Sopenharmony_ci or 2,2,2; \ 48362306a36Sopenharmony_ci##TYPE##_SECTION_ELSE \ 48462306a36Sopenharmony_ciBEGIN_##TYPE##_SECTION_NESTED(94) \ 48562306a36Sopenharmony_ci or 5,5,5; \ 48662306a36Sopenharmony_ci or 5,5,5; \ 48762306a36Sopenharmony_ci or 5,5,5; \ 48862306a36Sopenharmony_ci or 5,5,5; \ 48962306a36Sopenharmony_ci##TYPE##_SECTION_ELSE_NESTED(94) \ 49062306a36Sopenharmony_ci or 1,1,1; \ 49162306a36Sopenharmony_ci or 1,1,1; \ 49262306a36Sopenharmony_ci or 1,1,1; \ 49362306a36Sopenharmony_ci or 1,1,1; \ 49462306a36Sopenharmony_ciALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) \ 49562306a36Sopenharmony_ciALT_##TYPE##_SECTION_END(0, 1) \ 49662306a36Sopenharmony_ci or 1,1,1; \ 49762306a36Sopenharmony_ci or 1,1,1; 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci#define MAKE_MACRO_TEST_EXPECTED(TYPE) \ 50062306a36Sopenharmony_ciglobl(ftr_fixup_test_ ##TYPE##_macros_expected) \ 50162306a36Sopenharmony_ci or 1,1,1; \ 50262306a36Sopenharmony_ci /* Basic test, this section should all be nop'ed */ \ 50362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 50462306a36Sopenharmony_ci nop; \ 50562306a36Sopenharmony_ci nop; \ 50662306a36Sopenharmony_ci nop; \ 50762306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 1) */ \ 50862306a36Sopenharmony_ci or 1,1,1; \ 50962306a36Sopenharmony_ci or 1,1,1; \ 51062306a36Sopenharmony_ci /* Basic test, this section should NOT be nop'ed */ \ 51162306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 51262306a36Sopenharmony_ci or 2,2,2; \ 51362306a36Sopenharmony_ci or 2,2,2; \ 51462306a36Sopenharmony_ci or 2,2,2; \ 51562306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 0) */ \ 51662306a36Sopenharmony_ci or 1,1,1; \ 51762306a36Sopenharmony_ci or 1,1,1; \ 51862306a36Sopenharmony_ci /* Nesting test, inner section should be nop'ed */ \ 51962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 52062306a36Sopenharmony_ci or 2,2,2; \ 52162306a36Sopenharmony_ci or 2,2,2; \ 52262306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \ 52362306a36Sopenharmony_ci nop; \ 52462306a36Sopenharmony_ci nop; \ 52562306a36Sopenharmony_ci/* END_##TYPE##_SECTION_NESTED(0, 1, 80) */ \ 52662306a36Sopenharmony_ci or 2,2,2; \ 52762306a36Sopenharmony_ci or 2,2,2; \ 52862306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 0) */ \ 52962306a36Sopenharmony_ci or 1,1,1; \ 53062306a36Sopenharmony_ci or 1,1,1; \ 53162306a36Sopenharmony_ci /* Nesting test, whole section should be nop'ed */ \ 53262306a36Sopenharmony_ci /* NB. inner section is not nop'ed, but then entire outer is */ \ 53362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 53462306a36Sopenharmony_ci nop; \ 53562306a36Sopenharmony_ci nop; \ 53662306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \ 53762306a36Sopenharmony_ci nop; \ 53862306a36Sopenharmony_ci nop; \ 53962306a36Sopenharmony_ci/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \ 54062306a36Sopenharmony_ci nop; \ 54162306a36Sopenharmony_ci nop; \ 54262306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 1) */ \ 54362306a36Sopenharmony_ci or 1,1,1; \ 54462306a36Sopenharmony_ci or 1,1,1; \ 54562306a36Sopenharmony_ci /* Nesting test, none should be nop'ed */ \ 54662306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 54762306a36Sopenharmony_ci or 2,2,2; \ 54862306a36Sopenharmony_ci or 2,2,2; \ 54962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \ 55062306a36Sopenharmony_ci or 3,3,3; \ 55162306a36Sopenharmony_ci or 3,3,3; \ 55262306a36Sopenharmony_ci/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \ 55362306a36Sopenharmony_ci or 2,2,2; \ 55462306a36Sopenharmony_ci or 2,2,2; \ 55562306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 0) */ \ 55662306a36Sopenharmony_ci or 1,1,1; \ 55762306a36Sopenharmony_ci or 1,1,1; \ 55862306a36Sopenharmony_ci /* Basic alt section test, default case should be taken */ \ 55962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 56062306a36Sopenharmony_ci or 3,3,3; \ 56162306a36Sopenharmony_ci or 3,3,3; \ 56262306a36Sopenharmony_ci or 3,3,3; \ 56362306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 56462306a36Sopenharmony_ci /* or 5,5,5; */ \ 56562306a36Sopenharmony_ci /* or 5,5,5; */ \ 56662306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 56762306a36Sopenharmony_ci or 1,1,1; \ 56862306a36Sopenharmony_ci or 1,1,1; \ 56962306a36Sopenharmony_ci /* Basic alt section test, else case should be taken */ \ 57062306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 57162306a36Sopenharmony_ci /* or 3,3,3; */ \ 57262306a36Sopenharmony_ci /* or 3,3,3; */ \ 57362306a36Sopenharmony_ci /* or 3,3,3; */ \ 57462306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 57562306a36Sopenharmony_ci or 31,31,31; \ 57662306a36Sopenharmony_ci or 31,31,31; \ 57762306a36Sopenharmony_ci or 31,31,31; \ 57862306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 57962306a36Sopenharmony_ci or 1,1,1; \ 58062306a36Sopenharmony_ci or 1,1,1; \ 58162306a36Sopenharmony_ci /* Alt with smaller else case, should be padded with nops */ \ 58262306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 58362306a36Sopenharmony_ci /* or 3,3,3; */ \ 58462306a36Sopenharmony_ci /* or 3,3,3; */ \ 58562306a36Sopenharmony_ci /* or 3,3,3; */ \ 58662306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 58762306a36Sopenharmony_ci or 31,31,31; \ 58862306a36Sopenharmony_ci nop; \ 58962306a36Sopenharmony_ci nop; \ 59062306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 59162306a36Sopenharmony_ci or 1,1,1; \ 59262306a36Sopenharmony_ci or 1,1,1; \ 59362306a36Sopenharmony_ci /* Alt section with nested section in default case */ \ 59462306a36Sopenharmony_ci /* Default case should be taken, with nop'ed inner section */ \ 59562306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 59662306a36Sopenharmony_ci or 3,3,3; \ 59762306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 59862306a36Sopenharmony_ci nop; \ 59962306a36Sopenharmony_ci nop; \ 60062306a36Sopenharmony_ci/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \ 60162306a36Sopenharmony_ci or 3,3,3; \ 60262306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 60362306a36Sopenharmony_ci /* or 2,2,2; */ \ 60462306a36Sopenharmony_ci /* or 2,2,2; */ \ 60562306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 60662306a36Sopenharmony_ci or 1,1,1; \ 60762306a36Sopenharmony_ci or 1,1,1; \ 60862306a36Sopenharmony_ci /* Alt section with nested section in else, default taken */ \ 60962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 61062306a36Sopenharmony_ci or 3,3,3; \ 61162306a36Sopenharmony_ci or 3,3,3; \ 61262306a36Sopenharmony_ci or 3,3,3; \ 61362306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 61462306a36Sopenharmony_ci /* or 5,5,5; */ \ 61562306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 61662306a36Sopenharmony_ci /* or 3,3,3; */ \ 61762306a36Sopenharmony_ci/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \ 61862306a36Sopenharmony_ci /* or 5,5,5; */ \ 61962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 62062306a36Sopenharmony_ci or 1,1,1; \ 62162306a36Sopenharmony_ci or 1,1,1; \ 62262306a36Sopenharmony_ci /* Alt section with nested section in else, else taken & nop */ \ 62362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 62462306a36Sopenharmony_ci /* or 3,3,3; */ \ 62562306a36Sopenharmony_ci /* or 3,3,3; */ \ 62662306a36Sopenharmony_ci /* or 3,3,3; */ \ 62762306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 62862306a36Sopenharmony_ci or 5,5,5; \ 62962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 63062306a36Sopenharmony_ci nop; \ 63162306a36Sopenharmony_ci/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \ 63262306a36Sopenharmony_ci or 5,5,5; \ 63362306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 63462306a36Sopenharmony_ci or 1,1,1; \ 63562306a36Sopenharmony_ci or 1,1,1; \ 63662306a36Sopenharmony_ci /* Feature section with nested alt section, default taken */ \ 63762306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 63862306a36Sopenharmony_ci or 2,2,2; \ 63962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 64062306a36Sopenharmony_ci or 1,1,1; \ 64162306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 64262306a36Sopenharmony_ci /* or 5,5,5; */ \ 64362306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \ 64462306a36Sopenharmony_ci or 2,2,2; \ 64562306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 0) */ \ 64662306a36Sopenharmony_ci or 1,1,1; \ 64762306a36Sopenharmony_ci or 1,1,1; \ 64862306a36Sopenharmony_ci /* Feature section with nested alt section, else taken */ \ 64962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 65062306a36Sopenharmony_ci or 2,2,2; \ 65162306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 65262306a36Sopenharmony_ci /* or 1,1,1; */ \ 65362306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 65462306a36Sopenharmony_ci or 5,5,5; \ 65562306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 65662306a36Sopenharmony_ci or 2,2,2; \ 65762306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 0) */ \ 65862306a36Sopenharmony_ci or 1,1,1; \ 65962306a36Sopenharmony_ci or 1,1,1; \ 66062306a36Sopenharmony_ci /* Feature section with nested alt section, all nop'ed */ \ 66162306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 66262306a36Sopenharmony_ci nop; \ 66362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 66462306a36Sopenharmony_ci nop; \ 66562306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 66662306a36Sopenharmony_ci /* or 5,5,5; */ \ 66762306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \ 66862306a36Sopenharmony_ci nop; \ 66962306a36Sopenharmony_ci/* END_##TYPE##_SECTION(0, 1) */ \ 67062306a36Sopenharmony_ci or 1,1,1; \ 67162306a36Sopenharmony_ci or 1,1,1; \ 67262306a36Sopenharmony_ci /* Nested alt sections, default with inner default taken */ \ 67362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 67462306a36Sopenharmony_ci or 2,2,2; \ 67562306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 67662306a36Sopenharmony_ci or 1,1,1; \ 67762306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 67862306a36Sopenharmony_ci /* or 5,5,5; */ \ 67962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \ 68062306a36Sopenharmony_ci or 2,2,2; \ 68162306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 68262306a36Sopenharmony_ci /* or 31,31,31; */ \ 68362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 68462306a36Sopenharmony_ci /* or 5,5,5; */ \ 68562306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 68662306a36Sopenharmony_ci /* or 1,1,1; */ \ 68762306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \ 68862306a36Sopenharmony_ci /* or 31,31,31; */ \ 68962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 69062306a36Sopenharmony_ci or 1,1,1; \ 69162306a36Sopenharmony_ci or 1,1,1; \ 69262306a36Sopenharmony_ci /* Nested alt sections, default with inner else taken */ \ 69362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 69462306a36Sopenharmony_ci or 2,2,2; \ 69562306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 69662306a36Sopenharmony_ci /* or 1,1,1; */ \ 69762306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 69862306a36Sopenharmony_ci or 5,5,5; \ 69962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 70062306a36Sopenharmony_ci or 2,2,2; \ 70162306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 70262306a36Sopenharmony_ci /* or 31,31,31; */ \ 70362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 70462306a36Sopenharmony_ci /* or 5,5,5; */ \ 70562306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 70662306a36Sopenharmony_ci /* or 1,1,1; */ \ 70762306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \ 70862306a36Sopenharmony_ci /* or 31,31,31; */ \ 70962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 71062306a36Sopenharmony_ci or 1,1,1; \ 71162306a36Sopenharmony_ci or 1,1,1; \ 71262306a36Sopenharmony_ci /* Nested alt sections, else with inner default taken */ \ 71362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 71462306a36Sopenharmony_ci /* or 2,2,2; */ \ 71562306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 71662306a36Sopenharmony_ci /* or 1,1,1; */ \ 71762306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 71862306a36Sopenharmony_ci /* or 5,5,5; */ \ 71962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 72062306a36Sopenharmony_ci /* or 2,2,2; */ \ 72162306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 72262306a36Sopenharmony_ci or 31,31,31; \ 72362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 72462306a36Sopenharmony_ci or 5,5,5; \ 72562306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 72662306a36Sopenharmony_ci /* or 1,1,1; */ \ 72762306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \ 72862306a36Sopenharmony_ci or 31,31,31; \ 72962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 73062306a36Sopenharmony_ci or 1,1,1; \ 73162306a36Sopenharmony_ci or 1,1,1; \ 73262306a36Sopenharmony_ci /* Nested alt sections, else with inner else taken */ \ 73362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 73462306a36Sopenharmony_ci /* or 2,2,2; */ \ 73562306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 73662306a36Sopenharmony_ci /* or 1,1,1; */ \ 73762306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 73862306a36Sopenharmony_ci /* or 5,5,5; */ \ 73962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 74062306a36Sopenharmony_ci /* or 2,2,2; */ \ 74162306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 74262306a36Sopenharmony_ci or 31,31,31; \ 74362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 74462306a36Sopenharmony_ci /* or 5,5,5; */ \ 74562306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 74662306a36Sopenharmony_ci or 1,1,1; \ 74762306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \ 74862306a36Sopenharmony_ci or 31,31,31; \ 74962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 75062306a36Sopenharmony_ci or 1,1,1; \ 75162306a36Sopenharmony_ci or 1,1,1; \ 75262306a36Sopenharmony_ci /* Nested alt sections, else can have large else case */ \ 75362306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION */ \ 75462306a36Sopenharmony_ci /* or 2,2,2; */ \ 75562306a36Sopenharmony_ci /* or 2,2,2; */ \ 75662306a36Sopenharmony_ci /* or 2,2,2; */ \ 75762306a36Sopenharmony_ci /* or 2,2,2; */ \ 75862306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE */ \ 75962306a36Sopenharmony_ci/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 76062306a36Sopenharmony_ci /* or 5,5,5; */ \ 76162306a36Sopenharmony_ci /* or 5,5,5; */ \ 76262306a36Sopenharmony_ci /* or 5,5,5; */ \ 76362306a36Sopenharmony_ci /* or 5,5,5; */ \ 76462306a36Sopenharmony_ci/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 76562306a36Sopenharmony_ci or 1,1,1; \ 76662306a36Sopenharmony_ci or 1,1,1; \ 76762306a36Sopenharmony_ci or 1,1,1; \ 76862306a36Sopenharmony_ci or 1,1,1; \ 76962306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \ 77062306a36Sopenharmony_ci/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 77162306a36Sopenharmony_ci or 1,1,1; \ 77262306a36Sopenharmony_ci or 1,1,1; 77362306a36Sopenharmony_ci 77462306a36Sopenharmony_ciMAKE_MACRO_TEST(FTR); 77562306a36Sopenharmony_ciMAKE_MACRO_TEST_EXPECTED(FTR); 77662306a36Sopenharmony_ci 77762306a36Sopenharmony_ci#ifdef CONFIG_PPC64 77862306a36Sopenharmony_ciMAKE_MACRO_TEST(FW_FTR); 77962306a36Sopenharmony_ciMAKE_MACRO_TEST_EXPECTED(FW_FTR); 78062306a36Sopenharmony_ci#endif 78162306a36Sopenharmony_ci 78262306a36Sopenharmony_ciglobl(lwsync_fixup_test) 78362306a36Sopenharmony_ci1: or 1,1,1 78462306a36Sopenharmony_ci LWSYNC 78562306a36Sopenharmony_ciglobl(end_lwsync_fixup_test) 78662306a36Sopenharmony_ci 78762306a36Sopenharmony_ciglobl(lwsync_fixup_test_expected_LWSYNC) 78862306a36Sopenharmony_ci1: or 1,1,1 78962306a36Sopenharmony_ci lwsync 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ciglobl(lwsync_fixup_test_expected_SYNC) 79262306a36Sopenharmony_ci1: or 1,1,1 79362306a36Sopenharmony_ci sync 79462306a36Sopenharmony_ci 79562306a36Sopenharmony_ciglobl(ftr_fixup_prefix1) 79662306a36Sopenharmony_ci or 1,1,1 79762306a36Sopenharmony_ci .long OP_PREFIX << 26 79862306a36Sopenharmony_ci .long 0x0000000 79962306a36Sopenharmony_ci or 2,2,2 80062306a36Sopenharmony_ciglobl(end_ftr_fixup_prefix1) 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_ciglobl(ftr_fixup_prefix1_orig) 80362306a36Sopenharmony_ci or 1,1,1 80462306a36Sopenharmony_ci .long OP_PREFIX << 26 80562306a36Sopenharmony_ci .long 0x0000000 80662306a36Sopenharmony_ci or 2,2,2 80762306a36Sopenharmony_ci 80862306a36Sopenharmony_ciglobl(ftr_fixup_prefix1_expected) 80962306a36Sopenharmony_ci or 1,1,1 81062306a36Sopenharmony_ci nop 81162306a36Sopenharmony_ci nop 81262306a36Sopenharmony_ci or 2,2,2 81362306a36Sopenharmony_ci 81462306a36Sopenharmony_ciglobl(ftr_fixup_prefix2) 81562306a36Sopenharmony_ci or 1,1,1 81662306a36Sopenharmony_ci .long OP_PREFIX << 26 81762306a36Sopenharmony_ci .long 0x0000000 81862306a36Sopenharmony_ci or 2,2,2 81962306a36Sopenharmony_ciglobl(end_ftr_fixup_prefix2) 82062306a36Sopenharmony_ci 82162306a36Sopenharmony_ciglobl(ftr_fixup_prefix2_orig) 82262306a36Sopenharmony_ci or 1,1,1 82362306a36Sopenharmony_ci .long OP_PREFIX << 26 82462306a36Sopenharmony_ci .long 0x0000000 82562306a36Sopenharmony_ci or 2,2,2 82662306a36Sopenharmony_ci 82762306a36Sopenharmony_ciglobl(ftr_fixup_prefix2_alt) 82862306a36Sopenharmony_ci .long OP_PREFIX << 26 82962306a36Sopenharmony_ci .long 0x0000001 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_ciglobl(ftr_fixup_prefix2_expected) 83262306a36Sopenharmony_ci or 1,1,1 83362306a36Sopenharmony_ci .long OP_PREFIX << 26 83462306a36Sopenharmony_ci .long 0x0000001 83562306a36Sopenharmony_ci or 2,2,2 83662306a36Sopenharmony_ci 83762306a36Sopenharmony_ciglobl(ftr_fixup_prefix3) 83862306a36Sopenharmony_ci or 1,1,1 83962306a36Sopenharmony_ci .long OP_PREFIX << 26 84062306a36Sopenharmony_ci .long 0x0000000 84162306a36Sopenharmony_ci or 2,2,2 84262306a36Sopenharmony_ci or 3,3,3 84362306a36Sopenharmony_ciglobl(end_ftr_fixup_prefix3) 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_ciglobl(ftr_fixup_prefix3_orig) 84662306a36Sopenharmony_ci or 1,1,1 84762306a36Sopenharmony_ci .long OP_PREFIX << 26 84862306a36Sopenharmony_ci .long 0x0000000 84962306a36Sopenharmony_ci or 2,2,2 85062306a36Sopenharmony_ci or 3,3,3 85162306a36Sopenharmony_ci 85262306a36Sopenharmony_ciglobl(ftr_fixup_prefix3_alt) 85362306a36Sopenharmony_ci .long OP_PREFIX << 26 85462306a36Sopenharmony_ci .long 0x0000001 85562306a36Sopenharmony_ci nop 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_ciglobl(ftr_fixup_prefix3_expected) 85862306a36Sopenharmony_ci or 1,1,1 85962306a36Sopenharmony_ci .long OP_PREFIX << 26 86062306a36Sopenharmony_ci .long 0x0000001 86162306a36Sopenharmony_ci nop 86262306a36Sopenharmony_ci or 3,3,3 863