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>