mirror of https://github.com/acpica/acpica/
Revert "Acpica parser"
This commit is contained in:
parent
badd47cbd3
commit
d18654bc94
|
@ -119,7 +119,6 @@
|
|||
#include "acevents.h"
|
||||
#include "acinterp.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acparser.h"
|
||||
|
||||
#define _COMPONENT ACPI_COMPILER
|
||||
ACPI_MODULE_NAME ("aslstubs")
|
||||
|
@ -143,13 +142,6 @@ AcpiNsInitializeObjects (
|
|||
return (AE_OK);
|
||||
}
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsExecuteTable (
|
||||
ACPI_EVALUATE_INFO *Info)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiHwReadPort (
|
||||
ACPI_IO_ADDRESS Address,
|
||||
|
|
|
@ -554,11 +554,6 @@ AcpiDsEvalRegionOperands (
|
|||
/* Now the address and length are valid for this opregion */
|
||||
|
||||
ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID;
|
||||
if (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)
|
||||
{
|
||||
Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId,
|
||||
ObjDesc->Region.Address, ObjDesc->Region.Length, Node);
|
||||
}
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
|
|
@ -690,8 +690,7 @@ AcpiEvInitializeRegion (
|
|||
*
|
||||
* See AcpiNsExecModuleCode
|
||||
*/
|
||||
if (!AcpiGbl_ParseTableAsTermList &&
|
||||
ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
||||
if (ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
||||
{
|
||||
HandlerObj = ObjDesc->Method.Dispatch.Handler;
|
||||
}
|
||||
|
|
|
@ -191,9 +191,7 @@ AcpiExAddTable (
|
|||
|
||||
/* Add the table to the namespace */
|
||||
|
||||
AcpiExExitInterpreter ();
|
||||
Status = AcpiNsLoadTable (TableIndex, ParentNode);
|
||||
AcpiExEnterInterpreter ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiUtRemoveReference (ObjDesc);
|
||||
|
@ -204,7 +202,7 @@ AcpiExAddTable (
|
|||
/* Execute any module-level code that was found in the table */
|
||||
|
||||
AcpiExExitInterpreter ();
|
||||
if (!AcpiGbl_ParseTableAsTermList && AcpiGbl_GroupModuleLevelCode)
|
||||
if (AcpiGbl_GroupModuleLevelCode)
|
||||
{
|
||||
AcpiNsExecModuleCodeList ();
|
||||
}
|
||||
|
|
|
@ -252,7 +252,7 @@ Unlock:
|
|||
* other ACPI implementations. Optionally, the execution can be deferred
|
||||
* until later, see AcpiInitializeObjects.
|
||||
*/
|
||||
if (!AcpiGbl_ParseTableAsTermList && !AcpiGbl_GroupModuleLevelCode)
|
||||
if (!AcpiGbl_GroupModuleLevelCode)
|
||||
{
|
||||
AcpiNsExecModuleCodeList ();
|
||||
}
|
||||
|
|
|
@ -119,118 +119,12 @@
|
|||
#include "acparser.h"
|
||||
#include "acdispat.h"
|
||||
#include "actables.h"
|
||||
#include "acinterp.h"
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_NAMESPACE
|
||||
ACPI_MODULE_NAME ("nsparse")
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: NsExecuteTable
|
||||
*
|
||||
* PARAMETERS: TableDesc - An ACPI table descriptor for table to parse
|
||||
* StartNode - Where to enter the table into the namespace
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Load ACPI/AML table by executing the entire table as a
|
||||
* TermList.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiNsExecuteTable (
|
||||
UINT32 TableIndex,
|
||||
ACPI_NAMESPACE_NODE *StartNode)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_HEADER *Table;
|
||||
ACPI_OWNER_ID OwnerId;
|
||||
ACPI_EVALUATE_INFO *Info = NULL;
|
||||
UINT32 AmlLength;
|
||||
UINT8 *AmlStart;
|
||||
ACPI_OPERAND_OBJECT *MethodObj = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE (NsExecuteTable);
|
||||
|
||||
|
||||
Status = AcpiGetTableByIndex (TableIndex, &Table);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Table must consist of at least a complete header */
|
||||
|
||||
if (Table->Length < sizeof (ACPI_TABLE_HEADER))
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_HEADER);
|
||||
}
|
||||
|
||||
AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER);
|
||||
AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER);
|
||||
|
||||
Status = AcpiTbGetOwnerId (TableIndex, &OwnerId);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Create, initialize, and link a new temporary method object */
|
||||
|
||||
MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD);
|
||||
if (!MethodObj)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Allocate the evaluation information block */
|
||||
|
||||
Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO));
|
||||
if (!Info)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Create table code block: %p\n", MethodObj));
|
||||
|
||||
MethodObj->Method.AmlStart = AmlStart;
|
||||
MethodObj->Method.AmlLength = AmlLength;
|
||||
MethodObj->Method.OwnerId = OwnerId;
|
||||
MethodObj->Method.InfoFlags |= ACPI_METHOD_MODULE_LEVEL;
|
||||
|
||||
Info->PassNumber = ACPI_IMODE_EXECUTE;
|
||||
Info->Node = StartNode;
|
||||
Info->ObjDesc = MethodObj;
|
||||
Info->NodeFlags = Info->Node->Flags;
|
||||
Info->FullPathname = AcpiNsGetNormalizedPathname (Info->Node, TRUE);
|
||||
if (!Info->FullPathname)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
Status = AcpiPsExecuteTable (Info);
|
||||
(void) AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
|
||||
Cleanup:
|
||||
if (Info)
|
||||
{
|
||||
ACPI_FREE (Info->FullPathname);
|
||||
Info->FullPathname = NULL;
|
||||
}
|
||||
ACPI_FREE (Info);
|
||||
AcpiUtRemoveReference (MethodObj);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: NsOneCompleteParse
|
||||
|
@ -366,58 +260,41 @@ AcpiNsParseTable (
|
|||
ACPI_FUNCTION_TRACE (NsParseTable);
|
||||
|
||||
|
||||
AcpiExEnterInterpreter ();
|
||||
/*
|
||||
* AML Parse, pass 1
|
||||
*
|
||||
* In this pass, we load most of the namespace. Control methods
|
||||
* are not parsed until later. A parse tree is not created. Instead,
|
||||
* each Parser Op subtree is deleted when it is finished. This saves
|
||||
* a great deal of memory, and allows a small cache of parse objects
|
||||
* to service the entire parse. The second pass of the parse then
|
||||
* performs another complete parse of the AML.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
|
||||
|
||||
if (AcpiGbl_ParseTableAsTermList)
|
||||
Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1,
|
||||
TableIndex, StartNode);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start load pass\n"));
|
||||
|
||||
Status = AcpiNsExecuteTable (TableIndex, StartNode);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* AML Parse, pass 1
|
||||
*
|
||||
* In this pass, we load most of the namespace. Control methods
|
||||
* are not parsed until later. A parse tree is not created.
|
||||
* Instead, each Parser Op subtree is deleted when it is finished.
|
||||
* This saves a great deal of memory, and allows a small cache of
|
||||
* parse objects to service the entire parse. The second pass of
|
||||
* the parse then performs another complete parse of the AML.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
|
||||
|
||||
Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1,
|
||||
TableIndex, StartNode);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
/*
|
||||
* AML Parse, pass 2
|
||||
*
|
||||
* In this pass, we resolve forward references and other things
|
||||
* that could not be completed during the first pass.
|
||||
* Another complete parse of the AML is performed, but the
|
||||
* overhead of this is compensated for by the fact that the
|
||||
* parse objects are all cached.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n"));
|
||||
Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2,
|
||||
TableIndex, StartNode);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* AML Parse, pass 2
|
||||
*
|
||||
* In this pass, we resolve forward references and other things
|
||||
* that could not be completed during the first pass.
|
||||
* Another complete parse of the AML is performed, but the
|
||||
* overhead of this is compensated for by the fact that the
|
||||
* parse objects are all cached.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n"));
|
||||
Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2,
|
||||
TableIndex, StartNode);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
ErrorExit:
|
||||
AcpiExExitInterpreter ();
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
|
|
@ -661,8 +661,7 @@ AcpiPsParseAml (
|
|||
* cleanup to do
|
||||
*/
|
||||
if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) ==
|
||||
ACPI_PARSE_EXECUTE &&
|
||||
!(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) ||
|
||||
ACPI_PARSE_EXECUTE) ||
|
||||
(ACPI_FAILURE (Status)))
|
||||
{
|
||||
AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState);
|
||||
|
|
|
@ -345,86 +345,6 @@ Cleanup:
|
|||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsExecuteTable
|
||||
*
|
||||
* PARAMETERS: Info - Method info block, contains:
|
||||
* Node - Node to where the is entered into the
|
||||
* namespace
|
||||
* ObjDesc - Pseudo method object describing the AML
|
||||
* code of the entire table
|
||||
* PassNumber - Parse or execute pass
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Execute a table
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsExecuteTable (
|
||||
ACPI_EVALUATE_INFO *Info)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_PARSE_OBJECT *Op = NULL;
|
||||
ACPI_WALK_STATE *WalkState = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE (PsExecuteTable);
|
||||
|
||||
|
||||
/* Create and init a Root Node */
|
||||
|
||||
Op = AcpiPsCreateScopeOp (Info->ObjDesc->Method.AmlStart);
|
||||
if (!Op)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Create and initialize a new walk state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (
|
||||
Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, Info->Node,
|
||||
Info->ObjDesc->Method.AmlStart,
|
||||
Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
||||
{
|
||||
WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the AML, WalkState will be deleted by ParseAml
|
||||
*/
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
WalkState = NULL;
|
||||
|
||||
Cleanup:
|
||||
if (Op)
|
||||
{
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
}
|
||||
if (WalkState)
|
||||
{
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
}
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsUpdateParameterList
|
||||
|
|
|
@ -183,7 +183,7 @@ AcpiLoadTables (
|
|||
"While loading namespace from ACPI tables"));
|
||||
}
|
||||
|
||||
if (AcpiGbl_ParseTableAsTermList || !AcpiGbl_GroupModuleLevelCode)
|
||||
if (!AcpiGbl_GroupModuleLevelCode)
|
||||
{
|
||||
/*
|
||||
* Initialize the objects that remain uninitialized. This
|
||||
|
|
|
@ -365,7 +365,7 @@ AcpiInitializeObjects (
|
|||
* all of the tables have been loaded. It is a legacy option and is
|
||||
* not compatible with other ACPI implementations. See AcpiNsLoadTable.
|
||||
*/
|
||||
if (!AcpiGbl_ParseTableAsTermList && AcpiGbl_GroupModuleLevelCode)
|
||||
if (AcpiGbl_GroupModuleLevelCode)
|
||||
{
|
||||
AcpiNsExecModuleCodeList ();
|
||||
|
||||
|
|
|
@ -215,11 +215,6 @@ AcpiNsParseTable (
|
|||
UINT32 TableIndex,
|
||||
ACPI_NAMESPACE_NODE *StartNode);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiNsExecuteTable (
|
||||
UINT32 TableIndex,
|
||||
ACPI_NAMESPACE_NODE *StartNode);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiNsOneCompleteParse (
|
||||
UINT32 PassNumber,
|
||||
|
|
|
@ -155,10 +155,6 @@ ACPI_STATUS
|
|||
AcpiPsExecuteMethod (
|
||||
ACPI_EVALUATE_INFO *Info);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsExecuteTable (
|
||||
ACPI_EVALUATE_INFO *Info);
|
||||
|
||||
|
||||
/*
|
||||
* psargs - Parse AML opcode arguments
|
||||
|
|
|
@ -268,12 +268,6 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE);
|
|||
*/
|
||||
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE);
|
||||
|
||||
/*
|
||||
* Optionally support module level code by parsing the entire table as
|
||||
* a TermList. Default is TRUE, do execute entire table.
|
||||
*/
|
||||
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_ParseTableAsTermList, TRUE);
|
||||
|
||||
/*
|
||||
* Optionally use 32-bit FADT addresses if and when there is a conflict
|
||||
* (address mismatch) between the 32-bit and 64-bit versions of the
|
||||
|
|
|
@ -1712,7 +1712,6 @@ Name(TFN0, Package() {
|
|||
"ns-fullpath.asl",
|
||||
"scope.asl",
|
||||
"object.asl",
|
||||
"order.asl",
|
||||
|
||||
|
||||
// below are incorrect yet:
|
||||
|
|
|
@ -30,13 +30,7 @@
|
|||
if (STTT("Module level code execution", TCLF, 14, W01a)) {
|
||||
SRMT("MLS0")
|
||||
MLS0()
|
||||
SRMT("MLS1")
|
||||
MLS1()
|
||||
SRMT("MLO0")
|
||||
MLO0()
|
||||
SRMT("MLO1")
|
||||
MLO1()
|
||||
SRMT("MLD0")
|
||||
MLD0()
|
||||
}
|
||||
FTTT()
|
||||
|
|
|
@ -31,8 +31,8 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* Verify if Type1Opcode (ex., If) and Type2Opcode (ex., Store) is allowed
|
||||
* under Device, PowerResource, Processor, or ThermalZone
|
||||
* Verify if Type1Opcode (ex., If) is allowed under Device, PowerResource,
|
||||
* Processor, or ThermalZone
|
||||
*
|
||||
* ASL spec state:
|
||||
* 1. DeviceTerm supports ObjectList for ACPI 1.0 ~ ACPI 6.1.
|
||||
|
@ -113,68 +113,3 @@ Method(MLO0,, Serialized)
|
|||
err(ts, z181, 3, z181, 3, ml13, 2)
|
||||
}
|
||||
}
|
||||
|
||||
/* Tests for Type2Opcode */
|
||||
|
||||
Name(ml14, 0)
|
||||
Name(ml15, 0)
|
||||
Name(ml16, 0)
|
||||
Name(ml17, 0)
|
||||
|
||||
Scope(\_SB)
|
||||
{
|
||||
Device(dev1)
|
||||
{
|
||||
Store (1, ml14)
|
||||
if (LEqual(ml14, 1)) {
|
||||
Store(2, ml14)
|
||||
}
|
||||
PowerResource(pr01, 1, 0)
|
||||
{
|
||||
Store (1, ml15)
|
||||
if (LEqual(ml15, 1)) {
|
||||
Store(2, ml15)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Scope(\_PR)
|
||||
{
|
||||
Processor(cpu1, 0, 0xFFFFFFFF, 0)
|
||||
{
|
||||
Store (1, ml16)
|
||||
if (LEqual(ml16, 1)) {
|
||||
Store(2, ml16)
|
||||
}
|
||||
}
|
||||
}
|
||||
Scope(\_TZ)
|
||||
{
|
||||
ThermalZone(thz1)
|
||||
{
|
||||
Store (1, ml17)
|
||||
if (LEqual(ml17, 1)) {
|
||||
Store(2, ml17)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Method(MLO1,, Serialized)
|
||||
{
|
||||
Name(ts, "MLO1")
|
||||
|
||||
Store("TEST: MLO1 Type2Opcode is executable under objects", Debug)
|
||||
|
||||
if (LNotEqual(ml14, 2)) {
|
||||
err(ts, z181, 4, z181, 4, ml14, 2)
|
||||
}
|
||||
if (LNotEqual(ml15, 2)) {
|
||||
err(ts, z181, 5, z181, 5, ml15, 2)
|
||||
}
|
||||
if (LNotEqual(ml16, 2)) {
|
||||
err(ts, z181, 6, z181, 6, ml16, 2)
|
||||
}
|
||||
if (LNotEqual(ml17, 2)) {
|
||||
err(ts, z181, 7, z181, 7, ml17, 2)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* Some or all of this work - Copyright (c) 2006 - 2016, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* Neither the name of Intel Corporation nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Module level execution order
|
||||
*/
|
||||
|
||||
/*
|
||||
* Verify if module level opcode is executed right in place.
|
||||
*/
|
||||
|
||||
Name(z182, 182)
|
||||
|
||||
/* Tests for Type2Opcode order */
|
||||
|
||||
Name(ml20, 0)
|
||||
Name(ob01, 0)
|
||||
|
||||
if (CondRefOf(ob01))
|
||||
{
|
||||
Store(1, ml20)
|
||||
if (CondRefOf(ob02))
|
||||
{
|
||||
Store(2, ml20)
|
||||
}
|
||||
}
|
||||
Name(ob02, 0)
|
||||
|
||||
Method(MLD0,, Serialized)
|
||||
{
|
||||
Name(ts, "MLD0")
|
||||
|
||||
Store("TEST: MLD0, Type2Opcode is executed right in place", Debug)
|
||||
|
||||
if (LNotEqual(ml20, 1)) {
|
||||
err(ts, z182, 6, z182, 6, ml20, 1)
|
||||
}
|
||||
}
|
|
@ -31,8 +31,8 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* Verify if Type1Opcode (ex., If) and Type2Opcode (ex., Store) is allowed
|
||||
* under DefinitionBlock or Scope
|
||||
* Verify if Type1Opcode (ex., If) is allowed under DefinitionBlock or
|
||||
* Scope
|
||||
*
|
||||
* ASL spec state:
|
||||
* 1. DefinitionBlockTerm supports TermList for ACPI 1.0 ~ 6.0.
|
||||
|
@ -89,45 +89,3 @@ Method(MLS0,, Serialized)
|
|||
err(ts, z180, 2, z180, 2, ml02, 2)
|
||||
}
|
||||
}
|
||||
|
||||
/* Tests for Type2Opcode */
|
||||
|
||||
Name(ml03, 0)
|
||||
Name(ml04, 0)
|
||||
Name(ml05, 0)
|
||||
|
||||
Store (1, ml03)
|
||||
if (LEqual(ml03, 1)) {
|
||||
Store(2, ml03)
|
||||
}
|
||||
Scope(\)
|
||||
{
|
||||
Store (1, ml04)
|
||||
if (LEqual(ml04, 1)) {
|
||||
Store(2, ml04)
|
||||
}
|
||||
}
|
||||
Scope(\_SB)
|
||||
{
|
||||
Store (1, ml05)
|
||||
if (LEqual(ml05, 1)) {
|
||||
Store(2, ml05)
|
||||
}
|
||||
}
|
||||
|
||||
Method(MLS1,, Serialized)
|
||||
{
|
||||
Name(ts, "MLS1")
|
||||
|
||||
Store("TEST: MLS1, Type2Opcode is executable under scopes", Debug)
|
||||
|
||||
if (LNotEqual(ml03, 2)) {
|
||||
err(ts, z180, 3, z180, 3, ml03, 2)
|
||||
}
|
||||
if (LNotEqual(ml04, 2)) {
|
||||
err(ts, z180, 4, z180, 4, ml04, 2)
|
||||
}
|
||||
if (LNotEqual(ml05, 2)) {
|
||||
err(ts, z180, 5, z180, 5, ml05, 2)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue