Print this page
acpica-unix2-20130823
PANKOVs restructure
@@ -1,14 +1,13 @@
-
/******************************************************************************
*
* Module Name: exresolv - AML Interpreter object resolution
*
*****************************************************************************/
/*
- * Copyright (C) 2000 - 2011, Intel Corp.
+ * Copyright (C) 2000 - 2013, 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:
@@ -163,11 +162,11 @@
ACPI_FUNCTION_TRACE (ExResolveObjectToValue);
StackDesc = *StackPtr;
- /* This is an ACPI_OPERAND_OBJECT */
+ /* This is an object of type ACPI_OPERAND_OBJECT */
switch (StackDesc->Common.Type)
{
case ACPI_TYPE_LOCAL_REFERENCE:
@@ -175,11 +174,10 @@
switch (RefType)
{
case ACPI_REFCLASS_LOCAL:
case ACPI_REFCLASS_ARG:
-
/*
* Get the local from the method's state info
* Note: this increments the local's object reference count
*/
Status = AcpiDsMethodDataGetValue (RefType,
@@ -198,21 +196,19 @@
*/
AcpiUtRemoveReference (StackDesc);
*StackPtr = ObjDesc;
break;
-
case ACPI_REFCLASS_INDEX:
switch (StackDesc->Reference.TargetType)
{
case ACPI_TYPE_BUFFER_FIELD:
/* Just return - do not dereference */
break;
-
case ACPI_TYPE_PACKAGE:
/* If method call or CopyObject - do not dereference */
if ((WalkState->Opcode == AML_INT_METHODCALL_OP) ||
@@ -246,11 +242,10 @@
StackDesc));
Status = AE_AML_UNINITIALIZED_ELEMENT;
}
break;
-
default:
/* Invalid reference object */
ACPI_ERROR ((AE_INFO,
@@ -259,11 +254,10 @@
Status = AE_AML_INTERNAL;
break;
}
break;
-
case ACPI_REFCLASS_REFOF:
case ACPI_REFCLASS_DEBUG:
case ACPI_REFCLASS_TABLE:
/* Just leave the object as-is, do not dereference */
@@ -299,23 +293,20 @@
Status = AE_AML_INTERNAL;
break;
}
break;
-
case ACPI_TYPE_BUFFER:
Status = AcpiDsGetBufferArguments (StackDesc);
break;
-
case ACPI_TYPE_PACKAGE:
Status = AcpiDsGetPackageArguments (StackDesc);
break;
-
case ACPI_TYPE_BUFFER_FIELD:
case ACPI_TYPE_LOCAL_REGION_FIELD:
case ACPI_TYPE_LOCAL_BANK_FIELD:
case ACPI_TYPE_LOCAL_INDEX_FIELD:
@@ -329,10 +320,11 @@
AcpiUtRemoveReference (*StackPtr);
*StackPtr = (void *) ObjDesc;
break;
default:
+
break;
}
return_ACPI_STATUS (Status);
}
@@ -373,14 +365,16 @@
/* Operand can be either a namespace node or an operand descriptor */
switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))
{
case ACPI_DESC_TYPE_OPERAND:
+
Type = ObjDesc->Common.Type;
break;
case ACPI_DESC_TYPE_NAMED:
+
Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type;
ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc);
/* If we had an Alias node, use the attached object for type info */
@@ -453,11 +447,10 @@
{
return_ACPI_STATUS (AE_AML_CIRCULAR_REFERENCE);
}
break;
-
case ACPI_REFCLASS_INDEX:
/* Get the type of this reference (index into another object) */
Type = ObjDesc->Reference.TargetType;
@@ -481,17 +474,15 @@
Type = 0; /* Uninitialized */
goto Exit;
}
break;
-
case ACPI_REFCLASS_TABLE:
Type = ACPI_TYPE_DDB_HANDLE;
goto Exit;
-
case ACPI_REFCLASS_LOCAL:
case ACPI_REFCLASS_ARG:
if (ReturnDesc)
{
@@ -519,19 +510,17 @@
goto Exit;
}
}
break;
-
case ACPI_REFCLASS_DEBUG:
/* The Debug Object is of type "DebugObject" */
Type = ACPI_TYPE_DEBUG_OBJECT;
goto Exit;
-
default:
ACPI_ERROR ((AE_INFO,
"Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class));
return_ACPI_STATUS (AE_AML_INTERNAL);
@@ -563,11 +552,13 @@
Type = ACPI_TYPE_ANY;
break;
default:
+
/* No change to Type required */
+
break;
}
*ReturnType = Type;
if (ReturnDesc)
@@ -574,7 +565,5 @@
{
*ReturnDesc = ObjDesc;
}
return_ACPI_STATUS (AE_OK);
}
-
-