Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Aug 2010 22:32:39 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r211663 - in user/imp/tbemd/sys/contrib/dev/acpica: compiler executer
Message-ID:  <201008222232.o7MMWduq018840@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Sun Aug 22 22:32:39 2010
New Revision: 211663
URL: http://svn.freebsd.org/changeset/base/211663

Log:
  wring out that last little bit of merge lovin' goodness from my old F'd up tree, I hope...

Modified:
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslanalyze.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompile.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.h
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.l
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.y
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/asldefine.h
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslerror.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslfiles.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslglobal.h
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/asllookup.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslmain.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslopt.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslstartup.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltransform.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltree.c
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltypes.h
  user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslutils.c
  user/imp/tbemd/sys/contrib/dev/acpica/executer/exdump.c
  user/imp/tbemd/sys/contrib/dev/acpica/executer/exfldio.c
  user/imp/tbemd/sys/contrib/dev/acpica/executer/exprep.c
  user/imp/tbemd/sys/contrib/dev/acpica/executer/exregion.c
  user/imp/tbemd/sys/contrib/dev/acpica/executer/exsystem.c

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslanalyze.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslanalyze.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslanalyze.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -531,7 +531,7 @@ AnGetBtype (
         if (!Node)
         {
             DbgPrint (ASL_DEBUG_OUTPUT,
-                "No attached Nsnode: [%s] at line %d name [%s], ignoring typecheck\n",
+                "No attached Nsnode: [%s] at line %u name [%s], ignoring typecheck\n",
                 Op->Asl.ParseOpName, Op->Asl.LineNumber,
                 Op->Asl.ExternalName);
             return ACPI_UINT32_MAX;

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompile.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompile.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompile.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -127,10 +127,6 @@ static void
 CmFlushSourceCode (
     void);
 
-static ACPI_STATUS
-FlCheckForAscii (
-    ASL_FILE_INFO           *FileInfo);
-
 void
 FlConsumeAnsiComment (
     ASL_FILE_INFO           *FileInfo,
@@ -433,7 +429,7 @@ FlConsumeNewComment (
  *
  ******************************************************************************/
 
-static ACPI_STATUS
+ACPI_STATUS
 FlCheckForAscii (
     ASL_FILE_INFO           *FileInfo)
 {
@@ -543,31 +539,6 @@ CmDoCompile (
 
     FullCompile = UtBeginEvent ("*** Total Compile time ***");
     Event = UtBeginEvent ("Open input and output files");
-
-    /* Open the required input and output files */
-
-    Status = FlOpenInputFile (Gbl_Files[ASL_FILE_INPUT].Filename);
-    if (ACPI_FAILURE (Status))
-    {
-        AePrintErrorLog (ASL_FILE_STDERR);
-        return -1;
-    }
-
-    /* Check for 100% ASCII source file (comments are ignored) */
-
-    Status = FlCheckForAscii (&Gbl_Files[ASL_FILE_INPUT]);
-    if (ACPI_FAILURE (Status))
-    {
-        AePrintErrorLog (ASL_FILE_STDERR);
-        return -1;
-    }
-
-    Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix);
-    if (ACPI_FAILURE (Status))
-    {
-        AePrintErrorLog (ASL_FILE_STDERR);
-        return -1;
-    }
     UtEndEvent (Event);
 
     /* Build the parse tree */
@@ -888,19 +859,24 @@ CmCleanupAndExit (
 
     if (Gbl_NsLookupCount)
     {
-        DbgPrint (ASL_DEBUG_OUTPUT, "\n\nMiscellaneous compile statistics\n\n");
-        DbgPrint (ASL_DEBUG_OUTPUT, "%32s : %d\n", "Total Namespace searches",
+        DbgPrint (ASL_DEBUG_OUTPUT,
+            "\n\nMiscellaneous compile statistics\n\n");
+
+        DbgPrint (ASL_DEBUG_OUTPUT,
+            "%32s : %u\n", "Total Namespace searches",
             Gbl_NsLookupCount);
-        DbgPrint (ASL_DEBUG_OUTPUT, "%32s : %d usec\n", "Time per search",
-            ((UINT32) (AslGbl_Events[AslGbl_NamespaceEvent].EndTime -
-                        AslGbl_Events[AslGbl_NamespaceEvent].StartTime) /
-                        10) / Gbl_NsLookupCount);
-    }
 
+        DbgPrint (ASL_DEBUG_OUTPUT,
+            "%32s : %u usec\n", "Time per search", ((UINT32)
+            (AslGbl_Events[AslGbl_NamespaceEvent].EndTime -
+                AslGbl_Events[AslGbl_NamespaceEvent].StartTime) / 10) /
+                Gbl_NsLookupCount);
+    }
 
     if (Gbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
     {
-        printf ("\nMaximum error count (%d) exceeded\n", ASL_MAX_ERROR_COUNT);
+        printf ("\nMaximum error count (%u) exceeded\n",
+            ASL_MAX_ERROR_COUNT);
     }
 
     UtDisplaySummary (ASL_FILE_STDOUT);
@@ -914,22 +890,38 @@ CmCleanupAndExit (
 
     /* Delete AML file if there are errors */
 
-    if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors))
+    if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors) &&
+        Gbl_Files[ASL_FILE_AML_OUTPUT].Handle)
     {
-        remove (Gbl_Files[ASL_FILE_AML_OUTPUT].Filename);
+        if (remove (Gbl_Files[ASL_FILE_AML_OUTPUT].Filename))
+        {
+            printf ("%s: ",
+                Gbl_Files[ASL_FILE_AML_OUTPUT].Filename);
+            perror ("Could not delete AML file");
+        }
     }
 
     /*
      * Delete intermediate ("combined") source file (if -ls flag not set)
+     * This file is created during normal ASL/AML compiles. It is not
+     * created by the data table compiler.
+     *
+     * If the -ls flag is set, then the .SRC file should not be deleted.
+     * In this case, Gbl_SourceOutputFlag is set to TRUE.
+     *
+     * Note: Handles are cleared by FlCloseFile above, so we look at the
+     * filename instead, to determine if the .SRC file was actually
+     * created.
      *
      * TBD: SourceOutput should be .TMP, then rename if we want to keep it?
      */
-    if (!Gbl_SourceOutputFlag)
+    if (!Gbl_SourceOutputFlag && Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename)
     {
         if (remove (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename))
         {
-            printf ("Could not remove SRC file, %s\n",
+            printf ("%s: ",
                 Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
+            perror ("Could not delete SRC file");
         }
     }
 }

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.h
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.h	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.h	Sun Aug 22 22:32:39 2010	(r211663)
@@ -189,11 +189,20 @@ AslPushInputFileStack (
     char                    *Filename);
 
 /*
- * aslstartup - called from main
+ * aslstartup - entered from main()
  */
+void
+AslInitializeGlobals (
+    void);
+
+typedef
+ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
+    char *);
+
 ACPI_STATUS
 AslDoOnePathname (
-    char                    *Pathname);
+    char                    *Pathname,
+    ASL_PATHNAME_CALLBACK   Callback);
 
 ACPI_STATUS
 AslDoOneFile (
@@ -222,6 +231,10 @@ void
 CmCleanupAndExit (
     void);
 
+ACPI_STATUS
+FlCheckForAscii (
+    ASL_FILE_INFO           *FileInfo);
+
 
 /*
  * aslanalyze - semantic analysis
@@ -426,6 +439,16 @@ CgGenerateAmlOutput (
 
 
 /*
+ * aslfile
+ */
+void
+FlOpenFile (
+    UINT32                  FileId,
+    char                    *Filename,
+    char                    *Mode);
+
+
+/*
  * asllength - calculate/adjust AML package lengths
  */
 ACPI_STATUS
@@ -680,6 +703,10 @@ DbgPrint (
 #define ASL_TREE_OUTPUT     2
 
 void
+UtDisplaySupportedTables (
+    void);
+
+void
 UtDisplayConstantOpcodes (
     void);
 
@@ -1003,5 +1030,16 @@ RsDoWordBusNumberDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
+/*
+ * Entry to data table compiler subsystem
+ */
+ACPI_STATUS
+DtDoCompile(
+    void);
+
+ACPI_STATUS
+DtCreateTemplates (
+    char                    *Signature);
+
 #endif /*  __ASLCOMPILER_H */
 

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.l
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.l	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.l	Sun Aug 22 22:32:39 2010	(r211663)
@@ -725,7 +725,7 @@ InsertLineBuffer (
              * Warning if we have split a long source line.
              * <Probably overkill>
              */
-            sprintf (MsgBuffer, "Max %d", ASL_LINE_BUFFER_SIZE);
+            sprintf (MsgBuffer, "Max %u", ASL_LINE_BUFFER_SIZE);
             AslCommonError (ASL_WARNING, ASL_MSG_LONG_LINE,
                             Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
                             Gbl_CurrentLineOffset, Gbl_CurrentColumn,

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.y
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.y	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.y	Sun Aug 22 22:32:39 2010	(r211663)
@@ -3164,7 +3164,7 @@ AslLocalAllocate (unsigned int Size)
     void                *Mem;
 
 
-    DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %d\n\n", Size);
+    DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size);
 
     Mem = ACPI_ALLOCATE_ZEROED (Size);
     if (!Mem)

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/asldefine.h
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/asldefine.h	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/asldefine.h	Sun Aug 22 22:32:39 2010	(r211663)
@@ -182,6 +182,14 @@
 #define FILE_SUFFIX_DISASSEMBLY     "dsl"
 #define FILE_SUFFIX_ASM_INCLUDE     "inc"
 #define FILE_SUFFIX_C_INCLUDE       "h"
+#define FILE_SUFFIX_ASL_CODE        "asl"
+
+
+/* Types for input files */
+
+#define ASL_INPUT_TYPE_BINARY       0
+#define ASL_INPUT_TYPE_ASCII_ASL    1
+#define ASL_INPUT_TYPE_ASCII_DATA   2
 
 
 /* Misc */

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslerror.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslerror.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslerror.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -280,7 +280,14 @@ AePrintException (
     /* Get the file handles */
 
     OutputFile = Gbl_Files[FileId].Handle;
+
+    /* Use the merged header/source file if present, otherwise use input file */
+
     SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
+    if (!SourceFile)
+    {
+        SourceFile = Gbl_Files[ASL_FILE_INPUT].Handle;
+    }
 
     if (Header)
     {
@@ -525,7 +532,7 @@ AslCommonError (
     Gbl_ExceptionCount[Level]++;
     if (Gbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
     {
-        printf ("\nMaximum error count (%d) exceeded\n", ASL_MAX_ERROR_COUNT);
+        printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT);
 
         Gbl_SourceLine = 0;
         Gbl_NextError = Gbl_ErrorLog;

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslfiles.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslfiles.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslfiles.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -122,12 +122,6 @@
 
 /* Local prototypes */
 
-static void
-FlOpenFile (
-    UINT32                  FileId,
-    char                    *Filename,
-    char                    *Mode);
-
 FILE *
 FlOpenIncludeWithPrefix (
     char                    *PrefixDir,
@@ -212,7 +206,7 @@ FlFileError (
  *
  ******************************************************************************/
 
-static void
+void
 FlOpenFile (
     UINT32                  FileId,
     char                    *Filename,
@@ -774,6 +768,55 @@ FlOpenMiscOutputFiles (
     char                    *Filename;
 
 
+    /* Create/Open a hex output file if asked */
+
+    if (Gbl_HexOutputFlag)
+    {
+        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_HEX_DUMP);
+        if (!Filename)
+        {
+            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,
+                0, 0, 0, 0, NULL, NULL);
+            return (AE_ERROR);
+        }
+
+        /* Open the hex file, text mode */
+
+        FlOpenFile (ASL_FILE_HEX_OUTPUT, Filename, "w+");
+
+        AslCompilerSignon (ASL_FILE_HEX_OUTPUT);
+        AslCompilerFileHeader (ASL_FILE_HEX_OUTPUT);
+    }
+
+    /* Create/Open a debug output file if asked */
+
+    if (Gbl_DebugFlag)
+    {
+        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG);
+        if (!Filename)
+        {
+            AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME,
+                0, 0, 0, 0, NULL, NULL);
+            return (AE_ERROR);
+        }
+
+        /* Open the debug file as STDERR, text mode */
+
+        /* TBD: hide this behind a FlReopenFile function */
+
+        Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename;
+        Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =
+            freopen (Filename, "w+t", stderr);
+
+        AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
+        AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);
+    }
+
+    if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
+    {
+        return (AE_OK);
+    }
+
     /* Create/Open a combined source output file */
 
     Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_SOURCE);
@@ -893,26 +936,6 @@ FlOpenMiscOutputFiles (
         AslCompilerFileHeader (ASL_FILE_C_INCLUDE_OUTPUT);
     }
 
-    /* Create/Open a hex output file if asked */
-
-    if (Gbl_HexOutputFlag)
-    {
-        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_HEX_DUMP);
-        if (!Filename)
-        {
-            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,
-                0, 0, 0, 0, NULL, NULL);
-            return (AE_ERROR);
-        }
-
-        /* Open the hex file, text mode */
-
-        FlOpenFile (ASL_FILE_HEX_OUTPUT, Filename, "w+");
-
-        AslCompilerSignon (ASL_FILE_HEX_OUTPUT);
-        AslCompilerFileHeader (ASL_FILE_HEX_OUTPUT);
-    }
-
     /* Create a namespace output file if asked */
 
     if (Gbl_NsOutputFlag)
@@ -933,30 +956,6 @@ FlOpenMiscOutputFiles (
         AslCompilerFileHeader (ASL_FILE_NAMESPACE_OUTPUT);
     }
 
-    /* Create/Open a debug output file if asked */
-
-    if (Gbl_DebugFlag)
-    {
-        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG);
-        if (!Filename)
-        {
-            AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME,
-                0, 0, 0, 0, NULL, NULL);
-            return (AE_ERROR);
-        }
-
-        /* Open the debug file as STDERR, text mode */
-
-        /* TBD: hide this behind a FlReopenFile function */
-
-        Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename;
-        Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =
-            freopen (Filename, "w+t", stderr);
-
-        AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
-        AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);
-    }
-
     return (AE_OK);
 }
 

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslglobal.h
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslglobal.h	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslglobal.h	Sun Aug 22 22:32:39 2010	(r211663)
@@ -145,7 +145,7 @@ extern const ASL_MAPPING_ENTRY      AslK
 extern char                         *AslCompilertext;
 extern char                         HexLookup[];
 
-#define ASL_LINE_BUFFER_SIZE        512
+#define ASL_LINE_BUFFER_SIZE        1024
 #define ASL_MSG_BUFFER_SIZE         4096
 #define HEX_TABLE_LINE_SIZE         8
 #define HEX_LISTING_LINE_SIZE       8
@@ -171,6 +171,7 @@ ASL_EXTERN ASL_ERROR_MSG            ASL_
 
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoCompile, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoSignon, TRUE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisassembleAll, FALSE);
 
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_Acpi2, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename, TRUE);
@@ -196,6 +197,9 @@ ASL_EXTERN BOOLEAN                  ASL_
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisplayRemarks, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisplayOptimizations, FALSE);
 ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (Gbl_WarningLevel, ASL_WARNING);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_UseOriginalCompilerId, FALSE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE);
 
 
 #define HEX_OUTPUT_NONE         0
