Commit fb2ef998 authored by Bob Moore's avatar Bob Moore Committed by Rafael J. Wysocki

ACPICA: Debugger: Cleanup interface to the AML disassembler

If the disassembler is configured out (such as when the debugger
is part of a kernel), these debugger commands are disabled:
    List
    Disassemble
Further, the Debug (single-step) command is simplified because
each line of code cannot be disassembled.
Reported-by: default avatarColin Ian King <colin.king@canonical.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarErik Schmauss <erik.schmauss@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 4a7c94c7
...@@ -763,7 +763,12 @@ acpi_db_command_dispatch(char *input_buffer, ...@@ -763,7 +763,12 @@ acpi_db_command_dispatch(char *input_buffer,
case CMD_DISASSEMBLE: case CMD_DISASSEMBLE:
case CMD_DISASM: case CMD_DISASM:
#ifdef ACPI_DISASSEMBLER
(void)acpi_db_disassemble_method(acpi_gbl_db_args[1]); (void)acpi_db_disassemble_method(acpi_gbl_db_args[1]);
#else
acpi_os_printf
("The AML Disassembler is not configured/present\n");
#endif
break; break;
case CMD_DUMP: case CMD_DUMP:
...@@ -872,7 +877,12 @@ acpi_db_command_dispatch(char *input_buffer, ...@@ -872,7 +877,12 @@ acpi_db_command_dispatch(char *input_buffer,
case CMD_LIST: case CMD_LIST:
#ifdef ACPI_DISASSEMBLER
acpi_db_disassemble_aml(acpi_gbl_db_args[1], op); acpi_db_disassemble_aml(acpi_gbl_db_args[1], op);
#else
acpi_os_printf
("The AML Disassembler is not configured/present\n");
#endif
break; break;
case CMD_LOCKS: case CMD_LOCKS:
......
...@@ -216,6 +216,7 @@ void acpi_db_set_method_data(char *type_arg, char *index_arg, char *value_arg) ...@@ -216,6 +216,7 @@ void acpi_db_set_method_data(char *type_arg, char *index_arg, char *value_arg)
acpi_ut_remove_reference(obj_desc); acpi_ut_remove_reference(obj_desc);
} }
#ifdef ACPI_DISASSEMBLER
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: acpi_db_disassemble_aml * FUNCTION: acpi_db_disassemble_aml
...@@ -242,9 +243,8 @@ void acpi_db_disassemble_aml(char *statements, union acpi_parse_object *op) ...@@ -242,9 +243,8 @@ void acpi_db_disassemble_aml(char *statements, union acpi_parse_object *op)
if (statements) { if (statements) {
num_statements = strtoul(statements, NULL, 0); num_statements = strtoul(statements, NULL, 0);
} }
#ifdef ACPI_DISASSEMBLER
acpi_dm_disassemble(NULL, op, num_statements); acpi_dm_disassemble(NULL, op, num_statements);
#endif
} }
/******************************************************************************* /*******************************************************************************
...@@ -317,8 +317,6 @@ acpi_status acpi_db_disassemble_method(char *name) ...@@ -317,8 +317,6 @@ acpi_status acpi_db_disassemble_method(char *name)
walk_state->parse_flags |= ACPI_PARSE_DISASSEMBLE; walk_state->parse_flags |= ACPI_PARSE_DISASSEMBLE;
status = acpi_ps_parse_aml(walk_state); status = acpi_ps_parse_aml(walk_state);
#ifdef ACPI_DISASSEMBLER
(void)acpi_dm_parse_deferred_ops(op); (void)acpi_dm_parse_deferred_ops(op);
/* Now we can disassemble the method */ /* Now we can disassemble the method */
...@@ -326,7 +324,6 @@ acpi_status acpi_db_disassemble_method(char *name) ...@@ -326,7 +324,6 @@ acpi_status acpi_db_disassemble_method(char *name)
acpi_gbl_dm_opt_verbose = FALSE; acpi_gbl_dm_opt_verbose = FALSE;
acpi_dm_disassemble(NULL, op, 0); acpi_dm_disassemble(NULL, op, 0);
acpi_gbl_dm_opt_verbose = TRUE; acpi_gbl_dm_opt_verbose = TRUE;
#endif
acpi_ps_delete_parse_tree(op); acpi_ps_delete_parse_tree(op);
...@@ -337,6 +334,7 @@ acpi_status acpi_db_disassemble_method(char *name) ...@@ -337,6 +334,7 @@ acpi_status acpi_db_disassemble_method(char *name)
acpi_ut_release_owner_id(&obj_desc->method.owner_id); acpi_ut_release_owner_id(&obj_desc->method.owner_id);
return (AE_OK); return (AE_OK);
} }
#endif
/******************************************************************************* /*******************************************************************************
* *
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "amlcode.h" #include "amlcode.h"
#include "acdebug.h" #include "acdebug.h"
#include "acinterp.h" #include "acinterp.h"
#include "acparser.h"
#define _COMPONENT ACPI_CA_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER
ACPI_MODULE_NAME("dbxface") ACPI_MODULE_NAME("dbxface")
...@@ -262,10 +263,17 @@ acpi_db_single_step(struct acpi_walk_state *walk_state, ...@@ -262,10 +263,17 @@ acpi_db_single_step(struct acpi_walk_state *walk_state,
} }
} }
/* Now we can display it */ /* Now we can disassemble and display it */
#ifdef ACPI_DISASSEMBLER #ifdef ACPI_DISASSEMBLER
acpi_dm_disassemble(walk_state, display_op, ACPI_UINT32_MAX); acpi_dm_disassemble(walk_state, display_op, ACPI_UINT32_MAX);
#else
/*
* The AML Disassembler is not configured - at least we can
* display the opcode value and name
*/
acpi_os_printf("AML Opcode: %4.4X %s\n", op->common.aml_opcode,
acpi_ps_get_opcode_name(op->common.aml_opcode));
#endif #endif
if ((op->common.aml_opcode == AML_IF_OP) || if ((op->common.aml_opcode == AML_IF_OP) ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment