dsobject.c (80062) | dsobject.c (82367) |
---|---|
1/****************************************************************************** 2 * 3 * Module Name: dsobject - Dispatcher object management routines | 1/****************************************************************************** 2 * 3 * Module Name: dsobject - Dispatcher object management routines |
4 * $Revision: 67 $ | 4 * $Revision: 71 $ |
5 * 6 *****************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * 12 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. --- 179 unchanged lines hidden (view full) --- 192 Info->OpRegionCount++; 193 break; 194 195 196 case ACPI_TYPE_METHOD: 197 198 Info->MethodCount++; 199 | 5 * 6 *****************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * 12 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. --- 179 unchanged lines hidden (view full) --- 192 Info->OpRegionCount++; 193 break; 194 195 196 case ACPI_TYPE_METHOD: 197 198 Info->MethodCount++; 199 |
200 if (!(AcpiDbgLevel & TRACE_INIT)) | 200 if (!(AcpiDbgLevel & ACPI_LV_INIT)) |
201 { | 201 { |
202 DEBUG_PRINT_RAW (ACPI_OK, (".")); | 202 ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, ".")); |
203 } 204 205 /* 206 * Set the execution data width (32 or 64) based upon the 207 * revision number of the parent ACPI table. 208 */ 209 210 if (TableRevision == 1) --- 7 unchanged lines hidden (view full) --- 218 */ 219 220 Status = AcpiDsParseMethod (ObjHandle); 221 222 /* TBD: [Errors] what do we do with an error? */ 223 224 if (ACPI_FAILURE (Status)) 225 { | 203 } 204 205 /* 206 * Set the execution data width (32 or 64) based upon the 207 * revision number of the parent ACPI table. 208 */ 209 210 if (TableRevision == 1) --- 7 unchanged lines hidden (view full) --- 218 */ 219 220 Status = AcpiDsParseMethod (ObjHandle); 221 222 /* TBD: [Errors] what do we do with an error? */ 223 224 if (ACPI_FAILURE (Status)) 225 { |
226 DEBUG_PRINTP (ACPI_ERROR, ("Method %p [%4.4s] parse failed! %s\n", | 226 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] parse failed! %s\n", |
227 ObjHandle, &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, 228 AcpiFormatException (Status))); 229 break; 230 } 231 232 /* 233 * Delete the parse tree. We simple re-parse the method 234 * for every execution since there isn't much overhead --- 33 unchanged lines hidden (view full) --- 268{ 269 ACPI_STATUS Status; 270 ACPI_INIT_WALK_INFO Info; 271 272 273 FUNCTION_TRACE ("DsInitializeObjects"); 274 275 | 227 ObjHandle, &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, 228 AcpiFormatException (Status))); 229 break; 230 } 231 232 /* 233 * Delete the parse tree. We simple re-parse the method 234 * for every execution since there isn't much overhead --- 33 unchanged lines hidden (view full) --- 268{ 269 ACPI_STATUS Status; 270 ACPI_INIT_WALK_INFO Info; 271 272 273 FUNCTION_TRACE ("DsInitializeObjects"); 274 275 |
276 DEBUG_PRINTP (TRACE_DISPATCH, 277 ("**** Starting initialization of namespace objects ****\n")); 278 DEBUG_PRINT_RAW (ACPI_OK, ("Parsing Methods:")); | 276 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, 277 "**** Starting initialization of namespace objects ****\n")); 278 ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "Parsing Methods:")); |
279 280 281 Info.MethodCount = 0; 282 Info.OpRegionCount = 0; 283 Info.ObjectCount = 0; 284 Info.TableDesc = TableDesc; 285 286 287 /* Walk entire namespace from the supplied root */ 288 289 Status = AcpiWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, 290 AcpiDsInitOneObject, &Info, NULL); 291 if (ACPI_FAILURE (Status)) 292 { | 279 280 281 Info.MethodCount = 0; 282 Info.OpRegionCount = 0; 283 Info.ObjectCount = 0; 284 Info.TableDesc = TableDesc; 285 286 287 /* Walk entire namespace from the supplied root */ 288 289 Status = AcpiWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, 290 AcpiDsInitOneObject, &Info, NULL); 291 if (ACPI_FAILURE (Status)) 292 { |
293 DEBUG_PRINTP (ACPI_ERROR, ("WalkNamespace failed! %x\n", Status)); | 293 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed! %x\n", Status)); |
294 } 295 | 294 } 295 |
296 DEBUG_PRINT_RAW (ACPI_OK, 297 ("\n%d Control Methods found and parsed (%d nodes total)\n", | 296 ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, 297 "\n%d Control Methods found and parsed (%d nodes total)\n", |
298 Info.MethodCount, Info.ObjectCount)); | 298 Info.MethodCount, Info.ObjectCount)); |
299 DEBUG_PRINTP (TRACE_DISPATCH, 300 ("%d Control Methods found\n", Info.MethodCount)); 301 DEBUG_PRINTP (TRACE_DISPATCH, 302 ("%d Op Regions found\n", Info.OpRegionCount)); | 299 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, 300 "%d Control Methods found\n", Info.MethodCount)); 301 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, 302 "%d Op Regions found\n", Info.OpRegionCount)); |
303 304 return_ACPI_STATUS (AE_OK); 305} 306 307 308/***************************************************************************** 309 * 310 * FUNCTION: AcpiDsInitObjectFromOp --- 10 unchanged lines hidden (view full) --- 321 * 322 ****************************************************************************/ 323 324ACPI_STATUS 325AcpiDsInitObjectFromOp ( 326 ACPI_WALK_STATE *WalkState, 327 ACPI_PARSE_OBJECT *Op, 328 UINT16 Opcode, | 303 304 return_ACPI_STATUS (AE_OK); 305} 306 307 308/***************************************************************************** 309 * 310 * FUNCTION: AcpiDsInitObjectFromOp --- 10 unchanged lines hidden (view full) --- 321 * 322 ****************************************************************************/ 323 324ACPI_STATUS 325AcpiDsInitObjectFromOp ( 326 ACPI_WALK_STATE *WalkState, 327 ACPI_PARSE_OBJECT *Op, 328 UINT16 Opcode, |
329 ACPI_OPERAND_OBJECT **ObjDesc) | 329 ACPI_OPERAND_OBJECT **RetObjDesc) |
330{ 331 ACPI_STATUS Status; 332 ACPI_PARSE_OBJECT *Arg; 333 ACPI_PARSE2_OBJECT *ByteList; 334 ACPI_OPERAND_OBJECT *ArgDesc; 335 ACPI_OPCODE_INFO *OpInfo; | 330{ 331 ACPI_STATUS Status; 332 ACPI_PARSE_OBJECT *Arg; 333 ACPI_PARSE2_OBJECT *ByteList; 334 ACPI_OPERAND_OBJECT *ArgDesc; 335 ACPI_OPCODE_INFO *OpInfo; |
336 ACPI_OPERAND_OBJECT *ObjDesc; |
|
336 337 338 PROC_NAME ("DsInitObjectFromOp"); 339 340 | 337 338 339 PROC_NAME ("DsInitObjectFromOp"); 340 341 |
342 ObjDesc = *RetObjDesc; |
|
341 OpInfo = AcpiPsGetOpcodeInfo (Opcode); 342 if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) 343 { 344 /* Unknown opcode */ 345 346 return (AE_TYPE); 347 } 348 349 350 /* Get and prepare the first argument */ 351 | 343 OpInfo = AcpiPsGetOpcodeInfo (Opcode); 344 if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) 345 { 346 /* Unknown opcode */ 347 348 return (AE_TYPE); 349 } 350 351 352 /* Get and prepare the first argument */ 353 |
352 switch ((*ObjDesc)->Common.Type) | 354 switch (ObjDesc->Common.Type) |
353 { 354 case ACPI_TYPE_BUFFER: 355 356 /* First arg is a number */ 357 358 AcpiDsCreateOperand (WalkState, Op->Value.Arg, 0); 359 ArgDesc = WalkState->Operands [WalkState->NumOperands - 1]; 360 AcpiDsObjStackPop (1, WalkState); --- 6 unchanged lines hidden (view full) --- 367 AcpiUtRemoveReference (ArgDesc); 368 return (Status); 369 } 370 371 /* We are expecting a number */ 372 373 if (ArgDesc->Common.Type != ACPI_TYPE_INTEGER) 374 { | 355 { 356 case ACPI_TYPE_BUFFER: 357 358 /* First arg is a number */ 359 360 AcpiDsCreateOperand (WalkState, Op->Value.Arg, 0); 361 ArgDesc = WalkState->Operands [WalkState->NumOperands - 1]; 362 AcpiDsObjStackPop (1, WalkState); --- 6 unchanged lines hidden (view full) --- 369 AcpiUtRemoveReference (ArgDesc); 370 return (Status); 371 } 372 373 /* We are expecting a number */ 374 375 if (ArgDesc->Common.Type != ACPI_TYPE_INTEGER) 376 { |
375 DEBUG_PRINTP (ACPI_ERROR, 376 ("Expecting number, got obj: %p type %X\n", | 377 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, 378 "Expecting number, got obj: %p type %X\n", |
377 ArgDesc, ArgDesc->Common.Type)); 378 AcpiUtRemoveReference (ArgDesc); 379 return (AE_TYPE); 380 } 381 382 /* Get the value, delete the internal object */ 383 | 379 ArgDesc, ArgDesc->Common.Type)); 380 AcpiUtRemoveReference (ArgDesc); 381 return (AE_TYPE); 382 } 383 384 /* Get the value, delete the internal object */ 385 |
384 (*ObjDesc)->Buffer.Length = (UINT32) ArgDesc->Integer.Value; | 386 ObjDesc->Buffer.Length = (UINT32) ArgDesc->Integer.Value; |
385 AcpiUtRemoveReference (ArgDesc); 386 387 /* Allocate the buffer */ 388 | 387 AcpiUtRemoveReference (ArgDesc); 388 389 /* Allocate the buffer */ 390 |
389 if ((*ObjDesc)->Buffer.Length == 0) | 391 if (ObjDesc->Buffer.Length == 0) |
390 { | 392 { |
391 (*ObjDesc)->Buffer.Pointer = NULL; | 393 ObjDesc->Buffer.Pointer = NULL; |
392 REPORT_WARNING (("Buffer created with zero length in AML\n")); 393 break; 394 } 395 396 else 397 { | 394 REPORT_WARNING (("Buffer created with zero length in AML\n")); 395 break; 396 } 397 398 else 399 { |
398 (*ObjDesc)->Buffer.Pointer = ACPI_MEM_CALLOCATE ( 399 (*ObjDesc)->Buffer.Length); | 400 ObjDesc->Buffer.Pointer = ACPI_MEM_CALLOCATE ( 401 ObjDesc->Buffer.Length); |
400 | 402 |
401 if (!(*ObjDesc)->Buffer.Pointer) | 403 if (!ObjDesc->Buffer.Pointer) |
402 { 403 return (AE_NO_MEMORY); 404 } 405 } 406 407 /* | 404 { 405 return (AE_NO_MEMORY); 406 } 407 } 408 409 /* |
408 * Second arg is the buffer data (optional) 409 * ByteList can be either individual bytes or a 410 * string initializer! | 410 * Second arg is the buffer data (optional) ByteList can be either 411 * individual bytes or a string initializer. |
411 */ 412 | 412 */ 413 |
413 /* skip first arg */ 414 Arg = Op->Value.Arg; | 414 Arg = Op->Value.Arg; /* skip first arg */ 415 |
415 ByteList = (ACPI_PARSE2_OBJECT *) Arg->Next; 416 if (ByteList) 417 { 418 if (ByteList->Opcode != AML_INT_BYTELIST_OP) 419 { | 416 ByteList = (ACPI_PARSE2_OBJECT *) Arg->Next; 417 if (ByteList) 418 { 419 if (ByteList->Opcode != AML_INT_BYTELIST_OP) 420 { |
420 DEBUG_PRINTP (ACPI_ERROR, ("Expecting bytelist, got: %x\n", | 421 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Expecting bytelist, got: %x\n", |
421 ByteList)); 422 return (AE_TYPE); 423 } 424 | 422 ByteList)); 423 return (AE_TYPE); 424 } 425 |
425 MEMCPY ((*ObjDesc)->Buffer.Pointer, ByteList->Data, 426 (*ObjDesc)->Buffer.Length); | 426 MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Data, 427 ObjDesc->Buffer.Length); |
427 } 428 429 break; 430 431 432 case ACPI_TYPE_PACKAGE: 433 434 /* | 428 } 429 430 break; 431 432 433 case ACPI_TYPE_PACKAGE: 434 435 /* |
435 * When called, an internal package object has already 436 * been built and is pointed to by *ObjDesc. 437 * AcpiDsBuildInternalObject build another internal 438 * package object, so remove reference to the original 439 * so that it is deleted. Error checking is done 440 * within the remove reference function. | 436 * When called, an internal package object has already been built and 437 * is pointed to by ObjDesc. AcpiDsBuildInternalObject builds another 438 * internal package object, so remove reference to the original so 439 * that it is deleted. Error checking is done within the remove 440 * reference function. |
441 */ | 441 */ |
442 AcpiUtRemoveReference(*ObjDesc); 443 444 Status = AcpiDsBuildInternalObject (WalkState, Op, ObjDesc); | 442 AcpiUtRemoveReference (ObjDesc); 443 Status = AcpiDsBuildInternalObject (WalkState, Op, RetObjDesc); |
445 break; 446 447 case ACPI_TYPE_INTEGER: | 444 break; 445 446 case ACPI_TYPE_INTEGER: |
448 (*ObjDesc)->Integer.Value = Op->Value.Integer; | 447 ObjDesc->Integer.Value = Op->Value.Integer; |
449 break; 450 451 452 case ACPI_TYPE_STRING: | 448 break; 449 450 451 case ACPI_TYPE_STRING: |
453 (*ObjDesc)->String.Pointer = Op->Value.String; 454 (*ObjDesc)->String.Length = STRLEN (Op->Value.String); | 452 ObjDesc->String.Pointer = Op->Value.String; 453 ObjDesc->String.Length = STRLEN (Op->Value.String); |
455 break; 456 457 458 case ACPI_TYPE_METHOD: 459 break; 460 461 462 case INTERNAL_TYPE_REFERENCE: 463 464 switch (ACPI_GET_OP_CLASS (OpInfo)) 465 { 466 case OPTYPE_LOCAL_VARIABLE: 467 468 /* Split the opcode into a base opcode + offset */ 469 | 454 break; 455 456 457 case ACPI_TYPE_METHOD: 458 break; 459 460 461 case INTERNAL_TYPE_REFERENCE: 462 463 switch (ACPI_GET_OP_CLASS (OpInfo)) 464 { 465 case OPTYPE_LOCAL_VARIABLE: 466 467 /* Split the opcode into a base opcode + offset */ 468 |
470 (*ObjDesc)->Reference.Opcode = AML_LOCAL_OP; 471 (*ObjDesc)->Reference.Offset = Opcode - AML_LOCAL_OP; | 469 ObjDesc->Reference.Opcode = AML_LOCAL_OP; 470 ObjDesc->Reference.Offset = Opcode - AML_LOCAL_OP; |
472 break; 473 | 471 break; 472 |
473 |
|
474 case OPTYPE_METHOD_ARGUMENT: 475 476 /* Split the opcode into a base opcode + offset */ 477 | 474 case OPTYPE_METHOD_ARGUMENT: 475 476 /* Split the opcode into a base opcode + offset */ 477 |
478 (*ObjDesc)->Reference.Opcode = AML_ARG_OP; 479 (*ObjDesc)->Reference.Offset = Opcode - AML_ARG_OP; | 478 ObjDesc->Reference.Opcode = AML_ARG_OP; 479 ObjDesc->Reference.Offset = Opcode - AML_ARG_OP; |
480 break; 481 | 480 break; 481 |
482 483#ifdef INTEGER_CONST__ 484 case OPTYPE_CONSTANT: 485 486 /* TBD: Why is the DEBUG object a CONSTANT? */ 487 488 if (Op->Opcode == AML_DEBUG_OP) 489 { 490 break; 491 } 492 493 /* Reference object no longer needed */ 494 495 AcpiUtRemoveReference (ObjDesc); 496 497 /* Create/Init a new Integer object */ 498 499 ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); 500 if (!ObjDesc) 501 { 502 return_ACPI_STATUS (AE_NO_MEMORY); 503 } 504 505 /* 506 * Decode constants here. Turn them into real integer objects 507 * that are initialized to the value of the constant. 508 */ 509 switch (Op->Opcode) 510 { 511 case AML_ONE_OP: 512 ObjDesc->Integer.Value = 1; 513 break; 514 515 case AML_ONES_OP: 516 ObjDesc->Integer.Value = ACPI_INTEGER_MAX; 517 break; 518 519 case AML_REVISION_OP: 520 ObjDesc->Integer.Value = ACPI_CA_VERSION; 521 break; 522 523 case AML_ZERO_OP: 524 ObjDesc->Integer.Flags |= AOPOBJ_ZERO_CONST; 525 ObjDesc->Integer.Value = 0; 526 break; 527 528 default: 529 ObjDesc->Integer.Value = 0; 530 break; 531 } 532 533 *RetObjDesc = ObjDesc; 534 break; 535#endif 536 |
|
482 default: /* Constants, Literals, etc.. */ 483 484 if (Op->Opcode == AML_INT_NAMEPATH_OP) 485 { 486 /* Node was saved in Op */ 487 | 537 default: /* Constants, Literals, etc.. */ 538 539 if (Op->Opcode == AML_INT_NAMEPATH_OP) 540 { 541 /* Node was saved in Op */ 542 |
488 (*ObjDesc)->Reference.Node = Op->Node; | 543 ObjDesc->Reference.Node = Op->Node; |
489 } 490 | 544 } 545 |
491 (*ObjDesc)->Reference.Opcode = Opcode; | 546 ObjDesc->Reference.Opcode = Opcode; |
492 break; 493 } 494 495 break; 496 497 498 default: 499 | 547 break; 548 } 549 550 break; 551 552 553 default: 554 |
500 DEBUG_PRINTP (ACPI_ERROR, ("Unimplemented data type: %x\n", 501 (*ObjDesc)->Common.Type)); | 555 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unimplemented data type: %x\n", 556 ObjDesc->Common.Type)); |
502 503 break; 504 } 505 506 return (AE_OK); 507} 508 509 --- 29 unchanged lines hidden (view full) --- 539 540 if (Op->Opcode == AML_INT_NAMEPATH_OP) 541 { 542 /* 543 * This is an object reference. If The name was 544 * previously looked up in the NS, it is stored in this op. 545 * Otherwise, go ahead and look it up now 546 */ | 557 558 break; 559 } 560 561 return (AE_OK); 562} 563 564 --- 29 unchanged lines hidden (view full) --- 594 595 if (Op->Opcode == AML_INT_NAMEPATH_OP) 596 { 597 /* 598 * This is an object reference. If The name was 599 * previously looked up in the NS, it is stored in this op. 600 * Otherwise, go ahead and look it up now 601 */ |
547 | |
548 if (!Op->Node) 549 { 550 Status = AcpiNsLookup (WalkState->ScopeInfo, 551 Op->Value.String, ACPI_TYPE_ANY, 552 IMODE_EXECUTE, 553 NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, 554 NULL, 555 (ACPI_NAMESPACE_NODE **)&(Op->Node)); --- 87 unchanged lines hidden (view full) --- 643 ACPI_OPERAND_OBJECT *ObjDesc; 644 ACPI_STATUS Status = AE_OK; 645 646 647 FUNCTION_TRACE ("DsBuildInternalPackageObj"); 648 649 650 ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); | 602 if (!Op->Node) 603 { 604 Status = AcpiNsLookup (WalkState->ScopeInfo, 605 Op->Value.String, ACPI_TYPE_ANY, 606 IMODE_EXECUTE, 607 NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, 608 NULL, 609 (ACPI_NAMESPACE_NODE **)&(Op->Node)); --- 87 unchanged lines hidden (view full) --- 697 ACPI_OPERAND_OBJECT *ObjDesc; 698 ACPI_STATUS Status = AE_OK; 699 700 701 FUNCTION_TRACE ("DsBuildInternalPackageObj"); 702 703 704 ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); |
705 *ObjDescPtr = ObjDesc; |
|
651 if (!ObjDesc) 652 { 653 return_ACPI_STATUS (AE_NO_MEMORY); 654 } | 706 if (!ObjDesc) 707 { 708 return_ACPI_STATUS (AE_NO_MEMORY); 709 } |
710 711 if (Op->Opcode == AML_VAR_PACKAGE_OP) 712 { 713 /* 714 * Variable length package parameters are evaluated JIT 715 */ 716 return_ACPI_STATUS (AE_OK); 717 } |
|
655 656 /* The first argument must be the package length */ 657 658 Arg = Op->Value.Arg; | 718 719 /* The first argument must be the package length */ 720 721 Arg = Op->Value.Arg; |
659 ObjDesc->Package.Count = Arg->Value.Integer; | 722 ObjDesc->Package.Count = Arg->Value.Integer32; |
660 661 /* 662 * Allocate the array of pointers (ptrs to the 663 * individual objects) Add an extra pointer slot so 664 * that the list is always null terminated. 665 */ | 723 724 /* 725 * Allocate the array of pointers (ptrs to the 726 * individual objects) Add an extra pointer slot so 727 * that the list is always null terminated. 728 */ |
666 | |
667 ObjDesc->Package.Elements = ACPI_MEM_CALLOCATE ( 668 (ObjDesc->Package.Count + 1) * sizeof (void *)); 669 670 if (!ObjDesc->Package.Elements) 671 { 672 AcpiUtDeleteObjectDesc (ObjDesc); 673 return_ACPI_STATUS (AE_NO_MEMORY); 674 } 675 676 ObjDesc->Package.NextElement = ObjDesc->Package.Elements; 677 678 /* 679 * Now init the elements of the package 680 */ | 729 ObjDesc->Package.Elements = ACPI_MEM_CALLOCATE ( 730 (ObjDesc->Package.Count + 1) * sizeof (void *)); 731 732 if (!ObjDesc->Package.Elements) 733 { 734 AcpiUtDeleteObjectDesc (ObjDesc); 735 return_ACPI_STATUS (AE_NO_MEMORY); 736 } 737 738 ObjDesc->Package.NextElement = ObjDesc->Package.Elements; 739 740 /* 741 * Now init the elements of the package 742 */ |
681 | |
682 Arg = Arg->Next; 683 while (Arg) 684 { 685 if (Arg->Opcode == AML_PACKAGE_OP) 686 { 687 Status = AcpiDsBuildInternalPackageObj (WalkState, Arg, 688 ObjDesc->Package.NextElement); 689 } 690 691 else 692 { 693 Status = AcpiDsBuildInternalSimpleObj (WalkState, Arg, 694 ObjDesc->Package.NextElement); 695 } 696 697 ObjDesc->Package.NextElement++; 698 Arg = Arg->Next; 699 } 700 | 743 Arg = Arg->Next; 744 while (Arg) 745 { 746 if (Arg->Opcode == AML_PACKAGE_OP) 747 { 748 Status = AcpiDsBuildInternalPackageObj (WalkState, Arg, 749 ObjDesc->Package.NextElement); 750 } 751 752 else 753 { 754 Status = AcpiDsBuildInternalSimpleObj (WalkState, Arg, 755 ObjDesc->Package.NextElement); 756 } 757 758 ObjDesc->Package.NextElement++; 759 Arg = Arg->Next; 760 } 761 |
701 *ObjDescPtr = ObjDesc; | 762 ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID; |
702 return_ACPI_STATUS (Status); 703} 704 705 706/***************************************************************************** 707 * 708 * FUNCTION: AcpiDsBuildInternalObject 709 * --- 11 unchanged lines hidden (view full) --- 721AcpiDsBuildInternalObject ( 722 ACPI_WALK_STATE *WalkState, 723 ACPI_PARSE_OBJECT *Op, 724 ACPI_OPERAND_OBJECT **ObjDescPtr) 725{ 726 ACPI_STATUS Status; 727 728 | 763 return_ACPI_STATUS (Status); 764} 765 766 767/***************************************************************************** 768 * 769 * FUNCTION: AcpiDsBuildInternalObject 770 * --- 11 unchanged lines hidden (view full) --- 782AcpiDsBuildInternalObject ( 783 ACPI_WALK_STATE *WalkState, 784 ACPI_PARSE_OBJECT *Op, 785 ACPI_OPERAND_OBJECT **ObjDescPtr) 786{ 787 ACPI_STATUS Status; 788 789 |
729 if (Op->Opcode == AML_PACKAGE_OP) | 790 switch (Op->Opcode) |
730 { | 791 { |
792 case AML_PACKAGE_OP: 793 case AML_VAR_PACKAGE_OP: 794 |
|
731 Status = AcpiDsBuildInternalPackageObj (WalkState, Op, ObjDescPtr); | 795 Status = AcpiDsBuildInternalPackageObj (WalkState, Op, ObjDescPtr); |
732 } | 796 break; |
733 | 797 |
734 else 735 { | 798 799 default: 800 |
736 Status = AcpiDsBuildInternalSimpleObj (WalkState, Op, ObjDescPtr); | 801 Status = AcpiDsBuildInternalSimpleObj (WalkState, Op, ObjDescPtr); |
802 break; |
|
737 } 738 739 return (Status); 740} 741 742 743/***************************************************************************** 744 * --- 64 unchanged lines hidden --- | 803 } 804 805 return (Status); 806} 807 808 809/***************************************************************************** 810 * --- 64 unchanged lines hidden --- |