@@ -211,7 +215,6 @@ ASL_EXTERN BOOLEAN                  ASL_
 ASL_EXTERN ASL_FILE_INFO            Gbl_Files [ASL_NUM_FILES];
 
 ASL_EXTERN char                     *Gbl_DirectoryPath;
-ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_ExternalFilename, NULL);
 ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_IncludeFilename, NULL);
 ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_OutputFilenamePrefix, NULL);
 ASL_EXTERN ASL_INCLUDE_DIR          ASL_INIT_GLOBAL (*Gbl_IncludeDirList, NULL);
@@ -223,6 +226,7 @@ ASL_EXTERN BOOLEAN                  ASL_
 /* Statistics */
 
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_InputByteCount, 0);
+ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_InputFieldCount, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_NsLookupCount, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (TotalKeywords, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (TotalNamedObjects, 0);
@@ -247,7 +251,9 @@ ASL_EXTERN ACPI_PARSE_OBJECT        ASL_
 ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_StringCacheNext, NULL);
 ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_StringCacheLast, NULL);
 ASL_EXTERN ACPI_PARSE_OBJECT        *Gbl_FirstLevelInsertionNode;
-
+ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (Gbl_FileType, 0);
+ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_Signature, NULL);
+ASL_EXTERN char                     *Gbl_TemplateSignature;
 
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_CurrentHexColumn, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_CurrentAmlOffset, 0);

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/asllookup.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/asllookup.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/asllookup.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -216,7 +216,7 @@ LsDoOneNamespaceObject (
 
     Gbl_NumNamespaceObjects++;
 
-    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5d  [%d]  %*s %4.4s - %s",
+    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u  [%u]  %*s %4.4s - %s",
         Gbl_NumNamespaceObjects, Level, (Level * 3), " ",
         &Node->Name,
         AcpiUtGetTypeName (Node->Type));
