1 /* 2 * Some or all of this work - Copyright (c) 2006 - 2021, 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 * Operation Region declarations 30 */ 31 /* 32 * On testing following issues should be covered: 33 * - application of any allowed RegionSpace Keywords, 34 * - Devices' _REG methods invocation during setup of Regions, 35 * - global and dynamic Operation Region declarations, 36 * - check of the Region Length on access to appropriate Fields, 37 * - check that Region Offset and Length can be computational data. 38 * 39 * Can not be tested following issues: 40 * - emulated Access to SystemCMOS, PciBarTarget, and UserDefRegionSpace 41 * (except 0x80) Operation Regions (there are no appropriate setup of them), 42 * - Operation Region address range mapping to given Offset and Length, 43 * - large values as Region Length, 44 * - host OS providing of exclusive use of hardware registers in global 45 * Operation Region address range by ACPI control methods only. 46 */ 47 Name (Z141, 0x8D) 48 Name (NRSK, 0x0B) /* Number of the specific RegionSpaceKeywords */ 49 Name (IRSK, 0x00) /* Counter of the Invalid RSKs */ 50 Name (NFLG, 0x02) /* Number of turn on/off Flag values */ 51 Name (IFLG, 0x00) /* Counter of the Invalid Flags */ 52 Name (FRSK, 0x0101) /* Some false RegionSpace Keyword */ 53 Name (PRSK, Package (NRSK) 54 { 55 0x0100, 56 /* UserDefRegionSpace 0x80-0xFF: auxiliary */ 57 58 0x00, 59 /* SystemMemory */ 60 61 0x01, 62 /* SystemIO */ 63 64 0x02, 65 /* PCI_Config */ 66 67 0x03, 68 /* EmbeddedControl */ 69 70 0x04, 71 /* SMBus */ 72 73 0x05, 74 /* SystemCMOS */ 75 76 0x06, 77 /* PciBarTarget */ 78 79 0x07, 80 /* IPMI */ 81 82 0x08, 83 /* GeneralPurposeIo */ 84 85 0x09 86 /* GenericSerialBus */ 87 }) 88 /* DefaultAddressSpaces */ 89 90 Name (DRSK, Package (0x03) 91 { 92 0x00, 93 /* SystemMemory */ 94 95 0x01, 96 /* SystemIO */ 97 98 0x02 99 /* PCI_Config */ 100 }) 101 Name (VRSK, /* Counters of the Valid RSKs */Package (NRSK) 102 { 103 0x00, 104 0x00, 105 0x00, 106 0x00, 107 0x00, 108 0x00, 109 0x00, 110 0x00, 111 0x00, 112 0x00, 113 0x00 114 }) 115 /* Expected Counters of the Valid RSKs */ 116 /* actually, not only default spaces are initialized */ 117 /* by ACPICA, but AcpiExec provided ones also, */ 118 /* from aeexec.c: */ 119 /* 120 static ACPI_ADR_SPACE_TYPE SpaceIdList[] = 121 { 122 ACPI_ADR_SPACE_EC, 123 ACPI_ADR_SPACE_SMBUS, 124 ACPI_ADR_SPACE_GSBUS, 125 ACPI_ADR_SPACE_GPIO, 126 ACPI_ADR_SPACE_PCI_BAR_TARGET, 127 ACPI_ADR_SPACE_IPMI, 128 ACPI_ADR_SPACE_FIXED_HARDWARE, 129 ACPI_ADR_SPACE_USER_DEFINED1, 130 ACPI_ADR_SPACE_USER_DEFINED2 131 }; 132 */ 133 Name (ERSK, /* 2 for \RGN0, \OPRK; 3 for \RGN0, \OPRI, and \OPRJ */ 134 135Package (NRSK) 136 { 137 0x01, 138 0x02, 139 0x03, 140 0x01, 141 0x01, 142 0x01, 143 0x00, 144 0x00, 145 0x00, 146 0x00, 147 0x00 148 }) 149 Name (VFLG, /* Counters of the Valid Flags */Package (NFLG) 150 { 151 0x00, 152 0x00 153 }) 154 /* Global Operation Regions availability notification Method */ 155 /* _REG(RegionSpaceKeyword, Flag) */ 156 /* RegionSpaceKeyword: */ 157 /* UserDefRegionSpace | SystemIO | SystemMemory | PCI_Config | */ 158 /* EmbeddedControl | SMBus | SystemCMOS | PciBarTarget | */ 159 /* IPMI | GeneralPurposeIo | GenericSerialBus */ 160 /* Flag: 1/0 - turn on/off accessing operation regions of that Space */ 161 Method (_REG, 2, Serialized) // _REG: Region Availability 162 { 163 Name (DBGF, 0x01) 164 If (DBGF) 165 { 166 DNAM (Arg0, Arg1, "\\_REG") 167 } 168 169 Local0 = Match (PRSK, MEQ, Arg0, MTR, 0x00, 0x01) 170 If (((Arg0 > 0x7F) && (Arg0 < 0x0100))) 171 { 172 Local0 = 0x00 173 } 174 175 If ((Local0 < NRSK)) 176 { 177 Local1 = VRSK [Local0] 178 Local2 = RefOf (Local1) 179 DerefOf (Local2) = (DerefOf (Local1) + 0x01) 180 } 181 Else 182 { 183 IRSK++ 184 } 185 186 If ((Arg1 < NFLG)) 187 { 188 Local1 = VFLG [Arg1] 189 Local2 = RefOf (Local1) 190 DerefOf (Local2) = (DerefOf (Local1) + 0x01) 191 } 192 Else 193 { 194 IFLG++ 195 } 196 } 197 198 /* Combination of the OperationRegion operator arguments */ 199 200 OperationRegion (RGN0, SystemMemory, 0x00, 0x0101) 201 OperationRegion (RGN1, SystemIO, 0x0200, 0x0103) 202 OperationRegion (RGN2, PCI_Config, 0x0400, 0x0105) 203 OperationRegion (RGN3, EmbeddedControl, 0x0600, 0x0107) 204 OperationRegion (RGN4, SMBus, 0x0800, 0x0109) 205 OperationRegion (RGN5, SystemCMOS, 0x0A00, 0x010B) 206 OperationRegion (RGN6, PCIBARTarget, 0x0C00, 0x010D) 207 /* UserDefRegionSpace */ 208 209 OperationRegion (RGN7, 0x80, 0x0D00, 0x0117) 210 OperationRegion (RGN8, 0xCF, 0x0E00, 0x0118) 211 OperationRegion (RGN9, 0xFF, 0x0F00, 0x0119) 212 /* ACPI 4/5 new space IDs */ 213 214 OperationRegion (RGNA, GeneralPurposeIo, 0x1100, 0x011A) 215 /* NOTE: These spaces have special buffer protocols, can't be tested here */ 216 /*OperationRegion(RGNb, IPMI, 0x1000, 528) */ 217 /*OperationRegion(RGNc, GenericSerialBus, 0x1200, 272) */ 218 /* OpRegion Lengths checking task package: Name, SpaceID, Length */ 219 Name (P702, Package (0x21) 220 { 221 RGN0, 222 0x00, 223 0x0101, 224 RGN1, 225 0x01, 226 0x0103, 227 RGN2, 228 0x02, 229 0x0105, 230 RGN3, 231 0x03, 232 0x0107, 233 RGN4, 234 0x04, 235 0x0109, 236 RGN5, 237 0x05, 238 0x010B, 239 RGN6, 240 0x06, 241 0x010D, 242 RGN7, 243 0x80, 244 0x0117, 245 RGN8, 246 0xCF, 247 0x0118, 248 RGN9, 249 0xFF, 250 0x0119, 251 RGNA, 252 0x08, 253 0x011A 254 }) 255 /* Region Space keyword strings */ 256 257 Name (NNAM, 0x0A) 258 Name (RNAM, Package (NNAM) 259 { 260 /* 0x00 */ 261 262 "SystemMemory", 263 /* 0x01 */ 264 265 "SystemIO", 266 /* 0x02 */ 267 268 "PCI_Config", 269 /* 0x03 */ 270 271 "EmbeddedControl", 272 /* 0x04 */ 273 274 "SMBus", 275 /* 0x05 */ 276 277 "SystemCMOS", 278 /* 0x06 */ 279 280 "PciBarTarget", 281 /* 0x07 */ 282 283 "IPMI", 284 /* 0x08 */ 285 286 "GeneralPurposeIo", 287 /* 0x09 */ 288 289 "GenericSerialBus" 290 }) 291 /* 292 * Display _REG method info 293 */ 294 /* Arg0: SpaceID */ 295 /* Arg1: Enable/Disable flag */ 296 /* Arg2: _REG method name */ 297 Method (DNAM, 3, NotSerialized) 298 { 299 Concatenate ("Executing _REG method: ", Arg2, Local1) 300 Concatenate (Local1, " (", Local1) 301 If ((Arg0 >= NNAM)) 302 { 303 If ((Arg0 == 0x7E)) 304 { 305 Concatenate (Local1, "Data Table", Local2) 306 } 307 Else 308 { 309 Concatenate (Local1, "User-defined or unknown SpaceId", Local2) 310 } 311 } 312 Else 313 { 314 Concatenate (Local1, DerefOf (RNAM [Arg0]), Local2) 315 } 316 317 Concatenate (Local2, ")", Local2) 318 Debug = Local2 319 Debug = Arg0 320 Debug = Arg1 321 } 322 323 Device (DOR0) 324 { 325 Name (IRSK, 0x00) /* Counter of the Invalid RSKs */ 326 Name (IFLG, 0x00) /* Counter of the Invalid Flags */ 327 Name (VRSK, /* Counters of the Valid RSKs */Package (NRSK) 328 { 329 0x00, 330 0x00, 331 0x00, 332 0x00, 333 0x00, 334 0x00, 335 0x00, 336 0x00, 337 0x00, 338 0x00, 339 0x00 340 }) 341 Name (ERSK, /* Expected Counters of the Valid RSKs */Package (NRSK) 342 { 343 0x01, 344 0x01, 345 0x01, 346 0x01, 347 0x01, 348 0x01, 349 0x00, 350 0x00, 351 0x00, 352 0x00, 353 0x00 354 }) 355 Name (VFLG, /* Counters of the Valid Flags */Package (NFLG) 356 { 357 0x00, 358 0x00 359 }) 360 /* Specific Operation Regions availability notification Method */ 361 /* \DOR0._REG(RegionSpaceKeyword, Flag) */ 362 Method (_REG, 2, Serialized) // _REG: Region Availability 363 { 364 Name (DBGF, 0x01) 365 If (DBGF) 366 { 367 DNAM (Arg0, Arg1, "\\DOR0._REG") 368 } 369 370 Local0 = Match (PRSK, MEQ, Arg0, MTR, 0x00, 0x01) 371 If (((Arg0 > 0x7F) && (Arg0 < 0x0100))) 372 { 373 Local0 = 0x00 374 } 375 376 If ((Local0 < NRSK)) 377 { 378 Local1 = VRSK [Local0] 379 Local2 = RefOf (Local1) 380 DerefOf (Local2) = (DerefOf (Local1) + 0x01) 381 } 382 Else 383 { 384 IRSK++ 385 } 386 387 If ((Arg1 < NFLG)) 388 { 389 Local1 = VFLG [Arg1] 390 Local2 = RefOf (Local1) 391 DerefOf (Local2) = (DerefOf (Local1) + 0x01) 392 } 393 Else 394 { 395 IFLG++ 396 } 397 } 398 399 /* Combination of the OperationRegion operator arguments */ 400 401 OperationRegion (RGN0, SystemMemory, 0x1000, 0x0102) 402 OperationRegion (RGN1, SystemIO, 0x1200, 0x0104) 403 OperationRegion (RGN2, PCI_Config, 0x1400, 0x0106) 404 OperationRegion (RGN3, EmbeddedControl, 0x1600, 0x0108) 405 OperationRegion (RGN4, SMBus, 0x1800, 0x010A) 406 OperationRegion (RGN5, SystemCMOS, 0x1A00, 0x010C) 407 OperationRegion (RGN6, PCIBARTarget, 0x1C00, 0x010D) 408 /* UserDefRegionSpace */ 409 410 OperationRegion (RGN7, 0x80, 0x00, 0x0127) 411 OperationRegion (RGN8, 0xA5, 0x00, 0x0128) 412 OperationRegion (RGN9, 0xFF, 0x00, 0x0129) 413 /* ACPI 4/5 new space IDs */ 414 415 OperationRegion (RGNA, IPMI, 0x1E00, 0x010E) 416 OperationRegion (RGNB, GeneralPurposeIo, 0x2000, 0x010F) 417 OperationRegion (RGNC, GenericSerialBus, 0x2200, 0x0110) 418 } 419 420 Device (DOR1) 421 { 422 Name (IRSK, 0x00) /* Counter of the Invalid RSKs */ 423 Name (IFLG, 0x00) /* Counter of the Invalid Flags */ 424 Name (VRSK, /* Counters of the Valid RSKs */Package (NRSK) 425 { 426 0x00, 427 0x00, 428 0x00, 429 0x00, 430 0x00, 431 0x00, 432 0x00, 433 0x00, 434 0x00, 435 0x00, 436 0x00 437 }) 438 Name (ERSK, /* Expected Counters of the Valid RSKs */Package (NRSK) 439 { 440 0x01, 441 0x01, 442 0x01, 443 0x01, 444 0x01, 445 0x01, 446 0x00, 447 0x00, 448 0x00, 449 0x00, 450 0x00 451 }) 452 Name (VFLG, /* Counters of the Valid Flags */Package (NFLG) 453 { 454 0x00, 455 0x00 456 }) 457 Name (IREG, 0x00) /* Counter of the Invalid Calls to DOR1._REG */ 458 /* Specific Operation Regions availability notification Method */ 459 /* \DOR1._REG(RegionSpaceKeyword, Flag) */ 460 OperationRegion (JUNK, SystemMemory, 0x2000, 0x0100) 461 Method (_REG, 2, Serialized) // _REG: Region Availability 462 { 463 Name (DBGF, 0x01) 464 If (DBGF) 465 { 466 DNAM (Arg0, Arg1, "\\DOR1._REG") 467 } 468 469 IREG++ 470 } 471 472 Method (M000, 0, Serialized) 473 { 474 /* Dynamic Operation Regions availability notification Method */ 475 /* \DOR1.M000._REG(RegionSpaceKeyword, Flag) */ 476 Method (_REG, 2, Serialized) // _REG: Region Availability 477 { 478 Name (DBGF, 0x01) 479 If (DBGF) 480 { 481 DNAM (Arg0, Arg1, "\\m701._REG") 482 } 483 484 Local0 = Match (PRSK, MEQ, Arg0, MTR, 0x00, 0x01) 485 If (((Arg0 > 0x7F) && (Arg0 < 0x0100))) 486 { 487 Local0 = 0x00 488 } 489 490 If ((Local0 < NRSK)) 491 { 492 Local1 = VRSK [Local0] 493 Local2 = RefOf (Local1) 494 DerefOf (Local2) = (DerefOf (Local1) + 0x01) 495 } 496 Else 497 { 498 IRSK++ 499 } 500 501 If ((Arg1 < NFLG)) 502 { 503 Local1 = VFLG [Arg1] 504 Local2 = RefOf (Local1) 505 DerefOf (Local2) = (DerefOf (Local1) + 0x01) 506 } 507 Else 508 { 509 IFLG++ 510 } 511 } 512 513 /* Combination of the OperationRegion operator arguments */ 514 515 OperationRegion (RGN0, SystemMemory, 0x2000, 0x0100) 516 OperationRegion (RGN1, SystemIO, 0x2200, 0x0300) 517 OperationRegion (RGN2, PCI_Config, 0x2400, 0x0500) 518 OperationRegion (RGN3, EmbeddedControl, 0x2600, 0x0700) 519 OperationRegion (RGN4, SMBus, 0x2800, 0x0900) 520 OperationRegion (RGN5, SystemCMOS, 0x2A00, 0x0B00) 521 OperationRegion (RGN6, PCIBARTarget, 0x2C00, 0x0D00) 522 /* UserDefRegionSpace */ 523 524 OperationRegion (RGN7, 0x80, 0x00, 0x0100) 525 OperationRegion (RGN8, 0xA5, 0x00, 0x0100) 526 OperationRegion (RGN9, 0xFF, 0x00, 0x0100) 527 /* ACPI 4/5 new space IDs */ 528 529 OperationRegion (RGNA, IPMI, 0x2E00, 0x0F00) 530 OperationRegion (RGNB, GeneralPurposeIo, 0x3000, 0x1100) 531 OperationRegion (RGNC, GenericSerialBus, 0x3200, 0x1300) 532 /* Incorrect call */ 533 534 _REG (FRSK, 0x02) 535 } 536 } 537 538 /* Check Global OpRegions initialization */ 539 /* m700(CallChain) */ 540 /* CallChain: String */ 541 Method (M700, 1, NotSerialized) 542 { 543 Concatenate (Arg0, "-m700", Arg0) 544 /* Check incorrect calls */ 545 546 If ((IRSK != 0x00)) 547 { 548 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IRSK, 0x00) 549 } 550 551 If ((IFLG != 0x00)) 552 { 553 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IFLG, 0x00) 554 } 555 556 If ((\DOR0.IRSK != 0x00)) 557 { 558 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IRSK, 0x00) 559 } 560 561 If ((\DOR0.IFLG != 0x00)) 562 { 563 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IFLG, 0x00) 564 } 565 566 /* Emulate and verify incorrect calls */ 567 568 _REG (FRSK, 0x02) 569 \DOR0._REG (FRSK, 0x02) 570 If ((IRSK != 0x01)) 571 { 572 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IRSK, 0x01) 573 } 574 575 If ((IFLG != 0x01)) 576 { 577 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IFLG, 0x01) 578 } 579 580 If ((\DOR0.IRSK != 0x01)) 581 { 582 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IRSK, 0x01) 583 } 584 585 If ((\DOR0.IFLG != 0x01)) 586 { 587 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, IFLG, 0x01) 588 } 589 590 /* Check total calls to \_REG */ 591 592 If ((DerefOf (VFLG [0x01]) != 0x09)) 593 { 594 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, DerefOf (VFLG [0x01]), 0x09) 595 } 596 597 M70E (Arg0, 0x01, VRSK, ERSK, 0x0A) 598 /* Check total calls to \DOR0._REG */ 599 600 If ((DerefOf (\DOR0.VFLG [0x01]) != 0x06)) 601 { 602 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, DerefOf (\DOR0.VFLG [0x01]), 0x06) 603 } 604 605 M70E (Arg0, 0x01, \DOR0.VRSK, \DOR0.ERSK, 0x0C) 606 } 607 608 /* Check Dynamic OpRegions initialization */ 609 /* m701(CallChain) */ 610 /* CallChain: String */ 611 Method (M701, 1, NotSerialized) 612 { 613 Concatenate (Arg0, "-m701", Arg0) 614 If ((\DOR1.IREG != 0x00)) 615 { 616 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, \DOR1.IREG, 0x00) 617 } 618 619 If ((\DOR1.IRSK != 0x00)) 620 { 621 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, \DOR1.IRSK, 0x00) 622 } 623 624 If ((\DOR1.IFLG != 0x00)) 625 { 626 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, \DOR1.IFLG, 0x00) 627 } 628 629 If ((DerefOf (\DOR1.VFLG [0x01]) != 0x00)) 630 { 631 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, DerefOf (\DOR1.VFLG [0x01]), 0x00) 632 } 633 634 M70E (Arg0, 0x02, \DOR1.VRSK, 0x00, 0x11) 635 \DOR1.M000 () 636 If ((\DOR1.IREG != 0x00)) 637 { 638 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, \DOR1.IREG, 0x01) 639 } 640 641 If ((\DOR1.IRSK != 0x01)) 642 { 643 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, \DOR1.IRSK, 0x01) 644 } 645 646 If ((\DOR1.IFLG != 0x01)) 647 { 648 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, \DOR1.IFLG, 0x01) 649 } 650 651 /* Check total calls to \DOR1._REG */ 652 653 If ((DerefOf (\DOR1.VFLG [0x01]) != 0x06)) 654 { 655 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, DerefOf (\DOR1.VFLG [0x01]), 0x06) 656 } 657 658 M70E (Arg0, 0x01, \DOR1.VRSK, \DOR1.ERSK, 0x16) 659 } 660 661 /* Check OpRegion Length restrictions */ 662 /* m702(CallChain) */ 663 /* CallChain: String */ 664 Method (M702, 1, NotSerialized) 665 { 666 Concatenate (Arg0, "-m702", Arg0) 667 Local0 = SizeOf (P702) 668 Local0 /= 0x03 669 Local1 = 0x00 670 While (Local0) 671 { 672 M70C (Arg0, P702, Local1) 673 Local0-- 674 Local1++ 675 } 676 } 677 678 /* Check Overlapping of OpRegions */ 679 /* m703(CallChain) */ 680 /* CallChain: String */ 681 Method (M703, 1, Serialized) 682 { 683 Concatenate (Arg0, "-m703", Arg0) 684 /* Overlap \RGN0 - \RGN9 */ 685 686 OperationRegion (RGN0, SystemMemory, 0x80, 0x0121) 687 OperationRegion (RGN1, SystemIO, 0x0280, 0x0123) 688 OperationRegion (RGN2, PCI_Config, 0x0480, 0x0125) 689 OperationRegion (RGN3, EmbeddedControl, 0x0680, 0x0127) 690 OperationRegion (RGN4, SMBus, 0x0880, 0x0109) 691 OperationRegion (RGN5, SystemCMOS, 0x0A80, 0x012B) 692 OperationRegion (RGN6, PCIBARTarget, 0x0C80, 0x012D) 693 /* UserDefRegionSpace */ 694 695 OperationRegion (RGN7, 0x80, 0x0D80, 0x0137) 696 OperationRegion (RGN8, 0xCF, 0x0E80, 0x0138) 697 OperationRegion (RGN9, 0xFF, 0x0F80, 0x0139) 698 OperationRegion (RGNA, SystemMemory, 0x1090, 0x014A) 699 /* Unsupported cases commented */ 700 701 M70F (Arg0, \RGN0, RGN0, 0x01, 0x00) 702 M70F (Arg0, \RGN1, RGN1, 0x01, 0x01) 703 /* m70f(arg0, \RGN2, RGN2, 1, 2) */ 704 /* m70f(arg0, \RGN3, RGN3, 1, 3) */ 705 /* m70f(arg0, \RGN4, RGN4, 1, 4) */ 706 /* m70f(arg0, \RGN5, RGN5, 1, 5) */ 707 /* m70f(arg0, \RGN6, RGN6, 1, 6) */ 708 M70F (Arg0, \RGN7, RGN7, 0x01, 0x07) 709 /* m70f(arg0, \RGN8, RGN8, 1, 8) */ 710 /* m70f(arg0, \RGN9, RGN9, 1, 9) */ 711 M70F (Arg0, \DOR0.RGN0, RGNA, 0x00, 0x0A) 712 } 713 714 /* Create Region Field about Region Length in length */ 715 /* and check possible exception */ 716 /* m70c(CallChain, Task, Index) */ 717 Method (M70C, 3, Serialized) 718 { 719 OperationRegion (OPRM, 0xFF, 0x00, 0x1000) 720 Concatenate (Arg0, "-m70c", Arg0) 721 Local4 = (Arg2 * 0x03) 722 Local0 = (Local4 + 0x01) 723 Local3 = DerefOf (Arg1 [Local0]) 724 Local0++ 725 Local2 = DerefOf (Arg1 [Local0]) 726 Local1 = (Local2 * 0x08) 727 Name (B000, Buffer (0x0100){}) 728 CopyObject (DerefOf (Arg1 [Local4]), OPRM) /* \M70C.OPRM */ 729 Field (OPRM, ByteAcc, NoLock, Preserve) 730 { 731 FU01, 2048 732 } 733 734 Local6 = RefOf (FU01) 735 Local5 = RefOf (Local6) 736 M70D (Arg2, B000) 737 If ((Local3 == 0x02) /* PCI_Config */ 738 ){} 739 ElseIf ((Local3 == 0x03) /* EmbbededControl */ 740 ){} 741 ElseIf ((Local3 == 0x04) /* SMBus */ 742 ){} 743 ElseIf ((Local3 == 0x05) /* SystemCMOS */ 744 ){} 745 ElseIf ((Local3 == 0x06) /* PciBarTarget */ 746 ){} 747 ElseIf ((Local3 == 0x07) /* IPMI */ 748 ){} 749 ElseIf ((Local3 == 0x08) /* GeneralPurposeIo */ 750 ){} 751 ElseIf ((Local3 > 0x80) /* UserDefRegionSpace <> 0x80 */ 752 ){} 753 Else 754 { 755 DerefOf (Local5) = B000 /* \M70C.B000 */ 756 CH03 (Arg0, Z141, __LINE__, 0x00, Local3) 757 Local0 = ObjectType (DerefOf (Local6)) 758 Local1 = C00B /* \C00B */ 759 If ((Local0 != Local1)) 760 { 761 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, Local0, Local1) 762 } 763 Else 764 { 765 Local0 = DerefOf (Local6) 766 If ((Local0 != B000)) 767 { 768 ERR (Arg0, Z141, __LINE__, Z141, Arg2, Local0, B000) 769 } 770 } 771 } 772 } 773 774 /* Fill the buffer */ 775 /* m70d(Source, Target) */ 776 /* Source: 0x100 - index, else - this byte */ 777 /* Target: buffer for filling */ 778 Method (M70D, 2, Serialized) 779 { 780 Local0 = SizeOf (Arg1) 781 While (Local0) 782 { 783 Local0-- 784 Switch (ToInteger (Arg0)) 785 { 786 Case (0x0100) 787 { 788 Arg1 [Local0] = Local0 789 } 790 Default 791 { 792 Arg1 [Local0] = Arg0 793 } 794 795 } 796 } 797 } 798 799 /* Processes the VRSK */ 800 /* m70e(CallChain, ToDo, Results, Benchmark, ErrId) */ 801 /* CallChain: String */ 802 /* ToDo: 0 - nullify, 1 - Check Values, 2 - check if null */ 803 /* Results: actual VRSK Values */ 804 /* Benchmark: expected VRSK Values */ 805 /* ErrId: index of the error */ 806 Method (M70E, 5, Serialized) 807 { 808 Concatenate (Arg0, "-m70e", Arg0) 809 Local0 = NRSK /* \NRSK */ 810 While (Local0) 811 { 812 Local0-- 813 Local1 = Arg2 [Local0] 814 Local2 = RefOf (Local1) 815 Switch (ToInteger (Arg1)) 816 { 817 Case (0x00) 818 { 819 DerefOf (Local2) = 0x00 820 } 821 Case (0x01) 822 { 823 Local3 = Arg3 [Local0] 824 If ((DerefOf (Local1) != DerefOf (Local3))) 825 { 826 ERR (Arg0, Z141, __LINE__, Z141, Local0, DerefOf (Local1), DerefOf (Local3)) 827 } 828 } 829 Case (0x02) 830 { 831 If ((DerefOf (Local1) != 0x00)) 832 { 833 ERR (Arg0, Z141, __LINE__, Z141, Local0, DerefOf (Local1), 0x00) 834 } 835 } 836 837 } 838 } 839 } 840 841 /* Create Region Fields in two overlapping Regions */ 842 /* and check overlapping parts to be shared */ 843 /* m70f(CallChain, OpRegion0, OpRegion1, RangeNum, ErrNum) */ 844 Method (M70F, 5, Serialized) 845 { 846 OperationRegion (OPRM, 0xFF, 0x00, 0x1000) 847 OperationRegion (OPRN, 0xFF, 0x00, 0x1000) 848 CopyObject (Arg1, OPRM) /* \M70F.OPRM */ 849 CopyObject (Arg2, OPRN) /* \M70F.OPRN */ 850 Field (OPRM, ByteAcc, NoLock, Preserve) 851 { 852 Offset (0x7D), 853 FU00, 80, 854 Offset (0x8D), 855 FU02, 80 856 } 857 858 Field (OPRN, ByteAcc, NoLock, Preserve) 859 { 860 FU01, 80 861 } 862 863 Concatenate (Arg0, "-m70f", Arg0) 864 Name (B000, Buffer (0x0A){}) 865 M70D (0x01, B000) 866 If (Arg3) 867 { 868 FU00 = B000 /* \M70F.B000 */ 869 } 870 Else 871 { 872 FU02 = B000 /* \M70F.B000 */ 873 } 874 875 M70D (0x02, B000) 876 FU01 = B000 /* \M70F.B000 */ 877 If (Arg3) 878 { 879 Local0 = FU00 /* \M70F.FU00 */ 880 } 881 Else 882 { 883 Local0 = FU02 /* \M70F.FU02 */ 884 } 885 886 Local1 = Buffer (0x0A) 887 { 888 /* 0000 */ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, // ........ 889 /* 0008 */ 0x02, 0x02 // .. 890 } 891 If ((Local0 != Local1)) 892 { 893 ERR (Arg0, Z141, __LINE__, Z141, Arg4, Local0, Local1) 894 } 895 } 896 897 /* Check that the same ranges of different Address Spaces */ 898 /* actually refer the different locations */ 899 /* m704(CallChain) */ 900 /* CallChain: String */ 901 Method (M704, 1, Serialized) 902 { 903 Method (CHCK, 4, NotSerialized) 904 { 905 If ((Arg1 != Arg2)) 906 { 907 ERR (Arg0, Z141, __LINE__, Z141, Arg3, Arg1, Arg2) 908 } 909 } 910 911 OperationRegion (OPR0, SystemMemory, 0x00, 0x01) 912 OperationRegion (OPR1, SystemIO, 0x00, 0x01) 913 OperationRegion (OPR7, 0x80, 0x00, 0x01) 914 Field (OPR0, ByteAcc, NoLock, Preserve) 915 { 916 F000, 8 917 } 918 919 Field (OPR1, ByteAcc, NoLock, Preserve) 920 { 921 F001, 8 922 } 923 924 Field (OPR7, ByteAcc, NoLock, Preserve) 925 { 926 F002, 8 927 } 928 929 Concatenate (Arg0, "-m704", Arg0) 930 F000 = 0x5A 931 CHCK (Arg0, F000, 0x5A, 0x00) 932 F001 = 0xC3 933 CHCK (Arg0, F001, 0xC3, 0x01) 934 F002 = 0x96 935 CHCK (Arg0, F002, 0x96, 0x02) 936 CHCK (Arg0, F000, 0x5A, 0x03) 937 CHCK (Arg0, F001, 0xC3, 0x04) 938 CHCK (Arg0, F002, 0x96, 0x05) 939 } 940 941 /* Check non-constant OpRegion arguments */ 942 /* m705(CallChain) */ 943 /* CallChain: String */ 944 Method (M705, 1, Serialized) 945 { 946 Name (I000, 0x56) 947 Name (I001, 0x78) 948 Name (I002, 0x89ABCDEF) 949 /* ArgX */ 950 951 Method (M000, 4, Serialized) 952 { 953 Switch (ToInteger (Arg1)) 954 { 955 Case (0x00) 956 { 957 OperationRegion (OPR0, SystemMemory, Arg2, Arg3) 958 Field (OPR0, ByteAcc, NoLock, Preserve) 959 { 960 F000, 32 961 } 962 963 Local5 = RefOf (F000) 964 } 965 Case (0x01) 966 { 967 OperationRegion (OPR1, SystemIO, Arg2, Arg3) 968 Field (OPR1, ByteAcc, NoLock, Preserve) 969 { 970 F001, 32 971 } 972 973 Local5 = RefOf (F001) 974 } 975 Case (0x02) 976 { 977 OperationRegion (OPR7, 0x80, Arg2, Arg3) 978 Field (OPR7, ByteAcc, NoLock, Preserve) 979 { 980 F007, 32 981 } 982 983 Local5 = RefOf (F007) 984 } 985 986 } 987 988 Local6 = RefOf (Local5) 989 DerefOf (Local6) = I002 /* \M705.I002 */ 990 Local7 = DerefOf (Local5) 991 If ((I002 != Local7)) 992 { 993 ERR (Arg0, Z141, __LINE__, Z141, Arg1, Local7, I002) 994 } 995 } 996 997 /* Named */ 998 999 Method (M001, 2, Serialized) 1000 { 1001 Switch (ToInteger (Arg1)) 1002 { 1003 Case (0x00) 1004 { 1005 OperationRegion (OPR0, SystemMemory, I000, I001) 1006 Field (OPR0, ByteAcc, NoLock, Preserve) 1007 { 1008 F000, 32 1009 } 1010 1011 Local5 = RefOf (F000) 1012 } 1013 Case (0x01) 1014 { 1015 OperationRegion (OPR1, SystemIO, I000, I001) 1016 Field (OPR1, ByteAcc, NoLock, Preserve) 1017 { 1018 F001, 32 1019 } 1020 1021 Local5 = RefOf (F001) 1022 } 1023 Case (0x02) 1024 { 1025 OperationRegion (OPR7, 0x80, I000, I001) 1026 Field (OPR7, ByteAcc, NoLock, Preserve) 1027 { 1028 F007, 32 1029 } 1030 1031 Local5 = RefOf (F007) 1032 } 1033 1034 } 1035 1036 Local6 = RefOf (Local5) 1037 DerefOf (Local6) = I002 /* \M705.I002 */ 1038 Local7 = DerefOf (Local5) 1039 If ((I002 != Local7)) 1040 { 1041 ERR (Arg0, Z141, __LINE__, Z141, Arg1, Local7, I002) 1042 } 1043 } 1044 1045 /* LocalX */ 1046 1047 Method (M002, 2, Serialized) 1048 { 1049 Local0 = I000 /* \M705.I000 */ 1050 Local1 = I001 /* \M705.I001 */ 1051 Switch (ToInteger (Arg1)) 1052 { 1053 Case (0x00) 1054 { 1055 OperationRegion (OPR0, SystemMemory, Local0, Local1) 1056 Field (OPR0, ByteAcc, NoLock, Preserve) 1057 { 1058 F000, 32 1059 } 1060 1061 Local5 = RefOf (F000) 1062 } 1063 Case (0x01) 1064 { 1065 OperationRegion (OPR1, SystemIO, Local0, Local1) 1066 Field (OPR1, ByteAcc, NoLock, Preserve) 1067 { 1068 F001, 32 1069 } 1070 1071 Local5 = RefOf (F001) 1072 } 1073 Case (0x02) 1074 { 1075 OperationRegion (OPR7, 0x80, Local0, Local1) 1076 Field (OPR7, ByteAcc, NoLock, Preserve) 1077 { 1078 F007, 32 1079 } 1080 1081 Local5 = RefOf (F007) 1082 } 1083 1084 } 1085 1086 Local6 = RefOf (Local5) 1087 DerefOf (Local6) = I002 /* \M705.I002 */ 1088 Local7 = DerefOf (Local5) 1089 If ((I002 != Local7)) 1090 { 1091 ERR (Arg0, Z141, __LINE__, Z141, Arg1, Local7, I002) 1092 } 1093 } 1094 1095 /* Expression */ 1096 1097 Method (M003, 2, Serialized) 1098 { 1099 Local1 = I001 /* \M705.I001 */ 1100 Switch (ToInteger (Arg1)) 1101 { 1102 Case (0x00) 1103 { 1104 OperationRegion (OPR0, SystemMemory, (I000 + 0x01), (Local1 - 0x01)) 1105 Field (OPR0, ByteAcc, NoLock, Preserve) 1106 { 1107 F000, 32 1108 } 1109 1110 Local5 = RefOf (F000) 1111 } 1112 Case (0x01) 1113 { 1114 OperationRegion (OPR1, SystemIO, (I000 + 0x01), (Local1 - 0x01)) 1115 Field (OPR1, ByteAcc, NoLock, Preserve) 1116 { 1117 F001, 32 1118 } 1119 1120 Local5 = RefOf (F001) 1121 } 1122 Case (0x02) 1123 { 1124 OperationRegion (OPR7, 0x80, (I000 + 0x01), (Local1 - 0x01)) 1125 Field (OPR7, ByteAcc, NoLock, Preserve) 1126 { 1127 F007, 32 1128 } 1129 1130 Local5 = RefOf (F007) 1131 } 1132 1133 } 1134 1135 Local6 = RefOf (Local5) 1136 DerefOf (Local6) = I002 /* \M705.I002 */ 1137 Local7 = DerefOf (Local5) 1138 If ((I002 != Local7)) 1139 { 1140 ERR (Arg0, Z141, __LINE__, Z141, Arg1, Local7, I002) 1141 } 1142 } 1143 1144 Concatenate (Arg0, "-m705", Arg0) 1145 M000 (Arg0, 0x00, 0x12, 0x34) 1146 M000 (Arg0, 0x01, 0x12, 0x34) 1147 M000 (Arg0, 0x02, 0x12, 0x34) 1148 M001 (Arg0, 0x00) 1149 M001 (Arg0, 0x01) 1150 M001 (Arg0, 0x02) 1151 M002 (Arg0, 0x00) 1152 M002 (Arg0, 0x01) 1153 M002 (Arg0, 0x02) 1154 M003 (Arg0, 0x00) 1155 M003 (Arg0, 0x01) 1156 M003 (Arg0, 0x02) 1157 } 1158 1159 /* Check non-Integer OpRegion arguments */ 1160 /* m706(CallChain) */ 1161 /* CallChain: String */ 1162 Method (M706, 1, Serialized) 1163 { 1164 Name (OFF0, 0xFEDCBA987654321F) 1165 Name (OFFB, Buffer (0x08) 1166 { 1167 0x1F, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE // .2Tv.... 1168 }) 1169 Name (OFFS, "7654321f") 1170 If (F64) 1171 { 1172 OFFS = "fedcba987654321f" 1173 } 1174 1175 Name (LEN0, 0x0123) 1176 Name (LENB, Buffer (0x02) 1177 { 1178 0x23, 0x01 // #. 1179 }) 1180 Name (LENS, "123") 1181 OperationRegion (OPR0, SystemMemory, 0xFEDCBA987654321F, 0x0123) 1182 OperationRegion (OPR1, SystemMemory, OFF0, LEN0) 1183 OperationRegion (OPR2, SystemMemory, OFFB, LENB) 1184 OperationRegion (OPR3, SystemMemory, OFFS, LENS) 1185 Field (OPR0, ByteAcc, NoLock, Preserve) 1186 { 1187 Offset (0x11F), 1188 FU00, 32 1189 } 1190 1191 Field (OPR1, ByteAcc, NoLock, Preserve) 1192 { 1193 Offset (0x11F), 1194 FU01, 32 1195 } 1196 1197 Field (OPR2, ByteAcc, NoLock, Preserve) 1198 { 1199 Offset (0x11F), 1200 FU02, 32 1201 } 1202 1203 Field (OPR3, ByteAcc, NoLock, Preserve) 1204 { 1205 Offset (0x11F), 1206 FU03, 32 1207 } 1208 1209 Name (I000, 0x12345678) 1210 Method (M000, 4, Serialized) 1211 { 1212 OperationRegion (OPR4, SystemMemory, Arg1, Arg2) 1213 Field (OPR4, AnyAcc, NoLock, Preserve) 1214 { 1215 Offset (0x11F), 1216 FU04, 32 1217 } 1218 1219 If ((FU04 != I000)) 1220 { 1221 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, FU04, I000) 1222 } 1223 } 1224 1225 Concatenate (Arg0, "-m706", Arg0) 1226 FU00 = I000 /* \M706.I000 */ 1227 If ((FU00 != I000)) 1228 { 1229 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, FU00, I000) 1230 } 1231 1232 If ((0xFEDCBA987654321F != OFF0)) 1233 { 1234 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, OFF0, 0xFEDCBA987654321F) 1235 } 1236 ElseIf ((0x0123 != LEN0)) 1237 { 1238 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, LEN0, 0x0123) 1239 } 1240 ElseIf ((FU01 != I000)) 1241 { 1242 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, FU00, I000) 1243 } 1244 1245 If ((0xFEDCBA987654321F != OFFB)) 1246 { 1247 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, OFFB, 0xFEDCBA987654321F) 1248 } 1249 ElseIf ((0x0123 != LENB)) 1250 { 1251 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, LENB, 0x0123) 1252 } 1253 ElseIf ((FU02 != I000)) 1254 { 1255 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, FU00, I000) 1256 } 1257 1258 If ((0xFEDCBA987654321F != OFFS)) 1259 { 1260 Local0 = (OFFS + 0x00) 1261 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, Local0, 0xFEDCBA987654321F) 1262 } 1263 ElseIf ((0x0123 != LENS)) 1264 { 1265 Local0 = (LENS + 0x00) 1266 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, Local0, 0x0123) 1267 } 1268 ElseIf ((FU03 != I000)) 1269 { 1270 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, FU00, I000) 1271 } 1272 1273 M000 (Arg0, OFF0, LEN0, 0x2B) 1274 M000 (Arg0, OFFB, LENB, 0x2C) 1275 M000 (Arg0, OFFS, LENS, 0x2D) 1276 } 1277 1278 /* Overlapping Operation Regions algorithm test */ 1279 /* Test the 3 conditional cases of overlap */ 1280 /* Test done only in SystemMemory */ 1281 Method (M707, 1, Serialized) 1282 { 1283 OperationRegion (RGN0, SystemMemory, 0x0100, 0x08) 1284 OperationRegion (RGN1, SystemMemory, 0xFB, 0x08) 1285 OperationRegion (RGN2, SystemMemory, 0x0105, 0x08) 1286 OperationRegion (RGN3, SystemMemory, 0xF9, 0x16) 1287 OperationRegion (RGN4, SystemMemory, 0xF9, 0x16) 1288 /* Starting Field */ 1289 1290 Field (RGN0, ByteAcc, NoLock, Preserve) 1291 { 1292 Offset (0x01), 1293 FU00, 48 1294 } 1295 1296 /* Overlap start of RGN0 */ 1297 1298 Field (RGN1, ByteAcc, NoLock, Preserve) 1299 { 1300 Offset (0x02), 1301 FU10, 48 1302 } 1303 1304 /* Overlap end of RGN0 */ 1305 1306 Field (RGN2, ByteAcc, NoLock, Preserve) 1307 { 1308 FU20, 48 1309 } 1310 1311 /* Overlap both start of RGN1 and end of RGN2 */ 1312 1313 Field (RGN3, ByteAcc, NoLock, Preserve) 1314 { 1315 FU30, 48, 1316 Offset (0x08), 1317 FU31, 16, 1318 Offset (0x0C), 1319 FU32, 16, 1320 Offset (0x10), 1321 FU33, 48 1322 } 1323 1324 /* Single Field spanning RGN3 area */ 1325 1326 Field (RGN4, ByteAcc, NoLock, Preserve) 1327 { 1328 FU40, 176 1329 } 1330 1331 Name (B000, Buffer (0x06){}) 1332 Name (B001, Buffer (0x02){}) 1333 /* Starting region write */ 1334 1335 M70D (0x01, B000) 1336 FU00 = B000 /* \M707.B000 */ 1337 /* New region overlapping the left */ 1338 1339 M70D (0x02, B000) 1340 FU10 = B000 /* \M707.B000 */ 1341 /* New region overlapping the right */ 1342 1343 M70D (0x03, B000) 1344 FU20 = B000 /* \M707.B000 */ 1345 /* New region overlapping left and right with writes */ 1346 /* at various locations */ 1347 M70D (0x04, B000) 1348 FU30 = B000 /* \M707.B000 */ 1349 M70D (0x05, B001) 1350 FU31 = B001 /* \M707.B001 */ 1351 M70D (0x06, B001) 1352 FU32 = B001 /* \M707.B001 */ 1353 M70D (0x07, B000) 1354 FU33 = B000 /* \M707.B000 */ 1355 Local0 = FU40 /* \M707.FU40 */ 1356 Local1 = Buffer (0x16) 1357 { 1358 /* 0000 */ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, // ........ 1359 /* 0008 */ 0x05, 0x05, 0x01, 0x01, 0x06, 0x06, 0x03, 0x03, // ........ 1360 /* 0010 */ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 // ...... 1361 } 1362 If ((Local0 != Local1)) 1363 { 1364 ERR (Arg0, Z141, __LINE__, 0x00, 0x00, Local0, Local1) 1365 } 1366 } 1367 1368 Method (ORC0, 0, Serialized) 1369 { 1370 /* Global OpRegions */ 1371 1372 SRMT ("m700") 1373 If (Y220) 1374 { 1375 M700 (__METHOD__) 1376 } 1377 Else 1378 { 1379 BLCK () 1380 } 1381 1382 /* Dynamic OpRegions */ 1383 1384 SRMT ("m701") 1385 If (Y217) 1386 { 1387 M701 (__METHOD__) 1388 } 1389 Else 1390 { 1391 BLCK () 1392 } 1393 1394 /* OpRegion Lengths */ 1395 1396 SRMT ("m702") 1397 M702 (__METHOD__) 1398 /* Overlapping of OpRegions */ 1399 1400 SRMT ("m703") 1401 If (Y221) 1402 { 1403 M703 (__METHOD__) 1404 } 1405 Else 1406 { 1407 BLCK () 1408 } 1409 1410 /* The same ranges of different Address Spaces */ 1411 1412 SRMT ("m704") 1413 If (Y222) 1414 { 1415 M704 (__METHOD__) 1416 } 1417 Else 1418 { 1419 BLCK () 1420 } 1421 1422 /* Non-constant OpRegion arguments */ 1423 1424 SRMT ("m705") 1425 M705 (__METHOD__) 1426 /* Non-Integer OpRegion arguments */ 1427 1428 SRMT ("m706") 1429 M706 (__METHOD__) 1430 /* Overlapping OpRegions algorithm test */ 1431 1432 SRMT ("m707") 1433 M707 (__METHOD__) 1434 } 1435