[ACPI] Lindent all ACPI files
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
@@ -41,25 +41,20 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
#include <acpi/amlcode.h>
|
||||
#include <acpi/acnamesp.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psargs")
|
||||
ACPI_MODULE_NAME("psargs")
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
static u32
|
||||
acpi_ps_get_next_package_length (
|
||||
struct acpi_parse_state *parser_state);
|
||||
|
||||
static union acpi_parse_object *
|
||||
acpi_ps_get_next_field (
|
||||
struct acpi_parse_state *parser_state);
|
||||
acpi_ps_get_next_package_length(struct acpi_parse_state *parser_state);
|
||||
|
||||
static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
|
||||
*parser_state);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -75,49 +70,43 @@ acpi_ps_get_next_field (
|
||||
******************************************************************************/
|
||||
|
||||
static u32
|
||||
acpi_ps_get_next_package_length (
|
||||
struct acpi_parse_state *parser_state)
|
||||
acpi_ps_get_next_package_length(struct acpi_parse_state *parser_state)
|
||||
{
|
||||
u32 encoded_length;
|
||||
u32 length = 0;
|
||||
u32 encoded_length;
|
||||
u32 length = 0;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_get_next_package_length");
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_get_next_package_length");
|
||||
|
||||
|
||||
encoded_length = (u32) ACPI_GET8 (parser_state->aml);
|
||||
encoded_length = (u32) ACPI_GET8(parser_state->aml);
|
||||
parser_state->aml++;
|
||||
|
||||
switch (encoded_length >> 6) /* bits 6-7 contain encoding scheme */ {
|
||||
case 0: /* 1-byte encoding (bits 0-5) */
|
||||
switch (encoded_length >> 6) { /* bits 6-7 contain encoding scheme */
|
||||
case 0: /* 1-byte encoding (bits 0-5) */
|
||||
|
||||
length = (encoded_length & 0x3F);
|
||||
break;
|
||||
|
||||
case 1: /* 2-byte encoding (next byte + bits 0-3) */
|
||||
|
||||
case 1: /* 2-byte encoding (next byte + bits 0-3) */
|
||||
|
||||
length = ((ACPI_GET8 (parser_state->aml) << 04) |
|
||||
(encoded_length & 0x0F));
|
||||
length = ((ACPI_GET8(parser_state->aml) << 04) |
|
||||
(encoded_length & 0x0F));
|
||||
parser_state->aml++;
|
||||
break;
|
||||
|
||||
case 2: /* 3-byte encoding (next 2 bytes + bits 0-3) */
|
||||
|
||||
case 2: /* 3-byte encoding (next 2 bytes + bits 0-3) */
|
||||
|
||||
length = ((ACPI_GET8 (parser_state->aml + 1) << 12) |
|
||||
(ACPI_GET8 (parser_state->aml) << 04) |
|
||||
(encoded_length & 0x0F));
|
||||
length = ((ACPI_GET8(parser_state->aml + 1) << 12) |
|
||||
(ACPI_GET8(parser_state->aml) << 04) |
|
||||
(encoded_length & 0x0F));
|
||||
parser_state->aml += 2;
|
||||
break;
|
||||
|
||||
case 3: /* 4-byte encoding (next 3 bytes + bits 0-3) */
|
||||
|
||||
case 3: /* 4-byte encoding (next 3 bytes + bits 0-3) */
|
||||
|
||||
length = ((ACPI_GET8 (parser_state->aml + 2) << 20) |
|
||||
(ACPI_GET8 (parser_state->aml + 1) << 12) |
|
||||
(ACPI_GET8 (parser_state->aml) << 04) |
|
||||
(encoded_length & 0x0F));
|
||||
length = ((ACPI_GET8(parser_state->aml + 2) << 20) |
|
||||
(ACPI_GET8(parser_state->aml + 1) << 12) |
|
||||
(ACPI_GET8(parser_state->aml) << 04) |
|
||||
(encoded_length & 0x0F));
|
||||
parser_state->aml += 3;
|
||||
break;
|
||||
|
||||
@@ -127,10 +116,9 @@ acpi_ps_get_next_package_length (
|
||||
break;
|
||||
}
|
||||
|
||||
return_VALUE (length);
|
||||
return_VALUE(length);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_package_end
|
||||
@@ -144,25 +132,21 @@ acpi_ps_get_next_package_length (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
u8 *
|
||||
acpi_ps_get_next_package_end (
|
||||
struct acpi_parse_state *parser_state)
|
||||
u8 *acpi_ps_get_next_package_end(struct acpi_parse_state *parser_state)
|
||||
{
|
||||
u8 *start = parser_state->aml;
|
||||
acpi_native_uint length;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_get_next_package_end");
|
||||
u8 *start = parser_state->aml;
|
||||
acpi_native_uint length;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_get_next_package_end");
|
||||
|
||||
/* Function below changes parser_state->Aml */
|
||||
|
||||
length = (acpi_native_uint) acpi_ps_get_next_package_length (parser_state);
|
||||
length =
|
||||
(acpi_native_uint) acpi_ps_get_next_package_length(parser_state);
|
||||
|
||||
return_PTR (start + length); /* end of package */
|
||||
return_PTR(start + length); /* end of package */
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_namestring
|
||||
@@ -178,20 +162,16 @@ acpi_ps_get_next_package_end (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
char *
|
||||
acpi_ps_get_next_namestring (
|
||||
struct acpi_parse_state *parser_state)
|
||||
char *acpi_ps_get_next_namestring(struct acpi_parse_state *parser_state)
|
||||
{
|
||||
u8 *start = parser_state->aml;
|
||||
u8 *end = parser_state->aml;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_get_next_namestring");
|
||||
u8 *start = parser_state->aml;
|
||||
u8 *end = parser_state->aml;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_get_next_namestring");
|
||||
|
||||
/* Handle multiple prefix characters */
|
||||
|
||||
while (acpi_ps_is_prefix_char (ACPI_GET8 (end))) {
|
||||
while (acpi_ps_is_prefix_char(ACPI_GET8(end))) {
|
||||
/* Include prefix '\\' or '^' */
|
||||
|
||||
end++;
|
||||
@@ -199,7 +179,7 @@ acpi_ps_get_next_namestring (
|
||||
|
||||
/* Decode the path */
|
||||
|
||||
switch (ACPI_GET8 (end)) {
|
||||
switch (ACPI_GET8(end)) {
|
||||
case 0:
|
||||
|
||||
/* null_name */
|
||||
@@ -221,7 +201,7 @@ acpi_ps_get_next_namestring (
|
||||
|
||||
/* Multiple name segments, 4 chars each */
|
||||
|
||||
end += 2 + ((acpi_size) ACPI_GET8 (end + 1) * ACPI_NAME_SIZE);
|
||||
end += 2 + ((acpi_size) ACPI_GET8(end + 1) * ACPI_NAME_SIZE);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -232,11 +212,10 @@ acpi_ps_get_next_namestring (
|
||||
break;
|
||||
}
|
||||
|
||||
parser_state->aml = (u8*) end;
|
||||
return_PTR ((char *) start);
|
||||
parser_state->aml = (u8 *) end;
|
||||
return_PTR((char *)start);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_namepath
|
||||
@@ -259,24 +238,20 @@ acpi_ps_get_next_namestring (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_get_next_namepath (
|
||||
struct acpi_walk_state *walk_state,
|
||||
struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object *arg,
|
||||
u8 method_call)
|
||||
acpi_ps_get_next_namepath(struct acpi_walk_state *walk_state,
|
||||
struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object *arg, u8 method_call)
|
||||
{
|
||||
char *path;
|
||||
union acpi_parse_object *name_op;
|
||||
acpi_status status = AE_OK;
|
||||
union acpi_operand_object *method_desc;
|
||||
struct acpi_namespace_node *node;
|
||||
union acpi_generic_state scope_info;
|
||||
char *path;
|
||||
union acpi_parse_object *name_op;
|
||||
acpi_status status = AE_OK;
|
||||
union acpi_operand_object *method_desc;
|
||||
struct acpi_namespace_node *node;
|
||||
union acpi_generic_state scope_info;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_get_next_namepath");
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_get_next_namepath");
|
||||
|
||||
|
||||
path = acpi_ps_get_next_namestring (parser_state);
|
||||
path = acpi_ps_get_next_namestring(parser_state);
|
||||
|
||||
/* Null path case is allowed */
|
||||
|
||||
@@ -296,49 +271,50 @@ acpi_ps_get_next_namepath (
|
||||
* parent tree, but don't open a new scope -- we just want to lookup the
|
||||
* object (MUST BE mode EXECUTE to perform upsearch)
|
||||
*/
|
||||
status = acpi_ns_lookup (&scope_info, path, ACPI_TYPE_ANY,
|
||||
ACPI_IMODE_EXECUTE,
|
||||
ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE,
|
||||
NULL, &node);
|
||||
if (ACPI_SUCCESS (status) && method_call) {
|
||||
status = acpi_ns_lookup(&scope_info, path, ACPI_TYPE_ANY,
|
||||
ACPI_IMODE_EXECUTE,
|
||||
ACPI_NS_SEARCH_PARENT |
|
||||
ACPI_NS_DONT_OPEN_SCOPE, NULL, &node);
|
||||
if (ACPI_SUCCESS(status) && method_call) {
|
||||
if (node->type == ACPI_TYPE_METHOD) {
|
||||
/* This name is actually a control method invocation */
|
||||
|
||||
method_desc = acpi_ns_get_attached_object (node);
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Control Method - %p Desc %p Path=%p\n",
|
||||
node, method_desc, path));
|
||||
method_desc = acpi_ns_get_attached_object(node);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Control Method - %p Desc %p Path=%p\n",
|
||||
node, method_desc, path));
|
||||
|
||||
name_op = acpi_ps_alloc_op (AML_INT_NAMEPATH_OP);
|
||||
name_op = acpi_ps_alloc_op(AML_INT_NAMEPATH_OP);
|
||||
if (!name_op) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Change arg into a METHOD CALL and attach name to it */
|
||||
|
||||
acpi_ps_init_op (arg, AML_INT_METHODCALL_OP);
|
||||
acpi_ps_init_op(arg, AML_INT_METHODCALL_OP);
|
||||
name_op->common.value.name = path;
|
||||
|
||||
/* Point METHODCALL/NAME to the METHOD Node */
|
||||
|
||||
name_op->common.node = node;
|
||||
acpi_ps_append_arg (arg, name_op);
|
||||
acpi_ps_append_arg(arg, name_op);
|
||||
|
||||
if (!method_desc) {
|
||||
ACPI_REPORT_ERROR ((
|
||||
"ps_get_next_namepath: Control Method %p has no attached object\n",
|
||||
node));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
ACPI_REPORT_ERROR(("ps_get_next_namepath: Control Method %p has no attached object\n", node));
|
||||
return_ACPI_STATUS(AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Control Method - %p Args %X\n",
|
||||
node, method_desc->method.param_count));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Control Method - %p Args %X\n",
|
||||
node,
|
||||
method_desc->method.
|
||||
param_count));
|
||||
|
||||
/* Get the number of arguments to expect */
|
||||
|
||||
walk_state->arg_count = method_desc->method.param_count;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
walk_state->arg_count =
|
||||
method_desc->method.param_count;
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -348,25 +324,26 @@ acpi_ps_get_next_namepath (
|
||||
*/
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (status)) {
|
||||
if (ACPI_FAILURE(status)) {
|
||||
/*
|
||||
* 1) Any error other than NOT_FOUND is always severe
|
||||
* 2) NOT_FOUND is only important if we are executing a method.
|
||||
* 3) If executing a cond_ref_of opcode, NOT_FOUND is ok.
|
||||
*/
|
||||
if ((((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) &&
|
||||
(status == AE_NOT_FOUND) &&
|
||||
(walk_state->op->common.aml_opcode != AML_COND_REF_OF_OP)) ||
|
||||
if ((((walk_state->
|
||||
parse_flags & ACPI_PARSE_MODE_MASK) ==
|
||||
ACPI_PARSE_EXECUTE) && (status == AE_NOT_FOUND)
|
||||
&& (walk_state->op->common.aml_opcode !=
|
||||
AML_COND_REF_OF_OP))
|
||||
|| (status != AE_NOT_FOUND)) {
|
||||
ACPI_REPORT_NSERROR(path, status);
|
||||
|
||||
(status != AE_NOT_FOUND)) {
|
||||
ACPI_REPORT_NSERROR (path, status);
|
||||
acpi_os_printf
|
||||
("search_node %p start_node %p return_node %p\n",
|
||||
scope_info.scope.node,
|
||||
parser_state->start_node, node);
|
||||
|
||||
acpi_os_printf ("search_node %p start_node %p return_node %p\n",
|
||||
scope_info.scope.node, parser_state->start_node, node);
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/*
|
||||
* We got a NOT_FOUND during table load or we encountered
|
||||
* a cond_ref_of(x) where the target does not exist.
|
||||
@@ -381,13 +358,12 @@ acpi_ps_get_next_namepath (
|
||||
* Regardless of success/failure above,
|
||||
* Just initialize the Op with the pathname.
|
||||
*/
|
||||
acpi_ps_init_op (arg, AML_INT_NAMEPATH_OP);
|
||||
acpi_ps_init_op(arg, AML_INT_NAMEPATH_OP);
|
||||
arg->common.value.name = path;
|
||||
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_simple_arg
|
||||
@@ -403,87 +379,81 @@ acpi_ps_get_next_namepath (
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_get_next_simple_arg (
|
||||
struct acpi_parse_state *parser_state,
|
||||
u32 arg_type,
|
||||
union acpi_parse_object *arg)
|
||||
acpi_ps_get_next_simple_arg(struct acpi_parse_state *parser_state,
|
||||
u32 arg_type, union acpi_parse_object *arg)
|
||||
{
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32 ("ps_get_next_simple_arg", arg_type);
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32("ps_get_next_simple_arg", arg_type);
|
||||
|
||||
switch (arg_type) {
|
||||
case ARGP_BYTEDATA:
|
||||
|
||||
acpi_ps_init_op (arg, AML_BYTE_OP);
|
||||
arg->common.value.integer = (u32) ACPI_GET8 (parser_state->aml);
|
||||
acpi_ps_init_op(arg, AML_BYTE_OP);
|
||||
arg->common.value.integer = (u32) ACPI_GET8(parser_state->aml);
|
||||
parser_state->aml++;
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_WORDDATA:
|
||||
|
||||
acpi_ps_init_op (arg, AML_WORD_OP);
|
||||
acpi_ps_init_op(arg, AML_WORD_OP);
|
||||
|
||||
/* Get 2 bytes from the AML stream */
|
||||
|
||||
ACPI_MOVE_16_TO_32 (&arg->common.value.integer, parser_state->aml);
|
||||
ACPI_MOVE_16_TO_32(&arg->common.value.integer,
|
||||
parser_state->aml);
|
||||
parser_state->aml += 2;
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_DWORDDATA:
|
||||
|
||||
acpi_ps_init_op (arg, AML_DWORD_OP);
|
||||
acpi_ps_init_op(arg, AML_DWORD_OP);
|
||||
|
||||
/* Get 4 bytes from the AML stream */
|
||||
|
||||
ACPI_MOVE_32_TO_32 (&arg->common.value.integer, parser_state->aml);
|
||||
ACPI_MOVE_32_TO_32(&arg->common.value.integer,
|
||||
parser_state->aml);
|
||||
parser_state->aml += 4;
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_QWORDDATA:
|
||||
|
||||
acpi_ps_init_op (arg, AML_QWORD_OP);
|
||||
acpi_ps_init_op(arg, AML_QWORD_OP);
|
||||
|
||||
/* Get 8 bytes from the AML stream */
|
||||
|
||||
ACPI_MOVE_64_TO_64 (&arg->common.value.integer, parser_state->aml);
|
||||
ACPI_MOVE_64_TO_64(&arg->common.value.integer,
|
||||
parser_state->aml);
|
||||
parser_state->aml += 8;
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_CHARLIST:
|
||||
|
||||
acpi_ps_init_op (arg, AML_STRING_OP);
|
||||
arg->common.value.string = (char *) parser_state->aml;
|
||||
acpi_ps_init_op(arg, AML_STRING_OP);
|
||||
arg->common.value.string = (char *)parser_state->aml;
|
||||
|
||||
while (ACPI_GET8 (parser_state->aml) != '\0') {
|
||||
while (ACPI_GET8(parser_state->aml) != '\0') {
|
||||
parser_state->aml++;
|
||||
}
|
||||
parser_state->aml++;
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_NAME:
|
||||
case ARGP_NAMESTRING:
|
||||
|
||||
acpi_ps_init_op (arg, AML_INT_NAMEPATH_OP);
|
||||
arg->common.value.name = acpi_ps_get_next_namestring (parser_state);
|
||||
acpi_ps_init_op(arg, AML_INT_NAMEPATH_OP);
|
||||
arg->common.value.name =
|
||||
acpi_ps_get_next_namestring(parser_state);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_REPORT_ERROR (("Invalid arg_type %X\n", arg_type));
|
||||
ACPI_REPORT_ERROR(("Invalid arg_type %X\n", arg_type));
|
||||
break;
|
||||
}
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_field
|
||||
@@ -496,24 +466,21 @@ acpi_ps_get_next_simple_arg (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static union acpi_parse_object *
|
||||
acpi_ps_get_next_field (
|
||||
struct acpi_parse_state *parser_state)
|
||||
static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
|
||||
*parser_state)
|
||||
{
|
||||
u32 aml_offset = (u32)
|
||||
ACPI_PTR_DIFF (parser_state->aml,
|
||||
parser_state->aml_start);
|
||||
union acpi_parse_object *field;
|
||||
u16 opcode;
|
||||
u32 name;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_get_next_field");
|
||||
u32 aml_offset = (u32)
|
||||
ACPI_PTR_DIFF(parser_state->aml,
|
||||
parser_state->aml_start);
|
||||
union acpi_parse_object *field;
|
||||
u16 opcode;
|
||||
u32 name;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_get_next_field");
|
||||
|
||||
/* Determine field type */
|
||||
|
||||
switch (ACPI_GET8 (parser_state->aml)) {
|
||||
switch (ACPI_GET8(parser_state->aml)) {
|
||||
default:
|
||||
|
||||
opcode = AML_INT_NAMEDFIELD_OP;
|
||||
@@ -534,9 +501,9 @@ acpi_ps_get_next_field (
|
||||
|
||||
/* Allocate a new field op */
|
||||
|
||||
field = acpi_ps_alloc_op (opcode);
|
||||
field = acpi_ps_alloc_op(opcode);
|
||||
if (!field) {
|
||||
return_PTR (NULL);
|
||||
return_PTR(NULL);
|
||||
}
|
||||
|
||||
field->common.aml_offset = aml_offset;
|
||||
@@ -548,33 +515,34 @@ acpi_ps_get_next_field (
|
||||
|
||||
/* Get the 4-character name */
|
||||
|
||||
ACPI_MOVE_32_TO_32 (&name, parser_state->aml);
|
||||
acpi_ps_set_name (field, name);
|
||||
ACPI_MOVE_32_TO_32(&name, parser_state->aml);
|
||||
acpi_ps_set_name(field, name);
|
||||
parser_state->aml += ACPI_NAME_SIZE;
|
||||
|
||||
/* Get the length which is encoded as a package length */
|
||||
|
||||
field->common.value.size = acpi_ps_get_next_package_length (parser_state);
|
||||
field->common.value.size =
|
||||
acpi_ps_get_next_package_length(parser_state);
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_RESERVEDFIELD_OP:
|
||||
|
||||
/* Get the length which is encoded as a package length */
|
||||
|
||||
field->common.value.size = acpi_ps_get_next_package_length (parser_state);
|
||||
field->common.value.size =
|
||||
acpi_ps_get_next_package_length(parser_state);
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_ACCESSFIELD_OP:
|
||||
|
||||
/*
|
||||
* Get access_type and access_attrib and merge into the field Op
|
||||
* access_type is first operand, access_attribute is second
|
||||
*/
|
||||
field->common.value.integer = (ACPI_GET8 (parser_state->aml) << 8);
|
||||
field->common.value.integer =
|
||||
(ACPI_GET8(parser_state->aml) << 8);
|
||||
parser_state->aml++;
|
||||
field->common.value.integer |= ACPI_GET8 (parser_state->aml);
|
||||
field->common.value.integer |= ACPI_GET8(parser_state->aml);
|
||||
parser_state->aml++;
|
||||
break;
|
||||
|
||||
@@ -584,10 +552,9 @@ acpi_ps_get_next_field (
|
||||
break;
|
||||
}
|
||||
|
||||
return_PTR (field);
|
||||
return_PTR(field);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_arg
|
||||
@@ -605,21 +572,17 @@ acpi_ps_get_next_field (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_get_next_arg (
|
||||
struct acpi_walk_state *walk_state,
|
||||
struct acpi_parse_state *parser_state,
|
||||
u32 arg_type,
|
||||
union acpi_parse_object **return_arg)
|
||||
acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
|
||||
struct acpi_parse_state *parser_state,
|
||||
u32 arg_type, union acpi_parse_object **return_arg)
|
||||
{
|
||||
union acpi_parse_object *arg = NULL;
|
||||
union acpi_parse_object *prev = NULL;
|
||||
union acpi_parse_object *field;
|
||||
u32 subop;
|
||||
acpi_status status = AE_OK;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_get_next_arg", parser_state);
|
||||
union acpi_parse_object *arg = NULL;
|
||||
union acpi_parse_object *prev = NULL;
|
||||
union acpi_parse_object *field;
|
||||
u32 subop;
|
||||
acpi_status status = AE_OK;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_get_next_arg", parser_state);
|
||||
|
||||
switch (arg_type) {
|
||||
case ARGP_BYTEDATA:
|
||||
@@ -631,37 +594,35 @@ acpi_ps_get_next_arg (
|
||||
|
||||
/* Constants, strings, and namestrings are all the same size */
|
||||
|
||||
arg = acpi_ps_alloc_op (AML_BYTE_OP);
|
||||
arg = acpi_ps_alloc_op(AML_BYTE_OP);
|
||||
if (!arg) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
acpi_ps_get_next_simple_arg (parser_state, arg_type, arg);
|
||||
acpi_ps_get_next_simple_arg(parser_state, arg_type, arg);
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_PKGLENGTH:
|
||||
|
||||
/* Package length, nothing returned */
|
||||
|
||||
parser_state->pkg_end = acpi_ps_get_next_package_end (parser_state);
|
||||
parser_state->pkg_end =
|
||||
acpi_ps_get_next_package_end(parser_state);
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_FIELDLIST:
|
||||
|
||||
if (parser_state->aml < parser_state->pkg_end) {
|
||||
/* Non-empty list */
|
||||
|
||||
while (parser_state->aml < parser_state->pkg_end) {
|
||||
field = acpi_ps_get_next_field (parser_state);
|
||||
field = acpi_ps_get_next_field(parser_state);
|
||||
if (!field) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
if (prev) {
|
||||
prev->common.next = field;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
arg = field;
|
||||
}
|
||||
prev = field;
|
||||
@@ -673,21 +634,21 @@ acpi_ps_get_next_arg (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_BYTELIST:
|
||||
|
||||
if (parser_state->aml < parser_state->pkg_end) {
|
||||
/* Non-empty list */
|
||||
|
||||
arg = acpi_ps_alloc_op (AML_INT_BYTELIST_OP);
|
||||
arg = acpi_ps_alloc_op(AML_INT_BYTELIST_OP);
|
||||
if (!arg) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Fill in bytelist data */
|
||||
|
||||
arg->common.value.size = (u32)
|
||||
ACPI_PTR_DIFF (parser_state->pkg_end, parser_state->aml);
|
||||
ACPI_PTR_DIFF(parser_state->pkg_end,
|
||||
parser_state->aml);
|
||||
arg->named.data = parser_state->aml;
|
||||
|
||||
/* Skip to End of byte data */
|
||||
@@ -696,32 +657,31 @@ acpi_ps_get_next_arg (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_TARGET:
|
||||
case ARGP_SUPERNAME:
|
||||
case ARGP_SIMPLENAME:
|
||||
|
||||
subop = acpi_ps_peek_opcode (parser_state);
|
||||
if (subop == 0 ||
|
||||
acpi_ps_is_leading_char (subop) ||
|
||||
acpi_ps_is_prefix_char (subop)) {
|
||||
subop = acpi_ps_peek_opcode(parser_state);
|
||||
if (subop == 0 ||
|
||||
acpi_ps_is_leading_char(subop) ||
|
||||
acpi_ps_is_prefix_char(subop)) {
|
||||
/* null_name or name_string */
|
||||
|
||||
arg = acpi_ps_alloc_op (AML_INT_NAMEPATH_OP);
|
||||
arg = acpi_ps_alloc_op(AML_INT_NAMEPATH_OP);
|
||||
if (!arg) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
status = acpi_ps_get_next_namepath (walk_state, parser_state, arg, 0);
|
||||
}
|
||||
else {
|
||||
status =
|
||||
acpi_ps_get_next_namepath(walk_state, parser_state,
|
||||
arg, 0);
|
||||
} else {
|
||||
/* Single complex argument, nothing returned */
|
||||
|
||||
walk_state->arg_count = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_DATAOBJ:
|
||||
case ARGP_TERMARG:
|
||||
|
||||
@@ -730,7 +690,6 @@ acpi_ps_get_next_arg (
|
||||
walk_state->arg_count = 1;
|
||||
break;
|
||||
|
||||
|
||||
case ARGP_DATAOBJLIST:
|
||||
case ARGP_TERMLIST:
|
||||
case ARGP_OBJLIST:
|
||||
@@ -742,14 +701,13 @@ acpi_ps_get_next_arg (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_REPORT_ERROR (("Invalid arg_type: %X\n", arg_type));
|
||||
ACPI_REPORT_ERROR(("Invalid arg_type: %X\n", arg_type));
|
||||
status = AE_AML_OPERAND_TYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
*return_arg = arg;
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
@@ -41,7 +41,6 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Parse the AML and build an operation tree as most interpreters,
|
||||
* like Perl, do. Parsing is done by hand rather than with a YACC
|
||||
@@ -57,10 +56,9 @@
|
||||
#include <acpi/amlcode.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psloop")
|
||||
|
||||
static u32 acpi_gbl_depth = 0;
|
||||
ACPI_MODULE_NAME("psloop")
|
||||
|
||||
static u32 acpi_gbl_depth = 0;
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -75,23 +73,20 @@ static u32 acpi_gbl_depth = 0;
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_parse_loop (
|
||||
struct acpi_walk_state *walk_state)
|
||||
acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
acpi_status status2;
|
||||
union acpi_parse_object *op = NULL; /* current op */
|
||||
union acpi_parse_object *arg = NULL;
|
||||
union acpi_parse_object *pre_op = NULL;
|
||||
struct acpi_parse_state *parser_state;
|
||||
u8 *aml_op_start = NULL;
|
||||
acpi_status status = AE_OK;
|
||||
acpi_status status2;
|
||||
union acpi_parse_object *op = NULL; /* current op */
|
||||
union acpi_parse_object *arg = NULL;
|
||||
union acpi_parse_object *pre_op = NULL;
|
||||
struct acpi_parse_state *parser_state;
|
||||
u8 *aml_op_start = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_parse_loop", walk_state);
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_parse_loop", walk_state);
|
||||
|
||||
if (walk_state->descending_callback == NULL) {
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
parser_state = &walk_state->parser_state;
|
||||
@@ -102,45 +97,56 @@ acpi_ps_parse_loop (
|
||||
if (walk_state->walk_type & ACPI_WALK_METHOD_RESTART) {
|
||||
/* We are restarting a preempted control method */
|
||||
|
||||
if (acpi_ps_has_completed_scope (parser_state)) {
|
||||
if (acpi_ps_has_completed_scope(parser_state)) {
|
||||
/*
|
||||
* We must check if a predicate to an IF or WHILE statement
|
||||
* was just completed
|
||||
*/
|
||||
if ((parser_state->scope->parse_scope.op) &&
|
||||
((parser_state->scope->parse_scope.op->common.aml_opcode == AML_IF_OP) ||
|
||||
(parser_state->scope->parse_scope.op->common.aml_opcode == AML_WHILE_OP)) &&
|
||||
(walk_state->control_state) &&
|
||||
(walk_state->control_state->common.state ==
|
||||
ACPI_CONTROL_PREDICATE_EXECUTING)) {
|
||||
((parser_state->scope->parse_scope.op->common.
|
||||
aml_opcode == AML_IF_OP)
|
||||
|| (parser_state->scope->parse_scope.op->common.
|
||||
aml_opcode == AML_WHILE_OP))
|
||||
&& (walk_state->control_state)
|
||||
&& (walk_state->control_state->common.state ==
|
||||
ACPI_CONTROL_PREDICATE_EXECUTING)) {
|
||||
/*
|
||||
* A predicate was just completed, get the value of the
|
||||
* predicate and branch based on that value
|
||||
*/
|
||||
walk_state->op = NULL;
|
||||
status = acpi_ds_get_predicate_value (walk_state, ACPI_TO_POINTER (TRUE));
|
||||
if (ACPI_FAILURE (status) &&
|
||||
((status & AE_CODE_MASK) != AE_CODE_CONTROL)) {
|
||||
status =
|
||||
acpi_ds_get_predicate_value(walk_state,
|
||||
ACPI_TO_POINTER
|
||||
(TRUE));
|
||||
if (ACPI_FAILURE(status)
|
||||
&& ((status & AE_CODE_MASK) !=
|
||||
AE_CODE_CONTROL)) {
|
||||
if (status == AE_AML_NO_RETURN_VALUE) {
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Invoked method did not return a value, %s\n",
|
||||
acpi_format_exception (status)));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
||||
"Invoked method did not return a value, %s\n",
|
||||
acpi_format_exception
|
||||
(status)));
|
||||
|
||||
}
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"get_predicate Failed, %s\n",
|
||||
acpi_format_exception (status)));
|
||||
return_ACPI_STATUS (status);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
||||
"get_predicate Failed, %s\n",
|
||||
acpi_format_exception
|
||||
(status)));
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state, op,
|
||||
status);
|
||||
}
|
||||
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", op));
|
||||
}
|
||||
else if (walk_state->prev_op) {
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Popped scope, Op=%p\n", op));
|
||||
} else if (walk_state->prev_op) {
|
||||
/* We were in the middle of an op */
|
||||
|
||||
op = walk_state->prev_op;
|
||||
@@ -156,9 +162,10 @@ acpi_ps_parse_loop (
|
||||
if (!op) {
|
||||
/* Get the next opcode from the AML stream */
|
||||
|
||||
walk_state->aml_offset = (u32) ACPI_PTR_DIFF (parser_state->aml,
|
||||
parser_state->aml_start);
|
||||
walk_state->opcode = acpi_ps_peek_opcode (parser_state);
|
||||
walk_state->aml_offset =
|
||||
(u32) ACPI_PTR_DIFF(parser_state->aml,
|
||||
parser_state->aml_start);
|
||||
walk_state->opcode = acpi_ps_peek_opcode(parser_state);
|
||||
|
||||
/*
|
||||
* First cut to determine what we have found:
|
||||
@@ -166,7 +173,8 @@ acpi_ps_parse_loop (
|
||||
* 2) A name string
|
||||
* 3) An unknown/invalid opcode
|
||||
*/
|
||||
walk_state->op_info = acpi_ps_get_opcode_info (walk_state->opcode);
|
||||
walk_state->op_info =
|
||||
acpi_ps_get_opcode_info(walk_state->opcode);
|
||||
switch (walk_state->op_info->class) {
|
||||
case AML_CLASS_ASCII:
|
||||
case AML_CLASS_PREFIX:
|
||||
@@ -182,11 +190,13 @@ acpi_ps_parse_loop (
|
||||
|
||||
/* The opcode is unrecognized. Just skip unknown opcodes */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Found unknown opcode %X at AML address %p offset %X, ignoring\n",
|
||||
walk_state->opcode, parser_state->aml, walk_state->aml_offset));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
||||
"Found unknown opcode %X at AML address %p offset %X, ignoring\n",
|
||||
walk_state->opcode,
|
||||
parser_state->aml,
|
||||
walk_state->aml_offset));
|
||||
|
||||
ACPI_DUMP_BUFFER (parser_state->aml, 128);
|
||||
ACPI_DUMP_BUFFER(parser_state->aml, 128);
|
||||
|
||||
/* Assume one-byte bad opcode */
|
||||
|
||||
@@ -197,8 +207,10 @@ acpi_ps_parse_loop (
|
||||
|
||||
/* Found opcode info, this is a normal opcode */
|
||||
|
||||
parser_state->aml += acpi_ps_get_opcode_size (walk_state->opcode);
|
||||
walk_state->arg_types = walk_state->op_info->parse_args;
|
||||
parser_state->aml +=
|
||||
acpi_ps_get_opcode_size(walk_state->opcode);
|
||||
walk_state->arg_types =
|
||||
walk_state->op_info->parse_args;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -208,7 +220,9 @@ acpi_ps_parse_loop (
|
||||
/* Allocate a new pre_op if necessary */
|
||||
|
||||
if (!pre_op) {
|
||||
pre_op = acpi_ps_alloc_op (walk_state->opcode);
|
||||
pre_op =
|
||||
acpi_ps_alloc_op(walk_state->
|
||||
opcode);
|
||||
if (!pre_op) {
|
||||
status = AE_NO_MEMORY;
|
||||
goto close_this_op;
|
||||
@@ -222,30 +236,40 @@ acpi_ps_parse_loop (
|
||||
* Get and append arguments until we find the node that contains
|
||||
* the name (the type ARGP_NAME).
|
||||
*/
|
||||
while (GET_CURRENT_ARG_TYPE (walk_state->arg_types) &&
|
||||
(GET_CURRENT_ARG_TYPE (walk_state->arg_types) != ARGP_NAME)) {
|
||||
status = acpi_ps_get_next_arg (walk_state, parser_state,
|
||||
GET_CURRENT_ARG_TYPE (walk_state->arg_types), &arg);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
while (GET_CURRENT_ARG_TYPE
|
||||
(walk_state->arg_types)
|
||||
&&
|
||||
(GET_CURRENT_ARG_TYPE
|
||||
(walk_state->arg_types) != ARGP_NAME)) {
|
||||
status =
|
||||
acpi_ps_get_next_arg(walk_state,
|
||||
parser_state,
|
||||
GET_CURRENT_ARG_TYPE
|
||||
(walk_state->
|
||||
arg_types),
|
||||
&arg);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
acpi_ps_append_arg (pre_op, arg);
|
||||
INCREMENT_ARG_LIST (walk_state->arg_types);
|
||||
acpi_ps_append_arg(pre_op, arg);
|
||||
INCREMENT_ARG_LIST(walk_state->
|
||||
arg_types);
|
||||
}
|
||||
|
||||
/*
|
||||
* Make sure that we found a NAME and didn't run out of
|
||||
* arguments
|
||||
*/
|
||||
if (!GET_CURRENT_ARG_TYPE (walk_state->arg_types)) {
|
||||
if (!GET_CURRENT_ARG_TYPE
|
||||
(walk_state->arg_types)) {
|
||||
status = AE_AML_NO_OPERAND;
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
/* We know that this arg is a name, move to next arg */
|
||||
|
||||
INCREMENT_ARG_LIST (walk_state->arg_types);
|
||||
INCREMENT_ARG_LIST(walk_state->arg_types);
|
||||
|
||||
/*
|
||||
* Find the object. This will either insert the object into
|
||||
@@ -253,11 +277,14 @@ acpi_ps_parse_loop (
|
||||
*/
|
||||
walk_state->op = NULL;
|
||||
|
||||
status = walk_state->descending_callback (walk_state, &op);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"During name lookup/catalog, %s\n",
|
||||
acpi_format_exception (status)));
|
||||
status =
|
||||
walk_state->descending_callback(walk_state,
|
||||
&op);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
||||
"During name lookup/catalog, %s\n",
|
||||
acpi_format_exception
|
||||
(status)));
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
@@ -265,17 +292,20 @@ acpi_ps_parse_loop (
|
||||
continue;
|
||||
}
|
||||
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state, op,
|
||||
status);
|
||||
if (status == AE_CTRL_PENDING) {
|
||||
status = AE_OK;
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (status)) {
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
acpi_ps_append_arg (op, pre_op->common.value.arg);
|
||||
acpi_ps_append_arg(op,
|
||||
pre_op->common.value.arg);
|
||||
acpi_gbl_depth++;
|
||||
|
||||
if (op->common.aml_opcode == AML_REGION_OP) {
|
||||
@@ -291,15 +321,15 @@ acpi_ps_parse_loop (
|
||||
*
|
||||
* (Length is unknown until parse of the body complete)
|
||||
*/
|
||||
op->named.data = aml_op_start;
|
||||
op->named.length = 0;
|
||||
op->named.data = aml_op_start;
|
||||
op->named.length = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* Not a named opcode, just allocate Op and append to parent */
|
||||
|
||||
walk_state->op_info = acpi_ps_get_opcode_info (walk_state->opcode);
|
||||
op = acpi_ps_alloc_op (walk_state->opcode);
|
||||
walk_state->op_info =
|
||||
acpi_ps_get_opcode_info(walk_state->opcode);
|
||||
op = acpi_ps_alloc_op(walk_state->opcode);
|
||||
if (!op) {
|
||||
status = AE_NO_MEMORY;
|
||||
goto close_this_op;
|
||||
@@ -310,11 +340,12 @@ acpi_ps_parse_loop (
|
||||
* Backup to beginning of create_xXXfield declaration
|
||||
* body_length is unknown until we parse the body
|
||||
*/
|
||||
op->named.data = aml_op_start;
|
||||
op->named.length = 0;
|
||||
op->named.data = aml_op_start;
|
||||
op->named.length = 0;
|
||||
}
|
||||
|
||||
acpi_ps_append_arg (acpi_ps_get_parent_scope (parser_state), op);
|
||||
acpi_ps_append_arg(acpi_ps_get_parent_scope
|
||||
(parser_state), op);
|
||||
|
||||
if ((walk_state->descending_callback != NULL)) {
|
||||
/*
|
||||
@@ -323,14 +354,20 @@ acpi_ps_parse_loop (
|
||||
*/
|
||||
walk_state->op = op;
|
||||
|
||||
status = walk_state->descending_callback (walk_state, &op);
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status =
|
||||
walk_state->
|
||||
descending_callback(walk_state,
|
||||
&op);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state,
|
||||
op,
|
||||
status);
|
||||
if (status == AE_CTRL_PENDING) {
|
||||
status = AE_OK;
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (status)) {
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto close_this_op;
|
||||
}
|
||||
}
|
||||
@@ -339,14 +376,15 @@ acpi_ps_parse_loop (
|
||||
op->common.aml_offset = walk_state->aml_offset;
|
||||
|
||||
if (walk_state->op_info) {
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Opcode %4.4X [%s] Op %p Aml %p aml_offset %5.5X\n",
|
||||
(u32) op->common.aml_opcode, walk_state->op_info->name,
|
||||
op, parser_state->aml, op->common.aml_offset));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Opcode %4.4X [%s] Op %p Aml %p aml_offset %5.5X\n",
|
||||
(u32) op->common.aml_opcode,
|
||||
walk_state->op_info->name, op,
|
||||
parser_state->aml,
|
||||
op->common.aml_offset));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Start arg_count at zero because we don't know if there are
|
||||
* any args yet
|
||||
@@ -359,22 +397,27 @@ acpi_ps_parse_loop (
|
||||
/* Get arguments */
|
||||
|
||||
switch (op->common.aml_opcode) {
|
||||
case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
|
||||
case AML_WORD_OP: /* AML_WORDDATA_ARG */
|
||||
case AML_DWORD_OP: /* AML_DWORDATA_ARG */
|
||||
case AML_QWORD_OP: /* AML_QWORDATA_ARG */
|
||||
case AML_STRING_OP: /* AML_ASCIICHARLIST_ARG */
|
||||
case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
|
||||
case AML_WORD_OP: /* AML_WORDDATA_ARG */
|
||||
case AML_DWORD_OP: /* AML_DWORDATA_ARG */
|
||||
case AML_QWORD_OP: /* AML_QWORDATA_ARG */
|
||||
case AML_STRING_OP: /* AML_ASCIICHARLIST_ARG */
|
||||
|
||||
/* Fill in constant or string argument directly */
|
||||
|
||||
acpi_ps_get_next_simple_arg (parser_state,
|
||||
GET_CURRENT_ARG_TYPE (walk_state->arg_types), op);
|
||||
acpi_ps_get_next_simple_arg(parser_state,
|
||||
GET_CURRENT_ARG_TYPE
|
||||
(walk_state->
|
||||
arg_types), op);
|
||||
break;
|
||||
|
||||
case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */
|
||||
case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */
|
||||
|
||||
status = acpi_ps_get_next_namepath (walk_state, parser_state, op, 1);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
status =
|
||||
acpi_ps_get_next_namepath(walk_state,
|
||||
parser_state, op,
|
||||
1);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
@@ -386,34 +429,46 @@ acpi_ps_parse_loop (
|
||||
* Op is not a constant or string, append each argument
|
||||
* to the Op
|
||||
*/
|
||||
while (GET_CURRENT_ARG_TYPE (walk_state->arg_types) &&
|
||||
!walk_state->arg_count) {
|
||||
while (GET_CURRENT_ARG_TYPE
|
||||
(walk_state->arg_types)
|
||||
&& !walk_state->arg_count) {
|
||||
walk_state->aml_offset = (u32)
|
||||
ACPI_PTR_DIFF (parser_state->aml, parser_state->aml_start);
|
||||
ACPI_PTR_DIFF(parser_state->aml,
|
||||
parser_state->
|
||||
aml_start);
|
||||
|
||||
status = acpi_ps_get_next_arg (walk_state, parser_state,
|
||||
GET_CURRENT_ARG_TYPE (walk_state->arg_types),
|
||||
&arg);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
status =
|
||||
acpi_ps_get_next_arg(walk_state,
|
||||
parser_state,
|
||||
GET_CURRENT_ARG_TYPE
|
||||
(walk_state->
|
||||
arg_types),
|
||||
&arg);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto close_this_op;
|
||||
}
|
||||
|
||||
if (arg) {
|
||||
arg->common.aml_offset = walk_state->aml_offset;
|
||||
acpi_ps_append_arg (op, arg);
|
||||
arg->common.aml_offset =
|
||||
walk_state->aml_offset;
|
||||
acpi_ps_append_arg(op, arg);
|
||||
}
|
||||
INCREMENT_ARG_LIST (walk_state->arg_types);
|
||||
INCREMENT_ARG_LIST(walk_state->
|
||||
arg_types);
|
||||
}
|
||||
|
||||
|
||||
/* Special processing for certain opcodes */
|
||||
|
||||
/* TBD (remove): Temporary mechanism to disable this code if needed */
|
||||
/* TBD (remove): Temporary mechanism to disable this code if needed */
|
||||
|
||||
#ifdef ACPI_ENABLE_MODULE_LEVEL_CODE
|
||||
|
||||
if ((walk_state->pass_number <= ACPI_IMODE_LOAD_PASS1) &&
|
||||
((walk_state->parse_flags & ACPI_PARSE_DISASSEMBLE) == 0)) {
|
||||
if ((walk_state->pass_number <=
|
||||
ACPI_IMODE_LOAD_PASS1)
|
||||
&&
|
||||
((walk_state->
|
||||
parse_flags & ACPI_PARSE_DISASSEMBLE) ==
|
||||
0)) {
|
||||
/*
|
||||
* We want to skip If/Else/While constructs during Pass1
|
||||
* because we want to actually conditionally execute the
|
||||
@@ -427,12 +482,13 @@ acpi_ps_parse_loop (
|
||||
case AML_ELSE_OP:
|
||||
case AML_WHILE_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Pass1: Skipping an If/Else/While body\n"));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Pass1: Skipping an If/Else/While body\n"));
|
||||
|
||||
/* Skip body of if/else/while in pass 1 */
|
||||
|
||||
parser_state->aml = parser_state->pkg_end;
|
||||
parser_state->aml =
|
||||
parser_state->pkg_end;
|
||||
walk_state->arg_count = 0;
|
||||
break;
|
||||
|
||||
@@ -451,13 +507,15 @@ acpi_ps_parse_loop (
|
||||
*
|
||||
* Save the length and address of the body
|
||||
*/
|
||||
op->named.data = parser_state->aml;
|
||||
op->named.length = (u32) (parser_state->pkg_end -
|
||||
parser_state->aml);
|
||||
op->named.data = parser_state->aml;
|
||||
op->named.length =
|
||||
(u32) (parser_state->pkg_end -
|
||||
parser_state->aml);
|
||||
|
||||
/* Skip body of method */
|
||||
|
||||
parser_state->aml = parser_state->pkg_end;
|
||||
parser_state->aml =
|
||||
parser_state->pkg_end;
|
||||
walk_state->arg_count = 0;
|
||||
break;
|
||||
|
||||
@@ -466,20 +524,25 @@ acpi_ps_parse_loop (
|
||||
case AML_VAR_PACKAGE_OP:
|
||||
|
||||
if ((op->common.parent) &&
|
||||
(op->common.parent->common.aml_opcode == AML_NAME_OP) &&
|
||||
(walk_state->pass_number <= ACPI_IMODE_LOAD_PASS2)) {
|
||||
(op->common.parent->common.
|
||||
aml_opcode == AML_NAME_OP)
|
||||
&& (walk_state->pass_number <=
|
||||
ACPI_IMODE_LOAD_PASS2)) {
|
||||
/*
|
||||
* Skip parsing of Buffers and Packages
|
||||
* because we don't have enough info in the first pass
|
||||
* to parse them correctly.
|
||||
*/
|
||||
op->named.data = aml_op_start;
|
||||
op->named.length = (u32) (parser_state->pkg_end -
|
||||
aml_op_start);
|
||||
op->named.data = aml_op_start;
|
||||
op->named.length =
|
||||
(u32) (parser_state->
|
||||
pkg_end -
|
||||
aml_op_start);
|
||||
|
||||
/* Skip body */
|
||||
|
||||
parser_state->aml = parser_state->pkg_end;
|
||||
parser_state->aml =
|
||||
parser_state->pkg_end;
|
||||
walk_state->arg_count = 0;
|
||||
}
|
||||
break;
|
||||
@@ -487,8 +550,9 @@ acpi_ps_parse_loop (
|
||||
case AML_WHILE_OP:
|
||||
|
||||
if (walk_state->control_state) {
|
||||
walk_state->control_state->control.package_end =
|
||||
parser_state->pkg_end;
|
||||
walk_state->control_state->
|
||||
control.package_end =
|
||||
parser_state->pkg_end;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -508,9 +572,10 @@ acpi_ps_parse_loop (
|
||||
* There are arguments (complex ones), push Op and
|
||||
* prepare for argument
|
||||
*/
|
||||
status = acpi_ps_push_scope (parser_state, op,
|
||||
walk_state->arg_types, walk_state->arg_count);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
status = acpi_ps_push_scope(parser_state, op,
|
||||
walk_state->arg_types,
|
||||
walk_state->arg_count);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto close_this_op;
|
||||
}
|
||||
op = NULL;
|
||||
@@ -521,7 +586,8 @@ acpi_ps_parse_loop (
|
||||
* All arguments have been processed -- Op is complete,
|
||||
* prepare for next
|
||||
*/
|
||||
walk_state->op_info = acpi_ps_get_opcode_info (op->common.aml_opcode);
|
||||
walk_state->op_info =
|
||||
acpi_ps_get_opcode_info(op->common.aml_opcode);
|
||||
if (walk_state->op_info->flags & AML_NAMED) {
|
||||
if (acpi_gbl_depth) {
|
||||
acpi_gbl_depth--;
|
||||
@@ -536,7 +602,8 @@ acpi_ps_parse_loop (
|
||||
* Completed parsing an op_region declaration, we now
|
||||
* know the length.
|
||||
*/
|
||||
op->named.length = (u32) (parser_state->aml - op->named.data);
|
||||
op->named.length =
|
||||
(u32) (parser_state->aml - op->named.data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,25 +614,26 @@ acpi_ps_parse_loop (
|
||||
*
|
||||
* body_length is unknown until we parse the body
|
||||
*/
|
||||
op->named.length = (u32) (parser_state->aml - op->named.data);
|
||||
op->named.length =
|
||||
(u32) (parser_state->aml - op->named.data);
|
||||
}
|
||||
|
||||
/* This op complete, notify the dispatcher */
|
||||
|
||||
if (walk_state->ascending_callback != NULL) {
|
||||
walk_state->op = op;
|
||||
walk_state->op = op;
|
||||
walk_state->opcode = op->common.aml_opcode;
|
||||
|
||||
status = walk_state->ascending_callback (walk_state);
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status = walk_state->ascending_callback(walk_state);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state, op, status);
|
||||
if (status == AE_CTRL_PENDING) {
|
||||
status = AE_OK;
|
||||
goto close_this_op;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
close_this_op:
|
||||
close_this_op:
|
||||
/*
|
||||
* Finished one argument of the containing scope
|
||||
*/
|
||||
@@ -574,15 +642,15 @@ close_this_op:
|
||||
/* Finished with pre_op */
|
||||
|
||||
if (pre_op) {
|
||||
acpi_ps_free_op (pre_op);
|
||||
acpi_ps_free_op(pre_op);
|
||||
pre_op = NULL;
|
||||
}
|
||||
|
||||
/* Close this Op (will result in parse subtree deletion) */
|
||||
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 = acpi_ps_complete_this_op(walk_state, op);
|
||||
if (ACPI_FAILURE(status2)) {
|
||||
return_ACPI_STATUS(status2);
|
||||
}
|
||||
op = NULL;
|
||||
|
||||
@@ -590,68 +658,74 @@ close_this_op:
|
||||
case AE_OK:
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_TRANSFER:
|
||||
|
||||
/* We are about to transfer to a called method. */
|
||||
|
||||
walk_state->prev_op = op;
|
||||
walk_state->prev_arg_types = walk_state->arg_types;
|
||||
return_ACPI_STATUS (status);
|
||||
|
||||
return_ACPI_STATUS(status);
|
||||
|
||||
case AE_CTRL_END:
|
||||
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
|
||||
if (op) {
|
||||
walk_state->op = op;
|
||||
walk_state->op_info = acpi_ps_get_opcode_info (op->common.aml_opcode);
|
||||
walk_state->op = op;
|
||||
walk_state->op_info =
|
||||
acpi_ps_get_opcode_info(op->common.
|
||||
aml_opcode);
|
||||
walk_state->opcode = op->common.aml_opcode;
|
||||
|
||||
status = walk_state->ascending_callback (walk_state);
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status =
|
||||
walk_state->ascending_callback(walk_state);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state, op,
|
||||
status);
|
||||
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 =
|
||||
acpi_ps_complete_this_op(walk_state, op);
|
||||
if (ACPI_FAILURE(status2)) {
|
||||
return_ACPI_STATUS(status2);
|
||||
}
|
||||
op = NULL;
|
||||
}
|
||||
status = AE_OK;
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_BREAK:
|
||||
case AE_CTRL_CONTINUE:
|
||||
|
||||
/* Pop off scopes until we find the While */
|
||||
|
||||
while (!op || (op->common.aml_opcode != AML_WHILE_OP)) {
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
}
|
||||
|
||||
/* Close this iteration of the While loop */
|
||||
|
||||
walk_state->op = op;
|
||||
walk_state->op_info = acpi_ps_get_opcode_info (op->common.aml_opcode);
|
||||
walk_state->op = op;
|
||||
walk_state->op_info =
|
||||
acpi_ps_get_opcode_info(op->common.aml_opcode);
|
||||
walk_state->opcode = op->common.aml_opcode;
|
||||
|
||||
status = walk_state->ascending_callback (walk_state);
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status = walk_state->ascending_callback(walk_state);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state, op, status);
|
||||
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 = acpi_ps_complete_this_op(walk_state, op);
|
||||
if (ACPI_FAILURE(status2)) {
|
||||
return_ACPI_STATUS(status2);
|
||||
}
|
||||
op = NULL;
|
||||
|
||||
status = AE_OK;
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_TERMINATE:
|
||||
|
||||
status = AE_OK;
|
||||
@@ -659,61 +733,66 @@ close_this_op:
|
||||
/* Clean up */
|
||||
do {
|
||||
if (op) {
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 =
|
||||
acpi_ps_complete_this_op(walk_state,
|
||||
op);
|
||||
if (ACPI_FAILURE(status2)) {
|
||||
return_ACPI_STATUS(status2);
|
||||
}
|
||||
}
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
|
||||
} while (op);
|
||||
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
|
||||
|
||||
default: /* All other non-AE_OK status */
|
||||
default: /* All other non-AE_OK status */
|
||||
|
||||
do {
|
||||
if (op) {
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 =
|
||||
acpi_ps_complete_this_op(walk_state,
|
||||
op);
|
||||
if (ACPI_FAILURE(status2)) {
|
||||
return_ACPI_STATUS(status2);
|
||||
}
|
||||
}
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
|
||||
} while (op);
|
||||
|
||||
|
||||
/*
|
||||
* TBD: Cleanup parse ops on error
|
||||
*/
|
||||
#if 0
|
||||
if (op == NULL) {
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
}
|
||||
#endif
|
||||
walk_state->prev_op = op;
|
||||
walk_state->prev_arg_types = walk_state->arg_types;
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/* This scope complete? */
|
||||
|
||||
if (acpi_ps_has_completed_scope (parser_state)) {
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", op));
|
||||
}
|
||||
else {
|
||||
if (acpi_ps_has_completed_scope(parser_state)) {
|
||||
acpi_ps_pop_scope(parser_state, &op,
|
||||
&walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Popped scope, Op=%p\n", op));
|
||||
} else {
|
||||
op = NULL;
|
||||
}
|
||||
|
||||
} /* while parser_state->Aml */
|
||||
|
||||
} /* while parser_state->Aml */
|
||||
|
||||
/*
|
||||
* Complete the last Op (if not completed), and clear the scope stack.
|
||||
@@ -721,16 +800,22 @@ close_this_op:
|
||||
* of open scopes (such as when several ASL blocks are closed with
|
||||
* sequential closing braces). We want to terminate each one cleanly.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "AML package complete at Op %p\n", op));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "AML package complete at Op %p\n",
|
||||
op));
|
||||
do {
|
||||
if (op) {
|
||||
if (walk_state->ascending_callback != NULL) {
|
||||
walk_state->op = op;
|
||||
walk_state->op_info = acpi_ps_get_opcode_info (op->common.aml_opcode);
|
||||
walk_state->op = op;
|
||||
walk_state->op_info =
|
||||
acpi_ps_get_opcode_info(op->common.
|
||||
aml_opcode);
|
||||
walk_state->opcode = op->common.aml_opcode;
|
||||
|
||||
status = walk_state->ascending_callback (walk_state);
|
||||
status = acpi_ps_next_parse_state (walk_state, op, status);
|
||||
status =
|
||||
walk_state->ascending_callback(walk_state);
|
||||
status =
|
||||
acpi_ps_next_parse_state(walk_state, op,
|
||||
status);
|
||||
if (status == AE_CTRL_PENDING) {
|
||||
status = AE_OK;
|
||||
goto close_this_op;
|
||||
@@ -742,40 +827,48 @@ close_this_op:
|
||||
/* Clean up */
|
||||
do {
|
||||
if (op) {
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 =
|
||||
acpi_ps_complete_this_op
|
||||
(walk_state, op);
|
||||
if (ACPI_FAILURE
|
||||
(status2)) {
|
||||
return_ACPI_STATUS
|
||||
(status2);
|
||||
}
|
||||
}
|
||||
|
||||
acpi_ps_pop_scope (parser_state, &op,
|
||||
&walk_state->arg_types, &walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state,
|
||||
&op,
|
||||
&walk_state->
|
||||
arg_types,
|
||||
&walk_state->
|
||||
arg_count);
|
||||
|
||||
} while (op);
|
||||
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
else if (ACPI_FAILURE (status)) {
|
||||
else if (ACPI_FAILURE(status)) {
|
||||
/* First error is most important */
|
||||
|
||||
(void) acpi_ps_complete_this_op (walk_state, op);
|
||||
return_ACPI_STATUS (status);
|
||||
(void)
|
||||
acpi_ps_complete_this_op(walk_state,
|
||||
op);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
}
|
||||
|
||||
status2 = acpi_ps_complete_this_op (walk_state, op);
|
||||
if (ACPI_FAILURE (status2)) {
|
||||
return_ACPI_STATUS (status2);
|
||||
status2 = acpi_ps_complete_this_op(walk_state, op);
|
||||
if (ACPI_FAILURE(status2)) {
|
||||
return_ACPI_STATUS(status2);
|
||||
}
|
||||
}
|
||||
|
||||
acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
acpi_ps_pop_scope(parser_state, &op, &walk_state->arg_types,
|
||||
&walk_state->arg_count);
|
||||
|
||||
} while (op);
|
||||
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -41,16 +41,13 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
#include <acpi/acopcode.h>
|
||||
#include <acpi/amlcode.h>
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psopcode")
|
||||
|
||||
ACPI_MODULE_NAME("psopcode")
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -62,7 +59,6 @@
|
||||
* the operand type.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Summary of opcode types/flags
|
||||
*
|
||||
@@ -180,156 +176,468 @@
|
||||
AML_CREATE_QWORD_FIELD_OP
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
* Master Opcode information table. A summary of everything we know about each
|
||||
* opcode, all in one place.
|
||||
*/
|
||||
const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] =
|
||||
{
|
||||
const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = {
|
||||
/*! [Begin] no source code translation */
|
||||
/* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */
|
||||
|
||||
/* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
|
||||
/* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
|
||||
/* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, ACPI_TYPE_LOCAL_ALIAS, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_LOCAL_SCOPE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, ACPI_TYPE_BUFFER, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
|
||||
/* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
|
||||
/* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
|
||||
/* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 1A */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 1B */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
|
||||
/* 1C */ ACPI_OP ("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
|
||||
/* 1D */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 1E */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 1F */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
|
||||
/* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
|
||||
/* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_2T_1R, AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT),
|
||||
/* 24 */ ACPI_OP ("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 25 */ ACPI_OP ("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 2A */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 2B */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 2C */ ACPI_OP ("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 2D */ ACPI_OP ("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 2E */ ACPI_OP ("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
|
||||
/* 2F */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R),
|
||||
/* 30 */ ACPI_OP ("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE),
|
||||
/* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R),
|
||||
/* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT),
|
||||
/* 33 */ ACPI_OP ("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
|
||||
/* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
|
||||
/* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
|
||||
/* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
|
||||
/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE),
|
||||
/* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT),
|
||||
/* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT),
|
||||
/* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
|
||||
/* 3B */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
|
||||
/* 3C */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
|
||||
/* 3D */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
|
||||
/* 3E */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
|
||||
/* 00 */ ACPI_OP("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER,
|
||||
AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
|
||||
/* 01 */ ACPI_OP("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER,
|
||||
AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
|
||||
/* 02 */ ACPI_OP("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP,
|
||||
ACPI_TYPE_LOCAL_ALIAS, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_SIMPLE,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 03 */ ACPI_OP("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 04 */ ACPI_OP("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP,
|
||||
ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 05 */ ACPI_OP("WordConst", ARGP_WORD_OP, ARGI_WORD_OP,
|
||||
ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 06 */ ACPI_OP("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP,
|
||||
ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 07 */ ACPI_OP("String", ARGP_STRING_OP, ARGI_STRING_OP,
|
||||
ACPI_TYPE_STRING, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 08 */ ACPI_OP("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP,
|
||||
ACPI_TYPE_LOCAL_SCOPE, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_NO_OBJ,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 09 */ ACPI_OP("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP,
|
||||
ACPI_TYPE_BUFFER, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_OBJECT,
|
||||
AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
|
||||
/* 0A */ ACPI_OP("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP,
|
||||
ACPI_TYPE_PACKAGE, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_OBJECT,
|
||||
AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
|
||||
/* 0B */ ACPI_OP("Method", ARGP_METHOD_OP, ARGI_METHOD_OP,
|
||||
ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_COMPLEX,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED | AML_DEFER),
|
||||
/* 0C */ ACPI_OP("Local0", ARGP_LOCAL0, ARGI_LOCAL0,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 0D */ ACPI_OP("Local1", ARGP_LOCAL1, ARGI_LOCAL1,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 0E */ ACPI_OP("Local2", ARGP_LOCAL2, ARGI_LOCAL2,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 0F */ ACPI_OP("Local3", ARGP_LOCAL3, ARGI_LOCAL3,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 10 */ ACPI_OP("Local4", ARGP_LOCAL4, ARGI_LOCAL4,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 11 */ ACPI_OP("Local5", ARGP_LOCAL5, ARGI_LOCAL5,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 12 */ ACPI_OP("Local6", ARGP_LOCAL6, ARGI_LOCAL6,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 13 */ ACPI_OP("Local7", ARGP_LOCAL7, ARGI_LOCAL7,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LOCAL_VARIABLE, 0),
|
||||
/* 14 */ ACPI_OP("Arg0", ARGP_ARG0, ARGI_ARG0,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 15 */ ACPI_OP("Arg1", ARGP_ARG1, ARGI_ARG1,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 16 */ ACPI_OP("Arg2", ARGP_ARG2, ARGI_ARG2,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 17 */ ACPI_OP("Arg3", ARGP_ARG3, ARGI_ARG3,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 18 */ ACPI_OP("Arg4", ARGP_ARG4, ARGI_ARG4,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 19 */ ACPI_OP("Arg5", ARGP_ARG5, ARGI_ARG5,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 1A */ ACPI_OP("Arg6", ARGP_ARG6, ARGI_ARG6,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_METHOD_ARGUMENT, 0),
|
||||
/* 1B */ ACPI_OP("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R),
|
||||
/* 1C */ ACPI_OP("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R,
|
||||
AML_FLAGS_EXEC_1A_0T_1R),
|
||||
/* 1D */ ACPI_OP("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 1E */ ACPI_OP("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 1F */ ACPI_OP("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 20 */ ACPI_OP("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_1R,
|
||||
AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
|
||||
/* 21 */ ACPI_OP("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_1R,
|
||||
AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
|
||||
/* 22 */ ACPI_OP("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 23 */ ACPI_OP("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_2T_1R,
|
||||
AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT),
|
||||
/* 24 */ ACPI_OP("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 25 */ ACPI_OP("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 26 */ ACPI_OP("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 27 */ ACPI_OP("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 28 */ ACPI_OP("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 29 */ ACPI_OP("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 2A */ ACPI_OP("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
|
||||
/* 2B */ ACPI_OP("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 2C */ ACPI_OP("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP,
|
||||
ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 2D */ ACPI_OP("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,
|
||||
ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 2E */ ACPI_OP("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
|
||||
/* 2F */ ACPI_OP("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R),
|
||||
/* 30 */ ACPI_OP("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_1R,
|
||||
AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE),
|
||||
/* 31 */ ACPI_OP("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R),
|
||||
/* 32 */ ACPI_OP("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R,
|
||||
AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT),
|
||||
/* 33 */ ACPI_OP("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,
|
||||
ARGI_CREATE_DWORD_FIELD_OP,
|
||||
ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |
|
||||
AML_DEFER | AML_CREATE),
|
||||
/* 34 */ ACPI_OP("CreateWordField", ARGP_CREATE_WORD_FIELD_OP,
|
||||
ARGI_CREATE_WORD_FIELD_OP,
|
||||
ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |
|
||||
AML_DEFER | AML_CREATE),
|
||||
/* 35 */ ACPI_OP("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP,
|
||||
ARGI_CREATE_BYTE_FIELD_OP,
|
||||
ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |
|
||||
AML_DEFER | AML_CREATE),
|
||||
/* 36 */ ACPI_OP("CreateBitField", ARGP_CREATE_BIT_FIELD_OP,
|
||||
ARGI_CREATE_BIT_FIELD_OP,
|
||||
ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |
|
||||
AML_DEFER | AML_CREATE),
|
||||
/* 37 */ ACPI_OP("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_1R,
|
||||
AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE),
|
||||
/* 38 */ ACPI_OP("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,
|
||||
AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC |
|
||||
AML_CONSTANT),
|
||||
/* 39 */ ACPI_OP("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,
|
||||
AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC |
|
||||
AML_CONSTANT),
|
||||
/* 3A */ ACPI_OP("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R,
|
||||
AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
|
||||
/* 3B */ ACPI_OP("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_0T_1R,
|
||||
AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
|
||||
/* 3C */ ACPI_OP("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_0T_1R,
|
||||
AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
|
||||
/* 3D */ ACPI_OP("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,
|
||||
AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
|
||||
/* 3E */ ACPI_OP("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 3F */ ACPI_OP("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 40 */ ACPI_OP("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 41 */ ACPI_OP("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 42 */ ACPI_OP("Return", ARGP_RETURN_OP, ARGI_RETURN_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_CONTROL,
|
||||
AML_TYPE_CONTROL, AML_HAS_ARGS),
|
||||
/* 43 */ ACPI_OP("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 44 */ ACPI_OP("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 45 */ ACPI_OP("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER,
|
||||
AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
|
||||
|
||||
/* Prefixed opcodes (Two-byte opcodes with a prefix op) */
|
||||
|
||||
/* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
|
||||
/* 48 */ ACPI_OP ("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
|
||||
/* 49 */ ACPI_OP ("CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE),
|
||||
/* 4A */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R, AML_FLAGS_EXEC_1A_1T_0R),
|
||||
/* 4B */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 4C */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 4D */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
|
||||
/* 4E */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 4F */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
|
||||
/* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 52 */ ACPI_OP ("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 53 */ ACPI_OP ("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
|
||||
/* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
|
||||
/* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R),
|
||||
/* 58 */ ACPI_OP ("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
|
||||
/* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
|
||||
/* 5A */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
|
||||
/* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
|
||||
/* 46 */ ACPI_OP("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX,
|
||||
AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 47 */ ACPI_OP("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT,
|
||||
AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE,
|
||||
AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 48 */ ACPI_OP("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
|
||||
/* 49 */ ACPI_OP("CreateField", ARGP_CREATE_FIELD_OP,
|
||||
ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD,
|
||||
AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |
|
||||
AML_DEFER | AML_FIELD | AML_CREATE),
|
||||
/* 4A */ ACPI_OP("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R,
|
||||
AML_FLAGS_EXEC_1A_1T_0R),
|
||||
/* 4B */ ACPI_OP("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R,
|
||||
AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 4C */ ACPI_OP("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R,
|
||||
AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 4D */ ACPI_OP("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
|
||||
/* 4E */ ACPI_OP("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 4F */ ACPI_OP("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,
|
||||
AML_FLAGS_EXEC_2A_0T_1R),
|
||||
/* 50 */ ACPI_OP("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R,
|
||||
AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 51 */ ACPI_OP("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 52 */ ACPI_OP("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 53 */ ACPI_OP("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 54 */ ACPI_OP("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
|
||||
/* 55 */ ACPI_OP("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP,
|
||||
ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_CONSTANT, 0),
|
||||
/* 56 */ ACPI_OP("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_CONSTANT, 0),
|
||||
/* 57 */ ACPI_OP("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R,
|
||||
AML_FLAGS_EXEC_3A_0T_0R),
|
||||
/* 58 */ ACPI_OP("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP,
|
||||
ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_COMPLEX,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED | AML_DEFER),
|
||||
/* 59 */ ACPI_OP("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_FIELD),
|
||||
/* 5A */ ACPI_OP("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP,
|
||||
ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_NO_OBJ,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 5B */ ACPI_OP("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP,
|
||||
ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_SIMPLE,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 5C */ ACPI_OP("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP,
|
||||
ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_SIMPLE,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 5D */ ACPI_OP("ThermalZone", ARGP_THERMAL_ZONE_OP,
|
||||
ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL,
|
||||
AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 5E */ ACPI_OP("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_FIELD),
|
||||
/* 5F */ ACPI_OP("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_FIELD),
|
||||
|
||||
/* Internal opcodes that map to invalid AML opcodes */
|
||||
|
||||
/* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
|
||||
/* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
|
||||
/* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
|
||||
/* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ),
|
||||
/* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE),
|
||||
/* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
|
||||
/* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
|
||||
/* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
|
||||
/* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
|
||||
/* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
|
||||
/* 6A */ ACPI_OP ("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL),
|
||||
/* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),
|
||||
/* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),
|
||||
/* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),
|
||||
/* 60 */ ACPI_OP("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_INTERNAL,
|
||||
AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
|
||||
/* 61 */ ACPI_OP("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_INTERNAL,
|
||||
AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
|
||||
/* 62 */ ACPI_OP("LGreaterEqual", ARGP_LGREATEREQUAL_OP,
|
||||
ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_INTERNAL, AML_TYPE_BOGUS,
|
||||
AML_HAS_ARGS | AML_CONSTANT),
|
||||
/* 63 */ ACPI_OP("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP,
|
||||
ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE),
|
||||
/* 64 */ ACPI_OP("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP,
|
||||
ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL,
|
||||
AML_TYPE_METHOD_CALL,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE),
|
||||
/* 65 */ ACPI_OP("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, 0),
|
||||
/* 66 */ ACPI_OP("-ReservedField-", ARGP_RESERVEDFIELD_OP,
|
||||
ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
|
||||
/* 67 */ ACPI_OP("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_INTERNAL,
|
||||
AML_TYPE_BOGUS,
|
||||
AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 68 */ ACPI_OP("-AccessField-", ARGP_ACCESSFIELD_OP,
|
||||
ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
|
||||
/* 69 */ ACPI_OP("-StaticString", ARGP_STATICSTRING_OP,
|
||||
ARGI_STATICSTRING_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
|
||||
/* 6A */ ACPI_OP("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY,
|
||||
AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN,
|
||||
AML_HAS_ARGS | AML_HAS_RETVAL),
|
||||
/* 6B */ ACPI_OP("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID,
|
||||
AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),
|
||||
/* 6C */ ACPI_OP("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY,
|
||||
AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),
|
||||
/* 6D */ ACPI_OP("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY,
|
||||
AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),
|
||||
|
||||
/* ACPI 2.0 opcodes */
|
||||
|
||||
/* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 6F */ ACPI_OP ("Package", /* Var */ ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER),
|
||||
/* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 72 */ ACPI_OP ("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
|
||||
/* 73 */ ACPI_OP ("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 74 */ ACPI_OP ("ToDecimalString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 75 */ ACPI_OP ("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 76 */ ACPI_OP ("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 77 */ ACPI_OP ("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 78 */ ACPI_OP ("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
|
||||
/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT),
|
||||
/* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
|
||||
/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
|
||||
/* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE),
|
||||
/* 6E */ ACPI_OP("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP,
|
||||
ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,
|
||||
AML_TYPE_LITERAL, AML_CONSTANT),
|
||||
/* 6F */ ACPI_OP("Package", /* Var */ ARGP_VAR_PACKAGE_OP,
|
||||
ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE,
|
||||
AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT,
|
||||
AML_HAS_ARGS | AML_DEFER),
|
||||
/* 70 */ ACPI_OP("ConcatenateResTemplate", ARGP_CONCAT_RES_OP,
|
||||
ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 71 */ ACPI_OP("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 72 */ ACPI_OP("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,
|
||||
ARGI_CREATE_QWORD_FIELD_OP,
|
||||
ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,
|
||||
AML_TYPE_CREATE_FIELD,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |
|
||||
AML_DEFER | AML_CREATE),
|
||||
/* 73 */ ACPI_OP("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 74 */ ACPI_OP("ToDecimalString", ARGP_TO_DEC_STR_OP,
|
||||
ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 75 */ ACPI_OP("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 76 */ ACPI_OP("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_1T_1R,
|
||||
AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
|
||||
/* 77 */ ACPI_OP("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_2A_1T_1R,
|
||||
AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
|
||||
/* 78 */ ACPI_OP("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
|
||||
/* 79 */ ACPI_OP("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R,
|
||||
AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT),
|
||||
/* 7A */ ACPI_OP("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
|
||||
/* 7B */ ACPI_OP("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_EXECUTE,
|
||||
AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
|
||||
/* 7C */ ACPI_OP("DataTableRegion", ARGP_DATA_REGION_OP,
|
||||
ARGI_DATA_REGION_OP, ACPI_TYPE_REGION,
|
||||
AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE | AML_NAMED),
|
||||
/* 7D */ ACPI_OP("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP,
|
||||
ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT,
|
||||
AML_TYPE_NAMED_NO_OBJ,
|
||||
AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |
|
||||
AML_NSNODE),
|
||||
|
||||
/* ACPI 3.0 opcodes */
|
||||
|
||||
/* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R)
|
||||
/* 7E */ ACPI_OP("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R,
|
||||
AML_FLAGS_EXEC_0A_0T_1R)
|
||||
|
||||
/*! [End] no source code translation !*/
|
||||
};
|
||||
@@ -338,73 +646,70 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] =
|
||||
* This table is directly indexed by the opcodes, and returns an
|
||||
* index into the table above
|
||||
*/
|
||||
static const u8 acpi_gbl_short_op_index[256] =
|
||||
{
|
||||
static const u8 acpi_gbl_short_op_index[256] = {
|
||||
/* 0 1 2 3 4 5 6 7 */
|
||||
/* 8 9 A B C D E F */
|
||||
/* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK,
|
||||
/* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK,
|
||||
/* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK,
|
||||
/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
|
||||
/* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
|
||||
/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
|
||||
/* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
|
||||
/* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
|
||||
/* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC,
|
||||
/* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
|
||||
/* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK,
|
||||
/* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
|
||||
/* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
|
||||
/* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30,
|
||||
/* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72,
|
||||
/* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74,
|
||||
/* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A,
|
||||
/* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61,
|
||||
/* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK,
|
||||
/* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45,
|
||||
/* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK,
|
||||
/* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK,
|
||||
/* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK,
|
||||
/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
|
||||
/* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
|
||||
/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
|
||||
/* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
|
||||
/* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
|
||||
/* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC,
|
||||
/* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
|
||||
/* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK,
|
||||
/* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
|
||||
/* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
|
||||
/* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30,
|
||||
/* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72,
|
||||
/* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74,
|
||||
/* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A,
|
||||
/* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61,
|
||||
/* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK,
|
||||
/* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45,
|
||||
};
|
||||
|
||||
/*
|
||||
* This table is indexed by the second opcode of the extended opcode
|
||||
* pair. It returns an index into the opcode table (acpi_gbl_aml_op_info)
|
||||
*/
|
||||
static const u8 acpi_gbl_long_op_index[NUM_EXTENDED_OPCODE] =
|
||||
{
|
||||
static const u8 acpi_gbl_long_op_index[NUM_EXTENDED_OPCODE] = {
|
||||
/* 0 1 2 3 4 5 6 7 */
|
||||
/* 8 9 A B C D E F */
|
||||
/* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B,
|
||||
/* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
|
||||
/* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
|
||||
/* 0x88 */ 0x7C,
|
||||
/* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B,
|
||||
/* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
|
||||
/* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
/* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
|
||||
/* 0x88 */ 0x7C,
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_opcode_info
|
||||
@@ -418,12 +723,9 @@ static const u8 acpi_gbl_long_op_index[NUM_EXTENDED_OPCODE] =
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
const struct acpi_opcode_info *
|
||||
acpi_ps_get_opcode_info (
|
||||
u16 opcode)
|
||||
const struct acpi_opcode_info *acpi_ps_get_opcode_info(u16 opcode)
|
||||
{
|
||||
ACPI_FUNCTION_NAME ("ps_get_opcode_info");
|
||||
|
||||
ACPI_FUNCTION_NAME("ps_get_opcode_info");
|
||||
|
||||
/*
|
||||
* Detect normal 8-bit opcode or extended 16-bit opcode
|
||||
@@ -431,25 +733,26 @@ acpi_ps_get_opcode_info (
|
||||
if (!(opcode & 0xFF00)) {
|
||||
/* Simple (8-bit) opcode: 0-255, can't index beyond table */
|
||||
|
||||
return (&acpi_gbl_aml_op_info [acpi_gbl_short_op_index [(u8) opcode]]);
|
||||
return (&acpi_gbl_aml_op_info
|
||||
[acpi_gbl_short_op_index[(u8) opcode]]);
|
||||
}
|
||||
|
||||
if (((opcode & 0xFF00) == AML_EXTENDED_OPCODE) &&
|
||||
(((u8) opcode) <= MAX_EXTENDED_OPCODE)) {
|
||||
(((u8) opcode) <= MAX_EXTENDED_OPCODE)) {
|
||||
/* Valid extended (16-bit) opcode */
|
||||
|
||||
return (&acpi_gbl_aml_op_info [acpi_gbl_long_op_index [(u8) opcode]]);
|
||||
return (&acpi_gbl_aml_op_info
|
||||
[acpi_gbl_long_op_index[(u8) opcode]]);
|
||||
}
|
||||
|
||||
/* Unknown AML opcode */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Unknown AML opcode [%4.4X]\n", opcode));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
||||
"Unknown AML opcode [%4.4X]\n", opcode));
|
||||
|
||||
return (&acpi_gbl_aml_op_info [_UNK]);
|
||||
return (&acpi_gbl_aml_op_info[_UNK]);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_opcode_name
|
||||
@@ -463,16 +766,13 @@ acpi_ps_get_opcode_info (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
char *
|
||||
acpi_ps_get_opcode_name (
|
||||
u16 opcode)
|
||||
char *acpi_ps_get_opcode_name(u16 opcode)
|
||||
{
|
||||
#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT)
|
||||
|
||||
const struct acpi_opcode_info *op;
|
||||
const struct acpi_opcode_info *op;
|
||||
|
||||
|
||||
op = acpi_ps_get_opcode_info (opcode);
|
||||
op = acpi_ps_get_opcode_info(opcode);
|
||||
|
||||
/* Always guaranteed to return a valid pointer */
|
||||
|
||||
@@ -483,4 +783,3 @@ acpi_ps_get_opcode_name (
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@@ -41,7 +41,6 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Parse the AML and build an operation tree as most interpreters,
|
||||
* like Perl, do. Parsing is done by hand rather than with a YACC
|
||||
@@ -59,8 +58,7 @@
|
||||
#include <acpi/acinterp.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psparse")
|
||||
|
||||
ACPI_MODULE_NAME("psparse")
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -73,10 +71,7 @@
|
||||
* DESCRIPTION: Get the size of the current opcode.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
u32
|
||||
acpi_ps_get_opcode_size (
|
||||
u32 opcode)
|
||||
u32 acpi_ps_get_opcode_size(u32 opcode)
|
||||
{
|
||||
|
||||
/* Extended (2-byte) opcode if > 255 */
|
||||
@@ -90,7 +85,6 @@ acpi_ps_get_opcode_size (
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_peek_opcode
|
||||
@@ -103,28 +97,24 @@ acpi_ps_get_opcode_size (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
u16
|
||||
acpi_ps_peek_opcode (
|
||||
struct acpi_parse_state *parser_state)
|
||||
u16 acpi_ps_peek_opcode(struct acpi_parse_state * parser_state)
|
||||
{
|
||||
u8 *aml;
|
||||
u16 opcode;
|
||||
|
||||
u8 *aml;
|
||||
u16 opcode;
|
||||
|
||||
aml = parser_state->aml;
|
||||
opcode = (u16) ACPI_GET8 (aml);
|
||||
opcode = (u16) ACPI_GET8(aml);
|
||||
|
||||
if (opcode == AML_EXTENDED_OP_PREFIX) {
|
||||
/* Extended opcode, get the second opcode byte */
|
||||
|
||||
aml++;
|
||||
opcode = (u16) ((opcode << 8) | ACPI_GET8 (aml));
|
||||
opcode = (u16) ((opcode << 8) | ACPI_GET8(aml));
|
||||
}
|
||||
|
||||
return (opcode);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_complete_this_op
|
||||
@@ -139,30 +129,28 @@ acpi_ps_peek_opcode (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_complete_this_op (
|
||||
struct acpi_walk_state *walk_state,
|
||||
union acpi_parse_object *op)
|
||||
acpi_ps_complete_this_op(struct acpi_walk_state * walk_state,
|
||||
union acpi_parse_object * op)
|
||||
{
|
||||
union acpi_parse_object *prev;
|
||||
union acpi_parse_object *next;
|
||||
const struct acpi_opcode_info *parent_info;
|
||||
union acpi_parse_object *replacement_op = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_complete_this_op", op);
|
||||
union acpi_parse_object *prev;
|
||||
union acpi_parse_object *next;
|
||||
const struct acpi_opcode_info *parent_info;
|
||||
union acpi_parse_object *replacement_op = NULL;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_complete_this_op", op);
|
||||
|
||||
/* Check for null Op, can happen if AML code is corrupt */
|
||||
|
||||
if (!op) {
|
||||
return_ACPI_STATUS (AE_OK); /* OK for now */
|
||||
return_ACPI_STATUS(AE_OK); /* OK for now */
|
||||
}
|
||||
|
||||
/* Delete this op and the subtree below it if asked to */
|
||||
|
||||
if (((walk_state->parse_flags & ACPI_PARSE_TREE_MASK) != ACPI_PARSE_DELETE_TREE) ||
|
||||
(walk_state->op_info->class == AML_CLASS_ARGUMENT)) {
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
if (((walk_state->parse_flags & ACPI_PARSE_TREE_MASK) !=
|
||||
ACPI_PARSE_DELETE_TREE)
|
||||
|| (walk_state->op_info->class == AML_CLASS_ARGUMENT)) {
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
/* Make sure that we only delete this subtree */
|
||||
@@ -179,7 +167,9 @@ acpi_ps_complete_this_op (
|
||||
* Check if we need to replace the operator and its subtree
|
||||
* with a return value op (placeholder op)
|
||||
*/
|
||||
parent_info = acpi_ps_get_opcode_info (op->common.parent->common.aml_opcode);
|
||||
parent_info =
|
||||
acpi_ps_get_opcode_info(op->common.parent->common.
|
||||
aml_opcode);
|
||||
|
||||
switch (parent_info->class) {
|
||||
case AML_CLASS_CONTROL:
|
||||
@@ -191,7 +181,8 @@ acpi_ps_complete_this_op (
|
||||
* These opcodes contain term_arg operands. The current
|
||||
* op must be replaced by a placeholder return op
|
||||
*/
|
||||
replacement_op = acpi_ps_alloc_op (AML_INT_RETURN_VALUE_OP);
|
||||
replacement_op =
|
||||
acpi_ps_alloc_op(AML_INT_RETURN_VALUE_OP);
|
||||
if (!replacement_op) {
|
||||
goto allocate_error;
|
||||
}
|
||||
@@ -203,35 +194,49 @@ acpi_ps_complete_this_op (
|
||||
* These opcodes contain term_arg operands. The current
|
||||
* op must be replaced by a placeholder return op
|
||||
*/
|
||||
if ((op->common.parent->common.aml_opcode == AML_REGION_OP) ||
|
||||
(op->common.parent->common.aml_opcode == AML_DATA_REGION_OP) ||
|
||||
(op->common.parent->common.aml_opcode == AML_BUFFER_OP) ||
|
||||
(op->common.parent->common.aml_opcode == AML_PACKAGE_OP) ||
|
||||
(op->common.parent->common.aml_opcode == AML_VAR_PACKAGE_OP)) {
|
||||
replacement_op = acpi_ps_alloc_op (AML_INT_RETURN_VALUE_OP);
|
||||
if ((op->common.parent->common.aml_opcode ==
|
||||
AML_REGION_OP)
|
||||
|| (op->common.parent->common.aml_opcode ==
|
||||
AML_DATA_REGION_OP)
|
||||
|| (op->common.parent->common.aml_opcode ==
|
||||
AML_BUFFER_OP)
|
||||
|| (op->common.parent->common.aml_opcode ==
|
||||
AML_PACKAGE_OP)
|
||||
|| (op->common.parent->common.aml_opcode ==
|
||||
AML_VAR_PACKAGE_OP)) {
|
||||
replacement_op =
|
||||
acpi_ps_alloc_op(AML_INT_RETURN_VALUE_OP);
|
||||
if (!replacement_op) {
|
||||
goto allocate_error;
|
||||
}
|
||||
}
|
||||
else if ((op->common.parent->common.aml_opcode == AML_NAME_OP) &&
|
||||
(walk_state->pass_number <= ACPI_IMODE_LOAD_PASS2)) {
|
||||
if ((op->common.aml_opcode == AML_BUFFER_OP) ||
|
||||
(op->common.aml_opcode == AML_PACKAGE_OP) ||
|
||||
(op->common.aml_opcode == AML_VAR_PACKAGE_OP)) {
|
||||
replacement_op = acpi_ps_alloc_op (op->common.aml_opcode);
|
||||
} else
|
||||
if ((op->common.parent->common.aml_opcode ==
|
||||
AML_NAME_OP)
|
||||
&& (walk_state->pass_number <=
|
||||
ACPI_IMODE_LOAD_PASS2)) {
|
||||
if ((op->common.aml_opcode == AML_BUFFER_OP)
|
||||
|| (op->common.aml_opcode == AML_PACKAGE_OP)
|
||||
|| (op->common.aml_opcode ==
|
||||
AML_VAR_PACKAGE_OP)) {
|
||||
replacement_op =
|
||||
acpi_ps_alloc_op(op->common.
|
||||
aml_opcode);
|
||||
if (!replacement_op) {
|
||||
goto allocate_error;
|
||||
}
|
||||
|
||||
replacement_op->named.data = op->named.data;
|
||||
replacement_op->named.length = op->named.length;
|
||||
replacement_op->named.data =
|
||||
op->named.data;
|
||||
replacement_op->named.length =
|
||||
op->named.length;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
replacement_op = acpi_ps_alloc_op (AML_INT_RETURN_VALUE_OP);
|
||||
replacement_op =
|
||||
acpi_ps_alloc_op(AML_INT_RETURN_VALUE_OP);
|
||||
if (!replacement_op) {
|
||||
goto allocate_error;
|
||||
}
|
||||
@@ -243,59 +248,64 @@ acpi_ps_complete_this_op (
|
||||
/* This op is the first in the list */
|
||||
|
||||
if (replacement_op) {
|
||||
replacement_op->common.parent = op->common.parent;
|
||||
replacement_op->common.value.arg = NULL;
|
||||
replacement_op->common.node = op->common.node;
|
||||
op->common.parent->common.value.arg = replacement_op;
|
||||
replacement_op->common.next = op->common.next;
|
||||
}
|
||||
else {
|
||||
op->common.parent->common.value.arg = op->common.next;
|
||||
replacement_op->common.parent =
|
||||
op->common.parent;
|
||||
replacement_op->common.value.arg = NULL;
|
||||
replacement_op->common.node = op->common.node;
|
||||
op->common.parent->common.value.arg =
|
||||
replacement_op;
|
||||
replacement_op->common.next = op->common.next;
|
||||
} else {
|
||||
op->common.parent->common.value.arg =
|
||||
op->common.next;
|
||||
}
|
||||
}
|
||||
|
||||
/* Search the parent list */
|
||||
|
||||
else while (prev) {
|
||||
/* Traverse all siblings in the parent's argument list */
|
||||
else
|
||||
while (prev) {
|
||||
/* Traverse all siblings in the parent's argument list */
|
||||
|
||||
next = prev->common.next;
|
||||
if (next == op) {
|
||||
if (replacement_op) {
|
||||
replacement_op->common.parent = op->common.parent;
|
||||
replacement_op->common.value.arg = NULL;
|
||||
replacement_op->common.node = op->common.node;
|
||||
prev->common.next = replacement_op;
|
||||
replacement_op->common.next = op->common.next;
|
||||
next = NULL;
|
||||
}
|
||||
else {
|
||||
prev->common.next = op->common.next;
|
||||
next = NULL;
|
||||
next = prev->common.next;
|
||||
if (next == op) {
|
||||
if (replacement_op) {
|
||||
replacement_op->common.parent =
|
||||
op->common.parent;
|
||||
replacement_op->common.value.
|
||||
arg = NULL;
|
||||
replacement_op->common.node =
|
||||
op->common.node;
|
||||
prev->common.next =
|
||||
replacement_op;
|
||||
replacement_op->common.next =
|
||||
op->common.next;
|
||||
next = NULL;
|
||||
} else {
|
||||
prev->common.next =
|
||||
op->common.next;
|
||||
next = NULL;
|
||||
}
|
||||
}
|
||||
prev = next;
|
||||
}
|
||||
prev = next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cleanup:
|
||||
cleanup:
|
||||
|
||||
/* Now we can actually delete the subtree rooted at Op */
|
||||
|
||||
acpi_ps_delete_parse_tree (op);
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
acpi_ps_delete_parse_tree(op);
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
|
||||
|
||||
allocate_error:
|
||||
allocate_error:
|
||||
|
||||
/* Always delete the subtree, even on error */
|
||||
|
||||
acpi_ps_delete_parse_tree (op);
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
acpi_ps_delete_parse_tree(op);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_next_parse_state
|
||||
@@ -312,17 +322,14 @@ allocate_error:
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_next_parse_state (
|
||||
struct acpi_walk_state *walk_state,
|
||||
union acpi_parse_object *op,
|
||||
acpi_status callback_status)
|
||||
acpi_ps_next_parse_state(struct acpi_walk_state *walk_state,
|
||||
union acpi_parse_object *op,
|
||||
acpi_status callback_status)
|
||||
{
|
||||
struct acpi_parse_state *parser_state = &walk_state->parser_state;
|
||||
acpi_status status = AE_CTRL_PENDING;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_next_parse_state", op);
|
||||
struct acpi_parse_state *parser_state = &walk_state->parser_state;
|
||||
acpi_status status = AE_CTRL_PENDING;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_next_parse_state", op);
|
||||
|
||||
switch (callback_status) {
|
||||
case AE_CTRL_TERMINATE:
|
||||
@@ -335,7 +342,6 @@ acpi_ps_next_parse_state (
|
||||
status = AE_CTRL_TERMINATE;
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_BREAK:
|
||||
|
||||
parser_state->aml = walk_state->aml_last_while;
|
||||
@@ -345,7 +351,6 @@ acpi_ps_next_parse_state (
|
||||
|
||||
case AE_CTRL_CONTINUE:
|
||||
|
||||
|
||||
parser_state->aml = walk_state->aml_last_while;
|
||||
status = AE_CTRL_CONTINUE;
|
||||
break;
|
||||
@@ -369,10 +374,9 @@ acpi_ps_next_parse_state (
|
||||
* Predicate of an IF was true, and we are at the matching ELSE.
|
||||
* Just close out this package
|
||||
*/
|
||||
parser_state->aml = acpi_ps_get_next_package_end (parser_state);
|
||||
parser_state->aml = acpi_ps_get_next_package_end(parser_state);
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_FALSE:
|
||||
|
||||
/*
|
||||
@@ -390,7 +394,6 @@ acpi_ps_next_parse_state (
|
||||
status = AE_CTRL_END;
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_TRANSFER:
|
||||
|
||||
/* A method call (invocation) -- transfer control */
|
||||
@@ -398,14 +401,15 @@ acpi_ps_next_parse_state (
|
||||
status = AE_CTRL_TRANSFER;
|
||||
walk_state->prev_op = op;
|
||||
walk_state->method_call_op = op;
|
||||
walk_state->method_call_node = (op->common.value.arg)->common.node;
|
||||
walk_state->method_call_node =
|
||||
(op->common.value.arg)->common.node;
|
||||
|
||||
/* Will return value (if any) be used by the caller? */
|
||||
|
||||
walk_state->return_used = acpi_ds_is_result_used (op, walk_state);
|
||||
walk_state->return_used =
|
||||
acpi_ds_is_result_used(op, walk_state);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
status = callback_status;
|
||||
@@ -415,10 +419,9 @@ acpi_ps_next_parse_state (
|
||||
break;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_parse_aml
|
||||
@@ -432,34 +435,30 @@ acpi_ps_next_parse_state (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_parse_aml (
|
||||
struct acpi_walk_state *walk_state)
|
||||
acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_status terminate_status;
|
||||
struct acpi_thread_state *thread;
|
||||
struct acpi_thread_state *prev_walk_list = acpi_gbl_current_walk_list;
|
||||
struct acpi_walk_state *previous_walk_state;
|
||||
acpi_status status;
|
||||
acpi_status terminate_status;
|
||||
struct acpi_thread_state *thread;
|
||||
struct acpi_thread_state *prev_walk_list = acpi_gbl_current_walk_list;
|
||||
struct acpi_walk_state *previous_walk_state;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_parse_aml");
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_parse_aml");
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Entered with walk_state=%p Aml=%p size=%X\n",
|
||||
walk_state, walk_state->parser_state.aml,
|
||||
walk_state->parser_state.aml_size));
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Entered with walk_state=%p Aml=%p size=%X\n",
|
||||
walk_state, walk_state->parser_state.aml,
|
||||
walk_state->parser_state.aml_size));
|
||||
|
||||
/* Create and initialize a new thread state */
|
||||
|
||||
thread = acpi_ut_create_thread_state ();
|
||||
thread = acpi_ut_create_thread_state();
|
||||
if (!thread) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
walk_state->thread = thread;
|
||||
acpi_ds_push_walk_state (walk_state, thread);
|
||||
acpi_ds_push_walk_state(walk_state, thread);
|
||||
|
||||
/*
|
||||
* This global allows the AML debugger to get a handle to the currently
|
||||
@@ -471,54 +470,56 @@ acpi_ps_parse_aml (
|
||||
* Execute the walk loop as long as there is a valid Walk State. This
|
||||
* handles nested control method invocations without recursion.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "State=%p\n", walk_state));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "State=%p\n", walk_state));
|
||||
|
||||
status = AE_OK;
|
||||
while (walk_state) {
|
||||
if (ACPI_SUCCESS (status)) {
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
/*
|
||||
* The parse_loop executes AML until the method terminates
|
||||
* or calls another method.
|
||||
*/
|
||||
status = acpi_ps_parse_loop (walk_state);
|
||||
status = acpi_ps_parse_loop(walk_state);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Completed one call to walk loop, %s State=%p\n",
|
||||
acpi_format_exception (status), walk_state));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Completed one call to walk loop, %s State=%p\n",
|
||||
acpi_format_exception(status), walk_state));
|
||||
|
||||
if (status == AE_CTRL_TRANSFER) {
|
||||
/*
|
||||
* A method call was detected.
|
||||
* Transfer control to the called control method
|
||||
*/
|
||||
status = acpi_ds_call_control_method (thread, walk_state, NULL);
|
||||
status =
|
||||
acpi_ds_call_control_method(thread, walk_state,
|
||||
NULL);
|
||||
|
||||
/*
|
||||
* If the transfer to the new method method call worked, a new walk
|
||||
* state was created -- get it
|
||||
*/
|
||||
walk_state = acpi_ds_get_current_walk_state (thread);
|
||||
walk_state = acpi_ds_get_current_walk_state(thread);
|
||||
continue;
|
||||
}
|
||||
else if (status == AE_CTRL_TERMINATE) {
|
||||
} else if (status == AE_CTRL_TERMINATE) {
|
||||
status = AE_OK;
|
||||
}
|
||||
else if ((status != AE_OK) && (walk_state->method_desc)) {
|
||||
ACPI_REPORT_METHOD_ERROR ("Method execution failed",
|
||||
walk_state->method_node, NULL, status);
|
||||
} else if ((status != AE_OK) && (walk_state->method_desc)) {
|
||||
ACPI_REPORT_METHOD_ERROR("Method execution failed",
|
||||
walk_state->method_node, NULL,
|
||||
status);
|
||||
|
||||
/* Check for possible multi-thread reentrancy problem */
|
||||
|
||||
if ((status == AE_ALREADY_EXISTS) &&
|
||||
(!walk_state->method_desc->method.semaphore)) {
|
||||
(!walk_state->method_desc->method.semaphore)) {
|
||||
/*
|
||||
* This method is marked not_serialized, but it tried to create
|
||||
* a named object, causing the second thread entrance to fail.
|
||||
* We will workaround this by marking the method permanently
|
||||
* as Serialized.
|
||||
*/
|
||||
walk_state->method_desc->method.method_flags |= AML_METHOD_SERIALIZED;
|
||||
walk_state->method_desc->method.method_flags |=
|
||||
AML_METHOD_SERIALIZED;
|
||||
walk_state->method_desc->method.concurrency = 1;
|
||||
}
|
||||
}
|
||||
@@ -533,21 +534,22 @@ acpi_ps_parse_aml (
|
||||
|
||||
/* We are done with this walk, move on to the parent if any */
|
||||
|
||||
walk_state = acpi_ds_pop_walk_state (thread);
|
||||
walk_state = acpi_ds_pop_walk_state(thread);
|
||||
|
||||
/* Reset the current scope to the beginning of scope stack */
|
||||
|
||||
acpi_ds_scope_stack_clear (walk_state);
|
||||
acpi_ds_scope_stack_clear(walk_state);
|
||||
|
||||
/*
|
||||
* If we just returned from the execution of a control method,
|
||||
* there's lots of cleanup to do
|
||||
*/
|
||||
if ((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) {
|
||||
terminate_status = acpi_ds_terminate_control_method (walk_state);
|
||||
if (ACPI_FAILURE (terminate_status)) {
|
||||
ACPI_REPORT_ERROR ((
|
||||
"Could not terminate control method properly\n"));
|
||||
if ((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) ==
|
||||
ACPI_PARSE_EXECUTE) {
|
||||
terminate_status =
|
||||
acpi_ds_terminate_control_method(walk_state);
|
||||
if (ACPI_FAILURE(terminate_status)) {
|
||||
ACPI_REPORT_ERROR(("Could not terminate control method properly\n"));
|
||||
|
||||
/* Ignore error and continue */
|
||||
}
|
||||
@@ -555,46 +557,53 @@ acpi_ps_parse_aml (
|
||||
|
||||
/* Delete this walk state and all linked control states */
|
||||
|
||||
acpi_ps_cleanup_scope (&walk_state->parser_state);
|
||||
acpi_ps_cleanup_scope(&walk_state->parser_state);
|
||||
|
||||
previous_walk_state = walk_state;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"return_value=%p, implicit_value=%p State=%p\n",
|
||||
walk_state->return_desc, walk_state->implicit_return_obj, walk_state));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"return_value=%p, implicit_value=%p State=%p\n",
|
||||
walk_state->return_desc,
|
||||
walk_state->implicit_return_obj, walk_state));
|
||||
|
||||
/* Check if we have restarted a preempted walk */
|
||||
|
||||
walk_state = acpi_ds_get_current_walk_state (thread);
|
||||
walk_state = acpi_ds_get_current_walk_state(thread);
|
||||
if (walk_state) {
|
||||
if (ACPI_SUCCESS (status)) {
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
/*
|
||||
* There is another walk state, restart it.
|
||||
* If the method return value is not used by the parent,
|
||||
* The object is deleted
|
||||
*/
|
||||
if (!previous_walk_state->return_desc) {
|
||||
status = acpi_ds_restart_control_method (walk_state,
|
||||
previous_walk_state->implicit_return_obj);
|
||||
}
|
||||
else {
|
||||
status =
|
||||
acpi_ds_restart_control_method
|
||||
(walk_state,
|
||||
previous_walk_state->
|
||||
implicit_return_obj);
|
||||
} else {
|
||||
/*
|
||||
* We have a valid return value, delete any implicit
|
||||
* return value.
|
||||
*/
|
||||
acpi_ds_clear_implicit_return (previous_walk_state);
|
||||
acpi_ds_clear_implicit_return
|
||||
(previous_walk_state);
|
||||
|
||||
status = acpi_ds_restart_control_method (walk_state,
|
||||
previous_walk_state->return_desc);
|
||||
status =
|
||||
acpi_ds_restart_control_method
|
||||
(walk_state,
|
||||
previous_walk_state->return_desc);
|
||||
}
|
||||
if (ACPI_SUCCESS (status)) {
|
||||
walk_state->walk_type |= ACPI_WALK_METHOD_RESTART;
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
walk_state->walk_type |=
|
||||
ACPI_WALK_METHOD_RESTART;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* On error, delete any return object */
|
||||
|
||||
acpi_ut_remove_reference (previous_walk_state->return_desc);
|
||||
acpi_ut_remove_reference(previous_walk_state->
|
||||
return_desc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -605,37 +614,36 @@ acpi_ps_parse_aml (
|
||||
else if (previous_walk_state->caller_return_desc) {
|
||||
if (previous_walk_state->implicit_return_obj) {
|
||||
*(previous_walk_state->caller_return_desc) =
|
||||
previous_walk_state->implicit_return_obj;
|
||||
}
|
||||
else {
|
||||
/* NULL if no return value */
|
||||
previous_walk_state->implicit_return_obj;
|
||||
} else {
|
||||
/* NULL if no return value */
|
||||
|
||||
*(previous_walk_state->caller_return_desc) =
|
||||
previous_walk_state->return_desc;
|
||||
previous_walk_state->return_desc;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (previous_walk_state->return_desc) {
|
||||
/* Caller doesn't want it, must delete it */
|
||||
|
||||
acpi_ut_remove_reference (previous_walk_state->return_desc);
|
||||
acpi_ut_remove_reference(previous_walk_state->
|
||||
return_desc);
|
||||
}
|
||||
if (previous_walk_state->implicit_return_obj) {
|
||||
/* Caller doesn't want it, must delete it */
|
||||
|
||||
acpi_ut_remove_reference (previous_walk_state->implicit_return_obj);
|
||||
acpi_ut_remove_reference(previous_walk_state->
|
||||
implicit_return_obj);
|
||||
}
|
||||
}
|
||||
|
||||
acpi_ds_delete_walk_state (previous_walk_state);
|
||||
acpi_ds_delete_walk_state(previous_walk_state);
|
||||
}
|
||||
|
||||
/* Normal exit */
|
||||
|
||||
acpi_ex_release_all_mutexes (thread);
|
||||
acpi_ut_delete_generic_state (ACPI_CAST_PTR (union acpi_generic_state, thread));
|
||||
acpi_ex_release_all_mutexes(thread);
|
||||
acpi_ut_delete_generic_state(ACPI_CAST_PTR
|
||||
(union acpi_generic_state, thread));
|
||||
acpi_gbl_current_walk_list = prev_walk_list;
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -41,13 +41,11 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psscope")
|
||||
|
||||
ACPI_MODULE_NAME("psscope")
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -60,16 +58,13 @@
|
||||
* DESCRIPTION: Get parent of current op being parsed
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
union acpi_parse_object *
|
||||
acpi_ps_get_parent_scope (
|
||||
struct acpi_parse_state *parser_state)
|
||||
union acpi_parse_object *acpi_ps_get_parent_scope(struct acpi_parse_state
|
||||
*parser_state)
|
||||
{
|
||||
|
||||
return (parser_state->scope->parse_scope.op);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_has_completed_scope
|
||||
@@ -84,17 +79,14 @@ acpi_ps_get_parent_scope (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
u8
|
||||
acpi_ps_has_completed_scope (
|
||||
struct acpi_parse_state *parser_state)
|
||||
u8 acpi_ps_has_completed_scope(struct acpi_parse_state * parser_state)
|
||||
{
|
||||
|
||||
return ((u8)
|
||||
((parser_state->aml >= parser_state->scope->parse_scope.arg_end ||
|
||||
!parser_state->scope->parse_scope.arg_count)));
|
||||
((parser_state->aml >= parser_state->scope->parse_scope.arg_end
|
||||
|| !parser_state->scope->parse_scope.arg_count)));
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_init_scope
|
||||
@@ -109,34 +101,30 @@ acpi_ps_has_completed_scope (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_init_scope (
|
||||
struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object *root_op)
|
||||
acpi_ps_init_scope(struct acpi_parse_state * parser_state,
|
||||
union acpi_parse_object * root_op)
|
||||
{
|
||||
union acpi_generic_state *scope;
|
||||
union acpi_generic_state *scope;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_init_scope", root_op);
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_init_scope", root_op);
|
||||
|
||||
|
||||
scope = acpi_ut_create_generic_state ();
|
||||
scope = acpi_ut_create_generic_state();
|
||||
if (!scope) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
scope->common.data_type = ACPI_DESC_TYPE_STATE_RPSCOPE;
|
||||
scope->parse_scope.op = root_op;
|
||||
scope->common.data_type = ACPI_DESC_TYPE_STATE_RPSCOPE;
|
||||
scope->parse_scope.op = root_op;
|
||||
scope->parse_scope.arg_count = ACPI_VAR_ARGS;
|
||||
scope->parse_scope.arg_end = parser_state->aml_end;
|
||||
scope->parse_scope.pkg_end = parser_state->aml_end;
|
||||
scope->parse_scope.arg_end = parser_state->aml_end;
|
||||
scope->parse_scope.pkg_end = parser_state->aml_end;
|
||||
|
||||
parser_state->scope = scope;
|
||||
parser_state->start_op = root_op;
|
||||
parser_state->scope = scope;
|
||||
parser_state->start_op = root_op;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_push_scope
|
||||
@@ -153,48 +141,42 @@ acpi_ps_init_scope (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_push_scope (
|
||||
struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object *op,
|
||||
u32 remaining_args,
|
||||
u32 arg_count)
|
||||
acpi_ps_push_scope(struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object *op,
|
||||
u32 remaining_args, u32 arg_count)
|
||||
{
|
||||
union acpi_generic_state *scope;
|
||||
union acpi_generic_state *scope;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_push_scope", op);
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_push_scope", op);
|
||||
|
||||
|
||||
scope = acpi_ut_create_generic_state ();
|
||||
scope = acpi_ut_create_generic_state();
|
||||
if (!scope) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
scope->common.data_type = ACPI_DESC_TYPE_STATE_PSCOPE;
|
||||
scope->parse_scope.op = op;
|
||||
scope->common.data_type = ACPI_DESC_TYPE_STATE_PSCOPE;
|
||||
scope->parse_scope.op = op;
|
||||
scope->parse_scope.arg_list = remaining_args;
|
||||
scope->parse_scope.arg_count = arg_count;
|
||||
scope->parse_scope.pkg_end = parser_state->pkg_end;
|
||||
|
||||
/* Push onto scope stack */
|
||||
|
||||
acpi_ut_push_generic_state (&parser_state->scope, scope);
|
||||
acpi_ut_push_generic_state(&parser_state->scope, scope);
|
||||
|
||||
if (arg_count == ACPI_VAR_ARGS) {
|
||||
/* Multiple arguments */
|
||||
|
||||
scope->parse_scope.arg_end = parser_state->pkg_end;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* Single argument */
|
||||
|
||||
scope->parse_scope.arg_end = ACPI_TO_POINTER (ACPI_MAX_PTR);
|
||||
scope->parse_scope.arg_end = ACPI_TO_POINTER(ACPI_MAX_PTR);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_pop_scope
|
||||
@@ -212,48 +194,41 @@ acpi_ps_push_scope (
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_pop_scope (
|
||||
struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object **op,
|
||||
u32 *arg_list,
|
||||
u32 *arg_count)
|
||||
acpi_ps_pop_scope(struct acpi_parse_state *parser_state,
|
||||
union acpi_parse_object **op, u32 * arg_list, u32 * arg_count)
|
||||
{
|
||||
union acpi_generic_state *scope = parser_state->scope;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_pop_scope");
|
||||
union acpi_generic_state *scope = parser_state->scope;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_pop_scope");
|
||||
|
||||
/* Only pop the scope if there is in fact a next scope */
|
||||
|
||||
if (scope->common.next) {
|
||||
scope = acpi_ut_pop_generic_state (&parser_state->scope);
|
||||
scope = acpi_ut_pop_generic_state(&parser_state->scope);
|
||||
|
||||
/* return to parsing previous op */
|
||||
|
||||
*op = scope->parse_scope.op;
|
||||
*arg_list = scope->parse_scope.arg_list;
|
||||
*arg_count = scope->parse_scope.arg_count;
|
||||
*op = scope->parse_scope.op;
|
||||
*arg_list = scope->parse_scope.arg_list;
|
||||
*arg_count = scope->parse_scope.arg_count;
|
||||
parser_state->pkg_end = scope->parse_scope.pkg_end;
|
||||
|
||||
/* All done with this scope state structure */
|
||||
|
||||
acpi_ut_delete_generic_state (scope);
|
||||
}
|
||||
else {
|
||||
acpi_ut_delete_generic_state(scope);
|
||||
} else {
|
||||
/* empty parse stack, prepare to fetch next opcode */
|
||||
|
||||
*op = NULL;
|
||||
*op = NULL;
|
||||
*arg_list = 0;
|
||||
*arg_count = 0;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Popped Op %p Args %X\n", *op, *arg_count));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Popped Op %p Args %X\n", *op, *arg_count));
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_cleanup_scope
|
||||
@@ -267,15 +242,11 @@ acpi_ps_pop_scope (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_cleanup_scope (
|
||||
struct acpi_parse_state *parser_state)
|
||||
void acpi_ps_cleanup_scope(struct acpi_parse_state *parser_state)
|
||||
{
|
||||
union acpi_generic_state *scope;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_cleanup_scope", parser_state);
|
||||
union acpi_generic_state *scope;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_cleanup_scope", parser_state);
|
||||
|
||||
if (!parser_state) {
|
||||
return_VOID;
|
||||
@@ -284,10 +255,9 @@ acpi_ps_cleanup_scope (
|
||||
/* Delete anything on the scope stack */
|
||||
|
||||
while (parser_state->scope) {
|
||||
scope = acpi_ut_pop_generic_state (&parser_state->scope);
|
||||
acpi_ut_delete_generic_state (scope);
|
||||
scope = acpi_ut_pop_generic_state(&parser_state->scope);
|
||||
acpi_ut_delete_generic_state(scope);
|
||||
}
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
@@ -41,23 +41,18 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
#include <acpi/amlcode.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("pstree")
|
||||
ACPI_MODULE_NAME("pstree")
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
#ifdef ACPI_OBSOLETE_FUNCTIONS
|
||||
union acpi_parse_object *
|
||||
acpi_ps_get_child (
|
||||
union acpi_parse_object *op);
|
||||
union acpi_parse_object *acpi_ps_get_child(union acpi_parse_object *op);
|
||||
#endif
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_arg
|
||||
@@ -71,21 +66,16 @@ acpi_ps_get_child (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
union acpi_parse_object *
|
||||
acpi_ps_get_arg (
|
||||
union acpi_parse_object *op,
|
||||
u32 argn)
|
||||
union acpi_parse_object *acpi_ps_get_arg(union acpi_parse_object *op, u32 argn)
|
||||
{
|
||||
union acpi_parse_object *arg = NULL;
|
||||
const struct acpi_opcode_info *op_info;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
union acpi_parse_object *arg = NULL;
|
||||
const struct acpi_opcode_info *op_info;
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
/* Get the info structure for this opcode */
|
||||
|
||||
op_info = acpi_ps_get_opcode_info (op->common.aml_opcode);
|
||||
op_info = acpi_ps_get_opcode_info(op->common.aml_opcode);
|
||||
if (op_info->class == AML_CLASS_UNKNOWN) {
|
||||
/* Invalid opcode or ASCII character */
|
||||
|
||||
@@ -111,7 +101,6 @@ acpi_ps_get_arg (
|
||||
return (arg);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_append_arg
|
||||
@@ -126,16 +115,12 @@ acpi_ps_get_arg (
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_append_arg (
|
||||
union acpi_parse_object *op,
|
||||
union acpi_parse_object *arg)
|
||||
acpi_ps_append_arg(union acpi_parse_object *op, union acpi_parse_object *arg)
|
||||
{
|
||||
union acpi_parse_object *prev_arg;
|
||||
const struct acpi_opcode_info *op_info;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
union acpi_parse_object *prev_arg;
|
||||
const struct acpi_opcode_info *op_info;
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
if (!op) {
|
||||
return;
|
||||
@@ -143,12 +128,11 @@ acpi_ps_append_arg (
|
||||
|
||||
/* Get the info structure for this opcode */
|
||||
|
||||
op_info = acpi_ps_get_opcode_info (op->common.aml_opcode);
|
||||
op_info = acpi_ps_get_opcode_info(op->common.aml_opcode);
|
||||
if (op_info->class == AML_CLASS_UNKNOWN) {
|
||||
/* Invalid opcode */
|
||||
|
||||
ACPI_REPORT_ERROR (("ps_append_arg: Invalid AML Opcode: 0x%2.2X\n",
|
||||
op->common.aml_opcode));
|
||||
ACPI_REPORT_ERROR(("ps_append_arg: Invalid AML Opcode: 0x%2.2X\n", op->common.aml_opcode));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -170,8 +154,7 @@ acpi_ps_append_arg (
|
||||
prev_arg = prev_arg->common.next;
|
||||
}
|
||||
prev_arg->common.next = arg;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* No argument list, this will be the first argument */
|
||||
|
||||
op->common.value.arg = arg;
|
||||
@@ -185,7 +168,6 @@ acpi_ps_append_arg (
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef ACPI_FUTURE_USAGE
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -201,18 +183,14 @@ acpi_ps_append_arg (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
union acpi_parse_object *
|
||||
acpi_ps_get_depth_next (
|
||||
union acpi_parse_object *origin,
|
||||
union acpi_parse_object *op)
|
||||
union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,
|
||||
union acpi_parse_object *op)
|
||||
{
|
||||
union acpi_parse_object *next = NULL;
|
||||
union acpi_parse_object *parent;
|
||||
union acpi_parse_object *arg;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
union acpi_parse_object *next = NULL;
|
||||
union acpi_parse_object *parent;
|
||||
union acpi_parse_object *arg;
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
if (!op) {
|
||||
return (NULL);
|
||||
@@ -220,7 +198,7 @@ acpi_ps_get_depth_next (
|
||||
|
||||
/* Look for an argument or child */
|
||||
|
||||
next = acpi_ps_get_arg (op, 0);
|
||||
next = acpi_ps_get_arg(op, 0);
|
||||
if (next) {
|
||||
return (next);
|
||||
}
|
||||
@@ -237,7 +215,7 @@ acpi_ps_get_depth_next (
|
||||
parent = op->common.parent;
|
||||
|
||||
while (parent) {
|
||||
arg = acpi_ps_get_arg (parent, 0);
|
||||
arg = acpi_ps_get_arg(parent, 0);
|
||||
while (arg && (arg != origin) && (arg != op)) {
|
||||
arg = arg->common.next;
|
||||
}
|
||||
@@ -261,7 +239,6 @@ acpi_ps_get_depth_next (
|
||||
return (next);
|
||||
}
|
||||
|
||||
|
||||
#ifdef ACPI_OBSOLETE_FUNCTIONS
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -275,15 +252,11 @@ acpi_ps_get_depth_next (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
union acpi_parse_object *
|
||||
acpi_ps_get_child (
|
||||
union acpi_parse_object *op)
|
||||
union acpi_parse_object *acpi_ps_get_child(union acpi_parse_object *op)
|
||||
{
|
||||
union acpi_parse_object *child = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
union acpi_parse_object *child = NULL;
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
switch (op->common.aml_opcode) {
|
||||
case AML_SCOPE_OP:
|
||||
@@ -292,10 +265,9 @@ acpi_ps_get_child (
|
||||
case AML_THERMAL_ZONE_OP:
|
||||
case AML_INT_METHODCALL_OP:
|
||||
|
||||
child = acpi_ps_get_arg (op, 0);
|
||||
child = acpi_ps_get_arg(op, 0);
|
||||
break;
|
||||
|
||||
|
||||
case AML_BUFFER_OP:
|
||||
case AML_PACKAGE_OP:
|
||||
case AML_METHOD_OP:
|
||||
@@ -303,24 +275,21 @@ acpi_ps_get_child (
|
||||
case AML_WHILE_OP:
|
||||
case AML_FIELD_OP:
|
||||
|
||||
child = acpi_ps_get_arg (op, 1);
|
||||
child = acpi_ps_get_arg(op, 1);
|
||||
break;
|
||||
|
||||
|
||||
case AML_POWER_RES_OP:
|
||||
case AML_INDEX_FIELD_OP:
|
||||
|
||||
child = acpi_ps_get_arg (op, 2);
|
||||
child = acpi_ps_get_arg(op, 2);
|
||||
break;
|
||||
|
||||
|
||||
case AML_PROCESSOR_OP:
|
||||
case AML_BANK_FIELD_OP:
|
||||
|
||||
child = acpi_ps_get_arg (op, 3);
|
||||
child = acpi_ps_get_arg(op, 3);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
/* All others have no children */
|
||||
break;
|
||||
@@ -330,5 +299,4 @@ acpi_ps_get_child (
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
@@ -41,14 +41,12 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
#include <acpi/amlcode.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psutils")
|
||||
|
||||
ACPI_MODULE_NAME("psutils")
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -61,15 +59,11 @@
|
||||
* DESCRIPTION: Create a Scope and associated namepath op with the root name
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
union acpi_parse_object *
|
||||
acpi_ps_create_scope_op (
|
||||
void)
|
||||
union acpi_parse_object *acpi_ps_create_scope_op(void)
|
||||
{
|
||||
union acpi_parse_object *scope_op;
|
||||
union acpi_parse_object *scope_op;
|
||||
|
||||
|
||||
scope_op = acpi_ps_alloc_op (AML_SCOPE_OP);
|
||||
scope_op = acpi_ps_alloc_op(AML_SCOPE_OP);
|
||||
if (!scope_op) {
|
||||
return (NULL);
|
||||
}
|
||||
@@ -78,7 +72,6 @@ acpi_ps_create_scope_op (
|
||||
return (scope_op);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_init_op
|
||||
@@ -92,23 +85,19 @@ acpi_ps_create_scope_op (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_init_op (
|
||||
union acpi_parse_object *op,
|
||||
u16 opcode)
|
||||
void acpi_ps_init_op(union acpi_parse_object *op, u16 opcode)
|
||||
{
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
op->common.data_type = ACPI_DESC_TYPE_PARSER;
|
||||
op->common.aml_opcode = opcode;
|
||||
|
||||
ACPI_DISASM_ONLY_MEMBERS (ACPI_STRNCPY (op->common.aml_op_name,
|
||||
(acpi_ps_get_opcode_info (opcode))->name,
|
||||
sizeof (op->common.aml_op_name)));
|
||||
ACPI_DISASM_ONLY_MEMBERS(ACPI_STRNCPY(op->common.aml_op_name,
|
||||
(acpi_ps_get_opcode_info
|
||||
(opcode))->name,
|
||||
sizeof(op->common.aml_op_name)));
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_alloc_op
|
||||
@@ -123,29 +112,23 @@ acpi_ps_init_op (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
union acpi_parse_object*
|
||||
acpi_ps_alloc_op (
|
||||
u16 opcode)
|
||||
union acpi_parse_object *acpi_ps_alloc_op(u16 opcode)
|
||||
{
|
||||
union acpi_parse_object *op;
|
||||
const struct acpi_opcode_info *op_info;
|
||||
u8 flags = ACPI_PARSEOP_GENERIC;
|
||||
union acpi_parse_object *op;
|
||||
const struct acpi_opcode_info *op_info;
|
||||
u8 flags = ACPI_PARSEOP_GENERIC;
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
op_info = acpi_ps_get_opcode_info (opcode);
|
||||
op_info = acpi_ps_get_opcode_info(opcode);
|
||||
|
||||
/* Determine type of parse_op required */
|
||||
|
||||
if (op_info->flags & AML_DEFER) {
|
||||
flags = ACPI_PARSEOP_DEFERRED;
|
||||
}
|
||||
else if (op_info->flags & AML_NAMED) {
|
||||
} else if (op_info->flags & AML_NAMED) {
|
||||
flags = ACPI_PARSEOP_NAMED;
|
||||
}
|
||||
else if (opcode == AML_INT_BYTELIST_OP) {
|
||||
} else if (opcode == AML_INT_BYTELIST_OP) {
|
||||
flags = ACPI_PARSEOP_BYTELIST;
|
||||
}
|
||||
|
||||
@@ -154,27 +137,25 @@ acpi_ps_alloc_op (
|
||||
if (flags == ACPI_PARSEOP_GENERIC) {
|
||||
/* The generic op (default) is by far the most common (16 to 1) */
|
||||
|
||||
op = acpi_os_acquire_object (acpi_gbl_ps_node_cache);
|
||||
op = acpi_os_acquire_object(acpi_gbl_ps_node_cache);
|
||||
memset(op, 0, sizeof(struct acpi_parse_obj_common));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* Extended parseop */
|
||||
|
||||
op = acpi_os_acquire_object (acpi_gbl_ps_node_ext_cache);
|
||||
op = acpi_os_acquire_object(acpi_gbl_ps_node_ext_cache);
|
||||
memset(op, 0, sizeof(struct acpi_parse_obj_named));
|
||||
}
|
||||
|
||||
/* Initialize the Op */
|
||||
|
||||
if (op) {
|
||||
acpi_ps_init_op (op, opcode);
|
||||
acpi_ps_init_op(op, opcode);
|
||||
op->common.flags = flags;
|
||||
}
|
||||
|
||||
return (op);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_free_op
|
||||
@@ -188,26 +169,22 @@ acpi_ps_alloc_op (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_free_op (
|
||||
union acpi_parse_object *op)
|
||||
void acpi_ps_free_op(union acpi_parse_object *op)
|
||||
{
|
||||
ACPI_FUNCTION_NAME ("ps_free_op");
|
||||
|
||||
ACPI_FUNCTION_NAME("ps_free_op");
|
||||
|
||||
if (op->common.aml_opcode == AML_INT_RETURN_VALUE_OP) {
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", op));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n",
|
||||
op));
|
||||
}
|
||||
|
||||
if (op->common.flags & ACPI_PARSEOP_GENERIC) {
|
||||
(void) acpi_os_release_object (acpi_gbl_ps_node_cache, op);
|
||||
}
|
||||
else {
|
||||
(void) acpi_os_release_object (acpi_gbl_ps_node_ext_cache, op);
|
||||
(void)acpi_os_release_object(acpi_gbl_ps_node_cache, op);
|
||||
} else {
|
||||
(void)acpi_os_release_object(acpi_gbl_ps_node_ext_cache, op);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: Utility functions
|
||||
@@ -216,36 +193,27 @@ acpi_ps_free_op (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
* Is "c" a namestring lead character?
|
||||
*/
|
||||
u8
|
||||
acpi_ps_is_leading_char (
|
||||
u32 c)
|
||||
u8 acpi_ps_is_leading_char(u32 c)
|
||||
{
|
||||
return ((u8) (c == '_' || (c >= 'A' && c <= 'Z')));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Is "c" a namestring prefix character?
|
||||
*/
|
||||
u8
|
||||
acpi_ps_is_prefix_char (
|
||||
u32 c)
|
||||
u8 acpi_ps_is_prefix_char(u32 c)
|
||||
{
|
||||
return ((u8) (c == '\\' || c == '^'));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get op's name (4-byte name segment) or 0 if unnamed
|
||||
*/
|
||||
#ifdef ACPI_FUTURE_USAGE
|
||||
u32
|
||||
acpi_ps_get_name (
|
||||
union acpi_parse_object *op)
|
||||
u32 acpi_ps_get_name(union acpi_parse_object * op)
|
||||
{
|
||||
|
||||
/* The "generic" object has no name associated with it */
|
||||
@@ -258,16 +226,12 @@ acpi_ps_get_name (
|
||||
|
||||
return (op->named.name);
|
||||
}
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
||||
/*
|
||||
* Set op's name
|
||||
*/
|
||||
void
|
||||
acpi_ps_set_name (
|
||||
union acpi_parse_object *op,
|
||||
u32 name)
|
||||
void acpi_ps_set_name(union acpi_parse_object *op, u32 name)
|
||||
{
|
||||
|
||||
/* The "generic" object has no name associated with it */
|
||||
@@ -278,4 +242,3 @@ acpi_ps_set_name (
|
||||
|
||||
op->named.name = name;
|
||||
}
|
||||
|
||||
|
@@ -41,13 +41,11 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("pswalk")
|
||||
|
||||
ACPI_MODULE_NAME("pswalk")
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -60,18 +58,13 @@
|
||||
* DESCRIPTION: Delete a portion of or an entire parse tree.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ps_delete_parse_tree (
|
||||
union acpi_parse_object *subtree_root)
|
||||
void acpi_ps_delete_parse_tree(union acpi_parse_object *subtree_root)
|
||||
{
|
||||
union acpi_parse_object *op = subtree_root;
|
||||
union acpi_parse_object *next = NULL;
|
||||
union acpi_parse_object *parent = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ps_delete_parse_tree", subtree_root);
|
||||
union acpi_parse_object *op = subtree_root;
|
||||
union acpi_parse_object *next = NULL;
|
||||
union acpi_parse_object *parent = NULL;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR("ps_delete_parse_tree", subtree_root);
|
||||
|
||||
/* Visit all nodes in the subtree */
|
||||
|
||||
@@ -81,7 +74,7 @@ acpi_ps_delete_parse_tree (
|
||||
if (op != parent) {
|
||||
/* Look for an argument or child of the current op */
|
||||
|
||||
next = acpi_ps_get_arg (op, 0);
|
||||
next = acpi_ps_get_arg(op, 0);
|
||||
if (next) {
|
||||
/* Still going downward in tree (Op is not completed yet) */
|
||||
|
||||
@@ -95,7 +88,7 @@ acpi_ps_delete_parse_tree (
|
||||
next = op->common.next;
|
||||
parent = op->common.parent;
|
||||
|
||||
acpi_ps_free_op (op);
|
||||
acpi_ps_free_op(op);
|
||||
|
||||
/* If we are back to the starting point, the walk is complete. */
|
||||
|
||||
@@ -104,8 +97,7 @@ acpi_ps_delete_parse_tree (
|
||||
}
|
||||
if (next) {
|
||||
op = next;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
op = parent;
|
||||
}
|
||||
}
|
||||
|
@@ -41,27 +41,19 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acparser.h>
|
||||
#include <acpi/acdispat.h>
|
||||
#include <acpi/acinterp.h>
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psxface")
|
||||
ACPI_MODULE_NAME("psxface")
|
||||
|
||||
/* Local Prototypes */
|
||||
|
||||
static acpi_status
|
||||
acpi_ps_execute_pass (
|
||||
struct acpi_parameter_info *info);
|
||||
static acpi_status acpi_ps_execute_pass(struct acpi_parameter_info *info);
|
||||
|
||||
static void
|
||||
acpi_ps_update_parameter_list (
|
||||
struct acpi_parameter_info *info,
|
||||
u16 action);
|
||||
|
||||
acpi_ps_update_parameter_list(struct acpi_parameter_info *info, u16 action);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -86,27 +78,24 @@ acpi_ps_update_parameter_list (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ps_execute_method (
|
||||
struct acpi_parameter_info *info)
|
||||
acpi_status acpi_ps_execute_method(struct acpi_parameter_info *info)
|
||||
{
|
||||
acpi_status status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_execute_method");
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_execute_method");
|
||||
|
||||
/* Validate the Info and method Node */
|
||||
|
||||
if (!info || !info->node) {
|
||||
return_ACPI_STATUS (AE_NULL_ENTRY);
|
||||
return_ACPI_STATUS(AE_NULL_ENTRY);
|
||||
}
|
||||
|
||||
/* Init for new method, wait on concurrency semaphore */
|
||||
|
||||
status = acpi_ds_begin_method_execution (info->node, info->obj_desc, NULL);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status =
|
||||
acpi_ds_begin_method_execution(info->node, info->obj_desc, NULL);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -114,55 +103,54 @@ acpi_ps_execute_method (
|
||||
* objects (such as Operation Regions) can be created during the
|
||||
* first pass parse.
|
||||
*/
|
||||
status = acpi_ut_allocate_owner_id (&info->obj_desc->method.owner_id);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status = acpi_ut_allocate_owner_id(&info->obj_desc->method.owner_id);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
* The caller "owns" the parameters, so give each one an extra
|
||||
* reference
|
||||
*/
|
||||
acpi_ps_update_parameter_list (info, REF_INCREMENT);
|
||||
acpi_ps_update_parameter_list(info, REF_INCREMENT);
|
||||
|
||||
/*
|
||||
* 1) Perform the first pass parse of the method to enter any
|
||||
* named objects that it creates into the namespace
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"**** Begin Method Parse **** Entry=%p obj=%p\n",
|
||||
info->node, info->obj_desc));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"**** Begin Method Parse **** Entry=%p obj=%p\n",
|
||||
info->node, info->obj_desc));
|
||||
|
||||
info->pass_number = 1;
|
||||
status = acpi_ps_execute_pass (info);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
status = acpi_ps_execute_pass(info);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
* 2) Execute the method. Performs second pass parse simultaneously
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"**** Begin Method Execution **** Entry=%p obj=%p\n",
|
||||
info->node, info->obj_desc));
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"**** Begin Method Execution **** Entry=%p obj=%p\n",
|
||||
info->node, info->obj_desc));
|
||||
|
||||
info->pass_number = 3;
|
||||
status = acpi_ps_execute_pass (info);
|
||||
status = acpi_ps_execute_pass(info);
|
||||
|
||||
|
||||
cleanup:
|
||||
cleanup:
|
||||
if (info->obj_desc->method.owner_id) {
|
||||
acpi_ut_release_owner_id (&info->obj_desc->method.owner_id);
|
||||
acpi_ut_release_owner_id(&info->obj_desc->method.owner_id);
|
||||
}
|
||||
|
||||
/* Take away the extra reference that we gave the parameters above */
|
||||
|
||||
acpi_ps_update_parameter_list (info, REF_DECREMENT);
|
||||
acpi_ps_update_parameter_list(info, REF_DECREMENT);
|
||||
|
||||
/* Exit now if error above */
|
||||
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -170,17 +158,17 @@ cleanup:
|
||||
* a control exception code
|
||||
*/
|
||||
if (info->return_object) {
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Method returned obj_desc=%p\n",
|
||||
info->return_object));
|
||||
ACPI_DUMP_STACK_ENTRY (info->return_object);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
|
||||
"Method returned obj_desc=%p\n",
|
||||
info->return_object));
|
||||
ACPI_DUMP_STACK_ENTRY(info->return_object);
|
||||
|
||||
status = AE_CTRL_RETURN_VALUE;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (status);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_update_parameter_list
|
||||
@@ -196,26 +184,23 @@ cleanup:
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
acpi_ps_update_parameter_list (
|
||||
struct acpi_parameter_info *info,
|
||||
u16 action)
|
||||
acpi_ps_update_parameter_list(struct acpi_parameter_info *info, u16 action)
|
||||
{
|
||||
acpi_native_uint i;
|
||||
acpi_native_uint i;
|
||||
|
||||
|
||||
if ((info->parameter_type == ACPI_PARAM_ARGS) &&
|
||||
(info->parameters)) {
|
||||
if ((info->parameter_type == ACPI_PARAM_ARGS) && (info->parameters)) {
|
||||
/* Update reference count for each parameter */
|
||||
|
||||
for (i = 0; info->parameters[i]; i++) {
|
||||
/* Ignore errors, just do them all */
|
||||
|
||||
(void) acpi_ut_update_object_reference (info->parameters[i], action);
|
||||
(void)acpi_ut_update_object_reference(info->
|
||||
parameters[i],
|
||||
action);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_execute_pass
|
||||
@@ -229,53 +214,48 @@ acpi_ps_update_parameter_list (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static acpi_status
|
||||
acpi_ps_execute_pass (
|
||||
struct acpi_parameter_info *info)
|
||||
static acpi_status acpi_ps_execute_pass(struct acpi_parameter_info *info)
|
||||
{
|
||||
acpi_status status;
|
||||
union acpi_parse_object *op;
|
||||
struct acpi_walk_state *walk_state;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ps_execute_pass");
|
||||
acpi_status status;
|
||||
union acpi_parse_object *op;
|
||||
struct acpi_walk_state *walk_state;
|
||||
|
||||
ACPI_FUNCTION_TRACE("ps_execute_pass");
|
||||
|
||||
/* Create and init a Root Node */
|
||||
|
||||
op = acpi_ps_create_scope_op ();
|
||||
op = acpi_ps_create_scope_op();
|
||||
if (!op) {
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Create and initialize a new walk state */
|
||||
|
||||
walk_state = acpi_ds_create_walk_state (
|
||||
info->obj_desc->method.owner_id, NULL, NULL, NULL);
|
||||
walk_state =
|
||||
acpi_ds_create_walk_state(info->obj_desc->method.owner_id, NULL,
|
||||
NULL, NULL);
|
||||
if (!walk_state) {
|
||||
status = AE_NO_MEMORY;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
status = acpi_ds_init_aml_walk (walk_state, op, info->node,
|
||||
info->obj_desc->method.aml_start,
|
||||
info->obj_desc->method.aml_length,
|
||||
info->pass_number == 1 ? NULL : info,
|
||||
info->pass_number);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
acpi_ds_delete_walk_state (walk_state);
|
||||
status = acpi_ds_init_aml_walk(walk_state, op, info->node,
|
||||
info->obj_desc->method.aml_start,
|
||||
info->obj_desc->method.aml_length,
|
||||
info->pass_number == 1 ? NULL : info,
|
||||
info->pass_number);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_ds_delete_walk_state(walk_state);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Parse the AML */
|
||||
|
||||
status = acpi_ps_parse_aml (walk_state);
|
||||
status = acpi_ps_parse_aml(walk_state);
|
||||
|
||||
/* Walk state was deleted by parse_aml */
|
||||
|
||||
cleanup:
|
||||
acpi_ps_delete_parse_tree (op);
|
||||
return_ACPI_STATUS (status);
|
||||
cleanup:
|
||||
acpi_ps_delete_parse_tree(op);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user