1/* 2 * Copyright 2008 Michael Ellerman, IBM Corporation. 3 * 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 8 * 2 of the License, or (at your option) any later version. 9 */ 10 11#include <asm/feature-fixups.h> 12#include <asm/ppc_asm.h> 13#include <asm/synch.h> 14 15 .text 16 17#define globl(x) \ 18 .globl x; \ 19x: 20 21globl(ftr_fixup_test1) 22 or 1,1,1 23 or 2,2,2 /* fixup will nop out this instruction */ 24 or 3,3,3 25 26globl(end_ftr_fixup_test1) 27 28globl(ftr_fixup_test1_orig) 29 or 1,1,1 30 or 2,2,2 31 or 3,3,3 32 33globl(ftr_fixup_test1_expected) 34 or 1,1,1 35 nop 36 or 3,3,3 37 38globl(ftr_fixup_test2) 39 or 1,1,1 40 or 2,2,2 /* fixup will replace this with ftr_fixup_test2_alt */ 41 or 3,3,3 42 43globl(end_ftr_fixup_test2) 44 45globl(ftr_fixup_test2_orig) 46 or 1,1,1 47 or 2,2,2 48 or 3,3,3 49 50globl(ftr_fixup_test2_alt) 51 or 31,31,31 52 53globl(ftr_fixup_test2_expected) 54 or 1,1,1 55 or 31,31,31 56 or 3,3,3 57 58globl(ftr_fixup_test3) 59 or 1,1,1 60 or 2,2,2 /* fixup will fail to replace this */ 61 or 3,3,3 62 63globl(end_ftr_fixup_test3) 64 65globl(ftr_fixup_test3_orig) 66 or 1,1,1 67 or 2,2,2 68 or 3,3,3 69 70globl(ftr_fixup_test3_alt) 71 or 31,31,31 72 or 31,31,31 73 74globl(ftr_fixup_test4) 75 or 1,1,1 76 or 2,2,2 77 or 2,2,2 78 or 2,2,2 79 or 2,2,2 80 or 3,3,3 81 82globl(end_ftr_fixup_test4) 83 84globl(ftr_fixup_test4_expected) 85 or 1,1,1 86 or 31,31,31 87 or 31,31,31 88 nop 89 nop 90 or 3,3,3 91 92globl(ftr_fixup_test4_orig) 93 or 1,1,1 94 or 2,2,2 95 or 2,2,2 96 or 2,2,2 97 or 2,2,2 98 or 3,3,3 99 100globl(ftr_fixup_test4_alt) 101 or 31,31,31 102 or 31,31,31 103 104 105globl(ftr_fixup_test5) 106 or 1,1,1 107BEGIN_FTR_SECTION 108 or 2,2,2 109 or 2,2,2 110 or 2,2,2 111 or 2,2,2 112 or 2,2,2 113 or 2,2,2 114 or 2,2,2 115FTR_SECTION_ELSE 1162: b 3f 1173: or 5,5,5 118 beq 3b 119 b 1f 120 or 6,6,6 121 b 2b 1221: bdnz 3b 123ALT_FTR_SECTION_END(0, 1) 124 or 1,1,1 125 126globl(end_ftr_fixup_test5) 127 128globl(ftr_fixup_test5_expected) 129 or 1,1,1 1302: b 3f 1313: or 5,5,5 132 beq 3b 133 b 1f 134 or 6,6,6 135 b 2b 1361: bdnz 3b 137 or 1,1,1 138 139globl(ftr_fixup_test6) 1401: or 1,1,1 141BEGIN_FTR_SECTION 142 or 5,5,5 1432: PPC_LCMPI r3,0 144 beq 4f 145 blt 2b 146 b 1b 147 b 4f 148FTR_SECTION_ELSE 1492: or 2,2,2 150 PPC_LCMPI r3,1 151 beq 3f 152 blt 2b 153 b 3f 154 b 1b 155ALT_FTR_SECTION_END(0, 1) 1563: or 1,1,1 157 or 2,2,2 1584: or 3,3,3 159 160globl(end_ftr_fixup_test6) 161 162globl(ftr_fixup_test6_expected) 1631: or 1,1,1 1642: or 2,2,2 165 PPC_LCMPI r3,1 166 beq 3f 167 blt 2b 168 b 3f 169 b 1b 1702: or 1,1,1 171 or 2,2,2 1723: or 3,3,3 173 174 175#define MAKE_MACRO_TEST(TYPE) \ 176globl(ftr_fixup_test_ ##TYPE##_macros) \ 177 or 1,1,1; \ 178 /* Basic test, this section should all be nop'ed */ \ 179BEGIN_##TYPE##_SECTION \ 180 or 2,2,2; \ 181 or 2,2,2; \ 182 or 2,2,2; \ 183END_##TYPE##_SECTION(0, 1) \ 184 or 1,1,1; \ 185 or 1,1,1; \ 186 /* Basic test, this section should NOT be nop'ed */ \ 187BEGIN_##TYPE##_SECTION \ 188 or 2,2,2; \ 189 or 2,2,2; \ 190 or 2,2,2; \ 191END_##TYPE##_SECTION(0, 0) \ 192 or 1,1,1; \ 193 or 1,1,1; \ 194 /* Nesting test, inner section should be nop'ed */ \ 195BEGIN_##TYPE##_SECTION \ 196 or 2,2,2; \ 197 or 2,2,2; \ 198BEGIN_##TYPE##_SECTION_NESTED(80) \ 199 or 3,3,3; \ 200 or 3,3,3; \ 201END_##TYPE##_SECTION_NESTED(0, 1, 80) \ 202 or 2,2,2; \ 203 or 2,2,2; \ 204END_##TYPE##_SECTION(0, 0) \ 205 or 1,1,1; \ 206 or 1,1,1; \ 207 /* Nesting test, whole section should be nop'ed */ \ 208BEGIN_##TYPE##_SECTION \ 209 or 2,2,2; \ 210 or 2,2,2; \ 211BEGIN_##TYPE##_SECTION_NESTED(80) \ 212 or 3,3,3; \ 213 or 3,3,3; \ 214END_##TYPE##_SECTION_NESTED(0, 0, 80) \ 215 or 2,2,2; \ 216 or 2,2,2; \ 217END_##TYPE##_SECTION(0, 1) \ 218 or 1,1,1; \ 219 or 1,1,1; \ 220 /* Nesting test, none should be nop'ed */ \ 221BEGIN_##TYPE##_SECTION \ 222 or 2,2,2; \ 223 or 2,2,2; \ 224BEGIN_##TYPE##_SECTION_NESTED(80) \ 225 or 3,3,3; \ 226 or 3,3,3; \ 227END_##TYPE##_SECTION_NESTED(0, 0, 80) \ 228 or 2,2,2; \ 229 or 2,2,2; \ 230END_##TYPE##_SECTION(0, 0) \ 231 or 1,1,1; \ 232 or 1,1,1; \ 233 /* Basic alt section test, default case should be taken */ \ 234BEGIN_##TYPE##_SECTION \ 235 or 3,3,3; \ 236 or 3,3,3; \ 237 or 3,3,3; \ 238##TYPE##_SECTION_ELSE \ 239 or 5,5,5; \ 240 or 5,5,5; \ 241ALT_##TYPE##_SECTION_END(0, 0) \ 242 or 1,1,1; \ 243 or 1,1,1; \ 244 /* Basic alt section test, else case should be taken */ \ 245BEGIN_##TYPE##_SECTION \ 246 or 3,3,3; \ 247 or 3,3,3; \ 248 or 3,3,3; \ 249##TYPE##_SECTION_ELSE \ 250 or 31,31,31; \ 251 or 31,31,31; \ 252 or 31,31,31; \ 253ALT_##TYPE##_SECTION_END(0, 1) \ 254 or 1,1,1; \ 255 or 1,1,1; \ 256 /* Alt with smaller else case, should be padded with nops */ \ 257BEGIN_##TYPE##_SECTION \ 258 or 3,3,3; \ 259 or 3,3,3; \ 260 or 3,3,3; \ 261##TYPE##_SECTION_ELSE \ 262 or 31,31,31; \ 263ALT_##TYPE##_SECTION_END(0, 1) \ 264 or 1,1,1; \ 265 or 1,1,1; \ 266 /* Alt section with nested section in default case */ \ 267 /* Default case should be taken, with nop'ed inner section */ \ 268BEGIN_##TYPE##_SECTION \ 269 or 3,3,3; \ 270BEGIN_##TYPE##_SECTION_NESTED(95) \ 271 or 3,3,3; \ 272 or 3,3,3; \ 273END_##TYPE##_SECTION_NESTED(0, 1, 95) \ 274 or 3,3,3; \ 275##TYPE##_SECTION_ELSE \ 276 or 2,2,2; \ 277 or 2,2,2; \ 278ALT_##TYPE##_SECTION_END(0, 0) \ 279 or 1,1,1; \ 280 or 1,1,1; \ 281 /* Alt section with nested section in else, default taken */ \ 282BEGIN_##TYPE##_SECTION \ 283 or 3,3,3; \ 284 or 3,3,3; \ 285 or 3,3,3; \ 286##TYPE##_SECTION_ELSE \ 287 or 5,5,5; \ 288BEGIN_##TYPE##_SECTION_NESTED(95) \ 289 or 3,3,3; \ 290END_##TYPE##_SECTION_NESTED(0, 1, 95) \ 291 or 5,5,5; \ 292ALT_##TYPE##_SECTION_END(0, 0) \ 293 or 1,1,1; \ 294 or 1,1,1; \ 295 /* Alt section with nested section in else, else taken & nop */ \ 296BEGIN_##TYPE##_SECTION \ 297 or 3,3,3; \ 298 or 3,3,3; \ 299 or 3,3,3; \ 300##TYPE##_SECTION_ELSE \ 301 or 5,5,5; \ 302BEGIN_##TYPE##_SECTION_NESTED(95) \ 303 or 3,3,3; \ 304END_##TYPE##_SECTION_NESTED(0, 1, 95) \ 305 or 5,5,5; \ 306ALT_##TYPE##_SECTION_END(0, 1) \ 307 or 1,1,1; \ 308 or 1,1,1; \ 309 /* Feature section with nested alt section, default taken */ \ 310BEGIN_##TYPE##_SECTION \ 311 or 2,2,2; \ 312BEGIN_##TYPE##_SECTION_NESTED(95) \ 313 or 1,1,1; \ 314##TYPE##_SECTION_ELSE_NESTED(95) \ 315 or 5,5,5; \ 316ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \ 317 or 2,2,2; \ 318END_##TYPE##_SECTION(0, 0) \ 319 or 1,1,1; \ 320 or 1,1,1; \ 321 /* Feature section with nested alt section, else taken */ \ 322BEGIN_##TYPE##_SECTION \ 323 or 2,2,2; \ 324BEGIN_##TYPE##_SECTION_NESTED(95) \ 325 or 1,1,1; \ 326##TYPE##_SECTION_ELSE_NESTED(95) \ 327 or 5,5,5; \ 328ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 329 or 2,2,2; \ 330END_##TYPE##_SECTION(0, 0) \ 331 or 1,1,1; \ 332 or 1,1,1; \ 333 /* Feature section with nested alt section, all nop'ed */ \ 334BEGIN_##TYPE##_SECTION \ 335 or 2,2,2; \ 336BEGIN_##TYPE##_SECTION_NESTED(95) \ 337 or 1,1,1; \ 338##TYPE##_SECTION_ELSE_NESTED(95) \ 339 or 5,5,5; \ 340ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \ 341 or 2,2,2; \ 342END_##TYPE##_SECTION(0, 1) \ 343 or 1,1,1; \ 344 or 1,1,1; \ 345 /* Nested alt sections, default with inner default taken */ \ 346BEGIN_##TYPE##_SECTION \ 347 or 2,2,2; \ 348BEGIN_##TYPE##_SECTION_NESTED(95) \ 349 or 1,1,1; \ 350##TYPE##_SECTION_ELSE_NESTED(95) \ 351 or 5,5,5; \ 352ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \ 353 or 2,2,2; \ 354##TYPE##_SECTION_ELSE \ 355 or 31,31,31; \ 356BEGIN_##TYPE##_SECTION_NESTED(94) \ 357 or 5,5,5; \ 358##TYPE##_SECTION_ELSE_NESTED(94) \ 359 or 1,1,1; \ 360ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \ 361 or 31,31,31; \ 362ALT_##TYPE##_SECTION_END(0, 0) \ 363 or 1,1,1; \ 364 or 1,1,1; \ 365 /* Nested alt sections, default with inner else taken */ \ 366BEGIN_##TYPE##_SECTION \ 367 or 2,2,2; \ 368BEGIN_##TYPE##_SECTION_NESTED(95) \ 369 or 1,1,1; \ 370##TYPE##_SECTION_ELSE_NESTED(95) \ 371 or 5,5,5; \ 372ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 373 or 2,2,2; \ 374##TYPE##_SECTION_ELSE \ 375 or 31,31,31; \ 376BEGIN_##TYPE##_SECTION_NESTED(94) \ 377 or 5,5,5; \ 378##TYPE##_SECTION_ELSE_NESTED(94) \ 379 or 1,1,1; \ 380ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \ 381 or 31,31,31; \ 382ALT_##TYPE##_SECTION_END(0, 0) \ 383 or 1,1,1; \ 384 or 1,1,1; \ 385 /* Nested alt sections, else with inner default taken */ \ 386BEGIN_##TYPE##_SECTION \ 387 or 2,2,2; \ 388BEGIN_##TYPE##_SECTION_NESTED(95) \ 389 or 1,1,1; \ 390##TYPE##_SECTION_ELSE_NESTED(95) \ 391 or 5,5,5; \ 392ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 393 or 2,2,2; \ 394##TYPE##_SECTION_ELSE \ 395 or 31,31,31; \ 396BEGIN_##TYPE##_SECTION_NESTED(94) \ 397 or 5,5,5; \ 398##TYPE##_SECTION_ELSE_NESTED(94) \ 399 or 1,1,1; \ 400ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \ 401 or 31,31,31; \ 402ALT_##TYPE##_SECTION_END(0, 1) \ 403 or 1,1,1; \ 404 or 1,1,1; \ 405 /* Nested alt sections, else with inner else taken */ \ 406BEGIN_##TYPE##_SECTION \ 407 or 2,2,2; \ 408BEGIN_##TYPE##_SECTION_NESTED(95) \ 409 or 1,1,1; \ 410##TYPE##_SECTION_ELSE_NESTED(95) \ 411 or 5,5,5; \ 412ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \ 413 or 2,2,2; \ 414##TYPE##_SECTION_ELSE \ 415 or 31,31,31; \ 416BEGIN_##TYPE##_SECTION_NESTED(94) \ 417 or 5,5,5; \ 418##TYPE##_SECTION_ELSE_NESTED(94) \ 419 or 1,1,1; \ 420ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) \ 421 or 31,31,31; \ 422ALT_##TYPE##_SECTION_END(0, 1) \ 423 or 1,1,1; \ 424 or 1,1,1; \ 425 /* Nested alt sections, else can have large else case */ \ 426BEGIN_##TYPE##_SECTION \ 427 or 2,2,2; \ 428 or 2,2,2; \ 429 or 2,2,2; \ 430 or 2,2,2; \ 431##TYPE##_SECTION_ELSE \ 432BEGIN_##TYPE##_SECTION_NESTED(94) \ 433 or 5,5,5; \ 434 or 5,5,5; \ 435 or 5,5,5; \ 436 or 5,5,5; \ 437##TYPE##_SECTION_ELSE_NESTED(94) \ 438 or 1,1,1; \ 439 or 1,1,1; \ 440 or 1,1,1; \ 441 or 1,1,1; \ 442ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) \ 443ALT_##TYPE##_SECTION_END(0, 1) \ 444 or 1,1,1; \ 445 or 1,1,1; 446 447#define MAKE_MACRO_TEST_EXPECTED(TYPE) \ 448globl(ftr_fixup_test_ ##TYPE##_macros_expected) \ 449 or 1,1,1; \ 450 /* Basic test, this section should all be nop'ed */ \ 451/* BEGIN_##TYPE##_SECTION */ \ 452 nop; \ 453 nop; \ 454 nop; \ 455/* END_##TYPE##_SECTION(0, 1) */ \ 456 or 1,1,1; \ 457 or 1,1,1; \ 458 /* Basic test, this section should NOT be nop'ed */ \ 459/* BEGIN_##TYPE##_SECTION */ \ 460 or 2,2,2; \ 461 or 2,2,2; \ 462 or 2,2,2; \ 463/* END_##TYPE##_SECTION(0, 0) */ \ 464 or 1,1,1; \ 465 or 1,1,1; \ 466 /* Nesting test, inner section should be nop'ed */ \ 467/* BEGIN_##TYPE##_SECTION */ \ 468 or 2,2,2; \ 469 or 2,2,2; \ 470/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \ 471 nop; \ 472 nop; \ 473/* END_##TYPE##_SECTION_NESTED(0, 1, 80) */ \ 474 or 2,2,2; \ 475 or 2,2,2; \ 476/* END_##TYPE##_SECTION(0, 0) */ \ 477 or 1,1,1; \ 478 or 1,1,1; \ 479 /* Nesting test, whole section should be nop'ed */ \ 480 /* NB. inner section is not nop'ed, but then entire outer is */ \ 481/* BEGIN_##TYPE##_SECTION */ \ 482 nop; \ 483 nop; \ 484/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \ 485 nop; \ 486 nop; \ 487/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \ 488 nop; \ 489 nop; \ 490/* END_##TYPE##_SECTION(0, 1) */ \ 491 or 1,1,1; \ 492 or 1,1,1; \ 493 /* Nesting test, none should be nop'ed */ \ 494/* BEGIN_##TYPE##_SECTION */ \ 495 or 2,2,2; \ 496 or 2,2,2; \ 497/* BEGIN_##TYPE##_SECTION_NESTED(80) */ \ 498 or 3,3,3; \ 499 or 3,3,3; \ 500/* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \ 501 or 2,2,2; \ 502 or 2,2,2; \ 503/* END_##TYPE##_SECTION(0, 0) */ \ 504 or 1,1,1; \ 505 or 1,1,1; \ 506 /* Basic alt section test, default case should be taken */ \ 507/* BEGIN_##TYPE##_SECTION */ \ 508 or 3,3,3; \ 509 or 3,3,3; \ 510 or 3,3,3; \ 511/* ##TYPE##_SECTION_ELSE */ \ 512 /* or 5,5,5; */ \ 513 /* or 5,5,5; */ \ 514/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 515 or 1,1,1; \ 516 or 1,1,1; \ 517 /* Basic alt section test, else case should be taken */ \ 518/* BEGIN_##TYPE##_SECTION */ \ 519 /* or 3,3,3; */ \ 520 /* or 3,3,3; */ \ 521 /* or 3,3,3; */ \ 522/* ##TYPE##_SECTION_ELSE */ \ 523 or 31,31,31; \ 524 or 31,31,31; \ 525 or 31,31,31; \ 526/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 527 or 1,1,1; \ 528 or 1,1,1; \ 529 /* Alt with smaller else case, should be padded with nops */ \ 530/* BEGIN_##TYPE##_SECTION */ \ 531 /* or 3,3,3; */ \ 532 /* or 3,3,3; */ \ 533 /* or 3,3,3; */ \ 534/* ##TYPE##_SECTION_ELSE */ \ 535 or 31,31,31; \ 536 nop; \ 537 nop; \ 538/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 539 or 1,1,1; \ 540 or 1,1,1; \ 541 /* Alt section with nested section in default case */ \ 542 /* Default case should be taken, with nop'ed inner section */ \ 543/* BEGIN_##TYPE##_SECTION */ \ 544 or 3,3,3; \ 545/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 546 nop; \ 547 nop; \ 548/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \ 549 or 3,3,3; \ 550/* ##TYPE##_SECTION_ELSE */ \ 551 /* or 2,2,2; */ \ 552 /* or 2,2,2; */ \ 553/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 554 or 1,1,1; \ 555 or 1,1,1; \ 556 /* Alt section with nested section in else, default taken */ \ 557/* BEGIN_##TYPE##_SECTION */ \ 558 or 3,3,3; \ 559 or 3,3,3; \ 560 or 3,3,3; \ 561/* ##TYPE##_SECTION_ELSE */ \ 562 /* or 5,5,5; */ \ 563/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 564 /* or 3,3,3; */ \ 565/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \ 566 /* or 5,5,5; */ \ 567/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 568 or 1,1,1; \ 569 or 1,1,1; \ 570 /* Alt section with nested section in else, else taken & nop */ \ 571/* BEGIN_##TYPE##_SECTION */ \ 572 /* or 3,3,3; */ \ 573 /* or 3,3,3; */ \ 574 /* or 3,3,3; */ \ 575/* ##TYPE##_SECTION_ELSE */ \ 576 or 5,5,5; \ 577/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 578 nop; \ 579/* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \ 580 or 5,5,5; \ 581/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 582 or 1,1,1; \ 583 or 1,1,1; \ 584 /* Feature section with nested alt section, default taken */ \ 585/* BEGIN_##TYPE##_SECTION */ \ 586 or 2,2,2; \ 587/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 588 or 1,1,1; \ 589/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 590 /* or 5,5,5; */ \ 591/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \ 592 or 2,2,2; \ 593/* END_##TYPE##_SECTION(0, 0) */ \ 594 or 1,1,1; \ 595 or 1,1,1; \ 596 /* Feature section with nested alt section, else taken */ \ 597/* BEGIN_##TYPE##_SECTION */ \ 598 or 2,2,2; \ 599/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 600 /* or 1,1,1; */ \ 601/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 602 or 5,5,5; \ 603/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 604 or 2,2,2; \ 605/* END_##TYPE##_SECTION(0, 0) */ \ 606 or 1,1,1; \ 607 or 1,1,1; \ 608 /* Feature section with nested alt section, all nop'ed */ \ 609/* BEGIN_##TYPE##_SECTION */ \ 610 nop; \ 611/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 612 nop; \ 613/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 614 /* or 5,5,5; */ \ 615/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \ 616 nop; \ 617/* END_##TYPE##_SECTION(0, 1) */ \ 618 or 1,1,1; \ 619 or 1,1,1; \ 620 /* Nested alt sections, default with inner default taken */ \ 621/* BEGIN_##TYPE##_SECTION */ \ 622 or 2,2,2; \ 623/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 624 or 1,1,1; \ 625/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 626 /* or 5,5,5; */ \ 627/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \ 628 or 2,2,2; \ 629/* ##TYPE##_SECTION_ELSE */ \ 630 /* or 31,31,31; */ \ 631/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 632 /* or 5,5,5; */ \ 633/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 634 /* or 1,1,1; */ \ 635/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \ 636 /* or 31,31,31; */ \ 637/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 638 or 1,1,1; \ 639 or 1,1,1; \ 640 /* Nested alt sections, default with inner else taken */ \ 641/* BEGIN_##TYPE##_SECTION */ \ 642 or 2,2,2; \ 643/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 644 /* or 1,1,1; */ \ 645/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 646 or 5,5,5; \ 647/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 648 or 2,2,2; \ 649/* ##TYPE##_SECTION_ELSE */ \ 650 /* or 31,31,31; */ \ 651/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 652 /* or 5,5,5; */ \ 653/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 654 /* or 1,1,1; */ \ 655/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \ 656 /* or 31,31,31; */ \ 657/* ALT_##TYPE##_SECTION_END(0, 0) */ \ 658 or 1,1,1; \ 659 or 1,1,1; \ 660 /* Nested alt sections, else with inner default taken */ \ 661/* BEGIN_##TYPE##_SECTION */ \ 662 /* or 2,2,2; */ \ 663/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 664 /* or 1,1,1; */ \ 665/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 666 /* or 5,5,5; */ \ 667/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 668 /* or 2,2,2; */ \ 669/* ##TYPE##_SECTION_ELSE */ \ 670 or 31,31,31; \ 671/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 672 or 5,5,5; \ 673/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 674 /* or 1,1,1; */ \ 675/* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \ 676 or 31,31,31; \ 677/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 678 or 1,1,1; \ 679 or 1,1,1; \ 680 /* Nested alt sections, else with inner else taken */ \ 681/* BEGIN_##TYPE##_SECTION */ \ 682 /* or 2,2,2; */ \ 683/* BEGIN_##TYPE##_SECTION_NESTED(95) */ \ 684 /* or 1,1,1; */ \ 685/* ##TYPE##_SECTION_ELSE_NESTED(95) */ \ 686 /* or 5,5,5; */ \ 687/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \ 688 /* or 2,2,2; */ \ 689/* ##TYPE##_SECTION_ELSE */ \ 690 or 31,31,31; \ 691/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 692 /* or 5,5,5; */ \ 693/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 694 or 1,1,1; \ 695/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \ 696 or 31,31,31; \ 697/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 698 or 1,1,1; \ 699 or 1,1,1; \ 700 /* Nested alt sections, else can have large else case */ \ 701/* BEGIN_##TYPE##_SECTION */ \ 702 /* or 2,2,2; */ \ 703 /* or 2,2,2; */ \ 704 /* or 2,2,2; */ \ 705 /* or 2,2,2; */ \ 706/* ##TYPE##_SECTION_ELSE */ \ 707/* BEGIN_##TYPE##_SECTION_NESTED(94) */ \ 708 /* or 5,5,5; */ \ 709 /* or 5,5,5; */ \ 710 /* or 5,5,5; */ \ 711 /* or 5,5,5; */ \ 712/* ##TYPE##_SECTION_ELSE_NESTED(94) */ \ 713 or 1,1,1; \ 714 or 1,1,1; \ 715 or 1,1,1; \ 716 or 1,1,1; \ 717/* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \ 718/* ALT_##TYPE##_SECTION_END(0, 1) */ \ 719 or 1,1,1; \ 720 or 1,1,1; 721 722MAKE_MACRO_TEST(FTR); 723MAKE_MACRO_TEST_EXPECTED(FTR); 724 725#ifdef CONFIG_PPC64 726MAKE_MACRO_TEST(FW_FTR); 727MAKE_MACRO_TEST_EXPECTED(FW_FTR); 728#endif 729 730globl(lwsync_fixup_test) 7311: or 1,1,1 732 LWSYNC 733globl(end_lwsync_fixup_test) 734 735globl(lwsync_fixup_test_expected_LWSYNC) 7361: or 1,1,1 737 lwsync 738 739globl(lwsync_fixup_test_expected_SYNC) 7401: or 1,1,1 741 sync 742 743