mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 01:24:33 +00:00
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: 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>
This commit is contained in:
parent
4a7c94c721
commit
fb2ef998af
@ -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,
|
|||||||
|
|
||||||
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 @@ cleanup:
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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 @@
|
|||||||
#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,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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) ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user