Fix for RefOf/DeRefOf issue. RefOf now returns an object of type

Reference.


date	2002.06.25.20.57.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 17:46:21 +00:00
parent 56bd071984
commit 2402364a00
4 changed files with 44 additions and 40 deletions

View File

@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresnte - AML Interpreter object resolution
* $Revision: 1.55 $
* $Revision: 1.57 $
*
*****************************************************************************/
@ -207,10 +207,10 @@ AcpiExResolveNodeToValue (
{
case ACPI_TYPE_PACKAGE:
if (ACPI_TYPE_PACKAGE != SourceDesc->Common.Type)
if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_PACKAGE)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Package, type %s\n",
AcpiUtGetTypeName (SourceDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -227,10 +227,10 @@ AcpiExResolveNodeToValue (
case ACPI_TYPE_BUFFER:
if (ACPI_TYPE_BUFFER != SourceDesc->Common.Type)
if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Buffer, type %s\n",
AcpiUtGetTypeName (SourceDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -247,10 +247,10 @@ AcpiExResolveNodeToValue (
case ACPI_TYPE_STRING:
if (ACPI_TYPE_STRING != SourceDesc->Common.Type)
if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_STRING)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a String, type %s\n",
AcpiUtGetTypeName (SourceDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -263,10 +263,10 @@ AcpiExResolveNodeToValue (
case ACPI_TYPE_INTEGER:
if (ACPI_TYPE_INTEGER != SourceDesc->Common.Type)
if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_INTEGER)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Integer, type %s\n",
AcpiUtGetTypeName (SourceDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -320,7 +320,7 @@ AcpiExResolveNodeToValue (
/* No named references are allowed here */
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported reference opcode %X\n",
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported Reference opcode %X\n",
SourceDesc->Reference.Opcode));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);

View File

@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresolv - AML Interpreter object resolution
* $Revision: 1.113 $
* $Revision: 1.115 $
*
*****************************************************************************/
@ -227,7 +227,7 @@ AcpiExResolveObjectToValue (
/* This is an ACPI_OPERAND_OBJECT */
switch (StackDesc->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (StackDesc))
{
case INTERNAL_TYPE_REFERENCE:
@ -330,9 +330,11 @@ AcpiExResolveObjectToValue (
break;
case AML_REF_OF_OP:
case AML_DEBUG_OP:
/* Just leave the object as-is */
break;
@ -367,7 +369,7 @@ AcpiExResolveObjectToValue (
case INTERNAL_TYPE_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n",
StackDesc, StackDesc->Common.Type));
StackDesc, ACPI_GET_OBJECT_TYPE (StackDesc)));
Status = AcpiExReadDataFromField (WalkState, StackDesc, &ObjDesc);
*StackPtr = (void *) ObjDesc;

View File

@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresop - AML Interpreter operand/object resolution
* $Revision: 1.52 $
* $Revision: 1.54 $
*
*****************************************************************************/
@ -281,7 +281,7 @@ AcpiExResolveOperands (
/* ACPI internal object */
ObjectType = ObjDesc->Common.Type;
ObjectType = ACPI_GET_OBJECT_TYPE (ObjDesc);
/* Check for bad ACPI_OBJECT_TYPE */
@ -309,6 +309,7 @@ AcpiExResolveOperands (
case AML_DEBUG_OP:
case AML_NAME_OP:
case AML_INDEX_OP:
case AML_REF_OF_OP:
case AML_ARG_OP:
case AML_LOCAL_OP:
@ -410,7 +411,7 @@ AcpiExResolveOperands (
* -- All others must be resolved below.
*/
if ((Opcode == AML_STORE_OP) &&
((*StackPtr)->Common.Type == INTERNAL_TYPE_REFERENCE) &&
(ACPI_GET_OBJECT_TYPE (*StackPtr) == INTERNAL_TYPE_REFERENCE) &&
((*StackPtr)->Reference.Opcode == AML_INDEX_OP))
{
goto NextOperand;
@ -500,7 +501,7 @@ AcpiExResolveOperands (
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Needed [Integer/String/Buffer], found [%s] %p\n",
AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr));
AcpiUtGetObjectTypeName (*StackPtr), *StackPtr));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -523,7 +524,7 @@ AcpiExResolveOperands (
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Needed [Integer/String/Buffer], found [%s] %p\n",
AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr));
AcpiUtGetObjectTypeName (*StackPtr), *StackPtr));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -546,7 +547,7 @@ AcpiExResolveOperands (
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Needed [Integer/String/Buffer], found [%s] %p\n",
AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr));
AcpiUtGetObjectTypeName (*StackPtr), *StackPtr));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -560,7 +561,7 @@ AcpiExResolveOperands (
/* Need an operand of type INTEGER, STRING or BUFFER */
switch ((*StackPtr)->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (*StackPtr))
{
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_STRING:
@ -572,7 +573,7 @@ AcpiExResolveOperands (
default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Needed [Integer/String/Buffer], found [%s] %p\n",
AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr));
AcpiUtGetObjectTypeName (*StackPtr), *StackPtr));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -587,7 +588,7 @@ AcpiExResolveOperands (
* The only reference allowed here is a direct reference to
* a namespace node.
*/
if ((*StackPtr)->Common.Type == INTERNAL_TYPE_REFERENCE)
if (ACPI_GET_OBJECT_TYPE (*StackPtr) == INTERNAL_TYPE_REFERENCE)
{
if (!(*StackPtr)->Reference.Node)
{
@ -622,7 +623,7 @@ AcpiExResolveOperands (
/* Need a buffer, string, package */
switch ((*StackPtr)->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (*StackPtr))
{
case ACPI_TYPE_PACKAGE:
case ACPI_TYPE_STRING:
@ -634,7 +635,7 @@ AcpiExResolveOperands (
default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Needed [Buf/Str/Pkg], found [%s] %p\n",
AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr));
AcpiUtGetObjectTypeName (*StackPtr), *StackPtr));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -645,7 +646,7 @@ AcpiExResolveOperands (
/* Need a buffer or package or (ACPI 2.0) String */
switch ((*StackPtr)->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (*StackPtr))
{
case ACPI_TYPE_PACKAGE:
case ACPI_TYPE_STRING:
@ -657,7 +658,7 @@ AcpiExResolveOperands (
default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Needed [Buf/Str/Pkg], found [%s] %p\n",
AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr));
AcpiUtGetObjectTypeName (*StackPtr), *StackPtr));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -680,7 +681,7 @@ AcpiExResolveOperands (
* required object type (Simple cases only).
*/
Status = AcpiExCheckObjectType (TypeNeeded,
(*StackPtr)->Common.Type, *StackPtr);
ACPI_GET_OBJECT_TYPE (*StackPtr), *StackPtr);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);

