summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/common/adisasm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/common/adisasm.c')
-rw-r--r--sys/contrib/dev/acpica/common/adisasm.c66
1 files changed, 37 insertions, 29 deletions
diff --git a/sys/contrib/dev/acpica/common/adisasm.c b/sys/contrib/dev/acpica/common/adisasm.c
index c7ace4b..da754a0 100644
--- a/sys/contrib/dev/acpica/common/adisasm.c
+++ b/sys/contrib/dev/acpica/common/adisasm.c
@@ -134,7 +134,6 @@
extern int AslCompilerdebug;
-extern char *Gbl_ExternalFilename;
ACPI_STATUS
@@ -313,6 +312,7 @@ AdAmlDisassemble (
ACPI_STATUS Status;
char *DisasmFilename = NULL;
char *ExternalFilename;
+ ACPI_EXTERNAL_FILE *ExternalFileList = AcpiGbl_ExternalFileList;
FILE *File = NULL;
ACPI_TABLE_HEADER *Table = NULL;
ACPI_TABLE_HEADER *ExternalTable;
@@ -335,46 +335,54 @@ AdAmlDisassemble (
* External filenames separated by commas
* Example: iasl -e file1,file2,file3 -d xxx.aml
*/
- if (Gbl_ExternalFilename)
+ while (ExternalFileList)
{
- ExternalFilename = strtok (Gbl_ExternalFilename, ",");
+ ExternalFilename = ExternalFileList->Path;
+ if (!ACPI_STRCMP (ExternalFilename, Filename))
+ {
+ /* Next external file */
+
+ ExternalFileList = ExternalFileList->Next;
- while (ExternalFilename)
+ continue;
+ }
+
+ Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable);
+ if (ACPI_FAILURE (Status))
{
- Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable);
+ return Status;
+ }
+
+ /* Load external table for symbol resolution */
+
+ if (ExternalTable)
+ {
+ Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE);
if (ACPI_FAILURE (Status))
{
+ AcpiOsPrintf ("Could not parse external ACPI tables, %s\n",
+ AcpiFormatException (Status));
return Status;
}
- /* Load external table for symbol resolution */
-
- if (ExternalTable)
- {
- Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE);
- if (ACPI_FAILURE (Status))
- {
- AcpiOsPrintf ("Could not parse external ACPI tables, %s\n",
- AcpiFormatException (Status));
- return Status;
- }
-
- /*
- * Load namespace from names created within control methods
- * Set owner id of nodes in external table
- */
- AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
- AcpiGbl_RootNode, OwnerId);
- AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
- }
+ /*
+ * Load namespace from names created within control methods
+ * Set owner id of nodes in external table
+ */
+ AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
+ AcpiGbl_RootNode, OwnerId);
+ AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
+ }
- /* Next external file name */
+ /* Next external file */
- ExternalFilename = strtok (NULL, ",");
- }
+ ExternalFileList = ExternalFileList->Next;
+ }
- /* Clear external list generated by Scope in external tables */
+ /* Clear external list generated by Scope in external tables */
+ if (AcpiGbl_ExternalFileList)
+ {
AcpiDmClearExternalList ();
}
}
OpenPOWER on IntegriCloud