1 NoEcho(' 2 /****************************************************************************** 3 * 4 * Module Name: aslrules.y - Bison/Yacc production rules 5 * 6 *****************************************************************************/ 7 8 /* 9 * Copyright (C) 2000 - 2014, Intel Corp. 10 * All rights reserved. 11 * 12 * Redistribution and use in source and binary forms, with or without 13 * modification, are permitted provided that the following conditions 14 * are met: 15 * 1. Redistributions of source code must retain the above copyright 16 * notice, this list of conditions, and the following disclaimer, 17 * without modification. 18 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19 * substantially similar to the "NO WARRANTY" disclaimer below 20 * ("Disclaimer") and any redistribution must be conditioned upon 21 * including a substantially similar Disclaimer requirement for further 22 * binary redistribution. 23 * 3. Neither the names of the above-listed copyright holders nor the names 24 * of any contributors may be used to endorse or promote products derived 25 * from this software without specific prior written permission. 26 * 27 * Alternatively, this software may be distributed under the terms of the 28 * GNU General Public License ("GPL") version 2 as published by the Free 29 * Software Foundation. 30 * 31 * NO WARRANTY 32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42 * POSSIBILITY OF SUCH DAMAGES. 43 */ 44 45 ') 46 47 /******************************************************************************* 48 * 49 * Production rules start here 50 * 51 ******************************************************************************/ 52 53 /* 54 * ASL Names 55 * 56 * Root rule. Allow multiple #line directives before the definition block 57 * to handle output from preprocessors 58 */ 59 ASLCode 60 : DefinitionBlockTerm 61 | error {YYABORT; $$ = NULL;} 62 ; 63 64 /* 65 * Blocks, Data, and Opcodes 66 */ 67 68 /* 69 * Note concerning support for "module-level code". 70 * 71 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control 72 * methods (the so-called module-level code.) This support was explicitly 73 * removed in ACPI 2.0, but this type of code continues to be created by 74 * BIOS vendors. In order to support the disassembly and recompilation of 75 * such code (and the porting of ASL code to iASL), iASL supports this 76 * code in violation of the current ACPI specification. 77 * 78 * The grammar change to support module-level code is to revert the 79 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the 80 * original use of {TermList} instead (see below.) This allows the use 81 * of Type1 and Type2 opcodes at module level. 82 */ 83 DefinitionBlockTerm 84 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);} 85 String ',' 86 String ',' 87 ByteConst ',' 88 String ',' 89 String ',' 90 DWordConst 91 ')' {TrSetEndLineNumber ($<n>3);} 92 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);} 93 ; 94 95 /* ACPI 3.0 -- allow semicolons between terms */ 96 97 TermList 98 : {$$ = NULL;} 99 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 100 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 101 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 102 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 103 ; 104 105 Term 106 : Object {} 107 | Type1Opcode {} 108 | Type2Opcode {} 109 | Type2IntegerOpcode {} 110 | Type2StringOpcode {} 111 | Type2BufferOpcode {} 112 | Type2BufferOrStringOpcode {} 113 | error {$$ = AslDoError(); yyclearin;} 114 ; 115 116 CompilerDirective 117 : IncludeTerm {} 118 | ExternalTerm {} 119 ; 120 121 ObjectList 122 : {$$ = NULL;} 123 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);} 124 | error {$$ = AslDoError(); yyclearin;} 125 ; 126 127 Object 128 : CompilerDirective {} 129 | NamedObject {} 130 | NameSpaceModifier {} 131 ; 132 133 DataObject 134 : BufferData {} 135 | PackageData {} 136 | IntegerData {} 137 | StringData {} 138 ; 139 140 BufferData 141 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 142 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 143 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 144 | BufferTerm {} 145 ; 146 147 PackageData 148 : PackageTerm {} 149 ; 150 151 IntegerData 152 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 153 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 154 | Integer {} 155 | ConstTerm {} 156 ; 157 158 StringData 159 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 160 | String {} 161 ; 162 163 NamedObject 164 : BankFieldTerm {} 165 | CreateBitFieldTerm {} 166 | CreateByteFieldTerm {} 167 | CreateDWordFieldTerm {} 168 | CreateFieldTerm {} 169 | CreateQWordFieldTerm {} 170 | CreateWordFieldTerm {} 171 | DataRegionTerm {} 172 | DeviceTerm {} 173 | EventTerm {} 174 | FieldTerm {} 175 | FunctionTerm {} 176 | IndexFieldTerm {} 177 | MethodTerm {} 178 | MutexTerm {} 179 | OpRegionTerm {} 180 | PowerResTerm {} 181 | ProcessorTerm {} 182 | ThermalZoneTerm {} 183 ; 184 185 NameSpaceModifier 186 : AliasTerm {} 187 | NameTerm {} 188 | ScopeTerm {} 189 ; 190 191 UserTerm 192 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} 193 ArgList ')' {$$ = TrLinkChildNode ($1,$4);} 194 ; 195 196 ArgList 197 : {$$ = NULL;} 198 | TermArg 199 | ArgList ',' /* Allows a trailing comma at list end */ 200 | ArgList ',' 201 TermArg {$$ = TrLinkPeerNode ($1,$3);} 202 ; 203 204 /* 205 Removed from TermArg due to reduce/reduce conflicts 206 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 207 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 208 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 209 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 210 211 */ 212 213 TermArg 214 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 215 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 216 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 217 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 218 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 219 ; 220 221 Target 222 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */ 223 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */ 224 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 225 ; 226 227 RequiredTarget 228 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 229 ; 230 231 SimpleTarget 232 : NameString {} 233 | LocalTerm {} 234 | ArgTerm {} 235 ; 236 237 /* Rules for specifying the type of one method argument or return value */ 238 239 ParameterTypePackage 240 : {$$ = NULL;} 241 | ObjectTypeKeyword {$$ = $1;} 242 | ParameterTypePackage ',' 243 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} 244 ; 245 246 ParameterTypePackageList 247 : {$$ = NULL;} 248 | ObjectTypeKeyword {$$ = $1;} 249 | '{' ParameterTypePackage '}' {$$ = $2;} 250 ; 251 252 OptionalParameterTypePackage 253 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 254 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 255 ; 256 257 /* Rules for specifying the types for method arguments */ 258 259 ParameterTypesPackage 260 : ParameterTypePackageList {$$ = $1;} 261 | ParameterTypesPackage ',' 262 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} 263 ; 264 265 ParameterTypesPackageList 266 : {$$ = NULL;} 267 | ObjectTypeKeyword {$$ = $1;} 268 | '{' ParameterTypesPackage '}' {$$ = $2;} 269 ; 270 271 OptionalParameterTypesPackage 272 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 273 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 274 ; 275 276 277 /* Opcode types */ 278 279 Type1Opcode 280 : BreakTerm {} 281 | BreakPointTerm {} 282 | ContinueTerm {} 283 | FatalTerm {} 284 | IfElseTerm {} 285 | LoadTerm {} 286 | NoOpTerm {} 287 | NotifyTerm {} 288 | ReleaseTerm {} 289 | ResetTerm {} 290 | ReturnTerm {} 291 | SignalTerm {} 292 | SleepTerm {} 293 | StallTerm {} 294 | SwitchTerm {} 295 | UnloadTerm {} 296 | WhileTerm {} 297 ; 298 299 Type2Opcode 300 : AcquireTerm {} 301 | CondRefOfTerm {} 302 | CopyObjectTerm {} 303 | DerefOfTerm {} 304 | ObjectTypeTerm {} 305 | RefOfTerm {} 306 | SizeOfTerm {} 307 | StoreTerm {} 308 | TimerTerm {} 309 | WaitTerm {} 310 | UserTerm {} 311 ; 312 313 /* 314 * Type 3/4/5 opcodes 315 */ 316 317 Type2IntegerOpcode /* "Type3" opcodes */ 318 : AddTerm {} 319 | AndTerm {} 320 | DecTerm {} 321 | DivideTerm {} 322 | FindSetLeftBitTerm {} 323 | FindSetRightBitTerm {} 324 | FromBCDTerm {} 325 | IncTerm {} 326 | IndexTerm {} 327 | LAndTerm {} 328 | LEqualTerm {} 329 | LGreaterTerm {} 330 | LGreaterEqualTerm {} 331 | LLessTerm {} 332 | LLessEqualTerm {} 333 | LNotTerm {} 334 | LNotEqualTerm {} 335 | LoadTableTerm {} 336 | LOrTerm {} 337 | MatchTerm {} 338 | ModTerm {} 339 | MultiplyTerm {} 340 | NAndTerm {} 341 | NOrTerm {} 342 | NotTerm {} 343 | OrTerm {} 344 | ShiftLeftTerm {} 345 | ShiftRightTerm {} 346 | SubtractTerm {} 347 | ToBCDTerm {} 348 | ToIntegerTerm {} 349 | XOrTerm {} 350 ; 351 352 Type2StringOpcode /* "Type4" Opcodes */ 353 : ToDecimalStringTerm {} 354 | ToHexStringTerm {} 355 | ToStringTerm {} 356 ; 357 358 Type2BufferOpcode /* "Type5" Opcodes */ 359 : ToBufferTerm {} 360 | ConcatResTerm {} 361 ; 362 363 Type2BufferOrStringOpcode 364 : ConcatTerm {} 365 | MidTerm {} 366 ; 367 368 /* 369 * A type 3 opcode evaluates to an Integer and cannot have a destination operand 370 */ 371 372 Type3Opcode 373 : EISAIDTerm {} 374 ; 375 376 /* Obsolete 377 Type4Opcode 378 : ConcatTerm {} 379 | ToDecimalStringTerm {} 380 | ToHexStringTerm {} 381 | MidTerm {} 382 | ToStringTerm {} 383 ; 384 */ 385 386 387 Type5Opcode 388 : ResourceTemplateTerm {} 389 | UnicodeTerm {} 390 | ToUUIDTerm {} 391 ; 392 393 Type6Opcode 394 : RefOfTerm {} 395 | DerefOfTerm {} 396 | IndexTerm {} 397 | UserTerm {} 398 ; 399 400 IncludeTerm 401 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);} 402 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);} 403 TermList 404 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);} 405 ; 406 407 IncludeEndTerm 408 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);} 409 ; 410 411 ExternalTerm 412 : PARSEOP_EXTERNAL '(' 413 NameString 414 OptionalObjectTypeKeyword 415 OptionalParameterTypePackage 416 OptionalParameterTypesPackage 417 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);} 418 | PARSEOP_EXTERNAL '(' 419 error ')' {$$ = AslDoError(); yyclearin;} 420 ; 421 422 423 /******* Named Objects *******************************************************/ 424 425 426 BankFieldTerm 427 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);} 428 NameString 429 NameStringItem 430 TermArgItem 431 ',' AccessTypeKeyword 432 ',' LockRuleKeyword 433 ',' UpdateRuleKeyword 434 ')' '{' 435 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);} 436 | PARSEOP_BANKFIELD '(' 437 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 438 ; 439 440 FieldUnitList 441 : {$$ = NULL;} 442 | FieldUnit 443 | FieldUnitList ',' /* Allows a trailing comma at list end */ 444 | FieldUnitList ',' 445 FieldUnit {$$ = TrLinkPeerNode ($1,$3);} 446 ; 447 448 FieldUnit 449 : FieldUnitEntry {} 450 | OffsetTerm {} 451 | AccessAsTerm {} 452 | ConnectionTerm {} 453 ; 454 455 FieldUnitEntry 456 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} 457 | NameSeg ',' 458 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} 459 ; 460 461 OffsetTerm 462 : PARSEOP_OFFSET '(' 463 AmlPackageLengthTerm 464 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} 465 | PARSEOP_OFFSET '(' 466 error ')' {$$ = AslDoError(); yyclearin;} 467 ; 468 469 AccessAsTerm 470 : PARSEOP_ACCESSAS '(' 471 AccessTypeKeyword 472 OptionalAccessAttribTerm 473 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);} 474 | PARSEOP_ACCESSAS '(' 475 error ')' {$$ = AslDoError(); yyclearin;} 476 ; 477 478 ConnectionTerm 479 : PARSEOP_CONNECTION '(' 480 NameString 481 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);} 482 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);} 483 ResourceMacroTerm 484 ')' {$$ = TrLinkChildren ($<n>3, 1, 485 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3, 486 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 487 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 488 $4));} 489 | PARSEOP_CONNECTION '(' 490 error ')' {$$ = AslDoError(); yyclearin;} 491 ; 492 493 CreateBitFieldTerm 494 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);} 495 TermArg 496 TermArgItem 497 NameStringItem 498 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 499 | PARSEOP_CREATEBITFIELD '(' 500 error ')' {$$ = AslDoError(); yyclearin;} 501 ; 502 503 CreateByteFieldTerm 504 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);} 505 TermArg 506 TermArgItem 507 NameStringItem 508 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 509 | PARSEOP_CREATEBYTEFIELD '(' 510 error ')' {$$ = AslDoError(); yyclearin;} 511 ; 512 513 CreateDWordFieldTerm 514 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);} 515 TermArg 516 TermArgItem 517 NameStringItem 518 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 519 | PARSEOP_CREATEDWORDFIELD '(' 520 error ')' {$$ = AslDoError(); yyclearin;} 521 ; 522 523 CreateFieldTerm 524 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);} 525 TermArg 526 TermArgItem 527 TermArgItem 528 NameStringItem 529 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));} 530 | PARSEOP_CREATEFIELD '(' 531 error ')' {$$ = AslDoError(); yyclearin;} 532 ; 533 534 CreateQWordFieldTerm 535 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);} 536 TermArg 537 TermArgItem 538 NameStringItem 539 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 540 | PARSEOP_CREATEQWORDFIELD '(' 541 error ')' {$$ = AslDoError(); yyclearin;} 542 ; 543 544 CreateWordFieldTerm 545 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);} 546 TermArg 547 TermArgItem 548 NameStringItem 549 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 550 | PARSEOP_CREATEWORDFIELD '(' 551 error ')' {$$ = AslDoError(); yyclearin;} 552 ; 553 554 DataRegionTerm 555 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);} 556 NameString 557 TermArgItem 558 TermArgItem 559 TermArgItem 560 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);} 561 | PARSEOP_DATATABLEREGION '(' 562 error ')' {$$ = AslDoError(); yyclearin;} 563 ; 564 565 DeviceTerm 566 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);} 567 NameString 568 ')' '{' 569 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 570 | PARSEOP_DEVICE '(' 571 error ')' {$$ = AslDoError(); yyclearin;} 572 ; 573 574 EventTerm 575 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);} 576 NameString 577 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));} 578 | PARSEOP_EVENT '(' 579 error ')' {$$ = AslDoError(); yyclearin;} 580 ; 581 582 FieldTerm 583 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);} 584 NameString 585 ',' AccessTypeKeyword 586 ',' LockRuleKeyword 587 ',' UpdateRuleKeyword 588 ')' '{' 589 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);} 590 | PARSEOP_FIELD '(' 591 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 592 ; 593 594 FunctionTerm 595 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);} 596 NameString 597 OptionalParameterTypePackage 598 OptionalParameterTypesPackage 599 ')' '{' 600 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION), 601 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0), 602 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL), 603 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);} 604 | PARSEOP_FUNCTION '(' 605 error ')' {$$ = AslDoError(); yyclearin;} 606 ; 607 608 IndexFieldTerm 609 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);} 610 NameString 611 NameStringItem 612 ',' AccessTypeKeyword 613 ',' LockRuleKeyword 614 ',' UpdateRuleKeyword 615 ')' '{' 616 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);} 617 | PARSEOP_INDEXFIELD '(' 618 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 619 ; 620 621 MethodTerm 622 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);} 623 NameString 624 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);} 625 OptionalSerializeRuleKeyword 626 OptionalByteConstExpr 627 OptionalParameterTypePackage 628 OptionalParameterTypesPackage 629 ')' '{' 630 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);} 631 | PARSEOP_METHOD '(' 632 error ')' {$$ = AslDoError(); yyclearin;} 633 ; 634 635 MutexTerm 636 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);} 637 NameString 638 ',' ByteConstExpr 639 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} 640 | PARSEOP_MUTEX '(' 641 error ')' {$$ = AslDoError(); yyclearin;} 642 ; 643 644 OpRegionTerm 645 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);} 646 NameString 647 ',' OpRegionSpaceIdTerm 648 TermArgItem 649 TermArgItem 650 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);} 651 | PARSEOP_OPERATIONREGION '(' 652 error ')' {$$ = AslDoError(); yyclearin;} 653 ; 654 655 OpRegionSpaceIdTerm 656 : RegionSpaceKeyword {} 657 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 658 ; 659 660 PowerResTerm 661 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);} 662 NameString 663 ',' ByteConstExpr 664 ',' WordConstExpr 665 ')' '{' 666 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);} 667 | PARSEOP_POWERRESOURCE '(' 668 error ')' {$$ = AslDoError(); yyclearin;} 669 ; 670 671 ProcessorTerm 672 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);} 673 NameString 674 ',' ByteConstExpr 675 OptionalDWordConstExpr 676 OptionalByteConstExpr 677 ')' '{' 678 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);} 679 | PARSEOP_PROCESSOR '(' 680 error ')' {$$ = AslDoError(); yyclearin;} 681 ; 682 683 ThermalZoneTerm 684 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);} 685 NameString 686 ')' '{' 687 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 688 | PARSEOP_THERMALZONE '(' 689 error ')' {$$ = AslDoError(); yyclearin;} 690 ; 691 692 693 /******* Namespace modifiers *************************************************/ 694 695 696 AliasTerm 697 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);} 698 NameString 699 NameStringItem 700 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));} 701 | PARSEOP_ALIAS '(' 702 error ')' {$$ = AslDoError(); yyclearin;} 703 ; 704 705 NameTerm 706 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);} 707 NameString 708 ',' DataObject 709 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} 710 | PARSEOP_NAME '(' 711 error ')' {$$ = AslDoError(); yyclearin;} 712 ; 713 714 ScopeTerm 715 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);} 716 NameString 717 ')' '{' 718 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 719 | PARSEOP_SCOPE '(' 720 error ')' {$$ = AslDoError(); yyclearin;} 721 ; 722 723 724 /******* Type 1 opcodes *******************************************************/ 725 726 727 BreakTerm 728 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} 729 ; 730 731 BreakPointTerm 732 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} 733 ; 734 735 ContinueTerm 736 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} 737 ; 738 739 FatalTerm 740 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);} 741 ByteConstExpr 742 ',' DWordConstExpr 743 TermArgItem 744 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 745 | PARSEOP_FATAL '(' 746 error ')' {$$ = AslDoError(); yyclearin;} 747 ; 748 749 IfElseTerm 750 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} 751 ; 752 753 IfTerm 754 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);} 755 TermArg 756 ')' '{' 757 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 758 759 | PARSEOP_IF '(' 760 error ')' {$$ = AslDoError(); yyclearin;} 761 ; 762 763 ElseTerm 764 : {$$ = NULL;} 765 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);} 766 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 767 768 | PARSEOP_ELSE '{' 769 error '}' {$$ = AslDoError(); yyclearin;} 770 771 | PARSEOP_ELSE 772 error {$$ = AslDoError(); yyclearin;} 773 774 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);} 775 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);} 776 ')' '{' 777 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);} 778 ElseTerm {TrLinkPeerNode ($<n>5,$11);} 779 {$$ = TrLinkChildren ($<n>3,1,$<n>5);} 780 781 | PARSEOP_ELSEIF '(' 782 error ')' {$$ = AslDoError(); yyclearin;} 783 784 | PARSEOP_ELSEIF 785 error {$$ = AslDoError(); yyclearin;} 786 ; 787 788 LoadTerm 789 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);} 790 NameString 791 RequiredTarget 792 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 793 | PARSEOP_LOAD '(' 794 error ')' {$$ = AslDoError(); yyclearin;} 795 ; 796 797 NoOpTerm 798 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} 799 ; 800 801 NotifyTerm 802 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);} 803 SuperName 804 TermArgItem 805 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 806 | PARSEOP_NOTIFY '(' 807 error ')' {$$ = AslDoError(); yyclearin;} 808 ; 809 810 ReleaseTerm 811 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);} 812 SuperName 813 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 814 | PARSEOP_RELEASE '(' 815 error ')' {$$ = AslDoError(); yyclearin;} 816 ; 817 818 ResetTerm 819 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);} 820 SuperName 821 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 822 | PARSEOP_RESET '(' 823 error ')' {$$ = AslDoError(); yyclearin;} 824 ; 825 826 ReturnTerm 827 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);} 828 OptionalReturnArg 829 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 830 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));} 831 | PARSEOP_RETURN '(' 832 error ')' {$$ = AslDoError(); yyclearin;} 833 ; 834 835 SignalTerm 836 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);} 837 SuperName 838 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 839 | PARSEOP_SIGNAL '(' 840 error ')' {$$ = AslDoError(); yyclearin;} 841 ; 842 843 SleepTerm 844 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);} 845 TermArg 846 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 847 | PARSEOP_SLEEP '(' 848 error ')' {$$ = AslDoError(); yyclearin;} 849 ; 850 851 StallTerm 852 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);} 853 TermArg 854 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 855 | PARSEOP_STALL '(' 856 error ')' {$$ = AslDoError(); yyclearin;} 857 ; 858 859 SwitchTerm 860 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);} 861 TermArg 862 ')' '{' 863 CaseDefaultTermList '}' 864 {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 865 | PARSEOP_SWITCH '(' 866 error ')' {$$ = AslDoError(); yyclearin;} 867 ; 868 869 /* 870 * Case-Default list; allow only one Default term and unlimited Case terms 871 */ 872 873 CaseDefaultTermList 874 : {$$ = NULL;} 875 | CaseTerm {} 876 | DefaultTerm {} 877 | CaseDefaultTermList 878 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 879 | CaseDefaultTermList 880 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);} 881 882 /* Original - attempts to force zero or one default term within the switch */ 883 884 /* 885 CaseDefaultTermList 886 : {$$ = NULL;} 887 | CaseTermList 888 DefaultTerm 889 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} 890 | CaseTermList 891 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 892 ; 893 894 CaseTermList 895 : {$$ = NULL;} 896 | CaseTerm {} 897 | CaseTermList 898 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 899 ; 900 */ 901 902 CaseTerm 903 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);} 904 DataObject 905 ')' '{' 906 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 907 | PARSEOP_CASE '(' 908 error ')' {$$ = AslDoError(); yyclearin;} 909 ; 910 911 DefaultTerm 912 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);} 913 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 914 | PARSEOP_DEFAULT '{' 915 error '}' {$$ = AslDoError(); yyclearin;} 916 ; 917 918 UnloadTerm 919 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);} 920 SuperName 921 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 922 | PARSEOP_UNLOAD '(' 923 error ')' {$$ = AslDoError(); yyclearin;} 924 ; 925 926 WhileTerm 927 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);} 928 TermArg 929 ')' '{' TermList '}' 930 {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 931 | PARSEOP_WHILE '(' 932 error ')' {$$ = AslDoError(); yyclearin;} 933 ; 934 935 936 /******* Type 2 opcodes *******************************************************/ 937 938 AcquireTerm 939 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);} 940 SuperName 941 ',' WordConstExpr 942 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);} 943 | PARSEOP_ACQUIRE '(' 944 error ')' {$$ = AslDoError(); yyclearin;} 945 ; 946 947 AddTerm 948 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);} 949 TermArg 950 TermArgItem 951 Target 952 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 953 | PARSEOP_ADD '(' 954 error ')' {$$ = AslDoError(); yyclearin;} 955 ; 956 957 AndTerm 958 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);} 959 TermArg 960 TermArgItem 961 Target 962 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 963 | PARSEOP_AND '(' 964 error ')' {$$ = AslDoError(); yyclearin;} 965 ; 966 967 ConcatTerm 968 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);} 969 TermArg 970 TermArgItem 971 Target 972 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 973 | PARSEOP_CONCATENATE '(' 974 error ')' {$$ = AslDoError(); yyclearin;} 975 ; 976 977 ConcatResTerm 978 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);} 979 TermArg 980 TermArgItem 981 Target 982 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 983 | PARSEOP_CONCATENATERESTEMPLATE '(' 984 error ')' {$$ = AslDoError(); yyclearin;} 985 ; 986 987 CondRefOfTerm 988 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);} 989 SuperName 990 Target 991 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 992 | PARSEOP_CONDREFOF '(' 993 error ')' {$$ = AslDoError(); yyclearin;} 994 ; 995 996 CopyObjectTerm 997 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);} 998 TermArg 999 ',' SimpleTarget 1000 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} 1001 | PARSEOP_COPYOBJECT '(' 1002 error ')' {$$ = AslDoError(); yyclearin;} 1003 ; 1004 1005 DecTerm 1006 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);} 1007 SuperName 1008 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1009 | PARSEOP_DECREMENT '(' 1010 error ')' {$$ = AslDoError(); yyclearin;} 1011 ; 1012 1013 DerefOfTerm 1014 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);} 1015 TermArg 1016 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1017 | PARSEOP_DEREFOF '(' 1018 error ')' {$$ = AslDoError(); yyclearin;} 1019 ; 1020 1021 DivideTerm 1022 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);} 1023 TermArg 1024 TermArgItem 1025 Target 1026 Target 1027 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);} 1028 | PARSEOP_DIVIDE '(' 1029 error ')' {$$ = AslDoError(); yyclearin;} 1030 ; 1031 1032 FindSetLeftBitTerm 1033 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);} 1034 TermArg 1035 Target 1036 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1037 | PARSEOP_FINDSETLEFTBIT '(' 1038 error ')' {$$ = AslDoError(); yyclearin;} 1039 ; 1040 1041 FindSetRightBitTerm 1042 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);} 1043 TermArg 1044 Target 1045 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1046 | PARSEOP_FINDSETRIGHTBIT '(' 1047 error ')' {$$ = AslDoError(); yyclearin;} 1048 ; 1049 1050 FromBCDTerm 1051 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);} 1052 TermArg 1053 Target 1054 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1055 | PARSEOP_FROMBCD '(' 1056 error ')' {$$ = AslDoError(); yyclearin;} 1057 ; 1058 1059 IncTerm 1060 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);} 1061 SuperName 1062 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1063 | PARSEOP_INCREMENT '(' 1064 error ')' {$$ = AslDoError(); yyclearin;} 1065 ; 1066 1067 IndexTerm 1068 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);} 1069 TermArg 1070 TermArgItem 1071 Target 1072 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1073 | PARSEOP_INDEX '(' 1074 error ')' {$$ = AslDoError(); yyclearin;} 1075 ; 1076 1077 LAndTerm 1078 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);} 1079 TermArg 1080 TermArgItem 1081 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1082 | PARSEOP_LAND '(' 1083 error ')' {$$ = AslDoError(); yyclearin;} 1084 ; 1085 1086 LEqualTerm 1087 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 1088 TermArg 1089 TermArgItem 1090 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1091 | PARSEOP_LEQUAL '(' 1092 error ')' {$$ = AslDoError(); yyclearin;} 1093 ; 1094 1095 LGreaterTerm 1096 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 1097 TermArg 1098 TermArgItem 1099 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1100 | PARSEOP_LGREATER '(' 1101 error ')' {$$ = AslDoError(); yyclearin;} 1102 ; 1103 1104 LGreaterEqualTerm 1105 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 1106 TermArg 1107 TermArgItem 1108 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1109 | PARSEOP_LGREATEREQUAL '(' 1110 error ')' {$$ = AslDoError(); yyclearin;} 1111 ; 1112 1113 LLessTerm 1114 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 1115 TermArg 1116 TermArgItem 1117 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1118 | PARSEOP_LLESS '(' 1119 error ')' {$$ = AslDoError(); yyclearin;} 1120 ; 1121 1122 LLessEqualTerm 1123 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 1124 TermArg 1125 TermArgItem 1126 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1127 | PARSEOP_LLESSEQUAL '(' 1128 error ')' {$$ = AslDoError(); yyclearin;} 1129 ; 1130 1131 LNotTerm 1132 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);} 1133 TermArg 1134 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1135 | PARSEOP_LNOT '(' 1136 error ')' {$$ = AslDoError(); yyclearin;} 1137 ; 1138 1139 LNotEqualTerm 1140 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 1141 TermArg 1142 TermArgItem 1143 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1144 | PARSEOP_LNOTEQUAL '(' 1145 error ')' {$$ = AslDoError(); yyclearin;} 1146 ; 1147 1148 LoadTableTerm 1149 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);} 1150 TermArg 1151 TermArgItem 1152 TermArgItem 1153 OptionalListString 1154 OptionalListString 1155 OptionalReference 1156 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);} 1157 | PARSEOP_LOADTABLE '(' 1158 error ')' {$$ = AslDoError(); yyclearin;} 1159 ; 1160 1161 LOrTerm 1162 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);} 1163 TermArg 1164 TermArgItem 1165 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1166 | PARSEOP_LOR '(' 1167 error ')' {$$ = AslDoError(); yyclearin;} 1168 ; 1169 1170 MatchTerm 1171 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);} 1172 TermArg 1173 ',' MatchOpKeyword 1174 TermArgItem 1175 ',' MatchOpKeyword 1176 TermArgItem 1177 TermArgItem 1178 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);} 1179 | PARSEOP_MATCH '(' 1180 error ')' {$$ = AslDoError(); yyclearin;} 1181 ; 1182 1183 MidTerm 1184 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);} 1185 TermArg 1186 TermArgItem 1187 TermArgItem 1188 Target 1189 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);} 1190 | PARSEOP_MID '(' 1191 error ')' {$$ = AslDoError(); yyclearin;} 1192 ; 1193 1194 ModTerm 1195 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);} 1196 TermArg 1197 TermArgItem 1198 Target 1199 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1200 | PARSEOP_MOD '(' 1201 error ')' {$$ = AslDoError(); yyclearin;} 1202 ; 1203 1204 MultiplyTerm 1205 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} 1206 TermArg 1207 TermArgItem 1208 Target 1209 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1210 | PARSEOP_MULTIPLY '(' 1211 error ')' {$$ = AslDoError(); yyclearin;} 1212 ; 1213 1214 NAndTerm 1215 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);} 1216 TermArg 1217 TermArgItem 1218 Target 1219 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1220 | PARSEOP_NAND '(' 1221 error ')' {$$ = AslDoError(); yyclearin;} 1222 ; 1223 1224 NOrTerm 1225 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);} 1226 TermArg 1227 TermArgItem 1228 Target 1229 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1230 | PARSEOP_NOR '(' 1231 error ')' {$$ = AslDoError(); yyclearin;} 1232 ; 1233 1234 NotTerm 1235 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);} 1236 TermArg 1237 Target 1238 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1239 | PARSEOP_NOT '(' 1240 error ')' {$$ = AslDoError(); yyclearin;} 1241 ; 1242 1243 ObjectTypeTerm 1244 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} 1245 ObjectTypeName 1246 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1247 | PARSEOP_OBJECTTYPE '(' 1248 error ')' {$$ = AslDoError(); yyclearin;} 1249 ; 1250 1251 OrTerm 1252 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);} 1253 TermArg 1254 TermArgItem 1255 Target 1256 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1257 | PARSEOP_OR '(' 1258 error ')' {$$ = AslDoError(); yyclearin;} 1259 ; 1260 1261 /* 1262 * In RefOf, the node isn't really a target, but we can't keep track of it after 1263 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.) 1264 */ 1265 RefOfTerm 1266 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);} 1267 SuperName 1268 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));} 1269 | PARSEOP_REFOF '(' 1270 error ')' {$$ = AslDoError(); yyclearin;} 1271 ; 1272 1273 ShiftLeftTerm 1274 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} 1275 TermArg 1276 TermArgItem 1277 Target 1278 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1279 | PARSEOP_SHIFTLEFT '(' 1280 error ')' {$$ = AslDoError(); yyclearin;} 1281 ; 1282 1283 ShiftRightTerm 1284 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} 1285 TermArg 1286 TermArgItem 1287 Target 1288 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1289 | PARSEOP_SHIFTRIGHT '(' 1290 error ')' {$$ = AslDoError(); yyclearin;} 1291 ; 1292 1293 SizeOfTerm 1294 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);} 1295 SuperName 1296 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1297 | PARSEOP_SIZEOF '(' 1298 error ')' {$$ = AslDoError(); yyclearin;} 1299 ; 1300 1301 StoreTerm 1302 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);} 1303 TermArg 1304 ',' SuperName 1305 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} 1306 | PARSEOP_STORE '(' 1307 error ')' {$$ = AslDoError(); yyclearin;} 1308 ; 1309 1310 SubtractTerm 1311 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} 1312 TermArg 1313 TermArgItem 1314 Target 1315 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1316 | PARSEOP_SUBTRACT '(' 1317 error ')' {$$ = AslDoError(); yyclearin;} 1318 ; 1319 1320 TimerTerm 1321 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);} 1322 ')' {$$ = TrLinkChildren ($<n>3,0);} 1323 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);} 1324 | PARSEOP_TIMER '(' 1325 error ')' {$$ = AslDoError(); yyclearin;} 1326 ; 1327 1328 ToBCDTerm 1329 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);} 1330 TermArg 1331 Target 1332 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1333 | PARSEOP_TOBCD '(' 1334 error ')' {$$ = AslDoError(); yyclearin;} 1335 ; 1336 1337 ToBufferTerm 1338 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);} 1339 TermArg 1340 Target 1341 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1342 | PARSEOP_TOBUFFER '(' 1343 error ')' {$$ = AslDoError(); yyclearin;} 1344 ; 1345 1346 ToDecimalStringTerm 1347 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);} 1348 TermArg 1349 Target 1350 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1351 | PARSEOP_TODECIMALSTRING '(' 1352 error ')' {$$ = AslDoError(); yyclearin;} 1353 ; 1354 1355 ToHexStringTerm 1356 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);} 1357 TermArg 1358 Target 1359 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1360 | PARSEOP_TOHEXSTRING '(' 1361 error ')' {$$ = AslDoError(); yyclearin;} 1362 ; 1363 1364 ToIntegerTerm 1365 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);} 1366 TermArg 1367 Target 1368 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1369 | PARSEOP_TOINTEGER '(' 1370 error ')' {$$ = AslDoError(); yyclearin;} 1371 ; 1372 1373 ToStringTerm 1374 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);} 1375 TermArg 1376 OptionalCount 1377 Target 1378 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1379 | PARSEOP_TOSTRING '(' 1380 error ')' {$$ = AslDoError(); yyclearin;} 1381 ; 1382 1383 ToUUIDTerm 1384 : PARSEOP_TOUUID '(' 1385 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} 1386 | PARSEOP_TOUUID '(' 1387 error ')' {$$ = AslDoError(); yyclearin;} 1388 ; 1389 1390 WaitTerm 1391 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);} 1392 SuperName 1393 TermArgItem 1394 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1395 | PARSEOP_WAIT '(' 1396 error ')' {$$ = AslDoError(); yyclearin;} 1397 ; 1398 1399 XOrTerm 1400 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);} 1401 TermArg 1402 TermArgItem 1403 Target 1404 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1405 | PARSEOP_XOR '(' 1406 error ')' {$$ = AslDoError(); yyclearin;} 1407 ; 1408 1409 1410 /******* Keywords *************************************************************/ 1411 1412 1413 AccessAttribKeyword 1414 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);} 1415 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);} 1416 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);} 1417 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );} 1418 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);} 1419 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);} 1420 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);} 1421 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);} 1422 ByteConst 1423 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1424 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);} 1425 ByteConst 1426 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1427 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);} 1428 ByteConst 1429 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1430 ; 1431 1432 AccessTypeKeyword 1433 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);} 1434 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);} 1435 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);} 1436 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);} 1437 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);} 1438 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);} 1439 ; 1440 1441 AddressingModeKeyword 1442 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);} 1443 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);} 1444 ; 1445 1446 AddressKeyword 1447 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);} 1448 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);} 1449 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);} 1450 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);} 1451 ; 1452 1453 AddressSpaceKeyword 1454 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);} 1455 | RegionSpaceKeyword {} 1456 ; 1457 1458 BitsPerByteKeyword 1459 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);} 1460 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);} 1461 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);} 1462 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);} 1463 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);} 1464 ; 1465 1466 ClockPhaseKeyword 1467 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);} 1468 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);} 1469 ; 1470 1471 ClockPolarityKeyword 1472 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);} 1473 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);} 1474 ; 1475 1476 DecodeKeyword 1477 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} 1478 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} 1479 ; 1480 1481 DevicePolarityKeyword 1482 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);} 1483 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);} 1484 ; 1485 1486 DMATypeKeyword 1487 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);} 1488 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);} 1489 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);} 1490 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);} 1491 ; 1492 1493 EndianKeyword 1494 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);} 1495 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);} 1496 ; 1497 1498 FlowControlKeyword 1499 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);} 1500 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);} 1501 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);} 1502 ; 1503 1504 InterruptLevel 1505 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);} 1506 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);} 1507 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);} 1508 ; 1509 1510 InterruptTypeKeyword 1511 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} 1512 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} 1513 ; 1514 1515 IODecodeKeyword 1516 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} 1517 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} 1518 ; 1519 1520 IoRestrictionKeyword 1521 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);} 1522 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);} 1523 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);} 1524 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);} 1525 ; 1526 1527 LockRuleKeyword 1528 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} 1529 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} 1530 ; 1531 1532 MatchOpKeyword 1533 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);} 1534 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);} 1535 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);} 1536 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);} 1537 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);} 1538 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);} 1539 ; 1540 1541 MaxKeyword 1542 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} 1543 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} 1544 ; 1545 1546 MemTypeKeyword 1547 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);} 1548 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);} 1549 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);} 1550 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);} 1551 ; 1552 1553 MinKeyword 1554 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} 1555 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} 1556 ; 1557 1558 ObjectTypeKeyword 1559 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 1560 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);} 1561 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);} 1562 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);} 1563 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);} 1564 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);} 1565 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);} 1566 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);} 1567 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);} 1568 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);} 1569 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);} 1570 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);} 1571 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);} 1572 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);} 1573 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);} 1574 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);} 1575 ; 1576 1577 ParityTypeKeyword 1578 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);} 1579 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);} 1580 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);} 1581 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);} 1582 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);} 1583 ; 1584 1585 PinConfigByte 1586 : PinConfigKeyword {$$ = $1;} 1587 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 1588 ; 1589 1590 PinConfigKeyword 1591 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);} 1592 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);} 1593 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);} 1594 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);} 1595 ; 1596 1597 RangeTypeKeyword 1598 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);} 1599 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);} 1600 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);} 1601 ; 1602 1603 RegionSpaceKeyword 1604 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);} 1605 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);} 1606 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);} 1607 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);} 1608 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);} 1609 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);} 1610 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);} 1611 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);} 1612 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);} 1613 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);} 1614 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);} 1615 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);} 1616 ; 1617 1618 ResourceTypeKeyword 1619 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1620 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} 1621 ; 1622 1623 SerializeRuleKeyword 1624 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} 1625 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} 1626 ; 1627 1628 ShareTypeKeyword 1629 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);} 1630 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);} 1631 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);} 1632 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);} 1633 ; 1634 1635 SlaveModeKeyword 1636 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);} 1637 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);} 1638 ; 1639 1640 StopBitsKeyword 1641 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);} 1642 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);} 1643 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);} 1644 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);} 1645 ; 1646 1647 TranslationKeyword 1648 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} 1649 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} 1650 ; 1651 1652 TypeKeyword 1653 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} 1654 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} 1655 ; 1656 1657 UpdateRuleKeyword 1658 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);} 1659 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);} 1660 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);} 1661 ; 1662 1663 WireModeKeyword 1664 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);} 1665 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);} 1666 ; 1667 1668 XferSizeKeyword 1669 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);} 1670 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);} 1671 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 1672 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);} 1673 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);} 1674 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);} 1675 ; 1676 1677 XferTypeKeyword 1678 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);} 1679 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);} 1680 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);} 1681 ; 1682 1683 1684 /******* Miscellaneous Types **************************************************/ 1685 1686 1687 SuperName 1688 : NameString {} 1689 | ArgTerm {} 1690 | LocalTerm {} 1691 | DebugTerm {} 1692 | Type6Opcode {} 1693 1694 /* For ObjectType: SuperName except for UserTerm (method invocation) */ 1695 1696 ObjectTypeName 1697 : NameString {} 1698 | ArgTerm {} 1699 | LocalTerm {} 1700 | DebugTerm {} 1701 | RefOfTerm {} 1702 | DerefOfTerm {} 1703 | IndexTerm {} 1704 1705 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */ 1706 ; 1707 1708 ArgTerm 1709 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);} 1710 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);} 1711 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);} 1712 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);} 1713 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);} 1714 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);} 1715 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);} 1716 ; 1717 1718 LocalTerm 1719 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);} 1720 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);} 1721 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);} 1722 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);} 1723 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);} 1724 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);} 1725 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);} 1726 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);} 1727 ; 1728 1729 DebugTerm 1730 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} 1731 ; 1732 1733 1734 ByteConst 1735 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 1736 ; 1737 1738 WordConst 1739 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 1740 ; 1741 1742 DWordConst 1743 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 1744 ; 1745 1746 QWordConst 1747 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 1748 ; 1749 1750 Integer 1751 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} 1752 ; 1753 1754 String 1755 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} 1756 ; 1757 1758 ConstTerm 1759 : ConstExprTerm {} 1760 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} 1761 ; 1762 1763 ConstExprTerm 1764 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);} 1765 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);} 1766 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);} 1767 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);} 1768 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);} 1769 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);} 1770 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);} 1771 ; 1772 1773 /* 1774 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions 1775 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes 1776 * to simple integers. It is an error if these types of expressions cannot be 1777 * reduced, since the AML grammar for ****ConstExpr requires a simple constant. 1778 * Note: The required byte length of the constant is passed through to the 1779 * constant folding code in the node AmlLength field. 1780 */ 1781 ByteConstExpr 1782 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} 1783 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} 1784 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 1785 | ByteConst {} 1786 ; 1787 1788 WordConstExpr 1789 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} 1790 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} 1791 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 1792 | WordConst {} 1793 ; 1794 1795 DWordConstExpr 1796 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} 1797 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} 1798 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 1799 | DWordConst {} 1800 ; 1801 1802 QWordConstExpr 1803 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} 1804 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} 1805 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 1806 | QWordConst {} 1807 ; 1808 1809 /* OptionalCount must appear before ByteList or an incorrect reduction will result */ 1810 1811 OptionalCount 1812 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 1813 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 1814 | ',' TermArg {$$ = $2;} 1815 ; 1816 1817 BufferTerm 1818 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);} 1819 OptionalTermArg 1820 ')' '{' 1821 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1822 | PARSEOP_BUFFER '(' 1823 error ')' {$$ = AslDoError(); yyclearin;} 1824 ; 1825 1826 BufferTermData 1827 : ByteList {} 1828 | StringData {} 1829 ; 1830 1831 ByteList 1832 : {$$ = NULL;} 1833 | ByteConstExpr 1834 | ByteList ',' /* Allows a trailing comma at list end */ 1835 | ByteList ',' 1836 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} 1837 ; 1838 1839 DataBufferTerm 1840 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);} 1841 OptionalWordConst 1842 ')' '{' 1843 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1844 | PARSEOP_DATABUFFER '(' 1845 error ')' {$$ = AslDoError(); yyclearin;} 1846 ; 1847 1848 DWordList 1849 : {$$ = NULL;} 1850 | DWordConstExpr 1851 | DWordList ',' /* Allows a trailing comma at list end */ 1852 | DWordList ',' 1853 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} 1854 ; 1855 1856 PackageTerm 1857 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);} 1858 VarPackageLengthTerm 1859 ')' '{' 1860 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1861 | PARSEOP_PACKAGE '(' 1862 error ')' {$$ = AslDoError(); yyclearin;} 1863 ; 1864 1865 PackageList 1866 : {$$ = NULL;} 1867 | PackageElement 1868 | PackageList ',' /* Allows a trailing comma at list end */ 1869 | PackageList ',' 1870 PackageElement {$$ = TrLinkPeerNode ($1,$3);} 1871 ; 1872 1873 PackageElement 1874 : DataObject {} 1875 | NameString {} 1876 ; 1877 1878 VarPackageLengthTerm 1879 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 1880 | TermArg {$$ = $1;} 1881 ; 1882 1883 1884 /******* Macros ***********************************************/ 1885 1886 1887 EISAIDTerm 1888 : PARSEOP_EISAID '(' 1889 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} 1890 | PARSEOP_EISAID '(' 1891 error ')' {$$ = AslDoError(); yyclearin;} 1892 ; 1893 1894 UnicodeTerm 1895 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);} 1896 StringData 1897 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);} 1898 | PARSEOP_UNICODE '(' 1899 error ')' {$$ = AslDoError(); yyclearin;} 1900 ; 1901 1902 1903 /******* Resources and Memory ***********************************************/ 1904 1905 1906 /* 1907 * Note: Create two default nodes to allow conversion to a Buffer AML opcode 1908 * Also, insert the EndTag at the end of the template. 1909 */ 1910 ResourceTemplateTerm 1911 : PARSEOP_RESOURCETEMPLATE '(' ')' 1912 '{' 1913 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4, 1914 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 1915 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 1916 $5, 1917 TrCreateLeafNode (PARSEOP_ENDTAG));} 1918 ; 1919 1920 ResourceMacroList 1921 : {$$ = NULL;} 1922 | ResourceMacroList 1923 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} 1924 ; 1925 1926 ResourceMacroTerm 1927 : DMATerm {} 1928 | DWordIOTerm {} 1929 | DWordMemoryTerm {} 1930 | DWordSpaceTerm {} 1931 | EndDependentFnTerm {} 1932 | ExtendedIOTerm {} 1933 | ExtendedMemoryTerm {} 1934 | ExtendedSpaceTerm {} 1935 | FixedDmaTerm {} 1936 | FixedIOTerm {} 1937 | GpioIntTerm {} 1938 | GpioIoTerm {} 1939 | I2cSerialBusTerm {} 1940 | InterruptTerm {} 1941 | IOTerm {} 1942 | IRQNoFlagsTerm {} 1943 | IRQTerm {} 1944 | Memory24Term {} 1945 | Memory32FixedTerm {} 1946 | Memory32Term {} 1947 | QWordIOTerm {} 1948 | QWordMemoryTerm {} 1949 | QWordSpaceTerm {} 1950 | RegisterTerm {} 1951 | SpiSerialBusTerm {} 1952 | StartDependentFnNoPriTerm {} 1953 | StartDependentFnTerm {} 1954 | UartSerialBusTerm {} 1955 | VendorLongTerm {} 1956 | VendorShortTerm {} 1957 | WordBusNumberTerm {} 1958 | WordIOTerm {} 1959 | WordSpaceTerm {} 1960 ; 1961 1962 DMATerm 1963 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);} 1964 DMATypeKeyword 1965 OptionalBusMasterKeyword 1966 ',' XferTypeKeyword 1967 OptionalNameString_Last 1968 ')' '{' 1969 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);} 1970 | PARSEOP_DMA '(' 1971 error ')' {$$ = AslDoError(); yyclearin;} 1972 ; 1973 1974 DWordIOTerm 1975 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);} 1976 OptionalResourceType_First 1977 OptionalMinType 1978 OptionalMaxType 1979 OptionalDecodeType 1980 OptionalRangeType 1981 ',' DWordConstExpr 1982 ',' DWordConstExpr 1983 ',' DWordConstExpr 1984 ',' DWordConstExpr 1985 ',' DWordConstExpr 1986 OptionalByteConstExpr 1987 OptionalStringData 1988 OptionalNameString 1989 OptionalType 1990 OptionalTranslationType_Last 1991 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 1992 | PARSEOP_DWORDIO '(' 1993 error ')' {$$ = AslDoError(); yyclearin;} 1994 ; 1995 1996 DWordMemoryTerm 1997 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);} 1998 OptionalResourceType_First 1999 OptionalDecodeType 2000 OptionalMinType 2001 OptionalMaxType 2002 OptionalMemType 2003 ',' OptionalReadWriteKeyword 2004 ',' DWordConstExpr 2005 ',' DWordConstExpr 2006 ',' DWordConstExpr 2007 ',' DWordConstExpr 2008 ',' DWordConstExpr 2009 OptionalByteConstExpr 2010 OptionalStringData 2011 OptionalNameString 2012 OptionalAddressRange 2013 OptionalType_Last 2014 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} 2015 | PARSEOP_DWORDMEMORY '(' 2016 error ')' {$$ = AslDoError(); yyclearin;} 2017 ; 2018 2019 DWordSpaceTerm 2020 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);} 2021 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2022 OptionalResourceType 2023 OptionalDecodeType 2024 OptionalMinType 2025 OptionalMaxType 2026 ',' ByteConstExpr 2027 ',' DWordConstExpr 2028 ',' DWordConstExpr 2029 ',' DWordConstExpr 2030 ',' DWordConstExpr 2031 ',' DWordConstExpr 2032 OptionalByteConstExpr 2033 OptionalStringData 2034 OptionalNameString_Last 2035 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 2036 | PARSEOP_DWORDSPACE '(' 2037 error ')' {$$ = AslDoError(); yyclearin;} 2038 ; 2039 2040 2041 EndDependentFnTerm 2042 : PARSEOP_ENDDEPENDENTFN '(' 2043 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} 2044 | PARSEOP_ENDDEPENDENTFN '(' 2045 error ')' {$$ = AslDoError(); yyclearin;} 2046 ; 2047 2048 ExtendedIOTerm 2049 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);} 2050 OptionalResourceType_First 2051 OptionalMinType 2052 OptionalMaxType 2053 OptionalDecodeType 2054 OptionalRangeType 2055 ',' QWordConstExpr 2056 ',' QWordConstExpr 2057 ',' QWordConstExpr 2058 ',' QWordConstExpr 2059 ',' QWordConstExpr 2060 OptionalQWordConstExpr 2061 OptionalNameString 2062 OptionalType 2063 OptionalTranslationType_Last 2064 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);} 2065 | PARSEOP_EXTENDEDIO '(' 2066 error ')' {$$ = AslDoError(); yyclearin;} 2067 ; 2068 2069 ExtendedMemoryTerm 2070 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);} 2071 OptionalResourceType_First 2072 OptionalDecodeType 2073 OptionalMinType 2074 OptionalMaxType 2075 OptionalMemType 2076 ',' OptionalReadWriteKeyword 2077 ',' QWordConstExpr 2078 ',' QWordConstExpr 2079 ',' QWordConstExpr 2080 ',' QWordConstExpr 2081 ',' QWordConstExpr 2082 OptionalQWordConstExpr 2083 OptionalNameString 2084 OptionalAddressRange 2085 OptionalType_Last 2086 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);} 2087 | PARSEOP_EXTENDEDMEMORY '(' 2088 error ')' {$$ = AslDoError(); yyclearin;} 2089 ; 2090 2091 ExtendedSpaceTerm 2092 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);} 2093 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2094 OptionalResourceType 2095 OptionalDecodeType 2096 OptionalMinType 2097 OptionalMaxType 2098 ',' ByteConstExpr 2099 ',' QWordConstExpr 2100 ',' QWordConstExpr 2101 ',' QWordConstExpr 2102 ',' QWordConstExpr 2103 ',' QWordConstExpr 2104 OptionalQWordConstExpr 2105 OptionalNameString_Last 2106 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);} 2107 | PARSEOP_EXTENDEDSPACE '(' 2108 error ')' {$$ = AslDoError(); yyclearin;} 2109 ; 2110 2111 FixedDmaTerm 2112 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);} 2113 WordConstExpr /* 04: DMA RequestLines */ 2114 ',' WordConstExpr /* 06: DMA Channels */ 2115 OptionalXferSize /* 07: DMA TransferSize */ 2116 OptionalNameString /* 08: DescriptorName */ 2117 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);} 2118 | PARSEOP_FIXEDDMA '(' 2119 error ')' {$$ = AslDoError(); yyclearin;} 2120 ; 2121 2122 FixedIOTerm 2123 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);} 2124 WordConstExpr 2125 ',' ByteConstExpr 2126 OptionalNameString_Last 2127 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 2128 | PARSEOP_FIXEDIO '(' 2129 error ')' {$$ = AslDoError(); yyclearin;} 2130 ; 2131 2132 GpioIntTerm 2133 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);} 2134 InterruptTypeKeyword /* 04: InterruptType */ 2135 ',' InterruptLevel /* 06: InterruptLevel */ 2136 OptionalShareType /* 07: SharedType */ 2137 ',' PinConfigByte /* 09: PinConfig */ 2138 OptionalWordConstExpr /* 10: DebounceTimeout */ 2139 ',' StringData /* 12: ResourceSource */ 2140 OptionalByteConstExpr /* 13: ResourceSourceIndex */ 2141 OptionalResourceType /* 14: ResourceType */ 2142 OptionalNameString /* 15: DescriptorName */ 2143 OptionalBuffer_Last /* 16: VendorData */ 2144 ')' '{' 2145 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);} 2146 | PARSEOP_GPIO_INT '(' 2147 error ')' {$$ = AslDoError(); yyclearin;} 2148 ; 2149 2150 GpioIoTerm 2151 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);} 2152 OptionalShareType_First /* 04: SharedType */ 2153 ',' PinConfigByte /* 06: PinConfig */ 2154 OptionalWordConstExpr /* 07: DebounceTimeout */ 2155 OptionalWordConstExpr /* 08: DriveStrength */ 2156 OptionalIoRestriction /* 09: IoRestriction */ 2157 ',' StringData /* 11: ResourceSource */ 2158 OptionalByteConstExpr /* 12: ResourceSourceIndex */ 2159 OptionalResourceType /* 13: ResourceType */ 2160 OptionalNameString /* 14: DescriptorName */ 2161 OptionalBuffer_Last /* 15: VendorData */ 2162 ')' '{' 2163 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);} 2164 | PARSEOP_GPIO_IO '(' 2165 error ')' {$$ = AslDoError(); yyclearin;} 2166 ; 2167 2168 I2cSerialBusTerm 2169 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);} 2170 WordConstExpr /* 04: SlaveAddress */ 2171 OptionalSlaveMode /* 05: SlaveMode */ 2172 ',' DWordConstExpr /* 07: ConnectionSpeed */ 2173 OptionalAddressingMode /* 08: AddressingMode */ 2174 ',' StringData /* 10: ResourceSource */ 2175 OptionalByteConstExpr /* 11: ResourceSourceIndex */ 2176 OptionalResourceType /* 12: ResourceType */ 2177 OptionalNameString /* 13: DescriptorName */ 2178 OptionalBuffer_Last /* 14: VendorData */ 2179 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);} 2180 | PARSEOP_I2C_SERIALBUS '(' 2181 error ')' {$$ = AslDoError(); yyclearin;} 2182 ; 2183 2184 InterruptTerm 2185 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);} 2186 OptionalResourceType_First 2187 ',' InterruptTypeKeyword 2188 ',' InterruptLevel 2189 OptionalShareType 2190 OptionalByteConstExpr 2191 OptionalStringData 2192 OptionalNameString_Last 2193 ')' '{' 2194 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);} 2195 | PARSEOP_INTERRUPT '(' 2196 error ')' {$$ = AslDoError(); yyclearin;} 2197 ; 2198 2199 IOTerm 2200 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);} 2201 IODecodeKeyword 2202 ',' WordConstExpr 2203 ',' WordConstExpr 2204 ',' ByteConstExpr 2205 ',' ByteConstExpr 2206 OptionalNameString_Last 2207 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 2208 | PARSEOP_IO '(' 2209 error ')' {$$ = AslDoError(); yyclearin;} 2210 ; 2211 2212 IRQNoFlagsTerm 2213 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);} 2214 OptionalNameString_First 2215 ')' '{' 2216 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2217 | PARSEOP_IRQNOFLAGS '(' 2218 error ')' {$$ = AslDoError(); yyclearin;} 2219 ; 2220 2221 IRQTerm 2222 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);} 2223 InterruptTypeKeyword 2224 ',' InterruptLevel 2225 OptionalShareType 2226 OptionalNameString_Last 2227 ')' '{' 2228 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);} 2229 | PARSEOP_IRQ '(' 2230 error ')' {$$ = AslDoError(); yyclearin;} 2231 ; 2232 2233 Memory24Term 2234 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);} 2235 OptionalReadWriteKeyword 2236 ',' WordConstExpr 2237 ',' WordConstExpr 2238 ',' WordConstExpr 2239 ',' WordConstExpr 2240 OptionalNameString_Last 2241 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 2242 | PARSEOP_MEMORY24 '(' 2243 error ')' {$$ = AslDoError(); yyclearin;} 2244 ; 2245 2246 Memory32FixedTerm 2247 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);} 2248 OptionalReadWriteKeyword 2249 ',' DWordConstExpr 2250 ',' DWordConstExpr 2251 OptionalNameString_Last 2252 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);} 2253 | PARSEOP_MEMORY32FIXED '(' 2254 error ')' {$$ = AslDoError(); yyclearin;} 2255 ; 2256 2257 Memory32Term 2258 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);} 2259 OptionalReadWriteKeyword 2260 ',' DWordConstExpr 2261 ',' DWordConstExpr 2262 ',' DWordConstExpr 2263 ',' DWordConstExpr 2264 OptionalNameString_Last 2265 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 2266 | PARSEOP_MEMORY32 '(' 2267 error ')' {$$ = AslDoError(); yyclearin;} 2268 ; 2269 2270 QWordIOTerm 2271 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);} 2272 OptionalResourceType_First 2273 OptionalMinType 2274 OptionalMaxType 2275 OptionalDecodeType 2276 OptionalRangeType 2277 ',' QWordConstExpr 2278 ',' QWordConstExpr 2279 ',' QWordConstExpr 2280 ',' QWordConstExpr 2281 ',' QWordConstExpr 2282 OptionalByteConstExpr 2283 OptionalStringData 2284 OptionalNameString 2285 OptionalType 2286 OptionalTranslationType_Last 2287 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 2288 | PARSEOP_QWORDIO '(' 2289 error ')' {$$ = AslDoError(); yyclearin;} 2290 ; 2291 2292 QWordMemoryTerm 2293 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);} 2294 OptionalResourceType_First 2295 OptionalDecodeType 2296 OptionalMinType 2297 OptionalMaxType 2298 OptionalMemType 2299 ',' OptionalReadWriteKeyword 2300 ',' QWordConstExpr 2301 ',' QWordConstExpr 2302 ',' QWordConstExpr 2303 ',' QWordConstExpr 2304 ',' QWordConstExpr 2305 OptionalByteConstExpr 2306 OptionalStringData 2307 OptionalNameString 2308 OptionalAddressRange 2309 OptionalType_Last 2310 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} 2311 | PARSEOP_QWORDMEMORY '(' 2312 error ')' {$$ = AslDoError(); yyclearin;} 2313 ; 2314 2315 QWordSpaceTerm 2316 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);} 2317 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2318 OptionalResourceType 2319 OptionalDecodeType 2320 OptionalMinType 2321 OptionalMaxType 2322 ',' ByteConstExpr 2323 ',' QWordConstExpr 2324 ',' QWordConstExpr 2325 ',' QWordConstExpr 2326 ',' QWordConstExpr 2327 ',' QWordConstExpr 2328 OptionalByteConstExpr 2329 OptionalStringData 2330 OptionalNameString_Last 2331 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 2332 | PARSEOP_QWORDSPACE '(' 2333 error ')' {$$ = AslDoError(); yyclearin;} 2334 ; 2335 2336 RegisterTerm 2337 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);} 2338 AddressSpaceKeyword 2339 ',' ByteConstExpr 2340 ',' ByteConstExpr 2341 ',' QWordConstExpr 2342 OptionalAccessSize 2343 OptionalNameString_Last 2344 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);} 2345 | PARSEOP_REGISTER '(' 2346 error ')' {$$ = AslDoError(); yyclearin;} 2347 ; 2348 2349 SpiSerialBusTerm 2350 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);} 2351 WordConstExpr /* 04: DeviceSelection */ 2352 OptionalDevicePolarity /* 05: DevicePolarity */ 2353 OptionalWireMode /* 06: WireMode */ 2354 ',' ByteConstExpr /* 08: DataBitLength */ 2355 OptionalSlaveMode /* 09: SlaveMode */ 2356 ',' DWordConstExpr /* 11: ConnectionSpeed */ 2357 ',' ClockPolarityKeyword /* 13: ClockPolarity */ 2358 ',' ClockPhaseKeyword /* 15: ClockPhase */ 2359 ',' StringData /* 17: ResourceSource */ 2360 OptionalByteConstExpr /* 18: ResourceSourceIndex */ 2361 OptionalResourceType /* 19: ResourceType */ 2362 OptionalNameString /* 20: DescriptorName */ 2363 OptionalBuffer_Last /* 21: VendorData */ 2364 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);} 2365 | PARSEOP_SPI_SERIALBUS '(' 2366 error ')' {$$ = AslDoError(); yyclearin;} 2367 ; 2368 2369 StartDependentFnNoPriTerm 2370 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);} 2371 ')' '{' 2372 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);} 2373 | PARSEOP_STARTDEPENDENTFN_NOPRI '(' 2374 error ')' {$$ = AslDoError(); yyclearin;} 2375 ; 2376 2377 StartDependentFnTerm 2378 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);} 2379 ByteConstExpr 2380 ',' ByteConstExpr 2381 ')' '{' 2382 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);} 2383 | PARSEOP_STARTDEPENDENTFN '(' 2384 error ')' {$$ = AslDoError(); yyclearin;} 2385 ; 2386 2387 UartSerialBusTerm 2388 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);} 2389 DWordConstExpr /* 04: ConnectionSpeed */ 2390 OptionalBitsPerByte /* 05: BitsPerByte */ 2391 OptionalStopBits /* 06: StopBits */ 2392 ',' ByteConstExpr /* 08: LinesInUse */ 2393 OptionalEndian /* 09: Endianess */ 2394 OptionalParityType /* 10: Parity */ 2395 OptionalFlowControl /* 11: FlowControl */ 2396 ',' WordConstExpr /* 13: Rx BufferSize */ 2397 ',' WordConstExpr /* 15: Tx BufferSize */ 2398 ',' StringData /* 17: ResourceSource */ 2399 OptionalByteConstExpr /* 18: ResourceSourceIndex */ 2400 OptionalResourceType /* 19: ResourceType */ 2401 OptionalNameString /* 20: DescriptorName */ 2402 OptionalBuffer_Last /* 21: VendorData */ 2403 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);} 2404 | PARSEOP_UART_SERIALBUS '(' 2405 error ')' {$$ = AslDoError(); yyclearin;} 2406 ; 2407 2408 VendorLongTerm 2409 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);} 2410 OptionalNameString_First 2411 ')' '{' 2412 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2413 | PARSEOP_VENDORLONG '(' 2414 error ')' {$$ = AslDoError(); yyclearin;} 2415 ; 2416 2417 VendorShortTerm 2418 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);} 2419 OptionalNameString_First 2420 ')' '{' 2421 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2422 | PARSEOP_VENDORSHORT '(' 2423 error ')' {$$ = AslDoError(); yyclearin;} 2424 ; 2425 2426 WordBusNumberTerm 2427 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);} 2428 OptionalResourceType_First 2429 OptionalMinType 2430 OptionalMaxType 2431 OptionalDecodeType 2432 ',' WordConstExpr 2433 ',' WordConstExpr 2434 ',' WordConstExpr 2435 ',' WordConstExpr 2436 ',' WordConstExpr 2437 OptionalByteConstExpr 2438 OptionalStringData 2439 OptionalNameString_Last 2440 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);} 2441 | PARSEOP_WORDBUSNUMBER '(' 2442 error ')' {$$ = AslDoError(); yyclearin;} 2443 ; 2444 2445 WordIOTerm 2446 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);} 2447 OptionalResourceType_First 2448 OptionalMinType 2449 OptionalMaxType 2450 OptionalDecodeType 2451 OptionalRangeType 2452 ',' WordConstExpr 2453 ',' WordConstExpr 2454 ',' WordConstExpr 2455 ',' WordConstExpr 2456 ',' WordConstExpr 2457 OptionalByteConstExpr 2458 OptionalStringData 2459 OptionalNameString 2460 OptionalType 2461 OptionalTranslationType_Last 2462 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 2463 | PARSEOP_WORDIO '(' 2464 error ')' {$$ = AslDoError(); yyclearin;} 2465 ; 2466 2467 WordSpaceTerm 2468 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);} 2469 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2470 OptionalResourceType 2471 OptionalDecodeType 2472 OptionalMinType 2473 OptionalMaxType 2474 ',' ByteConstExpr 2475 ',' WordConstExpr 2476 ',' WordConstExpr 2477 ',' WordConstExpr 2478 ',' WordConstExpr 2479 ',' WordConstExpr 2480 OptionalByteConstExpr 2481 OptionalStringData 2482 OptionalNameString_Last 2483 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 2484 | PARSEOP_WORDSPACE '(' 2485 error ')' {$$ = AslDoError(); yyclearin;} 2486 ; 2487 2488 2489 /******* Object References ***********************************************/ 2490 2491 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */ 2492 2493 NameString 2494 : NameSeg {} 2495 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);} 2496 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");} 2497 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");} 2498 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");} 2499 ; 2500 2501 NameSeg 2502 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} 2503 ; 2504 2505 2506 /******* Helper rules ****************************************************/ 2507 2508 2509 AmlPackageLengthTerm 2510 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} 2511 ; 2512 2513 NameStringItem 2514 : ',' NameString {$$ = $2;} 2515 | ',' error {$$ = AslDoError (); yyclearin;} 2516 ; 2517 2518 TermArgItem 2519 : ',' TermArg {$$ = $2;} 2520 | ',' error {$$ = AslDoError (); yyclearin;} 2521 ; 2522 2523 OptionalBusMasterKeyword 2524 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2525 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2526 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} 2527 ; 2528 2529 OptionalAccessAttribTerm 2530 : {$$ = NULL;} 2531 | ',' {$$ = NULL;} 2532 | ',' ByteConstExpr {$$ = $2;} 2533 | ',' AccessAttribKeyword {$$ = $2;} 2534 ; 2535 2536 OptionalAccessSize 2537 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2538 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2539 | ',' ByteConstExpr {$$ = $2;} 2540 ; 2541 2542 OptionalAddressingMode 2543 : ',' {$$ = NULL;} 2544 | ',' AddressingModeKeyword {$$ = $2;} 2545 ; 2546 2547 OptionalAddressRange 2548 : {$$ = NULL;} 2549 | ',' {$$ = NULL;} 2550 | ',' AddressKeyword {$$ = $2;} 2551 ; 2552 2553 OptionalBitsPerByte 2554 : ',' {$$ = NULL;} 2555 | ',' BitsPerByteKeyword {$$ = $2;} 2556 ; 2557 2558 OptionalBuffer_Last 2559 : {$$ = NULL;} 2560 | ',' {$$ = NULL;} 2561 | ',' DataBufferTerm {$$ = $2;} 2562 ; 2563 2564 OptionalByteConstExpr 2565 : {$$ = NULL;} 2566 | ',' {$$ = NULL;} 2567 | ',' ByteConstExpr {$$ = $2;} 2568 ; 2569 2570 OptionalDecodeType 2571 : ',' {$$ = NULL;} 2572 | ',' DecodeKeyword {$$ = $2;} 2573 ; 2574 2575 OptionalDevicePolarity 2576 : ',' {$$ = NULL;} 2577 | ',' DevicePolarityKeyword {$$ = $2;} 2578 ; 2579 2580 OptionalDWordConstExpr 2581 : {$$ = NULL;} 2582 | ',' {$$ = NULL;} 2583 | ',' DWordConstExpr {$$ = $2;} 2584 ; 2585 2586 OptionalEndian 2587 : ',' {$$ = NULL;} 2588 | ',' EndianKeyword {$$ = $2;} 2589 ; 2590 2591 OptionalFlowControl 2592 : ',' {$$ = NULL;} 2593 | ',' FlowControlKeyword {$$ = $2;} 2594 ; 2595 2596 OptionalIoRestriction 2597 : ',' {$$ = NULL;} 2598 | ',' IoRestrictionKeyword {$$ = $2;} 2599 ; 2600 2601 OptionalListString 2602 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ 2603 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ 2604 | ',' TermArg {$$ = $2;} 2605 ; 2606 2607 OptionalMaxType 2608 : ',' {$$ = NULL;} 2609 | ',' MaxKeyword {$$ = $2;} 2610 ; 2611 2612 OptionalMemType 2613 : ',' {$$ = NULL;} 2614 | ',' MemTypeKeyword {$$ = $2;} 2615 ; 2616 2617 OptionalMinType 2618 : ',' {$$ = NULL;} 2619 | ',' MinKeyword {$$ = $2;} 2620 ; 2621 2622 OptionalNameString 2623 : {$$ = NULL;} 2624 | ',' {$$ = NULL;} 2625 | ',' NameString {$$ = $2;} 2626 ; 2627 2628 OptionalNameString_Last 2629 : {$$ = NULL;} 2630 | ',' {$$ = NULL;} 2631 | ',' NameString {$$ = $2;} 2632 ; 2633 2634 OptionalNameString_First 2635 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} 2636 | NameString {$$ = $1;} 2637 ; 2638 2639 OptionalObjectTypeKeyword 2640 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 2641 | ',' ObjectTypeKeyword {$$ = $2;} 2642 ; 2643 2644 OptionalParityType 2645 : ',' {$$ = NULL;} 2646 | ',' ParityTypeKeyword {$$ = $2;} 2647 ; 2648 2649 OptionalQWordConstExpr 2650 : {$$ = NULL;} 2651 | ',' {$$ = NULL;} 2652 | ',' QWordConstExpr {$$ = $2;} 2653 ; 2654 2655 OptionalRangeType 2656 : ',' {$$ = NULL;} 2657 | ',' RangeTypeKeyword {$$ = $2;} 2658 ; 2659 2660 OptionalReadWriteKeyword 2661 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2662 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2663 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} 2664 ; 2665 2666 OptionalReference 2667 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2668 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2669 | ',' TermArg {$$ = $2;} 2670 ; 2671 2672 OptionalResourceType_First 2673 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2674 | ResourceTypeKeyword {$$ = $1;} 2675 ; 2676 2677 OptionalResourceType 2678 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2679 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2680 | ',' ResourceTypeKeyword {$$ = $2;} 2681 ; 2682 2683 OptionalReturnArg 2684 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */ 2685 | TermArg {$$ = $1;} 2686 ; 2687 2688 OptionalSerializeRuleKeyword 2689 : {$$ = NULL;} 2690 | ',' {$$ = NULL;} 2691 | ',' SerializeRuleKeyword {$$ = $2;} 2692 ; 2693 2694 OptionalSlaveMode 2695 : ',' {$$ = NULL;} 2696 | ',' SlaveModeKeyword {$$ = $2;} 2697 ; 2698 2699 OptionalShareType 2700 : {$$ = NULL;} 2701 | ',' {$$ = NULL;} 2702 | ',' ShareTypeKeyword {$$ = $2;} 2703 ; 2704 2705 OptionalShareType_First 2706 : {$$ = NULL;} 2707 | ShareTypeKeyword {$$ = $1;} 2708 ; 2709 2710 OptionalStopBits 2711 : ',' {$$ = NULL;} 2712 | ',' StopBitsKeyword {$$ = $2;} 2713 ; 2714 2715 OptionalStringData 2716 : {$$ = NULL;} 2717 | ',' {$$ = NULL;} 2718 | ',' StringData {$$ = $2;} 2719 ; 2720 2721 OptionalTermArg 2722 : {$$ = NULL;} 2723 | TermArg {$$ = $1;} 2724 ; 2725 2726 OptionalType 2727 : {$$ = NULL;} 2728 | ',' {$$ = NULL;} 2729 | ',' TypeKeyword {$$ = $2;} 2730 ; 2731 2732 OptionalType_Last 2733 : {$$ = NULL;} 2734 | ',' {$$ = NULL;} 2735 | ',' TypeKeyword {$$ = $2;} 2736 ; 2737 2738 OptionalTranslationType_Last 2739 : {$$ = NULL;} 2740 | ',' {$$ = NULL;} 2741 | ',' TranslationKeyword {$$ = $2;} 2742 ; 2743 2744 OptionalWireMode 2745 : ',' {$$ = NULL;} 2746 | ',' WireModeKeyword {$$ = $2;} 2747 ; 2748 2749 OptionalWordConst 2750 : {$$ = NULL;} 2751 | WordConst {$$ = $1;} 2752 ; 2753 2754 OptionalWordConstExpr 2755 : ',' {$$ = NULL;} 2756 | ',' WordConstExpr {$$ = $2;} 2757 ; 2758 2759 OptionalXferSize 2760 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2761 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2762 | ',' XferSizeKeyword {$$ = $2;} 2763 ; 2764