View File

@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exstore - AML Interpreter object store support
* $Revision: 1.166 $
* $Revision: 1.168 $
*
*****************************************************************************/
@ -185,7 +185,7 @@ AcpiExStore (
/* Destination object must be a Reference or a Constant object */
switch (DestDesc->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (DestDesc))
{
case INTERNAL_TYPE_REFERENCE:
break;
@ -227,6 +227,7 @@ AcpiExStore (
switch (RefDesc->Reference.Opcode)
{
case AML_NAME_OP:
case AML_REF_OF_OP:
/* Storing an object into a Name "container" */
@ -262,9 +263,9 @@ AcpiExStore (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "**** Write to Debug Object: ****:\n\n"));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[ACPI Debug] %s: ",
AcpiUtGetTypeName (SourceDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc)));
switch (SourceDesc->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (SourceDesc))
{
case ACPI_TYPE_INTEGER:
@ -297,7 +298,7 @@ AcpiExStore (
default:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Type %s %p\n",
AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc));
AcpiUtGetObjectTypeName (SourceDesc), SourceDesc));
break;
}
@ -405,7 +406,7 @@ AcpiExStoreObjectToIndex (
* Make sure the target is a Buffer
*/
ObjDesc = IndexDesc->Reference.Object;
if (ObjDesc->Common.Type != ACPI_TYPE_BUFFER)
if (ACPI_GET_OBJECT_TYPE (ObjDesc) != ACPI_TYPE_BUFFER)
{
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -414,7 +415,7 @@ AcpiExStoreObjectToIndex (
* The assignment of the individual elements will be slightly
* different for each source type.
*/
switch (SourceDesc->Common.Type)
switch (ACPI_GET_OBJECT_TYPE (SourceDesc))
{
case ACPI_TYPE_INTEGER:
@ -439,7 +440,7 @@ AcpiExStoreObjectToIndex (
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Source must be Integer/Buffer/String type, not %s\n",
AcpiUtGetTypeName (SourceDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@ -507,7 +508,7 @@ AcpiExStoreObjectToNode (
TargetDesc = AcpiNsGetAttachedObject (Node);
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p(%s) into node %p(%s)\n",
SourceDesc, AcpiUtGetTypeName (SourceDesc->Common.Type),
SourceDesc, AcpiUtGetObjectTypeName (SourceDesc),
Node, AcpiUtGetTypeName (TargetType)));
/*
@ -564,8 +565,8 @@ AcpiExStoreObjectToNode (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"Store %s into %s via Convert/Attach\n",
AcpiUtGetTypeName (SourceDesc->Common.Type),
AcpiUtGetTypeName (NewDesc->Common.Type)));
AcpiUtGetObjectTypeName (SourceDesc),
AcpiUtGetObjectTypeName (NewDesc)));
}
break;
@ -574,11 +575,11 @@ AcpiExStoreObjectToNode (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"Storing %s (%p) directly into node (%p), no implicit conversion\n",
AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc, Node));
AcpiUtGetObjectTypeName (SourceDesc), SourceDesc, Node));
/* No conversions for all other types. Just attach the source object */
Status = AcpiNsAttachObject (Node, SourceDesc, SourceDesc->Common.Type);
Status = AcpiNsAttachObject (Node, SourceDesc, ACPI_GET_OBJECT_TYPE (SourceDesc));
break;
}