summaryrefslogtreecommitdiffstats
path: root/compiler/aslmain.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2010-08-06 17:28:40 +0000
committerjkim <jkim@FreeBSD.org>2010-08-06 17:28:40 +0000
commit7246513d8afc4166ea14544296293fcb8df78649 (patch)
tree26cd13498e685dfeec2b6cd294c939d71073fba3 /compiler/aslmain.c
parent9ef1b91c0f59a1a15565c354b3e372ab265c7b5a (diff)
downloadFreeBSD-src-7246513d8afc4166ea14544296293fcb8df78649.zip
FreeBSD-src-7246513d8afc4166ea14544296293fcb8df78649.tar.gz
Import ACPICA 20100806.
Diffstat (limited to 'compiler/aslmain.c')
-rw-r--r--compiler/aslmain.c41
1 files changed, 35 insertions, 6 deletions
diff --git a/compiler/aslmain.c b/compiler/aslmain.c
index e7f1ca1..39ea7aa 100644
--- a/compiler/aslmain.c
+++ b/compiler/aslmain.c
@@ -119,6 +119,7 @@
#include "aslcompiler.h"
#include "acapps.h"
+#include "acdisasm.h"
#ifdef _DEBUG
#include <crtdbg.h>
@@ -224,6 +225,7 @@ Options (
printf ("\nAML Disassembler:\n");
printf (" -d [file] Disassemble or decode binary ACPI table to file (*.dsl)\n");
+ printf (" -da [f1,f2] Disassemble multiple tables from single namespace\n");
printf (" -dc [file] Disassemble AML and immediately compile it\n");
printf (" (Obtain DSDT from current system if no input file)\n");
printf (" -e [f1,f2] Include ACPI table(s) for external symbol resolution\n");
@@ -534,6 +536,11 @@ AslDoOptions (
Gbl_DoCompile = FALSE;
break;
+ case 'a':
+ Gbl_DoCompile = FALSE;
+ Gbl_DisassembleAll = TRUE;
+ break;
+
case 'c':
break;
@@ -547,7 +554,7 @@ AslDoOptions (
case 'e':
- Gbl_ExternalFilename = AcpiGbl_Optarg;
+ AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
break;
@@ -952,9 +959,12 @@ main (
char **argv)
{
ACPI_STATUS Status;
- int Index;
+ int Index1;
+ int Index2;
+ AcpiGbl_ExternalFileList = NULL;
+
#ifdef _DEBUG
_CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF |
_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
@@ -963,7 +973,7 @@ main (
/* Init and command line */
AslInitialize ();
- Index = AslCommandLine (argc, argv);
+ Index1 = Index2 = AslCommandLine (argc, argv);
/* Options that have no additional parameters or pathnames */
@@ -977,17 +987,36 @@ main (
return (0);
}
+ if (Gbl_DisassembleAll)
+ {
+ while (argv[Index1])
+ {
+ Status = AslDoOnePathname (argv[Index1], AcpiDmAddToExternalFileList);
+ if (ACPI_FAILURE (Status))
+ {
+ return (-1);
+ }
+
+ Index1++;
+ }
+ }
+
/* Process each pathname/filename in the list, with possible wildcards */
- while (argv[Index])
+ while (argv[Index2])
{
- Status = AslDoOnePathname (argv[Index]);
+ Status = AslDoOnePathname (argv[Index2], AslDoOneFile);
if (ACPI_FAILURE (Status))
{
return (-1);
}
- Index++;
+ Index2++;
+ }
+
+ if (AcpiGbl_ExternalFileList)
+ {
+ AcpiDmClearExternalFileList();
}
return (0);
OpenPOWER on IntegriCloud