@@ -1245,7 +1245,7 @@ LkNamespaceLocateBegin (
              */
             if (PassedArgs != Node->Value)
             {
-                sprintf (MsgBuffer, "%s requires %d", Op->Asl.ExternalName,
+                sprintf (MsgBuffer, "%s requires %u", Op->Asl.ExternalName,
                             Node->Value);
 
                 if (PassedArgs < Node->Value)

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslmain.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslmain.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslmain.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -119,6 +119,7 @@
 
 #include <contrib/dev/acpica/compiler/aslcompiler.h>
 #include <contrib/dev/acpica/include/acapps.h>
+#include <contrib/dev/acpica/include/acdisasm.h>
 
 #ifdef _DEBUG
 #include <crtdbg.h>
@@ -167,7 +168,7 @@ AslDoResponseFile (
 
 
 #define ASL_TOKEN_SEPARATORS    " \t\n"
-#define ASL_SUPPORTED_OPTIONS   "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:v:w:x:"
+#define ASL_SUPPORTED_OPTIONS   "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:T:v:w:x:z"
 
 
 /*******************************************************************************
@@ -218,8 +219,13 @@ Options (
     printf ("  -ln            Create namespace file (*.nsp)\n");
     printf ("  -ls            Create combined source file (expanded includes) (*.src)\n");
 
+    printf ("\nACPI Data Tables:\n");
+    printf ("  -T <Sig>       Create table template file for <Sig> (or \"ALL\")\n");
+    printf ("  -vt            Create verbose templates (full disassembly)\n");
+
     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");
@@ -230,6 +236,7 @@ Options (
     printf ("  -h             Additional help and compiler debug options\n");
     printf ("  -hc            Display operators allowed in constant expressions\n");
     printf ("  -hr            Display ACPI reserved method names\n");
+    printf ("  -ht            Display currently supported ACPI table names\n");
 }
 
 
@@ -268,6 +275,7 @@ HelpMessage (
     printf ("  -n             Parse only, no output generation\n");
     printf ("  -ot            Display compile times\n");
     printf ("  -x<level>      Set debug level for trace output\n");
+    printf ("  -z             Do not insert new compiler ID for DataTables\n");
 }
 
 
@@ -528,6 +536,11 @@ AslDoOptions (
             Gbl_DoCompile = FALSE;
             break;
 
+        case 'a':
+            Gbl_DoCompile = FALSE;
+            Gbl_DisassembleAll = TRUE;
+            break;
+
         case 'c':
             break;
 
@@ -541,7 +554,7 @@ AslDoOptions (
 
 
     case 'e':
-        Gbl_ExternalFilename = AcpiGbl_Optarg;
+        AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
         break;
 
 
@@ -580,6 +593,10 @@ AslDoOptions (
             ApDisplayReservedNames ();
             exit (0);
 
+        case 't':
+            UtDisplaySupportedTables ();
+            exit (0);
+
         default:
             printf ("Unknown option: -h%s\n", AcpiGbl_Optarg);
             return (-1);
@@ -767,6 +784,12 @@ AslDoOptions (
         break;
 
 
+    case 'T':
+        Gbl_DoTemplates = TRUE;
+        Gbl_TemplateSignature = AcpiGbl_Optarg;
+        break;
+
+
     case 'v':
 
         switch (AcpiGbl_Optarg[0])
@@ -795,6 +818,10 @@ AslDoOptions (
             Gbl_DoSignon = FALSE;
             break;
 
+        case 't':
+            Gbl_VerboseTemplates = TRUE;
+            break;
+
         default:
             printf ("Unknown option: -v%s\n", AcpiGbl_Optarg);
             return (-1);
@@ -831,6 +858,12 @@ AslDoOptions (
         break;
 
 
+    case 'z':
+
+        Gbl_UseOriginalCompilerId = TRUE;
+        break;
+
+
     default:
 
         return (-1);
@@ -873,6 +906,12 @@ AslCommandLine (
 
     BadCommandLine = AslDoOptions (argc, argv, FALSE);
 
+    if (Gbl_DoTemplates)
+    {
+        DtCreateTemplates (Gbl_TemplateSignature);
+        exit (1);
+    }
+
     /* Next parameter must be the input filename */
 
     if (!argv[AcpiGbl_Optind] &&
@@ -920,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));
@@ -931,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 */
 
@@ -945,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);

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslopt.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslopt.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslopt.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -339,7 +339,7 @@ OptBuildShortestPath (
         }
     }
 
-    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " COMMON: %d",
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " COMMON: %u",
         NumCommonSegments));
 
     /* There must be at least 1 common NameSeg in order to optimize */

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslstartup.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslstartup.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslstartup.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -131,15 +131,15 @@ BOOLEAN                 AslToFile = TRUE
 
 /* Local prototypes */
 
