1/* 2 * Some or all of this work - Copyright (c) 2006 - 2016, Intel Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * Neither the name of Intel Corporation nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29/* 30 * Initiate exceptional conditions by all the known ways. 31 * Verify the reaction. 32 * 33 * Current max index of checking is 170 34 */ 35 36Name(z058, 58) 37 38// Divide by zero 39Method(m140,, Serialized) 40{ 41 Name(ts, "m140") 42 43 CH03(ts, z058, 0, 0, 0) 44 45 Store(1, Local1) 46 Store(2, Local0) 47 Divide(Local1, Local0, Local2) 48 49 CH03(ts, z058, 1, 0, 0) 50 51 Store(0, Local0) 52 Divide(Local1, Local0, Local2) 53 54 CH04(ts, 0, 56, z058, 2, 0, 0) // AE_AML_DIVIDE_BY_ZERO 55 56 Store(2, Local0) 57 Divide(Local1, Local0, Local2) 58 59 CH03(ts, z058, 3, 0, 0) 60} 61 62// Modulo divide by zero 63Method(m141,, Serialized) 64{ 65 Name(ts, "m141") 66 67 CH03(ts, z058, 4, 0, 0) 68 69 Store(1, Local1) 70 Store(2, Local0) 71 Mod(Local1, Local0, Local2) 72 73 CH03(ts, z058, 5, 0, 0) 74 75 Store(0, Local0) 76 Mod(Local1, Local0, Local2) 77 78 CH04(ts, 0, 56, z058, 6, 0, 0) // AE_AML_DIVIDE_BY_ZERO 79 80 Store(2, Local0) 81 Mod(Local1, Local0, Local2) 82 83 CH03(ts, z058, 7, 0, 0) 84} 85 86// Release ownership on a Mutex that is not currently owned 87Method(m142,, Serialized) 88{ 89 Name(ts, "m142") 90 91 Mutex(MTX0, 0) 92 93 CH03(ts, z058, 8, 0, 0) 94 95 Release(MTX0) 96 97 CH04(ts, 0, 65, z058, 9, 0, 0) // AE_AML_MUTEX_NOT_ACQUIRED 98} 99 100// SizeOf for data types not an Integer, Buffer, String or Package object 101Method(m143,, Serialized) 102{ 103 Name(ts, "m143") 104 105 // Method 106 // DDB Handle 107 // Debug Object 108 // Uninitialized 109 110 111 // Integer 112 Name(INT0, 0) 113 114 // String 115 Name(STR0, "string") 116 117 // Buffer 118 Name(BUF0, Buffer(10) {0x00}) 119 120 // Package 121 Name(PAC0, Package(1) {0}) 122 123 // Device 124 Device(DEV0) {} 125 126 // Event 127 Event(EVE0) 128 129 // Mutex 130 Mutex(MTX0, 0) 131 132 // Operation Region 133 OperationRegion(OPR0, SystemMemory, 0, 4) 134 135 // Power Resource 136 PowerResource(PWR0, 0, 0) {} 137 138 // Processor 139 Processor(CPU0, 0x0, 0xFFFFFFFF, 0x0) {} 140 141 // Thermal Zone 142 ThermalZone(TZN0) {} 143 144 // Buffer Field 145 Index(BUF0, 0, Local0) 146 147 CH03(ts, z058, 10, 0, 0) 148 149 Store(SizeOf(STR0), Local5) 150 Store(SizeOf(BUF0), Local5) 151 Store(SizeOf(PAC0), Local5) 152 Store(SizeOf(INT0), Local5) 153 154 CH03(ts, z058, 11, 0, 0) 155 156 if (INT0) { 157 Store(0, Local1) 158 } 159 Store(SizeOf(Local1), Local5) 160 CH04(ts, 1, 49, z058, 12, 0, 0) // AE_AML_UNINITIALIZED_LOCAL 161 162#if 0 /* These are now caught by the compiler - Aug 2015 */ 163 Store(SizeOf(DEV0), Local5) 164 CH04(ts, 1, 47, z058, 13, 0, 0) // AE_AML_OPERAND_TYPE 165 166 Store(SizeOf(EVE0), Local5) 167 CH04(ts, 1, 47, z058, 14, 0, 0) // AE_AML_OPERAND_TYPE 168 169 Store(SizeOf(MTX0), Local5) 170 CH04(ts, 1, 47, z058, 15, 0, 0) // AE_AML_OPERAND_TYPE 171 172 Store(SizeOf(OPR0), Local5) 173 CH04(ts, 1, 47, z058, 16, 0, 0) // AE_AML_OPERAND_TYPE 174 175 Store(SizeOf(PWR0), Local5) 176 CH04(ts, 1, 47, z058, 17, 0, 0) // AE_AML_OPERAND_TYPE 177 178 Store(SizeOf(CPU0), Local5) 179 CH04(ts, 1, 47, z058, 18, 0, 0) // AE_AML_OPERAND_TYPE 180 181 Store(SizeOf(TZN0), Local5) 182 CH04(ts, 1, 47, z058, 19, 0, 0) // AE_AML_OPERAND_TYPE 183#endif 184} 185 186// ToString() when the number of characters copied from buffer exceeds 200 187Method(m144,, Serialized) 188{ 189 Name(ts, "m144") 190 191 Name(b000, Buffer(200){}) 192 193 Store(0, Local0) 194 While (LLess(Local0, 200)) { 195 Store(0xff, Index(b000, Local0)) 196 Increment(Local0) 197 } 198 199 CH03(ts, z058, 20, 0, 0) 200 201 ToString(b000, Ones, Local5) 202 203 CH03(ts, z058, 21, 0, 0) 204 205 Name(b001, Buffer(201){}) 206 207 Store(0, Local0) 208 While (LLess(Local0, 201)) { 209 Store(0xff, Index(b001, Local0)) 210 Increment(Local0) 211 } 212 213 ToString(b001, Ones, Local5) 214 215 /* 216 * CH04(ts, 0, 61, z058, 22, 0, 0) // AE_AML_STRING_LIMIT 217 * 218 * 20.12.2005. 219 * No more limit of string size. 220 */ 221 CH03(ts, z058, 22, 0, 0) 222} 223 224// Access out of Package 225Method(m145,, Serialized) 226{ 227 Name(ts, "m145") 228 229 Name(p000, Package() {0,1,2}) 230 Name(p001, Package(3) {0,1,2}) 231 232 CH03(ts, z058, 23, 0, 0) 233 234 // Package() 235 236 Store(Index(p000, 2), Local5) 237 238 CH03(ts, z058, 24, 0, 0) 239 240 Store(Index(p000, 3), Local5) 241 242 CH04(ts, 1, 55, z058, 25, 0, 0) // AE_AML_PACKAGE_LIMIT 243 244 Index(p000, 2, Local0) 245 246 CH03(ts, z058, 26, 0, 0) 247 248 Index(p000, 3, Local0) 249 250 CH04(ts, 0, 55, z058, 27, 0, 0) // AE_AML_PACKAGE_LIMIT 251 252 // Package(3) 253 254 Store(Index(p001, 2), Local5) 255 256 CH03(ts, z058, 28, 0, 0) 257 258 Index(p001, 3, Local5) 259 260 CH04(ts, 0, 55, z058, 29, 0, 0) // AE_AML_PACKAGE_LIMIT 261 262 Index(p001, 2, Local0) 263 264 CH03(ts, z058, 30, 0, 0) 265 266 Index(p001, 3, Local0) 267 268 CH04(ts, 0, 55, z058, 31, 0, 0) // AE_AML_PACKAGE_LIMIT 269} 270 271// Access out of String 272Method(m085,, Serialized) 273{ 274 Name(ts, "m085") 275 276 Name(s000, "123") 277 278 CH03(ts, z058, 32, 0, 0) 279 280 Index(s000, 2, Local5) 281 282 CH03(ts, z058, 33, 0, 0) 283 284 Index(s000, 3, Local5) 285 286 // Bug 177, Bugzilla 5480. 287 CH04(ts, 0, 61, z058, 34, 0, 0) // AE_AML_STRING_LIMIT 288 289 Index(s000, 2, Local0) 290 291 CH03(ts, z058, 35, 0, 0) 292 293 Index(s000, 3, Local0) 294 295 CH04(ts, 0, 61, z058, 36, 0, 0) // AE_AML_STRING_LIMIT 296} 297 298// Access out of Buffer 299Method(m086,, Serialized) 300{ 301 Name(ts, "m086") 302 303 Name(b000, Buffer() {0,1,2}) 304 Name(b001, Buffer(3) {0,1,2}) 305 306 CH03(ts, z058, 37, 0, 0) 307 308 // Buffer() 309 310 Index(b000, 2, Local5) 311 312 CH03(ts, z058, 38, 0, 0) 313 314 Index(b000, 3, Local5) 315 316 CH04(ts, 0, 54, z058, 39, 0, 0) // AE_AML_BUFFER_LIMIT 317 318 Index(b000, 2, Local0) 319 320 CH03(ts, z058, 40, 0, 0) 321 322 Index(b000, 3, Local0) 323 324 CH04(ts, 0, 54, z058, 41, 0, 0) // AE_AML_BUFFER_LIMIT 325 326 // Buffer(3) 327 328 Index(b001, 2, Local5) 329 330 CH03(ts, z058, 42, 0, 0) 331 332 Index(b001, 3, Local5) 333 334 CH04(ts, 0, 54, z058, 43, 0, 0) // AE_AML_BUFFER_LIMIT 335 336 Index(b001, 2, Local0) 337 338 CH03(ts, z058, 44, 0, 0) 339 340 Index(b001, 3, Local0) 341 342 CH04(ts, 0, 54, z058, 45, 0, 0) // AE_AML_BUFFER_LIMIT 343} 344 345// ToInteger() passed with an image of a number which value 346// exceeds the maximum of an integer for the current mode. 347Method(m146,, Serialized) 348{ 349 Name(ts, "m146") 350 351 CH03(ts, z058, 46, 0, 0) 352 353 if (LEqual(F64, 1)) { 354 Store("0xffffffffffffffff", Local0) 355 } else { 356 Store("0xffffffff", Local0) 357 } 358 ToInteger(Local0, Local5) 359 360 CH03(ts, z058, 47, 0, 0) 361 362 if (LEqual(F64, 1)) { 363 Store("0x11111111111111111", Local0) 364 } else { 365 Store("0x111111111", Local0) 366 } 367 ToInteger(Local0, Local5) 368 369 CH04(ts, 0, 46, z058, 48, 0, 0) // AE_AML_NO_OPERAND 370} 371 372// [Uninitialized] None. 373// Causes a fatal error when used as a source 374// operand in any ASL statement. 375Method(m147, 1, Serialized) 376{ 377 Name(ts, "m147") 378 379 if (Arg0) { 380 Store(0, Local0) 381 } 382 383 CH03(ts, z058, 49, 0, 0) 384 385 Increment(Local0) 386 387 CH04(ts, 0, 49, z058, 50, 0, 0) // AE_AML_UNINITIALIZED_LOCAL 388} 389 390Method(m148) 391{ 392 m147(0) 393} 394 395// Stall, Time parameter is too large (> 100) 396 397Method(m149, 1, Serialized) 398{ 399 Name(ts, "m149") 400 401 CH03(ts, z058, 51, 0, 0) 402 403 Stall(Arg0) 404 405 CH03(ts, z058, 52, 0, 0) 406} 407 408Method(m14a, 1, Serialized) 409{ 410 Name(ts, "m14a") 411 412 CH03(ts, z058, 53, 0, 0) 413 414 Stall(Arg0) 415 416 // It is now bug 14. 417 CH04(ts, 0, 48, z058, 54, 0, 0) // AE_AML_OPERAND_VALUE 418} 419 420// Bug 14. 421Method(m14b) 422{ 423 m149(100) 424 /* 425 * We are forced by Windows and BIOS code to increase the maximum stall 426 * time to 255, this is in violation of the ACPI specification. 427 * ACPI specification requires that Stall() does not relinquish the 428 * processor, and delays longer than 100 usec should use Sleep() 429 * instead. We allow stall up to 255 usec for compatibility with other 430 * interpreters and existing BIOS. 431 * 432 * So we remove this test from test suite. 433 * 434 * m14a(101) 435 */ 436} 437 438// Concatenate() when the number of result characters in string exceeds 200 439Method(m14c,, Serialized) 440{ 441 Name(ts, "m14c") 442 443 // 100 characters 444 Store("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", Local0) 445 446 // 101 characters 447 Store("01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", Local1) 448 449 CH03(ts, z058, 55, 0, 0) 450 451 Concatenate(Local0, Local0, Local5) 452 453 CH03(ts, z058, 56, 0, 0) 454 455 Concatenate(Local0, Local1, Local5) 456 457 /* 458 * CH04(ts, 0, 61, z058, 57, 0, 0) // AE_AML_STRING_LIMIT 459 * 460 * 20.12.2005. 461 * No more limit of string size. 462 */ 463 464 CH03(ts, z058, 57, 0, 0) 465} 466 467// ToDecimalString() when the number of result characters in string exceeds 200 468Method(m14d,, Serialized) 469{ 470 Name(ts, "m14d") 471 472 // Results into 200 (99 * 2 + 2) characters 473 Name(b000, Buffer() { 474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 478 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 480 1, 1, 1, 11}) 481 482 // Results into 201 (100 * 2 + 1) characters 483 Name(b001, Buffer() { 484 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 487 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 490 1, 1, 1, 1, 1}) 491 492 CH03(ts, z058, 58, 0, 0) 493 494 ToDecimalString(b000, Local5) 495 496 CH03(ts, z058, 59, 0, 0) 497 498 ToDecimalString(b001, Local5) 499 500 /* 501 * CH04(ts, 0, 61, z058, 60, 0, 0) // AE_AML_STRING_LIMIT 502 * 503 * 20.12.2005. 504 * No more limit of string size. 505 */ 506 507 CH03(ts, z058, 60, 0, 0) 508} 509 510// ToBCD() when a specified integer overflows a number of the BCD format 511Method(m14e,, Serialized) 512{ 513 Name(ts, "m14e") 514 515 CH03(ts, z058, 61, 0, 0) 516 517 if (LEqual(F64, 1)) { 518 Store(9999999999999999, Local4) 519 ToBCD(Local4, Local5) 520 } else { 521 ToBCD(99999999, Local5) 522 } 523 524 CH03(ts, z058, 62, 0, 0) 525 526 if (LEqual(F64, 1)) { 527 Store(10000000000000000, Local4) 528 ToBCD(Local4, Local5) 529 } else { 530 Store(100000000, Local4) 531 ToBCD(Local4, Local5) 532 } 533 534 CH04(ts, 0, 52, z058, 63, 0, 0) // AE_AML_NUMERIC_OVERFLOW 535} 536 537// Create field out of buffer 538Method(m14f,, Serialized) 539{ 540 Name(ts, "m14f") 541 542 Name(b001, Buffer(16) {}) 543 544 CH03(ts, z058, 64, 0, 0) 545 CreateBitField(b001, 127, f000) 546 CH03(ts, z058, 65, 0, 0) 547 CreateBitField(b001, 128, f001) 548 CH04(ts, 0, 54, z058, 66, 0, 0) // AE_AML_BUFFER_LIMIT 549 550 CH03(ts, z058, 67, 0, 0) 551 CreateByteField(b001, 15, f002) 552 CH03(ts, z058, 68, 0, 0) 553 CreateByteField(b001, 16, f003) 554 CH04(ts, 0, 54, z058, 69, 0, 0) // AE_AML_BUFFER_LIMIT 555 556 CH03(ts, z058, 70, 0, 0) 557 CreateWordField(b001, 14, f004) 558 CH03(ts, z058, 71, 0, 0) 559 CreateWordField(b001, 15, f005) 560 CH04(ts, 0, 54, z058, 72, 0, 0) // AE_AML_BUFFER_LIMIT 561 562 CH03(ts, z058, 73, 0, 0) 563 CreateDWordField(b001, 12, f006) 564 CH03(ts, z058, 74, 0, 0) 565 CreateDWordField(b001, 13, f007) 566 CH04(ts, 0, 54, z058, 75, 0, 0) // AE_AML_BUFFER_LIMIT 567 568 CH03(ts, z058, 76, 0, 0) 569 CreateQWordField(b001, 8, f008) 570 CH03(ts, z058, 77, 0, 0) 571 CreateQWordField(b001, 9, f009) 572 CH04(ts, 0, 54, z058, 78, 0, 0) // AE_AML_BUFFER_LIMIT 573 574 CH03(ts, z058, 79, 0, 0) 575 CreateField(b001, 127, 1, f00a) 576 CH03(ts, z058, 80, 0, 0) 577 CreateField(b001, 128, 1, f00b) 578 CH04(ts, 0, 54, z058, 81, 0, 0) // AE_AML_BUFFER_LIMIT 579 580 CH03(ts, z058, 82, 0, 0) 581 CreateField(b001, 120, 8, f00c) 582 CH03(ts, z058, 83, 0, 0) 583 CreateField(b001, 120, 9, f00d) 584 CH04(ts, 0, 54, z058, 84, 0, 0) // AE_AML_BUFFER_LIMIT 585} 586 587// Access to uninitialized local 588Method(m150, 1, Serialized) 589{ 590 Name(ts, "m150") 591 592 if (arg0) { 593 Store(0, Local0) 594 } 595 596 CH03(ts, z058, 85, 0, 0) 597 598 Index(Local0, 0, Local5) 599 600 CH04(ts, 0, 49, z058, 86, 0, 0) // AE_AML_UNINITIALIZED_LOCAL 601} 602 603// Access to an uninitialized element of package 604Method(m151,, Serialized) 605{ 606 Name(ts, "m151") 607 608 Name(p000, Package(4) {0,1,2}) 609 610 CH03(ts, z058, 87, 0, 0) 611 612 Store(DeRefOf(Index(p000, 2)), Local5) 613 614 CH03(ts, z058, 88, 0, 0) 615 616 Store(DeRefOf(Index(p000, 3)), Local5) 617 618 /* 619 * Obsolete: 620 * CH04(ts, 0, 51, z058, 89, 0, 0) // AE_AML_UNINITIALIZED_ELEMENT 621 * 622 * Updated according to Bug 85 fix: no exception is expected 623 * since the value is not processed. 624 */ 625 /* 626 * OBSOLETE July 2013. DerefOf on an empty package element now causes error 627 * CH04(ts, 0, 62, z058, 89, 0, 0) 628 */ 629 CH04(ts, 1, 51, z058, 89, 0, 0) // AE_AML_UNINITIALIZED_ELEMENT 630 631 Add(DeRefOf(Index(p000, 3)), 1, Local5) 632 633 if (EXCV) { 634 CH04(ts, 0, 51, z058, 169, 0, 0) // AE_AML_UNINITIALIZED_ELEMENT 635 } else { 636 CH04(ts, 0, 0xff, z058, 169, 0, 0) 637 } 638 639 return (0) 640} 641 642// ToHexString() when the number of result characters in string exceeds 200 643Method(m152,, Serialized) 644{ 645 Name(ts, "m152") 646 647 // Results into 200 (67 * 3 - 1) characters 648 Name(b000, Buffer() { 649 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 650 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 651 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 652 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 653 1, 1, 1}) 654 655 // Results into 203 (68 * 3 - 1) characters 656 Name(b001, Buffer() { 657 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 658 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 659 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 660 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 661 1, 1, 1, 1}) 662 663 CH03(ts, z058, 90, 0, 0) 664 665 ToHexString(b000, Local5) 666 667 CH03(ts, z058, 91, 0, 0) 668 669 ToHexString(b001, Local5) 670 671 /* 672 * CH04(ts, 0, 61, z058, 92, 0, 0) // AE_AML_STRING_LIMIT 673 * 674 * 20.12.2005. 675 * No more limit of string size. 676 */ 677 678 CH03(ts, z058, 92, 0, 0) 679} 680 681// StartIndex in Match greater than the package size 682Method(m153,, Serialized) 683{ 684 Name(ts, "m153") 685 686 Name(PAC0, Package(1) {0}) 687 688 CH03(ts, z058, 93, 0, 0) 689 690 Store(Match(PAC0, MTR, 0, MTR, 0, 0), Local5) 691 692 CH03(ts, z058, 94, 0, 0) 693 694 Store(Match(PAC0, MTR, 0, MTR, 0, 1), Local5) 695 696 CH04(ts, 1, 55, z058, 95, 0, 0) // AE_AML_PACKAGE_LIMIT 697} 698 699// Exeptional conditions of ConcatenateResTemplate 700Method(m154,, Serialized) 701{ 702 Name(ts, "m154") 703 704 Name(RT00, ResourceTemplate () { 705 IRQNoFlags () {1}}) 706 707 // Empty buffer 708 709 Store(0, Local0) 710 Store(Buffer(Local0){}, Local2) 711 712 CH03(ts, z058, 96, 0, 0) 713 714 ConcatenateResTemplate(RT00, RT00, Local5) 715 716 CH03(ts, z058, 97, 0, 0) 717 718 ConcatenateResTemplate(RT00, Local2, Local5) 719 720 // Bug 188. 721 CH03(ts, z058, 98, 0, 0) 722 // CH04(ts, 0, 71, z058, 98, 0, 0) // AE_AML_NO_RESOURCE_END_TAG 723 724 // One-element buffer 725 726 Store(Buffer(){0}, Local2) 727 728 ConcatenateResTemplate(RT00, Local2, Local5) 729 730 /* 731 * Note: As for there is not a separate type for ResourceTemplate, 732 * ResourceTemplate is in fact a buffer but interpreted as 733 * ResourceTemplate. If the buffer has no complete END_TAG descriptor, 734 * we get AE_AML_NO_RESOURCE_END_TAG instead of AE_AML_OPERAND_TYPE. 735 */ 736 if (EXCV) { 737 CH04(ts, 0, 71, z058, 100, 0, 0) // AE_AML_NO_RESOURCE_END_TAG 738 } else { 739 CH04(ts, 0, 0xff, z058, 100, 0, 0) 740 } 741 742 // One-element 0x79 buffer 743 744 Store(Buffer(){0x79}, Local2) 745 746 ConcatenateResTemplate(RT00, Local2, Local5) 747 748 // Bug 189. 749 CH04(ts, 0, 71, z058, 101, 0, 0) // AE_AML_NO_RESOURCE_END_TAG 750 751 // Not resource template buffer 752 753 Store(Buffer(){0x2a, 0x04, 0x02}, Local2) 754 755 ConcatenateResTemplate(RT00, Local2, Local5) 756 757 if (EXCV) { 758 CH04(ts, 0, 71, z058, 102, 0, 0) // AE_AML_NO_RESOURCE_END_TAG 759 } else { 760 CH04(ts, 0, 0xff, z058, 102, 0, 0) 761 } 762 763 // Nearly resource template buffer 764 765 Store(Buffer(){0x2a, 0x10, 0x05, 0x79}, Local2) 766 767 ConcatenateResTemplate(RT00, Local2, Local5) 768 769 // Bug 190. 770 CH04(ts, 0, 71, z058, 103, 0, 0) // AE_AML_NO_RESOURCE_END_TAG 771 772 // Like resource template buffer 773 774 Store(Buffer(){0x00, 0x00, 0x00, 0x79, 0x00}, Local2) 775 776 ConcatenateResTemplate(RT00, Local2, Local5) 777 778 if (EXCV) { 779 CH04(ts, 0, 71, z058, 104, 0, 0) // AE_AML_NO_RESOURCE_END_TAG 780 } else { 781 CH04(ts, 0, 0xff, z058, 104, 0, 0) 782 } 783 784 CH03(ts, z058, 171, 0, 0) 785} 786 787/* 788 * Obsolete: 789 * Bug 63: The following operation should initiate 790 * AE_BAD_HEX_CONSTANT exception 791 * 792 * 793 * Bug 63, Bugzilla 5329. 794 * 795 * Updated specs 12.03.05: 796 * "Note: the first non-hex character terminates the conversion 797 * without error, and a '0x' prefix is not allowed." 798 */ 799Method(m155,, Serialized) 800{ 801 Name(ts, "m155") 802 803 CH03(ts, z058, 105, 0, 0) 804 805 Add("0x1111", 0, Local0) 806 807 /* 808 * Obsolete: 809 * CH04(ts, 0, 34, z058, 106, 0, 0) // AE_BAD_HEX_CONSTANT 810 * 811 * New: 812 */ 813 CH03(ts, z058, 106, 0, 0) 814 if (LNotEqual(Local0, 0)) { 815 // Bug 63, Bugzilla 5329. 816 err(ts, z058, 170, 0, 0, Local0, 0) 817 } 818} 819 820/* 821 * Bug 64: The following operations should initiate exceptions. 822 * AE_BAD_HEX_CONSTANT is the most appropreate, but it was decided 823 * to weaken demands - it is enough that some exception arises 824 * even if it is not the most appropreate one. 825 * See 111,112,113. 826 */ 827Method(m156,, Serialized) 828{ 829 Name(ts, "m156") 830 831 Store(0, Local0) 832 Name(b000, Buffer(Local0) {}) 833 834 CH03(ts, z058, 107, 0, 0) 835 836 // Add, empty String 837 Add("", 0, Local5) 838 839// CH04(ts, 0, 34, z058, 108, 0, 0) // AE_BAD_HEX_CONSTANT 840 CH03(ts, z058, 108, 0, 0) 841 842 // Add, String filled with blanks 843 Add(" ", 0, Local5) 844 845// CH04(ts, 0, 34, z058, 109, 0, 0) // AE_BAD_HEX_CONSTANT 846 CH03(ts, z058, 109, 0, 0) 847 848 // ToInteger, empty String 849 Store("", Local4) 850 ToInteger(Local4, Local5) 851 852 CH04(ts, 0, 36, z058, 110, 0, 0) // AE_BAD_DECIMAL_CONSTANT 853 854 // ToInteger, String filled with blanks 855 Store(" ", Local4) 856 ToInteger(Local4, Local5) 857 858// CH04(ts, 0, 34, z058, 111, 0, 0) // AE_BAD_HEX_CONSTANT 859 CH04(ts, 0, 36, z058, 111, 0, 0) // AE_BAD_DECIMAL_CONSTANT 860 861 // Add, zero-length Buffer 862 Add(b000, 0, Local5) 863 864// CH04(ts, 0, 34, z058, 112, 0, 0) // AE_BAD_HEX_CONSTANT 865 CH04(ts, 0, 54, z058, 112, 0, 0) // AE_AML_BUFFER_LIMIT 866 867 // ToInteger, zero-length Buffer 868 ToInteger(b000, Local5) 869 870// CH04(ts, 0, 34, z058, 113, 0, 0) // AE_BAD_HEX_CONSTANT 871 CH04(ts, 0, 54, z058, 113, 0, 0) // AE_AML_BUFFER_LIMIT 872} 873 874// ////////////////////////////////////////////////////////// 875// 876// Attempt to generate references upon an arbitrary addresses 877// 878// ////////////////////////////////////////////////////////// 879 880// Index(Integer) 881Method(m157,, Serialized) 882{ 883 Name(ts, "m157") 884 885 Name(i000, 0xaaaaaaaa) 886 887 CH03(ts, z058, 114, 0, 0) 888 889 Store(Index(i000, 0), Local5) 890 891 CH04(ts, 1, 47, z058, 115, 0, 0) // AE_AML_OPERAND_TYPE 892 893 Index(i000, 0, Local0) 894 895 CH04(ts, 0, 47, z058, 116, 0, 0) // AE_AML_OPERAND_TYPE 896 897 Store(Index(i000, 0), Local0) 898 899 CH04(ts, 0, 0xff, z058, 117, 0, 0) 900 901 Store(Index(i000, 0, Local0), Local1) 902 903 CH04(ts, 0, 0xff, z058, 118, 0, 0) 904} 905 906// Bug 83 907// DerefOf(Integer) 908Method(m158,, Serialized) 909{ 910 Name(ts, "m158") 911 912 Name(i000, 0xaaaaaaaa) 913 914 CH03(ts, z058, 119, 0, 0) 915 916 // Bug 83, Bugzilla 5387. 917 Store(DerefOf(i000), Local5) 918 919 CH04(ts, 0, 0xff, z058, 120, 0, 0) 920 921 Store(DerefOf(i000), Local0) 922 923 // Bug 83, Bugzilla 5387. 924 CH04(ts, 0, 0xff, z058, 121, 0, 0) 925} 926 927// Index(Local7-Integer) 928// DerefOf(Integer) 929Method(m087,, Serialized) 930{ 931 Name(ts, "m087") 932 933 Name(i000, 0xaaaaaaaa) 934 935 Store(i000, Local7) 936 937 CH03(ts, z058, 122, 0, 0) 938 939 // Index(Integer) 940 941 Store(Index(Local7, 0), Local5) 942 943 CH04(ts, 1, 47, z058, 123, 0, 0) // AE_AML_OPERAND_TYPE 944 945 Index(Local7, 0, Local0) 946 947 CH04(ts, 0, 47, z058, 124, 0, 0) // AE_AML_OPERAND_TYPE 948 949 Store(Index(Local7, 0), Local0) 950 951 CH04(ts, 0, 0xff, z058, 125, 0, 0) 952 953 Store(Index(Local7, 0, Local0), Local1) 954 955 CH04(ts, 0, 0xff, z058, 126, 0, 0) 956 957 // DerefOf(Integer) 958 959 Store(DerefOf(Local7), Local5) 960 961 CH04(ts, 0, 0xff, z058, 127, 0, 0) 962 963 Store(DerefOf(Local7), Local0) 964 965 CH04(ts, 0, 0xff, z058, 128, 0, 0) 966} 967 968// Index(Buffer Field) 969Method(m159,, Serialized) 970{ 971 Name(ts, "m159") 972 973 Name(b000, Buffer() {1,2,3,4,5,6,7,8,9}) 974 CreateField(b000, 0, 8, bf00) 975 976 CH03(ts, z058, 129, 0, 0) 977 978 Store(Index(bf00, 0), Local5) 979 980 CH04(ts, 1, 47, z058, 130, 0, 0) // AE_AML_OPERAND_TYPE 981 982 Index(bf00, 0, Local0) 983 984 CH04(ts, 0, 47, z058, 131, 0, 0) // AE_AML_OPERAND_TYPE 985 986 Store(Index(bf00, 0), Local0) 987 988 CH04(ts, 0, 0xff, z058, 132, 0, 0) 989 990 Store(Index(bf00, 0), Local0) 991 992 CH04(ts, 0, 0xff, z058, 133, 0, 0) 993 994 Store(Index(bf00, 0, Local0), Local1) 995 996 CH04(ts, 0, 0xff, z058, 134, 0, 0) 997} 998 999// Bug 83 1000// DerefOf(Buffer Field) 1001Method(m15a,, Serialized) 1002{ 1003 Name(ts, "m15a") 1004 1005 Name(b000, Buffer() {1,2,3,4,5,6,7,8,9}) 1006 CreateField(b000, 0, 8, bf00) 1007 1008 CH03(ts, z058, 135, 0, 0) 1009 1010 Store(DerefOf(bf00), Local5) 1011 1012 // Bug 83, Bugzilla 5387. 1013 CH04(ts, 0, 0xff, z058, 136, 0, 0) 1014 1015 Store(DerefOf(bf00), Local0) 1016 1017 // Bug 83, Bugzilla 5387. 1018 CH04(ts, 0, 0xff, z058, 137, 0, 0) 1019} 1020 1021// Index(Field Unit) 1022Method(m15d,, Serialized) 1023{ 1024 Name(ts, "m15d") 1025 1026 OperationRegion(r000, SystemMemory, 0x100, 0x100) 1027 Field(r000, ByteAcc, NoLock, Preserve) {f000,8} 1028 Field(r000, ByteAcc, NoLock, Preserve) {bnk0,8,f00a,8,f00b,8} 1029 BankField(r000, bnk0, 0, ByteAcc, NoLock, Preserve) {bkf0,4} 1030 IndexField(f00a, f00b, ByteAcc, NoLock, Preserve) {if00,1,if01,1} 1031 1032 CH03(ts, z058, 138, 0, 0) 1033 1034 // Field 1035 1036 Store(Index(f000, 0), Local5) 1037 1038 CH04(ts, 1, 47, z058, 139, 0, 0) // AE_AML_OPERAND_TYPE 1039 1040 Index(f000, 0, Local0) 1041 1042 CH04(ts, 0, 47, z058, 140, 0, 0) // AE_AML_OPERAND_TYPE 1043 1044 Store(Index(f000, 0), Local0) 1045 1046 CH04(ts, 0, 0xff, z058, 141, 0, 0) 1047 1048 Store(Index(f000, 0), Local0) 1049 1050 CH04(ts, 0, 0xff, z058, 142, 0, 0) 1051 1052 Store(Index(f000, 0, Local0), Local1) 1053 1054 CH04(ts, 0, 0xff, z058, 143, 0, 0) 1055 1056 // BankField 1057 1058 Store(Index(bkf0, 0), Local5) 1059 1060 CH04(ts, 1, 47, z058, 144, 0, 0) // AE_AML_OPERAND_TYPE 1061 1062 Index(bkf0, 0, Local0) 1063 1064 CH04(ts, 0, 47, z058, 145, 0, 0) // AE_AML_OPERAND_TYPE 1065 1066 Store(Index(bkf0, 0), Local0) 1067 1068 CH04(ts, 0, 0xff, z058, 146, 0, 0) 1069 1070 Store(Index(bkf0, 0), Local0) 1071 1072 CH04(ts, 0, 0xff, z058, 147, 0, 0) 1073 1074 Store(Index(bkf0, 0, Local0), Local1) 1075 1076 CH04(ts, 0, 0xff, z058, 148, 0, 0) 1077 1078 // IndexField 1079 1080 Store(Index(if00, 0), Local5) 1081 1082 CH04(ts, 1, 47, z058, 149, 0, 0) // AE_AML_OPERAND_TYPE 1083 1084 Index(if00, 0, Local0) 1085 1086 CH04(ts, 0, 47, z058, 150, 0, 0) // AE_AML_OPERAND_TYPE 1087 1088 Store(Index(if00, 0), Local0) 1089 1090 CH04(ts, 0, 0xff, z058, 151, 0, 0) 1091 1092 Store(Index(if00, 0), Local0) 1093 1094 CH04(ts, 0, 0xff, z058, 152, 0, 0) 1095 1096 Store(Index(if00, 0, Local0), Local1) 1097 1098 CH04(ts, 0, 0xff, z058, 153, 0, 0) 1099} 1100 1101// Bug 83 1102// DerefOf(Field Unit) 1103Method(m15e,, Serialized) 1104{ 1105 Name(ts, "m15e") 1106 1107 OperationRegion(r000, SystemMemory, 0x100, 0x100) 1108 Field(r000, ByteAcc, NoLock, Preserve) {f000,8} 1109 Field(r000, ByteAcc, NoLock, Preserve) {bnk0,8,f00a,8,f00b,8} 1110 BankField(r000, bnk0, 0, ByteAcc, NoLock, Preserve) {bkf0,4} 1111 IndexField(f00a, f00b, ByteAcc, NoLock, Preserve) {if00,1,if01,1} 1112 1113 CH03(ts, z058, 154, 0, 0) 1114 1115 // Field 1116 1117 Store(DerefOf(f000), Local5) 1118 1119 // Bug 83, Bugzilla 5387. 1120 CH04(ts, 0, 0xff, z058, 155, 0, 0) 1121 1122 Store(DerefOf(f000), Local0) 1123 1124 // Bug 83, Bugzilla 5387. 1125 CH04(ts, 0, 0xff, z058, 156, 0, 0) 1126 1127 // BankField 1128 1129 Store(DerefOf(bkf0), Local5) 1130 1131 // Bug 83, Bugzilla 5387. 1132 CH04(ts, 0, 0xff, z058, 157, 0, 0) 1133 1134 Store(DerefOf(bkf0), Local0) 1135 1136 // Bug 83, Bugzilla 5387. 1137 CH04(ts, 0, 0xff, z058, 158, 0, 0) 1138 1139 // IndexField 1140 1141 Store(DerefOf(if00), Local5) 1142 1143 // Bug 83, Bugzilla 5387. 1144 CH04(ts, 0, 0xff, z058, 159, 0, 0) 1145 1146 Store(DerefOf(if00), Local0) 1147 1148 // Bug 83, Bugzilla 5387. 1149 CH04(ts, 0, 0xff, z058, 160, 0, 0) 1150} 1151 1152// UPDATE exc.m084: Implement this test for all the types of objects 1153// (see for example ref.asl files about objects) and 1154// all the types of operators. 1155Method(m084, 1, Serialized) 1156{ 1157 Name(ts, "m084") 1158 1159 if (Arg0) { 1160 Name(i000, 0x12345678) 1161 Name(s000, "12345678") 1162 Name(b000, Buffer() {0x12}) 1163 Name(p000, Package() {0x12345678}) 1164 } 1165 1166 CH03(ts, z058, 161, 0, 0) 1167 1168/* 1169Discuss: now the ObjectType doesnt cause exception! 1170Is it correct? Understand and discuss it. 1171 1172 Store(ObjectType(i000), Local0) 1173 CH04(ts, 0, 46, z058, 162, 0, 0) // AE_AML_NO_OPERAND 1174 1175 Store(ObjectType(s000), Local0) 1176 CH04(ts, 0, 46, z058, 163, 0, 0) // AE_AML_NO_OPERAND 1177 1178 Store(ObjectType(b000), Local0) 1179 CH04(ts, 0, 46, z058, 164, 0, 0) // AE_AML_NO_OPERAND 1180 1181 Store(ObjectType(p000), Local0) 1182 CH04(ts, 0, 46, z058, 165, 0, 0) // AE_AML_NO_OPERAND 1183*/ 1184 1185 Store(Index(p000, 0), Local0) 1186 if (LNot(Arg0)) { 1187 CH04(ts, 0, 0xFF, z058, 166, 0, 0) 1188 } else { 1189 CH03(ts, z058, 167, 0, 0) 1190 } 1191 1192 CH03(ts, z058, 168, 0, 0) 1193} 1194 1195Method(mf9d) 1196{ 1197 Method(m000) 1198 { 1199 Store(0, Local7) 1200 Divide(1, Local7, Local2) 1201 if (LNotEqual(Local2, 0)) { 1202 m002() 1203 } 1204 } 1205 1206 Method(m001) 1207 { 1208 Store(0, Local7) 1209 if (Divide(1, Local7, Local2)) { 1210 m002() 1211 } 1212 } 1213 1214 Method(m002) 1215 { 1216 } 1217 1218 CH03("mf9d", z058, 171, 0, 0) 1219 1220 m000() 1221 1222 CH04("mf9d", 0, 0xff, z058, 172, 0, 0) 1223 1224 CH03("mf9d", z058, 173, 0, 0) 1225 1226 m001() 1227 1228 CH04("mf9d", 0, 0xff, z058, 174, 0, 0) 1229} 1230 1231// Access out of OpRegion and DataTableRegion 1232Method(m708,, Serialized) 1233{ 1234 Name(ts, "m708") 1235 1236 Method(m000, 1) 1237 { 1238 OperationRegion(RGN0, SystemMemory, 0, arg0) 1239 OperationRegion(RGN1, SystemIO, 0x200, arg0) 1240 1241 // UserDefRegionSpace 1242 OperationRegion(RGN2, 0x80, 0xd00, arg0) 1243 1244 DataTableRegion (DR00, "SSDT", "", "") 1245 1246 Field(RGN0, ByteAcc, NoLock, Preserve) { 1247 FU00, 0x801} 1248 Field(RGN1, ByteAcc, NoLock, Preserve) { 1249 FU01, 0x801} 1250 Field(RGN2, ByteAcc, NoLock, Preserve) { 1251 FU02, 0x801} 1252 Field(DR00, AnyAcc, NoLock, Preserve) { 1253 FU03, 0x1F1} /* 0x1F0 == length of SSDT */ 1254 1255 Store(4, Local0) 1256 Store(0, Local1) 1257 1258 While (Local0) { 1259 switch(Local1) { 1260 case(0) { Store(Refof(FU00), Local2) } 1261 case(1) { Store(Refof(FU01), Local2) } 1262 case(2) { Store(Refof(FU02), Local2) } 1263 case(3) { Store(Refof(FU03), Local2) } 1264 } 1265 1266 Store(Refof(Local2), Local3) 1267 1268 CH03(ts, z058, Add(175, Local1), 0, 0) 1269 1270 // Write: except DataTableRegion 1271 if (LLess(Local1, 3)) { 1272 Store(0x12345678, DeRefof(Local3)) 1273 CH04(ts, 0, 53, z058, Add(179, Local1), 0, 0)// AE_AML_REGION_LIMIT 1274 } 1275 1276 // Read 1277 Store(DeRefof(Local2), Local4) 1278 1279 /* July 2013 1280 * 1281 * The Store above should actually cause two errors 1282 * 1) AE_AML_REGION_LIMIT 1283 * 2) AE_AML_NO_RETURN_VALUE 1284 * 1285 * Indicate we only care about the first by placing a 1 1286 * in the second argument 1287 */ 1288 CH04(ts, 1, 53, z058, Add(183, Local1), 0, 0) // AE_AML_REGION_LIMIT 1289 1290 Decrement(Local0) 1291 Increment(Local1) 1292 } 1293 } 1294 1295 m000(0x100) 1296} 1297 1298// Try non-copmputational data OpRegion arguments 1299Method(m709,, Serialized) 1300{ 1301 Name(ts, "m709") 1302 1303 Name(offp, Package(1){0xfedcba987654321f}) 1304 Name(lenp, Package(1){0x123}) 1305 Name(i000, 0x100) 1306 1307#if 0 /* These are now caught by the compiler - Aug 2015 */ 1308 1309 Method(m000,, Serialized) { 1310 OperationRegion(OPR0, SystemMemory, offp, 1) 1311 } 1312 1313 CH03(ts, z058, 188, 0, 0) 1314 1315 m000() 1316 1317 CH04(ts, 0, 47, z058, 189, 0, 0) // AE_AML_OPERAND_TYPE 1318 1319 OperationRegion(OPR1, SystemMemory, 1, lenp) 1320 1321 CH04(ts, 0, 47, z058, 190, 0, 0) // AE_AML_OPERAND_TYPE 1322#endif 1323} 1324 1325// Try OpRegion arguments when Offset + Length > MaxInteger 1326Method(m70a,, Serialized) 1327{ 1328 Name(ts, "m70a") 1329 1330 Name(off0, 0xfffffffffffffff0) 1331 Name(len0, 0x11) 1332 1333 OperationRegion(OPR0, SystemMemory, off0, len0) 1334 1335 //17+1 > 17. 1336 Field(OPR0, AnyAcc, NoLock, Preserve) { 1337 Offset(0x11), FU00, 8} 1338 //16+2 > 17. 1339 Field(OPR0, WordAcc, NoLock, Preserve) { 1340 Offset(0x10), FU01, 8} 1341 1342 CH03(ts, z058, 191, 0, 0) 1343 1344 Store(0x12, FU00) 1345 1346 CH04(ts, 0, 53, z058, 192, 0, 0) // AE_AML_REGION_LIMIT 1347 1348 Store(0x12, FU01) 1349 1350 CH04(ts, 0, 53, z058, 193, 0, 0) // AE_AML_REGION_LIMIT 1351} 1352 1353// Attempt to write into DataTableRegion 1354Method(m70b,, Serialized) 1355{ 1356 Name(ts, "m70b") 1357 1358 DataTableRegion (DR00, "SSDT", "", "") 1359 1360 Field(DR00, AnyAcc, NoLock, Preserve) { 1361 FU00, 0x180} 1362 1363 Store(FU00, Local0) 1364 1365 CH03(ts, z058, 194, 0, 0) 1366 1367 Store(0, FU00) 1368 1369 CH04(ts, 0, 16, z058, 195, 0, 0) // AE_SUPPORT 1370} 1371 1372// Check non-String DataTableRegion *String arguments 1373Method(m7f5,, Serialized) 1374{ 1375 Name(ts, "m7f5") 1376 1377 Name(b000, Buffer(1){0x12}) 1378 Name(i000, 0x12) 1379 Name(p000, Package(1){0x12}) 1380 1381 CH03(ts, z058, 193, 0, 0) 1382 1383 DataTableRegion (DR00, b000, "", "") 1384 CH04(ts, 0, 5, z058, 196, 0, 0) // AE_NOT_FOUND 1385 1386 DataTableRegion (DR01, "SSDT", b000, "") 1387 CH04(ts, 0, 5, z058, 197, 0, 0) // AE_NOT_FOUND 1388 1389 DataTableRegion (DR02, "SSDT", "", b000) 1390 CH04(ts, 0, 5, z058, 198, 0, 0) // AE_NOT_FOUND 1391 1392 DataTableRegion (DR03, i000, "", "") 1393 CH04(ts, 0, 5, z058, 199, 0, 0) // AE_NOT_FOUND 1394 1395 DataTableRegion (DR04, "SSDT", i000, "") 1396 CH04(ts, 0, 5, z058, 200, 0, 0) // AE_NOT_FOUND 1397 1398 DataTableRegion (DR05, "SSDT", "", i000) 1399 CH04(ts, 0, 5, z058, 201, 0, 0) // AE_NOT_FOUND 1400 1401#if 0 /* These are now caught by the compiler - Aug 2015 */ 1402 1403 DataTableRegion (DR06, p000, "", i000) 1404 CH04(ts, 0, 47, z058, 202, 0, 0) // AE_AML_OPERAND_TYPE 1405 1406 DataTableRegion (DR07, "SSDT", p000, "") 1407 CH04(ts, 0, 47, z058, 203, 0, 0) // AE_AML_OPERAND_TYPE 1408 1409 DataTableRegion (DR08, "SSDT", "", p000) 1410 CH04(ts, 0, 47, z058, 204, 0, 0) // AE_AML_OPERAND_TYPE 1411#endif 1412} 1413 1414// Check SMBus OpRegion restictions 1415Method(m7f6,, Serialized) 1416{ 1417 Name(ts, "m7f6") 1418 1419 OperationRegion(SMBD, SMBus, 0x4200, 0x100) 1420 1421 Field(SMBD, BufferAcc, NoLock, Preserve) { 1422 AccessAs(BufferAcc, SMBQuick), 1423 FLD0, 8 1424 } 1425 1426 // Create improper SMBus data buffer 1427 Name(BUFF, Buffer(33){}) 1428 1429 CH03(ts, z058, 205, 0, 0) 1430 1431 // Invoke Write Quick transaction 1432 Store(BUFF, FLD0) 1433 1434 CH04(ts, 0, 54, z058, 206, 0, 0) // AE_AML_BUFFER_LIMIT 1435} 1436 1437/* Name space issues */ 1438Method(m0bc,, Serialized) 1439{ 1440 Name(ts, "m0bc") 1441 1442 Method(m000) 1443 { 1444 return (0xabcd0000) 1445 } 1446 1447 Method(m001) 1448 { 1449 Store(m000(), Local0) 1450 1451 Method(m000) 1452 { 1453 return (0xabcd0001) 1454 } 1455 1456 Store(m000(), Local1) 1457 1458 if (LNotEqual(Local0, 0xabcd0000)) { 1459 err(ts, z058, 0x0ce, 0, 0, Local0, 0xabcd0000) 1460 } 1461 1462 if (LNotEqual(Local1, 0xabcd0001)) { 1463 err(ts, z058, 0x0cf, 0, 0, Local1, 0xabcd0001) 1464 } 1465 } 1466 1467 Method(m002) 1468 { 1469 CH03(ts, z058, 0x0d0, 0, 0) 1470 m004() 1471 CH04(ts, 0, 5, z058, 0x0d1, 0, 0) // AE_NOT_FOUND 1472 1473 Method(m004) 1474 { 1475 return (0xabcd0002) 1476 } 1477 } 1478 1479 Method(m003) 1480 { 1481 /* Recursion */ 1482 CH03(ts, z058, 0x0d0, 0, 0) 1483 m003() 1484 CH04(ts, 0, 84, z058, 0x0d1, 0, 0) // AE_AML_METHOD_LIMIT 1485 1486 Method(m003) 1487 { 1488 return (0xabcd0002) 1489 } 1490 } 1491 1492 m001() 1493 m002() 1494 // m003() 1495} 1496 1497// Run-method 1498Method(EXCP) 1499{ 1500 SRMT("m140") 1501 m140() 1502 SRMT("m141") 1503 m141() 1504 SRMT("m142") 1505 m142() 1506 SRMT("m143") 1507 m143() 1508 SRMT("m144") 1509 m144() 1510 SRMT("m145") 1511 m145() 1512 SRMT("m085") 1513 m085() 1514 SRMT("m086") 1515 m086() 1516 SRMT("m148") 1517 m148() 1518 SRMT("m14b") 1519 m14b() 1520 SRMT("m14c") 1521 m14c() 1522 SRMT("m14d") 1523 m14d() 1524 SRMT("m14e") 1525 m14e() 1526 SRMT("m14f") 1527 m14f() 1528 SRMT("m150") 1529 m150(0) 1530 SRMT("m151") 1531 m151() 1532 SRMT("m152") 1533 m152() 1534 SRMT("m153") 1535 m153() 1536 SRMT("m154") 1537 m154() 1538 SRMT("m155") 1539 m155() 1540 SRMT("m156") 1541 m156() 1542 SRMT("m157") 1543 m157() 1544 SRMT("m158") 1545 m158() 1546 SRMT("m087") 1547 m087() 1548 SRMT("m159") 1549 m159() 1550 SRMT("m15a") 1551 m15a() 1552 SRMT("m15d") 1553 m15d() 1554 SRMT("m15e") 1555 m15e() 1556 1557 // The sequence of calls below is important, 1558 // since not initialized names can refer to 1559 // the objects moved improperly into the cash 1560 // between two calls to the same Method: 1561 1562 SRMT("m084-0") 1563 m084(0) 1564 SRMT("m084-1") 1565 m084(1) 1566 SRMT("m084-0-2") 1567 m084(0) 1568 1569 SRMT("m1b3") 1570 m1b3() 1571 1572 SRMT("mf9d") 1573 if (y200) { 1574 mf9d() 1575 } else { 1576 BLCK() 1577 } 1578 1579 SRMT("m708") 1580 m708() 1581 SRMT("m709") 1582 m709() 1583 SRMT("m70a") 1584 m70a() 1585 SRMT("m70b") 1586 m70b() 1587 SRMT("m7f5") 1588 if (y223) { 1589 m7f5() 1590 } else { 1591 BLCK() 1592 } 1593 SRMT("m7f6") 1594 m7f6() 1595 1596 SRMT("m0bc") 1597 m0bc() 1598} 1599