aslrules.y revision 271440
1219089SpjdNoEcho(' 2219089Spjd/****************************************************************************** 3219089Spjd * 4219089Spjd * Module Name: aslrules.y - Bison/Yacc production rules 5219089Spjd * 6219089Spjd *****************************************************************************/ 7219089Spjd 8219089Spjd/* 9219089Spjd * Copyright (C) 2000 - 2014, Intel Corp. 10219089Spjd * All rights reserved. 11219089Spjd * 12219089Spjd * Redistribution and use in source and binary forms, with or without 13219089Spjd * modification, are permitted provided that the following conditions 14219089Spjd * are met: 15219089Spjd * 1. Redistributions of source code must retain the above copyright 16219089Spjd * notice, this list of conditions, and the following disclaimer, 17219089Spjd * without modification. 18219089Spjd * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19219089Spjd * substantially similar to the "NO WARRANTY" disclaimer below 20219089Spjd * ("Disclaimer") and any redistribution must be conditioned upon 21219089Spjd * including a substantially similar Disclaimer requirement for further 22219089Spjd * binary redistribution. 23289562Smav * 3. Neither the names of the above-listed copyright holders nor the names 24219089Spjd * of any contributors may be used to endorse or promote products derived 25219089Spjd * from this software without specific prior written permission. 26219089Spjd * 27219089Spjd * Alternatively, this software may be distributed under the terms of the 28219089Spjd * GNU General Public License ("GPL") version 2 as published by the Free 29219089Spjd * Software Foundation. 30219089Spjd * 31219089Spjd * NO WARRANTY 32219089Spjd * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33219089Spjd * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34219089Spjd * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35219089Spjd * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36219089Spjd * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37219089Spjd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38219089Spjd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39219089Spjd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40219089Spjd * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41219089Spjd * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42219089Spjd * POSSIBILITY OF SUCH DAMAGES. 43219089Spjd */ 44219089Spjd 45219089Spjd') 46286605Smav 47219089Spjd/******************************************************************************* 48219089Spjd * 49219089Spjd * Production rules start here 50219089Spjd * 51219089Spjd ******************************************************************************/ 52219089Spjd 53219089Spjd/* 54219089Spjd * ASL Names 55219089Spjd * 56219089Spjd * Root rule. Allow multiple #line directives before the definition block 57219089Spjd * to handle output from preprocessors 58219089Spjd */ 59219089SpjdASLCode 60219089Spjd : DefinitionBlockTerm 61219089Spjd | error {YYABORT; $$ = NULL;} 62219089Spjd ; 63219089Spjd 64286605Smav/* 65219089Spjd * Blocks, Data, and Opcodes 66219089Spjd */ 67219089Spjd 68219089Spjd/* 69219089Spjd * Note concerning support for "module-level code". 70219089Spjd * 71219089Spjd * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control 72289562Smav * methods (the so-called module-level code.) This support was explicitly 73219089Spjd * removed in ACPI 2.0, but this type of code continues to be created by 74219089Spjd * BIOS vendors. In order to support the disassembly and recompilation of 75219089Spjd * such code (and the porting of ASL code to iASL), iASL supports this 76219089Spjd * code in violation of the current ACPI specification. 77219089Spjd * 78219089Spjd * The grammar change to support module-level code is to revert the 79219089Spjd * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the 80286605Smav * original use of {TermList} instead (see below.) This allows the use 81219089Spjd * of Type1 and Type2 opcodes at module level. 82219089Spjd */ 83219089SpjdDefinitionBlockTerm 84219089Spjd : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);} 85219089Spjd String ',' 86219089Spjd String ',' 87219089Spjd ByteConst ',' 88219089Spjd String ',' 89219089Spjd String ',' 90219089Spjd DWordConst 91219089Spjd ')' {TrSetEndLineNumber ($<n>3);} 92219089Spjd '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);} 93219089Spjd ; 94219089Spjd 95219089Spjd/* ACPI 3.0 -- allow semicolons between terms */ 96219089Spjd 97219089SpjdTermList 98286605Smav : {$$ = NULL;} 99219089Spjd | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 100219089Spjd | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 101219089Spjd | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 102219089Spjd | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 103219089Spjd ; 104219089Spjd 105219089SpjdTerm 106219089Spjd : Object {} 107219089Spjd | Type1Opcode {} 108219089Spjd | Type2Opcode {} 109219089Spjd | Type2IntegerOpcode {} 110219089Spjd | Type2StringOpcode {} 111219089Spjd | Type2BufferOpcode {} 112219089Spjd | Type2BufferOrStringOpcode {} 113219089Spjd | error {$$ = AslDoError(); yyclearin;} 114219089Spjd ; 115219089Spjd 116219089SpjdCompilerDirective 117219089Spjd : IncludeTerm {} 118286605Smav | ExternalTerm {} 119286605Smav ; 120219089Spjd 121219089SpjdObjectList 122219089Spjd : {$$ = NULL;} 123219089Spjd | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);} 124219089Spjd | error {$$ = AslDoError(); yyclearin;} 125219089Spjd ; 126219089Spjd 127219089SpjdObject 128219089Spjd : CompilerDirective {} 129219089Spjd | NamedObject {} 130219089Spjd | NameSpaceModifier {} 131219089Spjd ; 132286605Smav 133219089SpjdDataObject 134219089Spjd : BufferData {} 135219089Spjd | PackageData {} 136219089Spjd | IntegerData {} 137219089Spjd | StringData {} 138219089Spjd ; 139286605Smav 140219089SpjdBufferData 141219089Spjd : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 142219089Spjd | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 143219089Spjd | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 144219089Spjd | BufferTerm {} 145219089Spjd ; 146219089Spjd 147286605SmavPackageData 148219089Spjd : PackageTerm {} 149219089Spjd ; 150219089Spjd 151286605SmavIntegerData 152219089Spjd : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 153219089Spjd | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 154219089Spjd | Integer {} 155219089Spjd | ConstTerm {} 156219089Spjd ; 157219089Spjd 158219089SpjdStringData 159219089Spjd : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 160219089Spjd | String {} 161219089Spjd ; 162219089Spjd 163286605SmavNamedObject 164219089Spjd : BankFieldTerm {} 165219089Spjd | CreateBitFieldTerm {} 166219089Spjd | CreateByteFieldTerm {} 167219089Spjd | CreateDWordFieldTerm {} 168219089Spjd | CreateFieldTerm {} 169219089Spjd | CreateQWordFieldTerm {} 170219089Spjd | CreateWordFieldTerm {} 171219089Spjd | DataRegionTerm {} 172286605Smav | DeviceTerm {} 173219089Spjd | EventTerm {} 174219089Spjd | FieldTerm {} 175219089Spjd | FunctionTerm {} 176219089Spjd | IndexFieldTerm {} 177219089Spjd | MethodTerm {} 178219089Spjd | MutexTerm {} 179219089Spjd | OpRegionTerm {} 180286605Smav | PowerResTerm {} 181219089Spjd | ProcessorTerm {} 182219089Spjd | ThermalZoneTerm {} 183219089Spjd ; 184219089Spjd 185219089SpjdNameSpaceModifier 186219089Spjd : AliasTerm {} 187219089Spjd | NameTerm {} 188219089Spjd | ScopeTerm {} 189219089Spjd ; 190219089Spjd 191219089SpjdUserTerm 192 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} 193 ArgList ')' {$$ = TrLinkChildNode ($1,$4);} 194 ; 195 196ArgList 197 : {$$ = NULL;} 198 | TermArg 199 | ArgList ',' /* Allows a trailing comma at list end */ 200 | ArgList ',' 201 TermArg {$$ = TrLinkPeerNode ($1,$3);} 202 ; 203 204/* 205Removed 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 213TermArg 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 221Target 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 227RequiredTarget 228 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 229 ; 230 231SimpleTarget 232 : NameString {} 233 | LocalTerm {} 234 | ArgTerm {} 235 ; 236 237/* Rules for specifying the type of one method argument or return value */ 238 239ParameterTypePackage 240 : {$$ = NULL;} 241 | ObjectTypeKeyword {$$ = $1;} 242 | ParameterTypePackage ',' 243 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} 244 ; 245 246ParameterTypePackageList 247 : {$$ = NULL;} 248 | ObjectTypeKeyword {$$ = $1;} 249 | '{' ParameterTypePackage '}' {$$ = $2;} 250 ; 251 252OptionalParameterTypePackage 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 259ParameterTypesPackage 260 : ParameterTypePackageList {$$ = $1;} 261 | ParameterTypesPackage ',' 262 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} 263 ; 264 265ParameterTypesPackageList 266 : {$$ = NULL;} 267 | ObjectTypeKeyword {$$ = $1;} 268 | '{' ParameterTypesPackage '}' {$$ = $2;} 269 ; 270 271OptionalParameterTypesPackage 272 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 273 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 274 ; 275 276 277/* Opcode types */ 278 279Type1Opcode 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 299Type2Opcode 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 317Type2IntegerOpcode /* "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 352Type2StringOpcode /* "Type4" Opcodes */ 353 : ToDecimalStringTerm {} 354 | ToHexStringTerm {} 355 | ToStringTerm {} 356 ; 357 358Type2BufferOpcode /* "Type5" Opcodes */ 359 : ToBufferTerm {} 360 | ConcatResTerm {} 361 ; 362 363Type2BufferOrStringOpcode 364 : ConcatTerm {} 365 | MidTerm {} 366 ; 367 368/* 369 * A type 3 opcode evaluates to an Integer and cannot have a destination operand 370 */ 371 372Type3Opcode 373 : EISAIDTerm {} 374 ; 375 376/* Obsolete 377Type4Opcode 378 : ConcatTerm {} 379 | ToDecimalStringTerm {} 380 | ToHexStringTerm {} 381 | MidTerm {} 382 | ToStringTerm {} 383 ; 384*/ 385 386 387Type5Opcode 388 : ResourceTemplateTerm {} 389 | UnicodeTerm {} 390 | ToUUIDTerm {} 391 ; 392 393Type6Opcode 394 : RefOfTerm {} 395 | DerefOfTerm {} 396 | IndexTerm {} 397 | UserTerm {} 398 ; 399 400IncludeTerm 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 407IncludeEndTerm 408 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);} 409 ; 410 411ExternalTerm 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 426BankFieldTerm 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 440FieldUnitList 441 : {$$ = NULL;} 442 | FieldUnit 443 | FieldUnitList ',' /* Allows a trailing comma at list end */ 444 | FieldUnitList ',' 445 FieldUnit {$$ = TrLinkPeerNode ($1,$3);} 446 ; 447 448FieldUnit 449 : FieldUnitEntry {} 450 | OffsetTerm {} 451 | AccessAsTerm {} 452 | ConnectionTerm {} 453 ; 454 455FieldUnitEntry 456 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} 457 | NameSeg ',' 458 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} 459 ; 460 461OffsetTerm 462 : PARSEOP_OFFSET '(' 463 AmlPackageLengthTerm 464 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} 465 | PARSEOP_OFFSET '(' 466 error ')' {$$ = AslDoError(); yyclearin;} 467 ; 468 469AccessAsTerm 470 : PARSEOP_ACCESSAS '(' 471 AccessTypeKeyword 472 OptionalAccessAttribTerm 473 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);} 474 | PARSEOP_ACCESSAS '(' 475 error ')' {$$ = AslDoError(); yyclearin;} 476 ; 477 478ConnectionTerm 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 493CreateBitFieldTerm 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 503CreateByteFieldTerm 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 513CreateDWordFieldTerm 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 523CreateFieldTerm 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 534CreateQWordFieldTerm 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 544CreateWordFieldTerm 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 554DataRegionTerm 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 565DeviceTerm 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 574EventTerm 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 582FieldTerm 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 594FunctionTerm 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 608IndexFieldTerm 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 621MethodTerm 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 635MutexTerm 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 644OpRegionTerm 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 655OpRegionSpaceIdTerm 656 : RegionSpaceKeyword {} 657 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 658 ; 659 660PowerResTerm 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 671ProcessorTerm 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 683ThermalZoneTerm 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 696AliasTerm 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 705NameTerm 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 714ScopeTerm 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 727BreakTerm 728 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} 729 ; 730 731BreakPointTerm 732 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} 733 ; 734 735ContinueTerm 736 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} 737 ; 738 739FatalTerm 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 749IfElseTerm 750 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} 751 ; 752 753IfTerm 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 763ElseTerm 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 788LoadTerm 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 797NoOpTerm 798 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} 799 ; 800 801NotifyTerm 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 810ReleaseTerm 811 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);} 812 SuperName 813 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 814 | PARSEOP_RELEASE '(' 815 error ')' {$$ = AslDoError(); yyclearin;} 816 ; 817 818ResetTerm 819 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);} 820 SuperName 821 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 822 | PARSEOP_RESET '(' 823 error ')' {$$ = AslDoError(); yyclearin;} 824 ; 825 826ReturnTerm 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 835SignalTerm 836 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);} 837 SuperName 838 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 839 | PARSEOP_SIGNAL '(' 840 error ')' {$$ = AslDoError(); yyclearin;} 841 ; 842 843SleepTerm 844 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);} 845 TermArg 846 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 847 | PARSEOP_SLEEP '(' 848 error ')' {$$ = AslDoError(); yyclearin;} 849 ; 850 851StallTerm 852 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);} 853 TermArg 854 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 855 | PARSEOP_STALL '(' 856 error ')' {$$ = AslDoError(); yyclearin;} 857 ; 858 859SwitchTerm 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 873CaseDefaultTermList 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/* 885CaseDefaultTermList 886 : {$$ = NULL;} 887 | CaseTermList 888 DefaultTerm 889 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} 890 | CaseTermList 891 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 892 ; 893 894CaseTermList 895 : {$$ = NULL;} 896 | CaseTerm {} 897 | CaseTermList 898 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 899 ; 900*/ 901 902CaseTerm 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 911DefaultTerm 912 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);} 913 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 914 | PARSEOP_DEFAULT '{' 915 error '}' {$$ = AslDoError(); yyclearin;} 916 ; 917 918UnloadTerm 919 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);} 920 SuperName 921 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 922 | PARSEOP_UNLOAD '(' 923 error ')' {$$ = AslDoError(); yyclearin;} 924 ; 925 926WhileTerm 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 938AcquireTerm 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 947AddTerm 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 957AndTerm 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 967ConcatTerm 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 977ConcatResTerm 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 987CondRefOfTerm 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 996CopyObjectTerm 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 1005DecTerm 1006 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);} 1007 SuperName 1008 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1009 | PARSEOP_DECREMENT '(' 1010 error ')' {$$ = AslDoError(); yyclearin;} 1011 ; 1012 1013DerefOfTerm 1014 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);} 1015 TermArg 1016 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1017 | PARSEOP_DEREFOF '(' 1018 error ')' {$$ = AslDoError(); yyclearin;} 1019 ; 1020 1021DivideTerm 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 1032FindSetLeftBitTerm 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 1041FindSetRightBitTerm 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 1050FromBCDTerm 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 1059IncTerm 1060 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);} 1061 SuperName 1062 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1063 | PARSEOP_INCREMENT '(' 1064 error ')' {$$ = AslDoError(); yyclearin;} 1065 ; 1066 1067IndexTerm 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 1077LAndTerm 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 1086LEqualTerm 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 1095LGreaterTerm 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 1104LGreaterEqualTerm 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 1113LLessTerm 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 1122LLessEqualTerm 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 1131LNotTerm 1132 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);} 1133 TermArg 1134 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1135 | PARSEOP_LNOT '(' 1136 error ')' {$$ = AslDoError(); yyclearin;} 1137 ; 1138 1139LNotEqualTerm 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 1148LoadTableTerm 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 1161LOrTerm 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 1170MatchTerm 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 1183MidTerm 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 1194ModTerm 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 1204MultiplyTerm 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 1214NAndTerm 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 1224NOrTerm 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 1234NotTerm 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 1243ObjectTypeTerm 1244 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} 1245 ObjectTypeName 1246 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1247 | PARSEOP_OBJECTTYPE '(' 1248 error ')' {$$ = AslDoError(); yyclearin;} 1249 ; 1250 1251OrTerm 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 */ 1265RefOfTerm 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 1273ShiftLeftTerm 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 1283ShiftRightTerm 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 1293SizeOfTerm 1294 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);} 1295 SuperName 1296 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1297 | PARSEOP_SIZEOF '(' 1298 error ')' {$$ = AslDoError(); yyclearin;} 1299 ; 1300 1301StoreTerm 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 1310SubtractTerm 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 1320TimerTerm 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 1328ToBCDTerm 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 1337ToBufferTerm 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 1346ToDecimalStringTerm 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 1355ToHexStringTerm 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 1364ToIntegerTerm 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 1373ToStringTerm 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 1383ToUUIDTerm 1384 : PARSEOP_TOUUID '(' 1385 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} 1386 | PARSEOP_TOUUID '(' 1387 error ')' {$$ = AslDoError(); yyclearin;} 1388 ; 1389 1390WaitTerm 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 1399XOrTerm 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 1413AccessAttribKeyword 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 1432AccessTypeKeyword 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 1441AddressingModeKeyword 1442 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);} 1443 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);} 1444 ; 1445 1446AddressKeyword 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 1453AddressSpaceKeyword 1454 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);} 1455 | RegionSpaceKeyword {} 1456 ; 1457 1458BitsPerByteKeyword 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 1466ClockPhaseKeyword 1467 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);} 1468 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);} 1469 ; 1470 1471ClockPolarityKeyword 1472 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);} 1473 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);} 1474 ; 1475 1476DecodeKeyword 1477 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} 1478 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} 1479 ; 1480 1481DevicePolarityKeyword 1482 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);} 1483 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);} 1484 ; 1485 1486DMATypeKeyword 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 1493EndianKeyword 1494 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);} 1495 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);} 1496 ; 1497 1498FlowControlKeyword 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 1504InterruptLevel 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 1510InterruptTypeKeyword 1511 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} 1512 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} 1513 ; 1514 1515IODecodeKeyword 1516 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} 1517 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} 1518 ; 1519 1520IoRestrictionKeyword 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 1527LockRuleKeyword 1528 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} 1529 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} 1530 ; 1531 1532MatchOpKeyword 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 1541MaxKeyword 1542 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} 1543 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} 1544 ; 1545 1546MemTypeKeyword 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 1553MinKeyword 1554 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} 1555 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} 1556 ; 1557 1558ObjectTypeKeyword 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 1577ParityTypeKeyword 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 1585PinConfigByte 1586 : PinConfigKeyword {$$ = $1;} 1587 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 1588 ; 1589 1590PinConfigKeyword 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 1597RangeTypeKeyword 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 1603RegionSpaceKeyword 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 1618ResourceTypeKeyword 1619 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1620 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} 1621 ; 1622 1623SerializeRuleKeyword 1624 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} 1625 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} 1626 ; 1627 1628ShareTypeKeyword 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 1635SlaveModeKeyword 1636 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);} 1637 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);} 1638 ; 1639 1640StopBitsKeyword 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 1647TranslationKeyword 1648 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} 1649 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} 1650 ; 1651 1652TypeKeyword 1653 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} 1654 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} 1655 ; 1656 1657UpdateRuleKeyword 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 1663WireModeKeyword 1664 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);} 1665 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);} 1666 ; 1667 1668XferSizeKeyword 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 1677XferTypeKeyword 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 1687SuperName 1688 : NameString {} 1689 | ArgTerm {} 1690 | LocalTerm {} 1691 | DebugTerm {} 1692 | Type6Opcode {} 1693 1694/* For ObjectType: SuperName except for UserTerm (method invocation) */ 1695 1696ObjectTypeName 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 1708ArgTerm 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 1718LocalTerm 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 1729DebugTerm 1730 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} 1731 ; 1732 1733 1734ByteConst 1735 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 1736 ; 1737 1738WordConst 1739 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 1740 ; 1741 1742DWordConst 1743 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 1744 ; 1745 1746QWordConst 1747 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 1748 ; 1749 1750Integer 1751 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} 1752 ; 1753 1754String 1755 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} 1756 ; 1757 1758ConstTerm 1759 : ConstExprTerm {} 1760 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} 1761 ; 1762 1763ConstExprTerm 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 */ 1781ByteConstExpr 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 1788WordConstExpr 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 1795DWordConstExpr 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 1802QWordConstExpr 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 1811OptionalCount 1812 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 1813 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 1814 | ',' TermArg {$$ = $2;} 1815 ; 1816 1817BufferTerm 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 1826BufferTermData 1827 : ByteList {} 1828 | StringData {} 1829 ; 1830 1831ByteList 1832 : {$$ = NULL;} 1833 | ByteConstExpr 1834 | ByteList ',' /* Allows a trailing comma at list end */ 1835 | ByteList ',' 1836 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} 1837 ; 1838 1839DataBufferTerm 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 1848DWordList 1849 : {$$ = NULL;} 1850 | DWordConstExpr 1851 | DWordList ',' /* Allows a trailing comma at list end */ 1852 | DWordList ',' 1853 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} 1854 ; 1855 1856PackageTerm 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 1865PackageList 1866 : {$$ = NULL;} 1867 | PackageElement 1868 | PackageList ',' /* Allows a trailing comma at list end */ 1869 | PackageList ',' 1870 PackageElement {$$ = TrLinkPeerNode ($1,$3);} 1871 ; 1872 1873PackageElement 1874 : DataObject {} 1875 | NameString {} 1876 ; 1877 1878VarPackageLengthTerm 1879 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 1880 | TermArg {$$ = $1;} 1881 ; 1882 1883 1884/******* Macros ***********************************************/ 1885 1886 1887EISAIDTerm 1888 : PARSEOP_EISAID '(' 1889 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} 1890 | PARSEOP_EISAID '(' 1891 error ')' {$$ = AslDoError(); yyclearin;} 1892 ; 1893 1894UnicodeTerm 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 */ 1910ResourceTemplateTerm 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 1920ResourceMacroList 1921 : {$$ = NULL;} 1922 | ResourceMacroList 1923 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} 1924 ; 1925 1926ResourceMacroTerm 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 1962DMATerm 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 1974DWordIOTerm 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 1996DWordMemoryTerm 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 2019DWordSpaceTerm 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 2041EndDependentFnTerm 2042 : PARSEOP_ENDDEPENDENTFN '(' 2043 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} 2044 | PARSEOP_ENDDEPENDENTFN '(' 2045 error ')' {$$ = AslDoError(); yyclearin;} 2046 ; 2047 2048ExtendedIOTerm 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 2069ExtendedMemoryTerm 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 2091ExtendedSpaceTerm 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 2111FixedDmaTerm 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 2122FixedIOTerm 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 2132GpioIntTerm 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 2150GpioIoTerm 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 2168I2cSerialBusTerm 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 2184InterruptTerm 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 2199IOTerm 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 2212IRQNoFlagsTerm 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 2221IRQTerm 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 2233Memory24Term 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 2246Memory32FixedTerm 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 2257Memory32Term 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 2270QWordIOTerm 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 2292QWordMemoryTerm 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 2315QWordSpaceTerm 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 2336RegisterTerm 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 2349SpiSerialBusTerm 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 2369StartDependentFnNoPriTerm 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 2377StartDependentFnTerm 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 2387UartSerialBusTerm 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 2408VendorLongTerm 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 2417VendorShortTerm 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 2426WordBusNumberTerm 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 2445WordIOTerm 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 2467WordSpaceTerm 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 2493NameString 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 2501NameSeg 2502 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} 2503 ; 2504 2505 2506/******* Helper rules ****************************************************/ 2507 2508 2509AmlPackageLengthTerm 2510 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} 2511 ; 2512 2513NameStringItem 2514 : ',' NameString {$$ = $2;} 2515 | ',' error {$$ = AslDoError (); yyclearin;} 2516 ; 2517 2518TermArgItem 2519 : ',' TermArg {$$ = $2;} 2520 | ',' error {$$ = AslDoError (); yyclearin;} 2521 ; 2522 2523OptionalBusMasterKeyword 2524 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2525 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2526 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} 2527 ; 2528 2529OptionalAccessAttribTerm 2530 : {$$ = NULL;} 2531 | ',' {$$ = NULL;} 2532 | ',' ByteConstExpr {$$ = $2;} 2533 | ',' AccessAttribKeyword {$$ = $2;} 2534 ; 2535 2536OptionalAccessSize 2537 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2538 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2539 | ',' ByteConstExpr {$$ = $2;} 2540 ; 2541 2542OptionalAddressingMode 2543 : ',' {$$ = NULL;} 2544 | ',' AddressingModeKeyword {$$ = $2;} 2545 ; 2546 2547OptionalAddressRange 2548 : {$$ = NULL;} 2549 | ',' {$$ = NULL;} 2550 | ',' AddressKeyword {$$ = $2;} 2551 ; 2552 2553OptionalBitsPerByte 2554 : ',' {$$ = NULL;} 2555 | ',' BitsPerByteKeyword {$$ = $2;} 2556 ; 2557 2558OptionalBuffer_Last 2559 : {$$ = NULL;} 2560 | ',' {$$ = NULL;} 2561 | ',' DataBufferTerm {$$ = $2;} 2562 ; 2563 2564OptionalByteConstExpr 2565 : {$$ = NULL;} 2566 | ',' {$$ = NULL;} 2567 | ',' ByteConstExpr {$$ = $2;} 2568 ; 2569 2570OptionalDecodeType 2571 : ',' {$$ = NULL;} 2572 | ',' DecodeKeyword {$$ = $2;} 2573 ; 2574 2575OptionalDevicePolarity 2576 : ',' {$$ = NULL;} 2577 | ',' DevicePolarityKeyword {$$ = $2;} 2578 ; 2579 2580OptionalDWordConstExpr 2581 : {$$ = NULL;} 2582 | ',' {$$ = NULL;} 2583 | ',' DWordConstExpr {$$ = $2;} 2584 ; 2585 2586OptionalEndian 2587 : ',' {$$ = NULL;} 2588 | ',' EndianKeyword {$$ = $2;} 2589 ; 2590 2591OptionalFlowControl 2592 : ',' {$$ = NULL;} 2593 | ',' FlowControlKeyword {$$ = $2;} 2594 ; 2595 2596OptionalIoRestriction 2597 : ',' {$$ = NULL;} 2598 | ',' IoRestrictionKeyword {$$ = $2;} 2599 ; 2600 2601OptionalListString 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 2607OptionalMaxType 2608 : ',' {$$ = NULL;} 2609 | ',' MaxKeyword {$$ = $2;} 2610 ; 2611 2612OptionalMemType 2613 : ',' {$$ = NULL;} 2614 | ',' MemTypeKeyword {$$ = $2;} 2615 ; 2616 2617OptionalMinType 2618 : ',' {$$ = NULL;} 2619 | ',' MinKeyword {$$ = $2;} 2620 ; 2621 2622OptionalNameString 2623 : {$$ = NULL;} 2624 | ',' {$$ = NULL;} 2625 | ',' NameString {$$ = $2;} 2626 ; 2627 2628OptionalNameString_Last 2629 : {$$ = NULL;} 2630 | ',' {$$ = NULL;} 2631 | ',' NameString {$$ = $2;} 2632 ; 2633 2634OptionalNameString_First 2635 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} 2636 | NameString {$$ = $1;} 2637 ; 2638 2639OptionalObjectTypeKeyword 2640 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 2641 | ',' ObjectTypeKeyword {$$ = $2;} 2642 ; 2643 2644OptionalParityType 2645 : ',' {$$ = NULL;} 2646 | ',' ParityTypeKeyword {$$ = $2;} 2647 ; 2648 2649OptionalQWordConstExpr 2650 : {$$ = NULL;} 2651 | ',' {$$ = NULL;} 2652 | ',' QWordConstExpr {$$ = $2;} 2653 ; 2654 2655OptionalRangeType 2656 : ',' {$$ = NULL;} 2657 | ',' RangeTypeKeyword {$$ = $2;} 2658 ; 2659 2660OptionalReadWriteKeyword 2661 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2662 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2663 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} 2664 ; 2665 2666OptionalReference 2667 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2668 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2669 | ',' TermArg {$$ = $2;} 2670 ; 2671 2672OptionalResourceType_First 2673 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2674 | ResourceTypeKeyword {$$ = $1;} 2675 ; 2676 2677OptionalResourceType 2678 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2679 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2680 | ',' ResourceTypeKeyword {$$ = $2;} 2681 ; 2682 2683OptionalReturnArg 2684 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */ 2685 | TermArg {$$ = $1;} 2686 ; 2687 2688OptionalSerializeRuleKeyword 2689 : {$$ = NULL;} 2690 | ',' {$$ = NULL;} 2691 | ',' SerializeRuleKeyword {$$ = $2;} 2692 ; 2693 2694OptionalSlaveMode 2695 : ',' {$$ = NULL;} 2696 | ',' SlaveModeKeyword {$$ = $2;} 2697 ; 2698 2699OptionalShareType 2700 : {$$ = NULL;} 2701 | ',' {$$ = NULL;} 2702 | ',' ShareTypeKeyword {$$ = $2;} 2703 ; 2704 2705OptionalShareType_First 2706 : {$$ = NULL;} 2707 | ShareTypeKeyword {$$ = $1;} 2708 ; 2709 2710OptionalStopBits 2711 : ',' {$$ = NULL;} 2712 | ',' StopBitsKeyword {$$ = $2;} 2713 ; 2714 2715OptionalStringData 2716 : {$$ = NULL;} 2717 | ',' {$$ = NULL;} 2718 | ',' StringData {$$ = $2;} 2719 ; 2720 2721OptionalTermArg 2722 : {$$ = NULL;} 2723 | TermArg {$$ = $1;} 2724 ; 2725 2726OptionalType 2727 : {$$ = NULL;} 2728 | ',' {$$ = NULL;} 2729 | ',' TypeKeyword {$$ = $2;} 2730 ; 2731 2732OptionalType_Last 2733 : {$$ = NULL;} 2734 | ',' {$$ = NULL;} 2735 | ',' TypeKeyword {$$ = $2;} 2736 ; 2737 2738OptionalTranslationType_Last 2739 : {$$ = NULL;} 2740 | ',' {$$ = NULL;} 2741 | ',' TranslationKeyword {$$ = $2;} 2742 ; 2743 2744OptionalWireMode 2745 : ',' {$$ = NULL;} 2746 | ',' WireModeKeyword {$$ = $2;} 2747 ; 2748 2749OptionalWordConst 2750 : {$$ = NULL;} 2751 | WordConst {$$ = $1;} 2752 ; 2753 2754OptionalWordConstExpr 2755 : ',' {$$ = NULL;} 2756 | ',' WordConstExpr {$$ = $2;} 2757 ; 2758 2759OptionalXferSize 2760 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2761 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2762 | ',' XferSizeKeyword {$$ = $2;} 2763 ; 2764