aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/dev/acpica/dsopcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/dsopcode.c')
-rw-r--r--sys/contrib/dev/acpica/dsopcode.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/sys/contrib/dev/acpica/dsopcode.c b/sys/contrib/dev/acpica/dsopcode.c
index b3d63c111a93..086f5c28ea36 100644
--- a/sys/contrib/dev/acpica/dsopcode.c
+++ b/sys/contrib/dev/acpica/dsopcode.c
@@ -2,7 +2,7 @@
*
* Module Name: dsopcode - Dispatcher Op Region support and handling of
* "control" opcodes
- * $Revision: 21 $
+ * $Revision: 25 $
*
*****************************************************************************/
@@ -728,26 +728,41 @@ AcpiDsEvalRegionOperands (
return_ACPI_STATUS (Status);
}
+ /* Resolve the length and address operands to numbers */
+
+ Status = AcpiAmlResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+
+ DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE,
+ AcpiPsGetOpcodeName (Op->Opcode),
+ 1, "after AcpiAmlResolveOperands");
+
+
ObjDesc = AcpiNsGetAttachedObject (Node);
if (!ObjDesc)
{
return_ACPI_STATUS (AE_NOT_EXIST);
}
- /* Get the length and save it */
-
- /* Top of stack */
+ /*
+ * Get the length operand and save it
+ * (at Top of stack)
+ */
OperandDesc = WalkState->Operands[WalkState->NumOperands - 1];
ObjDesc->Region.Length = (UINT32) OperandDesc->Number.Value;
AcpiCmRemoveReference (OperandDesc);
- /* Get the address and save it */
-
- /* Top of stack - 1 */
+ /*
+ * Get the address and save it
+ * (at top of stack - 1)
+ */
OperandDesc = WalkState->Operands[WalkState->NumOperands - 2];
- ObjDesc->Region.Address = OperandDesc->Number.Value;
+ ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) OperandDesc->Number.Value;
AcpiCmRemoveReference (OperandDesc);