Restructuring of the AML opcode handling routines

date	2001.10.09.22.42.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 17:09:54 +00:00
parent 5603dbd4a6
commit eb1b4cfb49
2 changed files with 31 additions and 19 deletions

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dsutils - Dispatcher utilities
* $Revision: 1.76 $
* $Revision: 1.78 $
*
******************************************************************************/
@ -179,7 +179,7 @@ AcpiDsIsResultUsed (
*/
ParentInfo = AcpiPsGetOpcodeInfo (Op->Parent->Opcode);
if (ACPI_GET_OP_CLASS (ParentInfo) == AML_CLASS_UNKNOWN)
if (ParentInfo->Class == AML_CLASS_UNKNOWN)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown parent opcode. Op=%X\n", Op));
return_VALUE (FALSE);
@ -192,7 +192,7 @@ AcpiDsIsResultUsed (
* Otherwise leave it as is, it will be deleted when it is used
* as an operand later.
*/
switch (ACPI_GET_OP_CLASS (ParentInfo))
switch (ParentInfo->Class)
{
/*
* In these cases, the parent will never use the return object
@ -712,7 +712,7 @@ AcpiDsMapOpcodeToDataType (
OpInfo = AcpiPsGetOpcodeInfo (Opcode);
if (ACPI_GET_OP_CLASS (OpInfo) == AML_CLASS_UNKNOWN)
if (OpInfo->Class == AML_CLASS_UNKNOWN)
{
/* Unknown opcode */
@ -720,7 +720,12 @@ AcpiDsMapOpcodeToDataType (
return (DataType);
}
switch (ACPI_GET_OP_TYPE (OpInfo))
/*
* TBD: Use op class
*/
switch (OpInfo->Type)
{
case AML_TYPE_LITERAL:
@ -784,13 +789,13 @@ AcpiDsMapOpcodeToDataType (
break;
case AML_TYPE_EX_1A_0T_1R:
case AML_TYPE_EX_1A_1T_1R:
case AML_TYPE_EX_2A_0T_1R:
case AML_TYPE_EX_2A_1T_1R:
case AML_TYPE_EX_2A_2T_1R:
case AML_TYPE_EX_3A_0T_0R:
case AML_TYPE_EX_6A_0T_1R:
case AML_TYPE_EXEC_1A_0T_1R:
case AML_TYPE_EXEC_1A_1T_1R:
case AML_TYPE_EXEC_2A_0T_1R:
case AML_TYPE_EXEC_2A_1T_1R:
case AML_TYPE_EXEC_2A_2T_1R:
case AML_TYPE_EXEC_3A_1T_1R:
case AML_TYPE_EXEC_6A_0T_1R:
case AML_TYPE_RETURN:
Flags = OP_HAS_RETURN_VALUE;
@ -811,7 +816,10 @@ AcpiDsMapOpcodeToDataType (
break;
case AML_TYPE_EX_2A_0T_0R:
case AML_TYPE_EXEC_1A_0T_0R:
case AML_TYPE_EXEC_2A_0T_0R:
case AML_TYPE_EXEC_3A_0T_0R:
case AML_TYPE_EXEC_1A_1T_0R:
case AML_TYPE_CONTROL:
/* No mapping needed at this time */

View File

@ -2,7 +2,7 @@
*
* Module Name: dswexec - Dispatcher method execution callbacks;
* dispatch to interpreter.
* $Revision: 1.74 $
* $Revision: 1.76 $
*
*****************************************************************************/
@ -129,16 +129,20 @@
#define _COMPONENT ACPI_DISPATCHER
MODULE_NAME ("dswexec")
/*
* Dispatch tables for opcode classes
*/
ACPI_EXECUTE_OP AcpiGbl_OpClassDispatch [] = {
AcpiExOpcode_1A_0T_0R,
AcpiExOpcode_1A_0T_1R,
AcpiExOpcode_1A_1T_0R,
AcpiExOpcode_1A_1T_1R,
AcpiExOpcode_2A_0T_0R,
AcpiExOpcode_2A_0T_1R,
AcpiExOpcode_2A_1T_1R,
AcpiExOpcode_2A_2T_1R,
AcpiExOpcode_3A_1T_0R,
AcpiExOpcode_3A_0T_0R,
AcpiExOpcode_3A_1T_1R,
AcpiExOpcode_6A_0T_1R};
@ -340,7 +344,7 @@ AcpiDsExecBeginOp (
}
OpcodeClass = ACPI_GET_OP_CLASS (WalkState->OpInfo);
OpcodeClass = WalkState->OpInfo->Class;
/* We want to send namepaths to the load code */
@ -443,8 +447,8 @@ AcpiDsExecEndOp (
Op = WalkState->Op;
OpType = ACPI_GET_OP_TYPE (WalkState->OpInfo);
OpClass = ACPI_GET_OP_CLASS (WalkState->OpInfo);
OpType = WalkState->OpInfo->Type;
OpClass = WalkState->OpInfo->Class;
if (OpClass == AML_CLASS_UNKNOWN)
{