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 * Mutex 31 * 32 * (verify exceptions caused by the imprope use of Mutex type objects) 33 */ 34 35Name(z101, 101) 36 37Mutex(mx10, 0) 38 39// Expected exceptions: 40// 41// 47 - AE_AML_OPERAND_TYPE 42// 43Method(m4b9,, Serialized) 44{ 45 Name(ts, "m4b9") 46 47 Mutex(mx01, 0) 48 49 Event(e000) 50 51 Name(i000, 0) 52 53 // Local Named Object 54 Method(m000, 1, Serialized) 55 { 56/* These are now caught by the compiler - Aug 2015 57 58 Mutex(mx02, 0) 59 60 if (y083) { 61 Store (DerefOf(mx02), Local1) 62 CH06(arg0, 0, 47) 63 } 64*/ 65 } 66 67 // Global Named Object 68 Method(m001, 1) 69 { 70/* These are now caught by the compiler - Aug 2015 71 if (y083) { 72 Store (DerefOf(mx10), Local1) 73 CH06(arg0, 1, 47) 74 } 75*/ 76 } 77 78 // Local 79 Method(m002, 1, Serialized) 80 { 81 Mutex(mx02, 0) 82 83 Event(e000) 84 85 CopyObject(mx02, Local0) 86 87 // CondRefOf 88 89 CondRefOf(Local0, Local1) 90 CH03(ts, z101, 1, 0, 0) 91 92 // CopyObject 93 94 CopyObject(Local0, Local1) 95 CH03(ts, z101, 2, 0, 0) 96 97 // Decrement 98 99 Decrement(Local0) 100 CH06(arg0, 1, 47) 101 102 // DerefOf 103 104 Store (DerefOf(Local0), Local1) 105 CH06(arg0, 2, 47) 106 107 // FindSetLeftBit 108 109 FindSetLeftBit(Local0, Local1) 110 CH06(arg0, 4, 47) 111 112 // FindSetRightBit 113 114 FindSetRightBit(Local0, Local1) 115 CH06(arg0, 6, 47) 116 117 // FromBCD 118 119 FromBCD(Local0, Local1) 120 CH06(arg0, 8, 47) 121 122 // Increment 123 124 Increment(Local0) 125 CH06(arg0, 9, 47) 126 127 // LNot 128 129 Store (LNot(Local0), Local1) 130 CH06(arg0, 10, 47) 131 132 // Not 133 134 Not(Local0, Local1) 135 CH06(arg0, 12, 47) 136 137 // ObjectType 138 139 Store (ObjectType(Local0), Local1) 140 CH03(ts, z101, 3, 0, 0) 141 142 // RefOf 143 144 Store (RefOf(Local0), Local1) 145 CH03(ts, z101, 4, 0, 0) 146 147 // Release 148 149 Release(Local0) 150 CH06(arg0, 13, 47) 151 152 // Reset 153 154 Reset(Local0) 155 CH06(arg0, 14, 47) 156 157 // Signal 158 159 Signal(Local0) 160 CH06(arg0, 15, 47) 161 162 // SizeOf 163 164 Store (SizeOf(Local0), Local1) 165 CH06(arg0, 16, 47) 166 167 // Sleep 168 169 Sleep(Local0) 170 CH06(arg0, 17, 47) 171 172 // Stall 173 174 Stall(Local0) 175 CH06(arg0, 18, 47) 176 177 // Store 178 179 Store(Local0, Local1) 180 CH06(arg0, 19, 47) 181 182 // ToBCD 183 184 ToBCD(Local0, Local1) 185 CH06(arg0, 21, 47) 186 187 // ToBuffer 188 189 ToBuffer(Local0, Local1) 190 CH06(arg0, 23, 47) 191 192 // ToDecimalString 193 194 ToDecimalString(Local0, Local1) 195 CH06(arg0, 25, 47) 196 197 // ToHexString 198 199 ToHexString(Local0, Local1) 200 CH06(arg0, 27, 47) 201 202 // ToInteger 203 204 ToInteger(Local0, Local1) 205 CH06(arg0, 29, 47) 206 207 // Acquire 208 209 Store(Acquire(Local0, 100), Local1) 210 CH03(ts, z101, 30, 0, 0) 211 212 // Add 213 214 Add(Local0, i000, Local1) 215 CH06(arg0, 33, 47) 216 217 Add(i000, Local0, Local1) 218 CH06(arg0, 34, 47) 219 220 // And 221 222 And(Local0, i000, Local1) 223 CH06(arg0, 37, 47) 224 225 And(i000, Local0, Local1) 226 CH06(arg0, 38, 47) 227 228 // Concatenate 229 230 Concatenate(Local0, i000, Local1) 231 CH06(arg0, 41, 47) 232 233 Concatenate(i000, Local0, Local1) 234 CH06(arg0, 42, 47) 235 236 // ConcatenateResTemplate 237 238 ConcatenateResTemplate(Local0, ResourceTemplate(){}, Local1) 239 CH06(arg0, 45, 47) 240 241 ConcatenateResTemplate(ResourceTemplate(){}, Local0, Local1) 242 CH06(arg0, 46, 47) 243 244 // Divide 245 246 Divide(Local0, i000, Local2) 247 CH06(arg0, 49, 47) 248 249 Divide(i000, Local0, Local2) 250 CH06(arg0, 50, 47) 251 252 Divide(Local0, i000, Local2, Local1) 253 CH06(arg0, 51, 47) 254 255 Divide(i000, Local0, Local2, Local1) 256 CH06(arg0, 52, 47) 257 258 // Fatal 259 260 Fatal(0xff, 0xffffffff, Local0) 261 CH06(arg0, 53, 47) 262 263 // Index 264 265 Index(Local0, 0, Local1) 266 CH06(arg0, 56, 47) 267 268 Index("0", Local0, Local1) 269 CH06(arg0, 57, 47) 270 271 // LEqual 272 273 Store (LEqual(Local0, i000), Local1) 274 CH06(arg0, 58, 47) 275 276 Store (LEqual(i000, Local0), Local1) 277 CH06(arg0, 59, 47) 278 279 // LGreater 280 281 Store (LGreater(Local0, i000), Local1) 282 CH06(arg0, 60, 47) 283 284 Store (LGreater(i000, Local0), Local1) 285 CH06(arg0, 61, 47) 286 287 // LGreaterEqual 288 289 Store (LGreaterEqual(Local0, i000), Local1) 290 CH06(arg0, 62, 0xff) 291 292 Store (LGreaterEqual(i000, Local0), Local1) 293 CH06(arg0, 63, 0xff) 294 295 // LLess 296 297 Store (LLess(Local0, i000), Local1) 298 CH06(arg0, 64, 47) 299 300 Store (LLess(i000, Local0), Local1) 301 CH06(arg0, 65, 47) 302 303 // LLessEqual 304 305 Store (LLessEqual(Local0, i000), Local1) 306 CH06(arg0, 66, 0xff) 307 308 Store (LLessEqual(i000, Local0), Local1) 309 CH06(arg0, 67, 0xff) 310 311 // LNotEqual 312 313 Store (LNotEqual(Local0, i000), Local1) 314 CH06(arg0, 68, 0xff) 315 316 Store (LNotEqual(i000, Local0), Local1) 317 CH06(arg0, 69, 0xff) 318 319 // LOr 320 321 Store (LOr(Local0, i000), Local1) 322 CH06(arg0, 70, 47) 323 324 Store (LOr(i000, Local0), Local1) 325 CH06(arg0, 71, 47) 326 327 // Mod 328 329 Mod(Local0, i000, Local1) 330 CH06(arg0, 74, 47) 331 332 Mod(i000, Local0, Local1) 333 CH06(arg0, 75, 47) 334 335 // Multiply 336 337 Multiply(Local0, i000, Local1) 338 CH06(arg0, 78, 47) 339 340 Multiply(i000, Local0, Local1) 341 CH06(arg0, 79, 47) 342 343 // NAnd 344 345 NAnd(Local0, i000, Local1) 346 CH06(arg0, 82, 47) 347 348 NAnd(i000, Local0, Local1) 349 CH06(arg0, 83, 47) 350 351 // NOr 352 353 NOr(Local0, i000, Local1) 354 CH06(arg0, 86, 47) 355 356 NOr(i000, Local0, Local1) 357 CH06(arg0, 87, 47) 358 359 // Or 360 361 Or(Local0, i000, Local1) 362 CH06(arg0, 90, 47) 363 364 Or(i000, Local0, Local1) 365 CH06(arg0, 91, 47) 366 367 // ShiftLeft 368 369 ShiftLeft(Local0, i000, Local1) 370 CH06(arg0, 94, 47) 371 372 ShiftLeft(i000, Local0, Local1) 373 CH06(arg0, 95, 47) 374 375 // ShiftRight 376 377 ShiftRight(Local0, i000, Local1) 378 CH06(arg0, 98, 47) 379 380 ShiftRight(i000, Local0, Local1) 381 CH06(arg0, 99, 47) 382 383 // Subtract 384 385 Subtract(Local0, i000, Local1) 386 CH06(arg0, 102, 47) 387 388 Subtract(i000, Local0, Local1) 389 CH06(arg0, 103, 47) 390 391 // ToString 392 393 ToString(Local0, 1, Local1) 394 CH06(arg0, 106, 47) 395 396 ToString(i000, Local0, Local1) 397 CH06(arg0, 107, 47) 398 399 // Wait 400 401 Store(Wait(Local0, i000), Local1) 402 CH06(arg0, 108, 47) 403 404 Store(Wait(e000, Local0), Local1) 405 CH06(arg0, 109, 47) 406 407 // XOr 408 409 XOr(Local0, i000, Local1) 410 CH06(arg0, 112, 47) 411 412 XOr(i000, Local0, Local1) 413 CH06(arg0, 113, 47) 414 415 // Mid 416 417 Mid(Local0, 1, 1, Local1) 418 CH06(arg0, 117, 47) 419 420 Mid("123", Local0, 1, Local1) 421 CH06(arg0, 118, 47) 422 423 Mid("123", 1, Local0, Local1) 424 CH06(arg0, 119, 47) 425 426 // Match 427 428 Store (Match(Local0, MTR, 0, MTR, 0, 0), Local1) 429 CH06(arg0, 120, 47) 430 431 Store (Match(Package(){1}, MTR, Local0, MTR, 0, 0), Local1) 432 CH06(arg0, 121, 47) 433 434 Store (Match(Package(){1}, MTR, 0, MTR, Local0, 0), Local1) 435 CH06(arg0, 122, 47) 436 437 Store (Match(Package(){1}, MTR, 0, MTR, 0, Local0), Local1) 438 CH06(arg0, 123, 47) 439 } 440 441 // Reference to Object 442 Method(m003, 2) 443 { 444 Store(ObjectType(arg1), Local0) 445 if (LNotEqual(Local0, 9)) { 446 err(arg0, z101, 200, 0, 0, Local0, 9) 447 return (1) 448 } 449 450 Store (DeRefOf(arg1), Local1) 451 if(LNot(SLCK)){ 452 CH04(ts, 0, 47, z101, 5, 0, 0) 453 } 454 // CondRefOf 455 456 CondRefOf(DeRefOf(arg1), Local1) 457 CH06(arg0, 1, 47) 458 459 // CopyObject 460 461 CopyObject(DeRefOf(arg1), Local1) 462 CH03(ts, z101, 2, 0, 0) 463 464 // Decrement 465 466 Decrement(DeRefOf(arg1)) 467 CH06(arg0, 3, 47) 468 469 // DerefOf 470 471 Store (DerefOf(DeRefOf(arg1)), Local1) 472 CH06(arg0, 4, 47) 473 474 // FindSetLeftBit 475 476 FindSetLeftBit(DeRefOf(arg1), Local1) 477 CH06(arg0, 6, 47) 478 479 // FindSetRightBit 480 481 FindSetRightBit(DeRefOf(arg1), Local1) 482 CH06(arg0, 8, 47) 483 484 // FromBCD 485 486 FromBCD(DeRefOf(arg1), Local1) 487 CH06(arg0, 10, 47) 488 489 // Increment 490 491 Increment(DeRefOf(arg1)) 492 CH06(arg0, 11, 47) 493 494 // LNot 495 496 Store (LNot(DeRefOf(arg1)), Local1) 497 CH06(arg0, 12, 47) 498 499 // Not 500 501 Not(DeRefOf(arg1), Local1) 502 CH06(arg0, 14, 47) 503 504 // ObjectType 505 506 Store (ObjectType(DeRefOf(arg1)), Local1) 507 CH03(ts, z101, 6, 0, 0) 508 509 // RefOf 510 511 Store (RefOf(DeRefOf(arg1)), Local1) 512 CH06(arg0, 15, 47) 513 514 // Release 515 516 // Reset 517 518 // Signal 519 520 // SizeOf 521 522 Store (SizeOf(DeRefOf(arg1)), Local1) 523 CH06(arg0, 16, 47) 524 525 // Sleep 526 527 Sleep(DeRefOf(arg1)) 528 CH06(arg0, 17, 47) 529 530 // Stall 531 532 Stall(DeRefOf(arg1)) 533 CH06(arg0, 18, 47) 534 535 // Store 536 537 Store(DeRefOf(arg1), Local1) 538 CH06(arg0, 19, 47) 539 540 // ToBCD 541 542 ToBCD(DeRefOf(arg1), Local1) 543 CH06(arg0, 21, 47) 544 545 // ToBuffer 546 547 ToBuffer(DeRefOf(arg1), Local1) 548 CH06(arg0, 23, 47) 549 550 // ToDecimalString 551 552 ToDecimalString(DeRefOf(arg1), Local1) 553 CH06(arg0, 25, 47) 554 555 // ToHexString 556 557 ToHexString(DeRefOf(arg1), Local1) 558 CH06(arg0, 27, 47) 559 560 // ToInteger 561 562 ToInteger(DeRefOf(arg1), Local1) 563 CH06(arg0, 29, 47) 564 565 // Acquire 566 567 // Add 568 569 Add(DeRefOf(arg1), i000, Local1) 570 CH06(arg0, 33, 47) 571 572 Add(i000, DeRefOf(arg1), Local1) 573 CH06(arg0, 34, 47) 574 575 // And 576 577 And(DeRefOf(arg1), i000, Local1) 578 CH06(arg0, 37, 47) 579 580 And(i000, DeRefOf(arg1), Local1) 581 CH06(arg0, 38, 47) 582 583 // Concatenate 584 585 Concatenate(DeRefOf(arg1), i000, Local1) 586 CH06(arg0, 41, 47) 587 588 Concatenate(i000, DeRefOf(arg1), Local1) 589 CH06(arg0, 42, 47) 590 591 // ConcatenateResTemplate 592 593 ConcatenateResTemplate(DeRefOf(arg1), ResourceTemplate(){}, Local1) 594 CH06(arg0, 45, 47) 595 596 ConcatenateResTemplate(ResourceTemplate(){}, DeRefOf(arg1), Local1) 597 CH06(arg0, 46, 47) 598 599 // Divide 600 601 Divide(DeRefOf(arg1), i000, Local2) 602 CH06(arg0, 49, 47) 603 604 Divide(i000, DeRefOf(arg1), Local2) 605 CH06(arg0, 50, 47) 606 607 Divide(DeRefOf(arg1), i000, Local2, Local1) 608 CH06(arg0, 51, 47) 609 610 Divide(i000, DeRefOf(arg1), Local2, Local1) 611 CH06(arg0, 52, 47) 612 613 // Fatal 614 615 Fatal(0xff, 0xffffffff, DeRefOf(arg1)) 616 CH06(arg0, 53, 47) 617 618 // Index 619 620 Index(DeRefOf(arg1), 0, Local1) 621 CH06(arg0, 56, 47) 622 623 Index("0", DeRefOf(arg1), Local1) 624 CH06(arg0, 57, 47) 625 626 // LEqual 627 628 Store (LEqual(DeRefOf(arg1), i000), Local1) 629 CH06(arg0, 58, 47) 630 631 Store (LEqual(i000, DeRefOf(arg1)), Local1) 632 CH06(arg0, 59, 47) 633 634 // LGreater 635 636 Store (LGreater(DeRefOf(arg1), i000), Local1) 637 CH06(arg0, 60, 47) 638 639 Store (LGreater(i000, DeRefOf(arg1)), Local1) 640 CH06(arg0, 61, 47) 641 642 // LGreaterEqual 643 644 Store (LGreaterEqual(DeRefOf(arg1), i000), Local1) 645 CH06(arg0, 62, 0xff) 646 647 Store (LGreaterEqual(i000, DeRefOf(arg1)), Local1) 648 CH06(arg0, 63, 0xff) 649 650 // LLess 651 652 Store (LLess(DeRefOf(arg1), i000), Local1) 653 CH06(arg0, 64, 47) 654 655 Store (LLess(i000, DeRefOf(arg1)), Local1) 656 CH06(arg0, 65, 47) 657 658 // LLessEqual 659 660 Store (LLessEqual(DeRefOf(arg1), i000), Local1) 661 CH06(arg0, 66, 0xff) 662 663 Store (LLessEqual(i000, DeRefOf(arg1)), Local1) 664 CH06(arg0, 67, 0xff) 665 666 // LNotEqual 667 668 Store (LNotEqual(DeRefOf(arg1), i000), Local1) 669 CH06(arg0, 68, 0xff) 670 671 Store (LNotEqual(i000, DeRefOf(arg1)), Local1) 672 CH06(arg0, 69, 0xff) 673 674 // LOr 675 676 Store (LOr(DeRefOf(arg1), i000), Local1) 677 CH06(arg0, 70, 47) 678 679 Store (LOr(i000, DeRefOf(arg1)), Local1) 680 CH06(arg0, 71, 47) 681 682 // Mod 683 684 Mod(DeRefOf(arg1), i000, Local1) 685 CH06(arg0, 74, 47) 686 687 Mod(i000, DeRefOf(arg1), Local1) 688 CH06(arg0, 75, 47) 689 690 // Multiply 691 692 Multiply(DeRefOf(arg1), i000, Local1) 693 CH06(arg0, 78, 47) 694 695 Multiply(i000, DeRefOf(arg1), Local1) 696 CH06(arg0, 79, 47) 697 698 // NAnd 699 700 NAnd(DeRefOf(arg1), i000, Local1) 701 CH06(arg0, 82, 47) 702 703 NAnd(i000, DeRefOf(arg1), Local1) 704 CH06(arg0, 83, 47) 705 706 // NOr 707 708 NOr(DeRefOf(arg1), i000, Local1) 709 CH06(arg0, 86, 47) 710 711 NOr(i000, DeRefOf(arg1), Local1) 712 CH06(arg0, 87, 47) 713 714 // Or 715 716 Or(DeRefOf(arg1), i000, Local1) 717 CH06(arg0, 90, 47) 718 719 Or(i000, DeRefOf(arg1), Local1) 720 CH06(arg0, 91, 47) 721 722 // ShiftLeft 723 724 ShiftLeft(DeRefOf(arg1), i000, Local1) 725 CH06(arg0, 94, 47) 726 727 ShiftLeft(i000, DeRefOf(arg1), Local1) 728 CH06(arg0, 95, 47) 729 730 // ShiftRight 731 732 ShiftRight(DeRefOf(arg1), i000, Local1) 733 CH06(arg0, 98, 47) 734 735 ShiftRight(i000, DeRefOf(arg1), Local1) 736 CH06(arg0, 99, 47) 737 738 // Subtract 739 740 Subtract(DeRefOf(arg1), i000, Local1) 741 CH06(arg0, 102, 47) 742 743 Subtract(i000, DeRefOf(arg1), Local1) 744 CH06(arg0, 103, 47) 745 746 // ToString 747 748 ToString(DeRefOf(arg1), 1, Local1) 749 CH06(arg0, 106, 47) 750 751 ToString(i000, DeRefOf(arg1), Local1) 752 CH06(arg0, 107, 47) 753 754 // Wait 755 756 Store(Wait(e000, DeRefOf(arg1)), Local1) 757 CH06(arg0, 109, 47) 758 759 // XOr 760 761 XOr(DeRefOf(arg1), i000, Local1) 762 CH06(arg0, 112, 47) 763 764 XOr(i000, DeRefOf(arg1), Local1) 765 CH06(arg0, 113, 47) 766 767 // Mid 768 769 Mid(DeRefOf(arg1), 1, 1, Local1) 770 CH06(arg0, 117, 47) 771 772 Mid("123", DeRefOf(arg1), 1, Local1) 773 CH06(arg0, 118, 47) 774 775 Mid("123", 1, DeRefOf(arg1), Local1) 776 CH06(arg0, 119, 47) 777 778 // Match 779 780 Store (Match(DeRefOf(arg1), MTR, 0, MTR, 0, 0), Local1) 781 CH06(arg0, 120, 47) 782 783 Store (Match(Package(){1}, MTR, DeRefOf(arg1), MTR, 0, 0), Local1) 784 CH06(arg0, 121, 47) 785 786 Store (Match(Package(){1}, MTR, 0, MTR, DeRefOf(arg1), 0), Local1) 787 CH06(arg0, 122, 47) 788 789 Store (Match(Package(){1}, MTR, 0, MTR, 0, DeRefOf(arg1)), Local1) 790 CH06(arg0, 123, 47) 791 792 return (0) 793 } 794 795 // Result of Method invocation 796 Method(m004, 1, Serialized) 797 { 798 Name(i000, 0) // Label to check m000 invocations 799 800 Method(m000) 801 { 802 CopyObject(mx10, Local0) 803 Return (Local0) 804 } 805 806 // CondRefOf 807 808 if (y601) { 809 Store (CondRefOf(m000()), Local1) 810 CH06(arg0, 0, 47) 811 812 Store (CondRefOf(m000(), Local1), Local1) 813 CH06(arg0, 1, 47) 814 } 815 816 // CopyObject 817 818 CopyObject(m000(), Local1) 819 CH03(ts, z101, 7, 0, 0) 820 821 // Decrement 822 823 Decrement(m000()) 824 CH06(arg0, 2, 47) 825 826 // DerefOf 827 828 Store (DerefOf(m000()), Local1) 829 CH06(arg0, 3, 47) 830 831 // FindSetLeftBit 832 833 FindSetLeftBit(m000(), Local1) 834 CH06(arg0, 5, 47) 835 836 // FindSetRightBit 837 838 FindSetRightBit(m000(), Local1) 839 CH06(arg0, 7, 47) 840 841 // FromBCD 842 843 FromBCD(m000(), Local1) 844 CH06(arg0, 9, 47) 845 846 // Increment 847 848 Increment(m000()) 849 CH06(arg0, 10, 47) 850 851 // LNot 852 853 Store (LNot(m000()), Local1) 854 CH06(arg0, 11, 47) 855 856 // Not 857 858 Not(m000(), Local1) 859 CH06(arg0, 13, 47) 860 861 // ObjectType 862 /* Nov. 2012: Method invocation as arg to ObjectType is now illegal */ 863// 864// ObjectType(m000()) 865// CH03(ts, z101, 8, 0, 0) 866 867 // RefOf 868 869 if (y601) { 870 Store (RefOf(m000()), Local1) 871 CH06(arg0, 14, 47) 872 } 873 874 // Release 875 876 Release(m000()) 877 CH06(arg0, 13, 47) 878 879 // Reset 880 881 Reset(m000()) 882 CH06(arg0, 14, 47) 883 884 // Signal 885 886 Signal(m000()) 887 CH06(arg0, 15, 47) 888 889 // SizeOf 890 891 Store (SizeOf(m000()), Local1) 892 CH06(arg0, 16, 47) 893 894 // Sleep 895 896 Sleep(m000()) 897 CH06(arg0, 17, 47) 898 899 // Stall 900 901 Stall(m000()) 902 CH06(arg0, 18, 47) 903 904 // Store 905 906 Store(m000(), Local1) 907 CH06(arg0, 19, 47) 908 909 // ToBCD 910 911 ToBCD(m000(), Local1) 912 CH06(arg0, 21, 47) 913 914 // ToBuffer 915 916 ToBuffer(m000(), Local1) 917 CH06(arg0, 23, 47) 918 919 // ToDecimalString 920 921 ToDecimalString(m000(), Local1) 922 CH06(arg0, 25, 47) 923 924 // ToHexString 925 926 ToHexString(m000(), Local1) 927 CH06(arg0, 27, 47) 928 929 // ToInteger 930 931 ToInteger(m000(), Local1) 932 CH06(arg0, 29, 47) 933 934 // Acquire 935 936 Store(Acquire(m000(), 100), Local1) 937 CH06(arg0, 30, 47) 938 939 // Add 940 941 Add(m000(), i000, Local1) 942 CH06(arg0, 33, 47) 943 944 Add(i000, m000(), Local1) 945 CH06(arg0, 34, 47) 946 947 // And 948 949 And(m000(), i000, Local1) 950 CH06(arg0, 37, 47) 951 952 And(i000, m000(), Local1) 953 CH06(arg0, 38, 47) 954 955 // Concatenate 956 957 Concatenate(m000(), i000, Local1) 958 CH06(arg0, 41, 47) 959 960 Concatenate(i000, m000(), Local1) 961 CH06(arg0, 42, 47) 962 963 // ConcatenateResTemplate 964 965 ConcatenateResTemplate(m000(), ResourceTemplate(){}, Local1) 966 CH06(arg0, 45, 47) 967 968 ConcatenateResTemplate(ResourceTemplate(){}, m000(), Local1) 969 CH06(arg0, 46, 47) 970 971 // Divide 972 973 Divide(m000(), i000, Local2) 974 CH06(arg0, 49, 47) 975 976 Divide(i000, m000(), Local2) 977 CH06(arg0, 50, 47) 978 979 Divide(m000(), i000, Local2, Local1) 980 CH06(arg0, 51, 47) 981 982 Divide(i000, m000(), Local2, Local1) 983 CH06(arg0, 52, 47) 984 985 // Fatal 986 987 Fatal(0xff, 0xffffffff, m000()) 988 CH06(arg0, 53, 47) 989 990 // Index 991 992 Index(m000(), 0, Local1) 993 CH06(arg0, 56, 47) 994 995 Index("0", m000(), Local1) 996 CH06(arg0, 57, 47) 997 998 // LEqual 999 1000 Store (LEqual(m000(), i000), Local1) 1001 CH06(arg0, 58, 47) 1002 1003 Store (LEqual(i000, m000()), Local1) 1004 CH06(arg0, 59, 47) 1005 1006 // LGreater 1007 1008 Store (LGreater(m000(), i000), Local1) 1009 CH06(arg0, 60, 47) 1010 1011 Store (LGreater(i000, m000()), Local1) 1012 CH06(arg0, 61, 47) 1013 1014 // LGreaterEqual 1015 1016 Store (LGreaterEqual(m000(), i000), Local1) 1017 CH06(arg0, 62, 0xff) 1018 1019 Store (LGreaterEqual(i000, m000()), Local1) 1020 CH06(arg0, 63, 0xff) 1021 1022 // LLess 1023 1024 Store (LLess(m000(), i000), Local1) 1025 CH06(arg0, 64, 47) 1026 1027 Store (LLess(i000, m000()), Local1) 1028 CH06(arg0, 65, 47) 1029 1030 // LLessEqual 1031 1032 Store (LLessEqual(m000(), i000), Local1) 1033 CH06(arg0, 66, 0xff) 1034 1035 Store (LLessEqual(i000, m000()), Local1) 1036 CH06(arg0, 67, 0xff) 1037 1038 // LNotEqual 1039 1040 Store (LNotEqual(m000(), i000), Local1) 1041 CH06(arg0, 68, 0xff) 1042 1043 Store (LNotEqual(i000, m000()), Local1) 1044 CH06(arg0, 69, 0xff) 1045 1046 // LOr 1047 1048 Store (LOr(m000(), i000), Local1) 1049 CH06(arg0, 70, 47) 1050 1051 Store (LOr(i000, m000()), Local1) 1052 CH06(arg0, 71, 47) 1053 1054 // Mod 1055 1056 Mod(m000(), i000, Local1) 1057 CH06(arg0, 74, 47) 1058 1059 Mod(i000, m000(), Local1) 1060 CH06(arg0, 75, 47) 1061 1062 // Multiply 1063 1064 Multiply(m000(), i000, Local1) 1065 CH06(arg0, 78, 47) 1066 1067 Multiply(i000, m000(), Local1) 1068 CH06(arg0, 79, 47) 1069 1070 // NAnd 1071 1072 NAnd(m000(), i000, Local1) 1073 CH06(arg0, 82, 47) 1074 1075 NAnd(i000, m000(), Local1) 1076 CH06(arg0, 83, 47) 1077 1078 // NOr 1079 1080 NOr(m000(), i000, Local1) 1081 CH06(arg0, 86, 47) 1082 1083 NOr(i000, m000(), Local1) 1084 CH06(arg0, 87, 47) 1085 1086 // Or 1087 1088 Or(m000(), i000, Local1) 1089 CH06(arg0, 90, 47) 1090 1091 Or(i000, m000(), Local1) 1092 CH06(arg0, 91, 47) 1093 1094 // ShiftLeft 1095 1096 ShiftLeft(m000(), i000, Local1) 1097 CH06(arg0, 94, 47) 1098 1099 ShiftLeft(i000, m000(), Local1) 1100 CH06(arg0, 95, 47) 1101 1102 // ShiftRight 1103 1104 ShiftRight(m000(), i000, Local1) 1105 CH06(arg0, 98, 47) 1106 1107 ShiftRight(i000, m000(), Local1) 1108 CH06(arg0, 99, 47) 1109 1110 // Subtract 1111 1112 Subtract(m000(), i000, Local1) 1113 CH06(arg0, 102, 47) 1114 1115 Subtract(i000, m000(), Local1) 1116 CH06(arg0, 103, 47) 1117 1118 // ToString 1119 1120 ToString(m000(), 1, Local1) 1121 CH06(arg0, 106, 47) 1122 1123 ToString(i000, m000(), Local1) 1124 CH06(arg0, 107, 47) 1125 1126 // Wait 1127 1128 Store(Wait(m000(), i000), Local1) 1129 CH06(arg0, 108, 47) 1130 1131 Store(Wait(e000, m000()), Local1) 1132 CH06(arg0, 109, 47) 1133 1134 // XOr 1135 1136 XOr(m000(), i000, Local1) 1137 CH06(arg0, 112, 47) 1138 1139 XOr(i000, m000(), Local1) 1140 CH06(arg0, 113, 47) 1141 1142 // Mid 1143 1144 Mid(m000(), 1, 1, Local1) 1145 CH06(arg0, 117, 47) 1146 1147 Mid("123", m000(), 1, Local1) 1148 CH06(arg0, 118, 47) 1149 1150 Mid("123", 1, m000(), Local1) 1151 CH06(arg0, 119, 47) 1152 1153 // Match 1154 1155 Store (Match(m000(), MTR, 0, MTR, 0, 0), Local1) 1156 CH06(arg0, 120, 47) 1157 1158 Store (Match(Package(){1}, MTR, m000(), MTR, 0, 0), Local1) 1159 CH06(arg0, 121, 47) 1160 1161 Store (Match(Package(){1}, MTR, 0, MTR, m000(), 0), Local1) 1162 CH06(arg0, 122, 47) 1163 1164 Store (Match(Package(){1}, MTR, 0, MTR, 0, m000()), Local1) 1165 CH06(arg0, 123, 47) 1166 } 1167 1168 // Reference to Object as Result of Method invocation 1169 Method(m005, 1, Serialized) 1170 { 1171 Mutex(mx02, 0) 1172 1173 Name(i000, 0) // Label to check m000 invocations 1174 1175 Method(m000, 2) 1176 { 1177 Store(arg0, i000) 1178 if (LEqual(arg1, 0)) { 1179 Store(Refof(mx10), Local0) 1180 } elseif (LEqual(arg1, 1)) { 1181 Store(Refof(mx02), Local0) 1182 } 1183 Return (Local0) 1184 } 1185 1186 Method(CH00, 2) 1187 { 1188 if (LNotEqual(i000, arg1)) { 1189 err(arg0, z101, 0, 0, 0, i000, arg1) 1190 } 1191 } 1192 1193 Name(lpN0, 2) 1194 Name(lpC0, 0) 1195 1196 While (lpN0) { 1197 Multiply(3, lpC0, Local0) 1198 1199 Store(0, i000) 1200 1201 Store (DerefOf(m000(1, lpC0)), Local1) 1202 if(Lnot(SLCK)){ 1203 CH04(ts, 0, 47, z101, Add(9, lpC0), 0, 0) 1204 } 1205 CH00(arg0, 1) 1206 1207 Store (DerefOf(DerefOf(m000(2, lpC0))), Local1) 1208 if(LNot(SLCK)){ 1209 CH06(arg0, Add(1, Local0), 47) 1210 } 1211 CH00(arg0, 2) 1212 1213 Store (Index(DerefOf(m000(3, lpC0)), 0), Local1) 1214 CH06(arg0, Add(2, Local0), 47) 1215 CH00(arg0, 3) 1216 1217 Store (Match(DerefOf(m000(4, lpC0)), MTR, 0, MTR, 0, 0), Local1) 1218 CH06(arg0, Add(3, Local0), 47) 1219 CH00(arg0, 4) 1220 1221 Decrement(lpN0) 1222 Increment(lpC0) 1223 } 1224 } 1225 1226 SET0(z101, ts, 0) 1227 1228 CH03(ts, z101, 11, 0, 0) 1229 1230 // Local Named Object 1231 m000(ts) 1232 1233 // Global Named Object 1234 m001(ts) 1235 1236 // Local 1237 m002(Concatenate(ts, "-m002")) 1238 1239 // Reference to Local Named Object 1240 1241 m003(Concatenate(ts, "-m003-RefLocName"), RefOf(mx01)) 1242 1243 Store(RefOf(mx01), Local0) 1244 m003(Concatenate(ts, "-m003-RefLocName2"), Local0) 1245 1246 CondRefOf(mx01, Local0) 1247 m003(Concatenate(ts, "-m003-CondRefLocName"), Local0) 1248 1249 m003(Concatenate(ts, "-m003-RefGlobName"), RefOf(mx10)) 1250 1251 Store(RefOf(mx10), Local0) 1252 m003(Concatenate(ts, "-m003-RefGlobName2"), Local0) 1253 1254 CondRefOf(mx10, Local0) 1255 m003(Concatenate(ts, "-m003-CondRefGlobName"), Local0) 1256 1257 // Reference to Object as element of Package 1258 1259 Name(pp00, Package(){mx10}) 1260 1261 if (y113) { 1262 m003(Concatenate(ts, "-m003-Index"), Index(pp00, 0)) 1263 } 1264 1265 Store(Index(pp00, 0), Local1) 1266 m003(Concatenate(ts, "-m003-Index2"), Local1) 1267 1268 if (y113) { 1269 m003(Concatenate(ts, "-m003-Index3"), Index(pp00, 0, Local2)) 1270 } 1271 1272 Index(pp00, 0, Local3) 1273 m003(Concatenate(ts, "-m003-Index4"), Local3) 1274 1275 Store(Index(pp00, 0, Local4), Local5) 1276 m003(Concatenate(ts, "-m003-Index5"), Local5) 1277 1278 // Result of Method invocation 1279 m004(Concatenate(ts, "-m004")) 1280 1281 // Reference to Object as Result of Method invocation 1282 m005(Concatenate(ts, "-m005")) 1283 1284 RST0() 1285} 1286