1/* 2 * Some or all of this work - Copyright (c) 2006 - 2016, Intel Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * Neither the name of Intel Corporation nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29/* 30 * Check recursive calls to methods 31 * 32 * recursively called methods may have internal NS objects and Switch operations 33 */ 34 35Name(z177, 177) 36 37/* 38 * Simplest example of recursive calls of methods 39 * not overburden with the additional checkings. 40 * 41 * When the method m100 is invoked last time (44-th invocation), 42 * we have there the following hierarchy of method calls - 45 method 43 * invocations in progress: 44 * 45 * m100 ... 46 * m200 ... ... 47 * m300 ... ... ... ... 48 * m400 ... ... ... ... ... ... ... ... 49 * 50 * The sequence of invocations is this: 51 * 52 * m100 0,22,44 53 * m200 1,11,21 23,33,43 54 * m300 2, 6,10 12,16,20 24,28,32 34,38,42 55 * m400 3, 4, 5 7, 8, 9 13,14,15 17,18,19 25,26,27 29,30,31 35,36,37 39,40,41 56 */ 57Method(m0ef,, Serialized) 58{ 59 Name(ts, "m0ef") 60 61 Name(rpt0, 0) 62 63 /* 64 * Total number of calls of the same Recursively Called method (RCM), 65 * the first call is counted there too. 66 */ 67 Name(n000, 3) 68 69 Name(cnt0, 0) // how many methods are in progress simultaneously 70 Name(max0, 0) // maximal number of methods being in progress simultaneously 71 72 /* 73 * Open method execution 74 * 75 * arg0 - ID of method (1,2,3...) 76 * arg1 - the message to be reported 77 */ 78 Method(m800, 2) 79 { 80 if (rpt0) { 81 Store(arg1, Debug) 82 } 83 Increment(cnt0) 84 85 if (LGreater(cnt0, max0)) { 86 Store(cnt0, max0) 87 } 88 } 89 90 /* 91 * Close method execution 92 * 93 * arg0 - ID of method (1,2,3...) 94 */ 95 Method(m801, 1) 96 { 97 Decrement(cnt0) 98 } 99 100 /* 101 * Arguments of methods: 102 * arg0 - 0 - the first call, otherwise - recursive calls 103 */ 104 105 Name(c000, 3) 106 107 Method(m100,, Serialized) 108 { 109 Name(c100, 3) 110 Method(m200,, Serialized) 111 { 112 Name(c200, 3) 113 Method(m300,, Serialized) 114 { 115 Name(c300, 3) 116 Method(m400) 117 { 118 m800(4, "m400") 119 Decrement(c300) 120 if (LEqual(c300, 0)) { 121 m300() 122 } else { 123 m400() 124 } 125 m801(4) 126 } 127 m800(3, "m300") 128 Decrement(c200) 129 if (LEqual(c200, 0)) { 130 m200() 131 } else { 132 m400() 133 } 134 m801(3) 135 } 136 m800(2, "m200") 137 Decrement(c100) 138 if (LEqual(c100, 0)) { 139 m100() 140 } else { 141 m300() 142 } 143 m801(2) 144 } 145 m800(1, "m100") 146 Decrement(c000) 147 if (LEqual(c000, 0)) { 148 // m000() 149 } else { 150 m200() 151 } 152 m801(1) 153 } 154 155 CH03(ts, z177, 0x000, 0, 0) 156 157 m100() 158 159 Concatenate("Maximal number of methods being in progress simultaneously ", max0, Debug) 160 161 /* Check Maximal number of methods being in progress simultaneously */ 162 if (LNotEqual(max0, 45)) { 163 err(ts, z177, 0x001, 0, 0, max0, 45) 164 } 165 166 /* Overall got out of methods the same number as got into methods */ 167 if (LNotEqual(cnt0, 0)) { 168 err(ts, z177, 0x002, 0, 0, cnt0, 0) 169 } 170 171 CH03(ts, z177, 0x003, 0, 0) 172} 173 174/* 175 * The same hierarchy of recursive calls like m0ef 176 * but more checkings added. 177 */ 178Method(m0fb,, Serialized) 179{ 180 Name(ts, "m0fb") 181 182 Name(rpt0, 0) 183 184 /* 185 * Total number of calls of the same Recursively Called method (RCM), 186 * the first call is counted there too. 187 */ 188 Name(n000, 3) 189 190 Name(cnt0, 0) // how many methods are in progress simultaneously 191 Name(max0, 0) // maximal number of methods being in progress simultaneously 192 Name(cnt1, 0) // summary of total indexes 193 194 Name(ix00, 0) // total index of current call 195 Name(ind1, 0) // index of call to m100 196 Name(ind2, 0) // index of call to m200 197 Name(ind3, 0) // index of call to m300 198 Name(ind4, 0) // index of call to m400 199 200 Name(n100, 3) // number of calls to m100 201 Name(n200, 6) // number of calls to m200 202 Name(n300, 12) // number of calls to m300 203 Name(n400, 24) // number of calls to m400 204 205 Name(p100, Package(n100) {}) // Package to keep total indexs of call to m100 206 Name(p200, Package(n200) {}) // Package to keep total indexs of call to m200 207 Name(p300, Package(n300) {}) // Package to keep total indexs of call to m300 208 Name(p400, Package(n400) {}) // Package to keep total indexs of call to m400 209 210 // Benchmarks of indexes 211 Name(b1b0, Buffer(n100) {0,22,44}) 212 Name(b2b0, Buffer(n200) {1,11,21, 23,33,43}) 213 Name(b3b0, Buffer(n300) {2, 6,10, 12,16,20, 24,28,32, 34,38,42}) 214 Name(b4b0, Buffer(n400) {3, 4, 5, 7, 8, 9, 13,14,15, 17,18,19, 215 25,26,27, 29,30,31, 35,36,37, 39,40,41}) 216 217 /* 218 * Open method execution 219 * 220 * arg0 - ID of method (1,2,3...) 221 * arg1 - the message to be reported 222 */ 223 Method(m800, 2) 224 { 225 if (rpt0) { 226 Store(arg1, Debug) 227 } 228 Increment(cnt0) 229 230 if (LGreater(cnt0, max0)) { 231 Store(cnt0, max0) 232 } 233 234 Switch (arg0) { 235 Case (1) { 236 Store(ix00, Index(p100, ind1)) 237 Increment(ind1) 238 } 239 Case (2) { 240 Store(ix00, Index(p200, ind2)) 241 Increment(ind2) 242 } 243 Case (3) { 244 Store(ix00, Index(p300, ind3)) 245 Increment(ind3) 246 } 247 Case (4) { 248 Store(ix00, Index(p400, ind4)) 249 Increment(ind4) 250 } 251 } 252 253 Increment(ix00) // total index 254 } 255 256 /* 257 * Close method execution 258 * 259 * arg0 - ID of method (1,2,3...) 260 */ 261 Method(m801, 1) 262 { 263 Decrement(cnt0) 264 } 265 266 /* 267 * arg0 - ID of method (1,2,3...) 268 * arg1 - number of elements to be compared 269 * arg2 - Package 270 * arg3 - Package with the benchmark values 271 */ 272 Method(m802, 4) { 273 Name(lpN0, 0) 274 Name(lpC0, 0) 275 276 Store(arg1, lpN0) 277 Store(0, lpC0) 278 279 While (lpN0) { 280 281 Store(DeRefOf(Index(arg2, lpC0)), Local0) 282 Store(DeRefOf(Index(arg3, lpC0)), Local1) 283 if (LNotEqual(Local0, Local1)) { 284 err(ts, z177, 0x004, 0, 0, Local0, Local1) 285 Store(arg0, Debug) 286 Store(lpC0, Debug) 287 } 288 Decrement(lpN0) 289 Increment(lpC0) 290 } 291 292 Switch (arg0) { 293 Case (1) { 294 if (LNotEqual(ind1, n100)) { 295 err(ts, z177, 0x005, 0, 0, ind1, n100) 296 } 297 } 298 Case (2) { 299 if (LNotEqual(ind2, n200)) { 300 err(ts, z177, 0x006, 0, 0, ind2, n200) 301 } 302 } 303 Case (3) { 304 if (LNotEqual(ind3, n300)) { 305 err(ts, z177, 0x007, 0, 0, ind3, n300) 306 } 307 } 308 Case (4) { 309 if (LNotEqual(ind4, n400)) { 310 err(ts, z177, 0x008, 0, 0, ind4, n400) 311 } 312 } 313 } 314 } 315 316 /* 317 * Arguments of methods: 318 * arg0 - 0 - the first call, otherwise - recursive calls 319 */ 320 321 Name(c000, 3) 322 323 Method(m100) 324 { 325 Name(ii00, 0) 326 327 Name(c100, 3) 328 Method(m200) 329 { 330 Name(ii00, 0) 331 332 Name(c200, 3) 333 Method(m300) 334 { 335 Name(ii00, 0) 336 337 Name(c300, 3) 338 Method(m400) 339 { 340 Name(ii00, 0) 341 342 Store(ind4, ii00) 343 Store(ix00, Local0) 344 m800(4, "m400") 345 Decrement(c300) 346 Switch (c300) { 347 Case (0) { 348 m300() 349 } 350 Default { 351 m400() 352 } 353 } 354 m801(4) 355 Add(cnt1, Local0, cnt1) 356 Store(DerefOf(Index(p400, ii00)), ii00) 357 if (LNotEqual(ii00, Local0)) { 358 err(ts, z177, 0x009, 0, 0, ii00, Local0) 359 } 360 } 361 Store(ind3, ii00) 362 Store(ix00, Local0) 363 m800(3, "m300") 364 Decrement(c200) 365 Switch (c200) { 366 Case (0) { 367 m200() 368 } 369 Default { 370 m400() 371 } 372 } 373 m801(3) 374 Add(cnt1, Local0, cnt1) 375 Store(DerefOf(Index(p300, ii00)), ii00) 376 if (LNotEqual(ii00, Local0)) { 377 err(ts, z177, 0x00a, 0, 0, ii00, Local0) 378 } 379 } 380 Store(ind2, ii00) 381 Store(ix00, Local0) 382 m800(2, "m200") 383 Decrement(c100) 384 Switch (c100) { 385 Case (0) { 386 m100() 387 } 388 Default { 389 m300() 390 } 391 } 392 m801(2) 393 Add(cnt1, Local0, cnt1) 394 Store(DerefOf(Index(p200, ii00)), ii00) 395 if (LNotEqual(ii00, Local0)) { 396 err(ts, z177, 0x00b, 0, 0, ii00, Local0) 397 } 398 } 399 Store(ind1, ii00) 400 Store(ix00, Local0) 401 m800(1, "m100") 402 Decrement(c000) 403 Switch (c000) { 404 Case (0) { 405 // m000() 406 } 407 Default { 408 m200() 409 } 410 } 411 m801(1) 412 Add(cnt1, Local0, cnt1) 413 Store(DerefOf(Index(p100, ii00)), ii00) 414 if (LNotEqual(ii00, Local0)) { 415 err(ts, z177, 0x00c, 0, 0, ii00, Local0) 416 } 417 } 418 419 CH03(ts, z177, 0x00d, 0, 0) 420 421 m100() 422 423 Concatenate("Maximal number of methods being in progress simultaneously ", max0, Debug) 424 425 /* Check Maximal number of methods being in progress simultaneously */ 426 if (LNotEqual(max0, 45)) { 427 err(ts, z177, 0x00e, 0, 0, max0, 45) 428 } 429 430 /* Overall got out of methods the same number as got into methods */ 431 if (LNotEqual(cnt0, 0)) { 432 err(ts, z177, 0x00f, 0, 0, cnt0, 0) 433 } 434 435 /* Check indexes */ 436 m802(1, n100, p100, b1b0) 437 m802(2, n200, p200, b2b0) 438 m802(3, n300, p300, b3b0) 439 m802(4, n400, p400, b4b0) 440 441 442 /* Check the overall sum of total indexes */ 443 if (LNotEqual(cnt1, 0x3DE)) { 444 err(ts, z177, 0x010, 0, 0, cnt1, 0x3DE) 445 } 446 447 CH03(ts, z177, 0x011, 0, 0) 448} 449 450/* 451 * The same hierarchy of recursive calls like m0ef 452 * but deeper. 453 */ 454Method(m0ff, 1, Serialized) 455{ 456 Name(ts, "m0ff") 457 458 Name(rpt0, 0) 459 460 Name(i000, 0) 461 462 /* 463 * Total number of calls of the same Recursively Called method (RCM), 464 * the first call is counted there too. 465 */ 466 Name(n000, 3) 467 468 Name(cnt0, 0) // how many methods are in progress simultaneously 469 Name(max0, 0) // maximal number of methods being in progress simultaneously 470 471 /* 472 * Open method execution 473 * 474 * arg0 - ID of method (1,2,3...) 475 * arg1 - the message to be reported 476 */ 477 Method(m800, 2) 478 { 479 if (rpt0) { 480 Store(arg1, Debug) 481 } 482 Increment(cnt0) 483 484 if (LGreater(cnt0, max0)) { 485 Store(cnt0, max0) 486 } 487 } 488 489 /* 490 * Close method execution 491 * 492 * arg0 - ID of method (1,2,3...) 493 */ 494 Method(m801, 1) 495 { 496 Decrement(cnt0) 497 } 498 499 /* 500 * Arguments of methods: 501 * arg0 - 0 - the first call, otherwise - recursive calls 502 */ 503 504 Name(c000, 3) 505 506 Method(m100,, Serialized) 507 { 508 Name(c100, 3) 509 Method(m200,, Serialized) 510 { 511 Name(c200, 3) 512 Method(m300,, Serialized) 513 { 514 Name(c300, 3) 515 Method(m400,, Serialized) 516 { 517 Name(c400, 3) 518 Method(m500,, Serialized) 519 { 520 Name(c500, 4) 521 Method(m600) 522 { 523 m800(6, "m600") 524 Decrement(c500) 525 if (LEqual(c500, 0)) { 526 m500() 527 } else { 528 m600() 529 } 530 m801(6) 531 } 532 m800(5, "m500") 533 Decrement(c400) 534 if (LEqual(c400, 0)) { 535 m400() 536 } else { 537 m600() 538 } 539 m801(5) 540 } 541 if (i000) { 542 Store(4, c400) 543 } 544 m800(4, "m400") 545 Decrement(c300) 546 if (LEqual(c300, 0)) { 547 m300() 548 } else { 549 m500() 550 } 551 m801(4) 552 } 553 m800(3, "m300") 554 Decrement(c200) 555 if (LEqual(c200, 0)) { 556 m200() 557 } else { 558 m400() 559 } 560 m801(3) 561 } 562 m800(2, "m200") 563 Decrement(c100) 564 if (LEqual(c100, 0)) { 565 m100() 566 } else { 567 m300() 568 } 569 m801(2) 570 } 571 m800(1, "m100") 572 Decrement(c000) 573 if (LEqual(c000, 0)) { 574 // m000() 575 } else { 576 m200() 577 } 578 m801(1) 579 } 580 581 CH03(ts, z177, 0x012, 0, 0) 582 583 Store(arg0, i000) 584 585 m100() 586 587 if (arg0) { 588 CH04(ts, 0, 84, z177, 0x013, 0, 0) // AE_AML_METHOD_LIMIT 589 } else { 590 Concatenate("Maximal number of methods being in progress simultaneously ", max0, Debug) 591 592 /* Check Maximal number of methods being in progress simultaneously */ 593 if (LNotEqual(max0, 221)) { 594 err(ts, z177, 0x014, 0, 0, max0, 221) 595 } 596 597 /* Overall got out of methods the same number as got into methods */ 598 if (LNotEqual(cnt0, 0)) { 599 err(ts, z177, 0x015, 0, 0, cnt0, 0) 600 } 601 } 602 603 CH03(ts, z177, 0x016, 0, 0) 604} 605 606/* 607 * Similar to m0fb but 608 * all methods are Serialized (0 level all) 609 * and no internal objects (including Methods) or Switches in those Serialized methods 610 * 611 * Check that Serialized method being invoked recursively on the same thread 612 * works well (no exceptions) in case it has none either internal objects 613 * (including Methods) or Switches. 614 */ 615Method(m18a, 1, Serialized) 616{ 617 Name(ts, "m18a") 618 619 Name(rpt0, 0) 620 Name(i000, 0) 621 622 /* 623 * Total number of calls of the same Recursively Called method (RCM), 624 * the first call is counted there too. 625 */ 626 Name(n000, 3) 627 628 Name(cnt0, 0) // how many methods are in progress simultaneously 629 Name(max0, 0) // maximal number of methods being in progress simultaneously 630 Name(cnt1, 0) // summary of total indexes 631 632 Name(ix00, 0) // total index of current call 633 Name(ind1, 0) // index of call to m100 634 Name(ind2, 0) // index of call to m200 635 Name(ind3, 0) // index of call to m300 636 Name(ind4, 0) // index of call to m400 637 638 Name(n100, 3) // number of calls to m100 639 Name(n200, 6) // number of calls to m200 640 Name(n300, 12) // number of calls to m300 641 Name(n400, 24) // number of calls to m400 642 643 Name(p100, Package(n100) {}) // Package to keep total indexs of call to m100 644 Name(p200, Package(n200) {}) // Package to keep total indexs of call to m200 645 Name(p300, Package(n300) {}) // Package to keep total indexs of call to m300 646 Name(p400, Package(0x100) {}) // Package to keep total indexs of call to m400 647 648 // Benchmarks of indexes 649 Name(b1b0, Buffer(n100) {0,22,44}) 650 Name(b2b0, Buffer(n200) {1,11,21, 23,33,43}) 651 Name(b3b0, Buffer(n300) {2, 6,10, 12,16,20, 24,28,32, 34,38,42}) 652 Name(b4b0, Buffer(0x100) {3, 4, 5, 7, 8, 9, 13,14,15, 17,18,19, 653 25,26,27, 29,30,31, 35,36,37, 39,40,41}) 654 655 /* 656 * Open method execution 657 * 658 * arg0 - ID of method (1,2,3...) 659 * arg1 - the message to be reported 660 */ 661 Method(m800, 2) 662 { 663 if (rpt0) { 664 Store(arg1, Debug) 665 } 666 Increment(cnt0) 667 668 if (LGreater(cnt0, max0)) { 669 Store(cnt0, max0) 670 } 671 672 Switch (arg0) { 673 Case (1) { 674 Store(ix00, Index(p100, ind1)) 675 Increment(ind1) 676 } 677 Case (2) { 678 Store(ix00, Index(p200, ind2)) 679 Increment(ind2) 680 } 681 Case (3) { 682 Store(ix00, Index(p300, ind3)) 683 Increment(ind3) 684 } 685 Case (4) { 686 Store(ix00, Index(p400, ind4)) 687 Increment(ind4) 688 } 689 } 690 691 Increment(ix00) // total index 692 } 693 694 /* 695 * Close method execution 696 * 697 * arg0 - ID of method (1,2,3...) 698 */ 699 Method(m801, 1) 700 { 701 Decrement(cnt0) 702 } 703 704 /* 705 * arg0 - ID of method (1,2,3...) 706 * arg1 - number of elements to be compared 707 * arg2 - Package 708 * arg3 - Package with the benchmark values 709 */ 710 Method(m802, 4) { 711 Name(lpN0, 0) 712 Name(lpC0, 0) 713 714 Store(arg1, lpN0) 715 Store(0, lpC0) 716 717 While (lpN0) { 718 719 Store(DeRefOf(Index(arg2, lpC0)), Local0) 720 Store(DeRefOf(Index(arg3, lpC0)), Local1) 721 if (LNotEqual(Local0, Local1)) { 722 err(ts, z177, 0x017, 0, 0, Local0, Local1) 723 Store(arg0, Debug) 724 Store(lpC0, Debug) 725 } 726 Decrement(lpN0) 727 Increment(lpC0) 728 } 729 730 Switch (arg0) { 731 Case (1) { 732 if (LNotEqual(ind1, n100)) { 733 err(ts, z177, 0x018, 0, 0, ind1, n100) 734 } 735 } 736 Case (2) { 737 if (LNotEqual(ind2, n200)) { 738 err(ts, z177, 0x019, 0, 0, ind2, n200) 739 } 740 } 741 Case (3) { 742 if (LNotEqual(ind3, n300)) { 743 err(ts, z177, 0x01a, 0, 0, ind3, n300) 744 } 745 } 746 Case (4) { 747 if (LNotEqual(ind4, n400)) { 748 err(ts, z177, 0x01b, 0, 0, ind4, n400) 749 } 750 } 751 } 752 } 753 754 /* 755 * Arguments of methods: 756 * arg0 - 0 - the first call, otherwise - recursive calls 757 */ 758 759 Name(c000, 3) 760 Name(c100, 3) 761 Name(c200, 3) 762 Name(c300, 3) 763 764 /* 765 * None internal objects (including Methods) or Switches in Serialized methods below 766 * 767 * Note: if Serialized method has internal objects (including Methods and Switches) 768 * it could not be invoked recursively by the same thread. 769 */ 770 Method(m100, 0, Serialized, 0) 771 { 772 Store(3, c100) 773 Store(ind1, Local1) 774 Store(ix00, Local0) 775 m800(1, "m100") 776 Decrement(c000) 777 if (LEqual(c000, 0)) { 778 // m000() 779 } else { 780 m200() 781 } 782 m801(1) 783 Add(cnt1, Local0, cnt1) 784 Store(DerefOf(Index(p100, Local1)), Local1) 785 if (LNotEqual(Local1, Local0)) { 786 err(ts, z177, 0x01c, 0, 0, Local1, Local0) 787 } 788 } 789 Method(m200, 0, Serialized, 0) 790 { 791 Store(3, c200) 792 Store(ind2, Local1) 793 Store(ix00, Local0) 794 m800(2, "m200") 795 Decrement(c100) 796 if (LEqual(c100, 0)) { 797 m100() 798 } else { 799 m300() 800 } 801 m801(2) 802 Add(cnt1, Local0, cnt1) 803 Store(DerefOf(Index(p200, Local1)), Local1) 804 if (LNotEqual(Local1, Local0)) { 805 err(ts, z177, 0x01d, 0, 0, Local1, Local0) 806 } 807 } 808 Method(m300, 0, Serialized, 0) 809 { 810 if (i000) { 811 Store(31, c300) 812 } else { 813 Store(3, c300) 814 } 815 816 Store(ind3, Local1) 817 Store(ix00, Local0) 818 m800(3, "m300") 819 Decrement(c200) 820 if (LEqual(c200, 0)) { 821 m200() 822 } else { 823 m400() 824 } 825 m801(3) 826 Add(cnt1, Local0, cnt1) 827 Store(DerefOf(Index(p300, Local1)), Local1) 828 if (LNotEqual(Local1, Local0)) { 829 err(ts, z177, 0x01e, 0, 0, Local1, Local0) 830 } 831 } 832 Method(m400, 0, Serialized, 0) 833 { 834 Store(ind4, Local1) 835 Store(ix00, Local0) 836 m800(4, "m400") 837 Decrement(c300) 838 if (LEqual(c300, 0)) { 839 m300() 840 } else { 841 m400() 842 } 843 m801(4) 844 Add(cnt1, Local0, cnt1) 845 Store(DerefOf(Index(p400, Local1)), Local1) 846 if (LNotEqual(Local1, Local0)) { 847 err(ts, z177, 0x01f, 0, 0, Local1, Local0) 848 } 849 } 850 851 CH03(ts, z177, 0x020, 0, 0) 852 853 Store(arg0, i000) 854 855 m100() 856 857 Concatenate("Maximal number of methods being in progress simultaneously ", max0, Debug) 858 859 if (arg0) { 860 CH04(ts, 0, 84, z177, 0x113, 0, 0) // AE_AML_METHOD_LIMIT 861 } else { 862 863 /* Check Maximal number of methods being in progress simultaneously */ 864 if (LNotEqual(max0, 45)) { 865 err(ts, z177, 0x021, 0, 0, max0, 45) 866 } 867 868 /* Overall got out of methods the same number as got into methods */ 869 if (LNotEqual(cnt0, 0)) { 870 err(ts, z177, 0x022, 0, 0, cnt0, 0) 871 } 872 873 /* Check indexes */ 874 m802(1, n100, p100, b1b0) 875 m802(2, n200, p200, b2b0) 876 m802(3, n300, p300, b3b0) 877 m802(4, n400, p400, b4b0) 878 879 880 /* Check the overall sum of total indexes */ 881 if (LNotEqual(cnt1, 0x3DE)) { 882 err(ts, z177, 0x023, 0, 0, cnt1, 0x3DE) 883 } 884 } 885 CH03(ts, z177, 0x024, 0, 0) 886} 887 888/* 889 * The same as m18a the level of Serialized methods is non-zero (7 level all) 890 */ 891Method(m18b, 1, Serialized) 892{ 893 Name(ts, "m18b") 894 Name(i000, 0) 895 896 Name(rpt0, 0) 897 898 /* 899 * Total number of calls of the same Recursively Called method (RCM), 900 * the first call is counted there too. 901 */ 902 Name(n000, 3) 903 904 Name(cnt0, 0) // how many methods are in progress simultaneously 905 Name(max0, 0) // maximal number of methods being in progress simultaneously 906 Name(cnt1, 0) // summary of total indexes 907 908 Name(ix00, 0) // total index of current call 909 Name(ind1, 0) // index of call to m100 910 Name(ind2, 0) // index of call to m200 911 Name(ind3, 0) // index of call to m300 912 Name(ind4, 0) // index of call to m400 913 914 Name(n100, 3) // number of calls to m100 915 Name(n200, 6) // number of calls to m200 916 Name(n300, 12) // number of calls to m300 917 Name(n400, 24) // number of calls to m400 918 919 Name(p100, Package(n100) {}) // Package to keep total indexs of call to m100 920 Name(p200, Package(n200) {}) // Package to keep total indexs of call to m200 921 Name(p300, Package(n300) {}) // Package to keep total indexs of call to m300 922 Name(p400, Package(0x100) {}) // Package to keep total indexs of call to m400 923 924 // Benchmarks of indexes 925 Name(b1b0, Buffer(n100) {0,22,44}) 926 Name(b2b0, Buffer(n200) {1,11,21, 23,33,43}) 927 Name(b3b0, Buffer(n300) {2, 6,10, 12,16,20, 24,28,32, 34,38,42}) 928 Name(b4b0, Buffer(0x100) {3, 4, 5, 7, 8, 9, 13,14,15, 17,18,19, 929 25,26,27, 29,30,31, 35,36,37, 39,40,41}) 930 931 /* 932 * Open method execution 933 * 934 * arg0 - ID of method (1,2,3...) 935 * arg1 - the message to be reported 936 */ 937 Method(m800, 2) 938 { 939 if (rpt0) { 940 Store(arg1, Debug) 941 } 942 Increment(cnt0) 943 944 if (LGreater(cnt0, max0)) { 945 Store(cnt0, max0) 946 } 947 948 /* 949 * Don't use Switch() here because we want this method to 950 * be reentrant. 951 */ 952 if (LEqual(arg0, 1)) { 953 Store(ix00, Index(p100, ind1)) 954 Increment(ind1) 955 } else { 956 if (LEqual(arg0, 2)) { 957 Store(ix00, Index(p200, ind2)) 958 Increment(ind2) 959 } else { 960 if (LEqual(arg0, 3)) { 961 Store(ix00, Index(p300, ind3)) 962 Increment(ind3) 963 } else { 964 if (LEqual(arg0, 4)) { 965 Store(ix00, Index(p400, ind4)) 966 Increment(ind4) 967 } 968 } 969 } 970 } 971 972 Increment(ix00) // total index 973 } 974 975 /* 976 * Close method execution 977 * 978 * arg0 - ID of method (1,2,3...) 979 */ 980 Method(m801, 1) 981 { 982 Decrement(cnt0) 983 } 984 985 /* 986 * arg0 - ID of method (1,2,3...) 987 * arg1 - number of elements to be compared 988 * arg2 - Package 989 * arg3 - Package with the benchmark values 990 */ 991 Method(m802, 4) { 992 Name(lpN0, 0) 993 Name(lpC0, 0) 994 995 Store(arg1, lpN0) 996 Store(0, lpC0) 997 998 While (lpN0) { 999 1000 Store(DeRefOf(Index(arg2, lpC0)), Local0) 1001 Store(DeRefOf(Index(arg3, lpC0)), Local1) 1002 if (LNotEqual(Local0, Local1)) { 1003 err(ts, z177, 0x025, 0, 0, Local0, Local1) 1004 Store(arg0, Debug) 1005 Store(lpC0, Debug) 1006 } 1007 Decrement(lpN0) 1008 Increment(lpC0) 1009 } 1010 1011 Switch (arg0) { 1012 Case (1) { 1013 if (LNotEqual(ind1, n100)) { 1014 err(ts, z177, 0x026, 0, 0, ind1, n100) 1015 } 1016 } 1017 Case (2) { 1018 if (LNotEqual(ind2, n200)) { 1019 err(ts, z177, 0x027, 0, 0, ind2, n200) 1020 } 1021 } 1022 Case (3) { 1023 if (LNotEqual(ind3, n300)) { 1024 err(ts, z177, 0x028, 0, 0, ind3, n300) 1025 } 1026 } 1027 Case (4) { 1028 if (LNotEqual(ind4, n400)) { 1029 err(ts, z177, 0x029, 0, 0, ind4, n400) 1030 } 1031 } 1032 } 1033 } 1034 1035 /* 1036 * Arguments of methods: 1037 * arg0 - 0 - the first call, otherwise - recursive calls 1038 */ 1039 1040 Name(c000, 3) 1041 Name(c100, 3) 1042 Name(c200, 3) 1043 Name(c300, 3) 1044 1045 /* 1046 * None internal objects (including Methods) or Switches in Serialized methods below 1047 * 1048 * Note: if Serialized method has internal objects (including Methods and Switches) 1049 * it could not be invoked recursively by the same thread. 1050 */ 1051 Method(m100, 0, Serialized, 7) 1052 { 1053 Store(3, c100) 1054 Store(ind1, Local1) 1055 Store(ix00, Local0) 1056 m800(1, "m100") 1057 Decrement(c000) 1058 if (LEqual(c000, 0)) { 1059 // m000() 1060 } else { 1061 m200() 1062 } 1063 m801(1) 1064 Add(cnt1, Local0, cnt1) 1065 Store(DerefOf(Index(p100, Local1)), Local1) 1066 if (LNotEqual(Local1, Local0)) { 1067 err(ts, z177, 0x02a, 0, 0, Local1, Local0) 1068 } 1069 } 1070 Method(m200, 0, Serialized, 7) 1071 { 1072 Store(3, c200) 1073 Store(ind2, Local1) 1074 Store(ix00, Local0) 1075 m800(2, "m200") 1076 Decrement(c100) 1077 if (LEqual(c100, 0)) { 1078 m100() 1079 } else { 1080 m300() 1081 } 1082 m801(2) 1083 Add(cnt1, Local0, cnt1) 1084 Store(DerefOf(Index(p200, Local1)), Local1) 1085 if (LNotEqual(Local1, Local0)) { 1086 err(ts, z177, 0x02b, 0, 0, Local1, Local0) 1087 } 1088 } 1089 Method(m300, 0, Serialized, 7) 1090 { 1091 if (i000) { 1092 Store(31, c300) 1093 } else { 1094 Store(3, c300) 1095 } 1096 1097 Store(ind3, Local1) 1098 Store(ix00, Local0) 1099 m800(3, "m300") 1100 Decrement(c200) 1101 if (LEqual(c200, 0)) { 1102 m200() 1103 } else { 1104 m400() 1105 } 1106 m801(3) 1107 Add(cnt1, Local0, cnt1) 1108 Store(DerefOf(Index(p300, Local1)), Local1) 1109 if (LNotEqual(Local1, Local0)) { 1110 err(ts, z177, 0x02c, 0, 0, Local1, Local0) 1111 } 1112 } 1113 Method(m400, 0, Serialized, 7) 1114 { 1115 Store(ind4, Local1) 1116 Store(ix00, Local0) 1117 m800(4, "m400") 1118 Decrement(c300) 1119 if (LEqual(c300, 0)) { 1120 m300() 1121 } else { 1122 m400() 1123 } 1124 m801(4) 1125 Add(cnt1, Local0, cnt1) 1126 Store(DerefOf(Index(p400, Local1)), Local1) 1127 if (LNotEqual(Local1, Local0)) { 1128 err(ts, z177, 0x02d, 0, 0, Local1, Local0) 1129 } 1130 } 1131 1132 CH03(ts, z177, 0x02e, 0, 0) 1133 1134 Store(arg0, i000) 1135 1136 m100() 1137 1138 Concatenate("Maximal number of methods being in progress simultaneously ", max0, Debug) 1139 1140 if (arg0) { 1141 CH04(ts, 0, 84, z177, 0x213, 0, 0) // AE_AML_METHOD_LIMIT 1142 } else { 1143 1144 /* Check Maximal number of methods being in progress simultaneously */ 1145 if (LNotEqual(max0, 45)) { 1146 err(ts, z177, 0x02f, 0, 0, max0, 45) 1147 } 1148 1149 /* Overall got out of methods the same number as got into methods */ 1150 if (LNotEqual(cnt0, 0)) { 1151 err(ts, z177, 0x030, 0, 0, cnt0, 0) 1152 } 1153 1154 /* Check indexes */ 1155 m802(1, n100, p100, b1b0) 1156 m802(2, n200, p200, b2b0) 1157 m802(3, n300, p300, b3b0) 1158 m802(4, n400, p400, b4b0) 1159 1160 1161 /* Check the overall sum of total indexes */ 1162 if (LNotEqual(cnt1, 0x3DE)) { 1163 err(ts, z177, 0x031, 0, 0, cnt1, 0x3DE) 1164 } 1165 } 1166 1167 CH03(ts, z177, 0x032, 0, 0) 1168} 1169 1170 1171/* 1172 * Check that Serialized method being invoked recursively on the same thread 1173 * (causes/ doesn't cause) 1174 * exception in case it has either internal objects (including Methods) or Switches. 1175 */ 1176 1177 1178/* 1179 * No internal objects in Serialized method (including Methods and Switches), 1180 * so no exceptions are expected on recursive calls. 1181 */ 1182Method(m18d,, Serialized) 1183{ 1184 Name(ts, "m18d") 1185 1186 Method(m000, 1, Serialized, 7) 1187 { 1188 if (LNot(arg0)) { 1189 m000(1) 1190 } 1191 } 1192 1193 CH03(ts, z177, 0x033, 0, 0) 1194 m000(0) 1195 CH03(ts, z177, 0x034, 0, 0) 1196} 1197 1198/* 1199 * Serialized method has internal object (Named Integer), 1200 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1201 */ 1202Method(m18e,, Serialized) 1203{ 1204 Name(ts, "m18e") 1205 1206 Method(m000, 1, Serialized, 7) 1207 { 1208 Name(i000, 0xabcd0000) 1209 1210 if (LNot(arg0)) { 1211 m000(1) 1212 } 1213 } 1214 1215 CH03(ts, z177, 0x035, 0, 0) 1216 m000(0) 1217 if (y902) { 1218 CH04(ts, 0, 7, z177, 0x036, 0, 0) // AE_ALREADY_EXISTS 1219 } else { 1220 CH03(ts, z177, 0x037, 0, 0) 1221 } 1222} 1223 1224/* 1225 * Serialized method has internal Switch, 1226 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1227 */ 1228Method(m18f,, Serialized) 1229{ 1230 Name(ts, "m18f") 1231 1232 Method(m000, 1, Serialized, 7) 1233 { 1234 Switch (0) { 1235 Case (0) { 1236 Store("m18f", Debug) 1237 } 1238 } 1239 1240 if (LNot(arg0)) { 1241 m000(1) 1242 } 1243 } 1244 1245 CH03(ts, z177, 0x038, 0, 0) 1246 m000(0) 1247 if (y902) { 1248 CH04(ts, 0, 7, z177, 0x039, 0, 0) // AE_ALREADY_EXISTS 1249 } else { 1250 CH03(ts, z177, 0x03a, 0, 0) 1251 } 1252} 1253 1254/* 1255 * Serialized method has internal declaration of Method, 1256 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1257 */ 1258Method(m19a,, Serialized) 1259{ 1260 Name(ts, "m19a") 1261 1262 Method(m000, 1, Serialized, 7) 1263 { 1264 Method(m100) {} 1265 1266 if (LNot(arg0)) { 1267 m000(1) 1268 } 1269 } 1270 1271 CH03(ts, z177, 0x03b, 0, 0) 1272 m000(0) 1273 if (y902) { 1274 CH04(ts, 0, 7, z177, 0x03c, 0, 0) // AE_ALREADY_EXISTS 1275 } else { 1276 CH03(ts, z177, 0x03d, 0, 0) 1277 } 1278} 1279 1280/* 1281 * Serialized method has internal declaration of Device, 1282 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1283 */ 1284Method(m19b,, Serialized) 1285{ 1286 Name(ts, "m19b") 1287 1288 Method(m000, 1, Serialized, 7) 1289 { 1290 Device(d000) {} 1291 1292 if (LNot(arg0)) { 1293 m000(1) 1294 } 1295 } 1296 1297 CH03(ts, z177, 0x03e, 0, 0) 1298 m000(0) 1299 if (y902) { 1300 CH04(ts, 0, 7, z177, 0x03f, 0, 0) // AE_ALREADY_EXISTS 1301 } else { 1302 CH03(ts, z177, 0x040, 0, 0) 1303 } 1304} 1305 1306/* 1307 * It is m0ef but all the relevant methods are Serialized. 1308 * Exceptions are expected. 1309 * Now we have crash there. 1310 */ 1311Method(m19c,, Serialized) 1312{ 1313 Name(ts, "m19c") 1314 1315 Name(rpt0, 0) 1316 1317 /* 1318 * Total number of calls of the same Recursively Called method (RCM), 1319 * the first call is counted there too. 1320 */ 1321 Name(n000, 3) 1322 1323 Name(cnt0, 0) // how many methods are in progress simultaneously 1324 Name(max0, 0) // maximal number of methods being in progress simultaneously 1325 1326 /* 1327 * Open method execution 1328 * 1329 * arg0 - ID of method (1,2,3...) 1330 * arg1 - the message to be reported 1331 */ 1332 Method(m800, 2) 1333 { 1334 if (rpt0) { 1335 Store(arg1, Debug) 1336 } 1337 Increment(cnt0) 1338 1339 if (LGreater(cnt0, max0)) { 1340 Store(cnt0, max0) 1341 } 1342 } 1343 1344 /* 1345 * Close method execution 1346 * 1347 * arg0 - ID of method (1,2,3...) 1348 */ 1349 Method(m801, 1) 1350 { 1351 Decrement(cnt0) 1352 } 1353 1354 /* 1355 * Arguments of methods: 1356 * arg0 - 0 - the first call, otherwise - recursive calls 1357 */ 1358 1359 Name(c000, 3) 1360 1361 Method(m100, 0, Serialized, 9) 1362 { 1363 Name(c100, 3) 1364 Method(m200, 0, Serialized, 9) 1365 { 1366 Name(c200, 3) 1367 Method(m300, 0, Serialized, 9) 1368 { 1369 Name(c300, 3) 1370 Method(m400, 0, Serialized, 9) 1371 { 1372 m800(4, "m400") 1373 Decrement(c300) 1374 if (LEqual(c300, 0)) { 1375 m300() 1376 } else { 1377 m400() 1378 } 1379 m801(4) 1380 } 1381 m800(3, "m300") 1382 Decrement(c200) 1383 if (LEqual(c200, 0)) { 1384 m200() 1385 } else { 1386 m400() 1387 } 1388 m801(3) 1389 } 1390 m800(2, "m200") 1391 Decrement(c100) 1392 if (LEqual(c100, 0)) { 1393 m100() 1394 } else { 1395 m300() 1396 } 1397 m801(2) 1398 } 1399 m800(1, "m100") 1400 Decrement(c000) 1401 if (LEqual(c000, 0)) { 1402 // m000() 1403 } else { 1404 m200() 1405 } 1406 m801(1) 1407 } 1408 1409 CH03(ts, z177, 0x041, 0, 0) 1410 m100() 1411 if (y902) { 1412 CH04(ts, 0, 7, z177, 0x042, 0, 0) // AE_ALREADY_EXISTS 1413 } else { 1414 CH03(ts, z177, 0x043, 0, 0) 1415 } 1416} 1417 1418 1419/* 1420 * Full-path declarations 1421 */ 1422 1423 1424/* 1425 * Non-Serialized method has full-path declaration 1426 */ 1427Method(m19d,, Serialized) 1428{ 1429 Name(ts, "m19d") 1430 1431 Method(m000, 1, Serialized) 1432 { 1433 Name(\i2z0, 0xabcd0000) 1434 1435 if (LNotEqual(i2z0, 0xabcd0000)) { 1436 err(ts, z177, 0x044, 0, 0, i2z0, 0xabcd0000) 1437 } 1438 if (LNotEqual(\i2z0, 0xabcd0000)) { 1439 err(ts, z177, 0x045, 0, 0, \i2z0, 0xabcd0000) 1440 } 1441 1442 Store(0x12345678, i2z0) 1443 if (LNotEqual(i2z0, 0x12345678)) { 1444 err(ts, z177, 0x046, 0, 0, i2z0, 0x12345678) 1445 } 1446 if (LNotEqual(\i2z0, 0x12345678)) { 1447 err(ts, z177, 0x047, 0, 0, \i2z0, 0x12345678) 1448 } 1449 1450 Store(0x11112222, \i2z0) 1451 if (LNotEqual(i2z0, 0x11112222)) { 1452 err(ts, z177, 0x048, 0, 0, i2z0, 0x11112222) 1453 } 1454 if (LNotEqual(\i2z0, 0x11112222)) { 1455 err(ts, z177, 0x049, 0, 0, \i2z0, 0x11112222) 1456 } 1457 } 1458 CH03(ts, z177, 0x04a, 0, 0) 1459 m000(0) 1460 CH03(ts, z177, 0x04b, 0, 0) 1461 1462 Store(0x11112222, i2z0) 1463 1464 CH04(ts, 1, 5, z177, 0x04c, 0, 0) // AE_NOT_FOUND 1465 1466 Store(0x11112222, \i2z0) 1467 1468 CH04(ts, 1, 5, z177, 0x04d, 0, 0) // AE_NOT_FOUND 1469} 1470 1471/* 1472 * Serialized method has full-path declaration 1473 */ 1474Method(m19e,, Serialized) 1475{ 1476 Name(ts, "m19e") 1477 1478 Method(m000, 1, Serialized, 7) 1479 { 1480 Name(\i2z1, 0xabcd0000) 1481 1482 if (LNotEqual(i2z1, 0xabcd0000)) { 1483 err(ts, z177, 0x04e, 0, 0, i2z1, 0xabcd0000) 1484 } 1485 if (LNotEqual(\i2z1, 0xabcd0000)) { 1486 err(ts, z177, 0x04f, 0, 0, \i2z1, 0xabcd0000) 1487 } 1488 1489 Store(0x12345678, i2z1) 1490 if (LNotEqual(i2z1, 0x12345678)) { 1491 err(ts, z177, 0x050, 0, 0, i2z1, 0x12345678) 1492 } 1493 if (LNotEqual(\i2z1, 0x12345678)) { 1494 err(ts, z177, 0x051, 0, 0, \i2z1, 0x12345678) 1495 } 1496 1497 Store(0x22223333, \i2z1) 1498 if (LNotEqual(i2z1, 0x22223333)) { 1499 err(ts, z177, 0x052, 0, 0, i2z1, 0x22223333) 1500 } 1501 if (LNotEqual(\i2z1, 0x22223333)) { 1502 err(ts, z177, 0x053, 0, 0, \i2z1, 0x22223333) 1503 } 1504 } 1505 CH03(ts, z177, 0x054, 0, 0) 1506 m000(0) 1507 CH03(ts, z177, 0x055, 0, 0) 1508 1509 Store(0x11112222, i2z1) 1510 1511 CH04(ts, 1, 5, z177, 0x056, 0, 0) // AE_NOT_FOUND 1512 1513 Store(0x11112222, \i2z1) 1514 1515 CH04(ts, 1, 5, z177, 0x057, 0, 0) // AE_NOT_FOUND 1516} 1517 1518/* 1519 * Non-Serialized method has full-path declaration, 1520 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1521 */ 1522Method(m19f,, Serialized) 1523{ 1524 Name(ts, "m19f") 1525 1526 Method(m000, 1, Serialized) 1527 { 1528 Name(\i2z2, 0xabcd0002) 1529 1530 if (LNot(arg0)) { 1531 m000(1) 1532 } 1533 } 1534 1535 CH03(ts, z177, 0x058, 0, 0) 1536 m000(0) 1537 CH04(ts, 0, 7, z177, 0x059, 0, 0) // AE_ALREADY_EXISTS 1538} 1539 1540/* 1541 * Serialized method has full-path declaration, 1542 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1543 */ 1544Method(m1b8,, Serialized) 1545{ 1546 Name(ts, "m1b8") 1547 1548 Method(m000, 1, Serialized, 7) 1549 { 1550 Name(\i2z3, 0xabcd0003) 1551 1552 if (LNot(arg0)) { 1553 m000(1) 1554 } 1555 } 1556 1557 CH03(ts, z177, 0x05a, 0, 0) 1558 m000(0) 1559 CH04(ts, 0, 7, z177, 0x05b, 0, 0) // AE_ALREADY_EXISTS 1560} 1561 1562 1563/* 1564 * Scope declarations 1565 */ 1566 1567 1568/* 1569 * Non-Serialized method has Scope declaration 1570 */ 1571Method(m1b9,, Serialized) 1572{ 1573 Name(ts, "m1b9") 1574 1575 Method(m000, 1, Serialized) 1576 { 1577 Scope(\_SB) { Name(i2z4, 0xabcd0004) } 1578 } 1579 1580 CH03(ts, z177, 0x05c, 0, 0) 1581 m000(0) 1582 CH03(ts, z177, 0x05d, 0, 0) 1583} 1584 1585/* 1586 * Serialized method has Scope declaration, 1587 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1588 */ 1589Method(m1ba,, Serialized) 1590{ 1591 Name(ts, "m1ba") 1592 1593 Method(m000, 1, Serialized, 7) 1594 { 1595 Scope(\_SB) { Name(i2z5, 0xabcd0005) } 1596 } 1597 1598 CH03(ts, z177, 0x05e, 0, 0) 1599 m000(0) 1600 CH03(ts, z177, 0x05f, 0, 0) 1601} 1602 1603/* 1604 * Non-Serialized method has Scope declaration, 1605 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1606 */ 1607Method(m1bb,, Serialized) 1608{ 1609 Name(ts, "m1bb") 1610 1611 Method(m000, 1, Serialized) 1612 { 1613 Scope(\_SB) { Name(i2z6, 0xabcd0006) } 1614 1615 if (LNot(arg0)) { 1616 m000(1) 1617 } 1618 } 1619 1620 CH03(ts, z177, 0x060, 0, 0) 1621 m000(0) 1622 CH04(ts, 0, 7, z177, 0x061, 0, 0) // AE_ALREADY_EXISTS 1623} 1624 1625/* 1626 * Serialized method has Scope declaration, 1627 * so AE_ALREADY_EXISTS exception is expected on recursive call. 1628 */ 1629Method(m1bc,, Serialized) 1630{ 1631 Name(ts, "m1bc") 1632 1633 Method(m000, 1, Serialized, 7) 1634 { 1635 Scope(\_SB) { Name(i2z7, 0xabcd0007) } 1636 1637 if (LNot(arg0)) { 1638 m000(1) 1639 } 1640 } 1641 1642 CH03(ts, z177, 0x062, 0, 0) 1643 m000(0) 1644 CH04(ts, 0, 7, z177, 0x063, 0, 0) // AE_ALREADY_EXISTS 1645} 1646 1647/* 1648 * Non-Serialized method declares full-path name on first call, 1649 * and allows proper access for the second recursive call too. 1650 */ 1651Method(m1bd,, Serialized) 1652{ 1653 Name(ts, "m1bd") 1654 1655 Method(m000, 1, Serialized) 1656 { 1657 if (LNot(arg0)) { 1658 1659 Name(\i2z8, 0xabcd0108) 1660 1661 if (LNotEqual(i2z8, 0xabcd0108)) { 1662 err(ts, z177, 0x064, 0, 0, i2z8, 0xabcd0108) 1663 } 1664 if (LNotEqual(\i2z8, 0xabcd0108)) { 1665 err(ts, z177, 0x065, 0, 0, \i2z8, 0xabcd0108) 1666 } 1667 } else { 1668 if (LNotEqual(i2z8, 0x22223333)) { 1669 err(ts, z177, 0x066, 0, 0, i2z8, 0x22223333) 1670 } 1671 if (LNotEqual(\i2z8, 0x22223333)) { 1672 err(ts, z177, 0x067, 0, 0, \i2z8, 0x22223333) 1673 } 1674 } 1675 1676 Store(0x12345678, i2z8) 1677 if (LNotEqual(i2z8, 0x12345678)) { 1678 err(ts, z177, 0x068, 0, 0, i2z8, 0x12345678) 1679 } 1680 if (LNotEqual(\i2z8, 0x12345678)) { 1681 err(ts, z177, 0x069, 0, 0, \i2z8, 0x12345678) 1682 } 1683 1684 Store(0x22223333, \i2z8) 1685 if (LNotEqual(i2z8, 0x22223333)) { 1686 err(ts, z177, 0x06a, 0, 0, i2z8, 0x22223333) 1687 } 1688 if (LNotEqual(\i2z8, 0x22223333)) { 1689 err(ts, z177, 0x06b, 0, 0, \i2z8, 0x22223333) 1690 } 1691 1692 if (LNot(arg0)) { 1693 m000(1) 1694 } 1695 1696 if (arg0) { 1697 if (LNotEqual(i2z8, 0x22223333)) { 1698 err(ts, z177, 0x06c, 0, 0, i2z8, 0x22223333) 1699 } 1700 if (LNotEqual(\i2z8, 0x22223333)) { 1701 err(ts, z177, 0x06d, 0, 0, \i2z8, 0x22223333) 1702 } 1703 } else { 1704 if (LNotEqual(i2z8, 0x66667777)) { 1705 err(ts, z177, 0x06e, 0, 0, i2z8, 0x66667777) 1706 } 1707 if (LNotEqual(\i2z8, 0x66667777)) { 1708 err(ts, z177, 0x06f, 0, 0, \i2z8, 0x66667777) 1709 } 1710 } 1711 1712 if (arg0) { 1713 Store(0x66667777, i2z8) 1714 } else { 1715 Store(0x44445555, i2z8) 1716 } 1717 } 1718 1719 CH03(ts, z177, 0x070, 0, 0) 1720 m000(0) 1721 CH03(ts, z177, 0x071, 0, 0) 1722} 1723 1724/* 1725 * Serialized method declares full-path name on first call, 1726 * and allows proper access for the second recursive call too. 1727 */ 1728Method(m1be,, Serialized) 1729{ 1730 Name(ts, "m1be") 1731 1732 Method(m000, 1, Serialized, 7) 1733 { 1734 if (LNot(arg0)) { 1735 1736 Name(\i2z9, 0xabcd0109) 1737 1738 if (LNotEqual(i2z9, 0xabcd0109)) { 1739 err(ts, z177, 0x072, 0, 0, i2z9, 0xabcd0109) 1740 } 1741 if (LNotEqual(\i2z9, 0xabcd0109)) { 1742 err(ts, z177, 0x073, 0, 0, \i2z9, 0xabcd0109) 1743 } 1744 } else { 1745 if (LNotEqual(i2z9, 0x22223333)) { 1746 err(ts, z177, 0x074, 0, 0, i2z9, 0x22223333) 1747 } 1748 if (LNotEqual(\i2z9, 0x22223333)) { 1749 err(ts, z177, 0x075, 0, 0, \i2z9, 0x22223333) 1750 } 1751 } 1752 1753 Store(0x12345678, i2z9) 1754 if (LNotEqual(i2z9, 0x12345678)) { 1755 err(ts, z177, 0x076, 0, 0, i2z9, 0x12345678) 1756 } 1757 if (LNotEqual(\i2z9, 0x12345678)) { 1758 err(ts, z177, 0x077, 0, 0, \i2z9, 0x12345678) 1759 } 1760 1761 Store(0x22223333, \i2z9) 1762 if (LNotEqual(i2z9, 0x22223333)) { 1763 err(ts, z177, 0x078, 0, 0, i2z9, 0x22223333) 1764 } 1765 if (LNotEqual(\i2z9, 0x22223333)) { 1766 err(ts, z177, 0x079, 0, 0, \i2z9, 0x22223333) 1767 } 1768 1769 if (LNot(arg0)) { 1770 m000(1) 1771 } 1772 1773 if (arg0) { 1774 if (LNotEqual(i2z9, 0x22223333)) { 1775 err(ts, z177, 0x07a, 0, 0, i2z9, 0x22223333) 1776 } 1777 if (LNotEqual(\i2z9, 0x22223333)) { 1778 err(ts, z177, 0x07b, 0, 0, \i2z9, 0x22223333) 1779 } 1780 } else { 1781 if (LNotEqual(i2z9, 0x66667777)) { 1782 err(ts, z177, 0x07c, 0, 0, i2z9, 0x66667777) 1783 } 1784 if (LNotEqual(\i2z9, 0x66667777)) { 1785 err(ts, z177, 0x07d, 0, 0, \i2z9, 0x66667777) 1786 } 1787 } 1788 1789 if (arg0) { 1790 Store(0x66667777, i2z9) 1791 } else { 1792 Store(0x44445555, i2z9) 1793 } 1794 } 1795 1796 CH03(ts, z177, 0x07e, 0, 0) 1797 m000(0) 1798 CH03(ts, z177, 0x07f, 0, 0) 1799} 1800 1801/* 1802 * Non-Serialized method provides access to the upper level named object, 1803 * for the second recursive call too. 1804 */ 1805Method(m1de,, Serialized) 1806{ 1807 Name(ts, "m1de") 1808 Name(i3z0, 0xabcd0000) 1809 1810 Method(m000, 1) 1811 { 1812 if (LNot(arg0)) { 1813 if (LNotEqual(i3z0, 0xabcd0000)) { 1814 err(ts, z177, 0x080, 0, 0, i3z0, 0xabcd0000) 1815 } 1816 } else { 1817 if (LNotEqual(i3z0, 0x12345678)) { 1818 err(ts, z177, 0x081, 0, 0, i3z0, 0x12345678) 1819 } 1820 } 1821 1822 Store(0x12345678, i3z0) 1823 if (LNotEqual(i3z0, 0x12345678)) { 1824 err(ts, z177, 0x082, 0, 0, i3z0, 0x12345678) 1825 } 1826 1827 if (LNot(arg0)) { 1828 m000(1) 1829 } 1830 1831 if (arg0) { 1832 if (LNotEqual(i3z0, 0x12345678)) { 1833 err(ts, z177, 0x083, 0, 0, i3z0, 0x12345678) 1834 } 1835 } else { 1836 if (LNotEqual(i3z0, 0x66667777)) { 1837 err(ts, z177, 0x084, 0, 0, i3z0, 0x66667777) 1838 } 1839 } 1840 1841 if (arg0) { 1842 Store(0x66667777, i3z0) 1843 } else { 1844 Store(0x44445555, i3z0) 1845 } 1846 } 1847 1848 CH03(ts, z177, 0x085, 0, 0) 1849 m000(0) 1850 CH03(ts, z177, 0x086, 0, 0) 1851} 1852 1853/* 1854 * Serialized method provides access to the upper level named object, 1855 * for the second recursive call too. 1856 */ 1857Method(m1df,, Serialized) 1858{ 1859 Name(ts, "m1df") 1860 Name(i3z0, 0xabcd0000) 1861 1862 Method(m000, 1, Serialized, 7) 1863 { 1864 if (LNot(arg0)) { 1865 if (LNotEqual(i3z0, 0xabcd0000)) { 1866 err(ts, z177, 0x087, 0, 0, i3z0, 0xabcd0000) 1867 } 1868 } else { 1869 if (LNotEqual(i3z0, 0x12345678)) { 1870 err(ts, z177, 0x088, 0, 0, i3z0, 0x12345678) 1871 } 1872 } 1873 1874 Store(0x12345678, i3z0) 1875 if (LNotEqual(i3z0, 0x12345678)) { 1876 err(ts, z177, 0x089, 0, 0, i3z0, 0x12345678) 1877 } 1878 1879 if (LNot(arg0)) { 1880 m000(1) 1881 } 1882 1883 if (arg0) { 1884 if (LNotEqual(i3z0, 0x12345678)) { 1885 err(ts, z177, 0x08a, 0, 0, i3z0, 0x12345678) 1886 } 1887 } else { 1888 if (LNotEqual(i3z0, 0x66667777)) { 1889 err(ts, z177, 0x08b, 0, 0, i3z0, 0x66667777) 1890 } 1891 } 1892 1893 if (arg0) { 1894 Store(0x66667777, i3z0) 1895 } else { 1896 Store(0x44445555, i3z0) 1897 } 1898 } 1899 1900 CH03(ts, z177, 0x08c, 0, 0) 1901 m000(0) 1902 CH03(ts, z177, 0x08d, 0, 0) 1903} 1904 1905/* 1906 * Non-Serialized method declares full-path name on first call, 1907 * and allows proper access for the second recursive call too. 1908 */ 1909Method(m1ee,, Serialized) 1910{ 1911 Name(ts, "m1ee") 1912 1913 Method(m000, 1, Serialized) 1914 { 1915 if (LNot(arg0)) { 1916 Name(\_SB.i0q8, 0xabcd0008) 1917 1918 if (LNotEqual(\_SB.i0q8, 0xabcd0008)) { 1919 err(ts, z177, 0x08e, 0, 0, \_SB.i0q8, 0xabcd0008) 1920 } 1921 } else { 1922 if (LNotEqual(\_SB.i0q8, 0x22223333)) { 1923 err(ts, z177, 0x08f, 0, 0, \_SB.i0q8, 0x22223333) 1924 } 1925 } 1926 Store(0x22223333, \_SB.i0q8) 1927 if (LNotEqual(\_SB.i0q8, 0x22223333)) { 1928 err(ts, z177, 0x090, 0, 0, \_SB.i0q8, 0x22223333) 1929 } 1930 1931 if (LNot(arg0)) { 1932 m000(1) 1933 } 1934 1935 if (arg0) { 1936 if (LNotEqual(\_SB.i0q8, 0x22223333)) { 1937 err(ts, z177, 0x091, 0, 0, \_SB.i0q8, 0x22223333) 1938 } 1939 } else { 1940 if (LNotEqual(\_SB.i0q8, 0x66667777)) { 1941 err(ts, z177, 0x092, 0, 0, \_SB.i0q8, 0x66667777) 1942 } 1943 } 1944 if (arg0) { 1945 Store(0x66667777, \_SB.i0q8) 1946 } else { 1947 Store(0x44445555, \_SB.i0q8) 1948 } 1949 } 1950 1951 CH03(ts, z177, 0x093, 0, 0) 1952 m000(0) 1953 CH03(ts, z177, 0x094, 0, 0) 1954} 1955 1956/* 1957 * Serialized method declares full-path name on first call, 1958 * and allows proper access for the second recursive call too. 1959 */ 1960Method(m1ef,, Serialized) 1961{ 1962 Name(ts, "m1ef") 1963 1964 Method(m000, 1, Serialized, 7) 1965 { 1966 if (LNot(arg0)) { 1967 1968 Name(\_SB.i0q9, 0xabcd0009) 1969 1970 if (LNotEqual(\_SB.i0q9, 0xabcd0009)) { 1971 err(ts, z177, 0x08e, 0, 0, \_SB.i0q9, 0xabcd0009) 1972 } 1973 } else { 1974 if (LNotEqual(\_SB.i0q9, 0x22223333)) { 1975 err(ts, z177, 0x08f, 0, 0, \_SB.i0q9, 0x22223333) 1976 } 1977 } 1978 1979 Store(0x22223333, \_SB.i0q9) 1980 if (LNotEqual(\_SB.i0q9, 0x22223333)) { 1981 err(ts, z177, 0x090, 0, 0, \_SB.i0q9, 0x22223333) 1982 } 1983 1984 if (LNot(arg0)) { 1985 m000(1) 1986 } 1987 1988 if (arg0) { 1989 if (LNotEqual(\_SB.i0q9, 0x22223333)) { 1990 err(ts, z177, 0x091, 0, 0, \_SB.i0q9, 0x22223333) 1991 } 1992 } else { 1993 if (LNotEqual(\_SB.i0q9, 0x66667777)) { 1994 err(ts, z177, 0x092, 0, 0, \_SB.i0q9, 0x66667777) 1995 } 1996 } 1997 1998 if (arg0) { 1999 Store(0x66667777, \_SB.i0q9) 2000 } else { 2001 Store(0x44445555, \_SB.i0q9) 2002 } 2003 } 2004 2005 CH03(ts, z177, 0x093, 0, 0) 2006 m000(0) 2007 CH03(ts, z177, 0x094, 0, 0) 2008} 2009 2010/* 2011 * Non-Serialized method declares Scope(\_SB) on first call, 2012 * and allows proper access for the second recursive call too. 2013 */ 2014Method(m1bf,, Serialized) 2015{ 2016 Name(ts, "m1bf") 2017 2018 Method(m000, 1, Serialized) 2019 { 2020 if (LNot(arg0)) { 2021 2022 Scope(\_SB) { Name(i1q8, 0xabcd0008) } 2023 2024 if (LNotEqual(\_SB.i1q8, 0xabcd0008)) { 2025 err(ts, z177, 0x095, 0, 0, \_SB.i1q8, 0xabcd0008) 2026 } 2027 } else { 2028 if (LNotEqual(\_SB.i1q8, 0x22223333)) { 2029 err(ts, z177, 0x096, 0, 0, \_SB.i1q8, 0x22223333) 2030 } 2031 } 2032 2033 Store(0x22223333, \_SB.i1q8) 2034 if (LNotEqual(\_SB.i1q8, 0x22223333)) { 2035 err(ts, z177, 0x097, 0, 0, \_SB.i1q8, 0x22223333) 2036 } 2037 2038 if (LNot(arg0)) { 2039 m000(1) 2040 } 2041 2042 if (arg0) { 2043 if (LNotEqual(\_SB.i1q8, 0x22223333)) { 2044 err(ts, z177, 0x098, 0, 0, \_SB.i1q8, 0x22223333) 2045 } 2046 } else { 2047 if (LNotEqual(\_SB.i1q8, 0x66667777)) { 2048 err(ts, z177, 0x099, 0, 0, \_SB.i1q8, 0x66667777) 2049 } 2050 } 2051 if (arg0) { 2052 Store(0x66667777, \_SB.i1q8) 2053 } else { 2054 Store(0x44445555, \_SB.i1q8) 2055 } 2056 } 2057 2058 CH03(ts, z177, 0x09a, 0, 0) 2059 m000(0) 2060 CH03(ts, z177, 0x09b, 0, 0) 2061} 2062 2063/* 2064 * Serialized method declares Scope(\_SB) on first call, 2065 * and allows proper access for the second recursive call too. 2066 */ 2067Method(m1dd,, Serialized) 2068{ 2069 Name(ts, "m1dd") 2070 2071 Method(m000, 1, Serialized, 7) 2072 { 2073 if (LNot(arg0)) { 2074 2075 Scope(\_SB) { Name(i1q9, 0xabcd0008) } 2076 2077 if (LNotEqual(\_SB.i1q9, 0xabcd0008)) { 2078 err(ts, z177, 0x09c, 0, 0, \_SB.i1q9, 0xabcd0008) 2079 } 2080 } else { 2081 if (LNotEqual(\_SB.i1q9, 0x22223333)) { 2082 err(ts, z177, 0x09d, 0, 0, \_SB.i1q9, 0x22223333) 2083 } 2084 } 2085 2086 Store(0x22223333, \_SB.i1q9) 2087 if (LNotEqual(\_SB.i1q9, 0x22223333)) { 2088 err(ts, z177, 0x09e, 0, 0, \_SB.i1q9, 0x22223333) 2089 } 2090 2091 if (LNot(arg0)) { 2092 m000(1) 2093 } 2094 2095 if (arg0) { 2096 if (LNotEqual(\_SB.i1q9, 0x22223333)) { 2097 err(ts, z177, 0x09f, 0, 0, \_SB.i1q9, 0x22223333) 2098 } 2099 } else { 2100 if (LNotEqual(\_SB.i1q9, 0x66667777)) { 2101 err(ts, z177, 0x0a0, 0, 0, \_SB.i1q9, 0x66667777) 2102 } 2103 } 2104 if (arg0) { 2105 Store(0x66667777, \_SB.i1q9) 2106 } else { 2107 Store(0x44445555, \_SB.i1q9) 2108 } 2109 } 2110 2111 CH03(ts, z177, 0x0a1, 0, 0) 2112 m000(0) 2113 CH03(ts, z177, 0x0a2, 0, 0) 2114} 2115 2116 2117/* 2118 * Non-Serialized method declares Scope(\) on first call, 2119 * and allows proper access for the second recursive call too. 2120 */ 2121Method(m277,, Serialized) 2122{ 2123 Name(ts, "m277") 2124 2125 Method(m000, 1, Serialized) 2126 { 2127 if (LNot(arg0)) { 2128 2129 Scope(\) { Name(i3z1, 0xabcd0208) } 2130 2131 if (LNotEqual(i3z1, 0xabcd0208)) { 2132 err(ts, z177, 0x064, 0, 0, i3z1, 0xabcd0208) 2133 } 2134 if (LNotEqual(\i3z1, 0xabcd0208)) { 2135 err(ts, z177, 0x065, 0, 0, \i3z1, 0xabcd0208) 2136 } 2137 } else { 2138 if (LNotEqual(i3z1, 0x22223333)) { 2139 err(ts, z177, 0x066, 0, 0, i3z1, 0x22223333) 2140 } 2141 if (LNotEqual(\i3z1, 0x22223333)) { 2142 err(ts, z177, 0x067, 0, 0, \i3z1, 0x22223333) 2143 } 2144 } 2145 2146 Store(0x12345678, i3z1) 2147 if (LNotEqual(i3z1, 0x12345678)) { 2148 err(ts, z177, 0x068, 0, 0, i3z1, 0x12345678) 2149 } 2150 if (LNotEqual(\i3z1, 0x12345678)) { 2151 err(ts, z177, 0x069, 0, 0, \i3z1, 0x12345678) 2152 } 2153 2154 Store(0x22223333, \i3z1) 2155 if (LNotEqual(i3z1, 0x22223333)) { 2156 err(ts, z177, 0x06a, 0, 0, i3z1, 0x22223333) 2157 } 2158 if (LNotEqual(\i3z1, 0x22223333)) { 2159 err(ts, z177, 0x06b, 0, 0, \i3z1, 0x22223333) 2160 } 2161 2162 if (LNot(arg0)) { 2163 m000(1) 2164 } 2165 2166 if (arg0) { 2167 if (LNotEqual(i3z1, 0x22223333)) { 2168 err(ts, z177, 0x06c, 0, 0, i3z1, 0x22223333) 2169 } 2170 if (LNotEqual(\i3z1, 0x22223333)) { 2171 err(ts, z177, 0x06d, 0, 0, \i3z1, 0x22223333) 2172 } 2173 } else { 2174 if (LNotEqual(i3z1, 0x66667777)) { 2175 err(ts, z177, 0x06e, 0, 0, i3z1, 0x66667777) 2176 } 2177 if (LNotEqual(\i3z1, 0x66667777)) { 2178 err(ts, z177, 0x06f, 0, 0, \i3z1, 0x66667777) 2179 } 2180 } 2181 2182 if (arg0) { 2183 Store(0x66667777, i3z1) 2184 } else { 2185 Store(0x44445555, i3z1) 2186 } 2187 } 2188 2189 CH03(ts, z177, 0x070, 0, 0) 2190 m000(0) 2191 CH03(ts, z177, 0x071, 0, 0) 2192} 2193 2194/* 2195 * Serialized method declares Scope(\) on first call, 2196 * and allows proper access for the second recursive call too. 2197 */ 2198Method(m27d,, Serialized) 2199{ 2200 Name(ts, "m27d") 2201 2202 Method(m000, 1, Serialized, 7) 2203 { 2204 if (LNot(arg0)) { 2205 2206 Scope(\) { Name(i3z2, 0xabcd0209) } 2207 2208 if (LNotEqual(i3z2, 0xabcd0209)) { 2209 err(ts, z177, 0x072, 0, 0, i3z2, 0xabcd0209) 2210 } 2211 if (LNotEqual(\i3z2, 0xabcd0209)) { 2212 err(ts, z177, 0x073, 0, 0, \i3z2, 0xabcd0209) 2213 } 2214 } else { 2215 if (LNotEqual(i3z2, 0x22223333)) { 2216 err(ts, z177, 0x074, 0, 0, i3z2, 0x22223333) 2217 } 2218 if (LNotEqual(\i3z2, 0x22223333)) { 2219 err(ts, z177, 0x075, 0, 0, \i3z2, 0x22223333) 2220 } 2221 } 2222 2223 Store(0x12345678, i3z2) 2224 if (LNotEqual(i3z2, 0x12345678)) { 2225 err(ts, z177, 0x076, 0, 0, i3z2, 0x12345678) 2226 } 2227 if (LNotEqual(\i3z2, 0x12345678)) { 2228 err(ts, z177, 0x077, 0, 0, \i3z2, 0x12345678) 2229 } 2230 2231 Store(0x22223333, \i3z2) 2232 if (LNotEqual(i3z2, 0x22223333)) { 2233 err(ts, z177, 0x078, 0, 0, i3z2, 0x22223333) 2234 } 2235 if (LNotEqual(\i3z2, 0x22223333)) { 2236 err(ts, z177, 0x079, 0, 0, \i3z2, 0x22223333) 2237 } 2238 2239 if (LNot(arg0)) { 2240 m000(1) 2241 } 2242 2243 if (arg0) { 2244 if (LNotEqual(i3z2, 0x22223333)) { 2245 err(ts, z177, 0x07a, 0, 0, i3z2, 0x22223333) 2246 } 2247 if (LNotEqual(\i3z2, 0x22223333)) { 2248 err(ts, z177, 0x07b, 0, 0, \i3z2, 0x22223333) 2249 } 2250 } else { 2251 if (LNotEqual(i3z2, 0x66667777)) { 2252 err(ts, z177, 0x07c, 0, 0, i3z2, 0x66667777) 2253 } 2254 if (LNotEqual(\i3z2, 0x66667777)) { 2255 err(ts, z177, 0x07d, 0, 0, \i3z2, 0x66667777) 2256 } 2257 } 2258 2259 if (arg0) { 2260 Store(0x66667777, i3z2) 2261 } else { 2262 Store(0x44445555, i3z2) 2263 } 2264 } 2265 2266 CH03(ts, z177, 0x07e, 0, 0) 2267 m000(0) 2268 CH03(ts, z177, 0x07f, 0, 0) 2269} 2270 2271 2272Method(m0ed) 2273{ 2274 2275/* 2276SRMT("m0ff-1") 2277m0ff(1) 2278return 2279 2280SRMT("m1ee") 2281m1ee() 2282 2283SRMT("m1ef") 2284m1ef() 2285 2286return 2287*/ 2288 2289 SRMT("m0ef") 2290 if (y300) { 2291 m0ef() 2292 } else { 2293 BLCK() 2294 } 2295 2296 SRMT("m0fb") 2297 if (y300) { 2298 m0fb() 2299 } else { 2300 BLCK() 2301 } 2302 2303 SRMT("m0ff-0") 2304 if (y300) { 2305 m0ff(0) 2306 } else { 2307 BLCK() 2308 } 2309 2310 SRMT("m0ff-1") 2311 if (LAnd(y300, y200)) { 2312 m0ff(1) 2313 } else { 2314 BLCK() 2315 } 2316 2317 SRMT("m18a-0") 2318 m18a(0) 2319 2320 SRMT("m18a-1") 2321 if (LAnd(y300, y200)) { 2322 m18a(1) 2323 } else { 2324 BLCK() 2325 } 2326 2327 SRMT("m18b-0") 2328 m18b(0) 2329 2330 SRMT("m18b-1") 2331 if (LAnd(y300, y200)) { 2332 m18b(1) 2333 } else { 2334 BLCK() 2335 } 2336 2337 SRMT("m18d") 2338 m18d() 2339 2340 SRMT("m18e") 2341 m18e() 2342 2343 SRMT("m18f") 2344 m18f() 2345 2346 SRMT("m19a") 2347 m19a() 2348 2349 SRMT("m19b") 2350 m19b() 2351 2352 SRMT("m19c") 2353 if (LOr(y301, LNot(y902))) { 2354 m19c() 2355 } else { 2356 BLCK() 2357 } 2358 2359 SRMT("m19d") 2360 m19d() 2361 2362 SRMT("m19e") 2363 m19e() 2364 2365 SRMT("m19f") 2366 m19f() 2367 2368 SRMT("m1b8") 2369 m1b8() 2370 2371 SRMT("m1b9") 2372 m1b9() 2373 2374 SRMT("m1ba") 2375 m1ba() 2376 2377 SRMT("m1bb") 2378 m1bb() 2379 2380 SRMT("m1bc") 2381 m1bc() 2382 2383 SRMT("m1bd") 2384 m1bd() 2385 2386 SRMT("m1be") 2387 m1be() 2388 2389 SRMT("m1de") 2390 m1de() 2391 2392 SRMT("m1df") 2393 m1df() 2394 2395 SRMT("m1ee") 2396 m1ee() 2397 2398 SRMT("m1ef") 2399 m1ef() 2400 2401 SRMT("m1bf") 2402 m1bf() 2403 2404 SRMT("m1dd") 2405 m1dd() 2406 2407 SRMT("m277") 2408 if (y200) { 2409 m277() 2410 } else { 2411 BLCK() 2412 } 2413 2414 SRMT("m27d") 2415 if (y200) { 2416 m27d() 2417 } else { 2418 BLCK() 2419 } 2420} 2421