ACPICA: disassembler: improve Switch support
authorDavid E. Box <david.e.box@linux.intel.com>
Mon, 5 Jun 2017 08:38:53 +0000 (16:38 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 12 Jun 2017 12:58:38 +0000 (14:58 +0200)
ACPICA commit 3c36625deffdfb034378b1793e2ead9c8fdd767e

Changes the resource descriptor parse tree walk to a general
preprocessing walk and calls the Switch conversion code from here.
Move Switch code to new dmswitch.c file. Also improves algorithm to
handle multiple levels of Switch statements and perform legacy
disassembly for older or otherwise non-spec compliant Switch
implementations.

Link: https://github.com/acpica/acpica/commit/3c36625d
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/acapps.h
drivers/acpi/acpica/acglobal.h
drivers/acpi/acpica/aclocal.h

index b65f2731e9e23d9493413e2088435bd308ead065..bb6a84b0b4b395e77d929c4bb3b5cb12c2ec9c6c 100644 (file)
@@ -158,8 +158,8 @@ acpi_dm_finish_namespace_load(union acpi_parse_object *parse_tree_root,
                              acpi_owner_id owner_id);
 
 void
-acpi_dm_convert_resource_indexes(union acpi_parse_object *parse_tree_root,
-                                struct acpi_namespace_node *namespace_root);
+acpi_dm_convert_parse_objects(union acpi_parse_object *parse_tree_root,
+                             struct acpi_namespace_node *namespace_root);
 
 /*
  * adfile
index abe8c316908ccd4f0737cad58273c3f4ce3e4982..896d548588c06f1edbed833b1f95fe24d6220d91 100644 (file)
@@ -315,6 +315,7 @@ ACPI_INIT_GLOBAL(u8, acpi_gbl_force_aml_disassembly, FALSE);
 ACPI_INIT_GLOBAL(u8, acpi_gbl_dm_opt_verbose, TRUE);
 ACPI_INIT_GLOBAL(u8, acpi_gbl_dm_emit_external_opcodes, FALSE);
 ACPI_INIT_GLOBAL(u8, acpi_gbl_do_disassembler_optimizations, TRUE);
+ACPI_INIT_GLOBAL(ACPI_PARSE_OBJECT_LIST, *acpi_gbl_temp_list_head, NULL);
 
 ACPI_GLOBAL(u8, acpi_gbl_dm_opt_disasm);
 ACPI_GLOBAL(u8, acpi_gbl_dm_opt_listing);
index cd5016f8443384a69f5c6c07f78da439dbdcce0d..f63faa4c9d227eb5be0d7790c34e4b59012dbe07 100644 (file)
@@ -1182,6 +1182,11 @@ struct acpi_external_file {
        struct acpi_external_file *next;
 };
 
+struct acpi_parse_object_list {
+       union acpi_parse_object *op;
+       struct acpi_parse_object_list *next;
+};
+
 /*****************************************************************************
  *
  * Debugger