-static void
-AslInitializeGlobals (
-    void);
-
 static char **
 AsDoWildcard (
     char                    *DirectoryPathname,
     char                    *FileSpecifier);
 
+UINT8
+AslDetectSourceFileType (
+    ASL_FILE_INFO           *Info);
+
 
 /*******************************************************************************
  *
@@ -154,7 +154,7 @@ AsDoWildcard (
  *
  ******************************************************************************/
 
-static void
+void
 AslInitializeGlobals (
     void)
 {
@@ -167,10 +167,13 @@ AslInitializeGlobals (
     Gbl_CurrentLineNumber = 1;
     Gbl_LogicalLineNumber = 1;
     Gbl_CurrentLineOffset = 0;
+    Gbl_InputFieldCount = 0;
     Gbl_LineBufPtr = Gbl_CurrentLineBuffer;
 
     Gbl_ErrorLog = NULL;
     Gbl_NextError = NULL;
+    Gbl_Signature = NULL;
+    Gbl_FileType = 0;
 
     AslGbl_NextEvent = 0;
     for (i = 0; i < ASL_NUM_REPORT_LEVELS; i++)
@@ -179,6 +182,10 @@ AslInitializeGlobals (
     }
 
     Gbl_Files[ASL_FILE_AML_OUTPUT].Filename = NULL;
+    Gbl_Files[ASL_FILE_AML_OUTPUT].Handle = NULL;
+
+    Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename = NULL;
+    Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle = NULL;
 }
 
 
@@ -259,6 +266,77 @@ AsDoWildcard (
 
 /*******************************************************************************
  *
+ * FUNCTION:    AslDetectSourceFileType
+ *
+ * PARAMETERS:  Info            - Name/Handle for the file (must be open)
+ *
+ * RETURN:      File Type
+ *
+ * DESCRIPTION: Determine the type of the input file. Either binary (contains
+ *              non-ASCII characters), ASL file, or an ACPI Data Table file.
+ *
+ ******************************************************************************/
+
+UINT8
+AslDetectSourceFileType (
+    ASL_FILE_INFO           *Info)
+{
+    char                    *FileChar;
+    UINT8                   Type;
+    ACPI_STATUS             Status;
+
+
+    /* Check for 100% ASCII source file (comments are ignored) */
+
+    Status = FlCheckForAscii (Info);
+    if (ACPI_FAILURE (Status))
+    {
+        printf ("Non-ascii input file - %s\n", Info->Filename);
+        Type = ASL_INPUT_TYPE_BINARY;
+        goto Cleanup;
+    }
+
+    /*
+     * File is ASCII. Determine if this is an ASL file or an ACPI data
+     * table file.
+     */
+    while (fgets (Gbl_CurrentLineBuffer, ASL_LINE_BUFFER_SIZE, Info->Handle))
+    {
+        /* Uppercase the buffer for caseless compare */
+
+        FileChar = Gbl_CurrentLineBuffer;
+        while (*FileChar)
+        {
+            *FileChar = (char) toupper ((int) *FileChar);
+            FileChar++;
+        }
+
+        /* Presence of "DefinitionBlock" indicates actual ASL code */
+
+        if (strstr (Gbl_CurrentLineBuffer, "DEFINITIONBLOCK"))
+        {
+            /* Appears to be an ASL file */
+
+            Type = ASL_INPUT_TYPE_ASCII_ASL;
+            goto Cleanup;
+        }
+    }
+
+    /* Not an ASL source file, default to a data table source file */
+
+    Type = ASL_INPUT_TYPE_ASCII_DATA;
+
+Cleanup:
+
+    /* Must seek back to the start of the file */
+
+    fseek (Info->Handle, 0, SEEK_SET);
+    return (Type);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AslDoOneFile
  *
  * PARAMETERS:  Filename        - Name of the file
@@ -287,7 +365,7 @@ AslDoOneFile (
      */
     if (Gbl_DisasmFlag || Gbl_GetAllTables)
     {
-        /* ACPI CA subsystem initialization */
+        /* ACPICA subsystem initialization */
 
         Status = AdInitialize ();
         if (ACPI_FAILURE (Status))
@@ -330,23 +408,77 @@ AslDoOneFile (
             AcpiOsPrintf ("\nCompiling \"%s\"\n",
                 Gbl_Files[ASL_FILE_INPUT].Filename);
         }
+        else
+        {
+            Gbl_Files[ASL_FILE_INPUT].Filename = NULL;
+            return (AE_OK);
+        }
     }
 
     /*
-     * ASL Compilation (Optional)
+     * Open the input file. Here, this should be an ASCII source file,
+     * either an ASL file or a Data Table file
      */
-    if (Gbl_DoCompile)
+    Status = FlOpenInputFile (Gbl_Files[ASL_FILE_INPUT].Filename);
+    if (ACPI_FAILURE (Status))
     {
-        /*
-         * If -p not specified, we will use the input filename as the
-         * output filename prefix
-         */
-        if (Gbl_UseDefaultAmlFilename)
+        AePrintErrorLog (ASL_FILE_STDERR);
+        return (AE_ERROR);
+    }
+
+    /* Determine input file type */
+
+    Gbl_FileType = AslDetectSourceFileType (&Gbl_Files[ASL_FILE_INPUT]);
+    if (Gbl_FileType == ASL_INPUT_TYPE_BINARY)
+    {
+        return (AE_ERROR);
+    }
+
+    /*
+     * If -p not specified, we will use the input filename as the
+     * output filename prefix
+     */
+    if (Gbl_UseDefaultAmlFilename)
+    {
+        Gbl_OutputFilenamePrefix = Gbl_Files[ASL_FILE_INPUT].Filename;
+    }
+
+    /* Open the optional output files (listings, etc.) */
+
+    Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix);
+    if (ACPI_FAILURE (Status))
+    {
+        AePrintErrorLog (ASL_FILE_STDERR);
+        return (AE_ERROR);
+    }
+
+    /*
+     * Compilation of ASL source versus DataTable source uses different
+     * compiler subsystems
+     */
+    switch (Gbl_FileType)
+    {
+    /*
+     * Data Table Compilation
+     */
+    case ASL_INPUT_TYPE_ASCII_DATA:
+
+        Status = DtDoCompile ();
+
+        if (Gbl_Signature)
         {
-            Gbl_OutputFilenamePrefix = Gbl_Files[ASL_FILE_INPUT].Filename;
+            ACPI_FREE (Gbl_Signature);
+            Gbl_Signature = NULL;
         }
+        AeClearErrorLog ();
+        return (Status);
+
+    /*
+     * ASL Compilation (Optional)
+     */
+    case ASL_INPUT_TYPE_ASCII_ASL:
 
-        /* ACPI CA subsystem initialization (Must be re-initialized) */
+        /* ACPICA subsystem initialization */
 
         Status = AdInitialize ();
         if (ACPI_FAILURE (Status))
@@ -367,9 +499,17 @@ AslDoOneFile (
         }
 
         AeClearErrorLog ();
-    }
+        return (AE_OK);
+
+    case ASL_INPUT_TYPE_BINARY:
 
-    return (AE_OK);
+        AePrintErrorLog (ASL_FILE_STDERR);
+        return (AE_ERROR);
+
+    default:
+        printf ("Unknown file type %X\n", Gbl_FileType);
+        return (AE_ERROR);
+    }
 }
 
 
@@ -389,9 +529,10 @@ AslDoOneFile (
 
 ACPI_STATUS
 AslDoOnePathname (
-    char                    *Pathname)
+    char                    *Pathname,
+    ASL_PATHNAME_CALLBACK   PathCallback)
 {
-    ACPI_STATUS             Status;
+    ACPI_STATUS             Status = AE_OK;
     char                    **FileList;
     char                    *Filename;
     char                    *FullPathname;
@@ -427,11 +568,9 @@ AslDoOnePathname (
             Gbl_OutputFilenamePrefix = FullPathname;
         }
 
-        Status = AslDoOneFile (FullPathname);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
+        /* Save status from all compiles */
+
+        Status |= (*PathCallback) (FullPathname);
 
         ACPI_FREE (FullPathname);
         ACPI_FREE (*FileList);
@@ -441,6 +580,6 @@ AslDoOnePathname (
 
     ACPI_FREE (Gbl_DirectoryPath);
     ACPI_FREE (Filename);
-    return (AE_OK);
+    return (Status);
 }
 

Modified: user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltransform.c
==============================================================================
--- user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltransform.c	Sun Aug 22 21:59:55 2010	(r211662)
+++ user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltransform.c	Sun Aug 22 22:32:39 2010	(r211663)
@@ -674,7 +674,7 @@ TrDoSwitch (
         {
             /* Unknown peer opcode */
 
-            AcpiOsPrintf ("Unknown parse opcode for switch statement: %s (%d)\n",
+            AcpiOsPrintf ("Unknown parse opcode for switch statement: %s (%u)\n",

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008222232.o7MMWduq018840>