]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ACPICA: Debugger: Cleanup interface to the AML disassembler
authorBob Moore <robert.moore@intel.com>
Fri, 10 Aug 2018 21:42:59 +0000 (14:42 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 14 Aug 2018 21:49:13 +0000 (23:49 +0200)
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>
drivers/acpi/acpica/dbinput.c
drivers/acpi/acpica/dbmethod.c
drivers/acpi/acpica/dbxface.c

index 556ff59bbbfcce71fa5c37b530c0dcb931d2c442..3e5f95390f0dd8a179c7e23751cf30a1d960e958 100644 (file)
@@ -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:
@@ -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:
index 9fcecf104ba001106de75f0dbc24d18c7163e305..d8b7a0fe92ecd07bca1547ac26f58ea2a5e5e28e 100644 (file)
@@ -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
@@ -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
 }
 
 /*******************************************************************************
@@ -317,8 +317,6 @@ 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 */
@@ -326,7 +324,6 @@ acpi_status acpi_db_disassemble_method(char *name)
        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);
 
@@ -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
 
 /*******************************************************************************
  *
index 4647aa8efecbb79772102ace42ecc1aed73bd198..f2526726daf6cbf7c2c72e7697aaab398ba0beca 100644 (file)
@@ -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")
@@ -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) ||