psloop.c (8438a7a80a3c537ec86b2e17720cc9e1957d9651) psloop.c (3d90091d604146a7c0a7bc071c5b8eba9201531e)
1/******************************************************************************
2 *
3 * Module Name: psloop - Main AML parse loop
4 *
5 *****************************************************************************/
6
7/******************************************************************************
8 *

--- 651 unchanged lines hidden (view full) ---

660 return_ACPI_STATUS (Status);
661 }
662
663 Status = AcpiPsCompleteOp (WalkState, &Op, Status);
664 if (ACPI_FAILURE (Status))
665 {
666 return_ACPI_STATUS (Status);
667 }
1/******************************************************************************
2 *
3 * Module Name: psloop - Main AML parse loop
4 *
5 *****************************************************************************/
6
7/******************************************************************************
8 *

--- 651 unchanged lines hidden (view full) ---

660 return_ACPI_STATUS (Status);
661 }
662
663 Status = AcpiPsCompleteOp (WalkState, &Op, Status);
664 if (ACPI_FAILURE (Status))
665 {
666 return_ACPI_STATUS (Status);
667 }
668 if (WalkState->Opcode == AML_SCOPE_OP)
669 {
670 /*
671 * If the scope op fails to parse, skip the body of the
672 * scope op because the parse failure indicates that the
673 * device may not exist.
674 */
675 WalkState->ParserState.Aml = WalkState->Aml + 1;
676 WalkState->ParserState.Aml =
677 AcpiPsGetNextPackageEnd(&WalkState->ParserState);
678 WalkState->Aml = WalkState->ParserState.Aml;
679 ACPI_ERROR ((AE_INFO, "Skipping Scope block"));
680 }
668
669 continue;
670 }
671
672 AcpiExStartTraceOpcode (Op, WalkState);
673 }
674
675 /*

--- 26 unchanged lines hidden (view full) ---

702 Status = AcpiPsGetArguments (WalkState, AmlOpStart, Op);
703 if (ACPI_FAILURE (Status))
704 {
705 Status = AcpiPsCompleteOp (WalkState, &Op, Status);
706 if (ACPI_FAILURE (Status))
707 {
708 return_ACPI_STATUS (Status);
709 }
681
682 continue;
683 }
684
685 AcpiExStartTraceOpcode (Op, WalkState);
686 }
687
688 /*

--- 26 unchanged lines hidden (view full) ---

715 Status = AcpiPsGetArguments (WalkState, AmlOpStart, Op);
716 if (ACPI_FAILURE (Status))
717 {
718 Status = AcpiPsCompleteOp (WalkState, &Op, Status);
719 if (ACPI_FAILURE (Status))
720 {
721 return_ACPI_STATUS (Status);
722 }
723 if ((WalkState->ControlState) &&
724 ((WalkState->ControlState->Control.Opcode == AML_IF_OP) ||
725 (WalkState->ControlState->Control.Opcode == AML_WHILE_OP)))
726 {
727 /*
728 * If the if/while op fails to parse, we will skip parsing
729 * the body of the op.
730 */
731 ParserState->Aml =
732 WalkState->ControlState->Control.AmlPredicateStart + 1;
733 ParserState->Aml =
734 AcpiPsGetNextPackageEnd (ParserState);
735 WalkState->Aml = ParserState->Aml;
710
736
737 ACPI_ERROR ((AE_INFO, "Skipping While/If block"));
738 if (*WalkState->Aml == AML_ELSE_OP)
739 {
740 ACPI_ERROR ((AE_INFO, "Skipping Else block"));
741 WalkState->ParserState.Aml = WalkState->Aml + 1;
742 WalkState->ParserState.Aml =
743 AcpiPsGetNextPackageEnd (ParserState);
744 WalkState->Aml = ParserState->Aml;
745 }
746 ACPI_FREE(AcpiUtPopGenericState (&WalkState->ControlState));
747 }
748 Op = NULL;
711 continue;
712 }
713 }
714
715 /* Check for arguments that need to be processed */
716
717 ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
718 "Parseloop: argument count: %8.8X\n", WalkState->ArgCount));

--- 93 unchanged lines hidden ---
749 continue;
750 }
751 }
752
753 /* Check for arguments that need to be processed */
754
755 ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
756 "Parseloop: argument count: %8.8X\n", WalkState->ArgCount));

--- 93 unchanged lines hidden ---