diff options
Diffstat (limited to 'sys/contrib/dev/acpica/dsobject.c')
-rw-r--r-- | sys/contrib/dev/acpica/dsobject.c | 88 |
1 files changed, 56 insertions, 32 deletions
diff --git a/sys/contrib/dev/acpica/dsobject.c b/sys/contrib/dev/acpica/dsobject.c index 068eee1..e0e4917 100644 --- a/sys/contrib/dev/acpica/dsobject.c +++ b/sys/contrib/dev/acpica/dsobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines - * $Revision: 119 $ + * $Revision: 1.124 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp. * All rights reserved. * * 2. License @@ -126,9 +126,15 @@ #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsobject") +static ACPI_STATUS +AcpiDsBuildInternalObject ( + ACPI_WALK_STATE *WalkState, + ACPI_PARSE_OBJECT *Op, + ACPI_OPERAND_OBJECT **ObjDescPtr); + #ifndef ACPI_NO_METHOD_EXECUTION -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsBuildInternalObject * @@ -141,9 +147,9 @@ * DESCRIPTION: Translate a parser Op object to the equivalent namespace object * Simple objects are any objects other than a package object! * - ****************************************************************************/ + ******************************************************************************/ -ACPI_STATUS +static ACPI_STATUS AcpiDsBuildInternalObject ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, @@ -166,9 +172,11 @@ AcpiDsBuildInternalObject ( */ if (!Op->Common.Node) { - Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Common.Value.String, + Status = AcpiNsLookup (WalkState->ScopeInfo, + Op->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + NULL, (ACPI_NAMESPACE_NODE **) &(Op->Common.Node)); if (ACPI_FAILURE (Status)) @@ -181,13 +189,15 @@ AcpiDsBuildInternalObject ( /* Create and init the internal ACPI object */ - ObjDesc = AcpiUtCreateInternalObject ((AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); + ObjDesc = AcpiUtCreateInternalObject ( + (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, &ObjDesc); + Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, + &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -199,7 +209,7 @@ AcpiDsBuildInternalObject ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsBuildInternalBufferObj * @@ -213,7 +223,7 @@ AcpiDsBuildInternalObject ( * DESCRIPTION: Translate a parser Op package object to the equivalent * namespace object * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsBuildInternalBufferObj ( @@ -318,7 +328,7 @@ AcpiDsBuildInternalBufferObj ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsBuildInternalPackageObj * @@ -332,7 +342,7 @@ AcpiDsBuildInternalBufferObj ( * DESCRIPTION: Translate a parser Op package object to the equivalent * namespace object * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsBuildInternalPackageObj ( @@ -429,12 +439,13 @@ AcpiDsBuildInternalPackageObj ( { /* Object (package or buffer) is already built */ - ObjDesc->Package.Elements[i] = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node); + ObjDesc->Package.Elements[i] = + ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node); } else { Status = AcpiDsBuildInternalObject (WalkState, Arg, - &ObjDesc->Package.Elements[i]); + &ObjDesc->Package.Elements[i]); } i++; @@ -447,7 +458,7 @@ AcpiDsBuildInternalPackageObj ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsCreateNode * @@ -459,7 +470,7 @@ AcpiDsBuildInternalPackageObj ( * * DESCRIPTION: Create the object to be associated with a namespace node * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsCreateNode ( @@ -493,7 +504,8 @@ AcpiDsCreateNode ( /* Build an internal object for the argument(s) */ - Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, &ObjDesc); + Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, + &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -516,7 +528,7 @@ AcpiDsCreateNode ( #endif /* ACPI_NO_METHOD_EXECUTION */ -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiDsInitObjectFromOp * @@ -531,7 +543,7 @@ AcpiDsCreateNode ( * associated arguments. The namespace object is a more compact * representation of the Op and its arguments. * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiDsInitObjectFromOp ( @@ -566,7 +578,8 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Buffer TermArg operand */ - ObjDesc->Buffer.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; + ObjDesc->Buffer.Node = (ACPI_NAMESPACE_NODE *) + WalkState->Operands[0]; ObjDesc->Buffer.AmlStart = Op->Named.Data; ObjDesc->Buffer.AmlLength = Op->Named.Length; break; @@ -577,7 +590,8 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Package TermArg operand */ - ObjDesc->Package.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; + ObjDesc->Package.Node = (ACPI_NAMESPACE_NODE *) + WalkState->Operands[0]; ObjDesc->Package.AmlStart = Op->Named.Data; ObjDesc->Package.AmlLength = Op->Named.Length; break; @@ -591,9 +605,10 @@ AcpiDsInitObjectFromOp ( /* * Resolve AML Constants here - AND ONLY HERE! * All constants are integers. - * We mark the integer with a flag that indicates that it started life - * as a constant -- so that stores to constants will perform as expected (noop). - * (ZeroOp is used as a placeholder for optional target operands.) + * We mark the integer with a flag that indicates that it started + * life as a constant -- so that stores to constants will perform + * as expected (noop). ZeroOp is used as a placeholder for optional + * target operands. */ ObjDesc->Common.Flags = AOPOBJ_AML_CONSTANT; @@ -622,12 +637,13 @@ AcpiDsInitObjectFromOp ( case AML_REVISION_OP: - ObjDesc->Integer.Value = ACPI_CA_SUPPORT_LEVEL; + ObjDesc->Integer.Value = ACPI_CA_VERSION; break; default: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown constant opcode %X\n", Opcode)); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Unknown constant opcode %X\n", Opcode)); Status = AE_AML_OPERAND_TYPE; break; } @@ -637,11 +653,15 @@ AcpiDsInitObjectFromOp ( case AML_TYPE_LITERAL: ObjDesc->Integer.Value = Op->Common.Value.Integer; +#ifndef ACPI_NO_METHOD_EXECUTION + AcpiExTruncateFor32bitTable (ObjDesc); +#endif break; default: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Integer type %X\n", OpInfo->Type)); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Integer type %X\n", + OpInfo->Type)); Status = AE_AML_OPERAND_TYPE; break; } @@ -677,8 +697,10 @@ AcpiDsInitObjectFromOp ( ObjDesc->Reference.Offset = Opcode - AML_LOCAL_OP; #ifndef ACPI_NO_METHOD_EXECUTION - Status = AcpiDsMethodDataGetNode (AML_LOCAL_OP, ObjDesc->Reference.Offset, - WalkState, (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); + Status = AcpiDsMethodDataGetNode (AML_LOCAL_OP, + ObjDesc->Reference.Offset, + WalkState, + (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); #endif break; @@ -691,8 +713,10 @@ AcpiDsInitObjectFromOp ( ObjDesc->Reference.Offset = Opcode - AML_ARG_OP; #ifndef ACPI_NO_METHOD_EXECUTION - Status = AcpiDsMethodDataGetNode (AML_ARG_OP, ObjDesc->Reference.Offset, - WalkState, (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); + Status = AcpiDsMethodDataGetNode (AML_ARG_OP, + ObjDesc->Reference.Offset, + WalkState, + (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); #endif break; |