svn commit: r211663 - in user/imp/tbemd/sys/contrib/dev/acpica:
compiler executer
Warner Losh
imp at FreeBSD.org
Sun Aug 22 22:32:40 UTC 2010
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 ***
More information about the svn-src-user
mailing list