Commit 7e167397 authored by Andy Grover's avatar Andy Grover

ACPI: Update to interpreter 20021022

 - Remove old code
 - Change some defines
 - Change Scope behavior
parent ecf2c214
/****************************************************************************** /******************************************************************************
* *
* Module Name: dsfield - Dispatcher field routines * Module Name: dsfield - Dispatcher field routines
* $Revision: 68 $ * $Revision: 69 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -103,7 +103,7 @@ acpi_ds_create_buffer_field ( ...@@ -103,7 +103,7 @@ acpi_ds_create_buffer_field (
* Enter the Name_string into the namespace * Enter the Name_string into the namespace
*/ */
status = acpi_ns_lookup (walk_state->scope_info, arg->common.value.string, status = acpi_ns_lookup (walk_state->scope_info, arg->common.value.string,
INTERNAL_TYPE_DEF_ANY, ACPI_IMODE_LOAD_PASS1, ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1,
flags, walk_state, &(node)); flags, walk_state, &(node));
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (arg->common.value.string, status); ACPI_REPORT_NSERROR (arg->common.value.string, status);
...@@ -343,7 +343,7 @@ acpi_ds_create_field ( ...@@ -343,7 +343,7 @@ acpi_ds_create_field (
/* Each remaining arg is a Named Field */ /* Each remaining arg is a Named Field */
info.field_type = INTERNAL_TYPE_REGION_FIELD; info.field_type = ACPI_TYPE_LOCAL_REGION_FIELD;
info.region_node = region_node; info.region_node = region_node;
status = acpi_ds_get_field_names (&info, walk_state, arg->common.next); status = acpi_ds_get_field_names (&info, walk_state, arg->common.next);
...@@ -384,17 +384,17 @@ acpi_ds_init_field_objects ( ...@@ -384,17 +384,17 @@ acpi_ds_init_field_objects (
switch (walk_state->opcode) { switch (walk_state->opcode) {
case AML_FIELD_OP: case AML_FIELD_OP:
arg = acpi_ps_get_arg (op, 2); arg = acpi_ps_get_arg (op, 2);
type = INTERNAL_TYPE_REGION_FIELD; type = ACPI_TYPE_LOCAL_REGION_FIELD;
break; break;
case AML_BANK_FIELD_OP: case AML_BANK_FIELD_OP:
arg = acpi_ps_get_arg (op, 4); arg = acpi_ps_get_arg (op, 4);
type = INTERNAL_TYPE_BANK_FIELD; type = ACPI_TYPE_LOCAL_BANK_FIELD;
break; break;
case AML_INDEX_FIELD_OP: case AML_INDEX_FIELD_OP:
arg = acpi_ps_get_arg (op, 3); arg = acpi_ps_get_arg (op, 3);
type = INTERNAL_TYPE_INDEX_FIELD; type = ACPI_TYPE_LOCAL_INDEX_FIELD;
break; break;
default: default:
...@@ -477,11 +477,11 @@ acpi_ds_create_bank_field ( ...@@ -477,11 +477,11 @@ acpi_ds_create_bank_field (
} }
} }
/* Second arg is the Bank Register (must already exist) */ /* Second arg is the Bank Register (Field) (must already exist) */
arg = arg->common.next; arg = arg->common.next;
status = acpi_ns_lookup (walk_state->scope_info, arg->common.value.string, status = acpi_ns_lookup (walk_state->scope_info, arg->common.value.string,
INTERNAL_TYPE_BANK_FIELD_DEFN, ACPI_IMODE_EXECUTE, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
ACPI_NS_SEARCH_PARENT, walk_state, &info.register_node); ACPI_NS_SEARCH_PARENT, walk_state, &info.register_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (arg->common.value.string, status); ACPI_REPORT_NSERROR (arg->common.value.string, status);
...@@ -500,7 +500,7 @@ acpi_ds_create_bank_field ( ...@@ -500,7 +500,7 @@ acpi_ds_create_bank_field (
/* Each remaining arg is a Named Field */ /* Each remaining arg is a Named Field */
info.field_type = INTERNAL_TYPE_BANK_FIELD; info.field_type = ACPI_TYPE_LOCAL_BANK_FIELD;
info.region_node = region_node; info.region_node = region_node;
status = acpi_ds_get_field_names (&info, walk_state, arg->common.next); status = acpi_ds_get_field_names (&info, walk_state, arg->common.next);
...@@ -552,7 +552,7 @@ acpi_ds_create_index_field ( ...@@ -552,7 +552,7 @@ acpi_ds_create_index_field (
arg = arg->common.next; arg = arg->common.next;
status = acpi_ns_lookup (walk_state->scope_info, arg->common.value.string, status = acpi_ns_lookup (walk_state->scope_info, arg->common.value.string,
INTERNAL_TYPE_INDEX_FIELD_DEFN, ACPI_IMODE_EXECUTE, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
ACPI_NS_SEARCH_PARENT, walk_state, &info.data_register_node); ACPI_NS_SEARCH_PARENT, walk_state, &info.data_register_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (arg->common.value.string, status); ACPI_REPORT_NSERROR (arg->common.value.string, status);
...@@ -566,7 +566,7 @@ acpi_ds_create_index_field ( ...@@ -566,7 +566,7 @@ acpi_ds_create_index_field (
/* Each remaining arg is a Named Field */ /* Each remaining arg is a Named Field */
info.field_type = INTERNAL_TYPE_INDEX_FIELD; info.field_type = ACPI_TYPE_LOCAL_INDEX_FIELD;
info.region_node = region_node; info.region_node = region_node;
status = acpi_ds_get_field_names (&info, walk_state, arg->common.next); status = acpi_ds_get_field_names (&info, walk_state, arg->common.next);
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: dsmthdat - control method arguments and local variables * Module Name: dsmthdat - control method arguments and local variables
* $Revision: 63 $ * $Revision: 64 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -603,7 +603,7 @@ acpi_ds_store_object_to_local ( ...@@ -603,7 +603,7 @@ acpi_ds_store_object_to_local (
* If we have a valid reference object that came from Ref_of(), do the * If we have a valid reference object that came from Ref_of(), do the
* indirect store * indirect store
*/ */
if ((current_obj_desc->common.type == INTERNAL_TYPE_REFERENCE) && if ((current_obj_desc->common.type == ACPI_TYPE_LOCAL_REFERENCE) &&
(current_obj_desc->reference.opcode == AML_REF_OF_OP)) { (current_obj_desc->reference.opcode == AML_REF_OF_OP)) {
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"Arg (%p) is an Obj_ref(Node), storing in node %p\n", "Arg (%p) is an Obj_ref(Node), storing in node %p\n",
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: dsobject - Dispatcher object management routines * Module Name: dsobject - Dispatcher object management routines
* $Revision: 108 $ * $Revision: 110 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -707,7 +707,7 @@ acpi_ds_init_object_from_op ( ...@@ -707,7 +707,7 @@ acpi_ds_init_object_from_op (
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
obj_desc->string.pointer = op->common.value.string; obj_desc->string.pointer = op->common.value.string;
obj_desc->string.length = ACPI_STRLEN (op->common.value.string); obj_desc->string.length = (u32) ACPI_STRLEN (op->common.value.string);
/* /*
* The string is contained in the ACPI table, don't ever try * The string is contained in the ACPI table, don't ever try
...@@ -721,7 +721,7 @@ acpi_ds_init_object_from_op ( ...@@ -721,7 +721,7 @@ acpi_ds_init_object_from_op (
break; break;
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
switch (op_info->type) { switch (op_info->type) {
case AML_TYPE_LOCAL_VARIABLE: case AML_TYPE_LOCAL_VARIABLE:
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: dsopcode - Dispatcher Op Region support and handling of * Module Name: dsopcode - Dispatcher Op Region support and handling of
* "control" opcodes * "control" opcodes
* $Revision: 82 $ * $Revision: 83 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -1021,7 +1021,7 @@ acpi_ds_exec_end_control_op ( ...@@ -1021,7 +1021,7 @@ acpi_ds_exec_end_control_op (
* Allow references created by the Index operator to return unchanged. * Allow references created by the Index operator to return unchanged.
*/ */
if ((ACPI_GET_DESCRIPTOR_TYPE (walk_state->results->results.obj_desc[0]) == ACPI_DESC_TYPE_OPERAND) && if ((ACPI_GET_DESCRIPTOR_TYPE (walk_state->results->results.obj_desc[0]) == ACPI_DESC_TYPE_OPERAND) &&
(ACPI_GET_OBJECT_TYPE (walk_state->results->results.obj_desc [0]) == INTERNAL_TYPE_REFERENCE) && (ACPI_GET_OBJECT_TYPE (walk_state->results->results.obj_desc [0]) == ACPI_TYPE_LOCAL_REFERENCE) &&
((walk_state->results->results.obj_desc [0])->reference.opcode != AML_INDEX_OP)) { ((walk_state->results->results.obj_desc [0])->reference.opcode != AML_INDEX_OP)) {
status = acpi_ex_resolve_to_value (&walk_state->results->results.obj_desc [0], walk_state); status = acpi_ex_resolve_to_value (&walk_state->results->results.obj_desc [0], walk_state);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: dsutils - Dispatcher utilities * Module Name: dsutils - Dispatcher utilities
* $Revision: 95 $ * $Revision: 96 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -431,7 +431,7 @@ acpi_ds_create_operand ( ...@@ -431,7 +431,7 @@ acpi_ds_create_operand (
/* Get the object type of the argument */ /* Get the object type of the argument */
op_info = acpi_ps_get_opcode_info (opcode); op_info = acpi_ps_get_opcode_info (opcode);
if (op_info->object_type == INTERNAL_TYPE_INVALID) { if (op_info->object_type == ACPI_TYPE_INVALID) {
return_ACPI_STATUS (AE_NOT_IMPLEMENTED); return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
} }
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: dswload - Dispatcher namespace load callbacks * Module Name: dswload - Dispatcher namespace load callbacks
* $Revision: 75 $ * $Revision: 78 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -151,49 +151,27 @@ acpi_ds_load1_begin_op ( ...@@ -151,49 +151,27 @@ acpi_ds_load1_begin_op (
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
"State=%p Op=%p [%s] ", walk_state, op, acpi_ut_get_type_name (object_type))); "State=%p Op=%p [%s] ", walk_state, op, acpi_ut_get_type_name (object_type)));
/* switch (walk_state->opcode) {
* Setup the search flags. case AML_SCOPE_OP:
*
* Since we are entering a name into the namespace, we do not want to
* enable the search-to-root upsearch.
*
* There are only two conditions where it is acceptable that the name
* already exists:
* 1) the Scope() operator can reopen a scoping object that was
* previously defined (Scope, Method, Device, etc.)
* 2) Whenever we are parsing a deferred opcode (Op_region, Buffer,
* Buffer_field, or Package), the name of the object is already
* in the namespace.
*/
flags = ACPI_NS_NO_UPSEARCH;
if ((walk_state->opcode != AML_SCOPE_OP) &&
(!(walk_state->parse_flags & ACPI_PARSE_DEFERRED_OP))) {
flags |= ACPI_NS_ERROR_IF_FOUND;
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Cannot already exist\n"));
}
else {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Both Find or Create allowed\n"));
}
/* /*
* Enter the named type into the internal namespace. We enter the name * The target name of the Scope() operator must exist at this point so
* as we go downward in the parse tree. Any necessary subobjects that involve * that we can actually open the scope to enter new names underneath it.
* arguments to the opcode must be created as we go back up the parse tree later. * Allow search-to-root for single namesegs.
*/ */
status = acpi_ns_lookup (walk_state->scope_info, path, object_type, status = acpi_ns_lookup (walk_state->scope_info, path, object_type,
ACPI_IMODE_LOAD_PASS1, flags, walk_state, &(node)); ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, walk_state, &(node));
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (path, status); ACPI_REPORT_NSERROR (path, status);
return (status); return (status);
} }
/* /*
* For the scope op, we must check to make sure that the target is * Check to make sure that the target is
* one of the opcodes that actually opens a scope * one of the opcodes that actually opens a scope
*/ */
if (walk_state->opcode == AML_SCOPE_OP) {
switch (node->type) { switch (node->type) {
case ACPI_TYPE_ANY: /* Scope nodes are untyped (ANY) */ case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
case ACPI_TYPE_DEVICE: case ACPI_TYPE_DEVICE:
case ACPI_TYPE_POWER: case ACPI_TYPE_POWER:
case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_PROCESSOR:
...@@ -223,7 +201,7 @@ acpi_ds_load1_begin_op ( ...@@ -223,7 +201,7 @@ acpi_ds_load1_begin_op (
walk_state->scope_info->common.value = ACPI_TYPE_ANY; walk_state->scope_info->common.value = ACPI_TYPE_ANY;
break; break;
default: default:
/* All other types are an error */ /* All other types are an error */
...@@ -232,8 +210,53 @@ acpi_ds_load1_begin_op ( ...@@ -232,8 +210,53 @@ acpi_ds_load1_begin_op (
return (AE_AML_OPERAND_TYPE); return (AE_AML_OPERAND_TYPE);
} }
break;
default:
/*
* For all other named opcodes, we will enter the name into the namespace.
*
* Setup the search flags.
* Since we are entering a name into the namespace, we do not want to
* enable the search-to-root upsearch.
*
* There are only two conditions where it is acceptable that the name
* already exists:
* 1) the Scope() operator can reopen a scoping object that was
* previously defined (Scope, Method, Device, etc.)
* 2) Whenever we are parsing a deferred opcode (Op_region, Buffer,
* Buffer_field, or Package), the name of the object is already
* in the namespace.
*/
flags = ACPI_NS_NO_UPSEARCH;
if ((walk_state->opcode != AML_SCOPE_OP) &&
(!(walk_state->parse_flags & ACPI_PARSE_DEFERRED_OP))) {
flags |= ACPI_NS_ERROR_IF_FOUND;
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Cannot already exist\n"));
}
else {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Both Find or Create allowed\n"));
}
/*
* Enter the named type into the internal namespace. We enter the name
* as we go downward in the parse tree. Any necessary subobjects that involve
* arguments to the opcode must be created as we go back up the parse tree later.
*/
status = acpi_ns_lookup (walk_state->scope_info, path, object_type,
ACPI_IMODE_LOAD_PASS1, flags, walk_state, &(node));
if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (path, status);
return (status);
}
break;
} }
/* Common exit */
if (!op) { if (!op) {
/* Create a new op */ /* Create a new op */
...@@ -419,59 +442,43 @@ acpi_ds_load2_begin_op ( ...@@ -419,59 +442,43 @@ acpi_ds_load2_begin_op (
"State=%p Op=%p Type=%X\n", walk_state, op, object_type)); "State=%p Op=%p Type=%X\n", walk_state, op, object_type));
if (walk_state->opcode == AML_FIELD_OP || switch (walk_state->opcode) {
walk_state->opcode == AML_BANK_FIELD_OP || case AML_FIELD_OP:
walk_state->opcode == AML_INDEX_FIELD_OP) { case AML_BANK_FIELD_OP:
case AML_INDEX_FIELD_OP:
node = NULL; node = NULL;
status = AE_OK; status = AE_OK;
} break;
else if (walk_state->opcode == AML_INT_NAMEPATH_OP) {
case AML_INT_NAMEPATH_OP:
/* /*
* The Name_path is an object reference to an existing object. Don't enter the * The Name_path is an object reference to an existing object. Don't enter the
* name into the namespace, but look it up for use later * name into the namespace, but look it up for use later
*/ */
status = acpi_ns_lookup (walk_state->scope_info, buffer_ptr, object_type, status = acpi_ns_lookup (walk_state->scope_info, buffer_ptr, object_type,
ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, walk_state, &(node)); ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, walk_state, &(node));
} break;
else {
/* All other opcodes */
if (op && op->common.node) {
/* This op/node was previously entered into the namespace */
node = op->common.node;
if (acpi_ns_opens_scope (object_type)) {
status = acpi_ds_scope_stack_push (node, object_type, walk_state);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
} case AML_SCOPE_OP:
return_ACPI_STATUS (AE_OK);
}
/* /*
* Enter the named type into the internal namespace. We enter the name * The Path is an object reference to an existing object. Don't enter the
* as we go downward in the parse tree. Any necessary subobjects that involve * name into the namespace, but look it up for use later
* arguments to the opcode must be created as we go back up the parse tree later.
*/ */
status = acpi_ns_lookup (walk_state->scope_info, buffer_ptr, object_type, status = acpi_ns_lookup (walk_state->scope_info, buffer_ptr, object_type,
ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, walk_state, &(node)); ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, walk_state, &(node));
} if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (buffer_ptr, status);
if (ACPI_FAILURE (status)) { return_ACPI_STATUS (status);
ACPI_REPORT_NSERROR (buffer_ptr, status); }
return_ACPI_STATUS (status); /*
} * We must check to make sure that the target is
* one of the opcodes that actually opens a scope
/* */
* For the scope op, we must check to make sure that the target is
* one of the opcodes that actually opens a scope
*/
if (walk_state->opcode == AML_SCOPE_OP) {
switch (node->type) { switch (node->type) {
case ACPI_TYPE_ANY: /* Scope nodes are untyped (ANY) */ case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
case ACPI_TYPE_DEVICE: case ACPI_TYPE_DEVICE:
case ACPI_TYPE_POWER: case ACPI_TYPE_POWER:
case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_PROCESSOR:
...@@ -499,7 +506,7 @@ acpi_ds_load2_begin_op ( ...@@ -499,7 +506,7 @@ acpi_ds_load2_begin_op (
walk_state->scope_info->common.value = ACPI_TYPE_ANY; walk_state->scope_info->common.value = ACPI_TYPE_ANY;
break; break;
default: default:
/* All other types are an error */ /* All other types are an error */
...@@ -508,8 +515,43 @@ acpi_ds_load2_begin_op ( ...@@ -508,8 +515,43 @@ acpi_ds_load2_begin_op (
return (AE_AML_OPERAND_TYPE); return (AE_AML_OPERAND_TYPE);
} }
break;
default:
/* All other opcodes */
if (op && op->common.node) {
/* This op/node was previously entered into the namespace */
node = op->common.node;
if (acpi_ns_opens_scope (object_type)) {
status = acpi_ds_scope_stack_push (node, object_type, walk_state);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
}
return_ACPI_STATUS (AE_OK);
}
/*
* Enter the named type into the internal namespace. We enter the name
* as we go downward in the parse tree. Any necessary subobjects that involve
* arguments to the opcode must be created as we go back up the parse tree later.
*/
status = acpi_ns_lookup (walk_state->scope_info, buffer_ptr, object_type,
ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, walk_state, &(node));
break;
} }
if (ACPI_FAILURE (status)) {
ACPI_REPORT_NSERROR (buffer_ptr, status);
return_ACPI_STATUS (status);
}
if (!op) { if (!op) {
/* Create a new op */ /* Create a new op */
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: dswscope - Scope stack manipulation * Module Name: dswscope - Scope stack manipulation
* $Revision: 53 $ * $Revision: 56 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include "acpi.h" #include "acpi.h"
#include "acinterp.h"
#include "acdispat.h" #include "acdispat.h"
...@@ -88,6 +87,7 @@ acpi_ds_scope_stack_push ( ...@@ -88,6 +87,7 @@ acpi_ds_scope_stack_push (
acpi_walk_state *walk_state) acpi_walk_state *walk_state)
{ {
acpi_generic_state *scope_info; acpi_generic_state *scope_info;
acpi_generic_state *old_scope_info;
ACPI_FUNCTION_TRACE ("Ds_scope_stack_push"); ACPI_FUNCTION_TRACE ("Ds_scope_stack_push");
...@@ -102,7 +102,7 @@ acpi_ds_scope_stack_push ( ...@@ -102,7 +102,7 @@ acpi_ds_scope_stack_push (
/* Make sure object type is valid */ /* Make sure object type is valid */
if (!acpi_ex_validate_object_type (type)) { if (!acpi_ut_valid_object_type (type)) {
ACPI_REPORT_WARNING (("Ds_scope_stack_push: type code out of range\n")); ACPI_REPORT_WARNING (("Ds_scope_stack_push: type code out of range\n"));
} }
...@@ -120,6 +120,28 @@ acpi_ds_scope_stack_push ( ...@@ -120,6 +120,28 @@ acpi_ds_scope_stack_push (
scope_info->scope.node = node; scope_info->scope.node = node;
scope_info->common.value = (u16) type; scope_info->common.value = (u16) type;
walk_state->scope_depth++;
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"[%.2d] Pushed scope ", (u32) walk_state->scope_depth));
old_scope_info = walk_state->scope_info;
if (old_scope_info) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
"[%4.4s] (%10s)",
old_scope_info->scope.node->name.ascii,
acpi_ut_get_type_name (old_scope_info->common.value)));
}
else {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
"[\\___] (%10s)", "ROOT"));
}
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
", New scope -> [%4.4s] (%s)\n",
scope_info->scope.node->name.ascii,
acpi_ut_get_type_name (scope_info->common.value)));
/* Push new scope object onto stack */ /* Push new scope object onto stack */
acpi_ut_push_generic_state (&walk_state->scope_info, scope_info); acpi_ut_push_generic_state (&walk_state->scope_info, scope_info);
...@@ -150,6 +172,7 @@ acpi_ds_scope_stack_pop ( ...@@ -150,6 +172,7 @@ acpi_ds_scope_stack_pop (
acpi_walk_state *walk_state) acpi_walk_state *walk_state)
{ {
acpi_generic_state *scope_info; acpi_generic_state *scope_info;
acpi_generic_state *new_scope_info;
ACPI_FUNCTION_TRACE ("Ds_scope_stack_pop"); ACPI_FUNCTION_TRACE ("Ds_scope_stack_pop");
...@@ -163,8 +186,25 @@ acpi_ds_scope_stack_pop ( ...@@ -163,8 +186,25 @@ acpi_ds_scope_stack_pop (
return_ACPI_STATUS (AE_STACK_UNDERFLOW); return_ACPI_STATUS (AE_STACK_UNDERFLOW);
} }
walk_state->scope_depth--;
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"Popped object type (%s)\n", acpi_ut_get_type_name (scope_info->common.value))); "[%.2d] Popped scope [%4.4s] (%10s), New scope -> ",
(u32) walk_state->scope_depth,
scope_info->scope.node->name.ascii,
acpi_ut_get_type_name (scope_info->common.value)));
new_scope_info = walk_state->scope_info;
if (new_scope_info) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
"[%4.4s] (%s)\n",
new_scope_info->scope.node->name.ascii,
acpi_ut_get_type_name (new_scope_info->common.value)));
}
else {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
"[\\___] (ROOT)\n"));
}
acpi_ut_delete_generic_state (scope_info); acpi_ut_delete_generic_state (scope_info);
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: dswstate - Dispatcher parse tree walk management routines * Module Name: dswstate - Dispatcher parse tree walk management routines
* $Revision: 68 $ * $Revision: 69 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -174,7 +174,7 @@ acpi_ds_result_pop ( ...@@ -174,7 +174,7 @@ acpi_ds_result_pop (
acpi_operand_object **object, acpi_operand_object **object,
acpi_walk_state *walk_state) acpi_walk_state *walk_state)
{ {
u32 index; NATIVE_UINT index;
acpi_generic_state *state; acpi_generic_state *state;
...@@ -205,7 +205,7 @@ acpi_ds_result_pop ( ...@@ -205,7 +205,7 @@ acpi_ds_result_pop (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Index=%X State=%p Num=%X\n", ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Index=%X State=%p Num=%X\n",
*object, (*object) ? acpi_ut_get_object_type_name (*object) : "NULL", *object, (*object) ? acpi_ut_get_object_type_name (*object) : "NULL",
index -1, walk_state, state->results.num_results)); (u32) index -1, walk_state, state->results.num_results));
return (AE_OK); return (AE_OK);
} }
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: evevent - Fixed and General Purpose Even handling and dispatch * Module Name: evevent - Fixed and General Purpose Even handling and dispatch
* $Revision: 92 $ * $Revision: 94 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -358,19 +358,24 @@ acpi_ev_gpe_initialize (void) ...@@ -358,19 +358,24 @@ acpi_ev_gpe_initialize (void)
/* Check for GPE0/GPE1 overlap */ /* Check for GPE0/GPE1 overlap */
if (acpi_gbl_gpe_number_max >= acpi_gbl_FADT->gpe1_base) { if (acpi_gbl_gpe_number_max >= acpi_gbl_FADT->gpe1_base) {
ACPI_REPORT_ERROR (("GPE0 block overlaps the GPE1 block\n")); ACPI_REPORT_ERROR ((
"GPE0 block (GPE 0 to %d) overlaps the GPE1 block (GPE %d to %d)\n",
acpi_gbl_gpe_number_max, acpi_gbl_FADT->gpe1_base,
acpi_gbl_FADT->gpe1_base + (ACPI_MUL_8 (acpi_gbl_gpe_block_info[1].register_count) - 1)));
return_ACPI_STATUS (AE_BAD_VALUE); return_ACPI_STATUS (AE_BAD_VALUE);
} }
/* GPE0 and GPE1 do not have to be contiguous in the GPE number space */ /* GPE0 and GPE1 do not have to be contiguous in the GPE number space */
acpi_gbl_gpe_number_max = acpi_gbl_FADT->gpe1_base + (ACPI_MUL_8 (acpi_gbl_gpe_block_info[1].register_count) - 1); acpi_gbl_gpe_number_max = acpi_gbl_FADT->gpe1_base +
(ACPI_MUL_8 (acpi_gbl_gpe_block_info[1].register_count) - 1);
} }
/* Check for Max GPE number out-of-range */ /* Check for Max GPE number out-of-range */
if (acpi_gbl_gpe_number_max > ACPI_GPE_MAX) { if (acpi_gbl_gpe_number_max > ACPI_GPE_MAX) {
ACPI_REPORT_ERROR (("Maximum GPE number from FADT is too large: 0x%X\n", acpi_gbl_gpe_number_max)); ACPI_REPORT_ERROR (("Maximum GPE number from FADT is too large: 0x%X\n",
acpi_gbl_gpe_number_max));
return_ACPI_STATUS (AE_BAD_VALUE); return_ACPI_STATUS (AE_BAD_VALUE);
} }
...@@ -794,7 +799,7 @@ acpi_ev_asynch_execute_gpe_method ( ...@@ -794,7 +799,7 @@ acpi_ev_asynch_execute_gpe_method (
*/ */
status = acpi_ns_evaluate_by_handle (gpe_info.method_handle, NULL, NULL); status = acpi_ns_evaluate_by_handle (gpe_info.method_handle, NULL, NULL);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
ACPI_REPORT_ERROR (("%s while evaluated GPE%X method\n", ACPI_REPORT_ERROR (("%s while evaluating GPE%X method\n",
acpi_format_exception (status), gpe_number)); acpi_format_exception (status), gpe_number));
} }
} }
...@@ -846,7 +851,7 @@ acpi_ev_gpe_dispatch ( ...@@ -846,7 +851,7 @@ acpi_ev_gpe_dispatch (
gpe_number_index = acpi_ev_get_gpe_number_index (gpe_number); gpe_number_index = acpi_ev_get_gpe_number_index (gpe_number);
if (gpe_number_index == ACPI_GPE_INVALID) { if (gpe_number_index == ACPI_GPE_INVALID) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid event, GPE[%X].\n", gpe_number)); ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "GPE[%X] is not a valid event\n", gpe_number));
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED); return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
} }
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: evxface - External interfaces for ACPI events * Module Name: evxface - External interfaces for ACPI events
* $Revision: 130 $ * $Revision: 131 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -294,7 +294,7 @@ acpi_install_notify_handler ( ...@@ -294,7 +294,7 @@ acpi_install_notify_handler (
/* Install the handler */ /* Install the handler */
notify_obj = acpi_ut_create_internal_object (INTERNAL_TYPE_NOTIFY); notify_obj = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_NOTIFY);
if (!notify_obj) { if (!notify_obj) {
status = AE_NO_MEMORY; status = AE_NO_MEMORY;
goto unlock_and_exit; goto unlock_and_exit;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: evxfregn - External Interfaces, ACPI Operation Regions and * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and
* Address Spaces. * Address Spaces.
* $Revision: 50 $ * $Revision: 51 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -220,7 +220,7 @@ acpi_install_address_space_handler ( ...@@ -220,7 +220,7 @@ acpi_install_address_space_handler (
* So, we just allocate the object for the handler and link it * So, we just allocate the object for the handler and link it
* into the list. * into the list.
*/ */
handler_obj = acpi_ut_create_internal_object (INTERNAL_TYPE_ADDRESS_HANDLER); handler_obj = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_ADDRESS_HANDLER);
if (!handler_obj) { if (!handler_obj) {
status = AE_NO_MEMORY; status = AE_NO_MEMORY;
goto unlock_and_exit; goto unlock_and_exit;
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes) * Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
* $Revision: 67 $ * $Revision: 69 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -67,7 +67,7 @@ acpi_ex_add_table ( ...@@ -67,7 +67,7 @@ acpi_ex_add_table (
/* Create an object to be the table handle */ /* Create an object to be the table handle */
obj_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_REFERENCE); obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_REFERENCE);
if (!obj_desc) { if (!obj_desc) {
return_ACPI_STATUS (AE_NO_MEMORY); return_ACPI_STATUS (AE_NO_MEMORY);
} }
...@@ -77,7 +77,6 @@ acpi_ex_add_table ( ...@@ -77,7 +77,6 @@ acpi_ex_add_table (
table_info.pointer = table; table_info.pointer = table;
table_info.length = (ACPI_SIZE) table->length; table_info.length = (ACPI_SIZE) table->length;
table_info.allocation = ACPI_MEM_ALLOCATED; table_info.allocation = ACPI_MEM_ALLOCATED;
table_info.base_pointer = table;
status = acpi_tb_install_table (&table_info); status = acpi_tb_install_table (&table_info);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
...@@ -316,9 +315,9 @@ acpi_ex_load_op ( ...@@ -316,9 +315,9 @@ acpi_ex_load_op (
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Field %p %s\n", ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Field %p %s\n",
obj_desc, acpi_ut_get_object_type_name (obj_desc))); obj_desc, acpi_ut_get_object_type_name (obj_desc)));
...@@ -417,7 +416,7 @@ acpi_ex_unload_table ( ...@@ -417,7 +416,7 @@ acpi_ex_unload_table (
*/ */
if ((!ddb_handle) || if ((!ddb_handle) ||
(ACPI_GET_DESCRIPTOR_TYPE (ddb_handle) != ACPI_DESC_TYPE_OPERAND) || (ACPI_GET_DESCRIPTOR_TYPE (ddb_handle) != ACPI_DESC_TYPE_OPERAND) ||
(ACPI_GET_OBJECT_TYPE (ddb_handle) != INTERNAL_TYPE_REFERENCE)) { (ACPI_GET_OBJECT_TYPE (ddb_handle) != ACPI_TYPE_LOCAL_REFERENCE)) {
return_ACPI_STATUS (AE_BAD_PARAMETER); return_ACPI_STATUS (AE_BAD_PARAMETER);
} }
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: exconvrt - Object conversion routines * Module Name: exconvrt - Object conversion routines
* $Revision: 39 $ * $Revision: 41 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -510,7 +510,7 @@ acpi_ex_convert_to_string ( ...@@ -510,7 +510,7 @@ acpi_ex_convert_to_string (
new_buf [index-1] = 0; new_buf [index-1] = 0;
ret_desc->buffer.pointer = new_buf; ret_desc->buffer.pointer = new_buf;
ret_desc->string.length = ACPI_STRLEN ((char *) new_buf); ret_desc->string.length = (u32) ACPI_STRLEN ((char *) new_buf);
/* Return the new buffer descriptor */ /* Return the new buffer descriptor */
...@@ -587,7 +587,7 @@ acpi_ex_convert_to_target_type ( ...@@ -587,7 +587,7 @@ acpi_ex_convert_to_target_type (
case ARGI_INTEGER_REF: /* Handles Increment, Decrement cases */ case ARGI_INTEGER_REF: /* Handles Increment, Decrement cases */
switch (destination_type) { switch (destination_type) {
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
/* /*
* Named field can always handle conversions * Named field can always handle conversions
*/ */
...@@ -612,8 +612,8 @@ acpi_ex_convert_to_target_type ( ...@@ -612,8 +612,8 @@ acpi_ex_convert_to_target_type (
switch (destination_type) { switch (destination_type) {
case ACPI_TYPE_INTEGER: case ACPI_TYPE_INTEGER:
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
/* /*
* These types require an Integer operand. We can convert * These types require an Integer operand. We can convert
* a Buffer or a String to an Integer if necessary. * a Buffer or a String to an Integer if necessary.
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: excreate - Named object creation * Module Name: excreate - Named object creation
* $Revision: 94 $ * $Revision: 97 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -55,7 +55,7 @@ acpi_ex_create_alias ( ...@@ -55,7 +55,7 @@ acpi_ex_create_alias (
{ {
acpi_namespace_node *target_node; acpi_namespace_node *target_node;
acpi_namespace_node *alias_node; acpi_namespace_node *alias_node;
acpi_status status; acpi_status status = AE_OK;
ACPI_FUNCTION_TRACE ("Ex_create_alias"); ACPI_FUNCTION_TRACE ("Ex_create_alias");
...@@ -66,7 +66,7 @@ acpi_ex_create_alias ( ...@@ -66,7 +66,7 @@ acpi_ex_create_alias (
alias_node = (acpi_namespace_node *) walk_state->operands[0]; alias_node = (acpi_namespace_node *) walk_state->operands[0];
target_node = (acpi_namespace_node *) walk_state->operands[1]; target_node = (acpi_namespace_node *) walk_state->operands[1];
if (target_node->type == INTERNAL_TYPE_ALIAS) { if (target_node->type == ACPI_TYPE_LOCAL_ALIAS) {
/* /*
* Dereference an existing alias so that we don't create a chain * Dereference an existing alias so that we don't create a chain
* of aliases. With this code, we guarantee that an alias is * of aliases. With this code, we guarantee that an alias is
...@@ -95,8 +95,8 @@ acpi_ex_create_alias ( ...@@ -95,8 +95,8 @@ acpi_ex_create_alias (
* NS node, not the object itself. This is because for these * NS node, not the object itself. This is because for these
* types, the object can change dynamically via a Store. * types, the object can change dynamically via a Store.
*/ */
alias_node->type = INTERNAL_TYPE_ALIAS; alias_node->type = ACPI_TYPE_LOCAL_ALIAS;
alias_node->object = (acpi_operand_object *) target_node; alias_node->object = ACPI_CAST_PTR (acpi_operand_object, target_node);
break; break;
default: default:
...@@ -117,7 +117,7 @@ acpi_ex_create_alias ( ...@@ -117,7 +117,7 @@ acpi_ex_create_alias (
/* Since both operands are Nodes, we don't need to delete them */ /* Since both operands are Nodes, we don't need to delete them */
return_ACPI_STATUS (AE_OK); return_ACPI_STATUS (status);
} }
...@@ -221,9 +221,10 @@ acpi_ex_create_mutex ( ...@@ -221,9 +221,10 @@ acpi_ex_create_mutex (
/* Init object and attach to NS node */ /* Init object and attach to NS node */
obj_desc->mutex.sync_level = (u8) walk_state->operands[1]->integer.value; obj_desc->mutex.sync_level = (u8) walk_state->operands[1]->integer.value;
obj_desc->mutex.node = (acpi_namespace_node *) walk_state->operands[0];
status = acpi_ns_attach_object ((acpi_namespace_node *) walk_state->operands[0], status = acpi_ns_attach_object (obj_desc->mutex.node,
obj_desc, ACPI_TYPE_MUTEX); obj_desc, ACPI_TYPE_MUTEX);
cleanup: cleanup:
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: exdump - Interpreter debug output routines * Module Name: exdump - Interpreter debug output routines
* $Revision: 160 $ * $Revision: 162 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -58,7 +58,6 @@ acpi_ex_dump_operand ( ...@@ -58,7 +58,6 @@ acpi_ex_dump_operand (
{ {
u8 *buf = NULL; u8 *buf = NULL;
u32 length; u32 length;
u32 i;
acpi_operand_object **element; acpi_operand_object **element;
u16 element_index; u16 element_index;
...@@ -97,7 +96,7 @@ acpi_ex_dump_operand ( ...@@ -97,7 +96,7 @@ acpi_ex_dump_operand (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", obj_desc)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", obj_desc));
switch (ACPI_GET_OBJECT_TYPE (obj_desc)) { switch (ACPI_GET_OBJECT_TYPE (obj_desc)) {
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
switch (obj_desc->reference.opcode) { switch (obj_desc->reference.opcode) {
case AML_DEBUG_OP: case AML_DEBUG_OP:
...@@ -217,22 +216,6 @@ acpi_ex_dump_operand ( ...@@ -217,22 +216,6 @@ acpi_ex_dump_operand (
break; break;
case INTERNAL_TYPE_IF:
acpi_os_printf ("If [Integer] %8.8X%8.8X\n",
ACPI_HIDWORD (obj_desc->integer.value),
ACPI_LODWORD (obj_desc->integer.value));
break;
case INTERNAL_TYPE_WHILE:
acpi_os_printf ("While [Integer] %8.8X%8.8X\n",
ACPI_HIDWORD (obj_desc->integer.value),
ACPI_LODWORD (obj_desc->integer.value));
break;
case ACPI_TYPE_PACKAGE: case ACPI_TYPE_PACKAGE:
acpi_os_printf ("Package count %X @ %p\n", acpi_os_printf ("Package count %X @ %p\n",
...@@ -279,24 +262,20 @@ acpi_ex_dump_operand ( ...@@ -279,24 +262,20 @@ acpi_ex_dump_operand (
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
acpi_os_printf ("String length %X @ %p \"", acpi_os_printf ("String length %X @ %p ",
obj_desc->string.length, obj_desc->string.pointer); obj_desc->string.length, obj_desc->string.pointer);
acpi_ut_print_string (obj_desc->string.pointer, ACPI_UINT8_MAX);
for (i = 0; i < obj_desc->string.length; i++) { acpi_os_printf ("\n");
acpi_os_printf ("%c",
obj_desc->string.pointer[i]);
}
acpi_os_printf ("\"\n");
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
acpi_os_printf ("Bank_field\n"); acpi_os_printf ("Bank_field\n");
break; break;
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
acpi_os_printf ( acpi_os_printf (
"Region_field: Bits=%X Acc_width=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n", "Region_field: Bits=%X Acc_width=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n",
...@@ -308,7 +287,7 @@ acpi_ex_dump_operand ( ...@@ -308,7 +287,7 @@ acpi_ex_dump_operand (
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
acpi_os_printf ("Index_field\n"); acpi_os_printf ("Index_field\n");
break; break;
...@@ -321,16 +300,13 @@ acpi_ex_dump_operand ( ...@@ -321,16 +300,13 @@ acpi_ex_dump_operand (
obj_desc->buffer_field.bit_length, obj_desc->buffer_field.base_byte_offset, obj_desc->buffer_field.bit_length, obj_desc->buffer_field.base_byte_offset,
obj_desc->buffer_field.start_field_bit_offset); obj_desc->buffer_field.start_field_bit_offset);
if (!obj_desc->buffer_field.buffer_obj) if (!obj_desc->buffer_field.buffer_obj) {
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL* \n")); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL* \n"));
} }
else if (ACPI_GET_OBJECT_TYPE (obj_desc->buffer_field.buffer_obj) != ACPI_TYPE_BUFFER) else if (ACPI_GET_OBJECT_TYPE (obj_desc->buffer_field.buffer_obj) != ACPI_TYPE_BUFFER) {
{
acpi_os_printf ("*not a Buffer* \n"); acpi_os_printf ("*not a Buffer* \n");
} }
else else {
{
ACPI_DUMP_STACK_ENTRY (obj_desc->buffer_field.buffer_obj); ACPI_DUMP_STACK_ENTRY (obj_desc->buffer_field.buffer_obj);
} }
...@@ -423,13 +399,11 @@ acpi_ex_dump_operands ( ...@@ -423,13 +399,11 @@ acpi_ex_dump_operands (
ACPI_FUNCTION_NAME ("Ex_dump_operands"); ACPI_FUNCTION_NAME ("Ex_dump_operands");
if (!ident) if (!ident) {
{
ident = "?"; ident = "?";
} }
if (!note) if (!note) {
{
note = "?"; note = "?";
} }
...@@ -437,15 +411,13 @@ acpi_ex_dump_operands ( ...@@ -437,15 +411,13 @@ acpi_ex_dump_operands (
"************* Operand Stack Contents (Opcode [%s], %d Operands)\n", "************* Operand Stack Contents (Opcode [%s], %d Operands)\n",
ident, num_levels)); ident, num_levels));
if (num_levels == 0) if (num_levels == 0) {
{
num_levels = 1; num_levels = 1;
} }
/* Dump the operand stack starting at the top */ /* Dump the operand stack starting at the top */
for (i = 0; num_levels > 0; i--, num_levels--) for (i = 0; num_levels > 0; i--, num_levels--) {
{
obj_desc = &operands[i]; obj_desc = &operands[i];
acpi_ex_dump_operand (*obj_desc); acpi_ex_dump_operand (*obj_desc);
} }
...@@ -529,10 +501,8 @@ acpi_ex_dump_node ( ...@@ -529,10 +501,8 @@ acpi_ex_dump_node (
ACPI_FUNCTION_ENTRY (); ACPI_FUNCTION_ENTRY ();
if (!flags) if (!flags) {
{ if (!((ACPI_LV_OBJECTS & acpi_dbg_level) && (_COMPONENT & acpi_dbg_layer))) {
if (!((ACPI_LV_OBJECTS & acpi_dbg_level) && (_COMPONENT & acpi_dbg_layer)))
{
return; return;
} }
} }
...@@ -571,24 +541,20 @@ acpi_ex_dump_object_descriptor ( ...@@ -571,24 +541,20 @@ acpi_ex_dump_object_descriptor (
ACPI_FUNCTION_TRACE ("Ex_dump_object_descriptor"); ACPI_FUNCTION_TRACE ("Ex_dump_object_descriptor");
if (!flags) if (!flags) {
{ if (!((ACPI_LV_OBJECTS & acpi_dbg_level) && (_COMPONENT & acpi_dbg_layer))) {
if (!((ACPI_LV_OBJECTS & acpi_dbg_level) && (_COMPONENT & acpi_dbg_layer)))
{
return_VOID; return_VOID;
} }
} }
if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_NAMED) if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_NAMED) {
{
acpi_ex_dump_node ((acpi_namespace_node *) obj_desc, flags); acpi_ex_dump_node ((acpi_namespace_node *) obj_desc, flags);
acpi_os_printf ("\nAttached Object (%p):\n", ((acpi_namespace_node *) obj_desc)->object); acpi_os_printf ("\nAttached Object (%p):\n", ((acpi_namespace_node *) obj_desc)->object);
acpi_ex_dump_object_descriptor (((acpi_namespace_node *) obj_desc)->object, flags); acpi_ex_dump_object_descriptor (((acpi_namespace_node *) obj_desc)->object, flags);
return; return;
} }
if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) != ACPI_DESC_TYPE_OPERAND) if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) != ACPI_DESC_TYPE_OPERAND) {
{
acpi_os_printf ("Ex_dump_object_descriptor: %p is not a valid ACPI object\n", obj_desc); acpi_os_printf ("Ex_dump_object_descriptor: %p is not a valid ACPI object\n", obj_desc);
return_VOID; return_VOID;
} }
...@@ -601,8 +567,7 @@ acpi_ex_dump_object_descriptor ( ...@@ -601,8 +567,7 @@ acpi_ex_dump_object_descriptor (
/* Object-specific Fields */ /* Object-specific Fields */
switch (ACPI_GET_OBJECT_TYPE (obj_desc)) switch (ACPI_GET_OBJECT_TYPE (obj_desc)) {
{
case ACPI_TYPE_INTEGER: case ACPI_TYPE_INTEGER:
acpi_os_printf ("%20s : %8.8X%8.8X\n", "Value", acpi_os_printf ("%20s : %8.8X%8.8X\n", "Value",
...@@ -614,7 +579,10 @@ acpi_ex_dump_object_descriptor ( ...@@ -614,7 +579,10 @@ acpi_ex_dump_object_descriptor (
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
acpi_ex_out_integer ("Length", obj_desc->string.length); acpi_ex_out_integer ("Length", obj_desc->string.length);
acpi_ex_out_pointer ("Pointer", obj_desc->string.pointer);
acpi_os_printf ("%20s : %p ", "Pointer", obj_desc->string.pointer);
acpi_ut_print_string (obj_desc->string.pointer, ACPI_UINT8_MAX);
acpi_os_printf ("\n");
break; break;
...@@ -633,14 +601,11 @@ acpi_ex_dump_object_descriptor ( ...@@ -633,14 +601,11 @@ acpi_ex_dump_object_descriptor (
/* Dump the package contents */ /* Dump the package contents */
if (obj_desc->package.count > 0) if (obj_desc->package.count > 0) {
{
acpi_os_printf ("\nPackage Contents:\n"); acpi_os_printf ("\nPackage Contents:\n");
for (i = 0; i < obj_desc->package.count; i++) for (i = 0; i < obj_desc->package.count; i++) {
{
acpi_os_printf ("[%.3d] %p", i, obj_desc->package.elements[i]); acpi_os_printf ("[%.3d] %p", i, obj_desc->package.elements[i]);
if (obj_desc->package.elements[i]) if (obj_desc->package.elements[i]) {
{
acpi_os_printf (" %s", acpi_ut_get_object_type_name (obj_desc->package.elements[i])); acpi_os_printf (" %s", acpi_ut_get_object_type_name (obj_desc->package.elements[i]));
} }
acpi_os_printf ("\n"); acpi_os_printf ("\n");
...@@ -723,9 +688,9 @@ acpi_ex_dump_object_descriptor ( ...@@ -723,9 +688,9 @@ acpi_ex_dump_object_descriptor (
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
acpi_ex_out_integer ("Field_flags", obj_desc->common_field.field_flags); acpi_ex_out_integer ("Field_flags", obj_desc->common_field.field_flags);
acpi_ex_out_integer ("Access_byte_width", obj_desc->common_field.access_byte_width); acpi_ex_out_integer ("Access_byte_width", obj_desc->common_field.access_byte_width);
...@@ -737,23 +702,22 @@ acpi_ex_dump_object_descriptor ( ...@@ -737,23 +702,22 @@ acpi_ex_dump_object_descriptor (
acpi_ex_out_integer ("End_buf_valid_bits", obj_desc->common_field.end_buffer_valid_bits); acpi_ex_out_integer ("End_buf_valid_bits", obj_desc->common_field.end_buffer_valid_bits);
acpi_ex_out_pointer ("Parent_node", obj_desc->common_field.node); acpi_ex_out_pointer ("Parent_node", obj_desc->common_field.node);
switch (ACPI_GET_OBJECT_TYPE (obj_desc)) switch (ACPI_GET_OBJECT_TYPE (obj_desc)) {
{
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
acpi_ex_out_pointer ("Buffer_obj", obj_desc->buffer_field.buffer_obj); acpi_ex_out_pointer ("Buffer_obj", obj_desc->buffer_field.buffer_obj);
break; break;
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
acpi_ex_out_pointer ("Region_obj", obj_desc->field.region_obj); acpi_ex_out_pointer ("Region_obj", obj_desc->field.region_obj);
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
acpi_ex_out_integer ("Value", obj_desc->bank_field.value); acpi_ex_out_integer ("Value", obj_desc->bank_field.value);
acpi_ex_out_pointer ("Region_obj", obj_desc->bank_field.region_obj); acpi_ex_out_pointer ("Region_obj", obj_desc->bank_field.region_obj);
acpi_ex_out_pointer ("Bank_obj", obj_desc->bank_field.bank_obj); acpi_ex_out_pointer ("Bank_obj", obj_desc->bank_field.bank_obj);
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
acpi_ex_out_integer ("Value", obj_desc->index_field.value); acpi_ex_out_integer ("Value", obj_desc->index_field.value);
acpi_ex_out_pointer ("Index", obj_desc->index_field.index_obj); acpi_ex_out_pointer ("Index", obj_desc->index_field.index_obj);
acpi_ex_out_pointer ("Data", obj_desc->index_field.data_obj); acpi_ex_out_pointer ("Data", obj_desc->index_field.data_obj);
...@@ -766,7 +730,7 @@ acpi_ex_dump_object_descriptor ( ...@@ -766,7 +730,7 @@ acpi_ex_dump_object_descriptor (
break; break;
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
acpi_ex_out_integer ("Target_type", obj_desc->reference.target_type); acpi_ex_out_integer ("Target_type", obj_desc->reference.target_type);
acpi_ex_out_string ("Opcode", (acpi_ps_get_opcode_info (obj_desc->reference.opcode))->name); acpi_ex_out_string ("Opcode", (acpi_ps_get_opcode_info (obj_desc->reference.opcode))->name);
...@@ -777,7 +741,7 @@ acpi_ex_dump_object_descriptor ( ...@@ -777,7 +741,7 @@ acpi_ex_dump_object_descriptor (
break; break;
case INTERNAL_TYPE_ADDRESS_HANDLER: case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
acpi_ex_out_integer ("Space_id", obj_desc->addr_handler.space_id); acpi_ex_out_integer ("Space_id", obj_desc->addr_handler.space_id);
acpi_ex_out_pointer ("Next", obj_desc->addr_handler.next); acpi_ex_out_pointer ("Next", obj_desc->addr_handler.next);
...@@ -787,24 +751,16 @@ acpi_ex_dump_object_descriptor ( ...@@ -787,24 +751,16 @@ acpi_ex_dump_object_descriptor (
break; break;
case INTERNAL_TYPE_NOTIFY: case ACPI_TYPE_LOCAL_NOTIFY:
acpi_ex_out_pointer ("Node", obj_desc->notify_handler.node); acpi_ex_out_pointer ("Node", obj_desc->notify_handler.node);
acpi_ex_out_pointer ("Context", obj_desc->notify_handler.context); acpi_ex_out_pointer ("Context", obj_desc->notify_handler.context);
break; break;
case INTERNAL_TYPE_ALIAS: case ACPI_TYPE_LOCAL_ALIAS:
case INTERNAL_TYPE_FIELD_DEFN: case ACPI_TYPE_LOCAL_EXTRA:
case INTERNAL_TYPE_BANK_FIELD_DEFN: case ACPI_TYPE_LOCAL_DATA:
case INTERNAL_TYPE_INDEX_FIELD_DEFN:
case INTERNAL_TYPE_IF:
case INTERNAL_TYPE_ELSE:
case INTERNAL_TYPE_WHILE:
case INTERNAL_TYPE_SCOPE:
case INTERNAL_TYPE_DEF_ANY:
case INTERNAL_TYPE_EXTRA:
case INTERNAL_TYPE_DATA:
default: default:
acpi_os_printf ("Ex_dump_object_descriptor: Display not implemented for object type %s\n", acpi_os_printf ("Ex_dump_object_descriptor: Display not implemented for object type %s\n",
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: exfldio - Aml Field I/O * Module Name: exfldio - Aml Field I/O
* $Revision: 88 $ * $Revision: 89 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -338,7 +338,7 @@ acpi_ex_field_datum_io ( ...@@ -338,7 +338,7 @@ acpi_ex_field_datum_io (
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
/* Ensure that the Bank_value is not beyond the capacity of the register */ /* Ensure that the Bank_value is not beyond the capacity of the register */
...@@ -366,7 +366,7 @@ acpi_ex_field_datum_io ( ...@@ -366,7 +366,7 @@ acpi_ex_field_datum_io (
/*lint -fallthrough */ /*lint -fallthrough */
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
/* /*
* For simple Region_fields, we just directly access the owning * For simple Region_fields, we just directly access the owning
* Operation Region. * Operation Region.
...@@ -381,7 +381,7 @@ acpi_ex_field_datum_io ( ...@@ -381,7 +381,7 @@ acpi_ex_field_datum_io (
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
/* Ensure that the Index_value is not beyond the capacity of the register */ /* Ensure that the Index_value is not beyond the capacity of the register */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
* $Revision: 109 $ * $Revision: 110 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -67,7 +67,7 @@ acpi_ex_get_object_reference ( ...@@ -67,7 +67,7 @@ acpi_ex_get_object_reference (
switch (ACPI_GET_DESCRIPTOR_TYPE (obj_desc)) { switch (ACPI_GET_DESCRIPTOR_TYPE (obj_desc)) {
case ACPI_DESC_TYPE_OPERAND: case ACPI_DESC_TYPE_OPERAND:
if (ACPI_GET_OBJECT_TYPE (obj_desc) != INTERNAL_TYPE_REFERENCE) { if (ACPI_GET_OBJECT_TYPE (obj_desc) != ACPI_TYPE_LOCAL_REFERENCE) {
return_ACPI_STATUS (AE_AML_OPERAND_TYPE); return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
} }
...@@ -111,7 +111,7 @@ acpi_ex_get_object_reference ( ...@@ -111,7 +111,7 @@ acpi_ex_get_object_reference (
/* Create a new reference object */ /* Create a new reference object */
reference_obj = acpi_ut_create_internal_object (INTERNAL_TYPE_REFERENCE); reference_obj = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_REFERENCE);
if (!reference_obj) { if (!reference_obj) {
return_ACPI_STATUS (AE_NO_MEMORY); return_ACPI_STATUS (AE_NO_MEMORY);
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exmutex - ASL Mutex Acquire/Release functions * Module Name: exmutex - ASL Mutex Acquire/Release functions
* $Revision: 13 $ * $Revision: 16 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -132,22 +132,35 @@ acpi_ex_acquire_mutex ( ...@@ -132,22 +132,35 @@ acpi_ex_acquire_mutex (
ACPI_FUNCTION_TRACE_PTR ("Ex_acquire_mutex", obj_desc); ACPI_FUNCTION_TRACE_PTR ("Ex_acquire_mutex", obj_desc);
if (!obj_desc) { if (!obj_desc) {
return_ACPI_STATUS (AE_BAD_PARAMETER); return_ACPI_STATUS (AE_BAD_PARAMETER);
} }
/* Sanity check -- we must have a valid thread ID */
if (!walk_state->thread) {
ACPI_REPORT_ERROR (("Cannot acquire Mutex [%4.4s], null thread info\n",
obj_desc->mutex.node->name.ascii));
return_ACPI_STATUS (AE_AML_INTERNAL);
}
/* /*
* Current Sync must be less than or equal to the sync level of the * Current Sync must be less than or equal to the sync level of the
* mutex. This mechanism provides some deadlock prevention * mutex. This mechanism provides some deadlock prevention
*/ */
if (walk_state->thread->current_sync_level > obj_desc->mutex.sync_level) { if (walk_state->thread->current_sync_level > obj_desc->mutex.sync_level) {
ACPI_REPORT_ERROR (("Cannot acquire Mutex [%4.4s], incorrect Sync_level\n",
obj_desc->mutex.node->name.ascii));
return_ACPI_STATUS (AE_AML_MUTEX_ORDER); return_ACPI_STATUS (AE_AML_MUTEX_ORDER);
} }
/* /*
* Support for multiple acquires by the owning thread * Support for multiple acquires by the owning thread
*/ */
if (obj_desc->mutex.owner_thread == walk_state->thread) {
if ((obj_desc->mutex.owner_thread) &&
(obj_desc->mutex.owner_thread->thread_id == walk_state->thread->thread_id)) {
/* /*
* The mutex is already owned by this thread, * The mutex is already owned by this thread,
* just increment the acquisition depth * just increment the acquisition depth
...@@ -210,12 +223,27 @@ acpi_ex_release_mutex ( ...@@ -210,12 +223,27 @@ acpi_ex_release_mutex (
/* The mutex must have been previously acquired in order to release it */ /* The mutex must have been previously acquired in order to release it */
if (!obj_desc->mutex.owner_thread) { if (!obj_desc->mutex.owner_thread) {
ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], not acquired\n",
obj_desc->mutex.node->name.ascii));
return_ACPI_STATUS (AE_AML_MUTEX_NOT_ACQUIRED); return_ACPI_STATUS (AE_AML_MUTEX_NOT_ACQUIRED);
} }
/* Sanity check -- we must have a valid thread ID */
if (!walk_state->thread) {
ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], null thread info\n",
obj_desc->mutex.node->name.ascii));
return_ACPI_STATUS (AE_AML_INTERNAL);
}
/* The Mutex is owned, but this thread must be the owner */ /* The Mutex is owned, but this thread must be the owner */
if (obj_desc->mutex.owner_thread != walk_state->thread) { if (obj_desc->mutex.owner_thread->thread_id != walk_state->thread->thread_id) {
ACPI_REPORT_ERROR ((
"Thread %X cannot release Mutex [%4.4s] acquired by thread %X\n",
walk_state->thread->thread_id,
obj_desc->mutex.node->name.ascii,
obj_desc->mutex.owner_thread->thread_id));
return_ACPI_STATUS (AE_AML_NOT_OWNER); return_ACPI_STATUS (AE_AML_NOT_OWNER);
} }
...@@ -224,6 +252,8 @@ acpi_ex_release_mutex ( ...@@ -224,6 +252,8 @@ acpi_ex_release_mutex (
* equal to the current sync level * equal to the current sync level
*/ */
if (obj_desc->mutex.sync_level > walk_state->thread->current_sync_level) { if (obj_desc->mutex.sync_level > walk_state->thread->current_sync_level) {
ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], incorrect Sync_level\n",
obj_desc->mutex.node->name.ascii));
return_ACPI_STATUS (AE_AML_MUTEX_ORDER); return_ACPI_STATUS (AE_AML_MUTEX_ORDER);
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exnames - interpreter/scanner name load/execute * Module Name: exnames - interpreter/scanner name load/execute
* $Revision: 91 $ * $Revision: 92 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -247,9 +247,9 @@ acpi_ex_get_name_string ( ...@@ -247,9 +247,9 @@ acpi_ex_get_name_string (
ACPI_FUNCTION_TRACE_PTR ("Ex_get_name_string", aml_address); ACPI_FUNCTION_TRACE_PTR ("Ex_get_name_string", aml_address);
if (INTERNAL_TYPE_REGION_FIELD == data_type || if (ACPI_TYPE_LOCAL_REGION_FIELD == data_type ||
INTERNAL_TYPE_BANK_FIELD == data_type || ACPI_TYPE_LOCAL_BANK_FIELD == data_type ||
INTERNAL_TYPE_INDEX_FIELD == data_type) { ACPI_TYPE_LOCAL_INDEX_FIELD == data_type) {
/* Disallow prefixes for types associated with Field_unit names */ /* Disallow prefixes for types associated with Field_unit names */
name_string = acpi_ex_allocate_name_string (0, 1); name_string = acpi_ex_allocate_name_string (0, 1);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exoparg1 - AML execution - opcodes with 1 argument * Module Name: exoparg1 - AML execution - opcodes with 1 argument
* $Revision: 143 $ * $Revision: 144 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -642,7 +642,7 @@ acpi_ex_opcode_1A_0T_1R ( ...@@ -642,7 +642,7 @@ acpi_ex_opcode_1A_0T_1R (
if (ACPI_GET_DESCRIPTOR_TYPE (operand[0]) != ACPI_DESC_TYPE_NAMED) { if (ACPI_GET_DESCRIPTOR_TYPE (operand[0]) != ACPI_DESC_TYPE_NAMED) {
switch (ACPI_GET_OBJECT_TYPE (operand[0])) { switch (ACPI_GET_OBJECT_TYPE (operand[0])) {
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
/* /*
* This is a Deref_of (Local_x | Arg_x) * This is a Deref_of (Local_x | Arg_x)
* *
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: exoparg2 - AML execution - opcodes with 2 arguments * Module Name: exoparg2 - AML execution - opcodes with 2 arguments
* $Revision: 111 $ * $Revision: 113 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -242,11 +242,11 @@ acpi_status ...@@ -242,11 +242,11 @@ acpi_status
acpi_ex_opcode_2A_1T_1R ( acpi_ex_opcode_2A_1T_1R (
acpi_walk_state *walk_state) acpi_walk_state *walk_state)
{ {
acpi_operand_object **operand = &walk_state->operands[0]; acpi_operand_object **operand = &walk_state->operands[0];
acpi_operand_object *return_desc = NULL; acpi_operand_object *return_desc = NULL;
acpi_operand_object *temp_desc = NULL; acpi_operand_object *temp_desc = NULL;
u32 index; u32 index;
acpi_status status = AE_OK; acpi_status status = AE_OK;
ACPI_SIZE length; ACPI_SIZE length;
...@@ -379,7 +379,7 @@ acpi_ex_opcode_2A_1T_1R ( ...@@ -379,7 +379,7 @@ acpi_ex_opcode_2A_1T_1R (
/* Set the string length */ /* Set the string length */
return_desc->string.length = length; return_desc->string.length = (u32) length;
break; break;
...@@ -393,7 +393,7 @@ acpi_ex_opcode_2A_1T_1R ( ...@@ -393,7 +393,7 @@ acpi_ex_opcode_2A_1T_1R (
/* Create the internal return object */ /* Create the internal return object */
return_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_REFERENCE); return_desc = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_REFERENCE);
if (!return_desc) { if (!return_desc) {
status = AE_NO_MEMORY; status = AE_NO_MEMORY;
goto cleanup; goto cleanup;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exprep - ACPI AML (p-code) execution - field prep utilities * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities
* $Revision: 119 $ * $Revision: 120 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -313,7 +313,7 @@ acpi_ex_prep_field_value ( ...@@ -313,7 +313,7 @@ acpi_ex_prep_field_value (
/* Parameter validation */ /* Parameter validation */
if (info->field_type != INTERNAL_TYPE_INDEX_FIELD) { if (info->field_type != ACPI_TYPE_LOCAL_INDEX_FIELD) {
if (!info->region_node) { if (!info->region_node) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Region_node\n")); ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Region_node\n"));
return_ACPI_STATUS (AE_AML_NO_OPERAND); return_ACPI_STATUS (AE_AML_NO_OPERAND);
...@@ -349,7 +349,7 @@ acpi_ex_prep_field_value ( ...@@ -349,7 +349,7 @@ acpi_ex_prep_field_value (
/* Initialize areas of the object that are specific to the field type */ /* Initialize areas of the object that are specific to the field type */
switch (info->field_type) { switch (info->field_type) {
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
obj_desc->field.region_obj = acpi_ns_get_attached_object (info->region_node); obj_desc->field.region_obj = acpi_ns_get_attached_object (info->region_node);
...@@ -364,7 +364,7 @@ acpi_ex_prep_field_value ( ...@@ -364,7 +364,7 @@ acpi_ex_prep_field_value (
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
obj_desc->bank_field.value = info->bank_value; obj_desc->bank_field.value = info->bank_value;
obj_desc->bank_field.region_obj = acpi_ns_get_attached_object (info->region_node); obj_desc->bank_field.region_obj = acpi_ns_get_attached_object (info->region_node);
...@@ -385,7 +385,7 @@ acpi_ex_prep_field_value ( ...@@ -385,7 +385,7 @@ acpi_ex_prep_field_value (
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
obj_desc->index_field.index_obj = acpi_ns_get_attached_object (info->register_node); obj_desc->index_field.index_obj = acpi_ns_get_attached_object (info->register_node);
obj_desc->index_field.data_obj = acpi_ns_get_attached_object (info->data_register_node); obj_desc->index_field.data_obj = acpi_ns_get_attached_object (info->data_register_node);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exresnte - AML Interpreter object resolution * Module Name: exresnte - AML Interpreter object resolution
* $Revision: 59 $ * $Revision: 60 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -88,7 +88,7 @@ acpi_ex_resolve_node_to_value ( ...@@ -88,7 +88,7 @@ acpi_ex_resolve_node_to_value (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p Source_desc=%p Type=%X\n", ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p Source_desc=%p Type=%X\n",
node, source_desc, entry_type)); node, source_desc, entry_type));
if (entry_type == INTERNAL_TYPE_ALIAS) { if (entry_type == ACPI_TYPE_LOCAL_ALIAS) {
/* There is always exactly one level of indirection */ /* There is always exactly one level of indirection */
node = (acpi_namespace_node *) node->object; node = (acpi_namespace_node *) node->object;
...@@ -185,9 +185,9 @@ acpi_ex_resolve_node_to_value ( ...@@ -185,9 +185,9 @@ acpi_ex_resolve_node_to_value (
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Field_read Node=%p Source_desc=%p Type=%X\n", ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Field_read Node=%p Source_desc=%p Type=%X\n",
node, source_desc, entry_type)); node, source_desc, entry_type));
...@@ -223,7 +223,7 @@ acpi_ex_resolve_node_to_value ( ...@@ -223,7 +223,7 @@ acpi_ex_resolve_node_to_value (
return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */ return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
/* No named references are allowed here */ /* No named references are allowed here */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exresolv - AML Interpreter object resolution * Module Name: exresolv - AML Interpreter object resolution
* $Revision: 116 $ * $Revision: 117 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -132,7 +132,7 @@ acpi_ex_resolve_object_to_value ( ...@@ -132,7 +132,7 @@ acpi_ex_resolve_object_to_value (
/* This is an acpi_operand_object */ /* This is an acpi_operand_object */
switch (ACPI_GET_OBJECT_TYPE (stack_desc)) { switch (ACPI_GET_OBJECT_TYPE (stack_desc)) {
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
opcode = stack_desc->reference.opcode; opcode = stack_desc->reference.opcode;
...@@ -262,9 +262,9 @@ acpi_ex_resolve_object_to_value ( ...@@ -262,9 +262,9 @@ acpi_ex_resolve_object_to_value (
* These cases may never happen here, but just in case.. * These cases may never happen here, but just in case..
*/ */
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Field_read Source_desc=%p Type=%X\n", ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Field_read Source_desc=%p Type=%X\n",
stack_desc, ACPI_GET_OBJECT_TYPE (stack_desc))); stack_desc, ACPI_GET_OBJECT_TYPE (stack_desc)));
...@@ -309,7 +309,7 @@ acpi_ex_resolve_multiple ( ...@@ -309,7 +309,7 @@ acpi_ex_resolve_multiple (
acpi_object_type type; acpi_object_type type;
ACPI_FUNCTION_TRACE ("Ex_get_object_type"); ACPI_FUNCTION_TRACE ("Acpi_ex_resolve_multiple");
/* /*
...@@ -318,7 +318,7 @@ acpi_ex_resolve_multiple ( ...@@ -318,7 +318,7 @@ acpi_ex_resolve_multiple (
* of the Object_type and Size_of operators). This means traversing * of the Object_type and Size_of operators). This means traversing
* the list of possibly many nested references. * the list of possibly many nested references.
*/ */
while (ACPI_GET_OBJECT_TYPE (obj_desc) == INTERNAL_TYPE_REFERENCE) { while (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_REFERENCE) {
switch (obj_desc->reference.opcode) { switch (obj_desc->reference.opcode) {
case AML_REF_OF_OP: case AML_REF_OF_OP:
...@@ -427,13 +427,20 @@ acpi_ex_resolve_multiple ( ...@@ -427,13 +427,20 @@ acpi_ex_resolve_multiple (
/* Convert internal types to external types */ /* Convert internal types to external types */
switch (type) { switch (type) {
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
type = ACPI_TYPE_FIELD_UNIT; type = ACPI_TYPE_FIELD_UNIT;
break; break;
case ACPI_TYPE_LOCAL_SCOPE:
/* Per ACPI Specification, Scope is untyped */
type = ACPI_TYPE_ANY;
break;
default: default:
/* No change to Type required */ /* No change to Type required */
break; break;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exresop - AML Interpreter operand/object resolution * Module Name: exresop - AML Interpreter operand/object resolution
* $Revision: 58 $ * $Revision: 59 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -64,7 +64,7 @@ acpi_ex_check_object_type ( ...@@ -64,7 +64,7 @@ acpi_ex_check_object_type (
return (AE_OK); return (AE_OK);
} }
if (type_needed == INTERNAL_TYPE_REFERENCE) { if (type_needed == ACPI_TYPE_LOCAL_REFERENCE) {
/* /*
* Allow the AML "Constant" opcodes (Zero, One, etc.) to be reference * Allow the AML "Constant" opcodes (Zero, One, etc.) to be reference
* objects and thus allow them to be targets. (As per the ACPI * objects and thus allow them to be targets. (As per the ACPI
...@@ -183,14 +183,14 @@ acpi_ex_resolve_operands ( ...@@ -183,14 +183,14 @@ acpi_ex_resolve_operands (
/* Check for bad acpi_object_type */ /* Check for bad acpi_object_type */
if (!acpi_ex_validate_object_type (object_type)) { if (!acpi_ut_valid_object_type (object_type)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad operand object type [%X]\n", ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad operand object type [%X]\n",
object_type)); object_type));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE); return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
} }
if (object_type == (u8) INTERNAL_TYPE_REFERENCE) { if (object_type == (u8) ACPI_TYPE_LOCAL_REFERENCE) {
/* /*
* Decode the Reference * Decode the Reference
*/ */
...@@ -267,13 +267,13 @@ acpi_ex_resolve_operands ( ...@@ -267,13 +267,13 @@ acpi_ex_resolve_operands (
case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */
case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */
/* Need an operand of type INTERNAL_TYPE_REFERENCE */ /* Need an operand of type ACPI_TYPE_LOCAL_REFERENCE */
if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_NAMED) /* Node (name) ptr OK as-is */ { if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_NAMED) /* Node (name) ptr OK as-is */ {
goto next_operand; goto next_operand;
} }
status = acpi_ex_check_object_type (INTERNAL_TYPE_REFERENCE, status = acpi_ex_check_object_type (ACPI_TYPE_LOCAL_REFERENCE,
object_type, obj_desc); object_type, obj_desc);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status); return_ACPI_STATUS (status);
...@@ -300,7 +300,7 @@ acpi_ex_resolve_operands ( ...@@ -300,7 +300,7 @@ acpi_ex_resolve_operands (
* -- All others must be resolved below. * -- All others must be resolved below.
*/ */
if ((opcode == AML_STORE_OP) && if ((opcode == AML_STORE_OP) &&
(ACPI_GET_OBJECT_TYPE (*stack_ptr) == INTERNAL_TYPE_REFERENCE) && (ACPI_GET_OBJECT_TYPE (*stack_ptr) == ACPI_TYPE_LOCAL_REFERENCE) &&
((*stack_ptr)->reference.opcode == AML_INDEX_OP)) { ((*stack_ptr)->reference.opcode == AML_INDEX_OP)) {
goto next_operand; goto next_operand;
} }
...@@ -353,13 +353,6 @@ acpi_ex_resolve_operands ( ...@@ -353,13 +353,6 @@ acpi_ex_resolve_operands (
type_needed = ACPI_TYPE_REGION; type_needed = ACPI_TYPE_REGION;
break; break;
case ARGI_IF: /* If */
/* Need an operand of type INTERNAL_TYPE_IF */
type_needed = INTERNAL_TYPE_IF;
break;
case ARGI_PACKAGE: /* Package */ case ARGI_PACKAGE: /* Package */
/* Need an operand of type ACPI_TYPE_PACKAGE */ /* Need an operand of type ACPI_TYPE_PACKAGE */
...@@ -502,7 +495,7 @@ acpi_ex_resolve_operands ( ...@@ -502,7 +495,7 @@ acpi_ex_resolve_operands (
case ACPI_TYPE_PACKAGE: case ACPI_TYPE_PACKAGE:
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER: case ACPI_TYPE_BUFFER:
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
/* Valid operand */ /* Valid operand */
break; break;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exstore - AML Interpreter object store support * Module Name: exstore - AML Interpreter object store support
* $Revision: 172 $ * $Revision: 173 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -92,7 +92,7 @@ acpi_ex_store ( ...@@ -92,7 +92,7 @@ acpi_ex_store (
/* Destination object must be a Reference or a Constant object */ /* Destination object must be a Reference or a Constant object */
switch (ACPI_GET_OBJECT_TYPE (dest_desc)) { switch (ACPI_GET_OBJECT_TYPE (dest_desc)) {
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
break; break;
case ACPI_TYPE_INTEGER: case ACPI_TYPE_INTEGER:
...@@ -428,9 +428,9 @@ acpi_ex_store_object_to_node ( ...@@ -428,9 +428,9 @@ acpi_ex_store_object_to_node (
*/ */
switch (target_type) { switch (target_type) {
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
/* /*
* For fields, copy the source data to the target field. * For fields, copy the source data to the target field.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Module Name: exstoren - AML Interpreter object store support, * Module Name: exstoren - AML Interpreter object store support,
* Store to Node (namespace object) * Store to Node (namespace object)
* $Revision: 51 $ * $Revision: 52 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -67,9 +67,9 @@ acpi_ex_resolve_object ( ...@@ -67,9 +67,9 @@ acpi_ex_resolve_object (
*/ */
switch (target_type) { switch (target_type) {
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
/* /*
* These cases all require only Integers or values that * These cases all require only Integers or values that
* can be converted to Integers (Strings or Buffers) * can be converted to Integers (Strings or Buffers)
...@@ -84,7 +84,7 @@ acpi_ex_resolve_object ( ...@@ -84,7 +84,7 @@ acpi_ex_resolve_object (
* are all essentially the same. This case handles the * are all essentially the same. This case handles the
* "interchangeable" types Integer, String, and Buffer. * "interchangeable" types Integer, String, and Buffer.
*/ */
if (ACPI_GET_OBJECT_TYPE (source_desc) == INTERNAL_TYPE_REFERENCE) { if (ACPI_GET_OBJECT_TYPE (source_desc) == ACPI_TYPE_LOCAL_REFERENCE) {
/* Resolve a reference object first */ /* Resolve a reference object first */
status = acpi_ex_resolve_to_value (source_desc_ptr, walk_state); status = acpi_ex_resolve_to_value (source_desc_ptr, walk_state);
...@@ -111,7 +111,7 @@ acpi_ex_resolve_object ( ...@@ -111,7 +111,7 @@ acpi_ex_resolve_object (
break; break;
case INTERNAL_TYPE_ALIAS: case ACPI_TYPE_LOCAL_ALIAS:
/* /*
* Aliases are resolved by Acpi_ex_prep_operands * Aliases are resolved by Acpi_ex_prep_operands
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exstorob - AML Interpreter object store support, store to object * Module Name: exstorob - AML Interpreter object store support, store to object
* $Revision: 45 $ * $Revision: 46 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -144,7 +144,7 @@ acpi_ex_store_string_to_string ( ...@@ -144,7 +144,7 @@ acpi_ex_store_string_to_string (
* String will fit in existing buffer. * String will fit in existing buffer.
* Clear old string and copy in the new one * Clear old string and copy in the new one
*/ */
ACPI_MEMSET (target_desc->string.pointer, 0, target_desc->string.length + 1); ACPI_MEMSET (target_desc->string.pointer, 0, (ACPI_SIZE) target_desc->string.length + 1);
ACPI_MEMCPY (target_desc->string.pointer, buffer, length); ACPI_MEMCPY (target_desc->string.pointer, buffer, length);
} }
else { else {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: exutils - interpreter/scanner utilities * Module Name: exutils - interpreter/scanner utilities
* $Revision: 103 $ * $Revision: 105 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -50,32 +50,6 @@ ...@@ -50,32 +50,6 @@
ACPI_MODULE_NAME ("exutils") ACPI_MODULE_NAME ("exutils")
/*******************************************************************************
*
* FUNCTION: Acpi_ex_validate_object_type
*
* PARAMETERS: Type Object type to validate
*
* DESCRIPTION: Determine if a type is a valid ACPI object type
*
******************************************************************************/
u8
acpi_ex_validate_object_type (
acpi_object_type type)
{
ACPI_FUNCTION_ENTRY ();
if ((type > ACPI_TYPE_MAX && type < INTERNAL_TYPE_BEGIN) ||
(type > INTERNAL_TYPE_MAX)) {
return (FALSE);
}
return (TRUE);
}
#ifndef ACPI_NO_METHOD_EXECUTION #ifndef ACPI_NO_METHOD_EXECUTION
/******************************************************************************* /*******************************************************************************
...@@ -336,7 +310,7 @@ acpi_ex_eisa_id_to_string ( ...@@ -336,7 +310,7 @@ acpi_ex_eisa_id_to_string (
eisa_id = acpi_ut_dword_byte_swap (numeric_id); eisa_id = acpi_ut_dword_byte_swap (numeric_id);
out_string[0] = (char) ('@' + ((eisa_id >> 26) & 0x1f)); out_string[0] = (char) ('@' + (((unsigned long) eisa_id >> 26) & 0x1f));
out_string[1] = (char) ('@' + ((eisa_id >> 21) & 0x1f)); out_string[1] = (char) ('@' + ((eisa_id >> 21) & 0x1f));
out_string[2] = (char) ('@' + ((eisa_id >> 16) & 0x1f)); out_string[2] = (char) ('@' + ((eisa_id >> 16) & 0x1f));
out_string[3] = acpi_ut_hex_to_ascii_char ((acpi_integer) eisa_id, 12); out_string[3] = acpi_ut_hex_to_ascii_char ((acpi_integer) eisa_id, 12);
......
/****************************************************************************** /******************************************************************************
* *
* Name: acconfig.h - Global configuration constants * Name: acconfig.h - Global configuration constants
* $Revision: 112 $ * $Revision: 114 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
/* Version string */ /* Version string */
#define ACPI_CA_VERSION 0x20021002 #define ACPI_CA_VERSION 0x20021022
/* Version of ACPI supported */ /* Version of ACPI supported */
......
/****************************************************************************** /******************************************************************************
* *
* Name: acdisasm.h - AML disassembler * Name: acdisasm.h - AML disassembler
* $Revision: 3 $ * $Revision: 4 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -107,10 +107,6 @@ u32 ...@@ -107,10 +107,6 @@ u32
acpi_dm_dump_name ( acpi_dm_dump_name (
char *name); char *name);
void
acpi_dm_string (
char *string);
void void
acpi_dm_unicode ( acpi_dm_unicode (
acpi_parse_object *op); acpi_parse_object *op);
......
/****************************************************************************** /******************************************************************************
* *
* Name: acglobal.h - Declarations for global variables * Name: acglobal.h - Declarations for global variables
* $Revision: 131 $ * $Revision: 132 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -152,7 +152,7 @@ extern const NATIVE_CHAR *acpi_gbl_region_types[ACPI_NUM_PREDEFINE ...@@ -152,7 +152,7 @@ extern const NATIVE_CHAR *acpi_gbl_region_types[ACPI_NUM_PREDEFINE
* *
****************************************************************************/ ****************************************************************************/
#define NUM_NS_TYPES INTERNAL_TYPE_INVALID+1 #define NUM_NS_TYPES ACPI_TYPE_INVALID+1
#if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) #if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
#define NUM_PREDEFINED_NAMES 10 #define NUM_PREDEFINED_NAMES 10
...@@ -279,8 +279,8 @@ ACPI_EXTERN acpi_namespace_node *acpi_gbl_db_scope_node; ...@@ -279,8 +279,8 @@ ACPI_EXTERN acpi_namespace_node *acpi_gbl_db_scope_node;
/* /*
* Statistic globals * Statistic globals
*/ */
ACPI_EXTERN u16 acpi_gbl_obj_type_count[INTERNAL_TYPE_NODE_MAX+1]; ACPI_EXTERN u16 acpi_gbl_obj_type_count[ACPI_TYPE_NS_NODE_MAX+1];
ACPI_EXTERN u16 acpi_gbl_node_type_count[INTERNAL_TYPE_NODE_MAX+1]; ACPI_EXTERN u16 acpi_gbl_node_type_count[ACPI_TYPE_NS_NODE_MAX+1];
ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc; ACPI_EXTERN u16 acpi_gbl_obj_type_count_misc;
ACPI_EXTERN u16 acpi_gbl_node_type_count_misc; ACPI_EXTERN u16 acpi_gbl_node_type_count_misc;
ACPI_EXTERN u32 acpi_gbl_num_nodes; ACPI_EXTERN u32 acpi_gbl_num_nodes;
......
/****************************************************************************** /******************************************************************************
* *
* Name: acinterp.h - Interpreter subcomponent prototypes and defines * Name: acinterp.h - Interpreter subcomponent prototypes and defines
* $Revision: 139 $ * $Revision: 140 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -612,10 +612,6 @@ void ...@@ -612,10 +612,6 @@ void
acpi_ex_truncate_for32bit_table ( acpi_ex_truncate_for32bit_table (
acpi_operand_object *obj_desc); acpi_operand_object *obj_desc);
u8
acpi_ex_validate_object_type (
acpi_object_type type);
u8 u8
acpi_ex_acquire_global_lock ( acpi_ex_acquire_global_lock (
u32 rule); u32 rule);
......
/****************************************************************************** /******************************************************************************
* *
* Name: aclocal.h - Internal data types used across the ACPI subsystem * Name: aclocal.h - Internal data types used across the ACPI subsystem
* $Revision: 176 $ * $Revision: 178 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -212,7 +212,6 @@ typedef struct acpi_table_desc ...@@ -212,7 +212,6 @@ typedef struct acpi_table_desc
struct acpi_table_desc *next; struct acpi_table_desc *next;
struct acpi_table_desc *installed_desc; struct acpi_table_desc *installed_desc;
acpi_table_header *pointer; acpi_table_header *pointer;
void *base_pointer;
u8 *aml_start; u8 *aml_start;
u64 physical_address; u64 physical_address;
u32 aml_length; u32 aml_length;
...@@ -655,6 +654,7 @@ typedef struct acpi_parseobj_asl ...@@ -655,6 +654,7 @@ typedef struct acpi_parseobj_asl
char *filename; char *filename;
char *external_name; char *external_name;
char *namepath; char *namepath;
char name_seg[4];
u32 extra_value; u32 extra_value;
u32 column; u32 column;
u32 line_number; u32 line_number;
......
/****************************************************************************** /******************************************************************************
* *
* Name: acnamesp.h - Namespace subcomponent prototypes and defines * Name: acnamesp.h - Namespace subcomponent prototypes and defines
* $Revision: 127 $ * $Revision: 129 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -178,6 +178,10 @@ void ...@@ -178,6 +178,10 @@ void
acpi_ns_delete_children ( acpi_ns_delete_children (
acpi_namespace_node *parent); acpi_namespace_node *parent);
int
acpi_ns_compare_names (
char *name1,
char *name2);
/* /*
* Namespace modification - nsmodify * Namespace modification - nsmodify
...@@ -281,17 +285,13 @@ acpi_ns_get_object_value ( ...@@ -281,17 +285,13 @@ acpi_ns_get_object_value (
/* /*
* Parent/Child/Peer utility functions - nsfamily * Parent/Child/Peer utility functions
*/ */
acpi_name acpi_name
acpi_ns_find_parent_name ( acpi_ns_find_parent_name (
acpi_namespace_node *node_to_search); acpi_namespace_node *node_to_search);
u8
acpi_ns_exist_downstream_sibling (
acpi_namespace_node *this_node);
/* /*
* Name and Scope manipulation - nsnames * Name and Scope manipulation - nsnames
...@@ -397,8 +397,8 @@ acpi_ns_search_node ( ...@@ -397,8 +397,8 @@ acpi_ns_search_node (
void void
acpi_ns_install_node ( acpi_ns_install_node (
acpi_walk_state *walk_state, acpi_walk_state *walk_state,
acpi_namespace_node *parent_node, /* Parent */ acpi_namespace_node *parent_node,
acpi_namespace_node *node, /* New Child*/ acpi_namespace_node *node,
acpi_object_type type); acpi_object_type type);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/****************************************************************************** /******************************************************************************
* *
* Name: acobject.h - Definition of acpi_operand_object (Internal object only) * Name: acobject.h - Definition of acpi_operand_object (Internal object only)
* $Revision: 113 $ * $Revision: 114 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -199,6 +199,7 @@ typedef struct acpi_object_mutex ...@@ -199,6 +199,7 @@ typedef struct acpi_object_mutex
void *semaphore; void *semaphore;
union acpi_operand_obj *prev; /* Link for list of acquired mutexes */ union acpi_operand_obj *prev; /* Link for list of acquired mutexes */
union acpi_operand_obj *next; /* Link for list of acquired mutexes */ union acpi_operand_obj *next; /* Link for list of acquired mutexes */
acpi_namespace_node *node; /* containing object */
} ACPI_OBJECT_MUTEX; } ACPI_OBJECT_MUTEX;
......
/****************************************************************************** /******************************************************************************
* *
* Name: acstruct.h - Internal structs * Name: acstruct.h - Internal structs
* $Revision: 19 $ * $Revision: 20 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -59,6 +59,8 @@ typedef struct acpi_walk_state ...@@ -59,6 +59,8 @@ typedef struct acpi_walk_state
u8 return_used; u8 return_used;
u8 walk_type; u8 walk_type;
u16 opcode; /* Current AML opcode */ u16 opcode; /* Current AML opcode */
u8 scope_depth;
u8 reserved1;
u32 arg_count; /* push for fixed or var args */ u32 arg_count; /* push for fixed or var args */
u32 aml_offset; u32 aml_offset;
u32 arg_types; u32 arg_types;
......
/****************************************************************************** /******************************************************************************
* *
* Name: actypes.h - Common data types for the entire ACPI subsystem * Name: actypes.h - Common data types for the entire ACPI subsystem
* $Revision: 239 $ * $Revision: 240 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
/* /*
* Data types - Fixed across all compilation models * Data types - Fixed across all compilation models (16/32/64)
* *
* BOOLEAN Logical Boolean. * BOOLEAN Logical Boolean.
* INT8 8-bit (1 byte) signed value * INT8 8-bit (1 byte) signed value
...@@ -91,6 +91,7 @@ typedef UINT64 ACPI_SIZE; ...@@ -91,6 +91,7 @@ typedef UINT64 ACPI_SIZE;
#elif ACPI_MACHINE_WIDTH == 16 #elif ACPI_MACHINE_WIDTH == 16
/* /*
* 16-bit type definitions * 16-bit type definitions
*/ */
...@@ -133,6 +134,7 @@ typedef UINT16 ACPI_SIZE; ...@@ -133,6 +134,7 @@ typedef UINT16 ACPI_SIZE;
#elif ACPI_MACHINE_WIDTH == 32 #elif ACPI_MACHINE_WIDTH == 32
/* /*
* 32-bit type definitions (default) * 32-bit type definitions (default)
*/ */
...@@ -168,7 +170,6 @@ typedef UINT32 ACPI_SIZE; ...@@ -168,7 +170,6 @@ typedef UINT32 ACPI_SIZE;
/* /*
* Miscellaneous common types * Miscellaneous common types
*/ */
typedef UINT32 UINT32_BIT; typedef UINT32 UINT32_BIT;
typedef NATIVE_UINT ACPI_PTRDIFF; typedef NATIVE_UINT ACPI_PTRDIFF;
typedef char NATIVE_CHAR; typedef char NATIVE_CHAR;
...@@ -226,7 +227,6 @@ typedef struct acpi_pointer ...@@ -226,7 +227,6 @@ typedef struct acpi_pointer
/* /*
* Useful defines * Useful defines
*/ */
#ifdef FALSE #ifdef FALSE
#undef FALSE #undef FALSE
#endif #endif
...@@ -245,7 +245,6 @@ typedef struct acpi_pointer ...@@ -245,7 +245,6 @@ typedef struct acpi_pointer
/* /*
* Local datatypes * Local datatypes
*/ */
typedef u32 acpi_status; /* All ACPI Exceptions */ typedef u32 acpi_status; /* All ACPI Exceptions */
typedef u32 acpi_name; /* 4-byte ACPI name */ typedef u32 acpi_name; /* 4-byte ACPI name */
typedef char* acpi_string; /* Null terminated ASCII string */ typedef char* acpi_string; /* Null terminated ASCII string */
...@@ -314,7 +313,6 @@ typedef u64 acpi_integer; ...@@ -314,7 +313,6 @@ typedef u64 acpi_integer;
/* /*
* Constants with special meanings * Constants with special meanings
*/ */
#define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR) #define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR)
...@@ -386,7 +384,6 @@ typedef u64 acpi_integer; ...@@ -386,7 +384,6 @@ typedef u64 acpi_integer;
/* /*
* Table types. These values are passed to the table related APIs * Table types. These values are passed to the table related APIs
*/ */
typedef u32 acpi_table_type; typedef u32 acpi_table_type;
#define ACPI_TABLE_RSDP (acpi_table_type) 0 #define ACPI_TABLE_RSDP (acpi_table_type) 0
...@@ -401,15 +398,14 @@ typedef u32 acpi_table_type; ...@@ -401,15 +398,14 @@ typedef u32 acpi_table_type;
/* /*
* Types associated with names. The first group of * Types associated with ACPI names and objects. The first group of
* values correspond to the definition of the ACPI * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition
* Object_type operator (See the ACPI Spec). Therefore, * of the ACPI Object_type() operator (See the ACPI Spec). Therefore,
* only add to the first group if the spec changes. * only add to the first group if the spec changes.
* *
* Types must be kept in sync with the Acpi_ns_properties * Types must be kept in sync with the global Acpi_ns_properties
* and Acpi_ns_type_names arrays * and Acpi_ns_type_names arrays.
*/ */
typedef u32 acpi_object_type; typedef u32 acpi_object_type;
#define ACPI_TYPE_ANY 0x00 #define ACPI_TYPE_ANY 0x00
...@@ -430,52 +426,45 @@ typedef u32 acpi_object_type; ...@@ -430,52 +426,45 @@ typedef u32 acpi_object_type;
#define ACPI_TYPE_DDB_HANDLE 0x0F #define ACPI_TYPE_DDB_HANDLE 0x0F
#define ACPI_TYPE_DEBUG_OBJECT 0x10 #define ACPI_TYPE_DEBUG_OBJECT 0x10
#define ACPI_TYPE_MAX 0x10 #define ACPI_TYPE_EXTERNAL_MAX 0x10
/* /*
* This section contains object types that do not relate to the ACPI Object_type operator. * These are object types that do not map directly to the ACPI
* They are used for various internal purposes only. If new predefined ACPI_TYPEs are * Object_type() operator. They are used for various internal purposes only.
* added (via the ACPI specification), these internal types must move upwards. * If new predefined ACPI_TYPEs are added (via the ACPI specification), these
* Also, values exceeding the largest official ACPI Object_type must not overlap with * internal types must move upwards. (There is code that depends on these
* defined AML opcodes. * values being contiguous with the external types above.)
*/ */
#define INTERNAL_TYPE_BEGIN 0x11 #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11
#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12
#define INTERNAL_TYPE_REGION_FIELD 0x11 #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13
#define INTERNAL_TYPE_BANK_FIELD 0x12 #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, Ref_of, Index */
#define INTERNAL_TYPE_INDEX_FIELD 0x13 #define ACPI_TYPE_LOCAL_ALIAS 0x15
#define INTERNAL_TYPE_REFERENCE 0x14 /* Arg#, Local#, Name, Debug; used only in descriptors */ #define ACPI_TYPE_LOCAL_NOTIFY 0x16
#define INTERNAL_TYPE_ALIAS 0x15 #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x17
#define INTERNAL_TYPE_NOTIFY 0x16 #define ACPI_TYPE_LOCAL_RESOURCE 0x18
#define INTERNAL_TYPE_ADDRESS_HANDLER 0x17 #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x19
#define INTERNAL_TYPE_RESOURCE 0x18 #define ACPI_TYPE_LOCAL_SCOPE 0x1A /* 1 Name, multiple Object_list Nodes */
#define INTERNAL_TYPE_RESOURCE_FIELD 0x19
#define ACPI_TYPE_NS_NODE_MAX 0x1A /* Last typecode used within a NS Node */
#define INTERNAL_TYPE_NODE_MAX 0x19 /*
* These are special object types that never appear in
/* These are pseudo-types because there are never any namespace nodes with these types */ * a Namespace node, only in an acpi_operand_object
*/
#define ACPI_TYPE_LOCAL_EXTRA 0x1B
#define ACPI_TYPE_LOCAL_DATA 0x1C
#define INTERNAL_TYPE_FIELD_DEFN 0x1A /* Name, Byte_const, multiple Field_element */ #define ACPI_TYPE_LOCAL_MAX 0x1C
#define INTERNAL_TYPE_BANK_FIELD_DEFN 0x1B /* 2 Name,DWord_const,Byte_const,multi Field_element */
#define INTERNAL_TYPE_INDEX_FIELD_DEFN 0x1C /* 2 Name, Byte_const, multiple Field_element */
#define INTERNAL_TYPE_IF 0x1D
#define INTERNAL_TYPE_ELSE 0x1E
#define INTERNAL_TYPE_WHILE 0x1F
#define INTERNAL_TYPE_SCOPE 0x20 /* Name, multiple Node */
#define INTERNAL_TYPE_DEF_ANY 0x21 /* type is Any, suppress search of enclosing scopes */
#define INTERNAL_TYPE_EXTRA 0x22
#define INTERNAL_TYPE_DATA 0x23
#define INTERNAL_TYPE_MAX 0x23 /* All types above here are invalid */
#define INTERNAL_TYPE_INVALID 0x24 #define ACPI_TYPE_INVALID 0x1D
#define ACPI_TYPE_NOT_FOUND 0xFF #define ACPI_TYPE_NOT_FOUND 0xFF
/* /*
* Bitmapped ACPI types * Bitmapped ACPI types. Used internally only
* Used internally only
*/ */
#define ACPI_BTYPE_ANY 0x00000000 #define ACPI_BTYPE_ANY 0x00000000
#define ACPI_BTYPE_INTEGER 0x00000001 #define ACPI_BTYPE_INTEGER 0x00000001
...@@ -515,7 +504,6 @@ typedef u32 acpi_object_type; ...@@ -515,7 +504,6 @@ typedef u32 acpi_object_type;
/* /*
* Acpi_event Types: Fixed & General Purpose * Acpi_event Types: Fixed & General Purpose
*/ */
typedef u32 acpi_event_type; typedef u32 acpi_event_type;
#define ACPI_EVENT_FIXED 0 #define ACPI_EVENT_FIXED 0
...@@ -524,7 +512,6 @@ typedef u32 acpi_event_type; ...@@ -524,7 +512,6 @@ typedef u32 acpi_event_type;
/* /*
* Fixed events * Fixed events
*/ */
#define ACPI_EVENT_PMTIMER 0 #define ACPI_EVENT_PMTIMER 0
#define ACPI_EVENT_GLOBAL 1 #define ACPI_EVENT_GLOBAL 1
#define ACPI_EVENT_POWER_BUTTON 2 #define ACPI_EVENT_POWER_BUTTON 2
...@@ -543,9 +530,7 @@ typedef u32 acpi_event_type; ...@@ -543,9 +530,7 @@ typedef u32 acpi_event_type;
/* /*
* GPEs * GPEs
*/ */
#define ACPI_EVENT_WAKE_ENABLE 0x1 #define ACPI_EVENT_WAKE_ENABLE 0x1
#define ACPI_EVENT_WAKE_DISABLE 0x1 #define ACPI_EVENT_WAKE_DISABLE 0x1
...@@ -578,7 +563,7 @@ typedef u32 acpi_event_status; ...@@ -578,7 +563,7 @@ typedef u32 acpi_event_status;
#define ACPI_DEVICE_NOTIFY 1 #define ACPI_DEVICE_NOTIFY 1
#define ACPI_MAX_NOTIFY_HANDLER_TYPE 1 #define ACPI_MAX_NOTIFY_HANDLER_TYPE 1
#define ACPI_MAX_SYS_NOTIFY 0x7f #define ACPI_MAX_SYS_NOTIFY 0x7f
/* Address Space (Operation Region) Types */ /* Address Space (Operation Region) Types */
...@@ -626,10 +611,10 @@ typedef u8 ACPI_ADR_SPACE_TYPE; ...@@ -626,10 +611,10 @@ typedef u8 ACPI_ADR_SPACE_TYPE;
#define ACPI_BITREG_MAX 0x13 #define ACPI_BITREG_MAX 0x13
#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1
/* /*
* External ACPI object definition * External ACPI object definition
*/ */
typedef union acpi_obj typedef union acpi_obj
{ {
acpi_object_type type; /* See definition of Acpi_ns_type for values */ acpi_object_type type; /* See definition of Acpi_ns_type for values */
...@@ -688,7 +673,6 @@ typedef union acpi_obj ...@@ -688,7 +673,6 @@ typedef union acpi_obj
/* /*
* List of objects, used as a parameter list for control method evaluation * List of objects, used as a parameter list for control method evaluation
*/ */
typedef struct acpi_obj_list typedef struct acpi_obj_list
{ {
u32 count; u32 count;
...@@ -700,7 +684,6 @@ typedef struct acpi_obj_list ...@@ -700,7 +684,6 @@ typedef struct acpi_obj_list
/* /*
* Miscellaneous common Data Structures used by the interfaces * Miscellaneous common Data Structures used by the interfaces
*/ */
#define ACPI_NO_BUFFER 0 #define ACPI_NO_BUFFER 0
#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1)
#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2)
...@@ -716,7 +699,6 @@ typedef struct ...@@ -716,7 +699,6 @@ typedef struct
/* /*
* Name_type for Acpi_get_name * Name_type for Acpi_get_name
*/ */
#define ACPI_FULL_PATHNAME 0 #define ACPI_FULL_PATHNAME 0
#define ACPI_SINGLE_NAME 1 #define ACPI_SINGLE_NAME 1
#define ACPI_NAME_TYPE_MAX 1 #define ACPI_NAME_TYPE_MAX 1
...@@ -725,7 +707,6 @@ typedef struct ...@@ -725,7 +707,6 @@ typedef struct
/* /*
* Structure and flags for Acpi_get_system_info * Structure and flags for Acpi_get_system_info
*/ */
#define ACPI_SYS_MODE_UNKNOWN 0x0000 #define ACPI_SYS_MODE_UNKNOWN 0x0000
#define ACPI_SYS_MODE_ACPI 0x0001 #define ACPI_SYS_MODE_ACPI 0x0001
#define ACPI_SYS_MODE_LEGACY 0x0002 #define ACPI_SYS_MODE_LEGACY 0x0002
...@@ -745,7 +726,6 @@ typedef struct acpi_table_info ...@@ -745,7 +726,6 @@ typedef struct acpi_table_info
/* /*
* System info returned by Acpi_get_system_info() * System info returned by Acpi_get_system_info()
*/ */
typedef struct _acpi_sys_info typedef struct _acpi_sys_info
{ {
u32 acpi_ca_version; u32 acpi_ca_version;
...@@ -764,7 +744,6 @@ typedef struct _acpi_sys_info ...@@ -764,7 +744,6 @@ typedef struct _acpi_sys_info
/* /*
* Various handlers and callback procedures * Various handlers and callback procedures
*/ */
typedef typedef
u32 (*acpi_event_handler) ( u32 (*acpi_event_handler) (
void *context); void *context);
...@@ -1001,7 +980,7 @@ typedef struct ...@@ -1001,7 +980,7 @@ typedef struct
/* /*
* END_DEPENDENT_FUNCTIONS_RESOURCE struct is not * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
* needed because it has no fields * needed because it has no fields
*/ */
typedef struct typedef struct
......
/****************************************************************************** /******************************************************************************
* *
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
* $Revision: 146 $ * $Revision: 147 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -637,6 +637,11 @@ acpi_ut_delete_object_cache ( ...@@ -637,6 +637,11 @@ acpi_ut_delete_object_cache (
* utmisc * utmisc
*/ */
void
acpi_ut_print_string (
char *string,
u8 max_length);
acpi_status acpi_status
acpi_ut_divide ( acpi_ut_divide (
acpi_integer *in_dividend, acpi_integer *in_dividend,
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: nsaccess - Top-level functions for accessing ACPI namespace * Module Name: nsaccess - Top-level functions for accessing ACPI namespace
* $Revision: 161 $ * $Revision: 165 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -142,7 +142,7 @@ acpi_ns_root_initialize (void) ...@@ -142,7 +142,7 @@ acpi_ns_root_initialize (void)
/* /*
* Build an object around the static string * Build an object around the static string
*/ */
obj_desc->string.length = ACPI_STRLEN (init_val->val); obj_desc->string.length = (u32) ACPI_STRLEN (init_val->val);
obj_desc->string.pointer = init_val->val; obj_desc->string.pointer = init_val->val;
obj_desc->common.flags |= AOPOBJ_STATIC_POINTER; obj_desc->common.flags |= AOPOBJ_STATIC_POINTER;
break; break;
...@@ -150,6 +150,7 @@ acpi_ns_root_initialize (void) ...@@ -150,6 +150,7 @@ acpi_ns_root_initialize (void)
case ACPI_TYPE_MUTEX: case ACPI_TYPE_MUTEX:
obj_desc->mutex.node = new_node;
obj_desc->mutex.sync_level = obj_desc->mutex.sync_level =
(u16) ACPI_STRTOUL (init_val->val, NULL, 10); (u16) ACPI_STRTOUL (init_val->val, NULL, 10);
...@@ -246,6 +247,7 @@ acpi_ns_lookup ( ...@@ -246,6 +247,7 @@ acpi_ns_lookup (
acpi_namespace_node *current_node = NULL; acpi_namespace_node *current_node = NULL;
acpi_namespace_node *this_node = NULL; acpi_namespace_node *this_node = NULL;
u32 num_segments; u32 num_segments;
u32 num_carats;
acpi_name simple_name; acpi_name simple_name;
acpi_object_type type_to_check_for; acpi_object_type type_to_check_for;
acpi_object_type this_search_type; acpi_object_type this_search_type;
...@@ -299,26 +301,9 @@ acpi_ns_lookup ( ...@@ -299,26 +301,9 @@ acpi_ns_lookup (
} }
} }
/* /* Save type TBD: may be no longer necessary */
* This check is explicitly split to relax the Type_to_check_for
* conditions for Bank_field_defn. Originally, both Bank_field_defn and
* Def_field_defn caused Type_to_check_for to be set to ACPI_TYPE_REGION,
* but the Bank_field_defn may also check for a Field definition as well
* as an Operation_region.
*/
if (INTERNAL_TYPE_FIELD_DEFN == type) {
/* Def_field_defn defines fields in a Region */
type_to_check_for = ACPI_TYPE_REGION; type_to_check_for = type;
}
else if (INTERNAL_TYPE_BANK_FIELD_DEFN == type) {
/* Bank_field_defn defines data fields in a Field Object */
type_to_check_for = ACPI_TYPE_ANY;
}
else {
type_to_check_for = type;
}
/* /*
* Begin examination of the actual pathname * Begin examination of the actual pathname
...@@ -364,14 +349,15 @@ acpi_ns_lookup ( ...@@ -364,14 +349,15 @@ acpi_ns_lookup (
/* Pathname is relative to current scope, start there */ /* Pathname is relative to current scope, start there */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Searching relative to prefix scope [%p]\n", "Searching relative to prefix scope [%4.4s] (%p)\n",
prefix_node)); prefix_node->name.ascii, prefix_node));
/* /*
* Handle multiple Parent Prefixes (carat) by just getting * Handle multiple Parent Prefixes (carat) by just getting
* the parent node for each prefix instance. * the parent node for each prefix instance.
*/ */
this_node = prefix_node; this_node = prefix_node;
num_carats = 0;
while (*path == (u8) AML_PARENT_PREFIX) { while (*path == (u8) AML_PARENT_PREFIX) {
/* Name is fully qualified, no search rules apply */ /* Name is fully qualified, no search rules apply */
...@@ -384,6 +370,7 @@ acpi_ns_lookup ( ...@@ -384,6 +370,7 @@ acpi_ns_lookup (
/* Backup to the parent node */ /* Backup to the parent node */
num_carats++;
this_node = acpi_ns_get_parent_node (this_node); this_node = acpi_ns_get_parent_node (this_node);
if (!this_node) { if (!this_node) {
/* Current scope has no parent scope */ /* Current scope has no parent scope */
...@@ -396,7 +383,8 @@ acpi_ns_lookup ( ...@@ -396,7 +383,8 @@ acpi_ns_lookup (
if (search_parent_flag == ACPI_NS_NO_UPSEARCH) { if (search_parent_flag == ACPI_NS_NO_UPSEARCH) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Path is absolute with one or more carats\n")); "Search scope is [%4.4s], path has %d carat(s)\n",
this_node->name.ascii, num_carats));
} }
} }
...@@ -420,6 +408,7 @@ acpi_ns_lookup ( ...@@ -420,6 +408,7 @@ acpi_ns_lookup (
* have the correct target node and there are no name segments. * have the correct target node and there are no name segments.
*/ */
num_segments = 0; num_segments = 0;
type = this_node->type;
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Prefix-only Pathname (Zero name segments), Flags=%X\n", flags)); "Prefix-only Pathname (Zero name segments), Flags=%X\n", flags));
...@@ -525,6 +514,7 @@ acpi_ns_lookup ( ...@@ -525,6 +514,7 @@ acpi_ns_lookup (
current_node)); current_node));
} }
*return_node = this_node;
return_ACPI_STATUS (status); return_ACPI_STATUS (status);
} }
...@@ -535,27 +525,24 @@ acpi_ns_lookup ( ...@@ -535,27 +525,24 @@ acpi_ns_lookup (
* 2) And we are looking for a specific type * 2) And we are looking for a specific type
* (Not checking for TYPE_ANY) * (Not checking for TYPE_ANY)
* 3) Which is not an alias * 3) Which is not an alias
* 4) Which is not a local type (TYPE_DEF_ANY) * 4) Which is not a local type (TYPE_SCOPE)
* 5) Which is not a local type (TYPE_SCOPE) * 5) And the type of target object is known (not TYPE_ANY)
* 6) Which is not a local type (TYPE_INDEX_FIELD_DEFN) * 6) And target object does not match what we are looking for
* 7) And the type of target object is known (not TYPE_ANY)
* 8) And target object does not match what we are looking for
* *
* Then we have a type mismatch. Just warn and ignore it. * Then we have a type mismatch. Just warn and ignore it.
*/ */
if ((num_segments == 0) && if ((num_segments == 0) &&
(type_to_check_for != ACPI_TYPE_ANY) && (type_to_check_for != ACPI_TYPE_ANY) &&
(type_to_check_for != INTERNAL_TYPE_ALIAS) && (type_to_check_for != ACPI_TYPE_LOCAL_ALIAS) &&
(type_to_check_for != INTERNAL_TYPE_DEF_ANY) && (type_to_check_for != ACPI_TYPE_LOCAL_SCOPE) &&
(type_to_check_for != INTERNAL_TYPE_SCOPE) &&
(type_to_check_for != INTERNAL_TYPE_INDEX_FIELD_DEFN) &&
(this_node->type != ACPI_TYPE_ANY) && (this_node->type != ACPI_TYPE_ANY) &&
(this_node->type != type_to_check_for)) { (this_node->type != type_to_check_for)) {
/* Complain about a type mismatch */ /* Complain about a type mismatch */
ACPI_REPORT_WARNING ( ACPI_REPORT_WARNING (
("Ns_lookup: %4.4s, type %X, checking for type %X\n", ("Ns_lookup: Type mismatch on %4.4s (%s), searching for (%s)\n",
(char *) &simple_name, this_node->type, type_to_check_for)); (char *) &simple_name, acpi_ut_get_type_name (this_node->type),
acpi_ut_get_type_name (type_to_check_for)));
} }
/* /*
...@@ -581,15 +568,11 @@ acpi_ns_lookup ( ...@@ -581,15 +568,11 @@ acpi_ns_lookup (
* If entry is a type which opens a scope, push the new scope on the * If entry is a type which opens a scope, push the new scope on the
* scope stack. * scope stack.
*/ */
if (acpi_ns_opens_scope (type_to_check_for)) { if (acpi_ns_opens_scope (type)) {
status = acpi_ds_scope_stack_push (this_node, type, walk_state); status = acpi_ds_scope_stack_push (this_node, type, walk_state);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status); return_ACPI_STATUS (status);
} }
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Setting current scope to [%4.4s] (%p)\n",
this_node->name.ascii, this_node));
} }
} }
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: nsalloc - Namespace allocation and deletion utilities * Module Name: nsalloc - Namespace allocation and deletion utilities
* $Revision: 74 $ * $Revision: 75 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -125,6 +125,55 @@ acpi_ns_delete_node ( ...@@ -125,6 +125,55 @@ acpi_ns_delete_node (
} }
/*******************************************************************************
*
* FUNCTION: Acpi_ns_compare_names
*
* PARAMETERS: Name1 - First name to compare
* Name2 - Second name to compare
*
* RETURN: value from strncmp
*
* DESCRIPTION: Compare two ACPI names. Names that are prefixed with an
* underscore are forced to be alphabetically first.
*
******************************************************************************/
int
acpi_ns_compare_names (
char *name1,
char *name2)
{
char reversed_name1[ACPI_NAME_SIZE];
char reversed_name2[ACPI_NAME_SIZE];
u32 i;
u32 j;
/*
* Replace all instances of "underscore" with a value that is smaller so
* that all names that are prefixed with underscore(s) are alphabetically
* first.
*
* Reverse the name bytewise so we can just do a 32-bit compare instead
* of a strncmp.
*/
for (i = 0, j= (ACPI_NAME_SIZE - 1); i < ACPI_NAME_SIZE; i++, j--) {
reversed_name1[j] = name1[i];
if (name1[i] == '_') {
reversed_name1[j] = '*';
}
reversed_name2[j] = name2[i];
if (name2[i] == '_') {
reversed_name2[j] = '*';
}
}
return (*(s32 *) reversed_name1 - *(s32 *) reversed_name2);
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: Acpi_ns_install_node * FUNCTION: Acpi_ns_install_node
...@@ -139,8 +188,10 @@ acpi_ns_delete_node ( ...@@ -139,8 +188,10 @@ acpi_ns_delete_node (
* DESCRIPTION: Initialize a new namespace node and install it amongst * DESCRIPTION: Initialize a new namespace node and install it amongst
* its peers. * its peers.
* *
* Note: Current namespace lookup is linear search, so the nodes * Note: Current namespace lookup is linear search. However, the
* are not linked in any particular order. * nodes are linked in alphabetical order to 1) put all reserved
* names (start with underscore) first, and to 2) make a readable
* namespace dump.
* *
******************************************************************************/ ******************************************************************************/
...@@ -153,6 +204,7 @@ acpi_ns_install_node ( ...@@ -153,6 +204,7 @@ acpi_ns_install_node (
{ {
u16 owner_id = TABLE_ID_DSDT; u16 owner_id = TABLE_ID_DSDT;
acpi_namespace_node *child_node; acpi_namespace_node *child_node;
acpi_namespace_node *previous_child_node;
ACPI_FUNCTION_TRACE ("Ns_install_node"); ACPI_FUNCTION_TRACE ("Ns_install_node");
...@@ -172,66 +224,68 @@ acpi_ns_install_node ( ...@@ -172,66 +224,68 @@ acpi_ns_install_node (
child_node = parent_node->child; child_node = parent_node->child;
if (!child_node) { if (!child_node) {
parent_node->child = node; parent_node->child = node;
node->flags |= ANOBJ_END_OF_PEER_LIST;
node->peer = parent_node;
} }
else { else {
while (!(child_node->flags & ANOBJ_END_OF_PEER_LIST)) { /*
child_node = child_node->peer; * Walk the list whilst searching for the the correct
} * alphabetic placement.
*/
previous_child_node = NULL;
while (acpi_ns_compare_names (child_node->name.ascii, node->name.ascii) < 0) {
if (child_node->flags & ANOBJ_END_OF_PEER_LIST) {
/* Last peer; Clear end-of-list flag */
child_node->peer = node; child_node->flags &= ~ANOBJ_END_OF_PEER_LIST;
/* Clear end-of-list flag */ /* This node is the new peer to the child node */
child_node->flags &= ~ANOBJ_END_OF_PEER_LIST; child_node->peer = node;
}
/* Init the new entry */ /* This node is the new end-of-list */
node->owner_id = owner_id; node->flags |= ANOBJ_END_OF_PEER_LIST;
node->flags |= ANOBJ_END_OF_PEER_LIST; node->peer = parent_node;
node->peer = parent_node; break;
}
/* Get next peer */
/* previous_child_node = child_node;
* If adding a name with unknown type, or having to child_node = child_node->peer;
* add the region in order to define fields in it, we }
* have a forward reference.
*/
if ((ACPI_TYPE_ANY == type) ||
(INTERNAL_TYPE_FIELD_DEFN == type) ||
(INTERNAL_TYPE_BANK_FIELD_DEFN == type)) {
/*
* We don't want to abort here, however!
* We will fill in the actual type when the
* real definition is found later.
*/
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] is a forward reference\n",
node->name.ascii));
}
/* /* Did the node get inserted at the end-of-list? */
* The Def_field_defn and Bank_field_defn cases are actually
* looking up the Region in which the field will be defined
*/
if ((INTERNAL_TYPE_FIELD_DEFN == type) ||
(INTERNAL_TYPE_BANK_FIELD_DEFN == type)) {
type = ACPI_TYPE_REGION;
}
/* if (!(node->flags & ANOBJ_END_OF_PEER_LIST)) {
* Scope, Def_any, and Index_field_defn are bogus "types" which do /*
* not actually have anything to do with the type of the name * Loop above terminated without reaching the end-of-list.
* being looked up. Save any other value of Type as the type of * Insert the new node at the current location
* the entry. */
*/ if (previous_child_node) {
if ((type != INTERNAL_TYPE_SCOPE) && /* Insert node alphabetically */
(type != INTERNAL_TYPE_DEF_ANY) &&
(type != INTERNAL_TYPE_INDEX_FIELD_DEFN)) { node->peer = child_node;
node->type = (u8) type; previous_child_node->peer = node;
}
else {
/* Insert node alphabetically at start of list */
node->peer = child_node;
parent_node->child = node;
}
}
} }
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s added to %p at %p\n", /* Init the new entry */
node->name.ascii, parent_node, node));
node->owner_id = owner_id;
node->type = (u8) type;
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s (%s) added to %4.4s (%s) %p at %p\n",
node->name.ascii, acpi_ut_get_type_name (node->type),
parent_node->name.ascii, acpi_ut_get_type_name (parent_node->type), parent_node, node));
/* /*
* Increment the reference count(s) of all parents up to * Increment the reference count(s) of all parents up to
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: nsdump - table dumping routines for debug * Module Name: nsdump - table dumping routines for debug
* $Revision: 141 $ * $Revision: 145 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -150,22 +150,14 @@ acpi_ns_dump_one_object ( ...@@ -150,22 +150,14 @@ acpi_ns_dump_one_object (
acpi_object_type obj_type; acpi_object_type obj_type;
acpi_object_type type; acpi_object_type type;
u32 bytes_to_dump; u32 bytes_to_dump;
u32 downstream_sibling_mask = 0;
u32 level_tmp;
u32 which_bit;
u32 i;
u32 dbg_level; u32 dbg_level;
u32 i;
ACPI_FUNCTION_NAME ("Ns_dump_one_object"); ACPI_FUNCTION_NAME ("Ns_dump_one_object");
this_node = acpi_ns_map_handle_to_node (obj_handle); /* Is output enabled? */
level_tmp = level;
type = this_node->type;
which_bit = 1;
if (!(acpi_dbg_level & info->debug_level)) { if (!(acpi_dbg_level & info->debug_level)) {
return (AE_OK); return (AE_OK);
...@@ -176,6 +168,9 @@ acpi_ns_dump_one_object ( ...@@ -176,6 +168,9 @@ acpi_ns_dump_one_object (
return (AE_OK); return (AE_OK);
} }
this_node = acpi_ns_map_handle_to_node (obj_handle);
type = this_node->type;
/* Check if the owner matches */ /* Check if the owner matches */
if ((info->owner_id != ACPI_UINT32_MAX) && if ((info->owner_id != ACPI_UINT32_MAX) &&
...@@ -185,45 +180,12 @@ acpi_ns_dump_one_object ( ...@@ -185,45 +180,12 @@ acpi_ns_dump_one_object (
/* Indent the object according to the level */ /* Indent the object according to the level */
while (level_tmp--) { acpi_os_printf ("%2d%*s", level - 1, level * 2, " ");
/* Print appropriate characters to form tree structure */
if (level_tmp) {
if (downstream_sibling_mask & which_bit) {
acpi_os_printf ("|");
}
else {
acpi_os_printf (" ");
}
which_bit <<= 1;
}
else {
if (acpi_ns_exist_downstream_sibling (this_node + 1)) {
downstream_sibling_mask |= ((u32) 1 << (level - 1));
acpi_os_printf ("+");
}
else {
downstream_sibling_mask &= ACPI_UINT32_MAX ^ ((u32) 1 << (level - 1));
acpi_os_printf ("+");
}
if (this_node->child == NULL) {
acpi_os_printf ("-");
}
else if (acpi_ns_exist_downstream_sibling (this_node->child)) {
acpi_os_printf ("+");
}
else {
acpi_os_printf ("-");
}
}
}
/* Check the integrity of our data */ /* Check the node type and name */
if (type > INTERNAL_TYPE_MAX) { if (type > ACPI_TYPE_LOCAL_MAX) {
type = INTERNAL_TYPE_DEF_ANY; /* prints as *ERROR* */ ACPI_REPORT_WARNING (("Invalid ACPI Type %08X\n", type));
} }
if (!acpi_ut_valid_acpi_name (this_node->name.integer)) { if (!acpi_ut_valid_acpi_name (this_node->name.integer)) {
...@@ -233,7 +195,7 @@ acpi_ns_dump_one_object ( ...@@ -233,7 +195,7 @@ acpi_ns_dump_one_object (
/* /*
* Now we can print out the pertinent information * Now we can print out the pertinent information
*/ */
acpi_os_printf (" %4.4s %-12s %p", acpi_os_printf ("%4.4s %-12s %p ",
this_node->name.ascii, acpi_ut_get_type_name (type), this_node); this_node->name.ascii, acpi_ut_get_type_name (type), this_node);
dbg_level = acpi_dbg_level; dbg_level = acpi_dbg_level;
...@@ -254,7 +216,7 @@ acpi_ns_dump_one_object ( ...@@ -254,7 +216,7 @@ acpi_ns_dump_one_object (
switch (type) { switch (type) {
case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_PROCESSOR:
acpi_os_printf (" ID %X Len %.4X Addr %p\n", acpi_os_printf ("ID %X Len %.4X Addr %p\n",
obj_desc->processor.proc_id, obj_desc->processor.proc_id,
obj_desc->processor.length, obj_desc->processor.length,
(char *) obj_desc->processor.address); (char *) obj_desc->processor.address);
...@@ -263,13 +225,13 @@ acpi_ns_dump_one_object ( ...@@ -263,13 +225,13 @@ acpi_ns_dump_one_object (
case ACPI_TYPE_DEVICE: case ACPI_TYPE_DEVICE:
acpi_os_printf (" Notification object: %p", obj_desc); acpi_os_printf ("Notify object: %p", obj_desc);
break; break;
case ACPI_TYPE_METHOD: case ACPI_TYPE_METHOD:
acpi_os_printf (" Args %X Len %.4X Aml %p\n", acpi_os_printf ("Args %X Len %.4X Aml %p\n",
(u32) obj_desc->method.param_count, (u32) obj_desc->method.param_count,
obj_desc->method.aml_length, obj_desc->method.aml_length,
obj_desc->method.aml_start); obj_desc->method.aml_start);
...@@ -278,7 +240,7 @@ acpi_ns_dump_one_object ( ...@@ -278,7 +240,7 @@ acpi_ns_dump_one_object (
case ACPI_TYPE_INTEGER: case ACPI_TYPE_INTEGER:
acpi_os_printf (" = %8.8X%8.8X\n", acpi_os_printf ("= %8.8X%8.8X\n",
ACPI_HIDWORD (obj_desc->integer.value), ACPI_HIDWORD (obj_desc->integer.value),
ACPI_LODWORD (obj_desc->integer.value)); ACPI_LODWORD (obj_desc->integer.value));
break; break;
...@@ -287,11 +249,11 @@ acpi_ns_dump_one_object ( ...@@ -287,11 +249,11 @@ acpi_ns_dump_one_object (
case ACPI_TYPE_PACKAGE: case ACPI_TYPE_PACKAGE:
if (obj_desc->common.flags & AOPOBJ_DATA_VALID) { if (obj_desc->common.flags & AOPOBJ_DATA_VALID) {
acpi_os_printf (" Elements %.2X\n", acpi_os_printf ("Elements %.2X\n",
obj_desc->package.count); obj_desc->package.count);
} }
else { else {
acpi_os_printf (" [Length not yet evaluated]\n"); acpi_os_printf ("[Length not yet evaluated]\n");
} }
break; break;
...@@ -299,7 +261,7 @@ acpi_ns_dump_one_object ( ...@@ -299,7 +261,7 @@ acpi_ns_dump_one_object (
case ACPI_TYPE_BUFFER: case ACPI_TYPE_BUFFER:
if (obj_desc->common.flags & AOPOBJ_DATA_VALID) { if (obj_desc->common.flags & AOPOBJ_DATA_VALID) {
acpi_os_printf (" Len %.2X", acpi_os_printf ("Len %.2X",
obj_desc->buffer.length); obj_desc->buffer.length);
/* Dump some of the buffer */ /* Dump some of the buffer */
...@@ -313,28 +275,22 @@ acpi_ns_dump_one_object ( ...@@ -313,28 +275,22 @@ acpi_ns_dump_one_object (
acpi_os_printf ("\n"); acpi_os_printf ("\n");
} }
else { else {
acpi_os_printf (" [Length not yet evaluated]\n"); acpi_os_printf ("[Length not yet evaluated]\n");
} }
break; break;
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
acpi_os_printf (" Len %.2X", obj_desc->string.length); acpi_os_printf ("Len %.2X ", obj_desc->string.length);
acpi_ut_print_string (obj_desc->string.pointer, 32);
if (obj_desc->string.length > 0) {
acpi_os_printf (" = \"%.32s\"", obj_desc->string.pointer);
if (obj_desc->string.length > 32) {
acpi_os_printf ("...");
}
}
acpi_os_printf ("\n"); acpi_os_printf ("\n");
break; break;
case ACPI_TYPE_REGION: case ACPI_TYPE_REGION:
acpi_os_printf (" [%s]", acpi_ut_get_region_name (obj_desc->region.space_id)); acpi_os_printf ("[%s]", acpi_ut_get_region_name (obj_desc->region.space_id));
if (obj_desc->region.flags & AOPOBJ_DATA_VALID) { if (obj_desc->region.flags & AOPOBJ_DATA_VALID) {
acpi_os_printf (" Addr %8.8X%8.8X Len %.4X\n", acpi_os_printf (" Addr %8.8X%8.8X Len %.4X\n",
ACPI_HIDWORD (obj_desc->region.address), ACPI_HIDWORD (obj_desc->region.address),
...@@ -347,9 +303,9 @@ acpi_ns_dump_one_object ( ...@@ -347,9 +303,9 @@ acpi_ns_dump_one_object (
break; break;
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
acpi_os_printf (" [%s]\n", acpi_os_printf ("[%s]\n",
acpi_ps_get_opcode_name (obj_desc->reference.opcode)); acpi_ps_get_opcode_name (obj_desc->reference.opcode));
break; break;
...@@ -358,43 +314,43 @@ acpi_ns_dump_one_object ( ...@@ -358,43 +314,43 @@ acpi_ns_dump_one_object (
if (obj_desc->buffer_field.buffer_obj && if (obj_desc->buffer_field.buffer_obj &&
obj_desc->buffer_field.buffer_obj->buffer.node) { obj_desc->buffer_field.buffer_obj->buffer.node) {
acpi_os_printf (" Buf [%4.4s]", acpi_os_printf ("Buf [%4.4s]",
obj_desc->buffer_field.buffer_obj->buffer.node->name.ascii); obj_desc->buffer_field.buffer_obj->buffer.node->name.ascii);
} }
break; break;
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
acpi_os_printf (" Rgn [%4.4s]", acpi_os_printf ("Rgn [%4.4s]",
obj_desc->common_field.region_obj->region.node->name.ascii); obj_desc->common_field.region_obj->region.node->name.ascii);
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
acpi_os_printf (" Rgn [%4.4s] Bnk [%4.4s]", acpi_os_printf ("Rgn [%4.4s] Bnk [%4.4s]",
obj_desc->common_field.region_obj->region.node->name.ascii, obj_desc->common_field.region_obj->region.node->name.ascii,
obj_desc->bank_field.bank_obj->common_field.node->name.ascii); obj_desc->bank_field.bank_obj->common_field.node->name.ascii);
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
acpi_os_printf (" Idx [%4.4s] Dat [%4.4s]", acpi_os_printf ("Idx [%4.4s] Dat [%4.4s]",
obj_desc->index_field.index_obj->common_field.node->name.ascii, obj_desc->index_field.index_obj->common_field.node->name.ascii,
obj_desc->index_field.data_obj->common_field.node->name.ascii); obj_desc->index_field.data_obj->common_field.node->name.ascii);
break; break;
case INTERNAL_TYPE_ALIAS: case ACPI_TYPE_LOCAL_ALIAS:
acpi_os_printf (" Target %4.4s (%p)\n", ((acpi_namespace_node *) obj_desc)->name.ascii, obj_desc); acpi_os_printf ("Target %4.4s (%p)\n", ((acpi_namespace_node *) obj_desc)->name.ascii, obj_desc);
break; break;
default: default:
acpi_os_printf (" Object %p\n", obj_desc); acpi_os_printf ("Object %p\n", obj_desc);
break; break;
} }
...@@ -402,9 +358,10 @@ acpi_ns_dump_one_object ( ...@@ -402,9 +358,10 @@ acpi_ns_dump_one_object (
switch (type) { switch (type) {
case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_BUFFER_FIELD:
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
acpi_os_printf (" Off %.2X Len %.2X Acc %.2hd\n", acpi_os_printf (" Off %.2X Len %.2X Acc %.2hd\n",
(obj_desc->common_field.base_byte_offset * 8) (obj_desc->common_field.base_byte_offset * 8)
+ obj_desc->common_field.start_field_bit_offset, + obj_desc->common_field.start_field_bit_offset,
...@@ -420,9 +377,7 @@ acpi_ns_dump_one_object ( ...@@ -420,9 +377,7 @@ acpi_ns_dump_one_object (
case ACPI_DISPLAY_OBJECTS: case ACPI_DISPLAY_OBJECTS:
acpi_os_printf ("%p O:%p", acpi_os_printf ("O:%p", obj_desc);
this_node, obj_desc);
if (!obj_desc) { if (!obj_desc) {
/* No attached object, we are done */ /* No attached object, we are done */
...@@ -490,7 +445,7 @@ acpi_ns_dump_one_object ( ...@@ -490,7 +445,7 @@ acpi_ns_dump_one_object (
/* Dump attached objects */ /* Dump attached objects */
while (obj_desc) { while (obj_desc) {
obj_type = INTERNAL_TYPE_INVALID; obj_type = ACPI_TYPE_INVALID;
acpi_os_printf (" Attached Object %p: ", obj_desc); acpi_os_printf (" Attached Object %p: ", obj_desc);
/* Decode the type of attached object and dump the contents */ /* Decode the type of attached object and dump the contents */
...@@ -507,7 +462,7 @@ acpi_ns_dump_one_object ( ...@@ -507,7 +462,7 @@ acpi_ns_dump_one_object (
obj_type = ACPI_GET_OBJECT_TYPE (obj_desc); obj_type = ACPI_GET_OBJECT_TYPE (obj_desc);
if (obj_type > INTERNAL_TYPE_MAX) { if (obj_type > ACPI_TYPE_LOCAL_MAX) {
acpi_os_printf ("(Ptr to ACPI Object type %X [UNKNOWN])\n", obj_type); acpi_os_printf ("(Ptr to ACPI Object type %X [UNKNOWN])\n", obj_type);
bytes_to_dump = 32; bytes_to_dump = 32;
} }
...@@ -558,15 +513,15 @@ acpi_ns_dump_one_object ( ...@@ -558,15 +513,15 @@ acpi_ns_dump_one_object (
obj_desc = (void *) obj_desc->method.aml_start; obj_desc = (void *) obj_desc->method.aml_start;
break; break;
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
obj_desc = (void *) obj_desc->field.region_obj; obj_desc = (void *) obj_desc->field.region_obj;
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
obj_desc = (void *) obj_desc->bank_field.region_obj; obj_desc = (void *) obj_desc->bank_field.region_obj;
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
obj_desc = (void *) obj_desc->index_field.index_obj; obj_desc = (void *) obj_desc->index_field.index_obj;
break; break;
...@@ -574,7 +529,7 @@ acpi_ns_dump_one_object ( ...@@ -574,7 +529,7 @@ acpi_ns_dump_one_object (
goto cleanup; goto cleanup;
} }
obj_type = INTERNAL_TYPE_INVALID; /* Terminate loop after next pass */ obj_type = ACPI_TYPE_INVALID; /* Terminate loop after next pass */
} }
cleanup: cleanup:
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: nsobject - Utilities for objects attached to namespace * Module Name: nsobject - Utilities for objects attached to namespace
* table entries * table entries
* $Revision: 83 $ * $Revision: 84 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -127,14 +127,9 @@ acpi_ns_attach_object ( ...@@ -127,14 +127,9 @@ acpi_ns_attach_object (
else { else {
obj_desc = (acpi_operand_object *) object; obj_desc = (acpi_operand_object *) object;
/* If a valid type (non-ANY) was given, just use it */ /* Use the given type */
if (ACPI_TYPE_ANY != type) { object_type = type;
object_type = type;
}
else {
object_type = INTERNAL_TYPE_DEF_ANY;
}
} }
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n", ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n",
...@@ -201,7 +196,7 @@ acpi_ns_detach_object ( ...@@ -201,7 +196,7 @@ acpi_ns_detach_object (
obj_desc = node->object; obj_desc = node->object;
if (!obj_desc || if (!obj_desc ||
(ACPI_GET_OBJECT_TYPE (obj_desc) == INTERNAL_TYPE_DATA)) { (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA)) {
return_VOID; return_VOID;
} }
...@@ -211,7 +206,7 @@ acpi_ns_detach_object ( ...@@ -211,7 +206,7 @@ acpi_ns_detach_object (
if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_OPERAND) { if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_OPERAND) {
node->object = obj_desc->common.next_object; node->object = obj_desc->common.next_object;
if (node->object && if (node->object &&
(ACPI_GET_OBJECT_TYPE (node->object) != INTERNAL_TYPE_DATA)) { (ACPI_GET_OBJECT_TYPE (node->object) != ACPI_TYPE_LOCAL_DATA)) {
node->object = node->object->common.next_object; node->object = node->object->common.next_object;
} }
} }
...@@ -256,7 +251,7 @@ acpi_ns_get_attached_object ( ...@@ -256,7 +251,7 @@ acpi_ns_get_attached_object (
if (!node->object || if (!node->object ||
((ACPI_GET_DESCRIPTOR_TYPE (node->object) != ACPI_DESC_TYPE_OPERAND) && ((ACPI_GET_DESCRIPTOR_TYPE (node->object) != ACPI_DESC_TYPE_OPERAND) &&
(ACPI_GET_DESCRIPTOR_TYPE (node->object) != ACPI_DESC_TYPE_NAMED)) || (ACPI_GET_DESCRIPTOR_TYPE (node->object) != ACPI_DESC_TYPE_NAMED)) ||
(ACPI_GET_OBJECT_TYPE (node->object) == INTERNAL_TYPE_DATA)) { (ACPI_GET_OBJECT_TYPE (node->object) == ACPI_TYPE_LOCAL_DATA)) {
return_PTR (NULL); return_PTR (NULL);
} }
...@@ -282,10 +277,10 @@ acpi_ns_get_secondary_object ( ...@@ -282,10 +277,10 @@ acpi_ns_get_secondary_object (
ACPI_FUNCTION_TRACE_PTR ("Ns_get_secondary_object", obj_desc); ACPI_FUNCTION_TRACE_PTR ("Ns_get_secondary_object", obj_desc);
if ((!obj_desc) || if ((!obj_desc) ||
(ACPI_GET_OBJECT_TYPE (obj_desc) == INTERNAL_TYPE_DATA) || (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) ||
(!obj_desc->common.next_object) || (!obj_desc->common.next_object) ||
(ACPI_GET_OBJECT_TYPE (obj_desc->common.next_object) == INTERNAL_TYPE_DATA)) { (ACPI_GET_OBJECT_TYPE (obj_desc->common.next_object) == ACPI_TYPE_LOCAL_DATA)) {
return_PTR (NULL); return_PTR (NULL);
} }
...@@ -320,7 +315,7 @@ acpi_ns_attach_data ( ...@@ -320,7 +315,7 @@ acpi_ns_attach_data (
prev_obj_desc = NULL; prev_obj_desc = NULL;
obj_desc = node->object; obj_desc = node->object;
while (obj_desc) { while (obj_desc) {
if ((ACPI_GET_OBJECT_TYPE (obj_desc) == INTERNAL_TYPE_DATA) && if ((ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
(obj_desc->data.handler == handler)) { (obj_desc->data.handler == handler)) {
return (AE_ALREADY_EXISTS); return (AE_ALREADY_EXISTS);
} }
...@@ -332,7 +327,7 @@ acpi_ns_attach_data ( ...@@ -332,7 +327,7 @@ acpi_ns_attach_data (
/* Create an internal object for the data */ /* Create an internal object for the data */
data_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_DATA); data_desc = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_DATA);
if (!data_desc) { if (!data_desc) {
return (AE_NO_MEMORY); return (AE_NO_MEMORY);
} }
...@@ -378,7 +373,7 @@ acpi_ns_detach_data ( ...@@ -378,7 +373,7 @@ acpi_ns_detach_data (
prev_obj_desc = NULL; prev_obj_desc = NULL;
obj_desc = node->object; obj_desc = node->object;
while (obj_desc) { while (obj_desc) {
if ((ACPI_GET_OBJECT_TYPE (obj_desc) == INTERNAL_TYPE_DATA) && if ((ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
(obj_desc->data.handler == handler)) { (obj_desc->data.handler == handler)) {
if (prev_obj_desc) { if (prev_obj_desc) {
prev_obj_desc->common.next_object = obj_desc->common.next_object; prev_obj_desc->common.next_object = obj_desc->common.next_object;
...@@ -422,7 +417,7 @@ acpi_ns_get_attached_data ( ...@@ -422,7 +417,7 @@ acpi_ns_get_attached_data (
obj_desc = node->object; obj_desc = node->object;
while (obj_desc) { while (obj_desc) {
if ((ACPI_GET_OBJECT_TYPE (obj_desc) == INTERNAL_TYPE_DATA) && if ((ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
(obj_desc->data.handler == handler)) { (obj_desc->data.handler == handler)) {
*data = obj_desc->data.pointer; *data = obj_desc->data.pointer;
return (AE_OK); return (AE_OK);
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: nssearch - Namespace search * Module Name: nssearch - Namespace search
* $Revision: 89 $ * $Revision: 92 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -37,14 +37,15 @@ ...@@ -37,14 +37,15 @@
* FUNCTION: Acpi_ns_search_node * FUNCTION: Acpi_ns_search_node
* *
* PARAMETERS: *Target_name - Ascii ACPI name to search for * PARAMETERS: *Target_name - Ascii ACPI name to search for
* *Node - Starting table where search will begin * *Node - Starting node where search will begin
* Type - Object type to match * Type - Object type to match
* **Return_node - Where the matched Named obj is returned * **Return_node - Where the matched Named obj is returned
* *
* RETURN: Status * RETURN: Status
* *
* DESCRIPTION: Search a single namespace table. Performs a simple search, * DESCRIPTION: Search a single level of the namespace. Performs a
* does not add entries or search parents. * simple search of the specified level, and does not add
* entries or search parents.
* *
* *
* Named object lists are built (and subsequently dumped) in the * Named object lists are built (and subsequently dumped) in the
...@@ -77,7 +78,7 @@ acpi_ns_search_node ( ...@@ -77,7 +78,7 @@ acpi_ns_search_node (
scope_name = acpi_ns_get_external_pathname (node); scope_name = acpi_ns_get_external_pathname (node);
if (scope_name) { if (scope_name) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (type %s)\n", ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (%s)\n",
scope_name, node, (char *) &target_name, acpi_ut_get_type_name (type))); scope_name, node, (char *) &target_name, acpi_ut_get_type_name (type)));
ACPI_MEM_FREE (scope_name); ACPI_MEM_FREE (scope_name);
...@@ -86,8 +87,8 @@ acpi_ns_search_node ( ...@@ -86,8 +87,8 @@ acpi_ns_search_node (
#endif #endif
/* /*
* Search for name in this table, which is to say that we must search * Search for name at this namespace level, which is to say that we
* for the name among the children of this object * must search for the name among the children of this object
*/ */
next_node = node->child; next_node = node->child;
while (next_node) { while (next_node) {
...@@ -95,30 +96,8 @@ acpi_ns_search_node ( ...@@ -95,30 +96,8 @@ acpi_ns_search_node (
if (next_node->name.integer == target_name) { if (next_node->name.integer == target_name) {
/* /*
* Found matching entry. Capture the type if appropriate, before * Found matching entry.
* returning the entry.
*
* The Def_field_defn and Bank_field_defn cases are actually looking up
* the Region in which the field will be defined
*/ */
if ((INTERNAL_TYPE_FIELD_DEFN == type) ||
(INTERNAL_TYPE_BANK_FIELD_DEFN == type)) {
type = ACPI_TYPE_REGION;
}
/*
* Scope, Def_any, and Index_field_defn are bogus "types" which do not
* actually have anything to do with the type of the name being
* looked up. For any other value of Type, if the type stored in
* the entry is Any (i.e. unknown), save the actual type.
*/
if (type != INTERNAL_TYPE_SCOPE &&
type != INTERNAL_TYPE_DEF_ANY &&
type != INTERNAL_TYPE_INDEX_FIELD_DEFN &&
next_node->type == ACPI_TYPE_ANY) {
next_node->type = (u8) type;
}
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Name %4.4s Type [%s] found at %p\n", "Name %4.4s Type [%s] found at %p\n",
(char *) &target_name, acpi_ut_get_type_name (next_node->type), next_node)); (char *) &target_name, acpi_ut_get_type_name (next_node->type), next_node));
...@@ -142,7 +121,7 @@ acpi_ns_search_node ( ...@@ -142,7 +121,7 @@ acpi_ns_search_node (
next_node = next_node->peer; next_node = next_node->peer;
} }
/* Searched entire table, not found */ /* Searched entire namespace level, not found */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name %4.4s Type [%s] not found at %p\n", ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name %4.4s Type [%s] not found at %p\n",
(char *) &target_name, acpi_ut_get_type_name (type), next_node)); (char *) &target_name, acpi_ut_get_type_name (type), next_node));
...@@ -156,14 +135,14 @@ acpi_ns_search_node ( ...@@ -156,14 +135,14 @@ acpi_ns_search_node (
* FUNCTION: Acpi_ns_search_parent_tree * FUNCTION: Acpi_ns_search_parent_tree
* *
* PARAMETERS: *Target_name - Ascii ACPI name to search for * PARAMETERS: *Target_name - Ascii ACPI name to search for
* *Node - Starting table where search will begin * *Node - Starting node where search will begin
* Type - Object type to match * Type - Object type to match
* **Return_node - Where the matched Named Obj is returned * **Return_node - Where the matched Named Obj is returned
* *
* RETURN: Status * RETURN: Status
* *
* DESCRIPTION: Called when a name has not been found in the current namespace * DESCRIPTION: Called when a name has not been found in the current namespace
* table. Before adding it or giving up, ACPI scope rules require * level. Before adding it or giving up, ACPI scope rules require
* searching enclosing scopes in cases identified by Acpi_ns_local(). * searching enclosing scopes in cases identified by Acpi_ns_local().
* *
* "A name is located by finding the matching name in the current * "A name is located by finding the matching name in the current
...@@ -193,22 +172,19 @@ acpi_ns_search_parent_tree ( ...@@ -193,22 +172,19 @@ acpi_ns_search_parent_tree (
parent_node = acpi_ns_get_parent_node (node); parent_node = acpi_ns_get_parent_node (node);
/* /*
* If there is no parent (at the root) or type is "local", we won't be * If there is no parent (i.e., we are at the root) or
* searching the parent tree. * type is "local", we won't be searching the parent tree.
*/ */
if ((acpi_ns_local (type)) || if (!parent_node) {
(!parent_node)) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n",
if (!parent_node) { (char *) &target_name));
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n", return_ACPI_STATUS (AE_NOT_FOUND);
(char *) &target_name)); }
}
if (acpi_ns_local (type)) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"[%4.4s] type [%s] must be local to this scope (no parent search)\n",
(char *) &target_name, acpi_ut_get_type_name (type)));
}
if (acpi_ns_local (type)) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"[%4.4s] type [%s] must be local to this scope (no parent search)\n",
(char *) &target_name, acpi_ut_get_type_name (type)));
return_ACPI_STATUS (AE_NOT_FOUND); return_ACPI_STATUS (AE_NOT_FOUND);
} }
...@@ -251,8 +227,8 @@ acpi_ns_search_parent_tree ( ...@@ -251,8 +227,8 @@ acpi_ns_search_parent_tree (
* *
* PARAMETERS: Target_name - Ascii ACPI name to search for (4 chars) * PARAMETERS: Target_name - Ascii ACPI name to search for (4 chars)
* Walk_state - Current state of the walk * Walk_state - Current state of the walk
* *Node - Starting table where search will begin * *Node - Starting node where search will begin
* Interpreter_mode - Add names only in MODE_Load_pass_x. * Interpreter_mode - Add names only in ACPI_MODE_LOAD_PASS_x.
* Otherwise,search only. * Otherwise,search only.
* Type - Object type to match * Type - Object type to match
* Flags - Flags describing the search restrictions * Flags - Flags describing the search restrictions
...@@ -260,12 +236,12 @@ acpi_ns_search_parent_tree ( ...@@ -260,12 +236,12 @@ acpi_ns_search_parent_tree (
* *
* RETURN: Status * RETURN: Status
* *
* DESCRIPTION: Search for a name segment in a single name table, * DESCRIPTION: Search for a name segment in a single namespace level,
* optionally adding it if it is not found. If the passed * optionally adding it if it is not found. If the passed
* Type is not Any and the type previously stored in the * Type is not Any and the type previously stored in the
* entry was Any (i.e. unknown), update the stored type. * entry was Any (i.e. unknown), update the stored type.
* *
* In IMODE_EXECUTE, search only. * In ACPI_IMODE_EXECUTE, search only.
* In other modes, search and add if not found. * In other modes, search and add if not found.
* *
******************************************************************************/ ******************************************************************************/
...@@ -300,14 +276,12 @@ acpi_ns_search_and_enter ( ...@@ -300,14 +276,12 @@ acpi_ns_search_and_enter (
/* Name must consist of printable characters */ /* Name must consist of printable characters */
if (!acpi_ut_valid_acpi_name (target_name)) { if (!acpi_ut_valid_acpi_name (target_name)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "*** Bad character in name: %08x *** \n", ACPI_REPORT_ERROR (("Ns_search_and_enter: Bad character in ACPI Name: %X\n",
target_name)); target_name));
ACPI_REPORT_ERROR (("Ns_search_and_enter: Bad character in ACPI Name\n"));
return_ACPI_STATUS (AE_BAD_CHARACTER); return_ACPI_STATUS (AE_BAD_CHARACTER);
} }
/* Try to find the name in the table specified by the caller */ /* Try to find the name in the namespace level specified by the caller */
*return_node = ACPI_ENTRY_NOT_FOUND; *return_node = ACPI_ENTRY_NOT_FOUND;
status = acpi_ns_search_node (target_name, node, type, return_node); status = acpi_ns_search_node (target_name, node, type, return_node);
...@@ -340,7 +314,7 @@ acpi_ns_search_and_enter ( ...@@ -340,7 +314,7 @@ acpi_ns_search_and_enter (
if ((interpreter_mode != ACPI_IMODE_LOAD_PASS1) && if ((interpreter_mode != ACPI_IMODE_LOAD_PASS1) &&
(flags & ACPI_NS_SEARCH_PARENT)) { (flags & ACPI_NS_SEARCH_PARENT)) {
/* /*
* Not found in table - search parent tree according * Not found at this level - search parent tree according
* to ACPI specification * to ACPI specification
*/ */
status = acpi_ns_search_parent_tree (target_name, node, status = acpi_ns_search_parent_tree (target_name, node,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
* parents and siblings and Scope manipulation * parents and siblings and Scope manipulation
* $Revision: 113 $ * $Revision: 115 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -747,7 +747,7 @@ u32 ...@@ -747,7 +747,7 @@ u32
acpi_ns_opens_scope ( acpi_ns_opens_scope (
acpi_object_type type) acpi_object_type type)
{ {
ACPI_FUNCTION_TRACE_U32 ("Ns_opens_scope", type); ACPI_FUNCTION_TRACE_STR ("Ns_opens_scope", acpi_ut_get_type_name (type));
if (!acpi_ut_valid_object_type (type)) { if (!acpi_ut_valid_object_type (type)) {
...@@ -885,43 +885,6 @@ acpi_ns_find_parent_name ( ...@@ -885,43 +885,6 @@ acpi_ns_find_parent_name (
} }
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
/*******************************************************************************
*
* FUNCTION: Acpi_ns_exist_downstream_sibling
*
* PARAMETERS: *Node - pointer to first Node to examine
*
* RETURN: TRUE if sibling is found, FALSE otherwise
*
* DESCRIPTION: Searches remainder of scope being processed to determine
* whether there is a downstream sibling to the current
* object. This function is used to determine what type of
* line drawing character to use when displaying namespace
* trees.
*
******************************************************************************/
u8
acpi_ns_exist_downstream_sibling (
acpi_namespace_node *node)
{
if (!node) {
return (FALSE);
}
if (node->name.integer) {
return (TRUE);
}
return (FALSE);
}
#endif /* ACPI_DEBUG_OUTPUT */
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: Acpi_ns_get_parent_node * FUNCTION: Acpi_ns_get_parent_node
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: nsxfeval - Public interfaces to the ACPI subsystem * Module Name: nsxfeval - Public interfaces to the ACPI subsystem
* ACPI Object evaluation interfaces * ACPI Object evaluation interfaces
* $Revision: 2 $ * $Revision: 3 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -373,8 +373,8 @@ acpi_walk_namespace ( ...@@ -373,8 +373,8 @@ acpi_walk_namespace (
/* Parameter validation */ /* Parameter validation */
if ((type > ACPI_TYPE_MAX) || if ((type > ACPI_TYPE_EXTERNAL_MAX) ||
(!max_depth) || (!max_depth) ||
(!user_function)) { (!user_function)) {
return_ACPI_STATUS (AE_BAD_PARAMETER); return_ACPI_STATUS (AE_BAD_PARAMETER);
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: nsxfobj - Public interfaces to the ACPI subsystem * Module Name: nsxfobj - Public interfaces to the ACPI subsystem
* ACPI Object oriented interfaces * ACPI Object oriented interfaces
* $Revision: 113 $ * $Revision: 114 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -188,7 +188,7 @@ acpi_get_next_object ( ...@@ -188,7 +188,7 @@ acpi_get_next_object (
/* Parameter validation */ /* Parameter validation */
if (type > ACPI_TYPE_MAX) { if (type > ACPI_TYPE_EXTERNAL_MAX) {
return (AE_BAD_PARAMETER); return (AE_BAD_PARAMETER);
} }
......
This diff is collapsed.
/******************************************************************************* /*******************************************************************************
* *
* Module Name: rscalc - Calculate stream and list lengths * Module Name: rscalc - Calculate stream and list lengths
* $Revision: 43 $ * $Revision: 44 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -771,7 +771,7 @@ acpi_rs_get_pci_routing_table_length ( ...@@ -771,7 +771,7 @@ acpi_rs_get_pci_routing_table_length (
for (table_index = 0; table_index < 4 && !name_found; table_index++) { for (table_index = 0; table_index < 4 && !name_found; table_index++) {
if ((ACPI_TYPE_STRING == ACPI_GET_OBJECT_TYPE (*sub_object_list)) || if ((ACPI_TYPE_STRING == ACPI_GET_OBJECT_TYPE (*sub_object_list)) ||
((INTERNAL_TYPE_REFERENCE == ACPI_GET_OBJECT_TYPE (*sub_object_list)) && ((ACPI_TYPE_LOCAL_REFERENCE == ACPI_GET_OBJECT_TYPE (*sub_object_list)) &&
((*sub_object_list)->reference.opcode == AML_INT_NAMEPATH_OP))) { ((*sub_object_list)->reference.opcode == AML_INT_NAMEPATH_OP))) {
name_found = TRUE; name_found = TRUE;
} }
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: rscreate - Create resource lists/tables * Module Name: rscreate - Create resource lists/tables
* $Revision: 58 $ * $Revision: 61 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -66,7 +66,8 @@ acpi_rs_create_resource_list ( ...@@ -66,7 +66,8 @@ acpi_rs_create_resource_list (
ACPI_FUNCTION_TRACE ("Rs_create_resource_list"); ACPI_FUNCTION_TRACE ("Rs_create_resource_list");
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Byte_stream_buffer = %p\n", byte_stream_buffer)); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Byte_stream_buffer = %p\n",
byte_stream_buffer));
/* /*
* Params already validated, so we don't re-validate here * Params already validated, so we don't re-validate here
...@@ -135,13 +136,13 @@ acpi_rs_create_pci_routing_table ( ...@@ -135,13 +136,13 @@ acpi_rs_create_pci_routing_table (
acpi_buffer *output_buffer) acpi_buffer *output_buffer)
{ {
u8 *buffer; u8 *buffer;
acpi_operand_object **top_object_list = NULL; acpi_operand_object **top_object_list;
acpi_operand_object **sub_object_list = NULL; acpi_operand_object **sub_object_list;
acpi_operand_object *package_element = NULL; acpi_operand_object *obj_desc;
ACPI_SIZE buffer_size_needed = 0; ACPI_SIZE buffer_size_needed = 0;
u32 number_of_elements = 0; u32 number_of_elements;
u32 index = 0; u32 index;
acpi_pci_routing_table *user_prt = NULL; acpi_pci_routing_table *user_prt;
acpi_namespace_node *node; acpi_namespace_node *node;
acpi_status status; acpi_status status;
acpi_buffer path_buffer; acpi_buffer path_buffer;
...@@ -161,7 +162,8 @@ acpi_rs_create_pci_routing_table ( ...@@ -161,7 +162,8 @@ acpi_rs_create_pci_routing_table (
return_ACPI_STATUS (status); return_ACPI_STATUS (status);
} }
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Buffer_size_needed = %X\n", (u32) buffer_size_needed)); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Buffer_size_needed = %X\n",
(u32) buffer_size_needed));
/* Validate/Allocate/Clear caller buffer */ /* Validate/Allocate/Clear caller buffer */
...@@ -171,7 +173,8 @@ acpi_rs_create_pci_routing_table ( ...@@ -171,7 +173,8 @@ acpi_rs_create_pci_routing_table (
} }
/* /*
* Loop through the ACPI_INTERNAL_OBJECTS - Each object should contain an * Loop through the ACPI_INTERNAL_OBJECTS - Each object
* should be a package that in turn contains an
* acpi_integer Address, a u8 Pin, a Name and a u8 Source_index. * acpi_integer Address, a u8 Pin, a Name and a u8 Source_index.
*/ */
top_object_list = package_object->package.elements; top_object_list = package_object->package.elements;
...@@ -194,81 +197,98 @@ acpi_rs_create_pci_routing_table ( ...@@ -194,81 +197,98 @@ acpi_rs_create_pci_routing_table (
* The minus four is to subtract the size of the u8 Source[4] member * The minus four is to subtract the size of the u8 Source[4] member
* because it is added below. * because it is added below.
*/ */
user_prt->length = (sizeof (acpi_pci_routing_table) -4); user_prt->length = (sizeof (acpi_pci_routing_table) - 4);
/* /*
* Dereference the sub-package * Each element of the top-level package must also be a package
*/ */
package_element = *top_object_list; if (ACPI_GET_OBJECT_TYPE (*top_object_list) != ACPI_TYPE_PACKAGE) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"(PRT[%X]) Need sub-package, found %s\n",
index, acpi_ut_get_object_type_name (*top_object_list)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
/* Each sub-package must be of length 4 */
if ((*top_object_list)->package.count != 4) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"(PRT[%X]) Need package of length 4, found length %d\n",
index, (*top_object_list)->package.count));
return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT);
}
/* /*
* Dereference the sub-package.
* The Sub_object_list will now point to an array of the four IRQ * The Sub_object_list will now point to an array of the four IRQ
* elements: Address, Pin, Source and Source_index * elements: [Address, Pin, Source, Source_index]
*/ */
sub_object_list = package_element->package.elements; sub_object_list = (*top_object_list)->package.elements;
/* /*
* 1) First subobject: Dereference the Address * 1) First subobject: Dereference the PRT.Address
*/ */
if (ACPI_GET_OBJECT_TYPE (*sub_object_list) == ACPI_TYPE_INTEGER) { obj_desc = sub_object_list[0];
user_prt->address = (*sub_object_list)->integer.value; if (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_INTEGER) {
user_prt->address = obj_desc->integer.value;
} }
else { else {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
acpi_ut_get_object_type_name (*sub_object_list))); "(PRT[%X].Address) Need Integer, found %s\n",
index, acpi_ut_get_object_type_name (obj_desc)));
return_ACPI_STATUS (AE_BAD_DATA); return_ACPI_STATUS (AE_BAD_DATA);
} }
/* /*
* 2) Second subobject: Dereference the Pin * 2) Second subobject: Dereference the PRT.Pin
*/ */
sub_object_list++; obj_desc = sub_object_list[1];
if (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_INTEGER) {
if (ACPI_GET_OBJECT_TYPE (*sub_object_list) == ACPI_TYPE_INTEGER) { user_prt->pin = (u32) obj_desc->integer.value;
user_prt->pin = (u32) (*sub_object_list)->integer.value;
} }
else { else {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
acpi_ut_get_object_type_name (*sub_object_list))); "(PRT[%X].Pin) Need Integer, found %s\n",
index, acpi_ut_get_object_type_name (obj_desc)));
return_ACPI_STATUS (AE_BAD_DATA); return_ACPI_STATUS (AE_BAD_DATA);
} }
/* /*
* 3) Third subobject: Dereference the Source Name * 3) Third subobject: Dereference the PRT.Source_name
*/ */
sub_object_list++; obj_desc = sub_object_list[2];
switch (ACPI_GET_OBJECT_TYPE (obj_desc)) {
switch (ACPI_GET_OBJECT_TYPE (*sub_object_list)) { case ACPI_TYPE_LOCAL_REFERENCE:
case INTERNAL_TYPE_REFERENCE:
if (obj_desc->reference.opcode != AML_INT_NAMEPATH_OP) {
if ((*sub_object_list)->reference.opcode != AML_INT_NAMEPATH_OP) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need name, found reference op %X\n", "(PRT[%X].Source) Need name, found reference op %X\n",
(*sub_object_list)->reference.opcode)); index, obj_desc->reference.opcode));
return_ACPI_STATUS (AE_BAD_DATA); return_ACPI_STATUS (AE_BAD_DATA);
} }
node = (*sub_object_list)->reference.node; node = obj_desc->reference.node;
/* Use *remaining* length of the buffer as max for pathname */ /* Use *remaining* length of the buffer as max for pathname */
path_buffer.length = output_buffer->length - path_buffer.length = output_buffer->length -
(u32) ((u8 *) user_prt->source - (u8 *) output_buffer->pointer); (u32) ((u8 *) user_prt->source -
(u8 *) output_buffer->pointer);
path_buffer.pointer = user_prt->source; path_buffer.pointer = user_prt->source;
status = acpi_ns_handle_to_pathname ((acpi_handle) node, &path_buffer); status = acpi_ns_handle_to_pathname ((acpi_handle) node, &path_buffer);
user_prt->length += ACPI_STRLEN (user_prt->source) + 1; /* include null terminator */ user_prt->length += (u32) ACPI_STRLEN (user_prt->source) + 1; /* include null terminator */
break; break;
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
ACPI_STRCPY (user_prt->source, ACPI_STRCPY (user_prt->source, obj_desc->string.pointer);
(*sub_object_list)->string.pointer);
/* Add to the Length field the length of the string */ /* Add to the Length field the length of the string */
user_prt->length += (*sub_object_list)->string.length; user_prt->length += obj_desc->string.length;
break; break;
...@@ -285,8 +305,9 @@ acpi_rs_create_pci_routing_table ( ...@@ -285,8 +305,9 @@ acpi_rs_create_pci_routing_table (
default: default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
acpi_ut_get_object_type_name (*sub_object_list))); "(PRT[%X].Source) Need Ref/String/Integer, found %s\n",
index, acpi_ut_get_object_type_name (obj_desc)));
return_ACPI_STATUS (AE_BAD_DATA); return_ACPI_STATUS (AE_BAD_DATA);
} }
...@@ -295,20 +316,20 @@ acpi_rs_create_pci_routing_table ( ...@@ -295,20 +316,20 @@ acpi_rs_create_pci_routing_table (
user_prt->length = ACPI_ROUND_UP_TO_64_bITS (user_prt->length); user_prt->length = ACPI_ROUND_UP_TO_64_bITS (user_prt->length);
/* /*
* 4) Fourth subobject: Dereference the Source Index * 4) Fourth subobject: Dereference the PRT.Source_index
*/ */
sub_object_list++; obj_desc = sub_object_list[3];
if (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_INTEGER) {
if (ACPI_GET_OBJECT_TYPE (*sub_object_list) == ACPI_TYPE_INTEGER) { user_prt->source_index = (u32) obj_desc->integer.value;
user_prt->source_index = (u32) (*sub_object_list)->integer.value;
} }
else { else {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
acpi_ut_get_object_type_name (*sub_object_list))); "(PRT[%X].Source_index) Need Integer, found %s\n",
index, acpi_ut_get_object_type_name (obj_desc)));
return_ACPI_STATUS (AE_BAD_DATA); return_ACPI_STATUS (AE_BAD_DATA);
} }
/* Point to the next acpi_operand_object */ /* Point to the next acpi_operand_object in the top level package */
top_object_list++; top_object_list++;
} }
...@@ -349,7 +370,8 @@ acpi_rs_create_byte_stream ( ...@@ -349,7 +370,8 @@ acpi_rs_create_byte_stream (
ACPI_FUNCTION_TRACE ("Rs_create_byte_stream"); ACPI_FUNCTION_TRACE ("Rs_create_byte_stream");
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Linked_list_buffer = %p\n", linked_list_buffer)); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Linked_list_buffer = %p\n",
linked_list_buffer));
/* /*
* Params already validated, so we don't re-validate here * Params already validated, so we don't re-validate here
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: tbconvrt - ACPI Table conversion utilities * Module Name: tbconvrt - ACPI Table conversion utilities
* $Revision: 43 $ * $Revision: 44 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -137,7 +137,6 @@ acpi_tb_convert_to_xsdt ( ...@@ -137,7 +137,6 @@ acpi_tb_convert_to_xsdt (
/* Point the table descriptor to the new table */ /* Point the table descriptor to the new table */
table_info->pointer = (acpi_table_header *) new_table; table_info->pointer = (acpi_table_header *) new_table;
table_info->base_pointer = (acpi_table_header *) new_table;
table_info->length = table_size; table_info->length = table_size;
table_info->allocation = ACPI_MEM_ALLOCATED; table_info->allocation = ACPI_MEM_ALLOCATED;
...@@ -385,7 +384,6 @@ acpi_tb_convert_table_fadt (void) ...@@ -385,7 +384,6 @@ acpi_tb_convert_table_fadt (void)
/* Install the new table */ /* Install the new table */
table_desc->pointer = (acpi_table_header *) acpi_gbl_FADT; table_desc->pointer = (acpi_table_header *) acpi_gbl_FADT;
table_desc->base_pointer = acpi_gbl_FADT;
table_desc->allocation = ACPI_MEM_ALLOCATED; table_desc->allocation = ACPI_MEM_ALLOCATED;
table_desc->length = sizeof (fadt_descriptor_rev2); table_desc->length = sizeof (fadt_descriptor_rev2);
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: tbget - ACPI Table get* routines * Module Name: tbget - ACPI Table get* routines
* $Revision: 80 $ * $Revision: 81 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -386,7 +386,6 @@ acpi_tb_get_this_table ( ...@@ -386,7 +386,6 @@ acpi_tb_get_this_table (
table_info->pointer = full_table; table_info->pointer = full_table;
table_info->length = (ACPI_SIZE) header->length; table_info->length = (ACPI_SIZE) header->length;
table_info->allocation = allocation; table_info->allocation = allocation;
table_info->base_pointer = full_table;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"Found table [%4.4s] at %8.8X%8.8X, mapped/copied to %p\n", "Found table [%4.4s] at %8.8X%8.8X, mapped/copied to %p\n",
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: tbgetall - Get all required ACPI tables * Module Name: tbgetall - Get all required ACPI tables
* $Revision: 2 $ * $Revision: 3 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -218,7 +218,13 @@ acpi_tb_get_required_tables ( ...@@ -218,7 +218,13 @@ acpi_tb_get_required_tables (
* Get the tables needed by this subsystem (FADT and any SSDTs). * Get the tables needed by this subsystem (FADT and any SSDTs).
* NOTE: All other tables are completely ignored at this time. * NOTE: All other tables are completely ignored at this time.
*/ */
acpi_tb_get_primary_table (&address, &table_info); status = acpi_tb_get_primary_table (&address, &table_info);
if ((status != AE_OK) && (status != AE_TABLE_NOT_SUPPORTED)) {
ACPI_REPORT_WARNING (("%s, while getting table at %8.8X%8.8X\n",
acpi_format_exception (status),
ACPI_HIDWORD (address.pointer.value),
ACPI_LODWORD (address.pointer.value)));
}
} }
/* We must have a FADT to continue */ /* We must have a FADT to continue */
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: tbinstal - ACPI table installation and removal * Module Name: tbinstal - ACPI table installation and removal
* $Revision: 63 $ * $Revision: 64 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -286,7 +286,6 @@ acpi_tb_init_table_descriptor ( ...@@ -286,7 +286,6 @@ acpi_tb_init_table_descriptor (
table_desc->type = table_info->type; table_desc->type = table_info->type;
table_desc->pointer = table_info->pointer; table_desc->pointer = table_info->pointer;
table_desc->base_pointer = table_info->base_pointer;
table_desc->length = table_info->length; table_desc->length = table_info->length;
table_desc->allocation = table_info->allocation; table_desc->allocation = table_info->allocation;
table_desc->aml_start = (u8 *) (table_desc->pointer + 1), table_desc->aml_start = (u8 *) (table_desc->pointer + 1),
...@@ -480,12 +479,12 @@ acpi_tb_delete_single_table ( ...@@ -480,12 +479,12 @@ acpi_tb_delete_single_table (
case ACPI_MEM_ALLOCATED: case ACPI_MEM_ALLOCATED:
ACPI_MEM_FREE (table_desc->base_pointer); ACPI_MEM_FREE (table_desc->pointer);
break; break;
case ACPI_MEM_MAPPED: case ACPI_MEM_MAPPED:
acpi_os_unmap_memory (table_desc->base_pointer, table_desc->length); acpi_os_unmap_memory (table_desc->pointer, table_desc->length);
break; break;
default: default:
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: tbrsdt - ACPI RSDT table utilities * Module Name: tbrsdt - ACPI RSDT table utilities
* $Revision: 3 $ * $Revision: 4 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -108,7 +108,6 @@ acpi_tb_verify_rsdp ( ...@@ -108,7 +108,6 @@ acpi_tb_verify_rsdp (
table_info.pointer = ACPI_CAST_PTR (acpi_table_header, rsdp); table_info.pointer = ACPI_CAST_PTR (acpi_table_header, rsdp);
table_info.length = sizeof (RSDP_DESCRIPTOR); table_info.length = sizeof (RSDP_DESCRIPTOR);
table_info.allocation = ACPI_MEM_MAPPED; table_info.allocation = ACPI_MEM_MAPPED;
table_info.base_pointer = rsdp;
/* Save the table pointers and allocation info */ /* Save the table pointers and allocation info */
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: utcopy - Internal to external object translation utilities * Module Name: utcopy - Internal to external object translation utilities
* $Revision: 104 $ * $Revision: 105 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -113,7 +113,7 @@ acpi_ut_copy_isimple_to_esimple ( ...@@ -113,7 +113,7 @@ acpi_ut_copy_isimple_to_esimple (
break; break;
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
/* /*
* This is an object reference. Attempt to dereference it. * This is an object reference. Attempt to dereference it.
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: utdelete - object deletion and reference count utilities * Module Name: utdelete - object deletion and reference count utilities
* $Revision: 91 $ * $Revision: 92 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -417,7 +417,7 @@ acpi_ut_update_object_reference ( ...@@ -417,7 +417,7 @@ acpi_ut_update_object_reference (
break; break;
case INTERNAL_TYPE_ADDRESS_HANDLER: case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
/* Must walk list of address handlers */ /* Must walk list of address handlers */
...@@ -462,7 +462,7 @@ acpi_ut_update_object_reference ( ...@@ -462,7 +462,7 @@ acpi_ut_update_object_reference (
break; break;
case INTERNAL_TYPE_REGION_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD:
status = acpi_ut_create_update_state_and_push ( status = acpi_ut_create_update_state_and_push (
object->field.region_obj, action, &state_list); object->field.region_obj, action, &state_list);
...@@ -472,7 +472,7 @@ acpi_ut_update_object_reference ( ...@@ -472,7 +472,7 @@ acpi_ut_update_object_reference (
break; break;
case INTERNAL_TYPE_BANK_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD:
status = acpi_ut_create_update_state_and_push ( status = acpi_ut_create_update_state_and_push (
object->bank_field.bank_obj, action, &state_list); object->bank_field.bank_obj, action, &state_list);
...@@ -488,7 +488,7 @@ acpi_ut_update_object_reference ( ...@@ -488,7 +488,7 @@ acpi_ut_update_object_reference (
break; break;
case INTERNAL_TYPE_INDEX_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD:
status = acpi_ut_create_update_state_and_push ( status = acpi_ut_create_update_state_and_push (
object->index_field.index_obj, action, &state_list); object->index_field.index_obj, action, &state_list);
...@@ -505,7 +505,7 @@ acpi_ut_update_object_reference ( ...@@ -505,7 +505,7 @@ acpi_ut_update_object_reference (
case ACPI_TYPE_REGION: case ACPI_TYPE_REGION:
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
default: default:
/* No subobjects */ /* No subobjects */
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: utglobal - Global variables for the ACPI subsystem * Module Name: utglobal - Global variables for the ACPI subsystem
* $Revision: 171 $ * $Revision: 172 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -176,11 +176,11 @@ const NATIVE_CHAR *acpi_gbl_db_sleep_states[ACPI_NUM_SLEEP_STATES] = { ...@@ -176,11 +176,11 @@ const NATIVE_CHAR *acpi_gbl_db_sleep_states[ACPI_NUM_SLEEP_STATES] = {
*/ */
const acpi_predefined_names acpi_gbl_pre_defined_names[] = const acpi_predefined_names acpi_gbl_pre_defined_names[] =
{ {"_GPE", INTERNAL_TYPE_SCOPE, NULL}, { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_PR_", INTERNAL_TYPE_SCOPE, NULL}, {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_SB_", ACPI_TYPE_DEVICE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL},
{"_SI_", INTERNAL_TYPE_SCOPE, NULL}, {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_TZ_", INTERNAL_TYPE_SCOPE, NULL}, {"_TZ_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_REV", ACPI_TYPE_INTEGER, "2"}, {"_REV", ACPI_TYPE_INTEGER, "2"},
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
{"_GL_", ACPI_TYPE_MUTEX, "0"}, {"_GL_", ACPI_TYPE_MUTEX, "0"},
...@@ -225,17 +225,10 @@ const u8 acpi_gbl_ns_properties[] = ...@@ -225,17 +225,10 @@ const u8 acpi_gbl_ns_properties[] =
ACPI_NS_NORMAL, /* 23 Address Handler */ ACPI_NS_NORMAL, /* 23 Address Handler */
ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 24 Resource Desc */ ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 24 Resource Desc */
ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Field */ ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Field */
ACPI_NS_NORMAL, /* 26 Def_field_defn */ ACPI_NS_NEWSCOPE, /* 26 Scope */
ACPI_NS_NORMAL, /* 27 Bank_field_defn */ ACPI_NS_NORMAL, /* 27 Extra */
ACPI_NS_NORMAL, /* 28 Index_field_defn */ ACPI_NS_NORMAL, /* 28 Data */
ACPI_NS_NORMAL, /* 29 If */ ACPI_NS_NORMAL /* 29 Invalid */
ACPI_NS_NORMAL, /* 30 Else */
ACPI_NS_NORMAL, /* 31 While */
ACPI_NS_NEWSCOPE, /* 32 Scope */
ACPI_NS_LOCAL, /* 33 Def_any */
ACPI_NS_NORMAL, /* 34 Extra */
ACPI_NS_NORMAL, /* 35 Data */
ACPI_NS_NORMAL /* 36 Invalid */
}; };
...@@ -481,17 +474,10 @@ static const NATIVE_CHAR *acpi_gbl_ns_type_names[] = /* printable names of AC ...@@ -481,17 +474,10 @@ static const NATIVE_CHAR *acpi_gbl_ns_type_names[] = /* printable names of AC
/* 23 */ "Addr_handler", /* 23 */ "Addr_handler",
/* 24 */ "Resource_desc", /* 24 */ "Resource_desc",
/* 25 */ "Resource_fld", /* 25 */ "Resource_fld",
/* 26 */ "Region_fld_dfn", /* 26 */ "Scope",
/* 27 */ "Bank_fld_dfn", /* 27 */ "Extra",
/* 28 */ "Index_fld_dfn", /* 28 */ "Data",
/* 29 */ "If", /* 39 */ "Invalid"
/* 30 */ "Else",
/* 31 */ "While",
/* 32 */ "Scope",
/* 33 */ "Def_any",
/* 34 */ "Extra",
/* 35 */ "Data",
/* 36 */ "Invalid"
}; };
...@@ -500,7 +486,7 @@ acpi_ut_get_type_name ( ...@@ -500,7 +486,7 @@ acpi_ut_get_type_name (
acpi_object_type type) acpi_object_type type)
{ {
if (type > INTERNAL_TYPE_INVALID) if (type > ACPI_TYPE_INVALID)
{ {
return ((NATIVE_CHAR *) acpi_gbl_bad_type); return ((NATIVE_CHAR *) acpi_gbl_bad_type);
} }
...@@ -563,7 +549,7 @@ acpi_ut_get_mutex_name ( ...@@ -563,7 +549,7 @@ acpi_ut_get_mutex_name (
* *
* FUNCTION: Acpi_ut_valid_object_type * FUNCTION: Acpi_ut_valid_object_type
* *
* PARAMETERS: None. * PARAMETERS: Type - Object type to be validated
* *
* RETURN: TRUE if valid object type * RETURN: TRUE if valid object type
* *
...@@ -576,13 +562,11 @@ acpi_ut_valid_object_type ( ...@@ -576,13 +562,11 @@ acpi_ut_valid_object_type (
acpi_object_type type) acpi_object_type type)
{ {
if (type > ACPI_TYPE_MAX) if (type > ACPI_TYPE_LOCAL_MAX)
{ {
if ((type < INTERNAL_TYPE_BEGIN) || /* Note: Assumes all TYPEs are contiguous (external/local) */
(type > INTERNAL_TYPE_MAX))
{ return (FALSE);
return (FALSE);
}
} }
return (TRUE); return (TRUE);
...@@ -767,7 +751,7 @@ acpi_ut_init_globals ( ...@@ -767,7 +751,7 @@ acpi_ut_init_globals (
acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME; acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;
acpi_gbl_root_node_struct.descriptor = ACPI_DESC_TYPE_NAMED; acpi_gbl_root_node_struct.descriptor = ACPI_DESC_TYPE_NAMED;
acpi_gbl_root_node_struct.type = ACPI_TYPE_ANY; acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE;
acpi_gbl_root_node_struct.child = NULL; acpi_gbl_root_node_struct.child = NULL;
acpi_gbl_root_node_struct.peer = NULL; acpi_gbl_root_node_struct.peer = NULL;
acpi_gbl_root_node_struct.object = NULL; acpi_gbl_root_node_struct.object = NULL;
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: utmisc - common utility procedures * Module Name: utmisc - common utility procedures
* $Revision: 84 $ * $Revision: 85 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -32,6 +32,98 @@ ...@@ -32,6 +32,98 @@
ACPI_MODULE_NAME ("utmisc") ACPI_MODULE_NAME ("utmisc")
/*******************************************************************************
*
* FUNCTION: Acpi_ut_print_string
*
* PARAMETERS: String - Null terminated ASCII string
*
* RETURN: None
*
* DESCRIPTION: Dump an ASCII string with support for ACPI-defined escape
* sequences.
*
******************************************************************************/
void
acpi_ut_print_string (
char *string,
u8 max_length)
{
u32 i;
if (!string) {
acpi_os_printf ("<\"NULL STRING PTR\">");
return;
}
acpi_os_printf ("\"");
for (i = 0; string[i] && (i < max_length); i++) {
/* Escape sequences */
switch (string[i]) {
case 0x07:
acpi_os_printf ("\\a"); /* BELL */
break;
case 0x08:
acpi_os_printf ("\\b"); /* BACKSPACE */
break;
case 0x0C:
acpi_os_printf ("\\f"); /* FORMFEED */
break;
case 0x0A:
acpi_os_printf ("\\n"); /* LINEFEED */
break;
case 0x0D:
acpi_os_printf ("\\r"); /* CARRIAGE RETURN*/
break;
case 0x09:
acpi_os_printf ("\\t"); /* HORIZONTAL TAB */
break;
case 0x0B:
acpi_os_printf ("\\v"); /* VERTICAL TAB */
break;
case '\'': /* Single Quote */
case '\"': /* Double Quote */
case '\\': /* Backslash */
acpi_os_printf ("\\%c", (int) string[i]);
break;
default:
/* Check for printable character or hex escape */
if (ACPI_IS_PRINT (string[i]))
{
/* This is a normal character */
acpi_os_printf ("%c", (int) string[i]);
}
else
{
/* All others will be Hex escapes */
acpi_os_printf ("\\x%2.2X", (s32) string[i]);
}
break;
}
}
acpi_os_printf ("\"");
if (i == max_length && string[i]) {
acpi_os_printf ("...");
}
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: Acpi_ut_dword_byte_swap * FUNCTION: Acpi_ut_dword_byte_swap
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: utobject - ACPI object create/delete/size/cache routines * Module Name: utobject - ACPI object create/delete/size/cache routines
* $Revision: 76 $ * $Revision: 77 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -87,7 +87,7 @@ acpi_ut_create_internal_object_dbg ( ...@@ -87,7 +87,7 @@ acpi_ut_create_internal_object_dbg (
return_PTR (NULL); return_PTR (NULL);
} }
second_object->common.type = INTERNAL_TYPE_EXTRA; second_object->common.type = ACPI_TYPE_LOCAL_EXTRA;
second_object->common.reference_count = 1; second_object->common.reference_count = 1;
/* Link the second object to the first */ /* Link the second object to the first */
...@@ -352,7 +352,7 @@ acpi_ut_get_simple_object_size ( ...@@ -352,7 +352,7 @@ acpi_ut_get_simple_object_size (
break; break;
case INTERNAL_TYPE_REFERENCE: case ACPI_TYPE_LOCAL_REFERENCE:
switch (internal_object->reference.opcode) { switch (internal_object->reference.opcode) {
case AML_INT_NAMEPATH_OP: case AML_INT_NAMEPATH_OP:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment