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