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 * LoadTable ASL operator functionality 30 */ 31 /* 32 * This sub-test is intended to comprehensively verify 33 * the LoadTable ASL operator functionality. 34 * 35 * Performs a run-time load of a Definition Block from the XSDT. 36 * 37 * 17.5.68 LoadTable (Load Definition Block From XSDT) 38 * Syntax 39 * LoadTable (SignatureString, OEMIDString, OEMTableIDString, 40 * RootPathString, ParameterPathString, ParameterData) => DDBHandle 41 * 42 * On testing the following issues should be covered: 43 * 44 * - loading from the XSDT of a Definition Block in which the Signature 45 * field (should differ from "DSDT" and "SSDT") matches SignatureString, 46 * the OEM ID field matches OEMIDString, and the OEM Table ID matches 47 * OEMTableIDString, 48 * 49 * - all comparisons are case sensitive, 50 * 51 * - the result of the LoadTable operator is an Object of the DDBHandle type, 52 * 53 * - if no table matches the specified parameters, then 0 is returned, 54 * 55 * - the DDBHandle Object returned from the LoadTable operator can be used 56 * to unload the table, 57 * 58 * - any of the optional parameters (RootPathString, ParameterPathString, 59 * and ParameterData) can be omitted, 60 * 61 * - different sources of the String parameters: literals, Named Objects, 62 * LocalX, ArgX, elements of Packages, results of functions, any TermArg 63 * 64 * - different sources of the optional parameters: literals, Named Objects, 65 * LocalX, ArgX, elements of Packages, results of functions, any TermArg 66 * 67 * - implicit operand conversion of the parameters specified to be strings, 68 * 69 * - namespace location to load the Definition Block is determined by the 70 * RootPathString parameter, 71 * 72 * - the RootPathString is evaluated using normal scoping rules, assuming 73 * that the scope of the LoadTable operator is the current scope, 74 * 75 * - if RootPathString is not specified, "\" is assumed, 76 * 77 * - if ParameterPathString and ParameterData are specified, the data object 78 * specified by ParameterData is stored into the object specified by 79 * ParameterPathString after the table has been added into the namespace, 80 * 81 * - if the first character of ParameterPathString is a backslash or caret 82 * character, then the path of the object is ParameterPathString. Otherwise, 83 * it is RootPathString.ParameterPathString, 84 * 85 * - if some SSDT matching the LoadTable parameters is originally not listed 86 * in XSDT, LoadTable returns 0, 87 * 88 * - exceptional conditions caused by inappropriate data: 89 * = the SignatureString is greater than four characters, 90 * = the OEMIDString is greater than six characters, 91 * = the OEMTableID is greater than eight characters, 92 * = incorrect types of the parameters, 93 * = some DSDT or SSDT matching the LoadTable parameters is already loaded 94 * (actually on initial loading of tables listed in XSDT), 95 * = the matched table is already loaded, 96 * = there already is an previously loaded Object referred by the path 97 * in the Namespace, 98 * = the object specified by the ParameterPathString does not exist, 99 * = storing of data of the ParameterData data type is not allowed, 100 * = AE_OWNER_ID_LIMIT exception when too many Tables loaded. 101 * 102 * Can not be tested following issues: 103 * - providing of the table matched the LoadTable parameters to be "in memory 104 * marked by AddressRangeReserved or AddressRangeNVS", 105 * - overriding the supplied table with "a newer revision Definition Block 106 * of the same OEM Table ID" by the OS, 107 * - loading a Definition Block to be a synchronous operation ("the control 108 * methods defined in the Definition Block are not executed during load 109 * time"). 110 * 111 * Note: the tests is based on the current representation of the auxiliary 112 * OEM1 table in the artificial set of tables in the RSDT of acpiexec. 113 */ 114 Name (Z176, 0xB0) 115 Device (DTM2) 116 { 117 Device (DEVR) 118 { 119 Name (S000, "DEVR") 120 } 121 122 /* Contents of the OEM1 signature table addressed by the RSDT in acpiexec */ 123 124 Name (OEMT, Buffer (0x38) 125 { 126 /* 0000 */ 0x4F, 0x45, 0x4D, 0x31, 0x38, 0x00, 0x00, 0x00, // OEM18... 127 /* 0008 */ 0x01, 0x4B, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x00, // .KIntel. 128 /* 0010 */ 0x4D, 0x61, 0x6E, 0x79, 0x00, 0x00, 0x00, 0x00, // Many.... 129 /* 0018 */ 0x01, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x54, 0x4C, // ....INTL 130 /* 0020 */ 0x18, 0x09, 0x03, 0x20, 0x08, 0x5F, 0x58, 0x54, // ... ._XT 131 /* 0028 */ 0x32, 0x0A, 0x04, 0x14, 0x0C, 0x5F, 0x58, 0x54, // 2...._XT 132 /* 0030 */ 0x31, 0x00, 0x70, 0x01, 0x5F, 0x58, 0x54, 0x32 // 1.p._XT2 133 }) 134 CreateField (OEMT, 0x00, 0x20, FOEM) 135 CreateField (OEMT, 0x50, 0x30, FOID) 136 CreateField (OEMT, 0x80, 0x40, FTID) 137 Name (SOEM, "OEM1") 138 Name (SOID, "Intel") 139 Name (STID, "Many") 140 Name (POEM, Package (0x03) 141 { 142 "OEM1", 143 "Intel", 144 "Many" 145 }) 146 Name (RPST, "\\DTM2") 147 Name (PLDT, 0x00) 148 Name (PPST, "\\DTM2.PLDT") 149 Name (DDBH, 0x00) 150 /* Check DataTable Region */ 151 152 Method (CHDR, 1, Serialized) 153 { 154 DataTableRegion (DR00, "OEM1", "", "") 155 Field (DR00, AnyAcc, NoLock, Preserve) 156 { 157 FU00, 448 158 } 159 160 Concatenate (Arg0, "-tst0", Arg0) 161 If ((OEMT != FU00)) 162 { 163 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, FU00, OEMT) 164 Return (0x01) 165 } 166 167 Return (0x00) 168 } 169 170 /* Simple Loadtable test */ 171 172 Method (TST0, 1, Serialized) 173 { 174 Name (DDBH, 0x00) 175 Concatenate (Arg0, "-tst0", Arg0) 176 If (CHDR (Arg0)) 177 { 178 Return (0x01) 179 } 180 181 If (CondRefOf (\_XT2, Local0)) 182 { 183 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 184 Return (0x01) 185 } 186 187 \DTM2.PLDT = 0x00 188 DDBH = LoadTable ("OEM1", "", "", "\\", PPST, 0x01) 189 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 190 { 191 Return (0x01) 192 } 193 194 Local1 = ObjectType (DDBH) 195 If ((Local1 != C017)) 196 { 197 /* DDB Handle */ 198 199 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 200 Return (0x01) 201 } 202 203 If ((0x01 != \DTM2.PLDT)) 204 { 205 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 206 } 207 208 If (CondRefOf (\_XT2, Local0)){} 209 Else 210 { 211 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 212 } 213 214 Unload (DDBH) 215 Debug = "OEM1 unloaded" 216 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 217 { 218 Return (0x01) 219 } 220 221 If (CondRefOf (\_XT2, Local0)) 222 { 223 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 224 } 225 226 Return (0x00) 227 } 228 229 /* All comparisons of Loadtable parameters are case sensitive, */ 230 /* if no table matches the specified parameters, then 0 is returned */ 231 Method (TST1, 1, Serialized) 232 { 233 Name (DDBH, 0x00) 234 Concatenate (Arg0, "-tst1", Arg0) 235 If (CondRefOf (\_XT2, Local0)) 236 { 237 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 238 Return (0x01) 239 } 240 241 /* Successful comparison */ 242 243 \DTM2.PLDT = 0x00 244 If (Y281) 245 { 246 DDBH = LoadTable ("OEM1", "Intel", "Many", "\\", PPST, 0x01) 247 } 248 Else 249 { 250 DDBH = LoadTable ("OEM1", "", "", "\\", PPST, 0x01) 251 } 252 253 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 254 { 255 Return (0x01) 256 } 257 258 Local1 = ObjectType (DDBH) 259 If ((Local1 != C017)) 260 { 261 /* DDB Handle */ 262 263 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 264 Return (0x01) 265 } 266 267 If ((0x01 != \DTM2.PLDT)) 268 { 269 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 270 } 271 272 If (CondRefOf (\_XT2, Local0)){} 273 Else 274 { 275 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 276 } 277 278 Unload (DDBH) 279 Debug = "OEM1 unloaded" 280 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 281 { 282 Return (0x01) 283 } 284 285 If (CondRefOf (\_XT2, Local0)) 286 { 287 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 288 } 289 290 /* Unhappy comparison due to the SignatureString */ 291 292 \DTM2.PLDT = 0x00 293 Local1 = ObjectType (Local2) 294 If ((Local1 != C008)) 295 { 296 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C008) 297 } 298 299 Local2 = LoadTable ("OeM1", "Intel", "Many", "\\", PPST, 0x01) 300 If (Y281) 301 { 302 /* No exception */ 303 304 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 305 { 306 Return (0x01) 307 } 308 } 309 ElseIf /* Exception: AE_BAD_SIGNATURE */ 310 311 (CH04 (Arg0, 0x01, 0x25, Z176, __LINE__, 0x00, 0x00)) 312 { 313 Return (0x01) 314 } 315 316 Local1 = ObjectType (Local2) 317 If (Y281) 318 { 319 If ((Local1 != C009)) 320 { 321 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C009) 322 } 323 324 If ((Local2 != 0x00)) 325 { 326 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local2, 0x00) 327 } 328 } 329 ElseIf ((Local1 != C008)) 330 { 331 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C008) 332 } 333 334 If ((0x00 != \DTM2.PLDT)) 335 { 336 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 337 } 338 339 If (CondRefOf (\_XT2, Local0)) 340 { 341 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 342 } 343 344 /* Unhappy comparison due to the OEMIDString */ 345 346 \DTM2.PLDT = 0x00 347 Local1 = ObjectType (Local3) 348 If ((Local1 != C008)) 349 { 350 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C008) 351 } 352 353 Local3 = LoadTable ("OEM1", "InteL", "Many", "\\", PPST, 0x01) 354 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 355 { 356 Return (0x01) 357 } 358 359 Local1 = ObjectType (Local3) 360 If ((Local1 != C009)) 361 { 362 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C009) 363 } 364 365 If ((Local3 != 0x00)) 366 { 367 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local3, 0x00) 368 } 369 370 If ((0x00 != \DTM2.PLDT)) 371 { 372 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 373 } 374 375 If (CondRefOf (\_XT2, Local0)) 376 { 377 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 378 } 379 380 /* Unhappy comparison due to the OEMTableIDString */ 381 382 \DTM2.PLDT = 0x00 383 Local1 = ObjectType (Local4) 384 If ((Local1 != C008)) 385 { 386 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C008) 387 } 388 389 Local4 = LoadTable ("OEM1", "Intel", "many", "\\", PPST, 0x01) 390 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 391 { 392 Return (0x01) 393 } 394 395 Local1 = ObjectType (Local4) 396 If ((Local1 != C009)) 397 { 398 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C009) 399 } 400 401 If ((Local4 != 0x00)) 402 { 403 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local4, 0x00) 404 } 405 406 If ((0x00 != \DTM2.PLDT)) 407 { 408 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 409 } 410 411 If (CondRefOf (\_XT2, Local0)) 412 { 413 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 414 } 415 416 Return (0x00) 417 } 418 419 /* Any of the RootPathString, ParameterPathString, and ParameterData */ 420 /* parameters in LoadTable expression can be omitted */ 421 Method (TST2, 1, Serialized) 422 { 423 Name (DDB0, 0x00) 424 Name (DDB1, 0x00) 425 Name (DDB2, 0x00) 426 Name (DDB3, 0x00) 427 Concatenate (Arg0, "-tst2", Arg0) 428 If (CondRefOf (\_XT2, Local0)) 429 { 430 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 431 Return (0x01) 432 } 433 434 /* Check when RootPathString omitted */ 435 436 \DTM2.PLDT = 0x00 437 DDB0 = LoadTable ("OEM1", "", "", "", PPST, 0x01) 438 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 439 { 440 Return (0x01) 441 } 442 443 Local1 = ObjectType (DDB0) 444 If ((Local1 != C017)) 445 { 446 /* DDB Handle */ 447 448 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 449 Return (0x01) 450 } 451 452 If ((0x01 != \DTM2.PLDT)) 453 { 454 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 455 } 456 457 If (CondRefOf (\_XT2, Local0)){} 458 Else 459 { 460 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 461 } 462 463 Unload (DDB0) 464 Debug = "OEM1 unloaded" 465 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 466 { 467 Return (0x01) 468 } 469 470 If (CondRefOf (\_XT2, Local0)) 471 { 472 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 473 } 474 475 /* Check when ParameterPathString omitted */ 476 477 \DTM2.PLDT = 0x00 478 DDB1 = LoadTable ("OEM1", "", "", "\\", "", 0x01) 479 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 480 { 481 Return (0x01) 482 } 483 484 Local1 = ObjectType (DDB1) 485 If ((Local1 != C017)) 486 { 487 /* DDB Handle */ 488 489 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 490 Return (0x01) 491 } 492 493 If ((0x00 != \DTM2.PLDT)) 494 { 495 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 496 } 497 498 If (CondRefOf (\_XT2, Local0)){} 499 Else 500 { 501 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 502 } 503 504 Unload (DDB1) 505 Debug = "OEM1 unloaded" 506 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 507 { 508 Return (0x01) 509 } 510 511 If (CondRefOf (\_XT2, Local0)) 512 { 513 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 514 } 515 516 /* Check when ParameterData omitted */ 517 518 \DTM2.PLDT = 0x00 519 DDB2 = LoadTable ("OEM1", "", "", "\\", PPST, Zero) 520 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 521 { 522 Return (0x01) 523 } 524 525 Local1 = ObjectType (DDB2) 526 If ((Local1 != C017)) 527 { 528 /* DDB Handle */ 529 530 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 531 Return (0x01) 532 } 533 534 If ((0x00 != \DTM2.PLDT)) 535 { 536 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 537 } 538 539 If (CondRefOf (\_XT2, Local0)){} 540 Else 541 { 542 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 543 } 544 545 Unload (DDB2) 546 Debug = "OEM1 unloaded" 547 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 548 { 549 Return (0x01) 550 } 551 552 If (CondRefOf (\_XT2, Local0)) 553 { 554 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 555 } 556 557 /* Check when all optional parameters omitted */ 558 559 \DTM2.PLDT = 0x00 560 DDB3 = LoadTable ("OEM1", "", "", "", "", Zero) 561 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 562 { 563 Return (0x01) 564 } 565 566 Local1 = ObjectType (DDB3) 567 If ((Local1 != C017)) 568 { 569 /* DDB Handle */ 570 571 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 572 Return (0x01) 573 } 574 575 If ((0x00 != \DTM2.PLDT)) 576 { 577 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 578 } 579 580 If (CondRefOf (\_XT2, Local0)){} 581 Else 582 { 583 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 584 } 585 586 Unload (DDB3) 587 Debug = "OEM1 unloaded" 588 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 589 { 590 Return (0x01) 591 } 592 593 If (CondRefOf (\_XT2, Local0)) 594 { 595 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 596 } 597 598 Return (0x00) 599 } 600 601 /* Different sources of the String parameters: Named Objects, LocalX, */ 602 /* ArgX, elements of Packages, results of functions, any TermArg */ 603 Method (TST3, 1, Serialized) 604 { 605 Name (DDB0, 0x00) 606 Name (DDB1, 0x00) 607 Name (DDB2, 0x00) 608 Name (DDB3, 0x00) 609 Name (DDB4, 0x00) 610 Name (DDB5, 0x00) 611 Name (DDB6, 0x00) 612 Name (SOID, "") 613 Name (STID, "") 614 Name (POEM, Package (0x03) 615 { 616 "OEM1", 617 "", 618 "" 619 }) 620 Method (M000, 1, NotSerialized) 621 { 622 Return (Arg0) 623 } 624 625 Method (M001, 3, NotSerialized) 626 { 627 Concatenate (Arg0, Arg2, Arg0) 628 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 629 { 630 Return (0x01) 631 } 632 633 Local1 = ObjectType (Arg1) 634 If ((Local1 != C017)) 635 { 636 /* DDB Handle */ 637 638 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 639 Return (0x01) 640 } 641 642 If ((0x00 != \DTM2.PLDT)) 643 { 644 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 645 } 646 647 If (CondRefOf (\_XT2, Local0)){} 648 Else 649 { 650 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2._XT2", 0x00) 651 } 652 653 Unload (Arg1) 654 Debug = "OEM1 unloaded" 655 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 656 { 657 Return (0x01) 658 } 659 660 If (CondRefOf (\_XT2, Local0)) 661 { 662 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2._XT2", 0x01) 663 Return (0x01) 664 } 665 666 Return (0x00) 667 } 668 669 Method (M002, 3, NotSerialized) 670 { 671 Return (LoadTable (Arg0, DerefOf (Arg1), DerefOf (Arg2), "", "", Zero)) 672 } 673 674 Method (M003, 3, NotSerialized) 675 { 676 Return (LoadTable (DerefOf (Arg0), Arg1, DerefOf (Arg2), "", "", Zero)) 677 } 678 679 Method (M004, 3, NotSerialized) 680 { 681 Return (LoadTable (DerefOf (Arg0), DerefOf (Arg1), Arg2, "", "", Zero)) 682 } 683 684 Concatenate (Arg0, "-tst3", Arg0) 685 If (Y281) 686 { 687 SOID = ^SOID /* \DTM2.SOID */ 688 STID = ^STID /* \DTM2.STID */ 689 POEM = ^POEM /* \DTM2.POEM */ 690 } 691 692 If (CondRefOf (\DTM2._XT2, Local0)) 693 { 694 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 695 Return (0x01) 696 } 697 698 /* Check LoadTable(Named, LocalX, Method(), , , ) */ 699 700 \DTM2.PLDT = 0x00 701 Local2 = SOID /* \DTM2.TST3.SOID */ 702 DDB0 = LoadTable (SOEM, Local2, M000 (STID), "", "", Zero) 703 If (M001 (Arg0, DDB0, ".NLM")) 704 { 705 Return (0x01) 706 } 707 708 /* Check LoadTable(Method(), Named, LocalX, , , ) */ 709 710 \DTM2.PLDT = 0x00 711 Local2 = STID /* \DTM2.TST3.STID */ 712 DDB1 = LoadTable (M000 (SOEM), SOID, Local2, "", "", Zero) 713 If (M001 (Arg0, DDB1, ".MNL")) 714 { 715 Return (0x01) 716 } 717 718 /* Check LoadTable(LocalX, Method(), Named, , , ) */ 719 720 \DTM2.PLDT = 0x00 721 Local2 = SOEM /* \DTM2.SOEM */ 722 DDB2 = LoadTable (Local2, M000 (SOID), STID, "", "", Zero) 723 If (M001 (Arg0, DDB2, ".LMN")) 724 { 725 Return (0x01) 726 } 727 728 /* Check LoadTable(ArgX, Derefof(Refof), Derefof(Index), , , ) */ 729 730 \DTM2.PLDT = 0x00 731 Local2 = RefOf (SOID) 732 Store (POEM [0x02], Local3) 733 DDB3 = M002 (SOEM, Local2, Local3) 734 If (M001 (Arg0, DDB3, ".ARI")) 735 { 736 Return (0x01) 737 } 738 739 /* Check LoadTable(Derefof(Index), ArgX, Derefof(Refof), , , ) */ 740 741 \DTM2.PLDT = 0x00 742 Local2 = RefOf (STID) 743 Store (POEM [0x00], Local3) 744 DDB4 = M003 (Local3, SOID, Local2) 745 If (M001 (Arg0, DDB4, ".IAR")) 746 { 747 Return (0x01) 748 } 749 750 /* Check LoadTable(Derefof(Refof), Derefof(Index), ArgX, , , ) */ 751 752 \DTM2.PLDT = 0x00 753 Local2 = RefOf (SOEM) 754 Store (POEM [0x01], Local3) 755 DDB5 = M004 (Local2, Local3, STID) 756 If (M001 (Arg0, DDB5, ".RIA")) 757 { 758 Return (0x01) 759 } 760 761 /* Check LoadTable(TermArg, TermArg, TermArg, , , ) */ 762 763 \DTM2.PLDT = 0x00 764 Local2 = Concatenate ("term", SOEM) 765 Local2 = ToBuffer (Local2) 766 Local3 = ToBuffer (SOID) 767 Local4 = "" 768 DDB6 = LoadTable (Mid (ToString (Local2, Ones), 0x04, 0x04), ToString ( 769 M000 (Local3), Ones), Concatenate (M000 (STID), Local4), "", "", Zero) 770 If (M001 (Arg0, DDB6, ".TTT")) 771 { 772 Return (0x01) 773 } 774 775 Return (0x00) 776 } 777 778 /* Different sources of the optional parameters (RootPathString, */ 779 /* ParameterPathString, and ParameterData): Named Objects, LocalX, */ 780 /* ArgX, elements of Packages, results of functions, any TermArg */ 781 Method (TST4, 1, Serialized) 782 { 783 Name (DDB0, 0x00) 784 Name (DDB1, 0x00) 785 Name (DDB2, 0x00) 786 Name (DDB3, 0x00) 787 Name (DDB4, 0x00) 788 Name (DDB5, 0x00) 789 Name (DDB6, 0x00) 790 Name (RPST, "\\DTM2") 791 Name (PPST, "\\DTM2.PLDT") 792 Name (NVAL, 0x01) 793 Name (POPT, Package (0x03) 794 { 795 "\\DTM2", 796 "\\DTM2.PLDT", 797 0x01 798 }) 799 Method (M000, 1, NotSerialized) 800 { 801 Return (Arg0) 802 } 803 804 Method (M001, 3, NotSerialized) 805 { 806 Concatenate (Arg0, Arg2, Arg0) 807 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 808 { 809 Return (0x01) 810 } 811 812 Local1 = ObjectType (Arg1) 813 If ((Local1 != C017)) 814 { 815 /* DDB Handle */ 816 817 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 818 Return (0x01) 819 } 820 821 If ((0x01 != \DTM2.PLDT)) 822 { 823 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 824 } 825 826 If (CondRefOf (\DTM2._XT2, Local0)){} 827 Else 828 { 829 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2._XT2", 0x00) 830 } 831 832 Unload (Arg1) 833 Debug = "OEM1 unloaded" 834 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 835 { 836 Return (0x01) 837 } 838 839 If (CondRefOf (\DTM2._XT2, Local0)) 840 { 841 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2._XT2", 0x01) 842 Return (0x01) 843 } 844 845 Return (0x00) 846 } 847 848 Method (M002, 3, NotSerialized) 849 { 850 /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 851 /* return (LoadTable("OEM1", "", "", Arg0, Derefof(Arg1), Derefof(Arg2))) */ 852 /* parse error, expecting `')'' ^ */ 853 Return (LoadTable ("OEM1", "", "", Arg0, DerefOf (Arg1), 0x01)) 854 } 855 856 Method (M003, 3, NotSerialized) 857 { 858 /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 859 /* return (LoadTable("OEM1", "", "", Derefof(Arg0), Arg1, Derefof(Arg2))) */ 860 /* parse error, expecting `')'' ^ */ 861 Return (LoadTable ("OEM1", "", "", DerefOf (Arg0), Arg1, 0x01)) 862 } 863 864 Method (M004, 3, NotSerialized) 865 { 866 /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 867 /* return (LoadTable("OEM1", "", "", Derefof(Arg0), Derefof(Arg1), Arg2)) */ 868 /* parse error, expecting `')'' ^ */ 869 Return (LoadTable ("OEM1", "", "", DerefOf (Arg0), DerefOf (Arg1), 0x01)) 870 } 871 872 Concatenate (Arg0, "-tst4", Arg0) 873 If (CondRefOf (\DTM2._XT2, Local0)) 874 { 875 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2._XT2", 0x01) 876 Return (0x01) 877 } 878 879 /* Check LoadTable(..., Named, LocalX, Method()) */ 880 881 \DTM2.PLDT = 0x00 882 Local2 = PPST /* \DTM2.TST4.PPST */ 883 /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 884 /* Store(LoadTable("OEM1", "", "", RPST, Local2, m000(1)), DDB0) */ 885 /* parse error, expecting `')'' ^ */ 886 DDB0 = LoadTable ("OEM1", "", "", RPST, Local2, 0x01) 887 If (M001 (Arg0, DDB0, ".NLM")) 888 { 889 Return (0x01) 890 } 891 892 /* Check LoadTable(..., Method(), Named, LocalX) */ 893 894 \DTM2.PLDT = 0x00 895 Local2 = 0x01 896 /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 897 /* Store(LoadTable("OEM1", "", "", m000(RPST), PPST, Local2), DDB1) */ 898 /* parse error, expecting `')'' ^ */ 899 DDB1 = LoadTable ("OEM1", "", "", M000 (RPST), PPST, 0x01) 900 If (M001 (Arg0, DDB1, ".MNL")) 901 { 902 Return (0x01) 903 } 904 905 /* Check LoadTable(..., LocalX, Method(), Named) */ 906 907 \DTM2.PLDT = 0x00 908 Local2 = RPST /* \DTM2.TST4.RPST */ 909 DDB2 = LoadTable ("OEM1", "", "", Local2, M000 (PPST), NVAL) 910 If (M001 (Arg0, DDB2, ".LMN")) 911 { 912 Return (0x01) 913 } 914 915 /* Check LoadTable(..., ArgX, Derefof(Refof), Derefof(Index)) */ 916 917 \DTM2.PLDT = 0x00 918 Local2 = RefOf (PPST) 919 Store (POPT [0x02], Local3) 920 DDB3 = M002 (RPST, Local2, Local3) 921 If (M001 (Arg0, DDB3, ".ARI")) 922 { 923 Return (0x01) 924 } 925 926 /* Check LoadTable(..., Derefof(Index), ArgX, Derefof(Refof)) */ 927 928 \DTM2.PLDT = 0x00 929 Local2 = RefOf (NVAL) 930 Store (POPT [0x00], Local3) 931 DDB4 = M003 (Local3, PPST, Local2) 932 If (M001 (Arg0, DDB4, ".ARI")) 933 { 934 Return (0x01) 935 } 936 937 /* Check LoadTable(..., Derefof(Refof), Derefof(Index), ArgX) */ 938 939 \DTM2.PLDT = 0x00 940 Local2 = RefOf (RPST) 941 Store (POPT [0x01], Local3) 942 DDB5 = M004 (Local2, Local3, NVAL) 943 If (M001 (Arg0, DDB5, ".ARI")) 944 { 945 Return (0x01) 946 } 947 948 /* Check LoadTable(..., TermArg, TermArg, TermArg) */ 949 950 \DTM2.PLDT = 0x00 951 Local2 = Concatenate ("term", RPST) 952 Local2 = ToBuffer (Local2) 953 Local3 = ToBuffer (PPST) 954 Local4 = 0x03 955 DDB6 = LoadTable ("OEM1", "", "", Mid (ToString (Local2, Ones), 0x04, 956 0x05), ToString (M000 (Local3), Ones), /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 957 /* Subtract(m000(Local4), 2)), */ 958(0x03 - 0x02)) 959 If (M001 (Arg0, DDB6, ".TTT")) 960 { 961 Return (0x01) 962 } 963 964 Return (0x00) 965 } 966 967 /* Namespace location to load the Definition Block is determined */ 968 /* by the RootPathString parameter of Loadtable */ 969 /* Arg1: RootPathString */ 970 Method (TST5, 2, Serialized) 971 { 972 Name (DDBH, 0x00) 973 Concatenate (Arg0, "-tst5", Arg0) 974 If (CondRefOf (\_XT2, Local0)) 975 { 976 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 977 Return (0x01) 978 } 979 980 If (CondRefOf (\DTM2.DEVR._XT2, Local0)) 981 { 982 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2.DEVR._XT2", 0x01) 983 Return (0x01) 984 } 985 986 \DTM2.PLDT = 0x00 987 DDBH = LoadTable ("OEM1", "", "", Arg1, PPST, 0x01) 988 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 989 { 990 Return (0x01) 991 } 992 993 Local1 = ObjectType (DDBH) 994 If ((Local1 != C017)) 995 { 996 /* DDB Handle */ 997 998 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 999 Return (0x01) 1000 } 1001 1002 If ((0x01 != \DTM2.PLDT)) 1003 { 1004 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1005 } 1006 1007 If (CondRefOf (\_XT2, Local0)) 1008 { 1009 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1010 } 1011 1012 If (CondRefOf (\DTM2.DEVR._XT2, Local0)){} 1013 Else 1014 { 1015 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2.DEVR._XT2", 0x00) 1016 } 1017 1018 Unload (DDBH) 1019 Debug = "OEM1 unloaded" 1020 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1021 { 1022 Return (0x01) 1023 } 1024 1025 If (CondRefOf (\_XT2, Local0)) 1026 { 1027 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1028 } 1029 1030 If (CondRefOf (\DTM2.DEVR._XT2, Local0)) 1031 { 1032 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2.DEVR._XT2", 0x01) 1033 } 1034 1035 Return (0x00) 1036 } 1037 1038 /* "\" is assumed to be Namespace location to load the Definition */ 1039 /* Block if RootPathString parameter is not specified */ 1040 Method (TST6, 1, Serialized) 1041 { 1042 Name (DDBH, 0x00) 1043 Concatenate (Arg0, "-tst6", Arg0) 1044 If (CondRefOf (\_XT2, Local0)) 1045 { 1046 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1047 Return (0x01) 1048 } 1049 1050 \DTM2.PLDT = 0x00 1051 DDBH = LoadTable ("OEM1", "", "", "", PPST, 0x01) 1052 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1053 { 1054 Return (0x01) 1055 } 1056 1057 Local1 = ObjectType (DDBH) 1058 If ((Local1 != C017)) 1059 { 1060 /* DDB Handle */ 1061 1062 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 1063 Return (0x01) 1064 } 1065 1066 If ((0x01 != \DTM2.PLDT)) 1067 { 1068 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1069 } 1070 1071 If (CondRefOf (\_XT2, Local0)){} 1072 Else 1073 { 1074 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 1075 } 1076 1077 Unload (DDBH) 1078 Debug = "OEM1 unloaded" 1079 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1080 { 1081 Return (0x01) 1082 } 1083 1084 If (CondRefOf (\_XT2, Local0)) 1085 { 1086 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1087 } 1088 1089 Return (0x00) 1090 } 1091 1092 /* If the first character of ParameterPathString is a backslash */ 1093 /* or caret character, then the path of the object set up on success */ 1094 /* is ParameterPathString. It is RootPathString.ParameterPathString */ 1095 /* in any case. */ 1096 Method (TST7, 1, Serialized) 1097 { 1098 Name (DDBH, 0x00) 1099 Name (PLDT, 0x00) 1100 Concatenate (Arg0, "-tst7", Arg0) 1101 DDBH = LoadTable ("OEM1", "", "", RPST, "^TST7.PLDT", 0x01) 1102 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1103 { 1104 Return (0x01) 1105 } 1106 1107 Local1 = ObjectType (DDBH) 1108 If ((Local1 != C017)) 1109 { 1110 /* DDB Handle */ 1111 1112 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 1113 Return (0x01) 1114 } 1115 1116 If ((0x01 != PLDT)) 1117 { 1118 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, PLDT, 0x01) 1119 } 1120 1121 Unload (DDBH) 1122 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1123 { 1124 Return (0x01) 1125 } 1126 1127 PLDT = 0x00 1128 \DTM2.PLDT = 0x00 1129 DDBH = LoadTable ("OEM1", "", "", RPST, "PLDT", 0x01) 1130 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1131 { 1132 Return (0x01) 1133 } 1134 1135 Local1 = ObjectType (DDBH) 1136 If ((Local1 != C017)) 1137 { 1138 /* DDB Handle */ 1139 1140 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 1141 Return (0x01) 1142 } 1143 1144 If ((0x00 != PLDT)) 1145 { 1146 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, PLDT, 0x00) 1147 } 1148 1149 If ((0x01 != \DTM2.PLDT)) 1150 { 1151 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1152 } 1153 1154 Unload (DDBH) 1155 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1156 { 1157 Return (0x01) 1158 } 1159 1160 Return (0x00) 1161 } 1162 1163 /* Exceptions when the SignatureString is greater than four characters, */ 1164 /* the OEMIDString is greater than six characters, or the OEMTableID is */ 1165 /* greater than eight characters */ 1166 Method (TST8, 1, Serialized) 1167 { 1168 Name (DDBH, 0x00) 1169 Concatenate (Arg0, "-tst8", Arg0) 1170 \DTM2.PLDT = 0x00 1171 /* SignatureString is greater than four characters */ 1172 1173 If (Y287) 1174 { 1175 DDBH = LoadTable ("OEM1X", "", "", RPST, PPST, 0x01) 1176 } 1177 Else 1178 { 1179 LoadTable ("OEM1X", "", "", RPST, PPST, 0x01) 1180 } 1181 1182 CH04 (Arg0, 0x00, 0x3D, Z176, __LINE__, 0x00, 0x00) /* AE_AML_STRING_LIMIT */ 1183 If ((0x00 != \DTM2.PLDT)) 1184 { 1185 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1186 If (Y287) 1187 { 1188 Return (0x01) 1189 } 1190 Else 1191 { 1192 /* Cleanup */ 1193 1194 Unload (DDBH) 1195 \DTM2.PLDT = 0x00 1196 } 1197 } 1198 1199 /* OEMIDString is greater than six characters */ 1200 1201 LoadTable ("OEM1", "IntelXX", "", RPST, PPST, 0x01) 1202 CH04 (Arg0, 0x00, 0x3D, Z176, __LINE__, 0x00, 0x00) /* AE_AML_STRING_LIMIT */ 1203 If ((0x00 != \DTM2.PLDT)) 1204 { 1205 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1206 Return (0x01) 1207 } 1208 1209 /* OEMTableID is greater than eight characters */ 1210 1211 LoadTable ("OEM1", "", "ManyXXXXX", RPST, PPST, 0x01) 1212 CH04 (Arg0, 0x00, 0x3D, Z176, __LINE__, 0x00, 0x00) /* AE_AML_STRING_LIMIT */ 1213 If ((0x00 != \DTM2.PLDT)) 1214 { 1215 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1216 Return (0x01) 1217 } 1218 1219 Return (0x00) 1220 } 1221 1222 /* Exceptions when some DSDT or SSDT matching the LoadTable parameters */ 1223 /* is already loaded (actually on initial loading of tables listed in XSDT) */ 1224 Method (TST9, 1, NotSerialized) 1225 { 1226 Concatenate (Arg0, "-tst9", Arg0) 1227 \DTM2.PLDT = 0x00 1228 /* SignatureString is "DSDT" */ 1229 1230 LoadTable ("DSDT", "", "", RPST, PPST, 0x01) 1231 CH04 (Arg0, 0x00, 0x07, Z176, __LINE__, 0x00, 0x00) /* AE_ALREADY_EXISTS */ 1232 If ((0x00 != \DTM2.PLDT)) 1233 { 1234 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1235 } 1236 1237 /* SignatureString is "SSDT" */ 1238 1239 LoadTable ("SSDT", "", "", RPST, PPST, 0x01) 1240 CH04 (Arg0, 0x00, 0x07, Z176, __LINE__, 0x00, 0x00) /* AE_ALREADY_EXISTS */ 1241 If ((0x00 != \DTM2.PLDT)) 1242 { 1243 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1244 } 1245 1246 Return (0x00) 1247 } 1248 1249 /* Exceptions when the matched table is already loaded */ 1250 1251 Method (TSTA, 1, Serialized) 1252 { 1253 Name (DDBH, 0x00) 1254 Concatenate (Arg0, "-tsta", Arg0) 1255 If (CondRefOf (\_XT2, Local0)) 1256 { 1257 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1258 Return (0x01) 1259 } 1260 1261 \DTM2.PLDT = 0x00 1262 DDBH = LoadTable ("OEM1", "", "", "\\", PPST, 0x01) 1263 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1264 { 1265 Return (0x01) 1266 } 1267 1268 Local1 = ObjectType (DDBH) 1269 If ((Local1 != C017)) 1270 { 1271 /* DDB Handle */ 1272 1273 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 1274 Return (0x01) 1275 } 1276 1277 If ((0x01 != \DTM2.PLDT)) 1278 { 1279 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1280 } 1281 1282 If (CondRefOf (\_XT2, Local0)){} 1283 Else 1284 { 1285 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 1286 } 1287 1288 \DTM2.PLDT = 0x00 1289 LoadTable ("OEM1", "", "", "\\DTM2", PPST, 0x01) 1290 CH04 (Arg0, 0x00, 0x07, Z176, __LINE__, 0x00, 0x00) /* AE_ALREADY_EXISTS */ 1291 If ((0x00 != \DTM2.PLDT)) 1292 { 1293 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 1294 } 1295 1296 If (CondRefOf (\DTM2._XT2, Local0)) 1297 { 1298 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\DTM2._XT2", 0x01) 1299 } 1300 1301 If (CondRefOf (\_XT2, Local0)){} 1302 Else 1303 { 1304 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 1305 } 1306 1307 Unload (DDBH) 1308 Debug = "OEM1 unloaded" 1309 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1310 { 1311 Return (0x01) 1312 } 1313 1314 If (CondRefOf (\_XT2, Local0)) 1315 { 1316 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1317 } 1318 1319 Return (0x00) 1320 } 1321 1322 /* Originated from ssdt4.asl: iasl -tc ssdt4.asl */ 1323 1324 Name (BUF4, Buffer (0x44) 1325 { 1326 /* 0000 */ 0x53, 0x53, 0x44, 0x54, 0x44, 0x00, 0x00, 0x00, // SSDTD... 1327 /* 0008 */ 0x02, 0x08, 0x69, 0x41, 0x53, 0x4C, 0x54, 0x53, // ..iASLTS 1328 /* 0010 */ 0x4C, 0x54, 0x42, 0x4C, 0x30, 0x30, 0x30, 0x31, // LTBL0001 1329 /* 0018 */ 0x01, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x54, 0x4C, // ....INTL 1330 /* 0020 */ 0x15, 0x12, 0x06, 0x20, 0x10, 0x1F, 0x5C, 0x00, // ... ..\. 1331 /* 0028 */ 0x08, 0x5F, 0x58, 0x54, 0x32, 0x0D, 0x61, 0x62, // ._XT2.ab 1332 /* 0030 */ 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x6C, // solute l 1333 /* 0038 */ 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, // ocation 1334 /* 0040 */ 0x6F, 0x62, 0x6A, 0x00 // obj. 1335 }) 1336 OperationRegion (IST4, SystemMemory, 0x0600, 0x44) 1337 Field (IST4, ByteAcc, NoLock, Preserve) 1338 { 1339 RFU4, 544 1340 } 1341 1342 /* Exceptions when there already is an previously loaded Object */ 1343 /* referred by the path in the Namespace */ 1344 Method (TSTB, 1, Serialized) 1345 { 1346 Name (DDBH, 0x00) 1347 Concatenate (Arg0, "-tstb", Arg0) 1348 If (CondRefOf (\_XT2, Local0)) 1349 { 1350 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1351 Return (0x01) 1352 } 1353 1354 RFU4 = BUF4 /* \DTM2.BUF4 */ 1355 Load (RFU4, DDBH) /* \DTM2.TSTB.DDBH */ 1356 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1357 { 1358 Return (0x01) 1359 } 1360 1361 Local1 = ObjectType (DDBH) 1362 If ((Local1 != C017)) 1363 { 1364 /* DDB Handle */ 1365 1366 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, C017) 1367 Return (0x01) 1368 } 1369 1370 If (CondRefOf (\_XT2, Local0)){} 1371 Else 1372 { 1373 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 1374 } 1375 1376 \DTM2.PLDT = 0x00 1377 LoadTable ("OEM1", "", "", "\\", PPST, 0x01) 1378 CH04 (Arg0, 0x00, 0x07, Z176, __LINE__, 0x00, 0x00) /* AE_ALREADY_EXISTS */ 1379 If ((0x00 != \DTM2.PLDT)) 1380 { 1381 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 1382 } 1383 1384 If (CondRefOf (\_XT2, Local0)){} 1385 Else 1386 { 1387 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x00) 1388 } 1389 1390 Unload (DDBH) 1391 Debug = "SSDT unloaded" 1392 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1393 { 1394 Return (0x01) 1395 } 1396 1397 If (CondRefOf (\_XT2, Local0)) 1398 { 1399 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1400 } 1401 1402 Return (0x00) 1403 } 1404 1405 /* Exceptions when the object specified by the ParameterPathString */ 1406 /* does not exist */ 1407 Method (TSTC, 1, NotSerialized) 1408 { 1409 Concatenate (Arg0, "-tstc", Arg0) 1410 LoadTable ("DSDT", "", "", RPST, "\\DTM2.NULL", 0x01) 1411 CH04 (Arg0, 0x00, 0x05, Z176, __LINE__, 0x00, 0x00) /* AE_NOT_FOUND */ 1412 Return (0x00) 1413 } 1414 1415 /* Exceptions when storing of data of the ParameterData data type */ 1416 /* to the specified object is not allowed. */ 1417 Method (TSTD, 1, NotSerialized) 1418 { 1419 Concatenate (Arg0, "-tstd", Arg0) 1420 \DTM2.PLDT = 0x00 1421 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \DTM2.DEVR) 1422 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1423 If ((0x00 != \DTM2.PLDT)) 1424 { 1425 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 1426 } 1427 1428 If (CondRefOf (\_XT2, Local0)) 1429 { 1430 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1431 } 1432 1433 Return (0x00) 1434 } 1435 1436 /* Implicit operand conversion of the parameters specified to be strings */ 1437 1438 Method (TSTE, 1, Serialized) 1439 { 1440 Name (DDBH, 0x02) 1441 Name (SOID, "") 1442 Name (STID, "") 1443 Name (RPST, "\\") 1444 Name (PPST, "DTM2.PLDT") 1445 Name (DSTR, "01234") 1446 Method (M000, 3, Serialized) 1447 { 1448 Name (DDBH, 0x02) 1449 \DTM2.PLDT = 0x00 1450 Concatenate (Arg0, "-m000.", Arg0) 1451 Concatenate (Arg0, Mid (DSTR, Arg2, 0x01), Arg0) 1452 Switch (ToInteger (Arg2)) 1453 { 1454 Case (0x00) 1455 { 1456 LoadTable (Arg1, SOID, STID, RPST, PPST, 0x01) 1457 Return (CH04 (Arg0, 0x00, 0x25, Z176, __LINE__, 0x00, 0x00))/* AE_BAD_SIGNATURE */ 1458 } 1459 Case (0x01) 1460 { 1461 DDBH = LoadTable (SOEM, Arg1, STID, RPST, PPST, 0x01) 1462 } 1463 Case (0x02) 1464 { 1465 DDBH = LoadTable (SOEM, SOID, Arg1, RPST, PPST, 0x01) 1466 } 1467 Case (0x03) 1468 { 1469 LoadTable (SOEM, SOID, STID, Arg1, PPST, 0x01) 1470 Return (CH04 (Arg0, 0x00, 0x1E, Z176, __LINE__, 0x00, 0x00)) /* AE_BAD_PATHNAME */ 1471 } 1472 Case (0x04) 1473 { 1474 LoadTable (SOEM, SOID, STID, RPST, Arg1, 0x01) 1475 Return (CH04 (Arg0, 0x00, 0x1E, Z176, __LINE__, 0x00, 0x00)) /* AE_BAD_PATHNAME */ 1476 } 1477 1478 } 1479 1480 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1481 { 1482 Return (0x01) 1483 } 1484 1485 If ((0x00 != \DTM2.PLDT)) 1486 { 1487 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x00) 1488 Return (0x01) 1489 } 1490 1491 Local5 = ObjectType (DDBH) 1492 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1493 { 1494 Return (0x01) 1495 } 1496 1497 If ((Local5 != C009)) 1498 { 1499 /* Integer */ 1500 1501 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local5, C009) 1502 Return (0x01) 1503 } 1504 1505 If ((0x00 != DDBH)) 1506 { 1507 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, DDBH, 0x00) 1508 Return (0x01) 1509 } 1510 1511 Return (0x00) 1512 } 1513 1514 Concatenate (Arg0, "-tste", Arg0) 1515 If (Y281) 1516 { 1517 SOID = ^SOID /* \DTM2.SOID */ 1518 STID = ^STID /* \DTM2.STID */ 1519 } 1520 1521 /* Buffer to String implicit conversion, only check that then */ 1522 /* no exception occurs. Actually due to the conversion rule */ 1523 /* resulting strings will not match the table fields */ 1524 ToBuffer (SOEM, Local0) 1525 ToBuffer (SOID, Local1) 1526 ToBuffer (STID, Local2) 1527 ToBuffer (RPST, Local3) 1528 ToBuffer (PPST, Local4) 1529 If (M000 (Arg0, Local0, 0x00)) 1530 { 1531 Return (0x01) 1532 } 1533 1534 If (M000 (Arg0, Local1, 0x01)) 1535 { 1536 Return (0x01) 1537 } 1538 1539 If (M000 (Arg0, Local2, 0x02)) 1540 { 1541 Return (0x01) 1542 } 1543 1544 If (M000 (Arg0, Local3, 0x03)) 1545 { 1546 Return (0x01) 1547 } 1548 1549 If (M000 (Arg0, Local4, 0x04)) 1550 { 1551 Return (0x01) 1552 } 1553 1554 /* Check consistency of the parameters */ 1555 1556 If ((ToBuffer (SOEM) != Local0)) 1557 { 1558 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, ToBuffer (SOEM)) 1559 Return (0x01) 1560 } 1561 1562 If ((ToBuffer (SOID) != Local1)) 1563 { 1564 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local1, ToBuffer (SOID)) 1565 Return (0x01) 1566 } 1567 1568 If ((ToBuffer (STID) != Local2)) 1569 { 1570 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local2, ToBuffer (STID)) 1571 Return (0x01) 1572 } 1573 1574 If ((ToBuffer (RPST) != Local3)) 1575 { 1576 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local3, ToBuffer (RPST)) 1577 Return (0x01) 1578 } 1579 1580 If ((ToBuffer (PPST) != Local4)) 1581 { 1582 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local4, ToBuffer (PPST)) 1583 Return (0x01) 1584 } 1585 1586 /* Integer to String implicit conversion */ 1587 1588 ToInteger (Local0, Local0) 1589 ToInteger (Local1, Local1) 1590 ToInteger (Local2, Local2) 1591 ToInteger (Local3, Local3) 1592 ToInteger (Local4, Local4) 1593 /*if (m000(arg0, Local0, 0)) {return (1)} */ 1594 /*if (m000(arg0, Local1, 1)) {return (1)} */ 1595 /*if (m000(arg0, Local2, 2)) {return (1)} */ 1596 If (M000 (Arg0, Local3, 0x03)) 1597 { 1598 Return (0x01) 1599 } 1600 1601 If (M000 (Arg0, Local4, 0x04)) 1602 { 1603 Return (0x01) 1604 } 1605 1606 /* Actual trivial Buffer to String implicit conversion */ 1607 1608 If (Y293) 1609 { 1610 If (CondRefOf (\_XT2, Local0)) 1611 { 1612 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1613 Return (0x01) 1614 } 1615 1616 Local0 = 0x00 1617 Local1 = Buffer (Local0){} 1618 \DTM2.PLDT = 0x00 1619 DDBH = LoadTable (SOEM, Local1, Local1, RPST, PPST, 0x01) 1620 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1621 { 1622 Return (0x01) 1623 } 1624 1625 If ((0x01 != \DTM2.PLDT)) 1626 { 1627 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, 0x01) 1628 Return (0x01) 1629 } 1630 1631 If (CondRefOf (\_XT2, Local0)){} 1632 Else 1633 { 1634 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1635 Return (0x01) 1636 } 1637 1638 Unload (DDBH) 1639 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1640 { 1641 Return (0x01) 1642 } 1643 1644 If (CondRefOf (\_XT2, Local0)) 1645 { 1646 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, "\\_XT2", 0x01) 1647 Return (0x01) 1648 } 1649 } 1650 1651 Return (0x00) 1652 } 1653 1654 /* LoadTable returns 0 if some SSDT matching the LoadTable */ 1655 /* parameters is originally not listed in XSDT */ 1656 /* 1657 * This test should never happen in real ASL code. So it is removed. 1658 * 1659 * The Load operation will add a table to global table list, which is 1660 * the master list that can be find in XSDT. 1661 * 1662 * The Unload operation will just delete the namespace owned by the table, 1663 * release OwnerId and reset the table flag, but the table remains in 1664 * global table list. 1665 * 1666 * So, LoadTable after Load and UnLoad operation will cause exception. 1667 * 1668 * Nothing like this should happen in real ASL code. The BIOS writer 1669 * knows whether the table is in the XSDT or not. 1670 */ 1671 /* 1672 Method(tstf, 1) 1673 { 1674 Name(DDBH, 0) 1675 Concatenate(arg0, "-tstf", arg0) 1676 if (CondRefof(\_XT2, Local0)) { 1677 err(arg0, z176, __LINE__, 0, 0, "\\_XT2", 1) 1678 return (1) 1679 } 1680 Store(BUF4, RFU4) 1681 Load(RFU4, DDBH) 1682 if (CH03(arg0, z176, 0x0f2, __LINE__, 0)) { 1683 return (1) 1684 } 1685 Store(ObjectType(DDBH), Local1) 1686 if (LNotEqual(Local1, c017)) { // DDB Handle 1687 err(arg0, z176, __LINE__, 0, 0, Local1, c017) 1688 return (1) 1689 } 1690 if (CondRefof(\_XT2, Local0)) { 1691 } else { 1692 err(arg0, z176, __LINE__, 0, 0, "\\_XT2", 0) 1693 } 1694 UnLoad(DDBH) 1695 Store("SSDT unloaded", Debug) 1696 if (CH03(arg0, z176, 0x0f5, __LINE__, 0)) { 1697 return (1) 1698 } 1699 if (CondRefof(\_XT2, Local0)) { 1700 err(arg0, z176, __LINE__, 0, 0, "\\_XT2", 1) 1701 return (1) 1702 } 1703 Store(0, \DTM2.PLDT) 1704 if (y289) { 1705 LoadTable("SSDT", "iASLTS", "LTBL0001", "\\", PPST, 1) 1706 } else { 1707 Store(LoadTable("SSDT", "iASLTS", "LTBL0001", "\\", PPST, 1), DDBH) 1708 } 1709 CH04(arg0, 0, 28, z176, __LINE__, 0, 0) // AE_BAD_PARAMETER 1710 if (LNotEqual(0, \DTM2.PLDT)) { 1711 err(arg0, z176, __LINE__, 0, 0, \DTM2.PLDT, 0) 1712 } 1713 if (CondRefof(\_XT2, Local0)) { 1714 err(arg0, z176, __LINE__, 0, 0, "\\_XT2", 1) 1715 if (y289) { 1716 // Cleanup 1717 UnLoad(DDBH) 1718 } 1719 } 1720 return (0) 1721 } 1722 */ 1723 /* AE_OWNER_ID_LIMIT exception when too many Tables loaded */ 1724 Method (TSTG, 1, NotSerialized) 1725 { 1726 Concatenate (Arg0, "-tstg-\\DTM0", Arg0) 1727 \DTM0.TSTH (Arg0, 0x01) 1728 } 1729 1730 /* Exceptions when the parameter of the Loadtable operator */ 1731 /* is of incorrect types */ 1732 Method (TSTH, 1, Serialized) 1733 { 1734 Name (DDB0, 0x00) 1735 Name (DDB1, 0x00) 1736 Name (BTYP, Buffer (0x10) 1737 { 1738 /* 0000 */ 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, // ........ 1739 /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 // ........ 1740 }) 1741 Method (M000, 4, NotSerialized) 1742 { 1743 Concatenate (Arg0, "-m000.", Arg0) 1744 Concatenate (Arg0, Arg1, Arg0) 1745 Local0 = ObjectType (Arg2) 1746 If ((Arg3 != Local0)) 1747 { 1748 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, Arg3) 1749 Return (0x01) 1750 } 1751 1752 LoadTable (DerefOf (Arg2), "", "", "\\", "\\DTM2.PLDT", 0x01) 1753 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1754 Return (0x00) 1755 } 1756 1757 Method (M001, 4, NotSerialized) 1758 { 1759 Concatenate (Arg0, "-m001.", Arg0) 1760 Concatenate (Arg0, Arg1, Arg0) 1761 Local0 = ObjectType (Arg2) 1762 If ((Arg3 != Local0)) 1763 { 1764 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, Arg3) 1765 Return (0x01) 1766 } 1767 1768 LoadTable ("OEM1", DerefOf (Arg2), "", "\\", "\\DTM2.PLDT", 0x01) 1769 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1770 Return (0x00) 1771 } 1772 1773 Method (M002, 4, NotSerialized) 1774 { 1775 Concatenate (Arg0, "-m002.", Arg0) 1776 Concatenate (Arg0, Arg1, Arg0) 1777 Local0 = ObjectType (Arg2) 1778 If ((Arg3 != Local0)) 1779 { 1780 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, Arg3) 1781 Return (0x01) 1782 } 1783 1784 LoadTable ("OEM1", "", DerefOf (Arg2), "\\", "\\DTM2.PLDT", 0x01) 1785 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1786 Return (0x00) 1787 } 1788 1789 Method (M003, 4, NotSerialized) 1790 { 1791 Concatenate (Arg0, "-m003.", Arg0) 1792 Concatenate (Arg0, Arg1, Arg0) 1793 Local0 = ObjectType (Arg2) 1794 If ((Arg3 != Local0)) 1795 { 1796 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, Arg3) 1797 Return (0x01) 1798 } 1799 1800 LoadTable ("OEM1", "", "", DerefOf (Arg2), "\\DTM2.PLDT", 0x01) 1801 If (DerefOf (BTYP [Arg3])) 1802 { 1803 CH04 (Arg0, 0x00, 0x1E, Z176, __LINE__, 0x00, 0x00) /* AE_BAD_PATHNAME */ 1804 } 1805 Else 1806 { 1807 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1808 } 1809 1810 Return (0x00) 1811 } 1812 1813 Method (M004, 4, NotSerialized) 1814 { 1815 Concatenate (Arg0, "-m004.", Arg0) 1816 Concatenate (Arg0, Arg1, Arg0) 1817 Local0 = ObjectType (Arg2) 1818 If ((Arg3 != Local0)) 1819 { 1820 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, Arg3) 1821 Return (0x01) 1822 } 1823 1824 LoadTable ("OEM1", "", "", "\\", DerefOf (Arg2), 0x01) 1825 If (DerefOf (BTYP [Arg3])) 1826 { 1827 CH04 (Arg0, 0x00, 0x1E, Z176, __LINE__, 0x00, 0x00) /* AE_BAD_PATHNAME */ 1828 } 1829 Else 1830 { 1831 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1832 } 1833 1834 Return (0x00) 1835 } 1836 1837 Concatenate (Arg0, "-tsth", Arg0) 1838 /* Load Auxiliry table */ 1839 1840 \DTM0.RFU3 = \DTM0.BUF3 1841 Load (\DTM0.RFU3, DDB0) /* \DTM2.TSTH.DDB0 */ 1842 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 1843 { 1844 Return (0x01) 1845 } 1846 1847 /* Uninitialized */ 1848 1849 If (0x00) 1850 { 1851 Local1 = 0x00 1852 } 1853 1854 Local0 = ObjectType (Local1) 1855 If ((C008 != Local0)) 1856 { 1857 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C008) 1858 } 1859 Else 1860 { 1861 LoadTable (Local1, "", "", "\\", "\\DTM2.PLDT", 0x01) 1862 If (SLCK) 1863 { 1864 CH04 (Arg0, 0x00, 0x3D, Z176, __LINE__, 0x00, 0x00) /* AE_AML_STRING_LIMIT */ 1865 } 1866 Else 1867 { 1868 CH04 (Arg0, 0x00, 0x31, Z176, __LINE__, 0x00, 0x00) /* AE_AML_UNINITIALIZED_LOCAL */ 1869 } 1870 1871 LoadTable ("OEM1", Local1, "", "\\", "\\DTM2.PLDT", 0x01) 1872 If (SLCK) 1873 { 1874 CH04 (Arg0, 0x00, 0x3D, Z176, __LINE__, 0x00, 0x00) /* AE_AML_STRING_LIMIT */ 1875 } 1876 Else 1877 { 1878 CH04 (Arg0, 0x00, 0x31, Z176, __LINE__, 0x00, 0x00) /* AE_AML_UNINITIALIZED_LOCAL */ 1879 } 1880 1881 LoadTable ("OEM1", "", Local1, "\\", "\\DTM2.PLDT", 0x01) 1882 If (SLCK) 1883 { 1884 /* ACPI_OEM_TABLE_ID_SIZE should be less than 8. */ 1885 /* The size of the "Integer" converted from "Any" is ISZ0*2. */ 1886 If ((ISZ0 <= 0x04)) 1887 { 1888 CH03 (Arg0, Z176, __LINE__, 0x00, 0x00) /* No exception */ 1889 } 1890 Else 1891 { 1892 CH04 (Arg0, 0x00, 0x3D, Z176, __LINE__, 0x00, 0x00) /* AE_AML_STRING_LIMIT */ 1893 } 1894 } 1895 Else 1896 { 1897 CH04 (Arg0, 0x00, 0x31, Z176, __LINE__, 0x00, 0x00) /* AE_AML_UNINITIALIZED_LOCAL */ 1898 } 1899 1900 LoadTable ("OEM1", "", "", Local1, "\\DTM2.PLDT", 0x01) 1901 If (SLCK) 1902 { 1903 CH04 (Arg0, 0x00, 0x1E, Z176, __LINE__, 0x00, 0x00) /* AE_BAD_PATHNAME */ 1904 } 1905 Else 1906 { 1907 CH04 (Arg0, 0x00, 0x31, Z176, __LINE__, 0x00, 0x00) /* AE_AML_UNINITIALIZED_LOCAL */ 1908 } 1909 1910 LoadTable ("OEM1", "", "", "\\", Local1, 0x01) 1911 If (SLCK) 1912 { 1913 CH04 (Arg0, 0x00, 0x1E, Z176, __LINE__, 0x00, 0x00) /* AE_BAD_PATHNAME */ 1914 } 1915 Else 1916 { 1917 CH04 (Arg0, 0x00, 0x31, Z176, __LINE__, 0x00, 0x00) /* AE_AML_UNINITIALIZED_LOCAL */ 1918 } 1919 } 1920 1921 /* Integer */ 1922 1923 M003 (Arg0, "int", RefOf (\AUXD.INT0), C009) 1924 M004 (Arg0, "int", RefOf (\AUXD.INT0), C009) 1925 /* String */ 1926 1927 M003 (Arg0, "str", RefOf (\AUXD.STR0), C00A) 1928 M004 (Arg0, "str", RefOf (\AUXD.STR0), C00A) 1929 /* Buffer */ 1930 1931 M003 (Arg0, "buf", RefOf (\AUXD.BUF0), C00B) 1932 M004 (Arg0, "buf", RefOf (\AUXD.BUF0), C00B) 1933 /* Package */ 1934 1935 If (Y286) 1936 { 1937 M000 (Arg0, "pac", RefOf (\AUXD.PAC0), C00C) 1938 M001 (Arg0, "pac", RefOf (\AUXD.PAC0), C00C) 1939 M002 (Arg0, "pac", RefOf (\AUXD.PAC0), C00C) 1940 M003 (Arg0, "pac", RefOf (\AUXD.PAC0), C00C) 1941 M004 (Arg0, "pac", RefOf (\AUXD.PAC0), C00C) 1942 } 1943 1944 LoadTable (\AUXD.PAC0, "", "", "\\", "\\DTM2.PLDT", 0x01) 1945 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1946 LoadTable ("OEM1", \AUXD.PAC0, "", "\\", "\\DTM2.PLDT", 0x01) 1947 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1948 LoadTable ("OEM1", "", \AUXD.PAC0, "\\", "\\DTM2.PLDT", 0x01) 1949 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1950 LoadTable ("OEM1", "", "", \AUXD.PAC0, "\\DTM2.PLDT", 0x01) 1951 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1952 LoadTable ("OEM1", "", "", "\\", \AUXD.PAC0, 0x01) 1953 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1954 Local0 = ObjectType (\AUXD.PAC0) 1955 If ((C00C != Local0)) 1956 { 1957 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00C) 1958 } 1959 1960 /* Field Unit */ 1961 1962 M003 (Arg0, "flu", RefOf (\AUXD.FLU0), C00D) 1963 M004 (Arg0, "flu", RefOf (\AUXD.FLU0), C00D) 1964 /* Device */ 1965 1966 LoadTable (\AUXD.DEV0, "", "", "\\", "\\DTM2.PLDT", 0x01) 1967 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1968 LoadTable ("OEM1", \AUXD.DEV0, "", "\\", "\\DTM2.PLDT", 0x01) 1969 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1970 LoadTable ("OEM1", "", \AUXD.DEV0, "\\", "\\DTM2.PLDT", 0x01) 1971 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1972 LoadTable ("OEM1", "", "", \AUXD.DEV0, "\\DTM2.PLDT", 0x01) 1973 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1974 LoadTable ("OEM1", "", "", "\\", \AUXD.DEV0, 0x01) 1975 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 1976 Local0 = ObjectType (\AUXD.DEV0) 1977 If ((C00E != Local0)) 1978 { 1979 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00E) 1980 } 1981 1982 /* Event */ 1983 1984 M000 (Arg0, "evt", RefOf (\AUXD.EVE0), C00F) 1985 M001 (Arg0, "evt", RefOf (\AUXD.EVE0), C00F) 1986 M002 (Arg0, "evt", RefOf (\AUXD.EVE0), C00F) 1987 M003 (Arg0, "evt", RefOf (\AUXD.EVE0), C00F) 1988 M004 (Arg0, "evt", RefOf (\AUXD.EVE0), C00F) 1989 /* Method */ 1990 1991 M000 (Arg0, "met", RefOf (\AUXD.MMM0), C010) 1992 M001 (Arg0, "met", RefOf (\AUXD.MMM0), C010) 1993 M002 (Arg0, "met", RefOf (\AUXD.MMM0), C010) 1994 M003 (Arg0, "met", RefOf (\AUXD.MMM0), C010) 1995 M004 (Arg0, "met", RefOf (\AUXD.MMM0), C010) 1996 /* Mutex */ 1997 1998 M000 (Arg0, "mtx", RefOf (\AUXD.MTX0), C011) 1999 M001 (Arg0, "mtx", RefOf (\AUXD.MTX0), C011) 2000 M002 (Arg0, "mtx", RefOf (\AUXD.MTX0), C011) 2001 M003 (Arg0, "mtx", RefOf (\AUXD.MTX0), C011) 2002 M004 (Arg0, "mtx", RefOf (\AUXD.MTX0), C011) 2003 /* OpRegion */ 2004 2005 M000 (Arg0, "opr", RefOf (\AUXD.OPR0), C012) 2006 M001 (Arg0, "opr", RefOf (\AUXD.OPR0), C012) 2007 M002 (Arg0, "opr", RefOf (\AUXD.OPR0), C012) 2008 M003 (Arg0, "opr", RefOf (\AUXD.OPR0), C012) 2009 M004 (Arg0, "opr", RefOf (\AUXD.OPR0), C012) 2010 /* Power Resource */ 2011 2012 M000 (Arg0, "pwr", RefOf (\AUXD.PWR0), C013) 2013 M001 (Arg0, "pwr", RefOf (\AUXD.PWR0), C013) 2014 M002 (Arg0, "pwr", RefOf (\AUXD.PWR0), C013) 2015 M003 (Arg0, "pwr", RefOf (\AUXD.PWR0), C013) 2016 M004 (Arg0, "pwr", RefOf (\AUXD.PWR0), C013) 2017 /* Processor */ 2018 2019 M000 (Arg0, "cpu", RefOf (\AUXD.CPU0), C014) 2020 M001 (Arg0, "cpu", RefOf (\AUXD.CPU0), C014) 2021 M002 (Arg0, "cpu", RefOf (\AUXD.CPU0), C014) 2022 M003 (Arg0, "cpu", RefOf (\AUXD.CPU0), C014) 2023 M004 (Arg0, "cpu", RefOf (\AUXD.CPU0), C014) 2024 /* Thermal Zone */ 2025 2026 LoadTable (\AUXD.TZN0, "", "", "\\", "\\DTM2.PLDT", 0x01) 2027 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2028 LoadTable ("OEM1", \AUXD.TZN0, "", "\\", "\\DTM2.PLDT", 0x01) 2029 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2030 LoadTable ("OEM1", "", \AUXD.TZN0, "\\", "\\DTM2.PLDT", 0x01) 2031 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2032 LoadTable ("OEM1", "", "", \AUXD.TZN0, "\\DTM2.PLDT", 0x01) 2033 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2034 LoadTable ("OEM1", "", "", "\\", \AUXD.TZN0, 0x01) 2035 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2036 Local0 = ObjectType (\AUXD.TZN0) 2037 If ((C015 != Local0)) 2038 { 2039 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C015) 2040 } 2041 2042 /* Buffer Field */ 2043 2044 M003 (Arg0, "bfl", RefOf (\AUXD.BFL0), C016) 2045 M004 (Arg0, "bfl", RefOf (\AUXD.BFL0), C016) 2046 Unload (DDB0) 2047 CH03 (Arg0, Z176, __LINE__, 0x00, 0x00) 2048 Return (0x00) 2049 } 2050 2051 /* Exceptions when the ParameterData parameter of the Loadtable operator */ 2052 /* can not be saved into the Object referred by ParameterPathString */ 2053 Method (TSTI, 1, Serialized) 2054 { 2055 Name (DDB0, 0x00) 2056 Name (DDB1, 0x00) 2057 Concatenate (Arg0, "-tsti", Arg0) 2058 /* Load Auxiliry table */ 2059 2060 \DTM0.RFU3 = \DTM0.BUF3 2061 Load (\DTM0.RFU3, DDB0) /* \DTM2.TSTI.DDB0 */ 2062 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2063 { 2064 Return (0x01) 2065 } 2066 2067 /* Uninitialized */ 2068 2069 If (0x00) 2070 { 2071 Local1 = 0x00 2072 } 2073 2074 Local0 = ObjectType (Local1) 2075 If ((C008 != Local0)) 2076 { 2077 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C008) 2078 } 2079 /* Bug 288: iASL unexpectedly forbids ParameterData of Loadtable to be LocalX or UserTerm */ 2080 /* 2081 LoadTable("OEM1", "", "", "\\", "\\DTM2.PLDT", Local1) 2082 if (SLCK) { 2083 CH04(arg0, 0, 47, z176, __LINE__, 0, 0) // AE_AML_OPERAND_TYPE 2084 } else { 2085 CH04(arg0, 0, 49, z176, __LINE__, 0, 0) // AE_AML_UNINITIALIZED_LOCAL 2086 } 2087 */ 2088 Else 2089 { 2090 } 2091 2092 /* Integer */ 2093 2094 Local0 = ObjectType (\DTM2.PLDT) 2095 If ((C009 != Local0)) 2096 { 2097 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2098 Return (0x01) 2099 } 2100 2101 DDB1 = LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.INT0) 2102 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2103 { 2104 Return (0x01) 2105 } 2106 2107 Local0 = ObjectType (\DTM2.PLDT) 2108 If ((C009 != Local0)) 2109 { 2110 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2111 Return (0x01) 2112 } 2113 2114 If ((\DTM2.PLDT != \AUXD.INT0)) 2115 { 2116 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, \AUXD.INT0) 2117 Return (0x01) 2118 } 2119 2120 Unload (DDB1) 2121 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2122 { 2123 Return (0x01) 2124 } 2125 2126 Local0 = ObjectType (\AUXD.INT0) 2127 If ((C009 != Local0)) 2128 { 2129 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2130 } 2131 2132 /* String */ 2133 2134 If (Y296) 2135 { 2136 Local0 = ObjectType (\DTM2.PLDT) 2137 If ((C009 != Local0)) 2138 { 2139 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2140 Return (0x01) 2141 } 2142 2143 DDB1 = LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.STR0) 2144 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2145 { 2146 Return (0x01) 2147 } 2148 2149 Local0 = ObjectType (\DTM2.PLDT) 2150 If ((C009 != Local0)) 2151 { 2152 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2153 Return (0x01) 2154 } 2155 2156 If ((\DTM2.PLDT != \AUXD.STR0)) 2157 { 2158 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, \AUXD.STR0) 2159 Return (0x01) 2160 } 2161 2162 Unload (DDB1) 2163 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2164 { 2165 Return (0x01) 2166 } 2167 2168 Local0 = ObjectType (\AUXD.STR0) 2169 If ((C00A != Local0)) 2170 { 2171 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00A) 2172 } 2173 } 2174 2175 /* Buffer */ 2176 2177 If (Y296) 2178 { 2179 Local0 = ObjectType (\DTM2.PLDT) 2180 If ((C009 != Local0)) 2181 { 2182 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2183 Return (0x01) 2184 } 2185 2186 DDB1 = LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.BUF0) 2187 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2188 { 2189 Return (0x01) 2190 } 2191 2192 Local0 = ObjectType (\DTM2.PLDT) 2193 If ((C009 != Local0)) 2194 { 2195 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2196 Return (0x01) 2197 } 2198 2199 If ((\DTM2.PLDT != \AUXD.BUF0)) 2200 { 2201 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, \AUXD.BUF0) 2202 Return (0x01) 2203 } 2204 2205 Unload (DDB1) 2206 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2207 { 2208 Return (0x01) 2209 } 2210 2211 Local0 = ObjectType (\AUXD.BUF0) 2212 If ((C00B != Local0)) 2213 { 2214 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00B) 2215 } 2216 } 2217 2218 /* Package */ 2219 2220 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.PAC0) 2221 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2222 Local0 = ObjectType (\AUXD.PAC0) 2223 If ((C00C != Local0)) 2224 { 2225 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00C) 2226 } 2227 2228 /* Field Unit */ 2229 2230 If (Y296) 2231 { 2232 Local0 = ObjectType (\DTM2.PLDT) 2233 If ((C009 != Local0)) 2234 { 2235 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2236 Return (0x01) 2237 } 2238 2239 DDB1 = LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.FLU0) 2240 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2241 { 2242 Return (0x01) 2243 } 2244 2245 Local0 = ObjectType (\DTM2.PLDT) 2246 If ((C009 != Local0)) 2247 { 2248 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2249 Return (0x01) 2250 } 2251 2252 If ((\DTM2.PLDT != \AUXD.FLU0)) 2253 { 2254 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, \AUXD.FLU0) 2255 Return (0x01) 2256 } 2257 2258 Unload (DDB1) 2259 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2260 { 2261 Return (0x01) 2262 } 2263 2264 Local0 = ObjectType (\AUXD.FLU0) 2265 If ((C00D != Local0)) 2266 { 2267 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00D) 2268 } 2269 } 2270 2271 /* Device */ 2272 2273 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.DEV0) 2274 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2275 Local0 = ObjectType (\AUXD.DEV0) 2276 If ((C00E != Local0)) 2277 { 2278 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00E) 2279 } 2280 2281 /* Event */ 2282 2283 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.EVE0) 2284 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2285 Local0 = ObjectType (\AUXD.EVE0) 2286 If ((C00F != Local0)) 2287 { 2288 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C00F) 2289 } 2290 2291 /* Method */ 2292 2293 If (Y288) 2294 { 2295 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.MMM0) 2296 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2297 Local0 = ObjectType (\AUXD.MMM0) 2298 If ((C010 != Local0)) 2299 { 2300 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C010) 2301 } 2302 } 2303 2304 /* Mutex */ 2305 2306 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.MTX0) 2307 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2308 Local0 = ObjectType (\AUXD.MTX0) 2309 If ((C011 != Local0)) 2310 { 2311 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C011) 2312 } 2313 2314 /* OpRegion */ 2315 2316 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.OPR0) 2317 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2318 Local0 = ObjectType (\AUXD.OPR0) 2319 If ((C012 != Local0)) 2320 { 2321 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C012) 2322 } 2323 2324 /* Power Resource */ 2325 2326 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.PWR0) 2327 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2328 Local0 = ObjectType (\AUXD.PWR0) 2329 If ((C013 != Local0)) 2330 { 2331 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C013) 2332 } 2333 2334 /* Processor */ 2335 2336 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.CPU0) 2337 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2338 Local0 = ObjectType (\AUXD.CPU0) 2339 If ((C014 != Local0)) 2340 { 2341 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C014) 2342 } 2343 2344 /* Thermal Zone */ 2345 2346 LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.TZN0) 2347 CH04 (Arg0, 0x00, 0x2F, Z176, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */ 2348 Local0 = ObjectType (\AUXD.TZN0) 2349 If ((C015 != Local0)) 2350 { 2351 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C015) 2352 } 2353 2354 /* Buffer Field */ 2355 2356 If (Y296) 2357 { 2358 Local0 = ObjectType (\DTM2.PLDT) 2359 If ((C009 != Local0)) 2360 { 2361 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2362 Return (0x01) 2363 } 2364 2365 DDB1 = LoadTable ("OEM1", "", "", "\\", "\\DTM2.PLDT", \AUXD.BFL0) 2366 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2367 { 2368 Return (0x01) 2369 } 2370 2371 Local0 = ObjectType (\DTM2.PLDT) 2372 If ((C009 != Local0)) 2373 { 2374 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C009) 2375 Return (0x01) 2376 } 2377 2378 If ((\DTM2.PLDT != \AUXD.BFL0)) 2379 { 2380 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, \DTM2.PLDT, \AUXD.BFL0) 2381 Return (0x01) 2382 } 2383 2384 Unload (DDB1) 2385 If (CH03 (Arg0, Z176, __LINE__, 0x00, 0x00)) 2386 { 2387 Return (0x01) 2388 } 2389 2390 Local0 = ObjectType (\AUXD.BFL0) 2391 If ((C016 != Local0)) 2392 { 2393 ERR (Arg0, Z176, __LINE__, 0x00, 0x00, Local0, C016) 2394 } 2395 } 2396 2397 Unload (DDB0) 2398 CH03 (Arg0, Z176, __LINE__, 0x00, 0x00) 2399 Return (0x00) 2400 } 2401 } 2402 2403 Method (TLT0, 0, Serialized) 2404 { 2405 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2406 /* Simple Loadtable test */ 2407 2408 SRMT ("TLT0.tst0") 2409 \DTM2.TST0 (__METHOD__) 2410 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2411 /* All comparisons of Loadtable parameters are case sensitive, */ 2412 /* if no table matches the specified parameters, then 0 is returned */ 2413 SRMT ("TLT0.tst1") 2414 \DTM2.TST1 (__METHOD__) 2415 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2416 /* Any of the RootPathString, ParameterPathString, and ParameterData */ 2417 /* parameters in LoadTable expression can be omitted */ 2418 SRMT ("TLT0.tst2") 2419 \DTM2.TST2 (__METHOD__) 2420 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2421 /* Different sources of the String parameters: Named Objects, LocalX, */ 2422 /* ArgX, elements of Packages, results of functions, any TermArg */ 2423 SRMT ("TLT0.tst3") 2424 \DTM2.TST3 (__METHOD__) 2425 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2426 /* Different sources of the optional parameters (RootPathString, */ 2427 /* ParameterPathString, and ParameterData): Named Objects, LocalX, */ 2428 /* ArgX, elements of Packages, results of functions, any TermArg */ 2429 SRMT ("TLT0.tst4") 2430 \DTM2.TST4 (__METHOD__) 2431 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2432 /* Namespace location to load the Definition Block is determined */ 2433 /* by the RootPathString parameter of Loadtable */ 2434 SRMT ("TLT0.tst5.0") 2435 \DTM2.TST5 (__METHOD__, "\\DTM2.DEVR") 2436 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2437 /* The RootPathString value is evaluated using normal scoping rules, */ 2438 /* assuming that the scope of the LoadTable operator is the current */ 2439 /* scope */ 2440 SRMT ("TLT0.tst5.1") 2441 \DTM2.TST5 (__METHOD__, "^DEVR") 2442 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2443 /* "\" is assumed to be Namespace location to load the Definition */ 2444 /* Block if RootPathString parameter is not specified */ 2445 SRMT ("TLT0.tst6") 2446 \DTM2.TST6 (__METHOD__) 2447 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2448 /* If the first character of ParameterPathString is a backslash */ 2449 /* or caret character, then the path of the object set up on success */ 2450 /* is ParameterPathString. It is RootPathString.ParameterPathString */ 2451 /* in any case. */ 2452 SRMT ("TLT0.tst7") 2453 \DTM2.TST7 (__METHOD__) 2454 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2455 /* Implicit operand conversion of the parameters specified to be strings */ 2456 2457 SRMT ("TLT0.tste") 2458 \DTM2.TSTE (__METHOD__) 2459 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2460 /* LoadTable returns 0 if some SSDT matching the LoadTable */ 2461 /* parameters is originally not listed in XSDT */ 2462 /*SRMT("TLT0.tstf") */ 2463 /*\DTM2.tstf(ts) */ 2464 CH03 (__METHOD__, Z176, __LINE__, 0x00, 0x00) 2465 } 2466 2467 /* Exceptional conditions */ 2468 2469 Method (TLT1, 0, Serialized) 2470 { 2471 /* Exceptions when the SignatureString is greater than four characters, */ 2472 /* the OEMIDString is greater than six characters, or the OEMTableID is */ 2473 /* greater than eight characters */ 2474 SRMT ("TLT1.tst8") 2475 \DTM2.TST8 (__METHOD__) 2476 /* Exceptions when some DSDT or SSDT matching the LoadTable parameters */ 2477 /* is already loaded (actually on initial loading of tables listed in XSDT) */ 2478 SRMT ("TLT1.tst9") 2479 \DTM2.TST9 (__METHOD__) 2480 /* Exceptions when the matched table is already loaded */ 2481 2482 SRMT ("TLT1.tsta") 2483 \DTM2.TSTA (__METHOD__) 2484 /* Exceptions when there already is an previously loaded Object */ 2485 /* referred by the path in the Namespace */ 2486 SRMT ("TLT1.tstb") 2487 \DTM2.TSTB (__METHOD__) 2488 /* Exceptions when the object specified by the ParameterPathString */ 2489 /* does not exist */ 2490 SRMT ("TLT1.tstc") 2491 \DTM2.TSTC (__METHOD__) 2492 /* Exceptions when storing of data of the ParameterData data type */ 2493 /* to the specified object is not allowed. */ 2494 SRMT ("TLT1.tstd") 2495 \DTM2.TSTD (__METHOD__) 2496 /* AE_OWNER_ID_LIMIT exception when too many Tables loaded */ 2497 2498 SRMT ("TLT1.tstg") 2499 If (Y294) 2500 { 2501 \DTM2.TSTG (__METHOD__) 2502 } 2503 Else 2504 { 2505 BLCK () 2506 } 2507 2508 /* Exceptions when the parameter of the Loadtable operator */ 2509 /* is of incorrect types */ 2510 SRMT ("TLT1.tsth") 2511 \DTM2.TSTH (__METHOD__) 2512 /* Exceptions when the ParameterData parameter of the Loadtable operator */ 2513 /* can not be saved into the Object referred by ParameterPathString */ 2514 SRMT ("TLT1.tsti") 2515 \DTM2.TSTI (__METHOD__) 2516 } 2517