aslexternal.c (4b49587c3dd54aed8eb103d838a89ca79484a9b6) | aslexternal.c (6f1f1a6395c91c5a845727d7313921a6fe3d297b) |
---|---|
1/****************************************************************************** 2 * 3 * Module Name: aslexternal - ASL External opcode compiler support 4 * 5 *****************************************************************************/ 6 7/****************************************************************************** 8 * --- 195 unchanged lines hidden (view full) --- 204 205 ListOp = TrAllocateOp (PARSEOP_DEFAULT_ARG); 206 207 /* Store External node as child */ 208 209 ListOp->Asl.Child = Op; 210 ListOp->Asl.Next = NULL; 211 | 1/****************************************************************************** 2 * 3 * Module Name: aslexternal - ASL External opcode compiler support 4 * 5 *****************************************************************************/ 6 7/****************************************************************************** 8 * --- 195 unchanged lines hidden (view full) --- 204 205 ListOp = TrAllocateOp (PARSEOP_DEFAULT_ARG); 206 207 /* Store External node as child */ 208 209 ListOp->Asl.Child = Op; 210 ListOp->Asl.Next = NULL; 211 |
212 if (Gbl_ExternalsListHead) | 212 if (AslGbl_ExternalsListHead) |
213 { 214 /* Link new External to end of list */ 215 | 213 { 214 /* Link new External to end of list */ 215 |
216 Prev = Gbl_ExternalsListHead; | 216 Prev = AslGbl_ExternalsListHead; |
217 Next = Prev; 218 while (Next) 219 { 220 Prev = Next; 221 Next = Next->Asl.Next; 222 } 223 224 Prev->Asl.Next = ListOp; 225 } 226 else 227 { | 217 Next = Prev; 218 while (Next) 219 { 220 Prev = Next; 221 Next = Next->Asl.Next; 222 } 223 224 Prev->Asl.Next = ListOp; 225 } 226 else 227 { |
228 Gbl_ExternalsListHead = ListOp; | 228 AslGbl_ExternalsListHead = ListOp; |
229 } 230} 231 232 233/******************************************************************************* 234 * 235 * FUNCTION: ExInsertArgCount 236 * --- 17 unchanged lines hidden (view full) --- 254 char * ExternalName; 255 char * CallName; 256 UINT16 ArgCount = 0; 257 ACPI_STATUS Status; 258 259 260 CallName = AcpiNsGetNormalizedPathname (Op->Asl.Node, TRUE); 261 | 229 } 230} 231 232 233/******************************************************************************* 234 * 235 * FUNCTION: ExInsertArgCount 236 * --- 17 unchanged lines hidden (view full) --- 254 char * ExternalName; 255 char * CallName; 256 UINT16 ArgCount = 0; 257 ACPI_STATUS Status; 258 259 260 CallName = AcpiNsGetNormalizedPathname (Op->Asl.Node, TRUE); 261 |
262 Next = Gbl_ExternalsListHead; | 262 Next = AslGbl_ExternalsListHead; |
263 while (Next) 264 { 265 ArgCount = 0; 266 267 /* Skip if External node already handled */ 268 269 if (Next->Asl.Child->Asl.CompileFlags & OP_VISITED) 270 { --- 68 unchanged lines hidden (view full) --- 339 UINT32 Level, 340 void *Context) 341{ 342 343 /* External list head saved in the definition block op */ 344 345 if (Op->Asl.ParseOpcode == PARSEOP_DEFINITION_BLOCK) 346 { | 263 while (Next) 264 { 265 ArgCount = 0; 266 267 /* Skip if External node already handled */ 268 269 if (Next->Asl.Child->Asl.CompileFlags & OP_VISITED) 270 { --- 68 unchanged lines hidden (view full) --- 339 UINT32 Level, 340 void *Context) 341{ 342 343 /* External list head saved in the definition block op */ 344 345 if (Op->Asl.ParseOpcode == PARSEOP_DEFINITION_BLOCK) 346 { |
347 Gbl_ExternalsListHead = Op->Asl.Value.Arg; | 347 AslGbl_ExternalsListHead = Op->Asl.Value.Arg; |
348 } 349 | 348 } 349 |
350 if (!Gbl_ExternalsListHead) | 350 if (!AslGbl_ExternalsListHead) |
351 { 352 return (AE_OK); 353 } 354 355 if (Op->Asl.ParseOpcode != PARSEOP_METHODCALL) 356 { 357 return (AE_OK); 358 } --- 37 unchanged lines hidden (view full) --- 396 397 if (Op->Asl.ParseOpcode == PARSEOP_DEFINITION_BLOCK) 398 { 399 /* 400 * Process any existing external list. (Support for 401 * multiple definition blocks in a single file/compile) 402 */ 403 ExMoveExternals (Op); | 351 { 352 return (AE_OK); 353 } 354 355 if (Op->Asl.ParseOpcode != PARSEOP_METHODCALL) 356 { 357 return (AE_OK); 358 } --- 37 unchanged lines hidden (view full) --- 396 397 if (Op->Asl.ParseOpcode == PARSEOP_DEFINITION_BLOCK) 398 { 399 /* 400 * Process any existing external list. (Support for 401 * multiple definition blocks in a single file/compile) 402 */ 403 ExMoveExternals (Op); |
404 Gbl_ExternalsListHead = NULL; | 404 AslGbl_ExternalsListHead = NULL; |
405 } 406 407 return (AE_OK); 408} 409 410 411/******************************************************************************* 412 * --- 21 unchanged lines hidden (view full) --- 434 ACPI_PARSE_OBJECT *Prev; 435 ACPI_PARSE_OBJECT *Next; 436 char *ExternalName; 437 ACPI_OBJECT_TYPE ObjType; 438 ACPI_STATUS Status; 439 UINT32 i; 440 441 | 405 } 406 407 return (AE_OK); 408} 409 410 411/******************************************************************************* 412 * --- 21 unchanged lines hidden (view full) --- 434 ACPI_PARSE_OBJECT *Prev; 435 ACPI_PARSE_OBJECT *Next; 436 char *ExternalName; 437 ACPI_OBJECT_TYPE ObjType; 438 ACPI_STATUS Status; 439 UINT32 i; 440 441 |
442 if (!Gbl_ExternalsListHead) | 442 if (!AslGbl_ExternalsListHead) |
443 { 444 return; 445 } 446 447 /* Remove the External nodes from the tree */ 448 | 443 { 444 return; 445 } 446 447 /* Remove the External nodes from the tree */ 448 |
449 NextOp = Gbl_ExternalsListHead; | 449 NextOp = AslGbl_ExternalsListHead; |
450 while (NextOp) 451 { 452 /* 453 * The External is stored in child pointer of each node in the 454 * list 455 */ 456 ExternalOp = NextOp->Asl.Child; 457 --- 57 unchanged lines hidden (view full) --- 515 { 516 /* External was the first child node */ 517 518 ParentOp->Asl.Child = ExternalOp->Asl.Next; 519 } 520 521 Prev->Asl.Next = ExternalOp->Asl.Next; 522 ExternalOp->Asl.Next = NULL; | 450 while (NextOp) 451 { 452 /* 453 * The External is stored in child pointer of each node in the 454 * list 455 */ 456 ExternalOp = NextOp->Asl.Child; 457 --- 57 unchanged lines hidden (view full) --- 515 { 516 /* External was the first child node */ 517 518 ParentOp->Asl.Child = ExternalOp->Asl.Next; 519 } 520 521 Prev->Asl.Next = ExternalOp->Asl.Next; 522 ExternalOp->Asl.Next = NULL; |
523 ExternalOp->Asl.Parent = Gbl_ExternalsListHead; | 523 ExternalOp->Asl.Parent = AslGbl_ExternalsListHead; |
524 525 /* Point the External to the next in the list */ 526 527 if (NextOp->Asl.Next) 528 { 529 ExternalOp->Asl.Next = NextOp->Asl.Next->Asl.Child; 530 } 531 532 NextOp = NextOp->Asl.Next; 533 } 534 535 /* 536 * Loop again to remove MethodObj Externals for which 537 * a MethodCall was not found (dead external reference) 538 */ | 524 525 /* Point the External to the next in the list */ 526 527 if (NextOp->Asl.Next) 528 { 529 ExternalOp->Asl.Next = NextOp->Asl.Next->Asl.Child; 530 } 531 532 NextOp = NextOp->Asl.Next; 533 } 534 535 /* 536 * Loop again to remove MethodObj Externals for which 537 * a MethodCall was not found (dead external reference) 538 */ |
539 Prev = Gbl_ExternalsListHead->Asl.Child; | 539 Prev = AslGbl_ExternalsListHead->Asl.Child; |
540 Next = Prev; 541 while (Next) 542 { 543 ObjType = (ACPI_OBJECT_TYPE) 544 Next->Asl.Child->Asl.Next->Asl.Value.Integer; 545 546 if (ObjType == ACPI_TYPE_METHOD && 547 !(Next->Asl.CompileFlags & OP_VISITED)) 548 { 549 if (Next == Prev) 550 { | 540 Next = Prev; 541 while (Next) 542 { 543 ObjType = (ACPI_OBJECT_TYPE) 544 Next->Asl.Child->Asl.Next->Asl.Value.Integer; 545 546 if (ObjType == ACPI_TYPE_METHOD && 547 !(Next->Asl.CompileFlags & OP_VISITED)) 548 { 549 if (Next == Prev) 550 { |
551 Gbl_ExternalsListHead->Asl.Child = Next->Asl.Next; | 551 AslGbl_ExternalsListHead->Asl.Child = Next->Asl.Next; |
552 Next->Asl.Next = NULL; | 552 Next->Asl.Next = NULL; |
553 Prev = Gbl_ExternalsListHead->Asl.Child; | 553 Prev = AslGbl_ExternalsListHead->Asl.Child; |
554 Next = Prev; 555 continue; 556 } 557 else 558 { 559 Prev->Asl.Next = Next->Asl.Next; 560 Next->Asl.Next = NULL; 561 Next = Prev->Asl.Next; 562 continue; 563 } 564 } 565 566 Prev = Next; 567 Next = Next->Asl.Next; 568 } 569 570 /* If list is now empty, don't bother to make If (0) block */ 571 | 554 Next = Prev; 555 continue; 556 } 557 else 558 { 559 Prev->Asl.Next = Next->Asl.Next; 560 Next->Asl.Next = NULL; 561 Next = Prev->Asl.Next; 562 continue; 563 } 564 } 565 566 Prev = Next; 567 Next = Next->Asl.Next; 568 } 569 570 /* If list is now empty, don't bother to make If (0) block */ 571 |
572 if (!Gbl_ExternalsListHead->Asl.Child) | 572 if (!AslGbl_ExternalsListHead->Asl.Child) |
573 { 574 return; 575 } 576 577 /* Convert Gbl_ExternalsListHead parent to If(). */ 578 | 573 { 574 return; 575 } 576 577 /* Convert Gbl_ExternalsListHead parent to If(). */ 578 |
579 Gbl_ExternalsListHead->Asl.ParseOpcode = PARSEOP_IF; 580 Gbl_ExternalsListHead->Asl.AmlOpcode = AML_IF_OP; 581 Gbl_ExternalsListHead->Asl.CompileFlags = OP_AML_PACKAGE; 582 UtSetParseOpName (Gbl_ExternalsListHead); | 579 AslGbl_ExternalsListHead->Asl.ParseOpcode = PARSEOP_IF; 580 AslGbl_ExternalsListHead->Asl.AmlOpcode = AML_IF_OP; 581 AslGbl_ExternalsListHead->Asl.CompileFlags = OP_AML_PACKAGE; 582 UtSetParseOpName (AslGbl_ExternalsListHead); |
583 584 /* Create a Zero op for the If predicate */ 585 586 PredicateOp = TrAllocateOp (PARSEOP_ZERO); 587 PredicateOp->Asl.AmlOpcode = AML_ZERO_OP; 588 | 583 584 /* Create a Zero op for the If predicate */ 585 586 PredicateOp = TrAllocateOp (PARSEOP_ZERO); 587 PredicateOp->Asl.AmlOpcode = AML_ZERO_OP; 588 |
589 PredicateOp->Asl.Parent = Gbl_ExternalsListHead; | 589 PredicateOp->Asl.Parent = AslGbl_ExternalsListHead; |
590 PredicateOp->Asl.Child = NULL; | 590 PredicateOp->Asl.Child = NULL; |
591 PredicateOp->Asl.Next = Gbl_ExternalsListHead->Asl.Child; 592 Gbl_ExternalsListHead->Asl.Child = PredicateOp; | 591 PredicateOp->Asl.Next = AslGbl_ExternalsListHead->Asl.Child; 592 AslGbl_ExternalsListHead->Asl.Child = PredicateOp; |
593 594 /* Set line numbers (for listings, etc.) */ 595 | 593 594 /* Set line numbers (for listings, etc.) */ 595 |
596 Gbl_ExternalsListHead->Asl.LineNumber = 0; 597 Gbl_ExternalsListHead->Asl.LogicalLineNumber = 0; | 596 AslGbl_ExternalsListHead->Asl.LineNumber = 0; 597 AslGbl_ExternalsListHead->Asl.LogicalLineNumber = 0; |
598 599 PredicateOp->Asl.LineNumber = 0; 600 PredicateOp->Asl.LogicalLineNumber = 0; 601 602 /* Insert block back in the list */ 603 604 Prev = DefinitionBlockOp->Asl.Child; 605 Next = Prev; --- 5 unchanged lines hidden (view full) --- 611 Prev = Next; 612 Next = Prev->Asl.Next; 613 } 614 615 if (Next) 616 { 617 /* Definition Block is not empty */ 618 | 598 599 PredicateOp->Asl.LineNumber = 0; 600 PredicateOp->Asl.LogicalLineNumber = 0; 601 602 /* Insert block back in the list */ 603 604 Prev = DefinitionBlockOp->Asl.Child; 605 Next = Prev; --- 5 unchanged lines hidden (view full) --- 611 Prev = Next; 612 Next = Prev->Asl.Next; 613 } 614 615 if (Next) 616 { 617 /* Definition Block is not empty */ 618 |
619 Gbl_ExternalsListHead->Asl.Next = Next; | 619 AslGbl_ExternalsListHead->Asl.Next = Next; |
620 } 621 else 622 { 623 /* Definition Block is empty. */ 624 | 620 } 621 else 622 { 623 /* Definition Block is empty. */ 624 |
625 Gbl_ExternalsListHead->Asl.Next = NULL; | 625 AslGbl_ExternalsListHead->Asl.Next = NULL; |
626 } 627 | 626 } 627 |
628 Prev->Asl.Next = Gbl_ExternalsListHead; 629 Gbl_ExternalsListHead->Asl.Parent = Prev->Asl.Parent; | 628 Prev->Asl.Next = AslGbl_ExternalsListHead; 629 AslGbl_ExternalsListHead->Asl.Parent = Prev->Asl.Parent; |
630} | 630} |