diff options
author | msmith <msmith@FreeBSD.org> | 2001-01-31 09:17:50 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 2001-01-31 09:17:50 +0000 |
commit | 7948a3a80426e7bdc0728814e72cf46852c46576 (patch) | |
tree | 5ed7785feb928c9fe57c2d7175f89660521314a4 /sys/contrib/dev/acpica/dsmthdat.c | |
parent | 68d9171019852e7a4325965a2539a5a2eb7571da (diff) | |
download | FreeBSD-src-7948a3a80426e7bdc0728814e72cf46852c46576.zip FreeBSD-src-7948a3a80426e7bdc0728814e72cf46852c46576.tar.gz |
Update to the 20010125 ACPI CA snapshot.
Diffstat (limited to 'sys/contrib/dev/acpica/dsmthdat.c')
-rw-r--r-- | sys/contrib/dev/acpica/dsmthdat.c | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/sys/contrib/dev/acpica/dsmthdat.c b/sys/contrib/dev/acpica/dsmthdat.c index 022c1bd..0734ce6 100644 --- a/sys/contrib/dev/acpica/dsmthdat.c +++ b/sys/contrib/dev/acpica/dsmthdat.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 37 $ + * $Revision: 39 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, Intel Corp. + * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. * All rights reserved. * * 2. License @@ -132,7 +132,7 @@ * * FUNCTION: AcpiDsMethodDataInit * - * PARAMETERS: *ObjDesc + * PARAMETERS: WalkState - Current walk state object * * RETURN: Status * @@ -193,7 +193,7 @@ AcpiDsMethodDataInit ( * * FUNCTION: AcpiDsMethodDataDeleteAll * - * PARAMETERS: None + * PARAMETERS: WalkState - Current walk state object * * RETURN: Status * @@ -268,7 +268,9 @@ AcpiDsMethodDataDeleteAll ( * * FUNCTION: AcpiDsMethodDataInitArgs * - * PARAMETERS: None + * PARAMETERS: *Params - Pointer to a parameter list for the method + * MaxParamCount - The arg count for this method + * WalkState - Current walk state object * * RETURN: Status * @@ -340,6 +342,7 @@ AcpiDsMethodDataInitArgs ( * Index - Which localVar or argument to get * Entry - Pointer to where a pointer to the stack * entry is returned. + * WalkState - Current walk state object * * RETURN: Status * @@ -415,6 +418,7 @@ AcpiDsMethodDataGetEntry ( * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG * Index - Which localVar or argument to get * Object - Object to be inserted into the stack entry + * WalkState - Current walk state object * * RETURN: Status * @@ -462,6 +466,7 @@ AcpiDsMethodDataSetEntry ( * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG * Index - Which localVar or argument whose type * to get + * WalkState - Current walk state object * * RETURN: Data type of selected Arg or Local * Used only in ExecMonadic2()/TypeOp. @@ -513,6 +518,7 @@ AcpiDsMethodDataGetType ( * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG * Index - Which localVar or argument whose type * to get + * WalkState - Current walk state object * * RETURN: Get the Node associated with a local or arg. * @@ -579,7 +585,8 @@ AcpiDsMethodDataGetNte ( * * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG * Index - Which localVar or argument to get - * *DestDesc - Descriptor into which selected Arg + * WalkState - Current walk state object + * *DestDesc - Ptr to Descriptor into which selected Arg * or Local value should be copied * * RETURN: Status @@ -643,16 +650,20 @@ AcpiDsMethodDataGetValue ( switch (Type) { case MTH_TYPE_ARG: + DEBUG_PRINT (ACPI_ERROR, ("DsMethodDataGetValue: Uninitialized Arg[%d] at entry %p\n", Index, Entry)); + return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG); break; case MTH_TYPE_LOCAL: + DEBUG_PRINT (ACPI_ERROR, ("DsMethodDataGetValue: Uninitialized Local[%d] at entry %p\n", Index, Entry)); + return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL); break; } @@ -677,6 +688,7 @@ AcpiDsMethodDataGetValue ( * * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG * Index - Which localVar or argument to delete + * WalkState - Current walk state object * * RETURN: Status * @@ -727,7 +739,6 @@ AcpiDsMethodDataDeleteValue ( * Decrement the reference count by one to balance the * increment when the object was stored in the slot. */ - AcpiCmRemoveReference (Object); } @@ -742,18 +753,14 @@ AcpiDsMethodDataDeleteValue ( * * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG * Index - Which localVar or argument to set - * *SrcDesc - Value to be stored - * *DestDesc - Descriptor into which *SrcDesc - * can be copied, or NULL if one must - * be allocated for the purpose. If - * provided, this descriptor will be - * used for the new value. + * SrcDesc - Value to be stored + * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Store a value in an Arg or Local. The SrcDesc is installed * as the new value for the Arg or Local and the reference count - * is incremented. + * for SrcDesc is incremented. * ******************************************************************************/ @@ -840,7 +847,6 @@ AcpiDsMethodDataSetValue ( * Store this object into the Node * (do the indirect store) */ - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) *Entry, SrcDesc, SrcDesc->Common.Type); return_ACPI_STATUS (Status); @@ -848,10 +854,19 @@ AcpiDsMethodDataSetValue ( /* - * Otherwise, just delete the existing object - * before storing the new one + * Perform "Implicit conversion" of the new object to the type of the + * existing object */ + Status = AcpiAmlConvertToTargetType ((*Entry)->Common.Type, &SrcDesc, WalkState); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; + } + /* + * Delete the existing object + * before storing the new one + */ AcpiDsMethodDataDeleteValue (Type, Index, WalkState); } @@ -862,7 +877,6 @@ AcpiDsMethodDataSetValue ( * Install the new object in the stack entry * (increments the object reference count by one) */ - Status = AcpiDsMethodDataSetEntry (Type, Index, SrcDesc, WalkState); if (ACPI_FAILURE (Status)) { |