patch-2.4.0-prerelease linux/drivers/acpi/interpreter/amresolv.c

Next file: linux/drivers/acpi/interpreter/amresop.c
Previous file: linux/drivers/acpi/interpreter/amresnte.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test12/linux/drivers/acpi/interpreter/amresolv.c linux/drivers/acpi/interpreter/amresolv.c
@@ -2,7 +2,7 @@
 /******************************************************************************
  *
  * Module Name: amresolv - AML Interpreter object resolution
- *              $Revision: 74 $
+ *              $Revision: 78 $
  *
  *****************************************************************************/
 
@@ -69,7 +69,14 @@
 		status = AE_AML_NO_OPERAND;
 	}
 
-	else if (!field_desc->field_unit.container) {
+	if (!(field_desc->common.flags & AOPOBJ_DATA_VALID)) {
+		status = acpi_ds_get_field_unit_arguments (field_desc);
+		if (ACPI_FAILURE (status)) {
+			return (status);
+		}
+	}
+
+	if (!field_desc->field_unit.container) {
 		status = AE_AML_INTERNAL;
 	}
 
@@ -77,12 +84,6 @@
 		status = AE_AML_OPERAND_TYPE;
 	}
 
-	else if (field_desc->field_unit.sequence
-			 != field_desc->field_unit.container->buffer.sequence)
-	{
-		status = AE_AML_INTERNAL;
-	}
-
 	else if (!result_desc) {
 		status = AE_AML_INTERNAL;
 	}
@@ -114,7 +115,7 @@
 		mask = ((u32) 1 << field_desc->field_unit.length) - (u32) 1;
 	}
 	else {
-		mask = 0xFFFFFFFF;
+		mask = ACPI_UINT32_MAX;
 	}
 
 	result_desc->number.type = (u8) ACPI_TYPE_NUMBER;
@@ -186,7 +187,7 @@
 	 */
 
 	if (VALID_DESCRIPTOR_TYPE (*stack_ptr, ACPI_DESC_TYPE_NAMED)) {
-		status = acpi_aml_resolve_node_to_value ((ACPI_NAMESPACE_NODE **) stack_ptr);
+		status = acpi_aml_resolve_node_to_value ((ACPI_NAMESPACE_NODE **) stack_ptr, walk_state);
 	}
 
 
@@ -340,7 +341,11 @@
 		case AML_ONES_OP:
 
 			stack_desc->common.type = (u8) ACPI_TYPE_NUMBER;
-			stack_desc->number.value = 0xFFFFFFFF;
+			stack_desc->number.value = ACPI_INTEGER_MAX;
+
+			/* Truncate value if we are executing from a 32-bit ACPI table */
+
+			acpi_aml_truncate_for32bit_table (stack_desc, walk_state);
 			break;
 
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)