acpi_status status = AE_OK;
union acpi_operand_object *return_desc = NULL;
- ACPI_FUNCTION_TRACE_STR(ex_opcode_0A_0T_1R,
+ ACPI_FUNCTION_TRACE_STR("ex_opcode_0A_0T_1R",
acpi_ps_get_opcode_name(walk_state->opcode));
/* Examine the AML opcode */
union acpi_operand_object **operand = &walk_state->operands[0];
acpi_status status = AE_OK;
- ACPI_FUNCTION_TRACE_STR(ex_opcode_1A_0T_0R,
+ ACPI_FUNCTION_TRACE_STR("ex_opcode_1A_0T_0R",
acpi_ps_get_opcode_name(walk_state->opcode));
/* Examine the AML opcode */
acpi_status status = AE_OK;
union acpi_operand_object **operand = &walk_state->operands[0];
- ACPI_FUNCTION_TRACE_STR(ex_opcode_1A_1T_0R,
+ ACPI_FUNCTION_TRACE_STR("ex_opcode_1A_1T_0R",
acpi_ps_get_opcode_name(walk_state->opcode));
/* Examine the AML opcode */
acpi_integer power_of_ten;
acpi_integer digit;
- ACPI_FUNCTION_TRACE_STR(ex_opcode_1A_1T_1R,
+ ACPI_FUNCTION_TRACE_STR("ex_opcode_1A_1T_1R",
acpi_ps_get_opcode_name(walk_state->opcode));
/* Examine the AML opcode */
/* Since the bit position is one-based, subtract from 33 (65) */
- return_desc->integer.value =
- temp32 ==
- 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - temp32;
+ return_desc->integer.value = temp32 == 0 ? 0 :
+ (ACPI_INTEGER_BIT_SIZE + 1) - temp32;
break;
case AML_FROM_BCD_OP: /* from_bcd (BCDValue, Result) */
for (i = 0;
(i < acpi_gbl_integer_nybble_width) && (digit > 0);
i++) {
-
/* Get the least significant 4-bit BCD digit */
temp32 = ((u32) digit) & 0xF;
status = acpi_ex_convert_to_string(operand[0], &return_desc,
ACPI_EXPLICIT_CONVERT_DECIMAL);
if (return_desc == operand[0]) {
-
/* No conversion performed, add ref to handle return value */
acpi_ut_add_reference(return_desc);
}
status = acpi_ex_convert_to_string(operand[0], &return_desc,
ACPI_EXPLICIT_CONVERT_HEX);
if (return_desc == operand[0]) {
-
/* No conversion performed, add ref to handle return value */
acpi_ut_add_reference(return_desc);
}
status = acpi_ex_convert_to_buffer(operand[0], &return_desc);
if (return_desc == operand[0]) {
-
/* No conversion performed, add ref to handle return value */
acpi_ut_add_reference(return_desc);
}
status = acpi_ex_convert_to_integer(operand[0], &return_desc,
ACPI_ANY_BASE);
if (return_desc == operand[0]) {
-
/* No conversion performed, add ref to handle return value */
acpi_ut_add_reference(return_desc);
}
}
if (ACPI_SUCCESS(status)) {
-
/* Store the return value computed above into the target object */
status = acpi_ex_store(return_desc, operand[1], walk_state);
cleanup:
+ if (!walk_state->result_obj) {
+ walk_state->result_obj = return_desc;
+ }
+
/* Delete return object on error */
if (ACPI_FAILURE(status)) {
acpi_ut_remove_reference(return_desc);
}
- /* Save return object on success */
-
- else if (!walk_state->result_obj) {
- walk_state->result_obj = return_desc;
- }
-
return_ACPI_STATUS(status);
}
u32 type;
acpi_integer value;
- ACPI_FUNCTION_TRACE_STR(ex_opcode_1A_0T_1R,
+ ACPI_FUNCTION_TRACE_STR("ex_opcode_1A_0T_1R",
acpi_ps_get_opcode_name(walk_state->opcode));
/* Examine the AML opcode */
temp_desc = operand[0];
if (ACPI_GET_DESCRIPTOR_TYPE(temp_desc) ==
ACPI_DESC_TYPE_OPERAND) {
-
/* Internal reference object - prevent deletion */
acpi_ut_add_reference(temp_desc);
if (ACPI_FAILURE(status)) {
goto cleanup;
}
-
/* Allocate a descriptor to hold the type. */
return_desc = acpi_ut_create_internal_object(ACPI_TYPE_INTEGER);
/* Check for a method local or argument, or standalone String */
- if (ACPI_GET_DESCRIPTOR_TYPE(operand[0]) ==
+ if (ACPI_GET_DESCRIPTOR_TYPE(operand[0]) !=
ACPI_DESC_TYPE_NAMED) {
- temp_desc =
- acpi_ns_get_attached_object((struct
- acpi_namespace_node *)
- operand[0]);
- if (temp_desc
- &&
- ((ACPI_GET_OBJECT_TYPE(temp_desc) ==
- ACPI_TYPE_STRING)
- || (ACPI_GET_OBJECT_TYPE(temp_desc) ==
- ACPI_TYPE_LOCAL_REFERENCE))) {
- operand[0] = temp_desc;
- acpi_ut_add_reference(temp_desc);
- } else {
- status = AE_AML_OPERAND_TYPE;
- goto cleanup;
- }
- } else {
switch (ACPI_GET_OBJECT_TYPE(operand[0])) {
case ACPI_TYPE_LOCAL_REFERENCE:
/*
break;
case ACPI_TYPE_STRING:
- break;
- default:
- status = AE_AML_OPERAND_TYPE;
- goto cleanup;
- }
- }
-
- if (ACPI_GET_DESCRIPTOR_TYPE(operand[0]) !=
- ACPI_DESC_TYPE_NAMED) {
- if (ACPI_GET_OBJECT_TYPE(operand[0]) ==
- ACPI_TYPE_STRING) {
/*
* This is a deref_of (String). The string is a reference
* to a named ACPI object.
*
* 1) Find the owning Node
- * 2) Dereference the node to an actual object. Could be a
+ * 2) Dereference the node to an actual object. Could be a
* Field, so we need to resolve the node to a value.
*/
status =
- acpi_ns_get_node(walk_state->scope_info->
- scope.node,
- operand[0]->string.pointer,
- ACPI_NS_SEARCH_PARENT,
- ACPI_CAST_INDIRECT_PTR
- (struct
- acpi_namespace_node,
- &return_desc));
+ acpi_ns_get_node_by_path(operand[0]->string.
+ pointer,
+ walk_state->
+ scope_info->scope.
+ node,
+ ACPI_NS_SEARCH_PARENT,
+ ACPI_CAST_INDIRECT_PTR
+ (struct
+ acpi_namespace_node,
+ &return_desc));
if (ACPI_FAILURE(status)) {
goto cleanup;
}
(struct acpi_namespace_node, &return_desc),
walk_state);
goto cleanup;
+
+ default:
+
+ status = AE_AML_OPERAND_TYPE;
+ goto cleanup;
}
}
acpi_ut_add_reference
(return_desc);
}
+
break;
default:
ACPI_ERROR((AE_INFO,
- "Unknown Index TargetType %X in obj %p",
+ "Unknown Index target_type %X in obj %p",
operand[0]->reference.
target_type, operand[0]));
status = AE_AML_OPERAND_TYPE;
if (ACPI_GET_DESCRIPTOR_TYPE(return_desc) ==
ACPI_DESC_TYPE_NAMED) {
+
return_desc =
acpi_ns_get_attached_object((struct
acpi_namespace_node
default:
ACPI_ERROR((AE_INFO,
- "Unknown opcode in reference(%p) - %X",
+ "Unknown opcode in ref(%p) - %X",
operand[0],
operand[0]->reference.opcode));
acpi_ut_remove_reference(return_desc);
}
- /* Save return object on success */
-
- else {
- walk_state->result_obj = return_desc;
- }
-
+ walk_state->result_obj = return_desc;
return_ACPI_STATUS(status);
}