Skip to content

Commit

Permalink
ACPICA: Debugger: Cleanup interface to the AML disassembler
Browse files Browse the repository at this point in the history
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: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Bob Moore authored and Rafael J. Wysocki committed Aug 14, 2018
1 parent 4a7c94c commit fb2ef99
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
10 changes: 10 additions & 0 deletions drivers/acpi/acpica/dbinput.c
Original file line number Diff line number Diff line change
Expand Up @@ -763,7 +763,12 @@ acpi_db_command_dispatch(char *input_buffer,
case CMD_DISASSEMBLE:
case CMD_DISASM:

#ifdef ACPI_DISASSEMBLER
(void)acpi_db_disassemble_method(acpi_gbl_db_args[1]);
#else
acpi_os_printf
("The AML Disassembler is not configured/present\n");
#endif
break;

case CMD_DUMP:
Expand Down Expand Up @@ -872,7 +877,12 @@ acpi_db_command_dispatch(char *input_buffer,

case CMD_LIST:

#ifdef ACPI_DISASSEMBLER
acpi_db_disassemble_aml(acpi_gbl_db_args[1], op);
#else
acpi_os_printf
("The AML Disassembler is not configured/present\n");
#endif
break;

case CMD_LOCKS:
Expand Down
8 changes: 3 additions & 5 deletions drivers/acpi/acpica/dbmethod.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

#ifdef ACPI_DISASSEMBLER
/*******************************************************************************
*
* FUNCTION: acpi_db_disassemble_aml
Expand All @@ -242,9 +243,8 @@ void acpi_db_disassemble_aml(char *statements, union acpi_parse_object *op)
if (statements) {
num_statements = strtoul(statements, NULL, 0);
}
#ifdef ACPI_DISASSEMBLER

acpi_dm_disassemble(NULL, op, num_statements);
#endif
}

/*******************************************************************************
Expand Down Expand Up @@ -317,16 +317,13 @@ acpi_status acpi_db_disassemble_method(char *name)
walk_state->parse_flags |= ACPI_PARSE_DISASSEMBLE;

status = acpi_ps_parse_aml(walk_state);

#ifdef ACPI_DISASSEMBLER
(void)acpi_dm_parse_deferred_ops(op);

/* Now we can disassemble the method */

acpi_gbl_dm_opt_verbose = FALSE;
acpi_dm_disassemble(NULL, op, 0);
acpi_gbl_dm_opt_verbose = TRUE;
#endif

acpi_ps_delete_parse_tree(op);

Expand All @@ -337,6 +334,7 @@ acpi_status acpi_db_disassemble_method(char *name)
acpi_ut_release_owner_id(&obj_desc->method.owner_id);
return (AE_OK);
}
#endif

/*******************************************************************************
*
Expand Down
10 changes: 9 additions & 1 deletion drivers/acpi/acpica/dbxface.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "amlcode.h"
#include "acdebug.h"
#include "acinterp.h"
#include "acparser.h"

#define _COMPONENT ACPI_CA_DEBUGGER
ACPI_MODULE_NAME("dbxface")
Expand Down Expand Up @@ -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
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

if ((op->common.aml_opcode == AML_IF_OP) ||
Expand Down

0 comments on commit fb2ef99

Please sign in to comment.